From 11dfe10561930d078a5933810311a6f49e13f43a Mon Sep 17 00:00:00 2001 From: vegbir Date: Thu, 14 Nov 2024 13:04:04 +0000 Subject: [PATCH] rubik: upgrade to v2.0.1 Signed-off-by: vegbir (cherry picked from commit d6063a99c81ff6f944cd3f4ff30fed81c2a002c8) --- VERSION-vendor | 2 +- git-commit | 2 +- ...t-Labels-field-to-configure-QoSLevel.patch | 188 - ...ight-for-iocost-does-not-take-effect.patch | 66 - ...-rubik-test-coverage-for-PSI-Manager.patch | 264 - ...4-rubik-add-psi-design-documentation.patch | 199 - ...e-fssr-design-document-to-design-dir.patch | 83 - ...alue-of-memory.high_async_ratio-lost.patch | 246 - ...fix-typos-calling-order-of-waitgroup.patch | 127 - ...-coverage-improvement-for-pkg-config.patch | 135 - ...ynamicAdjust-to-be-clear-and-add-log.patch | 65 - ...0010-support-isulad-container-engine.patch | 76 - .../0011-support-systemd-cgroup-driver.patch | 197 - .../0012-support-crio-container-engine.patch | 41 - patch/0013-informer-add-nri-support.patch | 191580 --------------- ...-update-pkg-podmanager-podmanager.go.patch | 44 - ...ner-engine-when-getting-container-id.patch | 485 - rubik.spec | 10 +- series.conf | 17 +- v2.0.0.tar.gz | Bin 5648690 -> 0 bytes v2.0.1.tar.gz | Bin 0 -> 6519141 bytes 21 files changed, 11 insertions(+), 193816 deletions(-) delete mode 100644 patch/0001-Support-Labels-field-to-configure-QoSLevel.patch delete mode 100644 patch/0002-rubik-fix-weight-for-iocost-does-not-take-effect.patch delete mode 100644 patch/0003-rubik-test-coverage-for-PSI-Manager.patch delete mode 100644 patch/0004-rubik-add-psi-design-documentation.patch delete mode 100644 patch/0005-rubik-move-fssr-design-document-to-design-dir.patch delete mode 100644 patch/0006-rubik-fix-that-value-of-memory.high_async_ratio-lost.patch delete mode 100644 patch/0007-bugfix-fix-typos-calling-order-of-waitgroup.patch delete mode 100644 patch/0008-rubik-test-coverage-improvement-for-pkg-config.patch delete mode 100644 patch/0009-rubik-optimize-dynamicAdjust-to-be-clear-and-add-log.patch delete mode 100644 patch/0010-support-isulad-container-engine.patch delete mode 100644 patch/0011-support-systemd-cgroup-driver.patch delete mode 100644 patch/0012-support-crio-container-engine.patch delete mode 100644 patch/0013-informer-add-nri-support.patch delete mode 100644 patch/0014-update-pkg-podmanager-podmanager.go.patch delete mode 100644 patch/0015-rubik-set-container-engine-when-getting-container-id.patch delete mode 100644 v2.0.0.tar.gz create mode 100644 v2.0.1.tar.gz diff --git a/VERSION-vendor b/VERSION-vendor index c5a2781..942ff0a 100644 --- a/VERSION-vendor +++ b/VERSION-vendor @@ -1 +1 @@ -2.0.0-8 +2.0.1-1 diff --git a/git-commit b/git-commit index 2d91c09..6571d62 100644 --- a/git-commit +++ b/git-commit @@ -1 +1 @@ -25197e4c5ef5b67040f64ecc54ac000a13506bc1 +a9c36f5a595959f3790b24a91ec243c74d9e382d diff --git a/patch/0001-Support-Labels-field-to-configure-QoSLevel.patch b/patch/0001-Support-Labels-field-to-configure-QoSLevel.patch deleted file mode 100644 index e7044a2..0000000 --- a/patch/0001-Support-Labels-field-to-configure-QoSLevel.patch +++ /dev/null @@ -1,188 +0,0 @@ -From aaa33596e0acb9e2ddb32bb888c15d86c242a388 Mon Sep 17 00:00:00 2001 -From: wujing -Date: Wed, 10 May 2023 19:26:36 +0800 -Subject: [PATCH 01/13] Support Labels field to configure QoSLevel - -Signed-off-by: wujing ---- - pkg/core/typedef/podinfo.go | 39 +++++++++++++++++++++++++-- - pkg/services/dyncache/dynamic.go | 3 +-- - pkg/services/dyncache/sync.go | 3 +-- - pkg/services/iocost/iocost.go | 2 +- - pkg/services/preemption/preemption.go | 13 +++------ - tests/try/pod.go | 1 + - 6 files changed, 44 insertions(+), 17 deletions(-) - -diff --git a/pkg/core/typedef/podinfo.go b/pkg/core/typedef/podinfo.go -index 907f02b..fd96848 100644 ---- a/pkg/core/typedef/podinfo.go -+++ b/pkg/core/typedef/podinfo.go -@@ -15,6 +15,7 @@ - package typedef - - import ( -+ "isula.org/rubik/pkg/common/constant" - "isula.org/rubik/pkg/core/typedef/cgroup" - ) - -@@ -26,6 +27,7 @@ type PodInfo struct { - Namespace string `json:"namespace"` - IDContainersMap map[string]*ContainerInfo `json:"containers,omitempty"` - Annotations map[string]string `json:"annotations,omitempty"` -+ Labels map[string]string `json:"labels,omitempty"` - } - - // NewPodInfo creates the PodInfo instance -@@ -37,6 +39,7 @@ func NewPodInfo(pod *RawPod) *PodInfo { - Hierarchy: cgroup.Hierarchy{Path: pod.CgroupPath()}, - IDContainersMap: pod.ExtractContainerInfos(), - Annotations: pod.DeepCopy().Annotations, -+ Labels: pod.DeepCopy().Labels, - } - } - -@@ -46,8 +49,9 @@ func (pod *PodInfo) DeepCopy() *PodInfo { - return nil - } - var ( -- contMap map[string]*ContainerInfo -- annoMap map[string]string -+ contMap map[string]*ContainerInfo -+ annoMap map[string]string -+ labelMap map[string]string - ) - // nil is different from empty value in golang - if pod.IDContainersMap != nil { -@@ -56,6 +60,7 @@ func (pod *PodInfo) DeepCopy() *PodInfo { - contMap[id] = cont.DeepCopy() - } - } -+ - if pod.Annotations != nil { - annoMap = make(map[string]string) - for k, v := range pod.Annotations { -@@ -63,12 +68,42 @@ func (pod *PodInfo) DeepCopy() *PodInfo { - } - } - -+ if pod.Labels != nil { -+ labelMap = make(map[string]string) -+ for k, v := range pod.Labels { -+ labelMap[k] = v -+ } -+ } -+ - return &PodInfo{ - Name: pod.Name, - UID: pod.UID, - Hierarchy: pod.Hierarchy, - Namespace: pod.Namespace, - Annotations: annoMap, -+ Labels: labelMap, - IDContainersMap: contMap, - } - } -+ -+// Offline is used to determine whether the pod is offline -+func (pod *PodInfo) Offline() bool { -+ var anno string -+ var label string -+ -+ if pod.Annotations != nil { -+ anno = pod.Annotations[constant.PriorityAnnotationKey] -+ } -+ -+ if pod.Labels != nil { -+ label = pod.Labels[constant.PriorityAnnotationKey] -+ } -+ -+ // Annotations have a higher priority than labels -+ return anno == "true" || label == "true" -+} -+ -+// Online is used to determine whether the pod is online -+func (pod *PodInfo) Online() bool { -+ return !pod.Offline() -+} -diff --git a/pkg/services/dyncache/dynamic.go b/pkg/services/dyncache/dynamic.go -index 09bde4c..d74efc7 100644 ---- a/pkg/services/dyncache/dynamic.go -+++ b/pkg/services/dyncache/dynamic.go -@@ -124,8 +124,7 @@ func (c *DynCache) doFlush(limitSet *limitSet) error { - } - - func (c *DynCache) listOnlinePods() map[string]*typedef.PodInfo { -- onlineValue := "false" - return c.Viewer.ListPodsWithOptions(func(pi *typedef.PodInfo) bool { -- return pi.Annotations[constant.PriorityAnnotationKey] == onlineValue -+ return pi.Online() - }) - } -diff --git a/pkg/services/dyncache/sync.go b/pkg/services/dyncache/sync.go -index 8307c41..bf59cd4 100644 ---- a/pkg/services/dyncache/sync.go -+++ b/pkg/services/dyncache/sync.go -@@ -111,8 +111,7 @@ func (c *DynCache) syncLevel(pod *typedef.PodInfo) error { - } - - func (c *DynCache) listOfflinePods() map[string]*typedef.PodInfo { -- offlineValue := "true" - return c.Viewer.ListPodsWithOptions(func(pi *typedef.PodInfo) bool { -- return pi.Annotations[constant.PriorityAnnotationKey] == offlineValue -+ return pi.Offline() - }) - } -diff --git a/pkg/services/iocost/iocost.go b/pkg/services/iocost/iocost.go -index e5298b1..c11ef60 100644 ---- a/pkg/services/iocost/iocost.go -+++ b/pkg/services/iocost/iocost.go -@@ -236,7 +236,7 @@ func (b *IOCost) clearIOCost() error { - - func (b *IOCost) configPodIOCostWeight(podInfo *typedef.PodInfo) error { - var weight uint64 = offlineWeight -- if podInfo.Annotations[constant.PriorityAnnotationKey] == "false" { -+ if podInfo.Online() { - weight = onlineWeight - } - for _, container := range podInfo.IDContainersMap { -diff --git a/pkg/services/preemption/preemption.go b/pkg/services/preemption/preemption.go -index ce436a3..28ec36e 100644 ---- a/pkg/services/preemption/preemption.go -+++ b/pkg/services/preemption/preemption.go -@@ -160,18 +160,11 @@ func getQoSLevel(pod *typedef.PodInfo) int { - if pod == nil { - return constant.Online - } -- anno, ok := pod.Annotations[constant.PriorityAnnotationKey] -- if !ok { -- return constant.Online -- } -- switch anno { -- case "true": -+ if pod.Offline() { - return constant.Offline -- case "false": -- return constant.Online -- default: -- return constant.Online - } -+ -+ return constant.Online - } - - // Validate will validate the qos service config -diff --git a/tests/try/pod.go b/tests/try/pod.go -index 18cb0ec..8053c4b 100644 ---- a/tests/try/pod.go -+++ b/tests/try/pod.go -@@ -60,6 +60,7 @@ func GenFakePodInfo(qosClass corev1.PodQOSClass) *typedef.PodInfo { - UID: constant.PodCgroupNamePrefix + podID, - Hierarchy: cgroup.Hierarchy{Path: genRelativeCgroupPath(qosClass, podID)}, - Annotations: make(map[string]string, 0), -+ Labels: make(map[string]string, 0), - } - return fakePod - } --- -2.41.0 - diff --git a/patch/0002-rubik-fix-weight-for-iocost-does-not-take-effect.patch b/patch/0002-rubik-fix-weight-for-iocost-does-not-take-effect.patch deleted file mode 100644 index 35e996a..0000000 --- a/patch/0002-rubik-fix-weight-for-iocost-does-not-take-effect.patch +++ /dev/null @@ -1,66 +0,0 @@ -From 347c81278ba63b6fe05476ad4dd9dd960b4b70a4 Mon Sep 17 00:00:00 2001 -From: vegbir -Date: Tue, 20 Aug 2024 13:26:04 +0000 -Subject: [PATCH 02/13] rubik-fix-weight-for-iocost-does-not-take-effect - ---- - pkg/services/iocost/iocost.go | 7 +------ - pkg/services/iocost/iocost_origin.go | 8 ++++---- - pkg/services/iocost/iocost_test.go | 2 +- - 3 files changed, 6 insertions(+), 11 deletions(-) - -diff --git a/pkg/services/iocost/iocost.go b/pkg/services/iocost/iocost.go -index c11ef60..0f77edc 100644 ---- a/pkg/services/iocost/iocost.go -+++ b/pkg/services/iocost/iocost.go -@@ -239,10 +239,5 @@ func (b *IOCost) configPodIOCostWeight(podInfo *typedef.PodInfo) error { - if podInfo.Online() { - weight = onlineWeight - } -- for _, container := range podInfo.IDContainersMap { -- if err := ConfigContainerIOCostWeight(container.Path, weight); err != nil { -- return err -- } -- } -- return nil -+ return ConfigPodIOCostWeight(podInfo.Path, weight) - } -diff --git a/pkg/services/iocost/iocost_origin.go b/pkg/services/iocost/iocost_origin.go -index d37109f..5e9948f 100644 ---- a/pkg/services/iocost/iocost_origin.go -+++ b/pkg/services/iocost/iocost_origin.go -@@ -63,14 +63,14 @@ func ConfigIOCostModel(devno string, p interface{}) error { - return cgroup.WriteCgroupFile(paramStr, blkcgRootDir, iocostModelFile) - } - --// ConfigContainerIOCostWeight for config iocost weight -+// ConfigPodIOCostWeight for config iocost weight - // cgroup v1 iocost cannot be inherited. Therefore, only the container level can be configured. --func ConfigContainerIOCostWeight(containerRelativePath string, weight uint64) error { -+func ConfigPodIOCostWeight(relativePath string, weight uint64) error { - if err := cgroup.WriteCgroupFile(strconv.FormatUint(weight, scale), blkcgRootDir, -- containerRelativePath, iocostWeightFile); err != nil { -+ relativePath, iocostWeightFile); err != nil { - return err - } -- if err := bindMemcgBlkcg(containerRelativePath); err != nil { -+ if err := bindMemcgBlkcg(relativePath); err != nil { - return err - } - return nil -diff --git a/pkg/services/iocost/iocost_test.go b/pkg/services/iocost/iocost_test.go -index 95b6d97..3bdadad 100644 ---- a/pkg/services/iocost/iocost_test.go -+++ b/pkg/services/iocost/iocost_test.go -@@ -334,7 +334,7 @@ func TestSetPodWeight(t *testing.T) { - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { -- err := ConfigContainerIOCostWeight(tt.cgroupPath, uint64(tt.weight)) -+ err := ConfigPodIOCostWeight(tt.cgroupPath, uint64(tt.weight)) - if tt.wantErr { - assert.Contains(t, err.Error(), tt.errMsg) - return --- -2.41.0 - diff --git a/patch/0003-rubik-test-coverage-for-PSI-Manager.patch b/patch/0003-rubik-test-coverage-for-PSI-Manager.patch deleted file mode 100644 index b21ec87..0000000 --- a/patch/0003-rubik-test-coverage-for-PSI-Manager.patch +++ /dev/null @@ -1,264 +0,0 @@ -From eaa82db55dbc543f9911e3c5ef4dd550711deb63 Mon Sep 17 00:00:00 2001 -From: jingxiaolu -Date: Mon, 12 Jun 2023 23:12:37 +0800 -Subject: [PATCH 03/13] rubik: test coverage for PSI Manager - -Adding test cases for PSI Manager - -Signed-off-by: jingxiaolu ---- - Makefile | 3 + - pkg/config/config_test.go | 29 ++++++++ - pkg/services/psi/psi.go | 14 ++-- - pkg/services/psi/psi_test.go | 126 +++++++++++++++++++++++++++++++++++ - pkg/services/service_test.go | 4 ++ - 5 files changed, 169 insertions(+), 7 deletions(-) - create mode 100644 pkg/services/psi/psi_test.go - -diff --git a/Makefile b/Makefile -index 7a92d12..bd66147 100644 ---- a/Makefile -+++ b/Makefile -@@ -54,6 +54,7 @@ help: - @echo "make test-unit # run unit test" - @echo "make cover # generate coverage report" - @echo "make install # install files to /var/lib/rubik" -+ @echo "make clean" # clean built files and test logs - - prepare: - mkdir -p $(TMP_DIR) $(BUILD_DIR) -@@ -101,3 +102,5 @@ install: - cp -f $(BUILD_DIR)/* $(INSTALL_DIR) - cp -f $(BUILD_DIR)/rubik.service /lib/systemd/system/ - -+clean: -+ rm -rf build/* cover.* unit_test_log -diff --git a/pkg/config/config_test.go b/pkg/config/config_test.go -index dbbd2e4..03ff4ca 100644 ---- a/pkg/config/config_test.go -+++ b/pkg/config/config_test.go -@@ -53,6 +53,35 @@ var rubikConfig string = ` - "mid": 30, - "high": 50 - } -+ }, -+ "ioCost": [ -+ { -+ "nodeName": "k8s-single", -+ "config": [ -+ { -+ "dev": "sdb", -+ "enable": true, -+ "model": "linear", -+ "param": { -+ "rbps": 10000000, -+ "rseqiops": 10000000, -+ "rrandiops": 10000000, -+ "wbps": 10000000, -+ "wseqiops": 10000000, -+ "wrandiops": 10000000 -+ } -+ } -+ ] -+ } -+ ], -+ "psi": { -+ "interval": 10, -+ "resource": [ -+ "cpu", -+ "memory", -+ "io" -+ ], -+ "avg10Threshold": 5.0 - } - } - ` -diff --git a/pkg/services/psi/psi.go b/pkg/services/psi/psi.go -index 1c70255..a55922e 100644 ---- a/pkg/services/psi/psi.go -+++ b/pkg/services/psi/psi.go -@@ -37,19 +37,19 @@ const ( - minThreshold float64 = 5.0 - ) - --// Factory is the QuotaTurbo factory class -+// Factory is the PSI Manager factory class - type Factory struct { - ObjName string - } - - // Name returns the factory class name --func (i Factory) Name() string { -- return "Factory" -+func (f Factory) Name() string { -+ return "PSIFactory" - } - --// NewObj returns a QuotaTurbo object --func (i Factory) NewObj() (interface{}, error) { -- return NewManager(i.ObjName), nil -+// NewObj returns a Manager object -+func (f Factory) NewObj() (interface{}, error) { -+ return NewManager(f.ObjName), nil - } - - // Config is PSI service configuration -@@ -130,7 +130,7 @@ func (m *Manager) SetConfig(f helper.ConfigHandler) error { - } - - // IsRunner returns true that tells other Manager is a persistent service --func (qt *Manager) IsRunner() bool { -+func (m *Manager) IsRunner() bool { - return true - } - -diff --git a/pkg/services/psi/psi_test.go b/pkg/services/psi/psi_test.go -new file mode 100644 -index 0000000..2036aa1 ---- /dev/null -+++ b/pkg/services/psi/psi_test.go -@@ -0,0 +1,126 @@ -+// Copyright (c) Huawei Technologies Co., Ltd. 2023. All rights reserved. -+// rubik licensed under the Mulan PSL v2. -+// You can use this software according to the terms and conditions of the Mulan PSL v2. -+// You may obtain a copy of Mulan PSL v2 at: -+// http://license.coscl.org.cn/MulanPSL2 -+// THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR -+// IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR -+// PURPOSE. -+// See the Mulan PSL v2 for more details. -+// Author: Jingxiao Lu -+// Date: 2023-06-12 -+// Description: This file is used for testing psi.go -+ -+package psi -+ -+import ( -+ "context" -+ "fmt" -+ "testing" -+ "time" -+ -+ "isula.org/rubik/pkg/api" -+ "isula.org/rubik/pkg/core/typedef" -+) -+ -+// TestNewManagerObj tests NewObj() for Factory -+func TestNewManagerObj(t *testing.T) { -+ var fact = Factory{ -+ ObjName: "psi", -+ } -+ nm, err := fact.NewObj() -+ if err != nil { -+ t.Fatalf("New PSI Manager failed: %v", err) -+ return -+ } -+ fmt.Printf("New PSI Manager %s is %#v", fact.Name(), nm) -+} -+ -+// TestConfigValidate tests Config Validate -+func TestConfigValidate(t *testing.T) { -+ var tests = []struct { -+ name string -+ conf *Config -+ wantErr bool -+ }{ -+ { -+ name: "TC1 - Default Config", -+ conf: NewConfig(), -+ wantErr: true, -+ }, -+ { -+ name: "TC2 - Wrong Interval value", -+ conf: &Config{ -+ Interval: minInterval - 1, -+ }, -+ wantErr: true, -+ }, -+ { -+ name: "TC3 - Wrong Threshold value", -+ conf: &Config{ -+ Interval: minInterval, -+ Avg10Threshold: minThreshold - 1, -+ }, -+ wantErr: true, -+ }, -+ { -+ name: "TC4 - No resource type specified", -+ conf: &Config{ -+ Interval: minInterval, -+ Avg10Threshold: minThreshold, -+ }, -+ wantErr: true, -+ }, -+ { -+ name: "TC5 - Wrong resource type cpuacct - cpuacct is for psi subsystem, not for resource type", -+ conf: &Config{ -+ Interval: minInterval, -+ Avg10Threshold: minThreshold, -+ Resource: []string{"cpu", "memory", "io", "cpuacct"}, -+ }, -+ wantErr: true, -+ }, -+ { -+ name: "TC6 - Success case - trully end", -+ conf: &Config{ -+ Interval: minInterval, -+ Avg10Threshold: minThreshold, -+ Resource: []string{"cpu", "memory", "io"}, -+ }, -+ wantErr: false, -+ }, -+ } -+ for _, tc := range tests { -+ t.Run(tc.name, func(t *testing.T) { -+ if err := tc.conf.Validate(); (err != nil) != tc.wantErr { -+ t.Errorf("Config.Validate() error = %v, wantErr %v", err, tc.wantErr) -+ } -+ }) -+ } -+} -+ -+type FakeManager struct{} -+ -+func (m *FakeManager) ListContainersWithOptions(options ...api.ListOption) map[string]*typedef.ContainerInfo { -+ return make(map[string]*typedef.ContainerInfo) -+} -+func (m *FakeManager) ListPodsWithOptions(options ...api.ListOption) map[string]*typedef.PodInfo { -+ return make(map[string]*typedef.PodInfo, 1) -+} -+ -+// TestManagerRun creates a fake manager and runs it -+func TestManagerRun(t *testing.T) { -+ nm := NewManager("psi") -+ nm.conf.Interval = 1 -+ nm.PreStart(&FakeManager{}) -+ nm.SetConfig(func(configName string, d interface{}) error { return nil }) -+ if !nm.IsRunner() { -+ t.Fatalf("FakeManager is not a runner!") -+ return -+ } -+ -+ ctx, cancel := context.WithCancel(context.Background()) -+ go nm.Run(ctx) -+ time.Sleep(time.Second) -+ cancel() -+} -diff --git a/pkg/services/service_test.go b/pkg/services/service_test.go -index a6e0298..537d0b3 100644 ---- a/pkg/services/service_test.go -+++ b/pkg/services/service_test.go -@@ -36,6 +36,10 @@ var defaultFeature = []FeatureSpec{ - Name: feature.QuotaTurboFeature, - Default: true, - }, -+ { -+ Name: feature.PSIFeature, -+ Default: true, -+ }, - } - - func TestErrorInitServiceComponents(t *testing.T) { --- -2.41.0 - diff --git a/patch/0004-rubik-add-psi-design-documentation.patch b/patch/0004-rubik-add-psi-design-documentation.patch deleted file mode 100644 index 336c713..0000000 --- a/patch/0004-rubik-add-psi-design-documentation.patch +++ /dev/null @@ -1,199 +0,0 @@ -From 4c64eac61570b4cfd4e77766639f144a8a93f713 Mon Sep 17 00:00:00 2001 -From: vegbir -Date: Sat, 10 Jun 2023 11:41:04 +0800 -Subject: [PATCH 04/13] rubik: add psi design documentation - -Signed-off-by: vegbir ---- - CHANGELOG/CHANGELOG-2.0.0.md | 29 +++++++-- - docs/design/psi.md | 94 +++++++++++++++++++++++++++++ - docs/images/psi/PSI_designation.svg | 16 +++++ - docs/images/psi/PSI_implement.svg | 4 ++ - 4 files changed, 139 insertions(+), 4 deletions(-) - create mode 100644 docs/design/psi.md - create mode 100644 docs/images/psi/PSI_designation.svg - create mode 100644 docs/images/psi/PSI_implement.svg - -diff --git a/CHANGELOG/CHANGELOG-2.0.0.md b/CHANGELOG/CHANGELOG-2.0.0.md -index 5cc2cb8..b46fa3d 100644 ---- a/CHANGELOG/CHANGELOG-2.0.0.md -+++ b/CHANGELOG/CHANGELOG-2.0.0.md -@@ -1,16 +1,37 @@ --1. Architecture optimization: -+# CHANGELOG -+ -+## v2.0.1 -+ -+### New Feature -+ -+Before June 30, 2023 -+ -+1. **dynMemory** (asynchronous memory classification recovery): implement fssr strategy -+2. **psi**: interference detection based on PSI index -+3. **quotaTurbo**: elastic cpu limit user mode solution -+ -+## v2.0.0 -+ -+### Architecture optimization -+ - refactor rubik through `informer-podmanager-services` mechanism, decoupling modules and improving performance --2. Interface change: -+ -+### Interface change -+ - - configuration file changes - - use the list-watch mechanism to get the pod instead of the http interface --3. Feature enhancements: -+ -+### Feature enhancements -+ - - support elastic cpu limit user mode scheme-quotaturbo - - support psi index observation - - support memory asynchronous recovery feature (fssr optimization) - - support memory access bandwidth and LLC limit - - optimize the absolute preemption - - optimize the elastic cpu limiting kernel mode scheme-quotaburst --4. Other optimizations: -+ -+### Other optimizations -+ - - document optimization - - typo fix - - compile option optimization -diff --git a/docs/design/psi.md b/docs/design/psi.md -new file mode 100644 -index 0000000..674a8e0 ---- /dev/null -+++ b/docs/design/psi.md -@@ -0,0 +1,94 @@ -+# 【需求设计】基于PSI指标的干扰检测 -+ -+## 需求设计图 -+ -+![PSI_designation](../images/psi/PSI_designation.svg) -+ -+## 实现思路 -+ -+### PSI简介 -+ -+PSI是Pressure Stall Information的简称,用于评估当前系统三大基础硬件资源CPU、Memory、IO的压力。顾名思义,当进程无法获得运行所需的资源时将会产生停顿,PSI就是衡量进程停顿时间长度的度量标准。 -+ -+### 使能cgroupv1 psi特性 -+ -+首先,检查是否开启cgroup v1的PSI。两种方法,看看文件是否存在或者查看内核启动命令行是否包含psi相关选项。 -+ -+```bash -+cat /proc/cmdline | grep "psi=1 psi_v1=1" -+``` -+ -+若无,则新增内核启动命令行 -+ -+```bash -+# 查看内核版本号 -+uname -a -+# Linux openEuler 5.10.0-136.12.0.86.oe2203sp1.x86_64 #1 -+# 找到内核的boot文件 -+ls /boot/vmlinuz-5.10.0-136.12.0.86.oe2203sp1.x86_64 -+# 新增参数 -+grubby --update-kernel="/boot/vmlinuz-5.10.0-136.12.0.86.oe2203sp1.x86_64" --args="psi=1 psi_v1=1" -+# 重启 -+reboot -+``` -+ -+随后便可以在cgroup v1中使用psi的三个文件观测数据。 -+例如,在`/sys/fs/cgroup/cpu,cpuacct/kubepods/burstable//`目录下,涉及如下文件: -+ -+- cpu.pressure -+- memory.pressure -+- io.pressure -+ -+### 方案流程 -+ -+针对PSI格式数据,使用`some avg10`作为观测指标。它表示任一任务在10s内的平均阻塞时间占比。 -+ -+用户通过配置阈值保障在线Pod的资源可用以及高性能。具体来说,当阻塞占比超过某一阈值(默认为5%),则rubik按照一定策略驱逐离线Pod,释放相应资源。 -+ -+在离线业务由注解`volcano.sh/preemptable="true"/"false"`标识。 -+ -+```yaml -+annotations: -+ volcano.sh/preemptable: true -+``` -+ -+在线Pod的CPU和内存利用率偏高,rubik会驱逐当前占用CPU资源/内存资源最多的离线业务。若离线业务I/O高,则会选择驱逐CPU资源占用最多的离线业务。 -+> 注1:当前cgroup控制io带宽手段有效,难以精准判断驱逐哪个业务会降低io,因此暂时采用CPU利用率作为标准。 -+> -+> 注2:通过cadvisor库实时获取离线业务的CPU利用率、内存占用量、IO带宽等信息,按指标从大到小排序。 -+ -+需要处理可疑对象时则通过责任链设计模式传递事件处理请求,并执行相应操作。 -+ -+## 实现设计 -+ -+![PSI_implement](../images/psi/PSI_implement.svg) -+ -+## 接口设计 -+ -+```yaml -+data: -+ config.json: | -+ { -+ "agent": { -+ "enabledFeatures": [ -+ "psi" -+ ] -+ }, -+ "psi": { -+ "resource": [ -+ "cpu", -+ "memory", -+ "io", -+ ], -+ "interval": 10 -+ } -+ } -+``` -+ -+`psi`字段用于标识基于psi指标的干扰检测特性配置。目前,psi特性支持监测CPU、内存和I/O资源,用户可以按需配置该字段,单独或组合监测资源的PSI取值。 -+ -+| 配置键[=默认值] | 类型 | 描述 | 可选值 | -+| --------------- | ---------- | -------------------------------- | ----------- | -+| interval=10 |int|psi指标监测间隔(单位:秒)| [10,30]| -+| resource=[] | string数组 | 资源类型,声明何种资源需要被访问 | cpu, memory, io | -+| avg10Threshold=5.0 | float | psi some类型资源平均10s内的压制百分比阈值(单位:%),超过该阈值则驱逐离线业务 | [5.0,100]| -diff --git a/docs/images/psi/PSI_designation.svg b/docs/images/psi/PSI_designation.svg -new file mode 100644 -index 0000000..8b829e8 ---- /dev/null -+++ b/docs/images/psi/PSI_designation.svg -@@ -0,0 +1,16 @@ -+ -+ -+ -+ -+ -+ -+ 开始遍历在线Pod列表读取并解析Pod PSI指标是否支持cgroupV1 PSI接口?/sys/fs/cgroup/cpuacct/cpu.pressure...io.pressure ...memory.pressure标记PSI指标最大值分别为cpu_max、mem_max、io_maxcpu_max >= threshold?mem_max >= threshold?io_max >= threshold?按照CPU利用率对离线业务进行排序按照内存占用量对离线业务进行排序按io带宽对离线业务进行排序处理可疑对象日志告警应用驱逐 -\ No newline at end of file -diff --git a/docs/images/psi/PSI_implement.svg b/docs/images/psi/PSI_implement.svg -new file mode 100644 -index 0000000..9704504 ---- /dev/null -+++ b/docs/images/psi/PSI_implement.svg -@@ -0,0 +1,4 @@ -+ -+ -+ -+cadvisor

<<Interface>>
Metric


+ Update() error

+ AddTrigger(...Trigger) Metric


<<Interface>>...
BaseMetric
BaseMetric
attributes
attributes
trigger []Trigger
trigger []Trigger
operations
operations
AddTrigger(...Trigger) Metric
Update() error
AddTrigger(...Trigger) Metri...

Manager
Manager
attributes
attributes
PSIConfig
Viewer
PSIConfig...
operations
operations
IsRunner() bool
Run(context.Context)
SetConfig(helper.CnfigHandler) error
PreStart(api.Viewer) error
Terminate(api.Viewer) error
IsRunner() bool...

<<Singleton>>

expulsionExec



<<Singleton>>...

<<Singleton>>

resourceAnalysisExec



<<Singleton>>...
PSIConfig+ Interval: int+ Resource: []string

<<Interface>>
Analyzer


+ MaxCPUUtil([]*PodInfo) *PodInfo

+ MaxIOBandWidth([]*PodInfo) *PodInfo

+ MaxMemUtil([]*PodInfo)*PodInfo


<<Interface>>...

<<Interface>>
Trigger


+ Execute(TriggerFactor) error

+ SetNext(...Trigger) Trigger

+ Name() string

<<Interface>>...

<<Interface>>
TriggerFactor


+ Message() string

+ TargetPods() map[string]*typedef.PodInfo


<<Interface>>...
Use
Use
Use
Use
Manager
Manager
attributes
attributes
manager.Manager
manager.Manager
operations
operations

+ New()
+ Start() error
+ ContainerInfoV2() 

+ New()...
BasePSIMetric
BasePSIMetric
attributes
attributes
*metric.BaseMetric
avg10Threshold float64
resources []string
conservation map[string]*typedef.PodInfo
suspicion map[string]*typedef.PodInfo
*metric.BaseMetric...
operations
operations
Update() error
Update() error
Use
Use
Use
Use
Use
Use
Use
Use
Use
Use
Text is not SVG - cannot display
-\ No newline at end of file --- -2.41.0 - diff --git a/patch/0005-rubik-move-fssr-design-document-to-design-dir.patch b/patch/0005-rubik-move-fssr-design-document-to-design-dir.patch deleted file mode 100644 index efb77e0..0000000 --- a/patch/0005-rubik-move-fssr-design-document-to-design-dir.patch +++ /dev/null @@ -1,83 +0,0 @@ -From 780a5e80311f5f3d188666733dcf276abc8e7e81 Mon Sep 17 00:00:00 2001 -From: vegbir -Date: Wed, 14 Jun 2023 17:14:16 +0800 -Subject: [PATCH 05/13] rubik: move fssr design document to design dir - -Signed-off-by: vegbir ---- - docs/{ => design}/fssr.md | 18 ++++++++++++++---- - .../fssr/flowchart.png} | Bin - .../fssr/sequence_diagram.png} | Bin - 3 files changed, 14 insertions(+), 4 deletions(-) - rename docs/{ => design}/fssr.md (90%) - rename docs/{png/rubik_fssr_2.png => images/fssr/flowchart.png} (100%) - rename docs/{png/rubik_fssr_1.png => images/fssr/sequence_diagram.png} (100%) - -diff --git a/docs/fssr.md b/docs/design/fssr.md -similarity index 90% -rename from docs/fssr.md -rename to docs/design/fssr.md -index 3fb36bd..184b364 100644 ---- a/docs/fssr.md -+++ b/docs/design/fssr.md -@@ -1,20 +1,27 @@ -+# 【需求设计】异步内存分级回收 fssr策略 -+ - ## 方案目标 -+ - 在混部集群中,在线和离线业务被同时部署到同一物理资源(节点)上,同时离线业务是内存资源消耗型,在线业务有波峰波谷,在离线业务之间内存资源竞争导致在线业务受影响。该方案目标在充分利用内存资源的同时保证在线QoS。 - - ## 总体设计 -+ - 各个模块之间的联系如下: --![](png/rubik_fssr_1.png) -+![sequence_diagram](../images/fssr/sequence_diagram.png) - - - 用户部署rubik,rubik向k8s注册监听pod事件。 - - 当离线业务被部署时k8s会通知rubik,rubik向该离线pod配置memory.high。 - - 同时rubik实时监控当前节点的内存使用量,使用fssr策略向pod配置memory.high。 - - ### 依赖说明 -+ - 内核需要支持memcg级内存水位线方案,即提供`memory.high`和`memory.high_async_ratio`。 - - ### 详细设计 -+ - 内存分级方案中,rubik新增FSSR内存处理模块,该模块主要处理获取主机(节点)的总内存(total memory)、预留内存(reserved memory)、剩余内存(free memory)。并根据FSSR算法设置离线内存的memory.high。具体策略如下: --![](png/rubik_fssr_2.png) -+![flowchart](../images/fssr/flowchart.png) -+ - - rubik启动时计算预留内存,默认为总内存的10%,如果总内存的10%超过10G,则为10G - - 配置离线容器的cgroup级别水位线,内核提供`memory.high`和`memory.high_async_ratio`两个接口,分别配置cgroup的软上限和警戒水位线。启动rubik时默认配置`memory.high`为`total_memory`(总内存)`*`80% - - 获取剩余内存free_memory -@@ -22,13 +29,16 @@ - - 持续一分钟free_memory>2`*`reserved_memory时提高离线的memory.high,每次提升总内存的1%,total_memory`*`1% - - 说明: -+ - 1. 离线应用memory.high的范围为`[total_memory*30%, total_memory*80%]` - - ### 配置说明 --``` -+ -+```json - "dynMemory": { - "policy": "fssr" - } - ``` -+ - - dynMemory表示动态内存 --- policy目前只支持fssr -\ No newline at end of file -+- policy目前只支持fssr -diff --git a/docs/png/rubik_fssr_2.png b/docs/images/fssr/flowchart.png -similarity index 100% -rename from docs/png/rubik_fssr_2.png -rename to docs/images/fssr/flowchart.png -diff --git a/docs/png/rubik_fssr_1.png b/docs/images/fssr/sequence_diagram.png -similarity index 100% -rename from docs/png/rubik_fssr_1.png -rename to docs/images/fssr/sequence_diagram.png --- -2.41.0 - diff --git a/patch/0006-rubik-fix-that-value-of-memory.high_async_ratio-lost.patch b/patch/0006-rubik-fix-that-value-of-memory.high_async_ratio-lost.patch deleted file mode 100644 index 6713c8c..0000000 --- a/patch/0006-rubik-fix-that-value-of-memory.high_async_ratio-lost.patch +++ /dev/null @@ -1,246 +0,0 @@ -From f7d9bc26368763d9c0bc9e7fc462dc0ab99a1784 Mon Sep 17 00:00:00 2001 -From: hanchao -Date: Fri, 16 Jun 2023 13:10:42 +0800 -Subject: [PATCH 06/13] rubik: fix that value of memory.high_async_ratio lost - efficacy - ---- - pkg/services/dynmemory/dynmemory.go | 22 +++++++- - pkg/services/dynmemory/fssr.go | 78 +++++++++++++++++------------ - 2 files changed, 67 insertions(+), 33 deletions(-) - -diff --git a/pkg/services/dynmemory/dynmemory.go b/pkg/services/dynmemory/dynmemory.go -index da859dd..b73f476 100644 ---- a/pkg/services/dynmemory/dynmemory.go -+++ b/pkg/services/dynmemory/dynmemory.go -@@ -6,6 +6,7 @@ import ( - "time" - - "isula.org/rubik/pkg/api" -+ "isula.org/rubik/pkg/core/typedef" - "isula.org/rubik/pkg/services/helper" - "k8s.io/apimachinery/pkg/util/wait" - ) -@@ -15,6 +16,7 @@ type DynMemoryAdapter interface { - preStart(api.Viewer) error - getInterval() int - dynamicAdjust() -+ setOfflinePod(path string) error - } - type dynMemoryConfig struct { - Policy string `json:"policy,omitempty"` -@@ -42,11 +44,11 @@ type DynMemory struct { - } - - // PreStart is an interface for calling a collection of methods when the service is pre-started --func (dynMem *DynMemory) PreStart(api api.Viewer) error { -+func (dynMem *DynMemory) PreStart(viewer api.Viewer) error { - if dynMem.dynMemoryAdapter == nil { - return nil - } -- return dynMem.dynMemoryAdapter.preStart(api) -+ return dynMem.dynMemoryAdapter.preStart(viewer) - } - - // SetConfig is an interface that invoke the ConfigHandler to obtain the corresponding configuration. -@@ -81,6 +83,22 @@ func (dynMem *DynMemory) IsRunner() bool { - return true - } - -+// AddPod to deal the event of adding a pod. -+func (dynMem *DynMemory) AddPod(podInfo *typedef.PodInfo) error { -+ if podInfo.Offline() { -+ return dynMem.dynMemoryAdapter.setOfflinePod(podInfo.Path) -+ } -+ return nil -+} -+ -+// UpdatePod to deal the pod update event. -+func (dynMem *DynMemory) UpdatePod(old, new *typedef.PodInfo) error { -+ if new.Offline() { -+ return dynMem.dynMemoryAdapter.setOfflinePod(new.Path) -+ } -+ return nil -+} -+ - // newAdapter to create adapter of dyn memory. - func newAdapter(policy string) DynMemoryAdapter { - switch policy { -diff --git a/pkg/services/dynmemory/fssr.go b/pkg/services/dynmemory/fssr.go -index 9fe4042..e23a4bc 100644 ---- a/pkg/services/dynmemory/fssr.go -+++ b/pkg/services/dynmemory/fssr.go -@@ -9,6 +9,7 @@ import ( - - "isula.org/rubik/pkg/api" - "isula.org/rubik/pkg/common/constant" -+ "isula.org/rubik/pkg/common/log" - "isula.org/rubik/pkg/common/util" - "isula.org/rubik/pkg/core/typedef" - "isula.org/rubik/pkg/core/typedef/cgroup" -@@ -30,71 +31,76 @@ type fssrDynMemAdapter struct { - memTotal int64 - memHigh int64 - reservedMem int64 -- api api.Viewer - count int64 -+ viewer api.Viewer - } - --// initFssrDynMemAdapter function -+// initFssrDynMemAdapter initializes a new fssrDynMemAdapter struct. - func initFssrDynMemAdapter() *fssrDynMemAdapter { - if total, err := getFieldMemory("MemTotal"); err == nil && total > 0 { - return &fssrDynMemAdapter{ - memTotal: total, - memHigh: total * 8 / 10, -- reservedMem: total * 8 / 10, -+ reservedMem: total * 1 / 10, -+ count: 0, - } - } - return nil - } - --// preStart function --func (f *fssrDynMemAdapter) preStart(api api.Viewer) error { -- f.api = api -+// preStart initializes the fssrDynMemAdapter with the provided viewer and -+// deals with any existing pods. -+func (f *fssrDynMemAdapter) preStart(viewer api.Viewer) error { -+ f.viewer = viewer - return f.dealExistedPods() - } - --// getInterval function -+// getInterval returns the fssrInterval value. - func (f *fssrDynMemAdapter) getInterval() int { - return fssrInterval - } - --// dynadjust function -+// dynamicAdjust adjusts the memory allocation of the fssrDynMemAdapter by -+// increasing or decreasing the amount of memory reserved for offline pods -+// based on the current amount of free memory available on the system. - func (f *fssrDynMemAdapter) dynamicAdjust() { - var freeMem int64 - var err error - if freeMem, err = getFieldMemory("MemFree"); err != nil { - return - } -+ -+ var memHigh int64 = 0 - if freeMem > 2*f.reservedMem { - if f.count < fssrIntervalCount { - f.count++ - return - } -- memHigh := f.memHigh + f.memTotal/100 -+ // no risk of overflow -+ memHigh = f.memHigh + f.memTotal/100 - if memHigh > f.memTotal*8/10 { - memHigh = f.memTotal * 8 / 10 - } -- if memHigh != f.memHigh { -- f.memHigh = memHigh -- f.adjustOfflinePodHighMemory() -- } - } else if freeMem < f.reservedMem { -- memHigh := f.memHigh - f.memTotal/10 -+ memHigh = f.memHigh - f.memTotal/10 - if memHigh < 0 { - return - } - if memHigh < f.memTotal*3/10 { - memHigh = f.memTotal * 3 / 10 - } -- if memHigh != f.memHigh { -- f.memHigh = memHigh -- f.adjustOfflinePodHighMemory() -- } - } -+ if memHigh != f.memHigh { -+ f.memHigh = memHigh -+ f.adjustOfflinePodHighMemory() -+ } -+ - f.count = 0 - } - -+// adjustOfflinePodHighMemory adjusts the memory.high of offline pods. - func (f *fssrDynMemAdapter) adjustOfflinePodHighMemory() error { -- pods := listOfflinePods(f.api) -+ pods := listOfflinePods(f.viewer) - for _, podInfo := range pods { - if err := setOfflinePodHighMemory(podInfo.Path, f.memHigh); err != nil { - return err -@@ -103,20 +109,18 @@ func (f *fssrDynMemAdapter) adjustOfflinePodHighMemory() error { - return nil - } - --// dealExistedPods function -+// dealExistedPods handles offline pods by setting their memory.high and memory.high_async_ratio - func (f *fssrDynMemAdapter) dealExistedPods() error { -- pods := listOfflinePods(f.api) -+ pods := listOfflinePods(f.viewer) - for _, podInfo := range pods { -- if err := setOfflinePodHighMemory(podInfo.Path, f.memHigh); err != nil { -- return err -- } -- if err := setOfflinePodHighAsyncRatio(podInfo.Path, highRatio); err != nil { -- return err -+ if err := f.setOfflinePod(podInfo.Path); err != nil { -+ log.Errorf("set fssr of offline pod[%v] error:%v", podInfo.UID, err) - } - } - return nil - } - -+// listOfflinePods returns a map of offline PodInfo objects. - func listOfflinePods(viewer api.Viewer) map[string]*typedef.PodInfo { - offlineValue := "true" - return viewer.ListPodsWithOptions(func(pi *typedef.PodInfo) bool { -@@ -124,23 +128,35 @@ func listOfflinePods(viewer api.Viewer) map[string]*typedef.PodInfo { - }) - } - --func setOfflinePodHighMemory(podPath string, high int64) error { -- if err := cgroup.WriteCgroupFile(strconv.FormatUint(uint64(high), scale), memcgRootDir, -+// setOfflinePod sets the offline pod for the given path. -+func (f *fssrDynMemAdapter) setOfflinePod(path string) error { -+ if err := setOfflinePodHighAsyncRatio(path, highRatio); err != nil { -+ return err -+ } -+ return setOfflinePodHighMemory(path, f.memHigh) -+} -+ -+// setOfflinePodHighMemory sets the high memory limit for the specified pod in the -+// cgroup memory -+func setOfflinePodHighMemory(podPath string, memHigh int64) error { -+ if err := cgroup.WriteCgroupFile(strconv.FormatUint(uint64(memHigh), scale), memcgRootDir, - podPath, highMemFile); err != nil { - return err - } - return nil - } - --func setOfflinePodHighAsyncRatio(podPath string, ratio uint64) error { -- if err := cgroup.WriteCgroupFile(strconv.FormatUint(ratio, scale), memcgRootDir, -+// setOfflinePodHighAsyncRatio sets the high memory async ratio for a pod in an offline state. -+func setOfflinePodHighAsyncRatio(podPath string, ratio uint) error { -+ if err := cgroup.WriteCgroupFile(strconv.FormatUint(uint64(ratio), scale), memcgRootDir, - podPath, highMemAsyncRatioFile); err != nil { - return err - } - return nil - } - --// getFieldMemory function -+// getFieldMemory retrieves the amount of memory used by a certain field in the -+// memory information file. - func getFieldMemory(field string) (int64, error) { - if !util.PathExist(memInfoFile) { - return 0, fmt.Errorf("%v: no such file or diretory", memInfoFile) --- -2.41.0 - diff --git a/patch/0007-bugfix-fix-typos-calling-order-of-waitgroup.patch b/patch/0007-bugfix-fix-typos-calling-order-of-waitgroup.patch deleted file mode 100644 index 1454f6e..0000000 --- a/patch/0007-bugfix-fix-typos-calling-order-of-waitgroup.patch +++ /dev/null @@ -1,127 +0,0 @@ -From 5d84595d50dc898b1c7307719cbd0807aff3fd99 Mon Sep 17 00:00:00 2001 -From: vegbir -Date: Mon, 19 Jun 2023 11:47:53 +0800 -Subject: [PATCH 07/13] bugfix: fix typos & calling order of waitgroup - -Signed-off-by: vegbir ---- - pkg/core/trigger/base.go | 4 ++-- - pkg/core/trigger/expulsion.go | 2 +- - pkg/core/trigger/resourceanalysis.go | 6 +++--- - pkg/rubik/servicemanager.go | 6 +++--- - 4 files changed, 9 insertions(+), 9 deletions(-) - -diff --git a/pkg/core/trigger/base.go b/pkg/core/trigger/base.go -index 7f1fbe9..c212f66 100644 ---- a/pkg/core/trigger/base.go -+++ b/pkg/core/trigger/base.go -@@ -70,8 +70,8 @@ type TreeTrigger struct { - subTriggers []Trigger - } - --// withTreeTirgger returns a BaseMetric object --func withTreeTirgger(name string, exec Executor) *TreeTrigger { -+// withTreeTrigger returns a BaseMetric object -+func withTreeTrigger(name string, exec Executor) *TreeTrigger { - return &TreeTrigger{ - name: name, - exec: exec, -diff --git a/pkg/core/trigger/expulsion.go b/pkg/core/trigger/expulsion.go -index 87dd484..e438d3d 100644 ---- a/pkg/core/trigger/expulsion.go -+++ b/pkg/core/trigger/expulsion.go -@@ -41,7 +41,7 @@ var expulsionCreator = func() Trigger { - appendUsedExecutors(ExpulsionAnno, expulsionExec) - } - } -- return withTreeTirgger(ExpulsionAnno, expulsionExec) -+ return withTreeTrigger(ExpulsionAnno, expulsionExec) - } - - // Expulsion is the trigger to evict pods -diff --git a/pkg/core/trigger/resourceanalysis.go b/pkg/core/trigger/resourceanalysis.go -index a3d99e5..7e7413e 100644 ---- a/pkg/core/trigger/resourceanalysis.go -+++ b/pkg/core/trigger/resourceanalysis.go -@@ -49,7 +49,7 @@ var analyzerCreator = func() Trigger { - appendUsedExecutors(ResourceAnalysisAnno, resourceAnalysisExec) - } - } -- return withTreeTirgger(ResourceAnalysisAnno, resourceAnalysisExec) -+ return withTreeTrigger(ResourceAnalysisAnno, resourceAnalysisExec) - } - - // rreqOpt is the option to get information from cadvisor -@@ -161,7 +161,7 @@ func (a *Analyzer) maxCPUUtil(pods map[string]*typedef.PodInfo) *typedef.PodInfo - } - } - if chosen != nil { -- log.Infof("find the max cpu util pod \"%v\": %v", chosen.Name, maxUtil) -+ log.Infof("find the pod(%v) with the highest cpu utilization(%v)", chosen.Name, maxUtil) - } - return chosen - } -@@ -185,7 +185,7 @@ func (a *Analyzer) maxMemoryUtil(pods map[string]*typedef.PodInfo) *typedef.PodI - } - } - if chosen != nil { -- log.Infof("find the max cpu util pod \"%v\": %v", chosen.Name, maxUtil) -+ log.Infof("find the pod(%v) with the highest memory utilization(%v)", chosen.Name, maxUtil) - } - return chosen - } -diff --git a/pkg/rubik/servicemanager.go b/pkg/rubik/servicemanager.go -index 3e162b6..c3b252a 100644 ---- a/pkg/rubik/servicemanager.go -+++ b/pkg/rubik/servicemanager.go -@@ -218,7 +218,6 @@ func (manager *ServiceManager) addFunc(event typedef.Event) { - - const retryCount = 5 - addOnce := func(s services.Service, podInfo *typedef.PodInfo, wg *sync.WaitGroup) { -- wg.Add(1) - for i := 0; i < retryCount; i++ { - if err := s.AddPod(podInfo); err != nil { - log.Errorf("service %s add func failed: %v", s.ID(), err) -@@ -231,6 +230,7 @@ func (manager *ServiceManager) addFunc(event typedef.Event) { - manager.RLock() - var wg sync.WaitGroup - for _, s := range manager.RunningServices { -+ wg.Add(1) - go addOnce(s, podInfo.DeepCopy(), &wg) - } - wg.Wait() -@@ -250,7 +250,6 @@ func (manager *ServiceManager) updateFunc(event typedef.Event) { - return - } - runOnce := func(s services.Service, old, new *typedef.PodInfo, wg *sync.WaitGroup) { -- wg.Add(1) - log.Debugf("update Func with service: %s", s.ID()) - if err := s.UpdatePod(old, new); err != nil { - log.Errorf("service %s update func failed: %v", s.ID(), err) -@@ -260,6 +259,7 @@ func (manager *ServiceManager) updateFunc(event typedef.Event) { - manager.RLock() - var wg sync.WaitGroup - for _, s := range manager.RunningServices { -+ wg.Add(1) - go runOnce(s, podInfos[0], podInfos[1], &wg) - } - wg.Wait() -@@ -275,7 +275,6 @@ func (manager *ServiceManager) deleteFunc(event typedef.Event) { - } - - deleteOnce := func(s services.Service, podInfo *typedef.PodInfo, wg *sync.WaitGroup) { -- wg.Add(1) - if err := s.DeletePod(podInfo); err != nil { - log.Errorf("service %s delete func failed: %v", s.ID(), err) - } -@@ -284,6 +283,7 @@ func (manager *ServiceManager) deleteFunc(event typedef.Event) { - manager.RLock() - var wg sync.WaitGroup - for _, s := range manager.RunningServices { -+ wg.Add(1) - go deleteOnce(s, podInfo.DeepCopy(), &wg) - } - wg.Wait() --- -2.41.0 - diff --git a/patch/0008-rubik-test-coverage-improvement-for-pkg-config.patch b/patch/0008-rubik-test-coverage-improvement-for-pkg-config.patch deleted file mode 100644 index d09c3fc..0000000 --- a/patch/0008-rubik-test-coverage-improvement-for-pkg-config.patch +++ /dev/null @@ -1,135 +0,0 @@ -From 0403c7860be078ba67c5e05d7628411f72977d6b Mon Sep 17 00:00:00 2001 -From: jingxiaolu -Date: Sun, 11 Jun 2023 22:34:08 +0800 -Subject: [PATCH 08/13] rubik: test coverage improvement for pkg/config - -1. improve test coverage for pkg/config from 57.4% to 80.3% -2. change cpuLimit to 1 in TestStatusStore_AddCgroup-TC5 for nano vm - -Signed-off-by: jingxiaolu ---- - pkg/config/config_test.go | 69 ++++++++++++++++++++-- - pkg/lib/cpu/quotaturbo/statusstore_test.go | 2 +- - 2 files changed, 66 insertions(+), 5 deletions(-) - -diff --git a/pkg/config/config_test.go b/pkg/config/config_test.go -index 03ff4ca..8766e04 100644 ---- a/pkg/config/config_test.go -+++ b/pkg/config/config_test.go -@@ -27,7 +27,8 @@ import ( - "isula.org/rubik/pkg/common/util" - ) - --var rubikConfig string = ` -+func TestNewConfig(t *testing.T) { -+ var rubikConfig string = ` - { - "agent": { - "logDriver": "stdio", -@@ -85,27 +86,87 @@ var rubikConfig string = ` - } - } - ` -+ if !util.PathExist(constant.TmpTestDir) { -+ if err := os.Mkdir(constant.TmpTestDir, constant.DefaultDirMode); err != nil { -+ assert.NoError(t, err) -+ } -+ } - --func TestNewConfig(t *testing.T) { -+ defer os.RemoveAll(constant.TmpTestDir) -+ -+ tmpConfigFile := filepath.Join(constant.TmpTestDir, "config.json") -+ defer os.Remove(tmpConfigFile) -+ if err := ioutil.WriteFile(tmpConfigFile, []byte(rubikConfig), constant.DefaultFileMode); err != nil { -+ assert.NoError(t, err) -+ } -+ -+ c := NewConfig(JSON) -+ if err := c.LoadConfig(tmpConfigFile); err != nil { -+ assert.NoError(t, err) -+ } -+ fmt.Printf("config: %v", c) -+} -+ -+func TestNewConfigNoConfig(t *testing.T) { -+ c := &Config{} -+ if err := c.LoadConfig(""); err == nil { -+ t.Fatalf("Config file exists") -+ } -+} -+ -+func TestNewConfigDamagedConfig(t *testing.T) { -+ var rubikConfig string = `{` - if !util.PathExist(constant.TmpTestDir) { - if err := os.Mkdir(constant.TmpTestDir, constant.DefaultDirMode); err != nil { - assert.NoError(t, err) - } - } -+ defer os.RemoveAll(constant.TmpTestDir) -+ -+ tmpConfigFile := filepath.Join(constant.TmpTestDir, "config.json") -+ defer os.Remove(tmpConfigFile) -+ if err := ioutil.WriteFile(tmpConfigFile, []byte(rubikConfig), constant.DefaultFileMode); err != nil { -+ assert.NoError(t, err) -+ } -+ -+ c := NewConfig(JSON) -+ if err := c.LoadConfig(tmpConfigFile); err == nil { -+ t.Fatalf("Damaged config file should not be loaded.") -+ } -+} - -+func TestNewConfigNoAgentConfig(t *testing.T) { -+ var rubikConfig string = `{}` -+ if !util.PathExist(constant.TmpTestDir) { -+ if err := os.Mkdir(constant.TmpTestDir, constant.DefaultDirMode); err != nil { -+ assert.NoError(t, err) -+ } -+ } - defer os.RemoveAll(constant.TmpTestDir) - - tmpConfigFile := filepath.Join(constant.TmpTestDir, "config.json") - defer os.Remove(tmpConfigFile) - if err := ioutil.WriteFile(tmpConfigFile, []byte(rubikConfig), constant.DefaultFileMode); err != nil { - assert.NoError(t, err) -- return - } - - c := NewConfig(JSON) - if err := c.LoadConfig(tmpConfigFile); err != nil { - assert.NoError(t, err) -- return - } - fmt.Printf("config: %v", c) - } -+ -+func TestUnwrapServiceConfig(t *testing.T) { -+ c := &Config{} -+ c.Fields = make(map[string]interface{}) -+ c.Fields["agent"] = nil -+ c.Fields["config"] = nil -+ sc := c.UnwrapServiceConfig() -+ if _, exist := sc["agent"]; exist { -+ t.Fatalf("agent is exists") -+ } -+ if _, exist := sc["config"]; !exist { -+ t.Fatalf("config is not exists") -+ } -+} -diff --git a/pkg/lib/cpu/quotaturbo/statusstore_test.go b/pkg/lib/cpu/quotaturbo/statusstore_test.go -index 68c01c5..ce1684d 100644 ---- a/pkg/lib/cpu/quotaturbo/statusstore_test.go -+++ b/pkg/lib/cpu/quotaturbo/statusstore_test.go -@@ -354,7 +354,7 @@ func TestStatusStore_AddCgroup(t *testing.T) { - name: "TC5-add successfully", - args: args{ - cgroupPath: contPath, -- cpuLimit: 2, -+ cpuLimit: 1, - }, - fields: fields{ - Config: &Config{ --- -2.41.0 - diff --git a/patch/0009-rubik-optimize-dynamicAdjust-to-be-clear-and-add-log.patch b/patch/0009-rubik-optimize-dynamicAdjust-to-be-clear-and-add-log.patch deleted file mode 100644 index 3b822b0..0000000 --- a/patch/0009-rubik-optimize-dynamicAdjust-to-be-clear-and-add-log.patch +++ /dev/null @@ -1,65 +0,0 @@ -From 3d63470cb0638f9b426f2060c260c45f27c36f04 Mon Sep 17 00:00:00 2001 -From: hanchao -Date: Mon, 19 Jun 2023 20:29:41 +0800 -Subject: [PATCH 09/13] rubik: optimize `dynamicAdjust` to be clear and add log - for error - ---- - pkg/services/dynmemory/fssr.go | 18 ++++++++++++++---- - 1 file changed, 14 insertions(+), 4 deletions(-) - -diff --git a/pkg/services/dynmemory/fssr.go b/pkg/services/dynmemory/fssr.go -index e23a4bc..2c81ccf 100644 ---- a/pkg/services/dynmemory/fssr.go -+++ b/pkg/services/dynmemory/fssr.go -@@ -4,6 +4,7 @@ import ( - "bufio" - "bytes" - "fmt" -+ "math" - "os" - "strconv" - -@@ -76,26 +77,35 @@ func (f *fssrDynMemAdapter) dynamicAdjust() { - f.count++ - return - } -- // no risk of overflow -+ // check int64 overflow -+ if f.memHigh > math.MaxInt64-f.memTotal/100 { -+ log.Errorf("int64 overflow") -+ return -+ } - memHigh = f.memHigh + f.memTotal/100 - if memHigh > f.memTotal*8/10 { - memHigh = f.memTotal * 8 / 10 - } -+ f.adjustMemoryHigh(memHigh) - } else if freeMem < f.reservedMem { - memHigh = f.memHigh - f.memTotal/10 -- if memHigh < 0 { -+ if memHigh <= 0 { -+ log.Errorf("memHigh is equal to or less than 0") - return - } - if memHigh < f.memTotal*3/10 { - memHigh = f.memTotal * 3 / 10 - } -+ f.adjustMemoryHigh(memHigh) - } -+ f.count = 0 -+} -+ -+func (f *fssrDynMemAdapter) adjustMemoryHigh(memHigh int64) { - if memHigh != f.memHigh { - f.memHigh = memHigh - f.adjustOfflinePodHighMemory() - } -- -- f.count = 0 - } - - // adjustOfflinePodHighMemory adjusts the memory.high of offline pods. --- -2.41.0 - diff --git a/patch/0010-support-isulad-container-engine.patch b/patch/0010-support-isulad-container-engine.patch deleted file mode 100644 index b182d74..0000000 --- a/patch/0010-support-isulad-container-engine.patch +++ /dev/null @@ -1,76 +0,0 @@ -From f2322711a03a998b34b54a5cc784c727f814cc96 Mon Sep 17 00:00:00 2001 -From: vegbir -Date: Tue, 26 Sep 2023 17:05:06 +0800 -Subject: [PATCH 10/13] support isulad container engine - -Signed-off-by: vegbir ---- - pkg/core/typedef/containerinfo.go | 5 +++++ - pkg/core/typedef/rawpod.go | 8 ++++++-- - 2 files changed, 11 insertions(+), 2 deletions(-) - -diff --git a/pkg/core/typedef/containerinfo.go b/pkg/core/typedef/containerinfo.go -index 39cb2cc..d810e5b 100644 ---- a/pkg/core/typedef/containerinfo.go -+++ b/pkg/core/typedef/containerinfo.go -@@ -15,6 +15,7 @@ - package typedef - - import ( -+ "fmt" - "path/filepath" - "strings" - "sync" -@@ -32,12 +33,15 @@ const ( - DOCKER - // CONTAINERD means containerd container engine - CONTAINERD -+ // ISULAD means isulad container engine -+ ISULAD - ) - - var ( - supportEnginesPrefixMap = map[ContainerEngineType]string{ - DOCKER: "docker://", - CONTAINERD: "containerd://", -+ ISULAD: "iSulad://", - } - currentContainerEngines = UNDEFINED - setContainerEnginesOnce sync.Once -@@ -85,6 +89,7 @@ func fixContainerEngine(containerID string) { - for engine, prefix := range supportEnginesPrefixMap { - if strings.HasPrefix(containerID, prefix) { - currentContainerEngines = engine -+ fmt.Printf("The container engine is %v\n", strings.Split(currentContainerEngines.Prefix(), ":")[0]) - return - } - } -diff --git a/pkg/core/typedef/rawpod.go b/pkg/core/typedef/rawpod.go -index 59dfb59..138c580 100644 ---- a/pkg/core/typedef/rawpod.go -+++ b/pkg/core/typedef/rawpod.go -@@ -149,7 +149,11 @@ func (pod *RawPod) ExtractContainerInfos() map[string]*ContainerInfo { - podCgroupPath := pod.CgroupPath() - for _, rawContainer := range nameRawContainersMap { - id, err := rawContainer.GetRealContainerID() -- if id == "" || err != nil { -+ if err != nil { -+ fmt.Printf("failed to parse container ID: %v\n", err) -+ continue -+ } -+ if id == "" { - continue - } - idContainersMap[id] = NewContainerInfo(id, podCgroupPath, rawContainer) -@@ -169,7 +173,7 @@ func (cont *RawContainer) GetRealContainerID() (string, error) { - setContainerEnginesOnce.Do(func() { fixContainerEngine(cont.status.ContainerID) }) - - if !currentContainerEngines.Support(cont) { -- return "", fmt.Errorf("fatal error : unsupported container engine") -+ return "", fmt.Errorf("unsupported container engine: %v", cont.status.ContainerID) - } - - cid := cont.status.ContainerID[len(currentContainerEngines.Prefix()):] --- -2.41.0 - diff --git a/patch/0011-support-systemd-cgroup-driver.patch b/patch/0011-support-systemd-cgroup-driver.patch deleted file mode 100644 index 81e93e7..0000000 --- a/patch/0011-support-systemd-cgroup-driver.patch +++ /dev/null @@ -1,197 +0,0 @@ -From 75075dbb1845e8714fa87ee0e19f80b8845dce71 Mon Sep 17 00:00:00 2001 -From: suoxiaocong -Date: Mon, 22 Apr 2024 15:52:03 +0800 -Subject: [PATCH 11/13] support systemd cgroup driver - ---- - pkg/common/constant/constant.go | 7 +++++++ - pkg/config/config.go | 12 +++++++----- - pkg/core/typedef/cgroup/common.go | 11 +++++++++++ - pkg/core/typedef/containerinfo.go | 16 +++++++++++++++- - pkg/core/typedef/rawpod.go | 30 ++++++++++++++++++++++++++++-- - pkg/rubik/rubik.go | 3 +++ - 6 files changed, 71 insertions(+), 8 deletions(-) - -diff --git a/pkg/common/constant/constant.go b/pkg/common/constant/constant.go -index 2df0b81..4f22ef0 100644 ---- a/pkg/common/constant/constant.go -+++ b/pkg/common/constant/constant.go -@@ -111,3 +111,10 @@ const ( - // PSIIOCgroupFileName is name of cgroup file used for detecting io psi - PSIIOCgroupFileName = "io.pressure" - ) -+ -+const ( -+ // CgroupDriverSystemd is global config for cgroupfs driver choice: systemd driver -+ CgroupDriverSystemd = "systemd" -+ // CgroupDriverCgroupfs is global config for cgroupfs driver choice: cgroupfs driver -+ CgroupDriverCgroupfs = "cgroupfs" -+) -diff --git a/pkg/config/config.go b/pkg/config/config.go -index 16ab6e1..6ae775f 100644 ---- a/pkg/config/config.go -+++ b/pkg/config/config.go -@@ -44,6 +44,7 @@ type AgentConfig struct { - LogDir string `json:"logDir,omitempty"` - CgroupRoot string `json:"cgroupRoot,omitempty"` - EnabledFeatures []string `json:"enabledFeatures,omitempty"` -+ CgroupDriver string `json:"cgroupDriver,omitempty"` - } - - // NewConfig returns an config object pointer -@@ -51,11 +52,12 @@ func NewConfig(pType parserType) *Config { - c := &Config{ - ConfigParser: defaultParserFactory.getParser(pType), - Agent: &AgentConfig{ -- LogDriver: constant.LogDriverStdio, -- LogSize: constant.DefaultLogSize, -- LogLevel: constant.DefaultLogLevel, -- LogDir: constant.DefaultLogDir, -- CgroupRoot: constant.DefaultCgroupRoot, -+ LogDriver: constant.LogDriverStdio, -+ LogSize: constant.DefaultLogSize, -+ LogLevel: constant.DefaultLogLevel, -+ LogDir: constant.DefaultLogDir, -+ CgroupRoot: constant.DefaultCgroupRoot, -+ CgroupDriver: constant.CgroupDriverCgroupfs, - }, - } - return c -diff --git a/pkg/core/typedef/cgroup/common.go b/pkg/core/typedef/cgroup/common.go -index 8c0bd81..a952959 100644 ---- a/pkg/core/typedef/cgroup/common.go -+++ b/pkg/core/typedef/cgroup/common.go -@@ -25,6 +25,17 @@ import ( - ) - - var rootDir = constant.DefaultCgroupRoot -+var cgroupDriver = constant.CgroupDriverCgroupfs -+ -+// SetCgroupDriver is the setter of global cgroup driver -+func SetCgroupDriver(driver string) { -+ cgroupDriver = driver -+} -+ -+// GetCgroupDriver is the getter of global cgroup driver -+func GetCgroupDriver() string { -+ return cgroupDriver -+} - - // AbsoluteCgroupPath returns the absolute path of the cgroup - func AbsoluteCgroupPath(elem ...string) string { -diff --git a/pkg/core/typedef/containerinfo.go b/pkg/core/typedef/containerinfo.go -index d810e5b..f751b25 100644 ---- a/pkg/core/typedef/containerinfo.go -+++ b/pkg/core/typedef/containerinfo.go -@@ -20,6 +20,7 @@ import ( - "strings" - "sync" - -+ "isula.org/rubik/pkg/common/constant" - "isula.org/rubik/pkg/core/typedef/cgroup" - ) - -@@ -45,6 +46,11 @@ var ( - } - currentContainerEngines = UNDEFINED - setContainerEnginesOnce sync.Once -+ containerEngineScopes = map[ContainerEngineType]string{ -+ DOCKER: "docker", -+ CONTAINERD: "cri-containerd", -+ ISULAD: "isulad", -+ } - ) - - // Support returns true when the container uses the container engine -@@ -76,10 +82,18 @@ type ContainerInfo struct { - // NewContainerInfo creates a ContainerInfo instance - func NewContainerInfo(id, podCgroupPath string, rawContainer *RawContainer) *ContainerInfo { - requests, limits := rawContainer.GetResourceMaps() -+ var path string -+ if cgroup.GetCgroupDriver() == constant.CgroupDriverSystemd { -+ scopeName := containerEngineScopes[currentContainerEngines] -+ path = filepath.Join(podCgroupPath, scopeName+"-"+id+".scope") -+ } else { -+ path = filepath.Join(podCgroupPath, id) -+ } -+ - return &ContainerInfo{ - Name: rawContainer.status.Name, - ID: id, -- Hierarchy: cgroup.Hierarchy{Path: filepath.Join(podCgroupPath, id)}, -+ Hierarchy: cgroup.Hierarchy{Path: path}, - RequestResources: requests, - LimitResources: limits, - } -diff --git a/pkg/core/typedef/rawpod.go b/pkg/core/typedef/rawpod.go -index 138c580..895e9d4 100644 ---- a/pkg/core/typedef/rawpod.go -+++ b/pkg/core/typedef/rawpod.go -@@ -23,6 +23,7 @@ import ( - "k8s.io/apimachinery/pkg/api/resource" - - "isula.org/rubik/pkg/common/constant" -+ "isula.org/rubik/pkg/core/typedef/cgroup" - ) - - const ( -@@ -103,7 +104,7 @@ func (pod *RawPod) CgroupPath() string { - return "" - } - /* -- example: -+ for cgroupfs cgroup driver - 1. Burstable: pod requests are less than the value of limits and not 0; - kubepods/burstable/pod34152897-dbaf-11ea-8cb9-0653660051c3 - 2. BestEffort: pod requests and limits are both 0; -@@ -111,7 +112,32 @@ func (pod *RawPod) CgroupPath() string { - 3. Guaranteed: pod requests are equal to the value set by limits; - kubepods/pod34152897-dbaf-11ea-8cb9-0653660051c3 - */ -- return filepath.Join(constant.KubepodsCgroup, qosClassPath, constant.PodCgroupNamePrefix+id) -+ /* -+ for systemd cgroup driver -+ 1. burstable: -+ kubepods.slice/kubepods-burstable.slice/kubepods-burstable-podb895995a_e7e5_413e_9bc1_3c3895b3f233.slice -+ 2. besteffort -+ kubepods.slice/kubepods-besteffort.slice/kubepods-besteffort-podb895995a_e7e5_413e_9bc1_3c3895b3f233.slice -+ 3. guaranteed -+ kubepods.slice/kubepods-podb895995a_e7e5_413e_9bc1_3c3895b3f233.slice/ -+ */ -+ -+ if cgroup.GetCgroupDriver() == constant.CgroupDriverSystemd { -+ if qosClassPath == "" { -+ return filepath.Join( -+ constant.KubepodsCgroup+".slice", -+ constant.KubepodsCgroup+"-"+constant.PodCgroupNamePrefix+strings.Replace(id, "-", "_", -1)+".slice", -+ ) -+ } -+ return filepath.Join( -+ constant.KubepodsCgroup+".slice", -+ constant.KubepodsCgroup+"-"+qosClassPath+".slice", -+ constant.KubepodsCgroup+"-"+qosClassPath+"-"+constant.PodCgroupNamePrefix+strings.Replace(id, "-", "_", -1)+".slice", -+ ) -+ } else { -+ return filepath.Join(constant.KubepodsCgroup, qosClassPath, constant.PodCgroupNamePrefix+id) -+ } -+ - } - - // ListRawContainers returns all RawContainers in the RawPod -diff --git a/pkg/rubik/rubik.go b/pkg/rubik/rubik.go -index 3864956..3595ff1 100644 ---- a/pkg/rubik/rubik.go -+++ b/pkg/rubik/rubik.go -@@ -126,6 +126,9 @@ func runAgent(ctx context.Context) error { - - // 3. enable cgroup system - cgroup.InitMountDir(c.Agent.CgroupRoot) -+ if c.Agent.CgroupDriver != "" { -+ cgroup.SetCgroupDriver(c.Agent.CgroupDriver) -+ } - - // 4. init service components - services.InitServiceComponents(defaultRubikFeature) --- -2.41.0 - diff --git a/patch/0012-support-crio-container-engine.patch b/patch/0012-support-crio-container-engine.patch deleted file mode 100644 index fb115d9..0000000 --- a/patch/0012-support-crio-container-engine.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 3741f7254be1a6766f7ca2056e689d6e84febb95 Mon Sep 17 00:00:00 2001 -From: weiyuan -Date: Tue, 21 May 2024 09:37:59 +0800 -Subject: [PATCH 12/13] support crio container engine - ---- - pkg/core/typedef/containerinfo.go | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/pkg/core/typedef/containerinfo.go b/pkg/core/typedef/containerinfo.go -index f751b25..845105f 100644 ---- a/pkg/core/typedef/containerinfo.go -+++ b/pkg/core/typedef/containerinfo.go -@@ -36,6 +36,8 @@ const ( - CONTAINERD - // ISULAD means isulad container engine - ISULAD -+ // CRIO means crio container engine -+ CRIO - ) - - var ( -@@ -43,6 +45,7 @@ var ( - DOCKER: "docker://", - CONTAINERD: "containerd://", - ISULAD: "iSulad://", -+ CRIO: "cri-o://", - } - currentContainerEngines = UNDEFINED - setContainerEnginesOnce sync.Once -@@ -50,6 +53,7 @@ var ( - DOCKER: "docker", - CONTAINERD: "cri-containerd", - ISULAD: "isulad", -+ CRIO: "crio", - } - ) - --- -2.41.0 - diff --git a/patch/0013-informer-add-nri-support.patch b/patch/0013-informer-add-nri-support.patch deleted file mode 100644 index c7ca0ca..0000000 --- a/patch/0013-informer-add-nri-support.patch +++ /dev/null @@ -1,191580 +0,0 @@ -From 79e30c1c990829b1bfbfe4fdc64644e06980bb9f Mon Sep 17 00:00:00 2001 -From: vegbir -Date: Tue, 20 Aug 2024 14:03:52 +0000 -Subject: [PATCH 13/13] informer-add-nri-support - ---- - go.mod | 33 +- - go.sum | 41 + - pkg/api/api.go | 1 + - pkg/common/constant/constant.go | 21 + - pkg/config/config.go | 2 + - pkg/core/typedef/containerinfo.go | 20 +- - pkg/core/typedef/event.go | 32 +- - pkg/core/typedef/nrirawpod.go | 461 + - pkg/core/typedef/podinfo.go | 2 + - pkg/core/typedef/rawpod.go | 74 +- - pkg/informer/apiserverinformer.go | 3 + - pkg/informer/informerfactory.go | 3 + - pkg/informer/nriinformer.go | 147 + - pkg/podmanager/podcache.go | 15 + - pkg/podmanager/podmanager.go | 212 + - pkg/rubik/rubik.go | 28 +- - vendor/github.com/beorn7/perks/LICENSE | 20 + - .../beorn7/perks/quantile/exampledata.txt | 2388 + - .../beorn7/perks/quantile/stream.go | 316 + - .../github.com/cespare/xxhash/v2/LICENSE.txt | 22 + - vendor/github.com/cespare/xxhash/v2/README.md | 72 + - .../github.com/cespare/xxhash/v2/testall.sh | 10 + - vendor/github.com/cespare/xxhash/v2/xxhash.go | 228 + - .../cespare/xxhash/v2/xxhash_amd64.s | 209 + - .../cespare/xxhash/v2/xxhash_arm64.s | 183 + - .../cespare/xxhash/v2/xxhash_asm.go | 15 + - .../cespare/xxhash/v2/xxhash_other.go | 76 + - .../cespare/xxhash/v2/xxhash_safe.go | 16 + - .../cespare/xxhash/v2/xxhash_unsafe.go | 58 + - .../checkpoint-restore/go-criu/v5/.gitignore | 0 - .../go-criu/v5/.golangci.yml | 0 - .../checkpoint-restore/go-criu/v5/LICENSE | 0 - .../checkpoint-restore/go-criu/v5/Makefile | 0 - .../checkpoint-restore/go-criu/v5/README.md | 0 - .../checkpoint-restore/go-criu/v5/features.go | 0 - .../checkpoint-restore/go-criu/v5/main.go | 0 - .../checkpoint-restore/go-criu/v5/notify.go | 0 - .../go-criu/v5/rpc/rpc.pb.go | 0 - .../go-criu/v5/rpc/rpc.proto | 0 - vendor/github.com/cilium/ebpf/.clang-format | 0 - vendor/github.com/cilium/ebpf/.gitignore | 0 - vendor/github.com/cilium/ebpf/.golangci.yaml | 0 - vendor/github.com/cilium/ebpf/ARCHITECTURE.md | 0 - .../github.com/cilium/ebpf/CODE_OF_CONDUCT.md | 0 - vendor/github.com/cilium/ebpf/CONTRIBUTING.md | 0 - vendor/github.com/cilium/ebpf/LICENSE | 0 - vendor/github.com/cilium/ebpf/Makefile | 0 - vendor/github.com/cilium/ebpf/README.md | 0 - vendor/github.com/cilium/ebpf/asm/alu.go | 0 - .../github.com/cilium/ebpf/asm/alu_string.go | 0 - vendor/github.com/cilium/ebpf/asm/doc.go | 0 - vendor/github.com/cilium/ebpf/asm/func.go | 0 - .../github.com/cilium/ebpf/asm/func_string.go | 0 - .../github.com/cilium/ebpf/asm/instruction.go | 0 - vendor/github.com/cilium/ebpf/asm/jump.go | 0 - .../github.com/cilium/ebpf/asm/jump_string.go | 0 - .../github.com/cilium/ebpf/asm/load_store.go | 0 - .../cilium/ebpf/asm/load_store_string.go | 0 - vendor/github.com/cilium/ebpf/asm/opcode.go | 0 - .../cilium/ebpf/asm/opcode_string.go | 0 - vendor/github.com/cilium/ebpf/asm/register.go | 0 - .../cilium/ebpf/attachtype_string.go | 0 - vendor/github.com/cilium/ebpf/collection.go | 0 - vendor/github.com/cilium/ebpf/doc.go | 0 - vendor/github.com/cilium/ebpf/elf_reader.go | 0 - .../github.com/cilium/ebpf/elf_reader_fuzz.go | 0 - vendor/github.com/cilium/ebpf/info.go | 0 - .../github.com/cilium/ebpf/internal/align.go | 0 - .../cilium/ebpf/internal/btf/btf.go | 0 - .../cilium/ebpf/internal/btf/btf_types.go | 0 - .../ebpf/internal/btf/btf_types_string.go | 0 - .../cilium/ebpf/internal/btf/core.go | 0 - .../cilium/ebpf/internal/btf/doc.go | 0 - .../cilium/ebpf/internal/btf/ext_info.go | 0 - .../cilium/ebpf/internal/btf/fuzz.go | 0 - .../cilium/ebpf/internal/btf/info.go | 0 - .../cilium/ebpf/internal/btf/strings.go | 0 - .../cilium/ebpf/internal/btf/syscalls.go | 0 - .../cilium/ebpf/internal/btf/types.go | 0 - vendor/github.com/cilium/ebpf/internal/cpu.go | 0 - vendor/github.com/cilium/ebpf/internal/elf.go | 0 - .../github.com/cilium/ebpf/internal/endian.go | 0 - .../github.com/cilium/ebpf/internal/errors.go | 0 - vendor/github.com/cilium/ebpf/internal/fd.go | 0 - .../cilium/ebpf/internal/feature.go | 0 - vendor/github.com/cilium/ebpf/internal/io.go | 0 - .../cilium/ebpf/internal/pinning.go | 0 - vendor/github.com/cilium/ebpf/internal/ptr.go | 0 - .../cilium/ebpf/internal/ptr_32_be.go | 0 - .../cilium/ebpf/internal/ptr_32_le.go | 0 - .../github.com/cilium/ebpf/internal/ptr_64.go | 0 - .../cilium/ebpf/internal/syscall.go | 0 - .../cilium/ebpf/internal/syscall_string.go | 0 - .../cilium/ebpf/internal/unix/types_linux.go | 0 - .../cilium/ebpf/internal/unix/types_other.go | 0 - .../cilium/ebpf/internal/version.go | 0 - vendor/github.com/cilium/ebpf/link/cgroup.go | 0 - vendor/github.com/cilium/ebpf/link/doc.go | 0 - .../github.com/cilium/ebpf/link/freplace.go | 0 - vendor/github.com/cilium/ebpf/link/iter.go | 0 - vendor/github.com/cilium/ebpf/link/kprobe.go | 0 - vendor/github.com/cilium/ebpf/link/link.go | 0 - vendor/github.com/cilium/ebpf/link/netns.go | 0 - .../github.com/cilium/ebpf/link/perf_event.go | 0 - .../github.com/cilium/ebpf/link/platform.go | 0 - vendor/github.com/cilium/ebpf/link/program.go | 0 - .../cilium/ebpf/link/raw_tracepoint.go | 0 - .../github.com/cilium/ebpf/link/syscalls.go | 0 - .../github.com/cilium/ebpf/link/tracepoint.go | 0 - vendor/github.com/cilium/ebpf/link/uprobe.go | 0 - vendor/github.com/cilium/ebpf/linker.go | 0 - vendor/github.com/cilium/ebpf/map.go | 0 - vendor/github.com/cilium/ebpf/marshalers.go | 0 - vendor/github.com/cilium/ebpf/prog.go | 0 - vendor/github.com/cilium/ebpf/run-tests.sh | 0 - vendor/github.com/cilium/ebpf/syscalls.go | 0 - vendor/github.com/cilium/ebpf/types.go | 0 - vendor/github.com/cilium/ebpf/types_string.go | 0 - .../containerd/console/.golangci.yml | 0 - vendor/github.com/containerd/console/LICENSE | 0 - .../github.com/containerd/console/README.md | 0 - .../github.com/containerd/console/console.go | 0 - .../containerd/console/console_linux.go | 0 - .../containerd/console/console_unix.go | 0 - .../containerd/console/console_windows.go | 0 - .../containerd/console/console_zos.go | 0 - .../containerd/console/pty_freebsd_cgo.go | 0 - .../containerd/console/pty_freebsd_nocgo.go | 0 - .../github.com/containerd/console/pty_unix.go | 0 - .../containerd/console/tc_darwin.go | 0 - .../containerd/console/tc_freebsd_cgo.go | 0 - .../containerd/console/tc_freebsd_nocgo.go | 0 - .../github.com/containerd/console/tc_linux.go | 0 - .../containerd/console/tc_netbsd.go | 0 - .../containerd/console/tc_openbsd_cgo.go | 0 - .../containerd/console/tc_openbsd_nocgo.go | 0 - .../containerd/console/tc_solaris_cgo.go | 0 - .../containerd/console/tc_solaris_nocgo.go | 0 - .../github.com/containerd/console/tc_unix.go | 0 - .../github.com/containerd/console/tc_zos.go | 0 - vendor/github.com/containerd/nri/LICENSE | 201 + - .../containerd/nri/pkg/api/adjustment.go | 310 + - .../containerd/nri/pkg/api/api.pb.go | 4402 ++ - .../containerd/nri/pkg/api/api.proto | 450 + - .../containerd/nri/pkg/api/api_ttrpc.pb.go | 192 + - .../containerd/nri/pkg/api/device.go | 89 + - .../github.com/containerd/nri/pkg/api/doc.go | 17 + - .../github.com/containerd/nri/pkg/api/env.go | 60 + - .../containerd/nri/pkg/api/event.go | 172 + - .../containerd/nri/pkg/api/helpers.go | 59 + - .../containerd/nri/pkg/api/hooks.go | 103 + - .../containerd/nri/pkg/api/mount.go | 88 + - .../containerd/nri/pkg/api/namespace.go | 33 + - .../containerd/nri/pkg/api/optional.go | 341 + - .../containerd/nri/pkg/api/plugin.go | 58 + - .../containerd/nri/pkg/api/resources.go | 233 + - .../containerd/nri/pkg/api/update.go | 186 + - .../github.com/containerd/nri/pkg/log/log.go | 87 + - .../github.com/containerd/nri/pkg/net/conn.go | 93 + - .../containerd/nri/pkg/net/multiplex/mux.go | 444 + - .../containerd/nri/pkg/net/multiplex/ttrpc.go | 24 + - .../containerd/nri/pkg/net/socketpair.go | 93 + - .../nri/pkg/net/socketpair_cloexec_linux.go | 27 + - .../nri/pkg/net/socketpair_cloexec_unix.go | 38 + - .../nri/pkg/net/socketpair_cloexec_windows.go | 30 + - .../containerd/nri/pkg/stub/stub.go | 779 + - .../containerd/ttrpc/.gitattributes | 1 + - vendor/github.com/containerd/ttrpc/.gitignore | 13 + - .../github.com/containerd/ttrpc/.golangci.yml | 52 + - vendor/github.com/containerd/ttrpc/LICENSE | 201 + - vendor/github.com/containerd/ttrpc/Makefile | 180 + - .../github.com/containerd/ttrpc/PROTOCOL.md | 240 + - .../containerd/ttrpc/Protobuild.toml | 28 + - vendor/github.com/containerd/ttrpc/README.md | 59 + - vendor/github.com/containerd/ttrpc/channel.go | 182 + - vendor/github.com/containerd/ttrpc/client.go | 551 + - vendor/github.com/containerd/ttrpc/codec.go | 43 + - vendor/github.com/containerd/ttrpc/config.go | 86 + - vendor/github.com/containerd/ttrpc/doc.go | 23 + - vendor/github.com/containerd/ttrpc/errors.go | 34 + - .../github.com/containerd/ttrpc/handshake.go | 50 + - .../containerd/ttrpc/interceptor.go | 65 + - .../github.com/containerd/ttrpc/metadata.go | 107 + - .../github.com/containerd/ttrpc/request.pb.go | 396 + - .../github.com/containerd/ttrpc/request.proto | 29 + - vendor/github.com/containerd/ttrpc/server.go | 579 + - .../github.com/containerd/ttrpc/services.go | 279 + - vendor/github.com/containerd/ttrpc/stream.go | 84 + - .../containerd/ttrpc/stream_server.go | 22 + - vendor/github.com/containerd/ttrpc/test.proto | 16 + - .../containerd/ttrpc/unixcreds_linux.go | 105 + - .../github.com/coreos/go-systemd/v22/LICENSE | 0 - .../github.com/coreos/go-systemd/v22/NOTICE | 0 - .../coreos/go-systemd/v22/dbus/dbus.go | 0 - .../coreos/go-systemd/v22/dbus/methods.go | 0 - .../coreos/go-systemd/v22/dbus/properties.go | 0 - .../coreos/go-systemd/v22/dbus/set.go | 0 - .../go-systemd/v22/dbus/subscription.go | 0 - .../go-systemd/v22/dbus/subscription_set.go | 0 - .../cyphar/filepath-securejoin/.travis.yml | 0 - .../cyphar/filepath-securejoin/LICENSE | 0 - .../cyphar/filepath-securejoin/README.md | 0 - .../cyphar/filepath-securejoin/VERSION | 0 - .../cyphar/filepath-securejoin/join.go | 0 - .../cyphar/filepath-securejoin/vendor.conf | 0 - .../cyphar/filepath-securejoin/vfs.go | 0 - vendor/github.com/davecgh/go-spew/LICENSE | 0 - .../github.com/davecgh/go-spew/spew/bypass.go | 0 - .../davecgh/go-spew/spew/bypasssafe.go | 0 - .../github.com/davecgh/go-spew/spew/common.go | 0 - .../github.com/davecgh/go-spew/spew/config.go | 0 - vendor/github.com/davecgh/go-spew/spew/doc.go | 0 - .../github.com/davecgh/go-spew/spew/dump.go | 0 - .../github.com/davecgh/go-spew/spew/format.go | 0 - .../github.com/davecgh/go-spew/spew/spew.go | 0 - .../docker/go-units/CONTRIBUTING.md | 0 - vendor/github.com/docker/go-units/LICENSE | 0 - vendor/github.com/docker/go-units/MAINTAINERS | 0 - vendor/github.com/docker/go-units/README.md | 0 - vendor/github.com/docker/go-units/circle.yml | 0 - vendor/github.com/docker/go-units/duration.go | 0 - vendor/github.com/docker/go-units/size.go | 0 - vendor/github.com/docker/go-units/ulimit.go | 0 - .../github.com/euank/go-kmsg-parser/LICENSE | 0 - .../go-kmsg-parser/kmsgparser/kmsgparser.go | 0 - .../euank/go-kmsg-parser/kmsgparser/log.go | 0 - vendor/github.com/go-logr/logr/.golangci.yaml | 0 - vendor/github.com/go-logr/logr/CHANGELOG.md | 0 - .../github.com/go-logr/logr/CONTRIBUTING.md | 0 - vendor/github.com/go-logr/logr/LICENSE | 0 - vendor/github.com/go-logr/logr/README.md | 4 + - vendor/github.com/go-logr/logr/discard.go | 0 - vendor/github.com/go-logr/logr/logr.go | 20 +- - .../github.com/godbus/dbus/v5/CONTRIBUTING.md | 0 - vendor/github.com/godbus/dbus/v5/LICENSE | 0 - vendor/github.com/godbus/dbus/v5/MAINTAINERS | 0 - vendor/github.com/godbus/dbus/v5/README.md | 0 - vendor/github.com/godbus/dbus/v5/auth.go | 0 - .../godbus/dbus/v5/auth_anonymous.go | 0 - .../godbus/dbus/v5/auth_external.go | 0 - vendor/github.com/godbus/dbus/v5/auth_sha1.go | 0 - vendor/github.com/godbus/dbus/v5/call.go | 0 - vendor/github.com/godbus/dbus/v5/conn.go | 0 - .../github.com/godbus/dbus/v5/conn_darwin.go | 0 - .../github.com/godbus/dbus/v5/conn_other.go | 0 - vendor/github.com/godbus/dbus/v5/conn_unix.go | 0 - .../github.com/godbus/dbus/v5/conn_windows.go | 0 - vendor/github.com/godbus/dbus/v5/dbus.go | 0 - vendor/github.com/godbus/dbus/v5/decoder.go | 0 - .../godbus/dbus/v5/default_handler.go | 0 - vendor/github.com/godbus/dbus/v5/doc.go | 0 - vendor/github.com/godbus/dbus/v5/encoder.go | 0 - vendor/github.com/godbus/dbus/v5/export.go | 0 - vendor/github.com/godbus/dbus/v5/homedir.go | 0 - .../godbus/dbus/v5/homedir_dynamic.go | 0 - .../godbus/dbus/v5/homedir_static.go | 0 - vendor/github.com/godbus/dbus/v5/match.go | 0 - vendor/github.com/godbus/dbus/v5/message.go | 0 - vendor/github.com/godbus/dbus/v5/object.go | 0 - vendor/github.com/godbus/dbus/v5/sequence.go | 0 - .../godbus/dbus/v5/sequential_handler.go | 0 - .../godbus/dbus/v5/server_interfaces.go | 0 - vendor/github.com/godbus/dbus/v5/sig.go | 0 - .../godbus/dbus/v5/transport_darwin.go | 0 - .../godbus/dbus/v5/transport_generic.go | 0 - .../godbus/dbus/v5/transport_nonce_tcp.go | 0 - .../godbus/dbus/v5/transport_tcp.go | 0 - .../godbus/dbus/v5/transport_unix.go | 0 - .../dbus/v5/transport_unixcred_dragonfly.go | 0 - .../dbus/v5/transport_unixcred_freebsd.go | 0 - .../dbus/v5/transport_unixcred_linux.go | 0 - .../dbus/v5/transport_unixcred_netbsd.go | 0 - .../dbus/v5/transport_unixcred_openbsd.go | 0 - vendor/github.com/godbus/dbus/v5/variant.go | 0 - .../godbus/dbus/v5/variant_lexer.go | 0 - .../godbus/dbus/v5/variant_parser.go | 0 - vendor/github.com/gogo/protobuf/AUTHORS | 0 - vendor/github.com/gogo/protobuf/CONTRIBUTORS | 0 - vendor/github.com/gogo/protobuf/LICENSE | 0 - .../gogo/protobuf/gogoproto/Makefile | 37 + - .../github.com/gogo/protobuf/gogoproto/doc.go | 169 + - .../gogo/protobuf/gogoproto/gogo.pb.go | 874 + - .../gogo/protobuf/gogoproto/gogo.pb.golden | 45 + - .../gogo/protobuf/gogoproto/gogo.proto | 144 + - .../gogo/protobuf/gogoproto/helper.go | 415 + - .../github.com/gogo/protobuf/proto/Makefile | 0 - .../github.com/gogo/protobuf/proto/clone.go | 0 - .../gogo/protobuf/proto/custom_gogo.go | 0 - .../github.com/gogo/protobuf/proto/decode.go | 0 - .../gogo/protobuf/proto/deprecated.go | 0 - .../github.com/gogo/protobuf/proto/discard.go | 0 - .../gogo/protobuf/proto/duration.go | 0 - .../gogo/protobuf/proto/duration_gogo.go | 0 - .../github.com/gogo/protobuf/proto/encode.go | 0 - .../gogo/protobuf/proto/encode_gogo.go | 0 - .../github.com/gogo/protobuf/proto/equal.go | 0 - .../gogo/protobuf/proto/extensions.go | 0 - .../gogo/protobuf/proto/extensions_gogo.go | 0 - vendor/github.com/gogo/protobuf/proto/lib.go | 0 - .../gogo/protobuf/proto/lib_gogo.go | 0 - .../gogo/protobuf/proto/message_set.go | 0 - .../gogo/protobuf/proto/pointer_reflect.go | 0 - .../protobuf/proto/pointer_reflect_gogo.go | 0 - .../gogo/protobuf/proto/pointer_unsafe.go | 0 - .../protobuf/proto/pointer_unsafe_gogo.go | 0 - .../gogo/protobuf/proto/properties.go | 0 - .../gogo/protobuf/proto/properties_gogo.go | 0 - .../gogo/protobuf/proto/skip_gogo.go | 0 - .../gogo/protobuf/proto/table_marshal.go | 0 - .../gogo/protobuf/proto/table_marshal_gogo.go | 0 - .../gogo/protobuf/proto/table_merge.go | 0 - .../gogo/protobuf/proto/table_unmarshal.go | 0 - .../protobuf/proto/table_unmarshal_gogo.go | 0 - vendor/github.com/gogo/protobuf/proto/text.go | 0 - .../gogo/protobuf/proto/text_gogo.go | 0 - .../gogo/protobuf/proto/text_parser.go | 0 - .../gogo/protobuf/proto/timestamp.go | 0 - .../gogo/protobuf/proto/timestamp_gogo.go | 0 - .../gogo/protobuf/proto/wrappers.go | 0 - .../gogo/protobuf/proto/wrappers_gogo.go | 0 - .../protoc-gen-gogo/descriptor/Makefile | 36 + - .../protoc-gen-gogo/descriptor/descriptor.go | 118 + - .../descriptor/descriptor.pb.go | 2865 ++ - .../descriptor/descriptor_gostring.gen.go | 752 + - .../protoc-gen-gogo/descriptor/helper.go | 390 + - .../gogo/protobuf/sortkeys/sortkeys.go | 0 - vendor/github.com/golang/protobuf/AUTHORS | 0 - .../github.com/golang/protobuf/CONTRIBUTORS | 0 - vendor/github.com/golang/protobuf/LICENSE | 0 - .../golang/protobuf/jsonpb/decode.go | 530 + - .../golang/protobuf/jsonpb/encode.go | 559 + - .../github.com/golang/protobuf/jsonpb/json.go | 69 + - .../golang/protobuf/proto/buffer.go | 0 - .../golang/protobuf/proto/defaults.go | 0 - .../golang/protobuf/proto/deprecated.go | 0 - .../golang/protobuf/proto/discard.go | 0 - .../golang/protobuf/proto/extensions.go | 0 - .../golang/protobuf/proto/properties.go | 0 - .../github.com/golang/protobuf/proto/proto.go | 0 - .../golang/protobuf/proto/registry.go | 0 - .../golang/protobuf/proto/text_decode.go | 0 - .../golang/protobuf/proto/text_encode.go | 0 - .../github.com/golang/protobuf/proto/wire.go | 0 - .../golang/protobuf/proto/wrappers.go | 0 - .../github.com/golang/protobuf/ptypes/any.go | 0 - .../golang/protobuf/ptypes/any/any.pb.go | 0 - .../github.com/golang/protobuf/ptypes/doc.go | 0 - .../golang/protobuf/ptypes/duration.go | 0 - .../protobuf/ptypes/duration/duration.pb.go | 0 - .../golang/protobuf/ptypes/timestamp.go | 0 - .../protobuf/ptypes/timestamp/timestamp.pb.go | 0 - vendor/github.com/google/cadvisor/AUTHORS | 0 - vendor/github.com/google/cadvisor/LICENSE | 0 - .../google/cadvisor/cache/memory/memory.go | 0 - .../cadvisor/collector/collector_manager.go | 0 - .../google/cadvisor/collector/config.go | 0 - .../google/cadvisor/collector/fakes.go | 0 - .../cadvisor/collector/generic_collector.go | 0 - .../collector/prometheus_collector.go | 0 - .../google/cadvisor/collector/types.go | 0 - .../google/cadvisor/collector/util.go | 0 - .../container/common/container_hints.go | 0 - .../cadvisor/container/common/fsHandler.go | 0 - .../cadvisor/container/common/helpers.go | 0 - .../container/common/inotify_watcher.go | 0 - .../google/cadvisor/container/container.go | 0 - .../google/cadvisor/container/factory.go | 0 - .../container/libcontainer/handler.go | 0 - .../container/libcontainer/helpers.go | 0 - .../google/cadvisor/container/raw/factory.go | 0 - .../google/cadvisor/container/raw/handler.go | 0 - .../google/cadvisor/container/raw/watcher.go | 0 - .../cadvisor/devicemapper/dmsetup_client.go | 0 - .../google/cadvisor/devicemapper/doc.go | 0 - .../cadvisor/devicemapper/thin_ls_client.go | 0 - .../devicemapper/thin_pool_watcher.go | 0 - .../google/cadvisor/devicemapper/util.go | 0 - .../google/cadvisor/events/handler.go | 0 - vendor/github.com/google/cadvisor/fs/fs.go | 0 - vendor/github.com/google/cadvisor/fs/types.go | 0 - .../google/cadvisor/info/v1/container.go | 0 - .../google/cadvisor/info/v1/docker.go | 0 - .../google/cadvisor/info/v1/machine.go | 0 - .../google/cadvisor/info/v1/metric.go | 0 - .../google/cadvisor/info/v2/container.go | 0 - .../google/cadvisor/info/v2/conversion.go | 0 - .../google/cadvisor/info/v2/machine.go | 0 - .../google/cadvisor/machine/info.go | 0 - .../google/cadvisor/machine/machine.go | 0 - .../cadvisor/machine/operatingsystem_unix.go | 0 - .../machine/operatingsystem_windows.go | 0 - .../google/cadvisor/manager/container.go | 0 - .../google/cadvisor/manager/manager.go | 0 - .../google/cadvisor/nvm/machine_libipmctl.go | 0 - .../cadvisor/nvm/machine_no_libipmctl.go | 0 - .../google/cadvisor/perf/collector_libpfm.go | 0 - .../cadvisor/perf/collector_no_libpfm.go | 0 - .../github.com/google/cadvisor/perf/config.go | 0 - .../google/cadvisor/perf/manager_libpfm.go | 0 - .../google/cadvisor/perf/manager_no_libpfm.go | 0 - .../google/cadvisor/perf/types_libpfm.go | 0 - .../google/cadvisor/perf/uncore_libpfm.go | 0 - .../google/cadvisor/resctrl/collector.go | 0 - .../google/cadvisor/resctrl/manager.go | 0 - .../google/cadvisor/resctrl/utils.go | 0 - .../github.com/google/cadvisor/stats/noop.go | 0 - .../github.com/google/cadvisor/stats/types.go | 0 - .../google/cadvisor/storage/common_flags.go | 0 - .../google/cadvisor/storage/storage.go | 0 - .../google/cadvisor/summary/buffer.go | 0 - .../google/cadvisor/summary/percentiles.go | 0 - .../google/cadvisor/summary/summary.go | 0 - .../cadvisor/utils/cloudinfo/cloudinfo.go | 0 - .../google/cadvisor/utils/cpuload/cpuload.go | 0 - .../cadvisor/utils/cpuload/netlink/conn.go | 0 - .../cadvisor/utils/cpuload/netlink/netlink.go | 0 - .../cadvisor/utils/cpuload/netlink/reader.go | 0 - .../cadvisor/utils/oomparser/oomparser.go | 0 - .../github.com/google/cadvisor/utils/path.go | 0 - .../google/cadvisor/utils/sysfs/sysfs.go | 0 - .../cadvisor/utils/sysfs/sysfs_notx86.go | 0 - .../google/cadvisor/utils/sysfs/sysfs_x86.go | 0 - .../google/cadvisor/utils/sysinfo/sysinfo.go | 0 - .../google/cadvisor/utils/timed_store.go | 0 - .../github.com/google/cadvisor/utils/utils.go | 0 - .../google/cadvisor/version/version.go | 0 - .../google/cadvisor/watcher/watcher.go | 0 - vendor/github.com/google/go-cmp/LICENSE | 0 - .../github.com/google/go-cmp/cmp/compare.go | 64 +- - .../google/go-cmp/cmp/export_panic.go | 0 - .../google/go-cmp/cmp/export_unsafe.go | 0 - .../go-cmp/cmp/internal/diff/debug_disable.go | 0 - .../go-cmp/cmp/internal/diff/debug_enable.go | 0 - .../google/go-cmp/cmp/internal/diff/diff.go | 44 +- - .../google/go-cmp/cmp/internal/flags/flags.go | 0 - .../go-cmp/cmp/internal/function/func.go | 0 - .../google/go-cmp/cmp/internal/value/name.go | 0 - .../cmp/internal/value/pointer_purego.go | 0 - .../cmp/internal/value/pointer_unsafe.go | 0 - .../google/go-cmp/cmp/internal/value/sort.go | 0 - .../google/go-cmp/cmp/internal/value/zero.go | 48 - - .../github.com/google/go-cmp/cmp/options.go | 10 +- - vendor/github.com/google/go-cmp/cmp/path.go | 20 +- - vendor/github.com/google/go-cmp/cmp/report.go | 0 - .../google/go-cmp/cmp/report_compare.go | 10 +- - .../google/go-cmp/cmp/report_references.go | 0 - .../google/go-cmp/cmp/report_reflect.go | 11 +- - .../google/go-cmp/cmp/report_slices.go | 25 +- - .../google/go-cmp/cmp/report_text.go | 1 + - .../google/go-cmp/cmp/report_value.go | 0 - vendor/github.com/google/gofuzz/.travis.yml | 0 - .../github.com/google/gofuzz/CONTRIBUTING.md | 0 - vendor/github.com/google/gofuzz/LICENSE | 0 - vendor/github.com/google/gofuzz/README.md | 0 - vendor/github.com/google/gofuzz/doc.go | 0 - vendor/github.com/google/gofuzz/fuzz.go | 0 - vendor/github.com/google/uuid/.travis.yml | 0 - vendor/github.com/google/uuid/CONTRIBUTING.md | 0 - vendor/github.com/google/uuid/CONTRIBUTORS | 0 - vendor/github.com/google/uuid/LICENSE | 0 - vendor/github.com/google/uuid/README.md | 0 - vendor/github.com/google/uuid/dce.go | 0 - vendor/github.com/google/uuid/doc.go | 0 - vendor/github.com/google/uuid/hash.go | 4 +- - vendor/github.com/google/uuid/marshal.go | 0 - vendor/github.com/google/uuid/node.go | 0 - vendor/github.com/google/uuid/node_js.go | 0 - vendor/github.com/google/uuid/node_net.go | 0 - vendor/github.com/google/uuid/null.go | 118 + - vendor/github.com/google/uuid/sql.go | 2 +- - vendor/github.com/google/uuid/time.go | 0 - vendor/github.com/google/uuid/util.go | 0 - vendor/github.com/google/uuid/uuid.go | 55 +- - vendor/github.com/google/uuid/version1.go | 0 - vendor/github.com/google/uuid/version4.go | 35 +- - vendor/github.com/googleapis/gnostic/LICENSE | 0 - .../googleapis/gnostic/compiler/README.md | 0 - .../googleapis/gnostic/compiler/context.go | 0 - .../googleapis/gnostic/compiler/error.go | 0 - .../gnostic/compiler/extension-handler.go | 0 - .../googleapis/gnostic/compiler/helpers.go | 0 - .../googleapis/gnostic/compiler/main.go | 0 - .../googleapis/gnostic/compiler/reader.go | 0 - .../googleapis/gnostic/extensions/README.md | 0 - .../gnostic/extensions/extension.pb.go | 0 - .../gnostic/extensions/extension.proto | 0 - .../gnostic/extensions/extensions.go | 0 - .../googleapis/gnostic/openapiv2/OpenAPIv2.go | 0 - .../gnostic/openapiv2/OpenAPIv2.pb.go | 0 - .../gnostic/openapiv2/OpenAPIv2.proto | 0 - .../googleapis/gnostic/openapiv2/README.md | 0 - .../gnostic/openapiv2/openapi-2.0.json | 0 - .../hashicorp/golang-lru/.gitignore | 0 - vendor/github.com/hashicorp/golang-lru/2q.go | 0 - .../github.com/hashicorp/golang-lru/LICENSE | 0 - .../github.com/hashicorp/golang-lru/README.md | 0 - vendor/github.com/hashicorp/golang-lru/arc.go | 0 - vendor/github.com/hashicorp/golang-lru/doc.go | 0 - vendor/github.com/hashicorp/golang-lru/lru.go | 0 - .../hashicorp/golang-lru/simplelru/lru.go | 0 - .../golang-lru/simplelru/lru_interface.go | 0 - .../github.com/json-iterator/go/.codecov.yml | 0 - vendor/github.com/json-iterator/go/.gitignore | 0 - .../github.com/json-iterator/go/.travis.yml | 0 - vendor/github.com/json-iterator/go/Gopkg.lock | 0 - vendor/github.com/json-iterator/go/Gopkg.toml | 0 - vendor/github.com/json-iterator/go/LICENSE | 0 - vendor/github.com/json-iterator/go/README.md | 0 - vendor/github.com/json-iterator/go/adapter.go | 0 - vendor/github.com/json-iterator/go/any.go | 0 - .../github.com/json-iterator/go/any_array.go | 0 - .../github.com/json-iterator/go/any_bool.go | 0 - .../github.com/json-iterator/go/any_float.go | 0 - .../github.com/json-iterator/go/any_int32.go | 0 - .../github.com/json-iterator/go/any_int64.go | 0 - .../json-iterator/go/any_invalid.go | 0 - vendor/github.com/json-iterator/go/any_nil.go | 0 - .../github.com/json-iterator/go/any_number.go | 0 - .../github.com/json-iterator/go/any_object.go | 0 - vendor/github.com/json-iterator/go/any_str.go | 0 - .../github.com/json-iterator/go/any_uint32.go | 0 - .../github.com/json-iterator/go/any_uint64.go | 0 - vendor/github.com/json-iterator/go/build.sh | 0 - vendor/github.com/json-iterator/go/config.go | 0 - .../go/fuzzy_mode_convert_table.md | 0 - vendor/github.com/json-iterator/go/iter.go | 0 - .../github.com/json-iterator/go/iter_array.go | 0 - .../github.com/json-iterator/go/iter_float.go | 0 - .../github.com/json-iterator/go/iter_int.go | 0 - .../json-iterator/go/iter_object.go | 0 - .../github.com/json-iterator/go/iter_skip.go | 0 - .../json-iterator/go/iter_skip_sloppy.go | 0 - .../json-iterator/go/iter_skip_strict.go | 0 - .../github.com/json-iterator/go/iter_str.go | 0 - .../github.com/json-iterator/go/jsoniter.go | 0 - vendor/github.com/json-iterator/go/pool.go | 0 - vendor/github.com/json-iterator/go/reflect.go | 0 - .../json-iterator/go/reflect_array.go | 0 - .../json-iterator/go/reflect_dynamic.go | 0 - .../json-iterator/go/reflect_extension.go | 0 - .../json-iterator/go/reflect_json_number.go | 0 - .../go/reflect_json_raw_message.go | 0 - .../json-iterator/go/reflect_map.go | 0 - .../json-iterator/go/reflect_marshaler.go | 0 - .../json-iterator/go/reflect_native.go | 0 - .../json-iterator/go/reflect_optional.go | 0 - .../json-iterator/go/reflect_slice.go | 0 - .../go/reflect_struct_decoder.go | 0 - .../go/reflect_struct_encoder.go | 0 - vendor/github.com/json-iterator/go/stream.go | 0 - .../json-iterator/go/stream_float.go | 0 - .../github.com/json-iterator/go/stream_int.go | 0 - .../github.com/json-iterator/go/stream_str.go | 0 - vendor/github.com/json-iterator/go/test.sh | 0 - .../github.com/karrick/godirwalk/.gitignore | 0 - vendor/github.com/karrick/godirwalk/LICENSE | 0 - vendor/github.com/karrick/godirwalk/README.md | 0 - .../karrick/godirwalk/azure-pipelines.yml | 0 - vendor/github.com/karrick/godirwalk/bench.sh | 0 - .../karrick/godirwalk/debug_development.go | 0 - .../karrick/godirwalk/debug_release.go | 0 - vendor/github.com/karrick/godirwalk/dirent.go | 0 - vendor/github.com/karrick/godirwalk/doc.go | 0 - .../karrick/godirwalk/inoWithFileno.go | 0 - .../karrick/godirwalk/inoWithIno.go | 0 - .../github.com/karrick/godirwalk/modeType.go | 0 - .../karrick/godirwalk/modeTypeWithType.go | 0 - .../karrick/godirwalk/modeTypeWithoutType.go | 0 - .../karrick/godirwalk/nameWithNamlen.go | 0 - .../karrick/godirwalk/nameWithoutNamlen.go | 0 - .../github.com/karrick/godirwalk/readdir.go | 0 - .../karrick/godirwalk/readdir_unix.go | 0 - .../karrick/godirwalk/readdir_windows.go | 0 - .../karrick/godirwalk/reclenFromNamlen.go | 0 - .../karrick/godirwalk/reclenFromReclen.go | 0 - .../karrick/godirwalk/scandir_unix.go | 0 - .../karrick/godirwalk/scandir_windows.go | 0 - .../github.com/karrick/godirwalk/scanner.go | 0 - vendor/github.com/karrick/godirwalk/walk.go | 0 - .../golang_protobuf_extensions/LICENSE | 0 - .../golang_protobuf_extensions/NOTICE | 0 - .../pbutil/.gitignore | 0 - .../pbutil/Makefile | 0 - .../pbutil/decode.go | 0 - .../golang_protobuf_extensions/pbutil/doc.go | 0 - .../pbutil/encode.go | 0 - vendor/github.com/mistifyio/go-zfs/.gitignore | 0 - .../github.com/mistifyio/go-zfs/.travis.yml | 0 - .../mistifyio/go-zfs/CONTRIBUTING.md | 0 - vendor/github.com/mistifyio/go-zfs/LICENSE | 0 - vendor/github.com/mistifyio/go-zfs/README.md | 0 - .../github.com/mistifyio/go-zfs/Vagrantfile | 0 - vendor/github.com/mistifyio/go-zfs/error.go | 0 - vendor/github.com/mistifyio/go-zfs/utils.go | 0 - .../mistifyio/go-zfs/utils_notsolaris.go | 0 - .../mistifyio/go-zfs/utils_solaris.go | 0 - vendor/github.com/mistifyio/go-zfs/zfs.go | 0 - vendor/github.com/mistifyio/go-zfs/zpool.go | 0 - vendor/github.com/moby/sys/mountinfo/LICENSE | 0 - vendor/github.com/moby/sys/mountinfo/doc.go | 0 - .../moby/sys/mountinfo/mounted_linux.go | 0 - .../moby/sys/mountinfo/mounted_unix.go | 0 - .../moby/sys/mountinfo/mountinfo.go | 0 - .../moby/sys/mountinfo/mountinfo_bsd.go | 0 - .../moby/sys/mountinfo/mountinfo_filters.go | 0 - .../sys/mountinfo/mountinfo_freebsdlike.go | 0 - .../moby/sys/mountinfo/mountinfo_linux.go | 0 - .../moby/sys/mountinfo/mountinfo_openbsd.go | 0 - .../sys/mountinfo/mountinfo_unsupported.go | 0 - .../moby/sys/mountinfo/mountinfo_windows.go | 0 - .../modern-go/concurrent/.gitignore | 0 - .../modern-go/concurrent/.travis.yml | 0 - .../github.com/modern-go/concurrent/LICENSE | 0 - .../github.com/modern-go/concurrent/README.md | 0 - .../modern-go/concurrent/executor.go | 0 - .../modern-go/concurrent/go_above_19.go | 0 - .../modern-go/concurrent/go_below_19.go | 0 - vendor/github.com/modern-go/concurrent/log.go | 0 - .../github.com/modern-go/concurrent/test.sh | 0 - .../concurrent/unbounded_executor.go | 0 - .../github.com/modern-go/reflect2/.gitignore | 0 - .../github.com/modern-go/reflect2/.travis.yml | 0 - .../github.com/modern-go/reflect2/Gopkg.lock | 0 - .../github.com/modern-go/reflect2/Gopkg.toml | 0 - vendor/github.com/modern-go/reflect2/LICENSE | 0 - .../github.com/modern-go/reflect2/README.md | 0 - .../modern-go/reflect2/go_above_118.go | 0 - .../modern-go/reflect2/go_above_19.go | 0 - .../modern-go/reflect2/go_below_118.go | 0 - .../github.com/modern-go/reflect2/reflect2.go | 0 - .../modern-go/reflect2/reflect2_amd64.s | 0 - .../modern-go/reflect2/reflect2_kind.go | 0 - .../modern-go/reflect2/relfect2_386.s | 0 - .../modern-go/reflect2/relfect2_amd64p32.s | 0 - .../modern-go/reflect2/relfect2_arm.s | 0 - .../modern-go/reflect2/relfect2_arm64.s | 0 - .../modern-go/reflect2/relfect2_mips64x.s | 0 - .../modern-go/reflect2/relfect2_mipsx.s | 0 - .../modern-go/reflect2/relfect2_ppc64x.s | 0 - .../modern-go/reflect2/relfect2_s390x.s | 0 - .../modern-go/reflect2/safe_field.go | 0 - .../github.com/modern-go/reflect2/safe_map.go | 0 - .../modern-go/reflect2/safe_slice.go | 0 - .../modern-go/reflect2/safe_struct.go | 0 - .../modern-go/reflect2/safe_type.go | 0 - .../github.com/modern-go/reflect2/type_map.go | 0 - .../modern-go/reflect2/unsafe_array.go | 0 - .../modern-go/reflect2/unsafe_eface.go | 0 - .../modern-go/reflect2/unsafe_field.go | 0 - .../modern-go/reflect2/unsafe_iface.go | 0 - .../modern-go/reflect2/unsafe_link.go | 0 - .../modern-go/reflect2/unsafe_map.go | 0 - .../modern-go/reflect2/unsafe_ptr.go | 0 - .../modern-go/reflect2/unsafe_slice.go | 0 - .../modern-go/reflect2/unsafe_struct.go | 0 - .../modern-go/reflect2/unsafe_type.go | 0 - .../github.com/mrunalp/fileutils/.gitignore | 0 - vendor/github.com/mrunalp/fileutils/LICENSE | 0 - .../github.com/mrunalp/fileutils/MAINTAINERS | 0 - vendor/github.com/mrunalp/fileutils/README.md | 0 - .../github.com/mrunalp/fileutils/fileutils.go | 0 - .../github.com/mrunalp/fileutils/idtools.go | 0 - vendor/github.com/opencontainers/runc/LICENSE | 0 - vendor/github.com/opencontainers/runc/NOTICE | 0 - .../runc/libcontainer/README.md | 0 - .../opencontainers/runc/libcontainer/SPEC.md | 0 - .../runc/libcontainer/apparmor/apparmor.go | 0 - .../libcontainer/apparmor/apparmor_linux.go | 0 - .../apparmor/apparmor_unsupported.go | 0 - .../libcontainer/capabilities/capabilities.go | 0 - .../capabilities/capabilities_unsupported.go | 0 - .../runc/libcontainer/cgroups/cgroups.go | 0 - .../cgroups/devices/devices_emulator.go | 0 - .../cgroups/ebpf/devicefilter/devicefilter.go | 0 - .../libcontainer/cgroups/ebpf/ebpf_linux.go | 0 - .../runc/libcontainer/cgroups/file.go | 0 - .../runc/libcontainer/cgroups/fs/blkio.go | 0 - .../runc/libcontainer/cgroups/fs/cpu.go | 0 - .../runc/libcontainer/cgroups/fs/cpuacct.go | 0 - .../runc/libcontainer/cgroups/fs/cpuset.go | 0 - .../runc/libcontainer/cgroups/fs/devices.go | 0 - .../runc/libcontainer/cgroups/fs/error.go | 0 - .../runc/libcontainer/cgroups/fs/freezer.go | 0 - .../runc/libcontainer/cgroups/fs/fs.go | 0 - .../runc/libcontainer/cgroups/fs/hugetlb.go | 0 - .../runc/libcontainer/cgroups/fs/memory.go | 0 - .../runc/libcontainer/cgroups/fs/name.go | 0 - .../runc/libcontainer/cgroups/fs/net_cls.go | 0 - .../runc/libcontainer/cgroups/fs/net_prio.go | 0 - .../runc/libcontainer/cgroups/fs/paths.go | 0 - .../libcontainer/cgroups/fs/perf_event.go | 0 - .../runc/libcontainer/cgroups/fs/pids.go | 0 - .../runc/libcontainer/cgroups/fs/rdma.go | 0 - .../runc/libcontainer/cgroups/fs2/cpu.go | 0 - .../runc/libcontainer/cgroups/fs2/cpuset.go | 0 - .../runc/libcontainer/cgroups/fs2/create.go | 0 - .../libcontainer/cgroups/fs2/defaultpath.go | 0 - .../runc/libcontainer/cgroups/fs2/devices.go | 0 - .../runc/libcontainer/cgroups/fs2/freezer.go | 0 - .../runc/libcontainer/cgroups/fs2/fs2.go | 0 - .../runc/libcontainer/cgroups/fs2/hugetlb.go | 0 - .../runc/libcontainer/cgroups/fs2/io.go | 0 - .../runc/libcontainer/cgroups/fs2/memory.go | 0 - .../runc/libcontainer/cgroups/fs2/pids.go | 0 - .../libcontainer/cgroups/fscommon/rdma.go | 0 - .../libcontainer/cgroups/fscommon/utils.go | 0 - .../runc/libcontainer/cgroups/getallpids.go | 0 - .../runc/libcontainer/cgroups/manager/new.go | 0 - .../runc/libcontainer/cgroups/stats.go | 0 - .../libcontainer/cgroups/systemd/common.go | 0 - .../libcontainer/cgroups/systemd/cpuset.go | 0 - .../runc/libcontainer/cgroups/systemd/dbus.go | 0 - .../runc/libcontainer/cgroups/systemd/user.go | 0 - .../runc/libcontainer/cgroups/systemd/v1.go | 0 - .../runc/libcontainer/cgroups/systemd/v2.go | 0 - .../runc/libcontainer/cgroups/utils.go | 0 - .../runc/libcontainer/cgroups/v1_utils.go | 0 - .../runc/libcontainer/configs/blkio_device.go | 0 - .../runc/libcontainer/configs/cgroup_linux.go | 0 - .../configs/cgroup_unsupported.go | 0 - .../runc/libcontainer/configs/config.go | 0 - .../runc/libcontainer/configs/config_linux.go | 0 - .../libcontainer/configs/configs_fuzzer.go | 0 - .../libcontainer/configs/hugepage_limit.go | 0 - .../runc/libcontainer/configs/intelrdt.go | 0 - .../configs/interface_priority_map.go | 0 - .../runc/libcontainer/configs/mount.go | 0 - .../runc/libcontainer/configs/namespaces.go | 0 - .../libcontainer/configs/namespaces_linux.go | 0 - .../configs/namespaces_syscall.go | 0 - .../configs/namespaces_syscall_unsupported.go | 0 - .../configs/namespaces_unsupported.go | 0 - .../runc/libcontainer/configs/network.go | 0 - .../runc/libcontainer/configs/rdma.go | 0 - .../libcontainer/configs/validate/rootless.go | 0 - .../configs/validate/validator.go | 0 - .../runc/libcontainer/console_linux.go | 0 - .../runc/libcontainer/container.go | 0 - .../runc/libcontainer/container_linux.go | 0 - .../runc/libcontainer/criu_opts_linux.go | 0 - .../runc/libcontainer/devices/device.go | 0 - .../runc/libcontainer/devices/device_unix.go | 0 - .../opencontainers/runc/libcontainer/error.go | 0 - .../runc/libcontainer/factory.go | 0 - .../runc/libcontainer/factory_linux.go | 0 - .../runc/libcontainer/init_linux.go | 0 - .../runc/libcontainer/intelrdt/cmt.go | 0 - .../runc/libcontainer/intelrdt/intelrdt.go | 0 - .../runc/libcontainer/intelrdt/mbm.go | 0 - .../runc/libcontainer/intelrdt/monitoring.go | 0 - .../runc/libcontainer/intelrdt/stats.go | 0 - .../runc/libcontainer/keys/keyctl.go | 0 - .../runc/libcontainer/logs/logs.go | 0 - .../runc/libcontainer/message_linux.go | 0 - .../runc/libcontainer/mount_linux.go | 0 - .../runc/libcontainer/network_linux.go | 0 - .../runc/libcontainer/notify_linux.go | 0 - .../runc/libcontainer/notify_v2_linux.go | 0 - .../runc/libcontainer/process.go | 0 - .../runc/libcontainer/process_linux.go | 0 - .../runc/libcontainer/restored_process.go | 0 - .../runc/libcontainer/rootfs_linux.go | 0 - .../runc/libcontainer/seccomp/config.go | 0 - .../seccomp/patchbpf/enosys_linux.go | 0 - .../seccomp/patchbpf/enosys_unsupported.go | 0 - .../libcontainer/seccomp/seccomp_linux.go | 0 - .../seccomp/seccomp_unsupported.go | 0 - .../runc/libcontainer/setns_init_linux.go | 0 - .../runc/libcontainer/standard_init_linux.go | 0 - .../runc/libcontainer/state_linux.go | 0 - .../runc/libcontainer/stats_linux.go | 0 - .../opencontainers/runc/libcontainer/sync.go | 0 - .../runc/libcontainer/system/linux.go | 0 - .../runc/libcontainer/system/proc.go | 0 - .../libcontainer/system/syscall_linux_32.go | 0 - .../libcontainer/system/syscall_linux_64.go | 0 - .../runc/libcontainer/user/lookup_unix.go | 0 - .../runc/libcontainer/user/user.go | 0 - .../runc/libcontainer/user/user_fuzzer.go | 0 - .../runc/libcontainer/userns/userns.go | 0 - .../runc/libcontainer/userns/userns_fuzzer.go | 0 - .../runc/libcontainer/userns/userns_linux.go | 0 - .../libcontainer/userns/userns_unsupported.go | 0 - .../runc/libcontainer/utils/cmsg.go | 0 - .../runc/libcontainer/utils/utils.go | 0 - .../runc/libcontainer/utils/utils_unix.go | 0 - .../opencontainers/runc/types/events.go | 0 - .../opencontainers/runtime-spec/LICENSE | 0 - .../runtime-spec/specs-go/config.go | 0 - .../runtime-spec/specs-go/state.go | 0 - .../runtime-spec/specs-go/version.go | 0 - .../github.com/opencontainers/selinux/LICENSE | 0 - .../opencontainers/selinux/go-selinux/doc.go | 0 - .../selinux/go-selinux/label/label.go | 0 - .../selinux/go-selinux/label/label_linux.go | 0 - .../selinux/go-selinux/label/label_stub.go | 0 - .../selinux/go-selinux/rchcon.go | 0 - .../selinux/go-selinux/rchcon_go115.go | 0 - .../selinux/go-selinux/selinux.go | 0 - .../selinux/go-selinux/selinux_linux.go | 0 - .../selinux/go-selinux/selinux_stub.go | 0 - .../selinux/go-selinux/xattrs_linux.go | 0 - .../selinux/pkg/pwalk/README.md | 0 - .../opencontainers/selinux/pkg/pwalk/pwalk.go | 0 - .../selinux/pkg/pwalkdir/README.md | 0 - .../selinux/pkg/pwalkdir/pwalkdir.go | 0 - vendor/github.com/pkg/errors/.gitignore | 0 - vendor/github.com/pkg/errors/.travis.yml | 0 - vendor/github.com/pkg/errors/LICENSE | 0 - vendor/github.com/pkg/errors/Makefile | 0 - vendor/github.com/pkg/errors/README.md | 0 - vendor/github.com/pkg/errors/appveyor.yml | 0 - vendor/github.com/pkg/errors/errors.go | 0 - vendor/github.com/pkg/errors/go113.go | 0 - vendor/github.com/pkg/errors/stack.go | 0 - vendor/github.com/pmezard/go-difflib/LICENSE | 0 - .../pmezard/go-difflib/difflib/difflib.go | 0 - .../prometheus/client_golang/LICENSE | 201 + - .../prometheus/client_golang/NOTICE | 23 + - .../client_golang/prometheus/.gitignore | 1 + - .../client_golang/prometheus/README.md | 1 + - .../prometheus/build_info_collector.go | 38 + - .../client_golang/prometheus/collector.go | 128 + - .../client_golang/prometheus/counter.go | 328 + - .../client_golang/prometheus/desc.go | 189 + - .../client_golang/prometheus/doc.go | 210 + - .../prometheus/expvar_collector.go | 86 + - .../client_golang/prometheus/fnv.go | 42 + - .../client_golang/prometheus/gauge.go | 291 + - .../client_golang/prometheus/get_pid.go | 26 + - .../prometheus/get_pid_gopherjs.go | 23 + - .../client_golang/prometheus/go_collector.go | 281 + - .../prometheus/go_collector_go116.go | 122 + - .../prometheus/go_collector_latest.go | 568 + - .../client_golang/prometheus/histogram.go | 1484 + - .../prometheus/internal/almost_equal.go | 60 + - .../prometheus/internal/difflib.go | 654 + - .../internal/go_collector_options.go | 32 + - .../prometheus/internal/go_runtime_metrics.go | 142 + - .../prometheus/internal/metric.go | 101 + - .../client_golang/prometheus/labels.go | 88 + - .../client_golang/prometheus/metric.go | 256 + - .../client_golang/prometheus/num_threads.go | 25 + - .../prometheus/num_threads_gopherjs.go | 22 + - .../client_golang/prometheus/observer.go | 64 + - .../prometheus/process_collector.go | 164 + - .../prometheus/process_collector_js.go | 26 + - .../prometheus/process_collector_other.go | 66 + - .../prometheus/process_collector_windows.go | 116 + - .../prometheus/promhttp/delegator.go | 374 + - .../client_golang/prometheus/promhttp/http.go | 395 + - .../prometheus/promhttp/instrument_client.go | 247 + - .../prometheus/promhttp/instrument_server.go | 570 + - .../prometheus/promhttp/option.go | 58 + - .../client_golang/prometheus/registry.go | 1072 + - .../client_golang/prometheus/summary.go | 747 + - .../client_golang/prometheus/timer.go | 55 + - .../client_golang/prometheus/untyped.go | 42 + - .../client_golang/prometheus/value.go | 237 + - .../client_golang/prometheus/vec.go | 642 + - .../client_golang/prometheus/wrap.go | 216 + - .../prometheus/client_model/LICENSE | 0 - .../github.com/prometheus/client_model/NOTICE | 0 - .../prometheus/client_model/go/metrics.pb.go | 0 - vendor/github.com/prometheus/common/LICENSE | 0 - vendor/github.com/prometheus/common/NOTICE | 0 - .../prometheus/common/expfmt/decode.go | 0 - .../prometheus/common/expfmt/encode.go | 0 - .../prometheus/common/expfmt/expfmt.go | 0 - .../prometheus/common/expfmt/fuzz.go | 0 - .../common/expfmt/openmetrics_create.go | 0 - .../prometheus/common/expfmt/text_create.go | 0 - .../prometheus/common/expfmt/text_parse.go | 0 - .../bitbucket.org/ww/goautoneg/README.txt | 0 - .../bitbucket.org/ww/goautoneg/autoneg.go | 0 - .../prometheus/common/model/alert.go | 0 - .../prometheus/common/model/fingerprinting.go | 0 - .../github.com/prometheus/common/model/fnv.go | 0 - .../prometheus/common/model/labels.go | 0 - .../prometheus/common/model/labelset.go | 0 - .../prometheus/common/model/metric.go | 0 - .../prometheus/common/model/model.go | 0 - .../prometheus/common/model/signature.go | 0 - .../prometheus/common/model/silence.go | 0 - .../prometheus/common/model/time.go | 0 - .../prometheus/common/model/value.go | 0 - .../github.com/prometheus/procfs/.gitignore | 2 + - .../prometheus/procfs/.golangci.yml | 12 + - .../prometheus/procfs/CODE_OF_CONDUCT.md | 3 + - .../prometheus/procfs/CONTRIBUTING.md | 121 + - vendor/github.com/prometheus/procfs/LICENSE | 201 + - .../prometheus/procfs/MAINTAINERS.md | 2 + - vendor/github.com/prometheus/procfs/Makefile | 31 + - .../prometheus/procfs/Makefile.common | 264 + - vendor/github.com/prometheus/procfs/NOTICE | 7 + - vendor/github.com/prometheus/procfs/README.md | 61 + - .../github.com/prometheus/procfs/SECURITY.md | 6 + - vendor/github.com/prometheus/procfs/arp.go | 116 + - .../github.com/prometheus/procfs/buddyinfo.go | 85 + - .../github.com/prometheus/procfs/cmdline.go | 30 + - .../github.com/prometheus/procfs/cpuinfo.go | 482 + - .../prometheus/procfs/cpuinfo_armx.go | 20 + - .../prometheus/procfs/cpuinfo_mipsx.go | 20 + - .../prometheus/procfs/cpuinfo_others.go | 19 + - .../prometheus/procfs/cpuinfo_ppcx.go | 20 + - .../prometheus/procfs/cpuinfo_riscvx.go | 20 + - .../prometheus/procfs/cpuinfo_s390x.go | 19 + - .../prometheus/procfs/cpuinfo_x86.go | 20 + - vendor/github.com/prometheus/procfs/crypto.go | 153 + - vendor/github.com/prometheus/procfs/doc.go | 45 + - vendor/github.com/prometheus/procfs/fs.go | 43 + - .../github.com/prometheus/procfs/fscache.go | 422 + - .../prometheus/procfs/internal/fs/fs.go | 55 + - .../prometheus/procfs/internal/util/parse.go | 97 + - .../procfs/internal/util/readfile.go | 37 + - .../procfs/internal/util/sysreadfile.go | 50 + - .../internal/util/sysreadfile_compat.go | 27 + - .../procfs/internal/util/valueparser.go | 91 + - vendor/github.com/prometheus/procfs/ipvs.go | 240 + - .../prometheus/procfs/kernel_random.go | 63 + - .../github.com/prometheus/procfs/loadavg.go | 62 + - vendor/github.com/prometheus/procfs/mdstat.go | 266 + - .../github.com/prometheus/procfs/meminfo.go | 277 + - .../github.com/prometheus/procfs/mountinfo.go | 180 + - .../prometheus/procfs/mountstats.go | 638 + - .../prometheus/procfs/net_conntrackstat.go | 153 + - .../github.com/prometheus/procfs/net_dev.go | 205 + - .../prometheus/procfs/net_ip_socket.go | 226 + - .../prometheus/procfs/net_protocols.go | 180 + - .../prometheus/procfs/net_sockstat.go | 163 + - .../prometheus/procfs/net_softnet.go | 102 + - .../github.com/prometheus/procfs/net_tcp.go | 64 + - .../github.com/prometheus/procfs/net_udp.go | 64 + - .../github.com/prometheus/procfs/net_unix.go | 257 + - .../github.com/prometheus/procfs/net_xfrm.go | 189 + - .../github.com/prometheus/procfs/netstat.go | 68 + - vendor/github.com/prometheus/procfs/proc.go | 319 + - .../prometheus/procfs/proc_cgroup.go | 98 + - .../prometheus/procfs/proc_cgroups.go | 98 + - .../prometheus/procfs/proc_environ.go | 37 + - .../prometheus/procfs/proc_fdinfo.go | 132 + - .../github.com/prometheus/procfs/proc_io.go | 59 + - .../prometheus/procfs/proc_limits.go | 160 + - .../github.com/prometheus/procfs/proc_maps.go | 211 + - .../prometheus/procfs/proc_netstat.go | 440 + - .../github.com/prometheus/procfs/proc_ns.go | 68 + - .../github.com/prometheus/procfs/proc_psi.go | 102 + - .../prometheus/procfs/proc_smaps.go | 166 + - .../github.com/prometheus/procfs/proc_snmp.go | 353 + - .../prometheus/procfs/proc_snmp6.go | 381 + - .../github.com/prometheus/procfs/proc_stat.go | 222 + - .../prometheus/procfs/proc_status.go | 170 + - .../github.com/prometheus/procfs/proc_sys.go | 51 + - .../github.com/prometheus/procfs/schedstat.go | 121 + - vendor/github.com/prometheus/procfs/slab.go | 151 + - .../github.com/prometheus/procfs/softirqs.go | 160 + - vendor/github.com/prometheus/procfs/stat.go | 244 + - vendor/github.com/prometheus/procfs/swaps.go | 89 + - vendor/github.com/prometheus/procfs/ttar | 413 + - vendor/github.com/prometheus/procfs/vm.go | 210 + - .../github.com/prometheus/procfs/zoneinfo.go | 196 + - .../seccomp/libseccomp-golang/.gitignore | 0 - .../seccomp/libseccomp-golang/.golangci.yml | 0 - .../seccomp/libseccomp-golang/CHANGELOG | 0 - .../seccomp/libseccomp-golang/CONTRIBUTING.md | 0 - .../seccomp/libseccomp-golang/LICENSE | 0 - .../seccomp/libseccomp-golang/Makefile | 0 - .../seccomp/libseccomp-golang/README.md | 0 - .../seccomp/libseccomp-golang/SECURITY.md | 0 - .../seccomp/libseccomp-golang/seccomp.go | 0 - .../libseccomp-golang/seccomp_internal.go | 0 - vendor/github.com/sirupsen/logrus/.gitignore | 0 - .../github.com/sirupsen/logrus/.golangci.yml | 0 - vendor/github.com/sirupsen/logrus/.travis.yml | 0 - .../github.com/sirupsen/logrus/CHANGELOG.md | 0 - vendor/github.com/sirupsen/logrus/LICENSE | 0 - vendor/github.com/sirupsen/logrus/README.md | 0 - vendor/github.com/sirupsen/logrus/alt_exit.go | 0 - .../github.com/sirupsen/logrus/appveyor.yml | 0 - .../github.com/sirupsen/logrus/buffer_pool.go | 0 - vendor/github.com/sirupsen/logrus/doc.go | 0 - vendor/github.com/sirupsen/logrus/entry.go | 0 - vendor/github.com/sirupsen/logrus/exported.go | 0 - .../github.com/sirupsen/logrus/formatter.go | 0 - vendor/github.com/sirupsen/logrus/hooks.go | 0 - .../sirupsen/logrus/json_formatter.go | 0 - vendor/github.com/sirupsen/logrus/logger.go | 0 - vendor/github.com/sirupsen/logrus/logrus.go | 0 - .../logrus/terminal_check_appengine.go | 0 - .../sirupsen/logrus/terminal_check_bsd.go | 0 - .../sirupsen/logrus/terminal_check_js.go | 0 - .../logrus/terminal_check_no_terminal.go | 0 - .../logrus/terminal_check_notappengine.go | 0 - .../sirupsen/logrus/terminal_check_solaris.go | 0 - .../sirupsen/logrus/terminal_check_unix.go | 0 - .../sirupsen/logrus/terminal_check_windows.go | 0 - .../sirupsen/logrus/text_formatter.go | 0 - vendor/github.com/sirupsen/logrus/writer.go | 0 - vendor/github.com/stretchr/testify/LICENSE | 0 - .../testify/assert/assertion_compare.go | 0 - .../assert/assertion_compare_can_convert.go | 0 - .../assert/assertion_compare_legacy.go | 0 - .../testify/assert/assertion_format.go | 0 - .../testify/assert/assertion_format.go.tmpl | 0 - .../testify/assert/assertion_forward.go | 0 - .../testify/assert/assertion_forward.go.tmpl | 0 - .../testify/assert/assertion_order.go | 0 - .../stretchr/testify/assert/assertions.go | 0 - .../github.com/stretchr/testify/assert/doc.go | 0 - .../stretchr/testify/assert/errors.go | 0 - .../testify/assert/forward_assertions.go | 0 - .../testify/assert/http_assertions.go | 0 - vendor/github.com/syndtr/gocapability/LICENSE | 0 - .../gocapability/capability/capability.go | 0 - .../capability/capability_linux.go | 0 - .../capability/capability_noop.go | 0 - .../syndtr/gocapability/capability/enum.go | 0 - .../gocapability/capability/enum_gen.go | 0 - .../gocapability/capability/syscall_linux.go | 0 - .../github.com/vishvananda/netlink/.gitignore | 0 - .../vishvananda/netlink/.travis.yml | 0 - .../vishvananda/netlink/CHANGELOG.md | 0 - vendor/github.com/vishvananda/netlink/LICENSE | 0 - .../github.com/vishvananda/netlink/Makefile | 0 - .../github.com/vishvananda/netlink/README.md | 0 - vendor/github.com/vishvananda/netlink/addr.go | 0 - .../vishvananda/netlink/addr_linux.go | 0 - .../vishvananda/netlink/bpf_linux.go | 0 - .../vishvananda/netlink/bridge_linux.go | 0 - .../github.com/vishvananda/netlink/class.go | 0 - .../vishvananda/netlink/class_linux.go | 0 - .../vishvananda/netlink/conntrack_linux.go | 0 - .../netlink/conntrack_unspecified.go | 0 - .../vishvananda/netlink/devlink_linux.go | 0 - .../github.com/vishvananda/netlink/filter.go | 0 - .../vishvananda/netlink/filter_linux.go | 0 - vendor/github.com/vishvananda/netlink/fou.go | 0 - .../vishvananda/netlink/fou_linux.go | 0 - .../vishvananda/netlink/fou_unspecified.go | 0 - .../vishvananda/netlink/genetlink_linux.go | 0 - .../netlink/genetlink_unspecified.go | 0 - .../vishvananda/netlink/gtp_linux.go | 0 - .../vishvananda/netlink/handle_linux.go | 0 - .../vishvananda/netlink/handle_unspecified.go | 0 - .../vishvananda/netlink/ioctl_linux.go | 0 - vendor/github.com/vishvananda/netlink/link.go | 0 - .../vishvananda/netlink/link_linux.go | 0 - .../vishvananda/netlink/link_tuntap_linux.go | 0 - .../github.com/vishvananda/netlink/neigh.go | 0 - .../vishvananda/netlink/neigh_linux.go | 0 - .../github.com/vishvananda/netlink/netlink.go | 0 - .../vishvananda/netlink/netlink_linux.go | 0 - .../netlink/netlink_unspecified.go | 0 - .../vishvananda/netlink/netns_linux.go | 0 - .../vishvananda/netlink/netns_unspecified.go | 0 - .../vishvananda/netlink/nl/addr_linux.go | 0 - .../vishvananda/netlink/nl/bridge_linux.go | 0 - .../vishvananda/netlink/nl/conntrack_linux.go | 0 - .../vishvananda/netlink/nl/devlink_linux.go | 0 - .../vishvananda/netlink/nl/genetlink_linux.go | 0 - .../vishvananda/netlink/nl/link_linux.go | 0 - .../vishvananda/netlink/nl/mpls_linux.go | 0 - .../vishvananda/netlink/nl/nl_linux.go | 0 - .../vishvananda/netlink/nl/nl_unspecified.go | 0 - .../vishvananda/netlink/nl/rdma_link_linux.go | 0 - .../vishvananda/netlink/nl/route_linux.go | 0 - .../vishvananda/netlink/nl/seg6_linux.go | 0 - .../vishvananda/netlink/nl/seg6local_linux.go | 0 - .../vishvananda/netlink/nl/syscall.go | 0 - .../vishvananda/netlink/nl/tc_linux.go | 0 - .../vishvananda/netlink/nl/xfrm_linux.go | 0 - .../netlink/nl/xfrm_monitor_linux.go | 0 - .../netlink/nl/xfrm_policy_linux.go | 0 - .../netlink/nl/xfrm_state_linux.go | 0 - .../github.com/vishvananda/netlink/order.go | 0 - .../vishvananda/netlink/protinfo.go | 0 - .../vishvananda/netlink/protinfo_linux.go | 0 - .../github.com/vishvananda/netlink/qdisc.go | 0 - .../vishvananda/netlink/qdisc_linux.go | 0 - .../vishvananda/netlink/rdma_link_linux.go | 0 - .../github.com/vishvananda/netlink/route.go | 0 - .../vishvananda/netlink/route_linux.go | 0 - .../vishvananda/netlink/route_unspecified.go | 0 - vendor/github.com/vishvananda/netlink/rule.go | 0 - .../vishvananda/netlink/rule_linux.go | 0 - .../github.com/vishvananda/netlink/socket.go | 0 - .../vishvananda/netlink/socket_linux.go | 0 - vendor/github.com/vishvananda/netlink/xfrm.go | 0 - .../vishvananda/netlink/xfrm_monitor_linux.go | 0 - .../vishvananda/netlink/xfrm_policy.go | 0 - .../vishvananda/netlink/xfrm_policy_linux.go | 0 - .../vishvananda/netlink/xfrm_state.go | 0 - .../vishvananda/netlink/xfrm_state_linux.go | 0 - vendor/github.com/vishvananda/netns/LICENSE | 0 - vendor/github.com/vishvananda/netns/README.md | 0 - vendor/github.com/vishvananda/netns/netns.go | 0 - .../vishvananda/netns/netns_linux.go | 0 - .../vishvananda/netns/netns_unspecified.go | 0 - vendor/golang.org/x/crypto/AUTHORS | 3 - - vendor/golang.org/x/crypto/CONTRIBUTORS | 3 - - vendor/golang.org/x/crypto/LICENSE | 0 - vendor/golang.org/x/crypto/PATENTS | 0 - .../x/crypto/ssh/terminal/terminal.go | 0 - vendor/golang.org/x/net/LICENSE | 0 - vendor/golang.org/x/net/PATENTS | 0 - vendor/golang.org/x/net/bpf/asm.go | 0 - vendor/golang.org/x/net/bpf/constants.go | 0 - vendor/golang.org/x/net/bpf/doc.go | 0 - vendor/golang.org/x/net/bpf/instructions.go | 0 - vendor/golang.org/x/net/bpf/setter.go | 0 - vendor/golang.org/x/net/bpf/vm.go | 0 - .../golang.org/x/net/bpf/vm_instructions.go | 0 - vendor/golang.org/x/net/context/context.go | 0 - .../x/net/context/ctxhttp/ctxhttp.go | 71 - - vendor/golang.org/x/net/context/go17.go | 0 - vendor/golang.org/x/net/context/go19.go | 0 - vendor/golang.org/x/net/context/pre_go17.go | 0 - vendor/golang.org/x/net/context/pre_go19.go | 0 - vendor/golang.org/x/net/http/httpguts/guts.go | 0 - .../golang.org/x/net/http/httpguts/httplex.go | 0 - vendor/golang.org/x/net/http2/.gitignore | 0 - vendor/golang.org/x/net/http2/Dockerfile | 51 - - vendor/golang.org/x/net/http2/Makefile | 3 - - vendor/golang.org/x/net/http2/ascii.go | 0 - vendor/golang.org/x/net/http2/ciphers.go | 0 - .../x/net/http2/client_conn_pool.go | 0 - vendor/golang.org/x/net/http2/databuffer.go | 0 - vendor/golang.org/x/net/http2/errors.go | 0 - vendor/golang.org/x/net/http2/flow.go | 88 +- - vendor/golang.org/x/net/http2/frame.go | 11 +- - vendor/golang.org/x/net/http2/go111.go | 0 - vendor/golang.org/x/net/http2/go115.go | 0 - vendor/golang.org/x/net/http2/go118.go | 0 - vendor/golang.org/x/net/http2/gotrack.go | 0 - vendor/golang.org/x/net/http2/headermap.go | 0 - vendor/golang.org/x/net/http2/hpack/encode.go | 0 - vendor/golang.org/x/net/http2/hpack/hpack.go | 81 +- - .../golang.org/x/net/http2/hpack/huffman.go | 0 - .../x/net/http2/hpack/static_table.go | 0 - vendor/golang.org/x/net/http2/hpack/tables.go | 0 - vendor/golang.org/x/net/http2/http2.go | 0 - vendor/golang.org/x/net/http2/not_go111.go | 0 - vendor/golang.org/x/net/http2/not_go115.go | 0 - vendor/golang.org/x/net/http2/not_go118.go | 0 - vendor/golang.org/x/net/http2/pipe.go | 6 +- - vendor/golang.org/x/net/http2/server.go | 207 +- - vendor/golang.org/x/net/http2/transport.go | 169 +- - vendor/golang.org/x/net/http2/write.go | 0 - vendor/golang.org/x/net/http2/writesched.go | 3 +- - .../x/net/http2/writesched_priority.go | 0 - .../x/net/http2/writesched_random.go | 0 - .../x/net/http2/writesched_roundrobin.go | 119 + - vendor/golang.org/x/net/idna/go118.go | 0 - vendor/golang.org/x/net/idna/idna10.0.0.go | 0 - vendor/golang.org/x/net/idna/idna9.0.0.go | 2 +- - vendor/golang.org/x/net/idna/pre_go118.go | 0 - vendor/golang.org/x/net/idna/punycode.go | 0 - vendor/golang.org/x/net/idna/tables10.0.0.go | 0 - vendor/golang.org/x/net/idna/tables11.0.0.go | 0 - vendor/golang.org/x/net/idna/tables12.0.0.go | 0 - vendor/golang.org/x/net/idna/tables13.0.0.go | 2988 +- - vendor/golang.org/x/net/idna/tables15.0.0.go | 5145 ++ - vendor/golang.org/x/net/idna/tables9.0.0.go | 0 - vendor/golang.org/x/net/idna/trie.go | 21 - - vendor/golang.org/x/net/idna/trie12.0.0.go | 31 + - vendor/golang.org/x/net/idna/trie13.0.0.go | 31 + - vendor/golang.org/x/net/idna/trieval.go | 0 - .../x/net/internal/timeseries/timeseries.go | 525 + - vendor/golang.org/x/net/trace/events.go | 532 + - vendor/golang.org/x/net/trace/histogram.go | 365 + - vendor/golang.org/x/net/trace/trace.go | 1130 + - vendor/golang.org/x/oauth2/.travis.yml | 0 - vendor/golang.org/x/oauth2/AUTHORS | 3 - - vendor/golang.org/x/oauth2/CONTRIBUTING.md | 0 - vendor/golang.org/x/oauth2/CONTRIBUTORS | 3 - - vendor/golang.org/x/oauth2/LICENSE | 0 - vendor/golang.org/x/oauth2/README.md | 12 +- - .../x/oauth2/internal/client_appengine.go | 0 - vendor/golang.org/x/oauth2/internal/doc.go | 0 - vendor/golang.org/x/oauth2/internal/oauth2.go | 0 - vendor/golang.org/x/oauth2/internal/token.go | 4 +- - .../golang.org/x/oauth2/internal/transport.go | 0 - vendor/golang.org/x/oauth2/oauth2.go | 33 +- - vendor/golang.org/x/oauth2/token.go | 14 +- - vendor/golang.org/x/oauth2/transport.go | 0 - vendor/golang.org/x/sys/LICENSE | 0 - vendor/golang.org/x/sys/PATENTS | 0 - .../sys/internal/unsafeheader/unsafeheader.go | 30 - - vendor/golang.org/x/sys/plan9/asm.s | 0 - vendor/golang.org/x/sys/plan9/asm_plan9_386.s | 0 - .../golang.org/x/sys/plan9/asm_plan9_amd64.s | 0 - vendor/golang.org/x/sys/plan9/asm_plan9_arm.s | 0 - vendor/golang.org/x/sys/plan9/const_plan9.go | 0 - vendor/golang.org/x/sys/plan9/dir_plan9.go | 0 - vendor/golang.org/x/sys/plan9/env_plan9.go | 0 - vendor/golang.org/x/sys/plan9/errors_plan9.go | 0 - vendor/golang.org/x/sys/plan9/mkall.sh | 0 - vendor/golang.org/x/sys/plan9/mkerrors.sh | 0 - .../golang.org/x/sys/plan9/mksysnum_plan9.sh | 0 - .../golang.org/x/sys/plan9/pwd_go15_plan9.go | 0 - vendor/golang.org/x/sys/plan9/pwd_plan9.go | 0 - vendor/golang.org/x/sys/plan9/race.go | 0 - vendor/golang.org/x/sys/plan9/race0.go | 0 - vendor/golang.org/x/sys/plan9/str.go | 0 - vendor/golang.org/x/sys/plan9/syscall.go | 0 - .../golang.org/x/sys/plan9/syscall_plan9.go | 0 - .../x/sys/plan9/zsyscall_plan9_386.go | 0 - .../x/sys/plan9/zsyscall_plan9_amd64.go | 0 - .../x/sys/plan9/zsyscall_plan9_arm.go | 0 - .../golang.org/x/sys/plan9/zsysnum_plan9.go | 0 - vendor/golang.org/x/sys/unix/.gitignore | 0 - vendor/golang.org/x/sys/unix/README.md | 0 - .../golang.org/x/sys/unix/affinity_linux.go | 0 - vendor/golang.org/x/sys/unix/aliases.go | 0 - vendor/golang.org/x/sys/unix/asm_aix_ppc64.s | 0 - vendor/golang.org/x/sys/unix/asm_bsd_386.s | 0 - vendor/golang.org/x/sys/unix/asm_bsd_amd64.s | 0 - vendor/golang.org/x/sys/unix/asm_bsd_arm.s | 0 - vendor/golang.org/x/sys/unix/asm_bsd_arm64.s | 0 - vendor/golang.org/x/sys/unix/asm_bsd_ppc64.s | 0 - .../golang.org/x/sys/unix/asm_bsd_riscv64.s | 0 - vendor/golang.org/x/sys/unix/asm_linux_386.s | 0 - .../golang.org/x/sys/unix/asm_linux_amd64.s | 0 - vendor/golang.org/x/sys/unix/asm_linux_arm.s | 0 - .../golang.org/x/sys/unix/asm_linux_arm64.s | 0 - .../golang.org/x/sys/unix/asm_linux_loong64.s | 0 - .../golang.org/x/sys/unix/asm_linux_mips64x.s | 0 - .../golang.org/x/sys/unix/asm_linux_mipsx.s | 0 - .../golang.org/x/sys/unix/asm_linux_ppc64x.s | 0 - .../golang.org/x/sys/unix/asm_linux_riscv64.s | 0 - .../golang.org/x/sys/unix/asm_linux_s390x.s | 0 - .../x/sys/unix/asm_openbsd_mips64.s | 0 - .../golang.org/x/sys/unix/asm_solaris_amd64.s | 0 - vendor/golang.org/x/sys/unix/asm_zos_s390x.s | 0 - .../golang.org/x/sys/unix/bluetooth_linux.go | 0 - vendor/golang.org/x/sys/unix/cap_freebsd.go | 0 - vendor/golang.org/x/sys/unix/constants.go | 0 - vendor/golang.org/x/sys/unix/dev_aix_ppc.go | 0 - vendor/golang.org/x/sys/unix/dev_aix_ppc64.go | 0 - vendor/golang.org/x/sys/unix/dev_darwin.go | 0 - vendor/golang.org/x/sys/unix/dev_dragonfly.go | 0 - vendor/golang.org/x/sys/unix/dev_freebsd.go | 0 - vendor/golang.org/x/sys/unix/dev_linux.go | 0 - vendor/golang.org/x/sys/unix/dev_netbsd.go | 0 - vendor/golang.org/x/sys/unix/dev_openbsd.go | 0 - vendor/golang.org/x/sys/unix/dev_zos.go | 0 - vendor/golang.org/x/sys/unix/dirent.go | 0 - vendor/golang.org/x/sys/unix/endian_big.go | 0 - vendor/golang.org/x/sys/unix/endian_little.go | 0 - vendor/golang.org/x/sys/unix/env_unix.go | 0 - vendor/golang.org/x/sys/unix/epoll_zos.go | 0 - vendor/golang.org/x/sys/unix/fcntl.go | 0 - vendor/golang.org/x/sys/unix/fcntl_darwin.go | 0 - .../x/sys/unix/fcntl_linux_32bit.go | 0 - vendor/golang.org/x/sys/unix/fdset.go | 0 - vendor/golang.org/x/sys/unix/fstatfs_zos.go | 0 - vendor/golang.org/x/sys/unix/gccgo.go | 4 +- - vendor/golang.org/x/sys/unix/gccgo_c.c | 4 +- - .../x/sys/unix/gccgo_linux_amd64.go | 0 - vendor/golang.org/x/sys/unix/ifreq_linux.go | 0 - vendor/golang.org/x/sys/unix/ioctl_linux.go | 0 - vendor/golang.org/x/sys/unix/ioctl_signed.go | 70 + - .../sys/unix/{ioctl.go => ioctl_unsigned.go} | 21 +- - vendor/golang.org/x/sys/unix/ioctl_zos.go | 20 +- - vendor/golang.org/x/sys/unix/mkall.sh | 6 +- - vendor/golang.org/x/sys/unix/mkerrors.sh | 14 +- - vendor/golang.org/x/sys/unix/mmap_nomremap.go | 14 + - vendor/golang.org/x/sys/unix/mremap.go | 53 + - vendor/golang.org/x/sys/unix/pagesize_unix.go | 0 - .../golang.org/x/sys/unix/pledge_openbsd.go | 0 - vendor/golang.org/x/sys/unix/ptrace_darwin.go | 0 - vendor/golang.org/x/sys/unix/ptrace_ios.go | 0 - vendor/golang.org/x/sys/unix/race.go | 0 - vendor/golang.org/x/sys/unix/race0.go | 0 - .../x/sys/unix/readdirent_getdents.go | 0 - .../x/sys/unix/readdirent_getdirentries.go | 0 - .../x/sys/unix/sockcmsg_dragonfly.go | 0 - .../golang.org/x/sys/unix/sockcmsg_linux.go | 0 - vendor/golang.org/x/sys/unix/sockcmsg_unix.go | 0 - .../x/sys/unix/sockcmsg_unix_other.go | 0 - vendor/golang.org/x/sys/unix/syscall.go | 0 - vendor/golang.org/x/sys/unix/syscall_aix.go | 24 +- - .../golang.org/x/sys/unix/syscall_aix_ppc.go | 1 - - .../x/sys/unix/syscall_aix_ppc64.go | 1 - - vendor/golang.org/x/sys/unix/syscall_bsd.go | 17 +- - .../golang.org/x/sys/unix/syscall_darwin.go | 252 +- - .../x/sys/unix/syscall_darwin_amd64.go | 0 - .../x/sys/unix/syscall_darwin_arm64.go | 0 - .../x/sys/unix/syscall_darwin_libSystem.go | 0 - .../x/sys/unix/syscall_dragonfly.go | 201 +- - .../x/sys/unix/syscall_dragonfly_amd64.go | 0 - .../golang.org/x/sys/unix/syscall_freebsd.go | 237 +- - .../x/sys/unix/syscall_freebsd_386.go | 12 +- - .../x/sys/unix/syscall_freebsd_amd64.go | 12 +- - .../x/sys/unix/syscall_freebsd_arm.go | 10 +- - .../x/sys/unix/syscall_freebsd_arm64.go | 10 +- - .../x/sys/unix/syscall_freebsd_riscv64.go | 10 +- - vendor/golang.org/x/sys/unix/syscall_hurd.go | 30 + - .../golang.org/x/sys/unix/syscall_hurd_386.go | 29 + - .../golang.org/x/sys/unix/syscall_illumos.go | 0 - vendor/golang.org/x/sys/unix/syscall_linux.go | 317 +- - .../x/sys/unix/syscall_linux_386.go | 27 - - .../x/sys/unix/syscall_linux_alarm.go | 0 - .../x/sys/unix/syscall_linux_amd64.go | 3 +- - .../x/sys/unix/syscall_linux_amd64_gc.go | 0 - .../x/sys/unix/syscall_linux_arm.go | 27 - - .../x/sys/unix/syscall_linux_arm64.go | 12 +- - .../golang.org/x/sys/unix/syscall_linux_gc.go | 0 - .../x/sys/unix/syscall_linux_gc_386.go | 0 - .../x/sys/unix/syscall_linux_gc_arm.go | 0 - .../x/sys/unix/syscall_linux_gccgo_386.go | 0 - .../x/sys/unix/syscall_linux_gccgo_arm.go | 0 - .../x/sys/unix/syscall_linux_loong64.go | 7 +- - .../x/sys/unix/syscall_linux_mips64x.go | 3 +- - .../x/sys/unix/syscall_linux_mipsx.go | 27 - - .../x/sys/unix/syscall_linux_ppc.go | 27 - - .../x/sys/unix/syscall_linux_ppc64x.go | 1 - - .../x/sys/unix/syscall_linux_riscv64.go | 14 +- - .../x/sys/unix/syscall_linux_s390x.go | 1 - - .../x/sys/unix/syscall_linux_sparc64.go | 1 - - .../golang.org/x/sys/unix/syscall_netbsd.go | 294 +- - .../x/sys/unix/syscall_netbsd_386.go | 0 - .../x/sys/unix/syscall_netbsd_amd64.go | 0 - .../x/sys/unix/syscall_netbsd_arm.go | 0 - .../x/sys/unix/syscall_netbsd_arm64.go | 0 - .../golang.org/x/sys/unix/syscall_openbsd.go | 94 +- - .../x/sys/unix/syscall_openbsd_386.go | 0 - .../x/sys/unix/syscall_openbsd_amd64.go | 0 - .../x/sys/unix/syscall_openbsd_arm.go | 0 - .../x/sys/unix/syscall_openbsd_arm64.go | 0 - .../x/sys/unix/syscall_openbsd_libc.go | 4 +- - .../x/sys/unix/syscall_openbsd_mips64.go | 0 - .../x/sys/unix/syscall_openbsd_ppc64.go | 0 - .../x/sys/unix/syscall_openbsd_riscv64.go | 0 - .../golang.org/x/sys/unix/syscall_solaris.go | 69 +- - .../x/sys/unix/syscall_solaris_amd64.go | 0 - vendor/golang.org/x/sys/unix/syscall_unix.go | 75 +- - .../golang.org/x/sys/unix/syscall_unix_gc.go | 0 - .../x/sys/unix/syscall_unix_gc_ppc64x.go | 0 - .../x/sys/unix/syscall_zos_s390x.go | 21 +- - vendor/golang.org/x/sys/unix/sysvshm_linux.go | 0 - vendor/golang.org/x/sys/unix/sysvshm_unix.go | 0 - .../x/sys/unix/sysvshm_unix_other.go | 0 - vendor/golang.org/x/sys/unix/timestruct.go | 2 +- - .../golang.org/x/sys/unix/unveil_openbsd.go | 0 - vendor/golang.org/x/sys/unix/xattr_bsd.go | 9 +- - .../golang.org/x/sys/unix/zerrors_aix_ppc.go | 0 - .../x/sys/unix/zerrors_aix_ppc64.go | 0 - .../x/sys/unix/zerrors_darwin_amd64.go | 19 + - .../x/sys/unix/zerrors_darwin_arm64.go | 19 + - .../x/sys/unix/zerrors_dragonfly_amd64.go | 0 - .../x/sys/unix/zerrors_freebsd_386.go | 0 - .../x/sys/unix/zerrors_freebsd_amd64.go | 0 - .../x/sys/unix/zerrors_freebsd_arm.go | 0 - .../x/sys/unix/zerrors_freebsd_arm64.go | 0 - .../x/sys/unix/zerrors_freebsd_riscv64.go | 0 - vendor/golang.org/x/sys/unix/zerrors_linux.go | 102 +- - .../x/sys/unix/zerrors_linux_386.go | 12 + - .../x/sys/unix/zerrors_linux_amd64.go | 12 + - .../x/sys/unix/zerrors_linux_arm.go | 12 + - .../x/sys/unix/zerrors_linux_arm64.go | 14 + - .../x/sys/unix/zerrors_linux_loong64.go | 14 + - .../x/sys/unix/zerrors_linux_mips.go | 12 + - .../x/sys/unix/zerrors_linux_mips64.go | 12 + - .../x/sys/unix/zerrors_linux_mips64le.go | 12 + - .../x/sys/unix/zerrors_linux_mipsle.go | 12 + - .../x/sys/unix/zerrors_linux_ppc.go | 12 + - .../x/sys/unix/zerrors_linux_ppc64.go | 12 + - .../x/sys/unix/zerrors_linux_ppc64le.go | 12 + - .../x/sys/unix/zerrors_linux_riscv64.go | 12 + - .../x/sys/unix/zerrors_linux_s390x.go | 12 + - .../x/sys/unix/zerrors_linux_sparc64.go | 60 + - .../x/sys/unix/zerrors_netbsd_386.go | 0 - .../x/sys/unix/zerrors_netbsd_amd64.go | 0 - .../x/sys/unix/zerrors_netbsd_arm.go | 0 - .../x/sys/unix/zerrors_netbsd_arm64.go | 0 - .../x/sys/unix/zerrors_openbsd_386.go | 356 +- - .../x/sys/unix/zerrors_openbsd_amd64.go | 189 +- - .../x/sys/unix/zerrors_openbsd_arm.go | 348 +- - .../x/sys/unix/zerrors_openbsd_arm64.go | 160 +- - .../x/sys/unix/zerrors_openbsd_mips64.go | 95 +- - .../x/sys/unix/zerrors_openbsd_ppc64.go | 0 - .../x/sys/unix/zerrors_openbsd_riscv64.go | 0 - .../x/sys/unix/zerrors_solaris_amd64.go | 0 - .../x/sys/unix/zerrors_zos_s390x.go | 0 - .../x/sys/unix/zptrace_armnn_linux.go | 8 +- - .../x/sys/unix/zptrace_linux_arm64.go | 4 +- - .../x/sys/unix/zptrace_mipsnn_linux.go | 8 +- - .../x/sys/unix/zptrace_mipsnnle_linux.go | 8 +- - .../x/sys/unix/zptrace_x86_linux.go | 8 +- - .../golang.org/x/sys/unix/zsyscall_aix_ppc.go | 45 +- - .../x/sys/unix/zsyscall_aix_ppc64.go | 46 +- - .../x/sys/unix/zsyscall_aix_ppc64_gc.go | 17 +- - .../x/sys/unix/zsyscall_aix_ppc64_gccgo.go | 18 +- - .../x/sys/unix/zsyscall_darwin_amd64.go | 71 +- - .../x/sys/unix/zsyscall_darwin_amd64.s | 160 +- - .../x/sys/unix/zsyscall_darwin_arm64.go | 71 +- - .../x/sys/unix/zsyscall_darwin_arm64.s | 160 +- - .../x/sys/unix/zsyscall_dragonfly_amd64.go | 52 +- - .../x/sys/unix/zsyscall_freebsd_386.go | 62 +- - .../x/sys/unix/zsyscall_freebsd_amd64.go | 62 +- - .../x/sys/unix/zsyscall_freebsd_arm.go | 62 +- - .../x/sys/unix/zsyscall_freebsd_arm64.go | 62 +- - .../x/sys/unix/zsyscall_freebsd_riscv64.go | 62 +- - .../x/sys/unix/zsyscall_illumos_amd64.go | 10 +- - .../golang.org/x/sys/unix/zsyscall_linux.go | 100 +- - .../x/sys/unix/zsyscall_linux_386.go | 10 - - .../x/sys/unix/zsyscall_linux_amd64.go | 10 - - .../x/sys/unix/zsyscall_linux_arm.go | 10 - - .../x/sys/unix/zsyscall_linux_arm64.go | 10 - - .../x/sys/unix/zsyscall_linux_loong64.go | 0 - .../x/sys/unix/zsyscall_linux_mips.go | 10 - - .../x/sys/unix/zsyscall_linux_mips64.go | 10 - - .../x/sys/unix/zsyscall_linux_mips64le.go | 10 - - .../x/sys/unix/zsyscall_linux_mipsle.go | 10 - - .../x/sys/unix/zsyscall_linux_ppc.go | 10 - - .../x/sys/unix/zsyscall_linux_ppc64.go | 10 - - .../x/sys/unix/zsyscall_linux_ppc64le.go | 10 - - .../x/sys/unix/zsyscall_linux_riscv64.go | 26 +- - .../x/sys/unix/zsyscall_linux_s390x.go | 10 - - .../x/sys/unix/zsyscall_linux_sparc64.go | 10 - - .../x/sys/unix/zsyscall_netbsd_386.go | 59 +- - .../x/sys/unix/zsyscall_netbsd_amd64.go | 59 +- - .../x/sys/unix/zsyscall_netbsd_arm.go | 59 +- - .../x/sys/unix/zsyscall_netbsd_arm64.go | 59 +- - .../x/sys/unix/zsyscall_openbsd_386.go | 82 +- - .../x/sys/unix/zsyscall_openbsd_386.s | 152 +- - .../x/sys/unix/zsyscall_openbsd_amd64.go | 82 +- - .../x/sys/unix/zsyscall_openbsd_amd64.s | 152 +- - .../x/sys/unix/zsyscall_openbsd_arm.go | 82 +- - .../x/sys/unix/zsyscall_openbsd_arm.s | 152 +- - .../x/sys/unix/zsyscall_openbsd_arm64.go | 82 +- - .../x/sys/unix/zsyscall_openbsd_arm64.s | 152 +- - .../x/sys/unix/zsyscall_openbsd_mips64.go | 856 +- - .../x/sys/unix/zsyscall_openbsd_mips64.s | 674 + - .../x/sys/unix/zsyscall_openbsd_ppc64.go | 82 +- - .../x/sys/unix/zsyscall_openbsd_ppc64.s | 24 +- - .../x/sys/unix/zsyscall_openbsd_riscv64.go | 82 +- - .../x/sys/unix/zsyscall_openbsd_riscv64.s | 152 +- - .../x/sys/unix/zsyscall_solaris_amd64.go | 291 +- - .../x/sys/unix/zsyscall_zos_s390x.go | 23 +- - .../x/sys/unix/zsysctl_openbsd_386.go | 51 +- - .../x/sys/unix/zsysctl_openbsd_amd64.go | 17 +- - .../x/sys/unix/zsysctl_openbsd_arm.go | 51 +- - .../x/sys/unix/zsysctl_openbsd_arm64.go | 11 +- - .../x/sys/unix/zsysctl_openbsd_mips64.go | 3 +- - .../x/sys/unix/zsysctl_openbsd_ppc64.go | 0 - .../x/sys/unix/zsysctl_openbsd_riscv64.go | 0 - .../x/sys/unix/zsysnum_darwin_amd64.go | 0 - .../x/sys/unix/zsysnum_darwin_arm64.go | 0 - .../x/sys/unix/zsysnum_dragonfly_amd64.go | 0 - .../x/sys/unix/zsysnum_freebsd_386.go | 0 - .../x/sys/unix/zsysnum_freebsd_amd64.go | 0 - .../x/sys/unix/zsysnum_freebsd_arm.go | 0 - .../x/sys/unix/zsysnum_freebsd_arm64.go | 0 - .../x/sys/unix/zsysnum_freebsd_riscv64.go | 0 - .../x/sys/unix/zsysnum_linux_386.go | 1 + - .../x/sys/unix/zsysnum_linux_amd64.go | 1 + - .../x/sys/unix/zsysnum_linux_arm.go | 1 + - .../x/sys/unix/zsysnum_linux_arm64.go | 1 + - .../x/sys/unix/zsysnum_linux_loong64.go | 1 + - .../x/sys/unix/zsysnum_linux_mips.go | 1 + - .../x/sys/unix/zsysnum_linux_mips64.go | 1 + - .../x/sys/unix/zsysnum_linux_mips64le.go | 1 + - .../x/sys/unix/zsysnum_linux_mipsle.go | 1 + - .../x/sys/unix/zsysnum_linux_ppc.go | 1 + - .../x/sys/unix/zsysnum_linux_ppc64.go | 1 + - .../x/sys/unix/zsysnum_linux_ppc64le.go | 1 + - .../x/sys/unix/zsysnum_linux_riscv64.go | 3 + - .../x/sys/unix/zsysnum_linux_s390x.go | 2 + - .../x/sys/unix/zsysnum_linux_sparc64.go | 1 + - .../x/sys/unix/zsysnum_netbsd_386.go | 0 - .../x/sys/unix/zsysnum_netbsd_amd64.go | 0 - .../x/sys/unix/zsysnum_netbsd_arm.go | 0 - .../x/sys/unix/zsysnum_netbsd_arm64.go | 0 - .../x/sys/unix/zsysnum_openbsd_386.go | 0 - .../x/sys/unix/zsysnum_openbsd_amd64.go | 0 - .../x/sys/unix/zsysnum_openbsd_arm.go | 0 - .../x/sys/unix/zsysnum_openbsd_arm64.go | 0 - .../x/sys/unix/zsysnum_openbsd_mips64.go | 1 + - .../x/sys/unix/zsysnum_openbsd_ppc64.go | 0 - .../x/sys/unix/zsysnum_openbsd_riscv64.go | 0 - .../x/sys/unix/zsysnum_zos_s390x.go | 0 - .../golang.org/x/sys/unix/ztypes_aix_ppc.go | 0 - .../golang.org/x/sys/unix/ztypes_aix_ppc64.go | 0 - .../x/sys/unix/ztypes_darwin_amd64.go | 11 + - .../x/sys/unix/ztypes_darwin_arm64.go | 11 + - .../x/sys/unix/ztypes_dragonfly_amd64.go | 0 - .../x/sys/unix/ztypes_freebsd_386.go | 2 +- - .../x/sys/unix/ztypes_freebsd_amd64.go | 2 +- - .../x/sys/unix/ztypes_freebsd_arm.go | 2 +- - .../x/sys/unix/ztypes_freebsd_arm64.go | 2 +- - .../x/sys/unix/ztypes_freebsd_riscv64.go | 2 +- - vendor/golang.org/x/sys/unix/ztypes_linux.go | 432 +- - .../golang.org/x/sys/unix/ztypes_linux_386.go | 4 +- - .../x/sys/unix/ztypes_linux_amd64.go | 4 +- - .../golang.org/x/sys/unix/ztypes_linux_arm.go | 4 +- - .../x/sys/unix/ztypes_linux_arm64.go | 4 +- - .../x/sys/unix/ztypes_linux_loong64.go | 4 +- - .../x/sys/unix/ztypes_linux_mips.go | 4 +- - .../x/sys/unix/ztypes_linux_mips64.go | 4 +- - .../x/sys/unix/ztypes_linux_mips64le.go | 4 +- - .../x/sys/unix/ztypes_linux_mipsle.go | 4 +- - .../golang.org/x/sys/unix/ztypes_linux_ppc.go | 4 +- - .../x/sys/unix/ztypes_linux_ppc64.go | 4 +- - .../x/sys/unix/ztypes_linux_ppc64le.go | 4 +- - .../x/sys/unix/ztypes_linux_riscv64.go | 31 +- - .../x/sys/unix/ztypes_linux_s390x.go | 4 +- - .../x/sys/unix/ztypes_linux_sparc64.go | 4 +- - .../x/sys/unix/ztypes_netbsd_386.go | 84 + - .../x/sys/unix/ztypes_netbsd_amd64.go | 84 + - .../x/sys/unix/ztypes_netbsd_arm.go | 84 + - .../x/sys/unix/ztypes_netbsd_arm64.go | 84 + - .../x/sys/unix/ztypes_openbsd_386.go | 97 +- - .../x/sys/unix/ztypes_openbsd_amd64.go | 33 +- - .../x/sys/unix/ztypes_openbsd_arm.go | 9 +- - .../x/sys/unix/ztypes_openbsd_arm64.go | 9 +- - .../x/sys/unix/ztypes_openbsd_mips64.go | 9 +- - .../x/sys/unix/ztypes_openbsd_ppc64.go | 0 - .../x/sys/unix/ztypes_openbsd_riscv64.go | 0 - .../x/sys/unix/ztypes_solaris_amd64.go | 0 - .../golang.org/x/sys/unix/ztypes_zos_s390x.go | 0 - vendor/golang.org/x/sys/windows/aliases.go | 0 - .../golang.org/x/sys/windows/dll_windows.go | 0 - vendor/golang.org/x/sys/windows/empty.s | 0 - .../golang.org/x/sys/windows/env_windows.go | 6 +- - vendor/golang.org/x/sys/windows/eventlog.go | 0 - .../golang.org/x/sys/windows/exec_windows.go | 92 +- - .../x/sys/windows/memory_windows.go | 0 - vendor/golang.org/x/sys/windows/mkerrors.bash | 0 - .../x/sys/windows/mkknownfolderids.bash | 0 - vendor/golang.org/x/sys/windows/mksyscall.go | 0 - vendor/golang.org/x/sys/windows/race.go | 0 - vendor/golang.org/x/sys/windows/race0.go | 0 - .../golang.org/x/sys/windows/registry/key.go | 0 - .../x/sys/windows/registry/mksyscall.go | 0 - .../x/sys/windows/registry/syscall.go | 0 - .../x/sys/windows/registry/value.go | 0 - .../sys/windows/registry/zsyscall_windows.go | 0 - .../x/sys/windows/security_windows.go | 21 +- - vendor/golang.org/x/sys/windows/service.go | 11 + - .../x/sys/windows/setupapi_windows.go | 0 - vendor/golang.org/x/sys/windows/str.go | 0 - vendor/golang.org/x/sys/windows/syscall.go | 0 - .../x/sys/windows/syscall_windows.go | 90 +- - .../golang.org/x/sys/windows/types_windows.go | 102 +- - .../x/sys/windows/types_windows_386.go | 0 - .../x/sys/windows/types_windows_amd64.go | 0 - .../x/sys/windows/types_windows_arm.go | 0 - .../x/sys/windows/types_windows_arm64.go | 0 - .../x/sys/windows/zerrors_windows.go | 0 - .../x/sys/windows/zknownfolderids_windows.go | 0 - .../x/sys/windows/zsyscall_windows.go | 98 +- - vendor/golang.org/x/term/CONTRIBUTING.md | 0 - vendor/golang.org/x/term/LICENSE | 0 - vendor/golang.org/x/term/PATENTS | 0 - vendor/golang.org/x/term/README.md | 0 - vendor/golang.org/x/term/codereview.cfg | 0 - vendor/golang.org/x/term/term.go | 0 - vendor/golang.org/x/term/term_plan9.go | 0 - vendor/golang.org/x/term/term_unix.go | 2 +- - vendor/golang.org/x/term/term_unix_bsd.go | 0 - vendor/golang.org/x/term/term_unix_other.go | 0 - vendor/golang.org/x/term/term_unsupported.go | 0 - vendor/golang.org/x/term/term_windows.go | 0 - vendor/golang.org/x/term/terminal.go | 0 - vendor/golang.org/x/text/LICENSE | 0 - vendor/golang.org/x/text/PATENTS | 0 - .../x/text/secure/bidirule/bidirule.go | 0 - .../x/text/secure/bidirule/bidirule10.0.0.go | 0 - .../x/text/secure/bidirule/bidirule9.0.0.go | 0 - .../golang.org/x/text/transform/transform.go | 0 - vendor/golang.org/x/text/unicode/bidi/bidi.go | 0 - .../golang.org/x/text/unicode/bidi/bracket.go | 0 - vendor/golang.org/x/text/unicode/bidi/core.go | 0 - vendor/golang.org/x/text/unicode/bidi/prop.go | 0 - .../x/text/unicode/bidi/tables10.0.0.go | 0 - .../x/text/unicode/bidi/tables11.0.0.go | 0 - .../x/text/unicode/bidi/tables12.0.0.go | 0 - .../x/text/unicode/bidi/tables13.0.0.go | 4 +- - .../x/text/unicode/bidi/tables15.0.0.go | 2043 + - .../x/text/unicode/bidi/tables9.0.0.go | 0 - .../golang.org/x/text/unicode/bidi/trieval.go | 0 - .../x/text/unicode/norm/composition.go | 0 - .../x/text/unicode/norm/forminfo.go | 2 +- - .../golang.org/x/text/unicode/norm/input.go | 0 - vendor/golang.org/x/text/unicode/norm/iter.go | 0 - .../x/text/unicode/norm/normalize.go | 0 - .../x/text/unicode/norm/readwriter.go | 0 - .../x/text/unicode/norm/tables10.0.0.go | 0 - .../x/text/unicode/norm/tables11.0.0.go | 0 - .../x/text/unicode/norm/tables12.0.0.go | 0 - .../x/text/unicode/norm/tables13.0.0.go | 4 +- - .../x/text/unicode/norm/tables15.0.0.go | 7908 +++ - .../x/text/unicode/norm/tables9.0.0.go | 0 - .../x/text/unicode/norm/transform.go | 0 - vendor/golang.org/x/text/unicode/norm/trie.go | 2 +- - vendor/golang.org/x/time/AUTHORS | 0 - vendor/golang.org/x/time/CONTRIBUTORS | 0 - vendor/golang.org/x/time/LICENSE | 0 - vendor/golang.org/x/time/PATENTS | 0 - vendor/golang.org/x/time/rate/rate.go | 0 - vendor/google.golang.org/appengine/LICENSE | 0 - .../appengine/internal/api.go | 0 - .../appengine/internal/api_classic.go | 0 - .../appengine/internal/api_common.go | 0 - .../appengine/internal/app_id.go | 0 - .../appengine/internal/base/api_base.pb.go | 0 - .../appengine/internal/base/api_base.proto | 0 - .../internal/datastore/datastore_v3.pb.go | 0 - .../internal/datastore/datastore_v3.proto | 0 - .../appengine/internal/identity.go | 0 - .../appengine/internal/identity_classic.go | 0 - .../appengine/internal/identity_flex.go | 0 - .../appengine/internal/identity_vm.go | 0 - .../appengine/internal/internal.go | 0 - .../appengine/internal/log/log_service.pb.go | 0 - .../appengine/internal/log/log_service.proto | 0 - .../appengine/internal/main.go | 0 - .../appengine/internal/main_common.go | 0 - .../appengine/internal/main_vm.go | 0 - .../appengine/internal/metadata.go | 0 - .../appengine/internal/net.go | 0 - .../appengine/internal/regen.sh | 0 - .../internal/remote_api/remote_api.pb.go | 0 - .../internal/remote_api/remote_api.proto | 0 - .../appengine/internal/transaction.go | 0 - .../internal/urlfetch/urlfetch_service.pb.go | 0 - .../internal/urlfetch/urlfetch_service.proto | 0 - .../appengine/urlfetch/urlfetch.go | 0 - .../genproto/googleapis/rpc/LICENSE | 202 + - .../googleapis/rpc/status/status.pb.go | 203 + - vendor/google.golang.org/grpc/AUTHORS | 1 + - .../google.golang.org/grpc/CODE-OF-CONDUCT.md | 3 + - vendor/google.golang.org/grpc/CONTRIBUTING.md | 73 + - vendor/google.golang.org/grpc/GOVERNANCE.md | 1 + - vendor/google.golang.org/grpc/LICENSE | 202 + - vendor/google.golang.org/grpc/MAINTAINERS.md | 28 + - vendor/google.golang.org/grpc/Makefile | 46 + - vendor/google.golang.org/grpc/NOTICE.txt | 13 + - vendor/google.golang.org/grpc/README.md | 141 + - vendor/google.golang.org/grpc/SECURITY.md | 3 + - .../grpc/attributes/attributes.go | 142 + - vendor/google.golang.org/grpc/backoff.go | 61 + - .../google.golang.org/grpc/backoff/backoff.go | 52 + - .../grpc/balancer/balancer.go | 404 + - .../grpc/balancer/base/balancer.go | 254 + - .../grpc/balancer/base/base.go | 71 + - .../grpc/balancer/conn_state_evaluator.go | 74 + - .../grpc/balancer/grpclb/state/state.go | 51 + - .../grpc/balancer/roundrobin/roundrobin.go | 81 + - .../grpc/balancer_conn_wrappers.go | 459 + - .../grpc_binarylog_v1/binarylog.pb.go | 1183 + - vendor/google.golang.org/grpc/call.go | 79 + - .../grpc/channelz/channelz.go | 36 + - vendor/google.golang.org/grpc/clientconn.go | 1979 + - vendor/google.golang.org/grpc/codec.go | 50 + - vendor/google.golang.org/grpc/codegen.sh | 17 + - .../grpc/codes/code_string.go | 111 + - vendor/google.golang.org/grpc/codes/codes.go | 244 + - .../grpc/connectivity/connectivity.go | 94 + - .../grpc/credentials/credentials.go | 291 + - .../grpc/credentials/insecure/insecure.go | 98 + - .../google.golang.org/grpc/credentials/tls.go | 236 + - vendor/google.golang.org/grpc/dialoptions.go | 701 + - vendor/google.golang.org/grpc/doc.go | 26 + - .../grpc/encoding/encoding.go | 135 + - .../grpc/encoding/proto/proto.go | 58 + - .../grpc/grpclog/component.go | 117 + - .../google.golang.org/grpc/grpclog/grpclog.go | 132 + - .../google.golang.org/grpc/grpclog/logger.go | 87 + - .../grpc/grpclog/loggerv2.go | 258 + - vendor/google.golang.org/grpc/idle.go | 287 + - vendor/google.golang.org/grpc/interceptor.go | 104 + - .../grpc/internal/backoff/backoff.go | 73 + - .../balancer/gracefulswitch/gracefulswitch.go | 384 + - .../grpc/internal/balancerload/load.go | 46 + - .../grpc/internal/binarylog/binarylog.go | 192 + - .../internal/binarylog/binarylog_testutil.go | 42 + - .../grpc/internal/binarylog/env_config.go | 208 + - .../grpc/internal/binarylog/method_logger.go | 445 + - .../grpc/internal/binarylog/sink.go | 170 + - .../grpc/internal/buffer/unbounded.go | 105 + - .../grpc/internal/channelz/funcs.go | 789 + - .../grpc/internal/channelz/id.go | 75 + - .../grpc/internal/channelz/logging.go | 79 + - .../grpc/internal/channelz/types.go | 722 + - .../grpc/internal/channelz/types_linux.go | 51 + - .../grpc/internal/channelz/types_nonlinux.go | 43 + - .../grpc/internal/channelz/util_linux.go | 37 + - .../grpc/internal/channelz/util_nonlinux.go | 27 + - .../grpc/internal/credentials/credentials.go | 49 + - .../grpc/internal/credentials/spiffe.go | 75 + - .../grpc/internal/credentials/syscallconn.go | 58 + - .../grpc/internal/credentials/util.go | 52 + - .../grpc/internal/envconfig/envconfig.go | 69 + - .../grpc/internal/envconfig/observability.go | 42 + - .../grpc/internal/envconfig/xds.go | 95 + - .../grpc/internal/grpclog/grpclog.go | 126 + - .../grpc/internal/grpclog/prefixLogger.go | 93 + - .../grpc/internal/grpcrand/grpcrand.go | 95 + - .../internal/grpcsync/callback_serializer.go | 119 + - .../grpc/internal/grpcsync/event.go | 61 + - .../grpc/internal/grpcsync/oncefunc.go | 32 + - .../grpc/internal/grpcsync/pubsub.go | 136 + - .../grpc/internal/grpcutil/compressor.go | 47 + - .../grpc/internal/grpcutil/encode_duration.go | 63 + - .../grpc/internal/grpcutil/grpcutil.go | 20 + - .../grpc/internal/grpcutil/metadata.go | 40 + - .../grpc/internal/grpcutil/method.go | 88 + - .../grpc/internal/grpcutil/regex.go | 31 + - .../grpc/internal/internal.go | 194 + - .../grpc/internal/metadata/metadata.go | 132 + - .../grpc/internal/pretty/pretty.go | 82 + - .../grpc/internal/resolver/config_selector.go | 167 + - .../internal/resolver/dns/dns_resolver.go | 470 + - .../resolver/passthrough/passthrough.go | 64 + - .../grpc/internal/resolver/unix/unix.go | 74 + - .../grpc/internal/serviceconfig/duration.go | 130 + - .../internal/serviceconfig/serviceconfig.go | 180 + - .../grpc/internal/status/status.go | 176 + - .../grpc/internal/syscall/syscall_linux.go | 112 + - .../grpc/internal/syscall/syscall_nonlinux.go | 77 + - .../grpc/internal/transport/bdp_estimator.go | 141 + - .../grpc/internal/transport/controlbuf.go | 1007 + - .../grpc/internal/transport/defaults.go | 55 + - .../grpc/internal/transport/flowcontrol.go | 215 + - .../grpc/internal/transport/handler_server.go | 480 + - .../grpc/internal/transport/http2_client.go | 1798 + - .../grpc/internal/transport/http2_server.go | 1464 + - .../grpc/internal/transport/http_util.go | 432 + - .../grpc/internal/transport/logging.go | 40 + - .../transport/networktype/networktype.go | 46 + - .../grpc/internal/transport/proxy.go | 142 + - .../grpc/internal/transport/transport.go | 842 + - .../grpc/internal/xds_handshake_cluster.go | 40 + - .../grpc/keepalive/keepalive.go | 85 + - .../grpc/metadata/metadata.go | 295 + - vendor/google.golang.org/grpc/peer/peer.go | 51 + - .../google.golang.org/grpc/picker_wrapper.go | 216 + - vendor/google.golang.org/grpc/pickfirst.go | 227 + - vendor/google.golang.org/grpc/preloader.go | 67 + - vendor/google.golang.org/grpc/regenerate.sh | 123 + - vendor/google.golang.org/grpc/resolver/map.go | 138 + - .../grpc/resolver/resolver.go | 330 + - .../grpc/resolver_conn_wrapper.go | 239 + - vendor/google.golang.org/grpc/rpc_util.go | 956 + - vendor/google.golang.org/grpc/server.go | 2104 + - .../google.golang.org/grpc/service_config.go | 347 + - .../grpc/serviceconfig/serviceconfig.go | 44 + - .../grpc/shared_buffer_pool.go | 154 + - .../google.golang.org/grpc/stats/handlers.go | 63 + - vendor/google.golang.org/grpc/stats/stats.go | 333 + - .../google.golang.org/grpc/status/status.go | 160 + - vendor/google.golang.org/grpc/stream.go | 1776 + - vendor/google.golang.org/grpc/tap/tap.go | 56 + - vendor/google.golang.org/grpc/trace.go | 123 + - vendor/google.golang.org/grpc/version.go | 22 + - vendor/google.golang.org/grpc/vet.sh | 208 + - vendor/google.golang.org/protobuf/LICENSE | 0 - vendor/google.golang.org/protobuf/PATENTS | 0 - .../protobuf/encoding/protojson/decode.go | 665 + - .../protobuf/encoding/protojson/doc.go | 11 + - .../protobuf/encoding/protojson/encode.go | 349 + - .../encoding/protojson/well_known_types.go | 895 + - .../protobuf/encoding/prototext/decode.go | 0 - .../protobuf/encoding/prototext/doc.go | 0 - .../protobuf/encoding/prototext/encode.go | 14 +- - .../protobuf/encoding/protowire/wire.go | 8 +- - .../protobuf/internal/descfmt/stringer.go | 0 - .../protobuf/internal/descopts/options.go | 0 - .../protobuf/internal/detrand/rand.go | 0 - .../internal/encoding/defval/default.go | 0 - .../protobuf/internal/encoding/json/decode.go | 340 + - .../internal/encoding/json/decode_number.go | 254 + - .../internal/encoding/json/decode_string.go | 91 + - .../internal/encoding/json/decode_token.go | 192 + - .../protobuf/internal/encoding/json/encode.go | 278 + - .../encoding/messageset/messageset.go | 0 - .../protobuf/internal/encoding/tag/tag.go | 0 - .../protobuf/internal/encoding/text/decode.go | 5 +- - .../internal/encoding/text/decode_number.go | 43 +- - .../internal/encoding/text/decode_string.go | 0 - .../internal/encoding/text/decode_token.go | 0 - .../protobuf/internal/encoding/text/doc.go | 0 - .../protobuf/internal/encoding/text/encode.go | 10 +- - .../protobuf/internal/errors/errors.go | 0 - .../protobuf/internal/errors/is_go112.go | 0 - .../protobuf/internal/errors/is_go113.go | 0 - .../protobuf/internal/filedesc/build.go | 0 - .../protobuf/internal/filedesc/desc.go | 0 - .../protobuf/internal/filedesc/desc_init.go | 0 - .../protobuf/internal/filedesc/desc_lazy.go | 0 - .../protobuf/internal/filedesc/desc_list.go | 0 - .../internal/filedesc/desc_list_gen.go | 0 - .../protobuf/internal/filedesc/placeholder.go | 0 - .../protobuf/internal/filetype/build.go | 0 - .../protobuf/internal/flags/flags.go | 0 - .../internal/flags/proto_legacy_disable.go | 0 - .../internal/flags/proto_legacy_enable.go | 0 - .../protobuf/internal/genid/any_gen.go | 0 - .../protobuf/internal/genid/api_gen.go | 0 - .../protobuf/internal/genid/descriptor_gen.go | 138 +- - .../protobuf/internal/genid/doc.go | 0 - .../protobuf/internal/genid/duration_gen.go | 0 - .../protobuf/internal/genid/empty_gen.go | 0 - .../protobuf/internal/genid/field_mask_gen.go | 0 - .../protobuf/internal/genid/goname.go | 0 - .../protobuf/internal/genid/map_entry.go | 0 - .../internal/genid/source_context_gen.go | 0 - .../protobuf/internal/genid/struct_gen.go | 0 - .../protobuf/internal/genid/timestamp_gen.go | 0 - .../protobuf/internal/genid/type_gen.go | 6 + - .../protobuf/internal/genid/wrappers.go | 0 - .../protobuf/internal/genid/wrappers_gen.go | 0 - .../protobuf/internal/impl/api_export.go | 0 - .../protobuf/internal/impl/checkinit.go | 0 - .../protobuf/internal/impl/codec_extension.go | 0 - .../protobuf/internal/impl/codec_field.go | 0 - .../protobuf/internal/impl/codec_gen.go | 0 - .../protobuf/internal/impl/codec_map.go | 0 - .../protobuf/internal/impl/codec_map_go111.go | 0 - .../protobuf/internal/impl/codec_map_go112.go | 0 - .../protobuf/internal/impl/codec_message.go | 0 - .../internal/impl/codec_messageset.go | 0 - .../protobuf/internal/impl/codec_reflect.go | 0 - .../protobuf/internal/impl/codec_tables.go | 0 - .../protobuf/internal/impl/codec_unsafe.go | 0 - .../protobuf/internal/impl/convert.go | 1 - - .../protobuf/internal/impl/convert_list.go | 0 - .../protobuf/internal/impl/convert_map.go | 0 - .../protobuf/internal/impl/decode.go | 0 - .../protobuf/internal/impl/encode.go | 0 - .../protobuf/internal/impl/enum.go | 0 - .../protobuf/internal/impl/extension.go | 0 - .../protobuf/internal/impl/legacy_enum.go | 0 - .../protobuf/internal/impl/legacy_export.go | 0 - .../internal/impl/legacy_extension.go | 0 - .../protobuf/internal/impl/legacy_file.go | 0 - .../protobuf/internal/impl/legacy_message.go | 0 - .../protobuf/internal/impl/merge.go | 0 - .../protobuf/internal/impl/merge_gen.go | 0 - .../protobuf/internal/impl/message.go | 0 - .../protobuf/internal/impl/message_reflect.go | 0 - .../internal/impl/message_reflect_field.go | 0 - .../internal/impl/message_reflect_gen.go | 0 - .../protobuf/internal/impl/pointer_reflect.go | 0 - .../protobuf/internal/impl/pointer_unsafe.go | 0 - .../protobuf/internal/impl/validate.go | 0 - .../protobuf/internal/impl/weak.go | 0 - .../protobuf/internal/order/order.go | 2 +- - .../protobuf/internal/order/range.go | 0 - .../protobuf/internal/pragma/pragma.go | 0 - .../protobuf/internal/set/ints.go | 0 - .../protobuf/internal/strs/strings.go | 0 - .../protobuf/internal/strs/strings_pure.go | 0 - .../protobuf/internal/strs/strings_unsafe.go | 2 +- - .../protobuf/internal/version/version.go | 4 +- - .../protobuf/proto/checkinit.go | 0 - .../protobuf/proto/decode.go | 0 - .../protobuf/proto/decode_gen.go | 0 - .../google.golang.org/protobuf/proto/doc.go | 9 +- - .../protobuf/proto/encode.go | 0 - .../protobuf/proto/encode_gen.go | 0 - .../google.golang.org/protobuf/proto/equal.go | 172 +- - .../protobuf/proto/extension.go | 0 - .../google.golang.org/protobuf/proto/merge.go | 0 - .../protobuf/proto/messageset.go | 0 - .../google.golang.org/protobuf/proto/proto.go | 0 - .../protobuf/proto/proto_methods.go | 0 - .../protobuf/proto/proto_reflect.go | 0 - .../google.golang.org/protobuf/proto/reset.go | 0 - .../google.golang.org/protobuf/proto/size.go | 10 +- - .../protobuf/proto/size_gen.go | 0 - .../protobuf/proto/wrappers.go | 0 - .../protobuf/reflect/protodesc/desc.go | 0 - .../protobuf/reflect/protodesc/desc_init.go | 0 - .../reflect/protodesc/desc_resolve.go | 0 - .../reflect/protodesc/desc_validate.go | 0 - .../protobuf/reflect/protodesc/proto.go | 0 - .../protobuf/reflect/protoreflect/methods.go | 0 - .../protobuf/reflect/protoreflect/proto.go | 0 - .../protobuf/reflect/protoreflect/source.go | 0 - .../reflect/protoreflect/source_gen.go | 41 + - .../protobuf/reflect/protoreflect/type.go | 0 - .../protobuf/reflect/protoreflect/value.go | 2 +- - .../reflect/protoreflect/value_equal.go | 168 + - .../reflect/protoreflect/value_pure.go | 0 - .../reflect/protoreflect/value_union.go | 4 +- - .../reflect/protoreflect/value_unsafe.go | 0 - .../reflect/protoregistry/registry.go | 2 +- - .../protobuf/runtime/protoiface/legacy.go | 0 - .../protobuf/runtime/protoiface/methods.go | 0 - .../protobuf/runtime/protoimpl/impl.go | 0 - .../protobuf/runtime/protoimpl/version.go | 0 - .../types/descriptorpb/descriptor.pb.go | 1880 +- - .../protobuf/types/known/anypb/any.pb.go | 133 +- - .../types/known/durationpb/duration.pb.go | 63 +- - .../types/known/timestamppb/timestamp.pb.go | 63 +- - vendor/gopkg.in/inf.v0/LICENSE | 0 - vendor/gopkg.in/inf.v0/dec.go | 0 - vendor/gopkg.in/inf.v0/rounder.go | 0 - vendor/gopkg.in/yaml.v2/.travis.yml | 0 - vendor/gopkg.in/yaml.v2/LICENSE | 0 - vendor/gopkg.in/yaml.v2/LICENSE.libyaml | 0 - vendor/gopkg.in/yaml.v2/NOTICE | 0 - vendor/gopkg.in/yaml.v2/README.md | 0 - vendor/gopkg.in/yaml.v2/apic.go | 0 - vendor/gopkg.in/yaml.v2/decode.go | 0 - vendor/gopkg.in/yaml.v2/emitterc.go | 0 - vendor/gopkg.in/yaml.v2/encode.go | 0 - vendor/gopkg.in/yaml.v2/parserc.go | 0 - vendor/gopkg.in/yaml.v2/readerc.go | 0 - vendor/gopkg.in/yaml.v2/resolve.go | 0 - vendor/gopkg.in/yaml.v2/scannerc.go | 0 - vendor/gopkg.in/yaml.v2/sorter.go | 0 - vendor/gopkg.in/yaml.v2/writerc.go | 0 - vendor/gopkg.in/yaml.v2/yaml.go | 0 - vendor/gopkg.in/yaml.v2/yamlh.go | 0 - vendor/gopkg.in/yaml.v2/yamlprivateh.go | 0 - vendor/gopkg.in/yaml.v3/LICENSE | 0 - vendor/gopkg.in/yaml.v3/NOTICE | 0 - vendor/gopkg.in/yaml.v3/README.md | 0 - vendor/gopkg.in/yaml.v3/apic.go | 0 - vendor/gopkg.in/yaml.v3/decode.go | 0 - vendor/gopkg.in/yaml.v3/emitterc.go | 0 - vendor/gopkg.in/yaml.v3/encode.go | 0 - vendor/gopkg.in/yaml.v3/parserc.go | 0 - vendor/gopkg.in/yaml.v3/readerc.go | 0 - vendor/gopkg.in/yaml.v3/resolve.go | 0 - vendor/gopkg.in/yaml.v3/scannerc.go | 0 - vendor/gopkg.in/yaml.v3/sorter.go | 0 - vendor/gopkg.in/yaml.v3/writerc.go | 0 - vendor/gopkg.in/yaml.v3/yaml.go | 0 - vendor/gopkg.in/yaml.v3/yamlh.go | 0 - vendor/gopkg.in/yaml.v3/yamlprivateh.go | 0 - vendor/k8s.io/api/LICENSE | 0 - .../api/admissionregistration/v1/doc.go | 0 - .../admissionregistration/v1/generated.pb.go | 0 - .../admissionregistration/v1/generated.proto | 0 - .../api/admissionregistration/v1/register.go | 0 - .../api/admissionregistration/v1/types.go | 0 - .../v1/types_swagger_doc_generated.go | 0 - .../v1/zz_generated.deepcopy.go | 0 - .../api/admissionregistration/v1beta1/doc.go | 0 - .../v1beta1/generated.pb.go | 0 - .../v1beta1/generated.proto | 0 - .../admissionregistration/v1beta1/register.go | 0 - .../admissionregistration/v1beta1/types.go | 0 - .../v1beta1/types_swagger_doc_generated.go | 0 - .../v1beta1/zz_generated.deepcopy.go | 0 - .../zz_generated.prerelease-lifecycle.go | 0 - .../api/apiserverinternal/v1alpha1/doc.go | 0 - .../v1alpha1/generated.pb.go | 0 - .../v1alpha1/generated.proto | 0 - .../apiserverinternal/v1alpha1/register.go | 0 - .../api/apiserverinternal/v1alpha1/types.go | 0 - .../v1alpha1/types_swagger_doc_generated.go | 0 - .../v1alpha1/zz_generated.deepcopy.go | 0 - vendor/k8s.io/api/apps/v1/doc.go | 0 - vendor/k8s.io/api/apps/v1/generated.pb.go | 0 - vendor/k8s.io/api/apps/v1/generated.proto | 0 - vendor/k8s.io/api/apps/v1/register.go | 0 - vendor/k8s.io/api/apps/v1/types.go | 0 - .../apps/v1/types_swagger_doc_generated.go | 0 - .../api/apps/v1/zz_generated.deepcopy.go | 0 - vendor/k8s.io/api/apps/v1beta1/doc.go | 0 - .../k8s.io/api/apps/v1beta1/generated.pb.go | 0 - .../k8s.io/api/apps/v1beta1/generated.proto | 0 - vendor/k8s.io/api/apps/v1beta1/register.go | 0 - vendor/k8s.io/api/apps/v1beta1/types.go | 0 - .../v1beta1/types_swagger_doc_generated.go | 0 - .../api/apps/v1beta1/zz_generated.deepcopy.go | 0 - .../zz_generated.prerelease-lifecycle.go | 0 - vendor/k8s.io/api/apps/v1beta2/doc.go | 0 - .../k8s.io/api/apps/v1beta2/generated.pb.go | 0 - .../k8s.io/api/apps/v1beta2/generated.proto | 0 - vendor/k8s.io/api/apps/v1beta2/register.go | 0 - vendor/k8s.io/api/apps/v1beta2/types.go | 0 - .../v1beta2/types_swagger_doc_generated.go | 0 - .../api/apps/v1beta2/zz_generated.deepcopy.go | 0 - .../zz_generated.prerelease-lifecycle.go | 0 - vendor/k8s.io/api/authentication/v1/doc.go | 0 - .../api/authentication/v1/generated.pb.go | 0 - .../api/authentication/v1/generated.proto | 0 - .../k8s.io/api/authentication/v1/register.go | 0 - vendor/k8s.io/api/authentication/v1/types.go | 0 - .../v1/types_swagger_doc_generated.go | 0 - .../v1/zz_generated.deepcopy.go | 0 - .../k8s.io/api/authentication/v1beta1/doc.go | 0 - .../authentication/v1beta1/generated.pb.go | 0 - .../authentication/v1beta1/generated.proto | 0 - .../api/authentication/v1beta1/register.go | 0 - .../api/authentication/v1beta1/types.go | 0 - .../v1beta1/types_swagger_doc_generated.go | 0 - .../v1beta1/zz_generated.deepcopy.go | 0 - .../zz_generated.prerelease-lifecycle.go | 0 - vendor/k8s.io/api/authorization/v1/doc.go | 0 - .../api/authorization/v1/generated.pb.go | 0 - .../api/authorization/v1/generated.proto | 0 - .../k8s.io/api/authorization/v1/register.go | 0 - vendor/k8s.io/api/authorization/v1/types.go | 0 - .../v1/types_swagger_doc_generated.go | 0 - .../authorization/v1/zz_generated.deepcopy.go | 0 - .../k8s.io/api/authorization/v1beta1/doc.go | 0 - .../api/authorization/v1beta1/generated.pb.go | 0 - .../api/authorization/v1beta1/generated.proto | 0 - .../api/authorization/v1beta1/register.go | 0 - .../k8s.io/api/authorization/v1beta1/types.go | 0 - .../v1beta1/types_swagger_doc_generated.go | 0 - .../v1beta1/zz_generated.deepcopy.go | 0 - .../zz_generated.prerelease-lifecycle.go | 0 - vendor/k8s.io/api/autoscaling/v1/doc.go | 0 - .../k8s.io/api/autoscaling/v1/generated.pb.go | 0 - .../k8s.io/api/autoscaling/v1/generated.proto | 0 - vendor/k8s.io/api/autoscaling/v1/register.go | 0 - vendor/k8s.io/api/autoscaling/v1/types.go | 0 - .../v1/types_swagger_doc_generated.go | 0 - .../autoscaling/v1/zz_generated.deepcopy.go | 0 - vendor/k8s.io/api/autoscaling/v2beta1/doc.go | 0 - .../api/autoscaling/v2beta1/generated.pb.go | 0 - .../api/autoscaling/v2beta1/generated.proto | 0 - .../api/autoscaling/v2beta1/register.go | 0 - .../k8s.io/api/autoscaling/v2beta1/types.go | 0 - .../v2beta1/types_swagger_doc_generated.go | 0 - .../v2beta1/zz_generated.deepcopy.go | 0 - .../zz_generated.prerelease-lifecycle.go | 0 - vendor/k8s.io/api/autoscaling/v2beta2/doc.go | 0 - .../api/autoscaling/v2beta2/generated.pb.go | 0 - .../api/autoscaling/v2beta2/generated.proto | 0 - .../api/autoscaling/v2beta2/register.go | 0 - .../k8s.io/api/autoscaling/v2beta2/types.go | 0 - .../v2beta2/types_swagger_doc_generated.go | 0 - .../v2beta2/zz_generated.deepcopy.go | 0 - .../zz_generated.prerelease-lifecycle.go | 0 - vendor/k8s.io/api/batch/v1/doc.go | 0 - vendor/k8s.io/api/batch/v1/generated.pb.go | 0 - vendor/k8s.io/api/batch/v1/generated.proto | 0 - vendor/k8s.io/api/batch/v1/register.go | 0 - vendor/k8s.io/api/batch/v1/types.go | 0 - .../batch/v1/types_swagger_doc_generated.go | 0 - .../api/batch/v1/zz_generated.deepcopy.go | 0 - vendor/k8s.io/api/batch/v1beta1/doc.go | 0 - .../k8s.io/api/batch/v1beta1/generated.pb.go | 0 - .../k8s.io/api/batch/v1beta1/generated.proto | 0 - vendor/k8s.io/api/batch/v1beta1/register.go | 0 - vendor/k8s.io/api/batch/v1beta1/types.go | 0 - .../v1beta1/types_swagger_doc_generated.go | 0 - .../batch/v1beta1/zz_generated.deepcopy.go | 0 - .../zz_generated.prerelease-lifecycle.go | 0 - vendor/k8s.io/api/batch/v2alpha1/doc.go | 0 - .../k8s.io/api/batch/v2alpha1/generated.pb.go | 0 - .../k8s.io/api/batch/v2alpha1/generated.proto | 0 - vendor/k8s.io/api/batch/v2alpha1/register.go | 0 - vendor/k8s.io/api/batch/v2alpha1/types.go | 0 - .../v2alpha1/types_swagger_doc_generated.go | 0 - .../batch/v2alpha1/zz_generated.deepcopy.go | 0 - vendor/k8s.io/api/certificates/v1/doc.go | 0 - .../api/certificates/v1/generated.pb.go | 0 - .../api/certificates/v1/generated.proto | 0 - vendor/k8s.io/api/certificates/v1/register.go | 0 - vendor/k8s.io/api/certificates/v1/types.go | 0 - .../v1/types_swagger_doc_generated.go | 0 - .../certificates/v1/zz_generated.deepcopy.go | 0 - vendor/k8s.io/api/certificates/v1beta1/doc.go | 0 - .../api/certificates/v1beta1/generated.pb.go | 0 - .../api/certificates/v1beta1/generated.proto | 0 - .../api/certificates/v1beta1/register.go | 0 - .../k8s.io/api/certificates/v1beta1/types.go | 0 - .../v1beta1/types_swagger_doc_generated.go | 0 - .../v1beta1/zz_generated.deepcopy.go | 0 - .../zz_generated.prerelease-lifecycle.go | 0 - vendor/k8s.io/api/coordination/v1/doc.go | 0 - .../api/coordination/v1/generated.pb.go | 0 - .../api/coordination/v1/generated.proto | 0 - vendor/k8s.io/api/coordination/v1/register.go | 0 - vendor/k8s.io/api/coordination/v1/types.go | 0 - .../v1/types_swagger_doc_generated.go | 0 - .../coordination/v1/zz_generated.deepcopy.go | 0 - vendor/k8s.io/api/coordination/v1beta1/doc.go | 0 - .../api/coordination/v1beta1/generated.pb.go | 0 - .../api/coordination/v1beta1/generated.proto | 0 - .../api/coordination/v1beta1/register.go | 0 - .../k8s.io/api/coordination/v1beta1/types.go | 0 - .../v1beta1/types_swagger_doc_generated.go | 0 - .../v1beta1/zz_generated.deepcopy.go | 0 - .../zz_generated.prerelease-lifecycle.go | 0 - .../api/core/v1/annotation_key_constants.go | 0 - vendor/k8s.io/api/core/v1/doc.go | 0 - vendor/k8s.io/api/core/v1/generated.pb.go | 0 - vendor/k8s.io/api/core/v1/generated.proto | 0 - vendor/k8s.io/api/core/v1/lifecycle.go | 0 - vendor/k8s.io/api/core/v1/objectreference.go | 0 - vendor/k8s.io/api/core/v1/register.go | 0 - vendor/k8s.io/api/core/v1/resource.go | 0 - vendor/k8s.io/api/core/v1/taint.go | 0 - vendor/k8s.io/api/core/v1/toleration.go | 0 - vendor/k8s.io/api/core/v1/types.go | 0 - .../core/v1/types_swagger_doc_generated.go | 0 - .../k8s.io/api/core/v1/well_known_labels.go | 0 - .../k8s.io/api/core/v1/well_known_taints.go | 0 - .../api/core/v1/zz_generated.deepcopy.go | 0 - vendor/k8s.io/api/discovery/v1alpha1/doc.go | 0 - .../api/discovery/v1alpha1/generated.pb.go | 0 - .../api/discovery/v1alpha1/generated.proto | 0 - .../k8s.io/api/discovery/v1alpha1/register.go | 0 - vendor/k8s.io/api/discovery/v1alpha1/types.go | 0 - .../v1alpha1/types_swagger_doc_generated.go | 0 - .../discovery/v1alpha1/well_known_labels.go | 0 - .../v1alpha1/zz_generated.deepcopy.go | 0 - vendor/k8s.io/api/discovery/v1beta1/doc.go | 0 - .../api/discovery/v1beta1/generated.pb.go | 0 - .../api/discovery/v1beta1/generated.proto | 0 - .../k8s.io/api/discovery/v1beta1/register.go | 0 - vendor/k8s.io/api/discovery/v1beta1/types.go | 0 - .../v1beta1/types_swagger_doc_generated.go | 0 - .../discovery/v1beta1/well_known_labels.go | 0 - .../v1beta1/zz_generated.deepcopy.go | 0 - .../zz_generated.prerelease-lifecycle.go | 0 - vendor/k8s.io/api/events/v1/doc.go | 0 - vendor/k8s.io/api/events/v1/generated.pb.go | 0 - vendor/k8s.io/api/events/v1/generated.proto | 0 - vendor/k8s.io/api/events/v1/register.go | 0 - vendor/k8s.io/api/events/v1/types.go | 0 - .../events/v1/types_swagger_doc_generated.go | 0 - .../api/events/v1/zz_generated.deepcopy.go | 0 - vendor/k8s.io/api/events/v1beta1/doc.go | 0 - .../k8s.io/api/events/v1beta1/generated.pb.go | 0 - .../k8s.io/api/events/v1beta1/generated.proto | 0 - vendor/k8s.io/api/events/v1beta1/register.go | 0 - vendor/k8s.io/api/events/v1beta1/types.go | 0 - .../v1beta1/types_swagger_doc_generated.go | 0 - .../events/v1beta1/zz_generated.deepcopy.go | 0 - .../zz_generated.prerelease-lifecycle.go | 0 - vendor/k8s.io/api/extensions/v1beta1/doc.go | 0 - .../api/extensions/v1beta1/generated.pb.go | 0 - .../api/extensions/v1beta1/generated.proto | 0 - .../k8s.io/api/extensions/v1beta1/register.go | 0 - vendor/k8s.io/api/extensions/v1beta1/types.go | 0 - .../v1beta1/types_swagger_doc_generated.go | 0 - .../v1beta1/zz_generated.deepcopy.go | 0 - .../zz_generated.prerelease-lifecycle.go | 0 - vendor/k8s.io/api/flowcontrol/v1alpha1/doc.go | 0 - .../api/flowcontrol/v1alpha1/generated.pb.go | 0 - .../api/flowcontrol/v1alpha1/generated.proto | 0 - .../api/flowcontrol/v1alpha1/register.go | 0 - .../k8s.io/api/flowcontrol/v1alpha1/types.go | 0 - .../v1alpha1/types_swagger_doc_generated.go | 0 - .../v1alpha1/zz_generated.deepcopy.go | 0 - .../zz_generated.prerelease-lifecycle.go | 0 - vendor/k8s.io/api/flowcontrol/v1beta1/doc.go | 0 - .../api/flowcontrol/v1beta1/generated.pb.go | 0 - .../api/flowcontrol/v1beta1/generated.proto | 0 - .../api/flowcontrol/v1beta1/register.go | 0 - .../k8s.io/api/flowcontrol/v1beta1/types.go | 0 - .../v1beta1/types_swagger_doc_generated.go | 0 - .../v1beta1/zz_generated.deepcopy.go | 0 - .../zz_generated.prerelease-lifecycle.go | 0 - vendor/k8s.io/api/networking/v1/doc.go | 0 - .../k8s.io/api/networking/v1/generated.pb.go | 0 - .../k8s.io/api/networking/v1/generated.proto | 0 - vendor/k8s.io/api/networking/v1/register.go | 0 - vendor/k8s.io/api/networking/v1/types.go | 0 - .../v1/types_swagger_doc_generated.go | 0 - .../networking/v1/zz_generated.deepcopy.go | 0 - vendor/k8s.io/api/networking/v1beta1/doc.go | 0 - .../api/networking/v1beta1/generated.pb.go | 0 - .../api/networking/v1beta1/generated.proto | 0 - .../k8s.io/api/networking/v1beta1/register.go | 0 - vendor/k8s.io/api/networking/v1beta1/types.go | 0 - .../v1beta1/types_swagger_doc_generated.go | 0 - .../v1beta1/well_known_annotations.go | 0 - .../v1beta1/zz_generated.deepcopy.go | 0 - .../zz_generated.prerelease-lifecycle.go | 0 - vendor/k8s.io/api/node/v1/doc.go | 0 - vendor/k8s.io/api/node/v1/generated.pb.go | 0 - vendor/k8s.io/api/node/v1/generated.proto | 0 - vendor/k8s.io/api/node/v1/register.go | 0 - vendor/k8s.io/api/node/v1/types.go | 0 - .../node/v1/types_swagger_doc_generated.go | 0 - .../api/node/v1/zz_generated.deepcopy.go | 0 - vendor/k8s.io/api/node/v1alpha1/doc.go | 0 - .../k8s.io/api/node/v1alpha1/generated.pb.go | 0 - .../k8s.io/api/node/v1alpha1/generated.proto | 0 - vendor/k8s.io/api/node/v1alpha1/register.go | 0 - vendor/k8s.io/api/node/v1alpha1/types.go | 0 - .../v1alpha1/types_swagger_doc_generated.go | 0 - .../node/v1alpha1/zz_generated.deepcopy.go | 0 - vendor/k8s.io/api/node/v1beta1/doc.go | 0 - .../k8s.io/api/node/v1beta1/generated.pb.go | 0 - .../k8s.io/api/node/v1beta1/generated.proto | 0 - vendor/k8s.io/api/node/v1beta1/register.go | 0 - vendor/k8s.io/api/node/v1beta1/types.go | 0 - .../v1beta1/types_swagger_doc_generated.go | 0 - .../api/node/v1beta1/zz_generated.deepcopy.go | 0 - .../zz_generated.prerelease-lifecycle.go | 0 - vendor/k8s.io/api/policy/v1beta1/doc.go | 0 - .../k8s.io/api/policy/v1beta1/generated.pb.go | 0 - .../k8s.io/api/policy/v1beta1/generated.proto | 0 - vendor/k8s.io/api/policy/v1beta1/register.go | 0 - vendor/k8s.io/api/policy/v1beta1/types.go | 0 - .../v1beta1/types_swagger_doc_generated.go | 0 - .../policy/v1beta1/zz_generated.deepcopy.go | 0 - .../zz_generated.prerelease-lifecycle.go | 0 - vendor/k8s.io/api/rbac/v1/doc.go | 0 - vendor/k8s.io/api/rbac/v1/generated.pb.go | 0 - vendor/k8s.io/api/rbac/v1/generated.proto | 0 - vendor/k8s.io/api/rbac/v1/register.go | 0 - vendor/k8s.io/api/rbac/v1/types.go | 0 - .../rbac/v1/types_swagger_doc_generated.go | 0 - .../api/rbac/v1/zz_generated.deepcopy.go | 0 - vendor/k8s.io/api/rbac/v1alpha1/doc.go | 0 - .../k8s.io/api/rbac/v1alpha1/generated.pb.go | 0 - .../k8s.io/api/rbac/v1alpha1/generated.proto | 0 - vendor/k8s.io/api/rbac/v1alpha1/register.go | 0 - vendor/k8s.io/api/rbac/v1alpha1/types.go | 0 - .../v1alpha1/types_swagger_doc_generated.go | 0 - .../rbac/v1alpha1/zz_generated.deepcopy.go | 0 - vendor/k8s.io/api/rbac/v1beta1/doc.go | 0 - .../k8s.io/api/rbac/v1beta1/generated.pb.go | 0 - .../k8s.io/api/rbac/v1beta1/generated.proto | 0 - vendor/k8s.io/api/rbac/v1beta1/register.go | 0 - vendor/k8s.io/api/rbac/v1beta1/types.go | 0 - .../v1beta1/types_swagger_doc_generated.go | 0 - .../api/rbac/v1beta1/zz_generated.deepcopy.go | 0 - .../zz_generated.prerelease-lifecycle.go | 0 - vendor/k8s.io/api/scheduling/v1/doc.go | 0 - .../k8s.io/api/scheduling/v1/generated.pb.go | 0 - .../k8s.io/api/scheduling/v1/generated.proto | 0 - vendor/k8s.io/api/scheduling/v1/register.go | 0 - vendor/k8s.io/api/scheduling/v1/types.go | 0 - .../v1/types_swagger_doc_generated.go | 0 - .../scheduling/v1/zz_generated.deepcopy.go | 0 - vendor/k8s.io/api/scheduling/v1alpha1/doc.go | 0 - .../api/scheduling/v1alpha1/generated.pb.go | 0 - .../api/scheduling/v1alpha1/generated.proto | 0 - .../api/scheduling/v1alpha1/register.go | 0 - .../k8s.io/api/scheduling/v1alpha1/types.go | 0 - .../v1alpha1/types_swagger_doc_generated.go | 0 - .../v1alpha1/zz_generated.deepcopy.go | 0 - vendor/k8s.io/api/scheduling/v1beta1/doc.go | 0 - .../api/scheduling/v1beta1/generated.pb.go | 0 - .../api/scheduling/v1beta1/generated.proto | 0 - .../k8s.io/api/scheduling/v1beta1/register.go | 0 - vendor/k8s.io/api/scheduling/v1beta1/types.go | 0 - .../v1beta1/types_swagger_doc_generated.go | 0 - .../v1beta1/zz_generated.deepcopy.go | 0 - .../zz_generated.prerelease-lifecycle.go | 0 - vendor/k8s.io/api/storage/v1/doc.go | 0 - vendor/k8s.io/api/storage/v1/generated.pb.go | 0 - vendor/k8s.io/api/storage/v1/generated.proto | 0 - vendor/k8s.io/api/storage/v1/register.go | 0 - vendor/k8s.io/api/storage/v1/types.go | 0 - .../storage/v1/types_swagger_doc_generated.go | 0 - .../api/storage/v1/zz_generated.deepcopy.go | 0 - vendor/k8s.io/api/storage/v1alpha1/doc.go | 0 - .../api/storage/v1alpha1/generated.pb.go | 0 - .../api/storage/v1alpha1/generated.proto | 0 - .../k8s.io/api/storage/v1alpha1/register.go | 0 - vendor/k8s.io/api/storage/v1alpha1/types.go | 0 - .../v1alpha1/types_swagger_doc_generated.go | 0 - .../storage/v1alpha1/zz_generated.deepcopy.go | 0 - vendor/k8s.io/api/storage/v1beta1/doc.go | 0 - .../api/storage/v1beta1/generated.pb.go | 0 - .../api/storage/v1beta1/generated.proto | 0 - vendor/k8s.io/api/storage/v1beta1/register.go | 0 - vendor/k8s.io/api/storage/v1beta1/types.go | 0 - .../v1beta1/types_swagger_doc_generated.go | 0 - .../storage/v1beta1/zz_generated.deepcopy.go | 0 - .../zz_generated.prerelease-lifecycle.go | 0 - vendor/k8s.io/apimachinery/LICENSE | 0 - .../k8s.io/apimachinery/pkg/api/errors/OWNERS | 0 - .../k8s.io/apimachinery/pkg/api/errors/doc.go | 0 - .../apimachinery/pkg/api/errors/errors.go | 0 - .../k8s.io/apimachinery/pkg/api/meta/OWNERS | 0 - .../apimachinery/pkg/api/meta/conditions.go | 0 - .../k8s.io/apimachinery/pkg/api/meta/doc.go | 0 - .../apimachinery/pkg/api/meta/errors.go | 0 - .../pkg/api/meta/firsthit_restmapper.go | 0 - .../k8s.io/apimachinery/pkg/api/meta/help.go | 0 - .../apimachinery/pkg/api/meta/interfaces.go | 0 - .../k8s.io/apimachinery/pkg/api/meta/lazy.go | 0 - .../k8s.io/apimachinery/pkg/api/meta/meta.go | 0 - .../pkg/api/meta/multirestmapper.go | 0 - .../apimachinery/pkg/api/meta/priority.go | 0 - .../apimachinery/pkg/api/meta/restmapper.go | 0 - .../apimachinery/pkg/api/resource/OWNERS | 0 - .../apimachinery/pkg/api/resource/amount.go | 0 - .../pkg/api/resource/generated.pb.go | 0 - .../pkg/api/resource/generated.proto | 0 - .../apimachinery/pkg/api/resource/math.go | 0 - .../apimachinery/pkg/api/resource/quantity.go | 0 - .../pkg/api/resource/quantity_proto.go | 0 - .../pkg/api/resource/scale_int.go | 0 - .../apimachinery/pkg/api/resource/suffix.go | 0 - .../pkg/api/resource/zz_generated.deepcopy.go | 0 - .../pkg/apis/meta/internalversion/doc.go | 0 - .../pkg/apis/meta/internalversion/register.go | 0 - .../pkg/apis/meta/internalversion/types.go | 0 - .../zz_generated.conversion.go | 0 - .../internalversion/zz_generated.deepcopy.go | 0 - .../apimachinery/pkg/apis/meta/v1/OWNERS | 0 - .../pkg/apis/meta/v1/controller_ref.go | 0 - .../pkg/apis/meta/v1/conversion.go | 0 - .../apimachinery/pkg/apis/meta/v1/deepcopy.go | 0 - .../apimachinery/pkg/apis/meta/v1/doc.go | 0 - .../apimachinery/pkg/apis/meta/v1/duration.go | 0 - .../pkg/apis/meta/v1/generated.pb.go | 0 - .../pkg/apis/meta/v1/generated.proto | 0 - .../pkg/apis/meta/v1/group_version.go | 0 - .../apimachinery/pkg/apis/meta/v1/helpers.go | 0 - .../apimachinery/pkg/apis/meta/v1/labels.go | 0 - .../apimachinery/pkg/apis/meta/v1/meta.go | 0 - .../pkg/apis/meta/v1/micro_time.go | 0 - .../pkg/apis/meta/v1/micro_time_fuzz.go | 0 - .../pkg/apis/meta/v1/micro_time_proto.go | 0 - .../apimachinery/pkg/apis/meta/v1/register.go | 0 - .../apimachinery/pkg/apis/meta/v1/time.go | 0 - .../pkg/apis/meta/v1/time_fuzz.go | 0 - .../pkg/apis/meta/v1/time_proto.go | 0 - .../apimachinery/pkg/apis/meta/v1/types.go | 0 - .../meta/v1/types_swagger_doc_generated.go | 0 - .../pkg/apis/meta/v1/unstructured/helpers.go | 0 - .../apis/meta/v1/unstructured/unstructured.go | 0 - .../meta/v1/unstructured/unstructured_list.go | 0 - .../v1/unstructured/zz_generated.deepcopy.go | 0 - .../apimachinery/pkg/apis/meta/v1/watch.go | 0 - .../apis/meta/v1/zz_generated.conversion.go | 0 - .../pkg/apis/meta/v1/zz_generated.deepcopy.go | 0 - .../pkg/apis/meta/v1/zz_generated.defaults.go | 0 - .../pkg/apis/meta/v1beta1/conversion.go | 0 - .../pkg/apis/meta/v1beta1/deepcopy.go | 0 - .../apimachinery/pkg/apis/meta/v1beta1/doc.go | 0 - .../pkg/apis/meta/v1beta1/generated.pb.go | 0 - .../pkg/apis/meta/v1beta1/generated.proto | 0 - .../pkg/apis/meta/v1beta1/register.go | 0 - .../pkg/apis/meta/v1beta1/types.go | 0 - .../v1beta1/types_swagger_doc_generated.go | 0 - .../meta/v1beta1/zz_generated.deepcopy.go | 0 - .../meta/v1beta1/zz_generated.defaults.go | 0 - .../apimachinery/pkg/conversion/converter.go | 0 - .../apimachinery/pkg/conversion/deep_equal.go | 0 - .../k8s.io/apimachinery/pkg/conversion/doc.go | 0 - .../apimachinery/pkg/conversion/helper.go | 0 - .../pkg/conversion/queryparams/convert.go | 0 - .../pkg/conversion/queryparams/doc.go | 0 - vendor/k8s.io/apimachinery/pkg/fields/doc.go | 0 - .../k8s.io/apimachinery/pkg/fields/fields.go | 0 - .../apimachinery/pkg/fields/requirements.go | 0 - .../apimachinery/pkg/fields/selector.go | 0 - vendor/k8s.io/apimachinery/pkg/labels/doc.go | 0 - .../k8s.io/apimachinery/pkg/labels/labels.go | 0 - .../apimachinery/pkg/labels/selector.go | 0 - .../pkg/labels/zz_generated.deepcopy.go | 0 - .../k8s.io/apimachinery/pkg/runtime/codec.go | 0 - .../apimachinery/pkg/runtime/codec_check.go | 0 - .../apimachinery/pkg/runtime/conversion.go | 0 - .../apimachinery/pkg/runtime/converter.go | 0 - vendor/k8s.io/apimachinery/pkg/runtime/doc.go | 0 - .../apimachinery/pkg/runtime/embedded.go | 0 - .../k8s.io/apimachinery/pkg/runtime/error.go | 0 - .../apimachinery/pkg/runtime/extension.go | 0 - .../apimachinery/pkg/runtime/generated.pb.go | 0 - .../apimachinery/pkg/runtime/generated.proto | 0 - .../k8s.io/apimachinery/pkg/runtime/helper.go | 0 - .../apimachinery/pkg/runtime/interfaces.go | 0 - .../k8s.io/apimachinery/pkg/runtime/mapper.go | 0 - .../apimachinery/pkg/runtime/negotiate.go | 0 - .../apimachinery/pkg/runtime/register.go | 0 - .../pkg/runtime/schema/generated.pb.go | 0 - .../pkg/runtime/schema/generated.proto | 0 - .../pkg/runtime/schema/group_version.go | 0 - .../pkg/runtime/schema/interfaces.go | 0 - .../k8s.io/apimachinery/pkg/runtime/scheme.go | 0 - .../pkg/runtime/scheme_builder.go | 0 - .../pkg/runtime/serializer/codec_factory.go | 0 - .../pkg/runtime/serializer/json/json.go | 0 - .../pkg/runtime/serializer/json/meta.go | 0 - .../runtime/serializer/negotiated_codec.go | 0 - .../pkg/runtime/serializer/protobuf/doc.go | 0 - .../runtime/serializer/protobuf/protobuf.go | 0 - .../serializer/recognizer/recognizer.go | 0 - .../runtime/serializer/streaming/streaming.go | 0 - .../serializer/versioning/versioning.go | 0 - .../pkg/runtime/swagger_doc_generator.go | 0 - .../k8s.io/apimachinery/pkg/runtime/types.go | 0 - .../apimachinery/pkg/runtime/types_proto.go | 0 - .../pkg/runtime/zz_generated.deepcopy.go | 0 - .../apimachinery/pkg/selection/operator.go | 0 - vendor/k8s.io/apimachinery/pkg/types/doc.go | 0 - .../apimachinery/pkg/types/namespacedname.go | 0 - .../k8s.io/apimachinery/pkg/types/nodename.go | 0 - vendor/k8s.io/apimachinery/pkg/types/patch.go | 0 - vendor/k8s.io/apimachinery/pkg/types/uid.go | 0 - .../apimachinery/pkg/util/cache/expiring.go | 0 - .../pkg/util/cache/lruexpirecache.go | 0 - .../apimachinery/pkg/util/clock/clock.go | 0 - .../k8s.io/apimachinery/pkg/util/diff/diff.go | 0 - .../apimachinery/pkg/util/errors/doc.go | 0 - .../apimachinery/pkg/util/errors/errors.go | 0 - .../apimachinery/pkg/util/framer/framer.go | 0 - .../pkg/util/intstr/generated.pb.go | 0 - .../pkg/util/intstr/generated.proto | 0 - .../pkg/util/intstr/instr_fuzz.go | 0 - .../apimachinery/pkg/util/intstr/intstr.go | 0 - .../k8s.io/apimachinery/pkg/util/json/json.go | 0 - .../pkg/util/naming/from_stack.go | 0 - .../k8s.io/apimachinery/pkg/util/net/http.go | 0 - .../apimachinery/pkg/util/net/interface.go | 0 - .../apimachinery/pkg/util/net/port_range.go | 0 - .../apimachinery/pkg/util/net/port_split.go | 0 - .../k8s.io/apimachinery/pkg/util/net/util.go | 0 - .../apimachinery/pkg/util/runtime/runtime.go | 0 - .../k8s.io/apimachinery/pkg/util/sets/byte.go | 0 - .../k8s.io/apimachinery/pkg/util/sets/doc.go | 0 - .../apimachinery/pkg/util/sets/empty.go | 0 - .../k8s.io/apimachinery/pkg/util/sets/int.go | 0 - .../apimachinery/pkg/util/sets/int32.go | 0 - .../apimachinery/pkg/util/sets/int64.go | 0 - .../apimachinery/pkg/util/sets/string.go | 0 - .../pkg/util/validation/field/errors.go | 0 - .../pkg/util/validation/field/path.go | 0 - .../pkg/util/validation/validation.go | 0 - .../k8s.io/apimachinery/pkg/util/wait/doc.go | 0 - .../k8s.io/apimachinery/pkg/util/wait/wait.go | 0 - .../apimachinery/pkg/util/yaml/decoder.go | 0 - vendor/k8s.io/apimachinery/pkg/version/doc.go | 0 - .../apimachinery/pkg/version/helpers.go | 0 - .../k8s.io/apimachinery/pkg/version/types.go | 0 - vendor/k8s.io/apimachinery/pkg/watch/doc.go | 0 - .../k8s.io/apimachinery/pkg/watch/filter.go | 0 - vendor/k8s.io/apimachinery/pkg/watch/mux.go | 0 - .../apimachinery/pkg/watch/streamwatcher.go | 0 - vendor/k8s.io/apimachinery/pkg/watch/watch.go | 0 - .../pkg/watch/zz_generated.deepcopy.go | 0 - .../forked/golang/reflect/deep_equal.go | 0 - vendor/k8s.io/client-go/LICENSE | 0 - .../client-go/discovery/discovery_client.go | 0 - vendor/k8s.io/client-go/discovery/doc.go | 0 - vendor/k8s.io/client-go/discovery/helper.go | 0 - .../admissionregistration/interface.go | 0 - .../admissionregistration/v1/interface.go | 0 - .../v1/mutatingwebhookconfiguration.go | 0 - .../v1/validatingwebhookconfiguration.go | 0 - .../v1beta1/interface.go | 0 - .../v1beta1/mutatingwebhookconfiguration.go | 0 - .../v1beta1/validatingwebhookconfiguration.go | 0 - .../informers/apiserverinternal/interface.go | 0 - .../apiserverinternal/v1alpha1/interface.go | 0 - .../v1alpha1/storageversion.go | 0 - .../client-go/informers/apps/interface.go | 0 - .../informers/apps/v1/controllerrevision.go | 0 - .../client-go/informers/apps/v1/daemonset.go | 0 - .../client-go/informers/apps/v1/deployment.go | 0 - .../client-go/informers/apps/v1/interface.go | 0 - .../client-go/informers/apps/v1/replicaset.go | 0 - .../informers/apps/v1/statefulset.go | 0 - .../apps/v1beta1/controllerrevision.go | 0 - .../informers/apps/v1beta1/deployment.go | 0 - .../informers/apps/v1beta1/interface.go | 0 - .../informers/apps/v1beta1/statefulset.go | 0 - .../apps/v1beta2/controllerrevision.go | 0 - .../informers/apps/v1beta2/daemonset.go | 0 - .../informers/apps/v1beta2/deployment.go | 0 - .../informers/apps/v1beta2/interface.go | 0 - .../informers/apps/v1beta2/replicaset.go | 0 - .../informers/apps/v1beta2/statefulset.go | 0 - .../informers/autoscaling/interface.go | 0 - .../autoscaling/v1/horizontalpodautoscaler.go | 0 - .../informers/autoscaling/v1/interface.go | 0 - .../v2beta1/horizontalpodautoscaler.go | 0 - .../autoscaling/v2beta1/interface.go | 0 - .../v2beta2/horizontalpodautoscaler.go | 0 - .../autoscaling/v2beta2/interface.go | 0 - .../client-go/informers/batch/interface.go | 0 - .../client-go/informers/batch/v1/interface.go | 0 - .../client-go/informers/batch/v1/job.go | 0 - .../informers/batch/v1beta1/cronjob.go | 0 - .../informers/batch/v1beta1/interface.go | 0 - .../informers/batch/v2alpha1/cronjob.go | 0 - .../informers/batch/v2alpha1/interface.go | 0 - .../informers/certificates/interface.go | 0 - .../v1/certificatesigningrequest.go | 0 - .../informers/certificates/v1/interface.go | 0 - .../v1beta1/certificatesigningrequest.go | 0 - .../certificates/v1beta1/interface.go | 0 - .../informers/coordination/interface.go | 0 - .../informers/coordination/v1/interface.go | 0 - .../informers/coordination/v1/lease.go | 0 - .../coordination/v1beta1/interface.go | 0 - .../informers/coordination/v1beta1/lease.go | 0 - .../client-go/informers/core/interface.go | 0 - .../informers/core/v1/componentstatus.go | 0 - .../client-go/informers/core/v1/configmap.go | 0 - .../client-go/informers/core/v1/endpoints.go | 0 - .../client-go/informers/core/v1/event.go | 0 - .../client-go/informers/core/v1/interface.go | 0 - .../client-go/informers/core/v1/limitrange.go | 0 - .../client-go/informers/core/v1/namespace.go | 0 - .../client-go/informers/core/v1/node.go | 0 - .../informers/core/v1/persistentvolume.go | 0 - .../core/v1/persistentvolumeclaim.go | 0 - .../k8s.io/client-go/informers/core/v1/pod.go | 0 - .../informers/core/v1/podtemplate.go | 0 - .../core/v1/replicationcontroller.go | 0 - .../informers/core/v1/resourcequota.go | 0 - .../client-go/informers/core/v1/secret.go | 0 - .../client-go/informers/core/v1/service.go | 0 - .../informers/core/v1/serviceaccount.go | 0 - .../informers/discovery/interface.go | 0 - .../discovery/v1alpha1/endpointslice.go | 0 - .../informers/discovery/v1alpha1/interface.go | 0 - .../discovery/v1beta1/endpointslice.go | 0 - .../informers/discovery/v1beta1/interface.go | 0 - .../client-go/informers/events/interface.go | 0 - .../client-go/informers/events/v1/event.go | 0 - .../informers/events/v1/interface.go | 0 - .../informers/events/v1beta1/event.go | 0 - .../informers/events/v1beta1/interface.go | 0 - .../informers/extensions/interface.go | 0 - .../informers/extensions/v1beta1/daemonset.go | 0 - .../extensions/v1beta1/deployment.go | 0 - .../informers/extensions/v1beta1/ingress.go | 0 - .../informers/extensions/v1beta1/interface.go | 0 - .../extensions/v1beta1/networkpolicy.go | 0 - .../extensions/v1beta1/podsecuritypolicy.go | 0 - .../extensions/v1beta1/replicaset.go | 0 - vendor/k8s.io/client-go/informers/factory.go | 0 - .../informers/flowcontrol/interface.go | 0 - .../flowcontrol/v1alpha1/flowschema.go | 0 - .../flowcontrol/v1alpha1/interface.go | 0 - .../v1alpha1/prioritylevelconfiguration.go | 0 - .../flowcontrol/v1beta1/flowschema.go | 0 - .../flowcontrol/v1beta1/interface.go | 0 - .../v1beta1/prioritylevelconfiguration.go | 0 - vendor/k8s.io/client-go/informers/generic.go | 0 - .../internalinterfaces/factory_interfaces.go | 0 - .../informers/networking/interface.go | 0 - .../informers/networking/v1/ingress.go | 0 - .../informers/networking/v1/ingressclass.go | 0 - .../informers/networking/v1/interface.go | 0 - .../informers/networking/v1/networkpolicy.go | 0 - .../informers/networking/v1beta1/ingress.go | 0 - .../networking/v1beta1/ingressclass.go | 0 - .../informers/networking/v1beta1/interface.go | 0 - .../client-go/informers/node/interface.go | 0 - .../client-go/informers/node/v1/interface.go | 0 - .../informers/node/v1/runtimeclass.go | 0 - .../informers/node/v1alpha1/interface.go | 0 - .../informers/node/v1alpha1/runtimeclass.go | 0 - .../informers/node/v1beta1/interface.go | 0 - .../informers/node/v1beta1/runtimeclass.go | 0 - .../client-go/informers/policy/interface.go | 0 - .../informers/policy/v1beta1/interface.go | 0 - .../policy/v1beta1/poddisruptionbudget.go | 0 - .../policy/v1beta1/podsecuritypolicy.go | 0 - .../client-go/informers/rbac/interface.go | 0 - .../informers/rbac/v1/clusterrole.go | 0 - .../informers/rbac/v1/clusterrolebinding.go | 0 - .../client-go/informers/rbac/v1/interface.go | 0 - .../client-go/informers/rbac/v1/role.go | 0 - .../informers/rbac/v1/rolebinding.go | 0 - .../informers/rbac/v1alpha1/clusterrole.go | 0 - .../rbac/v1alpha1/clusterrolebinding.go | 0 - .../informers/rbac/v1alpha1/interface.go | 0 - .../client-go/informers/rbac/v1alpha1/role.go | 0 - .../informers/rbac/v1alpha1/rolebinding.go | 0 - .../informers/rbac/v1beta1/clusterrole.go | 0 - .../rbac/v1beta1/clusterrolebinding.go | 0 - .../informers/rbac/v1beta1/interface.go | 0 - .../client-go/informers/rbac/v1beta1/role.go | 0 - .../informers/rbac/v1beta1/rolebinding.go | 0 - .../informers/scheduling/interface.go | 0 - .../informers/scheduling/v1/interface.go | 0 - .../informers/scheduling/v1/priorityclass.go | 0 - .../scheduling/v1alpha1/interface.go | 0 - .../scheduling/v1alpha1/priorityclass.go | 0 - .../informers/scheduling/v1beta1/interface.go | 0 - .../scheduling/v1beta1/priorityclass.go | 0 - .../client-go/informers/storage/interface.go | 0 - .../informers/storage/v1/csidriver.go | 0 - .../client-go/informers/storage/v1/csinode.go | 0 - .../informers/storage/v1/interface.go | 0 - .../informers/storage/v1/storageclass.go | 0 - .../informers/storage/v1/volumeattachment.go | 0 - .../storage/v1alpha1/csistoragecapacity.go | 0 - .../informers/storage/v1alpha1/interface.go | 0 - .../storage/v1alpha1/volumeattachment.go | 0 - .../informers/storage/v1beta1/csidriver.go | 0 - .../informers/storage/v1beta1/csinode.go | 0 - .../informers/storage/v1beta1/interface.go | 0 - .../informers/storage/v1beta1/storageclass.go | 0 - .../storage/v1beta1/volumeattachment.go | 0 - .../k8s.io/client-go/kubernetes/clientset.go | 0 - vendor/k8s.io/client-go/kubernetes/doc.go | 0 - vendor/k8s.io/client-go/kubernetes/import.go | 0 - .../k8s.io/client-go/kubernetes/scheme/doc.go | 0 - .../client-go/kubernetes/scheme/register.go | 0 - .../v1/admissionregistration_client.go | 0 - .../typed/admissionregistration/v1/doc.go | 0 - .../v1/generated_expansion.go | 0 - .../v1/mutatingwebhookconfiguration.go | 0 - .../v1/validatingwebhookconfiguration.go | 0 - .../v1beta1/admissionregistration_client.go | 0 - .../admissionregistration/v1beta1/doc.go | 0 - .../v1beta1/generated_expansion.go | 0 - .../v1beta1/mutatingwebhookconfiguration.go | 0 - .../v1beta1/validatingwebhookconfiguration.go | 0 - .../v1alpha1/apiserverinternal_client.go | 0 - .../typed/apiserverinternal/v1alpha1/doc.go | 0 - .../v1alpha1/generated_expansion.go | 0 - .../v1alpha1/storageversion.go | 0 - .../kubernetes/typed/apps/v1/apps_client.go | 0 - .../typed/apps/v1/controllerrevision.go | 0 - .../kubernetes/typed/apps/v1/daemonset.go | 0 - .../kubernetes/typed/apps/v1/deployment.go | 0 - .../client-go/kubernetes/typed/apps/v1/doc.go | 0 - .../typed/apps/v1/generated_expansion.go | 0 - .../kubernetes/typed/apps/v1/replicaset.go | 0 - .../kubernetes/typed/apps/v1/statefulset.go | 0 - .../typed/apps/v1beta1/apps_client.go | 0 - .../typed/apps/v1beta1/controllerrevision.go | 0 - .../typed/apps/v1beta1/deployment.go | 0 - .../kubernetes/typed/apps/v1beta1/doc.go | 0 - .../typed/apps/v1beta1/generated_expansion.go | 0 - .../typed/apps/v1beta1/statefulset.go | 0 - .../typed/apps/v1beta2/apps_client.go | 0 - .../typed/apps/v1beta2/controllerrevision.go | 0 - .../typed/apps/v1beta2/daemonset.go | 0 - .../typed/apps/v1beta2/deployment.go | 0 - .../kubernetes/typed/apps/v1beta2/doc.go | 0 - .../typed/apps/v1beta2/generated_expansion.go | 0 - .../typed/apps/v1beta2/replicaset.go | 0 - .../typed/apps/v1beta2/statefulset.go | 0 - .../v1/authentication_client.go | 0 - .../kubernetes/typed/authentication/v1/doc.go | 0 - .../authentication/v1/generated_expansion.go | 0 - .../typed/authentication/v1/tokenreview.go | 0 - .../v1beta1/authentication_client.go | 0 - .../typed/authentication/v1beta1/doc.go | 0 - .../v1beta1/generated_expansion.go | 0 - .../authentication/v1beta1/tokenreview.go | 0 - .../authorization/v1/authorization_client.go | 0 - .../kubernetes/typed/authorization/v1/doc.go | 0 - .../authorization/v1/generated_expansion.go | 0 - .../v1/localsubjectaccessreview.go | 0 - .../v1/selfsubjectaccessreview.go | 0 - .../v1/selfsubjectrulesreview.go | 0 - .../authorization/v1/subjectaccessreview.go | 0 - .../v1beta1/authorization_client.go | 0 - .../typed/authorization/v1beta1/doc.go | 0 - .../v1beta1/generated_expansion.go | 0 - .../v1beta1/localsubjectaccessreview.go | 0 - .../v1beta1/selfsubjectaccessreview.go | 0 - .../v1beta1/selfsubjectrulesreview.go | 0 - .../v1beta1/subjectaccessreview.go | 0 - .../autoscaling/v1/autoscaling_client.go | 0 - .../kubernetes/typed/autoscaling/v1/doc.go | 0 - .../autoscaling/v1/generated_expansion.go | 0 - .../autoscaling/v1/horizontalpodautoscaler.go | 0 - .../autoscaling/v2beta1/autoscaling_client.go | 0 - .../typed/autoscaling/v2beta1/doc.go | 0 - .../v2beta1/generated_expansion.go | 0 - .../v2beta1/horizontalpodautoscaler.go | 0 - .../autoscaling/v2beta2/autoscaling_client.go | 0 - .../typed/autoscaling/v2beta2/doc.go | 0 - .../v2beta2/generated_expansion.go | 0 - .../v2beta2/horizontalpodautoscaler.go | 0 - .../kubernetes/typed/batch/v1/batch_client.go | 0 - .../kubernetes/typed/batch/v1/doc.go | 0 - .../typed/batch/v1/generated_expansion.go | 0 - .../kubernetes/typed/batch/v1/job.go | 0 - .../typed/batch/v1beta1/batch_client.go | 0 - .../kubernetes/typed/batch/v1beta1/cronjob.go | 0 - .../kubernetes/typed/batch/v1beta1/doc.go | 0 - .../batch/v1beta1/generated_expansion.go | 0 - .../typed/batch/v2alpha1/batch_client.go | 0 - .../typed/batch/v2alpha1/cronjob.go | 0 - .../kubernetes/typed/batch/v2alpha1/doc.go | 0 - .../batch/v2alpha1/generated_expansion.go | 0 - .../certificates/v1/certificates_client.go | 0 - .../v1/certificatesigningrequest.go | 0 - .../kubernetes/typed/certificates/v1/doc.go | 0 - .../certificates/v1/generated_expansion.go | 0 - .../v1beta1/certificates_client.go | 0 - .../v1beta1/certificatesigningrequest.go | 0 - .../certificatesigningrequest_expansion.go | 0 - .../typed/certificates/v1beta1/doc.go | 0 - .../v1beta1/generated_expansion.go | 0 - .../coordination/v1/coordination_client.go | 0 - .../kubernetes/typed/coordination/v1/doc.go | 0 - .../coordination/v1/generated_expansion.go | 0 - .../kubernetes/typed/coordination/v1/lease.go | 0 - .../v1beta1/coordination_client.go | 0 - .../typed/coordination/v1beta1/doc.go | 0 - .../v1beta1/generated_expansion.go | 0 - .../typed/coordination/v1beta1/lease.go | 0 - .../typed/core/v1/componentstatus.go | 0 - .../kubernetes/typed/core/v1/configmap.go | 0 - .../kubernetes/typed/core/v1/core_client.go | 0 - .../client-go/kubernetes/typed/core/v1/doc.go | 0 - .../kubernetes/typed/core/v1/endpoints.go | 0 - .../kubernetes/typed/core/v1/event.go | 0 - .../typed/core/v1/event_expansion.go | 0 - .../typed/core/v1/generated_expansion.go | 0 - .../kubernetes/typed/core/v1/limitrange.go | 0 - .../kubernetes/typed/core/v1/namespace.go | 0 - .../typed/core/v1/namespace_expansion.go | 0 - .../kubernetes/typed/core/v1/node.go | 0 - .../typed/core/v1/node_expansion.go | 0 - .../typed/core/v1/persistentvolume.go | 0 - .../typed/core/v1/persistentvolumeclaim.go | 0 - .../client-go/kubernetes/typed/core/v1/pod.go | 0 - .../kubernetes/typed/core/v1/pod_expansion.go | 0 - .../kubernetes/typed/core/v1/podtemplate.go | 0 - .../typed/core/v1/replicationcontroller.go | 0 - .../kubernetes/typed/core/v1/resourcequota.go | 0 - .../kubernetes/typed/core/v1/secret.go | 0 - .../kubernetes/typed/core/v1/service.go | 0 - .../typed/core/v1/service_expansion.go | 0 - .../typed/core/v1/serviceaccount.go | 0 - .../discovery/v1alpha1/discovery_client.go | 0 - .../typed/discovery/v1alpha1/doc.go | 0 - .../typed/discovery/v1alpha1/endpointslice.go | 0 - .../discovery/v1alpha1/generated_expansion.go | 0 - .../discovery/v1beta1/discovery_client.go | 0 - .../kubernetes/typed/discovery/v1beta1/doc.go | 0 - .../typed/discovery/v1beta1/endpointslice.go | 0 - .../discovery/v1beta1/generated_expansion.go | 0 - .../kubernetes/typed/events/v1/doc.go | 0 - .../kubernetes/typed/events/v1/event.go | 0 - .../typed/events/v1/events_client.go | 0 - .../typed/events/v1/generated_expansion.go | 0 - .../kubernetes/typed/events/v1beta1/doc.go | 0 - .../kubernetes/typed/events/v1beta1/event.go | 0 - .../typed/events/v1beta1/event_expansion.go | 0 - .../typed/events/v1beta1/events_client.go | 0 - .../events/v1beta1/generated_expansion.go | 0 - .../typed/extensions/v1beta1/daemonset.go | 0 - .../typed/extensions/v1beta1/deployment.go | 0 - .../v1beta1/deployment_expansion.go | 0 - .../typed/extensions/v1beta1/doc.go | 0 - .../extensions/v1beta1/extensions_client.go | 0 - .../extensions/v1beta1/generated_expansion.go | 0 - .../typed/extensions/v1beta1/ingress.go | 0 - .../typed/extensions/v1beta1/networkpolicy.go | 0 - .../extensions/v1beta1/podsecuritypolicy.go | 0 - .../typed/extensions/v1beta1/replicaset.go | 0 - .../typed/flowcontrol/v1alpha1/doc.go | 0 - .../v1alpha1/flowcontrol_client.go | 0 - .../typed/flowcontrol/v1alpha1/flowschema.go | 0 - .../v1alpha1/generated_expansion.go | 0 - .../v1alpha1/prioritylevelconfiguration.go | 0 - .../typed/flowcontrol/v1beta1/doc.go | 0 - .../flowcontrol/v1beta1/flowcontrol_client.go | 0 - .../typed/flowcontrol/v1beta1/flowschema.go | 0 - .../v1beta1/generated_expansion.go | 0 - .../v1beta1/prioritylevelconfiguration.go | 0 - .../kubernetes/typed/networking/v1/doc.go | 0 - .../networking/v1/generated_expansion.go | 0 - .../kubernetes/typed/networking/v1/ingress.go | 0 - .../typed/networking/v1/ingressclass.go | 0 - .../typed/networking/v1/networking_client.go | 0 - .../typed/networking/v1/networkpolicy.go | 0 - .../typed/networking/v1beta1/doc.go | 0 - .../networking/v1beta1/generated_expansion.go | 0 - .../typed/networking/v1beta1/ingress.go | 0 - .../typed/networking/v1beta1/ingressclass.go | 0 - .../networking/v1beta1/networking_client.go | 0 - .../client-go/kubernetes/typed/node/v1/doc.go | 0 - .../typed/node/v1/generated_expansion.go | 0 - .../kubernetes/typed/node/v1/node_client.go | 0 - .../kubernetes/typed/node/v1/runtimeclass.go | 0 - .../kubernetes/typed/node/v1alpha1/doc.go | 0 - .../node/v1alpha1/generated_expansion.go | 0 - .../typed/node/v1alpha1/node_client.go | 0 - .../typed/node/v1alpha1/runtimeclass.go | 0 - .../kubernetes/typed/node/v1beta1/doc.go | 0 - .../typed/node/v1beta1/generated_expansion.go | 0 - .../typed/node/v1beta1/node_client.go | 0 - .../typed/node/v1beta1/runtimeclass.go | 0 - .../kubernetes/typed/policy/v1beta1/doc.go | 0 - .../typed/policy/v1beta1/eviction.go | 0 - .../policy/v1beta1/eviction_expansion.go | 0 - .../policy/v1beta1/generated_expansion.go | 0 - .../policy/v1beta1/poddisruptionbudget.go | 0 - .../typed/policy/v1beta1/podsecuritypolicy.go | 0 - .../typed/policy/v1beta1/policy_client.go | 0 - .../kubernetes/typed/rbac/v1/clusterrole.go | 0 - .../typed/rbac/v1/clusterrolebinding.go | 0 - .../client-go/kubernetes/typed/rbac/v1/doc.go | 0 - .../typed/rbac/v1/generated_expansion.go | 0 - .../kubernetes/typed/rbac/v1/rbac_client.go | 0 - .../kubernetes/typed/rbac/v1/role.go | 0 - .../kubernetes/typed/rbac/v1/rolebinding.go | 0 - .../typed/rbac/v1alpha1/clusterrole.go | 0 - .../typed/rbac/v1alpha1/clusterrolebinding.go | 0 - .../kubernetes/typed/rbac/v1alpha1/doc.go | 0 - .../rbac/v1alpha1/generated_expansion.go | 0 - .../typed/rbac/v1alpha1/rbac_client.go | 0 - .../kubernetes/typed/rbac/v1alpha1/role.go | 0 - .../typed/rbac/v1alpha1/rolebinding.go | 0 - .../typed/rbac/v1beta1/clusterrole.go | 0 - .../typed/rbac/v1beta1/clusterrolebinding.go | 0 - .../kubernetes/typed/rbac/v1beta1/doc.go | 0 - .../typed/rbac/v1beta1/generated_expansion.go | 0 - .../typed/rbac/v1beta1/rbac_client.go | 0 - .../kubernetes/typed/rbac/v1beta1/role.go | 0 - .../typed/rbac/v1beta1/rolebinding.go | 0 - .../kubernetes/typed/scheduling/v1/doc.go | 0 - .../scheduling/v1/generated_expansion.go | 0 - .../typed/scheduling/v1/priorityclass.go | 0 - .../typed/scheduling/v1/scheduling_client.go | 0 - .../typed/scheduling/v1alpha1/doc.go | 0 - .../v1alpha1/generated_expansion.go | 0 - .../scheduling/v1alpha1/priorityclass.go | 0 - .../scheduling/v1alpha1/scheduling_client.go | 0 - .../typed/scheduling/v1beta1/doc.go | 0 - .../scheduling/v1beta1/generated_expansion.go | 0 - .../typed/scheduling/v1beta1/priorityclass.go | 0 - .../scheduling/v1beta1/scheduling_client.go | 0 - .../kubernetes/typed/storage/v1/csidriver.go | 0 - .../kubernetes/typed/storage/v1/csinode.go | 0 - .../kubernetes/typed/storage/v1/doc.go | 0 - .../typed/storage/v1/generated_expansion.go | 0 - .../typed/storage/v1/storage_client.go | 0 - .../typed/storage/v1/storageclass.go | 0 - .../typed/storage/v1/volumeattachment.go | 0 - .../storage/v1alpha1/csistoragecapacity.go | 0 - .../kubernetes/typed/storage/v1alpha1/doc.go | 0 - .../storage/v1alpha1/generated_expansion.go | 0 - .../typed/storage/v1alpha1/storage_client.go | 0 - .../storage/v1alpha1/volumeattachment.go | 0 - .../typed/storage/v1beta1/csidriver.go | 0 - .../typed/storage/v1beta1/csinode.go | 0 - .../kubernetes/typed/storage/v1beta1/doc.go | 0 - .../storage/v1beta1/generated_expansion.go | 0 - .../typed/storage/v1beta1/storage_client.go | 0 - .../typed/storage/v1beta1/storageclass.go | 0 - .../typed/storage/v1beta1/volumeattachment.go | 0 - .../v1/expansion_generated.go | 0 - .../v1/mutatingwebhookconfiguration.go | 0 - .../v1/validatingwebhookconfiguration.go | 0 - .../v1beta1/expansion_generated.go | 0 - .../v1beta1/mutatingwebhookconfiguration.go | 0 - .../v1beta1/validatingwebhookconfiguration.go | 0 - .../v1alpha1/expansion_generated.go | 0 - .../v1alpha1/storageversion.go | 0 - .../listers/apps/v1/controllerrevision.go | 0 - .../client-go/listers/apps/v1/daemonset.go | 0 - .../listers/apps/v1/daemonset_expansion.go | 0 - .../client-go/listers/apps/v1/deployment.go | 0 - .../listers/apps/v1/expansion_generated.go | 0 - .../client-go/listers/apps/v1/replicaset.go | 0 - .../listers/apps/v1/replicaset_expansion.go | 0 - .../client-go/listers/apps/v1/statefulset.go | 0 - .../listers/apps/v1/statefulset_expansion.go | 0 - .../apps/v1beta1/controllerrevision.go | 0 - .../listers/apps/v1beta1/deployment.go | 0 - .../apps/v1beta1/expansion_generated.go | 0 - .../listers/apps/v1beta1/statefulset.go | 0 - .../apps/v1beta1/statefulset_expansion.go | 0 - .../apps/v1beta2/controllerrevision.go | 0 - .../listers/apps/v1beta2/daemonset.go | 0 - .../apps/v1beta2/daemonset_expansion.go | 0 - .../listers/apps/v1beta2/deployment.go | 0 - .../apps/v1beta2/expansion_generated.go | 0 - .../listers/apps/v1beta2/replicaset.go | 0 - .../apps/v1beta2/replicaset_expansion.go | 0 - .../listers/apps/v1beta2/statefulset.go | 0 - .../apps/v1beta2/statefulset_expansion.go | 0 - .../autoscaling/v1/expansion_generated.go | 0 - .../autoscaling/v1/horizontalpodautoscaler.go | 0 - .../v2beta1/expansion_generated.go | 0 - .../v2beta1/horizontalpodautoscaler.go | 0 - .../v2beta2/expansion_generated.go | 0 - .../v2beta2/horizontalpodautoscaler.go | 0 - .../listers/batch/v1/expansion_generated.go | 0 - .../k8s.io/client-go/listers/batch/v1/job.go | 0 - .../listers/batch/v1/job_expansion.go | 0 - .../listers/batch/v1beta1/cronjob.go | 0 - .../batch/v1beta1/expansion_generated.go | 0 - .../listers/batch/v2alpha1/cronjob.go | 0 - .../batch/v2alpha1/expansion_generated.go | 0 - .../v1/certificatesigningrequest.go | 0 - .../certificates/v1/expansion_generated.go | 0 - .../v1beta1/certificatesigningrequest.go | 0 - .../v1beta1/expansion_generated.go | 0 - .../coordination/v1/expansion_generated.go | 0 - .../listers/coordination/v1/lease.go | 0 - .../v1beta1/expansion_generated.go | 0 - .../listers/coordination/v1beta1/lease.go | 0 - .../listers/core/v1/componentstatus.go | 0 - .../client-go/listers/core/v1/configmap.go | 0 - .../client-go/listers/core/v1/endpoints.go | 0 - .../k8s.io/client-go/listers/core/v1/event.go | 0 - .../listers/core/v1/expansion_generated.go | 0 - .../client-go/listers/core/v1/limitrange.go | 0 - .../client-go/listers/core/v1/namespace.go | 0 - .../k8s.io/client-go/listers/core/v1/node.go | 0 - .../listers/core/v1/persistentvolume.go | 0 - .../listers/core/v1/persistentvolumeclaim.go | 0 - .../k8s.io/client-go/listers/core/v1/pod.go | 0 - .../client-go/listers/core/v1/podtemplate.go | 0 - .../listers/core/v1/replicationcontroller.go | 0 - .../v1/replicationcontroller_expansion.go | 0 - .../listers/core/v1/resourcequota.go | 0 - .../client-go/listers/core/v1/secret.go | 0 - .../client-go/listers/core/v1/service.go | 0 - .../listers/core/v1/serviceaccount.go | 0 - .../discovery/v1alpha1/endpointslice.go | 0 - .../discovery/v1alpha1/expansion_generated.go | 0 - .../discovery/v1beta1/endpointslice.go | 0 - .../discovery/v1beta1/expansion_generated.go | 0 - .../client-go/listers/events/v1/event.go | 0 - .../listers/events/v1/expansion_generated.go | 0 - .../client-go/listers/events/v1beta1/event.go | 0 - .../events/v1beta1/expansion_generated.go | 0 - .../listers/extensions/v1beta1/daemonset.go | 0 - .../extensions/v1beta1/daemonset_expansion.go | 0 - .../listers/extensions/v1beta1/deployment.go | 0 - .../extensions/v1beta1/expansion_generated.go | 0 - .../listers/extensions/v1beta1/ingress.go | 0 - .../extensions/v1beta1/networkpolicy.go | 0 - .../extensions/v1beta1/podsecuritypolicy.go | 0 - .../listers/extensions/v1beta1/replicaset.go | 0 - .../v1beta1/replicaset_expansion.go | 0 - .../v1alpha1/expansion_generated.go | 0 - .../flowcontrol/v1alpha1/flowschema.go | 0 - .../v1alpha1/prioritylevelconfiguration.go | 0 - .../v1beta1/expansion_generated.go | 0 - .../listers/flowcontrol/v1beta1/flowschema.go | 0 - .../v1beta1/prioritylevelconfiguration.go | 0 - .../networking/v1/expansion_generated.go | 0 - .../listers/networking/v1/ingress.go | 0 - .../listers/networking/v1/ingressclass.go | 0 - .../listers/networking/v1/networkpolicy.go | 0 - .../networking/v1beta1/expansion_generated.go | 0 - .../listers/networking/v1beta1/ingress.go | 0 - .../networking/v1beta1/ingressclass.go | 0 - .../listers/node/v1/expansion_generated.go | 0 - .../client-go/listers/node/v1/runtimeclass.go | 0 - .../node/v1alpha1/expansion_generated.go | 0 - .../listers/node/v1alpha1/runtimeclass.go | 0 - .../node/v1beta1/expansion_generated.go | 0 - .../listers/node/v1beta1/runtimeclass.go | 0 - .../listers/policy/v1beta1/eviction.go | 0 - .../policy/v1beta1/expansion_generated.go | 0 - .../policy/v1beta1/poddisruptionbudget.go | 0 - .../v1beta1/poddisruptionbudget_expansion.go | 0 - .../policy/v1beta1/podsecuritypolicy.go | 0 - .../client-go/listers/rbac/v1/clusterrole.go | 0 - .../listers/rbac/v1/clusterrolebinding.go | 0 - .../listers/rbac/v1/expansion_generated.go | 0 - .../k8s.io/client-go/listers/rbac/v1/role.go | 0 - .../client-go/listers/rbac/v1/rolebinding.go | 0 - .../listers/rbac/v1alpha1/clusterrole.go | 0 - .../rbac/v1alpha1/clusterrolebinding.go | 0 - .../rbac/v1alpha1/expansion_generated.go | 0 - .../client-go/listers/rbac/v1alpha1/role.go | 0 - .../listers/rbac/v1alpha1/rolebinding.go | 0 - .../listers/rbac/v1beta1/clusterrole.go | 0 - .../rbac/v1beta1/clusterrolebinding.go | 0 - .../rbac/v1beta1/expansion_generated.go | 0 - .../client-go/listers/rbac/v1beta1/role.go | 0 - .../listers/rbac/v1beta1/rolebinding.go | 0 - .../scheduling/v1/expansion_generated.go | 0 - .../listers/scheduling/v1/priorityclass.go | 0 - .../v1alpha1/expansion_generated.go | 0 - .../scheduling/v1alpha1/priorityclass.go | 0 - .../scheduling/v1beta1/expansion_generated.go | 0 - .../scheduling/v1beta1/priorityclass.go | 0 - .../client-go/listers/storage/v1/csidriver.go | 0 - .../client-go/listers/storage/v1/csinode.go | 0 - .../listers/storage/v1/expansion_generated.go | 0 - .../listers/storage/v1/storageclass.go | 0 - .../listers/storage/v1/volumeattachment.go | 0 - .../storage/v1alpha1/csistoragecapacity.go | 0 - .../storage/v1alpha1/expansion_generated.go | 0 - .../storage/v1alpha1/volumeattachment.go | 0 - .../listers/storage/v1beta1/csidriver.go | 0 - .../listers/storage/v1beta1/csinode.go | 0 - .../storage/v1beta1/expansion_generated.go | 0 - .../listers/storage/v1beta1/storageclass.go | 0 - .../storage/v1beta1/volumeattachment.go | 0 - .../pkg/apis/clientauthentication/OWNERS | 0 - .../pkg/apis/clientauthentication/doc.go | 0 - .../pkg/apis/clientauthentication/register.go | 0 - .../pkg/apis/clientauthentication/types.go | 0 - .../v1alpha1/conversion.go | 0 - .../apis/clientauthentication/v1alpha1/doc.go | 0 - .../clientauthentication/v1alpha1/register.go | 0 - .../clientauthentication/v1alpha1/types.go | 0 - .../v1alpha1/zz_generated.conversion.go | 0 - .../v1alpha1/zz_generated.deepcopy.go | 0 - .../v1alpha1/zz_generated.defaults.go | 0 - .../v1beta1/conversion.go | 0 - .../apis/clientauthentication/v1beta1/doc.go | 0 - .../clientauthentication/v1beta1/register.go | 0 - .../clientauthentication/v1beta1/types.go | 0 - .../v1beta1/zz_generated.conversion.go | 0 - .../v1beta1/zz_generated.deepcopy.go | 0 - .../v1beta1/zz_generated.defaults.go | 0 - .../zz_generated.deepcopy.go | 0 - .../client-go/pkg/version/.gitattributes | 0 - vendor/k8s.io/client-go/pkg/version/base.go | 0 - vendor/k8s.io/client-go/pkg/version/def.bzl | 0 - vendor/k8s.io/client-go/pkg/version/doc.go | 0 - .../k8s.io/client-go/pkg/version/version.go | 0 - .../plugin/pkg/client/auth/exec/exec.go | 0 - .../plugin/pkg/client/auth/exec/metrics.go | 0 - vendor/k8s.io/client-go/rest/OWNERS | 0 - vendor/k8s.io/client-go/rest/client.go | 0 - vendor/k8s.io/client-go/rest/config.go | 0 - vendor/k8s.io/client-go/rest/exec.go | 0 - vendor/k8s.io/client-go/rest/plugin.go | 0 - vendor/k8s.io/client-go/rest/request.go | 0 - vendor/k8s.io/client-go/rest/transport.go | 0 - vendor/k8s.io/client-go/rest/url_utils.go | 0 - vendor/k8s.io/client-go/rest/urlbackoff.go | 0 - vendor/k8s.io/client-go/rest/warnings.go | 0 - vendor/k8s.io/client-go/rest/watch/decoder.go | 0 - vendor/k8s.io/client-go/rest/watch/encoder.go | 0 - .../client-go/rest/zz_generated.deepcopy.go | 0 - vendor/k8s.io/client-go/tools/cache/OWNERS | 0 - .../client-go/tools/cache/controller.go | 0 - .../client-go/tools/cache/delta_fifo.go | 0 - vendor/k8s.io/client-go/tools/cache/doc.go | 0 - .../client-go/tools/cache/expiration_cache.go | 0 - .../tools/cache/expiration_cache_fakes.go | 0 - .../tools/cache/fake_custom_store.go | 0 - vendor/k8s.io/client-go/tools/cache/fifo.go | 0 - vendor/k8s.io/client-go/tools/cache/heap.go | 0 - vendor/k8s.io/client-go/tools/cache/index.go | 0 - .../k8s.io/client-go/tools/cache/listers.go | 0 - .../k8s.io/client-go/tools/cache/listwatch.go | 0 - .../client-go/tools/cache/mutation_cache.go | 0 - .../tools/cache/mutation_detector.go | 0 - .../k8s.io/client-go/tools/cache/reflector.go | 0 - .../tools/cache/reflector_metrics.go | 0 - .../client-go/tools/cache/shared_informer.go | 0 - vendor/k8s.io/client-go/tools/cache/store.go | 0 - .../tools/cache/thread_safe_store.go | 0 - .../client-go/tools/cache/undelta_store.go | 0 - .../client-go/tools/clientcmd/api/doc.go | 0 - .../client-go/tools/clientcmd/api/helpers.go | 0 - .../client-go/tools/clientcmd/api/register.go | 0 - .../client-go/tools/clientcmd/api/types.go | 0 - .../clientcmd/api/zz_generated.deepcopy.go | 0 - vendor/k8s.io/client-go/tools/metrics/OWNERS | 0 - .../k8s.io/client-go/tools/metrics/metrics.go | 0 - vendor/k8s.io/client-go/tools/pager/pager.go | 0 - .../k8s.io/client-go/tools/reference/ref.go | 0 - vendor/k8s.io/client-go/transport/OWNERS | 0 - vendor/k8s.io/client-go/transport/cache.go | 0 - .../client-go/transport/cert_rotation.go | 0 - vendor/k8s.io/client-go/transport/config.go | 0 - .../client-go/transport/round_trippers.go | 0 - .../client-go/transport/token_source.go | 0 - .../k8s.io/client-go/transport/transport.go | 0 - vendor/k8s.io/client-go/util/cert/OWNERS | 0 - vendor/k8s.io/client-go/util/cert/cert.go | 0 - vendor/k8s.io/client-go/util/cert/csr.go | 0 - vendor/k8s.io/client-go/util/cert/io.go | 0 - vendor/k8s.io/client-go/util/cert/pem.go | 0 - .../client-go/util/cert/server_inspection.go | 0 - .../util/connrotation/connrotation.go | 0 - .../client-go/util/flowcontrol/backoff.go | 0 - .../client-go/util/flowcontrol/throttle.go | 0 - vendor/k8s.io/client-go/util/keyutil/OWNERS | 0 - vendor/k8s.io/client-go/util/keyutil/key.go | 0 - .../util/workqueue/default_rate_limiters.go | 0 - .../util/workqueue/delaying_queue.go | 0 - vendor/k8s.io/client-go/util/workqueue/doc.go | 0 - .../client-go/util/workqueue/metrics.go | 0 - .../client-go/util/workqueue/parallelizer.go | 0 - .../k8s.io/client-go/util/workqueue/queue.go | 0 - .../util/workqueue/rate_limiting_queue.go | 0 - vendor/k8s.io/cri-api/LICENSE | 201 + - .../cri-api/pkg/apis/runtime/v1/api.pb.go | 40906 ++++++++++++++++ - .../cri-api/pkg/apis/runtime/v1/api.proto | 1606 + - .../cri-api/pkg/apis/runtime/v1/constants.go | 55 + - vendor/k8s.io/klog/v2/.gitignore | 0 - vendor/k8s.io/klog/v2/CONTRIBUTING.md | 0 - vendor/k8s.io/klog/v2/LICENSE | 0 - vendor/k8s.io/klog/v2/OWNERS | 0 - vendor/k8s.io/klog/v2/README.md | 0 - vendor/k8s.io/klog/v2/RELEASE.md | 0 - vendor/k8s.io/klog/v2/SECURITY.md | 0 - vendor/k8s.io/klog/v2/SECURITY_CONTACTS | 0 - vendor/k8s.io/klog/v2/code-of-conduct.md | 0 - vendor/k8s.io/klog/v2/contextual.go | 0 - vendor/k8s.io/klog/v2/exit.go | 0 - vendor/k8s.io/klog/v2/imports.go | 0 - .../k8s.io/klog/v2/internal/buffer/buffer.go | 0 - .../k8s.io/klog/v2/internal/clock/README.md | 0 - vendor/k8s.io/klog/v2/internal/clock/clock.go | 0 - vendor/k8s.io/klog/v2/internal/dbg/dbg.go | 0 - .../klog/v2/internal/serialize/keyvalues.go | 0 - .../klog/v2/internal/severity/severity.go | 0 - vendor/k8s.io/klog/v2/k8s_references.go | 0 - vendor/k8s.io/klog/v2/klog.go | 0 - vendor/k8s.io/klog/v2/klog_file.go | 0 - vendor/k8s.io/klog/v2/klog_file_others.go | 0 - vendor/k8s.io/klog/v2/klog_file_windows.go | 0 - vendor/k8s.io/klog/v2/klogr.go | 0 - vendor/k8s.io/utils/LICENSE | 0 - vendor/k8s.io/utils/buffer/ring_growing.go | 0 - vendor/k8s.io/utils/clock/README.md | 0 - vendor/k8s.io/utils/clock/clock.go | 0 - vendor/k8s.io/utils/inotify/LICENSE | 0 - vendor/k8s.io/utils/inotify/PATENTS | 0 - vendor/k8s.io/utils/inotify/README.md | 0 - vendor/k8s.io/utils/inotify/inotify.go | 0 - vendor/k8s.io/utils/inotify/inotify_linux.go | 0 - vendor/k8s.io/utils/inotify/inotify_others.go | 0 - vendor/k8s.io/utils/integer/integer.go | 0 - vendor/k8s.io/utils/trace/README.md | 0 - vendor/k8s.io/utils/trace/trace.go | 0 - vendor/modules.txt | 117 +- - .../structured-merge-diff/v4/LICENSE | 0 - .../v4/value/allocator.go | 0 - .../structured-merge-diff/v4/value/doc.go | 0 - .../structured-merge-diff/v4/value/fields.go | 0 - .../v4/value/jsontagutil.go | 0 - .../structured-merge-diff/v4/value/list.go | 0 - .../v4/value/listreflect.go | 0 - .../v4/value/listunstructured.go | 0 - .../structured-merge-diff/v4/value/map.go | 0 - .../v4/value/mapreflect.go | 0 - .../v4/value/mapunstructured.go | 0 - .../v4/value/reflectcache.go | 0 - .../structured-merge-diff/v4/value/scalar.go | 0 - .../v4/value/structreflect.go | 0 - .../structured-merge-diff/v4/value/value.go | 0 - .../v4/value/valuereflect.go | 0 - .../v4/value/valueunstructured.go | 0 - vendor/sigs.k8s.io/yaml/.gitignore | 4 + - vendor/sigs.k8s.io/yaml/.travis.yml | 7 +- - vendor/sigs.k8s.io/yaml/CONTRIBUTING.md | 0 - vendor/sigs.k8s.io/yaml/LICENSE | 0 - vendor/sigs.k8s.io/yaml/OWNERS | 0 - vendor/sigs.k8s.io/yaml/README.md | 2 +- - vendor/sigs.k8s.io/yaml/RELEASE.md | 0 - vendor/sigs.k8s.io/yaml/SECURITY_CONTACTS | 0 - vendor/sigs.k8s.io/yaml/code-of-conduct.md | 0 - vendor/sigs.k8s.io/yaml/fields.go | 0 - vendor/sigs.k8s.io/yaml/yaml.go | 0 - vendor/sigs.k8s.io/yaml/yaml_go110.go | 0 - 3149 files changed, 148862 insertions(+), 7173 deletions(-) - mode change 100644 => 100755 go.mod - mode change 100644 => 100755 go.sum - create mode 100644 pkg/core/typedef/nrirawpod.go - create mode 100644 pkg/informer/nriinformer.go - create mode 100755 vendor/github.com/beorn7/perks/LICENSE - create mode 100755 vendor/github.com/beorn7/perks/quantile/exampledata.txt - create mode 100755 vendor/github.com/beorn7/perks/quantile/stream.go - create mode 100755 vendor/github.com/cespare/xxhash/v2/LICENSE.txt - create mode 100755 vendor/github.com/cespare/xxhash/v2/README.md - create mode 100755 vendor/github.com/cespare/xxhash/v2/testall.sh - create mode 100755 vendor/github.com/cespare/xxhash/v2/xxhash.go - create mode 100755 vendor/github.com/cespare/xxhash/v2/xxhash_amd64.s - create mode 100755 vendor/github.com/cespare/xxhash/v2/xxhash_arm64.s - create mode 100755 vendor/github.com/cespare/xxhash/v2/xxhash_asm.go - create mode 100755 vendor/github.com/cespare/xxhash/v2/xxhash_other.go - create mode 100755 vendor/github.com/cespare/xxhash/v2/xxhash_safe.go - create mode 100755 vendor/github.com/cespare/xxhash/v2/xxhash_unsafe.go - mode change 100644 => 100755 vendor/github.com/checkpoint-restore/go-criu/v5/.gitignore - mode change 100644 => 100755 vendor/github.com/checkpoint-restore/go-criu/v5/.golangci.yml - mode change 100644 => 100755 vendor/github.com/checkpoint-restore/go-criu/v5/LICENSE - mode change 100644 => 100755 vendor/github.com/checkpoint-restore/go-criu/v5/Makefile - mode change 100644 => 100755 vendor/github.com/checkpoint-restore/go-criu/v5/README.md - mode change 100644 => 100755 vendor/github.com/checkpoint-restore/go-criu/v5/features.go - mode change 100644 => 100755 vendor/github.com/checkpoint-restore/go-criu/v5/main.go - mode change 100644 => 100755 vendor/github.com/checkpoint-restore/go-criu/v5/notify.go - mode change 100644 => 100755 vendor/github.com/checkpoint-restore/go-criu/v5/rpc/rpc.pb.go - mode change 100644 => 100755 vendor/github.com/checkpoint-restore/go-criu/v5/rpc/rpc.proto - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/.clang-format - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/.gitignore - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/.golangci.yaml - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/ARCHITECTURE.md - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/CODE_OF_CONDUCT.md - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/CONTRIBUTING.md - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/LICENSE - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/Makefile - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/README.md - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/asm/alu.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/asm/alu_string.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/asm/doc.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/asm/func.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/asm/func_string.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/asm/instruction.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/asm/jump.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/asm/jump_string.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/asm/load_store.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/asm/load_store_string.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/asm/opcode.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/asm/opcode_string.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/asm/register.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/attachtype_string.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/collection.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/doc.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/elf_reader.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/elf_reader_fuzz.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/info.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/internal/align.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/internal/btf/btf.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/internal/btf/btf_types.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/internal/btf/btf_types_string.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/internal/btf/core.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/internal/btf/doc.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/internal/btf/ext_info.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/internal/btf/fuzz.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/internal/btf/info.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/internal/btf/strings.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/internal/btf/syscalls.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/internal/btf/types.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/internal/cpu.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/internal/elf.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/internal/endian.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/internal/errors.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/internal/fd.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/internal/feature.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/internal/io.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/internal/pinning.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/internal/ptr.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/internal/ptr_32_be.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/internal/ptr_32_le.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/internal/ptr_64.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/internal/syscall.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/internal/syscall_string.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/internal/unix/types_linux.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/internal/unix/types_other.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/internal/version.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/link/cgroup.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/link/doc.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/link/freplace.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/link/iter.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/link/kprobe.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/link/link.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/link/netns.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/link/perf_event.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/link/platform.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/link/program.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/link/raw_tracepoint.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/link/syscalls.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/link/tracepoint.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/link/uprobe.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/linker.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/map.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/marshalers.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/prog.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/run-tests.sh - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/syscalls.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/types.go - mode change 100644 => 100755 vendor/github.com/cilium/ebpf/types_string.go - mode change 100644 => 100755 vendor/github.com/containerd/console/.golangci.yml - mode change 100644 => 100755 vendor/github.com/containerd/console/LICENSE - mode change 100644 => 100755 vendor/github.com/containerd/console/README.md - mode change 100644 => 100755 vendor/github.com/containerd/console/console.go - mode change 100644 => 100755 vendor/github.com/containerd/console/console_linux.go - mode change 100644 => 100755 vendor/github.com/containerd/console/console_unix.go - mode change 100644 => 100755 vendor/github.com/containerd/console/console_windows.go - mode change 100644 => 100755 vendor/github.com/containerd/console/console_zos.go - mode change 100644 => 100755 vendor/github.com/containerd/console/pty_freebsd_cgo.go - mode change 100644 => 100755 vendor/github.com/containerd/console/pty_freebsd_nocgo.go - mode change 100644 => 100755 vendor/github.com/containerd/console/pty_unix.go - mode change 100644 => 100755 vendor/github.com/containerd/console/tc_darwin.go - mode change 100644 => 100755 vendor/github.com/containerd/console/tc_freebsd_cgo.go - mode change 100644 => 100755 vendor/github.com/containerd/console/tc_freebsd_nocgo.go - mode change 100644 => 100755 vendor/github.com/containerd/console/tc_linux.go - mode change 100644 => 100755 vendor/github.com/containerd/console/tc_netbsd.go - mode change 100644 => 100755 vendor/github.com/containerd/console/tc_openbsd_cgo.go - mode change 100644 => 100755 vendor/github.com/containerd/console/tc_openbsd_nocgo.go - mode change 100644 => 100755 vendor/github.com/containerd/console/tc_solaris_cgo.go - mode change 100644 => 100755 vendor/github.com/containerd/console/tc_solaris_nocgo.go - mode change 100644 => 100755 vendor/github.com/containerd/console/tc_unix.go - mode change 100644 => 100755 vendor/github.com/containerd/console/tc_zos.go - create mode 100755 vendor/github.com/containerd/nri/LICENSE - create mode 100755 vendor/github.com/containerd/nri/pkg/api/adjustment.go - create mode 100755 vendor/github.com/containerd/nri/pkg/api/api.pb.go - create mode 100755 vendor/github.com/containerd/nri/pkg/api/api.proto - create mode 100755 vendor/github.com/containerd/nri/pkg/api/api_ttrpc.pb.go - create mode 100755 vendor/github.com/containerd/nri/pkg/api/device.go - create mode 100755 vendor/github.com/containerd/nri/pkg/api/doc.go - create mode 100755 vendor/github.com/containerd/nri/pkg/api/env.go - create mode 100755 vendor/github.com/containerd/nri/pkg/api/event.go - create mode 100755 vendor/github.com/containerd/nri/pkg/api/helpers.go - create mode 100755 vendor/github.com/containerd/nri/pkg/api/hooks.go - create mode 100755 vendor/github.com/containerd/nri/pkg/api/mount.go - create mode 100755 vendor/github.com/containerd/nri/pkg/api/namespace.go - create mode 100755 vendor/github.com/containerd/nri/pkg/api/optional.go - create mode 100755 vendor/github.com/containerd/nri/pkg/api/plugin.go - create mode 100755 vendor/github.com/containerd/nri/pkg/api/resources.go - create mode 100755 vendor/github.com/containerd/nri/pkg/api/update.go - create mode 100755 vendor/github.com/containerd/nri/pkg/log/log.go - create mode 100755 vendor/github.com/containerd/nri/pkg/net/conn.go - create mode 100755 vendor/github.com/containerd/nri/pkg/net/multiplex/mux.go - create mode 100755 vendor/github.com/containerd/nri/pkg/net/multiplex/ttrpc.go - create mode 100755 vendor/github.com/containerd/nri/pkg/net/socketpair.go - create mode 100755 vendor/github.com/containerd/nri/pkg/net/socketpair_cloexec_linux.go - create mode 100755 vendor/github.com/containerd/nri/pkg/net/socketpair_cloexec_unix.go - create mode 100755 vendor/github.com/containerd/nri/pkg/net/socketpair_cloexec_windows.go - create mode 100755 vendor/github.com/containerd/nri/pkg/stub/stub.go - create mode 100755 vendor/github.com/containerd/ttrpc/.gitattributes - create mode 100755 vendor/github.com/containerd/ttrpc/.gitignore - create mode 100755 vendor/github.com/containerd/ttrpc/.golangci.yml - create mode 100755 vendor/github.com/containerd/ttrpc/LICENSE - create mode 100755 vendor/github.com/containerd/ttrpc/Makefile - create mode 100755 vendor/github.com/containerd/ttrpc/PROTOCOL.md - create mode 100755 vendor/github.com/containerd/ttrpc/Protobuild.toml - create mode 100755 vendor/github.com/containerd/ttrpc/README.md - create mode 100755 vendor/github.com/containerd/ttrpc/channel.go - create mode 100755 vendor/github.com/containerd/ttrpc/client.go - create mode 100755 vendor/github.com/containerd/ttrpc/codec.go - create mode 100755 vendor/github.com/containerd/ttrpc/config.go - create mode 100755 vendor/github.com/containerd/ttrpc/doc.go - create mode 100755 vendor/github.com/containerd/ttrpc/errors.go - create mode 100755 vendor/github.com/containerd/ttrpc/handshake.go - create mode 100755 vendor/github.com/containerd/ttrpc/interceptor.go - create mode 100755 vendor/github.com/containerd/ttrpc/metadata.go - create mode 100755 vendor/github.com/containerd/ttrpc/request.pb.go - create mode 100755 vendor/github.com/containerd/ttrpc/request.proto - create mode 100755 vendor/github.com/containerd/ttrpc/server.go - create mode 100755 vendor/github.com/containerd/ttrpc/services.go - create mode 100755 vendor/github.com/containerd/ttrpc/stream.go - create mode 100755 vendor/github.com/containerd/ttrpc/stream_server.go - create mode 100755 vendor/github.com/containerd/ttrpc/test.proto - create mode 100755 vendor/github.com/containerd/ttrpc/unixcreds_linux.go - mode change 100644 => 100755 vendor/github.com/coreos/go-systemd/v22/LICENSE - mode change 100644 => 100755 vendor/github.com/coreos/go-systemd/v22/NOTICE - mode change 100644 => 100755 vendor/github.com/coreos/go-systemd/v22/dbus/dbus.go - mode change 100644 => 100755 vendor/github.com/coreos/go-systemd/v22/dbus/methods.go - mode change 100644 => 100755 vendor/github.com/coreos/go-systemd/v22/dbus/properties.go - mode change 100644 => 100755 vendor/github.com/coreos/go-systemd/v22/dbus/set.go - mode change 100644 => 100755 vendor/github.com/coreos/go-systemd/v22/dbus/subscription.go - mode change 100644 => 100755 vendor/github.com/coreos/go-systemd/v22/dbus/subscription_set.go - mode change 100644 => 100755 vendor/github.com/cyphar/filepath-securejoin/.travis.yml - mode change 100644 => 100755 vendor/github.com/cyphar/filepath-securejoin/LICENSE - mode change 100644 => 100755 vendor/github.com/cyphar/filepath-securejoin/README.md - mode change 100644 => 100755 vendor/github.com/cyphar/filepath-securejoin/VERSION - mode change 100644 => 100755 vendor/github.com/cyphar/filepath-securejoin/join.go - mode change 100644 => 100755 vendor/github.com/cyphar/filepath-securejoin/vendor.conf - mode change 100644 => 100755 vendor/github.com/cyphar/filepath-securejoin/vfs.go - mode change 100644 => 100755 vendor/github.com/davecgh/go-spew/LICENSE - mode change 100644 => 100755 vendor/github.com/davecgh/go-spew/spew/bypass.go - mode change 100644 => 100755 vendor/github.com/davecgh/go-spew/spew/bypasssafe.go - mode change 100644 => 100755 vendor/github.com/davecgh/go-spew/spew/common.go - mode change 100644 => 100755 vendor/github.com/davecgh/go-spew/spew/config.go - mode change 100644 => 100755 vendor/github.com/davecgh/go-spew/spew/doc.go - mode change 100644 => 100755 vendor/github.com/davecgh/go-spew/spew/dump.go - mode change 100644 => 100755 vendor/github.com/davecgh/go-spew/spew/format.go - mode change 100644 => 100755 vendor/github.com/davecgh/go-spew/spew/spew.go - mode change 100644 => 100755 vendor/github.com/docker/go-units/CONTRIBUTING.md - mode change 100644 => 100755 vendor/github.com/docker/go-units/LICENSE - mode change 100644 => 100755 vendor/github.com/docker/go-units/MAINTAINERS - mode change 100644 => 100755 vendor/github.com/docker/go-units/README.md - mode change 100644 => 100755 vendor/github.com/docker/go-units/circle.yml - mode change 100644 => 100755 vendor/github.com/docker/go-units/duration.go - mode change 100644 => 100755 vendor/github.com/docker/go-units/size.go - mode change 100644 => 100755 vendor/github.com/docker/go-units/ulimit.go - mode change 100644 => 100755 vendor/github.com/euank/go-kmsg-parser/LICENSE - mode change 100644 => 100755 vendor/github.com/euank/go-kmsg-parser/kmsgparser/kmsgparser.go - mode change 100644 => 100755 vendor/github.com/euank/go-kmsg-parser/kmsgparser/log.go - mode change 100644 => 100755 vendor/github.com/go-logr/logr/.golangci.yaml - mode change 100644 => 100755 vendor/github.com/go-logr/logr/CHANGELOG.md - mode change 100644 => 100755 vendor/github.com/go-logr/logr/CONTRIBUTING.md - mode change 100644 => 100755 vendor/github.com/go-logr/logr/LICENSE - mode change 100644 => 100755 vendor/github.com/go-logr/logr/README.md - mode change 100644 => 100755 vendor/github.com/go-logr/logr/discard.go - mode change 100644 => 100755 vendor/github.com/go-logr/logr/logr.go - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/CONTRIBUTING.md - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/LICENSE - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/MAINTAINERS - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/README.md - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/auth.go - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/auth_anonymous.go - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/auth_external.go - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/auth_sha1.go - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/call.go - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/conn.go - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/conn_darwin.go - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/conn_other.go - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/conn_unix.go - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/conn_windows.go - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/dbus.go - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/decoder.go - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/default_handler.go - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/doc.go - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/encoder.go - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/export.go - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/homedir.go - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/homedir_dynamic.go - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/homedir_static.go - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/match.go - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/message.go - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/object.go - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/sequence.go - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/sequential_handler.go - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/server_interfaces.go - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/sig.go - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/transport_darwin.go - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/transport_generic.go - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/transport_nonce_tcp.go - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/transport_tcp.go - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/transport_unix.go - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/transport_unixcred_dragonfly.go - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/transport_unixcred_freebsd.go - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/transport_unixcred_linux.go - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/transport_unixcred_netbsd.go - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/transport_unixcred_openbsd.go - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/variant.go - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/variant_lexer.go - mode change 100644 => 100755 vendor/github.com/godbus/dbus/v5/variant_parser.go - mode change 100644 => 100755 vendor/github.com/gogo/protobuf/AUTHORS - mode change 100644 => 100755 vendor/github.com/gogo/protobuf/CONTRIBUTORS - mode change 100644 => 100755 vendor/github.com/gogo/protobuf/LICENSE - create mode 100755 vendor/github.com/gogo/protobuf/gogoproto/Makefile - create mode 100755 vendor/github.com/gogo/protobuf/gogoproto/doc.go - create mode 100755 vendor/github.com/gogo/protobuf/gogoproto/gogo.pb.go - create mode 100755 vendor/github.com/gogo/protobuf/gogoproto/gogo.pb.golden - create mode 100755 vendor/github.com/gogo/protobuf/gogoproto/gogo.proto - create mode 100755 vendor/github.com/gogo/protobuf/gogoproto/helper.go - mode change 100644 => 100755 vendor/github.com/gogo/protobuf/proto/Makefile - mode change 100644 => 100755 vendor/github.com/gogo/protobuf/proto/clone.go - mode change 100644 => 100755 vendor/github.com/gogo/protobuf/proto/custom_gogo.go - mode change 100644 => 100755 vendor/github.com/gogo/protobuf/proto/decode.go - mode change 100644 => 100755 vendor/github.com/gogo/protobuf/proto/deprecated.go - mode change 100644 => 100755 vendor/github.com/gogo/protobuf/proto/discard.go - mode change 100644 => 100755 vendor/github.com/gogo/protobuf/proto/duration.go - mode change 100644 => 100755 vendor/github.com/gogo/protobuf/proto/duration_gogo.go - mode change 100644 => 100755 vendor/github.com/gogo/protobuf/proto/encode.go - mode change 100644 => 100755 vendor/github.com/gogo/protobuf/proto/encode_gogo.go - mode change 100644 => 100755 vendor/github.com/gogo/protobuf/proto/equal.go - mode change 100644 => 100755 vendor/github.com/gogo/protobuf/proto/extensions.go - mode change 100644 => 100755 vendor/github.com/gogo/protobuf/proto/extensions_gogo.go - mode change 100644 => 100755 vendor/github.com/gogo/protobuf/proto/lib.go - mode change 100644 => 100755 vendor/github.com/gogo/protobuf/proto/lib_gogo.go - mode change 100644 => 100755 vendor/github.com/gogo/protobuf/proto/message_set.go - mode change 100644 => 100755 vendor/github.com/gogo/protobuf/proto/pointer_reflect.go - mode change 100644 => 100755 vendor/github.com/gogo/protobuf/proto/pointer_reflect_gogo.go - mode change 100644 => 100755 vendor/github.com/gogo/protobuf/proto/pointer_unsafe.go - mode change 100644 => 100755 vendor/github.com/gogo/protobuf/proto/pointer_unsafe_gogo.go - mode change 100644 => 100755 vendor/github.com/gogo/protobuf/proto/properties.go - mode change 100644 => 100755 vendor/github.com/gogo/protobuf/proto/properties_gogo.go - mode change 100644 => 100755 vendor/github.com/gogo/protobuf/proto/skip_gogo.go - mode change 100644 => 100755 vendor/github.com/gogo/protobuf/proto/table_marshal.go - mode change 100644 => 100755 vendor/github.com/gogo/protobuf/proto/table_marshal_gogo.go - mode change 100644 => 100755 vendor/github.com/gogo/protobuf/proto/table_merge.go - mode change 100644 => 100755 vendor/github.com/gogo/protobuf/proto/table_unmarshal.go - mode change 100644 => 100755 vendor/github.com/gogo/protobuf/proto/table_unmarshal_gogo.go - mode change 100644 => 100755 vendor/github.com/gogo/protobuf/proto/text.go - mode change 100644 => 100755 vendor/github.com/gogo/protobuf/proto/text_gogo.go - mode change 100644 => 100755 vendor/github.com/gogo/protobuf/proto/text_parser.go - mode change 100644 => 100755 vendor/github.com/gogo/protobuf/proto/timestamp.go - mode change 100644 => 100755 vendor/github.com/gogo/protobuf/proto/timestamp_gogo.go - mode change 100644 => 100755 vendor/github.com/gogo/protobuf/proto/wrappers.go - mode change 100644 => 100755 vendor/github.com/gogo/protobuf/proto/wrappers_gogo.go - create mode 100755 vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/Makefile - create mode 100755 vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/descriptor.go - create mode 100755 vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/descriptor.pb.go - create mode 100755 vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/descriptor_gostring.gen.go - create mode 100755 vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/helper.go - mode change 100644 => 100755 vendor/github.com/gogo/protobuf/sortkeys/sortkeys.go - mode change 100644 => 100755 vendor/github.com/golang/protobuf/AUTHORS - mode change 100644 => 100755 vendor/github.com/golang/protobuf/CONTRIBUTORS - mode change 100644 => 100755 vendor/github.com/golang/protobuf/LICENSE - create mode 100755 vendor/github.com/golang/protobuf/jsonpb/decode.go - create mode 100755 vendor/github.com/golang/protobuf/jsonpb/encode.go - create mode 100755 vendor/github.com/golang/protobuf/jsonpb/json.go - mode change 100644 => 100755 vendor/github.com/golang/protobuf/proto/buffer.go - mode change 100644 => 100755 vendor/github.com/golang/protobuf/proto/defaults.go - mode change 100644 => 100755 vendor/github.com/golang/protobuf/proto/deprecated.go - mode change 100644 => 100755 vendor/github.com/golang/protobuf/proto/discard.go - mode change 100644 => 100755 vendor/github.com/golang/protobuf/proto/extensions.go - mode change 100644 => 100755 vendor/github.com/golang/protobuf/proto/properties.go - mode change 100644 => 100755 vendor/github.com/golang/protobuf/proto/proto.go - mode change 100644 => 100755 vendor/github.com/golang/protobuf/proto/registry.go - mode change 100644 => 100755 vendor/github.com/golang/protobuf/proto/text_decode.go - mode change 100644 => 100755 vendor/github.com/golang/protobuf/proto/text_encode.go - mode change 100644 => 100755 vendor/github.com/golang/protobuf/proto/wire.go - mode change 100644 => 100755 vendor/github.com/golang/protobuf/proto/wrappers.go - mode change 100644 => 100755 vendor/github.com/golang/protobuf/ptypes/any.go - mode change 100644 => 100755 vendor/github.com/golang/protobuf/ptypes/any/any.pb.go - mode change 100644 => 100755 vendor/github.com/golang/protobuf/ptypes/doc.go - mode change 100644 => 100755 vendor/github.com/golang/protobuf/ptypes/duration.go - mode change 100644 => 100755 vendor/github.com/golang/protobuf/ptypes/duration/duration.pb.go - mode change 100644 => 100755 vendor/github.com/golang/protobuf/ptypes/timestamp.go - mode change 100644 => 100755 vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.pb.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/AUTHORS - mode change 100644 => 100755 vendor/github.com/google/cadvisor/LICENSE - mode change 100644 => 100755 vendor/github.com/google/cadvisor/cache/memory/memory.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/collector/collector_manager.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/collector/config.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/collector/fakes.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/collector/generic_collector.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/collector/prometheus_collector.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/collector/types.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/collector/util.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/container/common/container_hints.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/container/common/fsHandler.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/container/common/helpers.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/container/common/inotify_watcher.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/container/container.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/container/factory.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/container/libcontainer/handler.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/container/libcontainer/helpers.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/container/raw/factory.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/container/raw/handler.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/container/raw/watcher.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/devicemapper/dmsetup_client.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/devicemapper/doc.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/devicemapper/thin_ls_client.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/devicemapper/thin_pool_watcher.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/devicemapper/util.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/events/handler.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/fs/fs.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/fs/types.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/info/v1/container.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/info/v1/docker.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/info/v1/machine.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/info/v1/metric.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/info/v2/container.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/info/v2/conversion.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/info/v2/machine.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/machine/info.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/machine/machine.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/machine/operatingsystem_unix.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/machine/operatingsystem_windows.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/manager/container.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/manager/manager.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/nvm/machine_libipmctl.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/nvm/machine_no_libipmctl.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/perf/collector_libpfm.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/perf/collector_no_libpfm.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/perf/config.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/perf/manager_libpfm.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/perf/manager_no_libpfm.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/perf/types_libpfm.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/perf/uncore_libpfm.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/resctrl/collector.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/resctrl/manager.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/resctrl/utils.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/stats/noop.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/stats/types.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/storage/common_flags.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/storage/storage.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/summary/buffer.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/summary/percentiles.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/summary/summary.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/utils/cloudinfo/cloudinfo.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/utils/cpuload/cpuload.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/utils/cpuload/netlink/conn.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/utils/cpuload/netlink/netlink.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/utils/cpuload/netlink/reader.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/utils/oomparser/oomparser.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/utils/path.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/utils/sysfs/sysfs.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/utils/sysfs/sysfs_notx86.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/utils/sysfs/sysfs_x86.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/utils/sysinfo/sysinfo.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/utils/timed_store.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/utils/utils.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/version/version.go - mode change 100644 => 100755 vendor/github.com/google/cadvisor/watcher/watcher.go - mode change 100644 => 100755 vendor/github.com/google/go-cmp/LICENSE - mode change 100644 => 100755 vendor/github.com/google/go-cmp/cmp/compare.go - mode change 100644 => 100755 vendor/github.com/google/go-cmp/cmp/export_panic.go - mode change 100644 => 100755 vendor/github.com/google/go-cmp/cmp/export_unsafe.go - mode change 100644 => 100755 vendor/github.com/google/go-cmp/cmp/internal/diff/debug_disable.go - mode change 100644 => 100755 vendor/github.com/google/go-cmp/cmp/internal/diff/debug_enable.go - mode change 100644 => 100755 vendor/github.com/google/go-cmp/cmp/internal/diff/diff.go - mode change 100644 => 100755 vendor/github.com/google/go-cmp/cmp/internal/flags/flags.go - mode change 100644 => 100755 vendor/github.com/google/go-cmp/cmp/internal/function/func.go - mode change 100644 => 100755 vendor/github.com/google/go-cmp/cmp/internal/value/name.go - mode change 100644 => 100755 vendor/github.com/google/go-cmp/cmp/internal/value/pointer_purego.go - mode change 100644 => 100755 vendor/github.com/google/go-cmp/cmp/internal/value/pointer_unsafe.go - mode change 100644 => 100755 vendor/github.com/google/go-cmp/cmp/internal/value/sort.go - delete mode 100644 vendor/github.com/google/go-cmp/cmp/internal/value/zero.go - mode change 100644 => 100755 vendor/github.com/google/go-cmp/cmp/options.go - mode change 100644 => 100755 vendor/github.com/google/go-cmp/cmp/path.go - mode change 100644 => 100755 vendor/github.com/google/go-cmp/cmp/report.go - mode change 100644 => 100755 vendor/github.com/google/go-cmp/cmp/report_compare.go - mode change 100644 => 100755 vendor/github.com/google/go-cmp/cmp/report_references.go - mode change 100644 => 100755 vendor/github.com/google/go-cmp/cmp/report_reflect.go - mode change 100644 => 100755 vendor/github.com/google/go-cmp/cmp/report_slices.go - mode change 100644 => 100755 vendor/github.com/google/go-cmp/cmp/report_text.go - mode change 100644 => 100755 vendor/github.com/google/go-cmp/cmp/report_value.go - mode change 100644 => 100755 vendor/github.com/google/gofuzz/.travis.yml - mode change 100644 => 100755 vendor/github.com/google/gofuzz/CONTRIBUTING.md - mode change 100644 => 100755 vendor/github.com/google/gofuzz/LICENSE - mode change 100644 => 100755 vendor/github.com/google/gofuzz/README.md - mode change 100644 => 100755 vendor/github.com/google/gofuzz/doc.go - mode change 100644 => 100755 vendor/github.com/google/gofuzz/fuzz.go - mode change 100644 => 100755 vendor/github.com/google/uuid/.travis.yml - mode change 100644 => 100755 vendor/github.com/google/uuid/CONTRIBUTING.md - mode change 100644 => 100755 vendor/github.com/google/uuid/CONTRIBUTORS - mode change 100644 => 100755 vendor/github.com/google/uuid/LICENSE - mode change 100644 => 100755 vendor/github.com/google/uuid/README.md - mode change 100644 => 100755 vendor/github.com/google/uuid/dce.go - mode change 100644 => 100755 vendor/github.com/google/uuid/doc.go - mode change 100644 => 100755 vendor/github.com/google/uuid/hash.go - mode change 100644 => 100755 vendor/github.com/google/uuid/marshal.go - mode change 100644 => 100755 vendor/github.com/google/uuid/node.go - mode change 100644 => 100755 vendor/github.com/google/uuid/node_js.go - mode change 100644 => 100755 vendor/github.com/google/uuid/node_net.go - create mode 100755 vendor/github.com/google/uuid/null.go - mode change 100644 => 100755 vendor/github.com/google/uuid/sql.go - mode change 100644 => 100755 vendor/github.com/google/uuid/time.go - mode change 100644 => 100755 vendor/github.com/google/uuid/util.go - mode change 100644 => 100755 vendor/github.com/google/uuid/uuid.go - mode change 100644 => 100755 vendor/github.com/google/uuid/version1.go - mode change 100644 => 100755 vendor/github.com/google/uuid/version4.go - mode change 100644 => 100755 vendor/github.com/googleapis/gnostic/LICENSE - mode change 100644 => 100755 vendor/github.com/googleapis/gnostic/compiler/README.md - mode change 100644 => 100755 vendor/github.com/googleapis/gnostic/compiler/context.go - mode change 100644 => 100755 vendor/github.com/googleapis/gnostic/compiler/error.go - mode change 100644 => 100755 vendor/github.com/googleapis/gnostic/compiler/extension-handler.go - mode change 100644 => 100755 vendor/github.com/googleapis/gnostic/compiler/helpers.go - mode change 100644 => 100755 vendor/github.com/googleapis/gnostic/compiler/main.go - mode change 100644 => 100755 vendor/github.com/googleapis/gnostic/compiler/reader.go - mode change 100644 => 100755 vendor/github.com/googleapis/gnostic/extensions/README.md - mode change 100644 => 100755 vendor/github.com/googleapis/gnostic/extensions/extension.pb.go - mode change 100644 => 100755 vendor/github.com/googleapis/gnostic/extensions/extension.proto - mode change 100644 => 100755 vendor/github.com/googleapis/gnostic/extensions/extensions.go - mode change 100644 => 100755 vendor/github.com/googleapis/gnostic/openapiv2/OpenAPIv2.go - mode change 100644 => 100755 vendor/github.com/googleapis/gnostic/openapiv2/OpenAPIv2.pb.go - mode change 100644 => 100755 vendor/github.com/googleapis/gnostic/openapiv2/OpenAPIv2.proto - mode change 100644 => 100755 vendor/github.com/googleapis/gnostic/openapiv2/README.md - mode change 100644 => 100755 vendor/github.com/googleapis/gnostic/openapiv2/openapi-2.0.json - mode change 100644 => 100755 vendor/github.com/hashicorp/golang-lru/.gitignore - mode change 100644 => 100755 vendor/github.com/hashicorp/golang-lru/2q.go - mode change 100644 => 100755 vendor/github.com/hashicorp/golang-lru/LICENSE - mode change 100644 => 100755 vendor/github.com/hashicorp/golang-lru/README.md - mode change 100644 => 100755 vendor/github.com/hashicorp/golang-lru/arc.go - mode change 100644 => 100755 vendor/github.com/hashicorp/golang-lru/doc.go - mode change 100644 => 100755 vendor/github.com/hashicorp/golang-lru/lru.go - mode change 100644 => 100755 vendor/github.com/hashicorp/golang-lru/simplelru/lru.go - mode change 100644 => 100755 vendor/github.com/hashicorp/golang-lru/simplelru/lru_interface.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/.codecov.yml - mode change 100644 => 100755 vendor/github.com/json-iterator/go/.gitignore - mode change 100644 => 100755 vendor/github.com/json-iterator/go/.travis.yml - mode change 100644 => 100755 vendor/github.com/json-iterator/go/Gopkg.lock - mode change 100644 => 100755 vendor/github.com/json-iterator/go/Gopkg.toml - mode change 100644 => 100755 vendor/github.com/json-iterator/go/LICENSE - mode change 100644 => 100755 vendor/github.com/json-iterator/go/README.md - mode change 100644 => 100755 vendor/github.com/json-iterator/go/adapter.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/any.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/any_array.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/any_bool.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/any_float.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/any_int32.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/any_int64.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/any_invalid.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/any_nil.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/any_number.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/any_object.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/any_str.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/any_uint32.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/any_uint64.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/build.sh - mode change 100644 => 100755 vendor/github.com/json-iterator/go/config.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/fuzzy_mode_convert_table.md - mode change 100644 => 100755 vendor/github.com/json-iterator/go/iter.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/iter_array.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/iter_float.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/iter_int.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/iter_object.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/iter_skip.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/iter_skip_sloppy.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/iter_skip_strict.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/iter_str.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/jsoniter.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/pool.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/reflect.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/reflect_array.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/reflect_dynamic.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/reflect_extension.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/reflect_json_number.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/reflect_json_raw_message.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/reflect_map.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/reflect_marshaler.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/reflect_native.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/reflect_optional.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/reflect_slice.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/reflect_struct_decoder.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/reflect_struct_encoder.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/stream.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/stream_float.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/stream_int.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/stream_str.go - mode change 100644 => 100755 vendor/github.com/json-iterator/go/test.sh - mode change 100644 => 100755 vendor/github.com/karrick/godirwalk/.gitignore - mode change 100644 => 100755 vendor/github.com/karrick/godirwalk/LICENSE - mode change 100644 => 100755 vendor/github.com/karrick/godirwalk/README.md - mode change 100644 => 100755 vendor/github.com/karrick/godirwalk/azure-pipelines.yml - mode change 100644 => 100755 vendor/github.com/karrick/godirwalk/bench.sh - mode change 100644 => 100755 vendor/github.com/karrick/godirwalk/debug_development.go - mode change 100644 => 100755 vendor/github.com/karrick/godirwalk/debug_release.go - mode change 100644 => 100755 vendor/github.com/karrick/godirwalk/dirent.go - mode change 100644 => 100755 vendor/github.com/karrick/godirwalk/doc.go - mode change 100644 => 100755 vendor/github.com/karrick/godirwalk/inoWithFileno.go - mode change 100644 => 100755 vendor/github.com/karrick/godirwalk/inoWithIno.go - mode change 100644 => 100755 vendor/github.com/karrick/godirwalk/modeType.go - mode change 100644 => 100755 vendor/github.com/karrick/godirwalk/modeTypeWithType.go - mode change 100644 => 100755 vendor/github.com/karrick/godirwalk/modeTypeWithoutType.go - mode change 100644 => 100755 vendor/github.com/karrick/godirwalk/nameWithNamlen.go - mode change 100644 => 100755 vendor/github.com/karrick/godirwalk/nameWithoutNamlen.go - mode change 100644 => 100755 vendor/github.com/karrick/godirwalk/readdir.go - mode change 100644 => 100755 vendor/github.com/karrick/godirwalk/readdir_unix.go - mode change 100644 => 100755 vendor/github.com/karrick/godirwalk/readdir_windows.go - mode change 100644 => 100755 vendor/github.com/karrick/godirwalk/reclenFromNamlen.go - mode change 100644 => 100755 vendor/github.com/karrick/godirwalk/reclenFromReclen.go - mode change 100644 => 100755 vendor/github.com/karrick/godirwalk/scandir_unix.go - mode change 100644 => 100755 vendor/github.com/karrick/godirwalk/scandir_windows.go - mode change 100644 => 100755 vendor/github.com/karrick/godirwalk/scanner.go - mode change 100644 => 100755 vendor/github.com/karrick/godirwalk/walk.go - mode change 100644 => 100755 vendor/github.com/matttproud/golang_protobuf_extensions/LICENSE - mode change 100644 => 100755 vendor/github.com/matttproud/golang_protobuf_extensions/NOTICE - mode change 100644 => 100755 vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/.gitignore - mode change 100644 => 100755 vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/Makefile - mode change 100644 => 100755 vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/decode.go - mode change 100644 => 100755 vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/doc.go - mode change 100644 => 100755 vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/encode.go - mode change 100644 => 100755 vendor/github.com/mistifyio/go-zfs/.gitignore - mode change 100644 => 100755 vendor/github.com/mistifyio/go-zfs/.travis.yml - mode change 100644 => 100755 vendor/github.com/mistifyio/go-zfs/CONTRIBUTING.md - mode change 100644 => 100755 vendor/github.com/mistifyio/go-zfs/LICENSE - mode change 100644 => 100755 vendor/github.com/mistifyio/go-zfs/README.md - mode change 100644 => 100755 vendor/github.com/mistifyio/go-zfs/Vagrantfile - mode change 100644 => 100755 vendor/github.com/mistifyio/go-zfs/error.go - mode change 100644 => 100755 vendor/github.com/mistifyio/go-zfs/utils.go - mode change 100644 => 100755 vendor/github.com/mistifyio/go-zfs/utils_notsolaris.go - mode change 100644 => 100755 vendor/github.com/mistifyio/go-zfs/utils_solaris.go - mode change 100644 => 100755 vendor/github.com/mistifyio/go-zfs/zfs.go - mode change 100644 => 100755 vendor/github.com/mistifyio/go-zfs/zpool.go - mode change 100644 => 100755 vendor/github.com/moby/sys/mountinfo/LICENSE - mode change 100644 => 100755 vendor/github.com/moby/sys/mountinfo/doc.go - mode change 100644 => 100755 vendor/github.com/moby/sys/mountinfo/mounted_linux.go - mode change 100644 => 100755 vendor/github.com/moby/sys/mountinfo/mounted_unix.go - mode change 100644 => 100755 vendor/github.com/moby/sys/mountinfo/mountinfo.go - mode change 100644 => 100755 vendor/github.com/moby/sys/mountinfo/mountinfo_bsd.go - mode change 100644 => 100755 vendor/github.com/moby/sys/mountinfo/mountinfo_filters.go - mode change 100644 => 100755 vendor/github.com/moby/sys/mountinfo/mountinfo_freebsdlike.go - mode change 100644 => 100755 vendor/github.com/moby/sys/mountinfo/mountinfo_linux.go - mode change 100644 => 100755 vendor/github.com/moby/sys/mountinfo/mountinfo_openbsd.go - mode change 100644 => 100755 vendor/github.com/moby/sys/mountinfo/mountinfo_unsupported.go - mode change 100644 => 100755 vendor/github.com/moby/sys/mountinfo/mountinfo_windows.go - mode change 100644 => 100755 vendor/github.com/modern-go/concurrent/.gitignore - mode change 100644 => 100755 vendor/github.com/modern-go/concurrent/.travis.yml - mode change 100644 => 100755 vendor/github.com/modern-go/concurrent/LICENSE - mode change 100644 => 100755 vendor/github.com/modern-go/concurrent/README.md - mode change 100644 => 100755 vendor/github.com/modern-go/concurrent/executor.go - mode change 100644 => 100755 vendor/github.com/modern-go/concurrent/go_above_19.go - mode change 100644 => 100755 vendor/github.com/modern-go/concurrent/go_below_19.go - mode change 100644 => 100755 vendor/github.com/modern-go/concurrent/log.go - mode change 100644 => 100755 vendor/github.com/modern-go/concurrent/test.sh - mode change 100644 => 100755 vendor/github.com/modern-go/concurrent/unbounded_executor.go - mode change 100644 => 100755 vendor/github.com/modern-go/reflect2/.gitignore - mode change 100644 => 100755 vendor/github.com/modern-go/reflect2/.travis.yml - mode change 100644 => 100755 vendor/github.com/modern-go/reflect2/Gopkg.lock - mode change 100644 => 100755 vendor/github.com/modern-go/reflect2/Gopkg.toml - mode change 100644 => 100755 vendor/github.com/modern-go/reflect2/LICENSE - mode change 100644 => 100755 vendor/github.com/modern-go/reflect2/README.md - mode change 100644 => 100755 vendor/github.com/modern-go/reflect2/go_above_118.go - mode change 100644 => 100755 vendor/github.com/modern-go/reflect2/go_above_19.go - mode change 100644 => 100755 vendor/github.com/modern-go/reflect2/go_below_118.go - mode change 100644 => 100755 vendor/github.com/modern-go/reflect2/reflect2.go - mode change 100644 => 100755 vendor/github.com/modern-go/reflect2/reflect2_amd64.s - mode change 100644 => 100755 vendor/github.com/modern-go/reflect2/reflect2_kind.go - mode change 100644 => 100755 vendor/github.com/modern-go/reflect2/relfect2_386.s - mode change 100644 => 100755 vendor/github.com/modern-go/reflect2/relfect2_amd64p32.s - mode change 100644 => 100755 vendor/github.com/modern-go/reflect2/relfect2_arm.s - mode change 100644 => 100755 vendor/github.com/modern-go/reflect2/relfect2_arm64.s - mode change 100644 => 100755 vendor/github.com/modern-go/reflect2/relfect2_mips64x.s - mode change 100644 => 100755 vendor/github.com/modern-go/reflect2/relfect2_mipsx.s - mode change 100644 => 100755 vendor/github.com/modern-go/reflect2/relfect2_ppc64x.s - mode change 100644 => 100755 vendor/github.com/modern-go/reflect2/relfect2_s390x.s - mode change 100644 => 100755 vendor/github.com/modern-go/reflect2/safe_field.go - mode change 100644 => 100755 vendor/github.com/modern-go/reflect2/safe_map.go - mode change 100644 => 100755 vendor/github.com/modern-go/reflect2/safe_slice.go - mode change 100644 => 100755 vendor/github.com/modern-go/reflect2/safe_struct.go - mode change 100644 => 100755 vendor/github.com/modern-go/reflect2/safe_type.go - mode change 100644 => 100755 vendor/github.com/modern-go/reflect2/type_map.go - mode change 100644 => 100755 vendor/github.com/modern-go/reflect2/unsafe_array.go - mode change 100644 => 100755 vendor/github.com/modern-go/reflect2/unsafe_eface.go - mode change 100644 => 100755 vendor/github.com/modern-go/reflect2/unsafe_field.go - mode change 100644 => 100755 vendor/github.com/modern-go/reflect2/unsafe_iface.go - mode change 100644 => 100755 vendor/github.com/modern-go/reflect2/unsafe_link.go - mode change 100644 => 100755 vendor/github.com/modern-go/reflect2/unsafe_map.go - mode change 100644 => 100755 vendor/github.com/modern-go/reflect2/unsafe_ptr.go - mode change 100644 => 100755 vendor/github.com/modern-go/reflect2/unsafe_slice.go - mode change 100644 => 100755 vendor/github.com/modern-go/reflect2/unsafe_struct.go - mode change 100644 => 100755 vendor/github.com/modern-go/reflect2/unsafe_type.go - mode change 100644 => 100755 vendor/github.com/mrunalp/fileutils/.gitignore - mode change 100644 => 100755 vendor/github.com/mrunalp/fileutils/LICENSE - mode change 100644 => 100755 vendor/github.com/mrunalp/fileutils/MAINTAINERS - mode change 100644 => 100755 vendor/github.com/mrunalp/fileutils/README.md - mode change 100644 => 100755 vendor/github.com/mrunalp/fileutils/fileutils.go - mode change 100644 => 100755 vendor/github.com/mrunalp/fileutils/idtools.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/LICENSE - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/NOTICE - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/README.md - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/SPEC.md - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/apparmor/apparmor.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/apparmor/apparmor_linux.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/apparmor/apparmor_unsupported.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/capabilities/capabilities.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/capabilities/capabilities_unsupported.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/cgroups.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/devices/devices_emulator.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/ebpf/devicefilter/devicefilter.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/ebpf/ebpf_linux.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/file.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/blkio.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/cpu.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/cpuacct.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/cpuset.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/devices.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/error.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/freezer.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/fs.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/hugetlb.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/memory.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/name.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/net_cls.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/net_prio.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/paths.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/perf_event.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/pids.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/rdma.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs2/cpu.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs2/cpuset.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs2/create.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs2/defaultpath.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs2/devices.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs2/freezer.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs2/fs2.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs2/hugetlb.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs2/io.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs2/memory.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs2/pids.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/fscommon/rdma.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/fscommon/utils.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/getallpids.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/manager/new.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/stats.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/common.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/cpuset.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/dbus.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/user.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/v1.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/v2.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/utils.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/cgroups/v1_utils.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/configs/blkio_device.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/configs/cgroup_linux.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/configs/cgroup_unsupported.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/configs/config.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/configs/config_linux.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/configs/configs_fuzzer.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/configs/hugepage_limit.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/configs/intelrdt.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/configs/interface_priority_map.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/configs/mount.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/configs/namespaces.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/configs/namespaces_linux.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/configs/namespaces_syscall.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/configs/namespaces_syscall_unsupported.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/configs/namespaces_unsupported.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/configs/network.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/configs/rdma.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/configs/validate/rootless.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/configs/validate/validator.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/console_linux.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/container.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/container_linux.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/criu_opts_linux.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/devices/device.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/devices/device_unix.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/error.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/factory.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/factory_linux.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/init_linux.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/intelrdt/cmt.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/intelrdt/intelrdt.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/intelrdt/mbm.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/intelrdt/monitoring.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/intelrdt/stats.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/keys/keyctl.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/logs/logs.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/message_linux.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/mount_linux.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/network_linux.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/notify_linux.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/notify_v2_linux.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/process.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/process_linux.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/restored_process.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/rootfs_linux.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/seccomp/config.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/seccomp/patchbpf/enosys_linux.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/seccomp/patchbpf/enosys_unsupported.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/seccomp/seccomp_linux.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/seccomp/seccomp_unsupported.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/setns_init_linux.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/standard_init_linux.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/state_linux.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/stats_linux.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/sync.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/system/linux.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/system/proc.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/system/syscall_linux_32.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/system/syscall_linux_64.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/user/lookup_unix.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/user/user.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/user/user_fuzzer.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/userns/userns.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/userns/userns_fuzzer.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/userns/userns_linux.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/userns/userns_unsupported.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/utils/cmsg.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/utils/utils.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/libcontainer/utils/utils_unix.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runc/types/events.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runtime-spec/LICENSE - mode change 100644 => 100755 vendor/github.com/opencontainers/runtime-spec/specs-go/config.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runtime-spec/specs-go/state.go - mode change 100644 => 100755 vendor/github.com/opencontainers/runtime-spec/specs-go/version.go - mode change 100644 => 100755 vendor/github.com/opencontainers/selinux/LICENSE - mode change 100644 => 100755 vendor/github.com/opencontainers/selinux/go-selinux/doc.go - mode change 100644 => 100755 vendor/github.com/opencontainers/selinux/go-selinux/label/label.go - mode change 100644 => 100755 vendor/github.com/opencontainers/selinux/go-selinux/label/label_linux.go - mode change 100644 => 100755 vendor/github.com/opencontainers/selinux/go-selinux/label/label_stub.go - mode change 100644 => 100755 vendor/github.com/opencontainers/selinux/go-selinux/rchcon.go - mode change 100644 => 100755 vendor/github.com/opencontainers/selinux/go-selinux/rchcon_go115.go - mode change 100644 => 100755 vendor/github.com/opencontainers/selinux/go-selinux/selinux.go - mode change 100644 => 100755 vendor/github.com/opencontainers/selinux/go-selinux/selinux_linux.go - mode change 100644 => 100755 vendor/github.com/opencontainers/selinux/go-selinux/selinux_stub.go - mode change 100644 => 100755 vendor/github.com/opencontainers/selinux/go-selinux/xattrs_linux.go - mode change 100644 => 100755 vendor/github.com/opencontainers/selinux/pkg/pwalk/README.md - mode change 100644 => 100755 vendor/github.com/opencontainers/selinux/pkg/pwalk/pwalk.go - mode change 100644 => 100755 vendor/github.com/opencontainers/selinux/pkg/pwalkdir/README.md - mode change 100644 => 100755 vendor/github.com/opencontainers/selinux/pkg/pwalkdir/pwalkdir.go - mode change 100644 => 100755 vendor/github.com/pkg/errors/.gitignore - mode change 100644 => 100755 vendor/github.com/pkg/errors/.travis.yml - mode change 100644 => 100755 vendor/github.com/pkg/errors/LICENSE - mode change 100644 => 100755 vendor/github.com/pkg/errors/Makefile - mode change 100644 => 100755 vendor/github.com/pkg/errors/README.md - mode change 100644 => 100755 vendor/github.com/pkg/errors/appveyor.yml - mode change 100644 => 100755 vendor/github.com/pkg/errors/errors.go - mode change 100644 => 100755 vendor/github.com/pkg/errors/go113.go - mode change 100644 => 100755 vendor/github.com/pkg/errors/stack.go - mode change 100644 => 100755 vendor/github.com/pmezard/go-difflib/LICENSE - mode change 100644 => 100755 vendor/github.com/pmezard/go-difflib/difflib/difflib.go - create mode 100755 vendor/github.com/prometheus/client_golang/LICENSE - create mode 100755 vendor/github.com/prometheus/client_golang/NOTICE - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/.gitignore - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/README.md - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/build_info_collector.go - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/collector.go - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/counter.go - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/desc.go - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/doc.go - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/expvar_collector.go - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/fnv.go - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/gauge.go - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/get_pid.go - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/get_pid_gopherjs.go - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/go_collector.go - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/go_collector_go116.go - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/go_collector_latest.go - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/histogram.go - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/internal/almost_equal.go - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/internal/difflib.go - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/internal/go_collector_options.go - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/internal/go_runtime_metrics.go - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/internal/metric.go - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/labels.go - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/metric.go - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/num_threads.go - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/num_threads_gopherjs.go - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/observer.go - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/process_collector.go - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/process_collector_js.go - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/process_collector_other.go - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/process_collector_windows.go - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/promhttp/delegator.go - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/promhttp/http.go - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/promhttp/instrument_client.go - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/promhttp/instrument_server.go - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/promhttp/option.go - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/registry.go - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/summary.go - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/timer.go - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/untyped.go - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/value.go - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/vec.go - create mode 100755 vendor/github.com/prometheus/client_golang/prometheus/wrap.go - mode change 100644 => 100755 vendor/github.com/prometheus/client_model/LICENSE - mode change 100644 => 100755 vendor/github.com/prometheus/client_model/NOTICE - mode change 100644 => 100755 vendor/github.com/prometheus/client_model/go/metrics.pb.go - mode change 100644 => 100755 vendor/github.com/prometheus/common/LICENSE - mode change 100644 => 100755 vendor/github.com/prometheus/common/NOTICE - mode change 100644 => 100755 vendor/github.com/prometheus/common/expfmt/decode.go - mode change 100644 => 100755 vendor/github.com/prometheus/common/expfmt/encode.go - mode change 100644 => 100755 vendor/github.com/prometheus/common/expfmt/expfmt.go - mode change 100644 => 100755 vendor/github.com/prometheus/common/expfmt/fuzz.go - mode change 100644 => 100755 vendor/github.com/prometheus/common/expfmt/openmetrics_create.go - mode change 100644 => 100755 vendor/github.com/prometheus/common/expfmt/text_create.go - mode change 100644 => 100755 vendor/github.com/prometheus/common/expfmt/text_parse.go - mode change 100644 => 100755 vendor/github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg/README.txt - mode change 100644 => 100755 vendor/github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg/autoneg.go - mode change 100644 => 100755 vendor/github.com/prometheus/common/model/alert.go - mode change 100644 => 100755 vendor/github.com/prometheus/common/model/fingerprinting.go - mode change 100644 => 100755 vendor/github.com/prometheus/common/model/fnv.go - mode change 100644 => 100755 vendor/github.com/prometheus/common/model/labels.go - mode change 100644 => 100755 vendor/github.com/prometheus/common/model/labelset.go - mode change 100644 => 100755 vendor/github.com/prometheus/common/model/metric.go - mode change 100644 => 100755 vendor/github.com/prometheus/common/model/model.go - mode change 100644 => 100755 vendor/github.com/prometheus/common/model/signature.go - mode change 100644 => 100755 vendor/github.com/prometheus/common/model/silence.go - mode change 100644 => 100755 vendor/github.com/prometheus/common/model/time.go - mode change 100644 => 100755 vendor/github.com/prometheus/common/model/value.go - create mode 100755 vendor/github.com/prometheus/procfs/.gitignore - create mode 100755 vendor/github.com/prometheus/procfs/.golangci.yml - create mode 100755 vendor/github.com/prometheus/procfs/CODE_OF_CONDUCT.md - create mode 100755 vendor/github.com/prometheus/procfs/CONTRIBUTING.md - create mode 100755 vendor/github.com/prometheus/procfs/LICENSE - create mode 100755 vendor/github.com/prometheus/procfs/MAINTAINERS.md - create mode 100755 vendor/github.com/prometheus/procfs/Makefile - create mode 100755 vendor/github.com/prometheus/procfs/Makefile.common - create mode 100755 vendor/github.com/prometheus/procfs/NOTICE - create mode 100755 vendor/github.com/prometheus/procfs/README.md - create mode 100755 vendor/github.com/prometheus/procfs/SECURITY.md - create mode 100755 vendor/github.com/prometheus/procfs/arp.go - create mode 100755 vendor/github.com/prometheus/procfs/buddyinfo.go - create mode 100755 vendor/github.com/prometheus/procfs/cmdline.go - create mode 100755 vendor/github.com/prometheus/procfs/cpuinfo.go - create mode 100755 vendor/github.com/prometheus/procfs/cpuinfo_armx.go - create mode 100755 vendor/github.com/prometheus/procfs/cpuinfo_mipsx.go - create mode 100755 vendor/github.com/prometheus/procfs/cpuinfo_others.go - create mode 100755 vendor/github.com/prometheus/procfs/cpuinfo_ppcx.go - create mode 100755 vendor/github.com/prometheus/procfs/cpuinfo_riscvx.go - create mode 100755 vendor/github.com/prometheus/procfs/cpuinfo_s390x.go - create mode 100755 vendor/github.com/prometheus/procfs/cpuinfo_x86.go - create mode 100755 vendor/github.com/prometheus/procfs/crypto.go - create mode 100755 vendor/github.com/prometheus/procfs/doc.go - create mode 100755 vendor/github.com/prometheus/procfs/fs.go - create mode 100755 vendor/github.com/prometheus/procfs/fscache.go - create mode 100755 vendor/github.com/prometheus/procfs/internal/fs/fs.go - create mode 100755 vendor/github.com/prometheus/procfs/internal/util/parse.go - create mode 100755 vendor/github.com/prometheus/procfs/internal/util/readfile.go - create mode 100755 vendor/github.com/prometheus/procfs/internal/util/sysreadfile.go - create mode 100755 vendor/github.com/prometheus/procfs/internal/util/sysreadfile_compat.go - create mode 100755 vendor/github.com/prometheus/procfs/internal/util/valueparser.go - create mode 100755 vendor/github.com/prometheus/procfs/ipvs.go - create mode 100755 vendor/github.com/prometheus/procfs/kernel_random.go - create mode 100755 vendor/github.com/prometheus/procfs/loadavg.go - create mode 100755 vendor/github.com/prometheus/procfs/mdstat.go - create mode 100755 vendor/github.com/prometheus/procfs/meminfo.go - create mode 100755 vendor/github.com/prometheus/procfs/mountinfo.go - create mode 100755 vendor/github.com/prometheus/procfs/mountstats.go - create mode 100755 vendor/github.com/prometheus/procfs/net_conntrackstat.go - create mode 100755 vendor/github.com/prometheus/procfs/net_dev.go - create mode 100755 vendor/github.com/prometheus/procfs/net_ip_socket.go - create mode 100755 vendor/github.com/prometheus/procfs/net_protocols.go - create mode 100755 vendor/github.com/prometheus/procfs/net_sockstat.go - create mode 100755 vendor/github.com/prometheus/procfs/net_softnet.go - create mode 100755 vendor/github.com/prometheus/procfs/net_tcp.go - create mode 100755 vendor/github.com/prometheus/procfs/net_udp.go - create mode 100755 vendor/github.com/prometheus/procfs/net_unix.go - create mode 100755 vendor/github.com/prometheus/procfs/net_xfrm.go - create mode 100755 vendor/github.com/prometheus/procfs/netstat.go - create mode 100755 vendor/github.com/prometheus/procfs/proc.go - create mode 100755 vendor/github.com/prometheus/procfs/proc_cgroup.go - create mode 100755 vendor/github.com/prometheus/procfs/proc_cgroups.go - create mode 100755 vendor/github.com/prometheus/procfs/proc_environ.go - create mode 100755 vendor/github.com/prometheus/procfs/proc_fdinfo.go - create mode 100755 vendor/github.com/prometheus/procfs/proc_io.go - create mode 100755 vendor/github.com/prometheus/procfs/proc_limits.go - create mode 100755 vendor/github.com/prometheus/procfs/proc_maps.go - create mode 100755 vendor/github.com/prometheus/procfs/proc_netstat.go - create mode 100755 vendor/github.com/prometheus/procfs/proc_ns.go - create mode 100755 vendor/github.com/prometheus/procfs/proc_psi.go - create mode 100755 vendor/github.com/prometheus/procfs/proc_smaps.go - create mode 100755 vendor/github.com/prometheus/procfs/proc_snmp.go - create mode 100755 vendor/github.com/prometheus/procfs/proc_snmp6.go - create mode 100755 vendor/github.com/prometheus/procfs/proc_stat.go - create mode 100755 vendor/github.com/prometheus/procfs/proc_status.go - create mode 100755 vendor/github.com/prometheus/procfs/proc_sys.go - create mode 100755 vendor/github.com/prometheus/procfs/schedstat.go - create mode 100755 vendor/github.com/prometheus/procfs/slab.go - create mode 100755 vendor/github.com/prometheus/procfs/softirqs.go - create mode 100755 vendor/github.com/prometheus/procfs/stat.go - create mode 100755 vendor/github.com/prometheus/procfs/swaps.go - create mode 100755 vendor/github.com/prometheus/procfs/ttar - create mode 100755 vendor/github.com/prometheus/procfs/vm.go - create mode 100755 vendor/github.com/prometheus/procfs/zoneinfo.go - mode change 100644 => 100755 vendor/github.com/seccomp/libseccomp-golang/.gitignore - mode change 100644 => 100755 vendor/github.com/seccomp/libseccomp-golang/.golangci.yml - mode change 100644 => 100755 vendor/github.com/seccomp/libseccomp-golang/CHANGELOG - mode change 100644 => 100755 vendor/github.com/seccomp/libseccomp-golang/CONTRIBUTING.md - mode change 100644 => 100755 vendor/github.com/seccomp/libseccomp-golang/LICENSE - mode change 100644 => 100755 vendor/github.com/seccomp/libseccomp-golang/Makefile - mode change 100644 => 100755 vendor/github.com/seccomp/libseccomp-golang/README.md - mode change 100644 => 100755 vendor/github.com/seccomp/libseccomp-golang/SECURITY.md - mode change 100644 => 100755 vendor/github.com/seccomp/libseccomp-golang/seccomp.go - mode change 100644 => 100755 vendor/github.com/seccomp/libseccomp-golang/seccomp_internal.go - mode change 100644 => 100755 vendor/github.com/sirupsen/logrus/.gitignore - mode change 100644 => 100755 vendor/github.com/sirupsen/logrus/.golangci.yml - mode change 100644 => 100755 vendor/github.com/sirupsen/logrus/.travis.yml - mode change 100644 => 100755 vendor/github.com/sirupsen/logrus/CHANGELOG.md - mode change 100644 => 100755 vendor/github.com/sirupsen/logrus/LICENSE - mode change 100644 => 100755 vendor/github.com/sirupsen/logrus/README.md - mode change 100644 => 100755 vendor/github.com/sirupsen/logrus/alt_exit.go - mode change 100644 => 100755 vendor/github.com/sirupsen/logrus/appveyor.yml - mode change 100644 => 100755 vendor/github.com/sirupsen/logrus/buffer_pool.go - mode change 100644 => 100755 vendor/github.com/sirupsen/logrus/doc.go - mode change 100644 => 100755 vendor/github.com/sirupsen/logrus/entry.go - mode change 100644 => 100755 vendor/github.com/sirupsen/logrus/exported.go - mode change 100644 => 100755 vendor/github.com/sirupsen/logrus/formatter.go - mode change 100644 => 100755 vendor/github.com/sirupsen/logrus/hooks.go - mode change 100644 => 100755 vendor/github.com/sirupsen/logrus/json_formatter.go - mode change 100644 => 100755 vendor/github.com/sirupsen/logrus/logger.go - mode change 100644 => 100755 vendor/github.com/sirupsen/logrus/logrus.go - mode change 100644 => 100755 vendor/github.com/sirupsen/logrus/terminal_check_appengine.go - mode change 100644 => 100755 vendor/github.com/sirupsen/logrus/terminal_check_bsd.go - mode change 100644 => 100755 vendor/github.com/sirupsen/logrus/terminal_check_js.go - mode change 100644 => 100755 vendor/github.com/sirupsen/logrus/terminal_check_no_terminal.go - mode change 100644 => 100755 vendor/github.com/sirupsen/logrus/terminal_check_notappengine.go - mode change 100644 => 100755 vendor/github.com/sirupsen/logrus/terminal_check_solaris.go - mode change 100644 => 100755 vendor/github.com/sirupsen/logrus/terminal_check_unix.go - mode change 100644 => 100755 vendor/github.com/sirupsen/logrus/terminal_check_windows.go - mode change 100644 => 100755 vendor/github.com/sirupsen/logrus/text_formatter.go - mode change 100644 => 100755 vendor/github.com/sirupsen/logrus/writer.go - mode change 100644 => 100755 vendor/github.com/stretchr/testify/LICENSE - mode change 100644 => 100755 vendor/github.com/stretchr/testify/assert/assertion_compare.go - mode change 100644 => 100755 vendor/github.com/stretchr/testify/assert/assertion_compare_can_convert.go - mode change 100644 => 100755 vendor/github.com/stretchr/testify/assert/assertion_compare_legacy.go - mode change 100644 => 100755 vendor/github.com/stretchr/testify/assert/assertion_format.go - mode change 100644 => 100755 vendor/github.com/stretchr/testify/assert/assertion_format.go.tmpl - mode change 100644 => 100755 vendor/github.com/stretchr/testify/assert/assertion_forward.go - mode change 100644 => 100755 vendor/github.com/stretchr/testify/assert/assertion_forward.go.tmpl - mode change 100644 => 100755 vendor/github.com/stretchr/testify/assert/assertion_order.go - mode change 100644 => 100755 vendor/github.com/stretchr/testify/assert/assertions.go - mode change 100644 => 100755 vendor/github.com/stretchr/testify/assert/doc.go - mode change 100644 => 100755 vendor/github.com/stretchr/testify/assert/errors.go - mode change 100644 => 100755 vendor/github.com/stretchr/testify/assert/forward_assertions.go - mode change 100644 => 100755 vendor/github.com/stretchr/testify/assert/http_assertions.go - mode change 100644 => 100755 vendor/github.com/syndtr/gocapability/LICENSE - mode change 100644 => 100755 vendor/github.com/syndtr/gocapability/capability/capability.go - mode change 100644 => 100755 vendor/github.com/syndtr/gocapability/capability/capability_linux.go - mode change 100644 => 100755 vendor/github.com/syndtr/gocapability/capability/capability_noop.go - mode change 100644 => 100755 vendor/github.com/syndtr/gocapability/capability/enum.go - mode change 100644 => 100755 vendor/github.com/syndtr/gocapability/capability/enum_gen.go - mode change 100644 => 100755 vendor/github.com/syndtr/gocapability/capability/syscall_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/.gitignore - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/.travis.yml - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/CHANGELOG.md - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/LICENSE - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/Makefile - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/README.md - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/addr.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/addr_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/bpf_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/bridge_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/class.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/class_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/conntrack_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/conntrack_unspecified.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/devlink_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/filter.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/filter_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/fou.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/fou_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/fou_unspecified.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/genetlink_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/genetlink_unspecified.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/gtp_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/handle_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/handle_unspecified.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/ioctl_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/link.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/link_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/link_tuntap_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/neigh.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/neigh_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/netlink.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/netlink_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/netlink_unspecified.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/netns_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/netns_unspecified.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/nl/addr_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/nl/bridge_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/nl/conntrack_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/nl/devlink_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/nl/genetlink_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/nl/link_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/nl/mpls_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/nl/nl_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/nl/nl_unspecified.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/nl/rdma_link_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/nl/route_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/nl/seg6_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/nl/seg6local_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/nl/syscall.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/nl/tc_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/nl/xfrm_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/nl/xfrm_monitor_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/nl/xfrm_policy_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/nl/xfrm_state_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/order.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/protinfo.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/protinfo_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/qdisc.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/qdisc_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/rdma_link_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/route.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/route_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/route_unspecified.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/rule.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/rule_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/socket.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/socket_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/xfrm.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/xfrm_monitor_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/xfrm_policy.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/xfrm_policy_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/xfrm_state.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netlink/xfrm_state_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netns/LICENSE - mode change 100644 => 100755 vendor/github.com/vishvananda/netns/README.md - mode change 100644 => 100755 vendor/github.com/vishvananda/netns/netns.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netns/netns_linux.go - mode change 100644 => 100755 vendor/github.com/vishvananda/netns/netns_unspecified.go - delete mode 100644 vendor/golang.org/x/crypto/AUTHORS - delete mode 100644 vendor/golang.org/x/crypto/CONTRIBUTORS - mode change 100644 => 100755 vendor/golang.org/x/crypto/LICENSE - mode change 100644 => 100755 vendor/golang.org/x/crypto/PATENTS - mode change 100644 => 100755 vendor/golang.org/x/crypto/ssh/terminal/terminal.go - mode change 100644 => 100755 vendor/golang.org/x/net/LICENSE - mode change 100644 => 100755 vendor/golang.org/x/net/PATENTS - mode change 100644 => 100755 vendor/golang.org/x/net/bpf/asm.go - mode change 100644 => 100755 vendor/golang.org/x/net/bpf/constants.go - mode change 100644 => 100755 vendor/golang.org/x/net/bpf/doc.go - mode change 100644 => 100755 vendor/golang.org/x/net/bpf/instructions.go - mode change 100644 => 100755 vendor/golang.org/x/net/bpf/setter.go - mode change 100644 => 100755 vendor/golang.org/x/net/bpf/vm.go - mode change 100644 => 100755 vendor/golang.org/x/net/bpf/vm_instructions.go - mode change 100644 => 100755 vendor/golang.org/x/net/context/context.go - delete mode 100644 vendor/golang.org/x/net/context/ctxhttp/ctxhttp.go - mode change 100644 => 100755 vendor/golang.org/x/net/context/go17.go - mode change 100644 => 100755 vendor/golang.org/x/net/context/go19.go - mode change 100644 => 100755 vendor/golang.org/x/net/context/pre_go17.go - mode change 100644 => 100755 vendor/golang.org/x/net/context/pre_go19.go - mode change 100644 => 100755 vendor/golang.org/x/net/http/httpguts/guts.go - mode change 100644 => 100755 vendor/golang.org/x/net/http/httpguts/httplex.go - mode change 100644 => 100755 vendor/golang.org/x/net/http2/.gitignore - delete mode 100644 vendor/golang.org/x/net/http2/Dockerfile - delete mode 100644 vendor/golang.org/x/net/http2/Makefile - mode change 100644 => 100755 vendor/golang.org/x/net/http2/ascii.go - mode change 100644 => 100755 vendor/golang.org/x/net/http2/ciphers.go - mode change 100644 => 100755 vendor/golang.org/x/net/http2/client_conn_pool.go - mode change 100644 => 100755 vendor/golang.org/x/net/http2/databuffer.go - mode change 100644 => 100755 vendor/golang.org/x/net/http2/errors.go - mode change 100644 => 100755 vendor/golang.org/x/net/http2/flow.go - mode change 100644 => 100755 vendor/golang.org/x/net/http2/frame.go - mode change 100644 => 100755 vendor/golang.org/x/net/http2/go111.go - mode change 100644 => 100755 vendor/golang.org/x/net/http2/go115.go - mode change 100644 => 100755 vendor/golang.org/x/net/http2/go118.go - mode change 100644 => 100755 vendor/golang.org/x/net/http2/gotrack.go - mode change 100644 => 100755 vendor/golang.org/x/net/http2/headermap.go - mode change 100644 => 100755 vendor/golang.org/x/net/http2/hpack/encode.go - mode change 100644 => 100755 vendor/golang.org/x/net/http2/hpack/hpack.go - mode change 100644 => 100755 vendor/golang.org/x/net/http2/hpack/huffman.go - mode change 100644 => 100755 vendor/golang.org/x/net/http2/hpack/static_table.go - mode change 100644 => 100755 vendor/golang.org/x/net/http2/hpack/tables.go - mode change 100644 => 100755 vendor/golang.org/x/net/http2/http2.go - mode change 100644 => 100755 vendor/golang.org/x/net/http2/not_go111.go - mode change 100644 => 100755 vendor/golang.org/x/net/http2/not_go115.go - mode change 100644 => 100755 vendor/golang.org/x/net/http2/not_go118.go - mode change 100644 => 100755 vendor/golang.org/x/net/http2/pipe.go - mode change 100644 => 100755 vendor/golang.org/x/net/http2/server.go - mode change 100644 => 100755 vendor/golang.org/x/net/http2/transport.go - mode change 100644 => 100755 vendor/golang.org/x/net/http2/write.go - mode change 100644 => 100755 vendor/golang.org/x/net/http2/writesched.go - mode change 100644 => 100755 vendor/golang.org/x/net/http2/writesched_priority.go - mode change 100644 => 100755 vendor/golang.org/x/net/http2/writesched_random.go - create mode 100755 vendor/golang.org/x/net/http2/writesched_roundrobin.go - mode change 100644 => 100755 vendor/golang.org/x/net/idna/go118.go - mode change 100644 => 100755 vendor/golang.org/x/net/idna/idna10.0.0.go - mode change 100644 => 100755 vendor/golang.org/x/net/idna/idna9.0.0.go - mode change 100644 => 100755 vendor/golang.org/x/net/idna/pre_go118.go - mode change 100644 => 100755 vendor/golang.org/x/net/idna/punycode.go - mode change 100644 => 100755 vendor/golang.org/x/net/idna/tables10.0.0.go - mode change 100644 => 100755 vendor/golang.org/x/net/idna/tables11.0.0.go - mode change 100644 => 100755 vendor/golang.org/x/net/idna/tables12.0.0.go - mode change 100644 => 100755 vendor/golang.org/x/net/idna/tables13.0.0.go - create mode 100755 vendor/golang.org/x/net/idna/tables15.0.0.go - mode change 100644 => 100755 vendor/golang.org/x/net/idna/tables9.0.0.go - mode change 100644 => 100755 vendor/golang.org/x/net/idna/trie.go - create mode 100755 vendor/golang.org/x/net/idna/trie12.0.0.go - create mode 100755 vendor/golang.org/x/net/idna/trie13.0.0.go - mode change 100644 => 100755 vendor/golang.org/x/net/idna/trieval.go - create mode 100755 vendor/golang.org/x/net/internal/timeseries/timeseries.go - create mode 100755 vendor/golang.org/x/net/trace/events.go - create mode 100755 vendor/golang.org/x/net/trace/histogram.go - create mode 100755 vendor/golang.org/x/net/trace/trace.go - mode change 100644 => 100755 vendor/golang.org/x/oauth2/.travis.yml - delete mode 100644 vendor/golang.org/x/oauth2/AUTHORS - mode change 100644 => 100755 vendor/golang.org/x/oauth2/CONTRIBUTING.md - delete mode 100644 vendor/golang.org/x/oauth2/CONTRIBUTORS - mode change 100644 => 100755 vendor/golang.org/x/oauth2/LICENSE - mode change 100644 => 100755 vendor/golang.org/x/oauth2/README.md - mode change 100644 => 100755 vendor/golang.org/x/oauth2/internal/client_appengine.go - mode change 100644 => 100755 vendor/golang.org/x/oauth2/internal/doc.go - mode change 100644 => 100755 vendor/golang.org/x/oauth2/internal/oauth2.go - mode change 100644 => 100755 vendor/golang.org/x/oauth2/internal/token.go - mode change 100644 => 100755 vendor/golang.org/x/oauth2/internal/transport.go - mode change 100644 => 100755 vendor/golang.org/x/oauth2/oauth2.go - mode change 100644 => 100755 vendor/golang.org/x/oauth2/token.go - mode change 100644 => 100755 vendor/golang.org/x/oauth2/transport.go - mode change 100644 => 100755 vendor/golang.org/x/sys/LICENSE - mode change 100644 => 100755 vendor/golang.org/x/sys/PATENTS - delete mode 100644 vendor/golang.org/x/sys/internal/unsafeheader/unsafeheader.go - mode change 100644 => 100755 vendor/golang.org/x/sys/plan9/asm.s - mode change 100644 => 100755 vendor/golang.org/x/sys/plan9/asm_plan9_386.s - mode change 100644 => 100755 vendor/golang.org/x/sys/plan9/asm_plan9_amd64.s - mode change 100644 => 100755 vendor/golang.org/x/sys/plan9/asm_plan9_arm.s - mode change 100644 => 100755 vendor/golang.org/x/sys/plan9/const_plan9.go - mode change 100644 => 100755 vendor/golang.org/x/sys/plan9/dir_plan9.go - mode change 100644 => 100755 vendor/golang.org/x/sys/plan9/env_plan9.go - mode change 100644 => 100755 vendor/golang.org/x/sys/plan9/errors_plan9.go - mode change 100644 => 100755 vendor/golang.org/x/sys/plan9/mkall.sh - mode change 100644 => 100755 vendor/golang.org/x/sys/plan9/mkerrors.sh - mode change 100644 => 100755 vendor/golang.org/x/sys/plan9/mksysnum_plan9.sh - mode change 100644 => 100755 vendor/golang.org/x/sys/plan9/pwd_go15_plan9.go - mode change 100644 => 100755 vendor/golang.org/x/sys/plan9/pwd_plan9.go - mode change 100644 => 100755 vendor/golang.org/x/sys/plan9/race.go - mode change 100644 => 100755 vendor/golang.org/x/sys/plan9/race0.go - mode change 100644 => 100755 vendor/golang.org/x/sys/plan9/str.go - mode change 100644 => 100755 vendor/golang.org/x/sys/plan9/syscall.go - mode change 100644 => 100755 vendor/golang.org/x/sys/plan9/syscall_plan9.go - mode change 100644 => 100755 vendor/golang.org/x/sys/plan9/zsyscall_plan9_386.go - mode change 100644 => 100755 vendor/golang.org/x/sys/plan9/zsyscall_plan9_amd64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/plan9/zsyscall_plan9_arm.go - mode change 100644 => 100755 vendor/golang.org/x/sys/plan9/zsysnum_plan9.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/.gitignore - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/README.md - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/affinity_linux.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/aliases.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/asm_aix_ppc64.s - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/asm_bsd_386.s - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/asm_bsd_amd64.s - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/asm_bsd_arm.s - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/asm_bsd_arm64.s - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/asm_bsd_ppc64.s - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/asm_bsd_riscv64.s - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/asm_linux_386.s - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/asm_linux_amd64.s - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/asm_linux_arm.s - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/asm_linux_arm64.s - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/asm_linux_loong64.s - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/asm_linux_mips64x.s - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/asm_linux_mipsx.s - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/asm_linux_riscv64.s - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/asm_linux_s390x.s - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/asm_openbsd_mips64.s - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/asm_solaris_amd64.s - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/asm_zos_s390x.s - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/bluetooth_linux.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/cap_freebsd.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/constants.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/dev_aix_ppc.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/dev_aix_ppc64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/dev_darwin.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/dev_dragonfly.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/dev_freebsd.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/dev_linux.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/dev_netbsd.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/dev_openbsd.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/dev_zos.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/dirent.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/endian_big.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/endian_little.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/env_unix.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/epoll_zos.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/fcntl.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/fcntl_darwin.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/fdset.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/fstatfs_zos.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/gccgo.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/gccgo_c.c - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ifreq_linux.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ioctl_linux.go - create mode 100755 vendor/golang.org/x/sys/unix/ioctl_signed.go - rename vendor/golang.org/x/sys/unix/{ioctl.go => ioctl_unsigned.go} (77%) - mode change 100644 => 100755 - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ioctl_zos.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/mkall.sh - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/mkerrors.sh - create mode 100755 vendor/golang.org/x/sys/unix/mmap_nomremap.go - create mode 100755 vendor/golang.org/x/sys/unix/mremap.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/pagesize_unix.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/pledge_openbsd.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ptrace_darwin.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ptrace_ios.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/race.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/race0.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/readdirent_getdents.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/readdirent_getdirentries.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/sockcmsg_dragonfly.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/sockcmsg_linux.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/sockcmsg_unix.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_aix.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_aix_ppc.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_bsd.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_darwin.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_dragonfly.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_freebsd.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_freebsd_386.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go - create mode 100755 vendor/golang.org/x/sys/unix/syscall_hurd.go - create mode 100755 vendor/golang.org/x/sys/unix/syscall_hurd_386.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_illumos.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_linux.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_linux_386.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_linux_alarm.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_linux_amd64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_linux_arm.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_linux_arm64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_linux_gc.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_linux_loong64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_linux_ppc.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_linux_s390x.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_netbsd.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_netbsd_386.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_openbsd.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_openbsd_386.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_openbsd_libc.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_openbsd_mips64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_openbsd_ppc64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_openbsd_riscv64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_solaris.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_unix.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_unix_gc.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/syscall_zos_s390x.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/sysvshm_linux.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/sysvshm_unix.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/sysvshm_unix_other.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/timestruct.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/unveil_openbsd.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/xattr_bsd.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zerrors_freebsd_riscv64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zerrors_linux.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zerrors_linux_386.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zerrors_linux_arm.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zerrors_linux_mips.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zerrors_openbsd_ppc64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zerrors_openbsd_riscv64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zptrace_armnn_linux.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zptrace_linux_arm64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zptrace_x86_linux.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_linux.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_linux_386.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_linux_loong64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go - create mode 100755 vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysctl_openbsd_ppc64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysctl_openbsd_riscv64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysnum_freebsd_riscv64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysnum_linux_386.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysnum_openbsd_ppc64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysnum_openbsd_riscv64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/zsysnum_zos_s390x.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ztypes_linux.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ztypes_linux_386.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ztypes_linux_arm.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ztypes_linux_mips.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ztypes_openbsd_ppc64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ztypes_openbsd_riscv64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go - mode change 100644 => 100755 vendor/golang.org/x/sys/windows/aliases.go - mode change 100644 => 100755 vendor/golang.org/x/sys/windows/dll_windows.go - mode change 100644 => 100755 vendor/golang.org/x/sys/windows/empty.s - mode change 100644 => 100755 vendor/golang.org/x/sys/windows/env_windows.go - mode change 100644 => 100755 vendor/golang.org/x/sys/windows/eventlog.go - mode change 100644 => 100755 vendor/golang.org/x/sys/windows/exec_windows.go - mode change 100644 => 100755 vendor/golang.org/x/sys/windows/memory_windows.go - mode change 100644 => 100755 vendor/golang.org/x/sys/windows/mkerrors.bash - mode change 100644 => 100755 vendor/golang.org/x/sys/windows/mkknownfolderids.bash - mode change 100644 => 100755 vendor/golang.org/x/sys/windows/mksyscall.go - mode change 100644 => 100755 vendor/golang.org/x/sys/windows/race.go - mode change 100644 => 100755 vendor/golang.org/x/sys/windows/race0.go - mode change 100644 => 100755 vendor/golang.org/x/sys/windows/registry/key.go - mode change 100644 => 100755 vendor/golang.org/x/sys/windows/registry/mksyscall.go - mode change 100644 => 100755 vendor/golang.org/x/sys/windows/registry/syscall.go - mode change 100644 => 100755 vendor/golang.org/x/sys/windows/registry/value.go - mode change 100644 => 100755 vendor/golang.org/x/sys/windows/registry/zsyscall_windows.go - mode change 100644 => 100755 vendor/golang.org/x/sys/windows/security_windows.go - mode change 100644 => 100755 vendor/golang.org/x/sys/windows/service.go - mode change 100644 => 100755 vendor/golang.org/x/sys/windows/setupapi_windows.go - mode change 100644 => 100755 vendor/golang.org/x/sys/windows/str.go - mode change 100644 => 100755 vendor/golang.org/x/sys/windows/syscall.go - mode change 100644 => 100755 vendor/golang.org/x/sys/windows/syscall_windows.go - mode change 100644 => 100755 vendor/golang.org/x/sys/windows/types_windows.go - mode change 100644 => 100755 vendor/golang.org/x/sys/windows/types_windows_386.go - mode change 100644 => 100755 vendor/golang.org/x/sys/windows/types_windows_amd64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/windows/types_windows_arm.go - mode change 100644 => 100755 vendor/golang.org/x/sys/windows/types_windows_arm64.go - mode change 100644 => 100755 vendor/golang.org/x/sys/windows/zerrors_windows.go - mode change 100644 => 100755 vendor/golang.org/x/sys/windows/zknownfolderids_windows.go - mode change 100644 => 100755 vendor/golang.org/x/sys/windows/zsyscall_windows.go - mode change 100644 => 100755 vendor/golang.org/x/term/CONTRIBUTING.md - mode change 100644 => 100755 vendor/golang.org/x/term/LICENSE - mode change 100644 => 100755 vendor/golang.org/x/term/PATENTS - mode change 100644 => 100755 vendor/golang.org/x/term/README.md - mode change 100644 => 100755 vendor/golang.org/x/term/codereview.cfg - mode change 100644 => 100755 vendor/golang.org/x/term/term.go - mode change 100644 => 100755 vendor/golang.org/x/term/term_plan9.go - mode change 100644 => 100755 vendor/golang.org/x/term/term_unix.go - mode change 100644 => 100755 vendor/golang.org/x/term/term_unix_bsd.go - mode change 100644 => 100755 vendor/golang.org/x/term/term_unix_other.go - mode change 100644 => 100755 vendor/golang.org/x/term/term_unsupported.go - mode change 100644 => 100755 vendor/golang.org/x/term/term_windows.go - mode change 100644 => 100755 vendor/golang.org/x/term/terminal.go - mode change 100644 => 100755 vendor/golang.org/x/text/LICENSE - mode change 100644 => 100755 vendor/golang.org/x/text/PATENTS - mode change 100644 => 100755 vendor/golang.org/x/text/secure/bidirule/bidirule.go - mode change 100644 => 100755 vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0.go - mode change 100644 => 100755 vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0.go - mode change 100644 => 100755 vendor/golang.org/x/text/transform/transform.go - mode change 100644 => 100755 vendor/golang.org/x/text/unicode/bidi/bidi.go - mode change 100644 => 100755 vendor/golang.org/x/text/unicode/bidi/bracket.go - mode change 100644 => 100755 vendor/golang.org/x/text/unicode/bidi/core.go - mode change 100644 => 100755 vendor/golang.org/x/text/unicode/bidi/prop.go - mode change 100644 => 100755 vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go - mode change 100644 => 100755 vendor/golang.org/x/text/unicode/bidi/tables11.0.0.go - mode change 100644 => 100755 vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go - mode change 100644 => 100755 vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go - create mode 100755 vendor/golang.org/x/text/unicode/bidi/tables15.0.0.go - mode change 100644 => 100755 vendor/golang.org/x/text/unicode/bidi/tables9.0.0.go - mode change 100644 => 100755 vendor/golang.org/x/text/unicode/bidi/trieval.go - mode change 100644 => 100755 vendor/golang.org/x/text/unicode/norm/composition.go - mode change 100644 => 100755 vendor/golang.org/x/text/unicode/norm/forminfo.go - mode change 100644 => 100755 vendor/golang.org/x/text/unicode/norm/input.go - mode change 100644 => 100755 vendor/golang.org/x/text/unicode/norm/iter.go - mode change 100644 => 100755 vendor/golang.org/x/text/unicode/norm/normalize.go - mode change 100644 => 100755 vendor/golang.org/x/text/unicode/norm/readwriter.go - mode change 100644 => 100755 vendor/golang.org/x/text/unicode/norm/tables10.0.0.go - mode change 100644 => 100755 vendor/golang.org/x/text/unicode/norm/tables11.0.0.go - mode change 100644 => 100755 vendor/golang.org/x/text/unicode/norm/tables12.0.0.go - mode change 100644 => 100755 vendor/golang.org/x/text/unicode/norm/tables13.0.0.go - create mode 100755 vendor/golang.org/x/text/unicode/norm/tables15.0.0.go - mode change 100644 => 100755 vendor/golang.org/x/text/unicode/norm/tables9.0.0.go - mode change 100644 => 100755 vendor/golang.org/x/text/unicode/norm/transform.go - mode change 100644 => 100755 vendor/golang.org/x/text/unicode/norm/trie.go - mode change 100644 => 100755 vendor/golang.org/x/time/AUTHORS - mode change 100644 => 100755 vendor/golang.org/x/time/CONTRIBUTORS - mode change 100644 => 100755 vendor/golang.org/x/time/LICENSE - mode change 100644 => 100755 vendor/golang.org/x/time/PATENTS - mode change 100644 => 100755 vendor/golang.org/x/time/rate/rate.go - mode change 100644 => 100755 vendor/google.golang.org/appengine/LICENSE - mode change 100644 => 100755 vendor/google.golang.org/appengine/internal/api.go - mode change 100644 => 100755 vendor/google.golang.org/appengine/internal/api_classic.go - mode change 100644 => 100755 vendor/google.golang.org/appengine/internal/api_common.go - mode change 100644 => 100755 vendor/google.golang.org/appengine/internal/app_id.go - mode change 100644 => 100755 vendor/google.golang.org/appengine/internal/base/api_base.pb.go - mode change 100644 => 100755 vendor/google.golang.org/appengine/internal/base/api_base.proto - mode change 100644 => 100755 vendor/google.golang.org/appengine/internal/datastore/datastore_v3.pb.go - mode change 100644 => 100755 vendor/google.golang.org/appengine/internal/datastore/datastore_v3.proto - mode change 100644 => 100755 vendor/google.golang.org/appengine/internal/identity.go - mode change 100644 => 100755 vendor/google.golang.org/appengine/internal/identity_classic.go - mode change 100644 => 100755 vendor/google.golang.org/appengine/internal/identity_flex.go - mode change 100644 => 100755 vendor/google.golang.org/appengine/internal/identity_vm.go - mode change 100644 => 100755 vendor/google.golang.org/appengine/internal/internal.go - mode change 100644 => 100755 vendor/google.golang.org/appengine/internal/log/log_service.pb.go - mode change 100644 => 100755 vendor/google.golang.org/appengine/internal/log/log_service.proto - mode change 100644 => 100755 vendor/google.golang.org/appengine/internal/main.go - mode change 100644 => 100755 vendor/google.golang.org/appengine/internal/main_common.go - mode change 100644 => 100755 vendor/google.golang.org/appengine/internal/main_vm.go - mode change 100644 => 100755 vendor/google.golang.org/appengine/internal/metadata.go - mode change 100644 => 100755 vendor/google.golang.org/appengine/internal/net.go - mode change 100644 => 100755 vendor/google.golang.org/appengine/internal/regen.sh - mode change 100644 => 100755 vendor/google.golang.org/appengine/internal/remote_api/remote_api.pb.go - mode change 100644 => 100755 vendor/google.golang.org/appengine/internal/remote_api/remote_api.proto - mode change 100644 => 100755 vendor/google.golang.org/appengine/internal/transaction.go - mode change 100644 => 100755 vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.pb.go - mode change 100644 => 100755 vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.proto - mode change 100644 => 100755 vendor/google.golang.org/appengine/urlfetch/urlfetch.go - create mode 100755 vendor/google.golang.org/genproto/googleapis/rpc/LICENSE - create mode 100755 vendor/google.golang.org/genproto/googleapis/rpc/status/status.pb.go - create mode 100755 vendor/google.golang.org/grpc/AUTHORS - create mode 100755 vendor/google.golang.org/grpc/CODE-OF-CONDUCT.md - create mode 100755 vendor/google.golang.org/grpc/CONTRIBUTING.md - create mode 100755 vendor/google.golang.org/grpc/GOVERNANCE.md - create mode 100755 vendor/google.golang.org/grpc/LICENSE - create mode 100755 vendor/google.golang.org/grpc/MAINTAINERS.md - create mode 100755 vendor/google.golang.org/grpc/Makefile - create mode 100755 vendor/google.golang.org/grpc/NOTICE.txt - create mode 100755 vendor/google.golang.org/grpc/README.md - create mode 100755 vendor/google.golang.org/grpc/SECURITY.md - create mode 100755 vendor/google.golang.org/grpc/attributes/attributes.go - create mode 100755 vendor/google.golang.org/grpc/backoff.go - create mode 100755 vendor/google.golang.org/grpc/backoff/backoff.go - create mode 100755 vendor/google.golang.org/grpc/balancer/balancer.go - create mode 100755 vendor/google.golang.org/grpc/balancer/base/balancer.go - create mode 100755 vendor/google.golang.org/grpc/balancer/base/base.go - create mode 100755 vendor/google.golang.org/grpc/balancer/conn_state_evaluator.go - create mode 100755 vendor/google.golang.org/grpc/balancer/grpclb/state/state.go - create mode 100755 vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go - create mode 100755 vendor/google.golang.org/grpc/balancer_conn_wrappers.go - create mode 100755 vendor/google.golang.org/grpc/binarylog/grpc_binarylog_v1/binarylog.pb.go - create mode 100755 vendor/google.golang.org/grpc/call.go - create mode 100755 vendor/google.golang.org/grpc/channelz/channelz.go - create mode 100755 vendor/google.golang.org/grpc/clientconn.go - create mode 100755 vendor/google.golang.org/grpc/codec.go - create mode 100755 vendor/google.golang.org/grpc/codegen.sh - create mode 100755 vendor/google.golang.org/grpc/codes/code_string.go - create mode 100755 vendor/google.golang.org/grpc/codes/codes.go - create mode 100755 vendor/google.golang.org/grpc/connectivity/connectivity.go - create mode 100755 vendor/google.golang.org/grpc/credentials/credentials.go - create mode 100755 vendor/google.golang.org/grpc/credentials/insecure/insecure.go - create mode 100755 vendor/google.golang.org/grpc/credentials/tls.go - create mode 100755 vendor/google.golang.org/grpc/dialoptions.go - create mode 100755 vendor/google.golang.org/grpc/doc.go - create mode 100755 vendor/google.golang.org/grpc/encoding/encoding.go - create mode 100755 vendor/google.golang.org/grpc/encoding/proto/proto.go - create mode 100755 vendor/google.golang.org/grpc/grpclog/component.go - create mode 100755 vendor/google.golang.org/grpc/grpclog/grpclog.go - create mode 100755 vendor/google.golang.org/grpc/grpclog/logger.go - create mode 100755 vendor/google.golang.org/grpc/grpclog/loggerv2.go - create mode 100755 vendor/google.golang.org/grpc/idle.go - create mode 100755 vendor/google.golang.org/grpc/interceptor.go - create mode 100755 vendor/google.golang.org/grpc/internal/backoff/backoff.go - create mode 100755 vendor/google.golang.org/grpc/internal/balancer/gracefulswitch/gracefulswitch.go - create mode 100755 vendor/google.golang.org/grpc/internal/balancerload/load.go - create mode 100755 vendor/google.golang.org/grpc/internal/binarylog/binarylog.go - create mode 100755 vendor/google.golang.org/grpc/internal/binarylog/binarylog_testutil.go - create mode 100755 vendor/google.golang.org/grpc/internal/binarylog/env_config.go - create mode 100755 vendor/google.golang.org/grpc/internal/binarylog/method_logger.go - create mode 100755 vendor/google.golang.org/grpc/internal/binarylog/sink.go - create mode 100755 vendor/google.golang.org/grpc/internal/buffer/unbounded.go - create mode 100755 vendor/google.golang.org/grpc/internal/channelz/funcs.go - create mode 100755 vendor/google.golang.org/grpc/internal/channelz/id.go - create mode 100755 vendor/google.golang.org/grpc/internal/channelz/logging.go - create mode 100755 vendor/google.golang.org/grpc/internal/channelz/types.go - create mode 100755 vendor/google.golang.org/grpc/internal/channelz/types_linux.go - create mode 100755 vendor/google.golang.org/grpc/internal/channelz/types_nonlinux.go - create mode 100755 vendor/google.golang.org/grpc/internal/channelz/util_linux.go - create mode 100755 vendor/google.golang.org/grpc/internal/channelz/util_nonlinux.go - create mode 100755 vendor/google.golang.org/grpc/internal/credentials/credentials.go - create mode 100755 vendor/google.golang.org/grpc/internal/credentials/spiffe.go - create mode 100755 vendor/google.golang.org/grpc/internal/credentials/syscallconn.go - create mode 100755 vendor/google.golang.org/grpc/internal/credentials/util.go - create mode 100755 vendor/google.golang.org/grpc/internal/envconfig/envconfig.go - create mode 100755 vendor/google.golang.org/grpc/internal/envconfig/observability.go - create mode 100755 vendor/google.golang.org/grpc/internal/envconfig/xds.go - create mode 100755 vendor/google.golang.org/grpc/internal/grpclog/grpclog.go - create mode 100755 vendor/google.golang.org/grpc/internal/grpclog/prefixLogger.go - create mode 100755 vendor/google.golang.org/grpc/internal/grpcrand/grpcrand.go - create mode 100755 vendor/google.golang.org/grpc/internal/grpcsync/callback_serializer.go - create mode 100755 vendor/google.golang.org/grpc/internal/grpcsync/event.go - create mode 100755 vendor/google.golang.org/grpc/internal/grpcsync/oncefunc.go - create mode 100755 vendor/google.golang.org/grpc/internal/grpcsync/pubsub.go - create mode 100755 vendor/google.golang.org/grpc/internal/grpcutil/compressor.go - create mode 100755 vendor/google.golang.org/grpc/internal/grpcutil/encode_duration.go - create mode 100755 vendor/google.golang.org/grpc/internal/grpcutil/grpcutil.go - create mode 100755 vendor/google.golang.org/grpc/internal/grpcutil/metadata.go - create mode 100755 vendor/google.golang.org/grpc/internal/grpcutil/method.go - create mode 100755 vendor/google.golang.org/grpc/internal/grpcutil/regex.go - create mode 100755 vendor/google.golang.org/grpc/internal/internal.go - create mode 100755 vendor/google.golang.org/grpc/internal/metadata/metadata.go - create mode 100755 vendor/google.golang.org/grpc/internal/pretty/pretty.go - create mode 100755 vendor/google.golang.org/grpc/internal/resolver/config_selector.go - create mode 100755 vendor/google.golang.org/grpc/internal/resolver/dns/dns_resolver.go - create mode 100755 vendor/google.golang.org/grpc/internal/resolver/passthrough/passthrough.go - create mode 100755 vendor/google.golang.org/grpc/internal/resolver/unix/unix.go - create mode 100755 vendor/google.golang.org/grpc/internal/serviceconfig/duration.go - create mode 100755 vendor/google.golang.org/grpc/internal/serviceconfig/serviceconfig.go - create mode 100755 vendor/google.golang.org/grpc/internal/status/status.go - create mode 100755 vendor/google.golang.org/grpc/internal/syscall/syscall_linux.go - create mode 100755 vendor/google.golang.org/grpc/internal/syscall/syscall_nonlinux.go - create mode 100755 vendor/google.golang.org/grpc/internal/transport/bdp_estimator.go - create mode 100755 vendor/google.golang.org/grpc/internal/transport/controlbuf.go - create mode 100755 vendor/google.golang.org/grpc/internal/transport/defaults.go - create mode 100755 vendor/google.golang.org/grpc/internal/transport/flowcontrol.go - create mode 100755 vendor/google.golang.org/grpc/internal/transport/handler_server.go - create mode 100755 vendor/google.golang.org/grpc/internal/transport/http2_client.go - create mode 100755 vendor/google.golang.org/grpc/internal/transport/http2_server.go - create mode 100755 vendor/google.golang.org/grpc/internal/transport/http_util.go - create mode 100755 vendor/google.golang.org/grpc/internal/transport/logging.go - create mode 100755 vendor/google.golang.org/grpc/internal/transport/networktype/networktype.go - create mode 100755 vendor/google.golang.org/grpc/internal/transport/proxy.go - create mode 100755 vendor/google.golang.org/grpc/internal/transport/transport.go - create mode 100755 vendor/google.golang.org/grpc/internal/xds_handshake_cluster.go - create mode 100755 vendor/google.golang.org/grpc/keepalive/keepalive.go - create mode 100755 vendor/google.golang.org/grpc/metadata/metadata.go - create mode 100755 vendor/google.golang.org/grpc/peer/peer.go - create mode 100755 vendor/google.golang.org/grpc/picker_wrapper.go - create mode 100755 vendor/google.golang.org/grpc/pickfirst.go - create mode 100755 vendor/google.golang.org/grpc/preloader.go - create mode 100755 vendor/google.golang.org/grpc/regenerate.sh - create mode 100755 vendor/google.golang.org/grpc/resolver/map.go - create mode 100755 vendor/google.golang.org/grpc/resolver/resolver.go - create mode 100755 vendor/google.golang.org/grpc/resolver_conn_wrapper.go - create mode 100755 vendor/google.golang.org/grpc/rpc_util.go - create mode 100755 vendor/google.golang.org/grpc/server.go - create mode 100755 vendor/google.golang.org/grpc/service_config.go - create mode 100755 vendor/google.golang.org/grpc/serviceconfig/serviceconfig.go - create mode 100755 vendor/google.golang.org/grpc/shared_buffer_pool.go - create mode 100755 vendor/google.golang.org/grpc/stats/handlers.go - create mode 100755 vendor/google.golang.org/grpc/stats/stats.go - create mode 100755 vendor/google.golang.org/grpc/status/status.go - create mode 100755 vendor/google.golang.org/grpc/stream.go - create mode 100755 vendor/google.golang.org/grpc/tap/tap.go - create mode 100755 vendor/google.golang.org/grpc/trace.go - create mode 100755 vendor/google.golang.org/grpc/version.go - create mode 100755 vendor/google.golang.org/grpc/vet.sh - mode change 100644 => 100755 vendor/google.golang.org/protobuf/LICENSE - mode change 100644 => 100755 vendor/google.golang.org/protobuf/PATENTS - create mode 100755 vendor/google.golang.org/protobuf/encoding/protojson/decode.go - create mode 100755 vendor/google.golang.org/protobuf/encoding/protojson/doc.go - create mode 100755 vendor/google.golang.org/protobuf/encoding/protojson/encode.go - create mode 100755 vendor/google.golang.org/protobuf/encoding/protojson/well_known_types.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/encoding/prototext/decode.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/encoding/prototext/doc.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/encoding/prototext/encode.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/encoding/protowire/wire.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/descfmt/stringer.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/descopts/options.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/detrand/rand.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/encoding/defval/default.go - create mode 100755 vendor/google.golang.org/protobuf/internal/encoding/json/decode.go - create mode 100755 vendor/google.golang.org/protobuf/internal/encoding/json/decode_number.go - create mode 100755 vendor/google.golang.org/protobuf/internal/encoding/json/decode_string.go - create mode 100755 vendor/google.golang.org/protobuf/internal/encoding/json/decode_token.go - create mode 100755 vendor/google.golang.org/protobuf/internal/encoding/json/encode.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/encoding/messageset/messageset.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/encoding/text/decode.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/encoding/text/decode_number.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/encoding/text/decode_string.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/encoding/text/decode_token.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/encoding/text/doc.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/encoding/text/encode.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/errors/errors.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/errors/is_go112.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/errors/is_go113.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/filedesc/build.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/filedesc/desc.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/filedesc/desc_list.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/filedesc/desc_list_gen.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/filedesc/placeholder.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/filetype/build.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/flags/flags.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/flags/proto_legacy_disable.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/flags/proto_legacy_enable.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/genid/any_gen.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/genid/api_gen.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/genid/doc.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/genid/duration_gen.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/genid/empty_gen.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/genid/field_mask_gen.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/genid/goname.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/genid/map_entry.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/genid/source_context_gen.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/genid/struct_gen.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/genid/timestamp_gen.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/genid/type_gen.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/genid/wrappers.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/genid/wrappers_gen.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/impl/api_export.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/impl/checkinit.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/impl/codec_extension.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/impl/codec_field.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/impl/codec_gen.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/impl/codec_map.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/impl/codec_map_go111.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/impl/codec_map_go112.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/impl/codec_message.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/impl/codec_messageset.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/impl/codec_reflect.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/impl/codec_tables.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/impl/convert.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/impl/convert_list.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/impl/convert_map.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/impl/decode.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/impl/encode.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/impl/enum.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/impl/extension.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/impl/legacy_export.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/impl/legacy_file.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/impl/legacy_message.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/impl/merge.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/impl/merge_gen.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/impl/message.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/impl/message_reflect.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/impl/validate.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/impl/weak.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/order/order.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/order/range.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/pragma/pragma.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/set/ints.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/strs/strings.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/strs/strings_pure.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/strs/strings_unsafe.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/internal/version/version.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/proto/checkinit.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/proto/decode.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/proto/decode_gen.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/proto/doc.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/proto/encode.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/proto/encode_gen.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/proto/equal.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/proto/extension.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/proto/merge.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/proto/messageset.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/proto/proto.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/proto/proto_methods.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/proto/proto_reflect.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/proto/reset.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/proto/size.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/proto/size_gen.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/proto/wrappers.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/reflect/protodesc/desc.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/reflect/protodesc/desc_resolve.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/reflect/protodesc/desc_validate.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/reflect/protodesc/proto.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/reflect/protoreflect/source.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/reflect/protoreflect/type.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/reflect/protoreflect/value.go - create mode 100755 vendor/google.golang.org/protobuf/reflect/protoreflect/value_equal.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/reflect/protoreflect/value_pure.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/runtime/protoiface/legacy.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/runtime/protoiface/methods.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/runtime/protoimpl/impl.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/runtime/protoimpl/version.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/types/known/anypb/any.pb.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/types/known/durationpb/duration.pb.go - mode change 100644 => 100755 vendor/google.golang.org/protobuf/types/known/timestamppb/timestamp.pb.go - mode change 100644 => 100755 vendor/gopkg.in/inf.v0/LICENSE - mode change 100644 => 100755 vendor/gopkg.in/inf.v0/dec.go - mode change 100644 => 100755 vendor/gopkg.in/inf.v0/rounder.go - mode change 100644 => 100755 vendor/gopkg.in/yaml.v2/.travis.yml - mode change 100644 => 100755 vendor/gopkg.in/yaml.v2/LICENSE - mode change 100644 => 100755 vendor/gopkg.in/yaml.v2/LICENSE.libyaml - mode change 100644 => 100755 vendor/gopkg.in/yaml.v2/NOTICE - mode change 100644 => 100755 vendor/gopkg.in/yaml.v2/README.md - mode change 100644 => 100755 vendor/gopkg.in/yaml.v2/apic.go - mode change 100644 => 100755 vendor/gopkg.in/yaml.v2/decode.go - mode change 100644 => 100755 vendor/gopkg.in/yaml.v2/emitterc.go - mode change 100644 => 100755 vendor/gopkg.in/yaml.v2/encode.go - mode change 100644 => 100755 vendor/gopkg.in/yaml.v2/parserc.go - mode change 100644 => 100755 vendor/gopkg.in/yaml.v2/readerc.go - mode change 100644 => 100755 vendor/gopkg.in/yaml.v2/resolve.go - mode change 100644 => 100755 vendor/gopkg.in/yaml.v2/scannerc.go - mode change 100644 => 100755 vendor/gopkg.in/yaml.v2/sorter.go - mode change 100644 => 100755 vendor/gopkg.in/yaml.v2/writerc.go - mode change 100644 => 100755 vendor/gopkg.in/yaml.v2/yaml.go - mode change 100644 => 100755 vendor/gopkg.in/yaml.v2/yamlh.go - mode change 100644 => 100755 vendor/gopkg.in/yaml.v2/yamlprivateh.go - mode change 100644 => 100755 vendor/gopkg.in/yaml.v3/LICENSE - mode change 100644 => 100755 vendor/gopkg.in/yaml.v3/NOTICE - mode change 100644 => 100755 vendor/gopkg.in/yaml.v3/README.md - mode change 100644 => 100755 vendor/gopkg.in/yaml.v3/apic.go - mode change 100644 => 100755 vendor/gopkg.in/yaml.v3/decode.go - mode change 100644 => 100755 vendor/gopkg.in/yaml.v3/emitterc.go - mode change 100644 => 100755 vendor/gopkg.in/yaml.v3/encode.go - mode change 100644 => 100755 vendor/gopkg.in/yaml.v3/parserc.go - mode change 100644 => 100755 vendor/gopkg.in/yaml.v3/readerc.go - mode change 100644 => 100755 vendor/gopkg.in/yaml.v3/resolve.go - mode change 100644 => 100755 vendor/gopkg.in/yaml.v3/scannerc.go - mode change 100644 => 100755 vendor/gopkg.in/yaml.v3/sorter.go - mode change 100644 => 100755 vendor/gopkg.in/yaml.v3/writerc.go - mode change 100644 => 100755 vendor/gopkg.in/yaml.v3/yaml.go - mode change 100644 => 100755 vendor/gopkg.in/yaml.v3/yamlh.go - mode change 100644 => 100755 vendor/gopkg.in/yaml.v3/yamlprivateh.go - mode change 100644 => 100755 vendor/k8s.io/api/LICENSE - mode change 100644 => 100755 vendor/k8s.io/api/admissionregistration/v1/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/admissionregistration/v1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/admissionregistration/v1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/admissionregistration/v1/register.go - mode change 100644 => 100755 vendor/k8s.io/api/admissionregistration/v1/types.go - mode change 100644 => 100755 vendor/k8s.io/api/admissionregistration/v1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/admissionregistration/v1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/admissionregistration/v1beta1/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/admissionregistration/v1beta1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/admissionregistration/v1beta1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/admissionregistration/v1beta1/register.go - mode change 100644 => 100755 vendor/k8s.io/api/admissionregistration/v1beta1/types.go - mode change 100644 => 100755 vendor/k8s.io/api/admissionregistration/v1beta1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/admissionregistration/v1beta1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/admissionregistration/v1beta1/zz_generated.prerelease-lifecycle.go - mode change 100644 => 100755 vendor/k8s.io/api/apiserverinternal/v1alpha1/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/apiserverinternal/v1alpha1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/apiserverinternal/v1alpha1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/apiserverinternal/v1alpha1/register.go - mode change 100644 => 100755 vendor/k8s.io/api/apiserverinternal/v1alpha1/types.go - mode change 100644 => 100755 vendor/k8s.io/api/apiserverinternal/v1alpha1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/apiserverinternal/v1alpha1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/apps/v1/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/apps/v1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/apps/v1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/apps/v1/register.go - mode change 100644 => 100755 vendor/k8s.io/api/apps/v1/types.go - mode change 100644 => 100755 vendor/k8s.io/api/apps/v1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/apps/v1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/apps/v1beta1/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/apps/v1beta1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/apps/v1beta1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/apps/v1beta1/register.go - mode change 100644 => 100755 vendor/k8s.io/api/apps/v1beta1/types.go - mode change 100644 => 100755 vendor/k8s.io/api/apps/v1beta1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/apps/v1beta1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/apps/v1beta1/zz_generated.prerelease-lifecycle.go - mode change 100644 => 100755 vendor/k8s.io/api/apps/v1beta2/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/apps/v1beta2/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/apps/v1beta2/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/apps/v1beta2/register.go - mode change 100644 => 100755 vendor/k8s.io/api/apps/v1beta2/types.go - mode change 100644 => 100755 vendor/k8s.io/api/apps/v1beta2/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/apps/v1beta2/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/apps/v1beta2/zz_generated.prerelease-lifecycle.go - mode change 100644 => 100755 vendor/k8s.io/api/authentication/v1/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/authentication/v1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/authentication/v1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/authentication/v1/register.go - mode change 100644 => 100755 vendor/k8s.io/api/authentication/v1/types.go - mode change 100644 => 100755 vendor/k8s.io/api/authentication/v1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/authentication/v1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/authentication/v1beta1/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/authentication/v1beta1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/authentication/v1beta1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/authentication/v1beta1/register.go - mode change 100644 => 100755 vendor/k8s.io/api/authentication/v1beta1/types.go - mode change 100644 => 100755 vendor/k8s.io/api/authentication/v1beta1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/authentication/v1beta1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/authentication/v1beta1/zz_generated.prerelease-lifecycle.go - mode change 100644 => 100755 vendor/k8s.io/api/authorization/v1/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/authorization/v1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/authorization/v1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/authorization/v1/register.go - mode change 100644 => 100755 vendor/k8s.io/api/authorization/v1/types.go - mode change 100644 => 100755 vendor/k8s.io/api/authorization/v1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/authorization/v1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/authorization/v1beta1/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/authorization/v1beta1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/authorization/v1beta1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/authorization/v1beta1/register.go - mode change 100644 => 100755 vendor/k8s.io/api/authorization/v1beta1/types.go - mode change 100644 => 100755 vendor/k8s.io/api/authorization/v1beta1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/authorization/v1beta1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/authorization/v1beta1/zz_generated.prerelease-lifecycle.go - mode change 100644 => 100755 vendor/k8s.io/api/autoscaling/v1/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/autoscaling/v1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/autoscaling/v1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/autoscaling/v1/register.go - mode change 100644 => 100755 vendor/k8s.io/api/autoscaling/v1/types.go - mode change 100644 => 100755 vendor/k8s.io/api/autoscaling/v1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/autoscaling/v1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/autoscaling/v2beta1/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/autoscaling/v2beta1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/autoscaling/v2beta1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/autoscaling/v2beta1/register.go - mode change 100644 => 100755 vendor/k8s.io/api/autoscaling/v2beta1/types.go - mode change 100644 => 100755 vendor/k8s.io/api/autoscaling/v2beta1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/autoscaling/v2beta1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/autoscaling/v2beta1/zz_generated.prerelease-lifecycle.go - mode change 100644 => 100755 vendor/k8s.io/api/autoscaling/v2beta2/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/autoscaling/v2beta2/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/autoscaling/v2beta2/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/autoscaling/v2beta2/register.go - mode change 100644 => 100755 vendor/k8s.io/api/autoscaling/v2beta2/types.go - mode change 100644 => 100755 vendor/k8s.io/api/autoscaling/v2beta2/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/autoscaling/v2beta2/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/autoscaling/v2beta2/zz_generated.prerelease-lifecycle.go - mode change 100644 => 100755 vendor/k8s.io/api/batch/v1/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/batch/v1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/batch/v1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/batch/v1/register.go - mode change 100644 => 100755 vendor/k8s.io/api/batch/v1/types.go - mode change 100644 => 100755 vendor/k8s.io/api/batch/v1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/batch/v1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/batch/v1beta1/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/batch/v1beta1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/batch/v1beta1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/batch/v1beta1/register.go - mode change 100644 => 100755 vendor/k8s.io/api/batch/v1beta1/types.go - mode change 100644 => 100755 vendor/k8s.io/api/batch/v1beta1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/batch/v1beta1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/batch/v1beta1/zz_generated.prerelease-lifecycle.go - mode change 100644 => 100755 vendor/k8s.io/api/batch/v2alpha1/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/batch/v2alpha1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/batch/v2alpha1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/batch/v2alpha1/register.go - mode change 100644 => 100755 vendor/k8s.io/api/batch/v2alpha1/types.go - mode change 100644 => 100755 vendor/k8s.io/api/batch/v2alpha1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/batch/v2alpha1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/certificates/v1/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/certificates/v1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/certificates/v1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/certificates/v1/register.go - mode change 100644 => 100755 vendor/k8s.io/api/certificates/v1/types.go - mode change 100644 => 100755 vendor/k8s.io/api/certificates/v1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/certificates/v1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/certificates/v1beta1/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/certificates/v1beta1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/certificates/v1beta1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/certificates/v1beta1/register.go - mode change 100644 => 100755 vendor/k8s.io/api/certificates/v1beta1/types.go - mode change 100644 => 100755 vendor/k8s.io/api/certificates/v1beta1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/certificates/v1beta1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/certificates/v1beta1/zz_generated.prerelease-lifecycle.go - mode change 100644 => 100755 vendor/k8s.io/api/coordination/v1/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/coordination/v1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/coordination/v1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/coordination/v1/register.go - mode change 100644 => 100755 vendor/k8s.io/api/coordination/v1/types.go - mode change 100644 => 100755 vendor/k8s.io/api/coordination/v1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/coordination/v1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/coordination/v1beta1/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/coordination/v1beta1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/coordination/v1beta1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/coordination/v1beta1/register.go - mode change 100644 => 100755 vendor/k8s.io/api/coordination/v1beta1/types.go - mode change 100644 => 100755 vendor/k8s.io/api/coordination/v1beta1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/coordination/v1beta1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/coordination/v1beta1/zz_generated.prerelease-lifecycle.go - mode change 100644 => 100755 vendor/k8s.io/api/core/v1/annotation_key_constants.go - mode change 100644 => 100755 vendor/k8s.io/api/core/v1/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/core/v1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/core/v1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/core/v1/lifecycle.go - mode change 100644 => 100755 vendor/k8s.io/api/core/v1/objectreference.go - mode change 100644 => 100755 vendor/k8s.io/api/core/v1/register.go - mode change 100644 => 100755 vendor/k8s.io/api/core/v1/resource.go - mode change 100644 => 100755 vendor/k8s.io/api/core/v1/taint.go - mode change 100644 => 100755 vendor/k8s.io/api/core/v1/toleration.go - mode change 100644 => 100755 vendor/k8s.io/api/core/v1/types.go - mode change 100644 => 100755 vendor/k8s.io/api/core/v1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/core/v1/well_known_labels.go - mode change 100644 => 100755 vendor/k8s.io/api/core/v1/well_known_taints.go - mode change 100644 => 100755 vendor/k8s.io/api/core/v1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/discovery/v1alpha1/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/discovery/v1alpha1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/discovery/v1alpha1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/discovery/v1alpha1/register.go - mode change 100644 => 100755 vendor/k8s.io/api/discovery/v1alpha1/types.go - mode change 100644 => 100755 vendor/k8s.io/api/discovery/v1alpha1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/discovery/v1alpha1/well_known_labels.go - mode change 100644 => 100755 vendor/k8s.io/api/discovery/v1alpha1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/discovery/v1beta1/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/discovery/v1beta1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/discovery/v1beta1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/discovery/v1beta1/register.go - mode change 100644 => 100755 vendor/k8s.io/api/discovery/v1beta1/types.go - mode change 100644 => 100755 vendor/k8s.io/api/discovery/v1beta1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/discovery/v1beta1/well_known_labels.go - mode change 100644 => 100755 vendor/k8s.io/api/discovery/v1beta1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/discovery/v1beta1/zz_generated.prerelease-lifecycle.go - mode change 100644 => 100755 vendor/k8s.io/api/events/v1/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/events/v1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/events/v1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/events/v1/register.go - mode change 100644 => 100755 vendor/k8s.io/api/events/v1/types.go - mode change 100644 => 100755 vendor/k8s.io/api/events/v1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/events/v1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/events/v1beta1/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/events/v1beta1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/events/v1beta1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/events/v1beta1/register.go - mode change 100644 => 100755 vendor/k8s.io/api/events/v1beta1/types.go - mode change 100644 => 100755 vendor/k8s.io/api/events/v1beta1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/events/v1beta1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/events/v1beta1/zz_generated.prerelease-lifecycle.go - mode change 100644 => 100755 vendor/k8s.io/api/extensions/v1beta1/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/extensions/v1beta1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/extensions/v1beta1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/extensions/v1beta1/register.go - mode change 100644 => 100755 vendor/k8s.io/api/extensions/v1beta1/types.go - mode change 100644 => 100755 vendor/k8s.io/api/extensions/v1beta1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/extensions/v1beta1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/extensions/v1beta1/zz_generated.prerelease-lifecycle.go - mode change 100644 => 100755 vendor/k8s.io/api/flowcontrol/v1alpha1/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/flowcontrol/v1alpha1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/flowcontrol/v1alpha1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/flowcontrol/v1alpha1/register.go - mode change 100644 => 100755 vendor/k8s.io/api/flowcontrol/v1alpha1/types.go - mode change 100644 => 100755 vendor/k8s.io/api/flowcontrol/v1alpha1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/flowcontrol/v1alpha1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/flowcontrol/v1alpha1/zz_generated.prerelease-lifecycle.go - mode change 100644 => 100755 vendor/k8s.io/api/flowcontrol/v1beta1/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/flowcontrol/v1beta1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/flowcontrol/v1beta1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/flowcontrol/v1beta1/register.go - mode change 100644 => 100755 vendor/k8s.io/api/flowcontrol/v1beta1/types.go - mode change 100644 => 100755 vendor/k8s.io/api/flowcontrol/v1beta1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/flowcontrol/v1beta1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/flowcontrol/v1beta1/zz_generated.prerelease-lifecycle.go - mode change 100644 => 100755 vendor/k8s.io/api/networking/v1/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/networking/v1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/networking/v1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/networking/v1/register.go - mode change 100644 => 100755 vendor/k8s.io/api/networking/v1/types.go - mode change 100644 => 100755 vendor/k8s.io/api/networking/v1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/networking/v1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/networking/v1beta1/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/networking/v1beta1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/networking/v1beta1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/networking/v1beta1/register.go - mode change 100644 => 100755 vendor/k8s.io/api/networking/v1beta1/types.go - mode change 100644 => 100755 vendor/k8s.io/api/networking/v1beta1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/networking/v1beta1/well_known_annotations.go - mode change 100644 => 100755 vendor/k8s.io/api/networking/v1beta1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/networking/v1beta1/zz_generated.prerelease-lifecycle.go - mode change 100644 => 100755 vendor/k8s.io/api/node/v1/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/node/v1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/node/v1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/node/v1/register.go - mode change 100644 => 100755 vendor/k8s.io/api/node/v1/types.go - mode change 100644 => 100755 vendor/k8s.io/api/node/v1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/node/v1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/node/v1alpha1/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/node/v1alpha1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/node/v1alpha1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/node/v1alpha1/register.go - mode change 100644 => 100755 vendor/k8s.io/api/node/v1alpha1/types.go - mode change 100644 => 100755 vendor/k8s.io/api/node/v1alpha1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/node/v1alpha1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/node/v1beta1/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/node/v1beta1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/node/v1beta1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/node/v1beta1/register.go - mode change 100644 => 100755 vendor/k8s.io/api/node/v1beta1/types.go - mode change 100644 => 100755 vendor/k8s.io/api/node/v1beta1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/node/v1beta1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/node/v1beta1/zz_generated.prerelease-lifecycle.go - mode change 100644 => 100755 vendor/k8s.io/api/policy/v1beta1/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/policy/v1beta1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/policy/v1beta1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/policy/v1beta1/register.go - mode change 100644 => 100755 vendor/k8s.io/api/policy/v1beta1/types.go - mode change 100644 => 100755 vendor/k8s.io/api/policy/v1beta1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/policy/v1beta1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/policy/v1beta1/zz_generated.prerelease-lifecycle.go - mode change 100644 => 100755 vendor/k8s.io/api/rbac/v1/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/rbac/v1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/rbac/v1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/rbac/v1/register.go - mode change 100644 => 100755 vendor/k8s.io/api/rbac/v1/types.go - mode change 100644 => 100755 vendor/k8s.io/api/rbac/v1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/rbac/v1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/rbac/v1alpha1/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/rbac/v1alpha1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/rbac/v1alpha1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/rbac/v1alpha1/register.go - mode change 100644 => 100755 vendor/k8s.io/api/rbac/v1alpha1/types.go - mode change 100644 => 100755 vendor/k8s.io/api/rbac/v1alpha1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/rbac/v1alpha1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/rbac/v1beta1/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/rbac/v1beta1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/rbac/v1beta1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/rbac/v1beta1/register.go - mode change 100644 => 100755 vendor/k8s.io/api/rbac/v1beta1/types.go - mode change 100644 => 100755 vendor/k8s.io/api/rbac/v1beta1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/rbac/v1beta1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/rbac/v1beta1/zz_generated.prerelease-lifecycle.go - mode change 100644 => 100755 vendor/k8s.io/api/scheduling/v1/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/scheduling/v1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/scheduling/v1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/scheduling/v1/register.go - mode change 100644 => 100755 vendor/k8s.io/api/scheduling/v1/types.go - mode change 100644 => 100755 vendor/k8s.io/api/scheduling/v1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/scheduling/v1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/scheduling/v1alpha1/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/scheduling/v1alpha1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/scheduling/v1alpha1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/scheduling/v1alpha1/register.go - mode change 100644 => 100755 vendor/k8s.io/api/scheduling/v1alpha1/types.go - mode change 100644 => 100755 vendor/k8s.io/api/scheduling/v1alpha1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/scheduling/v1alpha1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/scheduling/v1beta1/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/scheduling/v1beta1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/scheduling/v1beta1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/scheduling/v1beta1/register.go - mode change 100644 => 100755 vendor/k8s.io/api/scheduling/v1beta1/types.go - mode change 100644 => 100755 vendor/k8s.io/api/scheduling/v1beta1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/scheduling/v1beta1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/scheduling/v1beta1/zz_generated.prerelease-lifecycle.go - mode change 100644 => 100755 vendor/k8s.io/api/storage/v1/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/storage/v1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/storage/v1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/storage/v1/register.go - mode change 100644 => 100755 vendor/k8s.io/api/storage/v1/types.go - mode change 100644 => 100755 vendor/k8s.io/api/storage/v1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/storage/v1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/storage/v1alpha1/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/storage/v1alpha1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/storage/v1alpha1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/storage/v1alpha1/register.go - mode change 100644 => 100755 vendor/k8s.io/api/storage/v1alpha1/types.go - mode change 100644 => 100755 vendor/k8s.io/api/storage/v1alpha1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/storage/v1alpha1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/storage/v1beta1/doc.go - mode change 100644 => 100755 vendor/k8s.io/api/storage/v1beta1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/api/storage/v1beta1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/api/storage/v1beta1/register.go - mode change 100644 => 100755 vendor/k8s.io/api/storage/v1beta1/types.go - mode change 100644 => 100755 vendor/k8s.io/api/storage/v1beta1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/api/storage/v1beta1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/api/storage/v1beta1/zz_generated.prerelease-lifecycle.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/LICENSE - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/api/errors/OWNERS - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/api/errors/doc.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/api/errors/errors.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/api/meta/OWNERS - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/api/meta/conditions.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/api/meta/doc.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/api/meta/errors.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/api/meta/firsthit_restmapper.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/api/meta/help.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/api/meta/interfaces.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/api/meta/lazy.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/api/meta/meta.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/api/meta/multirestmapper.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/api/meta/priority.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/api/meta/restmapper.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/api/resource/OWNERS - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/api/resource/amount.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/api/resource/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/api/resource/generated.proto - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/api/resource/math.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/api/resource/quantity.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/api/resource/quantity_proto.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/api/resource/scale_int.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/api/resource/suffix.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/api/resource/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/doc.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/register.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/types.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/zz_generated.conversion.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/OWNERS - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/controller_ref.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/conversion.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/doc.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/duration.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/group_version.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/helpers.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/labels.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/meta.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/micro_time.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/micro_time_fuzz.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/micro_time_proto.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/register.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/time.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/time_fuzz.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/time_proto.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/helpers.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructured.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructured_list.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/watch.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.conversion.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.defaults.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/conversion.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/doc.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/generated.proto - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/register.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/types.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/types_swagger_doc_generated.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/zz_generated.defaults.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/conversion/converter.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/conversion/deep_equal.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/conversion/doc.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/conversion/helper.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/conversion/queryparams/convert.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/conversion/queryparams/doc.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/fields/doc.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/fields/fields.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/fields/requirements.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/fields/selector.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/labels/doc.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/labels/labels.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/labels/selector.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/labels/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/runtime/codec.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/runtime/codec_check.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/runtime/conversion.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/runtime/converter.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/runtime/doc.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/runtime/embedded.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/runtime/error.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/runtime/extension.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/runtime/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/runtime/generated.proto - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/runtime/helper.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/runtime/interfaces.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/runtime/mapper.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/runtime/negotiate.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/runtime/register.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.proto - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/runtime/schema/group_version.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/runtime/schema/interfaces.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/runtime/scheme.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/runtime/scheme_builder.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/runtime/serializer/codec_factory.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/json.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/meta.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/runtime/serializer/negotiated_codec.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/runtime/serializer/protobuf/doc.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/runtime/serializer/protobuf/protobuf.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer/recognizer.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming/streaming.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning/versioning.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/runtime/swagger_doc_generator.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/runtime/types.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/runtime/types_proto.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/runtime/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/selection/operator.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/types/doc.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/types/namespacedname.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/types/nodename.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/types/patch.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/types/uid.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/util/cache/expiring.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/util/cache/lruexpirecache.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/util/clock/clock.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/util/diff/diff.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/util/errors/doc.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/util/errors/errors.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/util/framer/framer.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/util/intstr/generated.pb.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/util/intstr/generated.proto - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/util/intstr/instr_fuzz.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/util/intstr/intstr.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/util/json/json.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/util/naming/from_stack.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/util/net/http.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/util/net/interface.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/util/net/port_range.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/util/net/port_split.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/util/net/util.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/util/sets/byte.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/util/sets/doc.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/util/sets/empty.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/util/sets/int.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/util/sets/int32.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/util/sets/int64.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/util/sets/string.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/util/validation/field/errors.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/util/validation/field/path.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/util/validation/validation.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/util/wait/doc.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/util/wait/wait.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/util/yaml/decoder.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/version/doc.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/version/helpers.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/version/types.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/watch/doc.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/watch/filter.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/watch/mux.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/watch/streamwatcher.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/watch/watch.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/pkg/watch/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/apimachinery/third_party/forked/golang/reflect/deep_equal.go - mode change 100644 => 100755 vendor/k8s.io/client-go/LICENSE - mode change 100644 => 100755 vendor/k8s.io/client-go/discovery/discovery_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/discovery/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/discovery/helper.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/admissionregistration/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/admissionregistration/v1/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/admissionregistration/v1/mutatingwebhookconfiguration.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/admissionregistration/v1/validatingwebhookconfiguration.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/admissionregistration/v1beta1/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/admissionregistration/v1beta1/mutatingwebhookconfiguration.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/admissionregistration/v1beta1/validatingwebhookconfiguration.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/apiserverinternal/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/apiserverinternal/v1alpha1/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/apiserverinternal/v1alpha1/storageversion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/apps/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/apps/v1/controllerrevision.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/apps/v1/daemonset.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/apps/v1/deployment.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/apps/v1/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/apps/v1/replicaset.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/apps/v1/statefulset.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/apps/v1beta1/controllerrevision.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/apps/v1beta1/deployment.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/apps/v1beta1/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/apps/v1beta1/statefulset.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/apps/v1beta2/controllerrevision.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/apps/v1beta2/daemonset.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/apps/v1beta2/deployment.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/apps/v1beta2/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/apps/v1beta2/replicaset.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/apps/v1beta2/statefulset.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/autoscaling/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/autoscaling/v1/horizontalpodautoscaler.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/autoscaling/v1/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/autoscaling/v2beta1/horizontalpodautoscaler.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/autoscaling/v2beta1/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/autoscaling/v2beta2/horizontalpodautoscaler.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/autoscaling/v2beta2/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/batch/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/batch/v1/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/batch/v1/job.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/batch/v1beta1/cronjob.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/batch/v1beta1/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/batch/v2alpha1/cronjob.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/batch/v2alpha1/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/certificates/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/certificates/v1/certificatesigningrequest.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/certificates/v1/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/certificates/v1beta1/certificatesigningrequest.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/certificates/v1beta1/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/coordination/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/coordination/v1/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/coordination/v1/lease.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/coordination/v1beta1/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/coordination/v1beta1/lease.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/core/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/core/v1/componentstatus.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/core/v1/configmap.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/core/v1/endpoints.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/core/v1/event.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/core/v1/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/core/v1/limitrange.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/core/v1/namespace.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/core/v1/node.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/core/v1/persistentvolume.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/core/v1/persistentvolumeclaim.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/core/v1/pod.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/core/v1/podtemplate.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/core/v1/replicationcontroller.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/core/v1/resourcequota.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/core/v1/secret.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/core/v1/service.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/core/v1/serviceaccount.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/discovery/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/discovery/v1alpha1/endpointslice.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/discovery/v1alpha1/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/discovery/v1beta1/endpointslice.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/discovery/v1beta1/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/events/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/events/v1/event.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/events/v1/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/events/v1beta1/event.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/events/v1beta1/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/extensions/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/extensions/v1beta1/daemonset.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/extensions/v1beta1/deployment.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/extensions/v1beta1/ingress.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/extensions/v1beta1/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/extensions/v1beta1/networkpolicy.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/extensions/v1beta1/podsecuritypolicy.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/extensions/v1beta1/replicaset.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/factory.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/flowcontrol/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/flowcontrol/v1alpha1/flowschema.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/flowcontrol/v1alpha1/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/flowcontrol/v1alpha1/prioritylevelconfiguration.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/flowcontrol/v1beta1/flowschema.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/flowcontrol/v1beta1/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/flowcontrol/v1beta1/prioritylevelconfiguration.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/generic.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/internalinterfaces/factory_interfaces.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/networking/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/networking/v1/ingress.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/networking/v1/ingressclass.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/networking/v1/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/networking/v1/networkpolicy.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/networking/v1beta1/ingress.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/networking/v1beta1/ingressclass.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/networking/v1beta1/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/node/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/node/v1/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/node/v1/runtimeclass.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/node/v1alpha1/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/node/v1alpha1/runtimeclass.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/node/v1beta1/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/node/v1beta1/runtimeclass.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/policy/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/policy/v1beta1/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/policy/v1beta1/poddisruptionbudget.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/policy/v1beta1/podsecuritypolicy.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/rbac/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/rbac/v1/clusterrole.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/rbac/v1/clusterrolebinding.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/rbac/v1/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/rbac/v1/role.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/rbac/v1/rolebinding.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/rbac/v1alpha1/clusterrole.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/rbac/v1alpha1/clusterrolebinding.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/rbac/v1alpha1/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/rbac/v1alpha1/role.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/rbac/v1alpha1/rolebinding.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/rbac/v1beta1/clusterrole.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/rbac/v1beta1/clusterrolebinding.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/rbac/v1beta1/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/rbac/v1beta1/role.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/rbac/v1beta1/rolebinding.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/scheduling/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/scheduling/v1/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/scheduling/v1/priorityclass.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/scheduling/v1alpha1/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/scheduling/v1alpha1/priorityclass.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/scheduling/v1beta1/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/scheduling/v1beta1/priorityclass.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/storage/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/storage/v1/csidriver.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/storage/v1/csinode.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/storage/v1/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/storage/v1/storageclass.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/storage/v1/volumeattachment.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/storage/v1alpha1/csistoragecapacity.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/storage/v1alpha1/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/storage/v1alpha1/volumeattachment.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/storage/v1beta1/csidriver.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/storage/v1beta1/csinode.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/storage/v1beta1/interface.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/storage/v1beta1/storageclass.go - mode change 100644 => 100755 vendor/k8s.io/client-go/informers/storage/v1beta1/volumeattachment.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/clientset.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/import.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/scheme/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/scheme/register.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/admissionregistration_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/mutatingwebhookconfiguration.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/validatingwebhookconfiguration.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/admissionregistration_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/mutatingwebhookconfiguration.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/validatingwebhookconfiguration.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/apiserverinternal/v1alpha1/apiserverinternal_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/apiserverinternal/v1alpha1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/apiserverinternal/v1alpha1/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/apiserverinternal/v1alpha1/storageversion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/apps/v1/apps_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/apps/v1/controllerrevision.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/apps/v1/daemonset.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/apps/v1/deployment.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/apps/v1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/apps/v1/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/apps/v1/replicaset.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/apps/v1/statefulset.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/apps_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/controllerrevision.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/deployment.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/statefulset.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/apps_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/controllerrevision.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/daemonset.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/deployment.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/replicaset.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/statefulset.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/authentication_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/tokenreview.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/authentication_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/tokenreview.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/authorization_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/localsubjectaccessreview.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/selfsubjectaccessreview.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/selfsubjectrulesreview.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/subjectaccessreview.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/authorization_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/localsubjectaccessreview.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/selfsubjectaccessreview.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/selfsubjectrulesreview.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/subjectaccessreview.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/autoscaling_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/horizontalpodautoscaler.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/autoscaling_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/horizontalpodautoscaler.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/autoscaling_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/horizontalpodautoscaler.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/batch/v1/batch_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/batch/v1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/batch/v1/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/batch/v1/job.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/batch_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/cronjob.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/batch_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/cronjob.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/certificates/v1/certificates_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/certificates/v1/certificatesigningrequest.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/certificates/v1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/certificates/v1/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/certificates_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/certificatesigningrequest.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/certificatesigningrequest_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/coordination/v1/coordination_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/coordination/v1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/coordination/v1/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/coordination/v1/lease.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/coordination_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/lease.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/core/v1/componentstatus.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/core/v1/configmap.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/core/v1/core_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/core/v1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/core/v1/endpoints.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/core/v1/event.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/core/v1/event_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/core/v1/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/core/v1/limitrange.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/core/v1/namespace.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/core/v1/namespace_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/core/v1/node.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/core/v1/node_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/core/v1/persistentvolume.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/core/v1/persistentvolumeclaim.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/core/v1/pod.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/core/v1/pod_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/core/v1/podtemplate.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/core/v1/replicationcontroller.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/core/v1/resourcequota.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/core/v1/secret.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/core/v1/service.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/core/v1/service_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/core/v1/serviceaccount.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/discovery/v1alpha1/discovery_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/discovery/v1alpha1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/discovery/v1alpha1/endpointslice.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/discovery/v1alpha1/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/discovery/v1beta1/discovery_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/discovery/v1beta1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/discovery/v1beta1/endpointslice.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/discovery/v1beta1/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/events/v1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/events/v1/event.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/events/v1/events_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/events/v1/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/event.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/event_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/events_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/daemonset.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/deployment.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/deployment_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/extensions_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/ingress.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/networkpolicy.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/podsecuritypolicy.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/replicaset.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1alpha1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1alpha1/flowcontrol_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1alpha1/flowschema.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1alpha1/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1alpha1/prioritylevelconfiguration.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1/flowcontrol_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1/flowschema.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1/prioritylevelconfiguration.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/networking/v1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/networking/v1/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/networking/v1/ingress.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/networking/v1/ingressclass.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/networking/v1/networking_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/networking/v1/networkpolicy.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/ingress.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/ingressclass.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/networking_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/node/v1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/node/v1/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/node/v1/node_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/node/v1/runtimeclass.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/node/v1alpha1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/node/v1alpha1/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/node/v1alpha1/node_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/node/v1alpha1/runtimeclass.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/node/v1beta1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/node/v1beta1/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/node/v1beta1/node_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/node/v1beta1/runtimeclass.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/eviction.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/eviction_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/poddisruptionbudget.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/podsecuritypolicy.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/policy_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/clusterrole.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/clusterrolebinding.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/rbac_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/role.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/rolebinding.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/clusterrole.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/clusterrolebinding.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/rbac_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/role.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/rolebinding.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/clusterrole.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/clusterrolebinding.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/rbac_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/role.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/rolebinding.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1/priorityclass.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1/scheduling_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/priorityclass.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/scheduling_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/priorityclass.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/scheduling_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/storage/v1/csidriver.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/storage/v1/csinode.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/storage/v1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/storage/v1/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/storage/v1/storage_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/storage/v1/storageclass.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/storage/v1/volumeattachment.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/csistoragecapacity.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/storage_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/volumeattachment.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/csidriver.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/csinode.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/generated_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/storage_client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/storageclass.go - mode change 100644 => 100755 vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/volumeattachment.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/admissionregistration/v1/expansion_generated.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/admissionregistration/v1/mutatingwebhookconfiguration.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/admissionregistration/v1/validatingwebhookconfiguration.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/admissionregistration/v1beta1/expansion_generated.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/admissionregistration/v1beta1/mutatingwebhookconfiguration.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/admissionregistration/v1beta1/validatingwebhookconfiguration.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/apiserverinternal/v1alpha1/expansion_generated.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/apiserverinternal/v1alpha1/storageversion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/apps/v1/controllerrevision.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/apps/v1/daemonset.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/apps/v1/daemonset_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/apps/v1/deployment.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/apps/v1/expansion_generated.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/apps/v1/replicaset.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/apps/v1/replicaset_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/apps/v1/statefulset.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/apps/v1/statefulset_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/apps/v1beta1/controllerrevision.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/apps/v1beta1/deployment.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/apps/v1beta1/expansion_generated.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/apps/v1beta1/statefulset.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/apps/v1beta1/statefulset_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/apps/v1beta2/controllerrevision.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/apps/v1beta2/daemonset.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/apps/v1beta2/daemonset_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/apps/v1beta2/deployment.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/apps/v1beta2/expansion_generated.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/apps/v1beta2/replicaset.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/apps/v1beta2/replicaset_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/apps/v1beta2/statefulset.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/apps/v1beta2/statefulset_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/autoscaling/v1/expansion_generated.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/autoscaling/v1/horizontalpodautoscaler.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/autoscaling/v2beta1/expansion_generated.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/autoscaling/v2beta1/horizontalpodautoscaler.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/autoscaling/v2beta2/expansion_generated.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/autoscaling/v2beta2/horizontalpodautoscaler.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/batch/v1/expansion_generated.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/batch/v1/job.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/batch/v1/job_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/batch/v1beta1/cronjob.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/batch/v1beta1/expansion_generated.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/batch/v2alpha1/cronjob.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/batch/v2alpha1/expansion_generated.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/certificates/v1/certificatesigningrequest.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/certificates/v1/expansion_generated.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/certificates/v1beta1/certificatesigningrequest.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/certificates/v1beta1/expansion_generated.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/coordination/v1/expansion_generated.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/coordination/v1/lease.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/coordination/v1beta1/expansion_generated.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/coordination/v1beta1/lease.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/core/v1/componentstatus.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/core/v1/configmap.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/core/v1/endpoints.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/core/v1/event.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/core/v1/expansion_generated.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/core/v1/limitrange.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/core/v1/namespace.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/core/v1/node.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/core/v1/persistentvolume.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/core/v1/persistentvolumeclaim.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/core/v1/pod.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/core/v1/podtemplate.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/core/v1/replicationcontroller.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/core/v1/replicationcontroller_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/core/v1/resourcequota.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/core/v1/secret.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/core/v1/service.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/core/v1/serviceaccount.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/discovery/v1alpha1/endpointslice.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/discovery/v1alpha1/expansion_generated.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/discovery/v1beta1/endpointslice.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/discovery/v1beta1/expansion_generated.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/events/v1/event.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/events/v1/expansion_generated.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/events/v1beta1/event.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/events/v1beta1/expansion_generated.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/extensions/v1beta1/daemonset.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/extensions/v1beta1/daemonset_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/extensions/v1beta1/deployment.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/extensions/v1beta1/expansion_generated.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/extensions/v1beta1/ingress.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/extensions/v1beta1/networkpolicy.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/extensions/v1beta1/podsecuritypolicy.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/extensions/v1beta1/replicaset.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/extensions/v1beta1/replicaset_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/flowcontrol/v1alpha1/expansion_generated.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/flowcontrol/v1alpha1/flowschema.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/flowcontrol/v1alpha1/prioritylevelconfiguration.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/flowcontrol/v1beta1/expansion_generated.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/flowcontrol/v1beta1/flowschema.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/flowcontrol/v1beta1/prioritylevelconfiguration.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/networking/v1/expansion_generated.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/networking/v1/ingress.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/networking/v1/ingressclass.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/networking/v1/networkpolicy.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/networking/v1beta1/expansion_generated.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/networking/v1beta1/ingress.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/networking/v1beta1/ingressclass.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/node/v1/expansion_generated.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/node/v1/runtimeclass.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/node/v1alpha1/expansion_generated.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/node/v1alpha1/runtimeclass.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/node/v1beta1/expansion_generated.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/node/v1beta1/runtimeclass.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/policy/v1beta1/eviction.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/policy/v1beta1/expansion_generated.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/policy/v1beta1/poddisruptionbudget.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/policy/v1beta1/poddisruptionbudget_expansion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/policy/v1beta1/podsecuritypolicy.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/rbac/v1/clusterrole.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/rbac/v1/clusterrolebinding.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/rbac/v1/expansion_generated.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/rbac/v1/role.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/rbac/v1/rolebinding.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/rbac/v1alpha1/clusterrole.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/rbac/v1alpha1/clusterrolebinding.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/rbac/v1alpha1/expansion_generated.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/rbac/v1alpha1/role.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/rbac/v1alpha1/rolebinding.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/rbac/v1beta1/clusterrole.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/rbac/v1beta1/clusterrolebinding.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/rbac/v1beta1/expansion_generated.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/rbac/v1beta1/role.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/rbac/v1beta1/rolebinding.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/scheduling/v1/expansion_generated.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/scheduling/v1/priorityclass.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/scheduling/v1alpha1/expansion_generated.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/scheduling/v1alpha1/priorityclass.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/scheduling/v1beta1/expansion_generated.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/scheduling/v1beta1/priorityclass.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/storage/v1/csidriver.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/storage/v1/csinode.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/storage/v1/expansion_generated.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/storage/v1/storageclass.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/storage/v1/volumeattachment.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/storage/v1alpha1/csistoragecapacity.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/storage/v1alpha1/expansion_generated.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/storage/v1alpha1/volumeattachment.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/storage/v1beta1/csidriver.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/storage/v1beta1/csinode.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/storage/v1beta1/expansion_generated.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/storage/v1beta1/storageclass.go - mode change 100644 => 100755 vendor/k8s.io/client-go/listers/storage/v1beta1/volumeattachment.go - mode change 100644 => 100755 vendor/k8s.io/client-go/pkg/apis/clientauthentication/OWNERS - mode change 100644 => 100755 vendor/k8s.io/client-go/pkg/apis/clientauthentication/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/pkg/apis/clientauthentication/register.go - mode change 100644 => 100755 vendor/k8s.io/client-go/pkg/apis/clientauthentication/types.go - mode change 100644 => 100755 vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/conversion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/register.go - mode change 100644 => 100755 vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/types.go - mode change 100644 => 100755 vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/zz_generated.conversion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/zz_generated.defaults.go - mode change 100644 => 100755 vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1beta1/conversion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1beta1/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1beta1/register.go - mode change 100644 => 100755 vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1beta1/types.go - mode change 100644 => 100755 vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1beta1/zz_generated.conversion.go - mode change 100644 => 100755 vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1beta1/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1beta1/zz_generated.defaults.go - mode change 100644 => 100755 vendor/k8s.io/client-go/pkg/apis/clientauthentication/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/client-go/pkg/version/.gitattributes - mode change 100644 => 100755 vendor/k8s.io/client-go/pkg/version/base.go - mode change 100644 => 100755 vendor/k8s.io/client-go/pkg/version/def.bzl - mode change 100644 => 100755 vendor/k8s.io/client-go/pkg/version/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/pkg/version/version.go - mode change 100644 => 100755 vendor/k8s.io/client-go/plugin/pkg/client/auth/exec/exec.go - mode change 100644 => 100755 vendor/k8s.io/client-go/plugin/pkg/client/auth/exec/metrics.go - mode change 100644 => 100755 vendor/k8s.io/client-go/rest/OWNERS - mode change 100644 => 100755 vendor/k8s.io/client-go/rest/client.go - mode change 100644 => 100755 vendor/k8s.io/client-go/rest/config.go - mode change 100644 => 100755 vendor/k8s.io/client-go/rest/exec.go - mode change 100644 => 100755 vendor/k8s.io/client-go/rest/plugin.go - mode change 100644 => 100755 vendor/k8s.io/client-go/rest/request.go - mode change 100644 => 100755 vendor/k8s.io/client-go/rest/transport.go - mode change 100644 => 100755 vendor/k8s.io/client-go/rest/url_utils.go - mode change 100644 => 100755 vendor/k8s.io/client-go/rest/urlbackoff.go - mode change 100644 => 100755 vendor/k8s.io/client-go/rest/warnings.go - mode change 100644 => 100755 vendor/k8s.io/client-go/rest/watch/decoder.go - mode change 100644 => 100755 vendor/k8s.io/client-go/rest/watch/encoder.go - mode change 100644 => 100755 vendor/k8s.io/client-go/rest/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/client-go/tools/cache/OWNERS - mode change 100644 => 100755 vendor/k8s.io/client-go/tools/cache/controller.go - mode change 100644 => 100755 vendor/k8s.io/client-go/tools/cache/delta_fifo.go - mode change 100644 => 100755 vendor/k8s.io/client-go/tools/cache/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/tools/cache/expiration_cache.go - mode change 100644 => 100755 vendor/k8s.io/client-go/tools/cache/expiration_cache_fakes.go - mode change 100644 => 100755 vendor/k8s.io/client-go/tools/cache/fake_custom_store.go - mode change 100644 => 100755 vendor/k8s.io/client-go/tools/cache/fifo.go - mode change 100644 => 100755 vendor/k8s.io/client-go/tools/cache/heap.go - mode change 100644 => 100755 vendor/k8s.io/client-go/tools/cache/index.go - mode change 100644 => 100755 vendor/k8s.io/client-go/tools/cache/listers.go - mode change 100644 => 100755 vendor/k8s.io/client-go/tools/cache/listwatch.go - mode change 100644 => 100755 vendor/k8s.io/client-go/tools/cache/mutation_cache.go - mode change 100644 => 100755 vendor/k8s.io/client-go/tools/cache/mutation_detector.go - mode change 100644 => 100755 vendor/k8s.io/client-go/tools/cache/reflector.go - mode change 100644 => 100755 vendor/k8s.io/client-go/tools/cache/reflector_metrics.go - mode change 100644 => 100755 vendor/k8s.io/client-go/tools/cache/shared_informer.go - mode change 100644 => 100755 vendor/k8s.io/client-go/tools/cache/store.go - mode change 100644 => 100755 vendor/k8s.io/client-go/tools/cache/thread_safe_store.go - mode change 100644 => 100755 vendor/k8s.io/client-go/tools/cache/undelta_store.go - mode change 100644 => 100755 vendor/k8s.io/client-go/tools/clientcmd/api/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/tools/clientcmd/api/helpers.go - mode change 100644 => 100755 vendor/k8s.io/client-go/tools/clientcmd/api/register.go - mode change 100644 => 100755 vendor/k8s.io/client-go/tools/clientcmd/api/types.go - mode change 100644 => 100755 vendor/k8s.io/client-go/tools/clientcmd/api/zz_generated.deepcopy.go - mode change 100644 => 100755 vendor/k8s.io/client-go/tools/metrics/OWNERS - mode change 100644 => 100755 vendor/k8s.io/client-go/tools/metrics/metrics.go - mode change 100644 => 100755 vendor/k8s.io/client-go/tools/pager/pager.go - mode change 100644 => 100755 vendor/k8s.io/client-go/tools/reference/ref.go - mode change 100644 => 100755 vendor/k8s.io/client-go/transport/OWNERS - mode change 100644 => 100755 vendor/k8s.io/client-go/transport/cache.go - mode change 100644 => 100755 vendor/k8s.io/client-go/transport/cert_rotation.go - mode change 100644 => 100755 vendor/k8s.io/client-go/transport/config.go - mode change 100644 => 100755 vendor/k8s.io/client-go/transport/round_trippers.go - mode change 100644 => 100755 vendor/k8s.io/client-go/transport/token_source.go - mode change 100644 => 100755 vendor/k8s.io/client-go/transport/transport.go - mode change 100644 => 100755 vendor/k8s.io/client-go/util/cert/OWNERS - mode change 100644 => 100755 vendor/k8s.io/client-go/util/cert/cert.go - mode change 100644 => 100755 vendor/k8s.io/client-go/util/cert/csr.go - mode change 100644 => 100755 vendor/k8s.io/client-go/util/cert/io.go - mode change 100644 => 100755 vendor/k8s.io/client-go/util/cert/pem.go - mode change 100644 => 100755 vendor/k8s.io/client-go/util/cert/server_inspection.go - mode change 100644 => 100755 vendor/k8s.io/client-go/util/connrotation/connrotation.go - mode change 100644 => 100755 vendor/k8s.io/client-go/util/flowcontrol/backoff.go - mode change 100644 => 100755 vendor/k8s.io/client-go/util/flowcontrol/throttle.go - mode change 100644 => 100755 vendor/k8s.io/client-go/util/keyutil/OWNERS - mode change 100644 => 100755 vendor/k8s.io/client-go/util/keyutil/key.go - mode change 100644 => 100755 vendor/k8s.io/client-go/util/workqueue/default_rate_limiters.go - mode change 100644 => 100755 vendor/k8s.io/client-go/util/workqueue/delaying_queue.go - mode change 100644 => 100755 vendor/k8s.io/client-go/util/workqueue/doc.go - mode change 100644 => 100755 vendor/k8s.io/client-go/util/workqueue/metrics.go - mode change 100644 => 100755 vendor/k8s.io/client-go/util/workqueue/parallelizer.go - mode change 100644 => 100755 vendor/k8s.io/client-go/util/workqueue/queue.go - mode change 100644 => 100755 vendor/k8s.io/client-go/util/workqueue/rate_limiting_queue.go - create mode 100755 vendor/k8s.io/cri-api/LICENSE - create mode 100755 vendor/k8s.io/cri-api/pkg/apis/runtime/v1/api.pb.go - create mode 100755 vendor/k8s.io/cri-api/pkg/apis/runtime/v1/api.proto - create mode 100755 vendor/k8s.io/cri-api/pkg/apis/runtime/v1/constants.go - mode change 100644 => 100755 vendor/k8s.io/klog/v2/.gitignore - mode change 100644 => 100755 vendor/k8s.io/klog/v2/CONTRIBUTING.md - mode change 100644 => 100755 vendor/k8s.io/klog/v2/LICENSE - mode change 100644 => 100755 vendor/k8s.io/klog/v2/OWNERS - mode change 100644 => 100755 vendor/k8s.io/klog/v2/README.md - mode change 100644 => 100755 vendor/k8s.io/klog/v2/RELEASE.md - mode change 100644 => 100755 vendor/k8s.io/klog/v2/SECURITY.md - mode change 100644 => 100755 vendor/k8s.io/klog/v2/SECURITY_CONTACTS - mode change 100644 => 100755 vendor/k8s.io/klog/v2/code-of-conduct.md - mode change 100644 => 100755 vendor/k8s.io/klog/v2/contextual.go - mode change 100644 => 100755 vendor/k8s.io/klog/v2/exit.go - mode change 100644 => 100755 vendor/k8s.io/klog/v2/imports.go - mode change 100644 => 100755 vendor/k8s.io/klog/v2/internal/buffer/buffer.go - mode change 100644 => 100755 vendor/k8s.io/klog/v2/internal/clock/README.md - mode change 100644 => 100755 vendor/k8s.io/klog/v2/internal/clock/clock.go - mode change 100644 => 100755 vendor/k8s.io/klog/v2/internal/dbg/dbg.go - mode change 100644 => 100755 vendor/k8s.io/klog/v2/internal/serialize/keyvalues.go - mode change 100644 => 100755 vendor/k8s.io/klog/v2/internal/severity/severity.go - mode change 100644 => 100755 vendor/k8s.io/klog/v2/k8s_references.go - mode change 100644 => 100755 vendor/k8s.io/klog/v2/klog.go - mode change 100644 => 100755 vendor/k8s.io/klog/v2/klog_file.go - mode change 100644 => 100755 vendor/k8s.io/klog/v2/klog_file_others.go - mode change 100644 => 100755 vendor/k8s.io/klog/v2/klog_file_windows.go - mode change 100644 => 100755 vendor/k8s.io/klog/v2/klogr.go - mode change 100644 => 100755 vendor/k8s.io/utils/LICENSE - mode change 100644 => 100755 vendor/k8s.io/utils/buffer/ring_growing.go - mode change 100644 => 100755 vendor/k8s.io/utils/clock/README.md - mode change 100644 => 100755 vendor/k8s.io/utils/clock/clock.go - mode change 100644 => 100755 vendor/k8s.io/utils/inotify/LICENSE - mode change 100644 => 100755 vendor/k8s.io/utils/inotify/PATENTS - mode change 100644 => 100755 vendor/k8s.io/utils/inotify/README.md - mode change 100644 => 100755 vendor/k8s.io/utils/inotify/inotify.go - mode change 100644 => 100755 vendor/k8s.io/utils/inotify/inotify_linux.go - mode change 100644 => 100755 vendor/k8s.io/utils/inotify/inotify_others.go - mode change 100644 => 100755 vendor/k8s.io/utils/integer/integer.go - mode change 100644 => 100755 vendor/k8s.io/utils/trace/README.md - mode change 100644 => 100755 vendor/k8s.io/utils/trace/trace.go - mode change 100644 => 100755 vendor/modules.txt - mode change 100644 => 100755 vendor/sigs.k8s.io/structured-merge-diff/v4/LICENSE - mode change 100644 => 100755 vendor/sigs.k8s.io/structured-merge-diff/v4/value/allocator.go - mode change 100644 => 100755 vendor/sigs.k8s.io/structured-merge-diff/v4/value/doc.go - mode change 100644 => 100755 vendor/sigs.k8s.io/structured-merge-diff/v4/value/fields.go - mode change 100644 => 100755 vendor/sigs.k8s.io/structured-merge-diff/v4/value/jsontagutil.go - mode change 100644 => 100755 vendor/sigs.k8s.io/structured-merge-diff/v4/value/list.go - mode change 100644 => 100755 vendor/sigs.k8s.io/structured-merge-diff/v4/value/listreflect.go - mode change 100644 => 100755 vendor/sigs.k8s.io/structured-merge-diff/v4/value/listunstructured.go - mode change 100644 => 100755 vendor/sigs.k8s.io/structured-merge-diff/v4/value/map.go - mode change 100644 => 100755 vendor/sigs.k8s.io/structured-merge-diff/v4/value/mapreflect.go - mode change 100644 => 100755 vendor/sigs.k8s.io/structured-merge-diff/v4/value/mapunstructured.go - mode change 100644 => 100755 vendor/sigs.k8s.io/structured-merge-diff/v4/value/reflectcache.go - mode change 100644 => 100755 vendor/sigs.k8s.io/structured-merge-diff/v4/value/scalar.go - mode change 100644 => 100755 vendor/sigs.k8s.io/structured-merge-diff/v4/value/structreflect.go - mode change 100644 => 100755 vendor/sigs.k8s.io/structured-merge-diff/v4/value/value.go - mode change 100644 => 100755 vendor/sigs.k8s.io/structured-merge-diff/v4/value/valuereflect.go - mode change 100644 => 100755 vendor/sigs.k8s.io/structured-merge-diff/v4/value/valueunstructured.go - mode change 100644 => 100755 vendor/sigs.k8s.io/yaml/.gitignore - mode change 100644 => 100755 vendor/sigs.k8s.io/yaml/.travis.yml - mode change 100644 => 100755 vendor/sigs.k8s.io/yaml/CONTRIBUTING.md - mode change 100644 => 100755 vendor/sigs.k8s.io/yaml/LICENSE - mode change 100644 => 100755 vendor/sigs.k8s.io/yaml/OWNERS - mode change 100644 => 100755 vendor/sigs.k8s.io/yaml/README.md - mode change 100644 => 100755 vendor/sigs.k8s.io/yaml/RELEASE.md - mode change 100644 => 100755 vendor/sigs.k8s.io/yaml/SECURITY_CONTACTS - mode change 100644 => 100755 vendor/sigs.k8s.io/yaml/code-of-conduct.md - mode change 100644 => 100755 vendor/sigs.k8s.io/yaml/fields.go - mode change 100644 => 100755 vendor/sigs.k8s.io/yaml/yaml.go - mode change 100644 => 100755 vendor/sigs.k8s.io/yaml/yaml_go110.go - -diff --git a/go.mod b/go.mod -old mode 100644 -new mode 100755 -index fe03728..283c415 ---- a/go.mod -+++ b/go.mod -@@ -3,30 +3,35 @@ module isula.org/rubik - go 1.17 - - require ( -+ github.com/containerd/nri v0.6.1 - github.com/cyphar/filepath-securejoin v0.2.3 - github.com/google/cadvisor v0.47.1 -- github.com/google/uuid v1.1.2 -+ github.com/google/uuid v1.3.0 - github.com/pkg/errors v0.9.1 -+ github.com/prometheus/client_golang v1.14.0 - github.com/stretchr/testify v1.8.0 -- golang.org/x/sys v0.3.0 -+ golang.org/x/sys v0.13.0 - k8s.io/api v0.20.2 - k8s.io/apimachinery v0.20.2 - k8s.io/client-go v0.20.2 - ) - - require ( -+ github.com/beorn7/perks v1.0.1 // indirect -+ github.com/cespare/xxhash/v2 v2.2.0 // indirect - github.com/checkpoint-restore/go-criu/v5 v5.3.0 // indirect - github.com/cilium/ebpf v0.7.0 // indirect - github.com/containerd/console v1.0.3 // indirect -+ github.com/containerd/ttrpc v1.2.3 // indirect - github.com/coreos/go-systemd/v22 v22.3.2 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect - github.com/docker/go-units v0.5.0 // indirect - github.com/euank/go-kmsg-parser v2.0.0+incompatible // indirect -- github.com/go-logr/logr v1.2.0 // indirect -+ github.com/go-logr/logr v1.2.3 // indirect - github.com/godbus/dbus/v5 v5.0.6 // indirect - github.com/gogo/protobuf v1.3.2 // indirect -- github.com/golang/protobuf v1.5.2 // indirect -- github.com/google/go-cmp v0.5.8 // indirect -+ github.com/golang/protobuf v1.5.3 // indirect -+ github.com/google/go-cmp v0.5.9 // indirect - github.com/google/gofuzz v1.1.0 // indirect - github.com/googleapis/gnostic v0.4.1 // indirect - github.com/hashicorp/golang-lru v0.5.1 // indirect -@@ -44,26 +49,30 @@ require ( - github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/client_model v0.3.0 // indirect - github.com/prometheus/common v0.37.0 // indirect -+ github.com/prometheus/procfs v0.8.0 // indirect - github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646 // indirect - github.com/sirupsen/logrus v1.8.1 // indirect - github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 // indirect - github.com/vishvananda/netlink v1.1.0 // indirect - github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df // indirect -- golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 // indirect -- golang.org/x/net v0.4.0 // indirect -- golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b // indirect -- golang.org/x/term v0.3.0 // indirect -- golang.org/x/text v0.5.0 // indirect -+ golang.org/x/crypto v0.14.0 // indirect -+ golang.org/x/net v0.17.0 // indirect -+ golang.org/x/oauth2 v0.7.0 // indirect -+ golang.org/x/term v0.13.0 // indirect -+ golang.org/x/text v0.13.0 // indirect - golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e // indirect - google.golang.org/appengine v1.6.7 // indirect -- google.golang.org/protobuf v1.28.1 // indirect -+ google.golang.org/genproto/googleapis/rpc v0.0.0-20230731190214-cbb8c96f2d6d // indirect -+ google.golang.org/grpc v1.57.1 // indirect -+ google.golang.org/protobuf v1.31.0 // indirect - gopkg.in/inf.v0 v0.9.1 // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect -+ k8s.io/cri-api v0.25.3 // indirect - k8s.io/klog/v2 v2.80.1 // indirect - k8s.io/utils v0.0.0-20211116205334-6203023598ed // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.0.2 // indirect -- sigs.k8s.io/yaml v1.2.0 // indirect -+ sigs.k8s.io/yaml v1.3.0 // indirect - ) - - replace github.com/cyphar/filepath-securejoin => github.com/cyphar/filepath-securejoin v0.2.2 -diff --git a/go.sum b/go.sum -old mode 100644 -new mode 100755 -index 2eeecdd..369c6df ---- a/go.sum -+++ b/go.sum -@@ -71,13 +71,18 @@ github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:l - github.com/aws/aws-sdk-go v1.35.24/go.mod h1:tlPOdRjfxPBpNIwqDj61rmsnA85v9jc0Ps9+muhnW+k= - github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= - github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= -+github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= - github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= - github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= - github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= - github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -+github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= - github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= - github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -+github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= - github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -+github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= -+github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= - github.com/checkpoint-restore/go-criu/v5 v5.3.0 h1:wpFFOoomK3389ue2lAb0Boag6XPht5QYpipxmSNL4d8= - github.com/checkpoint-restore/go-criu/v5 v5.3.0/go.mod h1:E/eQpaFtUKGOOSEBZgmKAcn+zUUwWxqcaKZlF54wK8E= - github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -@@ -96,8 +101,12 @@ github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWH - github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= - github.com/containerd/console v1.0.3 h1:lIr7SlA5PxZyMV30bDW0MGbiOPXwc63yRuCP0ARubLw= - github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U= -+github.com/containerd/nri v0.6.1 h1:xSQ6elnQ4Ynidm9u49ARK9wRKHs80HCUI+bkXOxV4mA= -+github.com/containerd/nri v0.6.1/go.mod h1:7+sX3wNx+LR7RzhjnJiUkFDhn18P5Bg/0VnJ/uXpRJM= - github.com/containerd/ttrpc v1.1.0 h1:GbtyLRxb0gOLR0TYQWt3O6B0NvT8tMdorEHqIQo/lWI= - github.com/containerd/ttrpc v1.1.0/go.mod h1:XX4ZTnoOId4HklF4edwc4DcqskFZuvXB1Evzy5KFQpQ= -+github.com/containerd/ttrpc v1.2.3 h1:4jlhbXIGvijRtNC8F/5CpuJZ7yKOBFGFOOXg1bkISz0= -+github.com/containerd/ttrpc v1.2.3/go.mod h1:ieWsXucbb8Mj9PH0rXCw1i8IunRbbAiDkpXkbfflWBM= - github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s= - github.com/coreos/go-systemd/v22 v22.3.2 h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzAJc1DzSI= - github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -@@ -156,6 +165,8 @@ github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7 - github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= - github.com/go-logr/logr v1.2.0 h1:QK40JKJyMdUDz+h+xvCsru/bJhvG0UxvePV0ufL/AcE= - github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -+github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= -+github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= - github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= - github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= - github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= -@@ -204,6 +215,8 @@ github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaS - github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= - github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= - github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -+github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= -+github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= - github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= - github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= - github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -@@ -223,6 +236,8 @@ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ - github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= - github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg= - github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -+github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= -+github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= - github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= - github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= - github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -@@ -248,6 +263,8 @@ github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm4 - github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= - github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= - github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -+github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= -+github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= - github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= - github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= - github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= -@@ -344,6 +361,7 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn - github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= - github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= - github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= -+github.com/prometheus/client_golang v1.14.0 h1:nJdhIvne2eSX/XRAFV9PcvFFRbrjbcTUj0VP62TMhnw= - github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y= - github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= - github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -@@ -362,6 +380,7 @@ github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsT - github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= - github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= - github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -+github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo= - github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= - github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= - github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -@@ -426,6 +445,8 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh - golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= - golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 h1:7I4JAnoQBe7ZtJcBaYHi5UtiO8tQHbUSXxL+pnGRANg= - golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -+golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= -+golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= - golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= - golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= - golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -@@ -508,6 +529,8 @@ golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su - golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= - golang.org/x/net v0.4.0 h1:Q5QPcMlvfxFTAPV0+07Xz/MpK9NTXu2VDUuy0FeMfaU= - golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= -+golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= -+golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= - golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= - golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= - golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -@@ -525,6 +548,8 @@ golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ - golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= - golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b h1:clP8eMhB30EHdc0bd2Twtq6kgU7yl5ub2cQLSdrv1Dg= - golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -+golang.org/x/oauth2 v0.7.0 h1:qe6s0zUXlPX80/dITx3440hWZ7GwMwgDDyrSGTPJG/g= -+golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= - golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= - golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= - golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -@@ -610,10 +635,14 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc - golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= - golang.org/x/sys v0.3.0 h1:w8ZOecv6NaNa/zC8944JTU3vz4u6Lagfk4RPQxv92NQ= - golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -+golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= -+golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= - golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= - golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= - golang.org/x/term v0.3.0 h1:qoo4akIqOcDME5bhc/NgxUdovd6BSS2uMsVjB56q1xI= - golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= -+golang.org/x/term v0.13.0 h1:bb+I9cTfFazGW51MZqBVmZy7+JEJMouUHTUSKVQLBek= -+golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= - golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= - golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= - golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -@@ -626,6 +655,8 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= - golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= - golang.org/x/text v0.5.0 h1:OLmvp0KP+FVG99Ct/qFiL/Fhk4zp4QQnZ7b2U+5piUM= - golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -+golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= -+golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= - golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= - golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= - golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -@@ -785,6 +816,8 @@ google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEc - google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= - google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21 h1:hrbNEivu7Zn1pxvHk6MBrq9iE22woVILTHqexqBxe6I= - google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -+google.golang.org/genproto/googleapis/rpc v0.0.0-20230731190214-cbb8c96f2d6d h1:pgIUhmqwKOUlnKna4r6amKdUngdL8DrkpFeV8+VBElY= -+google.golang.org/genproto/googleapis/rpc v0.0.0-20230731190214-cbb8c96f2d6d/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= - google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= - google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= - google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -@@ -813,6 +846,8 @@ google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9K - google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= - google.golang.org/grpc v1.51.0 h1:E1eGv1FTqoLIdnBCZufiSHgKjlqG6fKFf6pPWtMTh8U= - google.golang.org/grpc v1.51.0/go.mod h1:wgNDFcnuBGmxLKI/qn4T+m5BtEBYXJPvibbUPsAIPww= -+google.golang.org/grpc v1.57.1 h1:upNTNqv0ES+2ZOOqACwVtS3Il8M12/+Hz41RCPzAjQg= -+google.golang.org/grpc v1.57.1/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= - google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= - google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= - google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -@@ -830,6 +865,8 @@ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ - google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= - google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= - google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -+google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= -+google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= - gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= - gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= - gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -@@ -866,6 +903,8 @@ k8s.io/apimachinery v0.20.2 h1:hFx6Sbt1oG0n6DZ+g4bFt5f6BoMkOjKWsQFu077M3Vg= - k8s.io/apimachinery v0.20.2/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= - k8s.io/client-go v0.20.2 h1:uuf+iIAbfnCSw8IGAv/Rg0giM+2bOzHLOsbbrwrdhNQ= - k8s.io/client-go v0.20.2/go.mod h1:kH5brqWqp7HDxUFKoEgiI4v8G1xzbe9giaCenUWJzgE= -+k8s.io/cri-api v0.25.3 h1:YaiQ05CM4+5L2DAz0KoSa4sv4/VlQvLbf3WHKICPSXs= -+k8s.io/cri-api v0.25.3/go.mod h1:riC/P0yOGUf2K1735wW+CXs1aY2ctBgePtnnoFLd0dU= - k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= - k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= - k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= -@@ -883,3 +922,5 @@ sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK - sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= - sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= - sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= -+sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= -+sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= -diff --git a/pkg/api/api.go b/pkg/api/api.go -index 30822a9..dc8254d 100644 ---- a/pkg/api/api.go -+++ b/pkg/api/api.go -@@ -53,4 +53,5 @@ type EventHandler interface { - type Informer interface { - Publisher - Start(ctx context.Context) -+ WaitReady() - } -diff --git a/pkg/common/constant/constant.go b/pkg/common/constant/constant.go -index 4f22ef0..5f525b3 100644 ---- a/pkg/common/constant/constant.go -+++ b/pkg/common/constant/constant.go -@@ -112,9 +112,30 @@ const ( - PSIIOCgroupFileName = "io.pressure" - ) - -+// cgroup driver - const ( - // CgroupDriverSystemd is global config for cgroupfs driver choice: systemd driver - CgroupDriverSystemd = "systemd" - // CgroupDriverCgroupfs is global config for cgroupfs driver choice: cgroupfs driver - CgroupDriverCgroupfs = "cgroupfs" - ) -+ -+// container engine -+const ( -+ // ContainerEngineCrio is name of crio container engine -+ ContainerEngineCrio = "crio" -+ // ContainerEngineContainerd is name of containerd container engine -+ ContainerEngineContainerd = "cri-containerd" -+ // ContainerEngineIsula is name of isula container engine -+ ContainerEngineIsula = "isula" -+ // ContainerEngineDocker is name of docker container engine -+ ContainerEngineDocker = "docker" -+) -+ -+// informer type -+const ( -+ // APIServerInformer is global config for informerType choice: informerType: "apiserver" -+ APIServerInformer = "apiserver" -+ // NRIInformer is global config for informerType choice: informerType: "nri" -+ NRIInformer = "nri" -+) -diff --git a/pkg/config/config.go b/pkg/config/config.go -index 6ae775f..05904d2 100644 ---- a/pkg/config/config.go -+++ b/pkg/config/config.go -@@ -45,6 +45,7 @@ type AgentConfig struct { - CgroupRoot string `json:"cgroupRoot,omitempty"` - EnabledFeatures []string `json:"enabledFeatures,omitempty"` - CgroupDriver string `json:"cgroupDriver,omitempty"` -+ InformerType string `json:"informerType,omitempty"` - } - - // NewConfig returns an config object pointer -@@ -58,6 +59,7 @@ func NewConfig(pType parserType) *Config { - LogDir: constant.DefaultLogDir, - CgroupRoot: constant.DefaultCgroupRoot, - CgroupDriver: constant.CgroupDriverCgroupfs, -+ InformerType: constant.APIServerInformer, - }, - } - return c -diff --git a/pkg/core/typedef/containerinfo.go b/pkg/core/typedef/containerinfo.go -index 845105f..841c800 100644 ---- a/pkg/core/typedef/containerinfo.go -+++ b/pkg/core/typedef/containerinfo.go -@@ -81,26 +81,34 @@ type ContainerInfo struct { - ID string `json:"id"` - RequestResources ResourceMap `json:"requests,omitempty"` - LimitResources ResourceMap `json:"limits,omitempty"` -+ // PodSandboxId means the id of the pod which the container belongs to -+ PodSandboxId string `json:"podisandid,omitempty"` - } - - // NewContainerInfo creates a ContainerInfo instance - func NewContainerInfo(id, podCgroupPath string, rawContainer *RawContainer) *ContainerInfo { -+ scopeName := containerEngineScopes[currentContainerEngines] - requests, limits := rawContainer.GetResourceMaps() - var path string - if cgroup.GetCgroupDriver() == constant.CgroupDriverSystemd { -- scopeName := containerEngineScopes[currentContainerEngines] -- path = filepath.Join(podCgroupPath, scopeName+"-"+id+".scope") -+ switch containerEngineScopes[currentContainerEngines] { -+ case constant.ContainerEngineContainerd, constant.ContainerEngineCrio, constant.ContainerEngineDocker, constant.ContainerEngineIsula: -+ path = filepath.Join(podCgroupPath, scopeName+"-"+id+".scope") -+ } - } else { -- path = filepath.Join(podCgroupPath, id) -+ switch containerEngineScopes[currentContainerEngines] { -+ case constant.ContainerEngineContainerd, constant.ContainerEngineDocker, constant.ContainerEngineIsula: -+ path = filepath.Join(podCgroupPath, id) -+ case constant.ContainerEngineCrio: -+ path = filepath.Join(podCgroupPath, scopeName+"-"+id) -+ } - } -- - return &ContainerInfo{ - Name: rawContainer.status.Name, - ID: id, - Hierarchy: cgroup.Hierarchy{Path: path}, - RequestResources: requests, -- LimitResources: limits, -- } -+ LimitResources: limits} - } - - func fixContainerEngine(containerID string) { -diff --git a/pkg/core/typedef/event.go b/pkg/core/typedef/event.go -index ee9d886..f4d7f21 100644 ---- a/pkg/core/typedef/event.go -+++ b/pkg/core/typedef/event.go -@@ -36,18 +36,36 @@ const ( - INFODELETE - // RAWPODSYNCALL means Full amount of kubernetes pods - RAWPODSYNCALL -+ // NRIPODADD means nri starts a new Pod event -+ NRIPODADD -+ // NRIPODDELETE means nri deletes Pod event -+ NRIPODDELETE -+ // NRICONTAINERCREATE means nri starts container event -+ NRICONTAINERSTART -+ // NRICONTAINERREMOVE means nri removes Container event -+ NRICONTAINERREMOVE -+ // NRIPODSYNCALL means sync all Pods event -+ NRIPODSYNCALL -+ // NRICONTAINERSYNCALL means sync all Containers event -+ NRICONTAINERSYNCALL - ) - - const undefinedType = "undefined" - - var eventTypeToString = map[EventType]string{ -- RAWPODADD: "addrawpod", -- RAWPODUPDATE: "updaterawpod", -- RAWPODDELETE: "deleterawpod", -- INFOADD: "addinfo", -- INFOUPDATE: "updateinfo", -- INFODELETE: "deleteinfo", -- RAWPODSYNCALL: "syncallrawpods", -+ RAWPODADD: "addrawpod", -+ RAWPODUPDATE: "updaterawpod", -+ RAWPODDELETE: "deleterawpod", -+ INFOADD: "addinfo", -+ INFOUPDATE: "updateinfo", -+ INFODELETE: "deleteinfo", -+ RAWPODSYNCALL: "syncallrawpods", -+ NRIPODADD: "addnripod", -+ NRIPODDELETE: "deletenripod", -+ NRICONTAINERSTART: "createnricontainer", -+ NRICONTAINERREMOVE: "removenricontainer", -+ NRIPODSYNCALL: "syncallnrirawpods", -+ NRICONTAINERSYNCALL: "syncallnrirawcontainers", - } - - // String returns the string of the current event type -diff --git a/pkg/core/typedef/nrirawpod.go b/pkg/core/typedef/nrirawpod.go -new file mode 100644 -index 0000000..0749c8a ---- /dev/null -+++ b/pkg/core/typedef/nrirawpod.go -@@ -0,0 +1,461 @@ -+// Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. -+// rubik licensed under the Mulan PSL v2. -+// You can use this software according to the terms and conditions of the Mulan PSL v2. -+// You may obtain a copy of Mulan PSL v2 at: -+// http://license.coscl.org.cn/MulanPSL2 -+// THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR -+// IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR -+// PURPOSE. -+// See the Mulan PSL v2 for more details. -+// Author: weiyuan -+// Create: 2024-05-28 -+// Description: This file defines NRIRawPod and NRIRawContainerwhich encapsulate nri pod and container info -+ -+// Package typedef defines core struct and methods for rubik -+package typedef -+ -+import ( -+ "bufio" -+ "encoding/json" -+ "fmt" -+ "io" -+ "os" -+ "path/filepath" -+ "strings" -+ -+ "github.com/containerd/nri/pkg/api" -+ "isula.org/rubik/pkg/common/constant" -+ "isula.org/rubik/pkg/core/typedef/cgroup" -+ corev1 "k8s.io/api/core/v1" -+ "k8s.io/apimachinery/pkg/api/resource" -+) -+ -+type ( -+ // NRIRawContainer is nri container structure -+ NRIRawContainer api.Container -+ // NRIRawPod is nri pod structure -+ NRIRawPod api.PodSandbox -+) -+ -+const ( -+ // nri Container Annotations "kubectl.kubernetes.io/last-applied-configuration" means container applied config -+ containerAppliedConfiguration string = "kubectl.kubernetes.io/last-applied-configuration" -+ // /proc/self/cgroup file -+ procSelfCgroupFile = "/proc/self/cgroup" -+ -+ containerSpec string = "containers" -+ resourcesSpec string = "resources" -+ nanoToMicro float64 = 1000 -+ fileMode os.FileMode = 0666 -+) -+ -+func init() { -+ setContainerEnginesOnce.Do(FixContainerEngine) -+} -+ -+// convert NRIRawPod structure to PodInfo structure -+func (pod *NRIRawPod) ConvertNRIRawPod2PodInfo() *PodInfo { -+ if pod == nil { -+ return nil -+ } -+ return &PodInfo{ -+ Hierarchy: cgroup.Hierarchy{ -+ Path: pod.CgroupPath(), -+ }, -+ Name: pod.Name, -+ UID: pod.Uid, -+ Namespace: pod.Namespace, -+ IDContainersMap: make(map[string]*ContainerInfo, 0), -+ Annotations: pod.Annotations, -+ Labels: pod.Labels, -+ ID: pod.Id, -+ } -+} -+ -+// get pod Qos -+func (pod *NRIRawPod) GetQosClass() string { -+ var podQosClass string -+ podQosClass = "Guaranteed" -+ if strings.Contains(pod.Linux.CgroupsPath, "burstable") { -+ podQosClass = "Burstable" -+ } -+ if strings.Contains(pod.Linux.CgroupsPath, "besteffort") { -+ podQosClass = "BestEffort" -+ } -+ return podQosClass -+} -+ -+// get pod cgroupPath -+func (pod *NRIRawPod) CgroupPath() string { -+ var path string -+ id := pod.Uid -+ -+ qosClassPath := "" -+ switch corev1.PodQOSClass(pod.GetQosClass()) { -+ case corev1.PodQOSGuaranteed: -+ case corev1.PodQOSBurstable: -+ qosClassPath = strings.ToLower(string(corev1.PodQOSBurstable)) -+ case corev1.PodQOSBestEffort: -+ qosClassPath = strings.ToLower(string(corev1.PodQOSBestEffort)) -+ default: -+ return "" -+ } -+ /* -+ Kubernetes defines three different pods: -+ 1. Burstable: pod requests are less than the value of limits and not 0; -+ 2. BestEffort: pod requests and limits are both 0; -+ 3. Guaranteed: pod requests are equal to the value set by limits; -+ -+ When using cgroupfs as cgroup driver, -+ 1. The Burstable path looks like: kubepods/burstable/pod34152897-dbaf-11ea-8cb9-0653660051c3 -+ 2. The BestEffort path is in the form: kubepods/besteffort/pod34152897-dbaf-11ea-8cb9-0653660051c3 -+ 3. The Guaranteed path is in the form: kubepods/pod34152897-dbaf-11ea-8cb9-0653660051c3 -+ -+ When using systemd as cgroup driver: -+ 1. The Burstable path looks like: kubepods.slice/kubepods-burstable.slice/kubepods-burstable-podb895995a_e7e5_413e_9bc1_3c3895b3f233.slice -+ 2. The BestEffort path is in the form: kubepods.slice/kubepods-besteffort.slice/kubepods-besteffort-podb895995a_e7e5_413e_9bc1_3c3895b3f233.slice -+ 3. The Guaranteed path is in the form: kubepods.slice/kubepods-podb895995a_e7e5_413e_9bc1_3c3895b3f233.slice/ -+ */ -+ -+ if cgroup.GetCgroupDriver() == constant.CgroupDriverSystemd { -+ if qosClassPath == "" { -+ switch containerEngineScopes[currentContainerEngines] { -+ case constant.ContainerEngineContainerd, constant.ContainerEngineCrio, constant.ContainerEngineDocker, constant.ContainerEngineIsula: -+ path = filepath.Join( -+ constant.KubepodsCgroup+".slice", -+ constant.KubepodsCgroup+"-"+constant.PodCgroupNamePrefix+strings.Replace(id, "-", "_", -1)+".slice", -+ ) -+ } -+ } else { -+ switch containerEngineScopes[currentContainerEngines] { -+ case constant.ContainerEngineContainerd, constant.ContainerEngineCrio, constant.ContainerEngineDocker, constant.ContainerEngineIsula: -+ path = filepath.Join( -+ constant.KubepodsCgroup+".slice", -+ constant.KubepodsCgroup+"-"+qosClassPath+".slice", -+ pod.Linux.CgroupParent, -+ ) -+ -+ } -+ } -+ } else { -+ if qosClassPath == "" { -+ switch containerEngineScopes[currentContainerEngines] { -+ case constant.ContainerEngineContainerd, constant.ContainerEngineDocker, constant.ContainerEngineIsula, constant.ContainerEngineCrio: -+ path = filepath.Join(constant.KubepodsCgroup, constant.PodCgroupNamePrefix+id) -+ } -+ } else { -+ -+ switch containerEngineScopes[currentContainerEngines] { -+ case constant.ContainerEngineContainerd, constant.ContainerEngineDocker, constant.ContainerEngineIsula, constant.ContainerEngineCrio: -+ path = filepath.Join(constant.KubepodsCgroup, qosClassPath, constant.PodCgroupNamePrefix+id) -+ default: -+ path = "" -+ } -+ } -+ -+ } -+ return path -+} -+ -+// get pod running state -+func (pod *NRIRawPod) Running() bool { -+ return true -+} -+ -+// get pod UID -+func (pod *NRIRawPod) ID() string { -+ if pod == nil { -+ return "" -+ } -+ return string(pod.Uid) -+} -+ -+// convert NRIRawContainer structure to ContainerInfo structure -+func (container *NRIRawContainer) ConvertNRIRawContainer2ContainerInfo() *ContainerInfo { -+ if container == nil { -+ return nil -+ } -+ requests, limits := container.GetResourceMaps() -+ return &ContainerInfo{ -+ Hierarchy: cgroup.Hierarchy{ -+ Path: container.CgroupPath(), -+ }, -+ Name: container.Name, -+ ID: container.Id, -+ RequestResources: requests, -+ LimitResources: limits, -+ PodSandboxId: container.PodSandboxId, -+ } -+} -+ -+// get container cgroupPath -+func (container *NRIRawContainer) CgroupPath() string { -+ var path string -+ /* -+ When using systemd cgroup driver with burstable qos: -+ kubepods-burstable-podbb29f378_0c50_4da4_b070_be919e350db2.slice:crio:a575c8505d48fd0f75488fcf979dea7a693633e99709bb82308af54f3bafb186 -+ convert to: -+ "kubepods.slice/kubepods-burstable.slice/kubepods-burstable-pod84d0ae01_83a0_42a7_8990_abbb16e59923.slice/crio-66ff3a44a254533880e6b50e8fb52e0311c9158eb66426ae244066a4f11b26e5.scope" -+ -+ When using cgroupfs as cgroup driver and isula, docker, containerd as runtime wich burstable qos: -+ /kubepods/burstable/poda168d109-4d40-4c50-8f89-957b9b0dc5d6/75082fa9e4783ecf3fc2e1ada7cd08fd2dd20d001d36e579e28e3cb00d312ad4 -+ convert to: -+ kubepods/burstable/pod42736679-4475-43cf-afb4-e3744f4352fd/88a791aa2090c928667579ea11a63f0ab67cf0be127743308a6e1a2130489dec -+ -+ When using cgroupfs as cgroup drvier and crio as container runtime wich burstable qos: -+ /kubepods/burstable/poda168d109-4d40-4c50-8f89-957b9b0dc5d6/crio-75082fa9e4783ecf3fc2e1ada7cd08fd2dd20d001d36e579e28e3cb00d312ad4 -+ convert to: -+ kubepods/burstable/pod42736679-4475-43cf-afb4-e3744f4352fd/crio-88a791aa2090c928667579ea11a63f0ab67cf0be127743308a6e1a2130489dec -+ */ -+ -+ /* -+ When using cgroupfs as cgroup driver and isula, docker, containerd as container runtime: -+ 1. The Burstable path looks like: kubepods/burstable/pod34152897-dbaf-11ea-8cb9-0653660051c3/88a791aa2090c928667579ea11a63f0ab67cf0be127743308a6e1a2130489dec -+ 2. The BestEffort path is in the form: kubepods/bestEffort/pod34152897-dbaf-11ea-8cb9-0653660051c3/88a791aa2090c928667579ea11a63f0ab67cf0be127743308a6e1a2130489dec -+ 3. The Guaranteed path is in the form: kubepods/pod34152897-dbaf-11ea-8cb9-0653660051c3/88a791aa2090c928667579ea11a63f0ab67cf0be127743308a6e1a2130489dec -+ -+ When using cgroupfs as cgroup driver and crio as container runtime: -+ 1. The Burstable path looks like: kubepods/burstable/pod34152897-dbaf-11ea-8cb9-0653660051c3/crio-88a791aa2090c928667579ea11a63f0ab67cf0be127743308a6e1a2130489dec -+ 2. The BestEffort path is in the form: kubepods/besteffort/pod34152897-dbaf-11ea-8cb9-0653660051c3/crio-88a791aa2090c928667579ea11a63f0ab67cf0be127743308a6e1a2130489dec -+ 3. The Guaranteed path is in the form: kubepods/pod34152897-dbaf-11ea-8cb9-0653660051c3/crio-88a791aa2090c928667579ea11a63f0ab67cf0be127743308a6e1a2130489dec -+ -+ When using systemd as cgroup driver: -+ 1. The Burstable path looks like: kubepods.slice/kubepods-burstable.slice/kubepods-burstable-podb895995a_e7e5_413e_9bc1_3c3895b3f233.slice/crio-88a791aa2090c928667579ea11a63f0ab67cf0be127743308a6e1a2130489dec.scope -+ 2. The BestEffort path is in the form: kubepods.slice/kubepods-besteffort.slice/kubepods-besteffort-podb895995a_e7e5_413e_9bc1_3c3895b3f233.slice/crio-88a791aa2090c928667579ea11a63f0ab67cf0be127743308a6e1a2130489dec.scope -+ 3. The Guaranteed path is in the form: kubepods.slice/kubepods-podb895995a_e7e5_413e_9bc1_3c3895b3f233.slice/crio-88a791aa2090c928667579ea11a63f0ab67cf0be127743308a6e1a2130489dec.scope -+ */ -+ qosClassPath := "" -+ switch corev1.PodQOSClass(container.getQos()) { -+ case corev1.PodQOSGuaranteed: -+ case corev1.PodQOSBurstable: -+ qosClassPath = strings.ToLower(string(corev1.PodQOSBurstable)) -+ case corev1.PodQOSBestEffort: -+ qosClassPath = strings.ToLower(string(corev1.PodQOSBestEffort)) -+ default: -+ return "" -+ } -+ -+ if cgroup.GetCgroupDriver() == constant.CgroupDriverSystemd { -+ if qosClassPath == "" { -+ switch containerEngineScopes[currentContainerEngines] { -+ case constant.ContainerEngineContainerd, constant.ContainerEngineCrio, constant.ContainerEngineDocker, constant.ContainerEngineIsula: -+ path = filepath.Join( -+ constant.KubepodsCgroup+".slice", -+ container.getPodCgroupDir(), -+ containerEngineScopes[currentContainerEngines]+"-"+container.Id+".scope", -+ ) -+ default: -+ path = "" -+ } -+ } else { -+ switch containerEngineScopes[currentContainerEngines] { -+ case constant.ContainerEngineContainerd, constant.ContainerEngineCrio, constant.ContainerEngineDocker, constant.ContainerEngineIsula: -+ -+ path = filepath.Join( -+ constant.KubepodsCgroup+".slice", -+ constant.KubepodsCgroup+"-"+qosClassPath+".slice", -+ container.getPodCgroupDir(), -+ containerEngineScopes[currentContainerEngines]+"-"+container.Id+".scope", -+ ) -+ default: -+ path = "" -+ } -+ -+ } -+ -+ } else { -+ if qosClassPath == "" { -+ switch containerEngineScopes[currentContainerEngines] { -+ case constant.ContainerEngineContainerd, constant.ContainerEngineDocker, constant.ContainerEngineIsula: -+ path = filepath.Join( -+ constant.KubepodsCgroup, -+ container.getPodCgroupDir(), -+ container.Id, -+ ) -+ -+ case constant.ContainerEngineCrio: -+ path = filepath.Join( -+ constant.KubepodsCgroup, -+ container.getPodCgroupDir(), -+ containerEngineScopes[currentContainerEngines]+"-"+container.Id, -+ ) -+ default: -+ path = "" -+ } -+ } else { -+ switch containerEngineScopes[currentContainerEngines] { -+ case constant.ContainerEngineContainerd, constant.ContainerEngineDocker, constant.ContainerEngineIsula: -+ path = filepath.Join( -+ constant.KubepodsCgroup, -+ qosClassPath, -+ container.getPodCgroupDir(), -+ container.Id, -+ ) -+ case constant.ContainerEngineCrio: -+ path = filepath.Join( -+ constant.KubepodsCgroup, -+ qosClassPath, -+ container.getPodCgroupDir(), -+ containerEngineScopes[currentContainerEngines]+"-"+container.Id, -+ ) -+ -+ default: -+ path = "" -+ } -+ } -+ } -+ return path -+} -+ -+// get container's pod's cgroup dir -+func (container *NRIRawContainer) getPodCgroupDir() string { -+ var podPath string -+ if cgroup.GetCgroupDriver() == constant.CgroupDriverSystemd { -+ podPath = strings.Split(container.Linux.CgroupsPath, ":")[0] -+ } else { -+ pathInfo := strings.Split(container.Linux.CgroupsPath, "/") -+ podPath = pathInfo[len(pathInfo)-2] -+ } -+ return podPath -+} -+ -+// get Qos through NRIRawContainer -+func (container *NRIRawContainer) getQos() string { -+ var podQosClass string -+ podQosClass = "Guaranteed" -+ if strings.Contains(container.Linux.CgroupsPath, "burstable") { -+ podQosClass = "Burstable" -+ } -+ if strings.Contains(container.Linux.CgroupsPath, "besteffort") { -+ podQosClass = "BestEffort" -+ } -+ -+ return podQosClass -+} -+ -+// AppliedConfiguration define container applied configure -+type AppliedConfiguration struct { -+ ApiVersion string -+ Kind string -+ Metadata interface{} -+ Spec map[string][]map[string]interface{} -+} -+ -+// Resources define container resource info -+type Resources struct { -+ Limits Limits -+ Requests Requests -+} -+ -+// Limits define container resource limit info -+type Limits struct { -+ Memory string -+ Cpu float64 -+} -+ -+// Requests define container resource request info -+type Requests struct { -+ Memory string -+ Cpu float64 -+} -+ -+// ResourceInfo define get resource interface -+type ResourceInfo interface { -+ getCpuInfo() float64 -+ getMemoryInfo() float64 -+} -+ -+// get container cpu request info -+func (r *Requests) getCpuInfo() float64 { -+ return r.Cpu -+} -+ -+// get container memory request info -+func (r *Requests) getMemoryInfo() float64 { -+ var converter = func(value *resource.Quantity) float64 { -+ return float64(value.MilliValue()) / 1000 -+ } -+ -+ q, _ := resource.ParseQuantity(r.Memory) -+ -+ return converter(&q) -+} -+ -+// get container cpu limit info -+func (r *Limits) getCpuInfo() float64 { -+ return r.Cpu -+} -+ -+// get container memory limit info -+func (r *Limits) getMemoryInfo() float64 { -+ var converter = func(value *resource.Quantity) float64 { -+ return float64(value.MilliValue()) / 1000 -+ } -+ -+ q, _ := resource.ParseQuantity(r.Memory) -+ -+ return converter(&q) -+} -+ -+// get container request and limit info from container applied configuration -+func (container *NRIRawContainer) GetResourceMaps() (ResourceMap, ResourceMap) { -+ configurations := container.Annotations[containerAppliedConfiguration] -+ containerConf := &AppliedConfiguration{} -+ _ = json.Unmarshal([]byte(configurations), containerConf) -+ resourceInfo := &Resources{} -+ if r, ok := containerConf.Spec[containerSpec]; ok { -+ for _, containerSpec := range r { -+ if containerSpec["name"] == container.Name { -+ if containerResourceSpec, ok := containerSpec[resourcesSpec]; ok { -+ if resource, err := json.Marshal(containerResourceSpec); err != nil { -+ fmt.Printf("get container %v Resource failed ", container.Id) -+ } else { -+ if err = json.Unmarshal(resource, resourceInfo); err != nil { -+ fmt.Printf("container %v data format error", container.Id) -+ } else { -+ fmt.Printf("get container %v Resource success", container.Id) -+ } -+ } -+ } else { -+ fmt.Printf("container %v spec resources info not exist", container.Id) -+ } -+ } else { -+ continue -+ } -+ } -+ } else { -+ fmt.Printf("container %v spec containers info not exist", container.Id) -+ } -+ -+ iterator := func(res ResourceInfo) ResourceMap { -+ results := make(ResourceMap) -+ results[ResourceCPU] = res.getCpuInfo() -+ results[ResourceMem] = res.getMemoryInfo() -+ return results -+ } -+ return iterator(&resourceInfo.Requests), iterator(&resourceInfo.Limits) -+} -+ -+// get current container engine -+func FixContainerEngine() { -+ file, err := os.OpenFile(procSelfCgroupFile, os.O_RDONLY, fileMode) -+ if err != nil { -+ return -+ } -+ defer file.Close() -+ reader := bufio.NewReader(file) -+ for { -+ line, _, err := reader.ReadLine() -+ s := strings.Split(string(line), "/") -+ containerEngine := strings.Split(s[len(s)-1], "-")[0] -+ for engine, prefix := range containerEngineScopes { -+ if containerEngine == prefix { -+ currentContainerEngines = engine -+ break -+ } -+ } -+ if err == io.EOF { -+ break -+ } -+ } -+} -diff --git a/pkg/core/typedef/podinfo.go b/pkg/core/typedef/podinfo.go -index fd96848..656bc3c 100644 ---- a/pkg/core/typedef/podinfo.go -+++ b/pkg/core/typedef/podinfo.go -@@ -28,6 +28,8 @@ type PodInfo struct { - IDContainersMap map[string]*ContainerInfo `json:"containers,omitempty"` - Annotations map[string]string `json:"annotations,omitempty"` - Labels map[string]string `json:"labels,omitempty"` -+ // ID means id of the pod in sandbox but not uid -+ ID string `json:"id,omitempty"` - } - - // NewPodInfo creates the PodInfo instance -diff --git a/pkg/core/typedef/rawpod.go b/pkg/core/typedef/rawpod.go -index 895e9d4..b67126a 100644 ---- a/pkg/core/typedef/rawpod.go -+++ b/pkg/core/typedef/rawpod.go -@@ -87,6 +87,7 @@ func (pod *RawPod) ID() string { - } - - // CgroupPath returns cgroup path of raw pod -+// handle different combinations of cgroupdriver and pod qos and container runtime - func (pod *RawPod) CgroupPath() string { - id := string(pod.UID) - if configHash := pod.Annotations[configHashAnnotationKey]; configHash != "" { -@@ -103,41 +104,65 @@ func (pod *RawPod) CgroupPath() string { - default: - return "" - } -+ - /* -- for cgroupfs cgroup driver -+ Kubernetes defines three different pods: - 1. Burstable: pod requests are less than the value of limits and not 0; -- kubepods/burstable/pod34152897-dbaf-11ea-8cb9-0653660051c3 - 2. BestEffort: pod requests and limits are both 0; -- kubepods/bestEffort/pod34152897-dbaf-11ea-8cb9-0653660051c3 - 3. Guaranteed: pod requests are equal to the value set by limits; -- kubepods/pod34152897-dbaf-11ea-8cb9-0653660051c3 -- */ -- /* -- for systemd cgroup driver -- 1. burstable: -- kubepods.slice/kubepods-burstable.slice/kubepods-burstable-podb895995a_e7e5_413e_9bc1_3c3895b3f233.slice -- 2. besteffort -- kubepods.slice/kubepods-besteffort.slice/kubepods-besteffort-podb895995a_e7e5_413e_9bc1_3c3895b3f233.slice -- 3. guaranteed -- kubepods.slice/kubepods-podb895995a_e7e5_413e_9bc1_3c3895b3f233.slice/ -+ -+ When using cgroupfs as cgroup driver: -+ 1. The Burstable path looks like: kubepods/burstable/pod34152897-dbaf-11ea-8cb9-0653660051c3 -+ 2. The BestEffort path is in the form: kubepods/bestEffort/pod34152897-dbaf-11ea-8cb9-0653660051c3 -+ 3. The Guaranteed path is in the form: kubepods/pod34152897-dbaf-11ea-8cb9-0653660051c3 -+ -+ When using systemd as cgroup driver: -+ 1. The Burstable path looks like: kubepods.slice/kubepods-burstable.slice/kubepods-burstable-podb895995a_e7e5_413e_9bc1_3c3895b3f233.slice -+ 2. The BestEffort path is in the form: kubepods.slice/kubepods-besteffort.slice/kubepods-besteffort-podb895995a_e7e5_413e_9bc1_3c3895b3f233.slice -+ 3. The Guaranteed path is in the form: kubepods.slice/kubepods-podb895995a_e7e5_413e_9bc1_3c3895b3f233.slice/ - */ - - if cgroup.GetCgroupDriver() == constant.CgroupDriverSystemd { - if qosClassPath == "" { -- return filepath.Join( -- constant.KubepodsCgroup+".slice", -- constant.KubepodsCgroup+"-"+constant.PodCgroupNamePrefix+strings.Replace(id, "-", "_", -1)+".slice", -- ) -+ switch containerEngineScopes[currentContainerEngines] { -+ case constant.ContainerEngineContainerd, constant.ContainerEngineCrio, constant.ContainerEngineDocker, constant.ContainerEngineIsula: -+ return filepath.Join( -+ constant.KubepodsCgroup+".slice", -+ constant.KubepodsCgroup+"-"+constant.PodCgroupNamePrefix+strings.Replace(id, "-", "_", -1)+".slice", -+ ) -+ default: -+ return "" -+ } -+ } else { -+ switch containerEngineScopes[currentContainerEngines] { -+ case constant.ContainerEngineContainerd, constant.ContainerEngineCrio, constant.ContainerEngineDocker, constant.ContainerEngineIsula: -+ return filepath.Join( -+ constant.KubepodsCgroup+".slice", -+ constant.KubepodsCgroup+"-"+qosClassPath+".slice", -+ constant.KubepodsCgroup+"-"+qosClassPath+"-"+constant.PodCgroupNamePrefix+strings.Replace(id, "-", "_", -1)+".slice", -+ ) -+ default: -+ return "" -+ } -+ - } -- return filepath.Join( -- constant.KubepodsCgroup+".slice", -- constant.KubepodsCgroup+"-"+qosClassPath+".slice", -- constant.KubepodsCgroup+"-"+qosClassPath+"-"+constant.PodCgroupNamePrefix+strings.Replace(id, "-", "_", -1)+".slice", -- ) - } else { -- return filepath.Join(constant.KubepodsCgroup, qosClassPath, constant.PodCgroupNamePrefix+id) -+ if qosClassPath == "" { -+ switch containerEngineScopes[currentContainerEngines] { -+ case constant.ContainerEngineDocker, constant.ContainerEngineContainerd, constant.ContainerEngineIsula, constant.ContainerEngineCrio: -+ return filepath.Join(constant.KubepodsCgroup, constant.PodCgroupNamePrefix+id) -+ default: -+ return "" -+ } -+ } else { -+ switch containerEngineScopes[currentContainerEngines] { -+ case constant.ContainerEngineDocker, constant.ContainerEngineContainerd, constant.ContainerEngineIsula, constant.ContainerEngineCrio: -+ return filepath.Join(constant.KubepodsCgroup, qosClassPath, constant.PodCgroupNamePrefix+id) -+ default: -+ return "" -+ } -+ } - } -- - } - - // ListRawContainers returns all RawContainers in the RawPod -@@ -196,7 +221,6 @@ func (cont *RawContainer) GetRealContainerID() (string, error) { - So we don't consider the case of midway container engine changes - `fixContainerEngine` is only executed when `getRealContainerID` is called for the first time - */ -- setContainerEnginesOnce.Do(func() { fixContainerEngine(cont.status.ContainerID) }) - - if !currentContainerEngines.Support(cont) { - return "", fmt.Errorf("unsupported container engine: %v", cont.status.ContainerID) -diff --git a/pkg/informer/apiserverinformer.go b/pkg/informer/apiserverinformer.go -index cbba1e2..bb1a786 100644 ---- a/pkg/informer/apiserverinformer.go -+++ b/pkg/informer/apiserverinformer.go -@@ -78,6 +78,9 @@ func InitKubeClient() (*kubernetes.Clientset, error) { - return kubeClient, nil - } - -+func (informer *APIServerInformer) WaitReady() { -+} -+ - // Start starts and enables PIServerInformer - func (informer *APIServerInformer) Start(ctx context.Context) { - const specNodeNameField = "spec.nodeName" -diff --git a/pkg/informer/informerfactory.go b/pkg/informer/informerfactory.go -index 69de266..7358d53 100644 ---- a/pkg/informer/informerfactory.go -+++ b/pkg/informer/informerfactory.go -@@ -31,6 +31,7 @@ type ( - const ( - // APISERVER instructs the informer to interact with the api server of kubernetes to obtain data - APISERVER informerType = iota -+ NRI - ) - - // defaultInformerFactory is globally unique informer factory -@@ -41,6 +42,8 @@ func (factory *informerFactory) GetInformerCreator(iType informerType) informerC - switch iType { - case APISERVER: - return NewAPIServerInformer -+ case NRI: -+ return NewNRIInformer - default: - return func(publisher api.Publisher) (api.Informer, error) { - return nil, fmt.Errorf("infomer not implemented") -diff --git a/pkg/informer/nriinformer.go b/pkg/informer/nriinformer.go -new file mode 100644 -index 0000000..fb4744d ---- /dev/null -+++ b/pkg/informer/nriinformer.go -@@ -0,0 +1,147 @@ -+// Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. -+// rubik licensed under the Mulan PSL v2. -+// You can use this software according to the terms and conditions of the Mulan PSL v2. -+// You may obtain a copy of Mulan PSL v2 at: -+// http://license.coscl.org.cn/MulanPSL2 -+// THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR -+// IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR -+// PURPOSE. -+// See the Mulan PSL v2 for more details. -+// Author: weiyuan -+// Create: 2024-05-28 -+// Description: This file defines nriinformer which interact with nri -+ -+// Package informer implements informer interface -+package informer -+ -+import ( -+ "context" -+ "os" -+ -+ "github.com/containerd/nri/pkg/api" -+ "github.com/containerd/nri/pkg/stub" -+ rubikapi "isula.org/rubik/pkg/api" -+ "isula.org/rubik/pkg/common/constant" -+ "isula.org/rubik/pkg/core/typedef" -+) -+ -+// NRIInformer interacts with crio server and forward data to the internal -+type NRIInformer struct { -+ rubikapi.Publisher -+ nodeName string -+ stub stub.Stub -+ finishedSync chan struct{} -+} -+ -+// register nriplugin -+func NewNRIInformer(publisher rubikapi.Publisher) (rubikapi.Informer, error) { -+ p := &NRIInformer{} -+ p.Publisher = publisher -+ pluginName := "rubik" -+ pluginIndex := "10" -+ nodeName := os.Getenv(constant.NodeNameEnvKey) -+ p.finishedSync = make(chan struct{}) -+ p.nodeName = nodeName -+ var err error -+ options := []stub.Option{ -+ stub.WithPluginName(pluginName), -+ stub.WithPluginIdx(pluginIndex), -+ } -+ p.stub, err = stub.New(p, options...) -+ return p, err -+} -+ -+// start nriplugin -+func (plugin NRIInformer) Start(ctx context.Context) { -+ go plugin.stub.Run(ctx) -+} -+ -+// wait sync event finish -+func (plugin NRIInformer) WaitReady() { -+ <-plugin.finishedSync -+} -+ -+// nri sync event -+func (plugin NRIInformer) Synchronize(ctx context.Context, pods []*api.PodSandbox, containers []*api.Container) ([]*api.ContainerUpdate, error) { -+ plugin.Publish(typedef.NRIPODSYNCALL, pods) -+ plugin.Publish(typedef.NRICONTAINERSYNCALL, containers) -+ // notify service handler to start -+ close(plugin.finishedSync) -+ -+ return nil, nil -+} -+ -+// nri pod run event -+func (plugin NRIInformer) RunPodSandbox(ctx context.Context, pod *api.PodSandbox) error { -+ plugin.Publish(typedef.NRIPODADD, pod) -+ return nil -+} -+ -+// nri pod stop event -+func (plugin NRIInformer) StopPodSandbox(ctx context.Context, pod *api.PodSandbox) error { -+ return nil -+} -+ -+// nri pod remove event -+func (plugin NRIInformer) RemovePodSandbox(ctx context.Context, pod *api.PodSandbox) error { -+ plugin.Publish(typedef.NRIPODDELETE, pod) -+ -+ return nil -+} -+ -+// nri container create event -+func (plugin NRIInformer) CreateContainer(context.Context, *api.PodSandbox, *api.Container) (*api.ContainerAdjustment, []*api.ContainerUpdate, error) { -+ var containerAdjustment = &api.ContainerAdjustment{} -+ var containerUpdate = []*api.ContainerUpdate{} -+ return containerAdjustment, containerUpdate, nil -+} -+ -+// nri container start event -+func (plugin NRIInformer) StartContainer(ctx context.Context, pod *api.PodSandbox, container *api.Container) error { -+ plugin.Publish(typedef.NRICONTAINERSTART, container) -+ return nil -+} -+ -+// nri container update event -+func (plugin NRIInformer) UpdateContainer(ctx context.Context, pod *api.PodSandbox, container *api.Container, lr *api.LinuxResources) ([]*api.ContainerUpdate, error) { -+ var containerUpdate = []*api.ContainerUpdate{} -+ return containerUpdate, nil -+} -+ -+// nri container stop cont -+func (plugin NRIInformer) StopContainer(ctx context.Context, pod *api.PodSandbox, container *api.Container) ([]*api.ContainerUpdate, error) { -+ plugin.Publish(typedef.NRICONTAINERREMOVE, container) -+ var containerUpdate = []*api.ContainerUpdate{} -+ return containerUpdate, nil -+} -+ -+// nri container remove event -+func (plugin NRIInformer) RemoveContainer(ctx context.Context, pod *api.PodSandbox, container *api.Container) error { -+ plugin.Publish(typedef.NRICONTAINERREMOVE, container) -+ return nil -+} -+ -+// nri configure event -+func (plugin NRIInformer) Configure(context.Context, string, string, string) (api.EventMask, error) { -+ var eventMask api.EventMask -+ return eventMask, nil -+} -+ -+// nri post container create event -+func (plugin NRIInformer) PostCreateContainer(context.Context, *api.PodSandbox, *api.Container) error { -+ return nil -+} -+ -+// nri post container start event -+func (plugin NRIInformer) PostStartContainer(context.Context, *api.PodSandbox, *api.Container) error { -+ return nil -+} -+ -+// nri post container update event -+func (plugin NRIInformer) PostUpdateContainer(context.Context, *api.PodSandbox, *api.Container) error { -+ return nil -+} -+ -+// nri shutdown event -+func (plugin NRIInformer) Shutdown(context.Context) { -+} -diff --git a/pkg/podmanager/podcache.go b/pkg/podmanager/podcache.go -index 9e021c4..9326bcb 100644 ---- a/pkg/podmanager/podcache.go -+++ b/pkg/podmanager/podcache.go -@@ -104,6 +104,21 @@ func (cache *PodCache) substitute(pods []*typedef.PodInfo) { - } - } - -+// sync containers to podcache pods -+func (cache *PodCache) syncContainers2Pods(containers []*typedef.ContainerInfo) { -+ cache.Lock() -+ defer cache.Unlock() -+ pods := cache.Pods -+ for _, pod := range pods { -+ for _, container := range containers { -+ if pod.ID == container.PodSandboxId { -+ pod.IDContainersMap[container.ID] = container -+ log.Infof("sync container %v to pod %v", container.Name, pod.Name) -+ } -+ } -+ } -+} -+ - // listPod returns the deepcopy object of all pod - func (cache *PodCache) listPod() map[string]*typedef.PodInfo { - res := make(map[string]*typedef.PodInfo, len(cache.Pods)) -diff --git a/pkg/podmanager/podmanager.go b/pkg/podmanager/podmanager.go -index 8e3eef2..35f2903 100644 ---- a/pkg/podmanager/podmanager.go -+++ b/pkg/podmanager/podmanager.go -@@ -19,6 +19,7 @@ import ( - - corev1 "k8s.io/api/core/v1" - -+ nriapi "github.com/containerd/nri/pkg/api" - "isula.org/rubik/pkg/api" - "isula.org/rubik/pkg/common/log" - "isula.org/rubik/pkg/core/subscriber" -@@ -52,6 +53,14 @@ func (manager *PodManager) HandleEvent(eventType typedef.EventType, event typede - manager.handleWatchEvent(eventType, event) - case typedef.RAWPODSYNCALL: - manager.handleListEvent(eventType, event) -+ case typedef.NRIPODADD, typedef.NRIPODDELETE: -+ manager.handleNRIPodEvent(eventType, event) -+ case typedef.NRICONTAINERSTART, typedef.NRICONTAINERREMOVE: -+ manager.handleNRIContainerEvent(eventType, event) -+ case typedef.NRIPODSYNCALL: -+ manager.handleSYNCNRIPodsEvent(eventType, event) -+ case typedef.NRICONTAINERSYNCALL: -+ manager.handleSYNCNRIContainersEvent(eventType, event) - default: - log.Infof("fail to process %s type event", eventType.String()) - } -@@ -77,6 +86,42 @@ func (manager *PodManager) handleWatchEvent(eventType typedef.EventType, event t - } - } - -+// handlenripodevent handles the nri pod event -+func (manager *PodManager) handleNRIPodEvent(eventType typedef.EventType, event typedef.Event) { -+ pod, err := eventToNRIRawPod(event) -+ if err != nil { -+ log.Warnf(err.Error()) -+ return -+ } -+ -+ switch eventType { -+ case typedef.NRIPODADD: -+ manager.addNRIPodFunc(pod) -+ case typedef.NRIPODDELETE: -+ manager.deleteNRIPodFunc(pod) -+ default: -+ log.Errorf("code problem, should not go here...") -+ } -+} -+ -+// handlenricontainerevent handles the nri container event -+func (manager *PodManager) handleNRIContainerEvent(eventType typedef.EventType, event typedef.Event) { -+ container, err := eventToNRIRawContainer(event) -+ if err != nil { -+ log.Warnf(err.Error()) -+ return -+ } -+ switch eventType { -+ case typedef.NRICONTAINERSTART: -+ manager.addNRIContainerFunc(container) -+ case typedef.NRICONTAINERREMOVE: -+ manager.removeNRIContainerFunc(container) -+ default: -+ log.Errorf("code Problem, should not go here...") -+ } -+ -+} -+ - // handleListEvent handles the list event - func (manager *PodManager) handleListEvent(eventType typedef.EventType, event typedef.Event) { - pods, err := eventToRawPods(event) -@@ -92,12 +137,102 @@ func (manager *PodManager) handleListEvent(eventType typedef.EventType, event ty - } - } - -+// handleSYNCNRIPodsEvent handles sync pod event -+func (manager *PodManager) handleSYNCNRIPodsEvent(eventType typedef.EventType, event typedef.Event) { -+ pods, err := eventToNRIRawPods(event) -+ if err != nil { -+ log.Errorf(err.Error()) -+ return -+ } -+ switch eventType { -+ case typedef.NRIPODSYNCALL: -+ manager.nripodssync(pods) -+ default: -+ log.Errorf("code problem, should not go here...") -+ } -+} -+ -+// handleSYNCNRIContainersEvent handles sync container event -+func (manager *PodManager) handleSYNCNRIContainersEvent(eventType typedef.EventType, event typedef.Event) { -+ containers, err := eventToNRIRawContainers(event) -+ if err != nil { -+ log.Errorf(err.Error()) -+ return -+ } -+ switch eventType { -+ case typedef.NRICONTAINERSYNCALL: -+ manager.nricontainerssync(containers) -+ default: -+ log.Errorf("code problem, should not go here...") -+ } -+} -+ -+// eventToNRIRawContainers handles nri containers event -+func eventToNRIRawContainers(e typedef.Event) ([]*typedef.NRIRawContainer, error) { -+ containers, ok := e.([]*nriapi.Container) -+ if !ok { -+ return nil, fmt.Errorf("fail to get *typedef.NRIRawContainer which type is %T", e) -+ } -+ toRawContainerPointer := func(pod nriapi.Container) *typedef.NRIRawContainer { -+ tmp := typedef.NRIRawContainer(pod) -+ return &tmp -+ } -+ var pointerContainers []*typedef.NRIRawContainer -+ for _, pod := range containers { -+ pointerContainers = append(pointerContainers, toRawContainerPointer(*pod)) -+ } -+ return pointerContainers, nil -+} -+ -+// eventToNRIRawPods handles nri pods event -+func eventToNRIRawPods(e typedef.Event) ([]*typedef.NRIRawPod, error) { -+ pods, ok := e.([]*nriapi.PodSandbox) -+ if !ok { -+ return nil, fmt.Errorf("fail to get *typedef.NRIRawPod which type is %T", e) -+ } -+ toRawPodPointer := func(pod nriapi.PodSandbox) *typedef.NRIRawPod { -+ tmp := typedef.NRIRawPod(pod) -+ return &tmp -+ } -+ var pointerPods []*typedef.NRIRawPod -+ for _, pod := range pods { -+ pointerPods = append(pointerPods, toRawPodPointer(*pod)) -+ } -+ return pointerPods, nil -+} -+ -+// eventToNRIRawPod handles nri pod event -+func eventToNRIRawPod(e typedef.Event) (*typedef.NRIRawPod, error) { -+ pod, ok := e.(*nriapi.PodSandbox) -+ if !ok { -+ return nil, fmt.Errorf("fail to get *typedef.NRIRawPod which type is %T", e) -+ } -+ nriRawPod := typedef.NRIRawPod(*pod) -+ return &nriRawPod, nil -+} -+ -+// eventToNRIRawContainer handles nri container event -+func eventToNRIRawContainer(e typedef.Event) (*typedef.NRIRawContainer, error) { -+ container, ok := e.(*nriapi.Container) -+ if !ok { -+ return nil, fmt.Errorf("fail to get *typedef.NRIRawContainer which type is %T", e) -+ } -+ nriRawContainer := typedef.NRIRawContainer(*container) -+ return &nriRawContainer, nil -+} -+ - // EventTypes returns the intersted event types - func (manager *PodManager) EventTypes() []typedef.EventType { - return []typedef.EventType{typedef.RAWPODADD, - typedef.RAWPODUPDATE, - typedef.RAWPODDELETE, - typedef.RAWPODSYNCALL, -+ typedef.NRIPODADD, -+ typedef.NRICONTAINERSTART, -+ typedef.NRIPODDELETE, -+ typedef.NRIPODSYNCALL, -+ typedef.NRICONTAINERSYNCALL, -+ typedef.NRICONTAINERREMOVE, - } - } - -@@ -128,6 +263,49 @@ func eventToRawPods(e typedef.Event) ([]*typedef.RawPod, error) { - return pointerPods, nil - } - -+// addNRIPodFunc handles nri pod add event -+func (manager *PodManager) addNRIPodFunc(pod *typedef.NRIRawPod) { -+ // condition 1: only add running pod -+ if !pod.Running() { -+ log.Debugf("pod %v is not running", pod.Uid) -+ return -+ } -+ // condition2: pod is not existed -+ if manager.Pods.podExist(pod.ID()) { -+ log.Debugf("pod %v has added", pod.Uid) -+ return -+ } -+ // step1: get pod information -+ podInfo := pod.ConvertNRIRawPod2PodInfo() -+ if podInfo == nil { -+ log.Errorf("fail to strip info from raw pod") -+ return -+ } -+ // step2. add pod information -+ manager.tryAddNRIPod(podInfo) -+} -+ -+// addNRIContainerFunc handles add nri container event -+func (manager *PodManager) addNRIContainerFunc(container *typedef.NRIRawContainer) { -+ containerInfo := container.ConvertNRIRawContainer2ContainerInfo() -+ for _, pod := range manager.Pods.Pods { -+ if containerInfo.PodSandboxId == pod.ID { -+ pod.IDContainersMap[containerInfo.ID] = containerInfo -+ manager.Publish(typedef.INFOADD, pod.DeepCopy()) -+ } -+ } -+} -+ -+// sync to podCache after remove container -+func (manager *PodManager) removeNRIContainerFunc(container *typedef.NRIRawContainer) { -+ containerInfo := container.ConvertNRIRawContainer2ContainerInfo() -+ for _, pod := range manager.Pods.Pods { -+ if containerInfo.PodSandboxId == pod.ID { -+ delete(pod.IDContainersMap, containerInfo.ID) -+ } -+ } -+} -+ - // addFunc handles the pod add event - func (manager *PodManager) addFunc(pod *typedef.RawPod) { - // condition 1: only add running pod -@@ -171,6 +349,11 @@ func (manager *PodManager) updateFunc(pod *typedef.RawPod) { - manager.tryAdd(podInfo) - } - -+// deleteNRIPodFunc handles delete nri pod -+func (manager *PodManager) deleteNRIPodFunc(pod *typedef.NRIRawPod) { -+ manager.tryDelete(pod.ID()) -+} -+ - // deleteFunc handles the pod delete event - func (manager *PodManager) deleteFunc(pod *typedef.RawPod) { - manager.tryDelete(pod.ID()) -@@ -185,6 +368,14 @@ func (manager *PodManager) tryAdd(podInfo *typedef.PodInfo) { - } - } - -+// tryAddNRIPod tries to add nri pod info which is not added -+func (manager *PodManager) tryAddNRIPod(podInfo *typedef.PodInfo) { -+ // only add when pod is not existed -+ if !manager.Pods.podExist(podInfo.UID) { -+ manager.Pods.addPod(podInfo) -+ } -+} -+ - // tryUpdate tries to update podinfo which is existed - func (manager *PodManager) tryUpdate(podInfo *typedef.PodInfo) { - // only update when pod is existed -@@ -217,6 +408,27 @@ func (manager *PodManager) sync(pods []*typedef.RawPod) { - manager.Pods.substitute(newPods) - } - -+// nripodssync handles sync all pods -+func (manager *PodManager) nripodssync(pods []*typedef.NRIRawPod) { -+ var newPods []*typedef.PodInfo -+ for _, pod := range pods { -+ if pod == nil || !pod.Running() { -+ continue -+ } -+ newPods = append(newPods, pod.ConvertNRIRawPod2PodInfo()) -+ } -+ manager.Pods.substitute(newPods) -+} -+ -+// nricontainerssync handles sync all containers -+func (manager *PodManager) nricontainerssync(containers []*typedef.NRIRawContainer) { -+ var newContainers []*typedef.ContainerInfo -+ for _, container := range containers { -+ newContainers = append(newContainers, container.ConvertNRIRawContainer2ContainerInfo()) -+ } -+ manager.Pods.syncContainers2Pods(newContainers) -+} -+ - // ListOfflinePods returns offline pods - func (manager *PodManager) ListOfflinePods() ([]*typedef.PodInfo, error) { - return nil, nil -diff --git a/pkg/rubik/rubik.go b/pkg/rubik/rubik.go -index 3595ff1..3d3989e 100644 ---- a/pkg/rubik/rubik.go -+++ b/pkg/rubik/rubik.go -@@ -63,9 +63,15 @@ func NewAgent(cfg *config.Config) (*Agent, error) { - // Run starts and runs the agent until receiving stop signal - func (a *Agent) Run(ctx context.Context) error { - log.Infof("agent run with config:\n%s", a.config.String()) -- if err := a.startInformer(ctx); err != nil { -+ var informerName string -+ informerName = a.config.Agent.InformerType -+ if informerName == "nil" { -+ informerName = constant.APIServerInformer -+ } -+ if err := a.startInformer(ctx, informerName); err != nil { - return err - } -+ a.informer.WaitReady() - if err := a.startServiceHandler(ctx); err != nil { - return err - } -@@ -76,17 +82,23 @@ func (a *Agent) Run(ctx context.Context) error { - } - - // startInformer starts informer to obtain external data --func (a *Agent) startInformer(ctx context.Context) error { -+func (a *Agent) startInformer(ctx context.Context, informerName string) error { - publisher := publisher.GetPublisherFactory().GetPublisher(publisher.GENERIC) -- informer, err := informer.GetInformerFactory().GetInformerCreator(informer.APISERVER)(publisher) -+ var i api.Informer -+ var err error -+ if informerName == constant.APIServerInformer { -+ i, err = informer.GetInformerFactory().GetInformerCreator(informer.APISERVER)(publisher) -+ } else { -+ i, err = informer.GetInformerFactory().GetInformerCreator(informer.NRI)(publisher) -+ } - if err != nil { -- return fmt.Errorf("fail to set informer: %v", err) -+ return fmt.Errorf("failed to set informer: %v", err) - } -- if err := informer.Subscribe(a.podManager); err != nil { -- return fmt.Errorf("fail to subscribe informer: %v", err) -+ if err := i.Subscribe(a.podManager); err != nil { -+ return fmt.Errorf("failed to subscribe informer: %v", err) - } -- a.informer = informer -- informer.Start(ctx) -+ a.informer = i -+ i.Start(ctx) - return nil - } - -diff --git a/vendor/github.com/beorn7/perks/LICENSE b/vendor/github.com/beorn7/perks/LICENSE -new file mode 100755 -index 0000000..339177b ---- /dev/null -+++ b/vendor/github.com/beorn7/perks/LICENSE -@@ -0,0 +1,20 @@ -+Copyright (C) 2013 Blake Mizerany -+ -+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/beorn7/perks/quantile/exampledata.txt b/vendor/github.com/beorn7/perks/quantile/exampledata.txt -new file mode 100755 -index 0000000..1602287 ---- /dev/null -+++ b/vendor/github.com/beorn7/perks/quantile/exampledata.txt -@@ -0,0 +1,2388 @@ -+8 -+5 -+26 -+12 -+5 -+235 -+13 -+6 -+28 -+30 -+3 -+3 -+3 -+3 -+5 -+2 -+33 -+7 -+2 -+4 -+7 -+12 -+14 -+5 -+8 -+3 -+10 -+4 -+5 -+3 -+6 -+6 -+209 -+20 -+3 -+10 -+14 -+3 -+4 -+6 -+8 -+5 -+11 -+7 -+3 -+2 -+3 -+3 -+212 -+5 -+222 -+4 -+10 -+10 -+5 -+6 -+3 -+8 -+3 -+10 -+254 -+220 -+2 -+3 -+5 -+24 -+5 -+4 -+222 -+7 -+3 -+3 -+223 -+8 -+15 -+12 -+14 -+14 -+3 -+2 -+2 -+3 -+13 -+3 -+11 -+4 -+4 -+6 -+5 -+7 -+13 -+5 -+3 -+5 -+2 -+5 -+3 -+5 -+2 -+7 -+15 -+17 -+14 -+3 -+6 -+6 -+3 -+17 -+5 -+4 -+7 -+6 -+4 -+4 -+8 -+6 -+8 -+3 -+9 -+3 -+6 -+3 -+4 -+5 -+3 -+3 -+660 -+4 -+6 -+10 -+3 -+6 -+3 -+2 -+5 -+13 -+2 -+4 -+4 -+10 -+4 -+8 -+4 -+3 -+7 -+9 -+9 -+3 -+10 -+37 -+3 -+13 -+4 -+12 -+3 -+6 -+10 -+8 -+5 -+21 -+2 -+3 -+8 -+3 -+2 -+3 -+3 -+4 -+12 -+2 -+4 -+8 -+8 -+4 -+3 -+2 -+20 -+1 -+6 -+32 -+2 -+11 -+6 -+18 -+3 -+8 -+11 -+3 -+212 -+3 -+4 -+2 -+6 -+7 -+12 -+11 -+3 -+2 -+16 -+10 -+6 -+4 -+6 -+3 -+2 -+7 -+3 -+2 -+2 -+2 -+2 -+5 -+6 -+4 -+3 -+10 -+3 -+4 -+6 -+5 -+3 -+4 -+4 -+5 -+6 -+4 -+3 -+4 -+4 -+5 -+7 -+5 -+5 -+3 -+2 -+7 -+2 -+4 -+12 -+4 -+5 -+6 -+2 -+4 -+4 -+8 -+4 -+15 -+13 -+7 -+16 -+5 -+3 -+23 -+5 -+5 -+7 -+3 -+2 -+9 -+8 -+7 -+5 -+8 -+11 -+4 -+10 -+76 -+4 -+47 -+4 -+3 -+2 -+7 -+4 -+2 -+3 -+37 -+10 -+4 -+2 -+20 -+5 -+4 -+4 -+10 -+10 -+4 -+3 -+7 -+23 -+240 -+7 -+13 -+5 -+5 -+3 -+3 -+2 -+5 -+4 -+2 -+8 -+7 -+19 -+2 -+23 -+8 -+7 -+2 -+5 -+3 -+8 -+3 -+8 -+13 -+5 -+5 -+5 -+2 -+3 -+23 -+4 -+9 -+8 -+4 -+3 -+3 -+5 -+220 -+2 -+3 -+4 -+6 -+14 -+3 -+53 -+6 -+2 -+5 -+18 -+6 -+3 -+219 -+6 -+5 -+2 -+5 -+3 -+6 -+5 -+15 -+4 -+3 -+17 -+3 -+2 -+4 -+7 -+2 -+3 -+3 -+4 -+4 -+3 -+2 -+664 -+6 -+3 -+23 -+5 -+5 -+16 -+5 -+8 -+2 -+4 -+2 -+24 -+12 -+3 -+2 -+3 -+5 -+8 -+3 -+5 -+4 -+3 -+14 -+3 -+5 -+8 -+2 -+3 -+7 -+9 -+4 -+2 -+3 -+6 -+8 -+4 -+3 -+4 -+6 -+5 -+3 -+3 -+6 -+3 -+19 -+4 -+4 -+6 -+3 -+6 -+3 -+5 -+22 -+5 -+4 -+4 -+3 -+8 -+11 -+4 -+9 -+7 -+6 -+13 -+4 -+4 -+4 -+6 -+17 -+9 -+3 -+3 -+3 -+4 -+3 -+221 -+5 -+11 -+3 -+4 -+2 -+12 -+6 -+3 -+5 -+7 -+5 -+7 -+4 -+9 -+7 -+14 -+37 -+19 -+217 -+16 -+3 -+5 -+2 -+2 -+7 -+19 -+7 -+6 -+7 -+4 -+24 -+5 -+11 -+4 -+7 -+7 -+9 -+13 -+3 -+4 -+3 -+6 -+28 -+4 -+4 -+5 -+5 -+2 -+5 -+6 -+4 -+4 -+6 -+10 -+5 -+4 -+3 -+2 -+3 -+3 -+6 -+5 -+5 -+4 -+3 -+2 -+3 -+7 -+4 -+6 -+18 -+16 -+8 -+16 -+4 -+5 -+8 -+6 -+9 -+13 -+1545 -+6 -+215 -+6 -+5 -+6 -+3 -+45 -+31 -+5 -+2 -+2 -+4 -+3 -+3 -+2 -+5 -+4 -+3 -+5 -+7 -+7 -+4 -+5 -+8 -+5 -+4 -+749 -+2 -+31 -+9 -+11 -+2 -+11 -+5 -+4 -+4 -+7 -+9 -+11 -+4 -+5 -+4 -+7 -+3 -+4 -+6 -+2 -+15 -+3 -+4 -+3 -+4 -+3 -+5 -+2 -+13 -+5 -+5 -+3 -+3 -+23 -+4 -+4 -+5 -+7 -+4 -+13 -+2 -+4 -+3 -+4 -+2 -+6 -+2 -+7 -+3 -+5 -+5 -+3 -+29 -+5 -+4 -+4 -+3 -+10 -+2 -+3 -+79 -+16 -+6 -+6 -+7 -+7 -+3 -+5 -+5 -+7 -+4 -+3 -+7 -+9 -+5 -+6 -+5 -+9 -+6 -+3 -+6 -+4 -+17 -+2 -+10 -+9 -+3 -+6 -+2 -+3 -+21 -+22 -+5 -+11 -+4 -+2 -+17 -+2 -+224 -+2 -+14 -+3 -+4 -+4 -+2 -+4 -+4 -+4 -+4 -+5 -+3 -+4 -+4 -+10 -+2 -+6 -+3 -+3 -+5 -+7 -+2 -+7 -+5 -+6 -+3 -+218 -+2 -+2 -+5 -+2 -+6 -+3 -+5 -+222 -+14 -+6 -+33 -+3 -+2 -+5 -+3 -+3 -+3 -+9 -+5 -+3 -+3 -+2 -+7 -+4 -+3 -+4 -+3 -+5 -+6 -+5 -+26 -+4 -+13 -+9 -+7 -+3 -+221 -+3 -+3 -+4 -+4 -+4 -+4 -+2 -+18 -+5 -+3 -+7 -+9 -+6 -+8 -+3 -+10 -+3 -+11 -+9 -+5 -+4 -+17 -+5 -+5 -+6 -+6 -+3 -+2 -+4 -+12 -+17 -+6 -+7 -+218 -+4 -+2 -+4 -+10 -+3 -+5 -+15 -+3 -+9 -+4 -+3 -+3 -+6 -+29 -+3 -+3 -+4 -+5 -+5 -+3 -+8 -+5 -+6 -+6 -+7 -+5 -+3 -+5 -+3 -+29 -+2 -+31 -+5 -+15 -+24 -+16 -+5 -+207 -+4 -+3 -+3 -+2 -+15 -+4 -+4 -+13 -+5 -+5 -+4 -+6 -+10 -+2 -+7 -+8 -+4 -+6 -+20 -+5 -+3 -+4 -+3 -+12 -+12 -+5 -+17 -+7 -+3 -+3 -+3 -+6 -+10 -+3 -+5 -+25 -+80 -+4 -+9 -+3 -+2 -+11 -+3 -+3 -+2 -+3 -+8 -+7 -+5 -+5 -+19 -+5 -+3 -+3 -+12 -+11 -+2 -+6 -+5 -+5 -+5 -+3 -+3 -+3 -+4 -+209 -+14 -+3 -+2 -+5 -+19 -+4 -+4 -+3 -+4 -+14 -+5 -+6 -+4 -+13 -+9 -+7 -+4 -+7 -+10 -+2 -+9 -+5 -+7 -+2 -+8 -+4 -+6 -+5 -+5 -+222 -+8 -+7 -+12 -+5 -+216 -+3 -+4 -+4 -+6 -+3 -+14 -+8 -+7 -+13 -+4 -+3 -+3 -+3 -+3 -+17 -+5 -+4 -+3 -+33 -+6 -+6 -+33 -+7 -+5 -+3 -+8 -+7 -+5 -+2 -+9 -+4 -+2 -+233 -+24 -+7 -+4 -+8 -+10 -+3 -+4 -+15 -+2 -+16 -+3 -+3 -+13 -+12 -+7 -+5 -+4 -+207 -+4 -+2 -+4 -+27 -+15 -+2 -+5 -+2 -+25 -+6 -+5 -+5 -+6 -+13 -+6 -+18 -+6 -+4 -+12 -+225 -+10 -+7 -+5 -+2 -+2 -+11 -+4 -+14 -+21 -+8 -+10 -+3 -+5 -+4 -+232 -+2 -+5 -+5 -+3 -+7 -+17 -+11 -+6 -+6 -+23 -+4 -+6 -+3 -+5 -+4 -+2 -+17 -+3 -+6 -+5 -+8 -+3 -+2 -+2 -+14 -+9 -+4 -+4 -+2 -+5 -+5 -+3 -+7 -+6 -+12 -+6 -+10 -+3 -+6 -+2 -+2 -+19 -+5 -+4 -+4 -+9 -+2 -+4 -+13 -+3 -+5 -+6 -+3 -+6 -+5 -+4 -+9 -+6 -+3 -+5 -+7 -+3 -+6 -+6 -+4 -+3 -+10 -+6 -+3 -+221 -+3 -+5 -+3 -+6 -+4 -+8 -+5 -+3 -+6 -+4 -+4 -+2 -+54 -+5 -+6 -+11 -+3 -+3 -+4 -+4 -+4 -+3 -+7 -+3 -+11 -+11 -+7 -+10 -+6 -+13 -+223 -+213 -+15 -+231 -+7 -+3 -+7 -+228 -+2 -+3 -+4 -+4 -+5 -+6 -+7 -+4 -+13 -+3 -+4 -+5 -+3 -+6 -+4 -+6 -+7 -+2 -+4 -+3 -+4 -+3 -+3 -+6 -+3 -+7 -+3 -+5 -+18 -+5 -+6 -+8 -+10 -+3 -+3 -+3 -+2 -+4 -+2 -+4 -+4 -+5 -+6 -+6 -+4 -+10 -+13 -+3 -+12 -+5 -+12 -+16 -+8 -+4 -+19 -+11 -+2 -+4 -+5 -+6 -+8 -+5 -+6 -+4 -+18 -+10 -+4 -+2 -+216 -+6 -+6 -+6 -+2 -+4 -+12 -+8 -+3 -+11 -+5 -+6 -+14 -+5 -+3 -+13 -+4 -+5 -+4 -+5 -+3 -+28 -+6 -+3 -+7 -+219 -+3 -+9 -+7 -+3 -+10 -+6 -+3 -+4 -+19 -+5 -+7 -+11 -+6 -+15 -+19 -+4 -+13 -+11 -+3 -+7 -+5 -+10 -+2 -+8 -+11 -+2 -+6 -+4 -+6 -+24 -+6 -+3 -+3 -+3 -+3 -+6 -+18 -+4 -+11 -+4 -+2 -+5 -+10 -+8 -+3 -+9 -+5 -+3 -+4 -+5 -+6 -+2 -+5 -+7 -+4 -+4 -+14 -+6 -+4 -+4 -+5 -+5 -+7 -+2 -+4 -+3 -+7 -+3 -+3 -+6 -+4 -+5 -+4 -+4 -+4 -+3 -+3 -+3 -+3 -+8 -+14 -+2 -+3 -+5 -+3 -+2 -+4 -+5 -+3 -+7 -+3 -+3 -+18 -+3 -+4 -+4 -+5 -+7 -+3 -+3 -+3 -+13 -+5 -+4 -+8 -+211 -+5 -+5 -+3 -+5 -+2 -+5 -+4 -+2 -+655 -+6 -+3 -+5 -+11 -+2 -+5 -+3 -+12 -+9 -+15 -+11 -+5 -+12 -+217 -+2 -+6 -+17 -+3 -+3 -+207 -+5 -+5 -+4 -+5 -+9 -+3 -+2 -+8 -+5 -+4 -+3 -+2 -+5 -+12 -+4 -+14 -+5 -+4 -+2 -+13 -+5 -+8 -+4 -+225 -+4 -+3 -+4 -+5 -+4 -+3 -+3 -+6 -+23 -+9 -+2 -+6 -+7 -+233 -+4 -+4 -+6 -+18 -+3 -+4 -+6 -+3 -+4 -+4 -+2 -+3 -+7 -+4 -+13 -+227 -+4 -+3 -+5 -+4 -+2 -+12 -+9 -+17 -+3 -+7 -+14 -+6 -+4 -+5 -+21 -+4 -+8 -+9 -+2 -+9 -+25 -+16 -+3 -+6 -+4 -+7 -+8 -+5 -+2 -+3 -+5 -+4 -+3 -+3 -+5 -+3 -+3 -+3 -+2 -+3 -+19 -+2 -+4 -+3 -+4 -+2 -+3 -+4 -+4 -+2 -+4 -+3 -+3 -+3 -+2 -+6 -+3 -+17 -+5 -+6 -+4 -+3 -+13 -+5 -+3 -+3 -+3 -+4 -+9 -+4 -+2 -+14 -+12 -+4 -+5 -+24 -+4 -+3 -+37 -+12 -+11 -+21 -+3 -+4 -+3 -+13 -+4 -+2 -+3 -+15 -+4 -+11 -+4 -+4 -+3 -+8 -+3 -+4 -+4 -+12 -+8 -+5 -+3 -+3 -+4 -+2 -+220 -+3 -+5 -+223 -+3 -+3 -+3 -+10 -+3 -+15 -+4 -+241 -+9 -+7 -+3 -+6 -+6 -+23 -+4 -+13 -+7 -+3 -+4 -+7 -+4 -+9 -+3 -+3 -+4 -+10 -+5 -+5 -+1 -+5 -+24 -+2 -+4 -+5 -+5 -+6 -+14 -+3 -+8 -+2 -+3 -+5 -+13 -+13 -+3 -+5 -+2 -+3 -+15 -+3 -+4 -+2 -+10 -+4 -+4 -+4 -+5 -+5 -+3 -+5 -+3 -+4 -+7 -+4 -+27 -+3 -+6 -+4 -+15 -+3 -+5 -+6 -+6 -+5 -+4 -+8 -+3 -+9 -+2 -+6 -+3 -+4 -+3 -+7 -+4 -+18 -+3 -+11 -+3 -+3 -+8 -+9 -+7 -+24 -+3 -+219 -+7 -+10 -+4 -+5 -+9 -+12 -+2 -+5 -+4 -+4 -+4 -+3 -+3 -+19 -+5 -+8 -+16 -+8 -+6 -+22 -+3 -+23 -+3 -+242 -+9 -+4 -+3 -+3 -+5 -+7 -+3 -+3 -+5 -+8 -+3 -+7 -+5 -+14 -+8 -+10 -+3 -+4 -+3 -+7 -+4 -+6 -+7 -+4 -+10 -+4 -+3 -+11 -+3 -+7 -+10 -+3 -+13 -+6 -+8 -+12 -+10 -+5 -+7 -+9 -+3 -+4 -+7 -+7 -+10 -+8 -+30 -+9 -+19 -+4 -+3 -+19 -+15 -+4 -+13 -+3 -+215 -+223 -+4 -+7 -+4 -+8 -+17 -+16 -+3 -+7 -+6 -+5 -+5 -+4 -+12 -+3 -+7 -+4 -+4 -+13 -+4 -+5 -+2 -+5 -+6 -+5 -+6 -+6 -+7 -+10 -+18 -+23 -+9 -+3 -+3 -+6 -+5 -+2 -+4 -+2 -+7 -+3 -+3 -+2 -+5 -+5 -+14 -+10 -+224 -+6 -+3 -+4 -+3 -+7 -+5 -+9 -+3 -+6 -+4 -+2 -+5 -+11 -+4 -+3 -+3 -+2 -+8 -+4 -+7 -+4 -+10 -+7 -+3 -+3 -+18 -+18 -+17 -+3 -+3 -+3 -+4 -+5 -+3 -+3 -+4 -+12 -+7 -+3 -+11 -+13 -+5 -+4 -+7 -+13 -+5 -+4 -+11 -+3 -+12 -+3 -+6 -+4 -+4 -+21 -+4 -+6 -+9 -+5 -+3 -+10 -+8 -+4 -+6 -+4 -+4 -+6 -+5 -+4 -+8 -+6 -+4 -+6 -+4 -+4 -+5 -+9 -+6 -+3 -+4 -+2 -+9 -+3 -+18 -+2 -+4 -+3 -+13 -+3 -+6 -+6 -+8 -+7 -+9 -+3 -+2 -+16 -+3 -+4 -+6 -+3 -+2 -+33 -+22 -+14 -+4 -+9 -+12 -+4 -+5 -+6 -+3 -+23 -+9 -+4 -+3 -+5 -+5 -+3 -+4 -+5 -+3 -+5 -+3 -+10 -+4 -+5 -+5 -+8 -+4 -+4 -+6 -+8 -+5 -+4 -+3 -+4 -+6 -+3 -+3 -+3 -+5 -+9 -+12 -+6 -+5 -+9 -+3 -+5 -+3 -+2 -+2 -+2 -+18 -+3 -+2 -+21 -+2 -+5 -+4 -+6 -+4 -+5 -+10 -+3 -+9 -+3 -+2 -+10 -+7 -+3 -+6 -+6 -+4 -+4 -+8 -+12 -+7 -+3 -+7 -+3 -+3 -+9 -+3 -+4 -+5 -+4 -+4 -+5 -+5 -+10 -+15 -+4 -+4 -+14 -+6 -+227 -+3 -+14 -+5 -+216 -+22 -+5 -+4 -+2 -+2 -+6 -+3 -+4 -+2 -+9 -+9 -+4 -+3 -+28 -+13 -+11 -+4 -+5 -+3 -+3 -+2 -+3 -+3 -+5 -+3 -+4 -+3 -+5 -+23 -+26 -+3 -+4 -+5 -+6 -+4 -+6 -+3 -+5 -+5 -+3 -+4 -+3 -+2 -+2 -+2 -+7 -+14 -+3 -+6 -+7 -+17 -+2 -+2 -+15 -+14 -+16 -+4 -+6 -+7 -+13 -+6 -+4 -+5 -+6 -+16 -+3 -+3 -+28 -+3 -+6 -+15 -+3 -+9 -+2 -+4 -+6 -+3 -+3 -+22 -+4 -+12 -+6 -+7 -+2 -+5 -+4 -+10 -+3 -+16 -+6 -+9 -+2 -+5 -+12 -+7 -+5 -+5 -+5 -+5 -+2 -+11 -+9 -+17 -+4 -+3 -+11 -+7 -+3 -+5 -+15 -+4 -+3 -+4 -+211 -+8 -+7 -+5 -+4 -+7 -+6 -+7 -+6 -+3 -+6 -+5 -+6 -+5 -+3 -+4 -+4 -+26 -+4 -+6 -+10 -+4 -+4 -+3 -+2 -+3 -+3 -+4 -+5 -+9 -+3 -+9 -+4 -+4 -+5 -+5 -+8 -+2 -+4 -+2 -+3 -+8 -+4 -+11 -+19 -+5 -+8 -+6 -+3 -+5 -+6 -+12 -+3 -+2 -+4 -+16 -+12 -+3 -+4 -+4 -+8 -+6 -+5 -+6 -+6 -+219 -+8 -+222 -+6 -+16 -+3 -+13 -+19 -+5 -+4 -+3 -+11 -+6 -+10 -+4 -+7 -+7 -+12 -+5 -+3 -+3 -+5 -+6 -+10 -+3 -+8 -+2 -+5 -+4 -+7 -+2 -+4 -+4 -+2 -+12 -+9 -+6 -+4 -+2 -+40 -+2 -+4 -+10 -+4 -+223 -+4 -+2 -+20 -+6 -+7 -+24 -+5 -+4 -+5 -+2 -+20 -+16 -+6 -+5 -+13 -+2 -+3 -+3 -+19 -+3 -+2 -+4 -+5 -+6 -+7 -+11 -+12 -+5 -+6 -+7 -+7 -+3 -+5 -+3 -+5 -+3 -+14 -+3 -+4 -+4 -+2 -+11 -+1 -+7 -+3 -+9 -+6 -+11 -+12 -+5 -+8 -+6 -+221 -+4 -+2 -+12 -+4 -+3 -+15 -+4 -+5 -+226 -+7 -+218 -+7 -+5 -+4 -+5 -+18 -+4 -+5 -+9 -+4 -+4 -+2 -+9 -+18 -+18 -+9 -+5 -+6 -+6 -+3 -+3 -+7 -+3 -+5 -+4 -+4 -+4 -+12 -+3 -+6 -+31 -+5 -+4 -+7 -+3 -+6 -+5 -+6 -+5 -+11 -+2 -+2 -+11 -+11 -+6 -+7 -+5 -+8 -+7 -+10 -+5 -+23 -+7 -+4 -+3 -+5 -+34 -+2 -+5 -+23 -+7 -+3 -+6 -+8 -+4 -+4 -+4 -+2 -+5 -+3 -+8 -+5 -+4 -+8 -+25 -+2 -+3 -+17 -+8 -+3 -+4 -+8 -+7 -+3 -+15 -+6 -+5 -+7 -+21 -+9 -+5 -+6 -+6 -+5 -+3 -+2 -+3 -+10 -+3 -+6 -+3 -+14 -+7 -+4 -+4 -+8 -+7 -+8 -+2 -+6 -+12 -+4 -+213 -+6 -+5 -+21 -+8 -+2 -+5 -+23 -+3 -+11 -+2 -+3 -+6 -+25 -+2 -+3 -+6 -+7 -+6 -+6 -+4 -+4 -+6 -+3 -+17 -+9 -+7 -+6 -+4 -+3 -+10 -+7 -+2 -+3 -+3 -+3 -+11 -+8 -+3 -+7 -+6 -+4 -+14 -+36 -+3 -+4 -+3 -+3 -+22 -+13 -+21 -+4 -+2 -+7 -+4 -+4 -+17 -+15 -+3 -+7 -+11 -+2 -+4 -+7 -+6 -+209 -+6 -+3 -+2 -+2 -+24 -+4 -+9 -+4 -+3 -+3 -+3 -+29 -+2 -+2 -+4 -+3 -+3 -+5 -+4 -+6 -+3 -+3 -+2 -+4 -diff --git a/vendor/github.com/beorn7/perks/quantile/stream.go b/vendor/github.com/beorn7/perks/quantile/stream.go -new file mode 100755 -index 0000000..d7d14f8 ---- /dev/null -+++ b/vendor/github.com/beorn7/perks/quantile/stream.go -@@ -0,0 +1,316 @@ -+// Package quantile computes approximate quantiles over an unbounded data -+// stream within low memory and CPU bounds. -+// -+// A small amount of accuracy is traded to achieve the above properties. -+// -+// Multiple streams can be merged before calling Query to generate a single set -+// of results. This is meaningful when the streams represent the same type of -+// data. See Merge and Samples. -+// -+// For more detailed information about the algorithm used, see: -+// -+// Effective Computation of Biased Quantiles over Data Streams -+// -+// http://www.cs.rutgers.edu/~muthu/bquant.pdf -+package quantile -+ -+import ( -+ "math" -+ "sort" -+) -+ -+// Sample holds an observed value and meta information for compression. JSON -+// tags have been added for convenience. -+type Sample struct { -+ Value float64 `json:",string"` -+ Width float64 `json:",string"` -+ Delta float64 `json:",string"` -+} -+ -+// Samples represents a slice of samples. It implements sort.Interface. -+type Samples []Sample -+ -+func (a Samples) Len() int { return len(a) } -+func (a Samples) Less(i, j int) bool { return a[i].Value < a[j].Value } -+func (a Samples) Swap(i, j int) { a[i], a[j] = a[j], a[i] } -+ -+type invariant func(s *stream, r float64) float64 -+ -+// NewLowBiased returns an initialized Stream for low-biased quantiles -+// (e.g. 0.01, 0.1, 0.5) where the needed quantiles are not known a priori, but -+// error guarantees can still be given even for the lower ranks of the data -+// distribution. -+// -+// The provided epsilon is a relative error, i.e. the true quantile of a value -+// returned by a query is guaranteed to be within (1±Epsilon)*Quantile. -+// -+// See http://www.cs.rutgers.edu/~muthu/bquant.pdf for time, space, and error -+// properties. -+func NewLowBiased(epsilon float64) *Stream { -+ ƒ := func(s *stream, r float64) float64 { -+ return 2 * epsilon * r -+ } -+ return newStream(ƒ) -+} -+ -+// NewHighBiased returns an initialized Stream for high-biased quantiles -+// (e.g. 0.01, 0.1, 0.5) where the needed quantiles are not known a priori, but -+// error guarantees can still be given even for the higher ranks of the data -+// distribution. -+// -+// The provided epsilon is a relative error, i.e. the true quantile of a value -+// returned by a query is guaranteed to be within 1-(1±Epsilon)*(1-Quantile). -+// -+// See http://www.cs.rutgers.edu/~muthu/bquant.pdf for time, space, and error -+// properties. -+func NewHighBiased(epsilon float64) *Stream { -+ ƒ := func(s *stream, r float64) float64 { -+ return 2 * epsilon * (s.n - r) -+ } -+ return newStream(ƒ) -+} -+ -+// NewTargeted returns an initialized Stream concerned with a particular set of -+// quantile values that are supplied a priori. Knowing these a priori reduces -+// space and computation time. The targets map maps the desired quantiles to -+// their absolute errors, i.e. the true quantile of a value returned by a query -+// is guaranteed to be within (Quantile±Epsilon). -+// -+// See http://www.cs.rutgers.edu/~muthu/bquant.pdf for time, space, and error properties. -+func NewTargeted(targetMap map[float64]float64) *Stream { -+ // Convert map to slice to avoid slow iterations on a map. -+ // ƒ is called on the hot path, so converting the map to a slice -+ // beforehand results in significant CPU savings. -+ targets := targetMapToSlice(targetMap) -+ -+ ƒ := func(s *stream, r float64) float64 { -+ var m = math.MaxFloat64 -+ var f float64 -+ for _, t := range targets { -+ if t.quantile*s.n <= r { -+ f = (2 * t.epsilon * r) / t.quantile -+ } else { -+ f = (2 * t.epsilon * (s.n - r)) / (1 - t.quantile) -+ } -+ if f < m { -+ m = f -+ } -+ } -+ return m -+ } -+ return newStream(ƒ) -+} -+ -+type target struct { -+ quantile float64 -+ epsilon float64 -+} -+ -+func targetMapToSlice(targetMap map[float64]float64) []target { -+ targets := make([]target, 0, len(targetMap)) -+ -+ for quantile, epsilon := range targetMap { -+ t := target{ -+ quantile: quantile, -+ epsilon: epsilon, -+ } -+ targets = append(targets, t) -+ } -+ -+ return targets -+} -+ -+// Stream computes quantiles for a stream of float64s. It is not thread-safe by -+// design. Take care when using across multiple goroutines. -+type Stream struct { -+ *stream -+ b Samples -+ sorted bool -+} -+ -+func newStream(ƒ invariant) *Stream { -+ x := &stream{ƒ: ƒ} -+ return &Stream{x, make(Samples, 0, 500), true} -+} -+ -+// Insert inserts v into the stream. -+func (s *Stream) Insert(v float64) { -+ s.insert(Sample{Value: v, Width: 1}) -+} -+ -+func (s *Stream) insert(sample Sample) { -+ s.b = append(s.b, sample) -+ s.sorted = false -+ if len(s.b) == cap(s.b) { -+ s.flush() -+ } -+} -+ -+// Query returns the computed qth percentiles value. If s was created with -+// NewTargeted, and q is not in the set of quantiles provided a priori, Query -+// will return an unspecified result. -+func (s *Stream) Query(q float64) float64 { -+ if !s.flushed() { -+ // Fast path when there hasn't been enough data for a flush; -+ // this also yields better accuracy for small sets of data. -+ l := len(s.b) -+ if l == 0 { -+ return 0 -+ } -+ i := int(math.Ceil(float64(l) * q)) -+ if i > 0 { -+ i -= 1 -+ } -+ s.maybeSort() -+ return s.b[i].Value -+ } -+ s.flush() -+ return s.stream.query(q) -+} -+ -+// Merge merges samples into the underlying streams samples. This is handy when -+// merging multiple streams from separate threads, database shards, etc. -+// -+// ATTENTION: This method is broken and does not yield correct results. The -+// underlying algorithm is not capable of merging streams correctly. -+func (s *Stream) Merge(samples Samples) { -+ sort.Sort(samples) -+ s.stream.merge(samples) -+} -+ -+// Reset reinitializes and clears the list reusing the samples buffer memory. -+func (s *Stream) Reset() { -+ s.stream.reset() -+ s.b = s.b[:0] -+} -+ -+// Samples returns stream samples held by s. -+func (s *Stream) Samples() Samples { -+ if !s.flushed() { -+ return s.b -+ } -+ s.flush() -+ return s.stream.samples() -+} -+ -+// Count returns the total number of samples observed in the stream -+// since initialization. -+func (s *Stream) Count() int { -+ return len(s.b) + s.stream.count() -+} -+ -+func (s *Stream) flush() { -+ s.maybeSort() -+ s.stream.merge(s.b) -+ s.b = s.b[:0] -+} -+ -+func (s *Stream) maybeSort() { -+ if !s.sorted { -+ s.sorted = true -+ sort.Sort(s.b) -+ } -+} -+ -+func (s *Stream) flushed() bool { -+ return len(s.stream.l) > 0 -+} -+ -+type stream struct { -+ n float64 -+ l []Sample -+ ƒ invariant -+} -+ -+func (s *stream) reset() { -+ s.l = s.l[:0] -+ s.n = 0 -+} -+ -+func (s *stream) insert(v float64) { -+ s.merge(Samples{{v, 1, 0}}) -+} -+ -+func (s *stream) merge(samples Samples) { -+ // TODO(beorn7): This tries to merge not only individual samples, but -+ // whole summaries. The paper doesn't mention merging summaries at -+ // all. Unittests show that the merging is inaccurate. Find out how to -+ // do merges properly. -+ var r float64 -+ i := 0 -+ for _, sample := range samples { -+ for ; i < len(s.l); i++ { -+ c := s.l[i] -+ if c.Value > sample.Value { -+ // Insert at position i. -+ s.l = append(s.l, Sample{}) -+ copy(s.l[i+1:], s.l[i:]) -+ s.l[i] = Sample{ -+ sample.Value, -+ sample.Width, -+ math.Max(sample.Delta, math.Floor(s.ƒ(s, r))-1), -+ // TODO(beorn7): How to calculate delta correctly? -+ } -+ i++ -+ goto inserted -+ } -+ r += c.Width -+ } -+ s.l = append(s.l, Sample{sample.Value, sample.Width, 0}) -+ i++ -+ inserted: -+ s.n += sample.Width -+ r += sample.Width -+ } -+ s.compress() -+} -+ -+func (s *stream) count() int { -+ return int(s.n) -+} -+ -+func (s *stream) query(q float64) float64 { -+ t := math.Ceil(q * s.n) -+ t += math.Ceil(s.ƒ(s, t) / 2) -+ p := s.l[0] -+ var r float64 -+ for _, c := range s.l[1:] { -+ r += p.Width -+ if r+c.Width+c.Delta > t { -+ return p.Value -+ } -+ p = c -+ } -+ return p.Value -+} -+ -+func (s *stream) compress() { -+ if len(s.l) < 2 { -+ return -+ } -+ x := s.l[len(s.l)-1] -+ xi := len(s.l) - 1 -+ r := s.n - 1 - x.Width -+ -+ for i := len(s.l) - 2; i >= 0; i-- { -+ c := s.l[i] -+ if c.Width+x.Width+x.Delta <= s.ƒ(s, r) { -+ x.Width += c.Width -+ s.l[xi] = x -+ // Remove element at i. -+ copy(s.l[i:], s.l[i+1:]) -+ s.l = s.l[:len(s.l)-1] -+ xi -= 1 -+ } else { -+ x = c -+ xi = i -+ } -+ r -= c.Width -+ } -+} -+ -+func (s *stream) samples() Samples { -+ samples := make(Samples, len(s.l)) -+ copy(samples, s.l) -+ return samples -+} -diff --git a/vendor/github.com/cespare/xxhash/v2/LICENSE.txt b/vendor/github.com/cespare/xxhash/v2/LICENSE.txt -new file mode 100755 -index 0000000..24b5306 ---- /dev/null -+++ b/vendor/github.com/cespare/xxhash/v2/LICENSE.txt -@@ -0,0 +1,22 @@ -+Copyright (c) 2016 Caleb Spare -+ -+MIT License -+ -+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/cespare/xxhash/v2/README.md b/vendor/github.com/cespare/xxhash/v2/README.md -new file mode 100755 -index 0000000..8bf0e5b ---- /dev/null -+++ b/vendor/github.com/cespare/xxhash/v2/README.md -@@ -0,0 +1,72 @@ -+# xxhash -+ -+[![Go Reference](https://pkg.go.dev/badge/github.com/cespare/xxhash/v2.svg)](https://pkg.go.dev/github.com/cespare/xxhash/v2) -+[![Test](https://github.com/cespare/xxhash/actions/workflows/test.yml/badge.svg)](https://github.com/cespare/xxhash/actions/workflows/test.yml) -+ -+xxhash is a Go implementation of the 64-bit [xxHash] algorithm, XXH64. This is a -+high-quality hashing algorithm that is much faster than anything in the Go -+standard library. -+ -+This package provides a straightforward API: -+ -+``` -+func Sum64(b []byte) uint64 -+func Sum64String(s string) uint64 -+type Digest struct{ ... } -+ func New() *Digest -+``` -+ -+The `Digest` type implements hash.Hash64. Its key methods are: -+ -+``` -+func (*Digest) Write([]byte) (int, error) -+func (*Digest) WriteString(string) (int, error) -+func (*Digest) Sum64() uint64 -+``` -+ -+The package is written with optimized pure Go and also contains even faster -+assembly implementations for amd64 and arm64. If desired, the `purego` build tag -+opts into using the Go code even on those architectures. -+ -+[xxHash]: http://cyan4973.github.io/xxHash/ -+ -+## Compatibility -+ -+This package is in a module and the latest code is in version 2 of the module. -+You need a version of Go with at least "minimal module compatibility" to use -+github.com/cespare/xxhash/v2: -+ -+* 1.9.7+ for Go 1.9 -+* 1.10.3+ for Go 1.10 -+* Go 1.11 or later -+ -+I recommend using the latest release of Go. -+ -+## Benchmarks -+ -+Here are some quick benchmarks comparing the pure-Go and assembly -+implementations of Sum64. -+ -+| input size | purego | asm | -+| ---------- | --------- | --------- | -+| 4 B | 1.3 GB/s | 1.2 GB/s | -+| 16 B | 2.9 GB/s | 3.5 GB/s | -+| 100 B | 6.9 GB/s | 8.1 GB/s | -+| 4 KB | 11.7 GB/s | 16.7 GB/s | -+| 10 MB | 12.0 GB/s | 17.3 GB/s | -+ -+These numbers were generated on Ubuntu 20.04 with an Intel Xeon Platinum 8252C -+CPU using the following commands under Go 1.19.2: -+ -+``` -+benchstat <(go test -tags purego -benchtime 500ms -count 15 -bench 'Sum64$') -+benchstat <(go test -benchtime 500ms -count 15 -bench 'Sum64$') -+``` -+ -+## Projects using this package -+ -+- [InfluxDB](https://github.com/influxdata/influxdb) -+- [Prometheus](https://github.com/prometheus/prometheus) -+- [VictoriaMetrics](https://github.com/VictoriaMetrics/VictoriaMetrics) -+- [FreeCache](https://github.com/coocood/freecache) -+- [FastCache](https://github.com/VictoriaMetrics/fastcache) -diff --git a/vendor/github.com/cespare/xxhash/v2/testall.sh b/vendor/github.com/cespare/xxhash/v2/testall.sh -new file mode 100755 -index 0000000..94b9c44 ---- /dev/null -+++ b/vendor/github.com/cespare/xxhash/v2/testall.sh -@@ -0,0 +1,10 @@ -+#!/bin/bash -+set -eu -o pipefail -+ -+# Small convenience script for running the tests with various combinations of -+# arch/tags. This assumes we're running on amd64 and have qemu available. -+ -+go test ./... -+go test -tags purego ./... -+GOARCH=arm64 go test -+GOARCH=arm64 go test -tags purego -diff --git a/vendor/github.com/cespare/xxhash/v2/xxhash.go b/vendor/github.com/cespare/xxhash/v2/xxhash.go -new file mode 100755 -index 0000000..a9e0d45 ---- /dev/null -+++ b/vendor/github.com/cespare/xxhash/v2/xxhash.go -@@ -0,0 +1,228 @@ -+// Package xxhash implements the 64-bit variant of xxHash (XXH64) as described -+// at http://cyan4973.github.io/xxHash/. -+package xxhash -+ -+import ( -+ "encoding/binary" -+ "errors" -+ "math/bits" -+) -+ -+const ( -+ prime1 uint64 = 11400714785074694791 -+ prime2 uint64 = 14029467366897019727 -+ prime3 uint64 = 1609587929392839161 -+ prime4 uint64 = 9650029242287828579 -+ prime5 uint64 = 2870177450012600261 -+) -+ -+// Store the primes in an array as well. -+// -+// The consts are used when possible in Go code to avoid MOVs but we need a -+// contiguous array of the assembly code. -+var primes = [...]uint64{prime1, prime2, prime3, prime4, prime5} -+ -+// Digest implements hash.Hash64. -+type Digest struct { -+ v1 uint64 -+ v2 uint64 -+ v3 uint64 -+ v4 uint64 -+ total uint64 -+ mem [32]byte -+ n int // how much of mem is used -+} -+ -+// New creates a new Digest that computes the 64-bit xxHash algorithm. -+func New() *Digest { -+ var d Digest -+ d.Reset() -+ return &d -+} -+ -+// Reset clears the Digest's state so that it can be reused. -+func (d *Digest) Reset() { -+ d.v1 = primes[0] + prime2 -+ d.v2 = prime2 -+ d.v3 = 0 -+ d.v4 = -primes[0] -+ d.total = 0 -+ d.n = 0 -+} -+ -+// Size always returns 8 bytes. -+func (d *Digest) Size() int { return 8 } -+ -+// BlockSize always returns 32 bytes. -+func (d *Digest) BlockSize() int { return 32 } -+ -+// Write adds more data to d. It always returns len(b), nil. -+func (d *Digest) Write(b []byte) (n int, err error) { -+ n = len(b) -+ d.total += uint64(n) -+ -+ memleft := d.mem[d.n&(len(d.mem)-1):] -+ -+ if d.n+n < 32 { -+ // This new data doesn't even fill the current block. -+ copy(memleft, b) -+ d.n += n -+ return -+ } -+ -+ if d.n > 0 { -+ // Finish off the partial block. -+ c := copy(memleft, b) -+ d.v1 = round(d.v1, u64(d.mem[0:8])) -+ d.v2 = round(d.v2, u64(d.mem[8:16])) -+ d.v3 = round(d.v3, u64(d.mem[16:24])) -+ d.v4 = round(d.v4, u64(d.mem[24:32])) -+ b = b[c:] -+ d.n = 0 -+ } -+ -+ if len(b) >= 32 { -+ // One or more full blocks left. -+ nw := writeBlocks(d, b) -+ b = b[nw:] -+ } -+ -+ // Store any remaining partial block. -+ copy(d.mem[:], b) -+ d.n = len(b) -+ -+ return -+} -+ -+// Sum appends the current hash to b and returns the resulting slice. -+func (d *Digest) Sum(b []byte) []byte { -+ s := d.Sum64() -+ return append( -+ b, -+ byte(s>>56), -+ byte(s>>48), -+ byte(s>>40), -+ byte(s>>32), -+ byte(s>>24), -+ byte(s>>16), -+ byte(s>>8), -+ byte(s), -+ ) -+} -+ -+// Sum64 returns the current hash. -+func (d *Digest) Sum64() uint64 { -+ var h uint64 -+ -+ if d.total >= 32 { -+ v1, v2, v3, v4 := d.v1, d.v2, d.v3, d.v4 -+ h = rol1(v1) + rol7(v2) + rol12(v3) + rol18(v4) -+ h = mergeRound(h, v1) -+ h = mergeRound(h, v2) -+ h = mergeRound(h, v3) -+ h = mergeRound(h, v4) -+ } else { -+ h = d.v3 + prime5 -+ } -+ -+ h += d.total -+ -+ b := d.mem[:d.n&(len(d.mem)-1)] -+ for ; len(b) >= 8; b = b[8:] { -+ k1 := round(0, u64(b[:8])) -+ h ^= k1 -+ h = rol27(h)*prime1 + prime4 -+ } -+ if len(b) >= 4 { -+ h ^= uint64(u32(b[:4])) * prime1 -+ h = rol23(h)*prime2 + prime3 -+ b = b[4:] -+ } -+ for ; len(b) > 0; b = b[1:] { -+ h ^= uint64(b[0]) * prime5 -+ h = rol11(h) * prime1 -+ } -+ -+ h ^= h >> 33 -+ h *= prime2 -+ h ^= h >> 29 -+ h *= prime3 -+ h ^= h >> 32 -+ -+ return h -+} -+ -+const ( -+ magic = "xxh\x06" -+ marshaledSize = len(magic) + 8*5 + 32 -+) -+ -+// MarshalBinary implements the encoding.BinaryMarshaler interface. -+func (d *Digest) MarshalBinary() ([]byte, error) { -+ b := make([]byte, 0, marshaledSize) -+ b = append(b, magic...) -+ b = appendUint64(b, d.v1) -+ b = appendUint64(b, d.v2) -+ b = appendUint64(b, d.v3) -+ b = appendUint64(b, d.v4) -+ b = appendUint64(b, d.total) -+ b = append(b, d.mem[:d.n]...) -+ b = b[:len(b)+len(d.mem)-d.n] -+ return b, nil -+} -+ -+// UnmarshalBinary implements the encoding.BinaryUnmarshaler interface. -+func (d *Digest) UnmarshalBinary(b []byte) error { -+ if len(b) < len(magic) || string(b[:len(magic)]) != magic { -+ return errors.New("xxhash: invalid hash state identifier") -+ } -+ if len(b) != marshaledSize { -+ return errors.New("xxhash: invalid hash state size") -+ } -+ b = b[len(magic):] -+ b, d.v1 = consumeUint64(b) -+ b, d.v2 = consumeUint64(b) -+ b, d.v3 = consumeUint64(b) -+ b, d.v4 = consumeUint64(b) -+ b, d.total = consumeUint64(b) -+ copy(d.mem[:], b) -+ d.n = int(d.total % uint64(len(d.mem))) -+ return nil -+} -+ -+func appendUint64(b []byte, x uint64) []byte { -+ var a [8]byte -+ binary.LittleEndian.PutUint64(a[:], x) -+ return append(b, a[:]...) -+} -+ -+func consumeUint64(b []byte) ([]byte, uint64) { -+ x := u64(b) -+ return b[8:], x -+} -+ -+func u64(b []byte) uint64 { return binary.LittleEndian.Uint64(b) } -+func u32(b []byte) uint32 { return binary.LittleEndian.Uint32(b) } -+ -+func round(acc, input uint64) uint64 { -+ acc += input * prime2 -+ acc = rol31(acc) -+ acc *= prime1 -+ return acc -+} -+ -+func mergeRound(acc, val uint64) uint64 { -+ val = round(0, val) -+ acc ^= val -+ acc = acc*prime1 + prime4 -+ return acc -+} -+ -+func rol1(x uint64) uint64 { return bits.RotateLeft64(x, 1) } -+func rol7(x uint64) uint64 { return bits.RotateLeft64(x, 7) } -+func rol11(x uint64) uint64 { return bits.RotateLeft64(x, 11) } -+func rol12(x uint64) uint64 { return bits.RotateLeft64(x, 12) } -+func rol18(x uint64) uint64 { return bits.RotateLeft64(x, 18) } -+func rol23(x uint64) uint64 { return bits.RotateLeft64(x, 23) } -+func rol27(x uint64) uint64 { return bits.RotateLeft64(x, 27) } -+func rol31(x uint64) uint64 { return bits.RotateLeft64(x, 31) } -diff --git a/vendor/github.com/cespare/xxhash/v2/xxhash_amd64.s b/vendor/github.com/cespare/xxhash/v2/xxhash_amd64.s -new file mode 100755 -index 0000000..3e8b132 ---- /dev/null -+++ b/vendor/github.com/cespare/xxhash/v2/xxhash_amd64.s -@@ -0,0 +1,209 @@ -+//go:build !appengine && gc && !purego -+// +build !appengine -+// +build gc -+// +build !purego -+ -+#include "textflag.h" -+ -+// Registers: -+#define h AX -+#define d AX -+#define p SI // pointer to advance through b -+#define n DX -+#define end BX // loop end -+#define v1 R8 -+#define v2 R9 -+#define v3 R10 -+#define v4 R11 -+#define x R12 -+#define prime1 R13 -+#define prime2 R14 -+#define prime4 DI -+ -+#define round(acc, x) \ -+ IMULQ prime2, x \ -+ ADDQ x, acc \ -+ ROLQ $31, acc \ -+ IMULQ prime1, acc -+ -+// round0 performs the operation x = round(0, x). -+#define round0(x) \ -+ IMULQ prime2, x \ -+ ROLQ $31, x \ -+ IMULQ prime1, x -+ -+// mergeRound applies a merge round on the two registers acc and x. -+// It assumes that prime1, prime2, and prime4 have been loaded. -+#define mergeRound(acc, x) \ -+ round0(x) \ -+ XORQ x, acc \ -+ IMULQ prime1, acc \ -+ ADDQ prime4, acc -+ -+// blockLoop processes as many 32-byte blocks as possible, -+// updating v1, v2, v3, and v4. It assumes that there is at least one block -+// to process. -+#define blockLoop() \ -+loop: \ -+ MOVQ +0(p), x \ -+ round(v1, x) \ -+ MOVQ +8(p), x \ -+ round(v2, x) \ -+ MOVQ +16(p), x \ -+ round(v3, x) \ -+ MOVQ +24(p), x \ -+ round(v4, x) \ -+ ADDQ $32, p \ -+ CMPQ p, end \ -+ JLE loop -+ -+// func Sum64(b []byte) uint64 -+TEXT ·Sum64(SB), NOSPLIT|NOFRAME, $0-32 -+ // Load fixed primes. -+ MOVQ ·primes+0(SB), prime1 -+ MOVQ ·primes+8(SB), prime2 -+ MOVQ ·primes+24(SB), prime4 -+ -+ // Load slice. -+ MOVQ b_base+0(FP), p -+ MOVQ b_len+8(FP), n -+ LEAQ (p)(n*1), end -+ -+ // The first loop limit will be len(b)-32. -+ SUBQ $32, end -+ -+ // Check whether we have at least one block. -+ CMPQ n, $32 -+ JLT noBlocks -+ -+ // Set up initial state (v1, v2, v3, v4). -+ MOVQ prime1, v1 -+ ADDQ prime2, v1 -+ MOVQ prime2, v2 -+ XORQ v3, v3 -+ XORQ v4, v4 -+ SUBQ prime1, v4 -+ -+ blockLoop() -+ -+ MOVQ v1, h -+ ROLQ $1, h -+ MOVQ v2, x -+ ROLQ $7, x -+ ADDQ x, h -+ MOVQ v3, x -+ ROLQ $12, x -+ ADDQ x, h -+ MOVQ v4, x -+ ROLQ $18, x -+ ADDQ x, h -+ -+ mergeRound(h, v1) -+ mergeRound(h, v2) -+ mergeRound(h, v3) -+ mergeRound(h, v4) -+ -+ JMP afterBlocks -+ -+noBlocks: -+ MOVQ ·primes+32(SB), h -+ -+afterBlocks: -+ ADDQ n, h -+ -+ ADDQ $24, end -+ CMPQ p, end -+ JG try4 -+ -+loop8: -+ MOVQ (p), x -+ ADDQ $8, p -+ round0(x) -+ XORQ x, h -+ ROLQ $27, h -+ IMULQ prime1, h -+ ADDQ prime4, h -+ -+ CMPQ p, end -+ JLE loop8 -+ -+try4: -+ ADDQ $4, end -+ CMPQ p, end -+ JG try1 -+ -+ MOVL (p), x -+ ADDQ $4, p -+ IMULQ prime1, x -+ XORQ x, h -+ -+ ROLQ $23, h -+ IMULQ prime2, h -+ ADDQ ·primes+16(SB), h -+ -+try1: -+ ADDQ $4, end -+ CMPQ p, end -+ JGE finalize -+ -+loop1: -+ MOVBQZX (p), x -+ ADDQ $1, p -+ IMULQ ·primes+32(SB), x -+ XORQ x, h -+ ROLQ $11, h -+ IMULQ prime1, h -+ -+ CMPQ p, end -+ JL loop1 -+ -+finalize: -+ MOVQ h, x -+ SHRQ $33, x -+ XORQ x, h -+ IMULQ prime2, h -+ MOVQ h, x -+ SHRQ $29, x -+ XORQ x, h -+ IMULQ ·primes+16(SB), h -+ MOVQ h, x -+ SHRQ $32, x -+ XORQ x, h -+ -+ MOVQ h, ret+24(FP) -+ RET -+ -+// func writeBlocks(d *Digest, b []byte) int -+TEXT ·writeBlocks(SB), NOSPLIT|NOFRAME, $0-40 -+ // Load fixed primes needed for round. -+ MOVQ ·primes+0(SB), prime1 -+ MOVQ ·primes+8(SB), prime2 -+ -+ // Load slice. -+ MOVQ b_base+8(FP), p -+ MOVQ b_len+16(FP), n -+ LEAQ (p)(n*1), end -+ SUBQ $32, end -+ -+ // Load vN from d. -+ MOVQ s+0(FP), d -+ MOVQ 0(d), v1 -+ MOVQ 8(d), v2 -+ MOVQ 16(d), v3 -+ MOVQ 24(d), v4 -+ -+ // We don't need to check the loop condition here; this function is -+ // always called with at least one block of data to process. -+ blockLoop() -+ -+ // Copy vN back to d. -+ MOVQ v1, 0(d) -+ MOVQ v2, 8(d) -+ MOVQ v3, 16(d) -+ MOVQ v4, 24(d) -+ -+ // The number of bytes written is p minus the old base pointer. -+ SUBQ b_base+8(FP), p -+ MOVQ p, ret+32(FP) -+ -+ RET -diff --git a/vendor/github.com/cespare/xxhash/v2/xxhash_arm64.s b/vendor/github.com/cespare/xxhash/v2/xxhash_arm64.s -new file mode 100755 -index 0000000..7e3145a ---- /dev/null -+++ b/vendor/github.com/cespare/xxhash/v2/xxhash_arm64.s -@@ -0,0 +1,183 @@ -+//go:build !appengine && gc && !purego -+// +build !appengine -+// +build gc -+// +build !purego -+ -+#include "textflag.h" -+ -+// Registers: -+#define digest R1 -+#define h R2 // return value -+#define p R3 // input pointer -+#define n R4 // input length -+#define nblocks R5 // n / 32 -+#define prime1 R7 -+#define prime2 R8 -+#define prime3 R9 -+#define prime4 R10 -+#define prime5 R11 -+#define v1 R12 -+#define v2 R13 -+#define v3 R14 -+#define v4 R15 -+#define x1 R20 -+#define x2 R21 -+#define x3 R22 -+#define x4 R23 -+ -+#define round(acc, x) \ -+ MADD prime2, acc, x, acc \ -+ ROR $64-31, acc \ -+ MUL prime1, acc -+ -+// round0 performs the operation x = round(0, x). -+#define round0(x) \ -+ MUL prime2, x \ -+ ROR $64-31, x \ -+ MUL prime1, x -+ -+#define mergeRound(acc, x) \ -+ round0(x) \ -+ EOR x, acc \ -+ MADD acc, prime4, prime1, acc -+ -+// blockLoop processes as many 32-byte blocks as possible, -+// updating v1, v2, v3, and v4. It assumes that n >= 32. -+#define blockLoop() \ -+ LSR $5, n, nblocks \ -+ PCALIGN $16 \ -+ loop: \ -+ LDP.P 16(p), (x1, x2) \ -+ LDP.P 16(p), (x3, x4) \ -+ round(v1, x1) \ -+ round(v2, x2) \ -+ round(v3, x3) \ -+ round(v4, x4) \ -+ SUB $1, nblocks \ -+ CBNZ nblocks, loop -+ -+// func Sum64(b []byte) uint64 -+TEXT ·Sum64(SB), NOSPLIT|NOFRAME, $0-32 -+ LDP b_base+0(FP), (p, n) -+ -+ LDP ·primes+0(SB), (prime1, prime2) -+ LDP ·primes+16(SB), (prime3, prime4) -+ MOVD ·primes+32(SB), prime5 -+ -+ CMP $32, n -+ CSEL LT, prime5, ZR, h // if n < 32 { h = prime5 } else { h = 0 } -+ BLT afterLoop -+ -+ ADD prime1, prime2, v1 -+ MOVD prime2, v2 -+ MOVD $0, v3 -+ NEG prime1, v4 -+ -+ blockLoop() -+ -+ ROR $64-1, v1, x1 -+ ROR $64-7, v2, x2 -+ ADD x1, x2 -+ ROR $64-12, v3, x3 -+ ROR $64-18, v4, x4 -+ ADD x3, x4 -+ ADD x2, x4, h -+ -+ mergeRound(h, v1) -+ mergeRound(h, v2) -+ mergeRound(h, v3) -+ mergeRound(h, v4) -+ -+afterLoop: -+ ADD n, h -+ -+ TBZ $4, n, try8 -+ LDP.P 16(p), (x1, x2) -+ -+ round0(x1) -+ -+ // NOTE: here and below, sequencing the EOR after the ROR (using a -+ // rotated register) is worth a small but measurable speedup for small -+ // inputs. -+ ROR $64-27, h -+ EOR x1 @> 64-27, h, h -+ MADD h, prime4, prime1, h -+ -+ round0(x2) -+ ROR $64-27, h -+ EOR x2 @> 64-27, h, h -+ MADD h, prime4, prime1, h -+ -+try8: -+ TBZ $3, n, try4 -+ MOVD.P 8(p), x1 -+ -+ round0(x1) -+ ROR $64-27, h -+ EOR x1 @> 64-27, h, h -+ MADD h, prime4, prime1, h -+ -+try4: -+ TBZ $2, n, try2 -+ MOVWU.P 4(p), x2 -+ -+ MUL prime1, x2 -+ ROR $64-23, h -+ EOR x2 @> 64-23, h, h -+ MADD h, prime3, prime2, h -+ -+try2: -+ TBZ $1, n, try1 -+ MOVHU.P 2(p), x3 -+ AND $255, x3, x1 -+ LSR $8, x3, x2 -+ -+ MUL prime5, x1 -+ ROR $64-11, h -+ EOR x1 @> 64-11, h, h -+ MUL prime1, h -+ -+ MUL prime5, x2 -+ ROR $64-11, h -+ EOR x2 @> 64-11, h, h -+ MUL prime1, h -+ -+try1: -+ TBZ $0, n, finalize -+ MOVBU (p), x4 -+ -+ MUL prime5, x4 -+ ROR $64-11, h -+ EOR x4 @> 64-11, h, h -+ MUL prime1, h -+ -+finalize: -+ EOR h >> 33, h -+ MUL prime2, h -+ EOR h >> 29, h -+ MUL prime3, h -+ EOR h >> 32, h -+ -+ MOVD h, ret+24(FP) -+ RET -+ -+// func writeBlocks(d *Digest, b []byte) int -+TEXT ·writeBlocks(SB), NOSPLIT|NOFRAME, $0-40 -+ LDP ·primes+0(SB), (prime1, prime2) -+ -+ // Load state. Assume v[1-4] are stored contiguously. -+ MOVD d+0(FP), digest -+ LDP 0(digest), (v1, v2) -+ LDP 16(digest), (v3, v4) -+ -+ LDP b_base+8(FP), (p, n) -+ -+ blockLoop() -+ -+ // Store updated state. -+ STP (v1, v2), 0(digest) -+ STP (v3, v4), 16(digest) -+ -+ BIC $31, n -+ MOVD n, ret+32(FP) -+ RET -diff --git a/vendor/github.com/cespare/xxhash/v2/xxhash_asm.go b/vendor/github.com/cespare/xxhash/v2/xxhash_asm.go -new file mode 100755 -index 0000000..9216e0a ---- /dev/null -+++ b/vendor/github.com/cespare/xxhash/v2/xxhash_asm.go -@@ -0,0 +1,15 @@ -+//go:build (amd64 || arm64) && !appengine && gc && !purego -+// +build amd64 arm64 -+// +build !appengine -+// +build gc -+// +build !purego -+ -+package xxhash -+ -+// Sum64 computes the 64-bit xxHash digest of b. -+// -+//go:noescape -+func Sum64(b []byte) uint64 -+ -+//go:noescape -+func writeBlocks(d *Digest, b []byte) int -diff --git a/vendor/github.com/cespare/xxhash/v2/xxhash_other.go b/vendor/github.com/cespare/xxhash/v2/xxhash_other.go -new file mode 100755 -index 0000000..26df13b ---- /dev/null -+++ b/vendor/github.com/cespare/xxhash/v2/xxhash_other.go -@@ -0,0 +1,76 @@ -+//go:build (!amd64 && !arm64) || appengine || !gc || purego -+// +build !amd64,!arm64 appengine !gc purego -+ -+package xxhash -+ -+// Sum64 computes the 64-bit xxHash digest of b. -+func Sum64(b []byte) uint64 { -+ // A simpler version would be -+ // d := New() -+ // d.Write(b) -+ // return d.Sum64() -+ // but this is faster, particularly for small inputs. -+ -+ n := len(b) -+ var h uint64 -+ -+ if n >= 32 { -+ v1 := primes[0] + prime2 -+ v2 := prime2 -+ v3 := uint64(0) -+ v4 := -primes[0] -+ for len(b) >= 32 { -+ v1 = round(v1, u64(b[0:8:len(b)])) -+ v2 = round(v2, u64(b[8:16:len(b)])) -+ v3 = round(v3, u64(b[16:24:len(b)])) -+ v4 = round(v4, u64(b[24:32:len(b)])) -+ b = b[32:len(b):len(b)] -+ } -+ h = rol1(v1) + rol7(v2) + rol12(v3) + rol18(v4) -+ h = mergeRound(h, v1) -+ h = mergeRound(h, v2) -+ h = mergeRound(h, v3) -+ h = mergeRound(h, v4) -+ } else { -+ h = prime5 -+ } -+ -+ h += uint64(n) -+ -+ for ; len(b) >= 8; b = b[8:] { -+ k1 := round(0, u64(b[:8])) -+ h ^= k1 -+ h = rol27(h)*prime1 + prime4 -+ } -+ if len(b) >= 4 { -+ h ^= uint64(u32(b[:4])) * prime1 -+ h = rol23(h)*prime2 + prime3 -+ b = b[4:] -+ } -+ for ; len(b) > 0; b = b[1:] { -+ h ^= uint64(b[0]) * prime5 -+ h = rol11(h) * prime1 -+ } -+ -+ h ^= h >> 33 -+ h *= prime2 -+ h ^= h >> 29 -+ h *= prime3 -+ h ^= h >> 32 -+ -+ return h -+} -+ -+func writeBlocks(d *Digest, b []byte) int { -+ v1, v2, v3, v4 := d.v1, d.v2, d.v3, d.v4 -+ n := len(b) -+ for len(b) >= 32 { -+ v1 = round(v1, u64(b[0:8:len(b)])) -+ v2 = round(v2, u64(b[8:16:len(b)])) -+ v3 = round(v3, u64(b[16:24:len(b)])) -+ v4 = round(v4, u64(b[24:32:len(b)])) -+ b = b[32:len(b):len(b)] -+ } -+ d.v1, d.v2, d.v3, d.v4 = v1, v2, v3, v4 -+ return n - len(b) -+} -diff --git a/vendor/github.com/cespare/xxhash/v2/xxhash_safe.go b/vendor/github.com/cespare/xxhash/v2/xxhash_safe.go -new file mode 100755 -index 0000000..e86f1b5 ---- /dev/null -+++ b/vendor/github.com/cespare/xxhash/v2/xxhash_safe.go -@@ -0,0 +1,16 @@ -+//go:build appengine -+// +build appengine -+ -+// This file contains the safe implementations of otherwise unsafe-using code. -+ -+package xxhash -+ -+// Sum64String computes the 64-bit xxHash digest of s. -+func Sum64String(s string) uint64 { -+ return Sum64([]byte(s)) -+} -+ -+// WriteString adds more data to d. It always returns len(s), nil. -+func (d *Digest) WriteString(s string) (n int, err error) { -+ return d.Write([]byte(s)) -+} -diff --git a/vendor/github.com/cespare/xxhash/v2/xxhash_unsafe.go b/vendor/github.com/cespare/xxhash/v2/xxhash_unsafe.go -new file mode 100755 -index 0000000..1c1638f ---- /dev/null -+++ b/vendor/github.com/cespare/xxhash/v2/xxhash_unsafe.go -@@ -0,0 +1,58 @@ -+//go:build !appengine -+// +build !appengine -+ -+// This file encapsulates usage of unsafe. -+// xxhash_safe.go contains the safe implementations. -+ -+package xxhash -+ -+import ( -+ "unsafe" -+) -+ -+// In the future it's possible that compiler optimizations will make these -+// XxxString functions unnecessary by realizing that calls such as -+// Sum64([]byte(s)) don't need to copy s. See https://go.dev/issue/2205. -+// If that happens, even if we keep these functions they can be replaced with -+// the trivial safe code. -+ -+// NOTE: The usual way of doing an unsafe string-to-[]byte conversion is: -+// -+// var b []byte -+// bh := (*reflect.SliceHeader)(unsafe.Pointer(&b)) -+// bh.Data = (*reflect.StringHeader)(unsafe.Pointer(&s)).Data -+// bh.Len = len(s) -+// bh.Cap = len(s) -+// -+// Unfortunately, as of Go 1.15.3 the inliner's cost model assigns a high enough -+// weight to this sequence of expressions that any function that uses it will -+// not be inlined. Instead, the functions below use a different unsafe -+// conversion designed to minimize the inliner weight and allow both to be -+// inlined. There is also a test (TestInlining) which verifies that these are -+// inlined. -+// -+// See https://github.com/golang/go/issues/42739 for discussion. -+ -+// Sum64String computes the 64-bit xxHash digest of s. -+// It may be faster than Sum64([]byte(s)) by avoiding a copy. -+func Sum64String(s string) uint64 { -+ b := *(*[]byte)(unsafe.Pointer(&sliceHeader{s, len(s)})) -+ return Sum64(b) -+} -+ -+// WriteString adds more data to d. It always returns len(s), nil. -+// It may be faster than Write([]byte(s)) by avoiding a copy. -+func (d *Digest) WriteString(s string) (n int, err error) { -+ d.Write(*(*[]byte)(unsafe.Pointer(&sliceHeader{s, len(s)}))) -+ // d.Write always returns len(s), nil. -+ // Ignoring the return output and returning these fixed values buys a -+ // savings of 6 in the inliner's cost model. -+ return len(s), nil -+} -+ -+// sliceHeader is similar to reflect.SliceHeader, but it assumes that the layout -+// of the first two words is the same as the layout of a string. -+type sliceHeader struct { -+ s string -+ cap int -+} -diff --git a/vendor/github.com/checkpoint-restore/go-criu/v5/.gitignore b/vendor/github.com/checkpoint-restore/go-criu/v5/.gitignore -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/checkpoint-restore/go-criu/v5/.golangci.yml b/vendor/github.com/checkpoint-restore/go-criu/v5/.golangci.yml -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/checkpoint-restore/go-criu/v5/LICENSE b/vendor/github.com/checkpoint-restore/go-criu/v5/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/checkpoint-restore/go-criu/v5/Makefile b/vendor/github.com/checkpoint-restore/go-criu/v5/Makefile -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/checkpoint-restore/go-criu/v5/README.md b/vendor/github.com/checkpoint-restore/go-criu/v5/README.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/checkpoint-restore/go-criu/v5/features.go b/vendor/github.com/checkpoint-restore/go-criu/v5/features.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/checkpoint-restore/go-criu/v5/main.go b/vendor/github.com/checkpoint-restore/go-criu/v5/main.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/checkpoint-restore/go-criu/v5/notify.go b/vendor/github.com/checkpoint-restore/go-criu/v5/notify.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/checkpoint-restore/go-criu/v5/rpc/rpc.pb.go b/vendor/github.com/checkpoint-restore/go-criu/v5/rpc/rpc.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/checkpoint-restore/go-criu/v5/rpc/rpc.proto b/vendor/github.com/checkpoint-restore/go-criu/v5/rpc/rpc.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/.clang-format b/vendor/github.com/cilium/ebpf/.clang-format -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/.gitignore b/vendor/github.com/cilium/ebpf/.gitignore -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/.golangci.yaml b/vendor/github.com/cilium/ebpf/.golangci.yaml -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/ARCHITECTURE.md b/vendor/github.com/cilium/ebpf/ARCHITECTURE.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/CODE_OF_CONDUCT.md b/vendor/github.com/cilium/ebpf/CODE_OF_CONDUCT.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/CONTRIBUTING.md b/vendor/github.com/cilium/ebpf/CONTRIBUTING.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/LICENSE b/vendor/github.com/cilium/ebpf/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/Makefile b/vendor/github.com/cilium/ebpf/Makefile -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/README.md b/vendor/github.com/cilium/ebpf/README.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/asm/alu.go b/vendor/github.com/cilium/ebpf/asm/alu.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/asm/alu_string.go b/vendor/github.com/cilium/ebpf/asm/alu_string.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/asm/doc.go b/vendor/github.com/cilium/ebpf/asm/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/asm/func.go b/vendor/github.com/cilium/ebpf/asm/func.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/asm/func_string.go b/vendor/github.com/cilium/ebpf/asm/func_string.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/asm/instruction.go b/vendor/github.com/cilium/ebpf/asm/instruction.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/asm/jump.go b/vendor/github.com/cilium/ebpf/asm/jump.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/asm/jump_string.go b/vendor/github.com/cilium/ebpf/asm/jump_string.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/asm/load_store.go b/vendor/github.com/cilium/ebpf/asm/load_store.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/asm/load_store_string.go b/vendor/github.com/cilium/ebpf/asm/load_store_string.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/asm/opcode.go b/vendor/github.com/cilium/ebpf/asm/opcode.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/asm/opcode_string.go b/vendor/github.com/cilium/ebpf/asm/opcode_string.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/asm/register.go b/vendor/github.com/cilium/ebpf/asm/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/attachtype_string.go b/vendor/github.com/cilium/ebpf/attachtype_string.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/collection.go b/vendor/github.com/cilium/ebpf/collection.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/doc.go b/vendor/github.com/cilium/ebpf/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/elf_reader.go b/vendor/github.com/cilium/ebpf/elf_reader.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/elf_reader_fuzz.go b/vendor/github.com/cilium/ebpf/elf_reader_fuzz.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/info.go b/vendor/github.com/cilium/ebpf/info.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/internal/align.go b/vendor/github.com/cilium/ebpf/internal/align.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/internal/btf/btf.go b/vendor/github.com/cilium/ebpf/internal/btf/btf.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/internal/btf/btf_types.go b/vendor/github.com/cilium/ebpf/internal/btf/btf_types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/internal/btf/btf_types_string.go b/vendor/github.com/cilium/ebpf/internal/btf/btf_types_string.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/internal/btf/core.go b/vendor/github.com/cilium/ebpf/internal/btf/core.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/internal/btf/doc.go b/vendor/github.com/cilium/ebpf/internal/btf/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/internal/btf/ext_info.go b/vendor/github.com/cilium/ebpf/internal/btf/ext_info.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/internal/btf/fuzz.go b/vendor/github.com/cilium/ebpf/internal/btf/fuzz.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/internal/btf/info.go b/vendor/github.com/cilium/ebpf/internal/btf/info.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/internal/btf/strings.go b/vendor/github.com/cilium/ebpf/internal/btf/strings.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/internal/btf/syscalls.go b/vendor/github.com/cilium/ebpf/internal/btf/syscalls.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/internal/btf/types.go b/vendor/github.com/cilium/ebpf/internal/btf/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/internal/cpu.go b/vendor/github.com/cilium/ebpf/internal/cpu.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/internal/elf.go b/vendor/github.com/cilium/ebpf/internal/elf.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/internal/endian.go b/vendor/github.com/cilium/ebpf/internal/endian.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/internal/errors.go b/vendor/github.com/cilium/ebpf/internal/errors.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/internal/fd.go b/vendor/github.com/cilium/ebpf/internal/fd.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/internal/feature.go b/vendor/github.com/cilium/ebpf/internal/feature.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/internal/io.go b/vendor/github.com/cilium/ebpf/internal/io.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/internal/pinning.go b/vendor/github.com/cilium/ebpf/internal/pinning.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/internal/ptr.go b/vendor/github.com/cilium/ebpf/internal/ptr.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/internal/ptr_32_be.go b/vendor/github.com/cilium/ebpf/internal/ptr_32_be.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/internal/ptr_32_le.go b/vendor/github.com/cilium/ebpf/internal/ptr_32_le.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/internal/ptr_64.go b/vendor/github.com/cilium/ebpf/internal/ptr_64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/internal/syscall.go b/vendor/github.com/cilium/ebpf/internal/syscall.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/internal/syscall_string.go b/vendor/github.com/cilium/ebpf/internal/syscall_string.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/internal/unix/types_linux.go b/vendor/github.com/cilium/ebpf/internal/unix/types_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/internal/unix/types_other.go b/vendor/github.com/cilium/ebpf/internal/unix/types_other.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/internal/version.go b/vendor/github.com/cilium/ebpf/internal/version.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/link/cgroup.go b/vendor/github.com/cilium/ebpf/link/cgroup.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/link/doc.go b/vendor/github.com/cilium/ebpf/link/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/link/freplace.go b/vendor/github.com/cilium/ebpf/link/freplace.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/link/iter.go b/vendor/github.com/cilium/ebpf/link/iter.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/link/kprobe.go b/vendor/github.com/cilium/ebpf/link/kprobe.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/link/link.go b/vendor/github.com/cilium/ebpf/link/link.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/link/netns.go b/vendor/github.com/cilium/ebpf/link/netns.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/link/perf_event.go b/vendor/github.com/cilium/ebpf/link/perf_event.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/link/platform.go b/vendor/github.com/cilium/ebpf/link/platform.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/link/program.go b/vendor/github.com/cilium/ebpf/link/program.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/link/raw_tracepoint.go b/vendor/github.com/cilium/ebpf/link/raw_tracepoint.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/link/syscalls.go b/vendor/github.com/cilium/ebpf/link/syscalls.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/link/tracepoint.go b/vendor/github.com/cilium/ebpf/link/tracepoint.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/link/uprobe.go b/vendor/github.com/cilium/ebpf/link/uprobe.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/linker.go b/vendor/github.com/cilium/ebpf/linker.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/map.go b/vendor/github.com/cilium/ebpf/map.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/marshalers.go b/vendor/github.com/cilium/ebpf/marshalers.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/prog.go b/vendor/github.com/cilium/ebpf/prog.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/run-tests.sh b/vendor/github.com/cilium/ebpf/run-tests.sh -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/syscalls.go b/vendor/github.com/cilium/ebpf/syscalls.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/types.go b/vendor/github.com/cilium/ebpf/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cilium/ebpf/types_string.go b/vendor/github.com/cilium/ebpf/types_string.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/containerd/console/.golangci.yml b/vendor/github.com/containerd/console/.golangci.yml -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/containerd/console/LICENSE b/vendor/github.com/containerd/console/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/containerd/console/README.md b/vendor/github.com/containerd/console/README.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/containerd/console/console.go b/vendor/github.com/containerd/console/console.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/containerd/console/console_linux.go b/vendor/github.com/containerd/console/console_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/containerd/console/console_unix.go b/vendor/github.com/containerd/console/console_unix.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/containerd/console/console_windows.go b/vendor/github.com/containerd/console/console_windows.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/containerd/console/console_zos.go b/vendor/github.com/containerd/console/console_zos.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/containerd/console/pty_freebsd_cgo.go b/vendor/github.com/containerd/console/pty_freebsd_cgo.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/containerd/console/pty_freebsd_nocgo.go b/vendor/github.com/containerd/console/pty_freebsd_nocgo.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/containerd/console/pty_unix.go b/vendor/github.com/containerd/console/pty_unix.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/containerd/console/tc_darwin.go b/vendor/github.com/containerd/console/tc_darwin.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/containerd/console/tc_freebsd_cgo.go b/vendor/github.com/containerd/console/tc_freebsd_cgo.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/containerd/console/tc_freebsd_nocgo.go b/vendor/github.com/containerd/console/tc_freebsd_nocgo.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/containerd/console/tc_linux.go b/vendor/github.com/containerd/console/tc_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/containerd/console/tc_netbsd.go b/vendor/github.com/containerd/console/tc_netbsd.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/containerd/console/tc_openbsd_cgo.go b/vendor/github.com/containerd/console/tc_openbsd_cgo.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/containerd/console/tc_openbsd_nocgo.go b/vendor/github.com/containerd/console/tc_openbsd_nocgo.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/containerd/console/tc_solaris_cgo.go b/vendor/github.com/containerd/console/tc_solaris_cgo.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/containerd/console/tc_solaris_nocgo.go b/vendor/github.com/containerd/console/tc_solaris_nocgo.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/containerd/console/tc_unix.go b/vendor/github.com/containerd/console/tc_unix.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/containerd/console/tc_zos.go b/vendor/github.com/containerd/console/tc_zos.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/containerd/nri/LICENSE b/vendor/github.com/containerd/nri/LICENSE -new file mode 100755 -index 0000000..261eeb9 ---- /dev/null -+++ b/vendor/github.com/containerd/nri/LICENSE -@@ -0,0 +1,201 @@ -+ Apache License -+ Version 2.0, January 2004 -+ http://www.apache.org/licenses/ -+ -+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -+ -+ 1. Definitions. -+ -+ "License" shall mean the terms and conditions for use, reproduction, -+ and distribution as defined by Sections 1 through 9 of this document. -+ -+ "Licensor" shall mean the copyright owner or entity authorized by -+ the copyright owner that is granting the License. -+ -+ "Legal Entity" shall mean the union of the acting entity and all -+ other entities that control, are controlled by, or are under common -+ control with that entity. For the purposes of this definition, -+ "control" means (i) the power, direct or indirect, to cause the -+ direction or management of such entity, whether by contract or -+ otherwise, or (ii) ownership of fifty percent (50%) or more of the -+ outstanding shares, or (iii) beneficial ownership of such entity. -+ -+ "You" (or "Your") shall mean an individual or Legal Entity -+ exercising permissions granted by this License. -+ -+ "Source" form shall mean the preferred form for making modifications, -+ including but not limited to software source code, documentation -+ source, and configuration files. -+ -+ "Object" form shall mean any form resulting from mechanical -+ transformation or translation of a Source form, including but -+ not limited to compiled object code, generated documentation, -+ and conversions to other media types. -+ -+ "Work" shall mean the work of authorship, whether in Source or -+ Object form, made available under the License, as indicated by a -+ copyright notice that is included in or attached to the work -+ (an example is provided in the Appendix below). -+ -+ "Derivative Works" shall mean any work, whether in Source or Object -+ form, that is based on (or derived from) the Work and for which the -+ editorial revisions, annotations, elaborations, or other modifications -+ represent, as a whole, an original work of authorship. For the purposes -+ of this License, Derivative Works shall not include works that remain -+ separable from, or merely link (or bind by name) to the interfaces of, -+ the Work and Derivative Works thereof. -+ -+ "Contribution" shall mean any work of authorship, including -+ the original version of the Work and any modifications or additions -+ to that Work or Derivative Works thereof, that is intentionally -+ submitted to Licensor for inclusion in the Work by the copyright owner -+ or by an individual or Legal Entity authorized to submit on behalf of -+ the copyright owner. For the purposes of this definition, "submitted" -+ means any form of electronic, verbal, or written communication sent -+ to the Licensor or its representatives, including but not limited to -+ communication on electronic mailing lists, source code control systems, -+ and issue tracking systems that are managed by, or on behalf of, the -+ Licensor for the purpose of discussing and improving the Work, but -+ excluding communication that is conspicuously marked or otherwise -+ designated in writing by the copyright owner as "Not a Contribution." -+ -+ "Contributor" shall mean Licensor and any individual or Legal Entity -+ on behalf of whom a Contribution has been received by Licensor and -+ subsequently incorporated within the Work. -+ -+ 2. Grant of Copyright License. Subject to the terms and conditions of -+ this License, each Contributor hereby grants to You a perpetual, -+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable -+ copyright license to reproduce, prepare Derivative Works of, -+ publicly display, publicly perform, sublicense, and distribute the -+ Work and such Derivative Works in Source or Object form. -+ -+ 3. Grant of Patent License. Subject to the terms and conditions of -+ this License, each Contributor hereby grants to You a perpetual, -+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable -+ (except as stated in this section) patent license to make, have made, -+ use, offer to sell, sell, import, and otherwise transfer the Work, -+ where such license applies only to those patent claims licensable -+ by such Contributor that are necessarily infringed by their -+ Contribution(s) alone or by combination of their Contribution(s) -+ with the Work to which such Contribution(s) was submitted. If You -+ institute patent litigation against any entity (including a -+ cross-claim or counterclaim in a lawsuit) alleging that the Work -+ or a Contribution incorporated within the Work constitutes direct -+ or contributory patent infringement, then any patent licenses -+ granted to You under this License for that Work shall terminate -+ as of the date such litigation is filed. -+ -+ 4. Redistribution. You may reproduce and distribute copies of the -+ Work or Derivative Works thereof in any medium, with or without -+ modifications, and in Source or Object form, provided that You -+ meet the following conditions: -+ -+ (a) You must give any other recipients of the Work or -+ Derivative Works a copy of this License; and -+ -+ (b) You must cause any modified files to carry prominent notices -+ stating that You changed the files; and -+ -+ (c) You must retain, in the Source form of any Derivative Works -+ that You distribute, all copyright, patent, trademark, and -+ attribution notices from the Source form of the Work, -+ excluding those notices that do not pertain to any part of -+ the Derivative Works; and -+ -+ (d) If the Work includes a "NOTICE" text file as part of its -+ distribution, then any Derivative Works that You distribute must -+ include a readable copy of the attribution notices contained -+ within such NOTICE file, excluding those notices that do not -+ pertain to any part of the Derivative Works, in at least one -+ of the following places: within a NOTICE text file distributed -+ as part of the Derivative Works; within the Source form or -+ documentation, if provided along with the Derivative Works; or, -+ within a display generated by the Derivative Works, if and -+ wherever such third-party notices normally appear. The contents -+ of the NOTICE file are for informational purposes only and -+ do not modify the License. You may add Your own attribution -+ notices within Derivative Works that You distribute, alongside -+ or as an addendum to the NOTICE text from the Work, provided -+ that such additional attribution notices cannot be construed -+ as modifying the License. -+ -+ You may add Your own copyright statement to Your modifications and -+ may provide additional or different license terms and conditions -+ for use, reproduction, or distribution of Your modifications, or -+ for any such Derivative Works as a whole, provided Your use, -+ reproduction, and distribution of the Work otherwise complies with -+ the conditions stated in this License. -+ -+ 5. Submission of Contributions. Unless You explicitly state otherwise, -+ any Contribution intentionally submitted for inclusion in the Work -+ by You to the Licensor shall be under the terms and conditions of -+ this License, without any additional terms or conditions. -+ Notwithstanding the above, nothing herein shall supersede or modify -+ the terms of any separate license agreement you may have executed -+ with Licensor regarding such Contributions. -+ -+ 6. Trademarks. This License does not grant permission to use the trade -+ names, trademarks, service marks, or product names of the Licensor, -+ except as required for reasonable and customary use in describing the -+ origin of the Work and reproducing the content of the NOTICE file. -+ -+ 7. Disclaimer of Warranty. Unless required by applicable law or -+ agreed to in writing, Licensor provides the Work (and each -+ Contributor provides its Contributions) on an "AS IS" BASIS, -+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -+ implied, including, without limitation, any warranties or conditions -+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A -+ PARTICULAR PURPOSE. You are solely responsible for determining the -+ appropriateness of using or redistributing the Work and assume any -+ risks associated with Your exercise of permissions under this License. -+ -+ 8. Limitation of Liability. In no event and under no legal theory, -+ whether in tort (including negligence), contract, or otherwise, -+ unless required by applicable law (such as deliberate and grossly -+ negligent acts) or agreed to in writing, shall any Contributor be -+ liable to You for damages, including any direct, indirect, special, -+ incidental, or consequential damages of any character arising as a -+ result of this License or out of the use or inability to use the -+ Work (including but not limited to damages for loss of goodwill, -+ work stoppage, computer failure or malfunction, or any and all -+ other commercial damages or losses), even if such Contributor -+ has been advised of the possibility of such damages. -+ -+ 9. Accepting Warranty or Additional Liability. While redistributing -+ the Work or Derivative Works thereof, You may choose to offer, -+ and charge a fee for, acceptance of support, warranty, indemnity, -+ or other liability obligations and/or rights consistent with this -+ License. However, in accepting such obligations, You may act only -+ on Your own behalf and on Your sole responsibility, not on behalf -+ of any other Contributor, and only if You agree to indemnify, -+ defend, and hold each Contributor harmless for any liability -+ incurred by, or claims asserted against, such Contributor by reason -+ of your accepting any such warranty or additional liability. -+ -+ END OF TERMS AND CONDITIONS -+ -+ APPENDIX: How to apply the Apache License to your work. -+ -+ To apply the Apache License to your work, attach the following -+ boilerplate notice, with the fields enclosed by brackets "[]" -+ replaced with your own identifying information. (Don't include -+ the brackets!) The text should be enclosed in the appropriate -+ comment syntax for the file format. We also recommend that a -+ file or class name and description of purpose be included on the -+ same "printed page" as the copyright notice for easier -+ identification within third-party archives. -+ -+ Copyright [yyyy] [name of copyright owner] -+ -+ 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. -diff --git a/vendor/github.com/containerd/nri/pkg/api/adjustment.go b/vendor/github.com/containerd/nri/pkg/api/adjustment.go -new file mode 100755 -index 0000000..0f1fcd3 ---- /dev/null -+++ b/vendor/github.com/containerd/nri/pkg/api/adjustment.go -@@ -0,0 +1,310 @@ -+/* -+ Copyright The containerd 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 api -+ -+// -+// Notes: -+// Adjustment of metadata that is stored in maps (labels and annotations) -+// currently assumes that a single plugin will never do an add prior to a -+// delete for any key. IOW, it is always assumed that if both a deletion -+// and an addition/setting was recorded for a key then the final desired -+// state is the addition. This seems like a reasonably safe assumption. A -+// removal is usually done only to protect against triggering the conflict -+// in the runtime when a plugin intends to touch a key which is known to -+// have been put there or already modified by another plugin. -+// -+// An alternative without this implicit ordering assumption would be to -+// store the adjustment for such data as a sequence of add/del operations -+// in a slice. At the moment that does not seem to be necessary. -+// -+ -+// AddAnnotation records the addition of the annotation key=value. -+func (a *ContainerAdjustment) AddAnnotation(key, value string) { -+ a.initAnnotations() -+ a.Annotations[key] = value -+} -+ -+// RemoveAnnotation records the removal of the annotation for the given key. -+// Normally it is an error for a plugin to try and alter an annotation -+// touched by another plugin. However, this is not an error if the plugin -+// removes that annotation prior to touching it. -+func (a *ContainerAdjustment) RemoveAnnotation(key string) { -+ a.initAnnotations() -+ a.Annotations[MarkForRemoval(key)] = "" -+} -+ -+// AddMount records the addition of a mount to a container. -+func (a *ContainerAdjustment) AddMount(m *Mount) { -+ a.Mounts = append(a.Mounts, m) // TODO: should we dup m here ? -+} -+ -+// RemoveMount records the removal of a mount from a container. -+// Normally it is an error for a plugin to try and alter a mount -+// touched by another plugin. However, this is not an error if the -+// plugin removes that mount prior to touching it. -+func (a *ContainerAdjustment) RemoveMount(ContainerPath string) { -+ a.Mounts = append(a.Mounts, &Mount{ -+ Destination: MarkForRemoval(ContainerPath), -+ }) -+} -+ -+// AddEnv records the addition of an environment variable to a container. -+func (a *ContainerAdjustment) AddEnv(key, value string) { -+ a.Env = append(a.Env, &KeyValue{ -+ Key: key, -+ Value: value, -+ }) -+} -+ -+// RemoveEnv records the removal of an environment variable from a container. -+// Normally it is an error for a plugin to try and alter an environment -+// variable touched by another container. However, this is not an error if -+// the plugin removes that variable prior to touching it. -+func (a *ContainerAdjustment) RemoveEnv(key string) { -+ a.Env = append(a.Env, &KeyValue{ -+ Key: MarkForRemoval(key), -+ }) -+} -+ -+// AddHooks records the addition of the given hooks to a container. -+func (a *ContainerAdjustment) AddHooks(h *Hooks) { -+ a.initHooks() -+ if h.Prestart != nil { -+ a.Hooks.Prestart = append(a.Hooks.Prestart, h.Prestart...) -+ } -+ if h.CreateRuntime != nil { -+ a.Hooks.CreateRuntime = append(a.Hooks.CreateRuntime, h.CreateRuntime...) -+ } -+ if h.CreateContainer != nil { -+ a.Hooks.CreateContainer = append(a.Hooks.CreateContainer, h.CreateContainer...) -+ } -+ if h.StartContainer != nil { -+ a.Hooks.StartContainer = append(a.Hooks.StartContainer, h.StartContainer...) -+ } -+ if h.Poststart != nil { -+ a.Hooks.Poststart = append(a.Hooks.Poststart, h.Poststart...) -+ } -+ if h.Poststop != nil { -+ a.Hooks.Poststop = append(a.Hooks.Poststop, h.Poststop...) -+ } -+} -+ -+func (a *ContainerAdjustment) AddRlimit(typ string, hard, soft uint64) { -+ a.initRlimits() -+ a.Rlimits = append(a.Rlimits, &POSIXRlimit{ -+ Type: typ, -+ Hard: hard, -+ Soft: soft, -+ }) -+} -+ -+// AddDevice records the addition of the given device to a container. -+func (a *ContainerAdjustment) AddDevice(d *LinuxDevice) { -+ a.initLinux() -+ a.Linux.Devices = append(a.Linux.Devices, d) // TODO: should we dup d here ? -+} -+ -+// RemoveDevice records the removal of a device from a container. -+// Normally it is an error for a plugin to try and alter an device -+// touched by another container. However, this is not an error if -+// the plugin removes that device prior to touching it. -+func (a *ContainerAdjustment) RemoveDevice(path string) { -+ a.initLinux() -+ a.Linux.Devices = append(a.Linux.Devices, &LinuxDevice{ -+ Path: MarkForRemoval(path), -+ }) -+} -+ -+// SetLinuxMemoryLimit records setting the memory limit for a container. -+func (a *ContainerAdjustment) SetLinuxMemoryLimit(value int64) { -+ a.initLinuxResourcesMemory() -+ a.Linux.Resources.Memory.Limit = Int64(value) -+} -+ -+// SetLinuxMemoryReservation records setting the memory reservation for a container. -+func (a *ContainerAdjustment) SetLinuxMemoryReservation(value int64) { -+ a.initLinuxResourcesMemory() -+ a.Linux.Resources.Memory.Reservation = Int64(value) -+} -+ -+// SetLinuxMemorySwap records records setting the memory swap limit for a container. -+func (a *ContainerAdjustment) SetLinuxMemorySwap(value int64) { -+ a.initLinuxResourcesMemory() -+ a.Linux.Resources.Memory.Swap = Int64(value) -+} -+ -+// SetLinuxMemoryKernel records setting the memory kernel limit for a container. -+func (a *ContainerAdjustment) SetLinuxMemoryKernel(value int64) { -+ a.initLinuxResourcesMemory() -+ a.Linux.Resources.Memory.Kernel = Int64(value) -+} -+ -+// SetLinuxMemoryKernelTCP records setting the memory kernel TCP limit for a container. -+func (a *ContainerAdjustment) SetLinuxMemoryKernelTCP(value int64) { -+ a.initLinuxResourcesMemory() -+ a.Linux.Resources.Memory.KernelTcp = Int64(value) -+} -+ -+// SetLinuxMemorySwappiness records setting the memory swappiness for a container. -+func (a *ContainerAdjustment) SetLinuxMemorySwappiness(value uint64) { -+ a.initLinuxResourcesMemory() -+ a.Linux.Resources.Memory.Swappiness = UInt64(value) -+} -+ -+// SetLinuxMemoryDisableOomKiller records disabling the OOM killer for a container. -+func (a *ContainerAdjustment) SetLinuxMemoryDisableOomKiller() { -+ a.initLinuxResourcesMemory() -+ a.Linux.Resources.Memory.DisableOomKiller = Bool(true) -+} -+ -+// SetLinuxMemoryUseHierarchy records enabling hierarchical memory accounting for a container. -+func (a *ContainerAdjustment) SetLinuxMemoryUseHierarchy() { -+ a.initLinuxResourcesMemory() -+ a.Linux.Resources.Memory.UseHierarchy = Bool(true) -+} -+ -+// SetLinuxCPUShares records setting the scheduler's CPU shares for a container. -+func (a *ContainerAdjustment) SetLinuxCPUShares(value uint64) { -+ a.initLinuxResourcesCPU() -+ a.Linux.Resources.Cpu.Shares = UInt64(value) -+} -+ -+// SetLinuxCPUQuota records setting the scheduler's CPU quota for a container. -+func (a *ContainerAdjustment) SetLinuxCPUQuota(value int64) { -+ a.initLinuxResourcesCPU() -+ a.Linux.Resources.Cpu.Quota = Int64(value) -+} -+ -+// SetLinuxCPUPeriod records setting the scheduler's CPU period for a container. -+func (a *ContainerAdjustment) SetLinuxCPUPeriod(value int64) { -+ a.initLinuxResourcesCPU() -+ a.Linux.Resources.Cpu.Period = UInt64(value) -+} -+ -+// SetLinuxCPURealtimeRuntime records setting the scheduler's realtime runtime for a container. -+func (a *ContainerAdjustment) SetLinuxCPURealtimeRuntime(value int64) { -+ a.initLinuxResourcesCPU() -+ a.Linux.Resources.Cpu.RealtimeRuntime = Int64(value) -+} -+ -+// SetLinuxCPURealtimePeriod records setting the scheduler's realtime period for a container. -+func (a *ContainerAdjustment) SetLinuxCPURealtimePeriod(value uint64) { -+ a.initLinuxResourcesCPU() -+ a.Linux.Resources.Cpu.RealtimePeriod = UInt64(value) -+} -+ -+// SetLinuxCPUSetCPUs records setting the cpuset CPUs for a container. -+func (a *ContainerAdjustment) SetLinuxCPUSetCPUs(value string) { -+ a.initLinuxResourcesCPU() -+ a.Linux.Resources.Cpu.Cpus = value -+} -+ -+// SetLinuxCPUSetMems records setting the cpuset memory for a container. -+func (a *ContainerAdjustment) SetLinuxCPUSetMems(value string) { -+ a.initLinuxResourcesCPU() -+ a.Linux.Resources.Cpu.Mems = value -+} -+ -+// AddLinuxHugepageLimit records adding a hugepage limit for a container. -+func (a *ContainerAdjustment) AddLinuxHugepageLimit(pageSize string, value uint64) { -+ a.initLinuxResources() -+ a.Linux.Resources.HugepageLimits = append(a.Linux.Resources.HugepageLimits, -+ &HugepageLimit{ -+ PageSize: pageSize, -+ Limit: value, -+ }) -+} -+ -+// SetLinuxBlockIOClass records setting the Block I/O class for a container. -+func (a *ContainerAdjustment) SetLinuxBlockIOClass(value string) { -+ a.initLinuxResources() -+ a.Linux.Resources.BlockioClass = String(value) -+} -+ -+// SetLinuxRDTClass records setting the RDT class for a container. -+func (a *ContainerAdjustment) SetLinuxRDTClass(value string) { -+ a.initLinuxResources() -+ a.Linux.Resources.RdtClass = String(value) -+} -+ -+// AddLinuxUnified sets a cgroupv2 unified resource. -+func (a *ContainerAdjustment) AddLinuxUnified(key, value string) { -+ a.initLinuxResourcesUnified() -+ a.Linux.Resources.Unified[key] = value -+} -+ -+// SetLinuxCgroupsPath records setting the cgroups path for a container. -+func (a *ContainerAdjustment) SetLinuxCgroupsPath(value string) { -+ a.initLinux() -+ a.Linux.CgroupsPath = value -+} -+ -+// -+// Initializing a container adjustment and container update. -+// -+ -+func (a *ContainerAdjustment) initAnnotations() { -+ if a.Annotations == nil { -+ a.Annotations = make(map[string]string) -+ } -+} -+ -+func (a *ContainerAdjustment) initHooks() { -+ if a.Hooks == nil { -+ a.Hooks = &Hooks{} -+ } -+} -+ -+func (a *ContainerAdjustment) initRlimits() { -+ if a.Rlimits == nil { -+ a.Rlimits = []*POSIXRlimit{} -+ } -+} -+ -+func (a *ContainerAdjustment) initLinux() { -+ if a.Linux == nil { -+ a.Linux = &LinuxContainerAdjustment{} -+ } -+} -+ -+func (a *ContainerAdjustment) initLinuxResources() { -+ a.initLinux() -+ if a.Linux.Resources == nil { -+ a.Linux.Resources = &LinuxResources{} -+ } -+} -+ -+func (a *ContainerAdjustment) initLinuxResourcesMemory() { -+ a.initLinuxResources() -+ if a.Linux.Resources.Memory == nil { -+ a.Linux.Resources.Memory = &LinuxMemory{} -+ } -+} -+ -+func (a *ContainerAdjustment) initLinuxResourcesCPU() { -+ a.initLinuxResources() -+ if a.Linux.Resources.Cpu == nil { -+ a.Linux.Resources.Cpu = &LinuxCPU{} -+ } -+} -+ -+func (a *ContainerAdjustment) initLinuxResourcesUnified() { -+ a.initLinuxResources() -+ if a.Linux.Resources.Unified == nil { -+ a.Linux.Resources.Unified = make(map[string]string) -+ } -+} -diff --git a/vendor/github.com/containerd/nri/pkg/api/api.pb.go b/vendor/github.com/containerd/nri/pkg/api/api.pb.go -new file mode 100755 -index 0000000..d06c02e ---- /dev/null -+++ b/vendor/github.com/containerd/nri/pkg/api/api.pb.go -@@ -0,0 +1,4402 @@ -+// -+//Copyright The containerd 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. -+ -+// Code generated by protoc-gen-go. DO NOT EDIT. -+// versions: -+// protoc-gen-go v1.28.1 -+// protoc v3.20.1 -+// source: pkg/api/api.proto -+ -+package api -+ -+import ( -+ protoreflect "google.golang.org/protobuf/reflect/protoreflect" -+ protoimpl "google.golang.org/protobuf/runtime/protoimpl" -+ reflect "reflect" -+ sync "sync" -+) -+ -+const ( -+ // Verify that this generated code is sufficiently up-to-date. -+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) -+ // Verify that runtime/protoimpl is sufficiently up-to-date. -+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -+) -+ -+// Events that plugins can subscribe to in ConfigureResponse. -+type Event int32 -+ -+const ( -+ Event_UNKNOWN Event = 0 -+ Event_RUN_POD_SANDBOX Event = 1 -+ Event_STOP_POD_SANDBOX Event = 2 -+ Event_REMOVE_POD_SANDBOX Event = 3 -+ Event_CREATE_CONTAINER Event = 4 -+ Event_POST_CREATE_CONTAINER Event = 5 -+ Event_START_CONTAINER Event = 6 -+ Event_POST_START_CONTAINER Event = 7 -+ Event_UPDATE_CONTAINER Event = 8 -+ Event_POST_UPDATE_CONTAINER Event = 9 -+ Event_STOP_CONTAINER Event = 10 -+ Event_REMOVE_CONTAINER Event = 11 -+ Event_LAST Event = 12 -+) -+ -+// Enum value maps for Event. -+var ( -+ Event_name = map[int32]string{ -+ 0: "UNKNOWN", -+ 1: "RUN_POD_SANDBOX", -+ 2: "STOP_POD_SANDBOX", -+ 3: "REMOVE_POD_SANDBOX", -+ 4: "CREATE_CONTAINER", -+ 5: "POST_CREATE_CONTAINER", -+ 6: "START_CONTAINER", -+ 7: "POST_START_CONTAINER", -+ 8: "UPDATE_CONTAINER", -+ 9: "POST_UPDATE_CONTAINER", -+ 10: "STOP_CONTAINER", -+ 11: "REMOVE_CONTAINER", -+ 12: "LAST", -+ } -+ Event_value = map[string]int32{ -+ "UNKNOWN": 0, -+ "RUN_POD_SANDBOX": 1, -+ "STOP_POD_SANDBOX": 2, -+ "REMOVE_POD_SANDBOX": 3, -+ "CREATE_CONTAINER": 4, -+ "POST_CREATE_CONTAINER": 5, -+ "START_CONTAINER": 6, -+ "POST_START_CONTAINER": 7, -+ "UPDATE_CONTAINER": 8, -+ "POST_UPDATE_CONTAINER": 9, -+ "STOP_CONTAINER": 10, -+ "REMOVE_CONTAINER": 11, -+ "LAST": 12, -+ } -+) -+ -+func (x Event) Enum() *Event { -+ p := new(Event) -+ *p = x -+ return p -+} -+ -+func (x Event) String() string { -+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -+} -+ -+func (Event) Descriptor() protoreflect.EnumDescriptor { -+ return file_pkg_api_api_proto_enumTypes[0].Descriptor() -+} -+ -+func (Event) Type() protoreflect.EnumType { -+ return &file_pkg_api_api_proto_enumTypes[0] -+} -+ -+func (x Event) Number() protoreflect.EnumNumber { -+ return protoreflect.EnumNumber(x) -+} -+ -+// Deprecated: Use Event.Descriptor instead. -+func (Event) EnumDescriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{0} -+} -+ -+// Possible container states. -+type ContainerState int32 -+ -+const ( -+ ContainerState_CONTAINER_UNKNOWN ContainerState = 0 -+ ContainerState_CONTAINER_CREATED ContainerState = 1 -+ ContainerState_CONTAINER_PAUSED ContainerState = 2 // is this useful/necessary ? -+ ContainerState_CONTAINER_RUNNING ContainerState = 3 -+ ContainerState_CONTAINER_STOPPED ContainerState = 4 -+) -+ -+// Enum value maps for ContainerState. -+var ( -+ ContainerState_name = map[int32]string{ -+ 0: "CONTAINER_UNKNOWN", -+ 1: "CONTAINER_CREATED", -+ 2: "CONTAINER_PAUSED", -+ 3: "CONTAINER_RUNNING", -+ 4: "CONTAINER_STOPPED", -+ } -+ ContainerState_value = map[string]int32{ -+ "CONTAINER_UNKNOWN": 0, -+ "CONTAINER_CREATED": 1, -+ "CONTAINER_PAUSED": 2, -+ "CONTAINER_RUNNING": 3, -+ "CONTAINER_STOPPED": 4, -+ } -+) -+ -+func (x ContainerState) Enum() *ContainerState { -+ p := new(ContainerState) -+ *p = x -+ return p -+} -+ -+func (x ContainerState) String() string { -+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -+} -+ -+func (ContainerState) Descriptor() protoreflect.EnumDescriptor { -+ return file_pkg_api_api_proto_enumTypes[1].Descriptor() -+} -+ -+func (ContainerState) Type() protoreflect.EnumType { -+ return &file_pkg_api_api_proto_enumTypes[1] -+} -+ -+func (x ContainerState) Number() protoreflect.EnumNumber { -+ return protoreflect.EnumNumber(x) -+} -+ -+// Deprecated: Use ContainerState.Descriptor instead. -+func (ContainerState) EnumDescriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{1} -+} -+ -+type RegisterPluginRequest struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ // Name of the plugin to register. -+ PluginName string `protobuf:"bytes,1,opt,name=plugin_name,json=pluginName,proto3" json:"plugin_name,omitempty"` -+ // Plugin invocation index. Plugins are called in ascending index order. -+ PluginIdx string `protobuf:"bytes,2,opt,name=plugin_idx,json=pluginIdx,proto3" json:"plugin_idx,omitempty"` -+} -+ -+func (x *RegisterPluginRequest) Reset() { -+ *x = RegisterPluginRequest{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[0] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *RegisterPluginRequest) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*RegisterPluginRequest) ProtoMessage() {} -+ -+func (x *RegisterPluginRequest) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[0] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use RegisterPluginRequest.ProtoReflect.Descriptor instead. -+func (*RegisterPluginRequest) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{0} -+} -+ -+func (x *RegisterPluginRequest) GetPluginName() string { -+ if x != nil { -+ return x.PluginName -+ } -+ return "" -+} -+ -+func (x *RegisterPluginRequest) GetPluginIdx() string { -+ if x != nil { -+ return x.PluginIdx -+ } -+ return "" -+} -+ -+type UpdateContainersRequest struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ // List of containers to update. -+ Update []*ContainerUpdate `protobuf:"bytes,1,rep,name=update,proto3" json:"update,omitempty"` -+ // List of containers to evict. -+ Evict []*ContainerEviction `protobuf:"bytes,2,rep,name=evict,proto3" json:"evict,omitempty"` -+} -+ -+func (x *UpdateContainersRequest) Reset() { -+ *x = UpdateContainersRequest{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[1] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *UpdateContainersRequest) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*UpdateContainersRequest) ProtoMessage() {} -+ -+func (x *UpdateContainersRequest) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[1] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use UpdateContainersRequest.ProtoReflect.Descriptor instead. -+func (*UpdateContainersRequest) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{1} -+} -+ -+func (x *UpdateContainersRequest) GetUpdate() []*ContainerUpdate { -+ if x != nil { -+ return x.Update -+ } -+ return nil -+} -+ -+func (x *UpdateContainersRequest) GetEvict() []*ContainerEviction { -+ if x != nil { -+ return x.Evict -+ } -+ return nil -+} -+ -+type UpdateContainersResponse struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ // Containers that the runtime failed to udpate. -+ Failed []*ContainerUpdate `protobuf:"bytes,1,rep,name=failed,proto3" json:"failed,omitempty"` -+} -+ -+func (x *UpdateContainersResponse) Reset() { -+ *x = UpdateContainersResponse{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[2] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *UpdateContainersResponse) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*UpdateContainersResponse) ProtoMessage() {} -+ -+func (x *UpdateContainersResponse) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[2] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use UpdateContainersResponse.ProtoReflect.Descriptor instead. -+func (*UpdateContainersResponse) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{2} -+} -+ -+func (x *UpdateContainersResponse) GetFailed() []*ContainerUpdate { -+ if x != nil { -+ return x.Failed -+ } -+ return nil -+} -+ -+type ConfigureRequest struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ // Any plugin-specific data, if present among the NRI configuration. -+ Config string `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` -+ // Name of the runtime NRI is running in. -+ RuntimeName string `protobuf:"bytes,2,opt,name=runtime_name,json=runtimeName,proto3" json:"runtime_name,omitempty"` -+ // Version of the runtime NRI is running in. -+ RuntimeVersion string `protobuf:"bytes,3,opt,name=runtime_version,json=runtimeVersion,proto3" json:"runtime_version,omitempty"` -+} -+ -+func (x *ConfigureRequest) Reset() { -+ *x = ConfigureRequest{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[3] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *ConfigureRequest) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*ConfigureRequest) ProtoMessage() {} -+ -+func (x *ConfigureRequest) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[3] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use ConfigureRequest.ProtoReflect.Descriptor instead. -+func (*ConfigureRequest) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{3} -+} -+ -+func (x *ConfigureRequest) GetConfig() string { -+ if x != nil { -+ return x.Config -+ } -+ return "" -+} -+ -+func (x *ConfigureRequest) GetRuntimeName() string { -+ if x != nil { -+ return x.RuntimeName -+ } -+ return "" -+} -+ -+func (x *ConfigureRequest) GetRuntimeVersion() string { -+ if x != nil { -+ return x.RuntimeVersion -+ } -+ return "" -+} -+ -+type ConfigureResponse struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ // Events to subscribe the plugin for. Each bit set corresponds to an -+ // enumerated Event. -+ Events int32 `protobuf:"varint,2,opt,name=events,proto3" json:"events,omitempty"` -+} -+ -+func (x *ConfigureResponse) Reset() { -+ *x = ConfigureResponse{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[4] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *ConfigureResponse) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*ConfigureResponse) ProtoMessage() {} -+ -+func (x *ConfigureResponse) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[4] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use ConfigureResponse.ProtoReflect.Descriptor instead. -+func (*ConfigureResponse) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{4} -+} -+ -+func (x *ConfigureResponse) GetEvents() int32 { -+ if x != nil { -+ return x.Events -+ } -+ return 0 -+} -+ -+type SynchronizeRequest struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ // Pods known to the runtime. -+ Pods []*PodSandbox `protobuf:"bytes,1,rep,name=pods,proto3" json:"pods,omitempty"` -+ // Containers known to the runtime. -+ Containers []*Container `protobuf:"bytes,2,rep,name=containers,proto3" json:"containers,omitempty"` -+} -+ -+func (x *SynchronizeRequest) Reset() { -+ *x = SynchronizeRequest{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[5] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *SynchronizeRequest) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*SynchronizeRequest) ProtoMessage() {} -+ -+func (x *SynchronizeRequest) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[5] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use SynchronizeRequest.ProtoReflect.Descriptor instead. -+func (*SynchronizeRequest) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{5} -+} -+ -+func (x *SynchronizeRequest) GetPods() []*PodSandbox { -+ if x != nil { -+ return x.Pods -+ } -+ return nil -+} -+ -+func (x *SynchronizeRequest) GetContainers() []*Container { -+ if x != nil { -+ return x.Containers -+ } -+ return nil -+} -+ -+type SynchronizeResponse struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ // Updates to containers requested by the plugin. -+ Update []*ContainerUpdate `protobuf:"bytes,1,rep,name=update,proto3" json:"update,omitempty"` -+} -+ -+func (x *SynchronizeResponse) Reset() { -+ *x = SynchronizeResponse{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[6] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *SynchronizeResponse) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*SynchronizeResponse) ProtoMessage() {} -+ -+func (x *SynchronizeResponse) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[6] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use SynchronizeResponse.ProtoReflect.Descriptor instead. -+func (*SynchronizeResponse) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{6} -+} -+ -+func (x *SynchronizeResponse) GetUpdate() []*ContainerUpdate { -+ if x != nil { -+ return x.Update -+ } -+ return nil -+} -+ -+type CreateContainerRequest struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ // Pod of container being created. -+ Pod *PodSandbox `protobuf:"bytes,1,opt,name=pod,proto3" json:"pod,omitempty"` -+ // Container being created. -+ Container *Container `protobuf:"bytes,2,opt,name=container,proto3" json:"container,omitempty"` -+} -+ -+func (x *CreateContainerRequest) Reset() { -+ *x = CreateContainerRequest{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[7] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *CreateContainerRequest) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*CreateContainerRequest) ProtoMessage() {} -+ -+func (x *CreateContainerRequest) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[7] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use CreateContainerRequest.ProtoReflect.Descriptor instead. -+func (*CreateContainerRequest) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{7} -+} -+ -+func (x *CreateContainerRequest) GetPod() *PodSandbox { -+ if x != nil { -+ return x.Pod -+ } -+ return nil -+} -+ -+func (x *CreateContainerRequest) GetContainer() *Container { -+ if x != nil { -+ return x.Container -+ } -+ return nil -+} -+ -+type CreateContainerResponse struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ // Requested adjustments to container being created. -+ Adjust *ContainerAdjustment `protobuf:"bytes,1,opt,name=adjust,proto3" json:"adjust,omitempty"` -+ // Requested updates to other existing containers. -+ Update []*ContainerUpdate `protobuf:"bytes,2,rep,name=update,proto3" json:"update,omitempty"` -+ // Requested eviction of existing containers. -+ Evict []*ContainerEviction `protobuf:"bytes,3,rep,name=evict,proto3" json:"evict,omitempty"` -+} -+ -+func (x *CreateContainerResponse) Reset() { -+ *x = CreateContainerResponse{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[8] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *CreateContainerResponse) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*CreateContainerResponse) ProtoMessage() {} -+ -+func (x *CreateContainerResponse) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[8] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use CreateContainerResponse.ProtoReflect.Descriptor instead. -+func (*CreateContainerResponse) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{8} -+} -+ -+func (x *CreateContainerResponse) GetAdjust() *ContainerAdjustment { -+ if x != nil { -+ return x.Adjust -+ } -+ return nil -+} -+ -+func (x *CreateContainerResponse) GetUpdate() []*ContainerUpdate { -+ if x != nil { -+ return x.Update -+ } -+ return nil -+} -+ -+func (x *CreateContainerResponse) GetEvict() []*ContainerEviction { -+ if x != nil { -+ return x.Evict -+ } -+ return nil -+} -+ -+type UpdateContainerRequest struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ // Pod of container being updated. -+ Pod *PodSandbox `protobuf:"bytes,1,opt,name=pod,proto3" json:"pod,omitempty"` -+ // Container being updated. -+ Container *Container `protobuf:"bytes,2,opt,name=container,proto3" json:"container,omitempty"` -+ // Resources to update. -+ LinuxResources *LinuxResources `protobuf:"bytes,3,opt,name=linux_resources,json=linuxResources,proto3" json:"linux_resources,omitempty"` -+} -+ -+func (x *UpdateContainerRequest) Reset() { -+ *x = UpdateContainerRequest{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[9] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *UpdateContainerRequest) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*UpdateContainerRequest) ProtoMessage() {} -+ -+func (x *UpdateContainerRequest) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[9] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use UpdateContainerRequest.ProtoReflect.Descriptor instead. -+func (*UpdateContainerRequest) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{9} -+} -+ -+func (x *UpdateContainerRequest) GetPod() *PodSandbox { -+ if x != nil { -+ return x.Pod -+ } -+ return nil -+} -+ -+func (x *UpdateContainerRequest) GetContainer() *Container { -+ if x != nil { -+ return x.Container -+ } -+ return nil -+} -+ -+func (x *UpdateContainerRequest) GetLinuxResources() *LinuxResources { -+ if x != nil { -+ return x.LinuxResources -+ } -+ return nil -+} -+ -+type UpdateContainerResponse struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ // Requested updates to containers. -+ Update []*ContainerUpdate `protobuf:"bytes,1,rep,name=update,proto3" json:"update,omitempty"` -+ // Requested eviction of containers. -+ Evict []*ContainerEviction `protobuf:"bytes,2,rep,name=evict,proto3" json:"evict,omitempty"` -+} -+ -+func (x *UpdateContainerResponse) Reset() { -+ *x = UpdateContainerResponse{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[10] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *UpdateContainerResponse) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*UpdateContainerResponse) ProtoMessage() {} -+ -+func (x *UpdateContainerResponse) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[10] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use UpdateContainerResponse.ProtoReflect.Descriptor instead. -+func (*UpdateContainerResponse) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{10} -+} -+ -+func (x *UpdateContainerResponse) GetUpdate() []*ContainerUpdate { -+ if x != nil { -+ return x.Update -+ } -+ return nil -+} -+ -+func (x *UpdateContainerResponse) GetEvict() []*ContainerEviction { -+ if x != nil { -+ return x.Evict -+ } -+ return nil -+} -+ -+type StopContainerRequest struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ // Pod of container being stopped. -+ Pod *PodSandbox `protobuf:"bytes,1,opt,name=pod,proto3" json:"pod,omitempty"` -+ // Container being stopped. -+ Container *Container `protobuf:"bytes,2,opt,name=container,proto3" json:"container,omitempty"` -+} -+ -+func (x *StopContainerRequest) Reset() { -+ *x = StopContainerRequest{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[11] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *StopContainerRequest) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*StopContainerRequest) ProtoMessage() {} -+ -+func (x *StopContainerRequest) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[11] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use StopContainerRequest.ProtoReflect.Descriptor instead. -+func (*StopContainerRequest) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{11} -+} -+ -+func (x *StopContainerRequest) GetPod() *PodSandbox { -+ if x != nil { -+ return x.Pod -+ } -+ return nil -+} -+ -+func (x *StopContainerRequest) GetContainer() *Container { -+ if x != nil { -+ return x.Container -+ } -+ return nil -+} -+ -+type StopContainerResponse struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ // Requested updates to containers. -+ Update []*ContainerUpdate `protobuf:"bytes,1,rep,name=update,proto3" json:"update,omitempty"` -+} -+ -+func (x *StopContainerResponse) Reset() { -+ *x = StopContainerResponse{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[12] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *StopContainerResponse) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*StopContainerResponse) ProtoMessage() {} -+ -+func (x *StopContainerResponse) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[12] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use StopContainerResponse.ProtoReflect.Descriptor instead. -+func (*StopContainerResponse) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{12} -+} -+ -+func (x *StopContainerResponse) GetUpdate() []*ContainerUpdate { -+ if x != nil { -+ return x.Update -+ } -+ return nil -+} -+ -+type StateChangeEvent struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ // Event type of notification. -+ Event Event `protobuf:"varint,1,opt,name=event,proto3,enum=nri.pkg.api.v1alpha1.Event" json:"event,omitempty"` -+ // Pod this notification is sent for. If this event is related to a container, -+ // pod is set to the pod of the container. -+ Pod *PodSandbox `protobuf:"bytes,2,opt,name=pod,proto3" json:"pod,omitempty"` -+ // Container this notification is sent for. If the event is related to a pod, -+ // container is nil. -+ Container *Container `protobuf:"bytes,3,opt,name=container,proto3" json:"container,omitempty"` -+} -+ -+func (x *StateChangeEvent) Reset() { -+ *x = StateChangeEvent{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[13] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *StateChangeEvent) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*StateChangeEvent) ProtoMessage() {} -+ -+func (x *StateChangeEvent) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[13] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use StateChangeEvent.ProtoReflect.Descriptor instead. -+func (*StateChangeEvent) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{13} -+} -+ -+func (x *StateChangeEvent) GetEvent() Event { -+ if x != nil { -+ return x.Event -+ } -+ return Event_UNKNOWN -+} -+ -+func (x *StateChangeEvent) GetPod() *PodSandbox { -+ if x != nil { -+ return x.Pod -+ } -+ return nil -+} -+ -+func (x *StateChangeEvent) GetContainer() *Container { -+ if x != nil { -+ return x.Container -+ } -+ return nil -+} -+ -+// Empty response for those *Requests that are semantically events. -+type Empty struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+} -+ -+func (x *Empty) Reset() { -+ *x = Empty{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[14] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *Empty) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*Empty) ProtoMessage() {} -+ -+func (x *Empty) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[14] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use Empty.ProtoReflect.Descriptor instead. -+func (*Empty) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{14} -+} -+ -+// Pod metadata that is considered relevant for a plugin. -+type PodSandbox struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` -+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` -+ Uid string `protobuf:"bytes,3,opt,name=uid,proto3" json:"uid,omitempty"` -+ Namespace string `protobuf:"bytes,4,opt,name=namespace,proto3" json:"namespace,omitempty"` -+ Labels map[string]string `protobuf:"bytes,5,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -+ Annotations map[string]string `protobuf:"bytes,6,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -+ RuntimeHandler string `protobuf:"bytes,7,opt,name=runtime_handler,json=runtimeHandler,proto3" json:"runtime_handler,omitempty"` -+ Linux *LinuxPodSandbox `protobuf:"bytes,8,opt,name=linux,proto3" json:"linux,omitempty"` -+ Pid uint32 `protobuf:"varint,9,opt,name=pid,proto3" json:"pid,omitempty"` // for NRI v1 emulation -+} -+ -+func (x *PodSandbox) Reset() { -+ *x = PodSandbox{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[15] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *PodSandbox) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*PodSandbox) ProtoMessage() {} -+ -+func (x *PodSandbox) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[15] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use PodSandbox.ProtoReflect.Descriptor instead. -+func (*PodSandbox) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{15} -+} -+ -+func (x *PodSandbox) GetId() string { -+ if x != nil { -+ return x.Id -+ } -+ return "" -+} -+ -+func (x *PodSandbox) GetName() string { -+ if x != nil { -+ return x.Name -+ } -+ return "" -+} -+ -+func (x *PodSandbox) GetUid() string { -+ if x != nil { -+ return x.Uid -+ } -+ return "" -+} -+ -+func (x *PodSandbox) GetNamespace() string { -+ if x != nil { -+ return x.Namespace -+ } -+ return "" -+} -+ -+func (x *PodSandbox) GetLabels() map[string]string { -+ if x != nil { -+ return x.Labels -+ } -+ return nil -+} -+ -+func (x *PodSandbox) GetAnnotations() map[string]string { -+ if x != nil { -+ return x.Annotations -+ } -+ return nil -+} -+ -+func (x *PodSandbox) GetRuntimeHandler() string { -+ if x != nil { -+ return x.RuntimeHandler -+ } -+ return "" -+} -+ -+func (x *PodSandbox) GetLinux() *LinuxPodSandbox { -+ if x != nil { -+ return x.Linux -+ } -+ return nil -+} -+ -+func (x *PodSandbox) GetPid() uint32 { -+ if x != nil { -+ return x.Pid -+ } -+ return 0 -+} -+ -+// PodSandbox linux-specific metadata -+type LinuxPodSandbox struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ PodOverhead *LinuxResources `protobuf:"bytes,1,opt,name=pod_overhead,json=podOverhead,proto3" json:"pod_overhead,omitempty"` -+ PodResources *LinuxResources `protobuf:"bytes,2,opt,name=pod_resources,json=podResources,proto3" json:"pod_resources,omitempty"` -+ CgroupParent string `protobuf:"bytes,3,opt,name=cgroup_parent,json=cgroupParent,proto3" json:"cgroup_parent,omitempty"` -+ CgroupsPath string `protobuf:"bytes,4,opt,name=cgroups_path,json=cgroupsPath,proto3" json:"cgroups_path,omitempty"` // for NRI v1 emulation -+ Namespaces []*LinuxNamespace `protobuf:"bytes,5,rep,name=namespaces,proto3" json:"namespaces,omitempty"` // for NRI v1 emulation -+ Resources *LinuxResources `protobuf:"bytes,6,opt,name=resources,proto3" json:"resources,omitempty"` // for NRI v1 emulation -+} -+ -+func (x *LinuxPodSandbox) Reset() { -+ *x = LinuxPodSandbox{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[16] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *LinuxPodSandbox) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*LinuxPodSandbox) ProtoMessage() {} -+ -+func (x *LinuxPodSandbox) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[16] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use LinuxPodSandbox.ProtoReflect.Descriptor instead. -+func (*LinuxPodSandbox) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{16} -+} -+ -+func (x *LinuxPodSandbox) GetPodOverhead() *LinuxResources { -+ if x != nil { -+ return x.PodOverhead -+ } -+ return nil -+} -+ -+func (x *LinuxPodSandbox) GetPodResources() *LinuxResources { -+ if x != nil { -+ return x.PodResources -+ } -+ return nil -+} -+ -+func (x *LinuxPodSandbox) GetCgroupParent() string { -+ if x != nil { -+ return x.CgroupParent -+ } -+ return "" -+} -+ -+func (x *LinuxPodSandbox) GetCgroupsPath() string { -+ if x != nil { -+ return x.CgroupsPath -+ } -+ return "" -+} -+ -+func (x *LinuxPodSandbox) GetNamespaces() []*LinuxNamespace { -+ if x != nil { -+ return x.Namespaces -+ } -+ return nil -+} -+ -+func (x *LinuxPodSandbox) GetResources() *LinuxResources { -+ if x != nil { -+ return x.Resources -+ } -+ return nil -+} -+ -+// Container metadata that is considered relevant for a plugin. -+type Container struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` -+ PodSandboxId string `protobuf:"bytes,2,opt,name=pod_sandbox_id,json=podSandboxId,proto3" json:"pod_sandbox_id,omitempty"` -+ Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` -+ State ContainerState `protobuf:"varint,4,opt,name=state,proto3,enum=nri.pkg.api.v1alpha1.ContainerState" json:"state,omitempty"` -+ Labels map[string]string `protobuf:"bytes,5,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -+ Annotations map[string]string `protobuf:"bytes,6,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -+ Args []string `protobuf:"bytes,7,rep,name=args,proto3" json:"args,omitempty"` -+ Env []string `protobuf:"bytes,8,rep,name=env,proto3" json:"env,omitempty"` -+ Mounts []*Mount `protobuf:"bytes,9,rep,name=mounts,proto3" json:"mounts,omitempty"` -+ Hooks *Hooks `protobuf:"bytes,10,opt,name=hooks,proto3" json:"hooks,omitempty"` -+ Linux *LinuxContainer `protobuf:"bytes,11,opt,name=linux,proto3" json:"linux,omitempty"` -+ Pid uint32 `protobuf:"varint,12,opt,name=pid,proto3" json:"pid,omitempty"` // for NRI v1 emulation -+ Rlimits []*POSIXRlimit `protobuf:"bytes,13,rep,name=rlimits,proto3" json:"rlimits,omitempty"` -+} -+ -+func (x *Container) Reset() { -+ *x = Container{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[17] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *Container) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*Container) ProtoMessage() {} -+ -+func (x *Container) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[17] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use Container.ProtoReflect.Descriptor instead. -+func (*Container) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{17} -+} -+ -+func (x *Container) GetId() string { -+ if x != nil { -+ return x.Id -+ } -+ return "" -+} -+ -+func (x *Container) GetPodSandboxId() string { -+ if x != nil { -+ return x.PodSandboxId -+ } -+ return "" -+} -+ -+func (x *Container) GetName() string { -+ if x != nil { -+ return x.Name -+ } -+ return "" -+} -+ -+func (x *Container) GetState() ContainerState { -+ if x != nil { -+ return x.State -+ } -+ return ContainerState_CONTAINER_UNKNOWN -+} -+ -+func (x *Container) GetLabels() map[string]string { -+ if x != nil { -+ return x.Labels -+ } -+ return nil -+} -+ -+func (x *Container) GetAnnotations() map[string]string { -+ if x != nil { -+ return x.Annotations -+ } -+ return nil -+} -+ -+func (x *Container) GetArgs() []string { -+ if x != nil { -+ return x.Args -+ } -+ return nil -+} -+ -+func (x *Container) GetEnv() []string { -+ if x != nil { -+ return x.Env -+ } -+ return nil -+} -+ -+func (x *Container) GetMounts() []*Mount { -+ if x != nil { -+ return x.Mounts -+ } -+ return nil -+} -+ -+func (x *Container) GetHooks() *Hooks { -+ if x != nil { -+ return x.Hooks -+ } -+ return nil -+} -+ -+func (x *Container) GetLinux() *LinuxContainer { -+ if x != nil { -+ return x.Linux -+ } -+ return nil -+} -+ -+func (x *Container) GetPid() uint32 { -+ if x != nil { -+ return x.Pid -+ } -+ return 0 -+} -+ -+func (x *Container) GetRlimits() []*POSIXRlimit { -+ if x != nil { -+ return x.Rlimits -+ } -+ return nil -+} -+ -+// A container mount. -+type Mount struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ Destination string `protobuf:"bytes,1,opt,name=destination,proto3" json:"destination,omitempty"` -+ Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` -+ Source string `protobuf:"bytes,3,opt,name=source,proto3" json:"source,omitempty"` -+ Options []string `protobuf:"bytes,4,rep,name=options,proto3" json:"options,omitempty"` -+} -+ -+func (x *Mount) Reset() { -+ *x = Mount{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[18] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *Mount) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*Mount) ProtoMessage() {} -+ -+func (x *Mount) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[18] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use Mount.ProtoReflect.Descriptor instead. -+func (*Mount) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{18} -+} -+ -+func (x *Mount) GetDestination() string { -+ if x != nil { -+ return x.Destination -+ } -+ return "" -+} -+ -+func (x *Mount) GetType() string { -+ if x != nil { -+ return x.Type -+ } -+ return "" -+} -+ -+func (x *Mount) GetSource() string { -+ if x != nil { -+ return x.Source -+ } -+ return "" -+} -+ -+func (x *Mount) GetOptions() []string { -+ if x != nil { -+ return x.Options -+ } -+ return nil -+} -+ -+// Container OCI hooks. -+type Hooks struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ Prestart []*Hook `protobuf:"bytes,1,rep,name=prestart,proto3" json:"prestart,omitempty"` -+ CreateRuntime []*Hook `protobuf:"bytes,2,rep,name=create_runtime,json=createRuntime,proto3" json:"create_runtime,omitempty"` -+ CreateContainer []*Hook `protobuf:"bytes,3,rep,name=create_container,json=createContainer,proto3" json:"create_container,omitempty"` -+ StartContainer []*Hook `protobuf:"bytes,4,rep,name=start_container,json=startContainer,proto3" json:"start_container,omitempty"` -+ Poststart []*Hook `protobuf:"bytes,5,rep,name=poststart,proto3" json:"poststart,omitempty"` -+ Poststop []*Hook `protobuf:"bytes,6,rep,name=poststop,proto3" json:"poststop,omitempty"` -+} -+ -+func (x *Hooks) Reset() { -+ *x = Hooks{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[19] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *Hooks) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*Hooks) ProtoMessage() {} -+ -+func (x *Hooks) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[19] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use Hooks.ProtoReflect.Descriptor instead. -+func (*Hooks) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{19} -+} -+ -+func (x *Hooks) GetPrestart() []*Hook { -+ if x != nil { -+ return x.Prestart -+ } -+ return nil -+} -+ -+func (x *Hooks) GetCreateRuntime() []*Hook { -+ if x != nil { -+ return x.CreateRuntime -+ } -+ return nil -+} -+ -+func (x *Hooks) GetCreateContainer() []*Hook { -+ if x != nil { -+ return x.CreateContainer -+ } -+ return nil -+} -+ -+func (x *Hooks) GetStartContainer() []*Hook { -+ if x != nil { -+ return x.StartContainer -+ } -+ return nil -+} -+ -+func (x *Hooks) GetPoststart() []*Hook { -+ if x != nil { -+ return x.Poststart -+ } -+ return nil -+} -+ -+func (x *Hooks) GetPoststop() []*Hook { -+ if x != nil { -+ return x.Poststop -+ } -+ return nil -+} -+ -+// One OCI hook. -+type Hook struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` -+ Args []string `protobuf:"bytes,2,rep,name=args,proto3" json:"args,omitempty"` -+ Env []string `protobuf:"bytes,3,rep,name=env,proto3" json:"env,omitempty"` -+ Timeout *OptionalInt `protobuf:"bytes,4,opt,name=timeout,proto3" json:"timeout,omitempty"` -+} -+ -+func (x *Hook) Reset() { -+ *x = Hook{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[20] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *Hook) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*Hook) ProtoMessage() {} -+ -+func (x *Hook) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[20] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use Hook.ProtoReflect.Descriptor instead. -+func (*Hook) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{20} -+} -+ -+func (x *Hook) GetPath() string { -+ if x != nil { -+ return x.Path -+ } -+ return "" -+} -+ -+func (x *Hook) GetArgs() []string { -+ if x != nil { -+ return x.Args -+ } -+ return nil -+} -+ -+func (x *Hook) GetEnv() []string { -+ if x != nil { -+ return x.Env -+ } -+ return nil -+} -+ -+func (x *Hook) GetTimeout() *OptionalInt { -+ if x != nil { -+ return x.Timeout -+ } -+ return nil -+} -+ -+// Container (linux) metadata. -+type LinuxContainer struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ Namespaces []*LinuxNamespace `protobuf:"bytes,1,rep,name=namespaces,proto3" json:"namespaces,omitempty"` -+ Devices []*LinuxDevice `protobuf:"bytes,2,rep,name=devices,proto3" json:"devices,omitempty"` -+ Resources *LinuxResources `protobuf:"bytes,3,opt,name=resources,proto3" json:"resources,omitempty"` -+ OomScoreAdj *OptionalInt `protobuf:"bytes,4,opt,name=oom_score_adj,json=oomScoreAdj,proto3" json:"oom_score_adj,omitempty"` -+ CgroupsPath string `protobuf:"bytes,5,opt,name=cgroups_path,json=cgroupsPath,proto3" json:"cgroups_path,omitempty"` -+} -+ -+func (x *LinuxContainer) Reset() { -+ *x = LinuxContainer{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[21] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *LinuxContainer) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*LinuxContainer) ProtoMessage() {} -+ -+func (x *LinuxContainer) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[21] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use LinuxContainer.ProtoReflect.Descriptor instead. -+func (*LinuxContainer) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{21} -+} -+ -+func (x *LinuxContainer) GetNamespaces() []*LinuxNamespace { -+ if x != nil { -+ return x.Namespaces -+ } -+ return nil -+} -+ -+func (x *LinuxContainer) GetDevices() []*LinuxDevice { -+ if x != nil { -+ return x.Devices -+ } -+ return nil -+} -+ -+func (x *LinuxContainer) GetResources() *LinuxResources { -+ if x != nil { -+ return x.Resources -+ } -+ return nil -+} -+ -+func (x *LinuxContainer) GetOomScoreAdj() *OptionalInt { -+ if x != nil { -+ return x.OomScoreAdj -+ } -+ return nil -+} -+ -+func (x *LinuxContainer) GetCgroupsPath() string { -+ if x != nil { -+ return x.CgroupsPath -+ } -+ return "" -+} -+ -+// A linux namespace. -+type LinuxNamespace struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` -+ Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` -+} -+ -+func (x *LinuxNamespace) Reset() { -+ *x = LinuxNamespace{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[22] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *LinuxNamespace) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*LinuxNamespace) ProtoMessage() {} -+ -+func (x *LinuxNamespace) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[22] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use LinuxNamespace.ProtoReflect.Descriptor instead. -+func (*LinuxNamespace) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{22} -+} -+ -+func (x *LinuxNamespace) GetType() string { -+ if x != nil { -+ return x.Type -+ } -+ return "" -+} -+ -+func (x *LinuxNamespace) GetPath() string { -+ if x != nil { -+ return x.Path -+ } -+ return "" -+} -+ -+// A container (linux) device. -+type LinuxDevice struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` -+ Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` -+ Major int64 `protobuf:"varint,3,opt,name=major,proto3" json:"major,omitempty"` -+ Minor int64 `protobuf:"varint,4,opt,name=minor,proto3" json:"minor,omitempty"` -+ FileMode *OptionalFileMode `protobuf:"bytes,5,opt,name=file_mode,json=fileMode,proto3" json:"file_mode,omitempty"` -+ Uid *OptionalUInt32 `protobuf:"bytes,6,opt,name=uid,proto3" json:"uid,omitempty"` -+ Gid *OptionalUInt32 `protobuf:"bytes,7,opt,name=gid,proto3" json:"gid,omitempty"` -+} -+ -+func (x *LinuxDevice) Reset() { -+ *x = LinuxDevice{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[23] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *LinuxDevice) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*LinuxDevice) ProtoMessage() {} -+ -+func (x *LinuxDevice) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[23] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use LinuxDevice.ProtoReflect.Descriptor instead. -+func (*LinuxDevice) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{23} -+} -+ -+func (x *LinuxDevice) GetPath() string { -+ if x != nil { -+ return x.Path -+ } -+ return "" -+} -+ -+func (x *LinuxDevice) GetType() string { -+ if x != nil { -+ return x.Type -+ } -+ return "" -+} -+ -+func (x *LinuxDevice) GetMajor() int64 { -+ if x != nil { -+ return x.Major -+ } -+ return 0 -+} -+ -+func (x *LinuxDevice) GetMinor() int64 { -+ if x != nil { -+ return x.Minor -+ } -+ return 0 -+} -+ -+func (x *LinuxDevice) GetFileMode() *OptionalFileMode { -+ if x != nil { -+ return x.FileMode -+ } -+ return nil -+} -+ -+func (x *LinuxDevice) GetUid() *OptionalUInt32 { -+ if x != nil { -+ return x.Uid -+ } -+ return nil -+} -+ -+func (x *LinuxDevice) GetGid() *OptionalUInt32 { -+ if x != nil { -+ return x.Gid -+ } -+ return nil -+} -+ -+// A linux device cgroup controller rule. -+type LinuxDeviceCgroup struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ Allow bool `protobuf:"varint,1,opt,name=allow,proto3" json:"allow,omitempty"` -+ Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` -+ Major *OptionalInt64 `protobuf:"bytes,3,opt,name=major,proto3" json:"major,omitempty"` -+ Minor *OptionalInt64 `protobuf:"bytes,4,opt,name=minor,proto3" json:"minor,omitempty"` -+ Access string `protobuf:"bytes,5,opt,name=access,proto3" json:"access,omitempty"` -+} -+ -+func (x *LinuxDeviceCgroup) Reset() { -+ *x = LinuxDeviceCgroup{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[24] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *LinuxDeviceCgroup) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*LinuxDeviceCgroup) ProtoMessage() {} -+ -+func (x *LinuxDeviceCgroup) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[24] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use LinuxDeviceCgroup.ProtoReflect.Descriptor instead. -+func (*LinuxDeviceCgroup) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{24} -+} -+ -+func (x *LinuxDeviceCgroup) GetAllow() bool { -+ if x != nil { -+ return x.Allow -+ } -+ return false -+} -+ -+func (x *LinuxDeviceCgroup) GetType() string { -+ if x != nil { -+ return x.Type -+ } -+ return "" -+} -+ -+func (x *LinuxDeviceCgroup) GetMajor() *OptionalInt64 { -+ if x != nil { -+ return x.Major -+ } -+ return nil -+} -+ -+func (x *LinuxDeviceCgroup) GetMinor() *OptionalInt64 { -+ if x != nil { -+ return x.Minor -+ } -+ return nil -+} -+ -+func (x *LinuxDeviceCgroup) GetAccess() string { -+ if x != nil { -+ return x.Access -+ } -+ return "" -+} -+ -+// Container (linux) resources. -+type LinuxResources struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ Memory *LinuxMemory `protobuf:"bytes,1,opt,name=memory,proto3" json:"memory,omitempty"` -+ Cpu *LinuxCPU `protobuf:"bytes,2,opt,name=cpu,proto3" json:"cpu,omitempty"` -+ HugepageLimits []*HugepageLimit `protobuf:"bytes,3,rep,name=hugepage_limits,json=hugepageLimits,proto3" json:"hugepage_limits,omitempty"` -+ BlockioClass *OptionalString `protobuf:"bytes,4,opt,name=blockio_class,json=blockioClass,proto3" json:"blockio_class,omitempty"` -+ RdtClass *OptionalString `protobuf:"bytes,5,opt,name=rdt_class,json=rdtClass,proto3" json:"rdt_class,omitempty"` -+ Unified map[string]string `protobuf:"bytes,6,rep,name=unified,proto3" json:"unified,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -+ Devices []*LinuxDeviceCgroup `protobuf:"bytes,7,rep,name=devices,proto3" json:"devices,omitempty"` // for NRI v1 emulation -+} -+ -+func (x *LinuxResources) Reset() { -+ *x = LinuxResources{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[25] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *LinuxResources) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*LinuxResources) ProtoMessage() {} -+ -+func (x *LinuxResources) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[25] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use LinuxResources.ProtoReflect.Descriptor instead. -+func (*LinuxResources) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{25} -+} -+ -+func (x *LinuxResources) GetMemory() *LinuxMemory { -+ if x != nil { -+ return x.Memory -+ } -+ return nil -+} -+ -+func (x *LinuxResources) GetCpu() *LinuxCPU { -+ if x != nil { -+ return x.Cpu -+ } -+ return nil -+} -+ -+func (x *LinuxResources) GetHugepageLimits() []*HugepageLimit { -+ if x != nil { -+ return x.HugepageLimits -+ } -+ return nil -+} -+ -+func (x *LinuxResources) GetBlockioClass() *OptionalString { -+ if x != nil { -+ return x.BlockioClass -+ } -+ return nil -+} -+ -+func (x *LinuxResources) GetRdtClass() *OptionalString { -+ if x != nil { -+ return x.RdtClass -+ } -+ return nil -+} -+ -+func (x *LinuxResources) GetUnified() map[string]string { -+ if x != nil { -+ return x.Unified -+ } -+ return nil -+} -+ -+func (x *LinuxResources) GetDevices() []*LinuxDeviceCgroup { -+ if x != nil { -+ return x.Devices -+ } -+ return nil -+} -+ -+// Memory-related parts of (linux) resources. -+type LinuxMemory struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ Limit *OptionalInt64 `protobuf:"bytes,1,opt,name=limit,proto3" json:"limit,omitempty"` -+ Reservation *OptionalInt64 `protobuf:"bytes,2,opt,name=reservation,proto3" json:"reservation,omitempty"` -+ Swap *OptionalInt64 `protobuf:"bytes,3,opt,name=swap,proto3" json:"swap,omitempty"` -+ Kernel *OptionalInt64 `protobuf:"bytes,4,opt,name=kernel,proto3" json:"kernel,omitempty"` -+ KernelTcp *OptionalInt64 `protobuf:"bytes,5,opt,name=kernel_tcp,json=kernelTcp,proto3" json:"kernel_tcp,omitempty"` -+ Swappiness *OptionalUInt64 `protobuf:"bytes,6,opt,name=swappiness,proto3" json:"swappiness,omitempty"` -+ DisableOomKiller *OptionalBool `protobuf:"bytes,7,opt,name=disable_oom_killer,json=disableOomKiller,proto3" json:"disable_oom_killer,omitempty"` -+ UseHierarchy *OptionalBool `protobuf:"bytes,8,opt,name=use_hierarchy,json=useHierarchy,proto3" json:"use_hierarchy,omitempty"` -+} -+ -+func (x *LinuxMemory) Reset() { -+ *x = LinuxMemory{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[26] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *LinuxMemory) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*LinuxMemory) ProtoMessage() {} -+ -+func (x *LinuxMemory) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[26] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use LinuxMemory.ProtoReflect.Descriptor instead. -+func (*LinuxMemory) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{26} -+} -+ -+func (x *LinuxMemory) GetLimit() *OptionalInt64 { -+ if x != nil { -+ return x.Limit -+ } -+ return nil -+} -+ -+func (x *LinuxMemory) GetReservation() *OptionalInt64 { -+ if x != nil { -+ return x.Reservation -+ } -+ return nil -+} -+ -+func (x *LinuxMemory) GetSwap() *OptionalInt64 { -+ if x != nil { -+ return x.Swap -+ } -+ return nil -+} -+ -+func (x *LinuxMemory) GetKernel() *OptionalInt64 { -+ if x != nil { -+ return x.Kernel -+ } -+ return nil -+} -+ -+func (x *LinuxMemory) GetKernelTcp() *OptionalInt64 { -+ if x != nil { -+ return x.KernelTcp -+ } -+ return nil -+} -+ -+func (x *LinuxMemory) GetSwappiness() *OptionalUInt64 { -+ if x != nil { -+ return x.Swappiness -+ } -+ return nil -+} -+ -+func (x *LinuxMemory) GetDisableOomKiller() *OptionalBool { -+ if x != nil { -+ return x.DisableOomKiller -+ } -+ return nil -+} -+ -+func (x *LinuxMemory) GetUseHierarchy() *OptionalBool { -+ if x != nil { -+ return x.UseHierarchy -+ } -+ return nil -+} -+ -+// CPU-related parts of (linux) resources. -+type LinuxCPU struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ Shares *OptionalUInt64 `protobuf:"bytes,1,opt,name=shares,proto3" json:"shares,omitempty"` -+ Quota *OptionalInt64 `protobuf:"bytes,2,opt,name=quota,proto3" json:"quota,omitempty"` -+ Period *OptionalUInt64 `protobuf:"bytes,3,opt,name=period,proto3" json:"period,omitempty"` -+ RealtimeRuntime *OptionalInt64 `protobuf:"bytes,4,opt,name=realtime_runtime,json=realtimeRuntime,proto3" json:"realtime_runtime,omitempty"` -+ RealtimePeriod *OptionalUInt64 `protobuf:"bytes,5,opt,name=realtime_period,json=realtimePeriod,proto3" json:"realtime_period,omitempty"` -+ Cpus string `protobuf:"bytes,6,opt,name=cpus,proto3" json:"cpus,omitempty"` -+ Mems string `protobuf:"bytes,7,opt,name=mems,proto3" json:"mems,omitempty"` -+} -+ -+func (x *LinuxCPU) Reset() { -+ *x = LinuxCPU{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[27] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *LinuxCPU) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*LinuxCPU) ProtoMessage() {} -+ -+func (x *LinuxCPU) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[27] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use LinuxCPU.ProtoReflect.Descriptor instead. -+func (*LinuxCPU) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{27} -+} -+ -+func (x *LinuxCPU) GetShares() *OptionalUInt64 { -+ if x != nil { -+ return x.Shares -+ } -+ return nil -+} -+ -+func (x *LinuxCPU) GetQuota() *OptionalInt64 { -+ if x != nil { -+ return x.Quota -+ } -+ return nil -+} -+ -+func (x *LinuxCPU) GetPeriod() *OptionalUInt64 { -+ if x != nil { -+ return x.Period -+ } -+ return nil -+} -+ -+func (x *LinuxCPU) GetRealtimeRuntime() *OptionalInt64 { -+ if x != nil { -+ return x.RealtimeRuntime -+ } -+ return nil -+} -+ -+func (x *LinuxCPU) GetRealtimePeriod() *OptionalUInt64 { -+ if x != nil { -+ return x.RealtimePeriod -+ } -+ return nil -+} -+ -+func (x *LinuxCPU) GetCpus() string { -+ if x != nil { -+ return x.Cpus -+ } -+ return "" -+} -+ -+func (x *LinuxCPU) GetMems() string { -+ if x != nil { -+ return x.Mems -+ } -+ return "" -+} -+ -+// Container huge page limit. -+type HugepageLimit struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ PageSize string `protobuf:"bytes,1,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` -+ Limit uint64 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` -+} -+ -+func (x *HugepageLimit) Reset() { -+ *x = HugepageLimit{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[28] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *HugepageLimit) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*HugepageLimit) ProtoMessage() {} -+ -+func (x *HugepageLimit) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[28] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use HugepageLimit.ProtoReflect.Descriptor instead. -+func (*HugepageLimit) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{28} -+} -+ -+func (x *HugepageLimit) GetPageSize() string { -+ if x != nil { -+ return x.PageSize -+ } -+ return "" -+} -+ -+func (x *HugepageLimit) GetLimit() uint64 { -+ if x != nil { -+ return x.Limit -+ } -+ return 0 -+} -+ -+// Container rlimits -+type POSIXRlimit struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` -+ Hard uint64 `protobuf:"varint,2,opt,name=hard,proto3" json:"hard,omitempty"` -+ Soft uint64 `protobuf:"varint,3,opt,name=soft,proto3" json:"soft,omitempty"` -+} -+ -+func (x *POSIXRlimit) Reset() { -+ *x = POSIXRlimit{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[29] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *POSIXRlimit) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*POSIXRlimit) ProtoMessage() {} -+ -+func (x *POSIXRlimit) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[29] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use POSIXRlimit.ProtoReflect.Descriptor instead. -+func (*POSIXRlimit) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{29} -+} -+ -+func (x *POSIXRlimit) GetType() string { -+ if x != nil { -+ return x.Type -+ } -+ return "" -+} -+ -+func (x *POSIXRlimit) GetHard() uint64 { -+ if x != nil { -+ return x.Hard -+ } -+ return 0 -+} -+ -+func (x *POSIXRlimit) GetSoft() uint64 { -+ if x != nil { -+ return x.Soft -+ } -+ return 0 -+} -+ -+// Requested adjustments to a container being created. -+type ContainerAdjustment struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ Annotations map[string]string `protobuf:"bytes,2,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -+ Mounts []*Mount `protobuf:"bytes,3,rep,name=mounts,proto3" json:"mounts,omitempty"` -+ Env []*KeyValue `protobuf:"bytes,4,rep,name=env,proto3" json:"env,omitempty"` -+ Hooks *Hooks `protobuf:"bytes,5,opt,name=hooks,proto3" json:"hooks,omitempty"` -+ Linux *LinuxContainerAdjustment `protobuf:"bytes,6,opt,name=linux,proto3" json:"linux,omitempty"` -+ Rlimits []*POSIXRlimit `protobuf:"bytes,7,rep,name=rlimits,proto3" json:"rlimits,omitempty"` -+} -+ -+func (x *ContainerAdjustment) Reset() { -+ *x = ContainerAdjustment{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[30] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *ContainerAdjustment) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*ContainerAdjustment) ProtoMessage() {} -+ -+func (x *ContainerAdjustment) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[30] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use ContainerAdjustment.ProtoReflect.Descriptor instead. -+func (*ContainerAdjustment) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{30} -+} -+ -+func (x *ContainerAdjustment) GetAnnotations() map[string]string { -+ if x != nil { -+ return x.Annotations -+ } -+ return nil -+} -+ -+func (x *ContainerAdjustment) GetMounts() []*Mount { -+ if x != nil { -+ return x.Mounts -+ } -+ return nil -+} -+ -+func (x *ContainerAdjustment) GetEnv() []*KeyValue { -+ if x != nil { -+ return x.Env -+ } -+ return nil -+} -+ -+func (x *ContainerAdjustment) GetHooks() *Hooks { -+ if x != nil { -+ return x.Hooks -+ } -+ return nil -+} -+ -+func (x *ContainerAdjustment) GetLinux() *LinuxContainerAdjustment { -+ if x != nil { -+ return x.Linux -+ } -+ return nil -+} -+ -+func (x *ContainerAdjustment) GetRlimits() []*POSIXRlimit { -+ if x != nil { -+ return x.Rlimits -+ } -+ return nil -+} -+ -+// Adjustments to (linux) resources. -+type LinuxContainerAdjustment struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ Devices []*LinuxDevice `protobuf:"bytes,1,rep,name=devices,proto3" json:"devices,omitempty"` -+ Resources *LinuxResources `protobuf:"bytes,2,opt,name=resources,proto3" json:"resources,omitempty"` -+ CgroupsPath string `protobuf:"bytes,3,opt,name=cgroups_path,json=cgroupsPath,proto3" json:"cgroups_path,omitempty"` -+} -+ -+func (x *LinuxContainerAdjustment) Reset() { -+ *x = LinuxContainerAdjustment{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[31] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *LinuxContainerAdjustment) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*LinuxContainerAdjustment) ProtoMessage() {} -+ -+func (x *LinuxContainerAdjustment) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[31] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use LinuxContainerAdjustment.ProtoReflect.Descriptor instead. -+func (*LinuxContainerAdjustment) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{31} -+} -+ -+func (x *LinuxContainerAdjustment) GetDevices() []*LinuxDevice { -+ if x != nil { -+ return x.Devices -+ } -+ return nil -+} -+ -+func (x *LinuxContainerAdjustment) GetResources() *LinuxResources { -+ if x != nil { -+ return x.Resources -+ } -+ return nil -+} -+ -+func (x *LinuxContainerAdjustment) GetCgroupsPath() string { -+ if x != nil { -+ return x.CgroupsPath -+ } -+ return "" -+} -+ -+// Requested update to an already created container. -+type ContainerUpdate struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` -+ Linux *LinuxContainerUpdate `protobuf:"bytes,2,opt,name=linux,proto3" json:"linux,omitempty"` -+ IgnoreFailure bool `protobuf:"varint,3,opt,name=ignore_failure,json=ignoreFailure,proto3" json:"ignore_failure,omitempty"` -+} -+ -+func (x *ContainerUpdate) Reset() { -+ *x = ContainerUpdate{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[32] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *ContainerUpdate) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*ContainerUpdate) ProtoMessage() {} -+ -+func (x *ContainerUpdate) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[32] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use ContainerUpdate.ProtoReflect.Descriptor instead. -+func (*ContainerUpdate) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{32} -+} -+ -+func (x *ContainerUpdate) GetContainerId() string { -+ if x != nil { -+ return x.ContainerId -+ } -+ return "" -+} -+ -+func (x *ContainerUpdate) GetLinux() *LinuxContainerUpdate { -+ if x != nil { -+ return x.Linux -+ } -+ return nil -+} -+ -+func (x *ContainerUpdate) GetIgnoreFailure() bool { -+ if x != nil { -+ return x.IgnoreFailure -+ } -+ return false -+} -+ -+// Updates to (linux) resources. -+type LinuxContainerUpdate struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ Resources *LinuxResources `protobuf:"bytes,1,opt,name=resources,proto3" json:"resources,omitempty"` -+} -+ -+func (x *LinuxContainerUpdate) Reset() { -+ *x = LinuxContainerUpdate{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[33] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *LinuxContainerUpdate) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*LinuxContainerUpdate) ProtoMessage() {} -+ -+func (x *LinuxContainerUpdate) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[33] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use LinuxContainerUpdate.ProtoReflect.Descriptor instead. -+func (*LinuxContainerUpdate) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{33} -+} -+ -+func (x *LinuxContainerUpdate) GetResources() *LinuxResources { -+ if x != nil { -+ return x.Resources -+ } -+ return nil -+} -+ -+// Request to evict (IOW unsolicitedly stop) a container. -+type ContainerEviction struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ // Container to evict. -+ ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` -+ // Human-readable reason for eviction. -+ Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"` -+} -+ -+func (x *ContainerEviction) Reset() { -+ *x = ContainerEviction{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[34] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *ContainerEviction) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*ContainerEviction) ProtoMessage() {} -+ -+func (x *ContainerEviction) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[34] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use ContainerEviction.ProtoReflect.Descriptor instead. -+func (*ContainerEviction) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{34} -+} -+ -+func (x *ContainerEviction) GetContainerId() string { -+ if x != nil { -+ return x.ContainerId -+ } -+ return "" -+} -+ -+func (x *ContainerEviction) GetReason() string { -+ if x != nil { -+ return x.Reason -+ } -+ return "" -+} -+ -+// KeyValue represents an environment variable. -+type KeyValue struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` -+ Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` -+} -+ -+func (x *KeyValue) Reset() { -+ *x = KeyValue{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[35] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *KeyValue) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*KeyValue) ProtoMessage() {} -+ -+func (x *KeyValue) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[35] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use KeyValue.ProtoReflect.Descriptor instead. -+func (*KeyValue) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{35} -+} -+ -+func (x *KeyValue) GetKey() string { -+ if x != nil { -+ return x.Key -+ } -+ return "" -+} -+ -+func (x *KeyValue) GetValue() string { -+ if x != nil { -+ return x.Value -+ } -+ return "" -+} -+ -+// An optional string value. -+type OptionalString struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` -+} -+ -+func (x *OptionalString) Reset() { -+ *x = OptionalString{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[36] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *OptionalString) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*OptionalString) ProtoMessage() {} -+ -+func (x *OptionalString) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[36] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use OptionalString.ProtoReflect.Descriptor instead. -+func (*OptionalString) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{36} -+} -+ -+func (x *OptionalString) GetValue() string { -+ if x != nil { -+ return x.Value -+ } -+ return "" -+} -+ -+// An optional signed integer value. -+type OptionalInt struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ Value int64 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` -+} -+ -+func (x *OptionalInt) Reset() { -+ *x = OptionalInt{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[37] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *OptionalInt) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*OptionalInt) ProtoMessage() {} -+ -+func (x *OptionalInt) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[37] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use OptionalInt.ProtoReflect.Descriptor instead. -+func (*OptionalInt) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{37} -+} -+ -+func (x *OptionalInt) GetValue() int64 { -+ if x != nil { -+ return x.Value -+ } -+ return 0 -+} -+ -+// An optional 32-bit signed integer value. -+type OptionalInt32 struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ Value int32 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` -+} -+ -+func (x *OptionalInt32) Reset() { -+ *x = OptionalInt32{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[38] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *OptionalInt32) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*OptionalInt32) ProtoMessage() {} -+ -+func (x *OptionalInt32) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[38] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use OptionalInt32.ProtoReflect.Descriptor instead. -+func (*OptionalInt32) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{38} -+} -+ -+func (x *OptionalInt32) GetValue() int32 { -+ if x != nil { -+ return x.Value -+ } -+ return 0 -+} -+ -+// An optional 32-bit unsigned integer value. -+type OptionalUInt32 struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ Value uint32 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` -+} -+ -+func (x *OptionalUInt32) Reset() { -+ *x = OptionalUInt32{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[39] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *OptionalUInt32) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*OptionalUInt32) ProtoMessage() {} -+ -+func (x *OptionalUInt32) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[39] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use OptionalUInt32.ProtoReflect.Descriptor instead. -+func (*OptionalUInt32) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{39} -+} -+ -+func (x *OptionalUInt32) GetValue() uint32 { -+ if x != nil { -+ return x.Value -+ } -+ return 0 -+} -+ -+// An optional 64-bit signed integer value. -+type OptionalInt64 struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ Value int64 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` -+} -+ -+func (x *OptionalInt64) Reset() { -+ *x = OptionalInt64{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[40] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *OptionalInt64) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*OptionalInt64) ProtoMessage() {} -+ -+func (x *OptionalInt64) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[40] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use OptionalInt64.ProtoReflect.Descriptor instead. -+func (*OptionalInt64) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{40} -+} -+ -+func (x *OptionalInt64) GetValue() int64 { -+ if x != nil { -+ return x.Value -+ } -+ return 0 -+} -+ -+// An optional 64-bit unsigned integer value. -+type OptionalUInt64 struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ Value uint64 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` -+} -+ -+func (x *OptionalUInt64) Reset() { -+ *x = OptionalUInt64{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[41] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *OptionalUInt64) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*OptionalUInt64) ProtoMessage() {} -+ -+func (x *OptionalUInt64) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[41] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use OptionalUInt64.ProtoReflect.Descriptor instead. -+func (*OptionalUInt64) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{41} -+} -+ -+func (x *OptionalUInt64) GetValue() uint64 { -+ if x != nil { -+ return x.Value -+ } -+ return 0 -+} -+ -+// An optional boolean value. -+type OptionalBool struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ Value bool `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` -+} -+ -+func (x *OptionalBool) Reset() { -+ *x = OptionalBool{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[42] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *OptionalBool) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*OptionalBool) ProtoMessage() {} -+ -+func (x *OptionalBool) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[42] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use OptionalBool.ProtoReflect.Descriptor instead. -+func (*OptionalBool) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{42} -+} -+ -+func (x *OptionalBool) GetValue() bool { -+ if x != nil { -+ return x.Value -+ } -+ return false -+} -+ -+// An optional value of file permissions. -+type OptionalFileMode struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ Value uint32 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` -+} -+ -+func (x *OptionalFileMode) Reset() { -+ *x = OptionalFileMode{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_pkg_api_api_proto_msgTypes[43] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *OptionalFileMode) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*OptionalFileMode) ProtoMessage() {} -+ -+func (x *OptionalFileMode) ProtoReflect() protoreflect.Message { -+ mi := &file_pkg_api_api_proto_msgTypes[43] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use OptionalFileMode.ProtoReflect.Descriptor instead. -+func (*OptionalFileMode) Descriptor() ([]byte, []int) { -+ return file_pkg_api_api_proto_rawDescGZIP(), []int{43} -+} -+ -+func (x *OptionalFileMode) GetValue() uint32 { -+ if x != nil { -+ return x.Value -+ } -+ return 0 -+} -+ -+var File_pkg_api_api_proto protoreflect.FileDescriptor -+ -+var file_pkg_api_api_proto_rawDesc = []byte{ -+ 0x0a, 0x11, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, -+ 0x6f, 0x74, 0x6f, 0x12, 0x14, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, -+ 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x22, 0x57, 0x0a, 0x15, 0x52, 0x65, 0x67, -+ 0x69, 0x73, 0x74, 0x65, 0x72, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, -+ 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, -+ 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4e, -+ 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x69, 0x64, -+ 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x49, -+ 0x64, 0x78, 0x22, 0x97, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, -+ 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, -+ 0x0a, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, -+ 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, -+ 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x55, -+ 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, -+ 0x05, 0x65, 0x76, 0x69, 0x63, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6e, -+ 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, -+ 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x45, 0x76, 0x69, -+ 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x65, 0x76, 0x69, 0x63, 0x74, 0x22, 0x59, 0x0a, 0x18, -+ 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, -+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x66, 0x61, 0x69, 0x6c, -+ 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, -+ 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, -+ 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, -+ 0x06, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x22, 0x76, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x66, 0x69, -+ 0x67, 0x75, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x63, -+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6e, -+ 0x66, 0x69, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6e, -+ 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x75, 0x6e, 0x74, 0x69, -+ 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, -+ 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, -+ 0x0e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, -+ 0x2b, 0x0a, 0x11, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, -+ 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, -+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x8b, 0x01, 0x0a, -+ 0x12, 0x53, 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, -+ 0x65, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x04, 0x70, 0x6f, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, -+ 0x0b, 0x32, 0x20, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, -+ 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x64, 0x53, 0x61, 0x6e, 0x64, -+ 0x62, 0x6f, 0x78, 0x52, 0x04, 0x70, 0x6f, 0x64, 0x73, 0x12, 0x3f, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, -+ 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, -+ 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, -+ 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x0a, -+ 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x22, 0x54, 0x0a, 0x13, 0x53, 0x79, -+ 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, -+ 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, -+ 0x0b, 0x32, 0x25, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, -+ 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, -+ 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, -+ 0x22, 0x8b, 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, -+ 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x03, 0x70, -+ 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, -+ 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, -+ 0x50, 0x6f, 0x64, 0x53, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x52, 0x03, 0x70, 0x6f, 0x64, 0x12, -+ 0x3d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, -+ 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, -+ 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, -+ 0x6e, 0x65, 0x72, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x22, 0xda, -+ 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, -+ 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x06, 0x61, 0x64, -+ 0x6a, 0x75, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6e, 0x72, 0x69, -+ 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, -+ 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x6a, 0x75, 0x73, -+ 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x61, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x12, 0x3d, 0x0a, -+ 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, -+ 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, -+ 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x55, 0x70, -+ 0x64, 0x61, 0x74, 0x65, 0x52, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, 0x05, -+ 0x65, 0x76, 0x69, 0x63, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6e, 0x72, -+ 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, -+ 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x45, 0x76, 0x69, 0x63, -+ 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x65, 0x76, 0x69, 0x63, 0x74, 0x22, 0xda, 0x01, 0x0a, 0x16, -+ 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, -+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x03, 0x70, 0x6f, 0x64, 0x18, 0x01, 0x20, -+ 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, -+ 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x64, 0x53, 0x61, -+ 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x52, 0x03, 0x70, 0x6f, 0x64, 0x12, 0x3d, 0x0a, 0x09, 0x63, 0x6f, -+ 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, -+ 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, -+ 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x09, -+ 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x4d, 0x0a, 0x0f, 0x6c, 0x69, 0x6e, -+ 0x75, 0x78, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, -+ 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, -+ 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x52, -+ 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x0e, 0x6c, 0x69, 0x6e, 0x75, 0x78, 0x52, -+ 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0x97, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, -+ 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, -+ 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, -+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, -+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, -+ 0x61, 0x69, 0x6e, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x06, 0x75, 0x70, 0x64, -+ 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, 0x05, 0x65, 0x76, 0x69, 0x63, 0x74, 0x18, 0x02, 0x20, 0x03, -+ 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, -+ 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, -+ 0x6e, 0x65, 0x72, 0x45, 0x76, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x65, 0x76, 0x69, -+ 0x63, 0x74, 0x22, 0x89, 0x01, 0x0a, 0x14, 0x53, 0x74, 0x6f, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x61, -+ 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x03, 0x70, -+ 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, -+ 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, -+ 0x50, 0x6f, 0x64, 0x53, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x52, 0x03, 0x70, 0x6f, 0x64, 0x12, -+ 0x3d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, -+ 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, -+ 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, -+ 0x6e, 0x65, 0x72, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x22, 0x56, -+ 0x0a, 0x15, 0x53, 0x74, 0x6f, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, -+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, -+ 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, -+ 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, -+ 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x06, -+ 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x22, 0xb8, 0x01, 0x0a, 0x10, 0x53, 0x74, 0x61, 0x74, 0x65, -+ 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x31, 0x0a, 0x05, 0x65, -+ 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x6e, 0x72, 0x69, -+ 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, -+ 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x32, -+ 0x0a, 0x03, 0x70, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6e, 0x72, -+ 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, -+ 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x64, 0x53, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x52, 0x03, 0x70, -+ 0x6f, 0x64, 0x12, 0x3d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, -+ 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, -+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, -+ 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, -+ 0x72, 0x22, 0x07, 0x0a, 0x05, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xee, 0x03, 0x0a, 0x0a, 0x50, -+ 0x6f, 0x64, 0x53, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, -+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, -+ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, -+ 0x03, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, -+ 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, -+ 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x44, 0x0a, -+ 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, -+ 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, -+ 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x64, 0x53, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x2e, -+ 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, -+ 0x65, 0x6c, 0x73, 0x12, 0x53, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, -+ 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, -+ 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, -+ 0x50, 0x6f, 0x64, 0x53, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, -+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, -+ 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x75, 0x6e, 0x74, -+ 0x69, 0x6d, 0x65, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, -+ 0x09, 0x52, 0x0e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, -+ 0x72, 0x12, 0x3b, 0x0a, 0x05, 0x6c, 0x69, 0x6e, 0x75, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, -+ 0x32, 0x25, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, -+ 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x50, 0x6f, 0x64, -+ 0x53, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x52, 0x05, 0x6c, 0x69, 0x6e, 0x75, 0x78, 0x12, 0x10, -+ 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x70, 0x69, 0x64, -+ 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, -+ 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, -+ 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, -+ 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x41, -+ 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, -+ 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, -+ 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, -+ 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xf7, 0x02, 0x0a, 0x0f, -+ 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x50, 0x6f, 0x64, 0x53, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x12, -+ 0x47, 0x0a, 0x0c, 0x70, 0x6f, 0x64, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x18, -+ 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, -+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, -+ 0x75, 0x78, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x0b, 0x70, 0x6f, 0x64, -+ 0x4f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x12, 0x49, 0x0a, 0x0d, 0x70, 0x6f, 0x64, 0x5f, -+ 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, -+ 0x24, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, -+ 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x52, 0x65, 0x73, 0x6f, -+ 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x0c, 0x70, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, -+ 0x63, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x70, 0x61, -+ 0x72, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x67, 0x72, 0x6f, -+ 0x75, 0x70, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x67, 0x72, 0x6f, -+ 0x75, 0x70, 0x73, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, -+ 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x50, 0x61, 0x74, 0x68, 0x12, 0x44, 0x0a, 0x0a, 0x6e, -+ 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, -+ 0x24, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, -+ 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x4e, 0x61, 0x6d, 0x65, -+ 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, -+ 0x73, 0x12, 0x42, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x06, -+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, -+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75, -+ 0x78, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, -+ 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0xbe, 0x05, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, -+ 0x6e, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, -+ 0x02, 0x69, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x70, 0x6f, 0x64, 0x5f, 0x73, 0x61, 0x6e, 0x64, 0x62, -+ 0x6f, 0x78, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6f, 0x64, -+ 0x53, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, -+ 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, -+ 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6e, -+ 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, -+ 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x74, 0x61, -+ 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x6c, 0x61, 0x62, -+ 0x65, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x72, 0x69, 0x2e, -+ 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, -+ 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, -+ 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x52, -+ 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, -+ 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, -+ 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, -+ 0x69, 0x6e, 0x65, 0x72, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, -+ 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, -+ 0x6e, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, -+ 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x08, 0x20, -+ 0x03, 0x28, 0x09, 0x52, 0x03, 0x65, 0x6e, 0x76, 0x12, 0x33, 0x0a, 0x06, 0x6d, 0x6f, 0x75, 0x6e, -+ 0x74, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, -+ 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, -+ 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x06, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x31, 0x0a, -+ 0x05, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6e, -+ 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, -+ 0x68, 0x61, 0x31, 0x2e, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x05, 0x68, 0x6f, 0x6f, 0x6b, 0x73, -+ 0x12, 0x3a, 0x0a, 0x05, 0x6c, 0x69, 0x6e, 0x75, 0x78, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, -+ 0x24, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, -+ 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x43, 0x6f, 0x6e, 0x74, -+ 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x05, 0x6c, 0x69, 0x6e, 0x75, 0x78, 0x12, 0x10, 0x0a, 0x03, -+ 0x70, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x70, 0x69, 0x64, 0x12, 0x3b, -+ 0x0a, 0x07, 0x72, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, -+ 0x21, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, -+ 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x4f, 0x53, 0x49, 0x58, 0x52, 0x6c, 0x69, 0x6d, -+ 0x69, 0x74, 0x52, 0x07, 0x72, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, -+ 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, -+ 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, -+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, -+ 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, -+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, -+ 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, -+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, -+ 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6f, 0x0a, 0x05, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x12, -+ 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, -+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, -+ 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, -+ 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, -+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x18, 0x0a, -+ 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, -+ 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x80, 0x03, 0x0a, 0x05, 0x48, 0x6f, 0x6f, 0x6b, -+ 0x73, 0x12, 0x36, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, -+ 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, -+ 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x48, 0x6f, 0x6f, 0x6b, 0x52, -+ 0x08, 0x70, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x41, 0x0a, 0x0e, 0x63, 0x72, 0x65, -+ 0x61, 0x74, 0x65, 0x5f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, -+ 0x0b, 0x32, 0x1a, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, -+ 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x0d, 0x63, -+ 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x45, 0x0a, 0x10, -+ 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, -+ 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, -+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x48, 0x6f, -+ 0x6f, 0x6b, 0x52, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, -+ 0x6e, 0x65, 0x72, 0x12, 0x43, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x6e, -+ 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6e, -+ 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, -+ 0x68, 0x61, 0x31, 0x2e, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x43, -+ 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x09, 0x70, 0x6f, 0x73, 0x74, -+ 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6e, 0x72, -+ 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, -+ 0x61, 0x31, 0x2e, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x09, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x74, 0x61, -+ 0x72, 0x74, 0x12, 0x36, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x74, 0x6f, 0x70, 0x18, 0x06, -+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, -+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x48, 0x6f, 0x6f, 0x6b, -+ 0x52, 0x08, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x74, 0x6f, 0x70, 0x22, 0x7d, 0x0a, 0x04, 0x48, 0x6f, -+ 0x6f, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, -+ 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, -+ 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, -+ 0x76, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x65, 0x6e, 0x76, 0x12, 0x3b, 0x0a, 0x07, -+ 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, -+ 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, -+ 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, -+ 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0xc1, 0x02, 0x0a, 0x0e, 0x4c, 0x69, -+ 0x6e, 0x75, 0x78, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x44, 0x0a, 0x0a, -+ 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, -+ 0x32, 0x24, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, -+ 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x4e, 0x61, 0x6d, -+ 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, -+ 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x07, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, -+ 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, -+ 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, -+ 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x07, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, -+ 0x42, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, -+ 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, -+ 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x52, -+ 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, -+ 0x63, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x0d, 0x6f, 0x6f, 0x6d, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, -+ 0x5f, 0x61, 0x64, 0x6a, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6e, 0x72, 0x69, -+ 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, -+ 0x31, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x52, 0x0b, 0x6f, -+ 0x6f, 0x6d, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x41, 0x64, 0x6a, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x67, -+ 0x72, 0x6f, 0x75, 0x70, 0x73, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, -+ 0x52, 0x0b, 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x50, 0x61, 0x74, 0x68, 0x22, 0x38, 0x0a, -+ 0x0e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, -+ 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, -+ 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, -+ 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x96, 0x02, 0x0a, 0x0b, 0x4c, 0x69, 0x6e, 0x75, -+ 0x78, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, -+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x74, -+ 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, -+ 0x14, 0x0a, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, -+ 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x18, 0x04, -+ 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x12, 0x43, 0x0a, 0x09, 0x66, -+ 0x69, 0x6c, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, -+ 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, -+ 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x69, -+ 0x6c, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x6f, 0x64, 0x65, -+ 0x12, 0x36, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, -+ 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, -+ 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x49, 0x6e, -+ 0x74, 0x33, 0x32, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x36, 0x0a, 0x03, 0x67, 0x69, 0x64, 0x18, -+ 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, -+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x70, 0x74, -+ 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x52, 0x03, 0x67, 0x69, 0x64, -+ 0x22, 0xcb, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, -+ 0x43, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x18, -+ 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x12, 0x12, 0x0a, 0x04, -+ 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, -+ 0x12, 0x39, 0x0a, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, -+ 0x23, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, -+ 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, -+ 0x6e, 0x74, 0x36, 0x34, 0x52, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x12, 0x39, 0x0a, 0x05, 0x6d, -+ 0x69, 0x6e, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6e, 0x72, 0x69, -+ 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, -+ 0x31, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x52, -+ 0x05, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, -+ 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0xa5, -+ 0x04, 0x0a, 0x0e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, -+ 0x73, 0x12, 0x39, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, -+ 0x0b, 0x32, 0x21, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, -+ 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x4d, 0x65, -+ 0x6d, 0x6f, 0x72, 0x79, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x30, 0x0a, 0x03, -+ 0x63, 0x70, 0x75, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6e, 0x72, 0x69, 0x2e, -+ 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, -+ 0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x43, 0x50, 0x55, 0x52, 0x03, 0x63, 0x70, 0x75, 0x12, 0x4c, -+ 0x0a, 0x0f, 0x68, 0x75, 0x67, 0x65, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, -+ 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, -+ 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x48, -+ 0x75, 0x67, 0x65, 0x70, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x0e, 0x68, 0x75, -+ 0x67, 0x65, 0x70, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x49, 0x0a, 0x0d, -+ 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x6f, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x04, 0x20, -+ 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, -+ 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, -+ 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, -+ 0x69, 0x6f, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x41, 0x0a, 0x09, 0x72, 0x64, 0x74, 0x5f, 0x63, -+ 0x6c, 0x61, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6e, 0x72, 0x69, -+ 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, -+ 0x31, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, -+ 0x52, 0x08, 0x72, 0x64, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x4b, 0x0a, 0x07, 0x75, 0x6e, -+ 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6e, 0x72, -+ 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, -+ 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, -+ 0x73, 0x2e, 0x55, 0x6e, 0x69, 0x66, 0x69, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, -+ 0x75, 0x6e, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x41, 0x0a, 0x07, 0x64, 0x65, 0x76, 0x69, 0x63, -+ 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, -+ 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, -+ 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x67, 0x72, 0x6f, 0x75, -+ 0x70, 0x52, 0x07, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x55, 0x6e, -+ 0x69, 0x66, 0x69, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, -+ 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, -+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, -+ 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xaa, 0x04, 0x0a, 0x0b, 0x4c, 0x69, 0x6e, 0x75, 0x78, -+ 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x39, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, -+ 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, -+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x70, 0x74, -+ 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, -+ 0x74, 0x12, 0x45, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, -+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, -+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x70, -+ 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x52, 0x0b, 0x72, 0x65, 0x73, -+ 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x04, 0x73, 0x77, 0x61, 0x70, -+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, -+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x70, -+ 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x52, 0x04, 0x73, 0x77, 0x61, -+ 0x70, 0x12, 0x3b, 0x0a, 0x06, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, -+ 0x0b, 0x32, 0x23, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, -+ 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, -+ 0x6c, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x52, 0x06, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x12, 0x42, -+ 0x0a, 0x0a, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x63, 0x70, 0x18, 0x05, 0x20, 0x01, -+ 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, -+ 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, -+ 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x52, 0x09, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x54, -+ 0x63, 0x70, 0x12, 0x44, 0x0a, 0x0a, 0x73, 0x77, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x65, 0x73, 0x73, -+ 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, -+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x70, -+ 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x52, 0x0a, 0x73, 0x77, -+ 0x61, 0x70, 0x70, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x12, 0x50, 0x0a, 0x12, 0x64, 0x69, 0x73, 0x61, -+ 0x62, 0x6c, 0x65, 0x5f, 0x6f, 0x6f, 0x6d, 0x5f, 0x6b, 0x69, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x07, -+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, -+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x70, 0x74, 0x69, -+ 0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x52, 0x10, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, -+ 0x65, 0x4f, 0x6f, 0x6d, 0x4b, 0x69, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x47, 0x0a, 0x0d, 0x75, 0x73, -+ 0x65, 0x5f, 0x68, 0x69, 0x65, 0x72, 0x61, 0x72, 0x63, 0x68, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, -+ 0x0b, 0x32, 0x22, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, -+ 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, -+ 0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x52, 0x0c, 0x75, 0x73, 0x65, 0x48, 0x69, 0x65, 0x72, 0x61, 0x72, -+ 0x63, 0x68, 0x79, 0x22, 0x88, 0x03, 0x0a, 0x08, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x43, 0x50, 0x55, -+ 0x12, 0x3c, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, -+ 0x32, 0x24, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, -+ 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, -+ 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x52, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x12, 0x39, -+ 0x0a, 0x05, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, -+ 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, -+ 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, -+ 0x36, 0x34, 0x52, 0x05, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x12, 0x3c, 0x0a, 0x06, 0x70, 0x65, 0x72, -+ 0x69, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6e, 0x72, 0x69, 0x2e, -+ 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, -+ 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x52, -+ 0x06, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x4e, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x6c, 0x74, -+ 0x69, 0x6d, 0x65, 0x5f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, -+ 0x0b, 0x32, 0x23, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, -+ 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, -+ 0x6c, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, -+ 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x4d, 0x0a, 0x0f, 0x72, 0x65, 0x61, 0x6c, 0x74, -+ 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, -+ 0x32, 0x24, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, -+ 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, -+ 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x52, 0x0e, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, -+ 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x70, 0x75, 0x73, 0x18, 0x06, -+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x70, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x65, -+ 0x6d, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x65, 0x6d, 0x73, 0x22, 0x42, -+ 0x0a, 0x0d, 0x48, 0x75, 0x67, 0x65, 0x70, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, -+ 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, -+ 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x14, 0x0a, 0x05, -+ 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6c, 0x69, 0x6d, -+ 0x69, 0x74, 0x22, 0x49, 0x0a, 0x0b, 0x50, 0x4f, 0x53, 0x49, 0x58, 0x52, 0x6c, 0x69, 0x6d, 0x69, -+ 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, -+ 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, -+ 0x01, 0x28, 0x04, 0x52, 0x04, 0x68, 0x61, 0x72, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6f, 0x66, -+ 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6f, 0x66, 0x74, 0x22, 0xd0, 0x03, -+ 0x0a, 0x13, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x6a, 0x75, 0x73, -+ 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x5c, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, -+ 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x6e, 0x72, 0x69, -+ 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, -+ 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x6a, 0x75, 0x73, -+ 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, -+ 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, -+ 0x6f, 0x6e, 0x73, 0x12, 0x33, 0x0a, 0x06, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, -+ 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, -+ 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4d, 0x6f, 0x75, 0x6e, 0x74, -+ 0x52, 0x06, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x30, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, -+ 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, -+ 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4b, 0x65, 0x79, -+ 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03, 0x65, 0x6e, 0x76, 0x12, 0x31, 0x0a, 0x05, 0x68, 0x6f, -+ 0x6f, 0x6b, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6e, 0x72, 0x69, 0x2e, -+ 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, -+ 0x2e, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x05, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x12, 0x44, 0x0a, -+ 0x05, 0x6c, 0x69, 0x6e, 0x75, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6e, -+ 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, -+ 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, -+ 0x65, 0x72, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x6c, 0x69, -+ 0x6e, 0x75, 0x78, 0x12, 0x3b, 0x0a, 0x07, 0x72, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x07, -+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, -+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x4f, 0x53, 0x49, -+ 0x58, 0x52, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x07, 0x72, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, -+ 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, -+ 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, -+ 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, -+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, -+ 0x22, 0xbe, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, -+ 0x6e, 0x65, 0x72, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3b, 0x0a, -+ 0x07, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, -+ 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, -+ 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x44, 0x65, 0x76, 0x69, 0x63, -+ 0x65, 0x52, 0x07, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x09, 0x72, 0x65, -+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, -+ 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, -+ 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, -+ 0x63, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x21, -+ 0x0a, 0x0c, 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, -+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x50, 0x61, 0x74, -+ 0x68, 0x22, 0x9d, 0x01, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x55, -+ 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, -+ 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, -+ 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x05, 0x6c, 0x69, 0x6e, 0x75, -+ 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, -+ 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, -+ 0x69, 0x6e, 0x75, 0x78, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x55, 0x70, 0x64, -+ 0x61, 0x74, 0x65, 0x52, 0x05, 0x6c, 0x69, 0x6e, 0x75, 0x78, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x67, -+ 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, -+ 0x28, 0x08, 0x52, 0x0d, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, -+ 0x65, 0x22, 0x5a, 0x0a, 0x14, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, -+ 0x6e, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x42, 0x0a, 0x09, 0x72, 0x65, 0x73, -+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6e, -+ 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, -+ 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, -+ 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0x4e, 0x0a, -+ 0x11, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x45, 0x76, 0x69, 0x63, 0x74, 0x69, -+ 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, -+ 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, -+ 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, -+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x32, 0x0a, -+ 0x08, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, -+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, -+ 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, -+ 0x65, 0x22, 0x26, 0x0a, 0x0e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x72, -+ 0x69, 0x6e, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, -+ 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x23, 0x0a, 0x0b, 0x4f, 0x70, 0x74, -+ 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, -+ 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x25, -+ 0x0a, 0x0d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, -+ 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, -+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x26, 0x0a, 0x0e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, -+ 0x6c, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, -+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x25, 0x0a, -+ 0x0d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x14, -+ 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, -+ 0x61, 0x6c, 0x75, 0x65, 0x22, 0x26, 0x0a, 0x0e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, -+ 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, -+ 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x24, 0x0a, 0x0c, -+ 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x14, 0x0a, 0x05, -+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, -+ 0x75, 0x65, 0x22, 0x28, 0x0a, 0x10, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x69, -+ 0x6c, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, -+ 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2a, 0x9c, 0x02, 0x0a, -+ 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, -+ 0x4e, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x55, 0x4e, 0x5f, 0x50, 0x4f, 0x44, 0x5f, 0x53, -+ 0x41, 0x4e, 0x44, 0x42, 0x4f, 0x58, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x54, 0x4f, 0x50, -+ 0x5f, 0x50, 0x4f, 0x44, 0x5f, 0x53, 0x41, 0x4e, 0x44, 0x42, 0x4f, 0x58, 0x10, 0x02, 0x12, 0x16, -+ 0x0a, 0x12, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x50, 0x4f, 0x44, 0x5f, 0x53, 0x41, 0x4e, -+ 0x44, 0x42, 0x4f, 0x58, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, -+ 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x10, 0x04, 0x12, 0x19, 0x0a, 0x15, -+ 0x50, 0x4f, 0x53, 0x54, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x54, -+ 0x41, 0x49, 0x4e, 0x45, 0x52, 0x10, 0x05, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x54, 0x41, 0x52, 0x54, -+ 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x10, 0x06, 0x12, 0x18, 0x0a, 0x14, -+ 0x50, 0x4f, 0x53, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, -+ 0x49, 0x4e, 0x45, 0x52, 0x10, 0x07, 0x12, 0x14, 0x0a, 0x10, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, -+ 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x10, 0x08, 0x12, 0x19, 0x0a, 0x15, -+ 0x50, 0x4f, 0x53, 0x54, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x54, -+ 0x41, 0x49, 0x4e, 0x45, 0x52, 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x54, 0x4f, 0x50, 0x5f, -+ 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x10, 0x0a, 0x12, 0x14, 0x0a, 0x10, 0x52, -+ 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x10, -+ 0x0b, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x41, 0x53, 0x54, 0x10, 0x0c, 0x2a, 0x82, 0x01, 0x0a, 0x0e, -+ 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, -+ 0x0a, 0x11, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, -+ 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, -+ 0x45, 0x52, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, -+ 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x44, -+ 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x5f, -+ 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x4f, 0x4e, -+ 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x10, 0x04, -+ 0x32, 0xd8, 0x01, 0x0a, 0x07, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x5a, 0x0a, 0x0e, -+ 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x12, 0x2b, -+ 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, -+ 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x50, 0x6c, -+ 0x75, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x6e, 0x72, -+ 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, -+ 0x61, 0x31, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x71, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, -+ 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x2d, 0x2e, 0x6e, -+ 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, -+ 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, -+ 0x6e, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x6e, 0x72, -+ 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, -+ 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, -+ 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xae, 0x05, 0x0a, 0x06, -+ 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x12, 0x5c, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, -+ 0x75, 0x72, 0x65, 0x12, 0x26, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, -+ 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, -+ 0x67, 0x75, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x6e, 0x72, -+ 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, -+ 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, -+ 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x62, 0x0a, 0x0b, 0x53, 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, -+ 0x69, 0x7a, 0x65, 0x12, 0x28, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, -+ 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x68, -+ 0x72, 0x6f, 0x6e, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, -+ 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, -+ 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x69, 0x7a, 0x65, -+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x08, 0x53, 0x68, 0x75, 0x74, -+ 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x1b, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, -+ 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x45, 0x6d, 0x70, 0x74, -+ 0x79, 0x1a, 0x1b, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, -+ 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x6e, -+ 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, -+ 0x72, 0x12, 0x2c, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, -+ 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, -+ 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, -+ 0x2d, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, -+ 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, -+ 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6e, -+ 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, -+ 0x72, 0x12, 0x2c, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, -+ 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, -+ 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, -+ 0x2d, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, -+ 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, -+ 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x68, -+ 0x0a, 0x0d, 0x53, 0x74, 0x6f, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, -+ 0x2a, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, -+ 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x61, -+ 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x6e, 0x72, -+ 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, -+ 0x61, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, -+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x74, -+ 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x26, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, -+ 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, -+ 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x1a, -+ 0x1b, 0x2e, 0x6e, 0x72, 0x69, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, -+ 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x42, 0x27, 0x5a, 0x25, -+ 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, -+ 0x69, 0x6e, 0x65, 0x72, 0x64, 0x2f, 0x6e, 0x72, 0x69, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, -+ 0x69, 0x3b, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -+} -+ -+var ( -+ file_pkg_api_api_proto_rawDescOnce sync.Once -+ file_pkg_api_api_proto_rawDescData = file_pkg_api_api_proto_rawDesc -+) -+ -+func file_pkg_api_api_proto_rawDescGZIP() []byte { -+ file_pkg_api_api_proto_rawDescOnce.Do(func() { -+ file_pkg_api_api_proto_rawDescData = protoimpl.X.CompressGZIP(file_pkg_api_api_proto_rawDescData) -+ }) -+ return file_pkg_api_api_proto_rawDescData -+} -+ -+var file_pkg_api_api_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -+var file_pkg_api_api_proto_msgTypes = make([]protoimpl.MessageInfo, 50) -+var file_pkg_api_api_proto_goTypes = []interface{}{ -+ (Event)(0), // 0: nri.pkg.api.v1alpha1.Event -+ (ContainerState)(0), // 1: nri.pkg.api.v1alpha1.ContainerState -+ (*RegisterPluginRequest)(nil), // 2: nri.pkg.api.v1alpha1.RegisterPluginRequest -+ (*UpdateContainersRequest)(nil), // 3: nri.pkg.api.v1alpha1.UpdateContainersRequest -+ (*UpdateContainersResponse)(nil), // 4: nri.pkg.api.v1alpha1.UpdateContainersResponse -+ (*ConfigureRequest)(nil), // 5: nri.pkg.api.v1alpha1.ConfigureRequest -+ (*ConfigureResponse)(nil), // 6: nri.pkg.api.v1alpha1.ConfigureResponse -+ (*SynchronizeRequest)(nil), // 7: nri.pkg.api.v1alpha1.SynchronizeRequest -+ (*SynchronizeResponse)(nil), // 8: nri.pkg.api.v1alpha1.SynchronizeResponse -+ (*CreateContainerRequest)(nil), // 9: nri.pkg.api.v1alpha1.CreateContainerRequest -+ (*CreateContainerResponse)(nil), // 10: nri.pkg.api.v1alpha1.CreateContainerResponse -+ (*UpdateContainerRequest)(nil), // 11: nri.pkg.api.v1alpha1.UpdateContainerRequest -+ (*UpdateContainerResponse)(nil), // 12: nri.pkg.api.v1alpha1.UpdateContainerResponse -+ (*StopContainerRequest)(nil), // 13: nri.pkg.api.v1alpha1.StopContainerRequest -+ (*StopContainerResponse)(nil), // 14: nri.pkg.api.v1alpha1.StopContainerResponse -+ (*StateChangeEvent)(nil), // 15: nri.pkg.api.v1alpha1.StateChangeEvent -+ (*Empty)(nil), // 16: nri.pkg.api.v1alpha1.Empty -+ (*PodSandbox)(nil), // 17: nri.pkg.api.v1alpha1.PodSandbox -+ (*LinuxPodSandbox)(nil), // 18: nri.pkg.api.v1alpha1.LinuxPodSandbox -+ (*Container)(nil), // 19: nri.pkg.api.v1alpha1.Container -+ (*Mount)(nil), // 20: nri.pkg.api.v1alpha1.Mount -+ (*Hooks)(nil), // 21: nri.pkg.api.v1alpha1.Hooks -+ (*Hook)(nil), // 22: nri.pkg.api.v1alpha1.Hook -+ (*LinuxContainer)(nil), // 23: nri.pkg.api.v1alpha1.LinuxContainer -+ (*LinuxNamespace)(nil), // 24: nri.pkg.api.v1alpha1.LinuxNamespace -+ (*LinuxDevice)(nil), // 25: nri.pkg.api.v1alpha1.LinuxDevice -+ (*LinuxDeviceCgroup)(nil), // 26: nri.pkg.api.v1alpha1.LinuxDeviceCgroup -+ (*LinuxResources)(nil), // 27: nri.pkg.api.v1alpha1.LinuxResources -+ (*LinuxMemory)(nil), // 28: nri.pkg.api.v1alpha1.LinuxMemory -+ (*LinuxCPU)(nil), // 29: nri.pkg.api.v1alpha1.LinuxCPU -+ (*HugepageLimit)(nil), // 30: nri.pkg.api.v1alpha1.HugepageLimit -+ (*POSIXRlimit)(nil), // 31: nri.pkg.api.v1alpha1.POSIXRlimit -+ (*ContainerAdjustment)(nil), // 32: nri.pkg.api.v1alpha1.ContainerAdjustment -+ (*LinuxContainerAdjustment)(nil), // 33: nri.pkg.api.v1alpha1.LinuxContainerAdjustment -+ (*ContainerUpdate)(nil), // 34: nri.pkg.api.v1alpha1.ContainerUpdate -+ (*LinuxContainerUpdate)(nil), // 35: nri.pkg.api.v1alpha1.LinuxContainerUpdate -+ (*ContainerEviction)(nil), // 36: nri.pkg.api.v1alpha1.ContainerEviction -+ (*KeyValue)(nil), // 37: nri.pkg.api.v1alpha1.KeyValue -+ (*OptionalString)(nil), // 38: nri.pkg.api.v1alpha1.OptionalString -+ (*OptionalInt)(nil), // 39: nri.pkg.api.v1alpha1.OptionalInt -+ (*OptionalInt32)(nil), // 40: nri.pkg.api.v1alpha1.OptionalInt32 -+ (*OptionalUInt32)(nil), // 41: nri.pkg.api.v1alpha1.OptionalUInt32 -+ (*OptionalInt64)(nil), // 42: nri.pkg.api.v1alpha1.OptionalInt64 -+ (*OptionalUInt64)(nil), // 43: nri.pkg.api.v1alpha1.OptionalUInt64 -+ (*OptionalBool)(nil), // 44: nri.pkg.api.v1alpha1.OptionalBool -+ (*OptionalFileMode)(nil), // 45: nri.pkg.api.v1alpha1.OptionalFileMode -+ nil, // 46: nri.pkg.api.v1alpha1.PodSandbox.LabelsEntry -+ nil, // 47: nri.pkg.api.v1alpha1.PodSandbox.AnnotationsEntry -+ nil, // 48: nri.pkg.api.v1alpha1.Container.LabelsEntry -+ nil, // 49: nri.pkg.api.v1alpha1.Container.AnnotationsEntry -+ nil, // 50: nri.pkg.api.v1alpha1.LinuxResources.UnifiedEntry -+ nil, // 51: nri.pkg.api.v1alpha1.ContainerAdjustment.AnnotationsEntry -+} -+var file_pkg_api_api_proto_depIdxs = []int32{ -+ 34, // 0: nri.pkg.api.v1alpha1.UpdateContainersRequest.update:type_name -> nri.pkg.api.v1alpha1.ContainerUpdate -+ 36, // 1: nri.pkg.api.v1alpha1.UpdateContainersRequest.evict:type_name -> nri.pkg.api.v1alpha1.ContainerEviction -+ 34, // 2: nri.pkg.api.v1alpha1.UpdateContainersResponse.failed:type_name -> nri.pkg.api.v1alpha1.ContainerUpdate -+ 17, // 3: nri.pkg.api.v1alpha1.SynchronizeRequest.pods:type_name -> nri.pkg.api.v1alpha1.PodSandbox -+ 19, // 4: nri.pkg.api.v1alpha1.SynchronizeRequest.containers:type_name -> nri.pkg.api.v1alpha1.Container -+ 34, // 5: nri.pkg.api.v1alpha1.SynchronizeResponse.update:type_name -> nri.pkg.api.v1alpha1.ContainerUpdate -+ 17, // 6: nri.pkg.api.v1alpha1.CreateContainerRequest.pod:type_name -> nri.pkg.api.v1alpha1.PodSandbox -+ 19, // 7: nri.pkg.api.v1alpha1.CreateContainerRequest.container:type_name -> nri.pkg.api.v1alpha1.Container -+ 32, // 8: nri.pkg.api.v1alpha1.CreateContainerResponse.adjust:type_name -> nri.pkg.api.v1alpha1.ContainerAdjustment -+ 34, // 9: nri.pkg.api.v1alpha1.CreateContainerResponse.update:type_name -> nri.pkg.api.v1alpha1.ContainerUpdate -+ 36, // 10: nri.pkg.api.v1alpha1.CreateContainerResponse.evict:type_name -> nri.pkg.api.v1alpha1.ContainerEviction -+ 17, // 11: nri.pkg.api.v1alpha1.UpdateContainerRequest.pod:type_name -> nri.pkg.api.v1alpha1.PodSandbox -+ 19, // 12: nri.pkg.api.v1alpha1.UpdateContainerRequest.container:type_name -> nri.pkg.api.v1alpha1.Container -+ 27, // 13: nri.pkg.api.v1alpha1.UpdateContainerRequest.linux_resources:type_name -> nri.pkg.api.v1alpha1.LinuxResources -+ 34, // 14: nri.pkg.api.v1alpha1.UpdateContainerResponse.update:type_name -> nri.pkg.api.v1alpha1.ContainerUpdate -+ 36, // 15: nri.pkg.api.v1alpha1.UpdateContainerResponse.evict:type_name -> nri.pkg.api.v1alpha1.ContainerEviction -+ 17, // 16: nri.pkg.api.v1alpha1.StopContainerRequest.pod:type_name -> nri.pkg.api.v1alpha1.PodSandbox -+ 19, // 17: nri.pkg.api.v1alpha1.StopContainerRequest.container:type_name -> nri.pkg.api.v1alpha1.Container -+ 34, // 18: nri.pkg.api.v1alpha1.StopContainerResponse.update:type_name -> nri.pkg.api.v1alpha1.ContainerUpdate -+ 0, // 19: nri.pkg.api.v1alpha1.StateChangeEvent.event:type_name -> nri.pkg.api.v1alpha1.Event -+ 17, // 20: nri.pkg.api.v1alpha1.StateChangeEvent.pod:type_name -> nri.pkg.api.v1alpha1.PodSandbox -+ 19, // 21: nri.pkg.api.v1alpha1.StateChangeEvent.container:type_name -> nri.pkg.api.v1alpha1.Container -+ 46, // 22: nri.pkg.api.v1alpha1.PodSandbox.labels:type_name -> nri.pkg.api.v1alpha1.PodSandbox.LabelsEntry -+ 47, // 23: nri.pkg.api.v1alpha1.PodSandbox.annotations:type_name -> nri.pkg.api.v1alpha1.PodSandbox.AnnotationsEntry -+ 18, // 24: nri.pkg.api.v1alpha1.PodSandbox.linux:type_name -> nri.pkg.api.v1alpha1.LinuxPodSandbox -+ 27, // 25: nri.pkg.api.v1alpha1.LinuxPodSandbox.pod_overhead:type_name -> nri.pkg.api.v1alpha1.LinuxResources -+ 27, // 26: nri.pkg.api.v1alpha1.LinuxPodSandbox.pod_resources:type_name -> nri.pkg.api.v1alpha1.LinuxResources -+ 24, // 27: nri.pkg.api.v1alpha1.LinuxPodSandbox.namespaces:type_name -> nri.pkg.api.v1alpha1.LinuxNamespace -+ 27, // 28: nri.pkg.api.v1alpha1.LinuxPodSandbox.resources:type_name -> nri.pkg.api.v1alpha1.LinuxResources -+ 1, // 29: nri.pkg.api.v1alpha1.Container.state:type_name -> nri.pkg.api.v1alpha1.ContainerState -+ 48, // 30: nri.pkg.api.v1alpha1.Container.labels:type_name -> nri.pkg.api.v1alpha1.Container.LabelsEntry -+ 49, // 31: nri.pkg.api.v1alpha1.Container.annotations:type_name -> nri.pkg.api.v1alpha1.Container.AnnotationsEntry -+ 20, // 32: nri.pkg.api.v1alpha1.Container.mounts:type_name -> nri.pkg.api.v1alpha1.Mount -+ 21, // 33: nri.pkg.api.v1alpha1.Container.hooks:type_name -> nri.pkg.api.v1alpha1.Hooks -+ 23, // 34: nri.pkg.api.v1alpha1.Container.linux:type_name -> nri.pkg.api.v1alpha1.LinuxContainer -+ 31, // 35: nri.pkg.api.v1alpha1.Container.rlimits:type_name -> nri.pkg.api.v1alpha1.POSIXRlimit -+ 22, // 36: nri.pkg.api.v1alpha1.Hooks.prestart:type_name -> nri.pkg.api.v1alpha1.Hook -+ 22, // 37: nri.pkg.api.v1alpha1.Hooks.create_runtime:type_name -> nri.pkg.api.v1alpha1.Hook -+ 22, // 38: nri.pkg.api.v1alpha1.Hooks.create_container:type_name -> nri.pkg.api.v1alpha1.Hook -+ 22, // 39: nri.pkg.api.v1alpha1.Hooks.start_container:type_name -> nri.pkg.api.v1alpha1.Hook -+ 22, // 40: nri.pkg.api.v1alpha1.Hooks.poststart:type_name -> nri.pkg.api.v1alpha1.Hook -+ 22, // 41: nri.pkg.api.v1alpha1.Hooks.poststop:type_name -> nri.pkg.api.v1alpha1.Hook -+ 39, // 42: nri.pkg.api.v1alpha1.Hook.timeout:type_name -> nri.pkg.api.v1alpha1.OptionalInt -+ 24, // 43: nri.pkg.api.v1alpha1.LinuxContainer.namespaces:type_name -> nri.pkg.api.v1alpha1.LinuxNamespace -+ 25, // 44: nri.pkg.api.v1alpha1.LinuxContainer.devices:type_name -> nri.pkg.api.v1alpha1.LinuxDevice -+ 27, // 45: nri.pkg.api.v1alpha1.LinuxContainer.resources:type_name -> nri.pkg.api.v1alpha1.LinuxResources -+ 39, // 46: nri.pkg.api.v1alpha1.LinuxContainer.oom_score_adj:type_name -> nri.pkg.api.v1alpha1.OptionalInt -+ 45, // 47: nri.pkg.api.v1alpha1.LinuxDevice.file_mode:type_name -> nri.pkg.api.v1alpha1.OptionalFileMode -+ 41, // 48: nri.pkg.api.v1alpha1.LinuxDevice.uid:type_name -> nri.pkg.api.v1alpha1.OptionalUInt32 -+ 41, // 49: nri.pkg.api.v1alpha1.LinuxDevice.gid:type_name -> nri.pkg.api.v1alpha1.OptionalUInt32 -+ 42, // 50: nri.pkg.api.v1alpha1.LinuxDeviceCgroup.major:type_name -> nri.pkg.api.v1alpha1.OptionalInt64 -+ 42, // 51: nri.pkg.api.v1alpha1.LinuxDeviceCgroup.minor:type_name -> nri.pkg.api.v1alpha1.OptionalInt64 -+ 28, // 52: nri.pkg.api.v1alpha1.LinuxResources.memory:type_name -> nri.pkg.api.v1alpha1.LinuxMemory -+ 29, // 53: nri.pkg.api.v1alpha1.LinuxResources.cpu:type_name -> nri.pkg.api.v1alpha1.LinuxCPU -+ 30, // 54: nri.pkg.api.v1alpha1.LinuxResources.hugepage_limits:type_name -> nri.pkg.api.v1alpha1.HugepageLimit -+ 38, // 55: nri.pkg.api.v1alpha1.LinuxResources.blockio_class:type_name -> nri.pkg.api.v1alpha1.OptionalString -+ 38, // 56: nri.pkg.api.v1alpha1.LinuxResources.rdt_class:type_name -> nri.pkg.api.v1alpha1.OptionalString -+ 50, // 57: nri.pkg.api.v1alpha1.LinuxResources.unified:type_name -> nri.pkg.api.v1alpha1.LinuxResources.UnifiedEntry -+ 26, // 58: nri.pkg.api.v1alpha1.LinuxResources.devices:type_name -> nri.pkg.api.v1alpha1.LinuxDeviceCgroup -+ 42, // 59: nri.pkg.api.v1alpha1.LinuxMemory.limit:type_name -> nri.pkg.api.v1alpha1.OptionalInt64 -+ 42, // 60: nri.pkg.api.v1alpha1.LinuxMemory.reservation:type_name -> nri.pkg.api.v1alpha1.OptionalInt64 -+ 42, // 61: nri.pkg.api.v1alpha1.LinuxMemory.swap:type_name -> nri.pkg.api.v1alpha1.OptionalInt64 -+ 42, // 62: nri.pkg.api.v1alpha1.LinuxMemory.kernel:type_name -> nri.pkg.api.v1alpha1.OptionalInt64 -+ 42, // 63: nri.pkg.api.v1alpha1.LinuxMemory.kernel_tcp:type_name -> nri.pkg.api.v1alpha1.OptionalInt64 -+ 43, // 64: nri.pkg.api.v1alpha1.LinuxMemory.swappiness:type_name -> nri.pkg.api.v1alpha1.OptionalUInt64 -+ 44, // 65: nri.pkg.api.v1alpha1.LinuxMemory.disable_oom_killer:type_name -> nri.pkg.api.v1alpha1.OptionalBool -+ 44, // 66: nri.pkg.api.v1alpha1.LinuxMemory.use_hierarchy:type_name -> nri.pkg.api.v1alpha1.OptionalBool -+ 43, // 67: nri.pkg.api.v1alpha1.LinuxCPU.shares:type_name -> nri.pkg.api.v1alpha1.OptionalUInt64 -+ 42, // 68: nri.pkg.api.v1alpha1.LinuxCPU.quota:type_name -> nri.pkg.api.v1alpha1.OptionalInt64 -+ 43, // 69: nri.pkg.api.v1alpha1.LinuxCPU.period:type_name -> nri.pkg.api.v1alpha1.OptionalUInt64 -+ 42, // 70: nri.pkg.api.v1alpha1.LinuxCPU.realtime_runtime:type_name -> nri.pkg.api.v1alpha1.OptionalInt64 -+ 43, // 71: nri.pkg.api.v1alpha1.LinuxCPU.realtime_period:type_name -> nri.pkg.api.v1alpha1.OptionalUInt64 -+ 51, // 72: nri.pkg.api.v1alpha1.ContainerAdjustment.annotations:type_name -> nri.pkg.api.v1alpha1.ContainerAdjustment.AnnotationsEntry -+ 20, // 73: nri.pkg.api.v1alpha1.ContainerAdjustment.mounts:type_name -> nri.pkg.api.v1alpha1.Mount -+ 37, // 74: nri.pkg.api.v1alpha1.ContainerAdjustment.env:type_name -> nri.pkg.api.v1alpha1.KeyValue -+ 21, // 75: nri.pkg.api.v1alpha1.ContainerAdjustment.hooks:type_name -> nri.pkg.api.v1alpha1.Hooks -+ 33, // 76: nri.pkg.api.v1alpha1.ContainerAdjustment.linux:type_name -> nri.pkg.api.v1alpha1.LinuxContainerAdjustment -+ 31, // 77: nri.pkg.api.v1alpha1.ContainerAdjustment.rlimits:type_name -> nri.pkg.api.v1alpha1.POSIXRlimit -+ 25, // 78: nri.pkg.api.v1alpha1.LinuxContainerAdjustment.devices:type_name -> nri.pkg.api.v1alpha1.LinuxDevice -+ 27, // 79: nri.pkg.api.v1alpha1.LinuxContainerAdjustment.resources:type_name -> nri.pkg.api.v1alpha1.LinuxResources -+ 35, // 80: nri.pkg.api.v1alpha1.ContainerUpdate.linux:type_name -> nri.pkg.api.v1alpha1.LinuxContainerUpdate -+ 27, // 81: nri.pkg.api.v1alpha1.LinuxContainerUpdate.resources:type_name -> nri.pkg.api.v1alpha1.LinuxResources -+ 2, // 82: nri.pkg.api.v1alpha1.Runtime.RegisterPlugin:input_type -> nri.pkg.api.v1alpha1.RegisterPluginRequest -+ 3, // 83: nri.pkg.api.v1alpha1.Runtime.UpdateContainers:input_type -> nri.pkg.api.v1alpha1.UpdateContainersRequest -+ 5, // 84: nri.pkg.api.v1alpha1.Plugin.Configure:input_type -> nri.pkg.api.v1alpha1.ConfigureRequest -+ 7, // 85: nri.pkg.api.v1alpha1.Plugin.Synchronize:input_type -> nri.pkg.api.v1alpha1.SynchronizeRequest -+ 16, // 86: nri.pkg.api.v1alpha1.Plugin.Shutdown:input_type -> nri.pkg.api.v1alpha1.Empty -+ 9, // 87: nri.pkg.api.v1alpha1.Plugin.CreateContainer:input_type -> nri.pkg.api.v1alpha1.CreateContainerRequest -+ 11, // 88: nri.pkg.api.v1alpha1.Plugin.UpdateContainer:input_type -> nri.pkg.api.v1alpha1.UpdateContainerRequest -+ 13, // 89: nri.pkg.api.v1alpha1.Plugin.StopContainer:input_type -> nri.pkg.api.v1alpha1.StopContainerRequest -+ 15, // 90: nri.pkg.api.v1alpha1.Plugin.StateChange:input_type -> nri.pkg.api.v1alpha1.StateChangeEvent -+ 16, // 91: nri.pkg.api.v1alpha1.Runtime.RegisterPlugin:output_type -> nri.pkg.api.v1alpha1.Empty -+ 4, // 92: nri.pkg.api.v1alpha1.Runtime.UpdateContainers:output_type -> nri.pkg.api.v1alpha1.UpdateContainersResponse -+ 6, // 93: nri.pkg.api.v1alpha1.Plugin.Configure:output_type -> nri.pkg.api.v1alpha1.ConfigureResponse -+ 8, // 94: nri.pkg.api.v1alpha1.Plugin.Synchronize:output_type -> nri.pkg.api.v1alpha1.SynchronizeResponse -+ 16, // 95: nri.pkg.api.v1alpha1.Plugin.Shutdown:output_type -> nri.pkg.api.v1alpha1.Empty -+ 10, // 96: nri.pkg.api.v1alpha1.Plugin.CreateContainer:output_type -> nri.pkg.api.v1alpha1.CreateContainerResponse -+ 12, // 97: nri.pkg.api.v1alpha1.Plugin.UpdateContainer:output_type -> nri.pkg.api.v1alpha1.UpdateContainerResponse -+ 14, // 98: nri.pkg.api.v1alpha1.Plugin.StopContainer:output_type -> nri.pkg.api.v1alpha1.StopContainerResponse -+ 16, // 99: nri.pkg.api.v1alpha1.Plugin.StateChange:output_type -> nri.pkg.api.v1alpha1.Empty -+ 91, // [91:100] is the sub-list for method output_type -+ 82, // [82:91] is the sub-list for method input_type -+ 82, // [82:82] is the sub-list for extension type_name -+ 82, // [82:82] is the sub-list for extension extendee -+ 0, // [0:82] is the sub-list for field type_name -+} -+ -+func init() { file_pkg_api_api_proto_init() } -+func file_pkg_api_api_proto_init() { -+ if File_pkg_api_api_proto != nil { -+ return -+ } -+ if !protoimpl.UnsafeEnabled { -+ file_pkg_api_api_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*RegisterPluginRequest); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*UpdateContainersRequest); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*UpdateContainersResponse); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*ConfigureRequest); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*ConfigureResponse); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*SynchronizeRequest); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*SynchronizeResponse); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*CreateContainerRequest); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*CreateContainerResponse); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*UpdateContainerRequest); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*UpdateContainerResponse); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*StopContainerRequest); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*StopContainerResponse); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*StateChangeEvent); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*Empty); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*PodSandbox); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*LinuxPodSandbox); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*Container); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*Mount); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*Hooks); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*Hook); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*LinuxContainer); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*LinuxNamespace); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*LinuxDevice); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*LinuxDeviceCgroup); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*LinuxResources); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*LinuxMemory); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*LinuxCPU); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*HugepageLimit); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*POSIXRlimit); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*ContainerAdjustment); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*LinuxContainerAdjustment); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*ContainerUpdate); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*LinuxContainerUpdate); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*ContainerEviction); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*KeyValue); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*OptionalString); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*OptionalInt); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*OptionalInt32); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*OptionalUInt32); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*OptionalInt64); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*OptionalUInt64); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*OptionalBool); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_pkg_api_api_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*OptionalFileMode); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ } -+ type x struct{} -+ out := protoimpl.TypeBuilder{ -+ File: protoimpl.DescBuilder{ -+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), -+ RawDescriptor: file_pkg_api_api_proto_rawDesc, -+ NumEnums: 2, -+ NumMessages: 50, -+ NumExtensions: 0, -+ NumServices: 2, -+ }, -+ GoTypes: file_pkg_api_api_proto_goTypes, -+ DependencyIndexes: file_pkg_api_api_proto_depIdxs, -+ EnumInfos: file_pkg_api_api_proto_enumTypes, -+ MessageInfos: file_pkg_api_api_proto_msgTypes, -+ }.Build() -+ File_pkg_api_api_proto = out.File -+ file_pkg_api_api_proto_rawDesc = nil -+ file_pkg_api_api_proto_goTypes = nil -+ file_pkg_api_api_proto_depIdxs = nil -+} -diff --git a/vendor/github.com/containerd/nri/pkg/api/api.proto b/vendor/github.com/containerd/nri/pkg/api/api.proto -new file mode 100755 -index 0000000..7c64ade ---- /dev/null -+++ b/vendor/github.com/containerd/nri/pkg/api/api.proto -@@ -0,0 +1,450 @@ -+/* -+ Copyright The containerd 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 nri.pkg.api.v1alpha1; -+ -+option go_package = "github.com/containerd/nri/pkg/api;api"; -+ -+// Runtime service is the public API runtimes expose for NRI plugins. -+// On this interface RPC requests are initiated by the plugin. This -+// only covers plugin registration and unsolicited container updates. -+// The rest of the API is defined by the Plugin service. -+service Runtime { -+ // RegisterPlugin registers the plugin with the runtime. -+ rpc RegisterPlugin(RegisterPluginRequest) returns (Empty); -+ // UpdateContainers requests unsolicited updates to a set of containers. -+ rpc UpdateContainers(UpdateContainersRequest) returns (UpdateContainersResponse); -+} -+ -+message RegisterPluginRequest { -+ // Name of the plugin to register. -+ string plugin_name = 1; -+ // Plugin invocation index. Plugins are called in ascending index order. -+ string plugin_idx = 2; -+} -+ -+message UpdateContainersRequest { -+ // List of containers to update. -+ repeated ContainerUpdate update = 1; -+ // List of containers to evict. -+ repeated ContainerEviction evict = 2; -+} -+ -+message UpdateContainersResponse { -+ // Containers that the runtime failed to udpate. -+ repeated ContainerUpdate failed = 1; -+} -+ -+ -+// -+// Plugin is the API NRI uses to interact with plugins. It is used to -+// - configure a plugin and subscribe it for lifecycle events -+// - synchronize the state of a plugin with that of the runtime -+// - hook a plugin into the lifecycle events of its interest -+// -+// During configuration the plugin tells the runtime which lifecycle events -+// it wishes to get hooked into. Once configured, the plugin is synchronized -+// with the runtime by receiving the list of pods and containers known to -+// the runtime. The plugin can request changes to any of the containers in -+// response. After initial synchronization the plugin starts receiving the -+// events it subscribed for as they occur in the runtime. For container -+// creation, update, and stop events, the plugin can request changes, both -+// to the container that triggered the event or any other existing container -+// in the runtime. -+// -+// For a subset of the container lifecycle events, NRI defines an additional -+// Post-variant of the event. These variants are defined for CreateContainer, -+// StartContainer, and UpdateContainer. For creation and update, these events -+// can be used by plugins to discover the full extent of changes applied to -+// the container, including any changes made by other active plugins. -+// -+service Plugin { -+ // Configure the plugin and get its event subscription. -+ rpc Configure(ConfigureRequest) returns (ConfigureResponse); -+ -+ // Synchronize the plugin with the state of the runtime. -+ rpc Synchronize(SynchronizeRequest) returns (SynchronizeResponse); -+ -+ // Shutdown a plugin (let it know the runtime is going down). -+ rpc Shutdown(Empty) returns (Empty); -+ -+ // CreateContainer relays the corresponding request to the plugin. In -+ // response, the plugin can adjust the container being created, and -+ // update other containers in the runtime. Container adjustment can -+ // alter labels, annotations, mounts, devices, environment variables, -+ // OCI hooks, and assigned container resources. Updates can alter -+ // assigned container resources. -+ rpc CreateContainer(CreateContainerRequest) returns (CreateContainerResponse); -+ -+ // UpdateContainer relays the corresponding request to the plugin. -+ // The plugin can alter how the container is updated and request updates -+ // to additional containers in the runtime. -+ rpc UpdateContainer(UpdateContainerRequest) returns (UpdateContainerResponse); -+ -+ // StopContainer relays the corresponding request to the plugin. The plugin -+ // can update any of the remaining containers in the runtime in response. -+ rpc StopContainer(StopContainerRequest) returns (StopContainerResponse); -+ -+ // StateChange relays any remaining pod or container lifecycle/state change -+ // events the plugin has subscribed for. These can be used to trigger any -+ // plugin-specific processing which needs to occur in connection with any of -+ // these events. -+ rpc StateChange(StateChangeEvent) returns (Empty); -+} -+ -+message ConfigureRequest { -+ // Any plugin-specific data, if present among the NRI configuration. -+ string config = 1; -+ // Name of the runtime NRI is running in. -+ string runtime_name = 2; -+ // Version of the runtime NRI is running in. -+ string runtime_version = 3; -+} -+ -+message ConfigureResponse { -+ // Events to subscribe the plugin for. Each bit set corresponds to an -+ // enumerated Event. -+ int32 events = 2; -+} -+ -+message SynchronizeRequest { -+ // Pods known to the runtime. -+ repeated PodSandbox pods = 1; -+ // Containers known to the runtime. -+ repeated Container containers = 2; -+} -+ -+message SynchronizeResponse { -+ // Updates to containers requested by the plugin. -+ repeated ContainerUpdate update = 1; -+} -+ -+message CreateContainerRequest { -+ // Pod of container being created. -+ PodSandbox pod = 1; -+ // Container being created. -+ Container container = 2; -+} -+ -+message CreateContainerResponse { -+ // Requested adjustments to container being created. -+ ContainerAdjustment adjust = 1; -+ // Requested updates to other existing containers. -+ repeated ContainerUpdate update = 2; -+ // Requested eviction of existing containers. -+ repeated ContainerEviction evict = 3; -+} -+ -+message UpdateContainerRequest { -+ // Pod of container being updated. -+ PodSandbox pod = 1; -+ // Container being updated. -+ Container container = 2; -+ // Resources to update. -+ LinuxResources linux_resources = 3; -+} -+ -+message UpdateContainerResponse { -+ // Requested updates to containers. -+ repeated ContainerUpdate update = 1; -+ // Requested eviction of containers. -+ repeated ContainerEviction evict = 2; -+} -+ -+message StopContainerRequest { -+ // Pod of container being stopped. -+ PodSandbox pod = 1; -+ // Container being stopped. -+ Container container = 2; -+} -+ -+message StopContainerResponse { -+ // Requested updates to containers. -+ repeated ContainerUpdate update = 1; -+} -+ -+message StateChangeEvent { -+ // Event type of notification. -+ Event event = 1; -+ // Pod this notification is sent for. If this event is related to a container, -+ // pod is set to the pod of the container. -+ PodSandbox pod = 2; -+ // Container this notification is sent for. If the event is related to a pod, -+ // container is nil. -+ Container container = 3; -+} -+ -+// Empty response for those *Requests that are semantically events. -+message Empty {} -+ -+// Events that plugins can subscribe to in ConfigureResponse. -+enum Event { -+ UNKNOWN = 0; -+ RUN_POD_SANDBOX = 1; -+ STOP_POD_SANDBOX = 2; -+ REMOVE_POD_SANDBOX = 3; -+ CREATE_CONTAINER = 4; -+ POST_CREATE_CONTAINER = 5; -+ START_CONTAINER = 6; -+ POST_START_CONTAINER = 7; -+ UPDATE_CONTAINER = 8; -+ POST_UPDATE_CONTAINER = 9; -+ STOP_CONTAINER = 10; -+ REMOVE_CONTAINER = 11; -+ LAST = 12; -+} -+ -+// Pod metadata that is considered relevant for a plugin. -+message PodSandbox { -+ string id = 1; -+ string name = 2; -+ string uid = 3; -+ string namespace = 4; -+ map labels = 5; -+ map annotations = 6; -+ string runtime_handler = 7; -+ LinuxPodSandbox linux = 8; -+ uint32 pid = 9; // for NRI v1 emulation -+} -+ -+// PodSandbox linux-specific metadata -+message LinuxPodSandbox { -+ LinuxResources pod_overhead = 1; -+ LinuxResources pod_resources = 2; -+ string cgroup_parent = 3; -+ string cgroups_path = 4; // for NRI v1 emulation -+ repeated LinuxNamespace namespaces = 5; // for NRI v1 emulation -+ LinuxResources resources = 6; // for NRI v1 emulation -+} -+ -+// Container metadata that is considered relevant for a plugin. -+message Container { -+ string id = 1; -+ string pod_sandbox_id = 2; -+ string name = 3; -+ ContainerState state = 4; -+ map labels = 5; -+ map annotations = 6; -+ repeated string args = 7; -+ repeated string env = 8; -+ repeated Mount mounts = 9; -+ Hooks hooks = 10; -+ LinuxContainer linux = 11; -+ uint32 pid = 12; // for NRI v1 emulation -+ repeated POSIXRlimit rlimits = 13; -+} -+ -+// Possible container states. -+enum ContainerState { -+ CONTAINER_UNKNOWN = 0; -+ CONTAINER_CREATED = 1; -+ CONTAINER_PAUSED = 2; // is this useful/necessary ? -+ CONTAINER_RUNNING = 3; -+ CONTAINER_STOPPED = 4; -+} -+ -+// A container mount. -+message Mount { -+ string destination = 1; -+ string type = 2; -+ string source = 3; -+ repeated string options = 4; -+} -+ -+// Container OCI hooks. -+message Hooks { -+ repeated Hook prestart = 1; -+ repeated Hook create_runtime = 2; -+ repeated Hook create_container = 3; -+ repeated Hook start_container = 4; -+ repeated Hook poststart = 5; -+ repeated Hook poststop = 6; -+} -+ -+// One OCI hook. -+message Hook { -+ string path = 1; -+ repeated string args = 2; -+ repeated string env = 3; -+ OptionalInt timeout = 4; -+} -+ -+// Container (linux) metadata. -+message LinuxContainer { -+ repeated LinuxNamespace namespaces = 1; -+ repeated LinuxDevice devices = 2; -+ LinuxResources resources = 3; -+ OptionalInt oom_score_adj = 4; -+ string cgroups_path = 5; -+} -+ -+// A linux namespace. -+message LinuxNamespace { -+ string type = 1; -+ string path = 2; -+} -+ -+// A container (linux) device. -+message LinuxDevice { -+ string path = 1; -+ string type = 2; -+ int64 major = 3; -+ int64 minor = 4; -+ OptionalFileMode file_mode = 5; -+ OptionalUInt32 uid = 6; -+ OptionalUInt32 gid = 7; -+} -+ -+// A linux device cgroup controller rule. -+message LinuxDeviceCgroup { -+ bool allow = 1; -+ string type = 2; -+ OptionalInt64 major = 3; -+ OptionalInt64 minor = 4; -+ string access = 5; -+} -+ -+// Container (linux) resources. -+message LinuxResources { -+ LinuxMemory memory = 1; -+ LinuxCPU cpu = 2; -+ repeated HugepageLimit hugepage_limits = 3; -+ OptionalString blockio_class = 4; -+ OptionalString rdt_class = 5; -+ map unified = 6; -+ repeated LinuxDeviceCgroup devices = 7; // for NRI v1 emulation -+} -+ -+// Memory-related parts of (linux) resources. -+message LinuxMemory { -+ OptionalInt64 limit = 1; -+ OptionalInt64 reservation = 2; -+ OptionalInt64 swap = 3; -+ OptionalInt64 kernel = 4; -+ OptionalInt64 kernel_tcp = 5; -+ OptionalUInt64 swappiness = 6; -+ OptionalBool disable_oom_killer = 7; -+ OptionalBool use_hierarchy = 8; -+} -+ -+// CPU-related parts of (linux) resources. -+message LinuxCPU { -+ OptionalUInt64 shares = 1; -+ OptionalInt64 quota = 2; -+ OptionalUInt64 period = 3; -+ OptionalInt64 realtime_runtime = 4; -+ OptionalUInt64 realtime_period = 5; -+ string cpus = 6; -+ string mems = 7; -+} -+ -+// Container huge page limit. -+message HugepageLimit { -+ string page_size = 1; -+ uint64 limit = 2; -+} -+ -+// Container rlimits -+message POSIXRlimit { -+ string type = 1; -+ uint64 hard = 2; -+ uint64 soft = 3; -+} -+ -+// Requested adjustments to a container being created. -+message ContainerAdjustment { -+ map annotations = 2; -+ repeated Mount mounts = 3; -+ repeated KeyValue env = 4; -+ Hooks hooks = 5; -+ LinuxContainerAdjustment linux = 6; -+ repeated POSIXRlimit rlimits = 7; -+} -+ -+// Adjustments to (linux) resources. -+message LinuxContainerAdjustment { -+ repeated LinuxDevice devices = 1; -+ LinuxResources resources = 2; -+ string cgroups_path = 3; -+} -+ -+// Requested update to an already created container. -+message ContainerUpdate { -+ string container_id = 1; -+ LinuxContainerUpdate linux = 2; -+ bool ignore_failure = 3; -+} -+ -+// Updates to (linux) resources. -+message LinuxContainerUpdate { -+ LinuxResources resources = 1; -+} -+ -+// Request to evict (IOW unsolicitedly stop) a container. -+message ContainerEviction { -+ // Container to evict. -+ string container_id = 1; -+ // Human-readable reason for eviction. -+ string reason = 2; -+} -+ -+// KeyValue represents an environment variable. -+message KeyValue { -+ string key = 1; -+ string value = 2; -+} -+ -+// An optional string value. -+message OptionalString { -+ string value = 1; -+} -+ -+// An optional signed integer value. -+message OptionalInt { -+ int64 value = 1; -+} -+ -+// An optional 32-bit signed integer value. -+message OptionalInt32 { -+ int32 value = 1; -+} -+ -+// An optional 32-bit unsigned integer value. -+message OptionalUInt32 { -+ uint32 value = 1; -+} -+ -+// An optional 64-bit signed integer value. -+message OptionalInt64 { -+ int64 value = 1; -+} -+ -+// An optional 64-bit unsigned integer value. -+message OptionalUInt64 { -+ uint64 value = 1; -+} -+ -+// An optional boolean value. -+message OptionalBool { -+ bool value = 1; -+} -+ -+// An optional value of file permissions. -+message OptionalFileMode { -+ uint32 value = 1; -+} -diff --git a/vendor/github.com/containerd/nri/pkg/api/api_ttrpc.pb.go b/vendor/github.com/containerd/nri/pkg/api/api_ttrpc.pb.go -new file mode 100755 -index 0000000..c047ec5 ---- /dev/null -+++ b/vendor/github.com/containerd/nri/pkg/api/api_ttrpc.pb.go -@@ -0,0 +1,192 @@ -+// Code generated by protoc-gen-go-ttrpc. DO NOT EDIT. -+// source: pkg/api/api.proto -+package api -+ -+import ( -+ context "context" -+ ttrpc "github.com/containerd/ttrpc" -+) -+ -+type RuntimeService interface { -+ RegisterPlugin(context.Context, *RegisterPluginRequest) (*Empty, error) -+ UpdateContainers(context.Context, *UpdateContainersRequest) (*UpdateContainersResponse, error) -+} -+ -+func RegisterRuntimeService(srv *ttrpc.Server, svc RuntimeService) { -+ srv.RegisterService("nri.pkg.api.v1alpha1.Runtime", &ttrpc.ServiceDesc{ -+ Methods: map[string]ttrpc.Method{ -+ "RegisterPlugin": func(ctx context.Context, unmarshal func(interface{}) error) (interface{}, error) { -+ var req RegisterPluginRequest -+ if err := unmarshal(&req); err != nil { -+ return nil, err -+ } -+ return svc.RegisterPlugin(ctx, &req) -+ }, -+ "UpdateContainers": func(ctx context.Context, unmarshal func(interface{}) error) (interface{}, error) { -+ var req UpdateContainersRequest -+ if err := unmarshal(&req); err != nil { -+ return nil, err -+ } -+ return svc.UpdateContainers(ctx, &req) -+ }, -+ }, -+ }) -+} -+ -+type runtimeClient struct { -+ client *ttrpc.Client -+} -+ -+func NewRuntimeClient(client *ttrpc.Client) RuntimeService { -+ return &runtimeClient{ -+ client: client, -+ } -+} -+ -+func (c *runtimeClient) RegisterPlugin(ctx context.Context, req *RegisterPluginRequest) (*Empty, error) { -+ var resp Empty -+ if err := c.client.Call(ctx, "nri.pkg.api.v1alpha1.Runtime", "RegisterPlugin", req, &resp); err != nil { -+ return nil, err -+ } -+ return &resp, nil -+} -+ -+func (c *runtimeClient) UpdateContainers(ctx context.Context, req *UpdateContainersRequest) (*UpdateContainersResponse, error) { -+ var resp UpdateContainersResponse -+ if err := c.client.Call(ctx, "nri.pkg.api.v1alpha1.Runtime", "UpdateContainers", req, &resp); err != nil { -+ return nil, err -+ } -+ return &resp, nil -+} -+ -+type PluginService interface { -+ Configure(context.Context, *ConfigureRequest) (*ConfigureResponse, error) -+ Synchronize(context.Context, *SynchronizeRequest) (*SynchronizeResponse, error) -+ Shutdown(context.Context, *Empty) (*Empty, error) -+ CreateContainer(context.Context, *CreateContainerRequest) (*CreateContainerResponse, error) -+ UpdateContainer(context.Context, *UpdateContainerRequest) (*UpdateContainerResponse, error) -+ StopContainer(context.Context, *StopContainerRequest) (*StopContainerResponse, error) -+ StateChange(context.Context, *StateChangeEvent) (*Empty, error) -+} -+ -+func RegisterPluginService(srv *ttrpc.Server, svc PluginService) { -+ srv.RegisterService("nri.pkg.api.v1alpha1.Plugin", &ttrpc.ServiceDesc{ -+ Methods: map[string]ttrpc.Method{ -+ "Configure": func(ctx context.Context, unmarshal func(interface{}) error) (interface{}, error) { -+ var req ConfigureRequest -+ if err := unmarshal(&req); err != nil { -+ return nil, err -+ } -+ return svc.Configure(ctx, &req) -+ }, -+ "Synchronize": func(ctx context.Context, unmarshal func(interface{}) error) (interface{}, error) { -+ var req SynchronizeRequest -+ if err := unmarshal(&req); err != nil { -+ return nil, err -+ } -+ return svc.Synchronize(ctx, &req) -+ }, -+ "Shutdown": func(ctx context.Context, unmarshal func(interface{}) error) (interface{}, error) { -+ var req Empty -+ if err := unmarshal(&req); err != nil { -+ return nil, err -+ } -+ return svc.Shutdown(ctx, &req) -+ }, -+ "CreateContainer": func(ctx context.Context, unmarshal func(interface{}) error) (interface{}, error) { -+ var req CreateContainerRequest -+ if err := unmarshal(&req); err != nil { -+ return nil, err -+ } -+ return svc.CreateContainer(ctx, &req) -+ }, -+ "UpdateContainer": func(ctx context.Context, unmarshal func(interface{}) error) (interface{}, error) { -+ var req UpdateContainerRequest -+ if err := unmarshal(&req); err != nil { -+ return nil, err -+ } -+ return svc.UpdateContainer(ctx, &req) -+ }, -+ "StopContainer": func(ctx context.Context, unmarshal func(interface{}) error) (interface{}, error) { -+ var req StopContainerRequest -+ if err := unmarshal(&req); err != nil { -+ return nil, err -+ } -+ return svc.StopContainer(ctx, &req) -+ }, -+ "StateChange": func(ctx context.Context, unmarshal func(interface{}) error) (interface{}, error) { -+ var req StateChangeEvent -+ if err := unmarshal(&req); err != nil { -+ return nil, err -+ } -+ return svc.StateChange(ctx, &req) -+ }, -+ }, -+ }) -+} -+ -+type pluginClient struct { -+ client *ttrpc.Client -+} -+ -+func NewPluginClient(client *ttrpc.Client) PluginService { -+ return &pluginClient{ -+ client: client, -+ } -+} -+ -+func (c *pluginClient) Configure(ctx context.Context, req *ConfigureRequest) (*ConfigureResponse, error) { -+ var resp ConfigureResponse -+ if err := c.client.Call(ctx, "nri.pkg.api.v1alpha1.Plugin", "Configure", req, &resp); err != nil { -+ return nil, err -+ } -+ return &resp, nil -+} -+ -+func (c *pluginClient) Synchronize(ctx context.Context, req *SynchronizeRequest) (*SynchronizeResponse, error) { -+ var resp SynchronizeResponse -+ if err := c.client.Call(ctx, "nri.pkg.api.v1alpha1.Plugin", "Synchronize", req, &resp); err != nil { -+ return nil, err -+ } -+ return &resp, nil -+} -+ -+func (c *pluginClient) Shutdown(ctx context.Context, req *Empty) (*Empty, error) { -+ var resp Empty -+ if err := c.client.Call(ctx, "nri.pkg.api.v1alpha1.Plugin", "Shutdown", req, &resp); err != nil { -+ return nil, err -+ } -+ return &resp, nil -+} -+ -+func (c *pluginClient) CreateContainer(ctx context.Context, req *CreateContainerRequest) (*CreateContainerResponse, error) { -+ var resp CreateContainerResponse -+ if err := c.client.Call(ctx, "nri.pkg.api.v1alpha1.Plugin", "CreateContainer", req, &resp); err != nil { -+ return nil, err -+ } -+ return &resp, nil -+} -+ -+func (c *pluginClient) UpdateContainer(ctx context.Context, req *UpdateContainerRequest) (*UpdateContainerResponse, error) { -+ var resp UpdateContainerResponse -+ if err := c.client.Call(ctx, "nri.pkg.api.v1alpha1.Plugin", "UpdateContainer", req, &resp); err != nil { -+ return nil, err -+ } -+ return &resp, nil -+} -+ -+func (c *pluginClient) StopContainer(ctx context.Context, req *StopContainerRequest) (*StopContainerResponse, error) { -+ var resp StopContainerResponse -+ if err := c.client.Call(ctx, "nri.pkg.api.v1alpha1.Plugin", "StopContainer", req, &resp); err != nil { -+ return nil, err -+ } -+ return &resp, nil -+} -+ -+func (c *pluginClient) StateChange(ctx context.Context, req *StateChangeEvent) (*Empty, error) { -+ var resp Empty -+ if err := c.client.Call(ctx, "nri.pkg.api.v1alpha1.Plugin", "StateChange", req, &resp); err != nil { -+ return nil, err -+ } -+ return &resp, nil -+} -diff --git a/vendor/github.com/containerd/nri/pkg/api/device.go b/vendor/github.com/containerd/nri/pkg/api/device.go -new file mode 100755 -index 0000000..c7307b1 ---- /dev/null -+++ b/vendor/github.com/containerd/nri/pkg/api/device.go -@@ -0,0 +1,89 @@ -+/* -+ Copyright The containerd 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 api -+ -+import ( -+ rspec "github.com/opencontainers/runtime-spec/specs-go" -+) -+ -+// FromOCILinuxDevices returns a device slice from an OCI runtime Spec. -+func FromOCILinuxDevices(o []rspec.LinuxDevice) []*LinuxDevice { -+ var devices []*LinuxDevice -+ for _, d := range o { -+ devices = append(devices, &LinuxDevice{ -+ Path: d.Path, -+ Type: d.Type, -+ Major: d.Major, -+ Minor: d.Minor, -+ FileMode: FileMode(d.FileMode), -+ Uid: UInt32(d.UID), -+ Gid: UInt32(d.GID), -+ }) -+ } -+ return devices -+} -+ -+// ToOCI returns the linux devices for an OCI runtime Spec. -+func (d *LinuxDevice) ToOCI() rspec.LinuxDevice { -+ if d == nil { -+ return rspec.LinuxDevice{} -+ } -+ -+ return rspec.LinuxDevice{ -+ Path: d.Path, -+ Type: d.Type, -+ Major: d.Major, -+ Minor: d.Minor, -+ FileMode: d.FileMode.Get(), -+ UID: d.Uid.Get(), -+ GID: d.Gid.Get(), -+ } -+} -+ -+// AccessString returns an OCI access string for the device. -+func (d *LinuxDevice) AccessString() string { -+ r, w, m := "r", "w", "" -+ -+ if mode := d.FileMode.Get(); mode != nil { -+ perm := mode.Perm() -+ if (perm & 0444) != 0 { -+ r = "r" -+ } -+ if (perm & 0222) != 0 { -+ w = "w" -+ } -+ } -+ if d.Type == "b" { -+ m = "m" -+ } -+ -+ return r + w + m -+} -+ -+// Cmp returns true if the devices are equal. -+func (d *LinuxDevice) Cmp(v *LinuxDevice) bool { -+ if v == nil { -+ return false -+ } -+ return d.Major != v.Major || d.Minor != v.Minor -+} -+ -+// IsMarkedForRemoval checks if a LinuxDevice is marked for removal. -+func (d *LinuxDevice) IsMarkedForRemoval() (string, bool) { -+ key, marked := IsMarkedForRemoval(d.Path) -+ return key, marked -+} -diff --git a/vendor/github.com/containerd/nri/pkg/api/doc.go b/vendor/github.com/containerd/nri/pkg/api/doc.go -new file mode 100755 -index 0000000..2413d02 ---- /dev/null -+++ b/vendor/github.com/containerd/nri/pkg/api/doc.go -@@ -0,0 +1,17 @@ -+/* -+ Copyright The containerd 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 api -diff --git a/vendor/github.com/containerd/nri/pkg/api/env.go b/vendor/github.com/containerd/nri/pkg/api/env.go -new file mode 100755 -index 0000000..0f6e711 ---- /dev/null -+++ b/vendor/github.com/containerd/nri/pkg/api/env.go -@@ -0,0 +1,60 @@ -+/* -+ Copyright The containerd 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 api -+ -+import ( -+ "strings" -+) -+ -+// ToOCI returns an OCI Env entry for the KeyValue. -+func (e *KeyValue) ToOCI() string { -+ return e.Key + "=" + e.Value -+} -+ -+// FromOCIEnv returns KeyValues from an OCI runtime Spec environment. -+func FromOCIEnv(in []string) []*KeyValue { -+ if in == nil { -+ return nil -+ } -+ out := []*KeyValue{} -+ for _, keyval := range in { -+ var key, val string -+ split := strings.SplitN(keyval, "=", 2) -+ switch len(split) { -+ case 0: -+ continue -+ case 1: -+ key = split[0] -+ case 2: -+ key = split[0] -+ val = split[1] -+ default: -+ val = strings.Join(split[1:], "=") -+ } -+ out = append(out, &KeyValue{ -+ Key: key, -+ Value: val, -+ }) -+ } -+ return out -+} -+ -+// IsMarkedForRemoval checks if an environment variable is marked for removal. -+func (e *KeyValue) IsMarkedForRemoval() (string, bool) { -+ key, marked := IsMarkedForRemoval(e.Key) -+ return key, marked -+} -diff --git a/vendor/github.com/containerd/nri/pkg/api/event.go b/vendor/github.com/containerd/nri/pkg/api/event.go -new file mode 100755 -index 0000000..260460a ---- /dev/null -+++ b/vendor/github.com/containerd/nri/pkg/api/event.go -@@ -0,0 +1,172 @@ -+/* -+ Copyright The containerd 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 api -+ -+import ( -+ "fmt" -+ "strings" -+) -+ -+const ( -+ // ValidEvents is the event mask of all valid events. -+ ValidEvents = EventMask((1 << (Event_LAST - 1)) - 1) -+) -+ -+// nolint -+type ( -+ // Define *Request/*Response type aliases for *Event/Empty pairs. -+ -+ StateChangeResponse = Empty -+ RunPodSandboxRequest = StateChangeEvent -+ RunPodSandboxResponse = Empty -+ StopPodSandboxRequest = StateChangeEvent -+ StopPodSandboxResponse = Empty -+ RemovePodSandboxRequest = StateChangeEvent -+ RemovePodSandboxResponse = Empty -+ StartContainerRequest = StateChangeEvent -+ StartContainerResponse = Empty -+ RemoveContainerRequest = StateChangeEvent -+ RemoveContainerResponse = Empty -+ PostCreateContainerRequest = StateChangeEvent -+ PostCreateContainerResponse = Empty -+ PostStartContainerRequest = StateChangeEvent -+ PostStartContainerResponse = Empty -+ PostUpdateContainerRequest = StateChangeEvent -+ PostUpdateContainerResponse = Empty -+ -+ ShutdownRequest = Empty -+ ShutdownResponse = Empty -+) -+ -+// EventMask corresponds to a set of enumerated Events. -+type EventMask int32 -+ -+// ParseEventMask parses a string representation into an EventMask. -+func ParseEventMask(events ...string) (EventMask, error) { -+ var mask EventMask -+ -+ bits := map[string]Event{ -+ "runpodsandbox": Event_RUN_POD_SANDBOX, -+ "stoppodsandbox": Event_STOP_POD_SANDBOX, -+ "removepodsandbox": Event_REMOVE_POD_SANDBOX, -+ "createcontainer": Event_CREATE_CONTAINER, -+ "postcreatecontainer": Event_POST_CREATE_CONTAINER, -+ "startcontainer": Event_START_CONTAINER, -+ "poststartcontainer": Event_POST_START_CONTAINER, -+ "updatecontainer": Event_UPDATE_CONTAINER, -+ "postupdatecontainer": Event_POST_UPDATE_CONTAINER, -+ "stopcontainer": Event_STOP_CONTAINER, -+ "removecontainer": Event_REMOVE_CONTAINER, -+ } -+ -+ for _, event := range events { -+ lcEvents := strings.ToLower(event) -+ for _, name := range strings.Split(lcEvents, ",") { -+ switch name { -+ case "all": -+ mask |= ValidEvents -+ continue -+ case "pod", "podsandbox": -+ for name, bit := range bits { -+ if strings.Contains(name, "pod") { -+ mask.Set(bit) -+ } -+ } -+ continue -+ case "container": -+ for name, bit := range bits { -+ if strings.Contains(name, "container") { -+ mask.Set(bit) -+ } -+ } -+ continue -+ } -+ -+ bit, ok := bits[strings.TrimSpace(name)] -+ if !ok { -+ return 0, fmt.Errorf("unknown event %q", name) -+ } -+ mask.Set(bit) -+ } -+ } -+ -+ return mask, nil -+} -+ -+// MustParseEventMask parses the given events, panic()ing on errors. -+func MustParseEventMask(events ...string) EventMask { -+ mask, err := ParseEventMask(events...) -+ if err != nil { -+ panic(fmt.Sprintf("failed to parse events %s", strings.Join(events, " "))) -+ } -+ return mask -+} -+ -+// PrettyString returns a human-readable string representation of an EventMask. -+func (m *EventMask) PrettyString() string { -+ names := map[Event]string{ -+ Event_RUN_POD_SANDBOX: "RunPodSandbox", -+ Event_STOP_POD_SANDBOX: "StopPodSandbox", -+ Event_REMOVE_POD_SANDBOX: "RemovePodSandbox", -+ Event_CREATE_CONTAINER: "CreateContainer", -+ Event_POST_CREATE_CONTAINER: "PostCreateContainer", -+ Event_START_CONTAINER: "StartContainer", -+ Event_POST_START_CONTAINER: "PostStartContainer", -+ Event_UPDATE_CONTAINER: "UpdateContainer", -+ Event_POST_UPDATE_CONTAINER: "PostUpdateContainer", -+ Event_STOP_CONTAINER: "StopContainer", -+ Event_REMOVE_CONTAINER: "RemoveContainer", -+ } -+ -+ mask := *m -+ events, sep := "", "" -+ -+ for bit := Event_UNKNOWN + 1; bit <= Event_LAST; bit++ { -+ if mask.IsSet(bit) { -+ events += sep + names[bit] -+ sep = "," -+ mask.Clear(bit) -+ } -+ } -+ -+ if mask != 0 { -+ events += sep + fmt.Sprintf("unknown(0x%x)", mask) -+ } -+ -+ return events -+} -+ -+// Set sets the given Events in the mask. -+func (m *EventMask) Set(events ...Event) *EventMask { -+ for _, e := range events { -+ *m |= (1 << (e - 1)) -+ } -+ return m -+} -+ -+// Clear clears the given Events in the mask. -+func (m *EventMask) Clear(events ...Event) *EventMask { -+ for _, e := range events { -+ *m &^= (1 << (e - 1)) -+ } -+ return m -+} -+ -+// IsSet check if the given Event is set in the mask. -+func (m *EventMask) IsSet(e Event) bool { -+ return *m&(1<<(e-1)) != 0 -+} -diff --git a/vendor/github.com/containerd/nri/pkg/api/helpers.go b/vendor/github.com/containerd/nri/pkg/api/helpers.go -new file mode 100755 -index 0000000..c721270 ---- /dev/null -+++ b/vendor/github.com/containerd/nri/pkg/api/helpers.go -@@ -0,0 +1,59 @@ -+/* -+ Copyright The containerd 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 api -+ -+// DupStringSlice creates a copy of a string slice. -+func DupStringSlice(in []string) []string { -+ if in == nil { -+ return nil -+ } -+ out := make([]string, len(in)) -+ copy(out, in) -+ return out -+} -+ -+// DupStringMap creates a copy of a map with string keys and values. -+func DupStringMap(in map[string]string) map[string]string { -+ if in == nil { -+ return nil -+ } -+ out := map[string]string{} -+ for k, v := range in { -+ out[k] = v -+ } -+ return out -+} -+ -+// IsMarkedForRemoval checks if a key is marked for removal. -+// -+// The key can be an annotation name, a mount container path, a device path, -+// or an environment variable name. These are all marked for removal in -+// adjustments by preceding their corresponding key with a '-'. -+func IsMarkedForRemoval(key string) (string, bool) { -+ if key == "" { -+ return "", false -+ } -+ if key[0] != '-' { -+ return key, false -+ } -+ return key[1:], true -+} -+ -+// MarkForRemoval returns a key marked for removal. -+func MarkForRemoval(key string) string { -+ return "-" + key -+} -diff --git a/vendor/github.com/containerd/nri/pkg/api/hooks.go b/vendor/github.com/containerd/nri/pkg/api/hooks.go -new file mode 100755 -index 0000000..47dd96e ---- /dev/null -+++ b/vendor/github.com/containerd/nri/pkg/api/hooks.go -@@ -0,0 +1,103 @@ -+/* -+ Copyright The containerd 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 api -+ -+import ( -+ rspec "github.com/opencontainers/runtime-spec/specs-go" -+) -+ -+// Append appends the given hooks to the existing ones. -+func (hooks *Hooks) Append(h *Hooks) *Hooks { -+ if h == nil { -+ return hooks -+ } -+ hooks.Prestart = append(hooks.Prestart, h.Prestart...) -+ hooks.CreateRuntime = append(hooks.CreateRuntime, h.CreateRuntime...) -+ hooks.CreateContainer = append(hooks.CreateContainer, h.CreateContainer...) -+ hooks.StartContainer = append(hooks.StartContainer, h.StartContainer...) -+ hooks.Poststart = append(hooks.Poststart, h.Poststart...) -+ hooks.Poststop = append(hooks.Poststop, h.Poststop...) -+ -+ return hooks -+} -+ -+// Hooks returns itself it any of its hooks is set. Otherwise it returns nil. -+func (hooks *Hooks) Hooks() *Hooks { -+ if hooks == nil { -+ return nil -+ } -+ -+ if len(hooks.Prestart) > 0 { -+ return hooks -+ } -+ if len(hooks.CreateRuntime) > 0 { -+ return hooks -+ } -+ if len(hooks.CreateContainer) > 0 { -+ return hooks -+ } -+ if len(hooks.StartContainer) > 0 { -+ return hooks -+ } -+ if len(hooks.Poststart) > 0 { -+ return hooks -+ } -+ if len(hooks.Poststop) > 0 { -+ return hooks -+ } -+ -+ return nil -+} -+ -+// ToOCI returns the hook for an OCI runtime Spec. -+func (h *Hook) ToOCI() rspec.Hook { -+ return rspec.Hook{ -+ Path: h.Path, -+ Args: DupStringSlice(h.Args), -+ Env: DupStringSlice(h.Env), -+ Timeout: h.Timeout.Get(), -+ } -+} -+ -+// FromOCIHooks returns hooks from an OCI runtime Spec. -+func FromOCIHooks(o *rspec.Hooks) *Hooks { -+ if o == nil { -+ return nil -+ } -+ return &Hooks{ -+ Prestart: FromOCIHookSlice(o.Prestart), -+ CreateRuntime: FromOCIHookSlice(o.CreateRuntime), -+ CreateContainer: FromOCIHookSlice(o.CreateContainer), -+ StartContainer: FromOCIHookSlice(o.StartContainer), -+ Poststart: FromOCIHookSlice(o.Poststart), -+ Poststop: FromOCIHookSlice(o.Poststop), -+ } -+} -+ -+// FromOCIHookSlice returns a hook slice from an OCI runtime Spec. -+func FromOCIHookSlice(o []rspec.Hook) []*Hook { -+ var hooks []*Hook -+ for _, h := range o { -+ hooks = append(hooks, &Hook{ -+ Path: h.Path, -+ Args: DupStringSlice(h.Args), -+ Env: DupStringSlice(h.Env), -+ Timeout: Int(h.Timeout), -+ }) -+ } -+ return hooks -+} -diff --git a/vendor/github.com/containerd/nri/pkg/api/mount.go b/vendor/github.com/containerd/nri/pkg/api/mount.go -new file mode 100755 -index 0000000..e35bf5b ---- /dev/null -+++ b/vendor/github.com/containerd/nri/pkg/api/mount.go -@@ -0,0 +1,88 @@ -+/* -+ Copyright The containerd 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 api -+ -+import ( -+ "sort" -+ -+ rspec "github.com/opencontainers/runtime-spec/specs-go" -+) -+ -+const ( -+ // SELinuxRelabel is a Mount pseudo-option to request relabeling. -+ SELinuxRelabel = "relabel" -+) -+ -+// FromOCIMounts returns a Mount slice for an OCI runtime Spec. -+func FromOCIMounts(o []rspec.Mount) []*Mount { -+ var mounts []*Mount -+ for _, m := range o { -+ mounts = append(mounts, &Mount{ -+ Destination: m.Destination, -+ Type: m.Type, -+ Source: m.Source, -+ Options: DupStringSlice(m.Options), -+ }) -+ } -+ return mounts -+} -+ -+// ToOCI returns a Mount for an OCI runtime Spec. -+func (m *Mount) ToOCI(propagationQuery *string) rspec.Mount { -+ o := rspec.Mount{ -+ Destination: m.Destination, -+ Type: m.Type, -+ Source: m.Source, -+ } -+ for _, opt := range m.Options { -+ o.Options = append(o.Options, opt) -+ if propagationQuery != nil && (opt == "rprivate" || opt == "rshared" || opt == "rslave") { -+ *propagationQuery = opt -+ } -+ } -+ return o -+} -+ -+// Cmp returns true if the mounts are equal. -+func (m *Mount) Cmp(v *Mount) bool { -+ if v == nil { -+ return false -+ } -+ if m.Destination != v.Destination || m.Type != v.Type || m.Source != v.Source || -+ len(m.Options) != len(v.Options) { -+ return false -+ } -+ -+ mOpts := make([]string, len(m.Options)) -+ vOpts := make([]string, len(m.Options)) -+ sort.Strings(mOpts) -+ sort.Strings(vOpts) -+ -+ for i, o := range mOpts { -+ if vOpts[i] != o { -+ return false -+ } -+ } -+ -+ return true -+} -+ -+// IsMarkedForRemoval checks if a Mount is marked for removal. -+func (m *Mount) IsMarkedForRemoval() (string, bool) { -+ key, marked := IsMarkedForRemoval(m.Destination) -+ return key, marked -+} -diff --git a/vendor/github.com/containerd/nri/pkg/api/namespace.go b/vendor/github.com/containerd/nri/pkg/api/namespace.go -new file mode 100755 -index 0000000..201106d ---- /dev/null -+++ b/vendor/github.com/containerd/nri/pkg/api/namespace.go -@@ -0,0 +1,33 @@ -+/* -+ Copyright The containerd 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 api -+ -+import ( -+ rspec "github.com/opencontainers/runtime-spec/specs-go" -+) -+ -+// FromOCILinuxNamespaces returns a namespace slice from an OCI runtime Spec. -+func FromOCILinuxNamespaces(o []rspec.LinuxNamespace) []*LinuxNamespace { -+ var namespaces []*LinuxNamespace -+ for _, ns := range o { -+ namespaces = append(namespaces, &LinuxNamespace{ -+ Type: string(ns.Type), -+ Path: ns.Path, -+ }) -+ } -+ return namespaces -+} -diff --git a/vendor/github.com/containerd/nri/pkg/api/optional.go b/vendor/github.com/containerd/nri/pkg/api/optional.go -new file mode 100755 -index 0000000..c8020f4 ---- /dev/null -+++ b/vendor/github.com/containerd/nri/pkg/api/optional.go -@@ -0,0 +1,341 @@ -+/* -+ Copyright The containerd 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 api -+ -+import ( -+ "os" -+) -+ -+// -+// XXX FIXME: -+// -+// The optional interface constructor should be updated/split up -+// to avoid having to take an interface{} argument. Instead The -+// optional types should have a -+// - constructor taking the underlying native type -+// - a Copy() function for copying them -+// - a FromPointer constructor to create them from an optionally nil -+// pointer to the underlying native type (to help constructing from -+// structures that use a pointer to the native underlying type to -+// denote optionality (OCI Spec mostly)) -+// Creating from any other type should use one of these with any explicit -+// cast for the argument as necessary. -+// -+ -+// String creates an Optional wrapper from its argument. -+func String(v interface{}) *OptionalString { -+ var value string -+ -+ switch o := v.(type) { -+ case string: -+ value = o -+ case *string: -+ if o == nil { -+ return nil -+ } -+ value = *o -+ case *OptionalString: -+ if o == nil { -+ return nil -+ } -+ value = o.Value -+ default: -+ return nil -+ } -+ -+ return &OptionalString{ -+ Value: value, -+ } -+} -+ -+// Get returns nil if its value is unset or a pointer to the value itself. -+func (o *OptionalString) Get() *string { -+ if o == nil { -+ return nil -+ } -+ v := o.Value -+ return &v -+} -+ -+// Int creates an Optional wrapper from its argument. -+func Int(v interface{}) *OptionalInt { -+ var value int64 -+ -+ switch o := v.(type) { -+ case int: -+ value = int64(o) -+ case *int: -+ if o == nil { -+ return nil -+ } -+ value = int64(*o) -+ case *OptionalInt: -+ if o == nil { -+ return nil -+ } -+ value = o.Value -+ default: -+ return nil -+ } -+ -+ return &OptionalInt{ -+ Value: value, -+ } -+} -+ -+// Get returns nil if its value is unset or a pointer to the value itself. -+func (o *OptionalInt) Get() *int { -+ if o == nil { -+ return nil -+ } -+ v := int(o.Value) -+ return &v -+} -+ -+// Int32 creates an Optional wrapper from its argument. -+func Int32(v interface{}) *OptionalInt32 { -+ var value int32 -+ -+ switch o := v.(type) { -+ case int32: -+ value = o -+ case *int32: -+ if o == nil { -+ return nil -+ } -+ value = *o -+ case *OptionalInt32: -+ if o == nil { -+ return nil -+ } -+ value = o.Value -+ default: -+ return nil -+ } -+ -+ return &OptionalInt32{ -+ Value: value, -+ } -+} -+ -+// Get returns nil if its value is unset or a pointer to the value itself. -+func (o *OptionalInt32) Get() *int32 { -+ if o == nil { -+ return nil -+ } -+ v := o.Value -+ return &v -+} -+ -+// UInt32 creates an Optional wrapper from its argument. -+func UInt32(v interface{}) *OptionalUInt32 { -+ var value uint32 -+ -+ switch o := v.(type) { -+ case uint32: -+ value = o -+ case *uint32: -+ if o == nil { -+ return nil -+ } -+ value = *o -+ case *OptionalUInt32: -+ if o == nil { -+ return nil -+ } -+ value = o.Value -+ default: -+ return nil -+ } -+ -+ return &OptionalUInt32{ -+ Value: value, -+ } -+} -+ -+// Get returns nil if its value is unset or a pointer to the value itself. -+func (o *OptionalUInt32) Get() *uint32 { -+ if o == nil { -+ return nil -+ } -+ v := o.Value -+ return &v -+} -+ -+// Int64 creates an Optional wrapper from its argument. -+func Int64(v interface{}) *OptionalInt64 { -+ var value int64 -+ -+ switch o := v.(type) { -+ case int: -+ value = int64(o) -+ case uint: -+ value = int64(o) -+ case uint64: -+ value = int64(o) -+ case int64: -+ value = o -+ case *int64: -+ if o == nil { -+ return nil -+ } -+ value = *o -+ case *uint64: -+ if o == nil { -+ return nil -+ } -+ value = int64(*o) -+ case *OptionalInt64: -+ if o == nil { -+ return nil -+ } -+ value = o.Value -+ default: -+ return nil -+ } -+ -+ return &OptionalInt64{ -+ Value: value, -+ } -+} -+ -+// Get returns nil if its value is unset or a pointer to the value itself. -+func (o *OptionalInt64) Get() *int64 { -+ if o == nil { -+ return nil -+ } -+ v := o.Value -+ return &v -+} -+ -+// UInt64 creates an Optional wrapper from its argument. -+func UInt64(v interface{}) *OptionalUInt64 { -+ var value uint64 -+ -+ switch o := v.(type) { -+ case int: -+ value = uint64(o) -+ case uint: -+ value = uint64(o) -+ case int64: -+ value = uint64(o) -+ case uint64: -+ value = o -+ case *int64: -+ if o == nil { -+ return nil -+ } -+ value = uint64(*o) -+ case *uint64: -+ if o == nil { -+ return nil -+ } -+ value = *o -+ case *OptionalUInt64: -+ if o == nil { -+ return nil -+ } -+ value = o.Value -+ default: -+ return nil -+ } -+ -+ return &OptionalUInt64{ -+ Value: value, -+ } -+} -+ -+// Get returns nil if its value is unset or a pointer to the value itself. -+func (o *OptionalUInt64) Get() *uint64 { -+ if o == nil { -+ return nil -+ } -+ v := o.Value -+ return &v -+} -+ -+// Bool creates an Optional wrapper from its argument. -+func Bool(v interface{}) *OptionalBool { -+ var value bool -+ -+ switch o := v.(type) { -+ case bool: -+ value = o -+ case *bool: -+ if o == nil { -+ return nil -+ } -+ value = *o -+ case *OptionalBool: -+ if o == nil { -+ return nil -+ } -+ value = o.Value -+ default: -+ return nil -+ } -+ -+ return &OptionalBool{ -+ Value: value, -+ } -+} -+ -+// Get returns nil if its value is unset or a pointer to the value itself. -+func (o *OptionalBool) Get() *bool { -+ if o == nil { -+ return nil -+ } -+ v := o.Value -+ return &v -+} -+ -+// FileMode creates an Optional wrapper from its argument. -+func FileMode(v interface{}) *OptionalFileMode { -+ var value os.FileMode -+ -+ switch o := v.(type) { -+ case *os.FileMode: -+ if o == nil { -+ return nil -+ } -+ value = *o -+ case os.FileMode: -+ value = o -+ case *OptionalFileMode: -+ if o == nil { -+ return nil -+ } -+ value = os.FileMode(o.Value) -+ case uint32: -+ value = os.FileMode(o) -+ default: -+ return nil -+ } -+ -+ return &OptionalFileMode{ -+ Value: uint32(value), -+ } -+} -+ -+// Get returns nil if its value is unset or a pointer to the value itself. -+func (o *OptionalFileMode) Get() *os.FileMode { -+ if o == nil { -+ return nil -+ } -+ v := os.FileMode(o.Value) -+ return &v -+} -diff --git a/vendor/github.com/containerd/nri/pkg/api/plugin.go b/vendor/github.com/containerd/nri/pkg/api/plugin.go -new file mode 100755 -index 0000000..c4fe8fc ---- /dev/null -+++ b/vendor/github.com/containerd/nri/pkg/api/plugin.go -@@ -0,0 +1,58 @@ -+/* -+ Copyright The containerd 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 api -+ -+import ( -+ "fmt" -+ "strings" -+) -+ -+const ( -+ // DefaultSocketPath is the default socket path for external plugins. -+ DefaultSocketPath = "/var/run/nri/nri.sock" -+ // PluginSocketEnvVar is used to inform plugins about pre-connected sockets. -+ PluginSocketEnvVar = "NRI_PLUGIN_SOCKET" -+ // PluginNameEnvVar is used to inform NRI-launched plugins about their name. -+ PluginNameEnvVar = "NRI_PLUGIN_NAME" -+ // PluginIdxEnvVar is used to inform NRI-launched plugins about their ID. -+ PluginIdxEnvVar = "NRI_PLUGIN_IDX" -+) -+ -+// ParsePluginName parses the (file)name of a plugin into an index and a base. -+func ParsePluginName(name string) (string, string, error) { -+ split := strings.SplitN(name, "-", 2) -+ if len(split) < 2 { -+ return "", "", fmt.Errorf("invalid plugin name %q, idx-pluginname expected", name) -+ } -+ -+ if err := CheckPluginIndex(split[0]); err != nil { -+ return "", "", err -+ } -+ -+ return split[0], split[1], nil -+} -+ -+// CheckPluginIndex checks the validity of a plugin index. -+func CheckPluginIndex(idx string) error { -+ if len(idx) != 2 { -+ return fmt.Errorf("invalid plugin index %q, must be 2 digits", idx) -+ } -+ if !('0' <= idx[0] && idx[0] <= '9') || !('0' <= idx[1] && idx[1] <= '9') { -+ return fmt.Errorf("invalid plugin index %q (not [0-9][0-9])", idx) -+ } -+ return nil -+} -diff --git a/vendor/github.com/containerd/nri/pkg/api/resources.go b/vendor/github.com/containerd/nri/pkg/api/resources.go -new file mode 100755 -index 0000000..41acddd ---- /dev/null -+++ b/vendor/github.com/containerd/nri/pkg/api/resources.go -@@ -0,0 +1,233 @@ -+/* -+ Copyright The containerd 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 api -+ -+import ( -+ rspec "github.com/opencontainers/runtime-spec/specs-go" -+ cri "k8s.io/cri-api/pkg/apis/runtime/v1" -+) -+ -+// FromOCILinuxResources returns resources from an OCI runtime Spec. -+func FromOCILinuxResources(o *rspec.LinuxResources, ann map[string]string) *LinuxResources { -+ if o == nil { -+ return nil -+ } -+ l := &LinuxResources{} -+ if m := o.Memory; m != nil { -+ l.Memory = &LinuxMemory{ -+ Limit: Int64(m.Limit), -+ Reservation: Int64(m.Reservation), -+ Swap: Int64(m.Swap), -+ Kernel: Int64(m.Kernel), -+ KernelTcp: Int64(m.KernelTCP), -+ Swappiness: UInt64(m.Swappiness), -+ DisableOomKiller: Bool(m.DisableOOMKiller), -+ UseHierarchy: Bool(m.UseHierarchy), -+ } -+ } -+ if c := o.CPU; c != nil { -+ l.Cpu = &LinuxCPU{ -+ Shares: UInt64(c.Shares), -+ Quota: Int64(c.Quota), -+ Period: UInt64(c.Period), -+ RealtimeRuntime: Int64(c.RealtimeRuntime), -+ RealtimePeriod: UInt64(c.RealtimePeriod), -+ Cpus: c.Cpus, -+ Mems: c.Mems, -+ } -+ } -+ for _, h := range o.HugepageLimits { -+ l.HugepageLimits = append(l.HugepageLimits, &HugepageLimit{ -+ PageSize: h.Pagesize, -+ Limit: h.Limit, -+ }) -+ } -+ for _, d := range o.Devices { -+ l.Devices = append(l.Devices, &LinuxDeviceCgroup{ -+ Allow: d.Allow, -+ Type: d.Type, -+ Major: Int64(d.Major), -+ Minor: Int64(d.Minor), -+ Access: d.Access, -+ }) -+ } -+ return l -+} -+ -+func FromCRILinuxResources(c *cri.LinuxContainerResources) *LinuxResources { -+ if c == nil { -+ return nil -+ } -+ shares, quota, period := uint64(c.CpuShares), c.CpuQuota, uint64(c.CpuPeriod) -+ r := &LinuxResources{ -+ Cpu: &LinuxCPU{ -+ Shares: UInt64(&shares), -+ Quota: Int64("a), -+ Period: UInt64(&period), -+ Cpus: c.CpusetCpus, -+ Mems: c.CpusetMems, -+ }, -+ Memory: &LinuxMemory{ -+ Limit: Int64(&c.MemoryLimitInBytes), -+ }, -+ } -+ for _, l := range c.HugepageLimits { -+ r.HugepageLimits = append(r.HugepageLimits, -+ &HugepageLimit{ -+ PageSize: l.PageSize, -+ Limit: l.Limit, -+ }) -+ } -+ return r -+} -+ -+// ToOCI returns resources for an OCI runtime Spec. -+func (r *LinuxResources) ToOCI() *rspec.LinuxResources { -+ if r == nil { -+ return nil -+ } -+ o := &rspec.LinuxResources{ -+ CPU: &rspec.LinuxCPU{}, -+ Memory: &rspec.LinuxMemory{}, -+ } -+ if r.Memory != nil { -+ o.Memory = &rspec.LinuxMemory{ -+ Limit: r.Memory.Limit.Get(), -+ Reservation: r.Memory.Reservation.Get(), -+ Swap: r.Memory.Swap.Get(), -+ Kernel: r.Memory.Kernel.Get(), -+ KernelTCP: r.Memory.KernelTcp.Get(), -+ Swappiness: r.Memory.Swappiness.Get(), -+ DisableOOMKiller: r.Memory.DisableOomKiller.Get(), -+ UseHierarchy: r.Memory.UseHierarchy.Get(), -+ } -+ } -+ if r.Cpu != nil { -+ o.CPU = &rspec.LinuxCPU{ -+ Shares: r.Cpu.Shares.Get(), -+ Quota: r.Cpu.Quota.Get(), -+ Period: r.Cpu.Period.Get(), -+ RealtimeRuntime: r.Cpu.RealtimeRuntime.Get(), -+ RealtimePeriod: r.Cpu.RealtimePeriod.Get(), -+ Cpus: r.Cpu.Cpus, -+ Mems: r.Cpu.Mems, -+ } -+ } -+ for _, l := range r.HugepageLimits { -+ o.HugepageLimits = append(o.HugepageLimits, rspec.LinuxHugepageLimit{ -+ Pagesize: l.PageSize, -+ Limit: l.Limit, -+ }) -+ } -+ if len(r.Unified) != 0 { -+ o.Unified = make(map[string]string) -+ for k, v := range r.Unified { -+ o.Unified[k] = v -+ } -+ } -+ for _, d := range r.Devices { -+ o.Devices = append(o.Devices, rspec.LinuxDeviceCgroup{ -+ Allow: d.Allow, -+ Type: d.Type, -+ Major: d.Major.Get(), -+ Minor: d.Minor.Get(), -+ Access: d.Access, -+ }) -+ } -+ -+ return o -+} -+ -+// ToCRI returns resources for CRI. -+func (r *LinuxResources) ToCRI(oomScoreAdj int64) *cri.LinuxContainerResources { -+ if r == nil { -+ return nil -+ } -+ o := &cri.LinuxContainerResources{} -+ if r.Memory != nil { -+ o.MemoryLimitInBytes = r.Memory.GetLimit().GetValue() -+ o.OomScoreAdj = oomScoreAdj -+ } -+ if r.Cpu != nil { -+ o.CpuShares = int64(r.Cpu.GetShares().GetValue()) -+ o.CpuPeriod = int64(r.Cpu.GetPeriod().GetValue()) -+ o.CpuQuota = r.Cpu.GetQuota().GetValue() -+ o.CpusetCpus = r.Cpu.Cpus -+ o.CpusetMems = r.Cpu.Mems -+ } -+ for _, l := range r.HugepageLimits { -+ o.HugepageLimits = append(o.HugepageLimits, &cri.HugepageLimit{ -+ PageSize: l.PageSize, -+ Limit: l.Limit, -+ }) -+ } -+ if len(r.Unified) != 0 { -+ o.Unified = make(map[string]string) -+ for k, v := range r.Unified { -+ o.Unified[k] = v -+ } -+ } -+ -+ return o -+} -+ -+// Copy creates a copy of the resources. -+func (r *LinuxResources) Copy() *LinuxResources { -+ if r == nil { -+ return nil -+ } -+ o := &LinuxResources{} -+ if r.Memory != nil { -+ o.Memory = &LinuxMemory{ -+ Limit: Int64(r.Memory.GetLimit()), -+ Reservation: Int64(r.Memory.GetReservation()), -+ Swap: Int64(r.Memory.GetSwap()), -+ Kernel: Int64(r.Memory.GetKernel()), -+ KernelTcp: Int64(r.Memory.GetKernelTcp()), -+ Swappiness: UInt64(r.Memory.GetSwappiness()), -+ DisableOomKiller: Bool(r.Memory.GetDisableOomKiller()), -+ UseHierarchy: Bool(r.Memory.GetUseHierarchy()), -+ } -+ } -+ if r.Cpu != nil { -+ o.Cpu = &LinuxCPU{ -+ Shares: UInt64(r.Cpu.GetShares()), -+ Quota: Int64(r.Cpu.GetQuota()), -+ Period: UInt64(r.Cpu.GetPeriod()), -+ RealtimeRuntime: Int64(r.Cpu.GetRealtimeRuntime()), -+ RealtimePeriod: UInt64(r.Cpu.GetRealtimePeriod()), -+ Cpus: r.Cpu.GetCpus(), -+ Mems: r.Cpu.GetMems(), -+ } -+ } -+ for _, l := range r.HugepageLimits { -+ o.HugepageLimits = append(o.HugepageLimits, &HugepageLimit{ -+ PageSize: l.PageSize, -+ Limit: l.Limit, -+ }) -+ } -+ if len(r.Unified) != 0 { -+ o.Unified = make(map[string]string) -+ for k, v := range r.Unified { -+ o.Unified[k] = v -+ } -+ } -+ o.BlockioClass = String(r.BlockioClass) -+ o.RdtClass = String(r.RdtClass) -+ -+ return o -+} -diff --git a/vendor/github.com/containerd/nri/pkg/api/update.go b/vendor/github.com/containerd/nri/pkg/api/update.go -new file mode 100755 -index 0000000..9bfe1bf ---- /dev/null -+++ b/vendor/github.com/containerd/nri/pkg/api/update.go -@@ -0,0 +1,186 @@ -+/* -+ Copyright The containerd 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 api -+ -+//nolint -+// SetContainerId sets the id of the container to update. -+func (u *ContainerUpdate) SetContainerId(id string) { -+ u.ContainerId = id -+} -+ -+// SetLinuxMemoryLimit records setting the memory limit for a container. -+func (u *ContainerUpdate) SetLinuxMemoryLimit(value int64) { -+ u.initLinuxResourcesMemory() -+ u.Linux.Resources.Memory.Limit = Int64(value) -+} -+ -+// SetLinuxMemoryReservation records setting the memory reservation for a container. -+func (u *ContainerUpdate) SetLinuxMemoryReservation(value int64) { -+ u.initLinuxResourcesMemory() -+ u.Linux.Resources.Memory.Reservation = Int64(value) -+} -+ -+// SetLinuxMemorySwap records records setting the memory swap limit for a container. -+func (u *ContainerUpdate) SetLinuxMemorySwap(value int64) { -+ u.initLinuxResourcesMemory() -+ u.Linux.Resources.Memory.Swap = Int64(value) -+} -+ -+// SetLinuxMemoryKernel records setting the memory kernel limit for a container. -+func (u *ContainerUpdate) SetLinuxMemoryKernel(value int64) { -+ u.initLinuxResourcesMemory() -+ u.Linux.Resources.Memory.Kernel = Int64(value) -+} -+ -+// SetLinuxMemoryKernelTCP records setting the memory kernel TCP limit for a container. -+func (u *ContainerUpdate) SetLinuxMemoryKernelTCP(value int64) { -+ u.initLinuxResourcesMemory() -+ u.Linux.Resources.Memory.KernelTcp = Int64(value) -+} -+ -+// SetLinuxMemorySwappiness records setting the memory swappiness for a container. -+func (u *ContainerUpdate) SetLinuxMemorySwappiness(value uint64) { -+ u.initLinuxResourcesMemory() -+ u.Linux.Resources.Memory.Swappiness = UInt64(value) -+} -+ -+// SetLinuxMemoryDisableOomKiller records disabling the OOM killer for a container. -+func (u *ContainerUpdate) SetLinuxMemoryDisableOomKiller() { -+ u.initLinuxResourcesMemory() -+ u.Linux.Resources.Memory.DisableOomKiller = Bool(true) -+} -+ -+// SetLinuxMemoryUseHierarchy records enabling hierarchical memory accounting for a container. -+func (u *ContainerUpdate) SetLinuxMemoryUseHierarchy() { -+ u.initLinuxResourcesMemory() -+ u.Linux.Resources.Memory.UseHierarchy = Bool(true) -+} -+ -+// SetLinuxCPUShares records setting the scheduler's CPU shares for a container. -+func (u *ContainerUpdate) SetLinuxCPUShares(value uint64) { -+ u.initLinuxResourcesCPU() -+ u.Linux.Resources.Cpu.Shares = UInt64(value) -+} -+ -+// SetLinuxCPUQuota records setting the scheduler's CPU quota for a container. -+func (u *ContainerUpdate) SetLinuxCPUQuota(value int64) { -+ u.initLinuxResourcesCPU() -+ u.Linux.Resources.Cpu.Quota = Int64(value) -+} -+ -+// SetLinuxCPUPeriod records setting the scheduler's CPU period for a container. -+func (u *ContainerUpdate) SetLinuxCPUPeriod(value int64) { -+ u.initLinuxResourcesCPU() -+ u.Linux.Resources.Cpu.Period = UInt64(value) -+} -+ -+// SetLinuxCPURealtimeRuntime records setting the scheduler's realtime runtime for a container. -+func (u *ContainerUpdate) SetLinuxCPURealtimeRuntime(value int64) { -+ u.initLinuxResourcesCPU() -+ u.Linux.Resources.Cpu.RealtimeRuntime = Int64(value) -+} -+ -+// SetLinuxCPURealtimePeriod records setting the scheduler's realtime period for a container. -+func (u *ContainerUpdate) SetLinuxCPURealtimePeriod(value uint64) { -+ u.initLinuxResourcesCPU() -+ u.Linux.Resources.Cpu.RealtimePeriod = UInt64(value) -+} -+ -+// SetLinuxCPUSetCPUs records setting the cpuset CPUs for a container. -+func (u *ContainerUpdate) SetLinuxCPUSetCPUs(value string) { -+ u.initLinuxResourcesCPU() -+ u.Linux.Resources.Cpu.Cpus = value -+} -+ -+// SetLinuxCPUSetMems records setting the cpuset memory for a container. -+func (u *ContainerUpdate) SetLinuxCPUSetMems(value string) { -+ u.initLinuxResourcesCPU() -+ u.Linux.Resources.Cpu.Mems = value -+} -+ -+// AddLinuxHugepageLimit records adding a hugepage limit for a container. -+func (u *ContainerUpdate) AddLinuxHugepageLimit(pageSize string, value uint64) { -+ u.initLinuxResources() -+ u.Linux.Resources.HugepageLimits = append(u.Linux.Resources.HugepageLimits, -+ &HugepageLimit{ -+ PageSize: pageSize, -+ Limit: value, -+ }) -+} -+ -+// SetLinuxBlockIOClass records setting the Block I/O class for a container. -+func (u *ContainerUpdate) SetLinuxBlockIOClass(value string) { -+ u.initLinuxResources() -+ u.Linux.Resources.BlockioClass = String(value) -+} -+ -+// SetLinuxRDTClass records setting the RDT class for a container. -+func (u *ContainerUpdate) SetLinuxRDTClass(value string) { -+ u.initLinuxResources() -+ u.Linux.Resources.RdtClass = String(value) -+} -+ -+// AddLinuxUnified sets a cgroupv2 unified resource. -+func (u *ContainerUpdate) AddLinuxUnified(key, value string) { -+ u.initLinuxResourcesUnified() -+ u.Linux.Resources.Unified[key] = value -+} -+ -+// SetIgnoreFailure marks an Update as ignored for failures. -+// Such updates will not prevent the related container operation -+// from succeeding if the update fails. -+func (u *ContainerUpdate) SetIgnoreFailure() { -+ u.IgnoreFailure = true -+} -+ -+// -+// Initializing a container update. -+// -+ -+func (u *ContainerUpdate) initLinux() { -+ if u.Linux == nil { -+ u.Linux = &LinuxContainerUpdate{} -+ } -+} -+ -+func (u *ContainerUpdate) initLinuxResources() { -+ u.initLinux() -+ if u.Linux.Resources == nil { -+ u.Linux.Resources = &LinuxResources{} -+ } -+} -+ -+func (u *ContainerUpdate) initLinuxResourcesMemory() { -+ u.initLinuxResources() -+ if u.Linux.Resources.Memory == nil { -+ u.Linux.Resources.Memory = &LinuxMemory{} -+ } -+} -+ -+func (u *ContainerUpdate) initLinuxResourcesCPU() { -+ u.initLinuxResources() -+ if u.Linux.Resources.Cpu == nil { -+ u.Linux.Resources.Cpu = &LinuxCPU{} -+ } -+} -+ -+func (u *ContainerUpdate) initLinuxResourcesUnified() { -+ u.initLinuxResources() -+ if u.Linux.Resources.Unified == nil { -+ u.Linux.Resources.Unified = make(map[string]string) -+ } -+} -diff --git a/vendor/github.com/containerd/nri/pkg/log/log.go b/vendor/github.com/containerd/nri/pkg/log/log.go -new file mode 100755 -index 0000000..91337b5 ---- /dev/null -+++ b/vendor/github.com/containerd/nri/pkg/log/log.go -@@ -0,0 +1,87 @@ -+/* -+ Copyright The containerd 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 log -+ -+import ( -+ "context" -+ -+ "github.com/sirupsen/logrus" -+) -+ -+var ( -+ log Logger = &fallbackLogger{} -+) -+ -+// Logger is the interface NRI uses for logging. -+type Logger interface { -+ Debugf(ctx context.Context, format string, args ...interface{}) -+ Infof(ctx context.Context, format string, args ...interface{}) -+ Warnf(ctx context.Context, format string, args ...interface{}) -+ Errorf(ctx context.Context, format string, args ...interface{}) -+} -+ -+// Set the logger used by NRI. -+func Set(l Logger) { -+ log = l -+} -+ -+// Get the logger used by NRI. -+func Get() Logger { -+ return log -+} -+ -+// Debugf logs a formatted debug message. -+func Debugf(ctx context.Context, format string, args ...interface{}) { -+ log.Debugf(ctx, format, args...) -+} -+ -+// Infof logs a formatted informational message. -+func Infof(ctx context.Context, format string, args ...interface{}) { -+ log.Infof(ctx, format, args...) -+} -+ -+// Warnf logs a formatted warning message. -+func Warnf(ctx context.Context, format string, args ...interface{}) { -+ log.Warnf(ctx, format, args...) -+} -+ -+// Errorf logs a formatted error message. -+func Errorf(ctx context.Context, format string, args ...interface{}) { -+ log.Errorf(ctx, format, args...) -+} -+ -+type fallbackLogger struct{} -+ -+// Debugf logs a formatted debug message. -+func (f *fallbackLogger) Debugf(ctx context.Context, format string, args ...interface{}) { -+ logrus.WithContext(ctx).Debugf(format, args...) -+} -+ -+// Infof logs a formatted informational message. -+func (f *fallbackLogger) Infof(ctx context.Context, format string, args ...interface{}) { -+ logrus.WithContext(ctx).Infof(format, args...) -+} -+ -+// Warnf logs a formatted warning message. -+func (f *fallbackLogger) Warnf(ctx context.Context, format string, args ...interface{}) { -+ logrus.WithContext(ctx).Warnf(format, args...) -+} -+ -+// Errorf logs a formatted error message. -+func (f *fallbackLogger) Errorf(ctx context.Context, format string, args ...interface{}) { -+ logrus.WithContext(ctx).Errorf(format, args...) -+} -diff --git a/vendor/github.com/containerd/nri/pkg/net/conn.go b/vendor/github.com/containerd/nri/pkg/net/conn.go -new file mode 100755 -index 0000000..db7d2bc ---- /dev/null -+++ b/vendor/github.com/containerd/nri/pkg/net/conn.go -@@ -0,0 +1,93 @@ -+/* -+ Copyright The containerd 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 net -+ -+import ( -+ "fmt" -+ "io" -+ "net" -+ "os" -+ "strconv" -+ "sync" -+) -+ -+// NewFdConn creates a net.Conn for the given (socket) fd. -+func NewFdConn(fd int) (net.Conn, error) { -+ f := os.NewFile(uintptr(fd), "fd #"+strconv.Itoa(fd)) -+ -+ conn, err := net.FileConn(f) -+ if err != nil { -+ return nil, fmt.Errorf("failed to create net.Conn for fd #%d: %w", fd, err) -+ } -+ f.Close() -+ -+ return conn, nil -+} -+ -+// connListener wraps a pre-connected socket in a net.Listener. -+type connListener struct { -+ next chan net.Conn -+ conn net.Conn -+ addr net.Addr -+ lock sync.RWMutex // for Close() -+ closed bool -+} -+ -+// NewConnListener wraps an existing net.Conn in a net.Listener. -+// -+// The first call to Accept() on the listener will return the wrapped -+// connection. Subsequent calls to Accept() block until the listener -+// is closed, then return io.EOF. Close() closes the listener and the -+// wrapped connection. -+func NewConnListener(conn net.Conn) net.Listener { -+ next := make(chan net.Conn, 1) -+ next <- conn -+ -+ return &connListener{ -+ next: next, -+ conn: conn, -+ addr: conn.LocalAddr(), -+ } -+} -+ -+// Accept returns the wrapped connection when it is called the first -+// time. Later calls to Accept block until the listener is closed, then -+// return io.EOF. -+func (l *connListener) Accept() (net.Conn, error) { -+ conn := <-l.next -+ if conn == nil { -+ return nil, io.EOF -+ } -+ return conn, nil -+} -+ -+// Close closes the listener and the wrapped connection. -+func (l *connListener) Close() error { -+ l.lock.Lock() -+ defer l.lock.Unlock() -+ if l.closed { -+ return nil -+ } -+ close(l.next) -+ l.closed = true -+ return l.conn.Close() -+} -+ -+// Addr returns the local address of the wrapped connection. -+func (l *connListener) Addr() net.Addr { -+ return l.addr -+} -diff --git a/vendor/github.com/containerd/nri/pkg/net/multiplex/mux.go b/vendor/github.com/containerd/nri/pkg/net/multiplex/mux.go -new file mode 100755 -index 0000000..fcce69f ---- /dev/null -+++ b/vendor/github.com/containerd/nri/pkg/net/multiplex/mux.go -@@ -0,0 +1,444 @@ -+/* -+ Copyright The containerd 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 multiplex -+ -+import ( -+ "encoding/binary" -+ "errors" -+ "fmt" -+ "io" -+ "net" -+ "sync" -+ "syscall" -+ "time" -+ -+ nrinet "github.com/containerd/nri/pkg/net" -+ "github.com/containerd/ttrpc" -+) -+ -+// Mux multiplexes several logical connections over a single net.Conn. -+// -+// Connections are identified within a Mux by ConnIDs which are simple -+// 32-bit unsigned integers. Opening a connection returns a net.Conn -+// corrponding to the ConnID. This can then be used to write and read -+// data through the connection with the Mux performing multiplexing -+// and demultiplexing of data. -+// -+// Writing to a connection is fully synchronous. The caller can safely -+// reuse the buffer once the call returns. Reading from a connection -+// returns the oldest demultiplexed buffer for the connection, blocking -+// if the connections incoming queue is empty. If any incoming queue is -+// ever overflown the underlying trunk and all multiplexed connections -+// are closed and an error is recorded. This error is later returned by -+// any subsequent read from any connection. All connections of the Mux -+// have the same fixed incoming queue length which can be configured -+// using the WithReadQueueLength Option during Mux creation. -+// -+// The Mux interface also provides functions that emulate net.Dial and -+// net.Listen for a connection. Usually these can be used for passing -+// multiplexed connections to packages that insist to Dial or Accept -+// themselves for connection establishment. -+// -+// Note that opening a connection is a virtual operation in the sense -+// that it has no effects outside the Mux. It is performed without any -+// signalling or other communication. It merely acquires the net.Conn -+// corresponding to the connection and blindly assumes that the same -+// ConnID is or will be opened at the other end of the Mux. -+type Mux interface { -+ // Open the connection for the given ConnID. -+ Open(ConnID) (net.Conn, error) -+ -+ // Close the Mux and all connections associated with it. -+ Close() error -+ -+ // Dialer returns a net.Dial-like function for the connection. -+ // -+ // Calling the returned function (with arguments) will return a -+ // net.Conn for the connection. -+ Dialer(ConnID) func(string, string) (net.Conn, error) -+ -+ // Listener returns a net.Listener for the connection. The first -+ // call to Accept() on the listener will return a net.Conn for the -+ // connection. Subsequent calls to Accept() will block until the -+ // connection is closed then return io.EOF. -+ Listen(ConnID) (net.Listener, error) -+ -+ // Trunk returns the trunk connection for the Mux. -+ Trunk() net.Conn -+ -+ // Unblock unblocks the Mux reader. -+ Unblock() -+} -+ -+// ConnID uniquely identifies a logical connection within a Mux. -+type ConnID uint32 -+ -+const ( -+ // ConnID 0 is reserved for future use. -+ reservedConnID ConnID = iota -+ // LowestConnID is the lowest externally usable ConnID. -+ LowestConnID -+) -+ -+// Option to apply to a Mux. -+type Option func(*mux) -+ -+// WithBlockedRead causes the Mux to be blocked for reading until gets Unblock()'ed. -+func WithBlockedRead() Option { -+ return func(m *mux) { -+ if m.blockC == nil { -+ m.blockC = make(chan struct{}) -+ } -+ } -+} -+ -+// WithReadQueueLength overrides the default read queue size. -+func WithReadQueueLength(length int) Option { -+ return func(m *mux) { -+ m.qlen = length -+ } -+} -+ -+// Multiplex returns a multiplexer for the given connection. -+func Multiplex(trunk net.Conn, options ...Option) Mux { -+ return newMux(trunk, options...) -+} -+ -+// mux is our implementation of Mux. -+type mux struct { -+ trunk net.Conn -+ writeLock sync.Mutex -+ conns map[ConnID]*conn -+ connLock sync.RWMutex -+ qlen int -+ errOnce sync.Once -+ err error -+ unblkOnce sync.Once -+ blockC chan struct{} -+ closeOnce sync.Once -+ doneC chan struct{} -+} -+ -+const ( -+ // default read queue length for a single connection -+ readQueueLen = 256 -+ // length of frame header: 4-byte ConnID, 4-byte payload length -+ headerLen = 8 -+ // max. allowed payload size -+ maxPayloadSize = 1 << 24 -+) -+ -+// conn represents a single multiplexed connection. -+type conn struct { -+ id ConnID -+ mux *mux -+ readC chan []byte -+ closeOnce sync.Once -+ doneC chan error -+} -+ -+func newMux(trunk net.Conn, options ...Option) *mux { -+ m := &mux{ -+ trunk: trunk, -+ conns: make(map[ConnID]*conn), -+ qlen: readQueueLen, -+ doneC: make(chan struct{}), -+ } -+ -+ for _, o := range options { -+ o(m) -+ } -+ -+ if m.blockC == nil { -+ WithBlockedRead()(m) -+ m.Unblock() -+ } -+ -+ go m.reader() -+ -+ return m -+} -+ -+func (m *mux) Trunk() net.Conn { -+ return m.trunk -+} -+ -+func (m *mux) Unblock() { -+ m.unblkOnce.Do(func() { -+ close(m.blockC) -+ }) -+} -+ -+func (m *mux) Open(id ConnID) (net.Conn, error) { -+ if id == reservedConnID { -+ return nil, fmt.Errorf("ConnID %d is reserved", id) -+ } -+ -+ m.connLock.Lock() -+ defer m.connLock.Unlock() -+ -+ c, ok := m.conns[id] -+ if !ok { -+ c = &conn{ -+ id: id, -+ mux: m, -+ doneC: make(chan error, 1), -+ readC: make(chan []byte, m.qlen), -+ } -+ m.conns[id] = c -+ } -+ -+ return c, nil -+} -+ -+func (m *mux) Close() error { -+ m.closeOnce.Do(func() { -+ m.connLock.Lock() -+ defer m.connLock.Unlock() -+ for _, conn := range m.conns { -+ conn.close() -+ } -+ close(m.doneC) -+ m.trunk.Close() -+ }) -+ -+ return nil -+} -+ -+func (m *mux) Dialer(id ConnID) func(string, string) (net.Conn, error) { -+ return func(string, string) (net.Conn, error) { -+ return m.Open(id) -+ } -+} -+ -+func (m *mux) Listen(id ConnID) (net.Listener, error) { -+ conn, err := m.Open(id) -+ if err != nil { -+ return nil, err -+ } -+ return nrinet.NewConnListener(conn), nil -+} -+ -+func (m *mux) write(id ConnID, buf []byte) (int, error) { -+ var hdr [headerLen]byte -+ -+ if len(buf) > maxPayloadSize { -+ return 0, syscall.EMSGSIZE -+ } -+ -+ binary.BigEndian.PutUint32(hdr[0:4], uint32(id)) -+ binary.BigEndian.PutUint32(hdr[4:8], uint32(len(buf))) -+ -+ m.writeLock.Lock() -+ defer m.writeLock.Unlock() -+ -+ n, err := m.trunk.Write(hdr[:]) -+ if err != nil { -+ err = fmt.Errorf("failed to write header to trunk: %w", err) -+ if n != 0 { -+ m.setError(err) -+ m.Close() -+ } -+ return 0, err -+ } -+ -+ n, err = m.trunk.Write(buf) -+ if err != nil { -+ err = fmt.Errorf("failed to write payload to trunk: %w", err) -+ if n != 0 { -+ m.setError(err) -+ m.Close() -+ } -+ } -+ -+ return n, err -+} -+ -+func (m *mux) reader() { -+ var ( -+ hdr [headerLen]byte -+ cid uint32 -+ cnt uint32 -+ buf []byte -+ err error -+ ) -+ -+ <-m.blockC -+ -+ for { -+ select { -+ case <-m.doneC: -+ return -+ default: -+ } -+ -+ _, err = io.ReadFull(m.trunk, hdr[:]) -+ if err != nil { -+ switch { -+ case errors.Is(err, io.EOF): -+ case errors.Is(err, ttrpc.ErrClosed): -+ err = io.EOF -+ case errors.Is(err, ttrpc.ErrServerClosed): -+ err = io.EOF -+ case errors.Is(err, net.ErrClosed): -+ err = io.EOF -+ default: -+ err = fmt.Errorf("failed to read header from trunk: %w", err) -+ } -+ m.setError(err) -+ m.Close() -+ return -+ } -+ -+ cid = binary.BigEndian.Uint32(hdr[0:4]) -+ cnt = binary.BigEndian.Uint32(hdr[4:8]) -+ buf = make([]byte, int(cnt)) -+ -+ _, err = io.ReadFull(m.trunk, buf) -+ if err != nil { -+ switch { -+ case errors.Is(err, io.EOF): -+ case errors.Is(err, ttrpc.ErrClosed): -+ err = io.EOF -+ case errors.Is(err, ttrpc.ErrServerClosed): -+ err = io.EOF -+ case errors.Is(err, net.ErrClosed): -+ err = io.EOF -+ default: -+ err = fmt.Errorf("failed to read payload from trunk: %w", err) -+ } -+ m.setError(err) -+ m.Close() -+ return -+ } -+ -+ m.connLock.RLock() -+ conn, ok := m.conns[ConnID(cid)] -+ m.connLock.RUnlock() -+ if ok { -+ select { -+ case conn.readC <- buf: -+ default: -+ m.setError(errors.New("failed to queue payload for reading")) -+ m.Close() -+ return -+ } -+ } -+ } -+} -+ -+func (m *mux) setError(err error) { -+ m.errOnce.Do(func() { -+ m.err = err -+ }) -+} -+ -+// nolint -+func (m *mux) error() error { -+ m.errOnce.Do(func() { -+ if m.err == nil { -+ m.err = io.EOF -+ } -+ }) -+ return m.err -+} -+ -+// -+// multiplexed connections -+// -+ -+// Reads reads the next message from the multiplexed connection. -+func (c *conn) Read(buf []byte) (int, error) { -+ var ( -+ msg []byte -+ err error -+ ok bool -+ ) -+ -+ select { -+ case err, ok = <-c.doneC: -+ if !ok || err == nil { -+ err = c.mux.error() -+ } -+ return 0, err -+ case msg, ok = <-c.readC: -+ if !ok { -+ return 0, c.mux.error() -+ } -+ if cap(buf) < len(msg) { -+ return 0, syscall.ENOMEM -+ } -+ } -+ -+ copy(buf, msg) -+ return len(msg), nil -+} -+ -+// Write writes the given data to the multiplexed connection. -+func (c *conn) Write(b []byte) (int, error) { -+ select { -+ case err := <-c.doneC: -+ if err == nil { -+ err = io.EOF -+ } -+ return 0, err -+ default: -+ } -+ return c.mux.write(c.id, b) -+} -+ -+// Close closes the multiplexed connection. -+func (c *conn) Close() error { -+ c.mux.connLock.Lock() -+ defer c.mux.connLock.Unlock() -+ if c.mux.conns[c.id] == c { -+ delete(c.mux.conns, c.id) -+ } -+ return c.close() -+} -+ -+func (c *conn) close() error { -+ c.closeOnce.Do(func() { -+ close(c.doneC) -+ }) -+ return nil -+} -+ -+// LocalAddr is the unimplemented stub for the corresponding net.Conn function. -+func (c *conn) LocalAddr() net.Addr { -+ return nil -+} -+ -+// RemoteAddr is the unimplemented stub for the corresponding net.Conn function. -+func (c *conn) RemoteAddr() net.Addr { -+ return nil -+} -+ -+// SetDeadline is the unimplemented stub for the corresponding net.Conn function. -+func (c *conn) SetDeadline(t time.Time) error { -+ return nil -+} -+ -+// SetReadDeadline is the unimplemented stub for the corresponding net.Conn function. -+func (c *conn) SetReadDeadline(t time.Time) error { -+ return nil -+} -+ -+// SetWriteDeadline is the unimplemented stub for the corresponding net.Conn function. -+func (c *conn) SetWriteDeadline(t time.Time) error { -+ return nil -+} -diff --git a/vendor/github.com/containerd/nri/pkg/net/multiplex/ttrpc.go b/vendor/github.com/containerd/nri/pkg/net/multiplex/ttrpc.go -new file mode 100755 -index 0000000..c600cb1 ---- /dev/null -+++ b/vendor/github.com/containerd/nri/pkg/net/multiplex/ttrpc.go -@@ -0,0 +1,24 @@ -+/* -+ Copyright The containerd 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 multiplex -+ -+const ( -+ // PluginServiceConn is the mux connection ID for NRI plugin services. -+ PluginServiceConn ConnID = iota + 1 -+ // RuntimeServiceConn is the mux connection ID for NRI runtime services. -+ RuntimeServiceConn -+) -diff --git a/vendor/github.com/containerd/nri/pkg/net/socketpair.go b/vendor/github.com/containerd/nri/pkg/net/socketpair.go -new file mode 100755 -index 0000000..620887d ---- /dev/null -+++ b/vendor/github.com/containerd/nri/pkg/net/socketpair.go -@@ -0,0 +1,93 @@ -+/* -+ Copyright The containerd 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 net -+ -+import ( -+ "fmt" -+ "net" -+ "os" -+) -+ -+// SocketPair contains the os.File of a connected pair of sockets. -+type SocketPair struct { -+ local, peer *os.File -+} -+ -+// NewSocketPair returns a connected pair of sockets. -+func NewSocketPair() (SocketPair, error) { -+ fds, err := newSocketPairCLOEXEC() -+ if err != nil { -+ return SocketPair{nil, nil}, fmt.Errorf("failed to create socketpair: %w", err) -+ } -+ -+ filename := fmt.Sprintf("socketpair-#%d:%d", fds[0], fds[1]) -+ -+ return SocketPair{ -+ os.NewFile(uintptr(fds[0]), filename+"[0]"), -+ os.NewFile(uintptr(fds[1]), filename+"[1]"), -+ }, nil -+} -+ -+// LocalFile returns the local end of the socketpair as an *os.File. -+func (sp SocketPair) LocalFile() *os.File { -+ return sp.local -+} -+ -+// PeerFile returns the peer end of the socketpair as an *os.File. -+func (sp SocketPair) PeerFile() *os.File { -+ return sp.peer -+} -+ -+// LocalConn returns a net.Conn for the local end of the socketpair. -+// This closes LocalFile(). -+func (sp SocketPair) LocalConn() (net.Conn, error) { -+ file := sp.LocalFile() -+ defer file.Close() -+ conn, err := net.FileConn(file) -+ if err != nil { -+ return nil, fmt.Errorf("failed to create net.Conn for %s: %w", file.Name(), err) -+ } -+ return conn, nil -+} -+ -+// PeerConn returns a net.Conn for the peer end of the socketpair. -+// This closes PeerFile(). -+func (sp SocketPair) PeerConn() (net.Conn, error) { -+ file := sp.PeerFile() -+ defer file.Close() -+ conn, err := net.FileConn(file) -+ if err != nil { -+ return nil, fmt.Errorf("failed to create net.Conn for %s: %w", file.Name(), err) -+ } -+ return conn, nil -+} -+ -+// Close closes both ends of the socketpair. -+func (sp SocketPair) Close() { -+ sp.LocalClose() -+ sp.PeerClose() -+} -+ -+// LocalClose closes the local end of the socketpair. -+func (sp SocketPair) LocalClose() { -+ sp.local.Close() -+} -+ -+// PeerClose closes the peer end of the socketpair. -+func (sp SocketPair) PeerClose() { -+ sp.peer.Close() -+} -diff --git a/vendor/github.com/containerd/nri/pkg/net/socketpair_cloexec_linux.go b/vendor/github.com/containerd/nri/pkg/net/socketpair_cloexec_linux.go -new file mode 100755 -index 0000000..0ca83f6 ---- /dev/null -+++ b/vendor/github.com/containerd/nri/pkg/net/socketpair_cloexec_linux.go -@@ -0,0 +1,27 @@ -+//go:build linux -+ -+/* -+ Copyright The containerd 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 net -+ -+import ( -+ "golang.org/x/sys/unix" -+) -+ -+func newSocketPairCLOEXEC() ([2]int, error) { -+ return unix.Socketpair(unix.AF_UNIX, unix.SOCK_STREAM|unix.SOCK_CLOEXEC, 0) -+} -diff --git a/vendor/github.com/containerd/nri/pkg/net/socketpair_cloexec_unix.go b/vendor/github.com/containerd/nri/pkg/net/socketpair_cloexec_unix.go -new file mode 100755 -index 0000000..ed3c2f9 ---- /dev/null -+++ b/vendor/github.com/containerd/nri/pkg/net/socketpair_cloexec_unix.go -@@ -0,0 +1,38 @@ -+//go:build !linux && !windows -+ -+/* -+ Copyright The containerd 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 net -+ -+import ( -+ "syscall" -+ -+ "golang.org/x/sys/unix" -+) -+ -+func newSocketPairCLOEXEC() ([2]int, error) { -+ syscall.ForkLock.RLock() -+ defer syscall.ForkLock.RUnlock() -+ fds, err := unix.Socketpair(unix.AF_UNIX, unix.SOCK_STREAM, 0) -+ if err != nil { -+ return fds, err -+ } -+ unix.CloseOnExec(fds[0]) -+ unix.CloseOnExec(fds[1]) -+ -+ return fds, err -+} -diff --git a/vendor/github.com/containerd/nri/pkg/net/socketpair_cloexec_windows.go b/vendor/github.com/containerd/nri/pkg/net/socketpair_cloexec_windows.go -new file mode 100755 -index 0000000..033cf65 ---- /dev/null -+++ b/vendor/github.com/containerd/nri/pkg/net/socketpair_cloexec_windows.go -@@ -0,0 +1,30 @@ -+//go:build windows -+ -+/* -+ Copyright The containerd 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 net -+ -+import ( -+ "errors" -+ -+ sys "golang.org/x/sys/windows" -+) -+ -+func newSocketPairCLOEXEC() ([2]sys.Handle, error) { -+ // when implementing do use WSA_FLAG_NO_HANDLE_INHERIT to avoid leaking FDs -+ return [2]sys.Handle{sys.InvalidHandle, sys.InvalidHandle}, errors.New("newSocketPairCLOEXEC unimplemented for windows") -+} -diff --git a/vendor/github.com/containerd/nri/pkg/stub/stub.go b/vendor/github.com/containerd/nri/pkg/stub/stub.go -new file mode 100755 -index 0000000..bfe66f1 ---- /dev/null -+++ b/vendor/github.com/containerd/nri/pkg/stub/stub.go -@@ -0,0 +1,779 @@ -+/* -+ Copyright The containerd 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 stub -+ -+import ( -+ "context" -+ "errors" -+ "fmt" -+ stdnet "net" -+ "os" -+ "path/filepath" -+ "strconv" -+ "sync" -+ "time" -+ -+ "github.com/containerd/nri/pkg/api" -+ nrilog "github.com/containerd/nri/pkg/log" -+ "github.com/containerd/nri/pkg/net" -+ "github.com/containerd/nri/pkg/net/multiplex" -+ "github.com/containerd/ttrpc" -+) -+ -+// Plugin can implement a number of interfaces related to Pod and Container -+// lifecycle events. No any single such inteface is mandatory, therefore the -+// Plugin interface itself is empty. Plugins are required to implement at -+// least one of these interfaces and this is verified during stub creation. -+// Trying to create a stub for a plugin violating this requirement will fail -+// with and error. -+type Plugin interface{} -+ -+// ConfigureInterface handles Configure API request. -+type ConfigureInterface interface { -+ // Configure the plugin with the given NRI-supplied configuration. -+ // If a non-zero EventMask is returned, the plugin will be subscribed -+ // to the corresponding. -+ Configure(ctx context.Context, config, runtime, version string) (api.EventMask, error) -+} -+ -+// SynchronizeInterface handles Synchronize API requests. -+type SynchronizeInterface interface { -+ // Synchronize the state of the plugin with the runtime. -+ // The plugin can request updates to containers in response. -+ Synchronize(context.Context, []*api.PodSandbox, []*api.Container) ([]*api.ContainerUpdate, error) -+} -+ -+// ShutdownInterface handles a Shutdown API request. -+type ShutdownInterface interface { -+ // Shutdown notifies the plugin about the runtime shutting down. -+ Shutdown(context.Context) -+} -+ -+// RunPodInterface handles RunPodSandbox API events. -+type RunPodInterface interface { -+ // RunPodSandbox relays a RunPodSandbox event to the plugin. -+ RunPodSandbox(context.Context, *api.PodSandbox) error -+} -+ -+// StopPodInterface handles StopPodSandbox API events. -+type StopPodInterface interface { -+ // StopPodSandbox relays a StopPodSandbox event to the plugin. -+ StopPodSandbox(context.Context, *api.PodSandbox) error -+} -+ -+// RemovePodInterface handles RemovePodSandbox API events. -+type RemovePodInterface interface { -+ // RemovePodSandbox relays a RemovePodSandbox event to the plugin. -+ RemovePodSandbox(context.Context, *api.PodSandbox) error -+} -+ -+// CreateContainerInterface handles CreateContainer API requests. -+type CreateContainerInterface interface { -+ // CreateContainer relays a CreateContainer request to the plugin. -+ // The plugin can request adjustments to the container being created -+ // and updates to other unstopped containers in response. -+ CreateContainer(context.Context, *api.PodSandbox, *api.Container) (*api.ContainerAdjustment, []*api.ContainerUpdate, error) -+} -+ -+// StartContainerInterface handles StartContainer API requests. -+type StartContainerInterface interface { -+ // StartContainer relays a StartContainer event to the plugin. -+ StartContainer(context.Context, *api.PodSandbox, *api.Container) error -+} -+ -+// UpdateContainerInterface handles UpdateContainer API requests. -+type UpdateContainerInterface interface { -+ // UpdateContainer relays an UpdateContainer request to the plugin. -+ // The plugin can request updates both to the container being updated -+ // (which then supersedes the original update) and to other unstopped -+ // containers in response. -+ UpdateContainer(context.Context, *api.PodSandbox, *api.Container, *api.LinuxResources) ([]*api.ContainerUpdate, error) -+} -+ -+// StopContainerInterface handles StopContainer API requests. -+type StopContainerInterface interface { -+ // StopContainer relays a StopContainer request to the plugin. -+ // The plugin can request updates to unstopped containers in response. -+ StopContainer(context.Context, *api.PodSandbox, *api.Container) ([]*api.ContainerUpdate, error) -+} -+ -+// RemoveContainerInterface handles RemoveContainer API events. -+type RemoveContainerInterface interface { -+ // RemoveContainer relays a RemoveContainer event to the plugin. -+ RemoveContainer(context.Context, *api.PodSandbox, *api.Container) error -+} -+ -+// PostCreateContainerInterface handles PostCreateContainer API events. -+type PostCreateContainerInterface interface { -+ // PostCreateContainer relays a PostCreateContainer event to the plugin. -+ PostCreateContainer(context.Context, *api.PodSandbox, *api.Container) error -+} -+ -+// PostStartContainerInterface handles PostStartContainer API events. -+type PostStartContainerInterface interface { -+ // PostStartContainer relays a PostStartContainer event to the plugin. -+ PostStartContainer(context.Context, *api.PodSandbox, *api.Container) error -+} -+ -+// PostUpdateContainerInterface handles PostUpdateContainer API events. -+type PostUpdateContainerInterface interface { -+ // PostUpdateContainer relays a PostUpdateContainer event to the plugin. -+ PostUpdateContainer(context.Context, *api.PodSandbox, *api.Container) error -+} -+ -+// Stub is the interface the stub provides for the plugin implementation. -+type Stub interface { -+ // Run the plugin. Starts the plugin then waits for an error or the plugin to stop -+ Run(context.Context) error -+ // Start the plugin. -+ Start(context.Context) error -+ // Stop the plugin. -+ Stop() -+ // Wait for the plugin to stop. -+ Wait() -+ -+ // UpdateContainer requests unsolicited updates to containers. -+ UpdateContainers([]*api.ContainerUpdate) ([]*api.ContainerUpdate, error) -+} -+ -+const ( -+ // Plugin registration timeout. -+ registrationTimeout = 2 * time.Second -+) -+ -+var ( -+ // Logger for messages generated internally by the stub itself. -+ log = nrilog.Get() -+ -+ // Used instead of a nil Context in logging. -+ noCtx = context.TODO() -+ -+ // ErrNoService indicates that the stub has no runtime service/connection, -+ // for instance by UpdateContainers on a stub which has not been started. -+ ErrNoService = errors.New("stub: no service/connection") -+) -+ -+// EventMask holds a mask of events for plugin subscription. -+type EventMask = api.EventMask -+ -+// Option to apply to a plugin during its creation. -+type Option func(*stub) error -+ -+// WithOnClose sets a notification function to call if the ttRPC connection goes down. -+func WithOnClose(onClose func()) Option { -+ return func(s *stub) error { -+ s.onClose = onClose -+ return nil -+ } -+} -+ -+// WithPluginName sets the name to use in plugin registration. -+func WithPluginName(name string) Option { -+ return func(s *stub) error { -+ if s.name != "" { -+ return fmt.Errorf("plugin name already set (%q)", s.name) -+ } -+ s.name = name -+ return nil -+ } -+} -+ -+// WithPluginIdx sets the index to use in plugin registration. -+func WithPluginIdx(idx string) Option { -+ return func(s *stub) error { -+ if s.idx != "" { -+ return fmt.Errorf("plugin ID already set (%q)", s.idx) -+ } -+ s.idx = idx -+ return nil -+ } -+} -+ -+// WithSocketPath sets the NRI socket path to connect to. -+func WithSocketPath(path string) Option { -+ return func(s *stub) error { -+ s.socketPath = path -+ return nil -+ } -+} -+ -+// WithConnection sets an existing NRI connection to use. -+func WithConnection(conn stdnet.Conn) Option { -+ return func(s *stub) error { -+ s.conn = conn -+ return nil -+ } -+} -+ -+// WithDialer sets the dialer to use. -+func WithDialer(d func(string) (stdnet.Conn, error)) Option { -+ return func(s *stub) error { -+ s.dialer = d -+ return nil -+ } -+} -+ -+// WithTTRPCOptions sets extra client and server options to use for ttrpc . -+func WithTTRPCOptions(clientOpts []ttrpc.ClientOpts, serverOpts []ttrpc.ServerOpt) Option { -+ return func(s *stub) error { -+ s.clientOpts = append(s.clientOpts, clientOpts...) -+ s.serverOpts = append(s.serverOpts, serverOpts...) -+ return nil -+ } -+} -+ -+// stub implements Stub. -+type stub struct { -+ sync.Mutex -+ plugin interface{} -+ handlers handlers -+ events api.EventMask -+ name string -+ idx string -+ socketPath string -+ dialer func(string) (stdnet.Conn, error) -+ conn stdnet.Conn -+ onClose func() -+ serverOpts []ttrpc.ServerOpt -+ clientOpts []ttrpc.ClientOpts -+ rpcm multiplex.Mux -+ rpcl stdnet.Listener -+ rpcs *ttrpc.Server -+ rpcc *ttrpc.Client -+ runtime api.RuntimeService -+ closeOnce sync.Once -+ started bool -+ doneC chan struct{} -+ srvErrC chan error -+ cfgErrC chan error -+} -+ -+// Handlers for NRI plugin event and request. -+type handlers struct { -+ Configure func(context.Context, string, string, string) (api.EventMask, error) -+ Synchronize func(context.Context, []*api.PodSandbox, []*api.Container) ([]*api.ContainerUpdate, error) -+ Shutdown func(context.Context) -+ RunPodSandbox func(context.Context, *api.PodSandbox) error -+ StopPodSandbox func(context.Context, *api.PodSandbox) error -+ RemovePodSandbox func(context.Context, *api.PodSandbox) error -+ CreateContainer func(context.Context, *api.PodSandbox, *api.Container) (*api.ContainerAdjustment, []*api.ContainerUpdate, error) -+ StartContainer func(context.Context, *api.PodSandbox, *api.Container) error -+ UpdateContainer func(context.Context, *api.PodSandbox, *api.Container, *api.LinuxResources) ([]*api.ContainerUpdate, error) -+ StopContainer func(context.Context, *api.PodSandbox, *api.Container) ([]*api.ContainerUpdate, error) -+ RemoveContainer func(context.Context, *api.PodSandbox, *api.Container) error -+ PostCreateContainer func(context.Context, *api.PodSandbox, *api.Container) error -+ PostStartContainer func(context.Context, *api.PodSandbox, *api.Container) error -+ PostUpdateContainer func(context.Context, *api.PodSandbox, *api.Container) error -+} -+ -+// New creates a stub with the given plugin and options. -+func New(p interface{}, opts ...Option) (Stub, error) { -+ stub := &stub{ -+ plugin: p, -+ name: os.Getenv(api.PluginNameEnvVar), -+ idx: os.Getenv(api.PluginIdxEnvVar), -+ socketPath: api.DefaultSocketPath, -+ dialer: func(p string) (stdnet.Conn, error) { return stdnet.Dial("unix", p) }, -+ doneC: make(chan struct{}), -+ } -+ -+ for _, o := range opts { -+ if err := o(stub); err != nil { -+ return nil, err -+ } -+ } -+ -+ if err := stub.setupHandlers(); err != nil { -+ return nil, err -+ } -+ -+ if err := stub.ensureIdentity(); err != nil { -+ return nil, err -+ } -+ -+ log.Infof(noCtx, "Created plugin %s (%s, handles %s)", stub.Name(), -+ filepath.Base(os.Args[0]), stub.events.PrettyString()) -+ -+ return stub, nil -+} -+ -+// Start event processing, register to NRI and wait for getting configured. -+func (stub *stub) Start(ctx context.Context) (retErr error) { -+ stub.Lock() -+ defer stub.Unlock() -+ -+ if stub.started { -+ return fmt.Errorf("stub already started") -+ } -+ stub.started = true -+ -+ err := stub.connect() -+ if err != nil { -+ return err -+ } -+ -+ rpcm := multiplex.Multiplex(stub.conn) -+ defer func() { -+ if retErr != nil { -+ rpcm.Close() -+ stub.rpcm = nil -+ } -+ }() -+ -+ rpcl, err := rpcm.Listen(multiplex.PluginServiceConn) -+ if err != nil { -+ return err -+ } -+ defer func() { -+ if retErr != nil { -+ rpcl.Close() -+ stub.rpcl = nil -+ } -+ }() -+ -+ rpcs, err := ttrpc.NewServer(stub.serverOpts...) -+ if err != nil { -+ return fmt.Errorf("failed to create ttrpc server: %w", err) -+ } -+ defer func() { -+ if retErr != nil { -+ rpcs.Close() -+ stub.rpcs = nil -+ } -+ }() -+ -+ api.RegisterPluginService(rpcs, stub) -+ -+ conn, err := rpcm.Open(multiplex.RuntimeServiceConn) -+ if err != nil { -+ return fmt.Errorf("failed to multiplex ttrpc client connection: %w", err) -+ } -+ -+ clientOpts := []ttrpc.ClientOpts{ -+ ttrpc.WithOnClose(func() { -+ stub.connClosed() -+ }), -+ } -+ rpcc := ttrpc.NewClient(conn, append(clientOpts, stub.clientOpts...)...) -+ defer func() { -+ if retErr != nil { -+ rpcc.Close() -+ stub.rpcc = nil -+ } -+ }() -+ -+ stub.srvErrC = make(chan error, 1) -+ stub.cfgErrC = make(chan error, 1) -+ go func() { -+ stub.srvErrC <- rpcs.Serve(ctx, rpcl) -+ close(stub.doneC) -+ }() -+ -+ stub.rpcm = rpcm -+ stub.rpcl = rpcl -+ stub.rpcs = rpcs -+ stub.rpcc = rpcc -+ -+ stub.runtime = api.NewRuntimeClient(rpcc) -+ -+ if err = stub.register(ctx); err != nil { -+ stub.close() -+ return err -+ } -+ -+ if err = <-stub.cfgErrC; err != nil { -+ return err -+ } -+ -+ log.Infof(ctx, "Started plugin %s...", stub.Name()) -+ -+ return nil -+} -+ -+// Stop the plugin. -+func (stub *stub) Stop() { -+ log.Infof(noCtx, "Stopping plugin %s...", stub.Name()) -+ -+ stub.Lock() -+ defer stub.Unlock() -+ stub.close() -+} -+ -+func (stub *stub) close() { -+ stub.closeOnce.Do(func() { -+ if stub.rpcl != nil { -+ stub.rpcl.Close() -+ } -+ if stub.rpcs != nil { -+ stub.rpcs.Close() -+ } -+ if stub.rpcc != nil { -+ stub.rpcc.Close() -+ } -+ if stub.rpcm != nil { -+ stub.rpcm.Close() -+ } -+ if stub.srvErrC != nil { -+ <-stub.doneC -+ } -+ }) -+} -+ -+// Run the plugin. Start event processing then wait for an error or getting stopped. -+func (stub *stub) Run(ctx context.Context) error { -+ var err error -+ -+ if err = stub.Start(ctx); err != nil { -+ return err -+ } -+ -+ err = <-stub.srvErrC -+ if err == ttrpc.ErrServerClosed { -+ return nil -+ } -+ -+ return err -+} -+ -+// Wait for the plugin to stop. -+func (stub *stub) Wait() { -+ stub.Lock() -+ if stub.srvErrC == nil { -+ return -+ } -+ stub.Unlock() -+ <-stub.doneC -+} -+ -+// Name returns the full indexed name of the plugin. -+func (stub *stub) Name() string { -+ return stub.idx + "-" + stub.name -+} -+ -+// Connect the plugin to NRI. -+func (stub *stub) connect() error { -+ if stub.conn != nil { -+ log.Infof(noCtx, "Using given plugin connection...") -+ return nil -+ } -+ -+ if env := os.Getenv(api.PluginSocketEnvVar); env != "" { -+ log.Infof(noCtx, "Using connection %q from environment...", env) -+ -+ fd, err := strconv.Atoi(env) -+ if err != nil { -+ return fmt.Errorf("invalid socket in environment (%s=%q): %w", -+ api.PluginSocketEnvVar, env, err) -+ } -+ -+ stub.conn, err = net.NewFdConn(fd) -+ if err != nil { -+ return fmt.Errorf("invalid socket (%d) in environment: %w", fd, err) -+ } -+ -+ return nil -+ } -+ -+ conn, err := stub.dialer(stub.socketPath) -+ if err != nil { -+ return fmt.Errorf("failed to connect to NRI service: %w", err) -+ } -+ -+ stub.conn = conn -+ -+ return nil -+} -+ -+// Register the plugin with NRI. -+func (stub *stub) register(ctx context.Context) error { -+ log.Infof(ctx, "Registering plugin %s...", stub.Name()) -+ -+ ctx, cancel := context.WithTimeout(ctx, registrationTimeout) -+ defer cancel() -+ -+ req := &api.RegisterPluginRequest{ -+ PluginName: stub.name, -+ PluginIdx: stub.idx, -+ } -+ if _, err := stub.runtime.RegisterPlugin(ctx, req); err != nil { -+ return fmt.Errorf("failed to register with NRI/Runtime: %w", err) -+ } -+ -+ return nil -+} -+ -+// Handle a lost connection. -+func (stub *stub) connClosed() { -+ stub.close() -+ if stub.onClose != nil { -+ stub.onClose() -+ return -+ } -+ -+ os.Exit(0) -+} -+ -+// -+// plugin event and request handlers -+// -+ -+// UpdateContainers requests unsolicited updates to containers. -+func (stub *stub) UpdateContainers(update []*api.ContainerUpdate) ([]*api.ContainerUpdate, error) { -+ if stub.runtime == nil { -+ return nil, ErrNoService -+ } -+ -+ ctx := context.Background() -+ req := &api.UpdateContainersRequest{ -+ Update: update, -+ } -+ rpl, err := stub.runtime.UpdateContainers(ctx, req) -+ if rpl != nil { -+ return rpl.Failed, err -+ } -+ return nil, err -+} -+ -+// Configure the plugin. -+func (stub *stub) Configure(ctx context.Context, req *api.ConfigureRequest) (rpl *api.ConfigureResponse, retErr error) { -+ var ( -+ events api.EventMask -+ err error -+ ) -+ -+ log.Infof(ctx, "Configuring plugin %s for runtime %s/%s...", stub.Name(), -+ req.RuntimeName, req.RuntimeVersion) -+ -+ defer func() { -+ stub.cfgErrC <- retErr -+ }() -+ -+ if handler := stub.handlers.Configure; handler == nil { -+ events = stub.events -+ } else { -+ events, err = handler(ctx, req.Config, req.RuntimeName, req.RuntimeVersion) -+ if err != nil { -+ log.Errorf(ctx, "Plugin configuration failed: %v", err) -+ return nil, err -+ } -+ -+ if events == 0 { -+ events = stub.events -+ } -+ -+ // Only allow plugins to subscribe to events they can handle. -+ if extra := events & ^stub.events; extra != 0 { -+ log.Errorf(ctx, "Plugin subscribed for unhandled events %s (0x%x)", -+ extra.PrettyString(), extra) -+ return nil, fmt.Errorf("internal error: unhandled events %s (0x%x)", -+ extra.PrettyString(), extra) -+ } -+ -+ log.Infof(ctx, "Subscribing plugin %s (%s) for events %s", stub.Name(), -+ filepath.Base(os.Args[0]), events.PrettyString()) -+ } -+ -+ return &api.ConfigureResponse{ -+ Events: int32(events), -+ }, nil -+} -+ -+// Synchronize the state of the plugin with the runtime. -+func (stub *stub) Synchronize(ctx context.Context, req *api.SynchronizeRequest) (*api.SynchronizeResponse, error) { -+ handler := stub.handlers.Synchronize -+ if handler == nil { -+ return &api.SynchronizeResponse{}, nil -+ } -+ update, err := handler(ctx, req.Pods, req.Containers) -+ return &api.SynchronizeResponse{ -+ Update: update, -+ }, err -+} -+ -+// Shutdown the plugin. -+func (stub *stub) Shutdown(ctx context.Context, req *api.ShutdownRequest) (*api.ShutdownResponse, error) { -+ handler := stub.handlers.Shutdown -+ if handler != nil { -+ handler(ctx) -+ } -+ return &api.ShutdownResponse{}, nil -+} -+ -+// CreateContainer request handler. -+func (stub *stub) CreateContainer(ctx context.Context, req *api.CreateContainerRequest) (*api.CreateContainerResponse, error) { -+ handler := stub.handlers.CreateContainer -+ if handler == nil { -+ return nil, nil -+ } -+ adjust, update, err := handler(ctx, req.Pod, req.Container) -+ return &api.CreateContainerResponse{ -+ Adjust: adjust, -+ Update: update, -+ }, err -+} -+ -+// UpdateContainer request handler. -+func (stub *stub) UpdateContainer(ctx context.Context, req *api.UpdateContainerRequest) (*api.UpdateContainerResponse, error) { -+ handler := stub.handlers.UpdateContainer -+ if handler == nil { -+ return nil, nil -+ } -+ update, err := handler(ctx, req.Pod, req.Container, req.LinuxResources) -+ return &api.UpdateContainerResponse{ -+ Update: update, -+ }, err -+} -+ -+// StopContainer request handler. -+func (stub *stub) StopContainer(ctx context.Context, req *api.StopContainerRequest) (*api.StopContainerResponse, error) { -+ handler := stub.handlers.StopContainer -+ if handler == nil { -+ return nil, nil -+ } -+ update, err := handler(ctx, req.Pod, req.Container) -+ return &api.StopContainerResponse{ -+ Update: update, -+ }, err -+} -+ -+// StateChange event handler. -+func (stub *stub) StateChange(ctx context.Context, evt *api.StateChangeEvent) (*api.Empty, error) { -+ var err error -+ switch evt.Event { -+ case api.Event_RUN_POD_SANDBOX: -+ if handler := stub.handlers.RunPodSandbox; handler != nil { -+ err = handler(ctx, evt.Pod) -+ } -+ case api.Event_STOP_POD_SANDBOX: -+ if handler := stub.handlers.StopPodSandbox; handler != nil { -+ err = handler(ctx, evt.Pod) -+ } -+ case api.Event_REMOVE_POD_SANDBOX: -+ if handler := stub.handlers.RemovePodSandbox; handler != nil { -+ err = handler(ctx, evt.Pod) -+ } -+ case api.Event_POST_CREATE_CONTAINER: -+ if handler := stub.handlers.PostCreateContainer; handler != nil { -+ err = handler(ctx, evt.Pod, evt.Container) -+ } -+ case api.Event_START_CONTAINER: -+ if handler := stub.handlers.StartContainer; handler != nil { -+ err = handler(ctx, evt.Pod, evt.Container) -+ } -+ case api.Event_POST_START_CONTAINER: -+ if handler := stub.handlers.PostStartContainer; handler != nil { -+ err = handler(ctx, evt.Pod, evt.Container) -+ } -+ case api.Event_POST_UPDATE_CONTAINER: -+ if handler := stub.handlers.PostUpdateContainer; handler != nil { -+ err = handler(ctx, evt.Pod, evt.Container) -+ } -+ case api.Event_REMOVE_CONTAINER: -+ if handler := stub.handlers.RemoveContainer; handler != nil { -+ err = handler(ctx, evt.Pod, evt.Container) -+ } -+ } -+ -+ return &api.StateChangeResponse{}, err -+} -+ -+// ensureIdentity sets plugin index and name from the binary if those are unset. -+func (stub *stub) ensureIdentity() error { -+ if stub.idx != "" && stub.name != "" { -+ return nil -+ } -+ -+ if stub.idx != "" { -+ stub.name = filepath.Base(os.Args[0]) -+ return nil -+ } -+ -+ idx, name, err := api.ParsePluginName(filepath.Base(os.Args[0])) -+ if err != nil { -+ return err -+ } -+ -+ stub.name = name -+ stub.idx = idx -+ -+ return nil -+} -+ -+// Set up event handlers and the subscription mask for the plugin. -+func (stub *stub) setupHandlers() error { -+ if plugin, ok := stub.plugin.(ConfigureInterface); ok { -+ stub.handlers.Configure = plugin.Configure -+ } -+ if plugin, ok := stub.plugin.(SynchronizeInterface); ok { -+ stub.handlers.Synchronize = plugin.Synchronize -+ } -+ if plugin, ok := stub.plugin.(ShutdownInterface); ok { -+ stub.handlers.Shutdown = plugin.Shutdown -+ } -+ -+ if plugin, ok := stub.plugin.(RunPodInterface); ok { -+ stub.handlers.RunPodSandbox = plugin.RunPodSandbox -+ stub.events.Set(api.Event_RUN_POD_SANDBOX) -+ } -+ if plugin, ok := stub.plugin.(StopPodInterface); ok { -+ stub.handlers.StopPodSandbox = plugin.StopPodSandbox -+ stub.events.Set(api.Event_STOP_POD_SANDBOX) -+ } -+ if plugin, ok := stub.plugin.(RemovePodInterface); ok { -+ stub.handlers.RemovePodSandbox = plugin.RemovePodSandbox -+ stub.events.Set(api.Event_REMOVE_POD_SANDBOX) -+ } -+ if plugin, ok := stub.plugin.(CreateContainerInterface); ok { -+ stub.handlers.CreateContainer = plugin.CreateContainer -+ stub.events.Set(api.Event_CREATE_CONTAINER) -+ } -+ if plugin, ok := stub.plugin.(StartContainerInterface); ok { -+ stub.handlers.StartContainer = plugin.StartContainer -+ stub.events.Set(api.Event_START_CONTAINER) -+ } -+ if plugin, ok := stub.plugin.(UpdateContainerInterface); ok { -+ stub.handlers.UpdateContainer = plugin.UpdateContainer -+ stub.events.Set(api.Event_UPDATE_CONTAINER) -+ } -+ if plugin, ok := stub.plugin.(StopContainerInterface); ok { -+ stub.handlers.StopContainer = plugin.StopContainer -+ stub.events.Set(api.Event_STOP_CONTAINER) -+ } -+ if plugin, ok := stub.plugin.(RemoveContainerInterface); ok { -+ stub.handlers.RemoveContainer = plugin.RemoveContainer -+ stub.events.Set(api.Event_REMOVE_CONTAINER) -+ } -+ if plugin, ok := stub.plugin.(PostCreateContainerInterface); ok { -+ stub.handlers.PostCreateContainer = plugin.PostCreateContainer -+ stub.events.Set(api.Event_POST_CREATE_CONTAINER) -+ } -+ if plugin, ok := stub.plugin.(PostStartContainerInterface); ok { -+ stub.handlers.PostStartContainer = plugin.PostStartContainer -+ stub.events.Set(api.Event_POST_START_CONTAINER) -+ } -+ if plugin, ok := stub.plugin.(PostUpdateContainerInterface); ok { -+ stub.handlers.PostUpdateContainer = plugin.PostUpdateContainer -+ stub.events.Set(api.Event_POST_UPDATE_CONTAINER) -+ } -+ -+ if stub.events == 0 { -+ return fmt.Errorf("internal error: plugin %T does not implement any NRI request handlers", -+ stub.plugin) -+ } -+ -+ return nil -+} -diff --git a/vendor/github.com/containerd/ttrpc/.gitattributes b/vendor/github.com/containerd/ttrpc/.gitattributes -new file mode 100755 -index 0000000..d207b18 ---- /dev/null -+++ b/vendor/github.com/containerd/ttrpc/.gitattributes -@@ -0,0 +1 @@ -+*.go text eol=lf -diff --git a/vendor/github.com/containerd/ttrpc/.gitignore b/vendor/github.com/containerd/ttrpc/.gitignore -new file mode 100755 -index 0000000..88ceb27 ---- /dev/null -+++ b/vendor/github.com/containerd/ttrpc/.gitignore -@@ -0,0 +1,13 @@ -+# Binaries for programs and plugins -+/bin/ -+*.exe -+*.dll -+*.so -+*.dylib -+ -+# Test binary, build with `go test -c` -+*.test -+ -+# Output of the go coverage tool, specifically when used with LiteIDE -+*.out -+coverage.txt -diff --git a/vendor/github.com/containerd/ttrpc/.golangci.yml b/vendor/github.com/containerd/ttrpc/.golangci.yml -new file mode 100755 -index 0000000..6462e52 ---- /dev/null -+++ b/vendor/github.com/containerd/ttrpc/.golangci.yml -@@ -0,0 +1,52 @@ -+linters: -+ enable: -+ - staticcheck -+ - unconvert -+ - gofmt -+ - goimports -+ - revive -+ - ineffassign -+ - vet -+ - unused -+ - misspell -+ disable: -+ - errcheck -+ -+linters-settings: -+ revive: -+ ignore-generated-headers: true -+ rules: -+ - name: blank-imports -+ - name: context-as-argument -+ - name: context-keys-type -+ - name: dot-imports -+ - name: error-return -+ - name: error-strings -+ - name: error-naming -+ - name: exported -+ - name: if-return -+ - name: increment-decrement -+ - name: var-naming -+ arguments: [["UID", "GID"], []] -+ - name: var-declaration -+ - name: package-comments -+ - name: range -+ - name: receiver-naming -+ - name: time-naming -+ - name: unexported-return -+ - name: indent-error-flow -+ - name: errorf -+ - name: empty-block -+ - name: superfluous-else -+ - name: unused-parameter -+ - name: unreachable-code -+ - name: redefines-builtin-id -+ -+issues: -+ include: -+ - EXC0002 -+ -+run: -+ timeout: 8m -+ skip-dirs: -+ - example -diff --git a/vendor/github.com/containerd/ttrpc/LICENSE b/vendor/github.com/containerd/ttrpc/LICENSE -new file mode 100755 -index 0000000..261eeb9 ---- /dev/null -+++ b/vendor/github.com/containerd/ttrpc/LICENSE -@@ -0,0 +1,201 @@ -+ Apache License -+ Version 2.0, January 2004 -+ http://www.apache.org/licenses/ -+ -+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -+ -+ 1. Definitions. -+ -+ "License" shall mean the terms and conditions for use, reproduction, -+ and distribution as defined by Sections 1 through 9 of this document. -+ -+ "Licensor" shall mean the copyright owner or entity authorized by -+ the copyright owner that is granting the License. -+ -+ "Legal Entity" shall mean the union of the acting entity and all -+ other entities that control, are controlled by, or are under common -+ control with that entity. For the purposes of this definition, -+ "control" means (i) the power, direct or indirect, to cause the -+ direction or management of such entity, whether by contract or -+ otherwise, or (ii) ownership of fifty percent (50%) or more of the -+ outstanding shares, or (iii) beneficial ownership of such entity. -+ -+ "You" (or "Your") shall mean an individual or Legal Entity -+ exercising permissions granted by this License. -+ -+ "Source" form shall mean the preferred form for making modifications, -+ including but not limited to software source code, documentation -+ source, and configuration files. -+ -+ "Object" form shall mean any form resulting from mechanical -+ transformation or translation of a Source form, including but -+ not limited to compiled object code, generated documentation, -+ and conversions to other media types. -+ -+ "Work" shall mean the work of authorship, whether in Source or -+ Object form, made available under the License, as indicated by a -+ copyright notice that is included in or attached to the work -+ (an example is provided in the Appendix below). -+ -+ "Derivative Works" shall mean any work, whether in Source or Object -+ form, that is based on (or derived from) the Work and for which the -+ editorial revisions, annotations, elaborations, or other modifications -+ represent, as a whole, an original work of authorship. For the purposes -+ of this License, Derivative Works shall not include works that remain -+ separable from, or merely link (or bind by name) to the interfaces of, -+ the Work and Derivative Works thereof. -+ -+ "Contribution" shall mean any work of authorship, including -+ the original version of the Work and any modifications or additions -+ to that Work or Derivative Works thereof, that is intentionally -+ submitted to Licensor for inclusion in the Work by the copyright owner -+ or by an individual or Legal Entity authorized to submit on behalf of -+ the copyright owner. For the purposes of this definition, "submitted" -+ means any form of electronic, verbal, or written communication sent -+ to the Licensor or its representatives, including but not limited to -+ communication on electronic mailing lists, source code control systems, -+ and issue tracking systems that are managed by, or on behalf of, the -+ Licensor for the purpose of discussing and improving the Work, but -+ excluding communication that is conspicuously marked or otherwise -+ designated in writing by the copyright owner as "Not a Contribution." -+ -+ "Contributor" shall mean Licensor and any individual or Legal Entity -+ on behalf of whom a Contribution has been received by Licensor and -+ subsequently incorporated within the Work. -+ -+ 2. Grant of Copyright License. Subject to the terms and conditions of -+ this License, each Contributor hereby grants to You a perpetual, -+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable -+ copyright license to reproduce, prepare Derivative Works of, -+ publicly display, publicly perform, sublicense, and distribute the -+ Work and such Derivative Works in Source or Object form. -+ -+ 3. Grant of Patent License. Subject to the terms and conditions of -+ this License, each Contributor hereby grants to You a perpetual, -+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable -+ (except as stated in this section) patent license to make, have made, -+ use, offer to sell, sell, import, and otherwise transfer the Work, -+ where such license applies only to those patent claims licensable -+ by such Contributor that are necessarily infringed by their -+ Contribution(s) alone or by combination of their Contribution(s) -+ with the Work to which such Contribution(s) was submitted. If You -+ institute patent litigation against any entity (including a -+ cross-claim or counterclaim in a lawsuit) alleging that the Work -+ or a Contribution incorporated within the Work constitutes direct -+ or contributory patent infringement, then any patent licenses -+ granted to You under this License for that Work shall terminate -+ as of the date such litigation is filed. -+ -+ 4. Redistribution. You may reproduce and distribute copies of the -+ Work or Derivative Works thereof in any medium, with or without -+ modifications, and in Source or Object form, provided that You -+ meet the following conditions: -+ -+ (a) You must give any other recipients of the Work or -+ Derivative Works a copy of this License; and -+ -+ (b) You must cause any modified files to carry prominent notices -+ stating that You changed the files; and -+ -+ (c) You must retain, in the Source form of any Derivative Works -+ that You distribute, all copyright, patent, trademark, and -+ attribution notices from the Source form of the Work, -+ excluding those notices that do not pertain to any part of -+ the Derivative Works; and -+ -+ (d) If the Work includes a "NOTICE" text file as part of its -+ distribution, then any Derivative Works that You distribute must -+ include a readable copy of the attribution notices contained -+ within such NOTICE file, excluding those notices that do not -+ pertain to any part of the Derivative Works, in at least one -+ of the following places: within a NOTICE text file distributed -+ as part of the Derivative Works; within the Source form or -+ documentation, if provided along with the Derivative Works; or, -+ within a display generated by the Derivative Works, if and -+ wherever such third-party notices normally appear. The contents -+ of the NOTICE file are for informational purposes only and -+ do not modify the License. You may add Your own attribution -+ notices within Derivative Works that You distribute, alongside -+ or as an addendum to the NOTICE text from the Work, provided -+ that such additional attribution notices cannot be construed -+ as modifying the License. -+ -+ You may add Your own copyright statement to Your modifications and -+ may provide additional or different license terms and conditions -+ for use, reproduction, or distribution of Your modifications, or -+ for any such Derivative Works as a whole, provided Your use, -+ reproduction, and distribution of the Work otherwise complies with -+ the conditions stated in this License. -+ -+ 5. Submission of Contributions. Unless You explicitly state otherwise, -+ any Contribution intentionally submitted for inclusion in the Work -+ by You to the Licensor shall be under the terms and conditions of -+ this License, without any additional terms or conditions. -+ Notwithstanding the above, nothing herein shall supersede or modify -+ the terms of any separate license agreement you may have executed -+ with Licensor regarding such Contributions. -+ -+ 6. Trademarks. This License does not grant permission to use the trade -+ names, trademarks, service marks, or product names of the Licensor, -+ except as required for reasonable and customary use in describing the -+ origin of the Work and reproducing the content of the NOTICE file. -+ -+ 7. Disclaimer of Warranty. Unless required by applicable law or -+ agreed to in writing, Licensor provides the Work (and each -+ Contributor provides its Contributions) on an "AS IS" BASIS, -+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -+ implied, including, without limitation, any warranties or conditions -+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A -+ PARTICULAR PURPOSE. You are solely responsible for determining the -+ appropriateness of using or redistributing the Work and assume any -+ risks associated with Your exercise of permissions under this License. -+ -+ 8. Limitation of Liability. In no event and under no legal theory, -+ whether in tort (including negligence), contract, or otherwise, -+ unless required by applicable law (such as deliberate and grossly -+ negligent acts) or agreed to in writing, shall any Contributor be -+ liable to You for damages, including any direct, indirect, special, -+ incidental, or consequential damages of any character arising as a -+ result of this License or out of the use or inability to use the -+ Work (including but not limited to damages for loss of goodwill, -+ work stoppage, computer failure or malfunction, or any and all -+ other commercial damages or losses), even if such Contributor -+ has been advised of the possibility of such damages. -+ -+ 9. Accepting Warranty or Additional Liability. While redistributing -+ the Work or Derivative Works thereof, You may choose to offer, -+ and charge a fee for, acceptance of support, warranty, indemnity, -+ or other liability obligations and/or rights consistent with this -+ License. However, in accepting such obligations, You may act only -+ on Your own behalf and on Your sole responsibility, not on behalf -+ of any other Contributor, and only if You agree to indemnify, -+ defend, and hold each Contributor harmless for any liability -+ incurred by, or claims asserted against, such Contributor by reason -+ of your accepting any such warranty or additional liability. -+ -+ END OF TERMS AND CONDITIONS -+ -+ APPENDIX: How to apply the Apache License to your work. -+ -+ To apply the Apache License to your work, attach the following -+ boilerplate notice, with the fields enclosed by brackets "[]" -+ replaced with your own identifying information. (Don't include -+ the brackets!) The text should be enclosed in the appropriate -+ comment syntax for the file format. We also recommend that a -+ file or class name and description of purpose be included on the -+ same "printed page" as the copyright notice for easier -+ identification within third-party archives. -+ -+ Copyright [yyyy] [name of copyright owner] -+ -+ 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. -diff --git a/vendor/github.com/containerd/ttrpc/Makefile b/vendor/github.com/containerd/ttrpc/Makefile -new file mode 100755 -index 0000000..c3a497d ---- /dev/null -+++ b/vendor/github.com/containerd/ttrpc/Makefile -@@ -0,0 +1,180 @@ -+# Copyright The containerd 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 command to use for build -+GO ?= go -+INSTALL ?= install -+ -+# Root directory of the project (absolute path). -+ROOTDIR=$(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -+ -+WHALE = "🇩" -+ONI = "👹" -+ -+# Project binaries. -+COMMANDS=protoc-gen-go-ttrpc protoc-gen-gogottrpc -+ -+ifdef BUILDTAGS -+ GO_BUILDTAGS = ${BUILDTAGS} -+endif -+GO_BUILDTAGS ?= -+GO_TAGS=$(if $(GO_BUILDTAGS),-tags "$(strip $(GO_BUILDTAGS))",) -+ -+# Project packages. -+PACKAGES=$(shell $(GO) list ${GO_TAGS} ./... | grep -v /example) -+TESTPACKAGES=$(shell $(GO) list ${GO_TAGS} ./... | grep -v /cmd | grep -v /integration | grep -v /example) -+BINPACKAGES=$(addprefix ./cmd/,$(COMMANDS)) -+ -+#Replaces ":" (*nix), ";" (windows) with newline for easy parsing -+GOPATHS=$(shell echo ${GOPATH} | tr ":" "\n" | tr ";" "\n") -+ -+TESTFLAGS_RACE= -+GO_BUILD_FLAGS= -+# See Golang issue re: '-trimpath': https://github.com/golang/go/issues/13809 -+GO_GCFLAGS=$(shell \ -+ set -- ${GOPATHS}; \ -+ echo "-gcflags=-trimpath=$${1}/src"; \ -+ ) -+ -+BINARIES=$(addprefix bin/,$(COMMANDS)) -+ -+# Flags passed to `go test` -+TESTFLAGS ?= $(TESTFLAGS_RACE) $(EXTRA_TESTFLAGS) -+TESTFLAGS_PARALLEL ?= 8 -+ -+# Use this to replace `go test` with, for instance, `gotestsum` -+GOTEST ?= $(GO) test -+ -+.PHONY: clean all AUTHORS build binaries test integration generate protos check-protos coverage ci check help install vendor install-protobuf install-protobuild -+.DEFAULT: default -+ -+# Forcibly set the default goal to all, in case an include above brought in a rule definition. -+.DEFAULT_GOAL := all -+ -+all: binaries -+ -+check: proto-fmt ## run all linters -+ @echo "$(WHALE) $@" -+ GOGC=75 golangci-lint run -+ -+ci: check binaries check-protos coverage # coverage-integration ## to be used by the CI -+ -+AUTHORS: .mailmap .git/HEAD -+ git log --format='%aN <%aE>' | sort -fu > $@ -+ -+generate: protos -+ @echo "$(WHALE) $@" -+ @PATH="${ROOTDIR}/bin:${PATH}" $(GO) generate -x ${PACKAGES} -+ -+protos: bin/protoc-gen-gogottrpc bin/protoc-gen-go-ttrpc ## generate protobuf -+ @echo "$(WHALE) $@" -+ @(PATH="${ROOTDIR}/bin:${PATH}" protobuild --quiet ${PACKAGES}) -+ -+check-protos: protos ## check if protobufs needs to be generated again -+ @echo "$(WHALE) $@" -+ @test -z "$$(git status --short | grep ".pb.go" | tee /dev/stderr)" || \ -+ ((git diff | cat) && \ -+ (echo "$(ONI) please run 'make protos' when making changes to proto files" && false)) -+ -+check-api-descriptors: protos ## check that protobuf changes aren't present. -+ @echo "$(WHALE) $@" -+ @test -z "$$(git status --short | grep ".pb.txt" | tee /dev/stderr)" || \ -+ ((git diff $$(find . -name '*.pb.txt') | cat) && \ -+ (echo "$(ONI) please run 'make protos' when making changes to proto files and check-in the generated descriptor file changes" && false)) -+ -+proto-fmt: ## check format of proto files -+ @echo "$(WHALE) $@" -+ @test -z "$$(find . -name '*.proto' -type f -exec grep -Hn -e "^ " {} \; | tee /dev/stderr)" || \ -+ (echo "$(ONI) please indent proto files with tabs only" && false) -+ @test -z "$$(find . -name '*.proto' -type f -exec grep -Hn "Meta meta = " {} \; | grep -v '(gogoproto.nullable) = false' | tee /dev/stderr)" || \ -+ (echo "$(ONI) meta fields in proto files must have option (gogoproto.nullable) = false" && false) -+ -+build: ## build the go packages -+ @echo "$(WHALE) $@" -+ @$(GO) build ${DEBUG_GO_GCFLAGS} ${GO_GCFLAGS} ${GO_BUILD_FLAGS} ${EXTRA_FLAGS} ${PACKAGES} -+ -+test: ## run tests, except integration tests and tests that require root -+ @echo "$(WHALE) $@" -+ @$(GOTEST) ${TESTFLAGS} ${TESTPACKAGES} -+ -+integration: ## run integration tests -+ @echo "$(WHALE) $@" -+ @cd "${ROOTDIR}/integration" && $(GOTEST) -v ${TESTFLAGS} -parallel ${TESTFLAGS_PARALLEL} . -+ -+benchmark: ## run benchmarks tests -+ @echo "$(WHALE) $@" -+ @$(GO) test ${TESTFLAGS} -bench . -run Benchmark -+ -+FORCE: -+ -+define BUILD_BINARY -+@echo "$(WHALE) $@" -+@$(GO) build ${DEBUG_GO_GCFLAGS} ${GO_GCFLAGS} ${GO_BUILD_FLAGS} -o $@ ${GO_TAGS} ./$< -+endef -+ -+# Build a binary from a cmd. -+bin/%: cmd/% FORCE -+ $(call BUILD_BINARY) -+ -+binaries: $(BINARIES) ## build binaries -+ @echo "$(WHALE) $@" -+ -+clean: ## clean up binaries -+ @echo "$(WHALE) $@" -+ @rm -f $(BINARIES) -+ -+install: ## install binaries -+ @echo "$(WHALE) $@ $(BINPACKAGES)" -+ @$(GO) install $(BINPACKAGES) -+ -+install-protobuf: -+ @echo "$(WHALE) $@" -+ @script/install-protobuf -+ -+install-protobuild: -+ @echo "$(WHALE) $@" -+ @$(GO) install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28.1 -+ @$(GO) install github.com/containerd/protobuild@14832ccc41429f5c4f81028e5af08aa233a219cf -+ -+coverage: ## generate coverprofiles from the unit tests, except tests that require root -+ @echo "$(WHALE) $@" -+ @rm -f coverage.txt -+ @$(GO) test ${TESTFLAGS} ${TESTPACKAGES} 2> /dev/null -+ @( for pkg in ${PACKAGES}; do \ -+ $(GO) test ${TESTFLAGS} \ -+ -cover \ -+ -coverprofile=profile.out \ -+ -covermode=atomic $$pkg || exit; \ -+ if [ -f profile.out ]; then \ -+ cat profile.out >> coverage.txt; \ -+ rm profile.out; \ -+ fi; \ -+ done ) -+ -+vendor: ## ensure all the go.mod/go.sum files are up-to-date -+ @echo "$(WHALE) $@" -+ @$(GO) mod tidy -+ @$(GO) mod verify -+ -+verify-vendor: ## verify if all the go.mod/go.sum files are up-to-date -+ @echo "$(WHALE) $@" -+ @$(GO) mod tidy -+ @$(GO) mod verify -+ @test -z "$$(git status --short | grep "go.sum" | tee /dev/stderr)" || \ -+ ((git diff | cat) && \ -+ (echo "$(ONI) make sure to checkin changes after go mod tidy" && false)) -+ -+help: ## this help -+ @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST) | sort -diff --git a/vendor/github.com/containerd/ttrpc/PROTOCOL.md b/vendor/github.com/containerd/ttrpc/PROTOCOL.md -new file mode 100755 -index 0000000..12b43f6 ---- /dev/null -+++ b/vendor/github.com/containerd/ttrpc/PROTOCOL.md -@@ -0,0 +1,240 @@ -+# Protocol Specification -+ -+The ttrpc protocol is client/server protocol to support multiple request streams -+over a single connection with lightweight framing. The client represents the -+process which initiated the underlying connection and the server is the process -+which accepted the connection. The protocol is currently defined as -+asymmetrical, with clients sending requests and servers sending responses. Both -+clients and servers are able to send stream data. The roles are also used in -+determining the stream identifiers, with client initiated streams using odd -+number identifiers and server initiated using even number. The protocol may be -+extended in the future to support server initiated streams, that is not -+supported in the latest version. -+ -+## Purpose -+ -+The ttrpc protocol is designed to be lightweight and optimized for low latency -+and reliable connections between processes on the same host. The protocol does -+not include features for handling unreliable connections such as handshakes, -+resets, pings, or flow control. The protocol is designed to make low-overhead -+implementations as simple as possible. It is not intended as a suitable -+replacement for HTTP2/3 over the network. -+ -+## Message Frame -+ -+Each Message Frame consists of a 10-byte message header followed -+by message data. The data length and stream ID are both big-endian -+4-byte unsigned integers. The message type is an unsigned 1-byte -+integer. The flags are also an unsigned 1-byte integer and -+use is defined by the message type. -+ -+ +---------------------------------------------------------------+ -+ | Data Length (32) | -+ +---------------------------------------------------------------+ -+ | Stream ID (32) | -+ +---------------+-----------------------------------------------+ -+ | Msg Type (8) | -+ +---------------+ -+ | Flags (8) | -+ +---------------+-----------------------------------------------+ -+ | Data (*) | -+ +---------------------------------------------------------------+ -+ -+The Data Length field represents the number of bytes in the Data field. The -+total frame size will always be Data Length + 10 bytes. The maximum data length -+is 4MB and any larger size should be rejected. Due to the maximum data size -+being less than 16MB, the first frame byte should always be zero. This first -+byte should be considered reserved for future use. -+ -+The Stream ID must be odd for client initiated streams and even for server -+initiated streams. Server initiated streams are not currently supported. -+ -+## Mesage Types -+ -+| Message Type | Name | Description | -+|--------------|----------|----------------------------------| -+| 0x01 | Request | Initiates stream | -+| 0x02 | Response | Final stream data and terminates | -+| 0x03 | Data | Stream data | -+ -+### Request -+ -+The request message is used to initiate stream and send along request data for -+properly routing and handling the stream. The stream may indicate unary without -+any inbound or outbound stream data with only a response is expected on the -+stream. The request may also indicate the stream is still open for more data and -+no response is expected until data is finished. If the remote indicates the -+stream is closed, the request may be considered non-unary but without anymore -+stream data sent. In the case of `remote closed`, the remote still expects to -+receive a response or stream data. For compatibility with non streaming clients, -+a request with empty flags indicates a unary request. -+ -+#### Request Flags -+ -+| Flag | Name | Description | -+|------|-----------------|--------------------------------------------------| -+| 0x01 | `remote closed` | Non-unary, but no more data expected from remote | -+| 0x02 | `remote open` | Non-unary, remote is still sending data | -+ -+### Response -+ -+The response message is used to end a stream with data, an empty response, or -+an error. A response message is the only expected message after a unary request. -+A non-unary request does not require a response message if the server is sending -+back stream data. A non-unary stream may return a single response message but no -+other stream data may follow. -+ -+#### Response Flags -+ -+No response flags are defined at this time, flags should be empty. -+ -+### Data -+ -+The data message is used to send data on an already initialized stream. Either -+client or server may send data. A data message is not allowed on a unary stream. -+A data message should not be sent after indicating `remote closed` to the peer. -+The last data message on a stream must set the `remote closed` flag. -+ -+The `no data` flag is used to indicate that the data message does not include -+any data. This is normally used with the `remote closed` flag to indicate the -+stream is now closed without transmitting any data. Since ttrpc normally -+transmits a single object per message, a zero length data message may be -+interpreted as an empty object. For example, transmitting the number zero as a -+protobuf message ends up with a data length of zero, but the message is still -+considered data and should be processed. -+ -+#### Data Flags -+ -+| Flag | Name | Description | -+|------|-----------------|-----------------------------------| -+| 0x01 | `remote closed` | No more data expected from remote | -+| 0x04 | `no data` | This message does not have data | -+ -+## Streaming -+ -+All ttrpc requests use streams to transfer data. Unary streams will only have -+two messages sent per stream, a request from a client and a response from the -+server. Non-unary streams, however, may send any numbers of messages from the -+client and the server. This makes stream management more complicated than unary -+streams since both client and server need to track additional state. To keep -+this management as simple as possible, ttrpc minimizes the number of states and -+uses two flags instead of control frames. Each stream has two states while a -+stream is still alive: `local closed` and `remote closed`. Each peer considers -+local and remote from their own perspective and sets flags from the other peer's -+perspective. For example, if a client sends a data frame with the -+`remote closed` flag, that is indicating that the client is now `local closed` -+and the server will be `remote closed`. A unary operation does not need to send -+these flags since each received message always indicates `remote closed`. Once a -+peer is both `local closed` and `remote closed`, the stream is considered -+finished and may be cleaned up. -+ -+Due to the asymmetric nature of the current protocol, a client should -+always be in the `local closed` state before `remote closed` and a server should -+always be in the `remote closed` state before `local closed`. This happens -+because the client is always initiating requests and a client always expects a -+final response back from a server to indicate the initiated request has been -+fulfilled. This may mean server sends a final empty response to finish a stream -+even after it has already completed sending data before the client. -+ -+### Unary State Diagram -+ -+ +--------+ +--------+ -+ | Client | | Server | -+ +---+----+ +----+---+ -+ | +---------+ | -+ local >---------------+ Request +--------------------> remote -+ closed | +---------+ | closed -+ | | -+ | +----------+ | -+ finished <--------------+ Response +--------------------< finished -+ | +----------+ | -+ | | -+ -+### Non-Unary State Diagrams -+ -+RC: `remote closed` flag -+RO: `remote open` flag -+ -+ +--------+ +--------+ -+ | Client | | Server | -+ +---+----+ +----+---+ -+ | +--------------+ | -+ >-------------+ Request [RO] +-----------------> -+ | +--------------+ | -+ | | -+ | +------+ | -+ >-----------------+ Data +---------------------> -+ | +------+ | -+ | | -+ | +-----------+ | -+ local >---------------+ Data [RC] +------------------> remote -+ closed | +-----------+ | closed -+ | | -+ | +----------+ | -+ finished <--------------+ Response +--------------------< finished -+ | +----------+ | -+ | | -+ -+ +--------+ +--------+ -+ | Client | | Server | -+ +---+----+ +----+---+ -+ | +--------------+ | -+ local >-------------+ Request [RC] +-----------------> remote -+ closed | +--------------+ | closed -+ | | -+ | +------+ | -+ <-----------------+ Data +---------------------< -+ | +------+ | -+ | | -+ | +-----------+ | -+ finished <---------------+ Data [RC] +------------------< finished -+ | +-----------+ | -+ | | -+ -+ +--------+ +--------+ -+ | Client | | Server | -+ +---+----+ +----+---+ -+ | +--------------+ | -+ >-------------+ Request [RO] +-----------------> -+ | +--------------+ | -+ | | -+ | +------+ | -+ >-----------------+ Data +---------------------> -+ | +------+ | -+ | | -+ | +------+ | -+ <-----------------+ Data +---------------------< -+ | +------+ | -+ | | -+ | +------+ | -+ >-----------------+ Data +---------------------> -+ | +------+ | -+ | | -+ | +-----------+ | -+ local >---------------+ Data [RC] +------------------> remote -+ closed | +-----------+ | closed -+ | | -+ | +------+ | -+ <-----------------+ Data +---------------------< -+ | +------+ | -+ | | -+ | +-----------+ | -+ finished <---------------+ Data [RC] +------------------< finished -+ | +-----------+ | -+ | | -+ -+## RPC -+ -+While this protocol is defined primarily to support Remote Procedure Calls, the -+protocol does not define the request and response types beyond the messages -+defined in the protocol. The implementation provides a default protobuf -+definition of request and response which may be used for cross language rpc. -+All implementations should at least define a request type which support -+routing by procedure name and a response type which supports call status. -+ -+## Version History -+ -+| Version | Features | -+|---------|---------------------| -+| 1.0 | Unary requests only | -+| 1.2 | Streaming support | -diff --git a/vendor/github.com/containerd/ttrpc/Protobuild.toml b/vendor/github.com/containerd/ttrpc/Protobuild.toml -new file mode 100755 -index 0000000..0f6ccbd ---- /dev/null -+++ b/vendor/github.com/containerd/ttrpc/Protobuild.toml -@@ -0,0 +1,28 @@ -+version = "2" -+generators = ["go"] -+ -+# Control protoc include paths. Below are usually some good defaults, but feel -+# free to try it without them if it works for your project. -+[includes] -+ # Include paths that will be added before all others. Typically, you want to -+ # treat the root of the project as an include, but this may not be necessary. -+ before = ["."] -+ -+ # Paths that will be added untouched to the end of the includes. We use -+ # `/usr/local/include` to pickup the common install location of protobuf. -+ # This is the default. -+ after = ["/usr/local/include"] -+ -+# This section maps protobuf imports to Go packages. These will become -+# `-M` directives in the call to the go protobuf generator. -+[packages] -+ "google/protobuf/any.proto" = "github.com/gogo/protobuf/types" -+ "proto/status.proto" = "google.golang.org/genproto/googleapis/rpc/status" -+ -+[[overrides]] -+# enable ttrpc and disable fieldpath and grpc for the shim -+prefixes = ["github.com/containerd/ttrpc/integration/streaming"] -+generators = ["go", "go-ttrpc"] -+ -+[overrides.parameters.go-ttrpc] -+prefix = "TTRPC" -diff --git a/vendor/github.com/containerd/ttrpc/README.md b/vendor/github.com/containerd/ttrpc/README.md -new file mode 100755 -index 0000000..675a517 ---- /dev/null -+++ b/vendor/github.com/containerd/ttrpc/README.md -@@ -0,0 +1,59 @@ -+# ttrpc -+ -+[![Build Status](https://github.com/containerd/ttrpc/workflows/CI/badge.svg)](https://github.com/containerd/ttrpc/actions?query=workflow%3ACI) -+ -+GRPC for low-memory environments. -+ -+The existing grpc-go project requires a lot of memory overhead for importing -+packages and at runtime. While this is great for many services with low density -+requirements, this can be a problem when running a large number of services on -+a single machine or on a machine with a small amount of memory. -+ -+Using the same GRPC definitions, this project reduces the binary size and -+protocol overhead required. We do this by eliding the `net/http`, `net/http2` -+and `grpc` package used by grpc replacing it with a lightweight framing -+protocol. The result are smaller binaries that use less resident memory with -+the same ease of use as GRPC. -+ -+Please note that while this project supports generating either end of the -+protocol, the generated service definitions will be incompatible with regular -+GRPC services, as they do not speak the same protocol. -+ -+# Protocol -+ -+See the [protocol specification](./PROTOCOL.md). -+ -+# Usage -+ -+Create a gogo vanity binary (see -+[`cmd/protoc-gen-gogottrpc/main.go`](cmd/protoc-gen-gogottrpc/main.go) for an -+example with the ttrpc plugin enabled. -+ -+It's recommended to use [`protobuild`](https://github.com/containerd/protobuild) -+to build the protobufs for this project, but this will work with protoc -+directly, if required. -+ -+# Differences from GRPC -+ -+- The protocol stack has been replaced with a lighter protocol that doesn't -+ require http, http2 and tls. -+- The client and server interface are identical whereas in GRPC there is a -+ client and server interface that are different. -+- The Go stdlib context package is used instead. -+ -+# Status -+ -+TODO: -+ -+- [ ] Add testing under concurrent load to ensure -+- [ ] Verify connection error handling -+ -+# Project details -+ -+ttrpc is a containerd sub-project, licensed under the [Apache 2.0 license](./LICENSE). -+As a containerd sub-project, you will find the: -+ * [Project governance](https://github.com/containerd/project/blob/main/GOVERNANCE.md), -+ * [Maintainers](https://github.com/containerd/project/blob/main/MAINTAINERS), -+ * and [Contributing guidelines](https://github.com/containerd/project/blob/main/CONTRIBUTING.md) -+ -+information in our [`containerd/project`](https://github.com/containerd/project) repository. -diff --git a/vendor/github.com/containerd/ttrpc/channel.go b/vendor/github.com/containerd/ttrpc/channel.go -new file mode 100755 -index 0000000..feafd9a ---- /dev/null -+++ b/vendor/github.com/containerd/ttrpc/channel.go -@@ -0,0 +1,182 @@ -+/* -+ Copyright The containerd 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 ttrpc -+ -+import ( -+ "bufio" -+ "encoding/binary" -+ "fmt" -+ "io" -+ "net" -+ "sync" -+ -+ "google.golang.org/grpc/codes" -+ "google.golang.org/grpc/status" -+) -+ -+const ( -+ messageHeaderLength = 10 -+ messageLengthMax = 4 << 20 -+) -+ -+type messageType uint8 -+ -+const ( -+ messageTypeRequest messageType = 0x1 -+ messageTypeResponse messageType = 0x2 -+ messageTypeData messageType = 0x3 -+) -+ -+func (mt messageType) String() string { -+ switch mt { -+ case messageTypeRequest: -+ return "request" -+ case messageTypeResponse: -+ return "response" -+ case messageTypeData: -+ return "data" -+ default: -+ return "unknown" -+ } -+} -+ -+const ( -+ flagRemoteClosed uint8 = 0x1 -+ flagRemoteOpen uint8 = 0x2 -+ flagNoData uint8 = 0x4 -+) -+ -+// messageHeader represents the fixed-length message header of 10 bytes sent -+// with every request. -+type messageHeader struct { -+ Length uint32 // length excluding this header. b[:4] -+ StreamID uint32 // identifies which request stream message is a part of. b[4:8] -+ Type messageType // message type b[8] -+ Flags uint8 // type specific flags b[9] -+} -+ -+func readMessageHeader(p []byte, r io.Reader) (messageHeader, error) { -+ _, err := io.ReadFull(r, p[:messageHeaderLength]) -+ if err != nil { -+ return messageHeader{}, err -+ } -+ -+ return messageHeader{ -+ Length: binary.BigEndian.Uint32(p[:4]), -+ StreamID: binary.BigEndian.Uint32(p[4:8]), -+ Type: messageType(p[8]), -+ Flags: p[9], -+ }, nil -+} -+ -+func writeMessageHeader(w io.Writer, p []byte, mh messageHeader) error { -+ binary.BigEndian.PutUint32(p[:4], mh.Length) -+ binary.BigEndian.PutUint32(p[4:8], mh.StreamID) -+ p[8] = byte(mh.Type) -+ p[9] = mh.Flags -+ -+ _, err := w.Write(p[:]) -+ return err -+} -+ -+var buffers sync.Pool -+ -+type channel struct { -+ conn net.Conn -+ bw *bufio.Writer -+ br *bufio.Reader -+ hrbuf [messageHeaderLength]byte // avoid alloc when reading header -+ hwbuf [messageHeaderLength]byte -+} -+ -+func newChannel(conn net.Conn) *channel { -+ return &channel{ -+ conn: conn, -+ bw: bufio.NewWriter(conn), -+ br: bufio.NewReader(conn), -+ } -+} -+ -+// recv a message from the channel. The returned buffer contains the message. -+// -+// If a valid grpc status is returned, the message header -+// returned will be valid and caller should send that along to -+// the correct consumer. The bytes on the underlying channel -+// will be discarded. -+func (ch *channel) recv() (messageHeader, []byte, error) { -+ mh, err := readMessageHeader(ch.hrbuf[:], ch.br) -+ if err != nil { -+ return messageHeader{}, nil, err -+ } -+ -+ if mh.Length > uint32(messageLengthMax) { -+ if _, err := ch.br.Discard(int(mh.Length)); err != nil { -+ return mh, nil, fmt.Errorf("failed to discard after receiving oversized message: %w", err) -+ } -+ -+ return mh, nil, status.Errorf(codes.ResourceExhausted, "message length %v exceed maximum message size of %v", mh.Length, messageLengthMax) -+ } -+ -+ var p []byte -+ if mh.Length > 0 { -+ p = ch.getmbuf(int(mh.Length)) -+ if _, err := io.ReadFull(ch.br, p); err != nil { -+ return messageHeader{}, nil, fmt.Errorf("failed reading message: %w", err) -+ } -+ } -+ -+ return mh, p, nil -+} -+ -+func (ch *channel) send(streamID uint32, t messageType, flags uint8, p []byte) error { -+ // TODO: Error on send rather than on recv -+ //if len(p) > messageLengthMax { -+ // return status.Errorf(codes.InvalidArgument, "refusing to send, message length %v exceed maximum message size of %v", len(p), messageLengthMax) -+ //} -+ if err := writeMessageHeader(ch.bw, ch.hwbuf[:], messageHeader{Length: uint32(len(p)), StreamID: streamID, Type: t, Flags: flags}); err != nil { -+ return err -+ } -+ -+ if len(p) > 0 { -+ _, err := ch.bw.Write(p) -+ if err != nil { -+ return err -+ } -+ } -+ -+ return ch.bw.Flush() -+} -+ -+func (ch *channel) getmbuf(size int) []byte { -+ // we can't use the standard New method on pool because we want to allocate -+ // based on size. -+ b, ok := buffers.Get().(*[]byte) -+ if !ok || cap(*b) < size { -+ // TODO(stevvooe): It may be better to allocate these in fixed length -+ // buckets to reduce fragmentation but its not clear that would help -+ // with performance. An ilogb approach or similar would work well. -+ bb := make([]byte, size) -+ b = &bb -+ } else { -+ *b = (*b)[:size] -+ } -+ return *b -+} -+ -+func (ch *channel) putmbuf(p []byte) { -+ buffers.Put(&p) -+} -diff --git a/vendor/github.com/containerd/ttrpc/client.go b/vendor/github.com/containerd/ttrpc/client.go -new file mode 100755 -index 0000000..482a68e ---- /dev/null -+++ b/vendor/github.com/containerd/ttrpc/client.go -@@ -0,0 +1,551 @@ -+/* -+ Copyright The containerd 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 ttrpc -+ -+import ( -+ "context" -+ "errors" -+ "fmt" -+ "io" -+ "net" -+ "strings" -+ "sync" -+ "syscall" -+ "time" -+ -+ "github.com/sirupsen/logrus" -+ "google.golang.org/grpc/codes" -+ "google.golang.org/grpc/status" -+ "google.golang.org/protobuf/proto" -+) -+ -+// Client for a ttrpc server -+type Client struct { -+ codec codec -+ conn net.Conn -+ channel *channel -+ -+ streamLock sync.RWMutex -+ streams map[streamID]*stream -+ nextStreamID streamID -+ sendLock sync.Mutex -+ -+ ctx context.Context -+ closed func() -+ -+ closeOnce sync.Once -+ userCloseFunc func() -+ userCloseWaitCh chan struct{} -+ -+ interceptor UnaryClientInterceptor -+} -+ -+// ClientOpts configures a client -+type ClientOpts func(c *Client) -+ -+// WithOnClose sets the close func whenever the client's Close() method is called -+func WithOnClose(onClose func()) ClientOpts { -+ return func(c *Client) { -+ c.userCloseFunc = onClose -+ } -+} -+ -+// WithUnaryClientInterceptor sets the provided client interceptor -+func WithUnaryClientInterceptor(i UnaryClientInterceptor) ClientOpts { -+ return func(c *Client) { -+ c.interceptor = i -+ } -+} -+ -+// WithChainUnaryClientInterceptor sets the provided chain of client interceptors -+func WithChainUnaryClientInterceptor(interceptors ...UnaryClientInterceptor) ClientOpts { -+ return func(c *Client) { -+ if len(interceptors) == 0 { -+ return -+ } -+ if c.interceptor != nil { -+ interceptors = append([]UnaryClientInterceptor{c.interceptor}, interceptors...) -+ } -+ c.interceptor = func( -+ ctx context.Context, -+ req *Request, -+ reply *Response, -+ info *UnaryClientInfo, -+ final Invoker, -+ ) error { -+ return interceptors[0](ctx, req, reply, info, -+ chainUnaryInterceptors(interceptors[1:], final, info)) -+ } -+ } -+} -+ -+func chainUnaryInterceptors(interceptors []UnaryClientInterceptor, final Invoker, info *UnaryClientInfo) Invoker { -+ if len(interceptors) == 0 { -+ return final -+ } -+ return func( -+ ctx context.Context, -+ req *Request, -+ reply *Response, -+ ) error { -+ return interceptors[0](ctx, req, reply, info, -+ chainUnaryInterceptors(interceptors[1:], final, info)) -+ } -+} -+ -+// NewClient creates a new ttrpc client using the given connection -+func NewClient(conn net.Conn, opts ...ClientOpts) *Client { -+ ctx, cancel := context.WithCancel(context.Background()) -+ channel := newChannel(conn) -+ c := &Client{ -+ codec: codec{}, -+ conn: conn, -+ channel: channel, -+ streams: make(map[streamID]*stream), -+ nextStreamID: 1, -+ closed: cancel, -+ ctx: ctx, -+ userCloseFunc: func() {}, -+ userCloseWaitCh: make(chan struct{}), -+ } -+ -+ for _, o := range opts { -+ o(c) -+ } -+ -+ if c.interceptor == nil { -+ c.interceptor = defaultClientInterceptor -+ } -+ -+ go c.run() -+ return c -+} -+ -+func (c *Client) send(sid uint32, mt messageType, flags uint8, b []byte) error { -+ c.sendLock.Lock() -+ defer c.sendLock.Unlock() -+ return c.channel.send(sid, mt, flags, b) -+} -+ -+// Call makes a unary request and returns with response -+func (c *Client) Call(ctx context.Context, service, method string, req, resp interface{}) error { -+ payload, err := c.codec.Marshal(req) -+ if err != nil { -+ return err -+ } -+ -+ var ( -+ creq = &Request{ -+ Service: service, -+ Method: method, -+ Payload: payload, -+ // TODO: metadata from context -+ } -+ -+ cresp = &Response{} -+ ) -+ -+ if metadata, ok := GetMetadata(ctx); ok { -+ metadata.setRequest(creq) -+ } -+ -+ if dl, ok := ctx.Deadline(); ok { -+ creq.TimeoutNano = time.Until(dl).Nanoseconds() -+ } -+ -+ info := &UnaryClientInfo{ -+ FullMethod: fullPath(service, method), -+ } -+ if err := c.interceptor(ctx, creq, cresp, info, c.dispatch); err != nil { -+ return err -+ } -+ -+ if err := c.codec.Unmarshal(cresp.Payload, resp); err != nil { -+ return err -+ } -+ -+ if cresp.Status != nil && cresp.Status.Code != int32(codes.OK) { -+ return status.ErrorProto(cresp.Status) -+ } -+ return nil -+} -+ -+// StreamDesc describes the stream properties, whether the stream has -+// a streaming client, a streaming server, or both -+type StreamDesc struct { -+ StreamingClient bool -+ StreamingServer bool -+} -+ -+// ClientStream is used to send or recv messages on the underlying stream -+type ClientStream interface { -+ CloseSend() error -+ SendMsg(m interface{}) error -+ RecvMsg(m interface{}) error -+} -+ -+type clientStream struct { -+ ctx context.Context -+ s *stream -+ c *Client -+ desc *StreamDesc -+ localClosed bool -+ remoteClosed bool -+} -+ -+func (cs *clientStream) CloseSend() error { -+ if !cs.desc.StreamingClient { -+ return fmt.Errorf("%w: cannot close non-streaming client", ErrProtocol) -+ } -+ if cs.localClosed { -+ return ErrStreamClosed -+ } -+ err := cs.s.send(messageTypeData, flagRemoteClosed|flagNoData, nil) -+ if err != nil { -+ return filterCloseErr(err) -+ } -+ cs.localClosed = true -+ return nil -+} -+ -+func (cs *clientStream) SendMsg(m interface{}) error { -+ if !cs.desc.StreamingClient { -+ return fmt.Errorf("%w: cannot send data from non-streaming client", ErrProtocol) -+ } -+ if cs.localClosed { -+ return ErrStreamClosed -+ } -+ -+ var ( -+ payload []byte -+ err error -+ ) -+ if m != nil { -+ payload, err = cs.c.codec.Marshal(m) -+ if err != nil { -+ return err -+ } -+ } -+ -+ err = cs.s.send(messageTypeData, 0, payload) -+ if err != nil { -+ return filterCloseErr(err) -+ } -+ -+ return nil -+} -+ -+func (cs *clientStream) RecvMsg(m interface{}) error { -+ if cs.remoteClosed { -+ return io.EOF -+ } -+ -+ var msg *streamMessage -+ select { -+ case <-cs.ctx.Done(): -+ return cs.ctx.Err() -+ case <-cs.s.recvClose: -+ // If recv has a pending message, process that first -+ select { -+ case msg = <-cs.s.recv: -+ default: -+ return cs.s.recvErr -+ } -+ case msg = <-cs.s.recv: -+ } -+ -+ if msg.header.Type == messageTypeResponse { -+ resp := &Response{} -+ err := proto.Unmarshal(msg.payload[:msg.header.Length], resp) -+ // return the payload buffer for reuse -+ cs.c.channel.putmbuf(msg.payload) -+ if err != nil { -+ return err -+ } -+ -+ if err := cs.c.codec.Unmarshal(resp.Payload, m); err != nil { -+ return err -+ } -+ -+ if resp.Status != nil && resp.Status.Code != int32(codes.OK) { -+ return status.ErrorProto(resp.Status) -+ } -+ -+ cs.c.deleteStream(cs.s) -+ cs.remoteClosed = true -+ -+ return nil -+ } else if msg.header.Type == messageTypeData { -+ if !cs.desc.StreamingServer { -+ cs.c.deleteStream(cs.s) -+ cs.remoteClosed = true -+ return fmt.Errorf("received data from non-streaming server: %w", ErrProtocol) -+ } -+ if msg.header.Flags&flagRemoteClosed == flagRemoteClosed { -+ cs.c.deleteStream(cs.s) -+ cs.remoteClosed = true -+ -+ if msg.header.Flags&flagNoData == flagNoData { -+ return io.EOF -+ } -+ } -+ -+ err := cs.c.codec.Unmarshal(msg.payload[:msg.header.Length], m) -+ cs.c.channel.putmbuf(msg.payload) -+ if err != nil { -+ return err -+ } -+ return nil -+ } -+ -+ return fmt.Errorf("unexpected %q message received: %w", msg.header.Type, ErrProtocol) -+} -+ -+// Close closes the ttrpc connection and underlying connection -+func (c *Client) Close() error { -+ c.closeOnce.Do(func() { -+ c.closed() -+ -+ c.conn.Close() -+ }) -+ return nil -+} -+ -+// UserOnCloseWait is used to block until the user's on-close callback -+// finishes. -+func (c *Client) UserOnCloseWait(ctx context.Context) error { -+ select { -+ case <-c.userCloseWaitCh: -+ return nil -+ case <-ctx.Done(): -+ return ctx.Err() -+ } -+} -+ -+func (c *Client) run() { -+ err := c.receiveLoop() -+ c.Close() -+ c.cleanupStreams(err) -+ -+ c.userCloseFunc() -+ close(c.userCloseWaitCh) -+} -+ -+func (c *Client) receiveLoop() error { -+ for { -+ select { -+ case <-c.ctx.Done(): -+ return ErrClosed -+ default: -+ var ( -+ msg = &streamMessage{} -+ err error -+ ) -+ -+ msg.header, msg.payload, err = c.channel.recv() -+ if err != nil { -+ _, ok := status.FromError(err) -+ if !ok { -+ // treat all errors that are not an rpc status as terminal. -+ // all others poison the connection. -+ return filterCloseErr(err) -+ } -+ } -+ sid := streamID(msg.header.StreamID) -+ s := c.getStream(sid) -+ if s == nil { -+ logrus.WithField("stream", sid).Errorf("ttrpc: received message on inactive stream") -+ continue -+ } -+ -+ if err != nil { -+ s.closeWithError(err) -+ } else { -+ if err := s.receive(c.ctx, msg); err != nil { -+ logrus.WithError(err).WithField("stream", sid).Errorf("ttrpc: failed to handle message") -+ } -+ } -+ } -+ } -+} -+ -+// createStream creates a new stream and registers it with the client -+// Introduce stream types for multiple or single response -+func (c *Client) createStream(flags uint8, b []byte) (*stream, error) { -+ c.streamLock.Lock() -+ -+ // Check if closed since lock acquired to prevent adding -+ // anything after cleanup completes -+ select { -+ case <-c.ctx.Done(): -+ c.streamLock.Unlock() -+ return nil, ErrClosed -+ default: -+ } -+ -+ // Stream ID should be allocated at same time -+ s := newStream(c.nextStreamID, c) -+ c.streams[s.id] = s -+ c.nextStreamID = c.nextStreamID + 2 -+ -+ c.sendLock.Lock() -+ defer c.sendLock.Unlock() -+ c.streamLock.Unlock() -+ -+ if err := c.channel.send(uint32(s.id), messageTypeRequest, flags, b); err != nil { -+ return s, filterCloseErr(err) -+ } -+ -+ return s, nil -+} -+ -+func (c *Client) deleteStream(s *stream) { -+ c.streamLock.Lock() -+ delete(c.streams, s.id) -+ c.streamLock.Unlock() -+ s.closeWithError(nil) -+} -+ -+func (c *Client) getStream(sid streamID) *stream { -+ c.streamLock.RLock() -+ s := c.streams[sid] -+ c.streamLock.RUnlock() -+ return s -+} -+ -+func (c *Client) cleanupStreams(err error) { -+ c.streamLock.Lock() -+ defer c.streamLock.Unlock() -+ -+ for sid, s := range c.streams { -+ s.closeWithError(err) -+ delete(c.streams, sid) -+ } -+} -+ -+// filterCloseErr rewrites EOF and EPIPE errors to ErrClosed. Use when -+// returning from call or handling errors from main read loop. -+// -+// This purposely ignores errors with a wrapped cause. -+func filterCloseErr(err error) error { -+ switch { -+ case err == nil: -+ return nil -+ case err == io.EOF: -+ return ErrClosed -+ case errors.Is(err, io.ErrClosedPipe): -+ return ErrClosed -+ case errors.Is(err, io.EOF): -+ return ErrClosed -+ case strings.Contains(err.Error(), "use of closed network connection"): -+ return ErrClosed -+ default: -+ // if we have an epipe on a write or econnreset on a read , we cast to errclosed -+ var oerr *net.OpError -+ if errors.As(err, &oerr) { -+ if (oerr.Op == "write" && errors.Is(err, syscall.EPIPE)) || -+ (oerr.Op == "read" && errors.Is(err, syscall.ECONNRESET)) { -+ return ErrClosed -+ } -+ } -+ } -+ -+ return err -+} -+ -+// NewStream creates a new stream with the given stream descriptor to the -+// specified service and method. If not a streaming client, the request object -+// may be provided. -+func (c *Client) NewStream(ctx context.Context, desc *StreamDesc, service, method string, req interface{}) (ClientStream, error) { -+ var payload []byte -+ if req != nil { -+ var err error -+ payload, err = c.codec.Marshal(req) -+ if err != nil { -+ return nil, err -+ } -+ } -+ -+ request := &Request{ -+ Service: service, -+ Method: method, -+ Payload: payload, -+ // TODO: metadata from context -+ } -+ p, err := c.codec.Marshal(request) -+ if err != nil { -+ return nil, err -+ } -+ -+ var flags uint8 -+ if desc.StreamingClient { -+ flags = flagRemoteOpen -+ } else { -+ flags = flagRemoteClosed -+ } -+ s, err := c.createStream(flags, p) -+ if err != nil { -+ return nil, err -+ } -+ -+ return &clientStream{ -+ ctx: ctx, -+ s: s, -+ c: c, -+ desc: desc, -+ }, nil -+} -+ -+func (c *Client) dispatch(ctx context.Context, req *Request, resp *Response) error { -+ p, err := c.codec.Marshal(req) -+ if err != nil { -+ return err -+ } -+ -+ s, err := c.createStream(0, p) -+ if err != nil { -+ return err -+ } -+ defer c.deleteStream(s) -+ -+ var msg *streamMessage -+ select { -+ case <-ctx.Done(): -+ return ctx.Err() -+ case <-c.ctx.Done(): -+ return ErrClosed -+ case <-s.recvClose: -+ // If recv has a pending message, process that first -+ select { -+ case msg = <-s.recv: -+ default: -+ return s.recvErr -+ } -+ case msg = <-s.recv: -+ } -+ -+ if msg.header.Type == messageTypeResponse { -+ err = proto.Unmarshal(msg.payload[:msg.header.Length], resp) -+ } else { -+ err = fmt.Errorf("unexpected %q message received: %w", msg.header.Type, ErrProtocol) -+ } -+ -+ // return the payload buffer for reuse -+ c.channel.putmbuf(msg.payload) -+ -+ return err -+} -diff --git a/vendor/github.com/containerd/ttrpc/codec.go b/vendor/github.com/containerd/ttrpc/codec.go -new file mode 100755 -index 0000000..3e82722 ---- /dev/null -+++ b/vendor/github.com/containerd/ttrpc/codec.go -@@ -0,0 +1,43 @@ -+/* -+ Copyright The containerd 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 ttrpc -+ -+import ( -+ "fmt" -+ -+ "google.golang.org/protobuf/proto" -+) -+ -+type codec struct{} -+ -+func (c codec) Marshal(msg interface{}) ([]byte, error) { -+ switch v := msg.(type) { -+ case proto.Message: -+ return proto.Marshal(v) -+ default: -+ return nil, fmt.Errorf("ttrpc: cannot marshal unknown type: %T", msg) -+ } -+} -+ -+func (c codec) Unmarshal(p []byte, msg interface{}) error { -+ switch v := msg.(type) { -+ case proto.Message: -+ return proto.Unmarshal(p, v) -+ default: -+ return fmt.Errorf("ttrpc: cannot unmarshal into unknown type: %T", msg) -+ } -+} -diff --git a/vendor/github.com/containerd/ttrpc/config.go b/vendor/github.com/containerd/ttrpc/config.go -new file mode 100755 -index 0000000..f401f67 ---- /dev/null -+++ b/vendor/github.com/containerd/ttrpc/config.go -@@ -0,0 +1,86 @@ -+/* -+ Copyright The containerd 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 ttrpc -+ -+import ( -+ "context" -+ "errors" -+) -+ -+type serverConfig struct { -+ handshaker Handshaker -+ interceptor UnaryServerInterceptor -+} -+ -+// ServerOpt for configuring a ttrpc server -+type ServerOpt func(*serverConfig) error -+ -+// WithServerHandshaker can be passed to NewServer to ensure that the -+// handshaker is called before every connection attempt. -+// -+// Only one handshaker is allowed per server. -+func WithServerHandshaker(handshaker Handshaker) ServerOpt { -+ return func(c *serverConfig) error { -+ if c.handshaker != nil { -+ return errors.New("only one handshaker allowed per server") -+ } -+ c.handshaker = handshaker -+ return nil -+ } -+} -+ -+// WithUnaryServerInterceptor sets the provided interceptor on the server -+func WithUnaryServerInterceptor(i UnaryServerInterceptor) ServerOpt { -+ return func(c *serverConfig) error { -+ if c.interceptor != nil { -+ return errors.New("only one unchained interceptor allowed per server") -+ } -+ c.interceptor = i -+ return nil -+ } -+} -+ -+// WithChainUnaryServerInterceptor sets the provided chain of server interceptors -+func WithChainUnaryServerInterceptor(interceptors ...UnaryServerInterceptor) ServerOpt { -+ return func(c *serverConfig) error { -+ if len(interceptors) == 0 { -+ return nil -+ } -+ if c.interceptor != nil { -+ interceptors = append([]UnaryServerInterceptor{c.interceptor}, interceptors...) -+ } -+ c.interceptor = func( -+ ctx context.Context, -+ unmarshal Unmarshaler, -+ info *UnaryServerInfo, -+ method Method) (interface{}, error) { -+ return interceptors[0](ctx, unmarshal, info, -+ chainUnaryServerInterceptors(info, method, interceptors[1:])) -+ } -+ return nil -+ } -+} -+ -+func chainUnaryServerInterceptors(info *UnaryServerInfo, method Method, interceptors []UnaryServerInterceptor) Method { -+ if len(interceptors) == 0 { -+ return method -+ } -+ return func(ctx context.Context, unmarshal func(interface{}) error) (interface{}, error) { -+ return interceptors[0](ctx, unmarshal, info, -+ chainUnaryServerInterceptors(info, method, interceptors[1:])) -+ } -+} -diff --git a/vendor/github.com/containerd/ttrpc/doc.go b/vendor/github.com/containerd/ttrpc/doc.go -new file mode 100755 -index 0000000..d80cd42 ---- /dev/null -+++ b/vendor/github.com/containerd/ttrpc/doc.go -@@ -0,0 +1,23 @@ -+/* -+ Copyright The containerd 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 ttrpc defines and implements a low level simple transfer protocol -+optimized for low latency and reliable connections between processes on the same -+host. The protocol uses simple framing for sending requests, responses, and data -+using multiple streams. -+*/ -+package ttrpc -diff --git a/vendor/github.com/containerd/ttrpc/errors.go b/vendor/github.com/containerd/ttrpc/errors.go -new file mode 100755 -index 0000000..ec14b79 ---- /dev/null -+++ b/vendor/github.com/containerd/ttrpc/errors.go -@@ -0,0 +1,34 @@ -+/* -+ Copyright The containerd 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 ttrpc -+ -+import "errors" -+ -+var ( -+ // ErrProtocol is a general error in the handling the protocol. -+ ErrProtocol = errors.New("protocol error") -+ -+ // ErrClosed is returned by client methods when the underlying connection is -+ // closed. -+ ErrClosed = errors.New("ttrpc: closed") -+ -+ // ErrServerClosed is returned when the Server has closed its connection. -+ ErrServerClosed = errors.New("ttrpc: server closed") -+ -+ // ErrStreamClosed is when the streaming connection is closed. -+ ErrStreamClosed = errors.New("ttrpc: stream closed") -+) -diff --git a/vendor/github.com/containerd/ttrpc/handshake.go b/vendor/github.com/containerd/ttrpc/handshake.go -new file mode 100755 -index 0000000..3c6b610 ---- /dev/null -+++ b/vendor/github.com/containerd/ttrpc/handshake.go -@@ -0,0 +1,50 @@ -+/* -+ Copyright The containerd 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 ttrpc -+ -+import ( -+ "context" -+ "net" -+) -+ -+// Handshaker defines the interface for connection handshakes performed on the -+// server or client when first connecting. -+type Handshaker interface { -+ // Handshake should confirm or decorate a connection that may be incoming -+ // to a server or outgoing from a client. -+ // -+ // If this returns without an error, the caller should use the connection -+ // in place of the original connection. -+ // -+ // The second return value can contain credential specific data, such as -+ // unix socket credentials or TLS information. -+ // -+ // While we currently only have implementations on the server-side, this -+ // interface should be sufficient to implement similar handshakes on the -+ // client-side. -+ Handshake(ctx context.Context, conn net.Conn) (net.Conn, interface{}, error) -+} -+ -+type handshakerFunc func(ctx context.Context, conn net.Conn) (net.Conn, interface{}, error) -+ -+func (fn handshakerFunc) Handshake(ctx context.Context, conn net.Conn) (net.Conn, interface{}, error) { -+ return fn(ctx, conn) -+} -+ -+func noopHandshake(_ context.Context, conn net.Conn) (net.Conn, interface{}, error) { -+ return conn, nil, nil -+} -diff --git a/vendor/github.com/containerd/ttrpc/interceptor.go b/vendor/github.com/containerd/ttrpc/interceptor.go -new file mode 100755 -index 0000000..7ff5e9d ---- /dev/null -+++ b/vendor/github.com/containerd/ttrpc/interceptor.go -@@ -0,0 +1,65 @@ -+/* -+ Copyright The containerd 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 ttrpc -+ -+import "context" -+ -+// UnaryServerInfo provides information about the server request -+type UnaryServerInfo struct { -+ FullMethod string -+} -+ -+// UnaryClientInfo provides information about the client request -+type UnaryClientInfo struct { -+ FullMethod string -+} -+ -+// StreamServerInfo provides information about the server request -+type StreamServerInfo struct { -+ FullMethod string -+ StreamingClient bool -+ StreamingServer bool -+} -+ -+// Unmarshaler contains the server request data and allows it to be unmarshaled -+// into a concrete type -+type Unmarshaler func(interface{}) error -+ -+// Invoker invokes the client's request and response from the ttrpc server -+type Invoker func(context.Context, *Request, *Response) error -+ -+// UnaryServerInterceptor specifies the interceptor function for server request/response -+type UnaryServerInterceptor func(context.Context, Unmarshaler, *UnaryServerInfo, Method) (interface{}, error) -+ -+// UnaryClientInterceptor specifies the interceptor function for client request/response -+type UnaryClientInterceptor func(context.Context, *Request, *Response, *UnaryClientInfo, Invoker) error -+ -+func defaultServerInterceptor(ctx context.Context, unmarshal Unmarshaler, _ *UnaryServerInfo, method Method) (interface{}, error) { -+ return method(ctx, unmarshal) -+} -+ -+func defaultClientInterceptor(ctx context.Context, req *Request, resp *Response, _ *UnaryClientInfo, invoker Invoker) error { -+ return invoker(ctx, req, resp) -+} -+ -+type StreamServerInterceptor func(context.Context, StreamServer, *StreamServerInfo, StreamHandler) (interface{}, error) -+ -+func defaultStreamServerInterceptor(ctx context.Context, ss StreamServer, _ *StreamServerInfo, stream StreamHandler) (interface{}, error) { -+ return stream(ctx, ss) -+} -+ -+type StreamClientInterceptor func(context.Context) -diff --git a/vendor/github.com/containerd/ttrpc/metadata.go b/vendor/github.com/containerd/ttrpc/metadata.go -new file mode 100755 -index 0000000..ce8c0d1 ---- /dev/null -+++ b/vendor/github.com/containerd/ttrpc/metadata.go -@@ -0,0 +1,107 @@ -+/* -+ Copyright The containerd 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 ttrpc -+ -+import ( -+ "context" -+ "strings" -+) -+ -+// MD is the user type for ttrpc metadata -+type MD map[string][]string -+ -+// Get returns the metadata for a given key when they exist. -+// If there is no metadata, a nil slice and false are returned. -+func (m MD) Get(key string) ([]string, bool) { -+ key = strings.ToLower(key) -+ list, ok := m[key] -+ if !ok || len(list) == 0 { -+ return nil, false -+ } -+ -+ return list, true -+} -+ -+// Set sets the provided values for a given key. -+// The values will overwrite any existing values. -+// If no values provided, a key will be deleted. -+func (m MD) Set(key string, values ...string) { -+ key = strings.ToLower(key) -+ if len(values) == 0 { -+ delete(m, key) -+ return -+ } -+ m[key] = values -+} -+ -+// Append appends additional values to the given key. -+func (m MD) Append(key string, values ...string) { -+ key = strings.ToLower(key) -+ if len(values) == 0 { -+ return -+ } -+ current, ok := m[key] -+ if ok { -+ m.Set(key, append(current, values...)...) -+ } else { -+ m.Set(key, values...) -+ } -+} -+ -+func (m MD) setRequest(r *Request) { -+ for k, values := range m { -+ for _, v := range values { -+ r.Metadata = append(r.Metadata, &KeyValue{ -+ Key: k, -+ Value: v, -+ }) -+ } -+ } -+} -+ -+func (m MD) fromRequest(r *Request) { -+ for _, kv := range r.Metadata { -+ m[kv.Key] = append(m[kv.Key], kv.Value) -+ } -+} -+ -+type metadataKey struct{} -+ -+// GetMetadata retrieves metadata from context.Context (previously attached with WithMetadata) -+func GetMetadata(ctx context.Context) (MD, bool) { -+ metadata, ok := ctx.Value(metadataKey{}).(MD) -+ return metadata, ok -+} -+ -+// GetMetadataValue gets a specific metadata value by name from context.Context -+func GetMetadataValue(ctx context.Context, name string) (string, bool) { -+ metadata, ok := GetMetadata(ctx) -+ if !ok { -+ return "", false -+ } -+ -+ if list, ok := metadata.Get(name); ok { -+ return list[0], true -+ } -+ -+ return "", false -+} -+ -+// WithMetadata attaches metadata map to a context.Context -+func WithMetadata(ctx context.Context, md MD) context.Context { -+ return context.WithValue(ctx, metadataKey{}, md) -+} -diff --git a/vendor/github.com/containerd/ttrpc/request.pb.go b/vendor/github.com/containerd/ttrpc/request.pb.go -new file mode 100755 -index 0000000..3921ae5 ---- /dev/null -+++ b/vendor/github.com/containerd/ttrpc/request.pb.go -@@ -0,0 +1,396 @@ -+// Code generated by protoc-gen-go. DO NOT EDIT. -+// versions: -+// protoc-gen-go v1.28.1 -+// protoc v3.20.1 -+// source: github.com/containerd/ttrpc/request.proto -+ -+package ttrpc -+ -+import ( -+ status "google.golang.org/genproto/googleapis/rpc/status" -+ protoreflect "google.golang.org/protobuf/reflect/protoreflect" -+ protoimpl "google.golang.org/protobuf/runtime/protoimpl" -+ reflect "reflect" -+ sync "sync" -+) -+ -+const ( -+ // Verify that this generated code is sufficiently up-to-date. -+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) -+ // Verify that runtime/protoimpl is sufficiently up-to-date. -+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -+) -+ -+type Request struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ Service string `protobuf:"bytes,1,opt,name=service,proto3" json:"service,omitempty"` -+ Method string `protobuf:"bytes,2,opt,name=method,proto3" json:"method,omitempty"` -+ Payload []byte `protobuf:"bytes,3,opt,name=payload,proto3" json:"payload,omitempty"` -+ TimeoutNano int64 `protobuf:"varint,4,opt,name=timeout_nano,json=timeoutNano,proto3" json:"timeout_nano,omitempty"` -+ Metadata []*KeyValue `protobuf:"bytes,5,rep,name=metadata,proto3" json:"metadata,omitempty"` -+} -+ -+func (x *Request) Reset() { -+ *x = Request{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_github_com_containerd_ttrpc_request_proto_msgTypes[0] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *Request) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*Request) ProtoMessage() {} -+ -+func (x *Request) ProtoReflect() protoreflect.Message { -+ mi := &file_github_com_containerd_ttrpc_request_proto_msgTypes[0] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use Request.ProtoReflect.Descriptor instead. -+func (*Request) Descriptor() ([]byte, []int) { -+ return file_github_com_containerd_ttrpc_request_proto_rawDescGZIP(), []int{0} -+} -+ -+func (x *Request) GetService() string { -+ if x != nil { -+ return x.Service -+ } -+ return "" -+} -+ -+func (x *Request) GetMethod() string { -+ if x != nil { -+ return x.Method -+ } -+ return "" -+} -+ -+func (x *Request) GetPayload() []byte { -+ if x != nil { -+ return x.Payload -+ } -+ return nil -+} -+ -+func (x *Request) GetTimeoutNano() int64 { -+ if x != nil { -+ return x.TimeoutNano -+ } -+ return 0 -+} -+ -+func (x *Request) GetMetadata() []*KeyValue { -+ if x != nil { -+ return x.Metadata -+ } -+ return nil -+} -+ -+type Response struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ Status *status.Status `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` -+ Payload []byte `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` -+} -+ -+func (x *Response) Reset() { -+ *x = Response{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_github_com_containerd_ttrpc_request_proto_msgTypes[1] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *Response) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*Response) ProtoMessage() {} -+ -+func (x *Response) ProtoReflect() protoreflect.Message { -+ mi := &file_github_com_containerd_ttrpc_request_proto_msgTypes[1] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use Response.ProtoReflect.Descriptor instead. -+func (*Response) Descriptor() ([]byte, []int) { -+ return file_github_com_containerd_ttrpc_request_proto_rawDescGZIP(), []int{1} -+} -+ -+func (x *Response) GetStatus() *status.Status { -+ if x != nil { -+ return x.Status -+ } -+ return nil -+} -+ -+func (x *Response) GetPayload() []byte { -+ if x != nil { -+ return x.Payload -+ } -+ return nil -+} -+ -+type StringList struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ List []string `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"` -+} -+ -+func (x *StringList) Reset() { -+ *x = StringList{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_github_com_containerd_ttrpc_request_proto_msgTypes[2] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *StringList) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*StringList) ProtoMessage() {} -+ -+func (x *StringList) ProtoReflect() protoreflect.Message { -+ mi := &file_github_com_containerd_ttrpc_request_proto_msgTypes[2] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use StringList.ProtoReflect.Descriptor instead. -+func (*StringList) Descriptor() ([]byte, []int) { -+ return file_github_com_containerd_ttrpc_request_proto_rawDescGZIP(), []int{2} -+} -+ -+func (x *StringList) GetList() []string { -+ if x != nil { -+ return x.List -+ } -+ return nil -+} -+ -+type KeyValue struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` -+ Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` -+} -+ -+func (x *KeyValue) Reset() { -+ *x = KeyValue{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_github_com_containerd_ttrpc_request_proto_msgTypes[3] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *KeyValue) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*KeyValue) ProtoMessage() {} -+ -+func (x *KeyValue) ProtoReflect() protoreflect.Message { -+ mi := &file_github_com_containerd_ttrpc_request_proto_msgTypes[3] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use KeyValue.ProtoReflect.Descriptor instead. -+func (*KeyValue) Descriptor() ([]byte, []int) { -+ return file_github_com_containerd_ttrpc_request_proto_rawDescGZIP(), []int{3} -+} -+ -+func (x *KeyValue) GetKey() string { -+ if x != nil { -+ return x.Key -+ } -+ return "" -+} -+ -+func (x *KeyValue) GetValue() string { -+ if x != nil { -+ return x.Value -+ } -+ return "" -+} -+ -+var File_github_com_containerd_ttrpc_request_proto protoreflect.FileDescriptor -+ -+var file_github_com_containerd_ttrpc_request_proto_rawDesc = []byte{ -+ 0x0a, 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, -+ 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x2f, 0x74, 0x74, 0x72, 0x70, 0x63, 0x2f, 0x72, 0x65, -+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x74, 0x74, 0x72, -+ 0x70, 0x63, 0x1a, 0x12, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, -+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa5, 0x01, 0x0a, 0x07, 0x52, 0x65, 0x71, 0x75, 0x65, -+ 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, -+ 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, -+ 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, -+ 0x74, 0x68, 0x6f, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, -+ 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x21, -+ 0x0a, 0x0c, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x6e, 0x61, 0x6e, 0x6f, 0x18, 0x04, -+ 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x4e, 0x61, 0x6e, -+ 0x6f, 0x12, 0x2b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, -+ 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x4b, 0x65, 0x79, 0x56, -+ 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x45, -+ 0x0a, 0x08, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x06, 0x73, 0x74, -+ 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x53, 0x74, 0x61, -+ 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x70, -+ 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, -+ 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x20, 0x0a, 0x0a, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, -+ 0x69, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, -+ 0x09, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x32, 0x0a, 0x08, 0x4b, 0x65, 0x79, 0x56, 0x61, -+ 0x6c, 0x75, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, -+ 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, -+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x1d, 0x5a, 0x1b, 0x67, -+ 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, -+ 0x6e, 0x65, 0x72, 0x64, 0x2f, 0x74, 0x74, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, -+ 0x6f, 0x33, -+} -+ -+var ( -+ file_github_com_containerd_ttrpc_request_proto_rawDescOnce sync.Once -+ file_github_com_containerd_ttrpc_request_proto_rawDescData = file_github_com_containerd_ttrpc_request_proto_rawDesc -+) -+ -+func file_github_com_containerd_ttrpc_request_proto_rawDescGZIP() []byte { -+ file_github_com_containerd_ttrpc_request_proto_rawDescOnce.Do(func() { -+ file_github_com_containerd_ttrpc_request_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_containerd_ttrpc_request_proto_rawDescData) -+ }) -+ return file_github_com_containerd_ttrpc_request_proto_rawDescData -+} -+ -+var file_github_com_containerd_ttrpc_request_proto_msgTypes = make([]protoimpl.MessageInfo, 4) -+var file_github_com_containerd_ttrpc_request_proto_goTypes = []interface{}{ -+ (*Request)(nil), // 0: ttrpc.Request -+ (*Response)(nil), // 1: ttrpc.Response -+ (*StringList)(nil), // 2: ttrpc.StringList -+ (*KeyValue)(nil), // 3: ttrpc.KeyValue -+ (*status.Status)(nil), // 4: Status -+} -+var file_github_com_containerd_ttrpc_request_proto_depIdxs = []int32{ -+ 3, // 0: ttrpc.Request.metadata:type_name -> ttrpc.KeyValue -+ 4, // 1: ttrpc.Response.status:type_name -> Status -+ 2, // [2:2] is the sub-list for method output_type -+ 2, // [2:2] is the sub-list for method input_type -+ 2, // [2:2] is the sub-list for extension type_name -+ 2, // [2:2] is the sub-list for extension extendee -+ 0, // [0:2] is the sub-list for field type_name -+} -+ -+func init() { file_github_com_containerd_ttrpc_request_proto_init() } -+func file_github_com_containerd_ttrpc_request_proto_init() { -+ if File_github_com_containerd_ttrpc_request_proto != nil { -+ return -+ } -+ if !protoimpl.UnsafeEnabled { -+ file_github_com_containerd_ttrpc_request_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*Request); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_github_com_containerd_ttrpc_request_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*Response); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_github_com_containerd_ttrpc_request_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*StringList); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_github_com_containerd_ttrpc_request_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*KeyValue); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ } -+ type x struct{} -+ out := protoimpl.TypeBuilder{ -+ File: protoimpl.DescBuilder{ -+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), -+ RawDescriptor: file_github_com_containerd_ttrpc_request_proto_rawDesc, -+ NumEnums: 0, -+ NumMessages: 4, -+ NumExtensions: 0, -+ NumServices: 0, -+ }, -+ GoTypes: file_github_com_containerd_ttrpc_request_proto_goTypes, -+ DependencyIndexes: file_github_com_containerd_ttrpc_request_proto_depIdxs, -+ MessageInfos: file_github_com_containerd_ttrpc_request_proto_msgTypes, -+ }.Build() -+ File_github_com_containerd_ttrpc_request_proto = out.File -+ file_github_com_containerd_ttrpc_request_proto_rawDesc = nil -+ file_github_com_containerd_ttrpc_request_proto_goTypes = nil -+ file_github_com_containerd_ttrpc_request_proto_depIdxs = nil -+} -diff --git a/vendor/github.com/containerd/ttrpc/request.proto b/vendor/github.com/containerd/ttrpc/request.proto -new file mode 100755 -index 0000000..37da334 ---- /dev/null -+++ b/vendor/github.com/containerd/ttrpc/request.proto -@@ -0,0 +1,29 @@ -+syntax = "proto3"; -+ -+package ttrpc; -+ -+import "proto/status.proto"; -+ -+option go_package = "github.com/containerd/ttrpc"; -+ -+message Request { -+ string service = 1; -+ string method = 2; -+ bytes payload = 3; -+ int64 timeout_nano = 4; -+ repeated KeyValue metadata = 5; -+} -+ -+message Response { -+ Status status = 1; -+ bytes payload = 2; -+} -+ -+message StringList { -+ repeated string list = 1; -+} -+ -+message KeyValue { -+ string key = 1; -+ string value = 2; -+} -diff --git a/vendor/github.com/containerd/ttrpc/server.go b/vendor/github.com/containerd/ttrpc/server.go -new file mode 100755 -index 0000000..7af59f8 ---- /dev/null -+++ b/vendor/github.com/containerd/ttrpc/server.go -@@ -0,0 +1,579 @@ -+/* -+ Copyright The containerd 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 ttrpc -+ -+import ( -+ "context" -+ "errors" -+ "io" -+ "math/rand" -+ "net" -+ "sync" -+ "sync/atomic" -+ "syscall" -+ "time" -+ -+ "github.com/sirupsen/logrus" -+ "google.golang.org/grpc/codes" -+ "google.golang.org/grpc/status" -+) -+ -+type Server struct { -+ config *serverConfig -+ services *serviceSet -+ codec codec -+ -+ mu sync.Mutex -+ listeners map[net.Listener]struct{} -+ connections map[*serverConn]struct{} // all connections to current state -+ done chan struct{} // marks point at which we stop serving requests -+} -+ -+func NewServer(opts ...ServerOpt) (*Server, error) { -+ config := &serverConfig{} -+ for _, opt := range opts { -+ if err := opt(config); err != nil { -+ return nil, err -+ } -+ } -+ if config.interceptor == nil { -+ config.interceptor = defaultServerInterceptor -+ } -+ -+ return &Server{ -+ config: config, -+ services: newServiceSet(config.interceptor), -+ done: make(chan struct{}), -+ listeners: make(map[net.Listener]struct{}), -+ connections: make(map[*serverConn]struct{}), -+ }, nil -+} -+ -+// Register registers a map of methods to method handlers -+// TODO: Remove in 2.0, does not support streams -+func (s *Server) Register(name string, methods map[string]Method) { -+ s.services.register(name, &ServiceDesc{Methods: methods}) -+} -+ -+func (s *Server) RegisterService(name string, desc *ServiceDesc) { -+ s.services.register(name, desc) -+} -+ -+func (s *Server) Serve(ctx context.Context, l net.Listener) error { -+ s.addListener(l) -+ defer s.closeListener(l) -+ -+ var ( -+ backoff time.Duration -+ handshaker = s.config.handshaker -+ ) -+ -+ if handshaker == nil { -+ handshaker = handshakerFunc(noopHandshake) -+ } -+ -+ for { -+ conn, err := l.Accept() -+ if err != nil { -+ select { -+ case <-s.done: -+ return ErrServerClosed -+ default: -+ } -+ -+ if terr, ok := err.(interface { -+ Temporary() bool -+ }); ok && terr.Temporary() { -+ if backoff == 0 { -+ backoff = time.Millisecond -+ } else { -+ backoff *= 2 -+ } -+ -+ if max := time.Second; backoff > max { -+ backoff = max -+ } -+ -+ sleep := time.Duration(rand.Int63n(int64(backoff))) -+ logrus.WithError(err).Errorf("ttrpc: failed accept; backoff %v", sleep) -+ time.Sleep(sleep) -+ continue -+ } -+ -+ return err -+ } -+ -+ backoff = 0 -+ -+ approved, handshake, err := handshaker.Handshake(ctx, conn) -+ if err != nil { -+ logrus.WithError(err).Error("ttrpc: refusing connection after handshake") -+ conn.Close() -+ continue -+ } -+ -+ sc, err := s.newConn(approved, handshake) -+ if err != nil { -+ logrus.WithError(err).Error("ttrpc: create connection failed") -+ conn.Close() -+ continue -+ } -+ -+ go sc.run(ctx) -+ } -+} -+ -+func (s *Server) Shutdown(ctx context.Context) error { -+ s.mu.Lock() -+ select { -+ case <-s.done: -+ default: -+ // protected by mutex -+ close(s.done) -+ } -+ lnerr := s.closeListeners() -+ s.mu.Unlock() -+ -+ ticker := time.NewTicker(200 * time.Millisecond) -+ defer ticker.Stop() -+ for { -+ s.closeIdleConns() -+ -+ if s.countConnection() == 0 { -+ break -+ } -+ -+ select { -+ case <-ctx.Done(): -+ return ctx.Err() -+ case <-ticker.C: -+ } -+ } -+ -+ return lnerr -+} -+ -+// Close the server without waiting for active connections. -+func (s *Server) Close() error { -+ s.mu.Lock() -+ defer s.mu.Unlock() -+ -+ select { -+ case <-s.done: -+ default: -+ // protected by mutex -+ close(s.done) -+ } -+ -+ err := s.closeListeners() -+ for c := range s.connections { -+ c.close() -+ delete(s.connections, c) -+ } -+ -+ return err -+} -+ -+func (s *Server) addListener(l net.Listener) { -+ s.mu.Lock() -+ defer s.mu.Unlock() -+ s.listeners[l] = struct{}{} -+} -+ -+func (s *Server) closeListener(l net.Listener) error { -+ s.mu.Lock() -+ defer s.mu.Unlock() -+ -+ return s.closeListenerLocked(l) -+} -+ -+func (s *Server) closeListenerLocked(l net.Listener) error { -+ defer delete(s.listeners, l) -+ return l.Close() -+} -+ -+func (s *Server) closeListeners() error { -+ var err error -+ for l := range s.listeners { -+ if cerr := s.closeListenerLocked(l); cerr != nil && err == nil { -+ err = cerr -+ } -+ } -+ return err -+} -+ -+func (s *Server) addConnection(c *serverConn) error { -+ s.mu.Lock() -+ defer s.mu.Unlock() -+ -+ select { -+ case <-s.done: -+ return ErrServerClosed -+ default: -+ } -+ -+ s.connections[c] = struct{}{} -+ return nil -+} -+ -+func (s *Server) delConnection(c *serverConn) { -+ s.mu.Lock() -+ defer s.mu.Unlock() -+ -+ delete(s.connections, c) -+} -+ -+func (s *Server) countConnection() int { -+ s.mu.Lock() -+ defer s.mu.Unlock() -+ -+ return len(s.connections) -+} -+ -+func (s *Server) closeIdleConns() { -+ s.mu.Lock() -+ defer s.mu.Unlock() -+ -+ for c := range s.connections { -+ if st, ok := c.getState(); !ok || st == connStateActive { -+ continue -+ } -+ c.close() -+ delete(s.connections, c) -+ } -+} -+ -+type connState int -+ -+const ( -+ connStateActive = iota + 1 // outstanding requests -+ connStateIdle // no requests -+ connStateClosed // closed connection -+) -+ -+func (cs connState) String() string { -+ switch cs { -+ case connStateActive: -+ return "active" -+ case connStateIdle: -+ return "idle" -+ case connStateClosed: -+ return "closed" -+ default: -+ return "unknown" -+ } -+} -+ -+func (s *Server) newConn(conn net.Conn, handshake interface{}) (*serverConn, error) { -+ c := &serverConn{ -+ server: s, -+ conn: conn, -+ handshake: handshake, -+ shutdown: make(chan struct{}), -+ } -+ c.setState(connStateIdle) -+ if err := s.addConnection(c); err != nil { -+ c.close() -+ return nil, err -+ } -+ return c, nil -+} -+ -+type serverConn struct { -+ server *Server -+ conn net.Conn -+ handshake interface{} // data from handshake, not used for now -+ state atomic.Value -+ -+ shutdownOnce sync.Once -+ shutdown chan struct{} // forced shutdown, used by close -+} -+ -+func (c *serverConn) getState() (connState, bool) { -+ cs, ok := c.state.Load().(connState) -+ return cs, ok -+} -+ -+func (c *serverConn) setState(newstate connState) { -+ c.state.Store(newstate) -+} -+ -+func (c *serverConn) close() error { -+ c.shutdownOnce.Do(func() { -+ close(c.shutdown) -+ }) -+ -+ return nil -+} -+ -+func (c *serverConn) run(sctx context.Context) { -+ type ( -+ response struct { -+ id uint32 -+ status *status.Status -+ data []byte -+ closeStream bool -+ streaming bool -+ } -+ ) -+ -+ var ( -+ ch = newChannel(c.conn) -+ ctx, cancel = context.WithCancel(sctx) -+ state connState = connStateIdle -+ responses = make(chan response) -+ recvErr = make(chan error, 1) -+ done = make(chan struct{}) -+ streams = sync.Map{} -+ active int32 -+ lastStreamID uint32 -+ ) -+ -+ defer c.conn.Close() -+ defer cancel() -+ defer close(done) -+ defer c.server.delConnection(c) -+ -+ sendStatus := func(id uint32, st *status.Status) bool { -+ select { -+ case responses <- response{ -+ // even though we've had an invalid stream id, we send it -+ // back on the same stream id so the client knows which -+ // stream id was bad. -+ id: id, -+ status: st, -+ closeStream: true, -+ }: -+ return true -+ case <-c.shutdown: -+ return false -+ case <-done: -+ return false -+ } -+ } -+ -+ go func(recvErr chan error) { -+ defer close(recvErr) -+ for { -+ select { -+ case <-c.shutdown: -+ return -+ case <-done: -+ return -+ default: // proceed -+ } -+ -+ mh, p, err := ch.recv() -+ if err != nil { -+ status, ok := status.FromError(err) -+ if !ok { -+ recvErr <- err -+ return -+ } -+ -+ // in this case, we send an error for that particular message -+ // when the status is defined. -+ if !sendStatus(mh.StreamID, status) { -+ return -+ } -+ -+ continue -+ } -+ -+ if mh.StreamID%2 != 1 { -+ // enforce odd client initiated identifiers. -+ if !sendStatus(mh.StreamID, status.Newf(codes.InvalidArgument, "StreamID must be odd for client initiated streams")) { -+ return -+ } -+ continue -+ } -+ -+ if mh.Type == messageTypeData { -+ i, ok := streams.Load(mh.StreamID) -+ if !ok { -+ if !sendStatus(mh.StreamID, status.Newf(codes.InvalidArgument, "StreamID is no longer active")) { -+ return -+ } -+ } -+ sh := i.(*streamHandler) -+ if mh.Flags&flagNoData != flagNoData { -+ unmarshal := func(obj interface{}) error { -+ err := protoUnmarshal(p, obj) -+ ch.putmbuf(p) -+ return err -+ } -+ -+ if err := sh.data(unmarshal); err != nil { -+ if !sendStatus(mh.StreamID, status.Newf(codes.InvalidArgument, "data handling error: %v", err)) { -+ return -+ } -+ } -+ } -+ -+ if mh.Flags&flagRemoteClosed == flagRemoteClosed { -+ sh.closeSend() -+ if len(p) > 0 { -+ if !sendStatus(mh.StreamID, status.Newf(codes.InvalidArgument, "data close message cannot include data")) { -+ return -+ } -+ } -+ } -+ } else if mh.Type == messageTypeRequest { -+ if mh.StreamID <= lastStreamID { -+ // enforce odd client initiated identifiers. -+ if !sendStatus(mh.StreamID, status.Newf(codes.InvalidArgument, "StreamID cannot be re-used and must increment")) { -+ return -+ } -+ continue -+ -+ } -+ lastStreamID = mh.StreamID -+ -+ // TODO: Make request type configurable -+ // Unmarshaller which takes in a byte array and returns an interface? -+ var req Request -+ if err := c.server.codec.Unmarshal(p, &req); err != nil { -+ ch.putmbuf(p) -+ if !sendStatus(mh.StreamID, status.Newf(codes.InvalidArgument, "unmarshal request error: %v", err)) { -+ return -+ } -+ continue -+ } -+ ch.putmbuf(p) -+ -+ id := mh.StreamID -+ respond := func(status *status.Status, data []byte, streaming, closeStream bool) error { -+ select { -+ case responses <- response{ -+ id: id, -+ status: status, -+ data: data, -+ closeStream: closeStream, -+ streaming: streaming, -+ }: -+ case <-done: -+ return ErrClosed -+ } -+ return nil -+ } -+ sh, err := c.server.services.handle(ctx, &req, respond) -+ if err != nil { -+ status, _ := status.FromError(err) -+ if !sendStatus(mh.StreamID, status) { -+ return -+ } -+ continue -+ } -+ -+ streams.Store(id, sh) -+ atomic.AddInt32(&active, 1) -+ } -+ // TODO: else we must ignore this for future compat. log this? -+ } -+ }(recvErr) -+ -+ for { -+ var ( -+ newstate connState -+ shutdown chan struct{} -+ ) -+ -+ activeN := atomic.LoadInt32(&active) -+ if activeN > 0 { -+ newstate = connStateActive -+ shutdown = nil -+ } else { -+ newstate = connStateIdle -+ shutdown = c.shutdown // only enable this branch in idle mode -+ } -+ if newstate != state { -+ c.setState(newstate) -+ state = newstate -+ } -+ -+ select { -+ case response := <-responses: -+ if !response.streaming || response.status.Code() != codes.OK { -+ p, err := c.server.codec.Marshal(&Response{ -+ Status: response.status.Proto(), -+ Payload: response.data, -+ }) -+ if err != nil { -+ logrus.WithError(err).Error("failed marshaling response") -+ return -+ } -+ -+ if err := ch.send(response.id, messageTypeResponse, 0, p); err != nil { -+ logrus.WithError(err).Error("failed sending message on channel") -+ return -+ } -+ } else { -+ var flags uint8 -+ if response.closeStream { -+ flags = flagRemoteClosed -+ } -+ if response.data == nil { -+ flags = flags | flagNoData -+ } -+ if err := ch.send(response.id, messageTypeData, flags, response.data); err != nil { -+ logrus.WithError(err).Error("failed sending message on channel") -+ return -+ } -+ } -+ -+ if response.closeStream { -+ // The ttrpc protocol currently does not support the case where -+ // the server is localClosed but not remoteClosed. Once the server -+ // is closing, the whole stream may be considered finished -+ streams.Delete(response.id) -+ atomic.AddInt32(&active, -1) -+ } -+ case err := <-recvErr: -+ // TODO(stevvooe): Not wildly clear what we should do in this -+ // branch. Basically, it means that we are no longer receiving -+ // requests due to a terminal error. -+ recvErr = nil // connection is now "closing" -+ if errors.Is(err, io.EOF) || errors.Is(err, io.ErrUnexpectedEOF) || errors.Is(err, syscall.ECONNRESET) { -+ // The client went away and we should stop processing -+ // requests, so that the client connection is closed -+ return -+ } -+ logrus.WithError(err).Error("error receiving message") -+ // else, initiate shutdown -+ case <-shutdown: -+ return -+ } -+ } -+} -+ -+var noopFunc = func() {} -+ -+func getRequestContext(ctx context.Context, req *Request) (retCtx context.Context, cancel func()) { -+ if len(req.Metadata) > 0 { -+ md := MD{} -+ md.fromRequest(req) -+ ctx = WithMetadata(ctx, md) -+ } -+ -+ cancel = noopFunc -+ if req.TimeoutNano == 0 { -+ return ctx, cancel -+ } -+ -+ ctx, cancel = context.WithTimeout(ctx, time.Duration(req.TimeoutNano)) -+ return ctx, cancel -+} -diff --git a/vendor/github.com/containerd/ttrpc/services.go b/vendor/github.com/containerd/ttrpc/services.go -new file mode 100755 -index 0000000..6d092bf ---- /dev/null -+++ b/vendor/github.com/containerd/ttrpc/services.go -@@ -0,0 +1,279 @@ -+/* -+ Copyright The containerd 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 ttrpc -+ -+import ( -+ "context" -+ "errors" -+ "fmt" -+ "io" -+ "os" -+ "path" -+ "unsafe" -+ -+ "google.golang.org/grpc/codes" -+ "google.golang.org/grpc/status" -+ "google.golang.org/protobuf/proto" -+) -+ -+type Method func(ctx context.Context, unmarshal func(interface{}) error) (interface{}, error) -+ -+type StreamHandler func(context.Context, StreamServer) (interface{}, error) -+ -+type Stream struct { -+ Handler StreamHandler -+ StreamingClient bool -+ StreamingServer bool -+} -+ -+type ServiceDesc struct { -+ Methods map[string]Method -+ Streams map[string]Stream -+} -+ -+type serviceSet struct { -+ services map[string]*ServiceDesc -+ unaryInterceptor UnaryServerInterceptor -+ streamInterceptor StreamServerInterceptor -+} -+ -+func newServiceSet(interceptor UnaryServerInterceptor) *serviceSet { -+ return &serviceSet{ -+ services: make(map[string]*ServiceDesc), -+ unaryInterceptor: interceptor, -+ streamInterceptor: defaultStreamServerInterceptor, -+ } -+} -+ -+func (s *serviceSet) register(name string, desc *ServiceDesc) { -+ if _, ok := s.services[name]; ok { -+ panic(fmt.Errorf("duplicate service %v registered", name)) -+ } -+ -+ s.services[name] = desc -+} -+ -+func (s *serviceSet) unaryCall(ctx context.Context, method Method, info *UnaryServerInfo, data []byte) (p []byte, st *status.Status) { -+ unmarshal := func(obj interface{}) error { -+ return protoUnmarshal(data, obj) -+ } -+ -+ resp, err := s.unaryInterceptor(ctx, unmarshal, info, method) -+ if err == nil { -+ if isNil(resp) { -+ err = errors.New("ttrpc: marshal called with nil") -+ } else { -+ p, err = protoMarshal(resp) -+ } -+ } -+ -+ st, ok := status.FromError(err) -+ if !ok { -+ st = status.New(convertCode(err), err.Error()) -+ } -+ -+ return p, st -+} -+ -+func (s *serviceSet) streamCall(ctx context.Context, stream StreamHandler, info *StreamServerInfo, ss StreamServer) (p []byte, st *status.Status) { -+ resp, err := s.streamInterceptor(ctx, ss, info, stream) -+ if err == nil { -+ p, err = protoMarshal(resp) -+ } -+ st, ok := status.FromError(err) -+ if !ok { -+ st = status.New(convertCode(err), err.Error()) -+ } -+ return -+} -+ -+func (s *serviceSet) handle(ctx context.Context, req *Request, respond func(*status.Status, []byte, bool, bool) error) (*streamHandler, error) { -+ srv, ok := s.services[req.Service] -+ if !ok { -+ return nil, status.Errorf(codes.Unimplemented, "service %v", req.Service) -+ } -+ -+ if method, ok := srv.Methods[req.Method]; ok { -+ go func() { -+ ctx, cancel := getRequestContext(ctx, req) -+ defer cancel() -+ -+ info := &UnaryServerInfo{ -+ FullMethod: fullPath(req.Service, req.Method), -+ } -+ p, st := s.unaryCall(ctx, method, info, req.Payload) -+ -+ respond(st, p, false, true) -+ }() -+ return nil, nil -+ } -+ if stream, ok := srv.Streams[req.Method]; ok { -+ ctx, cancel := getRequestContext(ctx, req) -+ info := &StreamServerInfo{ -+ FullMethod: fullPath(req.Service, req.Method), -+ StreamingClient: stream.StreamingClient, -+ StreamingServer: stream.StreamingServer, -+ } -+ sh := &streamHandler{ -+ ctx: ctx, -+ respond: respond, -+ recv: make(chan Unmarshaler, 5), -+ info: info, -+ } -+ go func() { -+ defer cancel() -+ p, st := s.streamCall(ctx, stream.Handler, info, sh) -+ respond(st, p, stream.StreamingServer, true) -+ }() -+ -+ // Empty proto messages serialized to 0 payloads, -+ // so signatures like: rpc Stream(google.protobuf.Empty) returns (stream Data); -+ // don't get invoked here, which causes hang on client side. -+ // See https://github.com/containerd/ttrpc/issues/126 -+ if req.Payload != nil || !info.StreamingClient { -+ unmarshal := func(obj interface{}) error { -+ return protoUnmarshal(req.Payload, obj) -+ } -+ if err := sh.data(unmarshal); err != nil { -+ return nil, err -+ } -+ } -+ -+ return sh, nil -+ } -+ return nil, status.Errorf(codes.Unimplemented, "method %v", req.Method) -+} -+ -+type streamHandler struct { -+ ctx context.Context -+ respond func(*status.Status, []byte, bool, bool) error -+ recv chan Unmarshaler -+ info *StreamServerInfo -+ -+ remoteClosed bool -+ localClosed bool -+} -+ -+func (s *streamHandler) closeSend() { -+ if !s.remoteClosed { -+ s.remoteClosed = true -+ close(s.recv) -+ } -+} -+ -+func (s *streamHandler) data(unmarshal Unmarshaler) error { -+ if s.remoteClosed { -+ return ErrStreamClosed -+ } -+ select { -+ case s.recv <- unmarshal: -+ return nil -+ case <-s.ctx.Done(): -+ return s.ctx.Err() -+ } -+} -+ -+func (s *streamHandler) SendMsg(m interface{}) error { -+ if s.localClosed { -+ return ErrStreamClosed -+ } -+ p, err := protoMarshal(m) -+ if err != nil { -+ return err -+ } -+ return s.respond(nil, p, true, false) -+} -+ -+func (s *streamHandler) RecvMsg(m interface{}) error { -+ select { -+ case unmarshal, ok := <-s.recv: -+ if !ok { -+ return io.EOF -+ } -+ return unmarshal(m) -+ case <-s.ctx.Done(): -+ return s.ctx.Err() -+ -+ } -+} -+ -+func protoUnmarshal(p []byte, obj interface{}) error { -+ switch v := obj.(type) { -+ case proto.Message: -+ if err := proto.Unmarshal(p, v); err != nil { -+ return status.Errorf(codes.Internal, "ttrpc: error unmarshalling payload: %v", err.Error()) -+ } -+ default: -+ return status.Errorf(codes.Internal, "ttrpc: error unsupported request type: %T", v) -+ } -+ return nil -+} -+ -+func protoMarshal(obj interface{}) ([]byte, error) { -+ if obj == nil { -+ return nil, nil -+ } -+ -+ switch v := obj.(type) { -+ case proto.Message: -+ r, err := proto.Marshal(v) -+ if err != nil { -+ return nil, status.Errorf(codes.Internal, "ttrpc: error marshaling payload: %v", err.Error()) -+ } -+ -+ return r, nil -+ default: -+ return nil, status.Errorf(codes.Internal, "ttrpc: error unsupported response type: %T", v) -+ } -+} -+ -+// convertCode maps stdlib go errors into grpc space. -+// -+// This is ripped from the grpc-go code base. -+func convertCode(err error) codes.Code { -+ switch err { -+ case nil: -+ return codes.OK -+ case io.EOF: -+ return codes.OutOfRange -+ case io.ErrClosedPipe, io.ErrNoProgress, io.ErrShortBuffer, io.ErrShortWrite, io.ErrUnexpectedEOF: -+ return codes.FailedPrecondition -+ case os.ErrInvalid: -+ return codes.InvalidArgument -+ case context.Canceled: -+ return codes.Canceled -+ case context.DeadlineExceeded: -+ return codes.DeadlineExceeded -+ } -+ switch { -+ case os.IsExist(err): -+ return codes.AlreadyExists -+ case os.IsNotExist(err): -+ return codes.NotFound -+ case os.IsPermission(err): -+ return codes.PermissionDenied -+ } -+ return codes.Unknown -+} -+ -+func fullPath(service, method string) string { -+ return "/" + path.Join(service, method) -+} -+ -+func isNil(resp interface{}) bool { -+ return (*[2]uintptr)(unsafe.Pointer(&resp))[1] == 0 -+} -diff --git a/vendor/github.com/containerd/ttrpc/stream.go b/vendor/github.com/containerd/ttrpc/stream.go -new file mode 100755 -index 0000000..739a4c9 ---- /dev/null -+++ b/vendor/github.com/containerd/ttrpc/stream.go -@@ -0,0 +1,84 @@ -+/* -+ Copyright The containerd 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 ttrpc -+ -+import ( -+ "context" -+ "sync" -+) -+ -+type streamID uint32 -+ -+type streamMessage struct { -+ header messageHeader -+ payload []byte -+} -+ -+type stream struct { -+ id streamID -+ sender sender -+ recv chan *streamMessage -+ -+ closeOnce sync.Once -+ recvErr error -+ recvClose chan struct{} -+} -+ -+func newStream(id streamID, send sender) *stream { -+ return &stream{ -+ id: id, -+ sender: send, -+ recv: make(chan *streamMessage, 1), -+ recvClose: make(chan struct{}), -+ } -+} -+ -+func (s *stream) closeWithError(err error) error { -+ s.closeOnce.Do(func() { -+ if err != nil { -+ s.recvErr = err -+ } else { -+ s.recvErr = ErrClosed -+ } -+ close(s.recvClose) -+ }) -+ return nil -+} -+ -+func (s *stream) send(mt messageType, flags uint8, b []byte) error { -+ return s.sender.send(uint32(s.id), mt, flags, b) -+} -+ -+func (s *stream) receive(ctx context.Context, msg *streamMessage) error { -+ select { -+ case <-s.recvClose: -+ return s.recvErr -+ default: -+ } -+ select { -+ case <-s.recvClose: -+ return s.recvErr -+ case s.recv <- msg: -+ return nil -+ case <-ctx.Done(): -+ return ctx.Err() -+ } -+} -+ -+type sender interface { -+ send(uint32, messageType, uint8, []byte) error -+} -diff --git a/vendor/github.com/containerd/ttrpc/stream_server.go b/vendor/github.com/containerd/ttrpc/stream_server.go -new file mode 100755 -index 0000000..b6d1ba7 ---- /dev/null -+++ b/vendor/github.com/containerd/ttrpc/stream_server.go -@@ -0,0 +1,22 @@ -+/* -+ Copyright The containerd 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 ttrpc -+ -+type StreamServer interface { -+ SendMsg(m interface{}) error -+ RecvMsg(m interface{}) error -+} -diff --git a/vendor/github.com/containerd/ttrpc/test.proto b/vendor/github.com/containerd/ttrpc/test.proto -new file mode 100755 -index 0000000..0e114d5 ---- /dev/null -+++ b/vendor/github.com/containerd/ttrpc/test.proto -@@ -0,0 +1,16 @@ -+syntax = "proto3"; -+ -+package ttrpc; -+ -+option go_package = "github.com/containerd/ttrpc/internal"; -+ -+message TestPayload { -+ string foo = 1; -+ int64 deadline = 2; -+ string metadata = 3; -+} -+ -+message EchoPayload { -+ int64 seq = 1; -+ string msg = 2; -+} -diff --git a/vendor/github.com/containerd/ttrpc/unixcreds_linux.go b/vendor/github.com/containerd/ttrpc/unixcreds_linux.go -new file mode 100755 -index 0000000..c82c9f9 ---- /dev/null -+++ b/vendor/github.com/containerd/ttrpc/unixcreds_linux.go -@@ -0,0 +1,105 @@ -+/* -+ Copyright The containerd 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 ttrpc -+ -+import ( -+ "context" -+ "errors" -+ "fmt" -+ "net" -+ "os" -+ "syscall" -+ -+ "golang.org/x/sys/unix" -+) -+ -+type UnixCredentialsFunc func(*unix.Ucred) error -+ -+func (fn UnixCredentialsFunc) Handshake(_ context.Context, conn net.Conn) (net.Conn, interface{}, error) { -+ uc, err := requireUnixSocket(conn) -+ if err != nil { -+ return nil, nil, fmt.Errorf("ttrpc.UnixCredentialsFunc: require unix socket: %w", err) -+ } -+ -+ rs, err := uc.SyscallConn() -+ if err != nil { -+ return nil, nil, fmt.Errorf("ttrpc.UnixCredentialsFunc: (net.UnixConn).SyscallConn failed: %w", err) -+ } -+ var ( -+ ucred *unix.Ucred -+ ucredErr error -+ ) -+ if err := rs.Control(func(fd uintptr) { -+ ucred, ucredErr = unix.GetsockoptUcred(int(fd), unix.SOL_SOCKET, unix.SO_PEERCRED) -+ }); err != nil { -+ return nil, nil, fmt.Errorf("ttrpc.UnixCredentialsFunc: (*syscall.RawConn).Control failed: %w", err) -+ } -+ -+ if ucredErr != nil { -+ return nil, nil, fmt.Errorf("ttrpc.UnixCredentialsFunc: failed to retrieve socket peer credentials: %w", ucredErr) -+ } -+ -+ if err := fn(ucred); err != nil { -+ return nil, nil, fmt.Errorf("ttrpc.UnixCredentialsFunc: credential check failed: %w", err) -+ } -+ -+ return uc, ucred, nil -+} -+ -+// UnixSocketRequireUidGid requires specific *effective* UID/GID, rather than the real UID/GID. -+// -+// For example, if a daemon binary is owned by the root (UID 0) with SUID bit but running as an -+// unprivileged user (UID 1001), the effective UID becomes 0, and the real UID becomes 1001. -+// So calling this function with uid=0 allows a connection from effective UID 0 but rejects -+// a connection from effective UID 1001. -+// -+// See socket(7), SO_PEERCRED: "The returned credentials are those that were in effect at the time of the call to connect(2) or socketpair(2)." -+func UnixSocketRequireUidGid(uid, gid int) UnixCredentialsFunc { -+ return func(ucred *unix.Ucred) error { -+ return requireUidGid(ucred, uid, gid) -+ } -+} -+ -+func UnixSocketRequireRoot() UnixCredentialsFunc { -+ return UnixSocketRequireUidGid(0, 0) -+} -+ -+// UnixSocketRequireSameUser resolves the current effective unix user and returns a -+// UnixCredentialsFunc that will validate incoming unix connections against the -+// current credentials. -+// -+// This is useful when using abstract sockets that are accessible by all users. -+func UnixSocketRequireSameUser() UnixCredentialsFunc { -+ euid, egid := os.Geteuid(), os.Getegid() -+ return UnixSocketRequireUidGid(euid, egid) -+} -+ -+func requireUidGid(ucred *unix.Ucred, uid, gid int) error { -+ if (uid != -1 && uint32(uid) != ucred.Uid) || (gid != -1 && uint32(gid) != ucred.Gid) { -+ return fmt.Errorf("ttrpc: invalid credentials: %v", syscall.EPERM) -+ } -+ return nil -+} -+ -+func requireUnixSocket(conn net.Conn) (*net.UnixConn, error) { -+ uc, ok := conn.(*net.UnixConn) -+ if !ok { -+ return nil, errors.New("a unix socket connection is required") -+ } -+ -+ return uc, nil -+} -diff --git a/vendor/github.com/coreos/go-systemd/v22/LICENSE b/vendor/github.com/coreos/go-systemd/v22/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/coreos/go-systemd/v22/NOTICE b/vendor/github.com/coreos/go-systemd/v22/NOTICE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/coreos/go-systemd/v22/dbus/dbus.go b/vendor/github.com/coreos/go-systemd/v22/dbus/dbus.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/coreos/go-systemd/v22/dbus/methods.go b/vendor/github.com/coreos/go-systemd/v22/dbus/methods.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/coreos/go-systemd/v22/dbus/properties.go b/vendor/github.com/coreos/go-systemd/v22/dbus/properties.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/coreos/go-systemd/v22/dbus/set.go b/vendor/github.com/coreos/go-systemd/v22/dbus/set.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/coreos/go-systemd/v22/dbus/subscription.go b/vendor/github.com/coreos/go-systemd/v22/dbus/subscription.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/coreos/go-systemd/v22/dbus/subscription_set.go b/vendor/github.com/coreos/go-systemd/v22/dbus/subscription_set.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cyphar/filepath-securejoin/.travis.yml b/vendor/github.com/cyphar/filepath-securejoin/.travis.yml -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cyphar/filepath-securejoin/LICENSE b/vendor/github.com/cyphar/filepath-securejoin/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cyphar/filepath-securejoin/README.md b/vendor/github.com/cyphar/filepath-securejoin/README.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cyphar/filepath-securejoin/VERSION b/vendor/github.com/cyphar/filepath-securejoin/VERSION -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cyphar/filepath-securejoin/join.go b/vendor/github.com/cyphar/filepath-securejoin/join.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cyphar/filepath-securejoin/vendor.conf b/vendor/github.com/cyphar/filepath-securejoin/vendor.conf -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/cyphar/filepath-securejoin/vfs.go b/vendor/github.com/cyphar/filepath-securejoin/vfs.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/davecgh/go-spew/LICENSE b/vendor/github.com/davecgh/go-spew/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/davecgh/go-spew/spew/bypass.go b/vendor/github.com/davecgh/go-spew/spew/bypass.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/davecgh/go-spew/spew/bypasssafe.go b/vendor/github.com/davecgh/go-spew/spew/bypasssafe.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/davecgh/go-spew/spew/common.go b/vendor/github.com/davecgh/go-spew/spew/common.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/davecgh/go-spew/spew/config.go b/vendor/github.com/davecgh/go-spew/spew/config.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/davecgh/go-spew/spew/doc.go b/vendor/github.com/davecgh/go-spew/spew/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/davecgh/go-spew/spew/dump.go b/vendor/github.com/davecgh/go-spew/spew/dump.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/davecgh/go-spew/spew/format.go b/vendor/github.com/davecgh/go-spew/spew/format.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/davecgh/go-spew/spew/spew.go b/vendor/github.com/davecgh/go-spew/spew/spew.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/docker/go-units/CONTRIBUTING.md b/vendor/github.com/docker/go-units/CONTRIBUTING.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/docker/go-units/LICENSE b/vendor/github.com/docker/go-units/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/docker/go-units/MAINTAINERS b/vendor/github.com/docker/go-units/MAINTAINERS -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/docker/go-units/README.md b/vendor/github.com/docker/go-units/README.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/docker/go-units/circle.yml b/vendor/github.com/docker/go-units/circle.yml -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/docker/go-units/duration.go b/vendor/github.com/docker/go-units/duration.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/docker/go-units/size.go b/vendor/github.com/docker/go-units/size.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/docker/go-units/ulimit.go b/vendor/github.com/docker/go-units/ulimit.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/euank/go-kmsg-parser/LICENSE b/vendor/github.com/euank/go-kmsg-parser/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/euank/go-kmsg-parser/kmsgparser/kmsgparser.go b/vendor/github.com/euank/go-kmsg-parser/kmsgparser/kmsgparser.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/euank/go-kmsg-parser/kmsgparser/log.go b/vendor/github.com/euank/go-kmsg-parser/kmsgparser/log.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/go-logr/logr/.golangci.yaml b/vendor/github.com/go-logr/logr/.golangci.yaml -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/go-logr/logr/CHANGELOG.md b/vendor/github.com/go-logr/logr/CHANGELOG.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/go-logr/logr/CONTRIBUTING.md b/vendor/github.com/go-logr/logr/CONTRIBUTING.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/go-logr/logr/LICENSE b/vendor/github.com/go-logr/logr/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/go-logr/logr/README.md b/vendor/github.com/go-logr/logr/README.md -old mode 100644 -new mode 100755 -index ad825f5..ab59311 ---- a/vendor/github.com/go-logr/logr/README.md -+++ b/vendor/github.com/go-logr/logr/README.md -@@ -105,14 +105,18 @@ with higher verbosity means more (and less important) logs will be generated. - There are implementations for the following logging libraries: - - - **a function** (can bridge to non-structured libraries): [funcr](https://github.com/go-logr/logr/tree/master/funcr) -+- **a testing.T** (for use in Go tests, with JSON-like output): [testr](https://github.com/go-logr/logr/tree/master/testr) - - **github.com/google/glog**: [glogr](https://github.com/go-logr/glogr) - - **k8s.io/klog** (for Kubernetes): [klogr](https://git.k8s.io/klog/klogr) -+- **a testing.T** (with klog-like text output): [ktesting](https://git.k8s.io/klog/ktesting) - - **go.uber.org/zap**: [zapr](https://github.com/go-logr/zapr) - - **log** (the Go standard library logger): [stdr](https://github.com/go-logr/stdr) - - **github.com/sirupsen/logrus**: [logrusr](https://github.com/bombsimon/logrusr) - - **github.com/wojas/genericr**: [genericr](https://github.com/wojas/genericr) (makes it easy to implement your own backend) - - **logfmt** (Heroku style [logging](https://www.brandur.org/logfmt)): [logfmtr](https://github.com/iand/logfmtr) - - **github.com/rs/zerolog**: [zerologr](https://github.com/go-logr/zerologr) -+- **github.com/go-kit/log**: [gokitlogr](https://github.com/tonglil/gokitlogr) (also compatible with github.com/go-kit/kit/log since v0.12.0) -+- **bytes.Buffer** (writing to a buffer): [bufrlogr](https://github.com/tonglil/buflogr) (useful for ensuring values were logged, like during testing) - - ## FAQ - -diff --git a/vendor/github.com/go-logr/logr/discard.go b/vendor/github.com/go-logr/logr/discard.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/go-logr/logr/logr.go b/vendor/github.com/go-logr/logr/logr.go -old mode 100644 -new mode 100755 -index 44cd398..c3b56b3 ---- a/vendor/github.com/go-logr/logr/logr.go -+++ b/vendor/github.com/go-logr/logr/logr.go -@@ -43,7 +43,9 @@ limitations under the License. - // - // Info() and Error() are very similar, but they are separate methods so that - // LogSink implementations can choose to do things like attach additional --// information (such as stack traces) on calls to Error(). -+// information (such as stack traces) on calls to Error(). Error() messages are -+// always logged, regardless of the current verbosity. If there is no error -+// instance available, passing nil is valid. - // - // Verbosity - // -@@ -53,6 +55,7 @@ limitations under the License. - // Log-lines with V-levels that are not enabled (as per the LogSink) will not - // be written. Level V(0) is the default, and logger.V(0).Info() has the same - // meaning as logger.Info(). Negative V-levels have the same meaning as V(0). -+// Error messages do not have a verbosity level and are always logged. - // - // Where we might have written: - // if flVerbose >= 2 { -@@ -112,6 +115,15 @@ limitations under the License. - // may be any Go value, but how the value is formatted is determined by the - // LogSink implementation. - // -+// Logger instances are meant to be passed around by value. Code that receives -+// such a value can call its methods without having to check whether the -+// instance is ready for use. -+// -+// Calling methods with the null logger (Logger{}) as instance will crash -+// because it has no LogSink. Therefore this null logger should never be passed -+// around. For cases where passing a logger is optional, a pointer to Logger -+// should be used. -+// - // Key Naming Conventions - // - // Keys are not strictly required to conform to any specification or regex, but -@@ -253,11 +265,13 @@ func (l Logger) Info(msg string, keysAndValues ...interface{}) { - // Error logs an error, with the given message and key/value pairs as context. - // It functions similarly to Info, but may have unique behavior, and should be - // preferred for logging errors (see the package documentations for more --// information). -+// information). The log message will always be emitted, regardless of -+// verbosity level. - // - // The msg argument should be used to add context to any underlying error, - // while the err argument should be used to attach the actual error that --// triggered this log line, if present. -+// triggered this log line, if present. The err parameter is optional -+// and nil may be passed instead of an error instance. - func (l Logger) Error(err error, msg string, keysAndValues ...interface{}) { - if withHelper, ok := l.sink.(CallStackHelperLogSink); ok { - withHelper.GetCallStackHelper()() -diff --git a/vendor/github.com/godbus/dbus/v5/CONTRIBUTING.md b/vendor/github.com/godbus/dbus/v5/CONTRIBUTING.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/LICENSE b/vendor/github.com/godbus/dbus/v5/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/MAINTAINERS b/vendor/github.com/godbus/dbus/v5/MAINTAINERS -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/README.md b/vendor/github.com/godbus/dbus/v5/README.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/auth.go b/vendor/github.com/godbus/dbus/v5/auth.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/auth_anonymous.go b/vendor/github.com/godbus/dbus/v5/auth_anonymous.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/auth_external.go b/vendor/github.com/godbus/dbus/v5/auth_external.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/auth_sha1.go b/vendor/github.com/godbus/dbus/v5/auth_sha1.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/call.go b/vendor/github.com/godbus/dbus/v5/call.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/conn.go b/vendor/github.com/godbus/dbus/v5/conn.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/conn_darwin.go b/vendor/github.com/godbus/dbus/v5/conn_darwin.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/conn_other.go b/vendor/github.com/godbus/dbus/v5/conn_other.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/conn_unix.go b/vendor/github.com/godbus/dbus/v5/conn_unix.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/conn_windows.go b/vendor/github.com/godbus/dbus/v5/conn_windows.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/dbus.go b/vendor/github.com/godbus/dbus/v5/dbus.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/decoder.go b/vendor/github.com/godbus/dbus/v5/decoder.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/default_handler.go b/vendor/github.com/godbus/dbus/v5/default_handler.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/doc.go b/vendor/github.com/godbus/dbus/v5/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/encoder.go b/vendor/github.com/godbus/dbus/v5/encoder.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/export.go b/vendor/github.com/godbus/dbus/v5/export.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/homedir.go b/vendor/github.com/godbus/dbus/v5/homedir.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/homedir_dynamic.go b/vendor/github.com/godbus/dbus/v5/homedir_dynamic.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/homedir_static.go b/vendor/github.com/godbus/dbus/v5/homedir_static.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/match.go b/vendor/github.com/godbus/dbus/v5/match.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/message.go b/vendor/github.com/godbus/dbus/v5/message.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/object.go b/vendor/github.com/godbus/dbus/v5/object.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/sequence.go b/vendor/github.com/godbus/dbus/v5/sequence.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/sequential_handler.go b/vendor/github.com/godbus/dbus/v5/sequential_handler.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/server_interfaces.go b/vendor/github.com/godbus/dbus/v5/server_interfaces.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/sig.go b/vendor/github.com/godbus/dbus/v5/sig.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/transport_darwin.go b/vendor/github.com/godbus/dbus/v5/transport_darwin.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/transport_generic.go b/vendor/github.com/godbus/dbus/v5/transport_generic.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/transport_nonce_tcp.go b/vendor/github.com/godbus/dbus/v5/transport_nonce_tcp.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/transport_tcp.go b/vendor/github.com/godbus/dbus/v5/transport_tcp.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/transport_unix.go b/vendor/github.com/godbus/dbus/v5/transport_unix.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/transport_unixcred_dragonfly.go b/vendor/github.com/godbus/dbus/v5/transport_unixcred_dragonfly.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/transport_unixcred_freebsd.go b/vendor/github.com/godbus/dbus/v5/transport_unixcred_freebsd.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/transport_unixcred_linux.go b/vendor/github.com/godbus/dbus/v5/transport_unixcred_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/transport_unixcred_netbsd.go b/vendor/github.com/godbus/dbus/v5/transport_unixcred_netbsd.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/transport_unixcred_openbsd.go b/vendor/github.com/godbus/dbus/v5/transport_unixcred_openbsd.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/variant.go b/vendor/github.com/godbus/dbus/v5/variant.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/variant_lexer.go b/vendor/github.com/godbus/dbus/v5/variant_lexer.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/godbus/dbus/v5/variant_parser.go b/vendor/github.com/godbus/dbus/v5/variant_parser.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/gogo/protobuf/AUTHORS b/vendor/github.com/gogo/protobuf/AUTHORS -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/gogo/protobuf/CONTRIBUTORS b/vendor/github.com/gogo/protobuf/CONTRIBUTORS -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/gogo/protobuf/LICENSE b/vendor/github.com/gogo/protobuf/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/gogo/protobuf/gogoproto/Makefile b/vendor/github.com/gogo/protobuf/gogoproto/Makefile -new file mode 100755 -index 0000000..0b4659b ---- /dev/null -+++ b/vendor/github.com/gogo/protobuf/gogoproto/Makefile -@@ -0,0 +1,37 @@ -+# Protocol Buffers for Go with Gadgets -+# -+# Copyright (c) 2013, The GoGo Authors. All rights reserved. -+# http://github.com/gogo/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. -+# -+# 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: -+ go install github.com/gogo/protobuf/protoc-gen-gogo -+ protoc --gogo_out=Mgoogle/protobuf/descriptor.proto=github.com/gogo/protobuf/protoc-gen-gogo/descriptor:../../../../ --proto_path=../../../../:../protobuf/:. *.proto -+ -+restore: -+ cp gogo.pb.golden gogo.pb.go -+ -+preserve: -+ cp gogo.pb.go gogo.pb.golden -diff --git a/vendor/github.com/gogo/protobuf/gogoproto/doc.go b/vendor/github.com/gogo/protobuf/gogoproto/doc.go -new file mode 100755 -index 0000000..081c86f ---- /dev/null -+++ b/vendor/github.com/gogo/protobuf/gogoproto/doc.go -@@ -0,0 +1,169 @@ -+// Protocol Buffers for Go with Gadgets -+// -+// Copyright (c) 2013, The GoGo Authors. All rights reserved. -+// http://github.com/gogo/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. -+// -+// 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 gogoproto provides extensions for protocol buffers to achieve: -+ -+ - fast marshalling and unmarshalling. -+ - peace of mind by optionally generating test and benchmark code. -+ - more canonical Go structures. -+ - less typing by optionally generating extra helper code. -+ - goprotobuf compatibility -+ -+More Canonical Go Structures -+ -+A lot of time working with a goprotobuf struct will lead you to a place where you create another struct that is easier to work with and then have a function to copy the values between the two structs. -+You might also find that basic structs that started their life as part of an API need to be sent over the wire. With gob, you could just send it. With goprotobuf, you need to make a parallel struct. -+Gogoprotobuf tries to fix these problems with the nullable, embed, customtype and customname field extensions. -+ -+ - nullable, if false, a field is generated without a pointer (see warning below). -+ - embed, if true, the field is generated as an embedded field. -+ - customtype, It works with the Marshal and Unmarshal methods, to allow you to have your own types in your struct, but marshal to bytes. For example, custom.Uuid or custom.Fixed128 -+ - customname (beta), Changes the generated fieldname. This is especially useful when generated methods conflict with fieldnames. -+ - casttype (beta), Changes the generated fieldtype. All generated code assumes that this type is castable to the protocol buffer field type. It does not work for structs or enums. -+ - castkey (beta), Changes the generated fieldtype for a map key. All generated code assumes that this type is castable to the protocol buffer field type. Only supported on maps. -+ - castvalue (beta), Changes the generated fieldtype for a map value. All generated code assumes that this type is castable to the protocol buffer field type. Only supported on maps. -+ -+Warning about nullable: According to the Protocol Buffer specification, you should be able to tell whether a field is set or unset. With the option nullable=false this feature is lost, since your non-nullable fields will always be set. It can be seen as a layer on top of Protocol Buffers, where before and after marshalling all non-nullable fields are set and they cannot be unset. -+ -+Let us look at: -+ -+ github.com/gogo/protobuf/test/example/example.proto -+ -+for a quicker overview. -+ -+The following message: -+ -+ package test; -+ -+ import "github.com/gogo/protobuf/gogoproto/gogo.proto"; -+ -+ message A { -+ optional string Description = 1 [(gogoproto.nullable) = false]; -+ optional int64 Number = 2 [(gogoproto.nullable) = false]; -+ optional bytes Id = 3 [(gogoproto.customtype) = "github.com/gogo/protobuf/test/custom.Uuid", (gogoproto.nullable) = false]; -+ } -+ -+Will generate a go struct which looks a lot like this: -+ -+ type A struct { -+ Description string -+ Number int64 -+ Id github_com_gogo_protobuf_test_custom.Uuid -+ } -+ -+You will see there are no pointers, since all fields are non-nullable. -+You will also see a custom type which marshals to a string. -+Be warned it is your responsibility to test your custom types thoroughly. -+You should think of every possible empty and nil case for your marshaling, unmarshaling and size methods. -+ -+Next we will embed the message A in message B. -+ -+ message B { -+ optional A A = 1 [(gogoproto.nullable) = false, (gogoproto.embed) = true]; -+ repeated bytes G = 2 [(gogoproto.customtype) = "github.com/gogo/protobuf/test/custom.Uint128", (gogoproto.nullable) = false]; -+ } -+ -+See below that A is embedded in B. -+ -+ type B struct { -+ A -+ G []github_com_gogo_protobuf_test_custom.Uint128 -+ } -+ -+Also see the repeated custom type. -+ -+ type Uint128 [2]uint64 -+ -+Next we will create a custom name for one of our fields. -+ -+ message C { -+ optional int64 size = 1 [(gogoproto.customname) = "MySize"]; -+ } -+ -+See below that the field's name is MySize and not Size. -+ -+ type C struct { -+ MySize *int64 -+ } -+ -+The is useful when having a protocol buffer message with a field name which conflicts with a generated method. -+As an example, having a field name size and using the sizer plugin to generate a Size method will cause a go compiler error. -+Using customname you can fix this error without changing the field name. -+This is typically useful when working with a protocol buffer that was designed before these methods and/or the go language were avialable. -+ -+Gogoprotobuf also has some more subtle changes, these could be changed back: -+ -+ - the generated package name for imports do not have the extra /filename.pb, -+ but are actually the imports specified in the .proto file. -+ -+Gogoprotobuf also has lost some features which should be brought back with time: -+ -+ - Marshalling and unmarshalling with reflect and without the unsafe package, -+ this requires work in pointer_reflect.go -+ -+Why does nullable break protocol buffer specifications: -+ -+The protocol buffer specification states, somewhere, that you should be able to tell whether a -+field is set or unset. With the option nullable=false this feature is lost, -+since your non-nullable fields will always be set. It can be seen as a layer on top of -+protocol buffers, where before and after marshalling all non-nullable fields are set -+and they cannot be unset. -+ -+Goprotobuf Compatibility: -+ -+Gogoprotobuf is compatible with Goprotobuf, because it is compatible with protocol buffers. -+Gogoprotobuf generates the same code as goprotobuf if no extensions are used. -+The enumprefix, getters and stringer extensions can be used to remove some of the unnecessary code generated by goprotobuf: -+ -+ - gogoproto_import, if false, the generated code imports github.com/golang/protobuf/proto instead of github.com/gogo/protobuf/proto. -+ - goproto_enum_prefix, if false, generates the enum constant names without the messagetype prefix -+ - goproto_enum_stringer (experimental), if false, the enum is generated without the default string method, this is useful for rather using enum_stringer, or allowing you to write your own string method. -+ - goproto_getters, if false, the message is generated without get methods, this is useful when you would rather want to use face -+ - goproto_stringer, if false, the message is generated without the default string method, this is useful for rather using stringer, or allowing you to write your own string method. -+ - goproto_extensions_map (beta), if false, the extensions field is generated as type []byte instead of type map[int32]proto.Extension -+ - goproto_unrecognized (beta), if false, XXX_unrecognized field is not generated. This is useful in conjunction with gogoproto.nullable=false, to generate structures completely devoid of pointers and reduce GC pressure at the cost of losing information about unrecognized fields. -+ - goproto_registration (beta), if true, the generated files will register all messages and types against both gogo/protobuf and golang/protobuf. This is necessary when using third-party packages which read registrations from golang/protobuf (such as the grpc-gateway). -+ -+Less Typing and Peace of Mind is explained in their specific plugin folders godoc: -+ -+ - github.com/gogo/protobuf/plugin/ -+ -+If you do not use any of these extension the code that is generated -+will be the same as if goprotobuf has generated it. -+ -+The most complete way to see examples is to look at -+ -+ github.com/gogo/protobuf/test/thetest.proto -+ -+Gogoprototest is a seperate project, -+because we want to keep gogoprotobuf independent of goprotobuf, -+but we still want to test it thoroughly. -+ -+*/ -+package gogoproto -diff --git a/vendor/github.com/gogo/protobuf/gogoproto/gogo.pb.go b/vendor/github.com/gogo/protobuf/gogoproto/gogo.pb.go -new file mode 100755 -index 0000000..1e91766 ---- /dev/null -+++ b/vendor/github.com/gogo/protobuf/gogoproto/gogo.pb.go -@@ -0,0 +1,874 @@ -+// Code generated by protoc-gen-gogo. DO NOT EDIT. -+// source: gogo.proto -+ -+package gogoproto -+ -+import ( -+ fmt "fmt" -+ proto "github.com/gogo/protobuf/proto" -+ descriptor "github.com/gogo/protobuf/protoc-gen-gogo/descriptor" -+ 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.GoGoProtoPackageIsVersion3 // please upgrade the proto package -+ -+var E_GoprotoEnumPrefix = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.EnumOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 62001, -+ Name: "gogoproto.goproto_enum_prefix", -+ Tag: "varint,62001,opt,name=goproto_enum_prefix", -+ Filename: "gogo.proto", -+} -+ -+var E_GoprotoEnumStringer = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.EnumOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 62021, -+ Name: "gogoproto.goproto_enum_stringer", -+ Tag: "varint,62021,opt,name=goproto_enum_stringer", -+ Filename: "gogo.proto", -+} -+ -+var E_EnumStringer = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.EnumOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 62022, -+ Name: "gogoproto.enum_stringer", -+ Tag: "varint,62022,opt,name=enum_stringer", -+ Filename: "gogo.proto", -+} -+ -+var E_EnumCustomname = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.EnumOptions)(nil), -+ ExtensionType: (*string)(nil), -+ Field: 62023, -+ Name: "gogoproto.enum_customname", -+ Tag: "bytes,62023,opt,name=enum_customname", -+ Filename: "gogo.proto", -+} -+ -+var E_Enumdecl = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.EnumOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 62024, -+ Name: "gogoproto.enumdecl", -+ Tag: "varint,62024,opt,name=enumdecl", -+ Filename: "gogo.proto", -+} -+ -+var E_EnumvalueCustomname = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.EnumValueOptions)(nil), -+ ExtensionType: (*string)(nil), -+ Field: 66001, -+ Name: "gogoproto.enumvalue_customname", -+ Tag: "bytes,66001,opt,name=enumvalue_customname", -+ Filename: "gogo.proto", -+} -+ -+var E_GoprotoGettersAll = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FileOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 63001, -+ Name: "gogoproto.goproto_getters_all", -+ Tag: "varint,63001,opt,name=goproto_getters_all", -+ Filename: "gogo.proto", -+} -+ -+var E_GoprotoEnumPrefixAll = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FileOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 63002, -+ Name: "gogoproto.goproto_enum_prefix_all", -+ Tag: "varint,63002,opt,name=goproto_enum_prefix_all", -+ Filename: "gogo.proto", -+} -+ -+var E_GoprotoStringerAll = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FileOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 63003, -+ Name: "gogoproto.goproto_stringer_all", -+ Tag: "varint,63003,opt,name=goproto_stringer_all", -+ Filename: "gogo.proto", -+} -+ -+var E_VerboseEqualAll = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FileOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 63004, -+ Name: "gogoproto.verbose_equal_all", -+ Tag: "varint,63004,opt,name=verbose_equal_all", -+ Filename: "gogo.proto", -+} -+ -+var E_FaceAll = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FileOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 63005, -+ Name: "gogoproto.face_all", -+ Tag: "varint,63005,opt,name=face_all", -+ Filename: "gogo.proto", -+} -+ -+var E_GostringAll = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FileOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 63006, -+ Name: "gogoproto.gostring_all", -+ Tag: "varint,63006,opt,name=gostring_all", -+ Filename: "gogo.proto", -+} -+ -+var E_PopulateAll = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FileOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 63007, -+ Name: "gogoproto.populate_all", -+ Tag: "varint,63007,opt,name=populate_all", -+ Filename: "gogo.proto", -+} -+ -+var E_StringerAll = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FileOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 63008, -+ Name: "gogoproto.stringer_all", -+ Tag: "varint,63008,opt,name=stringer_all", -+ Filename: "gogo.proto", -+} -+ -+var E_OnlyoneAll = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FileOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 63009, -+ Name: "gogoproto.onlyone_all", -+ Tag: "varint,63009,opt,name=onlyone_all", -+ Filename: "gogo.proto", -+} -+ -+var E_EqualAll = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FileOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 63013, -+ Name: "gogoproto.equal_all", -+ Tag: "varint,63013,opt,name=equal_all", -+ Filename: "gogo.proto", -+} -+ -+var E_DescriptionAll = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FileOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 63014, -+ Name: "gogoproto.description_all", -+ Tag: "varint,63014,opt,name=description_all", -+ Filename: "gogo.proto", -+} -+ -+var E_TestgenAll = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FileOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 63015, -+ Name: "gogoproto.testgen_all", -+ Tag: "varint,63015,opt,name=testgen_all", -+ Filename: "gogo.proto", -+} -+ -+var E_BenchgenAll = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FileOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 63016, -+ Name: "gogoproto.benchgen_all", -+ Tag: "varint,63016,opt,name=benchgen_all", -+ Filename: "gogo.proto", -+} -+ -+var E_MarshalerAll = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FileOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 63017, -+ Name: "gogoproto.marshaler_all", -+ Tag: "varint,63017,opt,name=marshaler_all", -+ Filename: "gogo.proto", -+} -+ -+var E_UnmarshalerAll = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FileOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 63018, -+ Name: "gogoproto.unmarshaler_all", -+ Tag: "varint,63018,opt,name=unmarshaler_all", -+ Filename: "gogo.proto", -+} -+ -+var E_StableMarshalerAll = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FileOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 63019, -+ Name: "gogoproto.stable_marshaler_all", -+ Tag: "varint,63019,opt,name=stable_marshaler_all", -+ Filename: "gogo.proto", -+} -+ -+var E_SizerAll = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FileOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 63020, -+ Name: "gogoproto.sizer_all", -+ Tag: "varint,63020,opt,name=sizer_all", -+ Filename: "gogo.proto", -+} -+ -+var E_GoprotoEnumStringerAll = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FileOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 63021, -+ Name: "gogoproto.goproto_enum_stringer_all", -+ Tag: "varint,63021,opt,name=goproto_enum_stringer_all", -+ Filename: "gogo.proto", -+} -+ -+var E_EnumStringerAll = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FileOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 63022, -+ Name: "gogoproto.enum_stringer_all", -+ Tag: "varint,63022,opt,name=enum_stringer_all", -+ Filename: "gogo.proto", -+} -+ -+var E_UnsafeMarshalerAll = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FileOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 63023, -+ Name: "gogoproto.unsafe_marshaler_all", -+ Tag: "varint,63023,opt,name=unsafe_marshaler_all", -+ Filename: "gogo.proto", -+} -+ -+var E_UnsafeUnmarshalerAll = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FileOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 63024, -+ Name: "gogoproto.unsafe_unmarshaler_all", -+ Tag: "varint,63024,opt,name=unsafe_unmarshaler_all", -+ Filename: "gogo.proto", -+} -+ -+var E_GoprotoExtensionsMapAll = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FileOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 63025, -+ Name: "gogoproto.goproto_extensions_map_all", -+ Tag: "varint,63025,opt,name=goproto_extensions_map_all", -+ Filename: "gogo.proto", -+} -+ -+var E_GoprotoUnrecognizedAll = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FileOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 63026, -+ Name: "gogoproto.goproto_unrecognized_all", -+ Tag: "varint,63026,opt,name=goproto_unrecognized_all", -+ Filename: "gogo.proto", -+} -+ -+var E_GogoprotoImport = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FileOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 63027, -+ Name: "gogoproto.gogoproto_import", -+ Tag: "varint,63027,opt,name=gogoproto_import", -+ Filename: "gogo.proto", -+} -+ -+var E_ProtosizerAll = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FileOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 63028, -+ Name: "gogoproto.protosizer_all", -+ Tag: "varint,63028,opt,name=protosizer_all", -+ Filename: "gogo.proto", -+} -+ -+var E_CompareAll = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FileOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 63029, -+ Name: "gogoproto.compare_all", -+ Tag: "varint,63029,opt,name=compare_all", -+ Filename: "gogo.proto", -+} -+ -+var E_TypedeclAll = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FileOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 63030, -+ Name: "gogoproto.typedecl_all", -+ Tag: "varint,63030,opt,name=typedecl_all", -+ Filename: "gogo.proto", -+} -+ -+var E_EnumdeclAll = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FileOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 63031, -+ Name: "gogoproto.enumdecl_all", -+ Tag: "varint,63031,opt,name=enumdecl_all", -+ Filename: "gogo.proto", -+} -+ -+var E_GoprotoRegistration = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FileOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 63032, -+ Name: "gogoproto.goproto_registration", -+ Tag: "varint,63032,opt,name=goproto_registration", -+ Filename: "gogo.proto", -+} -+ -+var E_MessagenameAll = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FileOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 63033, -+ Name: "gogoproto.messagename_all", -+ Tag: "varint,63033,opt,name=messagename_all", -+ Filename: "gogo.proto", -+} -+ -+var E_GoprotoSizecacheAll = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FileOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 63034, -+ Name: "gogoproto.goproto_sizecache_all", -+ Tag: "varint,63034,opt,name=goproto_sizecache_all", -+ Filename: "gogo.proto", -+} -+ -+var E_GoprotoUnkeyedAll = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FileOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 63035, -+ Name: "gogoproto.goproto_unkeyed_all", -+ Tag: "varint,63035,opt,name=goproto_unkeyed_all", -+ Filename: "gogo.proto", -+} -+ -+var E_GoprotoGetters = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.MessageOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 64001, -+ Name: "gogoproto.goproto_getters", -+ Tag: "varint,64001,opt,name=goproto_getters", -+ Filename: "gogo.proto", -+} -+ -+var E_GoprotoStringer = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.MessageOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 64003, -+ Name: "gogoproto.goproto_stringer", -+ Tag: "varint,64003,opt,name=goproto_stringer", -+ Filename: "gogo.proto", -+} -+ -+var E_VerboseEqual = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.MessageOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 64004, -+ Name: "gogoproto.verbose_equal", -+ Tag: "varint,64004,opt,name=verbose_equal", -+ Filename: "gogo.proto", -+} -+ -+var E_Face = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.MessageOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 64005, -+ Name: "gogoproto.face", -+ Tag: "varint,64005,opt,name=face", -+ Filename: "gogo.proto", -+} -+ -+var E_Gostring = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.MessageOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 64006, -+ Name: "gogoproto.gostring", -+ Tag: "varint,64006,opt,name=gostring", -+ Filename: "gogo.proto", -+} -+ -+var E_Populate = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.MessageOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 64007, -+ Name: "gogoproto.populate", -+ Tag: "varint,64007,opt,name=populate", -+ Filename: "gogo.proto", -+} -+ -+var E_Stringer = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.MessageOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 67008, -+ Name: "gogoproto.stringer", -+ Tag: "varint,67008,opt,name=stringer", -+ Filename: "gogo.proto", -+} -+ -+var E_Onlyone = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.MessageOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 64009, -+ Name: "gogoproto.onlyone", -+ Tag: "varint,64009,opt,name=onlyone", -+ Filename: "gogo.proto", -+} -+ -+var E_Equal = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.MessageOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 64013, -+ Name: "gogoproto.equal", -+ Tag: "varint,64013,opt,name=equal", -+ Filename: "gogo.proto", -+} -+ -+var E_Description = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.MessageOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 64014, -+ Name: "gogoproto.description", -+ Tag: "varint,64014,opt,name=description", -+ Filename: "gogo.proto", -+} -+ -+var E_Testgen = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.MessageOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 64015, -+ Name: "gogoproto.testgen", -+ Tag: "varint,64015,opt,name=testgen", -+ Filename: "gogo.proto", -+} -+ -+var E_Benchgen = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.MessageOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 64016, -+ Name: "gogoproto.benchgen", -+ Tag: "varint,64016,opt,name=benchgen", -+ Filename: "gogo.proto", -+} -+ -+var E_Marshaler = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.MessageOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 64017, -+ Name: "gogoproto.marshaler", -+ Tag: "varint,64017,opt,name=marshaler", -+ Filename: "gogo.proto", -+} -+ -+var E_Unmarshaler = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.MessageOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 64018, -+ Name: "gogoproto.unmarshaler", -+ Tag: "varint,64018,opt,name=unmarshaler", -+ Filename: "gogo.proto", -+} -+ -+var E_StableMarshaler = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.MessageOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 64019, -+ Name: "gogoproto.stable_marshaler", -+ Tag: "varint,64019,opt,name=stable_marshaler", -+ Filename: "gogo.proto", -+} -+ -+var E_Sizer = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.MessageOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 64020, -+ Name: "gogoproto.sizer", -+ Tag: "varint,64020,opt,name=sizer", -+ Filename: "gogo.proto", -+} -+ -+var E_UnsafeMarshaler = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.MessageOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 64023, -+ Name: "gogoproto.unsafe_marshaler", -+ Tag: "varint,64023,opt,name=unsafe_marshaler", -+ Filename: "gogo.proto", -+} -+ -+var E_UnsafeUnmarshaler = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.MessageOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 64024, -+ Name: "gogoproto.unsafe_unmarshaler", -+ Tag: "varint,64024,opt,name=unsafe_unmarshaler", -+ Filename: "gogo.proto", -+} -+ -+var E_GoprotoExtensionsMap = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.MessageOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 64025, -+ Name: "gogoproto.goproto_extensions_map", -+ Tag: "varint,64025,opt,name=goproto_extensions_map", -+ Filename: "gogo.proto", -+} -+ -+var E_GoprotoUnrecognized = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.MessageOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 64026, -+ Name: "gogoproto.goproto_unrecognized", -+ Tag: "varint,64026,opt,name=goproto_unrecognized", -+ Filename: "gogo.proto", -+} -+ -+var E_Protosizer = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.MessageOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 64028, -+ Name: "gogoproto.protosizer", -+ Tag: "varint,64028,opt,name=protosizer", -+ Filename: "gogo.proto", -+} -+ -+var E_Compare = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.MessageOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 64029, -+ Name: "gogoproto.compare", -+ Tag: "varint,64029,opt,name=compare", -+ Filename: "gogo.proto", -+} -+ -+var E_Typedecl = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.MessageOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 64030, -+ Name: "gogoproto.typedecl", -+ Tag: "varint,64030,opt,name=typedecl", -+ Filename: "gogo.proto", -+} -+ -+var E_Messagename = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.MessageOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 64033, -+ Name: "gogoproto.messagename", -+ Tag: "varint,64033,opt,name=messagename", -+ Filename: "gogo.proto", -+} -+ -+var E_GoprotoSizecache = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.MessageOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 64034, -+ Name: "gogoproto.goproto_sizecache", -+ Tag: "varint,64034,opt,name=goproto_sizecache", -+ Filename: "gogo.proto", -+} -+ -+var E_GoprotoUnkeyed = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.MessageOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 64035, -+ Name: "gogoproto.goproto_unkeyed", -+ Tag: "varint,64035,opt,name=goproto_unkeyed", -+ Filename: "gogo.proto", -+} -+ -+var E_Nullable = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FieldOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 65001, -+ Name: "gogoproto.nullable", -+ Tag: "varint,65001,opt,name=nullable", -+ Filename: "gogo.proto", -+} -+ -+var E_Embed = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FieldOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 65002, -+ Name: "gogoproto.embed", -+ Tag: "varint,65002,opt,name=embed", -+ Filename: "gogo.proto", -+} -+ -+var E_Customtype = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FieldOptions)(nil), -+ ExtensionType: (*string)(nil), -+ Field: 65003, -+ Name: "gogoproto.customtype", -+ Tag: "bytes,65003,opt,name=customtype", -+ Filename: "gogo.proto", -+} -+ -+var E_Customname = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FieldOptions)(nil), -+ ExtensionType: (*string)(nil), -+ Field: 65004, -+ Name: "gogoproto.customname", -+ Tag: "bytes,65004,opt,name=customname", -+ Filename: "gogo.proto", -+} -+ -+var E_Jsontag = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FieldOptions)(nil), -+ ExtensionType: (*string)(nil), -+ Field: 65005, -+ Name: "gogoproto.jsontag", -+ Tag: "bytes,65005,opt,name=jsontag", -+ Filename: "gogo.proto", -+} -+ -+var E_Moretags = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FieldOptions)(nil), -+ ExtensionType: (*string)(nil), -+ Field: 65006, -+ Name: "gogoproto.moretags", -+ Tag: "bytes,65006,opt,name=moretags", -+ Filename: "gogo.proto", -+} -+ -+var E_Casttype = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FieldOptions)(nil), -+ ExtensionType: (*string)(nil), -+ Field: 65007, -+ Name: "gogoproto.casttype", -+ Tag: "bytes,65007,opt,name=casttype", -+ Filename: "gogo.proto", -+} -+ -+var E_Castkey = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FieldOptions)(nil), -+ ExtensionType: (*string)(nil), -+ Field: 65008, -+ Name: "gogoproto.castkey", -+ Tag: "bytes,65008,opt,name=castkey", -+ Filename: "gogo.proto", -+} -+ -+var E_Castvalue = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FieldOptions)(nil), -+ ExtensionType: (*string)(nil), -+ Field: 65009, -+ Name: "gogoproto.castvalue", -+ Tag: "bytes,65009,opt,name=castvalue", -+ Filename: "gogo.proto", -+} -+ -+var E_Stdtime = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FieldOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 65010, -+ Name: "gogoproto.stdtime", -+ Tag: "varint,65010,opt,name=stdtime", -+ Filename: "gogo.proto", -+} -+ -+var E_Stdduration = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FieldOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 65011, -+ Name: "gogoproto.stdduration", -+ Tag: "varint,65011,opt,name=stdduration", -+ Filename: "gogo.proto", -+} -+ -+var E_Wktpointer = &proto.ExtensionDesc{ -+ ExtendedType: (*descriptor.FieldOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 65012, -+ Name: "gogoproto.wktpointer", -+ Tag: "varint,65012,opt,name=wktpointer", -+ Filename: "gogo.proto", -+} -+ -+func init() { -+ proto.RegisterExtension(E_GoprotoEnumPrefix) -+ proto.RegisterExtension(E_GoprotoEnumStringer) -+ proto.RegisterExtension(E_EnumStringer) -+ proto.RegisterExtension(E_EnumCustomname) -+ proto.RegisterExtension(E_Enumdecl) -+ proto.RegisterExtension(E_EnumvalueCustomname) -+ proto.RegisterExtension(E_GoprotoGettersAll) -+ proto.RegisterExtension(E_GoprotoEnumPrefixAll) -+ proto.RegisterExtension(E_GoprotoStringerAll) -+ proto.RegisterExtension(E_VerboseEqualAll) -+ proto.RegisterExtension(E_FaceAll) -+ proto.RegisterExtension(E_GostringAll) -+ proto.RegisterExtension(E_PopulateAll) -+ proto.RegisterExtension(E_StringerAll) -+ proto.RegisterExtension(E_OnlyoneAll) -+ proto.RegisterExtension(E_EqualAll) -+ proto.RegisterExtension(E_DescriptionAll) -+ proto.RegisterExtension(E_TestgenAll) -+ proto.RegisterExtension(E_BenchgenAll) -+ proto.RegisterExtension(E_MarshalerAll) -+ proto.RegisterExtension(E_UnmarshalerAll) -+ proto.RegisterExtension(E_StableMarshalerAll) -+ proto.RegisterExtension(E_SizerAll) -+ proto.RegisterExtension(E_GoprotoEnumStringerAll) -+ proto.RegisterExtension(E_EnumStringerAll) -+ proto.RegisterExtension(E_UnsafeMarshalerAll) -+ proto.RegisterExtension(E_UnsafeUnmarshalerAll) -+ proto.RegisterExtension(E_GoprotoExtensionsMapAll) -+ proto.RegisterExtension(E_GoprotoUnrecognizedAll) -+ proto.RegisterExtension(E_GogoprotoImport) -+ proto.RegisterExtension(E_ProtosizerAll) -+ proto.RegisterExtension(E_CompareAll) -+ proto.RegisterExtension(E_TypedeclAll) -+ proto.RegisterExtension(E_EnumdeclAll) -+ proto.RegisterExtension(E_GoprotoRegistration) -+ proto.RegisterExtension(E_MessagenameAll) -+ proto.RegisterExtension(E_GoprotoSizecacheAll) -+ proto.RegisterExtension(E_GoprotoUnkeyedAll) -+ proto.RegisterExtension(E_GoprotoGetters) -+ proto.RegisterExtension(E_GoprotoStringer) -+ proto.RegisterExtension(E_VerboseEqual) -+ proto.RegisterExtension(E_Face) -+ proto.RegisterExtension(E_Gostring) -+ proto.RegisterExtension(E_Populate) -+ proto.RegisterExtension(E_Stringer) -+ proto.RegisterExtension(E_Onlyone) -+ proto.RegisterExtension(E_Equal) -+ proto.RegisterExtension(E_Description) -+ proto.RegisterExtension(E_Testgen) -+ proto.RegisterExtension(E_Benchgen) -+ proto.RegisterExtension(E_Marshaler) -+ proto.RegisterExtension(E_Unmarshaler) -+ proto.RegisterExtension(E_StableMarshaler) -+ proto.RegisterExtension(E_Sizer) -+ proto.RegisterExtension(E_UnsafeMarshaler) -+ proto.RegisterExtension(E_UnsafeUnmarshaler) -+ proto.RegisterExtension(E_GoprotoExtensionsMap) -+ proto.RegisterExtension(E_GoprotoUnrecognized) -+ proto.RegisterExtension(E_Protosizer) -+ proto.RegisterExtension(E_Compare) -+ proto.RegisterExtension(E_Typedecl) -+ proto.RegisterExtension(E_Messagename) -+ proto.RegisterExtension(E_GoprotoSizecache) -+ proto.RegisterExtension(E_GoprotoUnkeyed) -+ proto.RegisterExtension(E_Nullable) -+ proto.RegisterExtension(E_Embed) -+ proto.RegisterExtension(E_Customtype) -+ proto.RegisterExtension(E_Customname) -+ proto.RegisterExtension(E_Jsontag) -+ proto.RegisterExtension(E_Moretags) -+ proto.RegisterExtension(E_Casttype) -+ proto.RegisterExtension(E_Castkey) -+ proto.RegisterExtension(E_Castvalue) -+ proto.RegisterExtension(E_Stdtime) -+ proto.RegisterExtension(E_Stdduration) -+ proto.RegisterExtension(E_Wktpointer) -+} -+ -+func init() { proto.RegisterFile("gogo.proto", fileDescriptor_592445b5231bc2b9) } -+ -+var fileDescriptor_592445b5231bc2b9 = []byte{ -+ // 1328 bytes of a gzipped FileDescriptorProto -+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x98, 0x49, 0x6f, 0x1c, 0x45, -+ 0x14, 0x80, 0x85, 0x48, 0x64, 0x4f, 0x79, 0x8b, 0xc7, 0xc6, 0x84, 0x08, 0x44, 0xe0, 0xc4, 0xc9, -+ 0x3e, 0x45, 0x28, 0x65, 0x45, 0x96, 0x63, 0x39, 0x56, 0x10, 0x0e, 0xc6, 0x89, 0xc3, 0x76, 0x18, -+ 0xf5, 0xf4, 0x94, 0xdb, 0x8d, 0xbb, 0xbb, 0x9a, 0xee, 0xea, 0x10, 0xe7, 0x86, 0xc2, 0x22, 0x84, -+ 0xd8, 0x91, 0x20, 0x21, 0x09, 0x04, 0xc4, 0xbe, 0x86, 0x7d, 0xb9, 0x70, 0x61, 0xb9, 0xf2, 0x1f, -+ 0xb8, 0x00, 0x66, 0xf7, 0xcd, 0x17, 0xf4, 0xba, 0xdf, 0xeb, 0xa9, 0x69, 0x8f, 0x54, 0x35, 0xb7, -+ 0xf6, 0xb8, 0xbe, 0x6f, 0xaa, 0xdf, 0xeb, 0x7a, 0xef, 0x4d, 0x33, 0xe6, 0x49, 0x4f, 0x4e, 0xc6, -+ 0x89, 0x54, 0xb2, 0x5e, 0x83, 0xeb, 0xfc, 0x72, 0xdf, 0x7e, 0x4f, 0x4a, 0x2f, 0x10, 0x53, 0xf9, -+ 0x5f, 0xcd, 0x6c, 0x75, 0xaa, 0x25, 0x52, 0x37, 0xf1, 0x63, 0x25, 0x93, 0x62, 0x31, 0x3f, 0xc6, -+ 0xc6, 0x70, 0x71, 0x43, 0x44, 0x59, 0xd8, 0x88, 0x13, 0xb1, 0xea, 0x9f, 0xae, 0x5f, 0x3f, 0x59, -+ 0x90, 0x93, 0x44, 0x4e, 0xce, 0x47, 0x59, 0x78, 0x47, 0xac, 0x7c, 0x19, 0xa5, 0x7b, 0xaf, 0xfc, -+ 0x72, 0xf5, 0xfe, 0xab, 0x6e, 0xe9, 0x5f, 0x1e, 0x45, 0x14, 0xfe, 0xb7, 0x94, 0x83, 0x7c, 0x99, -+ 0x5d, 0xd3, 0xe1, 0x4b, 0x55, 0xe2, 0x47, 0x9e, 0x48, 0x0c, 0xc6, 0xef, 0xd1, 0x38, 0xa6, 0x19, -+ 0x8f, 0x23, 0xca, 0xe7, 0xd8, 0x50, 0x2f, 0xae, 0x1f, 0xd0, 0x35, 0x28, 0x74, 0xc9, 0x02, 0x1b, -+ 0xc9, 0x25, 0x6e, 0x96, 0x2a, 0x19, 0x46, 0x4e, 0x28, 0x0c, 0x9a, 0x1f, 0x73, 0x4d, 0x6d, 0x79, -+ 0x18, 0xb0, 0xb9, 0x92, 0xe2, 0x9c, 0xf5, 0xc3, 0x27, 0x2d, 0xe1, 0x06, 0x06, 0xc3, 0x4f, 0xb8, -+ 0x91, 0x72, 0x3d, 0x3f, 0xc9, 0xc6, 0xe1, 0xfa, 0x94, 0x13, 0x64, 0x42, 0xdf, 0xc9, 0x4d, 0x5d, -+ 0x3d, 0x27, 0x61, 0x19, 0xc9, 0x7e, 0x3e, 0xbb, 0x2b, 0xdf, 0xce, 0x58, 0x29, 0xd0, 0xf6, 0xa4, -+ 0x65, 0xd1, 0x13, 0x4a, 0x89, 0x24, 0x6d, 0x38, 0x41, 0xb7, 0xed, 0x1d, 0xf1, 0x83, 0xd2, 0x78, -+ 0x6e, 0xb3, 0x33, 0x8b, 0x0b, 0x05, 0x39, 0x1b, 0x04, 0x7c, 0x85, 0x5d, 0xdb, 0xe5, 0xa9, 0xb0, -+ 0x70, 0x9e, 0x47, 0xe7, 0xf8, 0x8e, 0x27, 0x03, 0xb4, 0x4b, 0x8c, 0x3e, 0x2f, 0x73, 0x69, 0xe1, -+ 0x7c, 0x19, 0x9d, 0x75, 0x64, 0x29, 0xa5, 0x60, 0xbc, 0x8d, 0x8d, 0x9e, 0x12, 0x49, 0x53, 0xa6, -+ 0xa2, 0x21, 0x1e, 0xc8, 0x9c, 0xc0, 0x42, 0x77, 0x01, 0x75, 0x23, 0x08, 0xce, 0x03, 0x07, 0xae, -+ 0x83, 0xac, 0x7f, 0xd5, 0x71, 0x85, 0x85, 0xe2, 0x22, 0x2a, 0xfa, 0x60, 0x3d, 0xa0, 0xb3, 0x6c, -+ 0xd0, 0x93, 0xc5, 0x2d, 0x59, 0xe0, 0x97, 0x10, 0x1f, 0x20, 0x06, 0x15, 0xb1, 0x8c, 0xb3, 0xc0, -+ 0x51, 0x36, 0x3b, 0x78, 0x85, 0x14, 0xc4, 0xa0, 0xa2, 0x87, 0xb0, 0xbe, 0x4a, 0x8a, 0x54, 0x8b, -+ 0xe7, 0x0c, 0x1b, 0x90, 0x51, 0xb0, 0x21, 0x23, 0x9b, 0x4d, 0x5c, 0x46, 0x03, 0x43, 0x04, 0x04, -+ 0xd3, 0xac, 0x66, 0x9b, 0x88, 0x37, 0x36, 0xe9, 0x78, 0x50, 0x06, 0x16, 0xd8, 0x08, 0x15, 0x28, -+ 0x5f, 0x46, 0x16, 0x8a, 0x37, 0x51, 0x31, 0xac, 0x61, 0x78, 0x1b, 0x4a, 0xa4, 0xca, 0x13, 0x36, -+ 0x92, 0xb7, 0xe8, 0x36, 0x10, 0xc1, 0x50, 0x36, 0x45, 0xe4, 0xae, 0xd9, 0x19, 0xde, 0xa6, 0x50, -+ 0x12, 0x03, 0x8a, 0x39, 0x36, 0x14, 0x3a, 0x49, 0xba, 0xe6, 0x04, 0x56, 0xe9, 0x78, 0x07, 0x1d, -+ 0x83, 0x25, 0x84, 0x11, 0xc9, 0xa2, 0x5e, 0x34, 0xef, 0x52, 0x44, 0x34, 0x0c, 0x8f, 0x5e, 0xaa, -+ 0x9c, 0x66, 0x20, 0x1a, 0xbd, 0xd8, 0xde, 0xa3, 0xa3, 0x57, 0xb0, 0x8b, 0xba, 0x71, 0x9a, 0xd5, -+ 0x52, 0xff, 0x8c, 0x95, 0xe6, 0x7d, 0xca, 0x74, 0x0e, 0x00, 0x7c, 0x0f, 0xbb, 0xae, 0x6b, 0x9b, -+ 0xb0, 0x90, 0x7d, 0x80, 0xb2, 0x89, 0x2e, 0xad, 0x02, 0x4b, 0x42, 0xaf, 0xca, 0x0f, 0xa9, 0x24, -+ 0x88, 0x8a, 0x6b, 0x89, 0x8d, 0x67, 0x51, 0xea, 0xac, 0xf6, 0x16, 0xb5, 0x8f, 0x28, 0x6a, 0x05, -+ 0xdb, 0x11, 0xb5, 0x13, 0x6c, 0x02, 0x8d, 0xbd, 0xe5, 0xf5, 0x63, 0x2a, 0xac, 0x05, 0xbd, 0xd2, -+ 0x99, 0xdd, 0xfb, 0xd8, 0xbe, 0x32, 0x9c, 0xa7, 0x95, 0x88, 0x52, 0x60, 0x1a, 0xa1, 0x13, 0x5b, -+ 0x98, 0xaf, 0xa0, 0x99, 0x2a, 0xfe, 0x7c, 0x29, 0x58, 0x74, 0x62, 0x90, 0xdf, 0xcd, 0xf6, 0x92, -+ 0x3c, 0x8b, 0x12, 0xe1, 0x4a, 0x2f, 0xf2, 0xcf, 0x88, 0x96, 0x85, 0xfa, 0x93, 0x4a, 0xaa, 0x56, -+ 0x34, 0x1c, 0xcc, 0x47, 0xd9, 0x9e, 0x72, 0x56, 0x69, 0xf8, 0x61, 0x2c, 0x13, 0x65, 0x30, 0x7e, -+ 0x4a, 0x99, 0x2a, 0xb9, 0xa3, 0x39, 0xc6, 0xe7, 0xd9, 0x70, 0xfe, 0xa7, 0xed, 0x23, 0xf9, 0x19, -+ 0x8a, 0x86, 0xda, 0x14, 0x16, 0x0e, 0x57, 0x86, 0xb1, 0x93, 0xd8, 0xd4, 0xbf, 0xcf, 0xa9, 0x70, -+ 0x20, 0x82, 0x85, 0x43, 0x6d, 0xc4, 0x02, 0xba, 0xbd, 0x85, 0xe1, 0x0b, 0x2a, 0x1c, 0xc4, 0xa0, -+ 0x82, 0x06, 0x06, 0x0b, 0xc5, 0x97, 0xa4, 0x20, 0x06, 0x14, 0x77, 0xb6, 0x1b, 0x6d, 0x22, 0x3c, -+ 0x3f, 0x55, 0x89, 0x03, 0xab, 0x0d, 0xaa, 0xaf, 0x36, 0x3b, 0x87, 0xb0, 0x65, 0x0d, 0x85, 0x4a, -+ 0x14, 0x8a, 0x34, 0x75, 0x3c, 0x01, 0x13, 0x87, 0xc5, 0xc6, 0xbe, 0xa6, 0x4a, 0xa4, 0x61, 0xb0, -+ 0x37, 0x6d, 0x42, 0x84, 0xb0, 0xbb, 0x8e, 0xbb, 0x66, 0xa3, 0xfb, 0xa6, 0xb2, 0xb9, 0xe3, 0xc4, -+ 0x82, 0x53, 0x9b, 0x7f, 0xb2, 0x68, 0x5d, 0x6c, 0x58, 0x3d, 0x9d, 0xdf, 0x56, 0xe6, 0x9f, 0x95, -+ 0x82, 0x2c, 0x6a, 0xc8, 0x48, 0x65, 0x9e, 0xaa, 0xdf, 0xb8, 0xc3, 0xb5, 0x58, 0xdc, 0x17, 0xe9, -+ 0x1e, 0xda, 0xc2, 0xfb, 0xed, 0x1c, 0xa7, 0xf8, 0xed, 0xf0, 0x90, 0x77, 0x0e, 0x3d, 0x66, 0xd9, -+ 0xd9, 0xad, 0xf2, 0x39, 0xef, 0x98, 0x79, 0xf8, 0x11, 0x36, 0xd4, 0x31, 0xf0, 0x98, 0x55, 0x0f, -+ 0xa3, 0x6a, 0x50, 0x9f, 0x77, 0xf8, 0x01, 0xb6, 0x0b, 0x86, 0x17, 0x33, 0xfe, 0x08, 0xe2, 0xf9, -+ 0x72, 0x7e, 0x88, 0xf5, 0xd3, 0xd0, 0x62, 0x46, 0x1f, 0x45, 0xb4, 0x44, 0x00, 0xa7, 0x81, 0xc5, -+ 0x8c, 0x3f, 0x46, 0x38, 0x21, 0x80, 0xdb, 0x87, 0xf0, 0xbb, 0x27, 0x76, 0x61, 0xd3, 0xa1, 0xd8, -+ 0x4d, 0xb3, 0x3e, 0x9c, 0x54, 0xcc, 0xf4, 0xe3, 0xf8, 0xe5, 0x44, 0xf0, 0x5b, 0xd9, 0x6e, 0xcb, -+ 0x80, 0x3f, 0x89, 0x68, 0xb1, 0x9e, 0xcf, 0xb1, 0x01, 0x6d, 0x3a, 0x31, 0xe3, 0x4f, 0x21, 0xae, -+ 0x53, 0xb0, 0x75, 0x9c, 0x4e, 0xcc, 0x82, 0xa7, 0x69, 0xeb, 0x48, 0x40, 0xd8, 0x68, 0x30, 0x31, -+ 0xd3, 0xcf, 0x50, 0xd4, 0x09, 0xe1, 0x33, 0xac, 0x56, 0x36, 0x1b, 0x33, 0xff, 0x2c, 0xf2, 0x6d, -+ 0x06, 0x22, 0xa0, 0x35, 0x3b, 0xb3, 0xe2, 0x39, 0x8a, 0x80, 0x46, 0xc1, 0x31, 0xaa, 0x0e, 0x30, -+ 0x66, 0xd3, 0xf3, 0x74, 0x8c, 0x2a, 0xf3, 0x0b, 0x64, 0x33, 0xaf, 0xf9, 0x66, 0xc5, 0x0b, 0x94, -+ 0xcd, 0x7c, 0x3d, 0x6c, 0xa3, 0x3a, 0x11, 0x98, 0x1d, 0x2f, 0xd2, 0x36, 0x2a, 0x03, 0x01, 0x5f, -+ 0x62, 0xf5, 0x9d, 0xd3, 0x80, 0xd9, 0xf7, 0x12, 0xfa, 0x46, 0x77, 0x0c, 0x03, 0xfc, 0x2e, 0x36, -+ 0xd1, 0x7d, 0x12, 0x30, 0x5b, 0xcf, 0x6d, 0x55, 0x7e, 0xbb, 0xe9, 0x83, 0x00, 0x3f, 0xd1, 0x6e, -+ 0x29, 0xfa, 0x14, 0x60, 0xd6, 0x9e, 0xdf, 0xea, 0x2c, 0xdc, 0xfa, 0x10, 0xc0, 0x67, 0x19, 0x6b, -+ 0x37, 0x60, 0xb3, 0xeb, 0x02, 0xba, 0x34, 0x08, 0x8e, 0x06, 0xf6, 0x5f, 0x33, 0x7f, 0x91, 0x8e, -+ 0x06, 0x12, 0x70, 0x34, 0xa8, 0xf5, 0x9a, 0xe9, 0x4b, 0x74, 0x34, 0x08, 0x81, 0x27, 0x5b, 0xeb, -+ 0x6e, 0x66, 0xc3, 0x65, 0x7a, 0xb2, 0x35, 0x8a, 0x1f, 0x63, 0xa3, 0x3b, 0x1a, 0xa2, 0x59, 0xf5, -+ 0x1a, 0xaa, 0xf6, 0x54, 0xfb, 0xa1, 0xde, 0xbc, 0xb0, 0x19, 0x9a, 0x6d, 0xaf, 0x57, 0x9a, 0x17, -+ 0xf6, 0x42, 0x3e, 0xcd, 0xfa, 0xa3, 0x2c, 0x08, 0xe0, 0xf0, 0xd4, 0x6f, 0xe8, 0xd2, 0x4d, 0x45, -+ 0xd0, 0x22, 0xc5, 0xaf, 0xdb, 0x18, 0x1d, 0x02, 0xf8, 0x01, 0xb6, 0x5b, 0x84, 0x4d, 0xd1, 0x32, -+ 0x91, 0xbf, 0x6d, 0x53, 0xc1, 0x84, 0xd5, 0x7c, 0x86, 0xb1, 0xe2, 0xd5, 0x08, 0x84, 0xd9, 0xc4, -+ 0xfe, 0xbe, 0x5d, 0xbc, 0xa5, 0xd1, 0x90, 0xb6, 0x20, 0x4f, 0x8a, 0x41, 0xb0, 0xd9, 0x29, 0xc8, -+ 0x33, 0x72, 0x90, 0xf5, 0xdd, 0x9f, 0xca, 0x48, 0x39, 0x9e, 0x89, 0xfe, 0x03, 0x69, 0x5a, 0x0f, -+ 0x01, 0x0b, 0x65, 0x22, 0x94, 0xe3, 0xa5, 0x26, 0xf6, 0x4f, 0x64, 0x4b, 0x00, 0x60, 0xd7, 0x49, -+ 0x95, 0xcd, 0x7d, 0xff, 0x45, 0x30, 0x01, 0xb0, 0x69, 0xb8, 0x5e, 0x17, 0x1b, 0x26, 0xf6, 0x6f, -+ 0xda, 0x34, 0xae, 0xe7, 0x87, 0x58, 0x0d, 0x2e, 0xf3, 0xb7, 0x4a, 0x26, 0xf8, 0x1f, 0x84, 0xdb, -+ 0x04, 0x7c, 0x73, 0xaa, 0x5a, 0xca, 0x37, 0x07, 0xfb, 0x5f, 0xcc, 0x34, 0xad, 0xe7, 0xb3, 0x6c, -+ 0x20, 0x55, 0xad, 0x56, 0x86, 0xf3, 0xa9, 0x01, 0xff, 0x6f, 0xbb, 0x7c, 0x65, 0x51, 0x32, 0x90, -+ 0xed, 0x07, 0xd7, 0x55, 0x2c, 0xfd, 0x48, 0x89, 0xc4, 0x64, 0xd8, 0x42, 0x83, 0x86, 0x1c, 0x9e, -+ 0x67, 0x63, 0xae, 0x0c, 0xab, 0xdc, 0x61, 0xb6, 0x20, 0x17, 0xe4, 0x52, 0x5e, 0x67, 0xee, 0xbd, -+ 0xd9, 0xf3, 0xd5, 0x5a, 0xd6, 0x9c, 0x74, 0x65, 0x38, 0x05, 0xbf, 0x3c, 0xda, 0x2f, 0x54, 0xcb, -+ 0xdf, 0x21, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x9c, 0xaf, 0x70, 0x4e, 0x83, 0x15, 0x00, 0x00, -+} -diff --git a/vendor/github.com/gogo/protobuf/gogoproto/gogo.pb.golden b/vendor/github.com/gogo/protobuf/gogoproto/gogo.pb.golden -new file mode 100755 -index 0000000..f6502e4 ---- /dev/null -+++ b/vendor/github.com/gogo/protobuf/gogoproto/gogo.pb.golden -@@ -0,0 +1,45 @@ -+// Code generated by protoc-gen-go. -+// source: gogo.proto -+// DO NOT EDIT! -+ -+package gogoproto -+ -+import proto "github.com/gogo/protobuf/proto" -+import json "encoding/json" -+import math "math" -+import google_protobuf "github.com/gogo/protobuf/protoc-gen-gogo/descriptor" -+ -+// Reference proto, json, and math imports to suppress error if they are not otherwise used. -+var _ = proto.Marshal -+var _ = &json.SyntaxError{} -+var _ = math.Inf -+ -+var E_Nullable = &proto.ExtensionDesc{ -+ ExtendedType: (*google_protobuf.FieldOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 51235, -+ Name: "gogoproto.nullable", -+ Tag: "varint,51235,opt,name=nullable", -+} -+ -+var E_Embed = &proto.ExtensionDesc{ -+ ExtendedType: (*google_protobuf.FieldOptions)(nil), -+ ExtensionType: (*bool)(nil), -+ Field: 51236, -+ Name: "gogoproto.embed", -+ Tag: "varint,51236,opt,name=embed", -+} -+ -+var E_Customtype = &proto.ExtensionDesc{ -+ ExtendedType: (*google_protobuf.FieldOptions)(nil), -+ ExtensionType: (*string)(nil), -+ Field: 51237, -+ Name: "gogoproto.customtype", -+ Tag: "bytes,51237,opt,name=customtype", -+} -+ -+func init() { -+ proto.RegisterExtension(E_Nullable) -+ proto.RegisterExtension(E_Embed) -+ proto.RegisterExtension(E_Customtype) -+} -diff --git a/vendor/github.com/gogo/protobuf/gogoproto/gogo.proto b/vendor/github.com/gogo/protobuf/gogoproto/gogo.proto -new file mode 100755 -index 0000000..b80c856 ---- /dev/null -+++ b/vendor/github.com/gogo/protobuf/gogoproto/gogo.proto -@@ -0,0 +1,144 @@ -+// Protocol Buffers for Go with Gadgets -+// -+// Copyright (c) 2013, The GoGo Authors. All rights reserved. -+// http://github.com/gogo/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. -+// -+// 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 gogoproto; -+ -+import "google/protobuf/descriptor.proto"; -+ -+option java_package = "com.google.protobuf"; -+option java_outer_classname = "GoGoProtos"; -+option go_package = "github.com/gogo/protobuf/gogoproto"; -+ -+extend google.protobuf.EnumOptions { -+ optional bool goproto_enum_prefix = 62001; -+ optional bool goproto_enum_stringer = 62021; -+ optional bool enum_stringer = 62022; -+ optional string enum_customname = 62023; -+ optional bool enumdecl = 62024; -+} -+ -+extend google.protobuf.EnumValueOptions { -+ optional string enumvalue_customname = 66001; -+} -+ -+extend google.protobuf.FileOptions { -+ optional bool goproto_getters_all = 63001; -+ optional bool goproto_enum_prefix_all = 63002; -+ optional bool goproto_stringer_all = 63003; -+ optional bool verbose_equal_all = 63004; -+ optional bool face_all = 63005; -+ optional bool gostring_all = 63006; -+ optional bool populate_all = 63007; -+ optional bool stringer_all = 63008; -+ optional bool onlyone_all = 63009; -+ -+ optional bool equal_all = 63013; -+ optional bool description_all = 63014; -+ optional bool testgen_all = 63015; -+ optional bool benchgen_all = 63016; -+ optional bool marshaler_all = 63017; -+ optional bool unmarshaler_all = 63018; -+ optional bool stable_marshaler_all = 63019; -+ -+ optional bool sizer_all = 63020; -+ -+ optional bool goproto_enum_stringer_all = 63021; -+ optional bool enum_stringer_all = 63022; -+ -+ optional bool unsafe_marshaler_all = 63023; -+ optional bool unsafe_unmarshaler_all = 63024; -+ -+ optional bool goproto_extensions_map_all = 63025; -+ optional bool goproto_unrecognized_all = 63026; -+ optional bool gogoproto_import = 63027; -+ optional bool protosizer_all = 63028; -+ optional bool compare_all = 63029; -+ optional bool typedecl_all = 63030; -+ optional bool enumdecl_all = 63031; -+ -+ optional bool goproto_registration = 63032; -+ optional bool messagename_all = 63033; -+ -+ optional bool goproto_sizecache_all = 63034; -+ optional bool goproto_unkeyed_all = 63035; -+} -+ -+extend google.protobuf.MessageOptions { -+ optional bool goproto_getters = 64001; -+ optional bool goproto_stringer = 64003; -+ optional bool verbose_equal = 64004; -+ optional bool face = 64005; -+ optional bool gostring = 64006; -+ optional bool populate = 64007; -+ optional bool stringer = 67008; -+ optional bool onlyone = 64009; -+ -+ optional bool equal = 64013; -+ optional bool description = 64014; -+ optional bool testgen = 64015; -+ optional bool benchgen = 64016; -+ optional bool marshaler = 64017; -+ optional bool unmarshaler = 64018; -+ optional bool stable_marshaler = 64019; -+ -+ optional bool sizer = 64020; -+ -+ optional bool unsafe_marshaler = 64023; -+ optional bool unsafe_unmarshaler = 64024; -+ -+ optional bool goproto_extensions_map = 64025; -+ optional bool goproto_unrecognized = 64026; -+ -+ optional bool protosizer = 64028; -+ optional bool compare = 64029; -+ -+ optional bool typedecl = 64030; -+ -+ optional bool messagename = 64033; -+ -+ optional bool goproto_sizecache = 64034; -+ optional bool goproto_unkeyed = 64035; -+} -+ -+extend google.protobuf.FieldOptions { -+ optional bool nullable = 65001; -+ optional bool embed = 65002; -+ optional string customtype = 65003; -+ optional string customname = 65004; -+ optional string jsontag = 65005; -+ optional string moretags = 65006; -+ optional string casttype = 65007; -+ optional string castkey = 65008; -+ optional string castvalue = 65009; -+ -+ optional bool stdtime = 65010; -+ optional bool stdduration = 65011; -+ optional bool wktpointer = 65012; -+ -+} -diff --git a/vendor/github.com/gogo/protobuf/gogoproto/helper.go b/vendor/github.com/gogo/protobuf/gogoproto/helper.go -new file mode 100755 -index 0000000..390d4e4 ---- /dev/null -+++ b/vendor/github.com/gogo/protobuf/gogoproto/helper.go -@@ -0,0 +1,415 @@ -+// Protocol Buffers for Go with Gadgets -+// -+// Copyright (c) 2013, The GoGo Authors. All rights reserved. -+// http://github.com/gogo/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. -+// -+// 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 gogoproto -+ -+import google_protobuf "github.com/gogo/protobuf/protoc-gen-gogo/descriptor" -+import proto "github.com/gogo/protobuf/proto" -+ -+func IsEmbed(field *google_protobuf.FieldDescriptorProto) bool { -+ return proto.GetBoolExtension(field.Options, E_Embed, false) -+} -+ -+func IsNullable(field *google_protobuf.FieldDescriptorProto) bool { -+ return proto.GetBoolExtension(field.Options, E_Nullable, true) -+} -+ -+func IsStdTime(field *google_protobuf.FieldDescriptorProto) bool { -+ return proto.GetBoolExtension(field.Options, E_Stdtime, false) -+} -+ -+func IsStdDuration(field *google_protobuf.FieldDescriptorProto) bool { -+ return proto.GetBoolExtension(field.Options, E_Stdduration, false) -+} -+ -+func IsStdDouble(field *google_protobuf.FieldDescriptorProto) bool { -+ return proto.GetBoolExtension(field.Options, E_Wktpointer, false) && *field.TypeName == ".google.protobuf.DoubleValue" -+} -+ -+func IsStdFloat(field *google_protobuf.FieldDescriptorProto) bool { -+ return proto.GetBoolExtension(field.Options, E_Wktpointer, false) && *field.TypeName == ".google.protobuf.FloatValue" -+} -+ -+func IsStdInt64(field *google_protobuf.FieldDescriptorProto) bool { -+ return proto.GetBoolExtension(field.Options, E_Wktpointer, false) && *field.TypeName == ".google.protobuf.Int64Value" -+} -+ -+func IsStdUInt64(field *google_protobuf.FieldDescriptorProto) bool { -+ return proto.GetBoolExtension(field.Options, E_Wktpointer, false) && *field.TypeName == ".google.protobuf.UInt64Value" -+} -+ -+func IsStdInt32(field *google_protobuf.FieldDescriptorProto) bool { -+ return proto.GetBoolExtension(field.Options, E_Wktpointer, false) && *field.TypeName == ".google.protobuf.Int32Value" -+} -+ -+func IsStdUInt32(field *google_protobuf.FieldDescriptorProto) bool { -+ return proto.GetBoolExtension(field.Options, E_Wktpointer, false) && *field.TypeName == ".google.protobuf.UInt32Value" -+} -+ -+func IsStdBool(field *google_protobuf.FieldDescriptorProto) bool { -+ return proto.GetBoolExtension(field.Options, E_Wktpointer, false) && *field.TypeName == ".google.protobuf.BoolValue" -+} -+ -+func IsStdString(field *google_protobuf.FieldDescriptorProto) bool { -+ return proto.GetBoolExtension(field.Options, E_Wktpointer, false) && *field.TypeName == ".google.protobuf.StringValue" -+} -+ -+func IsStdBytes(field *google_protobuf.FieldDescriptorProto) bool { -+ return proto.GetBoolExtension(field.Options, E_Wktpointer, false) && *field.TypeName == ".google.protobuf.BytesValue" -+} -+ -+func IsStdType(field *google_protobuf.FieldDescriptorProto) bool { -+ return (IsStdTime(field) || IsStdDuration(field) || -+ IsStdDouble(field) || IsStdFloat(field) || -+ IsStdInt64(field) || IsStdUInt64(field) || -+ IsStdInt32(field) || IsStdUInt32(field) || -+ IsStdBool(field) || -+ IsStdString(field) || IsStdBytes(field)) -+} -+ -+func IsWktPtr(field *google_protobuf.FieldDescriptorProto) bool { -+ return proto.GetBoolExtension(field.Options, E_Wktpointer, false) -+} -+ -+func NeedsNilCheck(proto3 bool, field *google_protobuf.FieldDescriptorProto) bool { -+ nullable := IsNullable(field) -+ if field.IsMessage() || IsCustomType(field) { -+ return nullable -+ } -+ if proto3 { -+ return false -+ } -+ return nullable || *field.Type == google_protobuf.FieldDescriptorProto_TYPE_BYTES -+} -+ -+func IsCustomType(field *google_protobuf.FieldDescriptorProto) bool { -+ typ := GetCustomType(field) -+ if len(typ) > 0 { -+ return true -+ } -+ return false -+} -+ -+func IsCastType(field *google_protobuf.FieldDescriptorProto) bool { -+ typ := GetCastType(field) -+ if len(typ) > 0 { -+ return true -+ } -+ return false -+} -+ -+func IsCastKey(field *google_protobuf.FieldDescriptorProto) bool { -+ typ := GetCastKey(field) -+ if len(typ) > 0 { -+ return true -+ } -+ return false -+} -+ -+func IsCastValue(field *google_protobuf.FieldDescriptorProto) bool { -+ typ := GetCastValue(field) -+ if len(typ) > 0 { -+ return true -+ } -+ return false -+} -+ -+func HasEnumDecl(file *google_protobuf.FileDescriptorProto, enum *google_protobuf.EnumDescriptorProto) bool { -+ return proto.GetBoolExtension(enum.Options, E_Enumdecl, proto.GetBoolExtension(file.Options, E_EnumdeclAll, true)) -+} -+ -+func HasTypeDecl(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool { -+ return proto.GetBoolExtension(message.Options, E_Typedecl, proto.GetBoolExtension(file.Options, E_TypedeclAll, true)) -+} -+ -+func GetCustomType(field *google_protobuf.FieldDescriptorProto) string { -+ if field == nil { -+ return "" -+ } -+ if field.Options != nil { -+ v, err := proto.GetExtension(field.Options, E_Customtype) -+ if err == nil && v.(*string) != nil { -+ return *(v.(*string)) -+ } -+ } -+ return "" -+} -+ -+func GetCastType(field *google_protobuf.FieldDescriptorProto) string { -+ if field == nil { -+ return "" -+ } -+ if field.Options != nil { -+ v, err := proto.GetExtension(field.Options, E_Casttype) -+ if err == nil && v.(*string) != nil { -+ return *(v.(*string)) -+ } -+ } -+ return "" -+} -+ -+func GetCastKey(field *google_protobuf.FieldDescriptorProto) string { -+ if field == nil { -+ return "" -+ } -+ if field.Options != nil { -+ v, err := proto.GetExtension(field.Options, E_Castkey) -+ if err == nil && v.(*string) != nil { -+ return *(v.(*string)) -+ } -+ } -+ return "" -+} -+ -+func GetCastValue(field *google_protobuf.FieldDescriptorProto) string { -+ if field == nil { -+ return "" -+ } -+ if field.Options != nil { -+ v, err := proto.GetExtension(field.Options, E_Castvalue) -+ if err == nil && v.(*string) != nil { -+ return *(v.(*string)) -+ } -+ } -+ return "" -+} -+ -+func IsCustomName(field *google_protobuf.FieldDescriptorProto) bool { -+ name := GetCustomName(field) -+ if len(name) > 0 { -+ return true -+ } -+ return false -+} -+ -+func IsEnumCustomName(field *google_protobuf.EnumDescriptorProto) bool { -+ name := GetEnumCustomName(field) -+ if len(name) > 0 { -+ return true -+ } -+ return false -+} -+ -+func IsEnumValueCustomName(field *google_protobuf.EnumValueDescriptorProto) bool { -+ name := GetEnumValueCustomName(field) -+ if len(name) > 0 { -+ return true -+ } -+ return false -+} -+ -+func GetCustomName(field *google_protobuf.FieldDescriptorProto) string { -+ if field == nil { -+ return "" -+ } -+ if field.Options != nil { -+ v, err := proto.GetExtension(field.Options, E_Customname) -+ if err == nil && v.(*string) != nil { -+ return *(v.(*string)) -+ } -+ } -+ return "" -+} -+ -+func GetEnumCustomName(field *google_protobuf.EnumDescriptorProto) string { -+ if field == nil { -+ return "" -+ } -+ if field.Options != nil { -+ v, err := proto.GetExtension(field.Options, E_EnumCustomname) -+ if err == nil && v.(*string) != nil { -+ return *(v.(*string)) -+ } -+ } -+ return "" -+} -+ -+func GetEnumValueCustomName(field *google_protobuf.EnumValueDescriptorProto) string { -+ if field == nil { -+ return "" -+ } -+ if field.Options != nil { -+ v, err := proto.GetExtension(field.Options, E_EnumvalueCustomname) -+ if err == nil && v.(*string) != nil { -+ return *(v.(*string)) -+ } -+ } -+ return "" -+} -+ -+func GetJsonTag(field *google_protobuf.FieldDescriptorProto) *string { -+ if field == nil { -+ return nil -+ } -+ if field.Options != nil { -+ v, err := proto.GetExtension(field.Options, E_Jsontag) -+ if err == nil && v.(*string) != nil { -+ return (v.(*string)) -+ } -+ } -+ return nil -+} -+ -+func GetMoreTags(field *google_protobuf.FieldDescriptorProto) *string { -+ if field == nil { -+ return nil -+ } -+ if field.Options != nil { -+ v, err := proto.GetExtension(field.Options, E_Moretags) -+ if err == nil && v.(*string) != nil { -+ return (v.(*string)) -+ } -+ } -+ return nil -+} -+ -+type EnableFunc func(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool -+ -+func EnabledGoEnumPrefix(file *google_protobuf.FileDescriptorProto, enum *google_protobuf.EnumDescriptorProto) bool { -+ return proto.GetBoolExtension(enum.Options, E_GoprotoEnumPrefix, proto.GetBoolExtension(file.Options, E_GoprotoEnumPrefixAll, true)) -+} -+ -+func EnabledGoStringer(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool { -+ return proto.GetBoolExtension(message.Options, E_GoprotoStringer, proto.GetBoolExtension(file.Options, E_GoprotoStringerAll, true)) -+} -+ -+func HasGoGetters(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool { -+ return proto.GetBoolExtension(message.Options, E_GoprotoGetters, proto.GetBoolExtension(file.Options, E_GoprotoGettersAll, true)) -+} -+ -+func IsUnion(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool { -+ return proto.GetBoolExtension(message.Options, E_Onlyone, proto.GetBoolExtension(file.Options, E_OnlyoneAll, false)) -+} -+ -+func HasGoString(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool { -+ return proto.GetBoolExtension(message.Options, E_Gostring, proto.GetBoolExtension(file.Options, E_GostringAll, false)) -+} -+ -+func HasEqual(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool { -+ return proto.GetBoolExtension(message.Options, E_Equal, proto.GetBoolExtension(file.Options, E_EqualAll, false)) -+} -+ -+func HasVerboseEqual(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool { -+ return proto.GetBoolExtension(message.Options, E_VerboseEqual, proto.GetBoolExtension(file.Options, E_VerboseEqualAll, false)) -+} -+ -+func IsStringer(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool { -+ return proto.GetBoolExtension(message.Options, E_Stringer, proto.GetBoolExtension(file.Options, E_StringerAll, false)) -+} -+ -+func IsFace(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool { -+ return proto.GetBoolExtension(message.Options, E_Face, proto.GetBoolExtension(file.Options, E_FaceAll, false)) -+} -+ -+func HasDescription(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool { -+ return proto.GetBoolExtension(message.Options, E_Description, proto.GetBoolExtension(file.Options, E_DescriptionAll, false)) -+} -+ -+func HasPopulate(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool { -+ return proto.GetBoolExtension(message.Options, E_Populate, proto.GetBoolExtension(file.Options, E_PopulateAll, false)) -+} -+ -+func HasTestGen(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool { -+ return proto.GetBoolExtension(message.Options, E_Testgen, proto.GetBoolExtension(file.Options, E_TestgenAll, false)) -+} -+ -+func HasBenchGen(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool { -+ return proto.GetBoolExtension(message.Options, E_Benchgen, proto.GetBoolExtension(file.Options, E_BenchgenAll, false)) -+} -+ -+func IsMarshaler(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool { -+ return proto.GetBoolExtension(message.Options, E_Marshaler, proto.GetBoolExtension(file.Options, E_MarshalerAll, false)) -+} -+ -+func IsUnmarshaler(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool { -+ return proto.GetBoolExtension(message.Options, E_Unmarshaler, proto.GetBoolExtension(file.Options, E_UnmarshalerAll, false)) -+} -+ -+func IsStableMarshaler(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool { -+ return proto.GetBoolExtension(message.Options, E_StableMarshaler, proto.GetBoolExtension(file.Options, E_StableMarshalerAll, false)) -+} -+ -+func IsSizer(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool { -+ return proto.GetBoolExtension(message.Options, E_Sizer, proto.GetBoolExtension(file.Options, E_SizerAll, false)) -+} -+ -+func IsProtoSizer(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool { -+ return proto.GetBoolExtension(message.Options, E_Protosizer, proto.GetBoolExtension(file.Options, E_ProtosizerAll, false)) -+} -+ -+func IsGoEnumStringer(file *google_protobuf.FileDescriptorProto, enum *google_protobuf.EnumDescriptorProto) bool { -+ return proto.GetBoolExtension(enum.Options, E_GoprotoEnumStringer, proto.GetBoolExtension(file.Options, E_GoprotoEnumStringerAll, true)) -+} -+ -+func IsEnumStringer(file *google_protobuf.FileDescriptorProto, enum *google_protobuf.EnumDescriptorProto) bool { -+ return proto.GetBoolExtension(enum.Options, E_EnumStringer, proto.GetBoolExtension(file.Options, E_EnumStringerAll, false)) -+} -+ -+func IsUnsafeMarshaler(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool { -+ return proto.GetBoolExtension(message.Options, E_UnsafeMarshaler, proto.GetBoolExtension(file.Options, E_UnsafeMarshalerAll, false)) -+} -+ -+func IsUnsafeUnmarshaler(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool { -+ return proto.GetBoolExtension(message.Options, E_UnsafeUnmarshaler, proto.GetBoolExtension(file.Options, E_UnsafeUnmarshalerAll, false)) -+} -+ -+func HasExtensionsMap(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool { -+ return proto.GetBoolExtension(message.Options, E_GoprotoExtensionsMap, proto.GetBoolExtension(file.Options, E_GoprotoExtensionsMapAll, true)) -+} -+ -+func HasUnrecognized(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool { -+ return proto.GetBoolExtension(message.Options, E_GoprotoUnrecognized, proto.GetBoolExtension(file.Options, E_GoprotoUnrecognizedAll, true)) -+} -+ -+func IsProto3(file *google_protobuf.FileDescriptorProto) bool { -+ return file.GetSyntax() == "proto3" -+} -+ -+func ImportsGoGoProto(file *google_protobuf.FileDescriptorProto) bool { -+ return proto.GetBoolExtension(file.Options, E_GogoprotoImport, true) -+} -+ -+func HasCompare(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool { -+ return proto.GetBoolExtension(message.Options, E_Compare, proto.GetBoolExtension(file.Options, E_CompareAll, false)) -+} -+ -+func RegistersGolangProto(file *google_protobuf.FileDescriptorProto) bool { -+ return proto.GetBoolExtension(file.Options, E_GoprotoRegistration, false) -+} -+ -+func HasMessageName(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool { -+ return proto.GetBoolExtension(message.Options, E_Messagename, proto.GetBoolExtension(file.Options, E_MessagenameAll, false)) -+} -+ -+func HasSizecache(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool { -+ return proto.GetBoolExtension(message.Options, E_GoprotoSizecache, proto.GetBoolExtension(file.Options, E_GoprotoSizecacheAll, true)) -+} -+ -+func HasUnkeyed(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool { -+ return proto.GetBoolExtension(message.Options, E_GoprotoUnkeyed, proto.GetBoolExtension(file.Options, E_GoprotoUnkeyedAll, true)) -+} -diff --git a/vendor/github.com/gogo/protobuf/proto/Makefile b/vendor/github.com/gogo/protobuf/proto/Makefile -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/gogo/protobuf/proto/clone.go b/vendor/github.com/gogo/protobuf/proto/clone.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/gogo/protobuf/proto/custom_gogo.go b/vendor/github.com/gogo/protobuf/proto/custom_gogo.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/gogo/protobuf/proto/decode.go b/vendor/github.com/gogo/protobuf/proto/decode.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/gogo/protobuf/proto/deprecated.go b/vendor/github.com/gogo/protobuf/proto/deprecated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/gogo/protobuf/proto/discard.go b/vendor/github.com/gogo/protobuf/proto/discard.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/gogo/protobuf/proto/duration.go b/vendor/github.com/gogo/protobuf/proto/duration.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/gogo/protobuf/proto/duration_gogo.go b/vendor/github.com/gogo/protobuf/proto/duration_gogo.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/gogo/protobuf/proto/encode.go b/vendor/github.com/gogo/protobuf/proto/encode.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/gogo/protobuf/proto/encode_gogo.go b/vendor/github.com/gogo/protobuf/proto/encode_gogo.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/gogo/protobuf/proto/equal.go b/vendor/github.com/gogo/protobuf/proto/equal.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/gogo/protobuf/proto/extensions.go b/vendor/github.com/gogo/protobuf/proto/extensions.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/gogo/protobuf/proto/extensions_gogo.go b/vendor/github.com/gogo/protobuf/proto/extensions_gogo.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/gogo/protobuf/proto/lib.go b/vendor/github.com/gogo/protobuf/proto/lib.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/gogo/protobuf/proto/lib_gogo.go b/vendor/github.com/gogo/protobuf/proto/lib_gogo.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/gogo/protobuf/proto/message_set.go b/vendor/github.com/gogo/protobuf/proto/message_set.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/gogo/protobuf/proto/pointer_reflect.go b/vendor/github.com/gogo/protobuf/proto/pointer_reflect.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/gogo/protobuf/proto/pointer_reflect_gogo.go b/vendor/github.com/gogo/protobuf/proto/pointer_reflect_gogo.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/gogo/protobuf/proto/pointer_unsafe.go b/vendor/github.com/gogo/protobuf/proto/pointer_unsafe.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/gogo/protobuf/proto/pointer_unsafe_gogo.go b/vendor/github.com/gogo/protobuf/proto/pointer_unsafe_gogo.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/gogo/protobuf/proto/properties.go b/vendor/github.com/gogo/protobuf/proto/properties.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/gogo/protobuf/proto/properties_gogo.go b/vendor/github.com/gogo/protobuf/proto/properties_gogo.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/gogo/protobuf/proto/skip_gogo.go b/vendor/github.com/gogo/protobuf/proto/skip_gogo.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/gogo/protobuf/proto/table_marshal.go b/vendor/github.com/gogo/protobuf/proto/table_marshal.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/gogo/protobuf/proto/table_marshal_gogo.go b/vendor/github.com/gogo/protobuf/proto/table_marshal_gogo.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/gogo/protobuf/proto/table_merge.go b/vendor/github.com/gogo/protobuf/proto/table_merge.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/gogo/protobuf/proto/table_unmarshal.go b/vendor/github.com/gogo/protobuf/proto/table_unmarshal.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/gogo/protobuf/proto/table_unmarshal_gogo.go b/vendor/github.com/gogo/protobuf/proto/table_unmarshal_gogo.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/gogo/protobuf/proto/text.go b/vendor/github.com/gogo/protobuf/proto/text.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/gogo/protobuf/proto/text_gogo.go b/vendor/github.com/gogo/protobuf/proto/text_gogo.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/gogo/protobuf/proto/text_parser.go b/vendor/github.com/gogo/protobuf/proto/text_parser.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/gogo/protobuf/proto/timestamp.go b/vendor/github.com/gogo/protobuf/proto/timestamp.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/gogo/protobuf/proto/timestamp_gogo.go b/vendor/github.com/gogo/protobuf/proto/timestamp_gogo.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/gogo/protobuf/proto/wrappers.go b/vendor/github.com/gogo/protobuf/proto/wrappers.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/gogo/protobuf/proto/wrappers_gogo.go b/vendor/github.com/gogo/protobuf/proto/wrappers_gogo.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/Makefile b/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/Makefile -new file mode 100755 -index 0000000..3496dc9 ---- /dev/null -+++ b/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/Makefile -@@ -0,0 +1,36 @@ -+# 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. -+ -+regenerate: -+ go install github.com/gogo/protobuf/protoc-gen-gogo -+ go install github.com/gogo/protobuf/protoc-gen-gostring -+ protoc --gogo_out=. -I=../../protobuf/google/protobuf ../../protobuf/google/protobuf/descriptor.proto -+ protoc --gostring_out=. -I=../../protobuf/google/protobuf ../../protobuf/google/protobuf/descriptor.proto -diff --git a/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/descriptor.go b/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/descriptor.go -new file mode 100755 -index 0000000..a85bf19 ---- /dev/null -+++ b/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/descriptor.go -@@ -0,0 +1,118 @@ -+// 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/gogo/protobuf/proto" -+) -+ -+// extractFile extracts a FileDescriptorProto from a gzip'd buffer. -+func extractFile(gz []byte) (*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(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 *FileDescriptorProto, md *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 -+} -+ -+// Is this field a scalar numeric type? -+func (field *FieldDescriptorProto) IsScalar() bool { -+ if field.Type == nil { -+ return false -+ } -+ switch *field.Type { -+ case FieldDescriptorProto_TYPE_DOUBLE, -+ FieldDescriptorProto_TYPE_FLOAT, -+ FieldDescriptorProto_TYPE_INT64, -+ FieldDescriptorProto_TYPE_UINT64, -+ FieldDescriptorProto_TYPE_INT32, -+ FieldDescriptorProto_TYPE_FIXED64, -+ FieldDescriptorProto_TYPE_FIXED32, -+ FieldDescriptorProto_TYPE_BOOL, -+ FieldDescriptorProto_TYPE_UINT32, -+ FieldDescriptorProto_TYPE_ENUM, -+ FieldDescriptorProto_TYPE_SFIXED32, -+ FieldDescriptorProto_TYPE_SFIXED64, -+ FieldDescriptorProto_TYPE_SINT32, -+ FieldDescriptorProto_TYPE_SINT64: -+ return true -+ default: -+ return false -+ } -+} -diff --git a/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/descriptor.pb.go b/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/descriptor.pb.go -new file mode 100755 -index 0000000..18b2a33 ---- /dev/null -+++ b/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/descriptor.pb.go -@@ -0,0 +1,2865 @@ -+// Code generated by protoc-gen-gogo. DO NOT EDIT. -+// source: descriptor.proto -+ -+package descriptor -+ -+import ( -+ fmt "fmt" -+ proto "github.com/gogo/protobuf/proto" -+ 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.GoGoProtoPackageIsVersion3 // please upgrade the proto package -+ -+type FieldDescriptorProto_Type int32 -+ -+const ( -+ // 0 is reserved for errors. -+ // Order is weird for historical reasons. -+ FieldDescriptorProto_TYPE_DOUBLE FieldDescriptorProto_Type = 1 -+ FieldDescriptorProto_TYPE_FLOAT FieldDescriptorProto_Type = 2 -+ // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if -+ // negative values are likely. -+ FieldDescriptorProto_TYPE_INT64 FieldDescriptorProto_Type = 3 -+ FieldDescriptorProto_TYPE_UINT64 FieldDescriptorProto_Type = 4 -+ // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if -+ // negative values are likely. -+ FieldDescriptorProto_TYPE_INT32 FieldDescriptorProto_Type = 5 -+ FieldDescriptorProto_TYPE_FIXED64 FieldDescriptorProto_Type = 6 -+ FieldDescriptorProto_TYPE_FIXED32 FieldDescriptorProto_Type = 7 -+ FieldDescriptorProto_TYPE_BOOL FieldDescriptorProto_Type = 8 -+ FieldDescriptorProto_TYPE_STRING FieldDescriptorProto_Type = 9 -+ // Tag-delimited aggregate. -+ // Group type is deprecated and not supported in proto3. However, Proto3 -+ // implementations should still be able to parse the group wire format and -+ // treat group fields as unknown fields. -+ FieldDescriptorProto_TYPE_GROUP FieldDescriptorProto_Type = 10 -+ FieldDescriptorProto_TYPE_MESSAGE FieldDescriptorProto_Type = 11 -+ // New in version 2. -+ FieldDescriptorProto_TYPE_BYTES FieldDescriptorProto_Type = 12 -+ FieldDescriptorProto_TYPE_UINT32 FieldDescriptorProto_Type = 13 -+ FieldDescriptorProto_TYPE_ENUM FieldDescriptorProto_Type = 14 -+ FieldDescriptorProto_TYPE_SFIXED32 FieldDescriptorProto_Type = 15 -+ FieldDescriptorProto_TYPE_SFIXED64 FieldDescriptorProto_Type = 16 -+ FieldDescriptorProto_TYPE_SINT32 FieldDescriptorProto_Type = 17 -+ FieldDescriptorProto_TYPE_SINT64 FieldDescriptorProto_Type = 18 -+) -+ -+var FieldDescriptorProto_Type_name = map[int32]string{ -+ 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 FieldDescriptorProto_Type_value = map[string]int32{ -+ "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 FieldDescriptorProto_Type) Enum() *FieldDescriptorProto_Type { -+ p := new(FieldDescriptorProto_Type) -+ *p = x -+ return p -+} -+ -+func (x FieldDescriptorProto_Type) String() string { -+ return proto.EnumName(FieldDescriptorProto_Type_name, int32(x)) -+} -+ -+func (x *FieldDescriptorProto_Type) UnmarshalJSON(data []byte) error { -+ value, err := proto.UnmarshalJSONEnum(FieldDescriptorProto_Type_value, data, "FieldDescriptorProto_Type") -+ if err != nil { -+ return err -+ } -+ *x = FieldDescriptorProto_Type(value) -+ return nil -+} -+ -+func (FieldDescriptorProto_Type) EnumDescriptor() ([]byte, []int) { -+ return fileDescriptor_308767df5ffe18af, []int{4, 0} -+} -+ -+type FieldDescriptorProto_Label int32 -+ -+const ( -+ // 0 is reserved for errors -+ FieldDescriptorProto_LABEL_OPTIONAL FieldDescriptorProto_Label = 1 -+ FieldDescriptorProto_LABEL_REQUIRED FieldDescriptorProto_Label = 2 -+ FieldDescriptorProto_LABEL_REPEATED FieldDescriptorProto_Label = 3 -+) -+ -+var FieldDescriptorProto_Label_name = map[int32]string{ -+ 1: "LABEL_OPTIONAL", -+ 2: "LABEL_REQUIRED", -+ 3: "LABEL_REPEATED", -+} -+ -+var FieldDescriptorProto_Label_value = map[string]int32{ -+ "LABEL_OPTIONAL": 1, -+ "LABEL_REQUIRED": 2, -+ "LABEL_REPEATED": 3, -+} -+ -+func (x FieldDescriptorProto_Label) Enum() *FieldDescriptorProto_Label { -+ p := new(FieldDescriptorProto_Label) -+ *p = x -+ return p -+} -+ -+func (x FieldDescriptorProto_Label) String() string { -+ return proto.EnumName(FieldDescriptorProto_Label_name, int32(x)) -+} -+ -+func (x *FieldDescriptorProto_Label) UnmarshalJSON(data []byte) error { -+ value, err := proto.UnmarshalJSONEnum(FieldDescriptorProto_Label_value, data, "FieldDescriptorProto_Label") -+ if err != nil { -+ return err -+ } -+ *x = FieldDescriptorProto_Label(value) -+ return nil -+} -+ -+func (FieldDescriptorProto_Label) EnumDescriptor() ([]byte, []int) { -+ return fileDescriptor_308767df5ffe18af, []int{4, 1} -+} -+ -+// Generated classes can be optimized for speed or code size. -+type FileOptions_OptimizeMode int32 -+ -+const ( -+ FileOptions_SPEED FileOptions_OptimizeMode = 1 -+ // etc. -+ FileOptions_CODE_SIZE FileOptions_OptimizeMode = 2 -+ FileOptions_LITE_RUNTIME FileOptions_OptimizeMode = 3 -+) -+ -+var FileOptions_OptimizeMode_name = map[int32]string{ -+ 1: "SPEED", -+ 2: "CODE_SIZE", -+ 3: "LITE_RUNTIME", -+} -+ -+var FileOptions_OptimizeMode_value = map[string]int32{ -+ "SPEED": 1, -+ "CODE_SIZE": 2, -+ "LITE_RUNTIME": 3, -+} -+ -+func (x FileOptions_OptimizeMode) Enum() *FileOptions_OptimizeMode { -+ p := new(FileOptions_OptimizeMode) -+ *p = x -+ return p -+} -+ -+func (x FileOptions_OptimizeMode) String() string { -+ return proto.EnumName(FileOptions_OptimizeMode_name, int32(x)) -+} -+ -+func (x *FileOptions_OptimizeMode) UnmarshalJSON(data []byte) error { -+ value, err := proto.UnmarshalJSONEnum(FileOptions_OptimizeMode_value, data, "FileOptions_OptimizeMode") -+ if err != nil { -+ return err -+ } -+ *x = FileOptions_OptimizeMode(value) -+ return nil -+} -+ -+func (FileOptions_OptimizeMode) EnumDescriptor() ([]byte, []int) { -+ return fileDescriptor_308767df5ffe18af, []int{10, 0} -+} -+ -+type FieldOptions_CType int32 -+ -+const ( -+ // Default mode. -+ FieldOptions_STRING FieldOptions_CType = 0 -+ FieldOptions_CORD FieldOptions_CType = 1 -+ FieldOptions_STRING_PIECE FieldOptions_CType = 2 -+) -+ -+var FieldOptions_CType_name = map[int32]string{ -+ 0: "STRING", -+ 1: "CORD", -+ 2: "STRING_PIECE", -+} -+ -+var FieldOptions_CType_value = map[string]int32{ -+ "STRING": 0, -+ "CORD": 1, -+ "STRING_PIECE": 2, -+} -+ -+func (x FieldOptions_CType) Enum() *FieldOptions_CType { -+ p := new(FieldOptions_CType) -+ *p = x -+ return p -+} -+ -+func (x FieldOptions_CType) String() string { -+ return proto.EnumName(FieldOptions_CType_name, int32(x)) -+} -+ -+func (x *FieldOptions_CType) UnmarshalJSON(data []byte) error { -+ value, err := proto.UnmarshalJSONEnum(FieldOptions_CType_value, data, "FieldOptions_CType") -+ if err != nil { -+ return err -+ } -+ *x = FieldOptions_CType(value) -+ return nil -+} -+ -+func (FieldOptions_CType) EnumDescriptor() ([]byte, []int) { -+ return fileDescriptor_308767df5ffe18af, []int{12, 0} -+} -+ -+type FieldOptions_JSType int32 -+ -+const ( -+ // Use the default type. -+ FieldOptions_JS_NORMAL FieldOptions_JSType = 0 -+ // Use JavaScript strings. -+ FieldOptions_JS_STRING FieldOptions_JSType = 1 -+ // Use JavaScript numbers. -+ FieldOptions_JS_NUMBER FieldOptions_JSType = 2 -+) -+ -+var FieldOptions_JSType_name = map[int32]string{ -+ 0: "JS_NORMAL", -+ 1: "JS_STRING", -+ 2: "JS_NUMBER", -+} -+ -+var FieldOptions_JSType_value = map[string]int32{ -+ "JS_NORMAL": 0, -+ "JS_STRING": 1, -+ "JS_NUMBER": 2, -+} -+ -+func (x FieldOptions_JSType) Enum() *FieldOptions_JSType { -+ p := new(FieldOptions_JSType) -+ *p = x -+ return p -+} -+ -+func (x FieldOptions_JSType) String() string { -+ return proto.EnumName(FieldOptions_JSType_name, int32(x)) -+} -+ -+func (x *FieldOptions_JSType) UnmarshalJSON(data []byte) error { -+ value, err := proto.UnmarshalJSONEnum(FieldOptions_JSType_value, data, "FieldOptions_JSType") -+ if err != nil { -+ return err -+ } -+ *x = FieldOptions_JSType(value) -+ return nil -+} -+ -+func (FieldOptions_JSType) EnumDescriptor() ([]byte, []int) { -+ return fileDescriptor_308767df5ffe18af, []int{12, 1} -+} -+ -+// Is this method side-effect-free (or safe in HTTP parlance), or idempotent, -+// or neither? HTTP based RPC implementation may choose GET verb for safe -+// methods, and PUT verb for idempotent methods instead of the default POST. -+type MethodOptions_IdempotencyLevel int32 -+ -+const ( -+ MethodOptions_IDEMPOTENCY_UNKNOWN MethodOptions_IdempotencyLevel = 0 -+ MethodOptions_NO_SIDE_EFFECTS MethodOptions_IdempotencyLevel = 1 -+ MethodOptions_IDEMPOTENT MethodOptions_IdempotencyLevel = 2 -+) -+ -+var MethodOptions_IdempotencyLevel_name = map[int32]string{ -+ 0: "IDEMPOTENCY_UNKNOWN", -+ 1: "NO_SIDE_EFFECTS", -+ 2: "IDEMPOTENT", -+} -+ -+var MethodOptions_IdempotencyLevel_value = map[string]int32{ -+ "IDEMPOTENCY_UNKNOWN": 0, -+ "NO_SIDE_EFFECTS": 1, -+ "IDEMPOTENT": 2, -+} -+ -+func (x MethodOptions_IdempotencyLevel) Enum() *MethodOptions_IdempotencyLevel { -+ p := new(MethodOptions_IdempotencyLevel) -+ *p = x -+ return p -+} -+ -+func (x MethodOptions_IdempotencyLevel) String() string { -+ return proto.EnumName(MethodOptions_IdempotencyLevel_name, int32(x)) -+} -+ -+func (x *MethodOptions_IdempotencyLevel) UnmarshalJSON(data []byte) error { -+ value, err := proto.UnmarshalJSONEnum(MethodOptions_IdempotencyLevel_value, data, "MethodOptions_IdempotencyLevel") -+ if err != nil { -+ return err -+ } -+ *x = MethodOptions_IdempotencyLevel(value) -+ return nil -+} -+ -+func (MethodOptions_IdempotencyLevel) EnumDescriptor() ([]byte, []int) { -+ return fileDescriptor_308767df5ffe18af, []int{17, 0} -+} -+ -+// The protocol compiler can output a FileDescriptorSet containing the .proto -+// files it parses. -+type FileDescriptorSet struct { -+ File []*FileDescriptorProto `protobuf:"bytes,1,rep,name=file" json:"file,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_unrecognized []byte `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *FileDescriptorSet) Reset() { *m = FileDescriptorSet{} } -+func (m *FileDescriptorSet) String() string { return proto.CompactTextString(m) } -+func (*FileDescriptorSet) ProtoMessage() {} -+func (*FileDescriptorSet) Descriptor() ([]byte, []int) { -+ return fileDescriptor_308767df5ffe18af, []int{0} -+} -+func (m *FileDescriptorSet) XXX_Unmarshal(b []byte) error { -+ return xxx_messageInfo_FileDescriptorSet.Unmarshal(m, b) -+} -+func (m *FileDescriptorSet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ return xxx_messageInfo_FileDescriptorSet.Marshal(b, m, deterministic) -+} -+func (m *FileDescriptorSet) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_FileDescriptorSet.Merge(m, src) -+} -+func (m *FileDescriptorSet) XXX_Size() int { -+ return xxx_messageInfo_FileDescriptorSet.Size(m) -+} -+func (m *FileDescriptorSet) XXX_DiscardUnknown() { -+ xxx_messageInfo_FileDescriptorSet.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_FileDescriptorSet proto.InternalMessageInfo -+ -+func (m *FileDescriptorSet) GetFile() []*FileDescriptorProto { -+ if m != nil { -+ return m.File -+ } -+ return nil -+} -+ -+// Describes a complete .proto file. -+type FileDescriptorProto struct { -+ Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -+ Package *string `protobuf:"bytes,2,opt,name=package" json:"package,omitempty"` -+ // Names of files imported by this file. -+ Dependency []string `protobuf:"bytes,3,rep,name=dependency" json:"dependency,omitempty"` -+ // Indexes of the public imported files in the dependency list above. -+ PublicDependency []int32 `protobuf:"varint,10,rep,name=public_dependency,json=publicDependency" json:"public_dependency,omitempty"` -+ // Indexes of the weak imported files in the dependency list. -+ // For Google-internal migration only. Do not use. -+ WeakDependency []int32 `protobuf:"varint,11,rep,name=weak_dependency,json=weakDependency" json:"weak_dependency,omitempty"` -+ // All top-level definitions in this file. -+ MessageType []*DescriptorProto `protobuf:"bytes,4,rep,name=message_type,json=messageType" json:"message_type,omitempty"` -+ EnumType []*EnumDescriptorProto `protobuf:"bytes,5,rep,name=enum_type,json=enumType" json:"enum_type,omitempty"` -+ Service []*ServiceDescriptorProto `protobuf:"bytes,6,rep,name=service" json:"service,omitempty"` -+ Extension []*FieldDescriptorProto `protobuf:"bytes,7,rep,name=extension" json:"extension,omitempty"` -+ Options *FileOptions `protobuf:"bytes,8,opt,name=options" json:"options,omitempty"` -+ // This field contains optional information about the original source code. -+ // You may safely remove this entire field without harming runtime -+ // functionality of the descriptors -- the information is needed only by -+ // development tools. -+ SourceCodeInfo *SourceCodeInfo `protobuf:"bytes,9,opt,name=source_code_info,json=sourceCodeInfo" json:"source_code_info,omitempty"` -+ // The syntax of the proto file. -+ // The supported values are "proto2" and "proto3". -+ Syntax *string `protobuf:"bytes,12,opt,name=syntax" json:"syntax,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_unrecognized []byte `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *FileDescriptorProto) Reset() { *m = FileDescriptorProto{} } -+func (m *FileDescriptorProto) String() string { return proto.CompactTextString(m) } -+func (*FileDescriptorProto) ProtoMessage() {} -+func (*FileDescriptorProto) Descriptor() ([]byte, []int) { -+ return fileDescriptor_308767df5ffe18af, []int{1} -+} -+func (m *FileDescriptorProto) XXX_Unmarshal(b []byte) error { -+ return xxx_messageInfo_FileDescriptorProto.Unmarshal(m, b) -+} -+func (m *FileDescriptorProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ return xxx_messageInfo_FileDescriptorProto.Marshal(b, m, deterministic) -+} -+func (m *FileDescriptorProto) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_FileDescriptorProto.Merge(m, src) -+} -+func (m *FileDescriptorProto) XXX_Size() int { -+ return xxx_messageInfo_FileDescriptorProto.Size(m) -+} -+func (m *FileDescriptorProto) XXX_DiscardUnknown() { -+ xxx_messageInfo_FileDescriptorProto.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_FileDescriptorProto proto.InternalMessageInfo -+ -+func (m *FileDescriptorProto) GetName() string { -+ if m != nil && m.Name != nil { -+ return *m.Name -+ } -+ return "" -+} -+ -+func (m *FileDescriptorProto) GetPackage() string { -+ if m != nil && m.Package != nil { -+ return *m.Package -+ } -+ return "" -+} -+ -+func (m *FileDescriptorProto) GetDependency() []string { -+ if m != nil { -+ return m.Dependency -+ } -+ return nil -+} -+ -+func (m *FileDescriptorProto) GetPublicDependency() []int32 { -+ if m != nil { -+ return m.PublicDependency -+ } -+ return nil -+} -+ -+func (m *FileDescriptorProto) GetWeakDependency() []int32 { -+ if m != nil { -+ return m.WeakDependency -+ } -+ return nil -+} -+ -+func (m *FileDescriptorProto) GetMessageType() []*DescriptorProto { -+ if m != nil { -+ return m.MessageType -+ } -+ return nil -+} -+ -+func (m *FileDescriptorProto) GetEnumType() []*EnumDescriptorProto { -+ if m != nil { -+ return m.EnumType -+ } -+ return nil -+} -+ -+func (m *FileDescriptorProto) GetService() []*ServiceDescriptorProto { -+ if m != nil { -+ return m.Service -+ } -+ return nil -+} -+ -+func (m *FileDescriptorProto) GetExtension() []*FieldDescriptorProto { -+ if m != nil { -+ return m.Extension -+ } -+ return nil -+} -+ -+func (m *FileDescriptorProto) GetOptions() *FileOptions { -+ if m != nil { -+ return m.Options -+ } -+ return nil -+} -+ -+func (m *FileDescriptorProto) GetSourceCodeInfo() *SourceCodeInfo { -+ if m != nil { -+ return m.SourceCodeInfo -+ } -+ return nil -+} -+ -+func (m *FileDescriptorProto) GetSyntax() string { -+ if m != nil && m.Syntax != nil { -+ return *m.Syntax -+ } -+ return "" -+} -+ -+// Describes a message type. -+type DescriptorProto struct { -+ Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -+ Field []*FieldDescriptorProto `protobuf:"bytes,2,rep,name=field" json:"field,omitempty"` -+ Extension []*FieldDescriptorProto `protobuf:"bytes,6,rep,name=extension" json:"extension,omitempty"` -+ NestedType []*DescriptorProto `protobuf:"bytes,3,rep,name=nested_type,json=nestedType" json:"nested_type,omitempty"` -+ EnumType []*EnumDescriptorProto `protobuf:"bytes,4,rep,name=enum_type,json=enumType" json:"enum_type,omitempty"` -+ ExtensionRange []*DescriptorProto_ExtensionRange `protobuf:"bytes,5,rep,name=extension_range,json=extensionRange" json:"extension_range,omitempty"` -+ OneofDecl []*OneofDescriptorProto `protobuf:"bytes,8,rep,name=oneof_decl,json=oneofDecl" json:"oneof_decl,omitempty"` -+ Options *MessageOptions `protobuf:"bytes,7,opt,name=options" json:"options,omitempty"` -+ ReservedRange []*DescriptorProto_ReservedRange `protobuf:"bytes,9,rep,name=reserved_range,json=reservedRange" json:"reserved_range,omitempty"` -+ // Reserved field names, which may not be used by fields in the same message. -+ // A given name may only be reserved once. -+ ReservedName []string `protobuf:"bytes,10,rep,name=reserved_name,json=reservedName" json:"reserved_name,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_unrecognized []byte `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *DescriptorProto) Reset() { *m = DescriptorProto{} } -+func (m *DescriptorProto) String() string { return proto.CompactTextString(m) } -+func (*DescriptorProto) ProtoMessage() {} -+func (*DescriptorProto) Descriptor() ([]byte, []int) { -+ return fileDescriptor_308767df5ffe18af, []int{2} -+} -+func (m *DescriptorProto) XXX_Unmarshal(b []byte) error { -+ return xxx_messageInfo_DescriptorProto.Unmarshal(m, b) -+} -+func (m *DescriptorProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ return xxx_messageInfo_DescriptorProto.Marshal(b, m, deterministic) -+} -+func (m *DescriptorProto) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_DescriptorProto.Merge(m, src) -+} -+func (m *DescriptorProto) XXX_Size() int { -+ return xxx_messageInfo_DescriptorProto.Size(m) -+} -+func (m *DescriptorProto) XXX_DiscardUnknown() { -+ xxx_messageInfo_DescriptorProto.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_DescriptorProto proto.InternalMessageInfo -+ -+func (m *DescriptorProto) GetName() string { -+ if m != nil && m.Name != nil { -+ return *m.Name -+ } -+ return "" -+} -+ -+func (m *DescriptorProto) GetField() []*FieldDescriptorProto { -+ if m != nil { -+ return m.Field -+ } -+ return nil -+} -+ -+func (m *DescriptorProto) GetExtension() []*FieldDescriptorProto { -+ if m != nil { -+ return m.Extension -+ } -+ return nil -+} -+ -+func (m *DescriptorProto) GetNestedType() []*DescriptorProto { -+ if m != nil { -+ return m.NestedType -+ } -+ return nil -+} -+ -+func (m *DescriptorProto) GetEnumType() []*EnumDescriptorProto { -+ if m != nil { -+ return m.EnumType -+ } -+ return nil -+} -+ -+func (m *DescriptorProto) GetExtensionRange() []*DescriptorProto_ExtensionRange { -+ if m != nil { -+ return m.ExtensionRange -+ } -+ return nil -+} -+ -+func (m *DescriptorProto) GetOneofDecl() []*OneofDescriptorProto { -+ if m != nil { -+ return m.OneofDecl -+ } -+ return nil -+} -+ -+func (m *DescriptorProto) GetOptions() *MessageOptions { -+ if m != nil { -+ return m.Options -+ } -+ return nil -+} -+ -+func (m *DescriptorProto) GetReservedRange() []*DescriptorProto_ReservedRange { -+ if m != nil { -+ return m.ReservedRange -+ } -+ return nil -+} -+ -+func (m *DescriptorProto) GetReservedName() []string { -+ if m != nil { -+ return m.ReservedName -+ } -+ return nil -+} -+ -+type DescriptorProto_ExtensionRange struct { -+ Start *int32 `protobuf:"varint,1,opt,name=start" json:"start,omitempty"` -+ End *int32 `protobuf:"varint,2,opt,name=end" json:"end,omitempty"` -+ Options *ExtensionRangeOptions `protobuf:"bytes,3,opt,name=options" json:"options,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_unrecognized []byte `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *DescriptorProto_ExtensionRange) Reset() { *m = DescriptorProto_ExtensionRange{} } -+func (m *DescriptorProto_ExtensionRange) String() string { return proto.CompactTextString(m) } -+func (*DescriptorProto_ExtensionRange) ProtoMessage() {} -+func (*DescriptorProto_ExtensionRange) Descriptor() ([]byte, []int) { -+ return fileDescriptor_308767df5ffe18af, []int{2, 0} -+} -+func (m *DescriptorProto_ExtensionRange) XXX_Unmarshal(b []byte) error { -+ return xxx_messageInfo_DescriptorProto_ExtensionRange.Unmarshal(m, b) -+} -+func (m *DescriptorProto_ExtensionRange) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ return xxx_messageInfo_DescriptorProto_ExtensionRange.Marshal(b, m, deterministic) -+} -+func (m *DescriptorProto_ExtensionRange) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_DescriptorProto_ExtensionRange.Merge(m, src) -+} -+func (m *DescriptorProto_ExtensionRange) XXX_Size() int { -+ return xxx_messageInfo_DescriptorProto_ExtensionRange.Size(m) -+} -+func (m *DescriptorProto_ExtensionRange) XXX_DiscardUnknown() { -+ xxx_messageInfo_DescriptorProto_ExtensionRange.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_DescriptorProto_ExtensionRange proto.InternalMessageInfo -+ -+func (m *DescriptorProto_ExtensionRange) GetStart() int32 { -+ if m != nil && m.Start != nil { -+ return *m.Start -+ } -+ return 0 -+} -+ -+func (m *DescriptorProto_ExtensionRange) GetEnd() int32 { -+ if m != nil && m.End != nil { -+ return *m.End -+ } -+ return 0 -+} -+ -+func (m *DescriptorProto_ExtensionRange) GetOptions() *ExtensionRangeOptions { -+ if m != nil { -+ return m.Options -+ } -+ return nil -+} -+ -+// Range of reserved tag numbers. Reserved tag numbers may not be used by -+// fields or extension ranges in the same message. Reserved ranges may -+// not overlap. -+type DescriptorProto_ReservedRange struct { -+ Start *int32 `protobuf:"varint,1,opt,name=start" json:"start,omitempty"` -+ End *int32 `protobuf:"varint,2,opt,name=end" json:"end,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_unrecognized []byte `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *DescriptorProto_ReservedRange) Reset() { *m = DescriptorProto_ReservedRange{} } -+func (m *DescriptorProto_ReservedRange) String() string { return proto.CompactTextString(m) } -+func (*DescriptorProto_ReservedRange) ProtoMessage() {} -+func (*DescriptorProto_ReservedRange) Descriptor() ([]byte, []int) { -+ return fileDescriptor_308767df5ffe18af, []int{2, 1} -+} -+func (m *DescriptorProto_ReservedRange) XXX_Unmarshal(b []byte) error { -+ return xxx_messageInfo_DescriptorProto_ReservedRange.Unmarshal(m, b) -+} -+func (m *DescriptorProto_ReservedRange) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ return xxx_messageInfo_DescriptorProto_ReservedRange.Marshal(b, m, deterministic) -+} -+func (m *DescriptorProto_ReservedRange) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_DescriptorProto_ReservedRange.Merge(m, src) -+} -+func (m *DescriptorProto_ReservedRange) XXX_Size() int { -+ return xxx_messageInfo_DescriptorProto_ReservedRange.Size(m) -+} -+func (m *DescriptorProto_ReservedRange) XXX_DiscardUnknown() { -+ xxx_messageInfo_DescriptorProto_ReservedRange.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_DescriptorProto_ReservedRange proto.InternalMessageInfo -+ -+func (m *DescriptorProto_ReservedRange) GetStart() int32 { -+ if m != nil && m.Start != nil { -+ return *m.Start -+ } -+ return 0 -+} -+ -+func (m *DescriptorProto_ReservedRange) GetEnd() int32 { -+ if m != nil && m.End != nil { -+ return *m.End -+ } -+ return 0 -+} -+ -+type ExtensionRangeOptions struct { -+ // The parser stores options it doesn't recognize here. See above. -+ UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ proto.XXX_InternalExtensions `json:"-"` -+ XXX_unrecognized []byte `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *ExtensionRangeOptions) Reset() { *m = ExtensionRangeOptions{} } -+func (m *ExtensionRangeOptions) String() string { return proto.CompactTextString(m) } -+func (*ExtensionRangeOptions) ProtoMessage() {} -+func (*ExtensionRangeOptions) Descriptor() ([]byte, []int) { -+ return fileDescriptor_308767df5ffe18af, []int{3} -+} -+ -+var extRange_ExtensionRangeOptions = []proto.ExtensionRange{ -+ {Start: 1000, End: 536870911}, -+} -+ -+func (*ExtensionRangeOptions) ExtensionRangeArray() []proto.ExtensionRange { -+ return extRange_ExtensionRangeOptions -+} -+ -+func (m *ExtensionRangeOptions) XXX_Unmarshal(b []byte) error { -+ return xxx_messageInfo_ExtensionRangeOptions.Unmarshal(m, b) -+} -+func (m *ExtensionRangeOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ return xxx_messageInfo_ExtensionRangeOptions.Marshal(b, m, deterministic) -+} -+func (m *ExtensionRangeOptions) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_ExtensionRangeOptions.Merge(m, src) -+} -+func (m *ExtensionRangeOptions) XXX_Size() int { -+ return xxx_messageInfo_ExtensionRangeOptions.Size(m) -+} -+func (m *ExtensionRangeOptions) XXX_DiscardUnknown() { -+ xxx_messageInfo_ExtensionRangeOptions.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_ExtensionRangeOptions proto.InternalMessageInfo -+ -+func (m *ExtensionRangeOptions) GetUninterpretedOption() []*UninterpretedOption { -+ if m != nil { -+ return m.UninterpretedOption -+ } -+ return nil -+} -+ -+// Describes a field within a message. -+type FieldDescriptorProto struct { -+ Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -+ Number *int32 `protobuf:"varint,3,opt,name=number" json:"number,omitempty"` -+ Label *FieldDescriptorProto_Label `protobuf:"varint,4,opt,name=label,enum=google.protobuf.FieldDescriptorProto_Label" json:"label,omitempty"` -+ // If type_name is set, this need not be set. If both this and type_name -+ // are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP. -+ Type *FieldDescriptorProto_Type `protobuf:"varint,5,opt,name=type,enum=google.protobuf.FieldDescriptorProto_Type" json:"type,omitempty"` -+ // For message and enum types, this is the name of the type. If the name -+ // starts with a '.', it is fully-qualified. Otherwise, C++-like scoping -+ // rules are used to find the type (i.e. first the nested types within this -+ // message are searched, then within the parent, on up to the root -+ // namespace). -+ TypeName *string `protobuf:"bytes,6,opt,name=type_name,json=typeName" json:"type_name,omitempty"` -+ // For extensions, this is the name of the type being extended. It is -+ // resolved in the same manner as type_name. -+ Extendee *string `protobuf:"bytes,2,opt,name=extendee" json:"extendee,omitempty"` -+ // For numeric types, contains the original text representation of the value. -+ // For booleans, "true" or "false". -+ // For strings, contains the default text contents (not escaped in any way). -+ // For bytes, contains the C escaped value. All bytes >= 128 are escaped. -+ // TODO(kenton): Base-64 encode? -+ DefaultValue *string `protobuf:"bytes,7,opt,name=default_value,json=defaultValue" json:"default_value,omitempty"` -+ // If set, gives the index of a oneof in the containing type's oneof_decl -+ // list. This field is a member of that oneof. -+ OneofIndex *int32 `protobuf:"varint,9,opt,name=oneof_index,json=oneofIndex" json:"oneof_index,omitempty"` -+ // JSON name of this field. The value is set by protocol compiler. If the -+ // user has set a "json_name" option on this field, that option's value -+ // will be used. Otherwise, it's deduced from the field's name by converting -+ // it to camelCase. -+ JsonName *string `protobuf:"bytes,10,opt,name=json_name,json=jsonName" json:"json_name,omitempty"` -+ Options *FieldOptions `protobuf:"bytes,8,opt,name=options" json:"options,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_unrecognized []byte `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *FieldDescriptorProto) Reset() { *m = FieldDescriptorProto{} } -+func (m *FieldDescriptorProto) String() string { return proto.CompactTextString(m) } -+func (*FieldDescriptorProto) ProtoMessage() {} -+func (*FieldDescriptorProto) Descriptor() ([]byte, []int) { -+ return fileDescriptor_308767df5ffe18af, []int{4} -+} -+func (m *FieldDescriptorProto) XXX_Unmarshal(b []byte) error { -+ return xxx_messageInfo_FieldDescriptorProto.Unmarshal(m, b) -+} -+func (m *FieldDescriptorProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ return xxx_messageInfo_FieldDescriptorProto.Marshal(b, m, deterministic) -+} -+func (m *FieldDescriptorProto) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_FieldDescriptorProto.Merge(m, src) -+} -+func (m *FieldDescriptorProto) XXX_Size() int { -+ return xxx_messageInfo_FieldDescriptorProto.Size(m) -+} -+func (m *FieldDescriptorProto) XXX_DiscardUnknown() { -+ xxx_messageInfo_FieldDescriptorProto.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_FieldDescriptorProto proto.InternalMessageInfo -+ -+func (m *FieldDescriptorProto) GetName() string { -+ if m != nil && m.Name != nil { -+ return *m.Name -+ } -+ return "" -+} -+ -+func (m *FieldDescriptorProto) GetNumber() int32 { -+ if m != nil && m.Number != nil { -+ return *m.Number -+ } -+ return 0 -+} -+ -+func (m *FieldDescriptorProto) GetLabel() FieldDescriptorProto_Label { -+ if m != nil && m.Label != nil { -+ return *m.Label -+ } -+ return FieldDescriptorProto_LABEL_OPTIONAL -+} -+ -+func (m *FieldDescriptorProto) GetType() FieldDescriptorProto_Type { -+ if m != nil && m.Type != nil { -+ return *m.Type -+ } -+ return FieldDescriptorProto_TYPE_DOUBLE -+} -+ -+func (m *FieldDescriptorProto) GetTypeName() string { -+ if m != nil && m.TypeName != nil { -+ return *m.TypeName -+ } -+ return "" -+} -+ -+func (m *FieldDescriptorProto) GetExtendee() string { -+ if m != nil && m.Extendee != nil { -+ return *m.Extendee -+ } -+ return "" -+} -+ -+func (m *FieldDescriptorProto) GetDefaultValue() string { -+ if m != nil && m.DefaultValue != nil { -+ return *m.DefaultValue -+ } -+ return "" -+} -+ -+func (m *FieldDescriptorProto) GetOneofIndex() int32 { -+ if m != nil && m.OneofIndex != nil { -+ return *m.OneofIndex -+ } -+ return 0 -+} -+ -+func (m *FieldDescriptorProto) GetJsonName() string { -+ if m != nil && m.JsonName != nil { -+ return *m.JsonName -+ } -+ return "" -+} -+ -+func (m *FieldDescriptorProto) GetOptions() *FieldOptions { -+ if m != nil { -+ return m.Options -+ } -+ return nil -+} -+ -+// Describes a oneof. -+type OneofDescriptorProto struct { -+ Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -+ Options *OneofOptions `protobuf:"bytes,2,opt,name=options" json:"options,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_unrecognized []byte `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *OneofDescriptorProto) Reset() { *m = OneofDescriptorProto{} } -+func (m *OneofDescriptorProto) String() string { return proto.CompactTextString(m) } -+func (*OneofDescriptorProto) ProtoMessage() {} -+func (*OneofDescriptorProto) Descriptor() ([]byte, []int) { -+ return fileDescriptor_308767df5ffe18af, []int{5} -+} -+func (m *OneofDescriptorProto) XXX_Unmarshal(b []byte) error { -+ return xxx_messageInfo_OneofDescriptorProto.Unmarshal(m, b) -+} -+func (m *OneofDescriptorProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ return xxx_messageInfo_OneofDescriptorProto.Marshal(b, m, deterministic) -+} -+func (m *OneofDescriptorProto) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_OneofDescriptorProto.Merge(m, src) -+} -+func (m *OneofDescriptorProto) XXX_Size() int { -+ return xxx_messageInfo_OneofDescriptorProto.Size(m) -+} -+func (m *OneofDescriptorProto) XXX_DiscardUnknown() { -+ xxx_messageInfo_OneofDescriptorProto.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_OneofDescriptorProto proto.InternalMessageInfo -+ -+func (m *OneofDescriptorProto) GetName() string { -+ if m != nil && m.Name != nil { -+ return *m.Name -+ } -+ return "" -+} -+ -+func (m *OneofDescriptorProto) GetOptions() *OneofOptions { -+ if m != nil { -+ return m.Options -+ } -+ return nil -+} -+ -+// Describes an enum type. -+type EnumDescriptorProto struct { -+ Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -+ Value []*EnumValueDescriptorProto `protobuf:"bytes,2,rep,name=value" json:"value,omitempty"` -+ Options *EnumOptions `protobuf:"bytes,3,opt,name=options" json:"options,omitempty"` -+ // Range of reserved numeric values. Reserved numeric values may not be used -+ // by enum values in the same enum declaration. Reserved ranges may not -+ // overlap. -+ ReservedRange []*EnumDescriptorProto_EnumReservedRange `protobuf:"bytes,4,rep,name=reserved_range,json=reservedRange" json:"reserved_range,omitempty"` -+ // Reserved enum value names, which may not be reused. A given name may only -+ // be reserved once. -+ ReservedName []string `protobuf:"bytes,5,rep,name=reserved_name,json=reservedName" json:"reserved_name,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_unrecognized []byte `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *EnumDescriptorProto) Reset() { *m = EnumDescriptorProto{} } -+func (m *EnumDescriptorProto) String() string { return proto.CompactTextString(m) } -+func (*EnumDescriptorProto) ProtoMessage() {} -+func (*EnumDescriptorProto) Descriptor() ([]byte, []int) { -+ return fileDescriptor_308767df5ffe18af, []int{6} -+} -+func (m *EnumDescriptorProto) XXX_Unmarshal(b []byte) error { -+ return xxx_messageInfo_EnumDescriptorProto.Unmarshal(m, b) -+} -+func (m *EnumDescriptorProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ return xxx_messageInfo_EnumDescriptorProto.Marshal(b, m, deterministic) -+} -+func (m *EnumDescriptorProto) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_EnumDescriptorProto.Merge(m, src) -+} -+func (m *EnumDescriptorProto) XXX_Size() int { -+ return xxx_messageInfo_EnumDescriptorProto.Size(m) -+} -+func (m *EnumDescriptorProto) XXX_DiscardUnknown() { -+ xxx_messageInfo_EnumDescriptorProto.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_EnumDescriptorProto proto.InternalMessageInfo -+ -+func (m *EnumDescriptorProto) GetName() string { -+ if m != nil && m.Name != nil { -+ return *m.Name -+ } -+ return "" -+} -+ -+func (m *EnumDescriptorProto) GetValue() []*EnumValueDescriptorProto { -+ if m != nil { -+ return m.Value -+ } -+ return nil -+} -+ -+func (m *EnumDescriptorProto) GetOptions() *EnumOptions { -+ if m != nil { -+ return m.Options -+ } -+ return nil -+} -+ -+func (m *EnumDescriptorProto) GetReservedRange() []*EnumDescriptorProto_EnumReservedRange { -+ if m != nil { -+ return m.ReservedRange -+ } -+ return nil -+} -+ -+func (m *EnumDescriptorProto) GetReservedName() []string { -+ if m != nil { -+ return m.ReservedName -+ } -+ return nil -+} -+ -+// Range of reserved numeric values. Reserved values may not be used by -+// entries in the same enum. Reserved ranges may not overlap. -+// -+// Note that this is distinct from DescriptorProto.ReservedRange in that it -+// is inclusive such that it can appropriately represent the entire int32 -+// domain. -+type EnumDescriptorProto_EnumReservedRange struct { -+ Start *int32 `protobuf:"varint,1,opt,name=start" json:"start,omitempty"` -+ End *int32 `protobuf:"varint,2,opt,name=end" json:"end,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_unrecognized []byte `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *EnumDescriptorProto_EnumReservedRange) Reset() { *m = EnumDescriptorProto_EnumReservedRange{} } -+func (m *EnumDescriptorProto_EnumReservedRange) String() string { return proto.CompactTextString(m) } -+func (*EnumDescriptorProto_EnumReservedRange) ProtoMessage() {} -+func (*EnumDescriptorProto_EnumReservedRange) Descriptor() ([]byte, []int) { -+ return fileDescriptor_308767df5ffe18af, []int{6, 0} -+} -+func (m *EnumDescriptorProto_EnumReservedRange) XXX_Unmarshal(b []byte) error { -+ return xxx_messageInfo_EnumDescriptorProto_EnumReservedRange.Unmarshal(m, b) -+} -+func (m *EnumDescriptorProto_EnumReservedRange) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ return xxx_messageInfo_EnumDescriptorProto_EnumReservedRange.Marshal(b, m, deterministic) -+} -+func (m *EnumDescriptorProto_EnumReservedRange) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_EnumDescriptorProto_EnumReservedRange.Merge(m, src) -+} -+func (m *EnumDescriptorProto_EnumReservedRange) XXX_Size() int { -+ return xxx_messageInfo_EnumDescriptorProto_EnumReservedRange.Size(m) -+} -+func (m *EnumDescriptorProto_EnumReservedRange) XXX_DiscardUnknown() { -+ xxx_messageInfo_EnumDescriptorProto_EnumReservedRange.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_EnumDescriptorProto_EnumReservedRange proto.InternalMessageInfo -+ -+func (m *EnumDescriptorProto_EnumReservedRange) GetStart() int32 { -+ if m != nil && m.Start != nil { -+ return *m.Start -+ } -+ return 0 -+} -+ -+func (m *EnumDescriptorProto_EnumReservedRange) GetEnd() int32 { -+ if m != nil && m.End != nil { -+ return *m.End -+ } -+ return 0 -+} -+ -+// Describes a value within an enum. -+type EnumValueDescriptorProto struct { -+ Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -+ Number *int32 `protobuf:"varint,2,opt,name=number" json:"number,omitempty"` -+ Options *EnumValueOptions `protobuf:"bytes,3,opt,name=options" json:"options,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_unrecognized []byte `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *EnumValueDescriptorProto) Reset() { *m = EnumValueDescriptorProto{} } -+func (m *EnumValueDescriptorProto) String() string { return proto.CompactTextString(m) } -+func (*EnumValueDescriptorProto) ProtoMessage() {} -+func (*EnumValueDescriptorProto) Descriptor() ([]byte, []int) { -+ return fileDescriptor_308767df5ffe18af, []int{7} -+} -+func (m *EnumValueDescriptorProto) XXX_Unmarshal(b []byte) error { -+ return xxx_messageInfo_EnumValueDescriptorProto.Unmarshal(m, b) -+} -+func (m *EnumValueDescriptorProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ return xxx_messageInfo_EnumValueDescriptorProto.Marshal(b, m, deterministic) -+} -+func (m *EnumValueDescriptorProto) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_EnumValueDescriptorProto.Merge(m, src) -+} -+func (m *EnumValueDescriptorProto) XXX_Size() int { -+ return xxx_messageInfo_EnumValueDescriptorProto.Size(m) -+} -+func (m *EnumValueDescriptorProto) XXX_DiscardUnknown() { -+ xxx_messageInfo_EnumValueDescriptorProto.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_EnumValueDescriptorProto proto.InternalMessageInfo -+ -+func (m *EnumValueDescriptorProto) GetName() string { -+ if m != nil && m.Name != nil { -+ return *m.Name -+ } -+ return "" -+} -+ -+func (m *EnumValueDescriptorProto) GetNumber() int32 { -+ if m != nil && m.Number != nil { -+ return *m.Number -+ } -+ return 0 -+} -+ -+func (m *EnumValueDescriptorProto) GetOptions() *EnumValueOptions { -+ if m != nil { -+ return m.Options -+ } -+ return nil -+} -+ -+// Describes a service. -+type ServiceDescriptorProto struct { -+ Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -+ Method []*MethodDescriptorProto `protobuf:"bytes,2,rep,name=method" json:"method,omitempty"` -+ Options *ServiceOptions `protobuf:"bytes,3,opt,name=options" json:"options,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_unrecognized []byte `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *ServiceDescriptorProto) Reset() { *m = ServiceDescriptorProto{} } -+func (m *ServiceDescriptorProto) String() string { return proto.CompactTextString(m) } -+func (*ServiceDescriptorProto) ProtoMessage() {} -+func (*ServiceDescriptorProto) Descriptor() ([]byte, []int) { -+ return fileDescriptor_308767df5ffe18af, []int{8} -+} -+func (m *ServiceDescriptorProto) XXX_Unmarshal(b []byte) error { -+ return xxx_messageInfo_ServiceDescriptorProto.Unmarshal(m, b) -+} -+func (m *ServiceDescriptorProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ return xxx_messageInfo_ServiceDescriptorProto.Marshal(b, m, deterministic) -+} -+func (m *ServiceDescriptorProto) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_ServiceDescriptorProto.Merge(m, src) -+} -+func (m *ServiceDescriptorProto) XXX_Size() int { -+ return xxx_messageInfo_ServiceDescriptorProto.Size(m) -+} -+func (m *ServiceDescriptorProto) XXX_DiscardUnknown() { -+ xxx_messageInfo_ServiceDescriptorProto.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_ServiceDescriptorProto proto.InternalMessageInfo -+ -+func (m *ServiceDescriptorProto) GetName() string { -+ if m != nil && m.Name != nil { -+ return *m.Name -+ } -+ return "" -+} -+ -+func (m *ServiceDescriptorProto) GetMethod() []*MethodDescriptorProto { -+ if m != nil { -+ return m.Method -+ } -+ return nil -+} -+ -+func (m *ServiceDescriptorProto) GetOptions() *ServiceOptions { -+ if m != nil { -+ return m.Options -+ } -+ return nil -+} -+ -+// Describes a method of a service. -+type MethodDescriptorProto struct { -+ Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -+ // Input and output type names. These are resolved in the same way as -+ // FieldDescriptorProto.type_name, but must refer to a message type. -+ InputType *string `protobuf:"bytes,2,opt,name=input_type,json=inputType" json:"input_type,omitempty"` -+ OutputType *string `protobuf:"bytes,3,opt,name=output_type,json=outputType" json:"output_type,omitempty"` -+ Options *MethodOptions `protobuf:"bytes,4,opt,name=options" json:"options,omitempty"` -+ // Identifies if client streams multiple client messages -+ ClientStreaming *bool `protobuf:"varint,5,opt,name=client_streaming,json=clientStreaming,def=0" json:"client_streaming,omitempty"` -+ // Identifies if server streams multiple server messages -+ ServerStreaming *bool `protobuf:"varint,6,opt,name=server_streaming,json=serverStreaming,def=0" json:"server_streaming,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_unrecognized []byte `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *MethodDescriptorProto) Reset() { *m = MethodDescriptorProto{} } -+func (m *MethodDescriptorProto) String() string { return proto.CompactTextString(m) } -+func (*MethodDescriptorProto) ProtoMessage() {} -+func (*MethodDescriptorProto) Descriptor() ([]byte, []int) { -+ return fileDescriptor_308767df5ffe18af, []int{9} -+} -+func (m *MethodDescriptorProto) XXX_Unmarshal(b []byte) error { -+ return xxx_messageInfo_MethodDescriptorProto.Unmarshal(m, b) -+} -+func (m *MethodDescriptorProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ return xxx_messageInfo_MethodDescriptorProto.Marshal(b, m, deterministic) -+} -+func (m *MethodDescriptorProto) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_MethodDescriptorProto.Merge(m, src) -+} -+func (m *MethodDescriptorProto) XXX_Size() int { -+ return xxx_messageInfo_MethodDescriptorProto.Size(m) -+} -+func (m *MethodDescriptorProto) XXX_DiscardUnknown() { -+ xxx_messageInfo_MethodDescriptorProto.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_MethodDescriptorProto proto.InternalMessageInfo -+ -+const Default_MethodDescriptorProto_ClientStreaming bool = false -+const Default_MethodDescriptorProto_ServerStreaming bool = false -+ -+func (m *MethodDescriptorProto) GetName() string { -+ if m != nil && m.Name != nil { -+ return *m.Name -+ } -+ return "" -+} -+ -+func (m *MethodDescriptorProto) GetInputType() string { -+ if m != nil && m.InputType != nil { -+ return *m.InputType -+ } -+ return "" -+} -+ -+func (m *MethodDescriptorProto) GetOutputType() string { -+ if m != nil && m.OutputType != nil { -+ return *m.OutputType -+ } -+ return "" -+} -+ -+func (m *MethodDescriptorProto) GetOptions() *MethodOptions { -+ if m != nil { -+ return m.Options -+ } -+ return nil -+} -+ -+func (m *MethodDescriptorProto) GetClientStreaming() bool { -+ if m != nil && m.ClientStreaming != nil { -+ return *m.ClientStreaming -+ } -+ return Default_MethodDescriptorProto_ClientStreaming -+} -+ -+func (m *MethodDescriptorProto) GetServerStreaming() bool { -+ if m != nil && m.ServerStreaming != nil { -+ return *m.ServerStreaming -+ } -+ return Default_MethodDescriptorProto_ServerStreaming -+} -+ -+type FileOptions struct { -+ // Sets the Java package where classes generated from this .proto will be -+ // placed. By default, the proto package is used, but this is often -+ // inappropriate because proto packages do not normally start with backwards -+ // domain names. -+ JavaPackage *string `protobuf:"bytes,1,opt,name=java_package,json=javaPackage" json:"java_package,omitempty"` -+ // If set, all the classes from the .proto file are wrapped in a single -+ // outer class with the given name. This applies to both Proto1 -+ // (equivalent to the old "--one_java_file" option) and Proto2 (where -+ // a .proto always translates to a single class, but you may want to -+ // explicitly choose the class name). -+ JavaOuterClassname *string `protobuf:"bytes,8,opt,name=java_outer_classname,json=javaOuterClassname" json:"java_outer_classname,omitempty"` -+ // If set true, then the Java code generator will generate a separate .java -+ // file for each top-level message, enum, and service defined in the .proto -+ // file. Thus, these types will *not* be nested inside the outer class -+ // named by java_outer_classname. However, the outer class will still be -+ // generated to contain the file's getDescriptor() method as well as any -+ // top-level extensions defined in the file. -+ JavaMultipleFiles *bool `protobuf:"varint,10,opt,name=java_multiple_files,json=javaMultipleFiles,def=0" json:"java_multiple_files,omitempty"` -+ // This option does nothing. -+ JavaGenerateEqualsAndHash *bool `protobuf:"varint,20,opt,name=java_generate_equals_and_hash,json=javaGenerateEqualsAndHash" json:"java_generate_equals_and_hash,omitempty"` // Deprecated: Do not use. -+ // If set true, then the Java2 code generator will generate code that -+ // throws an exception whenever an attempt is made to assign a non-UTF-8 -+ // byte sequence to a string field. -+ // Message reflection will do the same. -+ // However, an extension field still accepts non-UTF-8 byte sequences. -+ // This option has no effect on when used with the lite runtime. -+ JavaStringCheckUtf8 *bool `protobuf:"varint,27,opt,name=java_string_check_utf8,json=javaStringCheckUtf8,def=0" json:"java_string_check_utf8,omitempty"` -+ OptimizeFor *FileOptions_OptimizeMode `protobuf:"varint,9,opt,name=optimize_for,json=optimizeFor,enum=google.protobuf.FileOptions_OptimizeMode,def=1" json:"optimize_for,omitempty"` -+ // Sets the Go package where structs generated from this .proto will be -+ // placed. If omitted, the Go package will be derived from the following: -+ // - The basename of the package import path, if provided. -+ // - Otherwise, the package statement in the .proto file, if present. -+ // - Otherwise, the basename of the .proto file, without extension. -+ GoPackage *string `protobuf:"bytes,11,opt,name=go_package,json=goPackage" json:"go_package,omitempty"` -+ // Should generic services be generated in each language? "Generic" services -+ // are not specific to any particular RPC system. They are generated by the -+ // main code generators in each language (without additional plugins). -+ // Generic services were the only kind of service generation supported by -+ // early versions of google.protobuf. -+ // -+ // Generic services are now considered deprecated in favor of using plugins -+ // that generate code specific to your particular RPC system. Therefore, -+ // these default to false. Old code which depends on generic services should -+ // explicitly set them to true. -+ CcGenericServices *bool `protobuf:"varint,16,opt,name=cc_generic_services,json=ccGenericServices,def=0" json:"cc_generic_services,omitempty"` -+ JavaGenericServices *bool `protobuf:"varint,17,opt,name=java_generic_services,json=javaGenericServices,def=0" json:"java_generic_services,omitempty"` -+ PyGenericServices *bool `protobuf:"varint,18,opt,name=py_generic_services,json=pyGenericServices,def=0" json:"py_generic_services,omitempty"` -+ PhpGenericServices *bool `protobuf:"varint,42,opt,name=php_generic_services,json=phpGenericServices,def=0" json:"php_generic_services,omitempty"` -+ // Is this file deprecated? -+ // Depending on the target platform, this can emit Deprecated annotations -+ // for everything in the file, or it will be completely ignored; in the very -+ // least, this is a formalization for deprecating files. -+ Deprecated *bool `protobuf:"varint,23,opt,name=deprecated,def=0" json:"deprecated,omitempty"` -+ // Enables the use of arenas for the proto messages in this file. This applies -+ // only to generated classes for C++. -+ CcEnableArenas *bool `protobuf:"varint,31,opt,name=cc_enable_arenas,json=ccEnableArenas,def=0" json:"cc_enable_arenas,omitempty"` -+ // Sets the objective c class prefix which is prepended to all objective c -+ // generated classes from this .proto. There is no default. -+ ObjcClassPrefix *string `protobuf:"bytes,36,opt,name=objc_class_prefix,json=objcClassPrefix" json:"objc_class_prefix,omitempty"` -+ // Namespace for generated classes; defaults to the package. -+ CsharpNamespace *string `protobuf:"bytes,37,opt,name=csharp_namespace,json=csharpNamespace" json:"csharp_namespace,omitempty"` -+ // By default Swift generators will take the proto package and CamelCase it -+ // replacing '.' with underscore and use that to prefix the types/symbols -+ // defined. When this options is provided, they will use this value instead -+ // to prefix the types/symbols defined. -+ SwiftPrefix *string `protobuf:"bytes,39,opt,name=swift_prefix,json=swiftPrefix" json:"swift_prefix,omitempty"` -+ // Sets the php class prefix which is prepended to all php generated classes -+ // from this .proto. Default is empty. -+ PhpClassPrefix *string `protobuf:"bytes,40,opt,name=php_class_prefix,json=phpClassPrefix" json:"php_class_prefix,omitempty"` -+ // Use this option to change the namespace of php generated classes. Default -+ // is empty. When this option is empty, the package name will be used for -+ // determining the namespace. -+ PhpNamespace *string `protobuf:"bytes,41,opt,name=php_namespace,json=phpNamespace" json:"php_namespace,omitempty"` -+ // Use this option to change the namespace of php generated metadata classes. -+ // Default is empty. When this option is empty, the proto file name will be -+ // used for determining the namespace. -+ PhpMetadataNamespace *string `protobuf:"bytes,44,opt,name=php_metadata_namespace,json=phpMetadataNamespace" json:"php_metadata_namespace,omitempty"` -+ // Use this option to change the package of ruby generated classes. Default -+ // is empty. When this option is not set, the package name will be used for -+ // determining the ruby package. -+ RubyPackage *string `protobuf:"bytes,45,opt,name=ruby_package,json=rubyPackage" json:"ruby_package,omitempty"` -+ // The parser stores options it doesn't recognize here. -+ // See the documentation for the "Options" section above. -+ UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ proto.XXX_InternalExtensions `json:"-"` -+ XXX_unrecognized []byte `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *FileOptions) Reset() { *m = FileOptions{} } -+func (m *FileOptions) String() string { return proto.CompactTextString(m) } -+func (*FileOptions) ProtoMessage() {} -+func (*FileOptions) Descriptor() ([]byte, []int) { -+ return fileDescriptor_308767df5ffe18af, []int{10} -+} -+ -+var extRange_FileOptions = []proto.ExtensionRange{ -+ {Start: 1000, End: 536870911}, -+} -+ -+func (*FileOptions) ExtensionRangeArray() []proto.ExtensionRange { -+ return extRange_FileOptions -+} -+ -+func (m *FileOptions) XXX_Unmarshal(b []byte) error { -+ return xxx_messageInfo_FileOptions.Unmarshal(m, b) -+} -+func (m *FileOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ return xxx_messageInfo_FileOptions.Marshal(b, m, deterministic) -+} -+func (m *FileOptions) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_FileOptions.Merge(m, src) -+} -+func (m *FileOptions) XXX_Size() int { -+ return xxx_messageInfo_FileOptions.Size(m) -+} -+func (m *FileOptions) XXX_DiscardUnknown() { -+ xxx_messageInfo_FileOptions.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_FileOptions proto.InternalMessageInfo -+ -+const Default_FileOptions_JavaMultipleFiles bool = false -+const Default_FileOptions_JavaStringCheckUtf8 bool = false -+const Default_FileOptions_OptimizeFor FileOptions_OptimizeMode = FileOptions_SPEED -+const Default_FileOptions_CcGenericServices bool = false -+const Default_FileOptions_JavaGenericServices bool = false -+const Default_FileOptions_PyGenericServices bool = false -+const Default_FileOptions_PhpGenericServices bool = false -+const Default_FileOptions_Deprecated bool = false -+const Default_FileOptions_CcEnableArenas bool = false -+ -+func (m *FileOptions) GetJavaPackage() string { -+ if m != nil && m.JavaPackage != nil { -+ return *m.JavaPackage -+ } -+ return "" -+} -+ -+func (m *FileOptions) GetJavaOuterClassname() string { -+ if m != nil && m.JavaOuterClassname != nil { -+ return *m.JavaOuterClassname -+ } -+ return "" -+} -+ -+func (m *FileOptions) GetJavaMultipleFiles() bool { -+ if m != nil && m.JavaMultipleFiles != nil { -+ return *m.JavaMultipleFiles -+ } -+ return Default_FileOptions_JavaMultipleFiles -+} -+ -+// Deprecated: Do not use. -+func (m *FileOptions) GetJavaGenerateEqualsAndHash() bool { -+ if m != nil && m.JavaGenerateEqualsAndHash != nil { -+ return *m.JavaGenerateEqualsAndHash -+ } -+ return false -+} -+ -+func (m *FileOptions) GetJavaStringCheckUtf8() bool { -+ if m != nil && m.JavaStringCheckUtf8 != nil { -+ return *m.JavaStringCheckUtf8 -+ } -+ return Default_FileOptions_JavaStringCheckUtf8 -+} -+ -+func (m *FileOptions) GetOptimizeFor() FileOptions_OptimizeMode { -+ if m != nil && m.OptimizeFor != nil { -+ return *m.OptimizeFor -+ } -+ return Default_FileOptions_OptimizeFor -+} -+ -+func (m *FileOptions) GetGoPackage() string { -+ if m != nil && m.GoPackage != nil { -+ return *m.GoPackage -+ } -+ return "" -+} -+ -+func (m *FileOptions) GetCcGenericServices() bool { -+ if m != nil && m.CcGenericServices != nil { -+ return *m.CcGenericServices -+ } -+ return Default_FileOptions_CcGenericServices -+} -+ -+func (m *FileOptions) GetJavaGenericServices() bool { -+ if m != nil && m.JavaGenericServices != nil { -+ return *m.JavaGenericServices -+ } -+ return Default_FileOptions_JavaGenericServices -+} -+ -+func (m *FileOptions) GetPyGenericServices() bool { -+ if m != nil && m.PyGenericServices != nil { -+ return *m.PyGenericServices -+ } -+ return Default_FileOptions_PyGenericServices -+} -+ -+func (m *FileOptions) GetPhpGenericServices() bool { -+ if m != nil && m.PhpGenericServices != nil { -+ return *m.PhpGenericServices -+ } -+ return Default_FileOptions_PhpGenericServices -+} -+ -+func (m *FileOptions) GetDeprecated() bool { -+ if m != nil && m.Deprecated != nil { -+ return *m.Deprecated -+ } -+ return Default_FileOptions_Deprecated -+} -+ -+func (m *FileOptions) GetCcEnableArenas() bool { -+ if m != nil && m.CcEnableArenas != nil { -+ return *m.CcEnableArenas -+ } -+ return Default_FileOptions_CcEnableArenas -+} -+ -+func (m *FileOptions) GetObjcClassPrefix() string { -+ if m != nil && m.ObjcClassPrefix != nil { -+ return *m.ObjcClassPrefix -+ } -+ return "" -+} -+ -+func (m *FileOptions) GetCsharpNamespace() string { -+ if m != nil && m.CsharpNamespace != nil { -+ return *m.CsharpNamespace -+ } -+ return "" -+} -+ -+func (m *FileOptions) GetSwiftPrefix() string { -+ if m != nil && m.SwiftPrefix != nil { -+ return *m.SwiftPrefix -+ } -+ return "" -+} -+ -+func (m *FileOptions) GetPhpClassPrefix() string { -+ if m != nil && m.PhpClassPrefix != nil { -+ return *m.PhpClassPrefix -+ } -+ return "" -+} -+ -+func (m *FileOptions) GetPhpNamespace() string { -+ if m != nil && m.PhpNamespace != nil { -+ return *m.PhpNamespace -+ } -+ return "" -+} -+ -+func (m *FileOptions) GetPhpMetadataNamespace() string { -+ if m != nil && m.PhpMetadataNamespace != nil { -+ return *m.PhpMetadataNamespace -+ } -+ return "" -+} -+ -+func (m *FileOptions) GetRubyPackage() string { -+ if m != nil && m.RubyPackage != nil { -+ return *m.RubyPackage -+ } -+ return "" -+} -+ -+func (m *FileOptions) GetUninterpretedOption() []*UninterpretedOption { -+ if m != nil { -+ return m.UninterpretedOption -+ } -+ return nil -+} -+ -+type MessageOptions struct { -+ // Set true to use the old proto1 MessageSet wire format for extensions. -+ // This is provided for backwards-compatibility with the MessageSet wire -+ // format. You should not use this for any other reason: It's less -+ // efficient, has fewer features, and is more complicated. -+ // -+ // The message must be defined exactly as follows: -+ // message Foo { -+ // option message_set_wire_format = true; -+ // extensions 4 to max; -+ // } -+ // Note that the message cannot have any defined fields; MessageSets only -+ // have extensions. -+ // -+ // All extensions of your type must be singular messages; e.g. they cannot -+ // be int32s, enums, or repeated messages. -+ // -+ // Because this is an option, the above two restrictions are not enforced by -+ // the protocol compiler. -+ MessageSetWireFormat *bool `protobuf:"varint,1,opt,name=message_set_wire_format,json=messageSetWireFormat,def=0" json:"message_set_wire_format,omitempty"` -+ // Disables the generation of the standard "descriptor()" accessor, which can -+ // conflict with a field of the same name. This is meant to make migration -+ // from proto1 easier; new code should avoid fields named "descriptor". -+ NoStandardDescriptorAccessor *bool `protobuf:"varint,2,opt,name=no_standard_descriptor_accessor,json=noStandardDescriptorAccessor,def=0" json:"no_standard_descriptor_accessor,omitempty"` -+ // Is this message deprecated? -+ // Depending on the target platform, this can emit Deprecated annotations -+ // for the message, or it will be completely ignored; in the very least, -+ // this is a formalization for deprecating messages. -+ Deprecated *bool `protobuf:"varint,3,opt,name=deprecated,def=0" json:"deprecated,omitempty"` -+ // Whether the message is an automatically generated map entry type for the -+ // maps field. -+ // -+ // For maps fields: -+ // map map_field = 1; -+ // The parsed descriptor looks like: -+ // message MapFieldEntry { -+ // option map_entry = true; -+ // optional KeyType key = 1; -+ // optional ValueType value = 2; -+ // } -+ // repeated MapFieldEntry map_field = 1; -+ // -+ // Implementations may choose not to generate the map_entry=true message, but -+ // use a native map in the target language to hold the keys and values. -+ // The reflection APIs in such implementations still need to work as -+ // if the field is a repeated message field. -+ // -+ // NOTE: Do not set the option in .proto files. Always use the maps syntax -+ // instead. The option should only be implicitly set by the proto compiler -+ // parser. -+ MapEntry *bool `protobuf:"varint,7,opt,name=map_entry,json=mapEntry" json:"map_entry,omitempty"` -+ // The parser stores options it doesn't recognize here. See above. -+ UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ proto.XXX_InternalExtensions `json:"-"` -+ XXX_unrecognized []byte `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *MessageOptions) Reset() { *m = MessageOptions{} } -+func (m *MessageOptions) String() string { return proto.CompactTextString(m) } -+func (*MessageOptions) ProtoMessage() {} -+func (*MessageOptions) Descriptor() ([]byte, []int) { -+ return fileDescriptor_308767df5ffe18af, []int{11} -+} -+ -+var extRange_MessageOptions = []proto.ExtensionRange{ -+ {Start: 1000, End: 536870911}, -+} -+ -+func (*MessageOptions) ExtensionRangeArray() []proto.ExtensionRange { -+ return extRange_MessageOptions -+} -+ -+func (m *MessageOptions) XXX_Unmarshal(b []byte) error { -+ return xxx_messageInfo_MessageOptions.Unmarshal(m, b) -+} -+func (m *MessageOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ return xxx_messageInfo_MessageOptions.Marshal(b, m, deterministic) -+} -+func (m *MessageOptions) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_MessageOptions.Merge(m, src) -+} -+func (m *MessageOptions) XXX_Size() int { -+ return xxx_messageInfo_MessageOptions.Size(m) -+} -+func (m *MessageOptions) XXX_DiscardUnknown() { -+ xxx_messageInfo_MessageOptions.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_MessageOptions proto.InternalMessageInfo -+ -+const Default_MessageOptions_MessageSetWireFormat bool = false -+const Default_MessageOptions_NoStandardDescriptorAccessor bool = false -+const Default_MessageOptions_Deprecated bool = false -+ -+func (m *MessageOptions) GetMessageSetWireFormat() bool { -+ if m != nil && m.MessageSetWireFormat != nil { -+ return *m.MessageSetWireFormat -+ } -+ return Default_MessageOptions_MessageSetWireFormat -+} -+ -+func (m *MessageOptions) GetNoStandardDescriptorAccessor() bool { -+ if m != nil && m.NoStandardDescriptorAccessor != nil { -+ return *m.NoStandardDescriptorAccessor -+ } -+ return Default_MessageOptions_NoStandardDescriptorAccessor -+} -+ -+func (m *MessageOptions) GetDeprecated() bool { -+ if m != nil && m.Deprecated != nil { -+ return *m.Deprecated -+ } -+ return Default_MessageOptions_Deprecated -+} -+ -+func (m *MessageOptions) GetMapEntry() bool { -+ if m != nil && m.MapEntry != nil { -+ return *m.MapEntry -+ } -+ return false -+} -+ -+func (m *MessageOptions) GetUninterpretedOption() []*UninterpretedOption { -+ if m != nil { -+ return m.UninterpretedOption -+ } -+ return nil -+} -+ -+type FieldOptions struct { -+ // The ctype option instructs the C++ code generator to use a different -+ // representation of the field than it normally would. See the specific -+ // options below. This option is not yet implemented in the open source -+ // release -- sorry, we'll try to include it in a future version! -+ Ctype *FieldOptions_CType `protobuf:"varint,1,opt,name=ctype,enum=google.protobuf.FieldOptions_CType,def=0" json:"ctype,omitempty"` -+ // The packed option can be enabled for repeated primitive fields to enable -+ // a more efficient representation on the wire. Rather than repeatedly -+ // writing the tag and type for each element, the entire array is encoded as -+ // a single length-delimited blob. In proto3, only explicit setting it to -+ // false will avoid using packed encoding. -+ Packed *bool `protobuf:"varint,2,opt,name=packed" json:"packed,omitempty"` -+ // The jstype option determines the JavaScript type used for values of the -+ // field. The option is permitted only for 64 bit integral and fixed types -+ // (int64, uint64, sint64, fixed64, sfixed64). A field with jstype JS_STRING -+ // is represented as JavaScript string, which avoids loss of precision that -+ // can happen when a large value is converted to a floating point JavaScript. -+ // Specifying JS_NUMBER for the jstype causes the generated JavaScript code to -+ // use the JavaScript "number" type. The behavior of the default option -+ // JS_NORMAL is implementation dependent. -+ // -+ // This option is an enum to permit additional types to be added, e.g. -+ // goog.math.Integer. -+ Jstype *FieldOptions_JSType `protobuf:"varint,6,opt,name=jstype,enum=google.protobuf.FieldOptions_JSType,def=0" json:"jstype,omitempty"` -+ // Should this field be parsed lazily? Lazy applies only to message-type -+ // fields. It means that when the outer message is initially parsed, the -+ // inner message's contents will not be parsed but instead stored in encoded -+ // form. The inner message will actually be parsed when it is first accessed. -+ // -+ // This is only a hint. Implementations are free to choose whether to use -+ // eager or lazy parsing regardless of the value of this option. However, -+ // setting this option true suggests that the protocol author believes that -+ // using lazy parsing on this field is worth the additional bookkeeping -+ // overhead typically needed to implement it. -+ // -+ // This option does not affect the public interface of any generated code; -+ // all method signatures remain the same. Furthermore, thread-safety of the -+ // interface is not affected by this option; const methods remain safe to -+ // call from multiple threads concurrently, while non-const methods continue -+ // to require exclusive access. -+ // -+ // -+ // Note that implementations may choose not to check required fields within -+ // a lazy sub-message. That is, calling IsInitialized() on the outer message -+ // may return true even if the inner message has missing required fields. -+ // This is necessary because otherwise the inner message would have to be -+ // parsed in order to perform the check, defeating the purpose of lazy -+ // parsing. An implementation which chooses not to check required fields -+ // must be consistent about it. That is, for any particular sub-message, the -+ // implementation must either *always* check its required fields, or *never* -+ // check its required fields, regardless of whether or not the message has -+ // been parsed. -+ Lazy *bool `protobuf:"varint,5,opt,name=lazy,def=0" json:"lazy,omitempty"` -+ // Is this field deprecated? -+ // Depending on the target platform, this can emit Deprecated annotations -+ // for accessors, or it will be completely ignored; in the very least, this -+ // is a formalization for deprecating fields. -+ Deprecated *bool `protobuf:"varint,3,opt,name=deprecated,def=0" json:"deprecated,omitempty"` -+ // For Google-internal migration only. Do not use. -+ Weak *bool `protobuf:"varint,10,opt,name=weak,def=0" json:"weak,omitempty"` -+ // The parser stores options it doesn't recognize here. See above. -+ UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ proto.XXX_InternalExtensions `json:"-"` -+ XXX_unrecognized []byte `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *FieldOptions) Reset() { *m = FieldOptions{} } -+func (m *FieldOptions) String() string { return proto.CompactTextString(m) } -+func (*FieldOptions) ProtoMessage() {} -+func (*FieldOptions) Descriptor() ([]byte, []int) { -+ return fileDescriptor_308767df5ffe18af, []int{12} -+} -+ -+var extRange_FieldOptions = []proto.ExtensionRange{ -+ {Start: 1000, End: 536870911}, -+} -+ -+func (*FieldOptions) ExtensionRangeArray() []proto.ExtensionRange { -+ return extRange_FieldOptions -+} -+ -+func (m *FieldOptions) XXX_Unmarshal(b []byte) error { -+ return xxx_messageInfo_FieldOptions.Unmarshal(m, b) -+} -+func (m *FieldOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ return xxx_messageInfo_FieldOptions.Marshal(b, m, deterministic) -+} -+func (m *FieldOptions) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_FieldOptions.Merge(m, src) -+} -+func (m *FieldOptions) XXX_Size() int { -+ return xxx_messageInfo_FieldOptions.Size(m) -+} -+func (m *FieldOptions) XXX_DiscardUnknown() { -+ xxx_messageInfo_FieldOptions.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_FieldOptions proto.InternalMessageInfo -+ -+const Default_FieldOptions_Ctype FieldOptions_CType = FieldOptions_STRING -+const Default_FieldOptions_Jstype FieldOptions_JSType = FieldOptions_JS_NORMAL -+const Default_FieldOptions_Lazy bool = false -+const Default_FieldOptions_Deprecated bool = false -+const Default_FieldOptions_Weak bool = false -+ -+func (m *FieldOptions) GetCtype() FieldOptions_CType { -+ if m != nil && m.Ctype != nil { -+ return *m.Ctype -+ } -+ return Default_FieldOptions_Ctype -+} -+ -+func (m *FieldOptions) GetPacked() bool { -+ if m != nil && m.Packed != nil { -+ return *m.Packed -+ } -+ return false -+} -+ -+func (m *FieldOptions) GetJstype() FieldOptions_JSType { -+ if m != nil && m.Jstype != nil { -+ return *m.Jstype -+ } -+ return Default_FieldOptions_Jstype -+} -+ -+func (m *FieldOptions) GetLazy() bool { -+ if m != nil && m.Lazy != nil { -+ return *m.Lazy -+ } -+ return Default_FieldOptions_Lazy -+} -+ -+func (m *FieldOptions) GetDeprecated() bool { -+ if m != nil && m.Deprecated != nil { -+ return *m.Deprecated -+ } -+ return Default_FieldOptions_Deprecated -+} -+ -+func (m *FieldOptions) GetWeak() bool { -+ if m != nil && m.Weak != nil { -+ return *m.Weak -+ } -+ return Default_FieldOptions_Weak -+} -+ -+func (m *FieldOptions) GetUninterpretedOption() []*UninterpretedOption { -+ if m != nil { -+ return m.UninterpretedOption -+ } -+ return nil -+} -+ -+type OneofOptions struct { -+ // The parser stores options it doesn't recognize here. See above. -+ UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ proto.XXX_InternalExtensions `json:"-"` -+ XXX_unrecognized []byte `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *OneofOptions) Reset() { *m = OneofOptions{} } -+func (m *OneofOptions) String() string { return proto.CompactTextString(m) } -+func (*OneofOptions) ProtoMessage() {} -+func (*OneofOptions) Descriptor() ([]byte, []int) { -+ return fileDescriptor_308767df5ffe18af, []int{13} -+} -+ -+var extRange_OneofOptions = []proto.ExtensionRange{ -+ {Start: 1000, End: 536870911}, -+} -+ -+func (*OneofOptions) ExtensionRangeArray() []proto.ExtensionRange { -+ return extRange_OneofOptions -+} -+ -+func (m *OneofOptions) XXX_Unmarshal(b []byte) error { -+ return xxx_messageInfo_OneofOptions.Unmarshal(m, b) -+} -+func (m *OneofOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ return xxx_messageInfo_OneofOptions.Marshal(b, m, deterministic) -+} -+func (m *OneofOptions) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_OneofOptions.Merge(m, src) -+} -+func (m *OneofOptions) XXX_Size() int { -+ return xxx_messageInfo_OneofOptions.Size(m) -+} -+func (m *OneofOptions) XXX_DiscardUnknown() { -+ xxx_messageInfo_OneofOptions.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_OneofOptions proto.InternalMessageInfo -+ -+func (m *OneofOptions) GetUninterpretedOption() []*UninterpretedOption { -+ if m != nil { -+ return m.UninterpretedOption -+ } -+ return nil -+} -+ -+type EnumOptions struct { -+ // Set this option to true to allow mapping different tag names to the same -+ // value. -+ AllowAlias *bool `protobuf:"varint,2,opt,name=allow_alias,json=allowAlias" json:"allow_alias,omitempty"` -+ // Is this enum deprecated? -+ // Depending on the target platform, this can emit Deprecated annotations -+ // for the enum, or it will be completely ignored; in the very least, this -+ // is a formalization for deprecating enums. -+ Deprecated *bool `protobuf:"varint,3,opt,name=deprecated,def=0" json:"deprecated,omitempty"` -+ // The parser stores options it doesn't recognize here. See above. -+ UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ proto.XXX_InternalExtensions `json:"-"` -+ XXX_unrecognized []byte `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *EnumOptions) Reset() { *m = EnumOptions{} } -+func (m *EnumOptions) String() string { return proto.CompactTextString(m) } -+func (*EnumOptions) ProtoMessage() {} -+func (*EnumOptions) Descriptor() ([]byte, []int) { -+ return fileDescriptor_308767df5ffe18af, []int{14} -+} -+ -+var extRange_EnumOptions = []proto.ExtensionRange{ -+ {Start: 1000, End: 536870911}, -+} -+ -+func (*EnumOptions) ExtensionRangeArray() []proto.ExtensionRange { -+ return extRange_EnumOptions -+} -+ -+func (m *EnumOptions) XXX_Unmarshal(b []byte) error { -+ return xxx_messageInfo_EnumOptions.Unmarshal(m, b) -+} -+func (m *EnumOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ return xxx_messageInfo_EnumOptions.Marshal(b, m, deterministic) -+} -+func (m *EnumOptions) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_EnumOptions.Merge(m, src) -+} -+func (m *EnumOptions) XXX_Size() int { -+ return xxx_messageInfo_EnumOptions.Size(m) -+} -+func (m *EnumOptions) XXX_DiscardUnknown() { -+ xxx_messageInfo_EnumOptions.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_EnumOptions proto.InternalMessageInfo -+ -+const Default_EnumOptions_Deprecated bool = false -+ -+func (m *EnumOptions) GetAllowAlias() bool { -+ if m != nil && m.AllowAlias != nil { -+ return *m.AllowAlias -+ } -+ return false -+} -+ -+func (m *EnumOptions) GetDeprecated() bool { -+ if m != nil && m.Deprecated != nil { -+ return *m.Deprecated -+ } -+ return Default_EnumOptions_Deprecated -+} -+ -+func (m *EnumOptions) GetUninterpretedOption() []*UninterpretedOption { -+ if m != nil { -+ return m.UninterpretedOption -+ } -+ return nil -+} -+ -+type EnumValueOptions struct { -+ // Is this enum value deprecated? -+ // Depending on the target platform, this can emit Deprecated annotations -+ // for the enum value, or it will be completely ignored; in the very least, -+ // this is a formalization for deprecating enum values. -+ Deprecated *bool `protobuf:"varint,1,opt,name=deprecated,def=0" json:"deprecated,omitempty"` -+ // The parser stores options it doesn't recognize here. See above. -+ UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ proto.XXX_InternalExtensions `json:"-"` -+ XXX_unrecognized []byte `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *EnumValueOptions) Reset() { *m = EnumValueOptions{} } -+func (m *EnumValueOptions) String() string { return proto.CompactTextString(m) } -+func (*EnumValueOptions) ProtoMessage() {} -+func (*EnumValueOptions) Descriptor() ([]byte, []int) { -+ return fileDescriptor_308767df5ffe18af, []int{15} -+} -+ -+var extRange_EnumValueOptions = []proto.ExtensionRange{ -+ {Start: 1000, End: 536870911}, -+} -+ -+func (*EnumValueOptions) ExtensionRangeArray() []proto.ExtensionRange { -+ return extRange_EnumValueOptions -+} -+ -+func (m *EnumValueOptions) XXX_Unmarshal(b []byte) error { -+ return xxx_messageInfo_EnumValueOptions.Unmarshal(m, b) -+} -+func (m *EnumValueOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ return xxx_messageInfo_EnumValueOptions.Marshal(b, m, deterministic) -+} -+func (m *EnumValueOptions) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_EnumValueOptions.Merge(m, src) -+} -+func (m *EnumValueOptions) XXX_Size() int { -+ return xxx_messageInfo_EnumValueOptions.Size(m) -+} -+func (m *EnumValueOptions) XXX_DiscardUnknown() { -+ xxx_messageInfo_EnumValueOptions.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_EnumValueOptions proto.InternalMessageInfo -+ -+const Default_EnumValueOptions_Deprecated bool = false -+ -+func (m *EnumValueOptions) GetDeprecated() bool { -+ if m != nil && m.Deprecated != nil { -+ return *m.Deprecated -+ } -+ return Default_EnumValueOptions_Deprecated -+} -+ -+func (m *EnumValueOptions) GetUninterpretedOption() []*UninterpretedOption { -+ if m != nil { -+ return m.UninterpretedOption -+ } -+ return nil -+} -+ -+type ServiceOptions struct { -+ // Is this service deprecated? -+ // Depending on the target platform, this can emit Deprecated annotations -+ // for the service, or it will be completely ignored; in the very least, -+ // this is a formalization for deprecating services. -+ Deprecated *bool `protobuf:"varint,33,opt,name=deprecated,def=0" json:"deprecated,omitempty"` -+ // The parser stores options it doesn't recognize here. See above. -+ UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ proto.XXX_InternalExtensions `json:"-"` -+ XXX_unrecognized []byte `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *ServiceOptions) Reset() { *m = ServiceOptions{} } -+func (m *ServiceOptions) String() string { return proto.CompactTextString(m) } -+func (*ServiceOptions) ProtoMessage() {} -+func (*ServiceOptions) Descriptor() ([]byte, []int) { -+ return fileDescriptor_308767df5ffe18af, []int{16} -+} -+ -+var extRange_ServiceOptions = []proto.ExtensionRange{ -+ {Start: 1000, End: 536870911}, -+} -+ -+func (*ServiceOptions) ExtensionRangeArray() []proto.ExtensionRange { -+ return extRange_ServiceOptions -+} -+ -+func (m *ServiceOptions) XXX_Unmarshal(b []byte) error { -+ return xxx_messageInfo_ServiceOptions.Unmarshal(m, b) -+} -+func (m *ServiceOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ return xxx_messageInfo_ServiceOptions.Marshal(b, m, deterministic) -+} -+func (m *ServiceOptions) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_ServiceOptions.Merge(m, src) -+} -+func (m *ServiceOptions) XXX_Size() int { -+ return xxx_messageInfo_ServiceOptions.Size(m) -+} -+func (m *ServiceOptions) XXX_DiscardUnknown() { -+ xxx_messageInfo_ServiceOptions.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_ServiceOptions proto.InternalMessageInfo -+ -+const Default_ServiceOptions_Deprecated bool = false -+ -+func (m *ServiceOptions) GetDeprecated() bool { -+ if m != nil && m.Deprecated != nil { -+ return *m.Deprecated -+ } -+ return Default_ServiceOptions_Deprecated -+} -+ -+func (m *ServiceOptions) GetUninterpretedOption() []*UninterpretedOption { -+ if m != nil { -+ return m.UninterpretedOption -+ } -+ return nil -+} -+ -+type MethodOptions struct { -+ // Is this method deprecated? -+ // Depending on the target platform, this can emit Deprecated annotations -+ // for the method, or it will be completely ignored; in the very least, -+ // this is a formalization for deprecating methods. -+ Deprecated *bool `protobuf:"varint,33,opt,name=deprecated,def=0" json:"deprecated,omitempty"` -+ IdempotencyLevel *MethodOptions_IdempotencyLevel `protobuf:"varint,34,opt,name=idempotency_level,json=idempotencyLevel,enum=google.protobuf.MethodOptions_IdempotencyLevel,def=0" json:"idempotency_level,omitempty"` -+ // The parser stores options it doesn't recognize here. See above. -+ UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ proto.XXX_InternalExtensions `json:"-"` -+ XXX_unrecognized []byte `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *MethodOptions) Reset() { *m = MethodOptions{} } -+func (m *MethodOptions) String() string { return proto.CompactTextString(m) } -+func (*MethodOptions) ProtoMessage() {} -+func (*MethodOptions) Descriptor() ([]byte, []int) { -+ return fileDescriptor_308767df5ffe18af, []int{17} -+} -+ -+var extRange_MethodOptions = []proto.ExtensionRange{ -+ {Start: 1000, End: 536870911}, -+} -+ -+func (*MethodOptions) ExtensionRangeArray() []proto.ExtensionRange { -+ return extRange_MethodOptions -+} -+ -+func (m *MethodOptions) XXX_Unmarshal(b []byte) error { -+ return xxx_messageInfo_MethodOptions.Unmarshal(m, b) -+} -+func (m *MethodOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ return xxx_messageInfo_MethodOptions.Marshal(b, m, deterministic) -+} -+func (m *MethodOptions) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_MethodOptions.Merge(m, src) -+} -+func (m *MethodOptions) XXX_Size() int { -+ return xxx_messageInfo_MethodOptions.Size(m) -+} -+func (m *MethodOptions) XXX_DiscardUnknown() { -+ xxx_messageInfo_MethodOptions.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_MethodOptions proto.InternalMessageInfo -+ -+const Default_MethodOptions_Deprecated bool = false -+const Default_MethodOptions_IdempotencyLevel MethodOptions_IdempotencyLevel = MethodOptions_IDEMPOTENCY_UNKNOWN -+ -+func (m *MethodOptions) GetDeprecated() bool { -+ if m != nil && m.Deprecated != nil { -+ return *m.Deprecated -+ } -+ return Default_MethodOptions_Deprecated -+} -+ -+func (m *MethodOptions) GetIdempotencyLevel() MethodOptions_IdempotencyLevel { -+ if m != nil && m.IdempotencyLevel != nil { -+ return *m.IdempotencyLevel -+ } -+ return Default_MethodOptions_IdempotencyLevel -+} -+ -+func (m *MethodOptions) GetUninterpretedOption() []*UninterpretedOption { -+ if m != nil { -+ return m.UninterpretedOption -+ } -+ return nil -+} -+ -+// A message representing a option the parser does not recognize. This only -+// appears in options protos created by the compiler::Parser class. -+// DescriptorPool resolves these when building Descriptor objects. Therefore, -+// options protos in descriptor objects (e.g. returned by Descriptor::options(), -+// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions -+// in them. -+type UninterpretedOption struct { -+ Name []*UninterpretedOption_NamePart `protobuf:"bytes,2,rep,name=name" json:"name,omitempty"` -+ // The value of the uninterpreted option, in whatever type the tokenizer -+ // identified it as during parsing. Exactly one of these should be set. -+ IdentifierValue *string `protobuf:"bytes,3,opt,name=identifier_value,json=identifierValue" json:"identifier_value,omitempty"` -+ PositiveIntValue *uint64 `protobuf:"varint,4,opt,name=positive_int_value,json=positiveIntValue" json:"positive_int_value,omitempty"` -+ NegativeIntValue *int64 `protobuf:"varint,5,opt,name=negative_int_value,json=negativeIntValue" json:"negative_int_value,omitempty"` -+ DoubleValue *float64 `protobuf:"fixed64,6,opt,name=double_value,json=doubleValue" json:"double_value,omitempty"` -+ StringValue []byte `protobuf:"bytes,7,opt,name=string_value,json=stringValue" json:"string_value,omitempty"` -+ AggregateValue *string `protobuf:"bytes,8,opt,name=aggregate_value,json=aggregateValue" json:"aggregate_value,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_unrecognized []byte `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *UninterpretedOption) Reset() { *m = UninterpretedOption{} } -+func (m *UninterpretedOption) String() string { return proto.CompactTextString(m) } -+func (*UninterpretedOption) ProtoMessage() {} -+func (*UninterpretedOption) Descriptor() ([]byte, []int) { -+ return fileDescriptor_308767df5ffe18af, []int{18} -+} -+func (m *UninterpretedOption) XXX_Unmarshal(b []byte) error { -+ return xxx_messageInfo_UninterpretedOption.Unmarshal(m, b) -+} -+func (m *UninterpretedOption) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ return xxx_messageInfo_UninterpretedOption.Marshal(b, m, deterministic) -+} -+func (m *UninterpretedOption) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_UninterpretedOption.Merge(m, src) -+} -+func (m *UninterpretedOption) XXX_Size() int { -+ return xxx_messageInfo_UninterpretedOption.Size(m) -+} -+func (m *UninterpretedOption) XXX_DiscardUnknown() { -+ xxx_messageInfo_UninterpretedOption.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_UninterpretedOption proto.InternalMessageInfo -+ -+func (m *UninterpretedOption) GetName() []*UninterpretedOption_NamePart { -+ if m != nil { -+ return m.Name -+ } -+ return nil -+} -+ -+func (m *UninterpretedOption) GetIdentifierValue() string { -+ if m != nil && m.IdentifierValue != nil { -+ return *m.IdentifierValue -+ } -+ return "" -+} -+ -+func (m *UninterpretedOption) GetPositiveIntValue() uint64 { -+ if m != nil && m.PositiveIntValue != nil { -+ return *m.PositiveIntValue -+ } -+ return 0 -+} -+ -+func (m *UninterpretedOption) GetNegativeIntValue() int64 { -+ if m != nil && m.NegativeIntValue != nil { -+ return *m.NegativeIntValue -+ } -+ return 0 -+} -+ -+func (m *UninterpretedOption) GetDoubleValue() float64 { -+ if m != nil && m.DoubleValue != nil { -+ return *m.DoubleValue -+ } -+ return 0 -+} -+ -+func (m *UninterpretedOption) GetStringValue() []byte { -+ if m != nil { -+ return m.StringValue -+ } -+ return nil -+} -+ -+func (m *UninterpretedOption) GetAggregateValue() string { -+ if m != nil && m.AggregateValue != nil { -+ return *m.AggregateValue -+ } -+ return "" -+} -+ -+// The name of the uninterpreted option. Each string represents a segment in -+// a dot-separated name. is_extension is true iff a segment represents an -+// extension (denoted with parentheses in options specs in .proto files). -+// E.g.,{ ["foo", false], ["bar.baz", true], ["qux", false] } represents -+// "foo.(bar.baz).qux". -+type UninterpretedOption_NamePart struct { -+ NamePart *string `protobuf:"bytes,1,req,name=name_part,json=namePart" json:"name_part,omitempty"` -+ IsExtension *bool `protobuf:"varint,2,req,name=is_extension,json=isExtension" json:"is_extension,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_unrecognized []byte `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *UninterpretedOption_NamePart) Reset() { *m = UninterpretedOption_NamePart{} } -+func (m *UninterpretedOption_NamePart) String() string { return proto.CompactTextString(m) } -+func (*UninterpretedOption_NamePart) ProtoMessage() {} -+func (*UninterpretedOption_NamePart) Descriptor() ([]byte, []int) { -+ return fileDescriptor_308767df5ffe18af, []int{18, 0} -+} -+func (m *UninterpretedOption_NamePart) XXX_Unmarshal(b []byte) error { -+ return xxx_messageInfo_UninterpretedOption_NamePart.Unmarshal(m, b) -+} -+func (m *UninterpretedOption_NamePart) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ return xxx_messageInfo_UninterpretedOption_NamePart.Marshal(b, m, deterministic) -+} -+func (m *UninterpretedOption_NamePart) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_UninterpretedOption_NamePart.Merge(m, src) -+} -+func (m *UninterpretedOption_NamePart) XXX_Size() int { -+ return xxx_messageInfo_UninterpretedOption_NamePart.Size(m) -+} -+func (m *UninterpretedOption_NamePart) XXX_DiscardUnknown() { -+ xxx_messageInfo_UninterpretedOption_NamePart.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_UninterpretedOption_NamePart proto.InternalMessageInfo -+ -+func (m *UninterpretedOption_NamePart) GetNamePart() string { -+ if m != nil && m.NamePart != nil { -+ return *m.NamePart -+ } -+ return "" -+} -+ -+func (m *UninterpretedOption_NamePart) GetIsExtension() bool { -+ if m != nil && m.IsExtension != nil { -+ return *m.IsExtension -+ } -+ return false -+} -+ -+// Encapsulates information about the original source file from which a -+// FileDescriptorProto was generated. -+type SourceCodeInfo struct { -+ // A Location identifies a piece of source code in a .proto file which -+ // corresponds to a particular definition. This information is intended -+ // to be useful to IDEs, code indexers, documentation generators, and similar -+ // tools. -+ // -+ // For example, say we have a file like: -+ // message Foo { -+ // optional string foo = 1; -+ // } -+ // Let's look at just the field definition: -+ // optional string foo = 1; -+ // ^ ^^ ^^ ^ ^^^ -+ // a bc de f ghi -+ // We have the following locations: -+ // span path represents -+ // [a,i) [ 4, 0, 2, 0 ] The whole field definition. -+ // [a,b) [ 4, 0, 2, 0, 4 ] The label (optional). -+ // [c,d) [ 4, 0, 2, 0, 5 ] The type (string). -+ // [e,f) [ 4, 0, 2, 0, 1 ] The name (foo). -+ // [g,h) [ 4, 0, 2, 0, 3 ] The number (1). -+ // -+ // Notes: -+ // - A location may refer to a repeated field itself (i.e. not to any -+ // particular index within it). This is used whenever a set of elements are -+ // logically enclosed in a single code segment. For example, an entire -+ // extend block (possibly containing multiple extension definitions) will -+ // have an outer location whose path refers to the "extensions" repeated -+ // field without an index. -+ // - Multiple locations may have the same path. This happens when a single -+ // logical declaration is spread out across multiple places. The most -+ // obvious example is the "extend" block again -- there may be multiple -+ // extend blocks in the same scope, each of which will have the same path. -+ // - A location's span is not always a subset of its parent's span. For -+ // example, the "extendee" of an extension declaration appears at the -+ // beginning of the "extend" block and is shared by all extensions within -+ // the block. -+ // - Just because a location's span is a subset of some other location's span -+ // does not mean that it is a descendant. For example, a "group" defines -+ // both a type and a field in a single declaration. Thus, the locations -+ // corresponding to the type and field and their components will overlap. -+ // - Code which tries to interpret locations should probably be designed to -+ // ignore those that it doesn't understand, as more types of locations could -+ // be recorded in the future. -+ Location []*SourceCodeInfo_Location `protobuf:"bytes,1,rep,name=location" json:"location,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_unrecognized []byte `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *SourceCodeInfo) Reset() { *m = SourceCodeInfo{} } -+func (m *SourceCodeInfo) String() string { return proto.CompactTextString(m) } -+func (*SourceCodeInfo) ProtoMessage() {} -+func (*SourceCodeInfo) Descriptor() ([]byte, []int) { -+ return fileDescriptor_308767df5ffe18af, []int{19} -+} -+func (m *SourceCodeInfo) XXX_Unmarshal(b []byte) error { -+ return xxx_messageInfo_SourceCodeInfo.Unmarshal(m, b) -+} -+func (m *SourceCodeInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ return xxx_messageInfo_SourceCodeInfo.Marshal(b, m, deterministic) -+} -+func (m *SourceCodeInfo) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_SourceCodeInfo.Merge(m, src) -+} -+func (m *SourceCodeInfo) XXX_Size() int { -+ return xxx_messageInfo_SourceCodeInfo.Size(m) -+} -+func (m *SourceCodeInfo) XXX_DiscardUnknown() { -+ xxx_messageInfo_SourceCodeInfo.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_SourceCodeInfo proto.InternalMessageInfo -+ -+func (m *SourceCodeInfo) GetLocation() []*SourceCodeInfo_Location { -+ if m != nil { -+ return m.Location -+ } -+ return nil -+} -+ -+type SourceCodeInfo_Location struct { -+ // Identifies which part of the FileDescriptorProto was defined at this -+ // location. -+ // -+ // Each element is a field number or an index. They form a path from -+ // the root FileDescriptorProto to the place where the definition. For -+ // example, this path: -+ // [ 4, 3, 2, 7, 1 ] -+ // refers to: -+ // file.message_type(3) // 4, 3 -+ // .field(7) // 2, 7 -+ // .name() // 1 -+ // This is because FileDescriptorProto.message_type has field number 4: -+ // repeated DescriptorProto message_type = 4; -+ // and DescriptorProto.field has field number 2: -+ // repeated FieldDescriptorProto field = 2; -+ // and FieldDescriptorProto.name has field number 1: -+ // optional string name = 1; -+ // -+ // Thus, the above path gives the location of a field name. If we removed -+ // the last element: -+ // [ 4, 3, 2, 7 ] -+ // this path refers to the whole field declaration (from the beginning -+ // of the label to the terminating semicolon). -+ Path []int32 `protobuf:"varint,1,rep,packed,name=path" json:"path,omitempty"` -+ // Always has exactly three or four elements: start line, start column, -+ // end line (optional, otherwise assumed same as start line), end column. -+ // These are packed into a single field for efficiency. Note that line -+ // and column numbers are zero-based -- typically you will want to add -+ // 1 to each before displaying to a user. -+ Span []int32 `protobuf:"varint,2,rep,packed,name=span" json:"span,omitempty"` -+ // If this SourceCodeInfo represents a complete declaration, these are any -+ // comments appearing before and after the declaration which appear to be -+ // attached to the declaration. -+ // -+ // A series of line comments appearing on consecutive lines, with no other -+ // tokens appearing on those lines, will be treated as a single comment. -+ // -+ // leading_detached_comments will keep paragraphs of comments that appear -+ // before (but not connected to) the current element. Each paragraph, -+ // separated by empty lines, will be one comment element in the repeated -+ // field. -+ // -+ // Only the comment content is provided; comment markers (e.g. //) are -+ // stripped out. For block comments, leading whitespace and an asterisk -+ // will be stripped from the beginning of each line other than the first. -+ // Newlines are included in the output. -+ // -+ // Examples: -+ // -+ // optional int32 foo = 1; // Comment attached to foo. -+ // // Comment attached to bar. -+ // optional int32 bar = 2; -+ // -+ // optional string baz = 3; -+ // // Comment attached to baz. -+ // // Another line attached to baz. -+ // -+ // // Comment attached to qux. -+ // // -+ // // Another line attached to qux. -+ // optional double qux = 4; -+ // -+ // // Detached comment for corge. This is not leading or trailing comments -+ // // to qux or corge because there are blank lines separating it from -+ // // both. -+ // -+ // // Detached comment for corge paragraph 2. -+ // -+ // optional string corge = 5; -+ // /* Block comment attached -+ // * to corge. Leading asterisks -+ // * will be removed. */ -+ // /* Block comment attached to -+ // * grault. */ -+ // optional int32 grault = 6; -+ // -+ // // ignored detached comments. -+ LeadingComments *string `protobuf:"bytes,3,opt,name=leading_comments,json=leadingComments" json:"leading_comments,omitempty"` -+ TrailingComments *string `protobuf:"bytes,4,opt,name=trailing_comments,json=trailingComments" json:"trailing_comments,omitempty"` -+ LeadingDetachedComments []string `protobuf:"bytes,6,rep,name=leading_detached_comments,json=leadingDetachedComments" json:"leading_detached_comments,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_unrecognized []byte `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *SourceCodeInfo_Location) Reset() { *m = SourceCodeInfo_Location{} } -+func (m *SourceCodeInfo_Location) String() string { return proto.CompactTextString(m) } -+func (*SourceCodeInfo_Location) ProtoMessage() {} -+func (*SourceCodeInfo_Location) Descriptor() ([]byte, []int) { -+ return fileDescriptor_308767df5ffe18af, []int{19, 0} -+} -+func (m *SourceCodeInfo_Location) XXX_Unmarshal(b []byte) error { -+ return xxx_messageInfo_SourceCodeInfo_Location.Unmarshal(m, b) -+} -+func (m *SourceCodeInfo_Location) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ return xxx_messageInfo_SourceCodeInfo_Location.Marshal(b, m, deterministic) -+} -+func (m *SourceCodeInfo_Location) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_SourceCodeInfo_Location.Merge(m, src) -+} -+func (m *SourceCodeInfo_Location) XXX_Size() int { -+ return xxx_messageInfo_SourceCodeInfo_Location.Size(m) -+} -+func (m *SourceCodeInfo_Location) XXX_DiscardUnknown() { -+ xxx_messageInfo_SourceCodeInfo_Location.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_SourceCodeInfo_Location proto.InternalMessageInfo -+ -+func (m *SourceCodeInfo_Location) GetPath() []int32 { -+ if m != nil { -+ return m.Path -+ } -+ return nil -+} -+ -+func (m *SourceCodeInfo_Location) GetSpan() []int32 { -+ if m != nil { -+ return m.Span -+ } -+ return nil -+} -+ -+func (m *SourceCodeInfo_Location) GetLeadingComments() string { -+ if m != nil && m.LeadingComments != nil { -+ return *m.LeadingComments -+ } -+ return "" -+} -+ -+func (m *SourceCodeInfo_Location) GetTrailingComments() string { -+ if m != nil && m.TrailingComments != nil { -+ return *m.TrailingComments -+ } -+ return "" -+} -+ -+func (m *SourceCodeInfo_Location) GetLeadingDetachedComments() []string { -+ if m != nil { -+ return m.LeadingDetachedComments -+ } -+ return nil -+} -+ -+// Describes the relationship between generated code and its original source -+// file. A GeneratedCodeInfo message is associated with only one generated -+// source file, but may contain references to different source .proto files. -+type GeneratedCodeInfo struct { -+ // An Annotation connects some span of text in generated code to an element -+ // of its generating .proto file. -+ Annotation []*GeneratedCodeInfo_Annotation `protobuf:"bytes,1,rep,name=annotation" json:"annotation,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_unrecognized []byte `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *GeneratedCodeInfo) Reset() { *m = GeneratedCodeInfo{} } -+func (m *GeneratedCodeInfo) String() string { return proto.CompactTextString(m) } -+func (*GeneratedCodeInfo) ProtoMessage() {} -+func (*GeneratedCodeInfo) Descriptor() ([]byte, []int) { -+ return fileDescriptor_308767df5ffe18af, []int{20} -+} -+func (m *GeneratedCodeInfo) XXX_Unmarshal(b []byte) error { -+ return xxx_messageInfo_GeneratedCodeInfo.Unmarshal(m, b) -+} -+func (m *GeneratedCodeInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ return xxx_messageInfo_GeneratedCodeInfo.Marshal(b, m, deterministic) -+} -+func (m *GeneratedCodeInfo) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_GeneratedCodeInfo.Merge(m, src) -+} -+func (m *GeneratedCodeInfo) XXX_Size() int { -+ return xxx_messageInfo_GeneratedCodeInfo.Size(m) -+} -+func (m *GeneratedCodeInfo) XXX_DiscardUnknown() { -+ xxx_messageInfo_GeneratedCodeInfo.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_GeneratedCodeInfo proto.InternalMessageInfo -+ -+func (m *GeneratedCodeInfo) GetAnnotation() []*GeneratedCodeInfo_Annotation { -+ if m != nil { -+ return m.Annotation -+ } -+ return nil -+} -+ -+type GeneratedCodeInfo_Annotation struct { -+ // Identifies the element in the original source .proto file. This field -+ // is formatted the same as SourceCodeInfo.Location.path. -+ Path []int32 `protobuf:"varint,1,rep,packed,name=path" json:"path,omitempty"` -+ // Identifies the filesystem path to the original source .proto. -+ SourceFile *string `protobuf:"bytes,2,opt,name=source_file,json=sourceFile" json:"source_file,omitempty"` -+ // Identifies the starting offset in bytes in the generated code -+ // that relates to the identified object. -+ Begin *int32 `protobuf:"varint,3,opt,name=begin" json:"begin,omitempty"` -+ // Identifies the ending offset in bytes in the generated code that -+ // relates to the identified offset. The end offset should be one past -+ // the last relevant byte (so the length of the text = end - begin). -+ End *int32 `protobuf:"varint,4,opt,name=end" json:"end,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_unrecognized []byte `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *GeneratedCodeInfo_Annotation) Reset() { *m = GeneratedCodeInfo_Annotation{} } -+func (m *GeneratedCodeInfo_Annotation) String() string { return proto.CompactTextString(m) } -+func (*GeneratedCodeInfo_Annotation) ProtoMessage() {} -+func (*GeneratedCodeInfo_Annotation) Descriptor() ([]byte, []int) { -+ return fileDescriptor_308767df5ffe18af, []int{20, 0} -+} -+func (m *GeneratedCodeInfo_Annotation) XXX_Unmarshal(b []byte) error { -+ return xxx_messageInfo_GeneratedCodeInfo_Annotation.Unmarshal(m, b) -+} -+func (m *GeneratedCodeInfo_Annotation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ return xxx_messageInfo_GeneratedCodeInfo_Annotation.Marshal(b, m, deterministic) -+} -+func (m *GeneratedCodeInfo_Annotation) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_GeneratedCodeInfo_Annotation.Merge(m, src) -+} -+func (m *GeneratedCodeInfo_Annotation) XXX_Size() int { -+ return xxx_messageInfo_GeneratedCodeInfo_Annotation.Size(m) -+} -+func (m *GeneratedCodeInfo_Annotation) XXX_DiscardUnknown() { -+ xxx_messageInfo_GeneratedCodeInfo_Annotation.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_GeneratedCodeInfo_Annotation proto.InternalMessageInfo -+ -+func (m *GeneratedCodeInfo_Annotation) GetPath() []int32 { -+ if m != nil { -+ return m.Path -+ } -+ return nil -+} -+ -+func (m *GeneratedCodeInfo_Annotation) GetSourceFile() string { -+ if m != nil && m.SourceFile != nil { -+ return *m.SourceFile -+ } -+ return "" -+} -+ -+func (m *GeneratedCodeInfo_Annotation) GetBegin() int32 { -+ if m != nil && m.Begin != nil { -+ return *m.Begin -+ } -+ return 0 -+} -+ -+func (m *GeneratedCodeInfo_Annotation) GetEnd() int32 { -+ if m != nil && m.End != nil { -+ return *m.End -+ } -+ return 0 -+} -+ -+func init() { -+ proto.RegisterEnum("google.protobuf.FieldDescriptorProto_Type", FieldDescriptorProto_Type_name, FieldDescriptorProto_Type_value) -+ proto.RegisterEnum("google.protobuf.FieldDescriptorProto_Label", FieldDescriptorProto_Label_name, FieldDescriptorProto_Label_value) -+ proto.RegisterEnum("google.protobuf.FileOptions_OptimizeMode", FileOptions_OptimizeMode_name, FileOptions_OptimizeMode_value) -+ proto.RegisterEnum("google.protobuf.FieldOptions_CType", FieldOptions_CType_name, FieldOptions_CType_value) -+ proto.RegisterEnum("google.protobuf.FieldOptions_JSType", FieldOptions_JSType_name, FieldOptions_JSType_value) -+ proto.RegisterEnum("google.protobuf.MethodOptions_IdempotencyLevel", MethodOptions_IdempotencyLevel_name, MethodOptions_IdempotencyLevel_value) -+ proto.RegisterType((*FileDescriptorSet)(nil), "google.protobuf.FileDescriptorSet") -+ proto.RegisterType((*FileDescriptorProto)(nil), "google.protobuf.FileDescriptorProto") -+ proto.RegisterType((*DescriptorProto)(nil), "google.protobuf.DescriptorProto") -+ proto.RegisterType((*DescriptorProto_ExtensionRange)(nil), "google.protobuf.DescriptorProto.ExtensionRange") -+ proto.RegisterType((*DescriptorProto_ReservedRange)(nil), "google.protobuf.DescriptorProto.ReservedRange") -+ proto.RegisterType((*ExtensionRangeOptions)(nil), "google.protobuf.ExtensionRangeOptions") -+ proto.RegisterType((*FieldDescriptorProto)(nil), "google.protobuf.FieldDescriptorProto") -+ proto.RegisterType((*OneofDescriptorProto)(nil), "google.protobuf.OneofDescriptorProto") -+ proto.RegisterType((*EnumDescriptorProto)(nil), "google.protobuf.EnumDescriptorProto") -+ proto.RegisterType((*EnumDescriptorProto_EnumReservedRange)(nil), "google.protobuf.EnumDescriptorProto.EnumReservedRange") -+ proto.RegisterType((*EnumValueDescriptorProto)(nil), "google.protobuf.EnumValueDescriptorProto") -+ proto.RegisterType((*ServiceDescriptorProto)(nil), "google.protobuf.ServiceDescriptorProto") -+ proto.RegisterType((*MethodDescriptorProto)(nil), "google.protobuf.MethodDescriptorProto") -+ proto.RegisterType((*FileOptions)(nil), "google.protobuf.FileOptions") -+ proto.RegisterType((*MessageOptions)(nil), "google.protobuf.MessageOptions") -+ proto.RegisterType((*FieldOptions)(nil), "google.protobuf.FieldOptions") -+ proto.RegisterType((*OneofOptions)(nil), "google.protobuf.OneofOptions") -+ proto.RegisterType((*EnumOptions)(nil), "google.protobuf.EnumOptions") -+ proto.RegisterType((*EnumValueOptions)(nil), "google.protobuf.EnumValueOptions") -+ proto.RegisterType((*ServiceOptions)(nil), "google.protobuf.ServiceOptions") -+ proto.RegisterType((*MethodOptions)(nil), "google.protobuf.MethodOptions") -+ proto.RegisterType((*UninterpretedOption)(nil), "google.protobuf.UninterpretedOption") -+ proto.RegisterType((*UninterpretedOption_NamePart)(nil), "google.protobuf.UninterpretedOption.NamePart") -+ proto.RegisterType((*SourceCodeInfo)(nil), "google.protobuf.SourceCodeInfo") -+ proto.RegisterType((*SourceCodeInfo_Location)(nil), "google.protobuf.SourceCodeInfo.Location") -+ proto.RegisterType((*GeneratedCodeInfo)(nil), "google.protobuf.GeneratedCodeInfo") -+ proto.RegisterType((*GeneratedCodeInfo_Annotation)(nil), "google.protobuf.GeneratedCodeInfo.Annotation") -+} -+ -+func init() { proto.RegisterFile("descriptor.proto", fileDescriptor_308767df5ffe18af) } -+ -+var fileDescriptor_308767df5ffe18af = []byte{ -+ // 2522 bytes of a gzipped FileDescriptorProto -+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x59, 0xcd, 0x6f, 0xdb, 0xc8, -+ 0x15, 0x5f, 0x7d, 0x5a, 0x7a, 0x92, 0x65, 0x7a, 0xec, 0x75, 0x18, 0xef, 0x47, 0x1c, 0xed, 0x66, -+ 0xe3, 0x24, 0xbb, 0xca, 0xc2, 0x49, 0x9c, 0xac, 0x53, 0x6c, 0x2b, 0x4b, 0x8c, 0x57, 0xa9, 0xbe, -+ 0x4a, 0xc9, 0xdd, 0x64, 0x8b, 0x82, 0x18, 0x93, 0x23, 0x89, 0x09, 0x45, 0x72, 0x49, 0x2a, 0x89, -+ 0x83, 0x1e, 0x02, 0xf4, 0x54, 0xa0, 0x7f, 0x40, 0x51, 0x14, 0x3d, 0xf4, 0xb2, 0x40, 0xff, 0x80, -+ 0x02, 0xed, 0xbd, 0xd7, 0x02, 0xbd, 0xf7, 0x50, 0xa0, 0x05, 0xda, 0x3f, 0xa1, 0xc7, 0x62, 0x66, -+ 0x48, 0x8a, 0xd4, 0x47, 0xe2, 0x5d, 0x20, 0xd9, 0x93, 0x3d, 0xef, 0xfd, 0xde, 0x9b, 0x37, 0x8f, -+ 0xbf, 0x79, 0xf3, 0x66, 0x04, 0x82, 0x46, 0x5c, 0xd5, 0xd1, 0x6d, 0xcf, 0x72, 0x2a, 0xb6, 0x63, -+ 0x79, 0x16, 0x5a, 0x1b, 0x5a, 0xd6, 0xd0, 0x20, 0x7c, 0x74, 0x32, 0x19, 0x94, 0x5b, 0xb0, 0x7e, -+ 0x4f, 0x37, 0x48, 0x3d, 0x04, 0xf6, 0x88, 0x87, 0xee, 0x40, 0x7a, 0xa0, 0x1b, 0x44, 0x4c, 0xec, -+ 0xa4, 0x76, 0x0b, 0x7b, 0x1f, 0x56, 0x66, 0x8c, 0x2a, 0x71, 0x8b, 0x2e, 0x15, 0xcb, 0xcc, 0xa2, -+ 0xfc, 0xef, 0x34, 0x6c, 0x2c, 0xd0, 0x22, 0x04, 0x69, 0x13, 0x8f, 0xa9, 0xc7, 0xc4, 0x6e, 0x5e, -+ 0x66, 0xff, 0x23, 0x11, 0x56, 0x6c, 0xac, 0x3e, 0xc6, 0x43, 0x22, 0x26, 0x99, 0x38, 0x18, 0xa2, -+ 0xf7, 0x01, 0x34, 0x62, 0x13, 0x53, 0x23, 0xa6, 0x7a, 0x2a, 0xa6, 0x76, 0x52, 0xbb, 0x79, 0x39, -+ 0x22, 0x41, 0xd7, 0x60, 0xdd, 0x9e, 0x9c, 0x18, 0xba, 0xaa, 0x44, 0x60, 0xb0, 0x93, 0xda, 0xcd, -+ 0xc8, 0x02, 0x57, 0xd4, 0xa7, 0xe0, 0xcb, 0xb0, 0xf6, 0x94, 0xe0, 0xc7, 0x51, 0x68, 0x81, 0x41, -+ 0x4b, 0x54, 0x1c, 0x01, 0xd6, 0xa0, 0x38, 0x26, 0xae, 0x8b, 0x87, 0x44, 0xf1, 0x4e, 0x6d, 0x22, -+ 0xa6, 0xd9, 0xea, 0x77, 0xe6, 0x56, 0x3f, 0xbb, 0xf2, 0x82, 0x6f, 0xd5, 0x3f, 0xb5, 0x09, 0xaa, -+ 0x42, 0x9e, 0x98, 0x93, 0x31, 0xf7, 0x90, 0x59, 0x92, 0x3f, 0xc9, 0x9c, 0x8c, 0x67, 0xbd, 0xe4, -+ 0xa8, 0x99, 0xef, 0x62, 0xc5, 0x25, 0xce, 0x13, 0x5d, 0x25, 0x62, 0x96, 0x39, 0xb8, 0x3c, 0xe7, -+ 0xa0, 0xc7, 0xf5, 0xb3, 0x3e, 0x02, 0x3b, 0x54, 0x83, 0x3c, 0x79, 0xe6, 0x11, 0xd3, 0xd5, 0x2d, -+ 0x53, 0x5c, 0x61, 0x4e, 0x2e, 0x2d, 0xf8, 0x8a, 0xc4, 0xd0, 0x66, 0x5d, 0x4c, 0xed, 0xd0, 0x3e, -+ 0xac, 0x58, 0xb6, 0xa7, 0x5b, 0xa6, 0x2b, 0xe6, 0x76, 0x12, 0xbb, 0x85, 0xbd, 0x77, 0x17, 0x12, -+ 0xa1, 0xc3, 0x31, 0x72, 0x00, 0x46, 0x0d, 0x10, 0x5c, 0x6b, 0xe2, 0xa8, 0x44, 0x51, 0x2d, 0x8d, -+ 0x28, 0xba, 0x39, 0xb0, 0xc4, 0x3c, 0x73, 0x70, 0x61, 0x7e, 0x21, 0x0c, 0x58, 0xb3, 0x34, 0xd2, -+ 0x30, 0x07, 0x96, 0x5c, 0x72, 0x63, 0x63, 0xb4, 0x05, 0x59, 0xf7, 0xd4, 0xf4, 0xf0, 0x33, 0xb1, -+ 0xc8, 0x18, 0xe2, 0x8f, 0xca, 0x7f, 0xce, 0xc2, 0xda, 0x59, 0x28, 0x76, 0x17, 0x32, 0x03, 0xba, -+ 0x4a, 0x31, 0xf9, 0x6d, 0x72, 0xc0, 0x6d, 0xe2, 0x49, 0xcc, 0x7e, 0xc7, 0x24, 0x56, 0xa1, 0x60, -+ 0x12, 0xd7, 0x23, 0x1a, 0x67, 0x44, 0xea, 0x8c, 0x9c, 0x02, 0x6e, 0x34, 0x4f, 0xa9, 0xf4, 0x77, -+ 0xa2, 0xd4, 0x03, 0x58, 0x0b, 0x43, 0x52, 0x1c, 0x6c, 0x0e, 0x03, 0x6e, 0x5e, 0x7f, 0x55, 0x24, -+ 0x15, 0x29, 0xb0, 0x93, 0xa9, 0x99, 0x5c, 0x22, 0xb1, 0x31, 0xaa, 0x03, 0x58, 0x26, 0xb1, 0x06, -+ 0x8a, 0x46, 0x54, 0x43, 0xcc, 0x2d, 0xc9, 0x52, 0x87, 0x42, 0xe6, 0xb2, 0x64, 0x71, 0xa9, 0x6a, -+ 0xa0, 0xcf, 0xa6, 0x54, 0x5b, 0x59, 0xc2, 0x94, 0x16, 0xdf, 0x64, 0x73, 0x6c, 0x3b, 0x86, 0x92, -+ 0x43, 0x28, 0xef, 0x89, 0xe6, 0xaf, 0x2c, 0xcf, 0x82, 0xa8, 0xbc, 0x72, 0x65, 0xb2, 0x6f, 0xc6, -+ 0x17, 0xb6, 0xea, 0x44, 0x87, 0xe8, 0x03, 0x08, 0x05, 0x0a, 0xa3, 0x15, 0xb0, 0x2a, 0x54, 0x0c, -+ 0x84, 0x6d, 0x3c, 0x26, 0xdb, 0xcf, 0xa1, 0x14, 0x4f, 0x0f, 0xda, 0x84, 0x8c, 0xeb, 0x61, 0xc7, -+ 0x63, 0x2c, 0xcc, 0xc8, 0x7c, 0x80, 0x04, 0x48, 0x11, 0x53, 0x63, 0x55, 0x2e, 0x23, 0xd3, 0x7f, -+ 0xd1, 0x8f, 0xa6, 0x0b, 0x4e, 0xb1, 0x05, 0x7f, 0x34, 0xff, 0x45, 0x63, 0x9e, 0x67, 0xd7, 0xbd, -+ 0x7d, 0x1b, 0x56, 0x63, 0x0b, 0x38, 0xeb, 0xd4, 0xe5, 0x5f, 0xc0, 0xdb, 0x0b, 0x5d, 0xa3, 0x07, -+ 0xb0, 0x39, 0x31, 0x75, 0xd3, 0x23, 0x8e, 0xed, 0x10, 0xca, 0x58, 0x3e, 0x95, 0xf8, 0x9f, 0x95, -+ 0x25, 0x9c, 0x3b, 0x8e, 0xa2, 0xb9, 0x17, 0x79, 0x63, 0x32, 0x2f, 0xbc, 0x9a, 0xcf, 0xfd, 0x77, -+ 0x45, 0x78, 0xf1, 0xe2, 0xc5, 0x8b, 0x64, 0xf9, 0x37, 0x59, 0xd8, 0x5c, 0xb4, 0x67, 0x16, 0x6e, -+ 0xdf, 0x2d, 0xc8, 0x9a, 0x93, 0xf1, 0x09, 0x71, 0x58, 0x92, 0x32, 0xb2, 0x3f, 0x42, 0x55, 0xc8, -+ 0x18, 0xf8, 0x84, 0x18, 0x62, 0x7a, 0x27, 0xb1, 0x5b, 0xda, 0xbb, 0x76, 0xa6, 0x5d, 0x59, 0x69, -+ 0x52, 0x13, 0x99, 0x5b, 0xa2, 0xcf, 0x21, 0xed, 0x97, 0x68, 0xea, 0xe1, 0xea, 0xd9, 0x3c, 0xd0, -+ 0xbd, 0x24, 0x33, 0x3b, 0xf4, 0x0e, 0xe4, 0xe9, 0x5f, 0xce, 0x8d, 0x2c, 0x8b, 0x39, 0x47, 0x05, -+ 0x94, 0x17, 0x68, 0x1b, 0x72, 0x6c, 0x9b, 0x68, 0x24, 0x38, 0xda, 0xc2, 0x31, 0x25, 0x96, 0x46, -+ 0x06, 0x78, 0x62, 0x78, 0xca, 0x13, 0x6c, 0x4c, 0x08, 0x23, 0x7c, 0x5e, 0x2e, 0xfa, 0xc2, 0x9f, -+ 0x52, 0x19, 0xba, 0x00, 0x05, 0xbe, 0xab, 0x74, 0x53, 0x23, 0xcf, 0x58, 0xf5, 0xcc, 0xc8, 0x7c, -+ 0xa3, 0x35, 0xa8, 0x84, 0x4e, 0xff, 0xc8, 0xb5, 0xcc, 0x80, 0x9a, 0x6c, 0x0a, 0x2a, 0x60, 0xd3, -+ 0xdf, 0x9e, 0x2d, 0xdc, 0xef, 0x2d, 0x5e, 0xde, 0x2c, 0xa7, 0xca, 0x7f, 0x4a, 0x42, 0x9a, 0xd5, -+ 0x8b, 0x35, 0x28, 0xf4, 0x1f, 0x76, 0x25, 0xa5, 0xde, 0x39, 0x3e, 0x6c, 0x4a, 0x42, 0x02, 0x95, -+ 0x00, 0x98, 0xe0, 0x5e, 0xb3, 0x53, 0xed, 0x0b, 0xc9, 0x70, 0xdc, 0x68, 0xf7, 0xf7, 0x6f, 0x0a, -+ 0xa9, 0xd0, 0xe0, 0x98, 0x0b, 0xd2, 0x51, 0xc0, 0x8d, 0x3d, 0x21, 0x83, 0x04, 0x28, 0x72, 0x07, -+ 0x8d, 0x07, 0x52, 0x7d, 0xff, 0xa6, 0x90, 0x8d, 0x4b, 0x6e, 0xec, 0x09, 0x2b, 0x68, 0x15, 0xf2, -+ 0x4c, 0x72, 0xd8, 0xe9, 0x34, 0x85, 0x5c, 0xe8, 0xb3, 0xd7, 0x97, 0x1b, 0xed, 0x23, 0x21, 0x1f, -+ 0xfa, 0x3c, 0x92, 0x3b, 0xc7, 0x5d, 0x01, 0x42, 0x0f, 0x2d, 0xa9, 0xd7, 0xab, 0x1e, 0x49, 0x42, -+ 0x21, 0x44, 0x1c, 0x3e, 0xec, 0x4b, 0x3d, 0xa1, 0x18, 0x0b, 0xeb, 0xc6, 0x9e, 0xb0, 0x1a, 0x4e, -+ 0x21, 0xb5, 0x8f, 0x5b, 0x42, 0x09, 0xad, 0xc3, 0x2a, 0x9f, 0x22, 0x08, 0x62, 0x6d, 0x46, 0xb4, -+ 0x7f, 0x53, 0x10, 0xa6, 0x81, 0x70, 0x2f, 0xeb, 0x31, 0xc1, 0xfe, 0x4d, 0x01, 0x95, 0x6b, 0x90, -+ 0x61, 0xec, 0x42, 0x08, 0x4a, 0xcd, 0xea, 0xa1, 0xd4, 0x54, 0x3a, 0xdd, 0x7e, 0xa3, 0xd3, 0xae, -+ 0x36, 0x85, 0xc4, 0x54, 0x26, 0x4b, 0x3f, 0x39, 0x6e, 0xc8, 0x52, 0x5d, 0x48, 0x46, 0x65, 0x5d, -+ 0xa9, 0xda, 0x97, 0xea, 0x42, 0xaa, 0xac, 0xc2, 0xe6, 0xa2, 0x3a, 0xb9, 0x70, 0x67, 0x44, 0x3e, -+ 0x71, 0x72, 0xc9, 0x27, 0x66, 0xbe, 0xe6, 0x3e, 0xf1, 0xbf, 0x92, 0xb0, 0xb1, 0xe0, 0xac, 0x58, -+ 0x38, 0xc9, 0x0f, 0x21, 0xc3, 0x29, 0xca, 0x4f, 0xcf, 0x2b, 0x0b, 0x0f, 0x1d, 0x46, 0xd8, 0xb9, -+ 0x13, 0x94, 0xd9, 0x45, 0x3b, 0x88, 0xd4, 0x92, 0x0e, 0x82, 0xba, 0x98, 0xab, 0xe9, 0x3f, 0x9f, -+ 0xab, 0xe9, 0xfc, 0xd8, 0xdb, 0x3f, 0xcb, 0xb1, 0xc7, 0x64, 0xdf, 0xae, 0xb6, 0x67, 0x16, 0xd4, -+ 0xf6, 0xbb, 0xb0, 0x3e, 0xe7, 0xe8, 0xcc, 0x35, 0xf6, 0x97, 0x09, 0x10, 0x97, 0x25, 0xe7, 0x15, -+ 0x95, 0x2e, 0x19, 0xab, 0x74, 0x77, 0x67, 0x33, 0x78, 0x71, 0xf9, 0x47, 0x98, 0xfb, 0xd6, 0xdf, -+ 0x24, 0x60, 0x6b, 0x71, 0xa7, 0xb8, 0x30, 0x86, 0xcf, 0x21, 0x3b, 0x26, 0xde, 0xc8, 0x0a, 0xba, -+ 0xa5, 0x8f, 0x16, 0x9c, 0xc1, 0x54, 0x3d, 0xfb, 0xb1, 0x7d, 0xab, 0xe8, 0x21, 0x9e, 0x5a, 0xd6, -+ 0xee, 0xf1, 0x68, 0xe6, 0x22, 0xfd, 0x55, 0x12, 0xde, 0x5e, 0xe8, 0x7c, 0x61, 0xa0, 0xef, 0x01, -+ 0xe8, 0xa6, 0x3d, 0xf1, 0x78, 0x47, 0xc4, 0x0b, 0x6c, 0x9e, 0x49, 0x58, 0xf1, 0xa2, 0xc5, 0x73, -+ 0xe2, 0x85, 0xfa, 0x14, 0xd3, 0x03, 0x17, 0x31, 0xc0, 0x9d, 0x69, 0xa0, 0x69, 0x16, 0xe8, 0xfb, -+ 0x4b, 0x56, 0x3a, 0x47, 0xcc, 0x4f, 0x41, 0x50, 0x0d, 0x9d, 0x98, 0x9e, 0xe2, 0x7a, 0x0e, 0xc1, -+ 0x63, 0xdd, 0x1c, 0xb2, 0x13, 0x24, 0x77, 0x90, 0x19, 0x60, 0xc3, 0x25, 0xf2, 0x1a, 0x57, 0xf7, -+ 0x02, 0x2d, 0xb5, 0x60, 0x04, 0x72, 0x22, 0x16, 0xd9, 0x98, 0x05, 0x57, 0x87, 0x16, 0xe5, 0x5f, -+ 0xe7, 0xa1, 0x10, 0xe9, 0xab, 0xd1, 0x45, 0x28, 0x3e, 0xc2, 0x4f, 0xb0, 0x12, 0xdc, 0x95, 0x78, -+ 0x26, 0x0a, 0x54, 0xd6, 0xf5, 0xef, 0x4b, 0x9f, 0xc2, 0x26, 0x83, 0x58, 0x13, 0x8f, 0x38, 0x8a, -+ 0x6a, 0x60, 0xd7, 0x65, 0x49, 0xcb, 0x31, 0x28, 0xa2, 0xba, 0x0e, 0x55, 0xd5, 0x02, 0x0d, 0xba, -+ 0x05, 0x1b, 0xcc, 0x62, 0x3c, 0x31, 0x3c, 0xdd, 0x36, 0x88, 0x42, 0x6f, 0x6f, 0x2e, 0x3b, 0x49, -+ 0xc2, 0xc8, 0xd6, 0x29, 0xa2, 0xe5, 0x03, 0x68, 0x44, 0x2e, 0xaa, 0xc3, 0x7b, 0xcc, 0x6c, 0x48, -+ 0x4c, 0xe2, 0x60, 0x8f, 0x28, 0xe4, 0xeb, 0x09, 0x36, 0x5c, 0x05, 0x9b, 0x9a, 0x32, 0xc2, 0xee, -+ 0x48, 0xdc, 0xa4, 0x0e, 0x0e, 0x93, 0x62, 0x42, 0x3e, 0x4f, 0x81, 0x47, 0x3e, 0x4e, 0x62, 0xb0, -+ 0xaa, 0xa9, 0x7d, 0x81, 0xdd, 0x11, 0x3a, 0x80, 0x2d, 0xe6, 0xc5, 0xf5, 0x1c, 0xdd, 0x1c, 0x2a, -+ 0xea, 0x88, 0xa8, 0x8f, 0x95, 0x89, 0x37, 0xb8, 0x23, 0xbe, 0x13, 0x9d, 0x9f, 0x45, 0xd8, 0x63, -+ 0x98, 0x1a, 0x85, 0x1c, 0x7b, 0x83, 0x3b, 0xa8, 0x07, 0x45, 0xfa, 0x31, 0xc6, 0xfa, 0x73, 0xa2, -+ 0x0c, 0x2c, 0x87, 0x1d, 0x8d, 0xa5, 0x05, 0xa5, 0x29, 0x92, 0xc1, 0x4a, 0xc7, 0x37, 0x68, 0x59, -+ 0x1a, 0x39, 0xc8, 0xf4, 0xba, 0x92, 0x54, 0x97, 0x0b, 0x81, 0x97, 0x7b, 0x96, 0x43, 0x09, 0x35, -+ 0xb4, 0xc2, 0x04, 0x17, 0x38, 0xa1, 0x86, 0x56, 0x90, 0xde, 0x5b, 0xb0, 0xa1, 0xaa, 0x7c, 0xcd, -+ 0xba, 0xaa, 0xf8, 0x77, 0x2c, 0x57, 0x14, 0x62, 0xc9, 0x52, 0xd5, 0x23, 0x0e, 0xf0, 0x39, 0xee, -+ 0xa2, 0xcf, 0xe0, 0xed, 0x69, 0xb2, 0xa2, 0x86, 0xeb, 0x73, 0xab, 0x9c, 0x35, 0xbd, 0x05, 0x1b, -+ 0xf6, 0xe9, 0xbc, 0x21, 0x8a, 0xcd, 0x68, 0x9f, 0xce, 0x9a, 0xdd, 0x86, 0x4d, 0x7b, 0x64, 0xcf, -+ 0xdb, 0x5d, 0x8d, 0xda, 0x21, 0x7b, 0x64, 0xcf, 0x1a, 0x5e, 0x62, 0x17, 0x6e, 0x87, 0xa8, 0xd8, -+ 0x23, 0x9a, 0x78, 0x2e, 0x0a, 0x8f, 0x28, 0xd0, 0x75, 0x10, 0x54, 0x55, 0x21, 0x26, 0x3e, 0x31, -+ 0x88, 0x82, 0x1d, 0x62, 0x62, 0x57, 0xbc, 0x10, 0x05, 0x97, 0x54, 0x55, 0x62, 0xda, 0x2a, 0x53, -+ 0xa2, 0xab, 0xb0, 0x6e, 0x9d, 0x3c, 0x52, 0x39, 0x25, 0x15, 0xdb, 0x21, 0x03, 0xfd, 0x99, 0xf8, -+ 0x21, 0xcb, 0xef, 0x1a, 0x55, 0x30, 0x42, 0x76, 0x99, 0x18, 0x5d, 0x01, 0x41, 0x75, 0x47, 0xd8, -+ 0xb1, 0x59, 0x4d, 0x76, 0x6d, 0xac, 0x12, 0xf1, 0x12, 0x87, 0x72, 0x79, 0x3b, 0x10, 0xd3, 0x2d, -+ 0xe1, 0x3e, 0xd5, 0x07, 0x5e, 0xe0, 0xf1, 0x32, 0xdf, 0x12, 0x4c, 0xe6, 0x7b, 0xdb, 0x05, 0x81, -+ 0xa6, 0x22, 0x36, 0xf1, 0x2e, 0x83, 0x95, 0xec, 0x91, 0x1d, 0x9d, 0xf7, 0x03, 0x58, 0xa5, 0xc8, -+ 0xe9, 0xa4, 0x57, 0x78, 0x43, 0x66, 0x8f, 0x22, 0x33, 0xde, 0x84, 0x2d, 0x0a, 0x1a, 0x13, 0x0f, -+ 0x6b, 0xd8, 0xc3, 0x11, 0xf4, 0xc7, 0x0c, 0x4d, 0xf3, 0xde, 0xf2, 0x95, 0xb1, 0x38, 0x9d, 0xc9, -+ 0xc9, 0x69, 0xc8, 0xac, 0x4f, 0x78, 0x9c, 0x54, 0x16, 0x70, 0xeb, 0xb5, 0x35, 0xdd, 0xe5, 0x03, -+ 0x28, 0x46, 0x89, 0x8f, 0xf2, 0xc0, 0xa9, 0x2f, 0x24, 0x68, 0x17, 0x54, 0xeb, 0xd4, 0x69, 0xff, -+ 0xf2, 0x95, 0x24, 0x24, 0x69, 0x1f, 0xd5, 0x6c, 0xf4, 0x25, 0x45, 0x3e, 0x6e, 0xf7, 0x1b, 0x2d, -+ 0x49, 0x48, 0x45, 0x1b, 0xf6, 0xbf, 0x26, 0xa1, 0x14, 0xbf, 0x7b, 0xa1, 0x1f, 0xc0, 0xb9, 0xe0, -+ 0xa1, 0xc4, 0x25, 0x9e, 0xf2, 0x54, 0x77, 0xd8, 0x5e, 0x1c, 0x63, 0x7e, 0x2e, 0x86, 0x6c, 0xd8, -+ 0xf4, 0x51, 0x3d, 0xe2, 0x7d, 0xa9, 0x3b, 0x74, 0xa7, 0x8d, 0xb1, 0x87, 0x9a, 0x70, 0xc1, 0xb4, -+ 0x14, 0xd7, 0xc3, 0xa6, 0x86, 0x1d, 0x4d, 0x99, 0x3e, 0x51, 0x29, 0x58, 0x55, 0x89, 0xeb, 0x5a, -+ 0xfc, 0x0c, 0x0c, 0xbd, 0xbc, 0x6b, 0x5a, 0x3d, 0x1f, 0x3c, 0x3d, 0x1c, 0xaa, 0x3e, 0x74, 0x86, -+ 0xb9, 0xa9, 0x65, 0xcc, 0x7d, 0x07, 0xf2, 0x63, 0x6c, 0x2b, 0xc4, 0xf4, 0x9c, 0x53, 0xd6, 0x71, -+ 0xe7, 0xe4, 0xdc, 0x18, 0xdb, 0x12, 0x1d, 0xbf, 0x99, 0x8b, 0xcf, 0x3f, 0x52, 0x50, 0x8c, 0x76, -+ 0xdd, 0xf4, 0x12, 0xa3, 0xb2, 0x03, 0x2a, 0xc1, 0x4a, 0xd8, 0x07, 0x2f, 0xed, 0xd1, 0x2b, 0x35, -+ 0x7a, 0x72, 0x1d, 0x64, 0x79, 0x2f, 0x2c, 0x73, 0x4b, 0xda, 0x35, 0x50, 0x6a, 0x11, 0xde, 0x7b, -+ 0xe4, 0x64, 0x7f, 0x84, 0x8e, 0x20, 0xfb, 0xc8, 0x65, 0xbe, 0xb3, 0xcc, 0xf7, 0x87, 0x2f, 0xf7, -+ 0x7d, 0xbf, 0xc7, 0x9c, 0xe7, 0xef, 0xf7, 0x94, 0x76, 0x47, 0x6e, 0x55, 0x9b, 0xb2, 0x6f, 0x8e, -+ 0xce, 0x43, 0xda, 0xc0, 0xcf, 0x4f, 0xe3, 0x67, 0x1c, 0x13, 0x9d, 0x35, 0xf1, 0xe7, 0x21, 0xfd, -+ 0x94, 0xe0, 0xc7, 0xf1, 0x93, 0x85, 0x89, 0x5e, 0x23, 0xf5, 0xaf, 0x43, 0x86, 0xe5, 0x0b, 0x01, -+ 0xf8, 0x19, 0x13, 0xde, 0x42, 0x39, 0x48, 0xd7, 0x3a, 0x32, 0xa5, 0xbf, 0x00, 0x45, 0x2e, 0x55, -+ 0xba, 0x0d, 0xa9, 0x26, 0x09, 0xc9, 0xf2, 0x2d, 0xc8, 0xf2, 0x24, 0xd0, 0xad, 0x11, 0xa6, 0x41, -+ 0x78, 0xcb, 0x1f, 0xfa, 0x3e, 0x12, 0x81, 0xf6, 0xb8, 0x75, 0x28, 0xc9, 0x42, 0x32, 0xfa, 0x79, -+ 0x5d, 0x28, 0x46, 0x1b, 0xee, 0x37, 0xc3, 0xa9, 0xbf, 0x24, 0xa0, 0x10, 0x69, 0xa0, 0x69, 0xe7, -+ 0x83, 0x0d, 0xc3, 0x7a, 0xaa, 0x60, 0x43, 0xc7, 0xae, 0x4f, 0x0a, 0x60, 0xa2, 0x2a, 0x95, 0x9c, -+ 0xf5, 0xa3, 0xbd, 0x91, 0xe0, 0x7f, 0x9f, 0x00, 0x61, 0xb6, 0x77, 0x9d, 0x09, 0x30, 0xf1, 0xbd, -+ 0x06, 0xf8, 0xbb, 0x04, 0x94, 0xe2, 0x0d, 0xeb, 0x4c, 0x78, 0x17, 0xbf, 0xd7, 0xf0, 0xfe, 0x99, -+ 0x84, 0xd5, 0x58, 0x9b, 0x7a, 0xd6, 0xe8, 0xbe, 0x86, 0x75, 0x5d, 0x23, 0x63, 0xdb, 0xf2, 0x88, -+ 0xa9, 0x9e, 0x2a, 0x06, 0x79, 0x42, 0x0c, 0xb1, 0xcc, 0x0a, 0xc5, 0xf5, 0x97, 0x37, 0xc2, 0x95, -+ 0xc6, 0xd4, 0xae, 0x49, 0xcd, 0x0e, 0x36, 0x1a, 0x75, 0xa9, 0xd5, 0xed, 0xf4, 0xa5, 0x76, 0xed, -+ 0xa1, 0x72, 0xdc, 0xfe, 0x71, 0xbb, 0xf3, 0x65, 0x5b, 0x16, 0xf4, 0x19, 0xd8, 0x6b, 0xdc, 0xea, -+ 0x5d, 0x10, 0x66, 0x83, 0x42, 0xe7, 0x60, 0x51, 0x58, 0xc2, 0x5b, 0x68, 0x03, 0xd6, 0xda, 0x1d, -+ 0xa5, 0xd7, 0xa8, 0x4b, 0x8a, 0x74, 0xef, 0x9e, 0x54, 0xeb, 0xf7, 0xf8, 0xd3, 0x46, 0x88, 0xee, -+ 0xc7, 0x37, 0xf5, 0x6f, 0x53, 0xb0, 0xb1, 0x20, 0x12, 0x54, 0xf5, 0x2f, 0x25, 0xfc, 0x9e, 0xf4, -+ 0xc9, 0x59, 0xa2, 0xaf, 0xd0, 0xae, 0xa0, 0x8b, 0x1d, 0xcf, 0xbf, 0xc3, 0x5c, 0x01, 0x9a, 0x25, -+ 0xd3, 0xd3, 0x07, 0x3a, 0x71, 0xfc, 0x97, 0x20, 0x7e, 0x53, 0x59, 0x9b, 0xca, 0xf9, 0x63, 0xd0, -+ 0xc7, 0x80, 0x6c, 0xcb, 0xd5, 0x3d, 0xfd, 0x09, 0x51, 0x74, 0x33, 0x78, 0x36, 0xa2, 0x37, 0x97, -+ 0xb4, 0x2c, 0x04, 0x9a, 0x86, 0xe9, 0x85, 0x68, 0x93, 0x0c, 0xf1, 0x0c, 0x9a, 0x16, 0xf0, 0x94, -+ 0x2c, 0x04, 0x9a, 0x10, 0x7d, 0x11, 0x8a, 0x9a, 0x35, 0xa1, 0xed, 0x1c, 0xc7, 0xd1, 0xf3, 0x22, -+ 0x21, 0x17, 0xb8, 0x2c, 0x84, 0xf8, 0x8d, 0xfa, 0xf4, 0xbd, 0xaa, 0x28, 0x17, 0xb8, 0x8c, 0x43, -+ 0x2e, 0xc3, 0x1a, 0x1e, 0x0e, 0x1d, 0xea, 0x3c, 0x70, 0xc4, 0xaf, 0x1e, 0xa5, 0x50, 0xcc, 0x80, -+ 0xdb, 0xf7, 0x21, 0x17, 0xe4, 0x81, 0x1e, 0xc9, 0x34, 0x13, 0x8a, 0xcd, 0xef, 0xd3, 0xc9, 0xdd, -+ 0xbc, 0x9c, 0x33, 0x03, 0xe5, 0x45, 0x28, 0xea, 0xae, 0x32, 0x7d, 0x7e, 0x4f, 0xee, 0x24, 0x77, -+ 0x73, 0x72, 0x41, 0x77, 0xc3, 0xa7, 0xcb, 0xf2, 0x37, 0x49, 0x28, 0xc5, 0x7f, 0x3e, 0x40, 0x75, -+ 0xc8, 0x19, 0x96, 0x8a, 0x19, 0xb5, 0xf8, 0x6f, 0x57, 0xbb, 0xaf, 0xf8, 0xc5, 0xa1, 0xd2, 0xf4, -+ 0xf1, 0x72, 0x68, 0xb9, 0xfd, 0xb7, 0x04, 0xe4, 0x02, 0x31, 0xda, 0x82, 0xb4, 0x8d, 0xbd, 0x11, -+ 0x73, 0x97, 0x39, 0x4c, 0x0a, 0x09, 0x99, 0x8d, 0xa9, 0xdc, 0xb5, 0xb1, 0xc9, 0x28, 0xe0, 0xcb, -+ 0xe9, 0x98, 0x7e, 0x57, 0x83, 0x60, 0x8d, 0xdd, 0x6b, 0xac, 0xf1, 0x98, 0x98, 0x9e, 0x1b, 0x7c, -+ 0x57, 0x5f, 0x5e, 0xf3, 0xc5, 0xe8, 0x1a, 0xac, 0x7b, 0x0e, 0xd6, 0x8d, 0x18, 0x36, 0xcd, 0xb0, -+ 0x42, 0xa0, 0x08, 0xc1, 0x07, 0x70, 0x3e, 0xf0, 0xab, 0x11, 0x0f, 0xab, 0x23, 0xa2, 0x4d, 0x8d, -+ 0xb2, 0xec, 0xfd, 0xe2, 0x9c, 0x0f, 0xa8, 0xfb, 0xfa, 0xc0, 0xb6, 0xfc, 0xf7, 0x04, 0xac, 0x07, -+ 0x37, 0x31, 0x2d, 0x4c, 0x56, 0x0b, 0x00, 0x9b, 0xa6, 0xe5, 0x45, 0xd3, 0x35, 0x4f, 0xe5, 0x39, -+ 0xbb, 0x4a, 0x35, 0x34, 0x92, 0x23, 0x0e, 0xb6, 0xc7, 0x00, 0x53, 0xcd, 0xd2, 0xb4, 0x5d, 0x80, -+ 0x82, 0xff, 0xdb, 0x10, 0xfb, 0x81, 0x91, 0xdf, 0xdd, 0x81, 0x8b, 0xe8, 0x95, 0x0d, 0x6d, 0x42, -+ 0xe6, 0x84, 0x0c, 0x75, 0xd3, 0x7f, 0xf1, 0xe5, 0x83, 0xe0, 0x85, 0x25, 0x1d, 0xbe, 0xb0, 0x1c, -+ 0xfe, 0x0c, 0x36, 0x54, 0x6b, 0x3c, 0x1b, 0xee, 0xa1, 0x30, 0xf3, 0x7e, 0xe0, 0x7e, 0x91, 0xf8, -+ 0x0a, 0xa6, 0x2d, 0xe6, 0xff, 0x12, 0x89, 0x3f, 0x24, 0x53, 0x47, 0xdd, 0xc3, 0x3f, 0x26, 0xb7, -+ 0x8f, 0xb8, 0x69, 0x37, 0x58, 0xa9, 0x4c, 0x06, 0x06, 0x51, 0x69, 0xf4, 0xff, 0x0f, 0x00, 0x00, -+ 0xff, 0xff, 0x88, 0x17, 0xc1, 0xbe, 0x38, 0x1d, 0x00, 0x00, -+} -diff --git a/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/descriptor_gostring.gen.go b/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/descriptor_gostring.gen.go -new file mode 100755 -index 0000000..165b211 ---- /dev/null -+++ b/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/descriptor_gostring.gen.go -@@ -0,0 +1,752 @@ -+// Code generated by protoc-gen-gogo. DO NOT EDIT. -+// source: descriptor.proto -+ -+package descriptor -+ -+import ( -+ fmt "fmt" -+ github_com_gogo_protobuf_proto "github.com/gogo/protobuf/proto" -+ proto "github.com/gogo/protobuf/proto" -+ math "math" -+ reflect "reflect" -+ sort "sort" -+ strconv "strconv" -+ strings "strings" -+) -+ -+// Reference imports to suppress errors if they are not otherwise used. -+var _ = proto.Marshal -+var _ = fmt.Errorf -+var _ = math.Inf -+ -+func (this *FileDescriptorSet) GoString() string { -+ if this == nil { -+ return "nil" -+ } -+ s := make([]string, 0, 5) -+ s = append(s, "&descriptor.FileDescriptorSet{") -+ if this.File != nil { -+ s = append(s, "File: "+fmt.Sprintf("%#v", this.File)+",\n") -+ } -+ if this.XXX_unrecognized != nil { -+ s = append(s, "XXX_unrecognized:"+fmt.Sprintf("%#v", this.XXX_unrecognized)+",\n") -+ } -+ s = append(s, "}") -+ return strings.Join(s, "") -+} -+func (this *FileDescriptorProto) GoString() string { -+ if this == nil { -+ return "nil" -+ } -+ s := make([]string, 0, 16) -+ s = append(s, "&descriptor.FileDescriptorProto{") -+ if this.Name != nil { -+ s = append(s, "Name: "+valueToGoStringDescriptor(this.Name, "string")+",\n") -+ } -+ if this.Package != nil { -+ s = append(s, "Package: "+valueToGoStringDescriptor(this.Package, "string")+",\n") -+ } -+ if this.Dependency != nil { -+ s = append(s, "Dependency: "+fmt.Sprintf("%#v", this.Dependency)+",\n") -+ } -+ if this.PublicDependency != nil { -+ s = append(s, "PublicDependency: "+fmt.Sprintf("%#v", this.PublicDependency)+",\n") -+ } -+ if this.WeakDependency != nil { -+ s = append(s, "WeakDependency: "+fmt.Sprintf("%#v", this.WeakDependency)+",\n") -+ } -+ if this.MessageType != nil { -+ s = append(s, "MessageType: "+fmt.Sprintf("%#v", this.MessageType)+",\n") -+ } -+ if this.EnumType != nil { -+ s = append(s, "EnumType: "+fmt.Sprintf("%#v", this.EnumType)+",\n") -+ } -+ if this.Service != nil { -+ s = append(s, "Service: "+fmt.Sprintf("%#v", this.Service)+",\n") -+ } -+ if this.Extension != nil { -+ s = append(s, "Extension: "+fmt.Sprintf("%#v", this.Extension)+",\n") -+ } -+ if this.Options != nil { -+ s = append(s, "Options: "+fmt.Sprintf("%#v", this.Options)+",\n") -+ } -+ if this.SourceCodeInfo != nil { -+ s = append(s, "SourceCodeInfo: "+fmt.Sprintf("%#v", this.SourceCodeInfo)+",\n") -+ } -+ if this.Syntax != nil { -+ s = append(s, "Syntax: "+valueToGoStringDescriptor(this.Syntax, "string")+",\n") -+ } -+ if this.XXX_unrecognized != nil { -+ s = append(s, "XXX_unrecognized:"+fmt.Sprintf("%#v", this.XXX_unrecognized)+",\n") -+ } -+ s = append(s, "}") -+ return strings.Join(s, "") -+} -+func (this *DescriptorProto) GoString() string { -+ if this == nil { -+ return "nil" -+ } -+ s := make([]string, 0, 14) -+ s = append(s, "&descriptor.DescriptorProto{") -+ if this.Name != nil { -+ s = append(s, "Name: "+valueToGoStringDescriptor(this.Name, "string")+",\n") -+ } -+ if this.Field != nil { -+ s = append(s, "Field: "+fmt.Sprintf("%#v", this.Field)+",\n") -+ } -+ if this.Extension != nil { -+ s = append(s, "Extension: "+fmt.Sprintf("%#v", this.Extension)+",\n") -+ } -+ if this.NestedType != nil { -+ s = append(s, "NestedType: "+fmt.Sprintf("%#v", this.NestedType)+",\n") -+ } -+ if this.EnumType != nil { -+ s = append(s, "EnumType: "+fmt.Sprintf("%#v", this.EnumType)+",\n") -+ } -+ if this.ExtensionRange != nil { -+ s = append(s, "ExtensionRange: "+fmt.Sprintf("%#v", this.ExtensionRange)+",\n") -+ } -+ if this.OneofDecl != nil { -+ s = append(s, "OneofDecl: "+fmt.Sprintf("%#v", this.OneofDecl)+",\n") -+ } -+ if this.Options != nil { -+ s = append(s, "Options: "+fmt.Sprintf("%#v", this.Options)+",\n") -+ } -+ if this.ReservedRange != nil { -+ s = append(s, "ReservedRange: "+fmt.Sprintf("%#v", this.ReservedRange)+",\n") -+ } -+ if this.ReservedName != nil { -+ s = append(s, "ReservedName: "+fmt.Sprintf("%#v", this.ReservedName)+",\n") -+ } -+ if this.XXX_unrecognized != nil { -+ s = append(s, "XXX_unrecognized:"+fmt.Sprintf("%#v", this.XXX_unrecognized)+",\n") -+ } -+ s = append(s, "}") -+ return strings.Join(s, "") -+} -+func (this *DescriptorProto_ExtensionRange) GoString() string { -+ if this == nil { -+ return "nil" -+ } -+ s := make([]string, 0, 7) -+ s = append(s, "&descriptor.DescriptorProto_ExtensionRange{") -+ if this.Start != nil { -+ s = append(s, "Start: "+valueToGoStringDescriptor(this.Start, "int32")+",\n") -+ } -+ if this.End != nil { -+ s = append(s, "End: "+valueToGoStringDescriptor(this.End, "int32")+",\n") -+ } -+ if this.Options != nil { -+ s = append(s, "Options: "+fmt.Sprintf("%#v", this.Options)+",\n") -+ } -+ if this.XXX_unrecognized != nil { -+ s = append(s, "XXX_unrecognized:"+fmt.Sprintf("%#v", this.XXX_unrecognized)+",\n") -+ } -+ s = append(s, "}") -+ return strings.Join(s, "") -+} -+func (this *DescriptorProto_ReservedRange) GoString() string { -+ if this == nil { -+ return "nil" -+ } -+ s := make([]string, 0, 6) -+ s = append(s, "&descriptor.DescriptorProto_ReservedRange{") -+ if this.Start != nil { -+ s = append(s, "Start: "+valueToGoStringDescriptor(this.Start, "int32")+",\n") -+ } -+ if this.End != nil { -+ s = append(s, "End: "+valueToGoStringDescriptor(this.End, "int32")+",\n") -+ } -+ if this.XXX_unrecognized != nil { -+ s = append(s, "XXX_unrecognized:"+fmt.Sprintf("%#v", this.XXX_unrecognized)+",\n") -+ } -+ s = append(s, "}") -+ return strings.Join(s, "") -+} -+func (this *ExtensionRangeOptions) GoString() string { -+ if this == nil { -+ return "nil" -+ } -+ s := make([]string, 0, 5) -+ s = append(s, "&descriptor.ExtensionRangeOptions{") -+ if this.UninterpretedOption != nil { -+ s = append(s, "UninterpretedOption: "+fmt.Sprintf("%#v", this.UninterpretedOption)+",\n") -+ } -+ s = append(s, "XXX_InternalExtensions: "+extensionToGoStringDescriptor(this)+",\n") -+ if this.XXX_unrecognized != nil { -+ s = append(s, "XXX_unrecognized:"+fmt.Sprintf("%#v", this.XXX_unrecognized)+",\n") -+ } -+ s = append(s, "}") -+ return strings.Join(s, "") -+} -+func (this *FieldDescriptorProto) GoString() string { -+ if this == nil { -+ return "nil" -+ } -+ s := make([]string, 0, 14) -+ s = append(s, "&descriptor.FieldDescriptorProto{") -+ if this.Name != nil { -+ s = append(s, "Name: "+valueToGoStringDescriptor(this.Name, "string")+",\n") -+ } -+ if this.Number != nil { -+ s = append(s, "Number: "+valueToGoStringDescriptor(this.Number, "int32")+",\n") -+ } -+ if this.Label != nil { -+ s = append(s, "Label: "+valueToGoStringDescriptor(this.Label, "FieldDescriptorProto_Label")+",\n") -+ } -+ if this.Type != nil { -+ s = append(s, "Type: "+valueToGoStringDescriptor(this.Type, "FieldDescriptorProto_Type")+",\n") -+ } -+ if this.TypeName != nil { -+ s = append(s, "TypeName: "+valueToGoStringDescriptor(this.TypeName, "string")+",\n") -+ } -+ if this.Extendee != nil { -+ s = append(s, "Extendee: "+valueToGoStringDescriptor(this.Extendee, "string")+",\n") -+ } -+ if this.DefaultValue != nil { -+ s = append(s, "DefaultValue: "+valueToGoStringDescriptor(this.DefaultValue, "string")+",\n") -+ } -+ if this.OneofIndex != nil { -+ s = append(s, "OneofIndex: "+valueToGoStringDescriptor(this.OneofIndex, "int32")+",\n") -+ } -+ if this.JsonName != nil { -+ s = append(s, "JsonName: "+valueToGoStringDescriptor(this.JsonName, "string")+",\n") -+ } -+ if this.Options != nil { -+ s = append(s, "Options: "+fmt.Sprintf("%#v", this.Options)+",\n") -+ } -+ if this.XXX_unrecognized != nil { -+ s = append(s, "XXX_unrecognized:"+fmt.Sprintf("%#v", this.XXX_unrecognized)+",\n") -+ } -+ s = append(s, "}") -+ return strings.Join(s, "") -+} -+func (this *OneofDescriptorProto) GoString() string { -+ if this == nil { -+ return "nil" -+ } -+ s := make([]string, 0, 6) -+ s = append(s, "&descriptor.OneofDescriptorProto{") -+ if this.Name != nil { -+ s = append(s, "Name: "+valueToGoStringDescriptor(this.Name, "string")+",\n") -+ } -+ if this.Options != nil { -+ s = append(s, "Options: "+fmt.Sprintf("%#v", this.Options)+",\n") -+ } -+ if this.XXX_unrecognized != nil { -+ s = append(s, "XXX_unrecognized:"+fmt.Sprintf("%#v", this.XXX_unrecognized)+",\n") -+ } -+ s = append(s, "}") -+ return strings.Join(s, "") -+} -+func (this *EnumDescriptorProto) GoString() string { -+ if this == nil { -+ return "nil" -+ } -+ s := make([]string, 0, 9) -+ s = append(s, "&descriptor.EnumDescriptorProto{") -+ if this.Name != nil { -+ s = append(s, "Name: "+valueToGoStringDescriptor(this.Name, "string")+",\n") -+ } -+ if this.Value != nil { -+ s = append(s, "Value: "+fmt.Sprintf("%#v", this.Value)+",\n") -+ } -+ if this.Options != nil { -+ s = append(s, "Options: "+fmt.Sprintf("%#v", this.Options)+",\n") -+ } -+ if this.ReservedRange != nil { -+ s = append(s, "ReservedRange: "+fmt.Sprintf("%#v", this.ReservedRange)+",\n") -+ } -+ if this.ReservedName != nil { -+ s = append(s, "ReservedName: "+fmt.Sprintf("%#v", this.ReservedName)+",\n") -+ } -+ if this.XXX_unrecognized != nil { -+ s = append(s, "XXX_unrecognized:"+fmt.Sprintf("%#v", this.XXX_unrecognized)+",\n") -+ } -+ s = append(s, "}") -+ return strings.Join(s, "") -+} -+func (this *EnumDescriptorProto_EnumReservedRange) GoString() string { -+ if this == nil { -+ return "nil" -+ } -+ s := make([]string, 0, 6) -+ s = append(s, "&descriptor.EnumDescriptorProto_EnumReservedRange{") -+ if this.Start != nil { -+ s = append(s, "Start: "+valueToGoStringDescriptor(this.Start, "int32")+",\n") -+ } -+ if this.End != nil { -+ s = append(s, "End: "+valueToGoStringDescriptor(this.End, "int32")+",\n") -+ } -+ if this.XXX_unrecognized != nil { -+ s = append(s, "XXX_unrecognized:"+fmt.Sprintf("%#v", this.XXX_unrecognized)+",\n") -+ } -+ s = append(s, "}") -+ return strings.Join(s, "") -+} -+func (this *EnumValueDescriptorProto) GoString() string { -+ if this == nil { -+ return "nil" -+ } -+ s := make([]string, 0, 7) -+ s = append(s, "&descriptor.EnumValueDescriptorProto{") -+ if this.Name != nil { -+ s = append(s, "Name: "+valueToGoStringDescriptor(this.Name, "string")+",\n") -+ } -+ if this.Number != nil { -+ s = append(s, "Number: "+valueToGoStringDescriptor(this.Number, "int32")+",\n") -+ } -+ if this.Options != nil { -+ s = append(s, "Options: "+fmt.Sprintf("%#v", this.Options)+",\n") -+ } -+ if this.XXX_unrecognized != nil { -+ s = append(s, "XXX_unrecognized:"+fmt.Sprintf("%#v", this.XXX_unrecognized)+",\n") -+ } -+ s = append(s, "}") -+ return strings.Join(s, "") -+} -+func (this *ServiceDescriptorProto) GoString() string { -+ if this == nil { -+ return "nil" -+ } -+ s := make([]string, 0, 7) -+ s = append(s, "&descriptor.ServiceDescriptorProto{") -+ if this.Name != nil { -+ s = append(s, "Name: "+valueToGoStringDescriptor(this.Name, "string")+",\n") -+ } -+ if this.Method != nil { -+ s = append(s, "Method: "+fmt.Sprintf("%#v", this.Method)+",\n") -+ } -+ if this.Options != nil { -+ s = append(s, "Options: "+fmt.Sprintf("%#v", this.Options)+",\n") -+ } -+ if this.XXX_unrecognized != nil { -+ s = append(s, "XXX_unrecognized:"+fmt.Sprintf("%#v", this.XXX_unrecognized)+",\n") -+ } -+ s = append(s, "}") -+ return strings.Join(s, "") -+} -+func (this *MethodDescriptorProto) GoString() string { -+ if this == nil { -+ return "nil" -+ } -+ s := make([]string, 0, 10) -+ s = append(s, "&descriptor.MethodDescriptorProto{") -+ if this.Name != nil { -+ s = append(s, "Name: "+valueToGoStringDescriptor(this.Name, "string")+",\n") -+ } -+ if this.InputType != nil { -+ s = append(s, "InputType: "+valueToGoStringDescriptor(this.InputType, "string")+",\n") -+ } -+ if this.OutputType != nil { -+ s = append(s, "OutputType: "+valueToGoStringDescriptor(this.OutputType, "string")+",\n") -+ } -+ if this.Options != nil { -+ s = append(s, "Options: "+fmt.Sprintf("%#v", this.Options)+",\n") -+ } -+ if this.ClientStreaming != nil { -+ s = append(s, "ClientStreaming: "+valueToGoStringDescriptor(this.ClientStreaming, "bool")+",\n") -+ } -+ if this.ServerStreaming != nil { -+ s = append(s, "ServerStreaming: "+valueToGoStringDescriptor(this.ServerStreaming, "bool")+",\n") -+ } -+ if this.XXX_unrecognized != nil { -+ s = append(s, "XXX_unrecognized:"+fmt.Sprintf("%#v", this.XXX_unrecognized)+",\n") -+ } -+ s = append(s, "}") -+ return strings.Join(s, "") -+} -+func (this *FileOptions) GoString() string { -+ if this == nil { -+ return "nil" -+ } -+ s := make([]string, 0, 25) -+ s = append(s, "&descriptor.FileOptions{") -+ if this.JavaPackage != nil { -+ s = append(s, "JavaPackage: "+valueToGoStringDescriptor(this.JavaPackage, "string")+",\n") -+ } -+ if this.JavaOuterClassname != nil { -+ s = append(s, "JavaOuterClassname: "+valueToGoStringDescriptor(this.JavaOuterClassname, "string")+",\n") -+ } -+ if this.JavaMultipleFiles != nil { -+ s = append(s, "JavaMultipleFiles: "+valueToGoStringDescriptor(this.JavaMultipleFiles, "bool")+",\n") -+ } -+ if this.JavaGenerateEqualsAndHash != nil { -+ s = append(s, "JavaGenerateEqualsAndHash: "+valueToGoStringDescriptor(this.JavaGenerateEqualsAndHash, "bool")+",\n") -+ } -+ if this.JavaStringCheckUtf8 != nil { -+ s = append(s, "JavaStringCheckUtf8: "+valueToGoStringDescriptor(this.JavaStringCheckUtf8, "bool")+",\n") -+ } -+ if this.OptimizeFor != nil { -+ s = append(s, "OptimizeFor: "+valueToGoStringDescriptor(this.OptimizeFor, "FileOptions_OptimizeMode")+",\n") -+ } -+ if this.GoPackage != nil { -+ s = append(s, "GoPackage: "+valueToGoStringDescriptor(this.GoPackage, "string")+",\n") -+ } -+ if this.CcGenericServices != nil { -+ s = append(s, "CcGenericServices: "+valueToGoStringDescriptor(this.CcGenericServices, "bool")+",\n") -+ } -+ if this.JavaGenericServices != nil { -+ s = append(s, "JavaGenericServices: "+valueToGoStringDescriptor(this.JavaGenericServices, "bool")+",\n") -+ } -+ if this.PyGenericServices != nil { -+ s = append(s, "PyGenericServices: "+valueToGoStringDescriptor(this.PyGenericServices, "bool")+",\n") -+ } -+ if this.PhpGenericServices != nil { -+ s = append(s, "PhpGenericServices: "+valueToGoStringDescriptor(this.PhpGenericServices, "bool")+",\n") -+ } -+ if this.Deprecated != nil { -+ s = append(s, "Deprecated: "+valueToGoStringDescriptor(this.Deprecated, "bool")+",\n") -+ } -+ if this.CcEnableArenas != nil { -+ s = append(s, "CcEnableArenas: "+valueToGoStringDescriptor(this.CcEnableArenas, "bool")+",\n") -+ } -+ if this.ObjcClassPrefix != nil { -+ s = append(s, "ObjcClassPrefix: "+valueToGoStringDescriptor(this.ObjcClassPrefix, "string")+",\n") -+ } -+ if this.CsharpNamespace != nil { -+ s = append(s, "CsharpNamespace: "+valueToGoStringDescriptor(this.CsharpNamespace, "string")+",\n") -+ } -+ if this.SwiftPrefix != nil { -+ s = append(s, "SwiftPrefix: "+valueToGoStringDescriptor(this.SwiftPrefix, "string")+",\n") -+ } -+ if this.PhpClassPrefix != nil { -+ s = append(s, "PhpClassPrefix: "+valueToGoStringDescriptor(this.PhpClassPrefix, "string")+",\n") -+ } -+ if this.PhpNamespace != nil { -+ s = append(s, "PhpNamespace: "+valueToGoStringDescriptor(this.PhpNamespace, "string")+",\n") -+ } -+ if this.PhpMetadataNamespace != nil { -+ s = append(s, "PhpMetadataNamespace: "+valueToGoStringDescriptor(this.PhpMetadataNamespace, "string")+",\n") -+ } -+ if this.RubyPackage != nil { -+ s = append(s, "RubyPackage: "+valueToGoStringDescriptor(this.RubyPackage, "string")+",\n") -+ } -+ if this.UninterpretedOption != nil { -+ s = append(s, "UninterpretedOption: "+fmt.Sprintf("%#v", this.UninterpretedOption)+",\n") -+ } -+ s = append(s, "XXX_InternalExtensions: "+extensionToGoStringDescriptor(this)+",\n") -+ if this.XXX_unrecognized != nil { -+ s = append(s, "XXX_unrecognized:"+fmt.Sprintf("%#v", this.XXX_unrecognized)+",\n") -+ } -+ s = append(s, "}") -+ return strings.Join(s, "") -+} -+func (this *MessageOptions) GoString() string { -+ if this == nil { -+ return "nil" -+ } -+ s := make([]string, 0, 9) -+ s = append(s, "&descriptor.MessageOptions{") -+ if this.MessageSetWireFormat != nil { -+ s = append(s, "MessageSetWireFormat: "+valueToGoStringDescriptor(this.MessageSetWireFormat, "bool")+",\n") -+ } -+ if this.NoStandardDescriptorAccessor != nil { -+ s = append(s, "NoStandardDescriptorAccessor: "+valueToGoStringDescriptor(this.NoStandardDescriptorAccessor, "bool")+",\n") -+ } -+ if this.Deprecated != nil { -+ s = append(s, "Deprecated: "+valueToGoStringDescriptor(this.Deprecated, "bool")+",\n") -+ } -+ if this.MapEntry != nil { -+ s = append(s, "MapEntry: "+valueToGoStringDescriptor(this.MapEntry, "bool")+",\n") -+ } -+ if this.UninterpretedOption != nil { -+ s = append(s, "UninterpretedOption: "+fmt.Sprintf("%#v", this.UninterpretedOption)+",\n") -+ } -+ s = append(s, "XXX_InternalExtensions: "+extensionToGoStringDescriptor(this)+",\n") -+ if this.XXX_unrecognized != nil { -+ s = append(s, "XXX_unrecognized:"+fmt.Sprintf("%#v", this.XXX_unrecognized)+",\n") -+ } -+ s = append(s, "}") -+ return strings.Join(s, "") -+} -+func (this *FieldOptions) GoString() string { -+ if this == nil { -+ return "nil" -+ } -+ s := make([]string, 0, 11) -+ s = append(s, "&descriptor.FieldOptions{") -+ if this.Ctype != nil { -+ s = append(s, "Ctype: "+valueToGoStringDescriptor(this.Ctype, "FieldOptions_CType")+",\n") -+ } -+ if this.Packed != nil { -+ s = append(s, "Packed: "+valueToGoStringDescriptor(this.Packed, "bool")+",\n") -+ } -+ if this.Jstype != nil { -+ s = append(s, "Jstype: "+valueToGoStringDescriptor(this.Jstype, "FieldOptions_JSType")+",\n") -+ } -+ if this.Lazy != nil { -+ s = append(s, "Lazy: "+valueToGoStringDescriptor(this.Lazy, "bool")+",\n") -+ } -+ if this.Deprecated != nil { -+ s = append(s, "Deprecated: "+valueToGoStringDescriptor(this.Deprecated, "bool")+",\n") -+ } -+ if this.Weak != nil { -+ s = append(s, "Weak: "+valueToGoStringDescriptor(this.Weak, "bool")+",\n") -+ } -+ if this.UninterpretedOption != nil { -+ s = append(s, "UninterpretedOption: "+fmt.Sprintf("%#v", this.UninterpretedOption)+",\n") -+ } -+ s = append(s, "XXX_InternalExtensions: "+extensionToGoStringDescriptor(this)+",\n") -+ if this.XXX_unrecognized != nil { -+ s = append(s, "XXX_unrecognized:"+fmt.Sprintf("%#v", this.XXX_unrecognized)+",\n") -+ } -+ s = append(s, "}") -+ return strings.Join(s, "") -+} -+func (this *OneofOptions) GoString() string { -+ if this == nil { -+ return "nil" -+ } -+ s := make([]string, 0, 5) -+ s = append(s, "&descriptor.OneofOptions{") -+ if this.UninterpretedOption != nil { -+ s = append(s, "UninterpretedOption: "+fmt.Sprintf("%#v", this.UninterpretedOption)+",\n") -+ } -+ s = append(s, "XXX_InternalExtensions: "+extensionToGoStringDescriptor(this)+",\n") -+ if this.XXX_unrecognized != nil { -+ s = append(s, "XXX_unrecognized:"+fmt.Sprintf("%#v", this.XXX_unrecognized)+",\n") -+ } -+ s = append(s, "}") -+ return strings.Join(s, "") -+} -+func (this *EnumOptions) GoString() string { -+ if this == nil { -+ return "nil" -+ } -+ s := make([]string, 0, 7) -+ s = append(s, "&descriptor.EnumOptions{") -+ if this.AllowAlias != nil { -+ s = append(s, "AllowAlias: "+valueToGoStringDescriptor(this.AllowAlias, "bool")+",\n") -+ } -+ if this.Deprecated != nil { -+ s = append(s, "Deprecated: "+valueToGoStringDescriptor(this.Deprecated, "bool")+",\n") -+ } -+ if this.UninterpretedOption != nil { -+ s = append(s, "UninterpretedOption: "+fmt.Sprintf("%#v", this.UninterpretedOption)+",\n") -+ } -+ s = append(s, "XXX_InternalExtensions: "+extensionToGoStringDescriptor(this)+",\n") -+ if this.XXX_unrecognized != nil { -+ s = append(s, "XXX_unrecognized:"+fmt.Sprintf("%#v", this.XXX_unrecognized)+",\n") -+ } -+ s = append(s, "}") -+ return strings.Join(s, "") -+} -+func (this *EnumValueOptions) GoString() string { -+ if this == nil { -+ return "nil" -+ } -+ s := make([]string, 0, 6) -+ s = append(s, "&descriptor.EnumValueOptions{") -+ if this.Deprecated != nil { -+ s = append(s, "Deprecated: "+valueToGoStringDescriptor(this.Deprecated, "bool")+",\n") -+ } -+ if this.UninterpretedOption != nil { -+ s = append(s, "UninterpretedOption: "+fmt.Sprintf("%#v", this.UninterpretedOption)+",\n") -+ } -+ s = append(s, "XXX_InternalExtensions: "+extensionToGoStringDescriptor(this)+",\n") -+ if this.XXX_unrecognized != nil { -+ s = append(s, "XXX_unrecognized:"+fmt.Sprintf("%#v", this.XXX_unrecognized)+",\n") -+ } -+ s = append(s, "}") -+ return strings.Join(s, "") -+} -+func (this *ServiceOptions) GoString() string { -+ if this == nil { -+ return "nil" -+ } -+ s := make([]string, 0, 6) -+ s = append(s, "&descriptor.ServiceOptions{") -+ if this.Deprecated != nil { -+ s = append(s, "Deprecated: "+valueToGoStringDescriptor(this.Deprecated, "bool")+",\n") -+ } -+ if this.UninterpretedOption != nil { -+ s = append(s, "UninterpretedOption: "+fmt.Sprintf("%#v", this.UninterpretedOption)+",\n") -+ } -+ s = append(s, "XXX_InternalExtensions: "+extensionToGoStringDescriptor(this)+",\n") -+ if this.XXX_unrecognized != nil { -+ s = append(s, "XXX_unrecognized:"+fmt.Sprintf("%#v", this.XXX_unrecognized)+",\n") -+ } -+ s = append(s, "}") -+ return strings.Join(s, "") -+} -+func (this *MethodOptions) GoString() string { -+ if this == nil { -+ return "nil" -+ } -+ s := make([]string, 0, 7) -+ s = append(s, "&descriptor.MethodOptions{") -+ if this.Deprecated != nil { -+ s = append(s, "Deprecated: "+valueToGoStringDescriptor(this.Deprecated, "bool")+",\n") -+ } -+ if this.IdempotencyLevel != nil { -+ s = append(s, "IdempotencyLevel: "+valueToGoStringDescriptor(this.IdempotencyLevel, "MethodOptions_IdempotencyLevel")+",\n") -+ } -+ if this.UninterpretedOption != nil { -+ s = append(s, "UninterpretedOption: "+fmt.Sprintf("%#v", this.UninterpretedOption)+",\n") -+ } -+ s = append(s, "XXX_InternalExtensions: "+extensionToGoStringDescriptor(this)+",\n") -+ if this.XXX_unrecognized != nil { -+ s = append(s, "XXX_unrecognized:"+fmt.Sprintf("%#v", this.XXX_unrecognized)+",\n") -+ } -+ s = append(s, "}") -+ return strings.Join(s, "") -+} -+func (this *UninterpretedOption) GoString() string { -+ if this == nil { -+ return "nil" -+ } -+ s := make([]string, 0, 11) -+ s = append(s, "&descriptor.UninterpretedOption{") -+ if this.Name != nil { -+ s = append(s, "Name: "+fmt.Sprintf("%#v", this.Name)+",\n") -+ } -+ if this.IdentifierValue != nil { -+ s = append(s, "IdentifierValue: "+valueToGoStringDescriptor(this.IdentifierValue, "string")+",\n") -+ } -+ if this.PositiveIntValue != nil { -+ s = append(s, "PositiveIntValue: "+valueToGoStringDescriptor(this.PositiveIntValue, "uint64")+",\n") -+ } -+ if this.NegativeIntValue != nil { -+ s = append(s, "NegativeIntValue: "+valueToGoStringDescriptor(this.NegativeIntValue, "int64")+",\n") -+ } -+ if this.DoubleValue != nil { -+ s = append(s, "DoubleValue: "+valueToGoStringDescriptor(this.DoubleValue, "float64")+",\n") -+ } -+ if this.StringValue != nil { -+ s = append(s, "StringValue: "+valueToGoStringDescriptor(this.StringValue, "byte")+",\n") -+ } -+ if this.AggregateValue != nil { -+ s = append(s, "AggregateValue: "+valueToGoStringDescriptor(this.AggregateValue, "string")+",\n") -+ } -+ if this.XXX_unrecognized != nil { -+ s = append(s, "XXX_unrecognized:"+fmt.Sprintf("%#v", this.XXX_unrecognized)+",\n") -+ } -+ s = append(s, "}") -+ return strings.Join(s, "") -+} -+func (this *UninterpretedOption_NamePart) GoString() string { -+ if this == nil { -+ return "nil" -+ } -+ s := make([]string, 0, 6) -+ s = append(s, "&descriptor.UninterpretedOption_NamePart{") -+ if this.NamePart != nil { -+ s = append(s, "NamePart: "+valueToGoStringDescriptor(this.NamePart, "string")+",\n") -+ } -+ if this.IsExtension != nil { -+ s = append(s, "IsExtension: "+valueToGoStringDescriptor(this.IsExtension, "bool")+",\n") -+ } -+ if this.XXX_unrecognized != nil { -+ s = append(s, "XXX_unrecognized:"+fmt.Sprintf("%#v", this.XXX_unrecognized)+",\n") -+ } -+ s = append(s, "}") -+ return strings.Join(s, "") -+} -+func (this *SourceCodeInfo) GoString() string { -+ if this == nil { -+ return "nil" -+ } -+ s := make([]string, 0, 5) -+ s = append(s, "&descriptor.SourceCodeInfo{") -+ if this.Location != nil { -+ s = append(s, "Location: "+fmt.Sprintf("%#v", this.Location)+",\n") -+ } -+ if this.XXX_unrecognized != nil { -+ s = append(s, "XXX_unrecognized:"+fmt.Sprintf("%#v", this.XXX_unrecognized)+",\n") -+ } -+ s = append(s, "}") -+ return strings.Join(s, "") -+} -+func (this *SourceCodeInfo_Location) GoString() string { -+ if this == nil { -+ return "nil" -+ } -+ s := make([]string, 0, 9) -+ s = append(s, "&descriptor.SourceCodeInfo_Location{") -+ if this.Path != nil { -+ s = append(s, "Path: "+fmt.Sprintf("%#v", this.Path)+",\n") -+ } -+ if this.Span != nil { -+ s = append(s, "Span: "+fmt.Sprintf("%#v", this.Span)+",\n") -+ } -+ if this.LeadingComments != nil { -+ s = append(s, "LeadingComments: "+valueToGoStringDescriptor(this.LeadingComments, "string")+",\n") -+ } -+ if this.TrailingComments != nil { -+ s = append(s, "TrailingComments: "+valueToGoStringDescriptor(this.TrailingComments, "string")+",\n") -+ } -+ if this.LeadingDetachedComments != nil { -+ s = append(s, "LeadingDetachedComments: "+fmt.Sprintf("%#v", this.LeadingDetachedComments)+",\n") -+ } -+ if this.XXX_unrecognized != nil { -+ s = append(s, "XXX_unrecognized:"+fmt.Sprintf("%#v", this.XXX_unrecognized)+",\n") -+ } -+ s = append(s, "}") -+ return strings.Join(s, "") -+} -+func (this *GeneratedCodeInfo) GoString() string { -+ if this == nil { -+ return "nil" -+ } -+ s := make([]string, 0, 5) -+ s = append(s, "&descriptor.GeneratedCodeInfo{") -+ if this.Annotation != nil { -+ s = append(s, "Annotation: "+fmt.Sprintf("%#v", this.Annotation)+",\n") -+ } -+ if this.XXX_unrecognized != nil { -+ s = append(s, "XXX_unrecognized:"+fmt.Sprintf("%#v", this.XXX_unrecognized)+",\n") -+ } -+ s = append(s, "}") -+ return strings.Join(s, "") -+} -+func (this *GeneratedCodeInfo_Annotation) GoString() string { -+ if this == nil { -+ return "nil" -+ } -+ s := make([]string, 0, 8) -+ s = append(s, "&descriptor.GeneratedCodeInfo_Annotation{") -+ if this.Path != nil { -+ s = append(s, "Path: "+fmt.Sprintf("%#v", this.Path)+",\n") -+ } -+ if this.SourceFile != nil { -+ s = append(s, "SourceFile: "+valueToGoStringDescriptor(this.SourceFile, "string")+",\n") -+ } -+ if this.Begin != nil { -+ s = append(s, "Begin: "+valueToGoStringDescriptor(this.Begin, "int32")+",\n") -+ } -+ if this.End != nil { -+ s = append(s, "End: "+valueToGoStringDescriptor(this.End, "int32")+",\n") -+ } -+ if this.XXX_unrecognized != nil { -+ s = append(s, "XXX_unrecognized:"+fmt.Sprintf("%#v", this.XXX_unrecognized)+",\n") -+ } -+ s = append(s, "}") -+ return strings.Join(s, "") -+} -+func valueToGoStringDescriptor(v interface{}, typ string) string { -+ rv := reflect.ValueOf(v) -+ if rv.IsNil() { -+ return "nil" -+ } -+ pv := reflect.Indirect(rv).Interface() -+ return fmt.Sprintf("func(v %v) *%v { return &v } ( %#v )", typ, typ, pv) -+} -+func extensionToGoStringDescriptor(m github_com_gogo_protobuf_proto.Message) string { -+ e := github_com_gogo_protobuf_proto.GetUnsafeExtensionsMap(m) -+ if e == nil { -+ return "nil" -+ } -+ s := "proto.NewUnsafeXXX_InternalExtensions(map[int32]proto.Extension{" -+ keys := make([]int, 0, len(e)) -+ for k := range e { -+ keys = append(keys, int(k)) -+ } -+ sort.Ints(keys) -+ ss := []string{} -+ for _, k := range keys { -+ ss = append(ss, strconv.Itoa(k)+": "+e[int32(k)].GoString()) -+ } -+ s += strings.Join(ss, ",") + "})" -+ return s -+} -diff --git a/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/helper.go b/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/helper.go -new file mode 100755 -index 0000000..e0846a3 ---- /dev/null -+++ b/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/helper.go -@@ -0,0 +1,390 @@ -+// Protocol Buffers for Go with Gadgets -+// -+// Copyright (c) 2013, The GoGo Authors. All rights reserved. -+// http://github.com/gogo/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. -+// -+// 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 -+ -+import ( -+ "strings" -+) -+ -+func (msg *DescriptorProto) GetMapFields() (*FieldDescriptorProto, *FieldDescriptorProto) { -+ if !msg.GetOptions().GetMapEntry() { -+ return nil, nil -+ } -+ return msg.GetField()[0], msg.GetField()[1] -+} -+ -+func dotToUnderscore(r rune) rune { -+ if r == '.' { -+ return '_' -+ } -+ return r -+} -+ -+func (field *FieldDescriptorProto) WireType() (wire int) { -+ switch *field.Type { -+ case FieldDescriptorProto_TYPE_DOUBLE: -+ return 1 -+ case FieldDescriptorProto_TYPE_FLOAT: -+ return 5 -+ case FieldDescriptorProto_TYPE_INT64: -+ return 0 -+ case FieldDescriptorProto_TYPE_UINT64: -+ return 0 -+ case FieldDescriptorProto_TYPE_INT32: -+ return 0 -+ case FieldDescriptorProto_TYPE_UINT32: -+ return 0 -+ case FieldDescriptorProto_TYPE_FIXED64: -+ return 1 -+ case FieldDescriptorProto_TYPE_FIXED32: -+ return 5 -+ case FieldDescriptorProto_TYPE_BOOL: -+ return 0 -+ case FieldDescriptorProto_TYPE_STRING: -+ return 2 -+ case FieldDescriptorProto_TYPE_GROUP: -+ return 2 -+ case FieldDescriptorProto_TYPE_MESSAGE: -+ return 2 -+ case FieldDescriptorProto_TYPE_BYTES: -+ return 2 -+ case FieldDescriptorProto_TYPE_ENUM: -+ return 0 -+ case FieldDescriptorProto_TYPE_SFIXED32: -+ return 5 -+ case FieldDescriptorProto_TYPE_SFIXED64: -+ return 1 -+ case FieldDescriptorProto_TYPE_SINT32: -+ return 0 -+ case FieldDescriptorProto_TYPE_SINT64: -+ return 0 -+ } -+ panic("unreachable") -+} -+ -+func (field *FieldDescriptorProto) GetKeyUint64() (x uint64) { -+ packed := field.IsPacked() -+ wireType := field.WireType() -+ fieldNumber := field.GetNumber() -+ if packed { -+ wireType = 2 -+ } -+ x = uint64(uint32(fieldNumber)<<3 | uint32(wireType)) -+ return x -+} -+ -+func (field *FieldDescriptorProto) GetKey3Uint64() (x uint64) { -+ packed := field.IsPacked3() -+ wireType := field.WireType() -+ fieldNumber := field.GetNumber() -+ if packed { -+ wireType = 2 -+ } -+ x = uint64(uint32(fieldNumber)<<3 | uint32(wireType)) -+ return x -+} -+ -+func (field *FieldDescriptorProto) GetKey() []byte { -+ x := field.GetKeyUint64() -+ i := 0 -+ keybuf := make([]byte, 0) -+ for i = 0; x > 127; i++ { -+ keybuf = append(keybuf, 0x80|uint8(x&0x7F)) -+ x >>= 7 -+ } -+ keybuf = append(keybuf, uint8(x)) -+ return keybuf -+} -+ -+func (field *FieldDescriptorProto) GetKey3() []byte { -+ x := field.GetKey3Uint64() -+ i := 0 -+ keybuf := make([]byte, 0) -+ for i = 0; x > 127; i++ { -+ keybuf = append(keybuf, 0x80|uint8(x&0x7F)) -+ x >>= 7 -+ } -+ keybuf = append(keybuf, uint8(x)) -+ return keybuf -+} -+ -+func (desc *FileDescriptorSet) GetField(packageName, messageName, fieldName string) *FieldDescriptorProto { -+ msg := desc.GetMessage(packageName, messageName) -+ if msg == nil { -+ return nil -+ } -+ for _, field := range msg.GetField() { -+ if field.GetName() == fieldName { -+ return field -+ } -+ } -+ return nil -+} -+ -+func (file *FileDescriptorProto) GetMessage(typeName string) *DescriptorProto { -+ for _, msg := range file.GetMessageType() { -+ if msg.GetName() == typeName { -+ return msg -+ } -+ nes := file.GetNestedMessage(msg, strings.TrimPrefix(typeName, msg.GetName()+".")) -+ if nes != nil { -+ return nes -+ } -+ } -+ return nil -+} -+ -+func (file *FileDescriptorProto) GetNestedMessage(msg *DescriptorProto, typeName string) *DescriptorProto { -+ for _, nes := range msg.GetNestedType() { -+ if nes.GetName() == typeName { -+ return nes -+ } -+ res := file.GetNestedMessage(nes, strings.TrimPrefix(typeName, nes.GetName()+".")) -+ if res != nil { -+ return res -+ } -+ } -+ return nil -+} -+ -+func (desc *FileDescriptorSet) GetMessage(packageName string, typeName string) *DescriptorProto { -+ for _, file := range desc.GetFile() { -+ if strings.Map(dotToUnderscore, file.GetPackage()) != strings.Map(dotToUnderscore, packageName) { -+ continue -+ } -+ for _, msg := range file.GetMessageType() { -+ if msg.GetName() == typeName { -+ return msg -+ } -+ } -+ for _, msg := range file.GetMessageType() { -+ for _, nes := range msg.GetNestedType() { -+ if nes.GetName() == typeName { -+ return nes -+ } -+ if msg.GetName()+"."+nes.GetName() == typeName { -+ return nes -+ } -+ } -+ } -+ } -+ return nil -+} -+ -+func (desc *FileDescriptorSet) IsProto3(packageName string, typeName string) bool { -+ for _, file := range desc.GetFile() { -+ if strings.Map(dotToUnderscore, file.GetPackage()) != strings.Map(dotToUnderscore, packageName) { -+ continue -+ } -+ for _, msg := range file.GetMessageType() { -+ if msg.GetName() == typeName { -+ return file.GetSyntax() == "proto3" -+ } -+ } -+ for _, msg := range file.GetMessageType() { -+ for _, nes := range msg.GetNestedType() { -+ if nes.GetName() == typeName { -+ return file.GetSyntax() == "proto3" -+ } -+ if msg.GetName()+"."+nes.GetName() == typeName { -+ return file.GetSyntax() == "proto3" -+ } -+ } -+ } -+ } -+ return false -+} -+ -+func (msg *DescriptorProto) IsExtendable() bool { -+ return len(msg.GetExtensionRange()) > 0 -+} -+ -+func (desc *FileDescriptorSet) FindExtension(packageName string, typeName string, fieldName string) (extPackageName string, field *FieldDescriptorProto) { -+ parent := desc.GetMessage(packageName, typeName) -+ if parent == nil { -+ return "", nil -+ } -+ if !parent.IsExtendable() { -+ return "", nil -+ } -+ extendee := "." + packageName + "." + typeName -+ for _, file := range desc.GetFile() { -+ for _, ext := range file.GetExtension() { -+ if strings.Map(dotToUnderscore, file.GetPackage()) == strings.Map(dotToUnderscore, packageName) { -+ if !(ext.GetExtendee() == typeName || ext.GetExtendee() == extendee) { -+ continue -+ } -+ } else { -+ if ext.GetExtendee() != extendee { -+ continue -+ } -+ } -+ if ext.GetName() == fieldName { -+ return file.GetPackage(), ext -+ } -+ } -+ } -+ return "", nil -+} -+ -+func (desc *FileDescriptorSet) FindExtensionByFieldNumber(packageName string, typeName string, fieldNum int32) (extPackageName string, field *FieldDescriptorProto) { -+ parent := desc.GetMessage(packageName, typeName) -+ if parent == nil { -+ return "", nil -+ } -+ if !parent.IsExtendable() { -+ return "", nil -+ } -+ extendee := "." + packageName + "." + typeName -+ for _, file := range desc.GetFile() { -+ for _, ext := range file.GetExtension() { -+ if strings.Map(dotToUnderscore, file.GetPackage()) == strings.Map(dotToUnderscore, packageName) { -+ if !(ext.GetExtendee() == typeName || ext.GetExtendee() == extendee) { -+ continue -+ } -+ } else { -+ if ext.GetExtendee() != extendee { -+ continue -+ } -+ } -+ if ext.GetNumber() == fieldNum { -+ return file.GetPackage(), ext -+ } -+ } -+ } -+ return "", nil -+} -+ -+func (desc *FileDescriptorSet) FindMessage(packageName string, typeName string, fieldName string) (msgPackageName string, msgName string) { -+ parent := desc.GetMessage(packageName, typeName) -+ if parent == nil { -+ return "", "" -+ } -+ field := parent.GetFieldDescriptor(fieldName) -+ if field == nil { -+ var extPackageName string -+ extPackageName, field = desc.FindExtension(packageName, typeName, fieldName) -+ if field == nil { -+ return "", "" -+ } -+ packageName = extPackageName -+ } -+ typeNames := strings.Split(field.GetTypeName(), ".") -+ if len(typeNames) == 1 { -+ msg := desc.GetMessage(packageName, typeName) -+ if msg == nil { -+ return "", "" -+ } -+ return packageName, msg.GetName() -+ } -+ if len(typeNames) > 2 { -+ for i := 1; i < len(typeNames)-1; i++ { -+ packageName = strings.Join(typeNames[1:len(typeNames)-i], ".") -+ typeName = strings.Join(typeNames[len(typeNames)-i:], ".") -+ msg := desc.GetMessage(packageName, typeName) -+ if msg != nil { -+ typeNames := strings.Split(msg.GetName(), ".") -+ if len(typeNames) == 1 { -+ return packageName, msg.GetName() -+ } -+ return strings.Join(typeNames[1:len(typeNames)-1], "."), typeNames[len(typeNames)-1] -+ } -+ } -+ } -+ return "", "" -+} -+ -+func (msg *DescriptorProto) GetFieldDescriptor(fieldName string) *FieldDescriptorProto { -+ for _, field := range msg.GetField() { -+ if field.GetName() == fieldName { -+ return field -+ } -+ } -+ return nil -+} -+ -+func (desc *FileDescriptorSet) GetEnum(packageName string, typeName string) *EnumDescriptorProto { -+ for _, file := range desc.GetFile() { -+ if strings.Map(dotToUnderscore, file.GetPackage()) != strings.Map(dotToUnderscore, packageName) { -+ continue -+ } -+ for _, enum := range file.GetEnumType() { -+ if enum.GetName() == typeName { -+ return enum -+ } -+ } -+ } -+ return nil -+} -+ -+func (f *FieldDescriptorProto) IsEnum() bool { -+ return *f.Type == FieldDescriptorProto_TYPE_ENUM -+} -+ -+func (f *FieldDescriptorProto) IsMessage() bool { -+ return *f.Type == FieldDescriptorProto_TYPE_MESSAGE -+} -+ -+func (f *FieldDescriptorProto) IsBytes() bool { -+ return *f.Type == FieldDescriptorProto_TYPE_BYTES -+} -+ -+func (f *FieldDescriptorProto) IsRepeated() bool { -+ return f.Label != nil && *f.Label == FieldDescriptorProto_LABEL_REPEATED -+} -+ -+func (f *FieldDescriptorProto) IsString() bool { -+ return *f.Type == FieldDescriptorProto_TYPE_STRING -+} -+ -+func (f *FieldDescriptorProto) IsBool() bool { -+ return *f.Type == FieldDescriptorProto_TYPE_BOOL -+} -+ -+func (f *FieldDescriptorProto) IsRequired() bool { -+ return f.Label != nil && *f.Label == FieldDescriptorProto_LABEL_REQUIRED -+} -+ -+func (f *FieldDescriptorProto) IsPacked() bool { -+ return f.Options != nil && f.GetOptions().GetPacked() -+} -+ -+func (f *FieldDescriptorProto) IsPacked3() bool { -+ if f.IsRepeated() && f.IsScalar() { -+ if f.Options == nil || f.GetOptions().Packed == nil { -+ return true -+ } -+ return f.Options != nil && f.GetOptions().GetPacked() -+ } -+ return false -+} -+ -+func (m *DescriptorProto) HasExtension() bool { -+ return len(m.ExtensionRange) > 0 -+} -diff --git a/vendor/github.com/gogo/protobuf/sortkeys/sortkeys.go b/vendor/github.com/gogo/protobuf/sortkeys/sortkeys.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/golang/protobuf/AUTHORS b/vendor/github.com/golang/protobuf/AUTHORS -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/golang/protobuf/CONTRIBUTORS b/vendor/github.com/golang/protobuf/CONTRIBUTORS -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/golang/protobuf/LICENSE b/vendor/github.com/golang/protobuf/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/golang/protobuf/jsonpb/decode.go b/vendor/github.com/golang/protobuf/jsonpb/decode.go -new file mode 100755 -index 0000000..6c16c25 ---- /dev/null -+++ b/vendor/github.com/golang/protobuf/jsonpb/decode.go -@@ -0,0 +1,530 @@ -+// 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 jsonpb -+ -+import ( -+ "encoding/json" -+ "errors" -+ "fmt" -+ "io" -+ "math" -+ "reflect" -+ "strconv" -+ "strings" -+ "time" -+ -+ "github.com/golang/protobuf/proto" -+ "google.golang.org/protobuf/encoding/protojson" -+ protoV2 "google.golang.org/protobuf/proto" -+ "google.golang.org/protobuf/reflect/protoreflect" -+ "google.golang.org/protobuf/reflect/protoregistry" -+) -+ -+const wrapJSONUnmarshalV2 = false -+ -+// UnmarshalNext unmarshals the next JSON object from d into m. -+func UnmarshalNext(d *json.Decoder, m proto.Message) error { -+ return new(Unmarshaler).UnmarshalNext(d, m) -+} -+ -+// Unmarshal unmarshals a JSON object from r into m. -+func Unmarshal(r io.Reader, m proto.Message) error { -+ return new(Unmarshaler).Unmarshal(r, m) -+} -+ -+// UnmarshalString unmarshals a JSON object from s into m. -+func UnmarshalString(s string, m proto.Message) error { -+ return new(Unmarshaler).Unmarshal(strings.NewReader(s), m) -+} -+ -+// Unmarshaler is a configurable object for converting from a JSON -+// representation to a protocol buffer object. -+type Unmarshaler struct { -+ // AllowUnknownFields specifies whether to allow messages to contain -+ // unknown JSON fields, as opposed to failing to unmarshal. -+ AllowUnknownFields bool -+ -+ // AnyResolver is used to resolve the google.protobuf.Any well-known type. -+ // If unset, the global registry is used by default. -+ AnyResolver AnyResolver -+} -+ -+// 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. -+// -+// The JSON unmarshaling must follow the JSON to proto specification: -+// https://developers.google.com/protocol-buffers/docs/proto3#json -+// -+// Deprecated: Custom types should implement protobuf reflection instead. -+type JSONPBUnmarshaler interface { -+ UnmarshalJSONPB(*Unmarshaler, []byte) error -+} -+ -+// Unmarshal unmarshals a JSON object from r into m. -+func (u *Unmarshaler) Unmarshal(r io.Reader, m proto.Message) error { -+ return u.UnmarshalNext(json.NewDecoder(r), m) -+} -+ -+// UnmarshalNext unmarshals the next JSON object from d into m. -+func (u *Unmarshaler) UnmarshalNext(d *json.Decoder, m proto.Message) error { -+ if m == nil { -+ return errors.New("invalid nil message") -+ } -+ -+ // Parse the next JSON object from the stream. -+ raw := json.RawMessage{} -+ if err := d.Decode(&raw); err != nil { -+ return err -+ } -+ -+ // Check for custom unmarshalers first since they may not properly -+ // implement protobuf reflection that the logic below relies on. -+ if jsu, ok := m.(JSONPBUnmarshaler); ok { -+ return jsu.UnmarshalJSONPB(u, raw) -+ } -+ -+ mr := proto.MessageReflect(m) -+ -+ // NOTE: For historical reasons, a top-level null is treated as a noop. -+ // This is incorrect, but kept for compatibility. -+ if string(raw) == "null" && mr.Descriptor().FullName() != "google.protobuf.Value" { -+ return nil -+ } -+ -+ if wrapJSONUnmarshalV2 { -+ // NOTE: If input message is non-empty, we need to preserve merge semantics -+ // of the old jsonpb implementation. These semantics are not supported by -+ // the protobuf JSON specification. -+ isEmpty := true -+ mr.Range(func(protoreflect.FieldDescriptor, protoreflect.Value) bool { -+ isEmpty = false // at least one iteration implies non-empty -+ return false -+ }) -+ if !isEmpty { -+ // Perform unmarshaling into a newly allocated, empty message. -+ mr = mr.New() -+ -+ // Use a defer to copy all unmarshaled fields into the original message. -+ dst := proto.MessageReflect(m) -+ defer mr.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { -+ dst.Set(fd, v) -+ return true -+ }) -+ } -+ -+ // Unmarshal using the v2 JSON unmarshaler. -+ opts := protojson.UnmarshalOptions{ -+ DiscardUnknown: u.AllowUnknownFields, -+ } -+ if u.AnyResolver != nil { -+ opts.Resolver = anyResolver{u.AnyResolver} -+ } -+ return opts.Unmarshal(raw, mr.Interface()) -+ } else { -+ if err := u.unmarshalMessage(mr, raw); err != nil { -+ return err -+ } -+ return protoV2.CheckInitialized(mr.Interface()) -+ } -+} -+ -+func (u *Unmarshaler) unmarshalMessage(m protoreflect.Message, in []byte) error { -+ md := m.Descriptor() -+ fds := md.Fields() -+ -+ if jsu, ok := proto.MessageV1(m.Interface()).(JSONPBUnmarshaler); ok { -+ return jsu.UnmarshalJSONPB(u, in) -+ } -+ -+ if string(in) == "null" && md.FullName() != "google.protobuf.Value" { -+ return nil -+ } -+ -+ switch wellKnownType(md.FullName()) { -+ case "Any": -+ var jsonObject map[string]json.RawMessage -+ if err := json.Unmarshal(in, &jsonObject); err != nil { -+ return err -+ } -+ -+ rawTypeURL, ok := jsonObject["@type"] -+ if !ok { -+ return errors.New("Any JSON doesn't have '@type'") -+ } -+ typeURL, err := unquoteString(string(rawTypeURL)) -+ if err != nil { -+ return fmt.Errorf("can't unmarshal Any's '@type': %q", rawTypeURL) -+ } -+ m.Set(fds.ByNumber(1), protoreflect.ValueOfString(typeURL)) -+ -+ var m2 protoreflect.Message -+ if u.AnyResolver != nil { -+ mi, err := u.AnyResolver.Resolve(typeURL) -+ if err != nil { -+ return err -+ } -+ m2 = proto.MessageReflect(mi) -+ } else { -+ mt, err := protoregistry.GlobalTypes.FindMessageByURL(typeURL) -+ if err != nil { -+ if err == protoregistry.NotFound { -+ return fmt.Errorf("could not resolve Any message type: %v", typeURL) -+ } -+ return err -+ } -+ m2 = mt.New() -+ } -+ -+ if wellKnownType(m2.Descriptor().FullName()) != "" { -+ rawValue, ok := jsonObject["value"] -+ if !ok { -+ return errors.New("Any JSON doesn't have 'value'") -+ } -+ if err := u.unmarshalMessage(m2, rawValue); err != nil { -+ return fmt.Errorf("can't unmarshal Any nested proto %v: %v", typeURL, err) -+ } -+ } else { -+ delete(jsonObject, "@type") -+ rawJSON, err := json.Marshal(jsonObject) -+ if err != nil { -+ return fmt.Errorf("can't generate JSON for Any's nested proto to be unmarshaled: %v", err) -+ } -+ if err = u.unmarshalMessage(m2, rawJSON); err != nil { -+ return fmt.Errorf("can't unmarshal Any nested proto %v: %v", typeURL, err) -+ } -+ } -+ -+ rawWire, err := protoV2.Marshal(m2.Interface()) -+ if err != nil { -+ return fmt.Errorf("can't marshal proto %v into Any.Value: %v", typeURL, err) -+ } -+ m.Set(fds.ByNumber(2), protoreflect.ValueOfBytes(rawWire)) -+ return nil -+ case "BoolValue", "BytesValue", "StringValue", -+ "Int32Value", "UInt32Value", "FloatValue", -+ "Int64Value", "UInt64Value", "DoubleValue": -+ fd := fds.ByNumber(1) -+ v, err := u.unmarshalValue(m.NewField(fd), in, fd) -+ if err != nil { -+ return err -+ } -+ m.Set(fd, v) -+ return nil -+ case "Duration": -+ v, err := unquoteString(string(in)) -+ if err != nil { -+ return err -+ } -+ d, err := time.ParseDuration(v) -+ if err != nil { -+ return fmt.Errorf("bad Duration: %v", err) -+ } -+ -+ sec := d.Nanoseconds() / 1e9 -+ nsec := d.Nanoseconds() % 1e9 -+ m.Set(fds.ByNumber(1), protoreflect.ValueOfInt64(int64(sec))) -+ m.Set(fds.ByNumber(2), protoreflect.ValueOfInt32(int32(nsec))) -+ return nil -+ case "Timestamp": -+ v, err := unquoteString(string(in)) -+ if err != nil { -+ return err -+ } -+ t, err := time.Parse(time.RFC3339Nano, v) -+ if err != nil { -+ return fmt.Errorf("bad Timestamp: %v", err) -+ } -+ -+ sec := t.Unix() -+ nsec := t.Nanosecond() -+ m.Set(fds.ByNumber(1), protoreflect.ValueOfInt64(int64(sec))) -+ m.Set(fds.ByNumber(2), protoreflect.ValueOfInt32(int32(nsec))) -+ return nil -+ case "Value": -+ switch { -+ case string(in) == "null": -+ m.Set(fds.ByNumber(1), protoreflect.ValueOfEnum(0)) -+ case string(in) == "true": -+ m.Set(fds.ByNumber(4), protoreflect.ValueOfBool(true)) -+ case string(in) == "false": -+ m.Set(fds.ByNumber(4), protoreflect.ValueOfBool(false)) -+ case hasPrefixAndSuffix('"', in, '"'): -+ s, err := unquoteString(string(in)) -+ if err != nil { -+ return fmt.Errorf("unrecognized type for Value %q", in) -+ } -+ m.Set(fds.ByNumber(3), protoreflect.ValueOfString(s)) -+ case hasPrefixAndSuffix('[', in, ']'): -+ v := m.Mutable(fds.ByNumber(6)) -+ return u.unmarshalMessage(v.Message(), in) -+ case hasPrefixAndSuffix('{', in, '}'): -+ v := m.Mutable(fds.ByNumber(5)) -+ return u.unmarshalMessage(v.Message(), in) -+ default: -+ f, err := strconv.ParseFloat(string(in), 0) -+ if err != nil { -+ return fmt.Errorf("unrecognized type for Value %q", in) -+ } -+ m.Set(fds.ByNumber(2), protoreflect.ValueOfFloat64(f)) -+ } -+ return nil -+ case "ListValue": -+ var jsonArray []json.RawMessage -+ if err := json.Unmarshal(in, &jsonArray); err != nil { -+ return fmt.Errorf("bad ListValue: %v", err) -+ } -+ -+ lv := m.Mutable(fds.ByNumber(1)).List() -+ for _, raw := range jsonArray { -+ ve := lv.NewElement() -+ if err := u.unmarshalMessage(ve.Message(), raw); err != nil { -+ return err -+ } -+ lv.Append(ve) -+ } -+ return nil -+ case "Struct": -+ var jsonObject map[string]json.RawMessage -+ if err := json.Unmarshal(in, &jsonObject); err != nil { -+ return fmt.Errorf("bad StructValue: %v", err) -+ } -+ -+ mv := m.Mutable(fds.ByNumber(1)).Map() -+ for key, raw := range jsonObject { -+ kv := protoreflect.ValueOf(key).MapKey() -+ vv := mv.NewValue() -+ if err := u.unmarshalMessage(vv.Message(), raw); err != nil { -+ return fmt.Errorf("bad value in StructValue for key %q: %v", key, err) -+ } -+ mv.Set(kv, vv) -+ } -+ return nil -+ } -+ -+ var jsonObject map[string]json.RawMessage -+ if err := json.Unmarshal(in, &jsonObject); err != nil { -+ return err -+ } -+ -+ // Handle known fields. -+ for i := 0; i < fds.Len(); i++ { -+ fd := fds.Get(i) -+ if fd.IsWeak() && fd.Message().IsPlaceholder() { -+ continue // weak reference is not linked in -+ } -+ -+ // Search for any raw JSON value associated with this field. -+ var raw json.RawMessage -+ name := string(fd.Name()) -+ if fd.Kind() == protoreflect.GroupKind { -+ name = string(fd.Message().Name()) -+ } -+ if v, ok := jsonObject[name]; ok { -+ delete(jsonObject, name) -+ raw = v -+ } -+ name = string(fd.JSONName()) -+ if v, ok := jsonObject[name]; ok { -+ delete(jsonObject, name) -+ raw = v -+ } -+ -+ field := m.NewField(fd) -+ // Unmarshal the field value. -+ if raw == nil || (string(raw) == "null" && !isSingularWellKnownValue(fd) && !isSingularJSONPBUnmarshaler(field, fd)) { -+ continue -+ } -+ v, err := u.unmarshalValue(field, raw, fd) -+ if err != nil { -+ return err -+ } -+ m.Set(fd, v) -+ } -+ -+ // Handle extension fields. -+ for name, raw := range jsonObject { -+ if !strings.HasPrefix(name, "[") || !strings.HasSuffix(name, "]") { -+ continue -+ } -+ -+ // Resolve the extension field by name. -+ xname := protoreflect.FullName(name[len("[") : len(name)-len("]")]) -+ xt, _ := protoregistry.GlobalTypes.FindExtensionByName(xname) -+ if xt == nil && isMessageSet(md) { -+ xt, _ = protoregistry.GlobalTypes.FindExtensionByName(xname.Append("message_set_extension")) -+ } -+ if xt == nil { -+ continue -+ } -+ delete(jsonObject, name) -+ fd := xt.TypeDescriptor() -+ if fd.ContainingMessage().FullName() != m.Descriptor().FullName() { -+ return fmt.Errorf("extension field %q does not extend message %q", xname, m.Descriptor().FullName()) -+ } -+ -+ field := m.NewField(fd) -+ // Unmarshal the field value. -+ if raw == nil || (string(raw) == "null" && !isSingularWellKnownValue(fd) && !isSingularJSONPBUnmarshaler(field, fd)) { -+ continue -+ } -+ v, err := u.unmarshalValue(field, raw, fd) -+ if err != nil { -+ return err -+ } -+ m.Set(fd, v) -+ } -+ -+ if !u.AllowUnknownFields && len(jsonObject) > 0 { -+ for name := range jsonObject { -+ return fmt.Errorf("unknown field %q in %v", name, md.FullName()) -+ } -+ } -+ return nil -+} -+ -+func isSingularWellKnownValue(fd protoreflect.FieldDescriptor) bool { -+ if fd.Cardinality() == protoreflect.Repeated { -+ return false -+ } -+ if md := fd.Message(); md != nil { -+ return md.FullName() == "google.protobuf.Value" -+ } -+ if ed := fd.Enum(); ed != nil { -+ return ed.FullName() == "google.protobuf.NullValue" -+ } -+ return false -+} -+ -+func isSingularJSONPBUnmarshaler(v protoreflect.Value, fd protoreflect.FieldDescriptor) bool { -+ if fd.Message() != nil && fd.Cardinality() != protoreflect.Repeated { -+ _, ok := proto.MessageV1(v.Interface()).(JSONPBUnmarshaler) -+ return ok -+ } -+ return false -+} -+ -+func (u *Unmarshaler) unmarshalValue(v protoreflect.Value, in []byte, fd protoreflect.FieldDescriptor) (protoreflect.Value, error) { -+ switch { -+ case fd.IsList(): -+ var jsonArray []json.RawMessage -+ if err := json.Unmarshal(in, &jsonArray); err != nil { -+ return v, err -+ } -+ lv := v.List() -+ for _, raw := range jsonArray { -+ ve, err := u.unmarshalSingularValue(lv.NewElement(), raw, fd) -+ if err != nil { -+ return v, err -+ } -+ lv.Append(ve) -+ } -+ return v, nil -+ case fd.IsMap(): -+ var jsonObject map[string]json.RawMessage -+ if err := json.Unmarshal(in, &jsonObject); err != nil { -+ return v, err -+ } -+ kfd := fd.MapKey() -+ vfd := fd.MapValue() -+ mv := v.Map() -+ for key, raw := range jsonObject { -+ var kv protoreflect.MapKey -+ if kfd.Kind() == protoreflect.StringKind { -+ kv = protoreflect.ValueOf(key).MapKey() -+ } else { -+ v, err := u.unmarshalSingularValue(kfd.Default(), []byte(key), kfd) -+ if err != nil { -+ return v, err -+ } -+ kv = v.MapKey() -+ } -+ -+ vv, err := u.unmarshalSingularValue(mv.NewValue(), raw, vfd) -+ if err != nil { -+ return v, err -+ } -+ mv.Set(kv, vv) -+ } -+ return v, nil -+ default: -+ return u.unmarshalSingularValue(v, in, fd) -+ } -+} -+ -+var nonFinite = map[string]float64{ -+ `"NaN"`: math.NaN(), -+ `"Infinity"`: math.Inf(+1), -+ `"-Infinity"`: math.Inf(-1), -+} -+ -+func (u *Unmarshaler) unmarshalSingularValue(v protoreflect.Value, in []byte, fd protoreflect.FieldDescriptor) (protoreflect.Value, error) { -+ switch fd.Kind() { -+ case protoreflect.BoolKind: -+ return unmarshalValue(in, new(bool)) -+ case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind: -+ return unmarshalValue(trimQuote(in), new(int32)) -+ case protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind: -+ return unmarshalValue(trimQuote(in), new(int64)) -+ case protoreflect.Uint32Kind, protoreflect.Fixed32Kind: -+ return unmarshalValue(trimQuote(in), new(uint32)) -+ case protoreflect.Uint64Kind, protoreflect.Fixed64Kind: -+ return unmarshalValue(trimQuote(in), new(uint64)) -+ case protoreflect.FloatKind: -+ if f, ok := nonFinite[string(in)]; ok { -+ return protoreflect.ValueOfFloat32(float32(f)), nil -+ } -+ return unmarshalValue(trimQuote(in), new(float32)) -+ case protoreflect.DoubleKind: -+ if f, ok := nonFinite[string(in)]; ok { -+ return protoreflect.ValueOfFloat64(float64(f)), nil -+ } -+ return unmarshalValue(trimQuote(in), new(float64)) -+ case protoreflect.StringKind: -+ return unmarshalValue(in, new(string)) -+ case protoreflect.BytesKind: -+ return unmarshalValue(in, new([]byte)) -+ case protoreflect.EnumKind: -+ if hasPrefixAndSuffix('"', in, '"') { -+ vd := fd.Enum().Values().ByName(protoreflect.Name(trimQuote(in))) -+ if vd == nil { -+ return v, fmt.Errorf("unknown value %q for enum %s", in, fd.Enum().FullName()) -+ } -+ return protoreflect.ValueOfEnum(vd.Number()), nil -+ } -+ return unmarshalValue(in, new(protoreflect.EnumNumber)) -+ case protoreflect.MessageKind, protoreflect.GroupKind: -+ err := u.unmarshalMessage(v.Message(), in) -+ return v, err -+ default: -+ panic(fmt.Sprintf("invalid kind %v", fd.Kind())) -+ } -+} -+ -+func unmarshalValue(in []byte, v interface{}) (protoreflect.Value, error) { -+ err := json.Unmarshal(in, v) -+ return protoreflect.ValueOf(reflect.ValueOf(v).Elem().Interface()), err -+} -+ -+func unquoteString(in string) (out string, err error) { -+ err = json.Unmarshal([]byte(in), &out) -+ return out, err -+} -+ -+func hasPrefixAndSuffix(prefix byte, in []byte, suffix byte) bool { -+ if len(in) >= 2 && in[0] == prefix && in[len(in)-1] == suffix { -+ return true -+ } -+ return false -+} -+ -+// trimQuote is like unquoteString but simply strips surrounding quotes. -+// This is incorrect, but is behavior done by the legacy implementation. -+func trimQuote(in []byte) []byte { -+ if len(in) >= 2 && in[0] == '"' && in[len(in)-1] == '"' { -+ in = in[1 : len(in)-1] -+ } -+ return in -+} -diff --git a/vendor/github.com/golang/protobuf/jsonpb/encode.go b/vendor/github.com/golang/protobuf/jsonpb/encode.go -new file mode 100755 -index 0000000..685c80a ---- /dev/null -+++ b/vendor/github.com/golang/protobuf/jsonpb/encode.go -@@ -0,0 +1,559 @@ -+// 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 jsonpb -+ -+import ( -+ "encoding/json" -+ "errors" -+ "fmt" -+ "io" -+ "math" -+ "reflect" -+ "sort" -+ "strconv" -+ "strings" -+ "time" -+ -+ "github.com/golang/protobuf/proto" -+ "google.golang.org/protobuf/encoding/protojson" -+ protoV2 "google.golang.org/protobuf/proto" -+ "google.golang.org/protobuf/reflect/protoreflect" -+ "google.golang.org/protobuf/reflect/protoregistry" -+) -+ -+const wrapJSONMarshalV2 = false -+ -+// Marshaler is a configurable object for marshaling protocol buffer messages -+// to the specified JSON representation. -+type Marshaler struct { -+ // OrigName specifies whether to use the original protobuf name for fields. -+ OrigName bool -+ -+ // EnumsAsInts specifies whether to render enum values as integers, -+ // as opposed to string values. -+ EnumsAsInts bool -+ -+ // EmitDefaults specifies whether to render fields with zero values. -+ EmitDefaults bool -+ -+ // Indent controls whether the output is compact or not. -+ // If empty, the output is compact JSON. Otherwise, every JSON object -+ // entry and JSON array value will be on its own line. -+ // Each line will be preceded by repeated copies of Indent, where the -+ // number of copies is the current indentation depth. -+ Indent string -+ -+ // AnyResolver is used to resolve the google.protobuf.Any well-known type. -+ // If unset, the global registry is used by default. -+ AnyResolver AnyResolver -+} -+ -+// 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. -+// -+// The JSON marshaling must follow the proto to JSON specification: -+// https://developers.google.com/protocol-buffers/docs/proto3#json -+// -+// Deprecated: Custom types should implement protobuf reflection instead. -+type JSONPBMarshaler interface { -+ MarshalJSONPB(*Marshaler) ([]byte, error) -+} -+ -+// Marshal serializes a protobuf message as JSON into w. -+func (jm *Marshaler) Marshal(w io.Writer, m proto.Message) error { -+ b, err := jm.marshal(m) -+ if len(b) > 0 { -+ if _, err := w.Write(b); err != nil { -+ return err -+ } -+ } -+ return err -+} -+ -+// MarshalToString serializes a protobuf message as JSON in string form. -+func (jm *Marshaler) MarshalToString(m proto.Message) (string, error) { -+ b, err := jm.marshal(m) -+ if err != nil { -+ return "", err -+ } -+ return string(b), nil -+} -+ -+func (jm *Marshaler) marshal(m proto.Message) ([]byte, error) { -+ v := reflect.ValueOf(m) -+ if m == nil || (v.Kind() == reflect.Ptr && v.IsNil()) { -+ return nil, errors.New("Marshal called with nil") -+ } -+ -+ // Check for custom marshalers first since they may not properly -+ // implement protobuf reflection that the logic below relies on. -+ if jsm, ok := m.(JSONPBMarshaler); ok { -+ return jsm.MarshalJSONPB(jm) -+ } -+ -+ if wrapJSONMarshalV2 { -+ opts := protojson.MarshalOptions{ -+ UseProtoNames: jm.OrigName, -+ UseEnumNumbers: jm.EnumsAsInts, -+ EmitUnpopulated: jm.EmitDefaults, -+ Indent: jm.Indent, -+ } -+ if jm.AnyResolver != nil { -+ opts.Resolver = anyResolver{jm.AnyResolver} -+ } -+ return opts.Marshal(proto.MessageReflect(m).Interface()) -+ } else { -+ // Check for unpopulated required fields first. -+ m2 := proto.MessageReflect(m) -+ if err := protoV2.CheckInitialized(m2.Interface()); err != nil { -+ return nil, err -+ } -+ -+ w := jsonWriter{Marshaler: jm} -+ err := w.marshalMessage(m2, "", "") -+ return w.buf, err -+ } -+} -+ -+type jsonWriter struct { -+ *Marshaler -+ buf []byte -+} -+ -+func (w *jsonWriter) write(s string) { -+ w.buf = append(w.buf, s...) -+} -+ -+func (w *jsonWriter) marshalMessage(m protoreflect.Message, indent, typeURL string) error { -+ if jsm, ok := proto.MessageV1(m.Interface()).(JSONPBMarshaler); ok { -+ b, err := jsm.MarshalJSONPB(w.Marshaler) -+ 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", m.Interface(), 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 -+ } -+ } -+ w.write(string(b)) -+ return nil -+ } -+ -+ md := m.Descriptor() -+ fds := md.Fields() -+ -+ // Handle well-known types. -+ const secondInNanos = int64(time.Second / time.Nanosecond) -+ switch wellKnownType(md.FullName()) { -+ case "Any": -+ return w.marshalAny(m, indent) -+ case "BoolValue", "BytesValue", "StringValue", -+ "Int32Value", "UInt32Value", "FloatValue", -+ "Int64Value", "UInt64Value", "DoubleValue": -+ fd := fds.ByNumber(1) -+ return w.marshalValue(fd, m.Get(fd), indent) -+ case "Duration": -+ const maxSecondsInDuration = 315576000000 -+ // "Generated output always contains 0, 3, 6, or 9 fractional digits, -+ // depending on required precision." -+ s := m.Get(fds.ByNumber(1)).Int() -+ ns := m.Get(fds.ByNumber(2)).Int() -+ if s < -maxSecondsInDuration || s > maxSecondsInDuration { -+ return fmt.Errorf("seconds out of range %v", s) -+ } -+ if ns <= -secondInNanos || ns >= secondInNanos { -+ return fmt.Errorf("ns out of range (%v, %v)", -secondInNanos, secondInNanos) -+ } -+ if (s > 0 && ns < 0) || (s < 0 && ns > 0) { -+ return errors.New("signs of seconds and nanos do not match") -+ } -+ var sign string -+ if s < 0 || ns < 0 { -+ sign, s, ns = "-", -1*s, -1*ns -+ } -+ x := fmt.Sprintf("%s%d.%09d", sign, s, ns) -+ x = strings.TrimSuffix(x, "000") -+ x = strings.TrimSuffix(x, "000") -+ x = strings.TrimSuffix(x, ".000") -+ w.write(fmt.Sprintf(`"%vs"`, x)) -+ return nil -+ case "Timestamp": -+ // "RFC 3339, where generated output will always be Z-normalized -+ // and uses 0, 3, 6 or 9 fractional digits." -+ s := m.Get(fds.ByNumber(1)).Int() -+ ns := m.Get(fds.ByNumber(2)).Int() -+ if ns < 0 || ns >= secondInNanos { -+ return fmt.Errorf("ns out of range [0, %v)", secondInNanos) -+ } -+ 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") -+ x = strings.TrimSuffix(x, ".000") -+ w.write(fmt.Sprintf(`"%vZ"`, x)) -+ return nil -+ case "Value": -+ // JSON value; which is a null, number, string, bool, object, or array. -+ od := md.Oneofs().Get(0) -+ fd := m.WhichOneof(od) -+ if fd == nil { -+ return errors.New("nil Value") -+ } -+ return w.marshalValue(fd, m.Get(fd), indent) -+ case "Struct", "ListValue": -+ // JSON object or array. -+ fd := fds.ByNumber(1) -+ return w.marshalValue(fd, m.Get(fd), indent) -+ } -+ -+ w.write("{") -+ if w.Indent != "" { -+ w.write("\n") -+ } -+ -+ firstField := true -+ if typeURL != "" { -+ if err := w.marshalTypeURL(indent, typeURL); err != nil { -+ return err -+ } -+ firstField = false -+ } -+ -+ for i := 0; i < fds.Len(); { -+ fd := fds.Get(i) -+ if od := fd.ContainingOneof(); od != nil { -+ fd = m.WhichOneof(od) -+ i += od.Fields().Len() -+ if fd == nil { -+ continue -+ } -+ } else { -+ i++ -+ } -+ -+ v := m.Get(fd) -+ -+ if !m.Has(fd) { -+ if !w.EmitDefaults || fd.ContainingOneof() != nil { -+ continue -+ } -+ if fd.Cardinality() != protoreflect.Repeated && (fd.Message() != nil || fd.Syntax() == protoreflect.Proto2) { -+ v = protoreflect.Value{} // use "null" for singular messages or proto2 scalars -+ } -+ } -+ -+ if !firstField { -+ w.writeComma() -+ } -+ if err := w.marshalField(fd, v, indent); err != nil { -+ return err -+ } -+ firstField = false -+ } -+ -+ // Handle proto2 extensions. -+ if md.ExtensionRanges().Len() > 0 { -+ // Collect a sorted list of all extension descriptor and values. -+ type ext struct { -+ desc protoreflect.FieldDescriptor -+ val protoreflect.Value -+ } -+ var exts []ext -+ m.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { -+ if fd.IsExtension() { -+ exts = append(exts, ext{fd, v}) -+ } -+ return true -+ }) -+ sort.Slice(exts, func(i, j int) bool { -+ return exts[i].desc.Number() < exts[j].desc.Number() -+ }) -+ -+ for _, ext := range exts { -+ if !firstField { -+ w.writeComma() -+ } -+ if err := w.marshalField(ext.desc, ext.val, indent); err != nil { -+ return err -+ } -+ firstField = false -+ } -+ } -+ -+ if w.Indent != "" { -+ w.write("\n") -+ w.write(indent) -+ } -+ w.write("}") -+ return nil -+} -+ -+func (w *jsonWriter) writeComma() { -+ if w.Indent != "" { -+ w.write(",\n") -+ } else { -+ w.write(",") -+ } -+} -+ -+func (w *jsonWriter) marshalAny(m protoreflect.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." -+ md := m.Descriptor() -+ typeURL := m.Get(md.Fields().ByNumber(1)).String() -+ rawVal := m.Get(md.Fields().ByNumber(2)).Bytes() -+ -+ var m2 protoreflect.Message -+ if w.AnyResolver != nil { -+ mi, err := w.AnyResolver.Resolve(typeURL) -+ if err != nil { -+ return err -+ } -+ m2 = proto.MessageReflect(mi) -+ } else { -+ mt, err := protoregistry.GlobalTypes.FindMessageByURL(typeURL) -+ if err != nil { -+ return err -+ } -+ m2 = mt.New() -+ } -+ -+ if err := protoV2.Unmarshal(rawVal, m2.Interface()); err != nil { -+ return err -+ } -+ -+ if wellKnownType(m2.Descriptor().FullName()) == "" { -+ return w.marshalMessage(m2, indent, typeURL) -+ } -+ -+ w.write("{") -+ if w.Indent != "" { -+ w.write("\n") -+ } -+ if err := w.marshalTypeURL(indent, typeURL); err != nil { -+ return err -+ } -+ w.writeComma() -+ if w.Indent != "" { -+ w.write(indent) -+ w.write(w.Indent) -+ w.write(`"value": `) -+ } else { -+ w.write(`"value":`) -+ } -+ if err := w.marshalMessage(m2, indent+w.Indent, ""); err != nil { -+ return err -+ } -+ if w.Indent != "" { -+ w.write("\n") -+ w.write(indent) -+ } -+ w.write("}") -+ return nil -+} -+ -+func (w *jsonWriter) marshalTypeURL(indent, typeURL string) error { -+ if w.Indent != "" { -+ w.write(indent) -+ w.write(w.Indent) -+ } -+ w.write(`"@type":`) -+ if w.Indent != "" { -+ w.write(" ") -+ } -+ b, err := json.Marshal(typeURL) -+ if err != nil { -+ return err -+ } -+ w.write(string(b)) -+ return nil -+} -+ -+// marshalField writes field description and value to the Writer. -+func (w *jsonWriter) marshalField(fd protoreflect.FieldDescriptor, v protoreflect.Value, indent string) error { -+ if w.Indent != "" { -+ w.write(indent) -+ w.write(w.Indent) -+ } -+ w.write(`"`) -+ switch { -+ case fd.IsExtension(): -+ // For message set, use the fname of the message as the extension name. -+ name := string(fd.FullName()) -+ if isMessageSet(fd.ContainingMessage()) { -+ name = strings.TrimSuffix(name, ".message_set_extension") -+ } -+ -+ w.write("[" + name + "]") -+ case w.OrigName: -+ name := string(fd.Name()) -+ if fd.Kind() == protoreflect.GroupKind { -+ name = string(fd.Message().Name()) -+ } -+ w.write(name) -+ default: -+ w.write(string(fd.JSONName())) -+ } -+ w.write(`":`) -+ if w.Indent != "" { -+ w.write(" ") -+ } -+ return w.marshalValue(fd, v, indent) -+} -+ -+func (w *jsonWriter) marshalValue(fd protoreflect.FieldDescriptor, v protoreflect.Value, indent string) error { -+ switch { -+ case fd.IsList(): -+ w.write("[") -+ comma := "" -+ lv := v.List() -+ for i := 0; i < lv.Len(); i++ { -+ w.write(comma) -+ if w.Indent != "" { -+ w.write("\n") -+ w.write(indent) -+ w.write(w.Indent) -+ w.write(w.Indent) -+ } -+ if err := w.marshalSingularValue(fd, lv.Get(i), indent+w.Indent); err != nil { -+ return err -+ } -+ comma = "," -+ } -+ if w.Indent != "" { -+ w.write("\n") -+ w.write(indent) -+ w.write(w.Indent) -+ } -+ w.write("]") -+ return nil -+ case fd.IsMap(): -+ kfd := fd.MapKey() -+ vfd := fd.MapValue() -+ mv := v.Map() -+ -+ // Collect a sorted list of all map keys and values. -+ type entry struct{ key, val protoreflect.Value } -+ var entries []entry -+ mv.Range(func(k protoreflect.MapKey, v protoreflect.Value) bool { -+ entries = append(entries, entry{k.Value(), v}) -+ return true -+ }) -+ sort.Slice(entries, func(i, j int) bool { -+ switch kfd.Kind() { -+ case protoreflect.BoolKind: -+ return !entries[i].key.Bool() && entries[j].key.Bool() -+ case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind, protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind: -+ return entries[i].key.Int() < entries[j].key.Int() -+ case protoreflect.Uint32Kind, protoreflect.Fixed32Kind, protoreflect.Uint64Kind, protoreflect.Fixed64Kind: -+ return entries[i].key.Uint() < entries[j].key.Uint() -+ case protoreflect.StringKind: -+ return entries[i].key.String() < entries[j].key.String() -+ default: -+ panic("invalid kind") -+ } -+ }) -+ -+ w.write(`{`) -+ comma := "" -+ for _, entry := range entries { -+ w.write(comma) -+ if w.Indent != "" { -+ w.write("\n") -+ w.write(indent) -+ w.write(w.Indent) -+ w.write(w.Indent) -+ } -+ -+ s := fmt.Sprint(entry.key.Interface()) -+ b, err := json.Marshal(s) -+ if err != nil { -+ return err -+ } -+ w.write(string(b)) -+ -+ w.write(`:`) -+ if w.Indent != "" { -+ w.write(` `) -+ } -+ -+ if err := w.marshalSingularValue(vfd, entry.val, indent+w.Indent); err != nil { -+ return err -+ } -+ comma = "," -+ } -+ if w.Indent != "" { -+ w.write("\n") -+ w.write(indent) -+ w.write(w.Indent) -+ } -+ w.write(`}`) -+ return nil -+ default: -+ return w.marshalSingularValue(fd, v, indent) -+ } -+} -+ -+func (w *jsonWriter) marshalSingularValue(fd protoreflect.FieldDescriptor, v protoreflect.Value, indent string) error { -+ switch { -+ case !v.IsValid(): -+ w.write("null") -+ return nil -+ case fd.Message() != nil: -+ return w.marshalMessage(v.Message(), indent+w.Indent, "") -+ case fd.Enum() != nil: -+ if fd.Enum().FullName() == "google.protobuf.NullValue" { -+ w.write("null") -+ return nil -+ } -+ -+ vd := fd.Enum().Values().ByNumber(v.Enum()) -+ if vd == nil || w.EnumsAsInts { -+ w.write(strconv.Itoa(int(v.Enum()))) -+ } else { -+ w.write(`"` + string(vd.Name()) + `"`) -+ } -+ return nil -+ default: -+ switch v.Interface().(type) { -+ case float32, float64: -+ switch { -+ case math.IsInf(v.Float(), +1): -+ w.write(`"Infinity"`) -+ return nil -+ case math.IsInf(v.Float(), -1): -+ w.write(`"-Infinity"`) -+ return nil -+ case math.IsNaN(v.Float()): -+ w.write(`"NaN"`) -+ return nil -+ } -+ case int64, uint64: -+ w.write(fmt.Sprintf(`"%d"`, v.Interface())) -+ return nil -+ } -+ -+ b, err := json.Marshal(v.Interface()) -+ if err != nil { -+ return err -+ } -+ w.write(string(b)) -+ return nil -+ } -+} -diff --git a/vendor/github.com/golang/protobuf/jsonpb/json.go b/vendor/github.com/golang/protobuf/jsonpb/json.go -new file mode 100755 -index 0000000..480e244 ---- /dev/null -+++ b/vendor/github.com/golang/protobuf/jsonpb/json.go -@@ -0,0 +1,69 @@ -+// 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 jsonpb provides functionality to marshal and unmarshal between a -+// protocol buffer message and JSON. It follows the specification at -+// https://developers.google.com/protocol-buffers/docs/proto3#json. -+// -+// Do not rely on the default behavior of the standard encoding/json package -+// when called on generated message types as it does not operate correctly. -+// -+// Deprecated: Use the "google.golang.org/protobuf/encoding/protojson" -+// package instead. -+package jsonpb -+ -+import ( -+ "github.com/golang/protobuf/proto" -+ "google.golang.org/protobuf/reflect/protoreflect" -+ "google.golang.org/protobuf/reflect/protoregistry" -+ "google.golang.org/protobuf/runtime/protoimpl" -+) -+ -+// 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) -+} -+ -+type anyResolver struct{ AnyResolver } -+ -+func (r anyResolver) FindMessageByName(message protoreflect.FullName) (protoreflect.MessageType, error) { -+ return r.FindMessageByURL(string(message)) -+} -+ -+func (r anyResolver) FindMessageByURL(url string) (protoreflect.MessageType, error) { -+ m, err := r.Resolve(url) -+ if err != nil { -+ return nil, err -+ } -+ return protoimpl.X.MessageTypeOf(m), nil -+} -+ -+func (r anyResolver) FindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error) { -+ return protoregistry.GlobalTypes.FindExtensionByName(field) -+} -+ -+func (r anyResolver) FindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error) { -+ return protoregistry.GlobalTypes.FindExtensionByNumber(message, field) -+} -+ -+func wellKnownType(s protoreflect.FullName) string { -+ if s.Parent() == "google.protobuf" { -+ switch s.Name() { -+ case "Empty", "Any", -+ "BoolValue", "BytesValue", "StringValue", -+ "Int32Value", "UInt32Value", "FloatValue", -+ "Int64Value", "UInt64Value", "DoubleValue", -+ "Duration", "Timestamp", -+ "NullValue", "Struct", "Value", "ListValue": -+ return string(s.Name()) -+ } -+ } -+ return "" -+} -+ -+func isMessageSet(md protoreflect.MessageDescriptor) bool { -+ ms, ok := md.(interface{ IsMessageSet() bool }) -+ return ok && ms.IsMessageSet() -+} -diff --git a/vendor/github.com/golang/protobuf/proto/buffer.go b/vendor/github.com/golang/protobuf/proto/buffer.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/golang/protobuf/proto/defaults.go b/vendor/github.com/golang/protobuf/proto/defaults.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/golang/protobuf/proto/deprecated.go b/vendor/github.com/golang/protobuf/proto/deprecated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/golang/protobuf/proto/discard.go b/vendor/github.com/golang/protobuf/proto/discard.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/golang/protobuf/proto/extensions.go b/vendor/github.com/golang/protobuf/proto/extensions.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/golang/protobuf/proto/properties.go b/vendor/github.com/golang/protobuf/proto/properties.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/golang/protobuf/proto/proto.go b/vendor/github.com/golang/protobuf/proto/proto.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/golang/protobuf/proto/registry.go b/vendor/github.com/golang/protobuf/proto/registry.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/golang/protobuf/proto/text_decode.go b/vendor/github.com/golang/protobuf/proto/text_decode.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/golang/protobuf/proto/text_encode.go b/vendor/github.com/golang/protobuf/proto/text_encode.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/golang/protobuf/proto/wire.go b/vendor/github.com/golang/protobuf/proto/wire.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/golang/protobuf/proto/wrappers.go b/vendor/github.com/golang/protobuf/proto/wrappers.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/golang/protobuf/ptypes/any.go b/vendor/github.com/golang/protobuf/ptypes/any.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/golang/protobuf/ptypes/any/any.pb.go b/vendor/github.com/golang/protobuf/ptypes/any/any.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/golang/protobuf/ptypes/doc.go b/vendor/github.com/golang/protobuf/ptypes/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/golang/protobuf/ptypes/duration.go b/vendor/github.com/golang/protobuf/ptypes/duration.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/golang/protobuf/ptypes/duration/duration.pb.go b/vendor/github.com/golang/protobuf/ptypes/duration/duration.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/golang/protobuf/ptypes/timestamp.go b/vendor/github.com/golang/protobuf/ptypes/timestamp.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.pb.go b/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/AUTHORS b/vendor/github.com/google/cadvisor/AUTHORS -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/LICENSE b/vendor/github.com/google/cadvisor/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/cache/memory/memory.go b/vendor/github.com/google/cadvisor/cache/memory/memory.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/collector/collector_manager.go b/vendor/github.com/google/cadvisor/collector/collector_manager.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/collector/config.go b/vendor/github.com/google/cadvisor/collector/config.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/collector/fakes.go b/vendor/github.com/google/cadvisor/collector/fakes.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/collector/generic_collector.go b/vendor/github.com/google/cadvisor/collector/generic_collector.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/collector/prometheus_collector.go b/vendor/github.com/google/cadvisor/collector/prometheus_collector.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/collector/types.go b/vendor/github.com/google/cadvisor/collector/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/collector/util.go b/vendor/github.com/google/cadvisor/collector/util.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/container/common/container_hints.go b/vendor/github.com/google/cadvisor/container/common/container_hints.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/container/common/fsHandler.go b/vendor/github.com/google/cadvisor/container/common/fsHandler.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/container/common/helpers.go b/vendor/github.com/google/cadvisor/container/common/helpers.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/container/common/inotify_watcher.go b/vendor/github.com/google/cadvisor/container/common/inotify_watcher.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/container/container.go b/vendor/github.com/google/cadvisor/container/container.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/container/factory.go b/vendor/github.com/google/cadvisor/container/factory.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/container/libcontainer/handler.go b/vendor/github.com/google/cadvisor/container/libcontainer/handler.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/container/libcontainer/helpers.go b/vendor/github.com/google/cadvisor/container/libcontainer/helpers.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/container/raw/factory.go b/vendor/github.com/google/cadvisor/container/raw/factory.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/container/raw/handler.go b/vendor/github.com/google/cadvisor/container/raw/handler.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/container/raw/watcher.go b/vendor/github.com/google/cadvisor/container/raw/watcher.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/devicemapper/dmsetup_client.go b/vendor/github.com/google/cadvisor/devicemapper/dmsetup_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/devicemapper/doc.go b/vendor/github.com/google/cadvisor/devicemapper/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/devicemapper/thin_ls_client.go b/vendor/github.com/google/cadvisor/devicemapper/thin_ls_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/devicemapper/thin_pool_watcher.go b/vendor/github.com/google/cadvisor/devicemapper/thin_pool_watcher.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/devicemapper/util.go b/vendor/github.com/google/cadvisor/devicemapper/util.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/events/handler.go b/vendor/github.com/google/cadvisor/events/handler.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/fs/fs.go b/vendor/github.com/google/cadvisor/fs/fs.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/fs/types.go b/vendor/github.com/google/cadvisor/fs/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/info/v1/container.go b/vendor/github.com/google/cadvisor/info/v1/container.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/info/v1/docker.go b/vendor/github.com/google/cadvisor/info/v1/docker.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/info/v1/machine.go b/vendor/github.com/google/cadvisor/info/v1/machine.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/info/v1/metric.go b/vendor/github.com/google/cadvisor/info/v1/metric.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/info/v2/container.go b/vendor/github.com/google/cadvisor/info/v2/container.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/info/v2/conversion.go b/vendor/github.com/google/cadvisor/info/v2/conversion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/info/v2/machine.go b/vendor/github.com/google/cadvisor/info/v2/machine.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/machine/info.go b/vendor/github.com/google/cadvisor/machine/info.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/machine/machine.go b/vendor/github.com/google/cadvisor/machine/machine.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/machine/operatingsystem_unix.go b/vendor/github.com/google/cadvisor/machine/operatingsystem_unix.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/machine/operatingsystem_windows.go b/vendor/github.com/google/cadvisor/machine/operatingsystem_windows.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/manager/container.go b/vendor/github.com/google/cadvisor/manager/container.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/manager/manager.go b/vendor/github.com/google/cadvisor/manager/manager.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/nvm/machine_libipmctl.go b/vendor/github.com/google/cadvisor/nvm/machine_libipmctl.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/nvm/machine_no_libipmctl.go b/vendor/github.com/google/cadvisor/nvm/machine_no_libipmctl.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/perf/collector_libpfm.go b/vendor/github.com/google/cadvisor/perf/collector_libpfm.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/perf/collector_no_libpfm.go b/vendor/github.com/google/cadvisor/perf/collector_no_libpfm.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/perf/config.go b/vendor/github.com/google/cadvisor/perf/config.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/perf/manager_libpfm.go b/vendor/github.com/google/cadvisor/perf/manager_libpfm.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/perf/manager_no_libpfm.go b/vendor/github.com/google/cadvisor/perf/manager_no_libpfm.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/perf/types_libpfm.go b/vendor/github.com/google/cadvisor/perf/types_libpfm.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/perf/uncore_libpfm.go b/vendor/github.com/google/cadvisor/perf/uncore_libpfm.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/resctrl/collector.go b/vendor/github.com/google/cadvisor/resctrl/collector.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/resctrl/manager.go b/vendor/github.com/google/cadvisor/resctrl/manager.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/resctrl/utils.go b/vendor/github.com/google/cadvisor/resctrl/utils.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/stats/noop.go b/vendor/github.com/google/cadvisor/stats/noop.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/stats/types.go b/vendor/github.com/google/cadvisor/stats/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/storage/common_flags.go b/vendor/github.com/google/cadvisor/storage/common_flags.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/storage/storage.go b/vendor/github.com/google/cadvisor/storage/storage.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/summary/buffer.go b/vendor/github.com/google/cadvisor/summary/buffer.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/summary/percentiles.go b/vendor/github.com/google/cadvisor/summary/percentiles.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/summary/summary.go b/vendor/github.com/google/cadvisor/summary/summary.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/utils/cloudinfo/cloudinfo.go b/vendor/github.com/google/cadvisor/utils/cloudinfo/cloudinfo.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/utils/cpuload/cpuload.go b/vendor/github.com/google/cadvisor/utils/cpuload/cpuload.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/utils/cpuload/netlink/conn.go b/vendor/github.com/google/cadvisor/utils/cpuload/netlink/conn.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/utils/cpuload/netlink/netlink.go b/vendor/github.com/google/cadvisor/utils/cpuload/netlink/netlink.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/utils/cpuload/netlink/reader.go b/vendor/github.com/google/cadvisor/utils/cpuload/netlink/reader.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/utils/oomparser/oomparser.go b/vendor/github.com/google/cadvisor/utils/oomparser/oomparser.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/utils/path.go b/vendor/github.com/google/cadvisor/utils/path.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/utils/sysfs/sysfs.go b/vendor/github.com/google/cadvisor/utils/sysfs/sysfs.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/utils/sysfs/sysfs_notx86.go b/vendor/github.com/google/cadvisor/utils/sysfs/sysfs_notx86.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/utils/sysfs/sysfs_x86.go b/vendor/github.com/google/cadvisor/utils/sysfs/sysfs_x86.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/utils/sysinfo/sysinfo.go b/vendor/github.com/google/cadvisor/utils/sysinfo/sysinfo.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/utils/timed_store.go b/vendor/github.com/google/cadvisor/utils/timed_store.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/utils/utils.go b/vendor/github.com/google/cadvisor/utils/utils.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/version/version.go b/vendor/github.com/google/cadvisor/version/version.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/cadvisor/watcher/watcher.go b/vendor/github.com/google/cadvisor/watcher/watcher.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/go-cmp/LICENSE b/vendor/github.com/google/go-cmp/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/go-cmp/cmp/compare.go b/vendor/github.com/google/go-cmp/cmp/compare.go -old mode 100644 -new mode 100755 -index fd2b3a4..087320d ---- a/vendor/github.com/google/go-cmp/cmp/compare.go -+++ b/vendor/github.com/google/go-cmp/cmp/compare.go -@@ -13,21 +13,21 @@ - // - // The primary features of cmp are: - // --// • When the default behavior of equality does not suit the needs of the test, --// custom equality functions can override the equality operation. --// For example, an equality function may report floats as equal so long as they --// are within some tolerance of each other. -+// - When the default behavior of equality does not suit the test's needs, -+// custom equality functions can override the equality operation. -+// For example, an equality function may report floats as equal so long as -+// they are within some tolerance of each other. - // --// • Types that have an Equal method may use that method to determine equality. --// This allows package authors to determine the equality operation for the types --// that they define. -+// - Types with an Equal method may use that method to determine equality. -+// This allows package authors to determine the equality operation -+// for the types that they define. - // --// • If no custom equality functions are used and no Equal method is defined, --// equality is determined by recursively comparing the primitive kinds on both --// values, much like reflect.DeepEqual. Unlike reflect.DeepEqual, unexported --// fields are not compared by default; they result in panics unless suppressed --// by using an Ignore option (see cmpopts.IgnoreUnexported) or explicitly --// compared using the Exporter option. -+// - If no custom equality functions are used and no Equal method is defined, -+// equality is determined by recursively comparing the primitive kinds on -+// both values, much like reflect.DeepEqual. Unlike reflect.DeepEqual, -+// unexported fields are not compared by default; they result in panics -+// unless suppressed by using an Ignore option (see cmpopts.IgnoreUnexported) -+// or explicitly compared using the Exporter option. - package cmp - - import ( -@@ -45,25 +45,25 @@ import ( - // Equal reports whether x and y are equal by recursively applying the - // following rules in the given order to x and y and all of their sub-values: - // --// • Let S be the set of all Ignore, Transformer, and Comparer options that --// remain after applying all path filters, value filters, and type filters. --// If at least one Ignore exists in S, then the comparison is ignored. --// If the number of Transformer and Comparer options in S is greater than one, --// then Equal panics because it is ambiguous which option to use. --// If S contains a single Transformer, then use that to transform the current --// values and recursively call Equal on the output values. --// If S contains a single Comparer, then use that to compare the current values. --// Otherwise, evaluation proceeds to the next rule. -+// - Let S be the set of all Ignore, Transformer, and Comparer options that -+// remain after applying all path filters, value filters, and type filters. -+// If at least one Ignore exists in S, then the comparison is ignored. -+// If the number of Transformer and Comparer options in S is non-zero, -+// then Equal panics because it is ambiguous which option to use. -+// If S contains a single Transformer, then use that to transform -+// the current values and recursively call Equal on the output values. -+// If S contains a single Comparer, then use that to compare the current values. -+// Otherwise, evaluation proceeds to the next rule. - // --// • If the values have an Equal method of the form "(T) Equal(T) bool" or --// "(T) Equal(I) bool" where T is assignable to I, then use the result of --// x.Equal(y) even if x or y is nil. Otherwise, no such method exists and --// evaluation proceeds to the next rule. -+// - If the values have an Equal method of the form "(T) Equal(T) bool" or -+// "(T) Equal(I) bool" where T is assignable to I, then use the result of -+// x.Equal(y) even if x or y is nil. Otherwise, no such method exists and -+// evaluation proceeds to the next rule. - // --// • Lastly, try to compare x and y based on their basic kinds. --// Simple kinds like booleans, integers, floats, complex numbers, strings, and --// channels are compared using the equivalent of the == operator in Go. --// Functions are only equal if they are both nil, otherwise they are unequal. -+// - Lastly, try to compare x and y based on their basic kinds. -+// Simple kinds like booleans, integers, floats, complex numbers, strings, -+// and channels are compared using the equivalent of the == operator in Go. -+// Functions are only equal if they are both nil, otherwise they are unequal. - // - // Structs are equal if recursively calling Equal on all fields report equal. - // If a struct contains unexported fields, Equal panics unless an Ignore option -@@ -144,7 +144,7 @@ func rootStep(x, y interface{}) PathStep { - // so that they have the same parent type. - var t reflect.Type - if !vx.IsValid() || !vy.IsValid() || vx.Type() != vy.Type() { -- t = reflect.TypeOf((*interface{})(nil)).Elem() -+ t = anyType - if vx.IsValid() { - vvx := reflect.New(t).Elem() - vvx.Set(vx) -@@ -639,7 +639,9 @@ type dynChecker struct{ curr, next int } - // Next increments the state and reports whether a check should be performed. - // - // Checks occur every Nth function call, where N is a triangular number: -+// - // 0 1 3 6 10 15 21 28 36 45 55 66 78 91 105 120 136 153 171 190 ... -+// - // See https://en.wikipedia.org/wiki/Triangular_number - // - // This sequence ensures that the cost of checks drops significantly as -diff --git a/vendor/github.com/google/go-cmp/cmp/export_panic.go b/vendor/github.com/google/go-cmp/cmp/export_panic.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/go-cmp/cmp/export_unsafe.go b/vendor/github.com/google/go-cmp/cmp/export_unsafe.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/go-cmp/cmp/internal/diff/debug_disable.go b/vendor/github.com/google/go-cmp/cmp/internal/diff/debug_disable.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/go-cmp/cmp/internal/diff/debug_enable.go b/vendor/github.com/google/go-cmp/cmp/internal/diff/debug_enable.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/go-cmp/cmp/internal/diff/diff.go b/vendor/github.com/google/go-cmp/cmp/internal/diff/diff.go -old mode 100644 -new mode 100755 -index bc196b1..a248e54 ---- a/vendor/github.com/google/go-cmp/cmp/internal/diff/diff.go -+++ b/vendor/github.com/google/go-cmp/cmp/internal/diff/diff.go -@@ -127,9 +127,9 @@ var randBool = rand.New(rand.NewSource(time.Now().Unix())).Intn(2) == 0 - // This function returns an edit-script, which is a sequence of operations - // needed to convert one list into the other. The following invariants for - // the edit-script are maintained: --// • eq == (es.Dist()==0) --// • nx == es.LenX() --// • ny == es.LenY() -+// - eq == (es.Dist()==0) -+// - nx == es.LenX() -+// - ny == es.LenY() - // - // This algorithm is not guaranteed to be an optimal solution (i.e., one that - // produces an edit-script with a minimal Levenshtein distance). This algorithm -@@ -169,12 +169,13 @@ func Difference(nx, ny int, f EqualFunc) (es EditScript) { - // A diagonal edge is equivalent to a matching symbol between both X and Y. - - // Invariants: -- // • 0 ≤ fwdPath.X ≤ (fwdFrontier.X, revFrontier.X) ≤ revPath.X ≤ nx -- // • 0 ≤ fwdPath.Y ≤ (fwdFrontier.Y, revFrontier.Y) ≤ revPath.Y ≤ ny -+ // - 0 ≤ fwdPath.X ≤ (fwdFrontier.X, revFrontier.X) ≤ revPath.X ≤ nx -+ // - 0 ≤ fwdPath.Y ≤ (fwdFrontier.Y, revFrontier.Y) ≤ revPath.Y ≤ ny - // - // In general: -- // • fwdFrontier.X < revFrontier.X -- // • fwdFrontier.Y < revFrontier.Y -+ // - fwdFrontier.X < revFrontier.X -+ // - fwdFrontier.Y < revFrontier.Y -+ // - // Unless, it is time for the algorithm to terminate. - fwdPath := path{+1, point{0, 0}, make(EditScript, 0, (nx+ny)/2)} - revPath := path{-1, point{nx, ny}, make(EditScript, 0)} -@@ -195,19 +196,21 @@ func Difference(nx, ny int, f EqualFunc) (es EditScript) { - // computing sub-optimal edit-scripts between two lists. - // - // The algorithm is approximately as follows: -- // • Searching for differences switches back-and-forth between -- // a search that starts at the beginning (the top-left corner), and -- // a search that starts at the end (the bottom-right corner). The goal of -- // the search is connect with the search from the opposite corner. -- // • As we search, we build a path in a greedy manner, where the first -- // match seen is added to the path (this is sub-optimal, but provides a -- // decent result in practice). When matches are found, we try the next pair -- // of symbols in the lists and follow all matches as far as possible. -- // • When searching for matches, we search along a diagonal going through -- // through the "frontier" point. If no matches are found, we advance the -- // frontier towards the opposite corner. -- // • This algorithm terminates when either the X coordinates or the -- // Y coordinates of the forward and reverse frontier points ever intersect. -+ // - Searching for differences switches back-and-forth between -+ // a search that starts at the beginning (the top-left corner), and -+ // a search that starts at the end (the bottom-right corner). -+ // The goal of the search is connect with the search -+ // from the opposite corner. -+ // - As we search, we build a path in a greedy manner, -+ // where the first match seen is added to the path (this is sub-optimal, -+ // but provides a decent result in practice). When matches are found, -+ // we try the next pair of symbols in the lists and follow all matches -+ // as far as possible. -+ // - When searching for matches, we search along a diagonal going through -+ // through the "frontier" point. If no matches are found, -+ // we advance the frontier towards the opposite corner. -+ // - This algorithm terminates when either the X coordinates or the -+ // Y coordinates of the forward and reverse frontier points ever intersect. - - // This algorithm is correct even if searching only in the forward direction - // or in the reverse direction. We do both because it is commonly observed -@@ -389,6 +392,7 @@ type point struct{ X, Y int } - func (p *point) add(dx, dy int) { p.X += dx; p.Y += dy } - - // zigzag maps a consecutive sequence of integers to a zig-zag sequence. -+// - // [0 1 2 3 4 5 ...] => [0 -1 +1 -2 +2 ...] - func zigzag(x int) int { - if x&1 != 0 { -diff --git a/vendor/github.com/google/go-cmp/cmp/internal/flags/flags.go b/vendor/github.com/google/go-cmp/cmp/internal/flags/flags.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/go-cmp/cmp/internal/function/func.go b/vendor/github.com/google/go-cmp/cmp/internal/function/func.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/go-cmp/cmp/internal/value/name.go b/vendor/github.com/google/go-cmp/cmp/internal/value/name.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/go-cmp/cmp/internal/value/pointer_purego.go b/vendor/github.com/google/go-cmp/cmp/internal/value/pointer_purego.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/go-cmp/cmp/internal/value/pointer_unsafe.go b/vendor/github.com/google/go-cmp/cmp/internal/value/pointer_unsafe.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/go-cmp/cmp/internal/value/sort.go b/vendor/github.com/google/go-cmp/cmp/internal/value/sort.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/go-cmp/cmp/internal/value/zero.go b/vendor/github.com/google/go-cmp/cmp/internal/value/zero.go -deleted file mode 100644 -index 9147a29..0000000 ---- a/vendor/github.com/google/go-cmp/cmp/internal/value/zero.go -+++ /dev/null -@@ -1,48 +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 value -- --import ( -- "math" -- "reflect" --) -- --// IsZero reports whether v is the zero value. --// This does not rely on Interface and so can be used on unexported fields. --func IsZero(v reflect.Value) bool { -- switch v.Kind() { -- case reflect.Bool: -- return v.Bool() == false -- 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 math.Float64bits(v.Float()) == 0 -- case reflect.Complex64, reflect.Complex128: -- return math.Float64bits(real(v.Complex())) == 0 && math.Float64bits(imag(v.Complex())) == 0 -- case reflect.String: -- return v.String() == "" -- case reflect.UnsafePointer: -- return v.Pointer() == 0 -- case reflect.Chan, reflect.Func, reflect.Interface, reflect.Ptr, reflect.Map, reflect.Slice: -- return v.IsNil() -- case reflect.Array: -- for i := 0; i < v.Len(); i++ { -- if !IsZero(v.Index(i)) { -- return false -- } -- } -- return true -- case reflect.Struct: -- for i := 0; i < v.NumField(); i++ { -- if !IsZero(v.Field(i)) { -- return false -- } -- } -- return true -- } -- return false --} -diff --git a/vendor/github.com/google/go-cmp/cmp/options.go b/vendor/github.com/google/go-cmp/cmp/options.go -old mode 100644 -new mode 100755 -index e57b9eb..1f9ca9c ---- a/vendor/github.com/google/go-cmp/cmp/options.go -+++ b/vendor/github.com/google/go-cmp/cmp/options.go -@@ -33,6 +33,7 @@ type Option interface { - } - - // applicableOption represents the following types: -+// - // Fundamental: ignore | validator | *comparer | *transformer - // Grouping: Options - type applicableOption interface { -@@ -43,6 +44,7 @@ type applicableOption interface { - } - - // coreOption represents the following types: -+// - // Fundamental: ignore | validator | *comparer | *transformer - // Filters: *pathFilter | *valuesFilter - type coreOption interface { -@@ -336,9 +338,9 @@ func (tr transformer) String() string { - // both implement T. - // - // The equality function must be: --// • Symmetric: equal(x, y) == equal(y, x) --// • Deterministic: equal(x, y) == equal(x, y) --// • Pure: equal(x, y) does not modify x or y -+// - Symmetric: equal(x, y) == equal(y, x) -+// - Deterministic: equal(x, y) == equal(x, y) -+// - Pure: equal(x, y) does not modify x or y - func Comparer(f interface{}) Option { - v := reflect.ValueOf(f) - if !function.IsType(v.Type(), function.Equal) || v.IsNil() { -@@ -430,7 +432,7 @@ func AllowUnexported(types ...interface{}) Option { - } - - // Result represents the comparison result for a single node and --// is provided by cmp when calling Result (see Reporter). -+// is provided by cmp when calling Report (see Reporter). - type Result struct { - _ [0]func() // Make Result incomparable - flags resultFlags -diff --git a/vendor/github.com/google/go-cmp/cmp/path.go b/vendor/github.com/google/go-cmp/cmp/path.go -old mode 100644 -new mode 100755 -index c710034..a0a5885 ---- a/vendor/github.com/google/go-cmp/cmp/path.go -+++ b/vendor/github.com/google/go-cmp/cmp/path.go -@@ -41,13 +41,13 @@ type PathStep interface { - // The type of each valid value is guaranteed to be identical to Type. - // - // In some cases, one or both may be invalid or have restrictions: -- // • For StructField, both are not interface-able if the current field -- // is unexported and the struct type is not explicitly permitted by -- // an Exporter to traverse unexported fields. -- // • For SliceIndex, one may be invalid if an element is missing from -- // either the x or y slice. -- // • For MapIndex, one may be invalid if an entry is missing from -- // either the x or y map. -+ // - For StructField, both are not interface-able if the current field -+ // is unexported and the struct type is not explicitly permitted by -+ // an Exporter to traverse unexported fields. -+ // - For SliceIndex, one may be invalid if an element is missing from -+ // either the x or y slice. -+ // - For MapIndex, one may be invalid if an entry is missing from -+ // either the x or y map. - // - // The provided values must not be mutated. - Values() (vx, vy reflect.Value) -@@ -94,6 +94,7 @@ func (pa Path) Index(i int) PathStep { - // The simplified path only contains struct field accesses. - // - // For example: -+// - // MyMap.MySlices.MyField - func (pa Path) String() string { - var ss []string -@@ -108,6 +109,7 @@ func (pa Path) String() string { - // GoString returns the path to a specific node using Go syntax. - // - // For example: -+// - // (*root.MyMap["key"].(*mypkg.MyStruct).MySlices)[2][3].MyField - func (pa Path) GoString() string { - var ssPre, ssPost []string -@@ -159,7 +161,7 @@ func (ps pathStep) String() string { - if ps.typ == nil { - return "" - } -- s := ps.typ.String() -+ s := value.TypeString(ps.typ, false) - if s == "" || strings.ContainsAny(s, "{}\n") { - return "root" // Type too simple or complex to print - } -@@ -282,7 +284,7 @@ type typeAssertion struct { - - func (ta TypeAssertion) Type() reflect.Type { return ta.typ } - func (ta TypeAssertion) Values() (vx, vy reflect.Value) { return ta.vx, ta.vy } --func (ta TypeAssertion) String() string { return fmt.Sprintf(".(%v)", ta.typ) } -+func (ta TypeAssertion) String() string { return fmt.Sprintf(".(%v)", value.TypeString(ta.typ, false)) } - - // Transform is a transformation from the parent type to the current type. - type Transform struct{ *transform } -diff --git a/vendor/github.com/google/go-cmp/cmp/report.go b/vendor/github.com/google/go-cmp/cmp/report.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/go-cmp/cmp/report_compare.go b/vendor/github.com/google/go-cmp/cmp/report_compare.go -old mode 100644 -new mode 100755 -index 1ef65ac..2050bf6 ---- a/vendor/github.com/google/go-cmp/cmp/report_compare.go -+++ b/vendor/github.com/google/go-cmp/cmp/report_compare.go -@@ -7,8 +7,6 @@ package cmp - import ( - "fmt" - "reflect" -- -- "github.com/google/go-cmp/cmp/internal/value" - ) - - // numContextRecords is the number of surrounding equal records to print. -@@ -117,7 +115,7 @@ func (opts formatOptions) FormatDiff(v *valueNode, ptrs *pointerReferences) (out - - // For leaf nodes, format the value based on the reflect.Values alone. - // As a special case, treat equal []byte as a leaf nodes. -- isBytes := v.Type.Kind() == reflect.Slice && v.Type.Elem() == reflect.TypeOf(byte(0)) -+ isBytes := v.Type.Kind() == reflect.Slice && v.Type.Elem() == byteType - isEqualBytes := isBytes && v.NumDiff+v.NumIgnored+v.NumTransformed == 0 - if v.MaxDepth == 0 || isEqualBytes { - switch opts.DiffMode { -@@ -248,11 +246,11 @@ func (opts formatOptions) formatDiffList(recs []reportRecord, k reflect.Kind, pt - var isZero bool - switch opts.DiffMode { - case diffIdentical: -- isZero = value.IsZero(r.Value.ValueX) || value.IsZero(r.Value.ValueY) -+ isZero = r.Value.ValueX.IsZero() || r.Value.ValueY.IsZero() - case diffRemoved: -- isZero = value.IsZero(r.Value.ValueX) -+ isZero = r.Value.ValueX.IsZero() - case diffInserted: -- isZero = value.IsZero(r.Value.ValueY) -+ isZero = r.Value.ValueY.IsZero() - } - if isZero { - continue -diff --git a/vendor/github.com/google/go-cmp/cmp/report_references.go b/vendor/github.com/google/go-cmp/cmp/report_references.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/go-cmp/cmp/report_reflect.go b/vendor/github.com/google/go-cmp/cmp/report_reflect.go -old mode 100644 -new mode 100755 -index 287b893..2ab41fa ---- a/vendor/github.com/google/go-cmp/cmp/report_reflect.go -+++ b/vendor/github.com/google/go-cmp/cmp/report_reflect.go -@@ -16,6 +16,13 @@ import ( - "github.com/google/go-cmp/cmp/internal/value" - ) - -+var ( -+ anyType = reflect.TypeOf((*interface{})(nil)).Elem() -+ stringType = reflect.TypeOf((*string)(nil)).Elem() -+ bytesType = reflect.TypeOf((*[]byte)(nil)).Elem() -+ byteType = reflect.TypeOf((*byte)(nil)).Elem() -+) -+ - type formatValueOptions struct { - // AvoidStringer controls whether to avoid calling custom stringer - // methods like error.Error or fmt.Stringer.String. -@@ -184,7 +191,7 @@ func (opts formatOptions) FormatValue(v reflect.Value, parentKind reflect.Kind, - } - for i := 0; i < v.NumField(); i++ { - vv := v.Field(i) -- if value.IsZero(vv) { -+ if vv.IsZero() { - continue // Elide fields with zero values - } - if len(list) == maxLen { -@@ -205,7 +212,7 @@ func (opts formatOptions) FormatValue(v reflect.Value, parentKind reflect.Kind, - } - - // Check whether this is a []byte of text data. -- if t.Elem() == reflect.TypeOf(byte(0)) { -+ if t.Elem() == byteType { - b := v.Bytes() - isPrintSpace := func(r rune) bool { return unicode.IsPrint(r) || unicode.IsSpace(r) } - if len(b) > 0 && utf8.Valid(b) && len(bytes.TrimFunc(b, isPrintSpace)) == 0 { -diff --git a/vendor/github.com/google/go-cmp/cmp/report_slices.go b/vendor/github.com/google/go-cmp/cmp/report_slices.go -old mode 100644 -new mode 100755 -index 68b5c1a..23e444f ---- a/vendor/github.com/google/go-cmp/cmp/report_slices.go -+++ b/vendor/github.com/google/go-cmp/cmp/report_slices.go -@@ -104,7 +104,7 @@ func (opts formatOptions) FormatDiffSlice(v *valueNode) textNode { - case t.Kind() == reflect.String: - sx, sy = vx.String(), vy.String() - isString = true -- case t.Kind() == reflect.Slice && t.Elem() == reflect.TypeOf(byte(0)): -+ case t.Kind() == reflect.Slice && t.Elem() == byteType: - sx, sy = string(vx.Bytes()), string(vy.Bytes()) - isString = true - case t.Kind() == reflect.Array: -@@ -147,7 +147,10 @@ func (opts formatOptions) FormatDiffSlice(v *valueNode) textNode { - }) - efficiencyLines := float64(esLines.Dist()) / float64(len(esLines)) - efficiencyBytes := float64(esBytes.Dist()) / float64(len(esBytes)) -- isPureLinedText = efficiencyLines < 4*efficiencyBytes -+ quotedLength := len(strconv.Quote(sx + sy)) -+ unquotedLength := len(sx) + len(sy) -+ escapeExpansionRatio := float64(quotedLength) / float64(unquotedLength) -+ isPureLinedText = efficiencyLines < 4*efficiencyBytes || escapeExpansionRatio > 1.1 - } - } - -@@ -171,12 +174,13 @@ func (opts formatOptions) FormatDiffSlice(v *valueNode) textNode { - // differences in a string literal. This format is more readable, - // but has edge-cases where differences are visually indistinguishable. - // This format is avoided under the following conditions: -- // • A line starts with `"""` -- // • A line starts with "..." -- // • A line contains non-printable characters -- // • Adjacent different lines differ only by whitespace -+ // - A line starts with `"""` -+ // - A line starts with "..." -+ // - A line contains non-printable characters -+ // - Adjacent different lines differ only by whitespace - // - // For example: -+ // - // """ - // ... // 3 identical lines - // foo -@@ -231,7 +235,7 @@ func (opts formatOptions) FormatDiffSlice(v *valueNode) textNode { - var out textNode = &textWrap{Prefix: "(", Value: list2, Suffix: ")"} - switch t.Kind() { - case reflect.String: -- if t != reflect.TypeOf(string("")) { -+ if t != stringType { - out = opts.FormatType(t, out) - } - case reflect.Slice: -@@ -326,12 +330,12 @@ func (opts formatOptions) FormatDiffSlice(v *valueNode) textNode { - switch t.Kind() { - case reflect.String: - out = &textWrap{Prefix: "strings.Join(", Value: out, Suffix: fmt.Sprintf(", %q)", delim)} -- if t != reflect.TypeOf(string("")) { -+ if t != stringType { - out = opts.FormatType(t, out) - } - case reflect.Slice: - out = &textWrap{Prefix: "bytes.Join(", Value: out, Suffix: fmt.Sprintf(", %q)", delim)} -- if t != reflect.TypeOf([]byte(nil)) { -+ if t != bytesType { - out = opts.FormatType(t, out) - } - } -@@ -446,7 +450,6 @@ func (opts formatOptions) formatDiffSlice( - // {NumIdentical: 3}, - // {NumInserted: 1}, - // ] --// - func coalesceAdjacentEdits(name string, es diff.EditScript) (groups []diffStats) { - var prevMode byte - lastStats := func(mode byte) *diffStats { -@@ -503,7 +506,6 @@ func coalesceAdjacentEdits(name string, es diff.EditScript) (groups []diffStats) - // {NumIdentical: 8, NumRemoved: 12, NumInserted: 3}, - // {NumIdentical: 63}, - // ] --// - func coalesceInterveningIdentical(groups []diffStats, windowSize int) []diffStats { - groups, groupsOrig := groups[:0], groups - for i, ds := range groupsOrig { -@@ -548,7 +550,6 @@ func coalesceInterveningIdentical(groups []diffStats, windowSize int) []diffStat - // {NumRemoved: 9}, - // {NumIdentical: 64}, // incremented by 10 - // ] --// - func cleanupSurroundingIdentical(groups []diffStats, eq func(i, j int) bool) []diffStats { - var ix, iy int // indexes into sequence x and y - for i, ds := range groups { -diff --git a/vendor/github.com/google/go-cmp/cmp/report_text.go b/vendor/github.com/google/go-cmp/cmp/report_text.go -old mode 100644 -new mode 100755 -index 0fd46d7..388fcf5 ---- a/vendor/github.com/google/go-cmp/cmp/report_text.go -+++ b/vendor/github.com/google/go-cmp/cmp/report_text.go -@@ -393,6 +393,7 @@ func (s diffStats) Append(ds diffStats) diffStats { - // String prints a humanly-readable summary of coalesced records. - // - // Example: -+// - // diffStats{Name: "Field", NumIgnored: 5}.String() => "5 ignored fields" - func (s diffStats) String() string { - var ss []string -diff --git a/vendor/github.com/google/go-cmp/cmp/report_value.go b/vendor/github.com/google/go-cmp/cmp/report_value.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/gofuzz/.travis.yml b/vendor/github.com/google/gofuzz/.travis.yml -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/gofuzz/CONTRIBUTING.md b/vendor/github.com/google/gofuzz/CONTRIBUTING.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/gofuzz/LICENSE b/vendor/github.com/google/gofuzz/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/gofuzz/README.md b/vendor/github.com/google/gofuzz/README.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/gofuzz/doc.go b/vendor/github.com/google/gofuzz/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/gofuzz/fuzz.go b/vendor/github.com/google/gofuzz/fuzz.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/uuid/.travis.yml b/vendor/github.com/google/uuid/.travis.yml -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/uuid/CONTRIBUTING.md b/vendor/github.com/google/uuid/CONTRIBUTING.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/uuid/CONTRIBUTORS b/vendor/github.com/google/uuid/CONTRIBUTORS -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/uuid/LICENSE b/vendor/github.com/google/uuid/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/uuid/README.md b/vendor/github.com/google/uuid/README.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/uuid/dce.go b/vendor/github.com/google/uuid/dce.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/uuid/doc.go b/vendor/github.com/google/uuid/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/uuid/hash.go b/vendor/github.com/google/uuid/hash.go -old mode 100644 -new mode 100755 -index b174616..b404f4b ---- a/vendor/github.com/google/uuid/hash.go -+++ b/vendor/github.com/google/uuid/hash.go -@@ -26,8 +26,8 @@ var ( - // NewMD5 and NewSHA1. - func NewHash(h hash.Hash, space UUID, data []byte, version int) UUID { - h.Reset() -- h.Write(space[:]) -- h.Write(data) -+ h.Write(space[:]) //nolint:errcheck -+ h.Write(data) //nolint:errcheck - s := h.Sum(nil) - var uuid UUID - copy(uuid[:], s) -diff --git a/vendor/github.com/google/uuid/marshal.go b/vendor/github.com/google/uuid/marshal.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/uuid/node.go b/vendor/github.com/google/uuid/node.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/uuid/node_js.go b/vendor/github.com/google/uuid/node_js.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/uuid/node_net.go b/vendor/github.com/google/uuid/node_net.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/uuid/null.go b/vendor/github.com/google/uuid/null.go -new file mode 100755 -index 0000000..d7fcbf2 ---- /dev/null -+++ b/vendor/github.com/google/uuid/null.go -@@ -0,0 +1,118 @@ -+// Copyright 2021 Google Inc. All rights reserved. -+// Use of this source code is governed by a BSD-style -+// license that can be found in the LICENSE file. -+ -+package uuid -+ -+import ( -+ "bytes" -+ "database/sql/driver" -+ "encoding/json" -+ "fmt" -+) -+ -+var jsonNull = []byte("null") -+ -+// NullUUID represents a UUID that may be null. -+// NullUUID implements the SQL driver.Scanner interface so -+// it can be used as a scan destination: -+// -+// var u uuid.NullUUID -+// err := db.QueryRow("SELECT name FROM foo WHERE id=?", id).Scan(&u) -+// ... -+// if u.Valid { -+// // use u.UUID -+// } else { -+// // NULL value -+// } -+// -+type NullUUID struct { -+ UUID UUID -+ Valid bool // Valid is true if UUID is not NULL -+} -+ -+// Scan implements the SQL driver.Scanner interface. -+func (nu *NullUUID) Scan(value interface{}) error { -+ if value == nil { -+ nu.UUID, nu.Valid = Nil, false -+ return nil -+ } -+ -+ err := nu.UUID.Scan(value) -+ if err != nil { -+ nu.Valid = false -+ return err -+ } -+ -+ nu.Valid = true -+ return nil -+} -+ -+// Value implements the driver Valuer interface. -+func (nu NullUUID) Value() (driver.Value, error) { -+ if !nu.Valid { -+ return nil, nil -+ } -+ // Delegate to UUID Value function -+ return nu.UUID.Value() -+} -+ -+// MarshalBinary implements encoding.BinaryMarshaler. -+func (nu NullUUID) MarshalBinary() ([]byte, error) { -+ if nu.Valid { -+ return nu.UUID[:], nil -+ } -+ -+ return []byte(nil), nil -+} -+ -+// UnmarshalBinary implements encoding.BinaryUnmarshaler. -+func (nu *NullUUID) UnmarshalBinary(data []byte) error { -+ if len(data) != 16 { -+ return fmt.Errorf("invalid UUID (got %d bytes)", len(data)) -+ } -+ copy(nu.UUID[:], data) -+ nu.Valid = true -+ return nil -+} -+ -+// MarshalText implements encoding.TextMarshaler. -+func (nu NullUUID) MarshalText() ([]byte, error) { -+ if nu.Valid { -+ return nu.UUID.MarshalText() -+ } -+ -+ return jsonNull, nil -+} -+ -+// UnmarshalText implements encoding.TextUnmarshaler. -+func (nu *NullUUID) UnmarshalText(data []byte) error { -+ id, err := ParseBytes(data) -+ if err != nil { -+ nu.Valid = false -+ return err -+ } -+ nu.UUID = id -+ nu.Valid = true -+ return nil -+} -+ -+// MarshalJSON implements json.Marshaler. -+func (nu NullUUID) MarshalJSON() ([]byte, error) { -+ if nu.Valid { -+ return json.Marshal(nu.UUID) -+ } -+ -+ return jsonNull, nil -+} -+ -+// UnmarshalJSON implements json.Unmarshaler. -+func (nu *NullUUID) UnmarshalJSON(data []byte) error { -+ if bytes.Equal(data, jsonNull) { -+ *nu = NullUUID{} -+ return nil // valid null UUID -+ } -+ err := json.Unmarshal(data, &nu.UUID) -+ nu.Valid = err == nil -+ return err -+} -diff --git a/vendor/github.com/google/uuid/sql.go b/vendor/github.com/google/uuid/sql.go -old mode 100644 -new mode 100755 -index f326b54..2e02ec0 ---- a/vendor/github.com/google/uuid/sql.go -+++ b/vendor/github.com/google/uuid/sql.go -@@ -9,7 +9,7 @@ import ( - "fmt" - ) - --// Scan implements sql.Scanner so UUIDs can be read from databases transparently -+// Scan implements sql.Scanner so UUIDs can be read from databases transparently. - // Currently, database types that map to string and []byte are supported. Please - // consult database-specific driver documentation for matching types. - func (uuid *UUID) Scan(src interface{}) error { -diff --git a/vendor/github.com/google/uuid/time.go b/vendor/github.com/google/uuid/time.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/uuid/util.go b/vendor/github.com/google/uuid/util.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/uuid/uuid.go b/vendor/github.com/google/uuid/uuid.go -old mode 100644 -new mode 100755 -index 524404c..a57207a ---- a/vendor/github.com/google/uuid/uuid.go -+++ b/vendor/github.com/google/uuid/uuid.go -@@ -12,6 +12,7 @@ import ( - "fmt" - "io" - "strings" -+ "sync" - ) - - // A UUID is a 128 bit (16 byte) Universal Unique IDentifier as defined in RFC -@@ -33,7 +34,27 @@ const ( - Future // Reserved for future definition. - ) - --var rander = rand.Reader // random function -+const randPoolSize = 16 * 16 -+ -+var ( -+ rander = rand.Reader // random function -+ poolEnabled = false -+ poolMu sync.Mutex -+ poolPos = randPoolSize // protected with poolMu -+ pool [randPoolSize]byte // protected with poolMu -+) -+ -+type invalidLengthError struct{ len int } -+ -+func (err invalidLengthError) Error() string { -+ return fmt.Sprintf("invalid UUID length: %d", err.len) -+} -+ -+// IsInvalidLengthError is matcher function for custom error invalidLengthError -+func IsInvalidLengthError(err error) bool { -+ _, ok := err.(invalidLengthError) -+ return ok -+} - - // Parse decodes s into a UUID or returns an error. Both the standard UUID - // forms of xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx and -@@ -68,7 +89,7 @@ func Parse(s string) (UUID, error) { - } - return uuid, nil - default: -- return uuid, fmt.Errorf("invalid UUID length: %d", len(s)) -+ return uuid, invalidLengthError{len(s)} - } - // s is now at least 36 bytes long - // it must be of the form xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -@@ -112,7 +133,7 @@ func ParseBytes(b []byte) (UUID, error) { - } - return uuid, nil - default: -- return uuid, fmt.Errorf("invalid UUID length: %d", len(b)) -+ return uuid, invalidLengthError{len(b)} - } - // s is now at least 36 bytes long - // it must be of the form xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -@@ -243,3 +264,31 @@ func SetRand(r io.Reader) { - } - rander = r - } -+ -+// EnableRandPool enables internal randomness pool used for Random -+// (Version 4) UUID generation. The pool contains random bytes read from -+// the random number generator on demand in batches. Enabling the pool -+// may improve the UUID generation throughput significantly. -+// -+// Since the pool is stored on the Go heap, this feature may be a bad fit -+// for security sensitive applications. -+// -+// Both EnableRandPool and DisableRandPool are not thread-safe and should -+// only be called when there is no possibility that New or any other -+// UUID Version 4 generation function will be called concurrently. -+func EnableRandPool() { -+ poolEnabled = true -+} -+ -+// DisableRandPool disables the randomness pool if it was previously -+// enabled with EnableRandPool. -+// -+// Both EnableRandPool and DisableRandPool are not thread-safe and should -+// only be called when there is no possibility that New or any other -+// UUID Version 4 generation function will be called concurrently. -+func DisableRandPool() { -+ poolEnabled = false -+ defer poolMu.Unlock() -+ poolMu.Lock() -+ poolPos = randPoolSize -+} -diff --git a/vendor/github.com/google/uuid/version1.go b/vendor/github.com/google/uuid/version1.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/google/uuid/version4.go b/vendor/github.com/google/uuid/version4.go -old mode 100644 -new mode 100755 -index c110465..7697802 ---- a/vendor/github.com/google/uuid/version4.go -+++ b/vendor/github.com/google/uuid/version4.go -@@ -14,11 +14,21 @@ func New() UUID { - return Must(NewRandom()) - } - -+// NewString creates a new random UUID and returns it as a string or panics. -+// NewString is equivalent to the expression -+// -+// uuid.New().String() -+func NewString() string { -+ return Must(NewRandom()).String() -+} -+ - // NewRandom returns a Random (Version 4) UUID. - // - // The strength of the UUIDs is based on the strength of the crypto/rand - // package. - // -+// Uses the randomness pool if it was enabled with EnableRandPool. -+// - // A note about uniqueness derived from the UUID Wikipedia entry: - // - // Randomly generated UUIDs have 122 random bits. One's annual risk of being -@@ -27,7 +37,10 @@ func New() UUID { - // equivalent to the odds of creating a few tens of trillions of UUIDs in a - // year and having one duplicate. - func NewRandom() (UUID, error) { -- return NewRandomFromReader(rander) -+ if !poolEnabled { -+ return NewRandomFromReader(rander) -+ } -+ return newRandomFromPool() - } - - // NewRandomFromReader returns a UUID based on bytes read from a given io.Reader. -@@ -41,3 +54,23 @@ func NewRandomFromReader(r io.Reader) (UUID, error) { - uuid[8] = (uuid[8] & 0x3f) | 0x80 // Variant is 10 - return uuid, nil - } -+ -+func newRandomFromPool() (UUID, error) { -+ var uuid UUID -+ poolMu.Lock() -+ if poolPos == randPoolSize { -+ _, err := io.ReadFull(rander, pool[:]) -+ if err != nil { -+ poolMu.Unlock() -+ return Nil, err -+ } -+ poolPos = 0 -+ } -+ copy(uuid[:], pool[poolPos:(poolPos+16)]) -+ poolPos += 16 -+ poolMu.Unlock() -+ -+ uuid[6] = (uuid[6] & 0x0f) | 0x40 // Version 4 -+ uuid[8] = (uuid[8] & 0x3f) | 0x80 // Variant is 10 -+ return uuid, nil -+} -diff --git a/vendor/github.com/googleapis/gnostic/LICENSE b/vendor/github.com/googleapis/gnostic/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/googleapis/gnostic/compiler/README.md b/vendor/github.com/googleapis/gnostic/compiler/README.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/googleapis/gnostic/compiler/context.go b/vendor/github.com/googleapis/gnostic/compiler/context.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/googleapis/gnostic/compiler/error.go b/vendor/github.com/googleapis/gnostic/compiler/error.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/googleapis/gnostic/compiler/extension-handler.go b/vendor/github.com/googleapis/gnostic/compiler/extension-handler.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/googleapis/gnostic/compiler/helpers.go b/vendor/github.com/googleapis/gnostic/compiler/helpers.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/googleapis/gnostic/compiler/main.go b/vendor/github.com/googleapis/gnostic/compiler/main.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/googleapis/gnostic/compiler/reader.go b/vendor/github.com/googleapis/gnostic/compiler/reader.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/googleapis/gnostic/extensions/README.md b/vendor/github.com/googleapis/gnostic/extensions/README.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/googleapis/gnostic/extensions/extension.pb.go b/vendor/github.com/googleapis/gnostic/extensions/extension.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/googleapis/gnostic/extensions/extension.proto b/vendor/github.com/googleapis/gnostic/extensions/extension.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/googleapis/gnostic/extensions/extensions.go b/vendor/github.com/googleapis/gnostic/extensions/extensions.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/googleapis/gnostic/openapiv2/OpenAPIv2.go b/vendor/github.com/googleapis/gnostic/openapiv2/OpenAPIv2.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/googleapis/gnostic/openapiv2/OpenAPIv2.pb.go b/vendor/github.com/googleapis/gnostic/openapiv2/OpenAPIv2.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/googleapis/gnostic/openapiv2/OpenAPIv2.proto b/vendor/github.com/googleapis/gnostic/openapiv2/OpenAPIv2.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/googleapis/gnostic/openapiv2/README.md b/vendor/github.com/googleapis/gnostic/openapiv2/README.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/googleapis/gnostic/openapiv2/openapi-2.0.json b/vendor/github.com/googleapis/gnostic/openapiv2/openapi-2.0.json -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/hashicorp/golang-lru/.gitignore b/vendor/github.com/hashicorp/golang-lru/.gitignore -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/hashicorp/golang-lru/2q.go b/vendor/github.com/hashicorp/golang-lru/2q.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/hashicorp/golang-lru/LICENSE b/vendor/github.com/hashicorp/golang-lru/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/hashicorp/golang-lru/README.md b/vendor/github.com/hashicorp/golang-lru/README.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/hashicorp/golang-lru/arc.go b/vendor/github.com/hashicorp/golang-lru/arc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/hashicorp/golang-lru/doc.go b/vendor/github.com/hashicorp/golang-lru/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/hashicorp/golang-lru/lru.go b/vendor/github.com/hashicorp/golang-lru/lru.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/hashicorp/golang-lru/simplelru/lru.go b/vendor/github.com/hashicorp/golang-lru/simplelru/lru.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/hashicorp/golang-lru/simplelru/lru_interface.go b/vendor/github.com/hashicorp/golang-lru/simplelru/lru_interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/.codecov.yml b/vendor/github.com/json-iterator/go/.codecov.yml -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/.gitignore b/vendor/github.com/json-iterator/go/.gitignore -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/.travis.yml b/vendor/github.com/json-iterator/go/.travis.yml -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/Gopkg.lock b/vendor/github.com/json-iterator/go/Gopkg.lock -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/Gopkg.toml b/vendor/github.com/json-iterator/go/Gopkg.toml -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/LICENSE b/vendor/github.com/json-iterator/go/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/README.md b/vendor/github.com/json-iterator/go/README.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/adapter.go b/vendor/github.com/json-iterator/go/adapter.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/any.go b/vendor/github.com/json-iterator/go/any.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/any_array.go b/vendor/github.com/json-iterator/go/any_array.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/any_bool.go b/vendor/github.com/json-iterator/go/any_bool.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/any_float.go b/vendor/github.com/json-iterator/go/any_float.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/any_int32.go b/vendor/github.com/json-iterator/go/any_int32.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/any_int64.go b/vendor/github.com/json-iterator/go/any_int64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/any_invalid.go b/vendor/github.com/json-iterator/go/any_invalid.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/any_nil.go b/vendor/github.com/json-iterator/go/any_nil.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/any_number.go b/vendor/github.com/json-iterator/go/any_number.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/any_object.go b/vendor/github.com/json-iterator/go/any_object.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/any_str.go b/vendor/github.com/json-iterator/go/any_str.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/any_uint32.go b/vendor/github.com/json-iterator/go/any_uint32.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/any_uint64.go b/vendor/github.com/json-iterator/go/any_uint64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/build.sh b/vendor/github.com/json-iterator/go/build.sh -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/config.go b/vendor/github.com/json-iterator/go/config.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/fuzzy_mode_convert_table.md b/vendor/github.com/json-iterator/go/fuzzy_mode_convert_table.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/iter.go b/vendor/github.com/json-iterator/go/iter.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/iter_array.go b/vendor/github.com/json-iterator/go/iter_array.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/iter_float.go b/vendor/github.com/json-iterator/go/iter_float.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/iter_int.go b/vendor/github.com/json-iterator/go/iter_int.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/iter_object.go b/vendor/github.com/json-iterator/go/iter_object.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/iter_skip.go b/vendor/github.com/json-iterator/go/iter_skip.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/iter_skip_sloppy.go b/vendor/github.com/json-iterator/go/iter_skip_sloppy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/iter_skip_strict.go b/vendor/github.com/json-iterator/go/iter_skip_strict.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/iter_str.go b/vendor/github.com/json-iterator/go/iter_str.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/jsoniter.go b/vendor/github.com/json-iterator/go/jsoniter.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/pool.go b/vendor/github.com/json-iterator/go/pool.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/reflect.go b/vendor/github.com/json-iterator/go/reflect.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/reflect_array.go b/vendor/github.com/json-iterator/go/reflect_array.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/reflect_dynamic.go b/vendor/github.com/json-iterator/go/reflect_dynamic.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/reflect_extension.go b/vendor/github.com/json-iterator/go/reflect_extension.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/reflect_json_number.go b/vendor/github.com/json-iterator/go/reflect_json_number.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/reflect_json_raw_message.go b/vendor/github.com/json-iterator/go/reflect_json_raw_message.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/reflect_map.go b/vendor/github.com/json-iterator/go/reflect_map.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/reflect_marshaler.go b/vendor/github.com/json-iterator/go/reflect_marshaler.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/reflect_native.go b/vendor/github.com/json-iterator/go/reflect_native.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/reflect_optional.go b/vendor/github.com/json-iterator/go/reflect_optional.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/reflect_slice.go b/vendor/github.com/json-iterator/go/reflect_slice.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/reflect_struct_decoder.go b/vendor/github.com/json-iterator/go/reflect_struct_decoder.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/reflect_struct_encoder.go b/vendor/github.com/json-iterator/go/reflect_struct_encoder.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/stream.go b/vendor/github.com/json-iterator/go/stream.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/stream_float.go b/vendor/github.com/json-iterator/go/stream_float.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/stream_int.go b/vendor/github.com/json-iterator/go/stream_int.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/stream_str.go b/vendor/github.com/json-iterator/go/stream_str.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/json-iterator/go/test.sh b/vendor/github.com/json-iterator/go/test.sh -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/karrick/godirwalk/.gitignore b/vendor/github.com/karrick/godirwalk/.gitignore -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/karrick/godirwalk/LICENSE b/vendor/github.com/karrick/godirwalk/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/karrick/godirwalk/README.md b/vendor/github.com/karrick/godirwalk/README.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/karrick/godirwalk/azure-pipelines.yml b/vendor/github.com/karrick/godirwalk/azure-pipelines.yml -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/karrick/godirwalk/bench.sh b/vendor/github.com/karrick/godirwalk/bench.sh -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/karrick/godirwalk/debug_development.go b/vendor/github.com/karrick/godirwalk/debug_development.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/karrick/godirwalk/debug_release.go b/vendor/github.com/karrick/godirwalk/debug_release.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/karrick/godirwalk/dirent.go b/vendor/github.com/karrick/godirwalk/dirent.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/karrick/godirwalk/doc.go b/vendor/github.com/karrick/godirwalk/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/karrick/godirwalk/inoWithFileno.go b/vendor/github.com/karrick/godirwalk/inoWithFileno.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/karrick/godirwalk/inoWithIno.go b/vendor/github.com/karrick/godirwalk/inoWithIno.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/karrick/godirwalk/modeType.go b/vendor/github.com/karrick/godirwalk/modeType.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/karrick/godirwalk/modeTypeWithType.go b/vendor/github.com/karrick/godirwalk/modeTypeWithType.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/karrick/godirwalk/modeTypeWithoutType.go b/vendor/github.com/karrick/godirwalk/modeTypeWithoutType.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/karrick/godirwalk/nameWithNamlen.go b/vendor/github.com/karrick/godirwalk/nameWithNamlen.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/karrick/godirwalk/nameWithoutNamlen.go b/vendor/github.com/karrick/godirwalk/nameWithoutNamlen.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/karrick/godirwalk/readdir.go b/vendor/github.com/karrick/godirwalk/readdir.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/karrick/godirwalk/readdir_unix.go b/vendor/github.com/karrick/godirwalk/readdir_unix.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/karrick/godirwalk/readdir_windows.go b/vendor/github.com/karrick/godirwalk/readdir_windows.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/karrick/godirwalk/reclenFromNamlen.go b/vendor/github.com/karrick/godirwalk/reclenFromNamlen.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/karrick/godirwalk/reclenFromReclen.go b/vendor/github.com/karrick/godirwalk/reclenFromReclen.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/karrick/godirwalk/scandir_unix.go b/vendor/github.com/karrick/godirwalk/scandir_unix.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/karrick/godirwalk/scandir_windows.go b/vendor/github.com/karrick/godirwalk/scandir_windows.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/karrick/godirwalk/scanner.go b/vendor/github.com/karrick/godirwalk/scanner.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/karrick/godirwalk/walk.go b/vendor/github.com/karrick/godirwalk/walk.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/matttproud/golang_protobuf_extensions/LICENSE b/vendor/github.com/matttproud/golang_protobuf_extensions/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/matttproud/golang_protobuf_extensions/NOTICE b/vendor/github.com/matttproud/golang_protobuf_extensions/NOTICE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/.gitignore b/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/.gitignore -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/Makefile b/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/Makefile -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/decode.go b/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/decode.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/doc.go b/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/encode.go b/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/encode.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/mistifyio/go-zfs/.gitignore b/vendor/github.com/mistifyio/go-zfs/.gitignore -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/mistifyio/go-zfs/.travis.yml b/vendor/github.com/mistifyio/go-zfs/.travis.yml -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/mistifyio/go-zfs/CONTRIBUTING.md b/vendor/github.com/mistifyio/go-zfs/CONTRIBUTING.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/mistifyio/go-zfs/LICENSE b/vendor/github.com/mistifyio/go-zfs/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/mistifyio/go-zfs/README.md b/vendor/github.com/mistifyio/go-zfs/README.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/mistifyio/go-zfs/Vagrantfile b/vendor/github.com/mistifyio/go-zfs/Vagrantfile -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/mistifyio/go-zfs/error.go b/vendor/github.com/mistifyio/go-zfs/error.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/mistifyio/go-zfs/utils.go b/vendor/github.com/mistifyio/go-zfs/utils.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/mistifyio/go-zfs/utils_notsolaris.go b/vendor/github.com/mistifyio/go-zfs/utils_notsolaris.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/mistifyio/go-zfs/utils_solaris.go b/vendor/github.com/mistifyio/go-zfs/utils_solaris.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/mistifyio/go-zfs/zfs.go b/vendor/github.com/mistifyio/go-zfs/zfs.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/mistifyio/go-zfs/zpool.go b/vendor/github.com/mistifyio/go-zfs/zpool.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/moby/sys/mountinfo/LICENSE b/vendor/github.com/moby/sys/mountinfo/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/moby/sys/mountinfo/doc.go b/vendor/github.com/moby/sys/mountinfo/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/moby/sys/mountinfo/mounted_linux.go b/vendor/github.com/moby/sys/mountinfo/mounted_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/moby/sys/mountinfo/mounted_unix.go b/vendor/github.com/moby/sys/mountinfo/mounted_unix.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/moby/sys/mountinfo/mountinfo.go b/vendor/github.com/moby/sys/mountinfo/mountinfo.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/moby/sys/mountinfo/mountinfo_bsd.go b/vendor/github.com/moby/sys/mountinfo/mountinfo_bsd.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/moby/sys/mountinfo/mountinfo_filters.go b/vendor/github.com/moby/sys/mountinfo/mountinfo_filters.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/moby/sys/mountinfo/mountinfo_freebsdlike.go b/vendor/github.com/moby/sys/mountinfo/mountinfo_freebsdlike.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/moby/sys/mountinfo/mountinfo_linux.go b/vendor/github.com/moby/sys/mountinfo/mountinfo_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/moby/sys/mountinfo/mountinfo_openbsd.go b/vendor/github.com/moby/sys/mountinfo/mountinfo_openbsd.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/moby/sys/mountinfo/mountinfo_unsupported.go b/vendor/github.com/moby/sys/mountinfo/mountinfo_unsupported.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/moby/sys/mountinfo/mountinfo_windows.go b/vendor/github.com/moby/sys/mountinfo/mountinfo_windows.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/concurrent/.gitignore b/vendor/github.com/modern-go/concurrent/.gitignore -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/concurrent/.travis.yml b/vendor/github.com/modern-go/concurrent/.travis.yml -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/concurrent/LICENSE b/vendor/github.com/modern-go/concurrent/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/concurrent/README.md b/vendor/github.com/modern-go/concurrent/README.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/concurrent/executor.go b/vendor/github.com/modern-go/concurrent/executor.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/concurrent/go_above_19.go b/vendor/github.com/modern-go/concurrent/go_above_19.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/concurrent/go_below_19.go b/vendor/github.com/modern-go/concurrent/go_below_19.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/concurrent/log.go b/vendor/github.com/modern-go/concurrent/log.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/concurrent/test.sh b/vendor/github.com/modern-go/concurrent/test.sh -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/concurrent/unbounded_executor.go b/vendor/github.com/modern-go/concurrent/unbounded_executor.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/reflect2/.gitignore b/vendor/github.com/modern-go/reflect2/.gitignore -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/reflect2/.travis.yml b/vendor/github.com/modern-go/reflect2/.travis.yml -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/reflect2/Gopkg.lock b/vendor/github.com/modern-go/reflect2/Gopkg.lock -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/reflect2/Gopkg.toml b/vendor/github.com/modern-go/reflect2/Gopkg.toml -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/reflect2/LICENSE b/vendor/github.com/modern-go/reflect2/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/reflect2/README.md b/vendor/github.com/modern-go/reflect2/README.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/reflect2/go_above_118.go b/vendor/github.com/modern-go/reflect2/go_above_118.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/reflect2/go_above_19.go b/vendor/github.com/modern-go/reflect2/go_above_19.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/reflect2/go_below_118.go b/vendor/github.com/modern-go/reflect2/go_below_118.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/reflect2/reflect2.go b/vendor/github.com/modern-go/reflect2/reflect2.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/reflect2/reflect2_amd64.s b/vendor/github.com/modern-go/reflect2/reflect2_amd64.s -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/reflect2/reflect2_kind.go b/vendor/github.com/modern-go/reflect2/reflect2_kind.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/reflect2/relfect2_386.s b/vendor/github.com/modern-go/reflect2/relfect2_386.s -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/reflect2/relfect2_amd64p32.s b/vendor/github.com/modern-go/reflect2/relfect2_amd64p32.s -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/reflect2/relfect2_arm.s b/vendor/github.com/modern-go/reflect2/relfect2_arm.s -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/reflect2/relfect2_arm64.s b/vendor/github.com/modern-go/reflect2/relfect2_arm64.s -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/reflect2/relfect2_mips64x.s b/vendor/github.com/modern-go/reflect2/relfect2_mips64x.s -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/reflect2/relfect2_mipsx.s b/vendor/github.com/modern-go/reflect2/relfect2_mipsx.s -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/reflect2/relfect2_ppc64x.s b/vendor/github.com/modern-go/reflect2/relfect2_ppc64x.s -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/reflect2/relfect2_s390x.s b/vendor/github.com/modern-go/reflect2/relfect2_s390x.s -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/reflect2/safe_field.go b/vendor/github.com/modern-go/reflect2/safe_field.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/reflect2/safe_map.go b/vendor/github.com/modern-go/reflect2/safe_map.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/reflect2/safe_slice.go b/vendor/github.com/modern-go/reflect2/safe_slice.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/reflect2/safe_struct.go b/vendor/github.com/modern-go/reflect2/safe_struct.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/reflect2/safe_type.go b/vendor/github.com/modern-go/reflect2/safe_type.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/reflect2/type_map.go b/vendor/github.com/modern-go/reflect2/type_map.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/reflect2/unsafe_array.go b/vendor/github.com/modern-go/reflect2/unsafe_array.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/reflect2/unsafe_eface.go b/vendor/github.com/modern-go/reflect2/unsafe_eface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/reflect2/unsafe_field.go b/vendor/github.com/modern-go/reflect2/unsafe_field.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/reflect2/unsafe_iface.go b/vendor/github.com/modern-go/reflect2/unsafe_iface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/reflect2/unsafe_link.go b/vendor/github.com/modern-go/reflect2/unsafe_link.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/reflect2/unsafe_map.go b/vendor/github.com/modern-go/reflect2/unsafe_map.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/reflect2/unsafe_ptr.go b/vendor/github.com/modern-go/reflect2/unsafe_ptr.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/reflect2/unsafe_slice.go b/vendor/github.com/modern-go/reflect2/unsafe_slice.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/reflect2/unsafe_struct.go b/vendor/github.com/modern-go/reflect2/unsafe_struct.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/modern-go/reflect2/unsafe_type.go b/vendor/github.com/modern-go/reflect2/unsafe_type.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/mrunalp/fileutils/.gitignore b/vendor/github.com/mrunalp/fileutils/.gitignore -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/mrunalp/fileutils/LICENSE b/vendor/github.com/mrunalp/fileutils/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/mrunalp/fileutils/MAINTAINERS b/vendor/github.com/mrunalp/fileutils/MAINTAINERS -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/mrunalp/fileutils/README.md b/vendor/github.com/mrunalp/fileutils/README.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/mrunalp/fileutils/fileutils.go b/vendor/github.com/mrunalp/fileutils/fileutils.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/mrunalp/fileutils/idtools.go b/vendor/github.com/mrunalp/fileutils/idtools.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/LICENSE b/vendor/github.com/opencontainers/runc/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/NOTICE b/vendor/github.com/opencontainers/runc/NOTICE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/README.md b/vendor/github.com/opencontainers/runc/libcontainer/README.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/SPEC.md b/vendor/github.com/opencontainers/runc/libcontainer/SPEC.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/apparmor/apparmor.go b/vendor/github.com/opencontainers/runc/libcontainer/apparmor/apparmor.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/apparmor/apparmor_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/apparmor/apparmor_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/apparmor/apparmor_unsupported.go b/vendor/github.com/opencontainers/runc/libcontainer/apparmor/apparmor_unsupported.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/capabilities/capabilities.go b/vendor/github.com/opencontainers/runc/libcontainer/capabilities/capabilities.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/capabilities/capabilities_unsupported.go b/vendor/github.com/opencontainers/runc/libcontainer/capabilities/capabilities_unsupported.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/cgroups.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/cgroups.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/devices/devices_emulator.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/devices/devices_emulator.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/ebpf/devicefilter/devicefilter.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/ebpf/devicefilter/devicefilter.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/ebpf/ebpf_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/ebpf/ebpf_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/file.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/file.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/blkio.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/blkio.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/cpu.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/cpu.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/cpuacct.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/cpuacct.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/cpuset.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/cpuset.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/devices.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/devices.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/error.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/error.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/freezer.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/freezer.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/fs.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/fs.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/hugetlb.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/hugetlb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/memory.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/memory.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/name.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/name.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/net_cls.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/net_cls.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/net_prio.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/net_prio.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/paths.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/paths.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/perf_event.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/perf_event.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/pids.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/pids.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/rdma.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/rdma.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs2/cpu.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs2/cpu.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs2/cpuset.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs2/cpuset.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs2/create.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs2/create.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs2/defaultpath.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs2/defaultpath.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs2/devices.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs2/devices.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs2/freezer.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs2/freezer.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs2/fs2.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs2/fs2.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs2/hugetlb.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs2/hugetlb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs2/io.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs2/io.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs2/memory.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs2/memory.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs2/pids.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs2/pids.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fscommon/rdma.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fscommon/rdma.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fscommon/utils.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fscommon/utils.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/getallpids.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/getallpids.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/manager/new.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/manager/new.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/stats.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/stats.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/common.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/common.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/cpuset.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/cpuset.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/dbus.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/dbus.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/user.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/user.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/v1.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/v1.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/v2.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/v2.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/utils.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/utils.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/v1_utils.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/v1_utils.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/configs/blkio_device.go b/vendor/github.com/opencontainers/runc/libcontainer/configs/blkio_device.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/configs/cgroup_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/configs/cgroup_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/configs/cgroup_unsupported.go b/vendor/github.com/opencontainers/runc/libcontainer/configs/cgroup_unsupported.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/configs/config.go b/vendor/github.com/opencontainers/runc/libcontainer/configs/config.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/configs/config_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/configs/config_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/configs/configs_fuzzer.go b/vendor/github.com/opencontainers/runc/libcontainer/configs/configs_fuzzer.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/configs/hugepage_limit.go b/vendor/github.com/opencontainers/runc/libcontainer/configs/hugepage_limit.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/configs/intelrdt.go b/vendor/github.com/opencontainers/runc/libcontainer/configs/intelrdt.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/configs/interface_priority_map.go b/vendor/github.com/opencontainers/runc/libcontainer/configs/interface_priority_map.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/configs/mount.go b/vendor/github.com/opencontainers/runc/libcontainer/configs/mount.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/configs/namespaces.go b/vendor/github.com/opencontainers/runc/libcontainer/configs/namespaces.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/configs/namespaces_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/configs/namespaces_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/configs/namespaces_syscall.go b/vendor/github.com/opencontainers/runc/libcontainer/configs/namespaces_syscall.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/configs/namespaces_syscall_unsupported.go b/vendor/github.com/opencontainers/runc/libcontainer/configs/namespaces_syscall_unsupported.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/configs/namespaces_unsupported.go b/vendor/github.com/opencontainers/runc/libcontainer/configs/namespaces_unsupported.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/configs/network.go b/vendor/github.com/opencontainers/runc/libcontainer/configs/network.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/configs/rdma.go b/vendor/github.com/opencontainers/runc/libcontainer/configs/rdma.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/configs/validate/rootless.go b/vendor/github.com/opencontainers/runc/libcontainer/configs/validate/rootless.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/configs/validate/validator.go b/vendor/github.com/opencontainers/runc/libcontainer/configs/validate/validator.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/console_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/console_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/container.go b/vendor/github.com/opencontainers/runc/libcontainer/container.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/container_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/container_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/criu_opts_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/criu_opts_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/devices/device.go b/vendor/github.com/opencontainers/runc/libcontainer/devices/device.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/devices/device_unix.go b/vendor/github.com/opencontainers/runc/libcontainer/devices/device_unix.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/error.go b/vendor/github.com/opencontainers/runc/libcontainer/error.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/factory.go b/vendor/github.com/opencontainers/runc/libcontainer/factory.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/factory_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/factory_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/init_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/init_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/intelrdt/cmt.go b/vendor/github.com/opencontainers/runc/libcontainer/intelrdt/cmt.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/intelrdt/intelrdt.go b/vendor/github.com/opencontainers/runc/libcontainer/intelrdt/intelrdt.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/intelrdt/mbm.go b/vendor/github.com/opencontainers/runc/libcontainer/intelrdt/mbm.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/intelrdt/monitoring.go b/vendor/github.com/opencontainers/runc/libcontainer/intelrdt/monitoring.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/intelrdt/stats.go b/vendor/github.com/opencontainers/runc/libcontainer/intelrdt/stats.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/keys/keyctl.go b/vendor/github.com/opencontainers/runc/libcontainer/keys/keyctl.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/logs/logs.go b/vendor/github.com/opencontainers/runc/libcontainer/logs/logs.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/message_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/message_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/mount_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/mount_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/network_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/network_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/notify_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/notify_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/notify_v2_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/notify_v2_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/process.go b/vendor/github.com/opencontainers/runc/libcontainer/process.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/process_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/process_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/restored_process.go b/vendor/github.com/opencontainers/runc/libcontainer/restored_process.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/rootfs_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/rootfs_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/seccomp/config.go b/vendor/github.com/opencontainers/runc/libcontainer/seccomp/config.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/seccomp/patchbpf/enosys_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/seccomp/patchbpf/enosys_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/seccomp/patchbpf/enosys_unsupported.go b/vendor/github.com/opencontainers/runc/libcontainer/seccomp/patchbpf/enosys_unsupported.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/seccomp/seccomp_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/seccomp/seccomp_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/seccomp/seccomp_unsupported.go b/vendor/github.com/opencontainers/runc/libcontainer/seccomp/seccomp_unsupported.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/setns_init_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/setns_init_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/standard_init_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/standard_init_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/state_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/state_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/stats_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/stats_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/sync.go b/vendor/github.com/opencontainers/runc/libcontainer/sync.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/system/linux.go b/vendor/github.com/opencontainers/runc/libcontainer/system/linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/system/proc.go b/vendor/github.com/opencontainers/runc/libcontainer/system/proc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/system/syscall_linux_32.go b/vendor/github.com/opencontainers/runc/libcontainer/system/syscall_linux_32.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/system/syscall_linux_64.go b/vendor/github.com/opencontainers/runc/libcontainer/system/syscall_linux_64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/user/lookup_unix.go b/vendor/github.com/opencontainers/runc/libcontainer/user/lookup_unix.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/user/user.go b/vendor/github.com/opencontainers/runc/libcontainer/user/user.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/user/user_fuzzer.go b/vendor/github.com/opencontainers/runc/libcontainer/user/user_fuzzer.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/userns/userns.go b/vendor/github.com/opencontainers/runc/libcontainer/userns/userns.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/userns/userns_fuzzer.go b/vendor/github.com/opencontainers/runc/libcontainer/userns/userns_fuzzer.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/userns/userns_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/userns/userns_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/userns/userns_unsupported.go b/vendor/github.com/opencontainers/runc/libcontainer/userns/userns_unsupported.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/utils/cmsg.go b/vendor/github.com/opencontainers/runc/libcontainer/utils/cmsg.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/utils/utils.go b/vendor/github.com/opencontainers/runc/libcontainer/utils/utils.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/libcontainer/utils/utils_unix.go b/vendor/github.com/opencontainers/runc/libcontainer/utils/utils_unix.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runc/types/events.go b/vendor/github.com/opencontainers/runc/types/events.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runtime-spec/LICENSE b/vendor/github.com/opencontainers/runtime-spec/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runtime-spec/specs-go/config.go b/vendor/github.com/opencontainers/runtime-spec/specs-go/config.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runtime-spec/specs-go/state.go b/vendor/github.com/opencontainers/runtime-spec/specs-go/state.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/runtime-spec/specs-go/version.go b/vendor/github.com/opencontainers/runtime-spec/specs-go/version.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/selinux/LICENSE b/vendor/github.com/opencontainers/selinux/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/selinux/go-selinux/doc.go b/vendor/github.com/opencontainers/selinux/go-selinux/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/selinux/go-selinux/label/label.go b/vendor/github.com/opencontainers/selinux/go-selinux/label/label.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/selinux/go-selinux/label/label_linux.go b/vendor/github.com/opencontainers/selinux/go-selinux/label/label_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/selinux/go-selinux/label/label_stub.go b/vendor/github.com/opencontainers/selinux/go-selinux/label/label_stub.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/selinux/go-selinux/rchcon.go b/vendor/github.com/opencontainers/selinux/go-selinux/rchcon.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/selinux/go-selinux/rchcon_go115.go b/vendor/github.com/opencontainers/selinux/go-selinux/rchcon_go115.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/selinux/go-selinux/selinux.go b/vendor/github.com/opencontainers/selinux/go-selinux/selinux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/selinux/go-selinux/selinux_linux.go b/vendor/github.com/opencontainers/selinux/go-selinux/selinux_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/selinux/go-selinux/selinux_stub.go b/vendor/github.com/opencontainers/selinux/go-selinux/selinux_stub.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/selinux/go-selinux/xattrs_linux.go b/vendor/github.com/opencontainers/selinux/go-selinux/xattrs_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/selinux/pkg/pwalk/README.md b/vendor/github.com/opencontainers/selinux/pkg/pwalk/README.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/selinux/pkg/pwalk/pwalk.go b/vendor/github.com/opencontainers/selinux/pkg/pwalk/pwalk.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/selinux/pkg/pwalkdir/README.md b/vendor/github.com/opencontainers/selinux/pkg/pwalkdir/README.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/opencontainers/selinux/pkg/pwalkdir/pwalkdir.go b/vendor/github.com/opencontainers/selinux/pkg/pwalkdir/pwalkdir.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/pkg/errors/.gitignore b/vendor/github.com/pkg/errors/.gitignore -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/pkg/errors/.travis.yml b/vendor/github.com/pkg/errors/.travis.yml -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/pkg/errors/LICENSE b/vendor/github.com/pkg/errors/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/pkg/errors/Makefile b/vendor/github.com/pkg/errors/Makefile -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/pkg/errors/README.md b/vendor/github.com/pkg/errors/README.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/pkg/errors/appveyor.yml b/vendor/github.com/pkg/errors/appveyor.yml -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/pkg/errors/errors.go b/vendor/github.com/pkg/errors/errors.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/pkg/errors/go113.go b/vendor/github.com/pkg/errors/go113.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/pkg/errors/stack.go b/vendor/github.com/pkg/errors/stack.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/pmezard/go-difflib/LICENSE b/vendor/github.com/pmezard/go-difflib/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/pmezard/go-difflib/difflib/difflib.go b/vendor/github.com/pmezard/go-difflib/difflib/difflib.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/prometheus/client_golang/LICENSE b/vendor/github.com/prometheus/client_golang/LICENSE -new file mode 100755 -index 0000000..261eeb9 ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/LICENSE -@@ -0,0 +1,201 @@ -+ Apache License -+ Version 2.0, January 2004 -+ http://www.apache.org/licenses/ -+ -+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -+ -+ 1. Definitions. -+ -+ "License" shall mean the terms and conditions for use, reproduction, -+ and distribution as defined by Sections 1 through 9 of this document. -+ -+ "Licensor" shall mean the copyright owner or entity authorized by -+ the copyright owner that is granting the License. -+ -+ "Legal Entity" shall mean the union of the acting entity and all -+ other entities that control, are controlled by, or are under common -+ control with that entity. For the purposes of this definition, -+ "control" means (i) the power, direct or indirect, to cause the -+ direction or management of such entity, whether by contract or -+ otherwise, or (ii) ownership of fifty percent (50%) or more of the -+ outstanding shares, or (iii) beneficial ownership of such entity. -+ -+ "You" (or "Your") shall mean an individual or Legal Entity -+ exercising permissions granted by this License. -+ -+ "Source" form shall mean the preferred form for making modifications, -+ including but not limited to software source code, documentation -+ source, and configuration files. -+ -+ "Object" form shall mean any form resulting from mechanical -+ transformation or translation of a Source form, including but -+ not limited to compiled object code, generated documentation, -+ and conversions to other media types. -+ -+ "Work" shall mean the work of authorship, whether in Source or -+ Object form, made available under the License, as indicated by a -+ copyright notice that is included in or attached to the work -+ (an example is provided in the Appendix below). -+ -+ "Derivative Works" shall mean any work, whether in Source or Object -+ form, that is based on (or derived from) the Work and for which the -+ editorial revisions, annotations, elaborations, or other modifications -+ represent, as a whole, an original work of authorship. For the purposes -+ of this License, Derivative Works shall not include works that remain -+ separable from, or merely link (or bind by name) to the interfaces of, -+ the Work and Derivative Works thereof. -+ -+ "Contribution" shall mean any work of authorship, including -+ the original version of the Work and any modifications or additions -+ to that Work or Derivative Works thereof, that is intentionally -+ submitted to Licensor for inclusion in the Work by the copyright owner -+ or by an individual or Legal Entity authorized to submit on behalf of -+ the copyright owner. For the purposes of this definition, "submitted" -+ means any form of electronic, verbal, or written communication sent -+ to the Licensor or its representatives, including but not limited to -+ communication on electronic mailing lists, source code control systems, -+ and issue tracking systems that are managed by, or on behalf of, the -+ Licensor for the purpose of discussing and improving the Work, but -+ excluding communication that is conspicuously marked or otherwise -+ designated in writing by the copyright owner as "Not a Contribution." -+ -+ "Contributor" shall mean Licensor and any individual or Legal Entity -+ on behalf of whom a Contribution has been received by Licensor and -+ subsequently incorporated within the Work. -+ -+ 2. Grant of Copyright License. Subject to the terms and conditions of -+ this License, each Contributor hereby grants to You a perpetual, -+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable -+ copyright license to reproduce, prepare Derivative Works of, -+ publicly display, publicly perform, sublicense, and distribute the -+ Work and such Derivative Works in Source or Object form. -+ -+ 3. Grant of Patent License. Subject to the terms and conditions of -+ this License, each Contributor hereby grants to You a perpetual, -+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable -+ (except as stated in this section) patent license to make, have made, -+ use, offer to sell, sell, import, and otherwise transfer the Work, -+ where such license applies only to those patent claims licensable -+ by such Contributor that are necessarily infringed by their -+ Contribution(s) alone or by combination of their Contribution(s) -+ with the Work to which such Contribution(s) was submitted. If You -+ institute patent litigation against any entity (including a -+ cross-claim or counterclaim in a lawsuit) alleging that the Work -+ or a Contribution incorporated within the Work constitutes direct -+ or contributory patent infringement, then any patent licenses -+ granted to You under this License for that Work shall terminate -+ as of the date such litigation is filed. -+ -+ 4. Redistribution. You may reproduce and distribute copies of the -+ Work or Derivative Works thereof in any medium, with or without -+ modifications, and in Source or Object form, provided that You -+ meet the following conditions: -+ -+ (a) You must give any other recipients of the Work or -+ Derivative Works a copy of this License; and -+ -+ (b) You must cause any modified files to carry prominent notices -+ stating that You changed the files; and -+ -+ (c) You must retain, in the Source form of any Derivative Works -+ that You distribute, all copyright, patent, trademark, and -+ attribution notices from the Source form of the Work, -+ excluding those notices that do not pertain to any part of -+ the Derivative Works; and -+ -+ (d) If the Work includes a "NOTICE" text file as part of its -+ distribution, then any Derivative Works that You distribute must -+ include a readable copy of the attribution notices contained -+ within such NOTICE file, excluding those notices that do not -+ pertain to any part of the Derivative Works, in at least one -+ of the following places: within a NOTICE text file distributed -+ as part of the Derivative Works; within the Source form or -+ documentation, if provided along with the Derivative Works; or, -+ within a display generated by the Derivative Works, if and -+ wherever such third-party notices normally appear. The contents -+ of the NOTICE file are for informational purposes only and -+ do not modify the License. You may add Your own attribution -+ notices within Derivative Works that You distribute, alongside -+ or as an addendum to the NOTICE text from the Work, provided -+ that such additional attribution notices cannot be construed -+ as modifying the License. -+ -+ You may add Your own copyright statement to Your modifications and -+ may provide additional or different license terms and conditions -+ for use, reproduction, or distribution of Your modifications, or -+ for any such Derivative Works as a whole, provided Your use, -+ reproduction, and distribution of the Work otherwise complies with -+ the conditions stated in this License. -+ -+ 5. Submission of Contributions. Unless You explicitly state otherwise, -+ any Contribution intentionally submitted for inclusion in the Work -+ by You to the Licensor shall be under the terms and conditions of -+ this License, without any additional terms or conditions. -+ Notwithstanding the above, nothing herein shall supersede or modify -+ the terms of any separate license agreement you may have executed -+ with Licensor regarding such Contributions. -+ -+ 6. Trademarks. This License does not grant permission to use the trade -+ names, trademarks, service marks, or product names of the Licensor, -+ except as required for reasonable and customary use in describing the -+ origin of the Work and reproducing the content of the NOTICE file. -+ -+ 7. Disclaimer of Warranty. Unless required by applicable law or -+ agreed to in writing, Licensor provides the Work (and each -+ Contributor provides its Contributions) on an "AS IS" BASIS, -+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -+ implied, including, without limitation, any warranties or conditions -+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A -+ PARTICULAR PURPOSE. You are solely responsible for determining the -+ appropriateness of using or redistributing the Work and assume any -+ risks associated with Your exercise of permissions under this License. -+ -+ 8. Limitation of Liability. In no event and under no legal theory, -+ whether in tort (including negligence), contract, or otherwise, -+ unless required by applicable law (such as deliberate and grossly -+ negligent acts) or agreed to in writing, shall any Contributor be -+ liable to You for damages, including any direct, indirect, special, -+ incidental, or consequential damages of any character arising as a -+ result of this License or out of the use or inability to use the -+ Work (including but not limited to damages for loss of goodwill, -+ work stoppage, computer failure or malfunction, or any and all -+ other commercial damages or losses), even if such Contributor -+ has been advised of the possibility of such damages. -+ -+ 9. Accepting Warranty or Additional Liability. While redistributing -+ the Work or Derivative Works thereof, You may choose to offer, -+ and charge a fee for, acceptance of support, warranty, indemnity, -+ or other liability obligations and/or rights consistent with this -+ License. However, in accepting such obligations, You may act only -+ on Your own behalf and on Your sole responsibility, not on behalf -+ of any other Contributor, and only if You agree to indemnify, -+ defend, and hold each Contributor harmless for any liability -+ incurred by, or claims asserted against, such Contributor by reason -+ of your accepting any such warranty or additional liability. -+ -+ END OF TERMS AND CONDITIONS -+ -+ APPENDIX: How to apply the Apache License to your work. -+ -+ To apply the Apache License to your work, attach the following -+ boilerplate notice, with the fields enclosed by brackets "[]" -+ replaced with your own identifying information. (Don't include -+ the brackets!) The text should be enclosed in the appropriate -+ comment syntax for the file format. We also recommend that a -+ file or class name and description of purpose be included on the -+ same "printed page" as the copyright notice for easier -+ identification within third-party archives. -+ -+ Copyright [yyyy] [name of copyright owner] -+ -+ 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. -diff --git a/vendor/github.com/prometheus/client_golang/NOTICE b/vendor/github.com/prometheus/client_golang/NOTICE -new file mode 100755 -index 0000000..dd878a3 ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/NOTICE -@@ -0,0 +1,23 @@ -+Prometheus instrumentation library for Go applications -+Copyright 2012-2015 The Prometheus Authors -+ -+This product includes software developed at -+SoundCloud Ltd. (http://soundcloud.com/). -+ -+ -+The following components are included in this product: -+ -+perks - a fork of https://github.com/bmizerany/perks -+https://github.com/beorn7/perks -+Copyright 2013-2015 Blake Mizerany, Björn Rabenstein -+See https://github.com/beorn7/perks/blob/master/README.md for license details. -+ -+Go support for Protocol Buffers - Google's data interchange format -+http://github.com/golang/protobuf/ -+Copyright 2010 The Go Authors -+See source code for license details. -+ -+Support for streaming Protocol Buffer messages for the Go language (golang). -+https://github.com/matttproud/golang_protobuf_extensions -+Copyright 2013 Matt T. Proud -+Licensed under the Apache License, Version 2.0 -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/.gitignore b/vendor/github.com/prometheus/client_golang/prometheus/.gitignore -new file mode 100755 -index 0000000..3460f03 ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/.gitignore -@@ -0,0 +1 @@ -+command-line-arguments.test -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/README.md b/vendor/github.com/prometheus/client_golang/prometheus/README.md -new file mode 100755 -index 0000000..c67ff1b ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/README.md -@@ -0,0 +1 @@ -+See [![Go Reference](https://pkg.go.dev/badge/github.com/prometheus/client_golang/prometheus.svg)](https://pkg.go.dev/github.com/prometheus/client_golang/prometheus). -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/build_info_collector.go b/vendor/github.com/prometheus/client_golang/prometheus/build_info_collector.go -new file mode 100755 -index 0000000..450189f ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/build_info_collector.go -@@ -0,0 +1,38 @@ -+// Copyright 2021 The Prometheus 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 prometheus -+ -+import "runtime/debug" -+ -+// NewBuildInfoCollector is the obsolete version of collectors.NewBuildInfoCollector. -+// See there for documentation. -+// -+// Deprecated: Use collectors.NewBuildInfoCollector instead. -+func NewBuildInfoCollector() Collector { -+ path, version, sum := "unknown", "unknown", "unknown" -+ if bi, ok := debug.ReadBuildInfo(); ok { -+ path = bi.Main.Path -+ version = bi.Main.Version -+ sum = bi.Main.Sum -+ } -+ c := &selfCollector{MustNewConstMetric( -+ NewDesc( -+ "go_build_info", -+ "Build information about the main Go module.", -+ nil, Labels{"path": path, "version": version, "checksum": sum}, -+ ), -+ GaugeValue, 1)} -+ c.init(c.self) -+ return c -+} -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/collector.go b/vendor/github.com/prometheus/client_golang/prometheus/collector.go -new file mode 100755 -index 0000000..cf05079 ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/collector.go -@@ -0,0 +1,128 @@ -+// Copyright 2014 The Prometheus 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 prometheus -+ -+// Collector is the interface implemented by anything that can be used by -+// Prometheus to collect metrics. A Collector has to be registered for -+// collection. See Registerer.Register. -+// -+// The stock metrics provided by this package (Gauge, Counter, Summary, -+// Histogram, Untyped) are also Collectors (which only ever collect one metric, -+// namely itself). An implementer of Collector may, however, collect multiple -+// metrics in a coordinated fashion and/or create metrics on the fly. Examples -+// for collectors already implemented in this library are the metric vectors -+// (i.e. collection of multiple instances of the same Metric but with different -+// label values) like GaugeVec or SummaryVec, and the ExpvarCollector. -+type Collector interface { -+ // Describe sends the super-set of all possible descriptors of metrics -+ // collected by this Collector to the provided channel and returns once -+ // the last descriptor has been sent. The sent descriptors fulfill the -+ // consistency and uniqueness requirements described in the Desc -+ // documentation. -+ // -+ // It is valid if one and the same Collector sends duplicate -+ // descriptors. Those duplicates are simply ignored. However, two -+ // different Collectors must not send duplicate descriptors. -+ // -+ // Sending no descriptor at all marks the Collector as “unchecked”, -+ // i.e. no checks will be performed at registration time, and the -+ // Collector may yield any Metric it sees fit in its Collect method. -+ // -+ // This method idempotently sends the same descriptors throughout the -+ // lifetime of the Collector. It may be called concurrently and -+ // therefore must be implemented in a concurrency safe way. -+ // -+ // If a Collector encounters an error while executing this method, it -+ // must send an invalid descriptor (created with NewInvalidDesc) to -+ // signal the error to the registry. -+ Describe(chan<- *Desc) -+ // Collect is called by the Prometheus registry when collecting -+ // metrics. The implementation sends each collected metric via the -+ // provided channel and returns once the last metric has been sent. The -+ // descriptor of each sent metric is one of those returned by Describe -+ // (unless the Collector is unchecked, see above). Returned metrics that -+ // share the same descriptor must differ in their variable label -+ // values. -+ // -+ // This method may be called concurrently and must therefore be -+ // implemented in a concurrency safe way. Blocking occurs at the expense -+ // of total performance of rendering all registered metrics. Ideally, -+ // Collector implementations support concurrent readers. -+ Collect(chan<- Metric) -+} -+ -+// DescribeByCollect is a helper to implement the Describe method of a custom -+// Collector. It collects the metrics from the provided Collector and sends -+// their descriptors to the provided channel. -+// -+// If a Collector collects the same metrics throughout its lifetime, its -+// Describe method can simply be implemented as: -+// -+// func (c customCollector) Describe(ch chan<- *Desc) { -+// DescribeByCollect(c, ch) -+// } -+// -+// However, this will not work if the metrics collected change dynamically over -+// the lifetime of the Collector in a way that their combined set of descriptors -+// changes as well. The shortcut implementation will then violate the contract -+// of the Describe method. If a Collector sometimes collects no metrics at all -+// (for example vectors like CounterVec, GaugeVec, etc., which only collect -+// metrics after a metric with a fully specified label set has been accessed), -+// it might even get registered as an unchecked Collector (cf. the Register -+// method of the Registerer interface). Hence, only use this shortcut -+// implementation of Describe if you are certain to fulfill the contract. -+// -+// The Collector example demonstrates a use of DescribeByCollect. -+func DescribeByCollect(c Collector, descs chan<- *Desc) { -+ metrics := make(chan Metric) -+ go func() { -+ c.Collect(metrics) -+ close(metrics) -+ }() -+ for m := range metrics { -+ descs <- m.Desc() -+ } -+} -+ -+// selfCollector implements Collector for a single Metric so that the Metric -+// collects itself. Add it as an anonymous field to a struct that implements -+// Metric, and call init with the Metric itself as an argument. -+type selfCollector struct { -+ self Metric -+} -+ -+// init provides the selfCollector with a reference to the metric it is supposed -+// to collect. It is usually called within the factory function to create a -+// metric. See example. -+func (c *selfCollector) init(self Metric) { -+ c.self = self -+} -+ -+// Describe implements Collector. -+func (c *selfCollector) Describe(ch chan<- *Desc) { -+ ch <- c.self.Desc() -+} -+ -+// Collect implements Collector. -+func (c *selfCollector) Collect(ch chan<- Metric) { -+ ch <- c.self -+} -+ -+// collectorMetric is a metric that is also a collector. -+// Because of selfCollector, most (if not all) Metrics in -+// this package are also collectors. -+type collectorMetric interface { -+ Metric -+ Collector -+} -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/counter.go b/vendor/github.com/prometheus/client_golang/prometheus/counter.go -new file mode 100755 -index 0000000..a912b75 ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/counter.go -@@ -0,0 +1,328 @@ -+// Copyright 2014 The Prometheus 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 prometheus -+ -+import ( -+ "errors" -+ "math" -+ "sync/atomic" -+ "time" -+ -+ dto "github.com/prometheus/client_model/go" -+) -+ -+// Counter is a Metric that represents a single numerical value that only ever -+// goes up. That implies that it cannot be used to count items whose number can -+// also go down, e.g. the number of currently running goroutines. Those -+// "counters" are represented by Gauges. -+// -+// A Counter is typically used to count requests served, tasks completed, errors -+// occurred, etc. -+// -+// To create Counter instances, use NewCounter. -+type Counter interface { -+ Metric -+ Collector -+ -+ // Inc increments the counter by 1. Use Add to increment it by arbitrary -+ // non-negative values. -+ Inc() -+ // Add adds the given value to the counter. It panics if the value is < -+ // 0. -+ Add(float64) -+} -+ -+// ExemplarAdder is implemented by Counters that offer the option of adding a -+// value to the Counter together with an exemplar. Its AddWithExemplar method -+// works like the Add method of the Counter interface but also replaces the -+// currently saved exemplar (if any) with a new one, created from the provided -+// value, the current time as timestamp, and the provided labels. Empty Labels -+// will lead to a valid (label-less) exemplar. But if Labels is nil, the current -+// exemplar is left in place. AddWithExemplar panics if the value is < 0, if any -+// of the provided labels are invalid, or if the provided labels contain more -+// than 128 runes in total. -+type ExemplarAdder interface { -+ AddWithExemplar(value float64, exemplar Labels) -+} -+ -+// CounterOpts is an alias for Opts. See there for doc comments. -+type CounterOpts Opts -+ -+// NewCounter creates a new Counter based on the provided CounterOpts. -+// -+// The returned implementation also implements ExemplarAdder. It is safe to -+// perform the corresponding type assertion. -+// -+// The returned implementation tracks the counter value in two separate -+// variables, a float64 and a uint64. The latter is used to track calls of the -+// Inc method and calls of the Add method with a value that can be represented -+// as a uint64. This allows atomic increments of the counter with optimal -+// performance. (It is common to have an Inc call in very hot execution paths.) -+// Both internal tracking values are added up in the Write method. This has to -+// be taken into account when it comes to precision and overflow behavior. -+func NewCounter(opts CounterOpts) Counter { -+ desc := NewDesc( -+ BuildFQName(opts.Namespace, opts.Subsystem, opts.Name), -+ opts.Help, -+ nil, -+ opts.ConstLabels, -+ ) -+ result := &counter{desc: desc, labelPairs: desc.constLabelPairs, now: time.Now} -+ result.init(result) // Init self-collection. -+ return result -+} -+ -+type counter struct { -+ // valBits contains the bits of the represented float64 value, while -+ // valInt stores values that are exact integers. Both have to go first -+ // in the struct to guarantee alignment for atomic operations. -+ // http://golang.org/pkg/sync/atomic/#pkg-note-BUG -+ valBits uint64 -+ valInt uint64 -+ -+ selfCollector -+ desc *Desc -+ -+ labelPairs []*dto.LabelPair -+ exemplar atomic.Value // Containing nil or a *dto.Exemplar. -+ -+ now func() time.Time // To mock out time.Now() for testing. -+} -+ -+func (c *counter) Desc() *Desc { -+ return c.desc -+} -+ -+func (c *counter) Add(v float64) { -+ if v < 0 { -+ panic(errors.New("counter cannot decrease in value")) -+ } -+ -+ ival := uint64(v) -+ if float64(ival) == v { -+ atomic.AddUint64(&c.valInt, ival) -+ return -+ } -+ -+ for { -+ oldBits := atomic.LoadUint64(&c.valBits) -+ newBits := math.Float64bits(math.Float64frombits(oldBits) + v) -+ if atomic.CompareAndSwapUint64(&c.valBits, oldBits, newBits) { -+ return -+ } -+ } -+} -+ -+func (c *counter) AddWithExemplar(v float64, e Labels) { -+ c.Add(v) -+ c.updateExemplar(v, e) -+} -+ -+func (c *counter) Inc() { -+ atomic.AddUint64(&c.valInt, 1) -+} -+ -+func (c *counter) get() float64 { -+ fval := math.Float64frombits(atomic.LoadUint64(&c.valBits)) -+ ival := atomic.LoadUint64(&c.valInt) -+ return fval + float64(ival) -+} -+ -+func (c *counter) Write(out *dto.Metric) error { -+ // Read the Exemplar first and the value second. This is to avoid a race condition -+ // where users see an exemplar for a not-yet-existing observation. -+ var exemplar *dto.Exemplar -+ if e := c.exemplar.Load(); e != nil { -+ exemplar = e.(*dto.Exemplar) -+ } -+ val := c.get() -+ -+ return populateMetric(CounterValue, val, c.labelPairs, exemplar, out) -+} -+ -+func (c *counter) updateExemplar(v float64, l Labels) { -+ if l == nil { -+ return -+ } -+ e, err := newExemplar(v, c.now(), l) -+ if err != nil { -+ panic(err) -+ } -+ c.exemplar.Store(e) -+} -+ -+// CounterVec is a Collector that bundles a set of Counters that all share the -+// same Desc, but have different values for their variable labels. This is used -+// if you want to count the same thing partitioned by various dimensions -+// (e.g. number of HTTP requests, partitioned by response code and -+// method). Create instances with NewCounterVec. -+type CounterVec struct { -+ *MetricVec -+} -+ -+// NewCounterVec creates a new CounterVec based on the provided CounterOpts and -+// partitioned by the given label names. -+func NewCounterVec(opts CounterOpts, labelNames []string) *CounterVec { -+ desc := NewDesc( -+ BuildFQName(opts.Namespace, opts.Subsystem, opts.Name), -+ opts.Help, -+ labelNames, -+ opts.ConstLabels, -+ ) -+ return &CounterVec{ -+ MetricVec: NewMetricVec(desc, func(lvs ...string) Metric { -+ if len(lvs) != len(desc.variableLabels) { -+ panic(makeInconsistentCardinalityError(desc.fqName, desc.variableLabels, lvs)) -+ } -+ result := &counter{desc: desc, labelPairs: MakeLabelPairs(desc, lvs), now: time.Now} -+ result.init(result) // Init self-collection. -+ return result -+ }), -+ } -+} -+ -+// GetMetricWithLabelValues returns the Counter for the given slice of label -+// values (same order as the variable labels in Desc). If that combination of -+// label values is accessed for the first time, a new Counter is created. -+// -+// It is possible to call this method without using the returned Counter to only -+// create the new Counter but leave it at its starting value 0. See also the -+// SummaryVec example. -+// -+// Keeping the Counter for later use is possible (and should be considered if -+// performance is critical), but keep in mind that Reset, DeleteLabelValues and -+// Delete can be used to delete the Counter from the CounterVec. In that case, -+// the Counter will still exist, but it will not be exported anymore, even if a -+// Counter with the same label values is created later. -+// -+// An error is returned if the number of label values is not the same as the -+// number of variable labels in Desc (minus any curried labels). -+// -+// Note that for more than one label value, this method is prone to mistakes -+// caused by an incorrect order of arguments. Consider GetMetricWith(Labels) as -+// an alternative to avoid that type of mistake. For higher label numbers, the -+// latter has a much more readable (albeit more verbose) syntax, but it comes -+// with a performance overhead (for creating and processing the Labels map). -+// See also the GaugeVec example. -+func (v *CounterVec) GetMetricWithLabelValues(lvs ...string) (Counter, error) { -+ metric, err := v.MetricVec.GetMetricWithLabelValues(lvs...) -+ if metric != nil { -+ return metric.(Counter), err -+ } -+ return nil, err -+} -+ -+// GetMetricWith returns the Counter for the given Labels map (the label names -+// must match those of the variable labels in Desc). If that label map is -+// accessed for the first time, a new Counter is created. Implications of -+// creating a Counter without using it and keeping the Counter for later use are -+// the same as for GetMetricWithLabelValues. -+// -+// An error is returned if the number and names of the Labels are inconsistent -+// with those of the variable labels in Desc (minus any curried labels). -+// -+// This method is used for the same purpose as -+// GetMetricWithLabelValues(...string). See there for pros and cons of the two -+// methods. -+func (v *CounterVec) GetMetricWith(labels Labels) (Counter, error) { -+ metric, err := v.MetricVec.GetMetricWith(labels) -+ if metric != nil { -+ return metric.(Counter), err -+ } -+ return nil, err -+} -+ -+// WithLabelValues works as GetMetricWithLabelValues, but panics where -+// GetMetricWithLabelValues would have returned an error. Not returning an -+// error allows shortcuts like -+// -+// myVec.WithLabelValues("404", "GET").Add(42) -+func (v *CounterVec) WithLabelValues(lvs ...string) Counter { -+ c, err := v.GetMetricWithLabelValues(lvs...) -+ if err != nil { -+ panic(err) -+ } -+ return c -+} -+ -+// With works as GetMetricWith, but panics where GetMetricWithLabels would have -+// returned an error. Not returning an error allows shortcuts like -+// -+// myVec.With(prometheus.Labels{"code": "404", "method": "GET"}).Add(42) -+func (v *CounterVec) With(labels Labels) Counter { -+ c, err := v.GetMetricWith(labels) -+ if err != nil { -+ panic(err) -+ } -+ return c -+} -+ -+// CurryWith returns a vector curried with the provided labels, i.e. the -+// returned vector has those labels pre-set for all labeled operations performed -+// on it. The cardinality of the curried vector is reduced accordingly. The -+// order of the remaining labels stays the same (just with the curried labels -+// taken out of the sequence – which is relevant for the -+// (GetMetric)WithLabelValues methods). It is possible to curry a curried -+// vector, but only with labels not yet used for currying before. -+// -+// The metrics contained in the CounterVec are shared between the curried and -+// uncurried vectors. They are just accessed differently. Curried and uncurried -+// vectors behave identically in terms of collection. Only one must be -+// registered with a given registry (usually the uncurried version). The Reset -+// method deletes all metrics, even if called on a curried vector. -+func (v *CounterVec) CurryWith(labels Labels) (*CounterVec, error) { -+ vec, err := v.MetricVec.CurryWith(labels) -+ if vec != nil { -+ return &CounterVec{vec}, err -+ } -+ return nil, err -+} -+ -+// MustCurryWith works as CurryWith but panics where CurryWith would have -+// returned an error. -+func (v *CounterVec) MustCurryWith(labels Labels) *CounterVec { -+ vec, err := v.CurryWith(labels) -+ if err != nil { -+ panic(err) -+ } -+ return vec -+} -+ -+// CounterFunc is a Counter whose value is determined at collect time by calling a -+// provided function. -+// -+// To create CounterFunc instances, use NewCounterFunc. -+type CounterFunc interface { -+ Metric -+ Collector -+} -+ -+// NewCounterFunc creates a new CounterFunc based on the provided -+// CounterOpts. The value reported is determined by calling the given function -+// from within the Write method. Take into account that metric collection may -+// happen concurrently. If that results in concurrent calls to Write, like in -+// the case where a CounterFunc is directly registered with Prometheus, the -+// provided function must be concurrency-safe. The function should also honor -+// the contract for a Counter (values only go up, not down), but compliance will -+// not be checked. -+// -+// Check out the ExampleGaugeFunc examples for the similar GaugeFunc. -+func NewCounterFunc(opts CounterOpts, function func() float64) CounterFunc { -+ return newValueFunc(NewDesc( -+ BuildFQName(opts.Namespace, opts.Subsystem, opts.Name), -+ opts.Help, -+ nil, -+ opts.ConstLabels, -+ ), CounterValue, function) -+} -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/desc.go b/vendor/github.com/prometheus/client_golang/prometheus/desc.go -new file mode 100755 -index 0000000..8bc5e44 ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/desc.go -@@ -0,0 +1,189 @@ -+// Copyright 2016 The Prometheus 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 prometheus -+ -+import ( -+ "errors" -+ "fmt" -+ "sort" -+ "strings" -+ -+ "github.com/cespare/xxhash/v2" -+ -+ "github.com/prometheus/client_golang/prometheus/internal" -+ -+ //nolint:staticcheck // Ignore SA1019. Need to keep deprecated package for compatibility. -+ "github.com/golang/protobuf/proto" -+ "github.com/prometheus/common/model" -+ -+ dto "github.com/prometheus/client_model/go" -+) -+ -+// Desc is the descriptor used by every Prometheus Metric. It is essentially -+// the immutable meta-data of a Metric. The normal Metric implementations -+// included in this package manage their Desc under the hood. Users only have to -+// deal with Desc if they use advanced features like the ExpvarCollector or -+// custom Collectors and Metrics. -+// -+// Descriptors registered with the same registry have to fulfill certain -+// consistency and uniqueness criteria if they share the same fully-qualified -+// name: They must have the same help string and the same label names (aka label -+// dimensions) in each, constLabels and variableLabels, but they must differ in -+// the values of the constLabels. -+// -+// Descriptors that share the same fully-qualified names and the same label -+// values of their constLabels are considered equal. -+// -+// Use NewDesc to create new Desc instances. -+type Desc struct { -+ // fqName has been built from Namespace, Subsystem, and Name. -+ fqName string -+ // help provides some helpful information about this metric. -+ help string -+ // constLabelPairs contains precalculated DTO label pairs based on -+ // the constant labels. -+ constLabelPairs []*dto.LabelPair -+ // variableLabels contains names of labels for which the metric -+ // maintains variable values. -+ variableLabels []string -+ // id is a hash of the values of the ConstLabels and fqName. This -+ // must be unique among all registered descriptors and can therefore be -+ // used as an identifier of the descriptor. -+ id uint64 -+ // dimHash is a hash of the label names (preset and variable) and the -+ // Help string. Each Desc with the same fqName must have the same -+ // dimHash. -+ dimHash uint64 -+ // err is an error that occurred during construction. It is reported on -+ // registration time. -+ err error -+} -+ -+// NewDesc allocates and initializes a new Desc. Errors are recorded in the Desc -+// and will be reported on registration time. variableLabels and constLabels can -+// be nil if no such labels should be set. fqName must not be empty. -+// -+// variableLabels only contain the label names. Their label values are variable -+// and therefore not part of the Desc. (They are managed within the Metric.) -+// -+// For constLabels, the label values are constant. Therefore, they are fully -+// specified in the Desc. See the Collector example for a usage pattern. -+func NewDesc(fqName, help string, variableLabels []string, constLabels Labels) *Desc { -+ d := &Desc{ -+ fqName: fqName, -+ help: help, -+ variableLabels: variableLabels, -+ } -+ if !model.IsValidMetricName(model.LabelValue(fqName)) { -+ d.err = fmt.Errorf("%q is not a valid metric name", fqName) -+ return d -+ } -+ // labelValues contains the label values of const labels (in order of -+ // their sorted label names) plus the fqName (at position 0). -+ labelValues := make([]string, 1, len(constLabels)+1) -+ labelValues[0] = fqName -+ labelNames := make([]string, 0, len(constLabels)+len(variableLabels)) -+ labelNameSet := map[string]struct{}{} -+ // First add only the const label names and sort them... -+ for labelName := range constLabels { -+ if !checkLabelName(labelName) { -+ d.err = fmt.Errorf("%q is not a valid label name for metric %q", labelName, fqName) -+ return d -+ } -+ labelNames = append(labelNames, labelName) -+ labelNameSet[labelName] = struct{}{} -+ } -+ sort.Strings(labelNames) -+ // ... so that we can now add const label values in the order of their names. -+ for _, labelName := range labelNames { -+ labelValues = append(labelValues, constLabels[labelName]) -+ } -+ // Validate the const label values. They can't have a wrong cardinality, so -+ // use in len(labelValues) as expectedNumberOfValues. -+ if err := validateLabelValues(labelValues, len(labelValues)); err != nil { -+ d.err = err -+ return d -+ } -+ // Now add the variable label names, but prefix them with something that -+ // cannot be in a regular label name. That prevents matching the label -+ // dimension with a different mix between preset and variable labels. -+ for _, labelName := range variableLabels { -+ if !checkLabelName(labelName) { -+ d.err = fmt.Errorf("%q is not a valid label name for metric %q", labelName, fqName) -+ return d -+ } -+ labelNames = append(labelNames, "$"+labelName) -+ labelNameSet[labelName] = struct{}{} -+ } -+ if len(labelNames) != len(labelNameSet) { -+ d.err = errors.New("duplicate label names") -+ return d -+ } -+ -+ xxh := xxhash.New() -+ for _, val := range labelValues { -+ xxh.WriteString(val) -+ xxh.Write(separatorByteSlice) -+ } -+ d.id = xxh.Sum64() -+ // Sort labelNames so that order doesn't matter for the hash. -+ sort.Strings(labelNames) -+ // Now hash together (in this order) the help string and the sorted -+ // label names. -+ xxh.Reset() -+ xxh.WriteString(help) -+ xxh.Write(separatorByteSlice) -+ for _, labelName := range labelNames { -+ xxh.WriteString(labelName) -+ xxh.Write(separatorByteSlice) -+ } -+ d.dimHash = xxh.Sum64() -+ -+ d.constLabelPairs = make([]*dto.LabelPair, 0, len(constLabels)) -+ for n, v := range constLabels { -+ d.constLabelPairs = append(d.constLabelPairs, &dto.LabelPair{ -+ Name: proto.String(n), -+ Value: proto.String(v), -+ }) -+ } -+ sort.Sort(internal.LabelPairSorter(d.constLabelPairs)) -+ return d -+} -+ -+// NewInvalidDesc returns an invalid descriptor, i.e. a descriptor with the -+// provided error set. If a collector returning such a descriptor is registered, -+// registration will fail with the provided error. NewInvalidDesc can be used by -+// a Collector to signal inability to describe itself. -+func NewInvalidDesc(err error) *Desc { -+ return &Desc{ -+ err: err, -+ } -+} -+ -+func (d *Desc) String() string { -+ lpStrings := make([]string, 0, len(d.constLabelPairs)) -+ for _, lp := range d.constLabelPairs { -+ lpStrings = append( -+ lpStrings, -+ fmt.Sprintf("%s=%q", lp.GetName(), lp.GetValue()), -+ ) -+ } -+ return fmt.Sprintf( -+ "Desc{fqName: %q, help: %q, constLabels: {%s}, variableLabels: %v}", -+ d.fqName, -+ d.help, -+ strings.Join(lpStrings, ","), -+ d.variableLabels, -+ ) -+} -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/doc.go b/vendor/github.com/prometheus/client_golang/prometheus/doc.go -new file mode 100755 -index 0000000..811072c ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/doc.go -@@ -0,0 +1,210 @@ -+// Copyright 2014 The Prometheus 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 prometheus is the core instrumentation package. It provides metrics -+// primitives to instrument code for monitoring. It also offers a registry for -+// metrics. Sub-packages allow to expose the registered metrics via HTTP -+// (package promhttp) or push them to a Pushgateway (package push). There is -+// also a sub-package promauto, which provides metrics constructors with -+// automatic registration. -+// -+// All exported functions and methods are safe to be used concurrently unless -+// specified otherwise. -+// -+// # A Basic Example -+// -+// As a starting point, a very basic usage example: -+// -+// package main -+// -+// import ( -+// "log" -+// "net/http" -+// -+// "github.com/prometheus/client_golang/prometheus" -+// "github.com/prometheus/client_golang/prometheus/promhttp" -+// ) -+// -+// type metrics struct { -+// cpuTemp prometheus.Gauge -+// hdFailures *prometheus.CounterVec -+// } -+// -+// func NewMetrics(reg prometheus.Registerer) *metrics { -+// m := &metrics{ -+// cpuTemp: prometheus.NewGauge(prometheus.GaugeOpts{ -+// Name: "cpu_temperature_celsius", -+// Help: "Current temperature of the CPU.", -+// }), -+// hdFailures: prometheus.NewCounterVec( -+// prometheus.CounterOpts{ -+// Name: "hd_errors_total", -+// Help: "Number of hard-disk errors.", -+// }, -+// []string{"device"}, -+// ), -+// } -+// reg.MustRegister(m.cpuTemp) -+// reg.MustRegister(m.hdFailures) -+// return m -+// } -+// -+// func main() { -+// // Create a non-global registry. -+// reg := prometheus.NewRegistry() -+// -+// // Create new metrics and register them using the custom registry. -+// m := NewMetrics(reg) -+// // Set values for the new created metrics. -+// m.cpuTemp.Set(65.3) -+// m.hdFailures.With(prometheus.Labels{"device":"/dev/sda"}).Inc() -+// -+// // Expose metrics and custom registry via an HTTP server -+// // using the HandleFor function. "/metrics" is the usual endpoint for that. -+// http.Handle("/metrics", promhttp.HandlerFor(reg, promhttp.HandlerOpts{Registry: reg})) -+// log.Fatal(http.ListenAndServe(":8080", nil)) -+// } -+// -+// This is a complete program that exports two metrics, a Gauge and a Counter, -+// the latter with a label attached to turn it into a (one-dimensional) vector. -+// It register the metrics using a custom registry and exposes them via an HTTP server -+// on the /metrics endpoint. -+// -+// # Metrics -+// -+// The number of exported identifiers in this package might appear a bit -+// overwhelming. However, in addition to the basic plumbing shown in the example -+// above, you only need to understand the different metric types and their -+// vector versions for basic usage. Furthermore, if you are not concerned with -+// fine-grained control of when and how to register metrics with the registry, -+// have a look at the promauto package, which will effectively allow you to -+// ignore registration altogether in simple cases. -+// -+// Above, you have already touched the Counter and the Gauge. There are two more -+// advanced metric types: the Summary and Histogram. A more thorough description -+// of those four metric types can be found in the Prometheus docs: -+// https://prometheus.io/docs/concepts/metric_types/ -+// -+// In addition to the fundamental metric types Gauge, Counter, Summary, and -+// Histogram, a very important part of the Prometheus data model is the -+// partitioning of samples along dimensions called labels, which results in -+// metric vectors. The fundamental types are GaugeVec, CounterVec, SummaryVec, -+// and HistogramVec. -+// -+// While only the fundamental metric types implement the Metric interface, both -+// the metrics and their vector versions implement the Collector interface. A -+// Collector manages the collection of a number of Metrics, but for convenience, -+// a Metric can also “collect itself”. Note that Gauge, Counter, Summary, and -+// Histogram are interfaces themselves while GaugeVec, CounterVec, SummaryVec, -+// and HistogramVec are not. -+// -+// To create instances of Metrics and their vector versions, you need a suitable -+// …Opts struct, i.e. GaugeOpts, CounterOpts, SummaryOpts, or HistogramOpts. -+// -+// # Custom Collectors and constant Metrics -+// -+// While you could create your own implementations of Metric, most likely you -+// will only ever implement the Collector interface on your own. At a first -+// glance, a custom Collector seems handy to bundle Metrics for common -+// registration (with the prime example of the different metric vectors above, -+// which bundle all the metrics of the same name but with different labels). -+// -+// There is a more involved use case, too: If you already have metrics -+// available, created outside of the Prometheus context, you don't need the -+// interface of the various Metric types. You essentially want to mirror the -+// existing numbers into Prometheus Metrics during collection. An own -+// implementation of the Collector interface is perfect for that. You can create -+// Metric instances “on the fly” using NewConstMetric, NewConstHistogram, and -+// NewConstSummary (and their respective Must… versions). NewConstMetric is used -+// for all metric types with just a float64 as their value: Counter, Gauge, and -+// a special “type” called Untyped. Use the latter if you are not sure if the -+// mirrored metric is a Counter or a Gauge. Creation of the Metric instance -+// happens in the Collect method. The Describe method has to return separate -+// Desc instances, representative of the “throw-away” metrics to be created -+// later. NewDesc comes in handy to create those Desc instances. Alternatively, -+// you could return no Desc at all, which will mark the Collector “unchecked”. -+// No checks are performed at registration time, but metric consistency will -+// still be ensured at scrape time, i.e. any inconsistencies will lead to scrape -+// errors. Thus, with unchecked Collectors, the responsibility to not collect -+// metrics that lead to inconsistencies in the total scrape result lies with the -+// implementer of the Collector. While this is not a desirable state, it is -+// sometimes necessary. The typical use case is a situation where the exact -+// metrics to be returned by a Collector cannot be predicted at registration -+// time, but the implementer has sufficient knowledge of the whole system to -+// guarantee metric consistency. -+// -+// The Collector example illustrates the use case. You can also look at the -+// source code of the processCollector (mirroring process metrics), the -+// goCollector (mirroring Go metrics), or the expvarCollector (mirroring expvar -+// metrics) as examples that are used in this package itself. -+// -+// If you just need to call a function to get a single float value to collect as -+// a metric, GaugeFunc, CounterFunc, or UntypedFunc might be interesting -+// shortcuts. -+// -+// # Advanced Uses of the Registry -+// -+// While MustRegister is the by far most common way of registering a Collector, -+// sometimes you might want to handle the errors the registration might cause. -+// As suggested by the name, MustRegister panics if an error occurs. With the -+// Register function, the error is returned and can be handled. -+// -+// An error is returned if the registered Collector is incompatible or -+// inconsistent with already registered metrics. The registry aims for -+// consistency of the collected metrics according to the Prometheus data model. -+// Inconsistencies are ideally detected at registration time, not at collect -+// time. The former will usually be detected at start-up time of a program, -+// while the latter will only happen at scrape time, possibly not even on the -+// first scrape if the inconsistency only becomes relevant later. That is the -+// main reason why a Collector and a Metric have to describe themselves to the -+// registry. -+// -+// So far, everything we did operated on the so-called default registry, as it -+// can be found in the global DefaultRegisterer variable. With NewRegistry, you -+// can create a custom registry, or you can even implement the Registerer or -+// Gatherer interfaces yourself. The methods Register and Unregister work in the -+// same way on a custom registry as the global functions Register and Unregister -+// on the default registry. -+// -+// There are a number of uses for custom registries: You can use registries with -+// special properties, see NewPedanticRegistry. You can avoid global state, as -+// it is imposed by the DefaultRegisterer. You can use multiple registries at -+// the same time to expose different metrics in different ways. You can use -+// separate registries for testing purposes. -+// -+// Also note that the DefaultRegisterer comes registered with a Collector for Go -+// runtime metrics (via NewGoCollector) and a Collector for process metrics (via -+// NewProcessCollector). With a custom registry, you are in control and decide -+// yourself about the Collectors to register. -+// -+// # HTTP Exposition -+// -+// The Registry implements the Gatherer interface. The caller of the Gather -+// method can then expose the gathered metrics in some way. Usually, the metrics -+// are served via HTTP on the /metrics endpoint. That's happening in the example -+// above. The tools to expose metrics via HTTP are in the promhttp sub-package. -+// -+// # Pushing to the Pushgateway -+// -+// Function for pushing to the Pushgateway can be found in the push sub-package. -+// -+// # Graphite Bridge -+// -+// Functions and examples to push metrics from a Gatherer to Graphite can be -+// found in the graphite sub-package. -+// -+// # Other Means of Exposition -+// -+// More ways of exposing metrics can easily be added by following the approaches -+// of the existing implementations. -+package prometheus -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/expvar_collector.go b/vendor/github.com/prometheus/client_golang/prometheus/expvar_collector.go -new file mode 100755 -index 0000000..c41ab37 ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/expvar_collector.go -@@ -0,0 +1,86 @@ -+// Copyright 2014 The Prometheus 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 prometheus -+ -+import ( -+ "encoding/json" -+ "expvar" -+) -+ -+type expvarCollector struct { -+ exports map[string]*Desc -+} -+ -+// NewExpvarCollector is the obsolete version of collectors.NewExpvarCollector. -+// See there for documentation. -+// -+// Deprecated: Use collectors.NewExpvarCollector instead. -+func NewExpvarCollector(exports map[string]*Desc) Collector { -+ return &expvarCollector{ -+ exports: exports, -+ } -+} -+ -+// Describe implements Collector. -+func (e *expvarCollector) Describe(ch chan<- *Desc) { -+ for _, desc := range e.exports { -+ ch <- desc -+ } -+} -+ -+// Collect implements Collector. -+func (e *expvarCollector) Collect(ch chan<- Metric) { -+ for name, desc := range e.exports { -+ var m Metric -+ expVar := expvar.Get(name) -+ if expVar == nil { -+ continue -+ } -+ var v interface{} -+ labels := make([]string, len(desc.variableLabels)) -+ if err := json.Unmarshal([]byte(expVar.String()), &v); err != nil { -+ ch <- NewInvalidMetric(desc, err) -+ continue -+ } -+ var processValue func(v interface{}, i int) -+ processValue = func(v interface{}, i int) { -+ if i >= len(labels) { -+ copiedLabels := append(make([]string, 0, len(labels)), labels...) -+ switch v := v.(type) { -+ case float64: -+ m = MustNewConstMetric(desc, UntypedValue, v, copiedLabels...) -+ case bool: -+ if v { -+ m = MustNewConstMetric(desc, UntypedValue, 1, copiedLabels...) -+ } else { -+ m = MustNewConstMetric(desc, UntypedValue, 0, copiedLabels...) -+ } -+ default: -+ return -+ } -+ ch <- m -+ return -+ } -+ vm, ok := v.(map[string]interface{}) -+ if !ok { -+ return -+ } -+ for lv, val := range vm { -+ labels[i] = lv -+ processValue(val, i+1) -+ } -+ } -+ processValue(v, 0) -+ } -+} -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/fnv.go b/vendor/github.com/prometheus/client_golang/prometheus/fnv.go -new file mode 100755 -index 0000000..3d383a7 ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/fnv.go -@@ -0,0 +1,42 @@ -+// Copyright 2018 The Prometheus 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 prometheus -+ -+// Inline and byte-free variant of hash/fnv's fnv64a. -+ -+const ( -+ offset64 = 14695981039346656037 -+ prime64 = 1099511628211 -+) -+ -+// hashNew initializies a new fnv64a hash value. -+func hashNew() uint64 { -+ return offset64 -+} -+ -+// hashAdd adds a string to a fnv64a hash value, returning the updated hash. -+func hashAdd(h uint64, s string) uint64 { -+ for i := 0; i < len(s); i++ { -+ h ^= uint64(s[i]) -+ h *= prime64 -+ } -+ return h -+} -+ -+// hashAddByte adds a byte to a fnv64a hash value, returning the updated hash. -+func hashAddByte(h uint64, b byte) uint64 { -+ h ^= uint64(b) -+ h *= prime64 -+ return h -+} -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/gauge.go b/vendor/github.com/prometheus/client_golang/prometheus/gauge.go -new file mode 100755 -index 0000000..21271a5 ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/gauge.go -@@ -0,0 +1,291 @@ -+// Copyright 2014 The Prometheus 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 prometheus -+ -+import ( -+ "math" -+ "sync/atomic" -+ "time" -+ -+ dto "github.com/prometheus/client_model/go" -+) -+ -+// Gauge is a Metric that represents a single numerical value that can -+// arbitrarily go up and down. -+// -+// A Gauge is typically used for measured values like temperatures or current -+// memory usage, but also "counts" that can go up and down, like the number of -+// running goroutines. -+// -+// To create Gauge instances, use NewGauge. -+type Gauge interface { -+ Metric -+ Collector -+ -+ // Set sets the Gauge to an arbitrary value. -+ Set(float64) -+ // Inc increments the Gauge by 1. Use Add to increment it by arbitrary -+ // values. -+ Inc() -+ // Dec decrements the Gauge by 1. Use Sub to decrement it by arbitrary -+ // values. -+ Dec() -+ // Add adds the given value to the Gauge. (The value can be negative, -+ // resulting in a decrease of the Gauge.) -+ Add(float64) -+ // Sub subtracts the given value from the Gauge. (The value can be -+ // negative, resulting in an increase of the Gauge.) -+ Sub(float64) -+ -+ // SetToCurrentTime sets the Gauge to the current Unix time in seconds. -+ SetToCurrentTime() -+} -+ -+// GaugeOpts is an alias for Opts. See there for doc comments. -+type GaugeOpts Opts -+ -+// NewGauge creates a new Gauge based on the provided GaugeOpts. -+// -+// The returned implementation is optimized for a fast Set method. If you have a -+// choice for managing the value of a Gauge via Set vs. Inc/Dec/Add/Sub, pick -+// the former. For example, the Inc method of the returned Gauge is slower than -+// the Inc method of a Counter returned by NewCounter. This matches the typical -+// scenarios for Gauges and Counters, where the former tends to be Set-heavy and -+// the latter Inc-heavy. -+func NewGauge(opts GaugeOpts) Gauge { -+ desc := NewDesc( -+ BuildFQName(opts.Namespace, opts.Subsystem, opts.Name), -+ opts.Help, -+ nil, -+ opts.ConstLabels, -+ ) -+ result := &gauge{desc: desc, labelPairs: desc.constLabelPairs} -+ result.init(result) // Init self-collection. -+ return result -+} -+ -+type gauge struct { -+ // valBits contains the bits of the represented float64 value. It has -+ // to go first in the struct to guarantee alignment for atomic -+ // operations. http://golang.org/pkg/sync/atomic/#pkg-note-BUG -+ valBits uint64 -+ -+ selfCollector -+ -+ desc *Desc -+ labelPairs []*dto.LabelPair -+} -+ -+func (g *gauge) Desc() *Desc { -+ return g.desc -+} -+ -+func (g *gauge) Set(val float64) { -+ atomic.StoreUint64(&g.valBits, math.Float64bits(val)) -+} -+ -+func (g *gauge) SetToCurrentTime() { -+ g.Set(float64(time.Now().UnixNano()) / 1e9) -+} -+ -+func (g *gauge) Inc() { -+ g.Add(1) -+} -+ -+func (g *gauge) Dec() { -+ g.Add(-1) -+} -+ -+func (g *gauge) Add(val float64) { -+ for { -+ oldBits := atomic.LoadUint64(&g.valBits) -+ newBits := math.Float64bits(math.Float64frombits(oldBits) + val) -+ if atomic.CompareAndSwapUint64(&g.valBits, oldBits, newBits) { -+ return -+ } -+ } -+} -+ -+func (g *gauge) Sub(val float64) { -+ g.Add(val * -1) -+} -+ -+func (g *gauge) Write(out *dto.Metric) error { -+ val := math.Float64frombits(atomic.LoadUint64(&g.valBits)) -+ return populateMetric(GaugeValue, val, g.labelPairs, nil, out) -+} -+ -+// GaugeVec is a Collector that bundles a set of Gauges that all share the same -+// Desc, but have different values for their variable labels. This is used if -+// you want to count the same thing partitioned by various dimensions -+// (e.g. number of operations queued, partitioned by user and operation -+// type). Create instances with NewGaugeVec. -+type GaugeVec struct { -+ *MetricVec -+} -+ -+// NewGaugeVec creates a new GaugeVec based on the provided GaugeOpts and -+// partitioned by the given label names. -+func NewGaugeVec(opts GaugeOpts, labelNames []string) *GaugeVec { -+ desc := NewDesc( -+ BuildFQName(opts.Namespace, opts.Subsystem, opts.Name), -+ opts.Help, -+ labelNames, -+ opts.ConstLabels, -+ ) -+ return &GaugeVec{ -+ MetricVec: NewMetricVec(desc, func(lvs ...string) Metric { -+ if len(lvs) != len(desc.variableLabels) { -+ panic(makeInconsistentCardinalityError(desc.fqName, desc.variableLabels, lvs)) -+ } -+ result := &gauge{desc: desc, labelPairs: MakeLabelPairs(desc, lvs)} -+ result.init(result) // Init self-collection. -+ return result -+ }), -+ } -+} -+ -+// GetMetricWithLabelValues returns the Gauge for the given slice of label -+// values (same order as the variable labels in Desc). If that combination of -+// label values is accessed for the first time, a new Gauge is created. -+// -+// It is possible to call this method without using the returned Gauge to only -+// create the new Gauge but leave it at its starting value 0. See also the -+// SummaryVec example. -+// -+// Keeping the Gauge for later use is possible (and should be considered if -+// performance is critical), but keep in mind that Reset, DeleteLabelValues and -+// Delete can be used to delete the Gauge from the GaugeVec. In that case, the -+// Gauge will still exist, but it will not be exported anymore, even if a -+// Gauge with the same label values is created later. See also the CounterVec -+// example. -+// -+// An error is returned if the number of label values is not the same as the -+// number of variable labels in Desc (minus any curried labels). -+// -+// Note that for more than one label value, this method is prone to mistakes -+// caused by an incorrect order of arguments. Consider GetMetricWith(Labels) as -+// an alternative to avoid that type of mistake. For higher label numbers, the -+// latter has a much more readable (albeit more verbose) syntax, but it comes -+// with a performance overhead (for creating and processing the Labels map). -+func (v *GaugeVec) GetMetricWithLabelValues(lvs ...string) (Gauge, error) { -+ metric, err := v.MetricVec.GetMetricWithLabelValues(lvs...) -+ if metric != nil { -+ return metric.(Gauge), err -+ } -+ return nil, err -+} -+ -+// GetMetricWith returns the Gauge for the given Labels map (the label names -+// must match those of the variable labels in Desc). If that label map is -+// accessed for the first time, a new Gauge is created. Implications of -+// creating a Gauge without using it and keeping the Gauge for later use are -+// the same as for GetMetricWithLabelValues. -+// -+// An error is returned if the number and names of the Labels are inconsistent -+// with those of the variable labels in Desc (minus any curried labels). -+// -+// This method is used for the same purpose as -+// GetMetricWithLabelValues(...string). See there for pros and cons of the two -+// methods. -+func (v *GaugeVec) GetMetricWith(labels Labels) (Gauge, error) { -+ metric, err := v.MetricVec.GetMetricWith(labels) -+ if metric != nil { -+ return metric.(Gauge), err -+ } -+ return nil, err -+} -+ -+// WithLabelValues works as GetMetricWithLabelValues, but panics where -+// GetMetricWithLabelValues would have returned an error. Not returning an -+// error allows shortcuts like -+// -+// myVec.WithLabelValues("404", "GET").Add(42) -+func (v *GaugeVec) WithLabelValues(lvs ...string) Gauge { -+ g, err := v.GetMetricWithLabelValues(lvs...) -+ if err != nil { -+ panic(err) -+ } -+ return g -+} -+ -+// With works as GetMetricWith, but panics where GetMetricWithLabels would have -+// returned an error. Not returning an error allows shortcuts like -+// -+// myVec.With(prometheus.Labels{"code": "404", "method": "GET"}).Add(42) -+func (v *GaugeVec) With(labels Labels) Gauge { -+ g, err := v.GetMetricWith(labels) -+ if err != nil { -+ panic(err) -+ } -+ return g -+} -+ -+// CurryWith returns a vector curried with the provided labels, i.e. the -+// returned vector has those labels pre-set for all labeled operations performed -+// on it. The cardinality of the curried vector is reduced accordingly. The -+// order of the remaining labels stays the same (just with the curried labels -+// taken out of the sequence – which is relevant for the -+// (GetMetric)WithLabelValues methods). It is possible to curry a curried -+// vector, but only with labels not yet used for currying before. -+// -+// The metrics contained in the GaugeVec are shared between the curried and -+// uncurried vectors. They are just accessed differently. Curried and uncurried -+// vectors behave identically in terms of collection. Only one must be -+// registered with a given registry (usually the uncurried version). The Reset -+// method deletes all metrics, even if called on a curried vector. -+func (v *GaugeVec) CurryWith(labels Labels) (*GaugeVec, error) { -+ vec, err := v.MetricVec.CurryWith(labels) -+ if vec != nil { -+ return &GaugeVec{vec}, err -+ } -+ return nil, err -+} -+ -+// MustCurryWith works as CurryWith but panics where CurryWith would have -+// returned an error. -+func (v *GaugeVec) MustCurryWith(labels Labels) *GaugeVec { -+ vec, err := v.CurryWith(labels) -+ if err != nil { -+ panic(err) -+ } -+ return vec -+} -+ -+// GaugeFunc is a Gauge whose value is determined at collect time by calling a -+// provided function. -+// -+// To create GaugeFunc instances, use NewGaugeFunc. -+type GaugeFunc interface { -+ Metric -+ Collector -+} -+ -+// NewGaugeFunc creates a new GaugeFunc based on the provided GaugeOpts. The -+// value reported is determined by calling the given function from within the -+// Write method. Take into account that metric collection may happen -+// concurrently. Therefore, it must be safe to call the provided function -+// concurrently. -+// -+// NewGaugeFunc is a good way to create an “info” style metric with a constant -+// value of 1. Example: -+// https://github.com/prometheus/common/blob/8558a5b7db3c84fa38b4766966059a7bd5bfa2ee/version/info.go#L36-L56 -+func NewGaugeFunc(opts GaugeOpts, function func() float64) GaugeFunc { -+ return newValueFunc(NewDesc( -+ BuildFQName(opts.Namespace, opts.Subsystem, opts.Name), -+ opts.Help, -+ nil, -+ opts.ConstLabels, -+ ), GaugeValue, function) -+} -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/get_pid.go b/vendor/github.com/prometheus/client_golang/prometheus/get_pid.go -new file mode 100755 -index 0000000..614fd61 ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/get_pid.go -@@ -0,0 +1,26 @@ -+// Copyright 2015 The Prometheus 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:build !js || wasm -+// +build !js wasm -+ -+package prometheus -+ -+import "os" -+ -+func getPIDFn() func() (int, error) { -+ pid := os.Getpid() -+ return func() (int, error) { -+ return pid, nil -+ } -+} -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/get_pid_gopherjs.go b/vendor/github.com/prometheus/client_golang/prometheus/get_pid_gopherjs.go -new file mode 100755 -index 0000000..eaf8059 ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/get_pid_gopherjs.go -@@ -0,0 +1,23 @@ -+// Copyright 2015 The Prometheus 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:build js && !wasm -+// +build js,!wasm -+ -+package prometheus -+ -+func getPIDFn() func() (int, error) { -+ return func() (int, error) { -+ return 1, nil -+ } -+} -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/go_collector.go b/vendor/github.com/prometheus/client_golang/prometheus/go_collector.go -new file mode 100755 -index 0000000..ad9a71a ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/go_collector.go -@@ -0,0 +1,281 @@ -+// Copyright 2018 The Prometheus 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 prometheus -+ -+import ( -+ "runtime" -+ "runtime/debug" -+ "time" -+) -+ -+// goRuntimeMemStats provides the metrics initially provided by runtime.ReadMemStats. -+// From Go 1.17 those similar (and better) statistics are provided by runtime/metrics, so -+// while eval closure works on runtime.MemStats, the struct from Go 1.17+ is -+// populated using runtime/metrics. -+func goRuntimeMemStats() memStatsMetrics { -+ return memStatsMetrics{ -+ { -+ desc: NewDesc( -+ memstatNamespace("alloc_bytes"), -+ "Number of bytes allocated and still in use.", -+ nil, nil, -+ ), -+ eval: func(ms *runtime.MemStats) float64 { return float64(ms.Alloc) }, -+ valType: GaugeValue, -+ }, { -+ desc: NewDesc( -+ memstatNamespace("alloc_bytes_total"), -+ "Total number of bytes allocated, even if freed.", -+ nil, nil, -+ ), -+ eval: func(ms *runtime.MemStats) float64 { return float64(ms.TotalAlloc) }, -+ valType: CounterValue, -+ }, { -+ desc: NewDesc( -+ memstatNamespace("sys_bytes"), -+ "Number of bytes obtained from system.", -+ nil, nil, -+ ), -+ eval: func(ms *runtime.MemStats) float64 { return float64(ms.Sys) }, -+ valType: GaugeValue, -+ }, { -+ desc: NewDesc( -+ memstatNamespace("lookups_total"), -+ "Total number of pointer lookups.", -+ nil, nil, -+ ), -+ eval: func(ms *runtime.MemStats) float64 { return float64(ms.Lookups) }, -+ valType: CounterValue, -+ }, { -+ desc: NewDesc( -+ memstatNamespace("mallocs_total"), -+ "Total number of mallocs.", -+ nil, nil, -+ ), -+ eval: func(ms *runtime.MemStats) float64 { return float64(ms.Mallocs) }, -+ valType: CounterValue, -+ }, { -+ desc: NewDesc( -+ memstatNamespace("frees_total"), -+ "Total number of frees.", -+ nil, nil, -+ ), -+ eval: func(ms *runtime.MemStats) float64 { return float64(ms.Frees) }, -+ valType: CounterValue, -+ }, { -+ desc: NewDesc( -+ memstatNamespace("heap_alloc_bytes"), -+ "Number of heap bytes allocated and still in use.", -+ nil, nil, -+ ), -+ eval: func(ms *runtime.MemStats) float64 { return float64(ms.HeapAlloc) }, -+ valType: GaugeValue, -+ }, { -+ desc: NewDesc( -+ memstatNamespace("heap_sys_bytes"), -+ "Number of heap bytes obtained from system.", -+ nil, nil, -+ ), -+ eval: func(ms *runtime.MemStats) float64 { return float64(ms.HeapSys) }, -+ valType: GaugeValue, -+ }, { -+ desc: NewDesc( -+ memstatNamespace("heap_idle_bytes"), -+ "Number of heap bytes waiting to be used.", -+ nil, nil, -+ ), -+ eval: func(ms *runtime.MemStats) float64 { return float64(ms.HeapIdle) }, -+ valType: GaugeValue, -+ }, { -+ desc: NewDesc( -+ memstatNamespace("heap_inuse_bytes"), -+ "Number of heap bytes that are in use.", -+ nil, nil, -+ ), -+ eval: func(ms *runtime.MemStats) float64 { return float64(ms.HeapInuse) }, -+ valType: GaugeValue, -+ }, { -+ desc: NewDesc( -+ memstatNamespace("heap_released_bytes"), -+ "Number of heap bytes released to OS.", -+ nil, nil, -+ ), -+ eval: func(ms *runtime.MemStats) float64 { return float64(ms.HeapReleased) }, -+ valType: GaugeValue, -+ }, { -+ desc: NewDesc( -+ memstatNamespace("heap_objects"), -+ "Number of allocated objects.", -+ nil, nil, -+ ), -+ eval: func(ms *runtime.MemStats) float64 { return float64(ms.HeapObjects) }, -+ valType: GaugeValue, -+ }, { -+ desc: NewDesc( -+ memstatNamespace("stack_inuse_bytes"), -+ "Number of bytes in use by the stack allocator.", -+ nil, nil, -+ ), -+ eval: func(ms *runtime.MemStats) float64 { return float64(ms.StackInuse) }, -+ valType: GaugeValue, -+ }, { -+ desc: NewDesc( -+ memstatNamespace("stack_sys_bytes"), -+ "Number of bytes obtained from system for stack allocator.", -+ nil, nil, -+ ), -+ eval: func(ms *runtime.MemStats) float64 { return float64(ms.StackSys) }, -+ valType: GaugeValue, -+ }, { -+ desc: NewDesc( -+ memstatNamespace("mspan_inuse_bytes"), -+ "Number of bytes in use by mspan structures.", -+ nil, nil, -+ ), -+ eval: func(ms *runtime.MemStats) float64 { return float64(ms.MSpanInuse) }, -+ valType: GaugeValue, -+ }, { -+ desc: NewDesc( -+ memstatNamespace("mspan_sys_bytes"), -+ "Number of bytes used for mspan structures obtained from system.", -+ nil, nil, -+ ), -+ eval: func(ms *runtime.MemStats) float64 { return float64(ms.MSpanSys) }, -+ valType: GaugeValue, -+ }, { -+ desc: NewDesc( -+ memstatNamespace("mcache_inuse_bytes"), -+ "Number of bytes in use by mcache structures.", -+ nil, nil, -+ ), -+ eval: func(ms *runtime.MemStats) float64 { return float64(ms.MCacheInuse) }, -+ valType: GaugeValue, -+ }, { -+ desc: NewDesc( -+ memstatNamespace("mcache_sys_bytes"), -+ "Number of bytes used for mcache structures obtained from system.", -+ nil, nil, -+ ), -+ eval: func(ms *runtime.MemStats) float64 { return float64(ms.MCacheSys) }, -+ valType: GaugeValue, -+ }, { -+ desc: NewDesc( -+ memstatNamespace("buck_hash_sys_bytes"), -+ "Number of bytes used by the profiling bucket hash table.", -+ nil, nil, -+ ), -+ eval: func(ms *runtime.MemStats) float64 { return float64(ms.BuckHashSys) }, -+ valType: GaugeValue, -+ }, { -+ desc: NewDesc( -+ memstatNamespace("gc_sys_bytes"), -+ "Number of bytes used for garbage collection system metadata.", -+ nil, nil, -+ ), -+ eval: func(ms *runtime.MemStats) float64 { return float64(ms.GCSys) }, -+ valType: GaugeValue, -+ }, { -+ desc: NewDesc( -+ memstatNamespace("other_sys_bytes"), -+ "Number of bytes used for other system allocations.", -+ nil, nil, -+ ), -+ eval: func(ms *runtime.MemStats) float64 { return float64(ms.OtherSys) }, -+ valType: GaugeValue, -+ }, { -+ desc: NewDesc( -+ memstatNamespace("next_gc_bytes"), -+ "Number of heap bytes when next garbage collection will take place.", -+ nil, nil, -+ ), -+ eval: func(ms *runtime.MemStats) float64 { return float64(ms.NextGC) }, -+ valType: GaugeValue, -+ }, -+ } -+} -+ -+type baseGoCollector struct { -+ goroutinesDesc *Desc -+ threadsDesc *Desc -+ gcDesc *Desc -+ gcLastTimeDesc *Desc -+ goInfoDesc *Desc -+} -+ -+func newBaseGoCollector() baseGoCollector { -+ return baseGoCollector{ -+ goroutinesDesc: NewDesc( -+ "go_goroutines", -+ "Number of goroutines that currently exist.", -+ nil, nil), -+ threadsDesc: NewDesc( -+ "go_threads", -+ "Number of OS threads created.", -+ nil, nil), -+ gcDesc: NewDesc( -+ "go_gc_duration_seconds", -+ "A summary of the pause duration of garbage collection cycles.", -+ nil, nil), -+ gcLastTimeDesc: NewDesc( -+ "go_memstats_last_gc_time_seconds", -+ "Number of seconds since 1970 of last garbage collection.", -+ nil, nil), -+ goInfoDesc: NewDesc( -+ "go_info", -+ "Information about the Go environment.", -+ nil, Labels{"version": runtime.Version()}), -+ } -+} -+ -+// Describe returns all descriptions of the collector. -+func (c *baseGoCollector) Describe(ch chan<- *Desc) { -+ ch <- c.goroutinesDesc -+ ch <- c.threadsDesc -+ ch <- c.gcDesc -+ ch <- c.gcLastTimeDesc -+ ch <- c.goInfoDesc -+} -+ -+// Collect returns the current state of all metrics of the collector. -+func (c *baseGoCollector) Collect(ch chan<- Metric) { -+ ch <- MustNewConstMetric(c.goroutinesDesc, GaugeValue, float64(runtime.NumGoroutine())) -+ -+ n := getRuntimeNumThreads() -+ ch <- MustNewConstMetric(c.threadsDesc, GaugeValue, n) -+ -+ var stats debug.GCStats -+ stats.PauseQuantiles = make([]time.Duration, 5) -+ debug.ReadGCStats(&stats) -+ -+ quantiles := make(map[float64]float64) -+ for idx, pq := range stats.PauseQuantiles[1:] { -+ quantiles[float64(idx+1)/float64(len(stats.PauseQuantiles)-1)] = pq.Seconds() -+ } -+ quantiles[0.0] = stats.PauseQuantiles[0].Seconds() -+ ch <- MustNewConstSummary(c.gcDesc, uint64(stats.NumGC), stats.PauseTotal.Seconds(), quantiles) -+ ch <- MustNewConstMetric(c.gcLastTimeDesc, GaugeValue, float64(stats.LastGC.UnixNano())/1e9) -+ ch <- MustNewConstMetric(c.goInfoDesc, GaugeValue, 1) -+} -+ -+func memstatNamespace(s string) string { -+ return "go_memstats_" + s -+} -+ -+// memStatsMetrics provide description, evaluator, runtime/metrics name, and -+// value type for memstat metrics. -+type memStatsMetrics []struct { -+ desc *Desc -+ eval func(*runtime.MemStats) float64 -+ valType ValueType -+} -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/go_collector_go116.go b/vendor/github.com/prometheus/client_golang/prometheus/go_collector_go116.go -new file mode 100755 -index 0000000..897a6e9 ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/go_collector_go116.go -@@ -0,0 +1,122 @@ -+// Copyright 2021 The Prometheus 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:build !go1.17 -+// +build !go1.17 -+ -+package prometheus -+ -+import ( -+ "runtime" -+ "sync" -+ "time" -+) -+ -+type goCollector struct { -+ base baseGoCollector -+ -+ // ms... are memstats related. -+ msLast *runtime.MemStats // Previously collected memstats. -+ msLastTimestamp time.Time -+ msMtx sync.Mutex // Protects msLast and msLastTimestamp. -+ msMetrics memStatsMetrics -+ msRead func(*runtime.MemStats) // For mocking in tests. -+ msMaxWait time.Duration // Wait time for fresh memstats. -+ msMaxAge time.Duration // Maximum allowed age of old memstats. -+} -+ -+// NewGoCollector is the obsolete version of collectors.NewGoCollector. -+// See there for documentation. -+// -+// Deprecated: Use collectors.NewGoCollector instead. -+func NewGoCollector() Collector { -+ msMetrics := goRuntimeMemStats() -+ msMetrics = append(msMetrics, struct { -+ desc *Desc -+ eval func(*runtime.MemStats) float64 -+ valType ValueType -+ }{ -+ // This metric is omitted in Go1.17+, see https://github.com/prometheus/client_golang/issues/842#issuecomment-861812034 -+ desc: NewDesc( -+ memstatNamespace("gc_cpu_fraction"), -+ "The fraction of this program's available CPU time used by the GC since the program started.", -+ nil, nil, -+ ), -+ eval: func(ms *runtime.MemStats) float64 { return ms.GCCPUFraction }, -+ valType: GaugeValue, -+ }) -+ return &goCollector{ -+ base: newBaseGoCollector(), -+ msLast: &runtime.MemStats{}, -+ msRead: runtime.ReadMemStats, -+ msMaxWait: time.Second, -+ msMaxAge: 5 * time.Minute, -+ msMetrics: msMetrics, -+ } -+} -+ -+// Describe returns all descriptions of the collector. -+func (c *goCollector) Describe(ch chan<- *Desc) { -+ c.base.Describe(ch) -+ for _, i := range c.msMetrics { -+ ch <- i.desc -+ } -+} -+ -+// Collect returns the current state of all metrics of the collector. -+func (c *goCollector) Collect(ch chan<- Metric) { -+ var ( -+ ms = &runtime.MemStats{} -+ done = make(chan struct{}) -+ ) -+ // Start reading memstats first as it might take a while. -+ go func() { -+ c.msRead(ms) -+ c.msMtx.Lock() -+ c.msLast = ms -+ c.msLastTimestamp = time.Now() -+ c.msMtx.Unlock() -+ close(done) -+ }() -+ -+ // Collect base non-memory metrics. -+ c.base.Collect(ch) -+ -+ timer := time.NewTimer(c.msMaxWait) -+ select { -+ case <-done: // Our own ReadMemStats succeeded in time. Use it. -+ timer.Stop() // Important for high collection frequencies to not pile up timers. -+ c.msCollect(ch, ms) -+ return -+ case <-timer.C: // Time out, use last memstats if possible. Continue below. -+ } -+ c.msMtx.Lock() -+ if time.Since(c.msLastTimestamp) < c.msMaxAge { -+ // Last memstats are recent enough. Collect from them under the lock. -+ c.msCollect(ch, c.msLast) -+ c.msMtx.Unlock() -+ return -+ } -+ // If we are here, the last memstats are too old or don't exist. We have -+ // to wait until our own ReadMemStats finally completes. For that to -+ // happen, we have to release the lock. -+ c.msMtx.Unlock() -+ <-done -+ c.msCollect(ch, ms) -+} -+ -+func (c *goCollector) msCollect(ch chan<- Metric, ms *runtime.MemStats) { -+ for _, i := range c.msMetrics { -+ ch <- MustNewConstMetric(i.desc, i.valType, i.eval(ms)) -+ } -+} -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/go_collector_latest.go b/vendor/github.com/prometheus/client_golang/prometheus/go_collector_latest.go -new file mode 100755 -index 0000000..3a2d55e ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/go_collector_latest.go -@@ -0,0 +1,568 @@ -+// Copyright 2021 The Prometheus 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:build go1.17 -+// +build go1.17 -+ -+package prometheus -+ -+import ( -+ "math" -+ "runtime" -+ "runtime/metrics" -+ "strings" -+ "sync" -+ -+ //nolint:staticcheck // Ignore SA1019. Need to keep deprecated package for compatibility. -+ "github.com/golang/protobuf/proto" -+ dto "github.com/prometheus/client_model/go" -+ -+ "github.com/prometheus/client_golang/prometheus/internal" -+) -+ -+const ( -+ // constants for strings referenced more than once. -+ goGCHeapTinyAllocsObjects = "/gc/heap/tiny/allocs:objects" -+ goGCHeapAllocsObjects = "/gc/heap/allocs:objects" -+ goGCHeapFreesObjects = "/gc/heap/frees:objects" -+ goGCHeapFreesBytes = "/gc/heap/frees:bytes" -+ goGCHeapAllocsBytes = "/gc/heap/allocs:bytes" -+ goGCHeapObjects = "/gc/heap/objects:objects" -+ goGCHeapGoalBytes = "/gc/heap/goal:bytes" -+ goMemoryClassesTotalBytes = "/memory/classes/total:bytes" -+ goMemoryClassesHeapObjectsBytes = "/memory/classes/heap/objects:bytes" -+ goMemoryClassesHeapUnusedBytes = "/memory/classes/heap/unused:bytes" -+ goMemoryClassesHeapReleasedBytes = "/memory/classes/heap/released:bytes" -+ goMemoryClassesHeapFreeBytes = "/memory/classes/heap/free:bytes" -+ goMemoryClassesHeapStacksBytes = "/memory/classes/heap/stacks:bytes" -+ goMemoryClassesOSStacksBytes = "/memory/classes/os-stacks:bytes" -+ goMemoryClassesMetadataMSpanInuseBytes = "/memory/classes/metadata/mspan/inuse:bytes" -+ goMemoryClassesMetadataMSPanFreeBytes = "/memory/classes/metadata/mspan/free:bytes" -+ goMemoryClassesMetadataMCacheInuseBytes = "/memory/classes/metadata/mcache/inuse:bytes" -+ goMemoryClassesMetadataMCacheFreeBytes = "/memory/classes/metadata/mcache/free:bytes" -+ goMemoryClassesProfilingBucketsBytes = "/memory/classes/profiling/buckets:bytes" -+ goMemoryClassesMetadataOtherBytes = "/memory/classes/metadata/other:bytes" -+ goMemoryClassesOtherBytes = "/memory/classes/other:bytes" -+) -+ -+// rmNamesForMemStatsMetrics represents runtime/metrics names required to populate goRuntimeMemStats from like logic. -+var rmNamesForMemStatsMetrics = []string{ -+ goGCHeapTinyAllocsObjects, -+ goGCHeapAllocsObjects, -+ goGCHeapFreesObjects, -+ goGCHeapAllocsBytes, -+ goGCHeapObjects, -+ goGCHeapGoalBytes, -+ goMemoryClassesTotalBytes, -+ goMemoryClassesHeapObjectsBytes, -+ goMemoryClassesHeapUnusedBytes, -+ goMemoryClassesHeapReleasedBytes, -+ goMemoryClassesHeapFreeBytes, -+ goMemoryClassesHeapStacksBytes, -+ goMemoryClassesOSStacksBytes, -+ goMemoryClassesMetadataMSpanInuseBytes, -+ goMemoryClassesMetadataMSPanFreeBytes, -+ goMemoryClassesMetadataMCacheInuseBytes, -+ goMemoryClassesMetadataMCacheFreeBytes, -+ goMemoryClassesProfilingBucketsBytes, -+ goMemoryClassesMetadataOtherBytes, -+ goMemoryClassesOtherBytes, -+} -+ -+func bestEffortLookupRM(lookup []string) []metrics.Description { -+ ret := make([]metrics.Description, 0, len(lookup)) -+ for _, rm := range metrics.All() { -+ for _, m := range lookup { -+ if m == rm.Name { -+ ret = append(ret, rm) -+ } -+ } -+ } -+ return ret -+} -+ -+type goCollector struct { -+ base baseGoCollector -+ -+ // mu protects updates to all fields ensuring a consistent -+ // snapshot is always produced by Collect. -+ mu sync.Mutex -+ -+ // Contains all samples that has to retrieved from runtime/metrics (not all of them will be exposed). -+ sampleBuf []metrics.Sample -+ // sampleMap allows lookup for MemStats metrics and runtime/metrics histograms for exact sums. -+ sampleMap map[string]*metrics.Sample -+ -+ // rmExposedMetrics represents all runtime/metrics package metrics -+ // that were configured to be exposed. -+ rmExposedMetrics []collectorMetric -+ rmExactSumMapForHist map[string]string -+ -+ // With Go 1.17, the runtime/metrics package was introduced. -+ // From that point on, metric names produced by the runtime/metrics -+ // package could be generated from runtime/metrics names. However, -+ // these differ from the old names for the same values. -+ // -+ // This field exists to export the same values under the old names -+ // as well. -+ msMetrics memStatsMetrics -+ msMetricsEnabled bool -+} -+ -+type rmMetricDesc struct { -+ metrics.Description -+} -+ -+func matchRuntimeMetricsRules(rules []internal.GoCollectorRule) []rmMetricDesc { -+ var descs []rmMetricDesc -+ for _, d := range metrics.All() { -+ var ( -+ deny = true -+ desc rmMetricDesc -+ ) -+ -+ for _, r := range rules { -+ if !r.Matcher.MatchString(d.Name) { -+ continue -+ } -+ deny = r.Deny -+ } -+ if deny { -+ continue -+ } -+ -+ desc.Description = d -+ descs = append(descs, desc) -+ } -+ return descs -+} -+ -+func defaultGoCollectorOptions() internal.GoCollectorOptions { -+ return internal.GoCollectorOptions{ -+ RuntimeMetricSumForHist: map[string]string{ -+ "/gc/heap/allocs-by-size:bytes": goGCHeapAllocsBytes, -+ "/gc/heap/frees-by-size:bytes": goGCHeapFreesBytes, -+ }, -+ RuntimeMetricRules: []internal.GoCollectorRule{ -+ //{Matcher: regexp.MustCompile("")}, -+ }, -+ } -+} -+ -+// NewGoCollector is the obsolete version of collectors.NewGoCollector. -+// See there for documentation. -+// -+// Deprecated: Use collectors.NewGoCollector instead. -+func NewGoCollector(opts ...func(o *internal.GoCollectorOptions)) Collector { -+ opt := defaultGoCollectorOptions() -+ for _, o := range opts { -+ o(&opt) -+ } -+ -+ exposedDescriptions := matchRuntimeMetricsRules(opt.RuntimeMetricRules) -+ -+ // Collect all histogram samples so that we can get their buckets. -+ // The API guarantees that the buckets are always fixed for the lifetime -+ // of the process. -+ var histograms []metrics.Sample -+ for _, d := range exposedDescriptions { -+ if d.Kind == metrics.KindFloat64Histogram { -+ histograms = append(histograms, metrics.Sample{Name: d.Name}) -+ } -+ } -+ -+ if len(histograms) > 0 { -+ metrics.Read(histograms) -+ } -+ -+ bucketsMap := make(map[string][]float64) -+ for i := range histograms { -+ bucketsMap[histograms[i].Name] = histograms[i].Value.Float64Histogram().Buckets -+ } -+ -+ // Generate a collector for each exposed runtime/metrics metric. -+ metricSet := make([]collectorMetric, 0, len(exposedDescriptions)) -+ // SampleBuf is used for reading from runtime/metrics. -+ // We are assuming the largest case to have stable pointers for sampleMap purposes. -+ sampleBuf := make([]metrics.Sample, 0, len(exposedDescriptions)+len(opt.RuntimeMetricSumForHist)+len(rmNamesForMemStatsMetrics)) -+ sampleMap := make(map[string]*metrics.Sample, len(exposedDescriptions)) -+ for _, d := range exposedDescriptions { -+ namespace, subsystem, name, ok := internal.RuntimeMetricsToProm(&d.Description) -+ if !ok { -+ // Just ignore this metric; we can't do anything with it here. -+ // If a user decides to use the latest version of Go, we don't want -+ // to fail here. This condition is tested in TestExpectedRuntimeMetrics. -+ continue -+ } -+ -+ sampleBuf = append(sampleBuf, metrics.Sample{Name: d.Name}) -+ sampleMap[d.Name] = &sampleBuf[len(sampleBuf)-1] -+ -+ var m collectorMetric -+ if d.Kind == metrics.KindFloat64Histogram { -+ _, hasSum := opt.RuntimeMetricSumForHist[d.Name] -+ unit := d.Name[strings.IndexRune(d.Name, ':')+1:] -+ m = newBatchHistogram( -+ NewDesc( -+ BuildFQName(namespace, subsystem, name), -+ d.Description.Description, -+ nil, -+ nil, -+ ), -+ internal.RuntimeMetricsBucketsForUnit(bucketsMap[d.Name], unit), -+ hasSum, -+ ) -+ } else if d.Cumulative { -+ m = NewCounter(CounterOpts{ -+ Namespace: namespace, -+ Subsystem: subsystem, -+ Name: name, -+ Help: d.Description.Description, -+ }, -+ ) -+ } else { -+ m = NewGauge(GaugeOpts{ -+ Namespace: namespace, -+ Subsystem: subsystem, -+ Name: name, -+ Help: d.Description.Description, -+ }) -+ } -+ metricSet = append(metricSet, m) -+ } -+ -+ // Add exact sum metrics to sampleBuf if not added before. -+ for _, h := range histograms { -+ sumMetric, ok := opt.RuntimeMetricSumForHist[h.Name] -+ if !ok { -+ continue -+ } -+ -+ if _, ok := sampleMap[sumMetric]; ok { -+ continue -+ } -+ sampleBuf = append(sampleBuf, metrics.Sample{Name: sumMetric}) -+ sampleMap[sumMetric] = &sampleBuf[len(sampleBuf)-1] -+ } -+ -+ var ( -+ msMetrics memStatsMetrics -+ msDescriptions []metrics.Description -+ ) -+ -+ if !opt.DisableMemStatsLikeMetrics { -+ msMetrics = goRuntimeMemStats() -+ msDescriptions = bestEffortLookupRM(rmNamesForMemStatsMetrics) -+ -+ // Check if metric was not exposed before and if not, add to sampleBuf. -+ for _, mdDesc := range msDescriptions { -+ if _, ok := sampleMap[mdDesc.Name]; ok { -+ continue -+ } -+ sampleBuf = append(sampleBuf, metrics.Sample{Name: mdDesc.Name}) -+ sampleMap[mdDesc.Name] = &sampleBuf[len(sampleBuf)-1] -+ } -+ } -+ -+ return &goCollector{ -+ base: newBaseGoCollector(), -+ sampleBuf: sampleBuf, -+ sampleMap: sampleMap, -+ rmExposedMetrics: metricSet, -+ rmExactSumMapForHist: opt.RuntimeMetricSumForHist, -+ msMetrics: msMetrics, -+ msMetricsEnabled: !opt.DisableMemStatsLikeMetrics, -+ } -+} -+ -+// Describe returns all descriptions of the collector. -+func (c *goCollector) Describe(ch chan<- *Desc) { -+ c.base.Describe(ch) -+ for _, i := range c.msMetrics { -+ ch <- i.desc -+ } -+ for _, m := range c.rmExposedMetrics { -+ ch <- m.Desc() -+ } -+} -+ -+// Collect returns the current state of all metrics of the collector. -+func (c *goCollector) Collect(ch chan<- Metric) { -+ // Collect base non-memory metrics. -+ c.base.Collect(ch) -+ -+ if len(c.sampleBuf) == 0 { -+ return -+ } -+ -+ // Collect must be thread-safe, so prevent concurrent use of -+ // sampleBuf elements. Just read into sampleBuf but write all the data -+ // we get into our Metrics or MemStats. -+ // -+ // This lock also ensures that the Metrics we send out are all from -+ // the same updates, ensuring their mutual consistency insofar as -+ // is guaranteed by the runtime/metrics package. -+ // -+ // N.B. This locking is heavy-handed, but Collect is expected to be called -+ // relatively infrequently. Also the core operation here, metrics.Read, -+ // is fast (O(tens of microseconds)) so contention should certainly be -+ // low, though channel operations and any allocations may add to that. -+ c.mu.Lock() -+ defer c.mu.Unlock() -+ -+ // Populate runtime/metrics sample buffer. -+ metrics.Read(c.sampleBuf) -+ -+ // Collect all our runtime/metrics user chose to expose from sampleBuf (if any). -+ for i, metric := range c.rmExposedMetrics { -+ // We created samples for exposed metrics first in order, so indexes match. -+ sample := c.sampleBuf[i] -+ -+ // N.B. switch on concrete type because it's significantly more efficient -+ // than checking for the Counter and Gauge interface implementations. In -+ // this case, we control all the types here. -+ switch m := metric.(type) { -+ case *counter: -+ // Guard against decreases. This should never happen, but a failure -+ // to do so will result in a panic, which is a harsh consequence for -+ // a metrics collection bug. -+ v0, v1 := m.get(), unwrapScalarRMValue(sample.Value) -+ if v1 > v0 { -+ m.Add(unwrapScalarRMValue(sample.Value) - m.get()) -+ } -+ m.Collect(ch) -+ case *gauge: -+ m.Set(unwrapScalarRMValue(sample.Value)) -+ m.Collect(ch) -+ case *batchHistogram: -+ m.update(sample.Value.Float64Histogram(), c.exactSumFor(sample.Name)) -+ m.Collect(ch) -+ default: -+ panic("unexpected metric type") -+ } -+ } -+ -+ if c.msMetricsEnabled { -+ // ms is a dummy MemStats that we populate ourselves so that we can -+ // populate the old metrics from it if goMemStatsCollection is enabled. -+ var ms runtime.MemStats -+ memStatsFromRM(&ms, c.sampleMap) -+ for _, i := range c.msMetrics { -+ ch <- MustNewConstMetric(i.desc, i.valType, i.eval(&ms)) -+ } -+ } -+} -+ -+// unwrapScalarRMValue unwraps a runtime/metrics value that is assumed -+// to be scalar and returns the equivalent float64 value. Panics if the -+// value is not scalar. -+func unwrapScalarRMValue(v metrics.Value) float64 { -+ switch v.Kind() { -+ case metrics.KindUint64: -+ return float64(v.Uint64()) -+ case metrics.KindFloat64: -+ return v.Float64() -+ case metrics.KindBad: -+ // Unsupported metric. -+ // -+ // This should never happen because we always populate our metric -+ // set from the runtime/metrics package. -+ panic("unexpected unsupported metric") -+ default: -+ // Unsupported metric kind. -+ // -+ // This should never happen because we check for this during initialization -+ // and flag and filter metrics whose kinds we don't understand. -+ panic("unexpected unsupported metric kind") -+ } -+} -+ -+// exactSumFor takes a runtime/metrics metric name (that is assumed to -+// be of kind KindFloat64Histogram) and returns its exact sum and whether -+// its exact sum exists. -+// -+// The runtime/metrics API for histograms doesn't currently expose exact -+// sums, but some of the other metrics are in fact exact sums of histograms. -+func (c *goCollector) exactSumFor(rmName string) float64 { -+ sumName, ok := c.rmExactSumMapForHist[rmName] -+ if !ok { -+ return 0 -+ } -+ s, ok := c.sampleMap[sumName] -+ if !ok { -+ return 0 -+ } -+ return unwrapScalarRMValue(s.Value) -+} -+ -+func memStatsFromRM(ms *runtime.MemStats, rm map[string]*metrics.Sample) { -+ lookupOrZero := func(name string) uint64 { -+ if s, ok := rm[name]; ok { -+ return s.Value.Uint64() -+ } -+ return 0 -+ } -+ -+ // Currently, MemStats adds tiny alloc count to both Mallocs AND Frees. -+ // The reason for this is because MemStats couldn't be extended at the time -+ // but there was a desire to have Mallocs at least be a little more representative, -+ // while having Mallocs - Frees still represent a live object count. -+ // Unfortunately, MemStats doesn't actually export a large allocation count, -+ // so it's impossible to pull this number out directly. -+ tinyAllocs := lookupOrZero(goGCHeapTinyAllocsObjects) -+ ms.Mallocs = lookupOrZero(goGCHeapAllocsObjects) + tinyAllocs -+ ms.Frees = lookupOrZero(goGCHeapFreesObjects) + tinyAllocs -+ -+ ms.TotalAlloc = lookupOrZero(goGCHeapAllocsBytes) -+ ms.Sys = lookupOrZero(goMemoryClassesTotalBytes) -+ ms.Lookups = 0 // Already always zero. -+ ms.HeapAlloc = lookupOrZero(goMemoryClassesHeapObjectsBytes) -+ ms.Alloc = ms.HeapAlloc -+ ms.HeapInuse = ms.HeapAlloc + lookupOrZero(goMemoryClassesHeapUnusedBytes) -+ ms.HeapReleased = lookupOrZero(goMemoryClassesHeapReleasedBytes) -+ ms.HeapIdle = ms.HeapReleased + lookupOrZero(goMemoryClassesHeapFreeBytes) -+ ms.HeapSys = ms.HeapInuse + ms.HeapIdle -+ ms.HeapObjects = lookupOrZero(goGCHeapObjects) -+ ms.StackInuse = lookupOrZero(goMemoryClassesHeapStacksBytes) -+ ms.StackSys = ms.StackInuse + lookupOrZero(goMemoryClassesOSStacksBytes) -+ ms.MSpanInuse = lookupOrZero(goMemoryClassesMetadataMSpanInuseBytes) -+ ms.MSpanSys = ms.MSpanInuse + lookupOrZero(goMemoryClassesMetadataMSPanFreeBytes) -+ ms.MCacheInuse = lookupOrZero(goMemoryClassesMetadataMCacheInuseBytes) -+ ms.MCacheSys = ms.MCacheInuse + lookupOrZero(goMemoryClassesMetadataMCacheFreeBytes) -+ ms.BuckHashSys = lookupOrZero(goMemoryClassesProfilingBucketsBytes) -+ ms.GCSys = lookupOrZero(goMemoryClassesMetadataOtherBytes) -+ ms.OtherSys = lookupOrZero(goMemoryClassesOtherBytes) -+ ms.NextGC = lookupOrZero(goGCHeapGoalBytes) -+ -+ // N.B. GCCPUFraction is intentionally omitted. This metric is not useful, -+ // and often misleading due to the fact that it's an average over the lifetime -+ // of the process. -+ // See https://github.com/prometheus/client_golang/issues/842#issuecomment-861812034 -+ // for more details. -+ ms.GCCPUFraction = 0 -+} -+ -+// batchHistogram is a mutable histogram that is updated -+// in batches. -+type batchHistogram struct { -+ selfCollector -+ -+ // Static fields updated only once. -+ desc *Desc -+ hasSum bool -+ -+ // Because this histogram operates in batches, it just uses a -+ // single mutex for everything. updates are always serialized -+ // but Write calls may operate concurrently with updates. -+ // Contention between these two sources should be rare. -+ mu sync.Mutex -+ buckets []float64 // Inclusive lower bounds, like runtime/metrics. -+ counts []uint64 -+ sum float64 // Used if hasSum is true. -+} -+ -+// newBatchHistogram creates a new batch histogram value with the given -+// Desc, buckets, and whether or not it has an exact sum available. -+// -+// buckets must always be from the runtime/metrics package, following -+// the same conventions. -+func newBatchHistogram(desc *Desc, buckets []float64, hasSum bool) *batchHistogram { -+ // We need to remove -Inf values. runtime/metrics keeps them around. -+ // But -Inf bucket should not be allowed for prometheus histograms. -+ if buckets[0] == math.Inf(-1) { -+ buckets = buckets[1:] -+ } -+ h := &batchHistogram{ -+ desc: desc, -+ buckets: buckets, -+ // Because buckets follows runtime/metrics conventions, there's -+ // 1 more value in the buckets list than there are buckets represented, -+ // because in runtime/metrics, the bucket values represent *boundaries*, -+ // and non-Inf boundaries are inclusive lower bounds for that bucket. -+ counts: make([]uint64, len(buckets)-1), -+ hasSum: hasSum, -+ } -+ h.init(h) -+ return h -+} -+ -+// update updates the batchHistogram from a runtime/metrics histogram. -+// -+// sum must be provided if the batchHistogram was created to have an exact sum. -+// h.buckets must be a strict subset of his.Buckets. -+func (h *batchHistogram) update(his *metrics.Float64Histogram, sum float64) { -+ counts, buckets := his.Counts, his.Buckets -+ -+ h.mu.Lock() -+ defer h.mu.Unlock() -+ -+ // Clear buckets. -+ for i := range h.counts { -+ h.counts[i] = 0 -+ } -+ // Copy and reduce buckets. -+ var j int -+ for i, count := range counts { -+ h.counts[j] += count -+ if buckets[i+1] == h.buckets[j+1] { -+ j++ -+ } -+ } -+ if h.hasSum { -+ h.sum = sum -+ } -+} -+ -+func (h *batchHistogram) Desc() *Desc { -+ return h.desc -+} -+ -+func (h *batchHistogram) Write(out *dto.Metric) error { -+ h.mu.Lock() -+ defer h.mu.Unlock() -+ -+ sum := float64(0) -+ if h.hasSum { -+ sum = h.sum -+ } -+ dtoBuckets := make([]*dto.Bucket, 0, len(h.counts)) -+ totalCount := uint64(0) -+ for i, count := range h.counts { -+ totalCount += count -+ if !h.hasSum { -+ if count != 0 { -+ // N.B. This computed sum is an underestimate. -+ sum += h.buckets[i] * float64(count) -+ } -+ } -+ -+ // Skip the +Inf bucket, but only for the bucket list. -+ // It must still count for sum and totalCount. -+ if math.IsInf(h.buckets[i+1], 1) { -+ break -+ } -+ // Float64Histogram's upper bound is exclusive, so make it inclusive -+ // by obtaining the next float64 value down, in order. -+ upperBound := math.Nextafter(h.buckets[i+1], h.buckets[i]) -+ dtoBuckets = append(dtoBuckets, &dto.Bucket{ -+ CumulativeCount: proto.Uint64(totalCount), -+ UpperBound: proto.Float64(upperBound), -+ }) -+ } -+ out.Histogram = &dto.Histogram{ -+ Bucket: dtoBuckets, -+ SampleCount: proto.Uint64(totalCount), -+ SampleSum: proto.Float64(sum), -+ } -+ return nil -+} -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/histogram.go b/vendor/github.com/prometheus/client_golang/prometheus/histogram.go -new file mode 100755 -index 0000000..4c873a0 ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/histogram.go -@@ -0,0 +1,1484 @@ -+// Copyright 2015 The Prometheus 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 prometheus -+ -+import ( -+ "fmt" -+ "math" -+ "runtime" -+ "sort" -+ "sync" -+ "sync/atomic" -+ "time" -+ -+ //nolint:staticcheck // Ignore SA1019. Need to keep deprecated package for compatibility. -+ "github.com/golang/protobuf/proto" -+ -+ dto "github.com/prometheus/client_model/go" -+) -+ -+// nativeHistogramBounds for the frac of observed values. Only relevant for -+// schema > 0. The position in the slice is the schema. (0 is never used, just -+// here for convenience of using the schema directly as the index.) -+// -+// TODO(beorn7): Currently, we do a binary search into these slices. There are -+// ways to turn it into a small number of simple array lookups. It probably only -+// matters for schema 5 and beyond, but should be investigated. See this comment -+// as a starting point: -+// https://github.com/open-telemetry/opentelemetry-specification/issues/1776#issuecomment-870164310 -+var nativeHistogramBounds = [][]float64{ -+ // Schema "0": -+ {0.5}, -+ // Schema 1: -+ {0.5, 0.7071067811865475}, -+ // Schema 2: -+ {0.5, 0.5946035575013605, 0.7071067811865475, 0.8408964152537144}, -+ // Schema 3: -+ { -+ 0.5, 0.5452538663326288, 0.5946035575013605, 0.6484197773255048, -+ 0.7071067811865475, 0.7711054127039704, 0.8408964152537144, 0.9170040432046711, -+ }, -+ // Schema 4: -+ { -+ 0.5, 0.5221368912137069, 0.5452538663326288, 0.5693943173783458, -+ 0.5946035575013605, 0.620928906036742, 0.6484197773255048, 0.6771277734684463, -+ 0.7071067811865475, 0.7384130729697496, 0.7711054127039704, 0.805245165974627, -+ 0.8408964152537144, 0.8781260801866495, 0.9170040432046711, 0.9576032806985735, -+ }, -+ // Schema 5: -+ { -+ 0.5, 0.5109485743270583, 0.5221368912137069, 0.5335702003384117, -+ 0.5452538663326288, 0.5571933712979462, 0.5693943173783458, 0.5818624293887887, -+ 0.5946035575013605, 0.6076236799902344, 0.620928906036742, 0.6345254785958666, -+ 0.6484197773255048, 0.6626183215798706, 0.6771277734684463, 0.6919549409819159, -+ 0.7071067811865475, 0.7225904034885232, 0.7384130729697496, 0.7545822137967112, -+ 0.7711054127039704, 0.7879904225539431, 0.805245165974627, 0.8228777390769823, -+ 0.8408964152537144, 0.8593096490612387, 0.8781260801866495, 0.8973545375015533, -+ 0.9170040432046711, 0.9370838170551498, 0.9576032806985735, 0.9785720620876999, -+ }, -+ // Schema 6: -+ { -+ 0.5, 0.5054446430258502, 0.5109485743270583, 0.5165124395106142, -+ 0.5221368912137069, 0.5278225891802786, 0.5335702003384117, 0.5393803988785598, -+ 0.5452538663326288, 0.5511912916539204, 0.5571933712979462, 0.5632608093041209, -+ 0.5693943173783458, 0.5755946149764913, 0.5818624293887887, 0.5881984958251406, -+ 0.5946035575013605, 0.6010783657263515, 0.6076236799902344, 0.6142402680534349, -+ 0.620928906036742, 0.6276903785123455, 0.6345254785958666, 0.6414350080393891, -+ 0.6484197773255048, 0.6554806057623822, 0.6626183215798706, 0.6698337620266515, -+ 0.6771277734684463, 0.6845012114872953, 0.6919549409819159, 0.6994898362691555, -+ 0.7071067811865475, 0.7148066691959849, 0.7225904034885232, 0.7304588970903234, -+ 0.7384130729697496, 0.7464538641456323, 0.7545822137967112, 0.762799075372269, -+ 0.7711054127039704, 0.7795022001189185, 0.7879904225539431, 0.7965710756711334, -+ 0.805245165974627, 0.8140137109286738, 0.8228777390769823, 0.8318382901633681, -+ 0.8408964152537144, 0.8500531768592616, 0.8593096490612387, 0.8686669176368529, -+ 0.8781260801866495, 0.8876882462632604, 0.8973545375015533, 0.9071260877501991, -+ 0.9170040432046711, 0.9269895625416926, 0.9370838170551498, 0.9472879907934827, -+ 0.9576032806985735, 0.9680308967461471, 0.9785720620876999, 0.9892280131939752, -+ }, -+ // Schema 7: -+ { -+ 0.5, 0.5027149505564014, 0.5054446430258502, 0.5081891574554764, -+ 0.5109485743270583, 0.5137229745593818, 0.5165124395106142, 0.5193170509806894, -+ 0.5221368912137069, 0.5249720429003435, 0.5278225891802786, 0.5306886136446309, -+ 0.5335702003384117, 0.5364674337629877, 0.5393803988785598, 0.5423091811066545, -+ 0.5452538663326288, 0.5482145409081883, 0.5511912916539204, 0.5541842058618393, -+ 0.5571933712979462, 0.5602188762048033, 0.5632608093041209, 0.5663192597993595, -+ 0.5693943173783458, 0.572486072215902, 0.5755946149764913, 0.5787200368168754, -+ 0.5818624293887887, 0.585021884841625, 0.5881984958251406, 0.5913923554921704, -+ 0.5946035575013605, 0.5978321960199137, 0.6010783657263515, 0.6043421618132907, -+ 0.6076236799902344, 0.6109230164863786, 0.6142402680534349, 0.6175755319684665, -+ 0.620928906036742, 0.6243004885946023, 0.6276903785123455, 0.6310986751971253, -+ 0.6345254785958666, 0.637970889198196, 0.6414350080393891, 0.6449179367033329, -+ 0.6484197773255048, 0.6519406325959679, 0.6554806057623822, 0.659039800633032, -+ 0.6626183215798706, 0.6662162735415805, 0.6698337620266515, 0.6734708931164728, -+ 0.6771277734684463, 0.6808045103191123, 0.6845012114872953, 0.688217985377265, -+ 0.6919549409819159, 0.6957121878859629, 0.6994898362691555, 0.7032879969095076, -+ 0.7071067811865475, 0.7109463010845827, 0.7148066691959849, 0.718687998724491, -+ 0.7225904034885232, 0.7265139979245261, 0.7304588970903234, 0.7344252166684908, -+ 0.7384130729697496, 0.7424225829363761, 0.7464538641456323, 0.7505070348132126, -+ 0.7545822137967112, 0.7586795205991071, 0.762799075372269, 0.7669409989204777, -+ 0.7711054127039704, 0.7752924388424999, 0.7795022001189185, 0.7837348199827764, -+ 0.7879904225539431, 0.7922691326262467, 0.7965710756711334, 0.8008963778413465, -+ 0.805245165974627, 0.8096175675974316, 0.8140137109286738, 0.8184337248834821, -+ 0.8228777390769823, 0.8273458838280969, 0.8318382901633681, 0.8363550898207981, -+ 0.8408964152537144, 0.8454623996346523, 0.8500531768592616, 0.8546688815502312, -+ 0.8593096490612387, 0.8639756154809185, 0.8686669176368529, 0.8733836930995842, -+ 0.8781260801866495, 0.8828942179666361, 0.8876882462632604, 0.8925083056594671, -+ 0.8973545375015533, 0.9022270839033115, 0.9071260877501991, 0.9120516927035263, -+ 0.9170040432046711, 0.9219832844793128, 0.9269895625416926, 0.9320230241988943, -+ 0.9370838170551498, 0.9421720895161669, 0.9472879907934827, 0.9524316709088368, -+ 0.9576032806985735, 0.9628029718180622, 0.9680308967461471, 0.9732872087896164, -+ 0.9785720620876999, 0.9838856116165875, 0.9892280131939752, 0.9945994234836328, -+ }, -+ // Schema 8: -+ { -+ 0.5, 0.5013556375251013, 0.5027149505564014, 0.5040779490592088, -+ 0.5054446430258502, 0.5068150424757447, 0.5081891574554764, 0.509566998038869, -+ 0.5109485743270583, 0.5123338964485679, 0.5137229745593818, 0.5151158188430205, -+ 0.5165124395106142, 0.5179128468009786, 0.5193170509806894, 0.520725062344158, -+ 0.5221368912137069, 0.5235525479396449, 0.5249720429003435, 0.526395386502313, -+ 0.5278225891802786, 0.5292536613972564, 0.5306886136446309, 0.5321274564422321, -+ 0.5335702003384117, 0.5350168559101208, 0.5364674337629877, 0.5379219445313954, -+ 0.5393803988785598, 0.5408428074966075, 0.5423091811066545, 0.5437795304588847, -+ 0.5452538663326288, 0.5467321995364429, 0.5482145409081883, 0.549700901315111, -+ 0.5511912916539204, 0.5526857228508706, 0.5541842058618393, 0.5556867516724088, -+ 0.5571933712979462, 0.5587040757836845, 0.5602188762048033, 0.5617377836665098, -+ 0.5632608093041209, 0.564787964283144, 0.5663192597993595, 0.5678547070789026, -+ 0.5693943173783458, 0.5709381019847808, 0.572486072215902, 0.5740382394200894, -+ 0.5755946149764913, 0.5771552102951081, 0.5787200368168754, 0.5802891060137493, -+ 0.5818624293887887, 0.5834400184762408, 0.585021884841625, 0.5866080400818185, -+ 0.5881984958251406, 0.5897932637314379, 0.5913923554921704, 0.5929957828304968, -+ 0.5946035575013605, 0.5962156912915756, 0.5978321960199137, 0.5994530835371903, -+ 0.6010783657263515, 0.6027080545025619, 0.6043421618132907, 0.6059806996384005, -+ 0.6076236799902344, 0.6092711149137041, 0.6109230164863786, 0.6125793968185725, -+ 0.6142402680534349, 0.6159056423670379, 0.6175755319684665, 0.6192499490999082, -+ 0.620928906036742, 0.622612415087629, 0.6243004885946023, 0.6259931389331581, -+ 0.6276903785123455, 0.6293922197748583, 0.6310986751971253, 0.6328097572894031, -+ 0.6345254785958666, 0.6362458516947014, 0.637970889198196, 0.6397006037528346, -+ 0.6414350080393891, 0.6431741147730128, 0.6449179367033329, 0.6466664866145447, -+ 0.6484197773255048, 0.6501778216898253, 0.6519406325959679, 0.6537082229673385, -+ 0.6554806057623822, 0.6572577939746774, 0.659039800633032, 0.6608266388015788, -+ 0.6626183215798706, 0.6644148621029772, 0.6662162735415805, 0.6680225691020727, -+ 0.6698337620266515, 0.6716498655934177, 0.6734708931164728, 0.6752968579460171, -+ 0.6771277734684463, 0.6789636531064505, 0.6808045103191123, 0.6826503586020058, -+ 0.6845012114872953, 0.6863570825438342, 0.688217985377265, 0.690083933630119, -+ 0.6919549409819159, 0.6938310211492645, 0.6957121878859629, 0.6975984549830999, -+ 0.6994898362691555, 0.7013863456101023, 0.7032879969095076, 0.7051948041086352, -+ 0.7071067811865475, 0.7090239421602076, 0.7109463010845827, 0.7128738720527471, -+ 0.7148066691959849, 0.7167447066838943, 0.718687998724491, 0.7206365595643126, -+ 0.7225904034885232, 0.7245495448210174, 0.7265139979245261, 0.7284837772007218, -+ 0.7304588970903234, 0.7324393720732029, 0.7344252166684908, 0.7364164454346837, -+ 0.7384130729697496, 0.7404151139112358, 0.7424225829363761, 0.7444354947621984, -+ 0.7464538641456323, 0.7484777058836176, 0.7505070348132126, 0.7525418658117031, -+ 0.7545822137967112, 0.7566280937263048, 0.7586795205991071, 0.7607365094544071, -+ 0.762799075372269, 0.7648672334736434, 0.7669409989204777, 0.7690203869158282, -+ 0.7711054127039704, 0.7731960915705107, 0.7752924388424999, 0.7773944698885442, -+ 0.7795022001189185, 0.7816156449856788, 0.7837348199827764, 0.7858597406461707, -+ 0.7879904225539431, 0.7901268813264122, 0.7922691326262467, 0.7944171921585818, -+ 0.7965710756711334, 0.7987307989543135, 0.8008963778413465, 0.8030678282083853, -+ 0.805245165974627, 0.8074284071024302, 0.8096175675974316, 0.8118126635086642, -+ 0.8140137109286738, 0.8162207259936375, 0.8184337248834821, 0.820652723822003, -+ 0.8228777390769823, 0.8251087869603088, 0.8273458838280969, 0.8295890460808079, -+ 0.8318382901633681, 0.8340936325652911, 0.8363550898207981, 0.8386226785089391, -+ 0.8408964152537144, 0.8431763167241966, 0.8454623996346523, 0.8477546807446661, -+ 0.8500531768592616, 0.8523579048290255, 0.8546688815502312, 0.8569861239649629, -+ 0.8593096490612387, 0.8616394738731368, 0.8639756154809185, 0.8663180910111553, -+ 0.8686669176368529, 0.871022112577578, 0.8733836930995842, 0.8757516765159389, -+ 0.8781260801866495, 0.8805069215187917, 0.8828942179666361, 0.8852879870317771, -+ 0.8876882462632604, 0.890095013257712, 0.8925083056594671, 0.8949281411607002, -+ 0.8973545375015533, 0.8997875124702672, 0.9022270839033115, 0.9046732696855155, -+ 0.9071260877501991, 0.909585556079304, 0.9120516927035263, 0.9145245157024483, -+ 0.9170040432046711, 0.9194902933879467, 0.9219832844793128, 0.9244830347552253, -+ 0.9269895625416926, 0.92950288621441, 0.9320230241988943, 0.9345499949706191, -+ 0.9370838170551498, 0.93962450902828, 0.9421720895161669, 0.9447265771954693, -+ 0.9472879907934827, 0.9498563490882775, 0.9524316709088368, 0.9550139751351947, -+ 0.9576032806985735, 0.9601996065815236, 0.9628029718180622, 0.9654133954938133, -+ 0.9680308967461471, 0.9706554947643201, 0.9732872087896164, 0.9759260581154889, -+ 0.9785720620876999, 0.9812252401044634, 0.9838856116165875, 0.9865531961276168, -+ 0.9892280131939752, 0.9919100824251095, 0.9945994234836328, 0.9972960560854698, -+ }, -+} -+ -+// The nativeHistogramBounds above can be generated with the code below. -+// -+// TODO(beorn7): It's tempting to actually use `go generate` to generate the -+// code above. However, this could lead to slightly different numbers on -+// different architectures. We still need to come to terms if we are fine with -+// that, or if we might prefer to specify precise numbers in the standard. -+// -+// var nativeHistogramBounds [][]float64 = make([][]float64, 9) -+// -+// func init() { -+// // Populate nativeHistogramBounds. -+// numBuckets := 1 -+// for i := range nativeHistogramBounds { -+// bounds := []float64{0.5} -+// factor := math.Exp2(math.Exp2(float64(-i))) -+// for j := 0; j < numBuckets-1; j++ { -+// var bound float64 -+// if (j+1)%2 == 0 { -+// // Use previously calculated value for increased precision. -+// bound = nativeHistogramBounds[i-1][j/2+1] -+// } else { -+// bound = bounds[j] * factor -+// } -+// bounds = append(bounds, bound) -+// } -+// numBuckets *= 2 -+// nativeHistogramBounds[i] = bounds -+// } -+// } -+ -+// A Histogram counts individual observations from an event or sample stream in -+// configurable static buckets (or in dynamic sparse buckets as part of the -+// experimental Native Histograms, see below for more details). Similar to a -+// Summary, it also provides a sum of observations and an observation count. -+// -+// On the Prometheus server, quantiles can be calculated from a Histogram using -+// the histogram_quantile PromQL function. -+// -+// Note that Histograms, in contrast to Summaries, can be aggregated in PromQL -+// (see the documentation for detailed procedures). However, Histograms require -+// the user to pre-define suitable buckets, and they are in general less -+// accurate. (Both problems are addressed by the experimental Native -+// Histograms. To use them, configure a NativeHistogramBucketFactor in the -+// HistogramOpts. They also require a Prometheus server v2.40+ with the -+// corresponding feature flag enabled.) -+// -+// The Observe method of a Histogram has a very low performance overhead in -+// comparison with the Observe method of a Summary. -+// -+// To create Histogram instances, use NewHistogram. -+type Histogram interface { -+ Metric -+ Collector -+ -+ // Observe adds a single observation to the histogram. Observations are -+ // usually positive or zero. Negative observations are accepted but -+ // prevent current versions of Prometheus from properly detecting -+ // counter resets in the sum of observations. (The experimental Native -+ // Histograms handle negative observations properly.) See -+ // https://prometheus.io/docs/practices/histograms/#count-and-sum-of-observations -+ // for details. -+ Observe(float64) -+} -+ -+// bucketLabel is used for the label that defines the upper bound of a -+// bucket of a histogram ("le" -> "less or equal"). -+const bucketLabel = "le" -+ -+// DefBuckets are the default Histogram buckets. The default buckets are -+// tailored to broadly measure the response time (in seconds) of a network -+// service. Most likely, however, you will be required to define buckets -+// customized to your use case. -+var DefBuckets = []float64{.005, .01, .025, .05, .1, .25, .5, 1, 2.5, 5, 10} -+ -+// DefNativeHistogramZeroThreshold is the default value for -+// NativeHistogramZeroThreshold in the HistogramOpts. -+// -+// The value is 2^-128 (or 0.5*2^-127 in the actual IEEE 754 representation), -+// which is a bucket boundary at all possible resolutions. -+const DefNativeHistogramZeroThreshold = 2.938735877055719e-39 -+ -+// NativeHistogramZeroThresholdZero can be used as NativeHistogramZeroThreshold -+// in the HistogramOpts to create a zero bucket of width zero, i.e. a zero -+// bucket that only receives observations of precisely zero. -+const NativeHistogramZeroThresholdZero = -1 -+ -+var errBucketLabelNotAllowed = fmt.Errorf( -+ "%q is not allowed as label name in histograms", bucketLabel, -+) -+ -+// LinearBuckets creates 'count' regular buckets, each 'width' wide, where the -+// lowest bucket has an upper bound of 'start'. The final +Inf bucket is not -+// counted and not included in the returned slice. The returned slice is meant -+// to be used for the Buckets field of HistogramOpts. -+// -+// The function panics if 'count' is zero or negative. -+func LinearBuckets(start, width float64, count int) []float64 { -+ if count < 1 { -+ panic("LinearBuckets needs a positive count") -+ } -+ buckets := make([]float64, count) -+ for i := range buckets { -+ buckets[i] = start -+ start += width -+ } -+ return buckets -+} -+ -+// ExponentialBuckets creates 'count' regular buckets, where the lowest bucket -+// has an upper bound of 'start' and each following bucket's upper bound is -+// 'factor' times the previous bucket's upper bound. The final +Inf bucket is -+// not counted and not included in the returned slice. The returned slice is -+// meant to be used for the Buckets field of HistogramOpts. -+// -+// The function panics if 'count' is 0 or negative, if 'start' is 0 or negative, -+// or if 'factor' is less than or equal 1. -+func ExponentialBuckets(start, factor float64, count int) []float64 { -+ if count < 1 { -+ panic("ExponentialBuckets needs a positive count") -+ } -+ if start <= 0 { -+ panic("ExponentialBuckets needs a positive start value") -+ } -+ if factor <= 1 { -+ panic("ExponentialBuckets needs a factor greater than 1") -+ } -+ buckets := make([]float64, count) -+ for i := range buckets { -+ buckets[i] = start -+ start *= factor -+ } -+ return buckets -+} -+ -+// ExponentialBucketsRange creates 'count' buckets, where the lowest bucket is -+// 'min' and the highest bucket is 'max'. The final +Inf bucket is not counted -+// and not included in the returned slice. The returned slice is meant to be -+// used for the Buckets field of HistogramOpts. -+// -+// The function panics if 'count' is 0 or negative, if 'min' is 0 or negative. -+func ExponentialBucketsRange(min, max float64, count int) []float64 { -+ if count < 1 { -+ panic("ExponentialBucketsRange count needs a positive count") -+ } -+ if min <= 0 { -+ panic("ExponentialBucketsRange min needs to be greater than 0") -+ } -+ -+ // Formula for exponential buckets. -+ // max = min*growthFactor^(bucketCount-1) -+ -+ // We know max/min and highest bucket. Solve for growthFactor. -+ growthFactor := math.Pow(max/min, 1.0/float64(count-1)) -+ -+ // Now that we know growthFactor, solve for each bucket. -+ buckets := make([]float64, count) -+ for i := 1; i <= count; i++ { -+ buckets[i-1] = min * math.Pow(growthFactor, float64(i-1)) -+ } -+ return buckets -+} -+ -+// HistogramOpts bundles the options for creating a Histogram metric. It is -+// mandatory to set Name to a non-empty string. All other fields are optional -+// and can safely be left at their zero value, although it is strongly -+// encouraged to set a Help string. -+type HistogramOpts struct { -+ // Namespace, Subsystem, and Name are components of the fully-qualified -+ // name of the Histogram (created by joining these components with -+ // "_"). Only Name is mandatory, the others merely help structuring the -+ // name. Note that the fully-qualified name of the Histogram must be a -+ // valid Prometheus metric name. -+ Namespace string -+ Subsystem string -+ Name string -+ -+ // Help provides information about this Histogram. -+ // -+ // Metrics with the same fully-qualified name must have the same Help -+ // string. -+ Help string -+ -+ // ConstLabels are used to attach fixed labels to this metric. Metrics -+ // with the same fully-qualified name must have the same label names in -+ // their ConstLabels. -+ // -+ // ConstLabels are only used rarely. In particular, do not use them to -+ // attach the same labels to all your metrics. Those use cases are -+ // better covered by target labels set by the scraping Prometheus -+ // server, or by one specific metric (e.g. a build_info or a -+ // machine_role metric). See also -+ // https://prometheus.io/docs/instrumenting/writing_exporters/#target-labels-not-static-scraped-labels -+ ConstLabels Labels -+ -+ // Buckets defines the buckets into which observations are counted. Each -+ // element in the slice is the upper inclusive bound of a bucket. The -+ // values must be sorted in strictly increasing order. There is no need -+ // to add a highest bucket with +Inf bound, it will be added -+ // implicitly. If Buckets is left as nil or set to a slice of length -+ // zero, it is replaced by default buckets. The default buckets are -+ // DefBuckets if no buckets for a native histogram (see below) are used, -+ // otherwise the default is no buckets. (In other words, if you want to -+ // use both reguler buckets and buckets for a native histogram, you have -+ // to define the regular buckets here explicitly.) -+ Buckets []float64 -+ -+ // If NativeHistogramBucketFactor is greater than one, so-called sparse -+ // buckets are used (in addition to the regular buckets, if defined -+ // above). A Histogram with sparse buckets will be ingested as a Native -+ // Histogram by a Prometheus server with that feature enabled (requires -+ // Prometheus v2.40+). Sparse buckets are exponential buckets covering -+ // the whole float64 range (with the exception of the “zero” bucket, see -+ // SparseBucketsZeroThreshold below). From any one bucket to the next, -+ // the width of the bucket grows by a constant -+ // factor. NativeHistogramBucketFactor provides an upper bound for this -+ // factor (exception see below). The smaller -+ // NativeHistogramBucketFactor, the more buckets will be used and thus -+ // the more costly the histogram will become. A generally good trade-off -+ // between cost and accuracy is a value of 1.1 (each bucket is at most -+ // 10% wider than the previous one), which will result in each power of -+ // two divided into 8 buckets (e.g. there will be 8 buckets between 1 -+ // and 2, same as between 2 and 4, and 4 and 8, etc.). -+ // -+ // Details about the actually used factor: The factor is calculated as -+ // 2^(2^n), where n is an integer number between (and including) -8 and -+ // 4. n is chosen so that the resulting factor is the largest that is -+ // still smaller or equal to NativeHistogramBucketFactor. Note that the -+ // smallest possible factor is therefore approx. 1.00271 (i.e. 2^(2^-8) -+ // ). If NativeHistogramBucketFactor is greater than 1 but smaller than -+ // 2^(2^-8), then the actually used factor is still 2^(2^-8) even though -+ // it is larger than the provided NativeHistogramBucketFactor. -+ // -+ // NOTE: Native Histograms are still an experimental feature. Their -+ // behavior might still change without a major version -+ // bump. Subsequently, all NativeHistogram... options here might still -+ // change their behavior or name (or might completely disappear) without -+ // a major version bump. -+ NativeHistogramBucketFactor float64 -+ // All observations with an absolute value of less or equal -+ // NativeHistogramZeroThreshold are accumulated into a “zero” -+ // bucket. For best results, this should be close to a bucket -+ // boundary. This is usually the case if picking a power of two. If -+ // NativeHistogramZeroThreshold is left at zero, -+ // DefSparseBucketsZeroThreshold is used as the threshold. To configure -+ // a zero bucket with an actual threshold of zero (i.e. only -+ // observations of precisely zero will go into the zero bucket), set -+ // NativeHistogramZeroThreshold to the NativeHistogramZeroThresholdZero -+ // constant (or any negative float value). -+ NativeHistogramZeroThreshold float64 -+ -+ // The remaining fields define a strategy to limit the number of -+ // populated sparse buckets. If NativeHistogramMaxBucketNumber is left -+ // at zero, the number of buckets is not limited. (Note that this might -+ // lead to unbounded memory consumption if the values observed by the -+ // Histogram are sufficiently wide-spread. In particular, this could be -+ // used as a DoS attack vector. Where the observed values depend on -+ // external inputs, it is highly recommended to set a -+ // NativeHistogramMaxBucketNumber.) Once the set -+ // NativeHistogramMaxBucketNumber is exceeded, the following strategy is -+ // enacted: First, if the last reset (or the creation) of the histogram -+ // is at least NativeHistogramMinResetDuration ago, then the whole -+ // histogram is reset to its initial state (including regular -+ // buckets). If less time has passed, or if -+ // NativeHistogramMinResetDuration is zero, no reset is -+ // performed. Instead, the zero threshold is increased sufficiently to -+ // reduce the number of buckets to or below -+ // NativeHistogramMaxBucketNumber, but not to more than -+ // NativeHistogramMaxZeroThreshold. Thus, if -+ // NativeHistogramMaxZeroThreshold is already at or below the current -+ // zero threshold, nothing happens at this step. After that, if the -+ // number of buckets still exceeds NativeHistogramMaxBucketNumber, the -+ // resolution of the histogram is reduced by doubling the width of the -+ // sparse buckets (up to a growth factor between one bucket to the next -+ // of 2^(2^4) = 65536, see above). -+ NativeHistogramMaxBucketNumber uint32 -+ NativeHistogramMinResetDuration time.Duration -+ NativeHistogramMaxZeroThreshold float64 -+} -+ -+// NewHistogram creates a new Histogram based on the provided HistogramOpts. It -+// panics if the buckets in HistogramOpts are not in strictly increasing order. -+// -+// The returned implementation also implements ExemplarObserver. It is safe to -+// perform the corresponding type assertion. Exemplars are tracked separately -+// for each bucket. -+func NewHistogram(opts HistogramOpts) Histogram { -+ return newHistogram( -+ NewDesc( -+ BuildFQName(opts.Namespace, opts.Subsystem, opts.Name), -+ opts.Help, -+ nil, -+ opts.ConstLabels, -+ ), -+ opts, -+ ) -+} -+ -+func newHistogram(desc *Desc, opts HistogramOpts, labelValues ...string) Histogram { -+ if len(desc.variableLabels) != len(labelValues) { -+ panic(makeInconsistentCardinalityError(desc.fqName, desc.variableLabels, labelValues)) -+ } -+ -+ for _, n := range desc.variableLabels { -+ if n == bucketLabel { -+ panic(errBucketLabelNotAllowed) -+ } -+ } -+ for _, lp := range desc.constLabelPairs { -+ if lp.GetName() == bucketLabel { -+ panic(errBucketLabelNotAllowed) -+ } -+ } -+ -+ h := &histogram{ -+ desc: desc, -+ upperBounds: opts.Buckets, -+ labelPairs: MakeLabelPairs(desc, labelValues), -+ nativeHistogramMaxBuckets: opts.NativeHistogramMaxBucketNumber, -+ nativeHistogramMaxZeroThreshold: opts.NativeHistogramMaxZeroThreshold, -+ nativeHistogramMinResetDuration: opts.NativeHistogramMinResetDuration, -+ lastResetTime: time.Now(), -+ now: time.Now, -+ } -+ if len(h.upperBounds) == 0 && opts.NativeHistogramBucketFactor <= 1 { -+ h.upperBounds = DefBuckets -+ } -+ if opts.NativeHistogramBucketFactor <= 1 { -+ h.nativeHistogramSchema = math.MinInt32 // To mark that there are no sparse buckets. -+ } else { -+ switch { -+ case opts.NativeHistogramZeroThreshold > 0: -+ h.nativeHistogramZeroThreshold = opts.NativeHistogramZeroThreshold -+ case opts.NativeHistogramZeroThreshold == 0: -+ h.nativeHistogramZeroThreshold = DefNativeHistogramZeroThreshold -+ } // Leave h.nativeHistogramZeroThreshold at 0 otherwise. -+ h.nativeHistogramSchema = pickSchema(opts.NativeHistogramBucketFactor) -+ } -+ for i, upperBound := range h.upperBounds { -+ if i < len(h.upperBounds)-1 { -+ if upperBound >= h.upperBounds[i+1] { -+ panic(fmt.Errorf( -+ "histogram buckets must be in increasing order: %f >= %f", -+ upperBound, h.upperBounds[i+1], -+ )) -+ } -+ } else { -+ if math.IsInf(upperBound, +1) { -+ // The +Inf bucket is implicit. Remove it here. -+ h.upperBounds = h.upperBounds[:i] -+ } -+ } -+ } -+ // Finally we know the final length of h.upperBounds and can make buckets -+ // for both counts as well as exemplars: -+ h.counts[0] = &histogramCounts{ -+ buckets: make([]uint64, len(h.upperBounds)), -+ nativeHistogramZeroThresholdBits: math.Float64bits(h.nativeHistogramZeroThreshold), -+ nativeHistogramSchema: h.nativeHistogramSchema, -+ } -+ h.counts[1] = &histogramCounts{ -+ buckets: make([]uint64, len(h.upperBounds)), -+ nativeHistogramZeroThresholdBits: math.Float64bits(h.nativeHistogramZeroThreshold), -+ nativeHistogramSchema: h.nativeHistogramSchema, -+ } -+ h.exemplars = make([]atomic.Value, len(h.upperBounds)+1) -+ -+ h.init(h) // Init self-collection. -+ return h -+} -+ -+type histogramCounts struct { -+ // Order in this struct matters for the alignment required by atomic -+ // operations, see http://golang.org/pkg/sync/atomic/#pkg-note-BUG -+ -+ // sumBits contains the bits of the float64 representing the sum of all -+ // observations. -+ sumBits uint64 -+ count uint64 -+ -+ // nativeHistogramZeroBucket counts all (positive and negative) -+ // observations in the zero bucket (with an absolute value less or equal -+ // the current threshold, see next field. -+ nativeHistogramZeroBucket uint64 -+ // nativeHistogramZeroThresholdBits is the bit pattern of the current -+ // threshold for the zero bucket. It's initially equal to -+ // nativeHistogramZeroThreshold but may change according to the bucket -+ // count limitation strategy. -+ nativeHistogramZeroThresholdBits uint64 -+ // nativeHistogramSchema may change over time according to the bucket -+ // count limitation strategy and therefore has to be saved here. -+ nativeHistogramSchema int32 -+ // Number of (positive and negative) sparse buckets. -+ nativeHistogramBucketsNumber uint32 -+ -+ // Regular buckets. -+ buckets []uint64 -+ -+ // The sparse buckets for native histograms are implemented with a -+ // sync.Map for now. A dedicated data structure will likely be more -+ // efficient. There are separate maps for negative and positive -+ // observations. The map's value is an *int64, counting observations in -+ // that bucket. (Note that we don't use uint64 as an int64 won't -+ // overflow in practice, and working with signed numbers from the -+ // beginning simplifies the handling of deltas.) The map's key is the -+ // index of the bucket according to the used -+ // nativeHistogramSchema. Index 0 is for an upper bound of 1. -+ nativeHistogramBucketsPositive, nativeHistogramBucketsNegative sync.Map -+} -+ -+// observe manages the parts of observe that only affects -+// histogramCounts. doSparse is true if sparse buckets should be done, -+// too. -+func (hc *histogramCounts) observe(v float64, bucket int, doSparse bool) { -+ if bucket < len(hc.buckets) { -+ atomic.AddUint64(&hc.buckets[bucket], 1) -+ } -+ atomicAddFloat(&hc.sumBits, v) -+ if doSparse && !math.IsNaN(v) { -+ var ( -+ key int -+ schema = atomic.LoadInt32(&hc.nativeHistogramSchema) -+ zeroThreshold = math.Float64frombits(atomic.LoadUint64(&hc.nativeHistogramZeroThresholdBits)) -+ bucketCreated, isInf bool -+ ) -+ if math.IsInf(v, 0) { -+ // Pretend v is MaxFloat64 but later increment key by one. -+ if math.IsInf(v, +1) { -+ v = math.MaxFloat64 -+ } else { -+ v = -math.MaxFloat64 -+ } -+ isInf = true -+ } -+ frac, exp := math.Frexp(math.Abs(v)) -+ if schema > 0 { -+ bounds := nativeHistogramBounds[schema] -+ key = sort.SearchFloat64s(bounds, frac) + (exp-1)*len(bounds) -+ } else { -+ key = exp -+ if frac == 0.5 { -+ key-- -+ } -+ div := 1 << -schema -+ key = (key + div - 1) / div -+ } -+ if isInf { -+ key++ -+ } -+ switch { -+ case v > zeroThreshold: -+ bucketCreated = addToBucket(&hc.nativeHistogramBucketsPositive, key, 1) -+ case v < -zeroThreshold: -+ bucketCreated = addToBucket(&hc.nativeHistogramBucketsNegative, key, 1) -+ default: -+ atomic.AddUint64(&hc.nativeHistogramZeroBucket, 1) -+ } -+ if bucketCreated { -+ atomic.AddUint32(&hc.nativeHistogramBucketsNumber, 1) -+ } -+ } -+ // Increment count last as we take it as a signal that the observation -+ // is complete. -+ atomic.AddUint64(&hc.count, 1) -+} -+ -+type histogram struct { -+ // countAndHotIdx enables lock-free writes with use of atomic updates. -+ // The most significant bit is the hot index [0 or 1] of the count field -+ // below. Observe calls update the hot one. All remaining bits count the -+ // number of Observe calls. Observe starts by incrementing this counter, -+ // and finish by incrementing the count field in the respective -+ // histogramCounts, as a marker for completion. -+ // -+ // Calls of the Write method (which are non-mutating reads from the -+ // perspective of the histogram) swap the hot–cold under the writeMtx -+ // lock. A cooldown is awaited (while locked) by comparing the number of -+ // observations with the initiation count. Once they match, then the -+ // last observation on the now cool one has completed. All cold fields must -+ // be merged into the new hot before releasing writeMtx. -+ // -+ // Fields with atomic access first! See alignment constraint: -+ // http://golang.org/pkg/sync/atomic/#pkg-note-BUG -+ countAndHotIdx uint64 -+ -+ selfCollector -+ desc *Desc -+ -+ // Only used in the Write method and for sparse bucket management. -+ mtx sync.Mutex -+ -+ // Two counts, one is "hot" for lock-free observations, the other is -+ // "cold" for writing out a dto.Metric. It has to be an array of -+ // pointers to guarantee 64bit alignment of the histogramCounts, see -+ // http://golang.org/pkg/sync/atomic/#pkg-note-BUG. -+ counts [2]*histogramCounts -+ -+ upperBounds []float64 -+ labelPairs []*dto.LabelPair -+ exemplars []atomic.Value // One more than buckets (to include +Inf), each a *dto.Exemplar. -+ nativeHistogramSchema int32 // The initial schema. Set to math.MinInt32 if no sparse buckets are used. -+ nativeHistogramZeroThreshold float64 // The initial zero threshold. -+ nativeHistogramMaxZeroThreshold float64 -+ nativeHistogramMaxBuckets uint32 -+ nativeHistogramMinResetDuration time.Duration -+ lastResetTime time.Time // Protected by mtx. -+ -+ now func() time.Time // To mock out time.Now() for testing. -+} -+ -+func (h *histogram) Desc() *Desc { -+ return h.desc -+} -+ -+func (h *histogram) Observe(v float64) { -+ h.observe(v, h.findBucket(v)) -+} -+ -+func (h *histogram) ObserveWithExemplar(v float64, e Labels) { -+ i := h.findBucket(v) -+ h.observe(v, i) -+ h.updateExemplar(v, i, e) -+} -+ -+func (h *histogram) Write(out *dto.Metric) error { -+ // For simplicity, we protect this whole method by a mutex. It is not in -+ // the hot path, i.e. Observe is called much more often than Write. The -+ // complication of making Write lock-free isn't worth it, if possible at -+ // all. -+ h.mtx.Lock() -+ defer h.mtx.Unlock() -+ -+ // Adding 1<<63 switches the hot index (from 0 to 1 or from 1 to 0) -+ // without touching the count bits. See the struct comments for a full -+ // description of the algorithm. -+ n := atomic.AddUint64(&h.countAndHotIdx, 1<<63) -+ // count is contained unchanged in the lower 63 bits. -+ count := n & ((1 << 63) - 1) -+ // The most significant bit tells us which counts is hot. The complement -+ // is thus the cold one. -+ hotCounts := h.counts[n>>63] -+ coldCounts := h.counts[(^n)>>63] -+ -+ waitForCooldown(count, coldCounts) -+ -+ his := &dto.Histogram{ -+ Bucket: make([]*dto.Bucket, len(h.upperBounds)), -+ SampleCount: proto.Uint64(count), -+ SampleSum: proto.Float64(math.Float64frombits(atomic.LoadUint64(&coldCounts.sumBits))), -+ } -+ out.Histogram = his -+ out.Label = h.labelPairs -+ -+ var cumCount uint64 -+ for i, upperBound := range h.upperBounds { -+ cumCount += atomic.LoadUint64(&coldCounts.buckets[i]) -+ his.Bucket[i] = &dto.Bucket{ -+ CumulativeCount: proto.Uint64(cumCount), -+ UpperBound: proto.Float64(upperBound), -+ } -+ if e := h.exemplars[i].Load(); e != nil { -+ his.Bucket[i].Exemplar = e.(*dto.Exemplar) -+ } -+ } -+ // If there is an exemplar for the +Inf bucket, we have to add that bucket explicitly. -+ if e := h.exemplars[len(h.upperBounds)].Load(); e != nil { -+ b := &dto.Bucket{ -+ CumulativeCount: proto.Uint64(count), -+ UpperBound: proto.Float64(math.Inf(1)), -+ Exemplar: e.(*dto.Exemplar), -+ } -+ his.Bucket = append(his.Bucket, b) -+ } -+ if h.nativeHistogramSchema > math.MinInt32 { -+ his.ZeroThreshold = proto.Float64(math.Float64frombits(atomic.LoadUint64(&coldCounts.nativeHistogramZeroThresholdBits))) -+ his.Schema = proto.Int32(atomic.LoadInt32(&coldCounts.nativeHistogramSchema)) -+ zeroBucket := atomic.LoadUint64(&coldCounts.nativeHistogramZeroBucket) -+ -+ defer func() { -+ coldCounts.nativeHistogramBucketsPositive.Range(addAndReset(&hotCounts.nativeHistogramBucketsPositive, &hotCounts.nativeHistogramBucketsNumber)) -+ coldCounts.nativeHistogramBucketsNegative.Range(addAndReset(&hotCounts.nativeHistogramBucketsNegative, &hotCounts.nativeHistogramBucketsNumber)) -+ }() -+ -+ his.ZeroCount = proto.Uint64(zeroBucket) -+ his.NegativeSpan, his.NegativeDelta = makeBuckets(&coldCounts.nativeHistogramBucketsNegative) -+ his.PositiveSpan, his.PositiveDelta = makeBuckets(&coldCounts.nativeHistogramBucketsPositive) -+ } -+ addAndResetCounts(hotCounts, coldCounts) -+ return nil -+} -+ -+// findBucket returns the index of the bucket for the provided value, or -+// len(h.upperBounds) for the +Inf bucket. -+func (h *histogram) findBucket(v float64) int { -+ // TODO(beorn7): For small numbers of buckets (<30), a linear search is -+ // slightly faster than the binary search. If we really care, we could -+ // switch from one search strategy to the other depending on the number -+ // of buckets. -+ // -+ // Microbenchmarks (BenchmarkHistogramNoLabels): -+ // 11 buckets: 38.3 ns/op linear - binary 48.7 ns/op -+ // 100 buckets: 78.1 ns/op linear - binary 54.9 ns/op -+ // 300 buckets: 154 ns/op linear - binary 61.6 ns/op -+ return sort.SearchFloat64s(h.upperBounds, v) -+} -+ -+// observe is the implementation for Observe without the findBucket part. -+func (h *histogram) observe(v float64, bucket int) { -+ // Do not add to sparse buckets for NaN observations. -+ doSparse := h.nativeHistogramSchema > math.MinInt32 && !math.IsNaN(v) -+ // We increment h.countAndHotIdx so that the counter in the lower -+ // 63 bits gets incremented. At the same time, we get the new value -+ // back, which we can use to find the currently-hot counts. -+ n := atomic.AddUint64(&h.countAndHotIdx, 1) -+ hotCounts := h.counts[n>>63] -+ hotCounts.observe(v, bucket, doSparse) -+ if doSparse { -+ h.limitBuckets(hotCounts, v, bucket) -+ } -+} -+ -+// limitSparsebuckets applies a strategy to limit the number of populated sparse -+// buckets. It's generally best effort, and there are situations where the -+// number can go higher (if even the lowest resolution isn't enough to reduce -+// the number sufficiently, or if the provided counts aren't fully updated yet -+// by a concurrently happening Write call). -+func (h *histogram) limitBuckets(counts *histogramCounts, value float64, bucket int) { -+ if h.nativeHistogramMaxBuckets == 0 { -+ return // No limit configured. -+ } -+ if h.nativeHistogramMaxBuckets >= atomic.LoadUint32(&counts.nativeHistogramBucketsNumber) { -+ return // Bucket limit not exceeded yet. -+ } -+ -+ h.mtx.Lock() -+ defer h.mtx.Unlock() -+ -+ // The hot counts might have been swapped just before we acquired the -+ // lock. Re-fetch the hot counts first... -+ n := atomic.LoadUint64(&h.countAndHotIdx) -+ hotIdx := n >> 63 -+ coldIdx := (^n) >> 63 -+ hotCounts := h.counts[hotIdx] -+ coldCounts := h.counts[coldIdx] -+ // ...and then check again if we really have to reduce the bucket count. -+ if h.nativeHistogramMaxBuckets >= atomic.LoadUint32(&hotCounts.nativeHistogramBucketsNumber) { -+ return // Bucket limit not exceeded after all. -+ } -+ // Try the various strategies in order. -+ if h.maybeReset(hotCounts, coldCounts, coldIdx, value, bucket) { -+ return -+ } -+ if h.maybeWidenZeroBucket(hotCounts, coldCounts) { -+ return -+ } -+ h.doubleBucketWidth(hotCounts, coldCounts) -+} -+ -+// maybeReset resests the whole histogram if at least h.nativeHistogramMinResetDuration -+// has been passed. It returns true if the histogram has been reset. The caller -+// must have locked h.mtx. -+func (h *histogram) maybeReset(hot, cold *histogramCounts, coldIdx uint64, value float64, bucket int) bool { -+ // We are using the possibly mocked h.now() rather than -+ // time.Since(h.lastResetTime) to enable testing. -+ if h.nativeHistogramMinResetDuration == 0 || h.now().Sub(h.lastResetTime) < h.nativeHistogramMinResetDuration { -+ return false -+ } -+ // Completely reset coldCounts. -+ h.resetCounts(cold) -+ // Repeat the latest observation to not lose it completely. -+ cold.observe(value, bucket, true) -+ // Make coldCounts the new hot counts while ressetting countAndHotIdx. -+ n := atomic.SwapUint64(&h.countAndHotIdx, (coldIdx<<63)+1) -+ count := n & ((1 << 63) - 1) -+ waitForCooldown(count, hot) -+ // Finally, reset the formerly hot counts, too. -+ h.resetCounts(hot) -+ h.lastResetTime = h.now() -+ return true -+} -+ -+// maybeWidenZeroBucket widens the zero bucket until it includes the existing -+// buckets closest to the zero bucket (which could be two, if an equidistant -+// negative and a positive bucket exists, but usually it's only one bucket to be -+// merged into the new wider zero bucket). h.nativeHistogramMaxZeroThreshold -+// limits how far the zero bucket can be extended, and if that's not enough to -+// include an existing bucket, the method returns false. The caller must have -+// locked h.mtx. -+func (h *histogram) maybeWidenZeroBucket(hot, cold *histogramCounts) bool { -+ currentZeroThreshold := math.Float64frombits(atomic.LoadUint64(&hot.nativeHistogramZeroThresholdBits)) -+ if currentZeroThreshold >= h.nativeHistogramMaxZeroThreshold { -+ return false -+ } -+ // Find the key of the bucket closest to zero. -+ smallestKey := findSmallestKey(&hot.nativeHistogramBucketsPositive) -+ smallestNegativeKey := findSmallestKey(&hot.nativeHistogramBucketsNegative) -+ if smallestNegativeKey < smallestKey { -+ smallestKey = smallestNegativeKey -+ } -+ if smallestKey == math.MaxInt32 { -+ return false -+ } -+ newZeroThreshold := getLe(smallestKey, atomic.LoadInt32(&hot.nativeHistogramSchema)) -+ if newZeroThreshold > h.nativeHistogramMaxZeroThreshold { -+ return false // New threshold would exceed the max threshold. -+ } -+ atomic.StoreUint64(&cold.nativeHistogramZeroThresholdBits, math.Float64bits(newZeroThreshold)) -+ // Remove applicable buckets. -+ if _, loaded := cold.nativeHistogramBucketsNegative.LoadAndDelete(smallestKey); loaded { -+ atomicDecUint32(&cold.nativeHistogramBucketsNumber) -+ } -+ if _, loaded := cold.nativeHistogramBucketsPositive.LoadAndDelete(smallestKey); loaded { -+ atomicDecUint32(&cold.nativeHistogramBucketsNumber) -+ } -+ // Make cold counts the new hot counts. -+ n := atomic.AddUint64(&h.countAndHotIdx, 1<<63) -+ count := n & ((1 << 63) - 1) -+ // Swap the pointer names to represent the new roles and make -+ // the rest less confusing. -+ hot, cold = cold, hot -+ waitForCooldown(count, cold) -+ // Add all the now cold counts to the new hot counts... -+ addAndResetCounts(hot, cold) -+ // ...adjust the new zero threshold in the cold counts, too... -+ atomic.StoreUint64(&cold.nativeHistogramZeroThresholdBits, math.Float64bits(newZeroThreshold)) -+ // ...and then merge the newly deleted buckets into the wider zero -+ // bucket. -+ mergeAndDeleteOrAddAndReset := func(hotBuckets, coldBuckets *sync.Map) func(k, v interface{}) bool { -+ return func(k, v interface{}) bool { -+ key := k.(int) -+ bucket := v.(*int64) -+ if key == smallestKey { -+ // Merge into hot zero bucket... -+ atomic.AddUint64(&hot.nativeHistogramZeroBucket, uint64(atomic.LoadInt64(bucket))) -+ // ...and delete from cold counts. -+ coldBuckets.Delete(key) -+ atomicDecUint32(&cold.nativeHistogramBucketsNumber) -+ } else { -+ // Add to corresponding hot bucket... -+ if addToBucket(hotBuckets, key, atomic.LoadInt64(bucket)) { -+ atomic.AddUint32(&hot.nativeHistogramBucketsNumber, 1) -+ } -+ // ...and reset cold bucket. -+ atomic.StoreInt64(bucket, 0) -+ } -+ return true -+ } -+ } -+ -+ cold.nativeHistogramBucketsPositive.Range(mergeAndDeleteOrAddAndReset(&hot.nativeHistogramBucketsPositive, &cold.nativeHistogramBucketsPositive)) -+ cold.nativeHistogramBucketsNegative.Range(mergeAndDeleteOrAddAndReset(&hot.nativeHistogramBucketsNegative, &cold.nativeHistogramBucketsNegative)) -+ return true -+} -+ -+// doubleBucketWidth doubles the bucket width (by decrementing the schema -+// number). Note that very sparse buckets could lead to a low reduction of the -+// bucket count (or even no reduction at all). The method does nothing if the -+// schema is already -4. -+func (h *histogram) doubleBucketWidth(hot, cold *histogramCounts) { -+ coldSchema := atomic.LoadInt32(&cold.nativeHistogramSchema) -+ if coldSchema == -4 { -+ return // Already at lowest resolution. -+ } -+ coldSchema-- -+ atomic.StoreInt32(&cold.nativeHistogramSchema, coldSchema) -+ // Play it simple and just delete all cold buckets. -+ atomic.StoreUint32(&cold.nativeHistogramBucketsNumber, 0) -+ deleteSyncMap(&cold.nativeHistogramBucketsNegative) -+ deleteSyncMap(&cold.nativeHistogramBucketsPositive) -+ // Make coldCounts the new hot counts. -+ n := atomic.AddUint64(&h.countAndHotIdx, 1<<63) -+ count := n & ((1 << 63) - 1) -+ // Swap the pointer names to represent the new roles and make -+ // the rest less confusing. -+ hot, cold = cold, hot -+ waitForCooldown(count, cold) -+ // Add all the now cold counts to the new hot counts... -+ addAndResetCounts(hot, cold) -+ // ...adjust the schema in the cold counts, too... -+ atomic.StoreInt32(&cold.nativeHistogramSchema, coldSchema) -+ // ...and then merge the cold buckets into the wider hot buckets. -+ merge := func(hotBuckets *sync.Map) func(k, v interface{}) bool { -+ return func(k, v interface{}) bool { -+ key := k.(int) -+ bucket := v.(*int64) -+ // Adjust key to match the bucket to merge into. -+ if key > 0 { -+ key++ -+ } -+ key /= 2 -+ // Add to corresponding hot bucket. -+ if addToBucket(hotBuckets, key, atomic.LoadInt64(bucket)) { -+ atomic.AddUint32(&hot.nativeHistogramBucketsNumber, 1) -+ } -+ return true -+ } -+ } -+ -+ cold.nativeHistogramBucketsPositive.Range(merge(&hot.nativeHistogramBucketsPositive)) -+ cold.nativeHistogramBucketsNegative.Range(merge(&hot.nativeHistogramBucketsNegative)) -+ // Play it simple again and just delete all cold buckets. -+ atomic.StoreUint32(&cold.nativeHistogramBucketsNumber, 0) -+ deleteSyncMap(&cold.nativeHistogramBucketsNegative) -+ deleteSyncMap(&cold.nativeHistogramBucketsPositive) -+} -+ -+func (h *histogram) resetCounts(counts *histogramCounts) { -+ atomic.StoreUint64(&counts.sumBits, 0) -+ atomic.StoreUint64(&counts.count, 0) -+ atomic.StoreUint64(&counts.nativeHistogramZeroBucket, 0) -+ atomic.StoreUint64(&counts.nativeHistogramZeroThresholdBits, math.Float64bits(h.nativeHistogramZeroThreshold)) -+ atomic.StoreInt32(&counts.nativeHistogramSchema, h.nativeHistogramSchema) -+ atomic.StoreUint32(&counts.nativeHistogramBucketsNumber, 0) -+ for i := range h.upperBounds { -+ atomic.StoreUint64(&counts.buckets[i], 0) -+ } -+ deleteSyncMap(&counts.nativeHistogramBucketsNegative) -+ deleteSyncMap(&counts.nativeHistogramBucketsPositive) -+} -+ -+// updateExemplar replaces the exemplar for the provided bucket. With empty -+// labels, it's a no-op. It panics if any of the labels is invalid. -+func (h *histogram) updateExemplar(v float64, bucket int, l Labels) { -+ if l == nil { -+ return -+ } -+ e, err := newExemplar(v, h.now(), l) -+ if err != nil { -+ panic(err) -+ } -+ h.exemplars[bucket].Store(e) -+} -+ -+// HistogramVec is a Collector that bundles a set of Histograms that all share the -+// same Desc, but have different values for their variable labels. This is used -+// if you want to count the same thing partitioned by various dimensions -+// (e.g. HTTP request latencies, partitioned by status code and method). Create -+// instances with NewHistogramVec. -+type HistogramVec struct { -+ *MetricVec -+} -+ -+// NewHistogramVec creates a new HistogramVec based on the provided HistogramOpts and -+// partitioned by the given label names. -+func NewHistogramVec(opts HistogramOpts, labelNames []string) *HistogramVec { -+ desc := NewDesc( -+ BuildFQName(opts.Namespace, opts.Subsystem, opts.Name), -+ opts.Help, -+ labelNames, -+ opts.ConstLabels, -+ ) -+ return &HistogramVec{ -+ MetricVec: NewMetricVec(desc, func(lvs ...string) Metric { -+ return newHistogram(desc, opts, lvs...) -+ }), -+ } -+} -+ -+// GetMetricWithLabelValues returns the Histogram for the given slice of label -+// values (same order as the variable labels in Desc). If that combination of -+// label values is accessed for the first time, a new Histogram is created. -+// -+// It is possible to call this method without using the returned Histogram to only -+// create the new Histogram but leave it at its starting value, a Histogram without -+// any observations. -+// -+// Keeping the Histogram for later use is possible (and should be considered if -+// performance is critical), but keep in mind that Reset, DeleteLabelValues and -+// Delete can be used to delete the Histogram from the HistogramVec. In that case, the -+// Histogram will still exist, but it will not be exported anymore, even if a -+// Histogram with the same label values is created later. See also the CounterVec -+// example. -+// -+// An error is returned if the number of label values is not the same as the -+// number of variable labels in Desc (minus any curried labels). -+// -+// Note that for more than one label value, this method is prone to mistakes -+// caused by an incorrect order of arguments. Consider GetMetricWith(Labels) as -+// an alternative to avoid that type of mistake. For higher label numbers, the -+// latter has a much more readable (albeit more verbose) syntax, but it comes -+// with a performance overhead (for creating and processing the Labels map). -+// See also the GaugeVec example. -+func (v *HistogramVec) GetMetricWithLabelValues(lvs ...string) (Observer, error) { -+ metric, err := v.MetricVec.GetMetricWithLabelValues(lvs...) -+ if metric != nil { -+ return metric.(Observer), err -+ } -+ return nil, err -+} -+ -+// GetMetricWith returns the Histogram for the given Labels map (the label names -+// must match those of the variable labels in Desc). If that label map is -+// accessed for the first time, a new Histogram is created. Implications of -+// creating a Histogram without using it and keeping the Histogram for later use -+// are the same as for GetMetricWithLabelValues. -+// -+// An error is returned if the number and names of the Labels are inconsistent -+// with those of the variable labels in Desc (minus any curried labels). -+// -+// This method is used for the same purpose as -+// GetMetricWithLabelValues(...string). See there for pros and cons of the two -+// methods. -+func (v *HistogramVec) GetMetricWith(labels Labels) (Observer, error) { -+ metric, err := v.MetricVec.GetMetricWith(labels) -+ if metric != nil { -+ return metric.(Observer), err -+ } -+ return nil, err -+} -+ -+// WithLabelValues works as GetMetricWithLabelValues, but panics where -+// GetMetricWithLabelValues would have returned an error. Not returning an -+// error allows shortcuts like -+// -+// myVec.WithLabelValues("404", "GET").Observe(42.21) -+func (v *HistogramVec) WithLabelValues(lvs ...string) Observer { -+ h, err := v.GetMetricWithLabelValues(lvs...) -+ if err != nil { -+ panic(err) -+ } -+ return h -+} -+ -+// With works as GetMetricWith but panics where GetMetricWithLabels would have -+// returned an error. Not returning an error allows shortcuts like -+// -+// myVec.With(prometheus.Labels{"code": "404", "method": "GET"}).Observe(42.21) -+func (v *HistogramVec) With(labels Labels) Observer { -+ h, err := v.GetMetricWith(labels) -+ if err != nil { -+ panic(err) -+ } -+ return h -+} -+ -+// CurryWith returns a vector curried with the provided labels, i.e. the -+// returned vector has those labels pre-set for all labeled operations performed -+// on it. The cardinality of the curried vector is reduced accordingly. The -+// order of the remaining labels stays the same (just with the curried labels -+// taken out of the sequence – which is relevant for the -+// (GetMetric)WithLabelValues methods). It is possible to curry a curried -+// vector, but only with labels not yet used for currying before. -+// -+// The metrics contained in the HistogramVec are shared between the curried and -+// uncurried vectors. They are just accessed differently. Curried and uncurried -+// vectors behave identically in terms of collection. Only one must be -+// registered with a given registry (usually the uncurried version). The Reset -+// method deletes all metrics, even if called on a curried vector. -+func (v *HistogramVec) CurryWith(labels Labels) (ObserverVec, error) { -+ vec, err := v.MetricVec.CurryWith(labels) -+ if vec != nil { -+ return &HistogramVec{vec}, err -+ } -+ return nil, err -+} -+ -+// MustCurryWith works as CurryWith but panics where CurryWith would have -+// returned an error. -+func (v *HistogramVec) MustCurryWith(labels Labels) ObserverVec { -+ vec, err := v.CurryWith(labels) -+ if err != nil { -+ panic(err) -+ } -+ return vec -+} -+ -+type constHistogram struct { -+ desc *Desc -+ count uint64 -+ sum float64 -+ buckets map[float64]uint64 -+ labelPairs []*dto.LabelPair -+} -+ -+func (h *constHistogram) Desc() *Desc { -+ return h.desc -+} -+ -+func (h *constHistogram) Write(out *dto.Metric) error { -+ his := &dto.Histogram{} -+ -+ buckets := make([]*dto.Bucket, 0, len(h.buckets)) -+ -+ his.SampleCount = proto.Uint64(h.count) -+ his.SampleSum = proto.Float64(h.sum) -+ for upperBound, count := range h.buckets { -+ buckets = append(buckets, &dto.Bucket{ -+ CumulativeCount: proto.Uint64(count), -+ UpperBound: proto.Float64(upperBound), -+ }) -+ } -+ -+ if len(buckets) > 0 { -+ sort.Sort(buckSort(buckets)) -+ } -+ his.Bucket = buckets -+ -+ out.Histogram = his -+ out.Label = h.labelPairs -+ -+ return nil -+} -+ -+// NewConstHistogram returns a metric representing a Prometheus histogram with -+// fixed values for the count, sum, and bucket counts. As those parameters -+// cannot be changed, the returned value does not implement the Histogram -+// interface (but only the Metric interface). Users of this package will not -+// have much use for it in regular operations. However, when implementing custom -+// Collectors, it is useful as a throw-away metric that is generated on the fly -+// to send it to Prometheus in the Collect method. -+// -+// buckets is a map of upper bounds to cumulative counts, excluding the +Inf -+// bucket. The +Inf bucket is implicit, and its value is equal to the provided count. -+// -+// NewConstHistogram returns an error if the length of labelValues is not -+// consistent with the variable labels in Desc or if Desc is invalid. -+func NewConstHistogram( -+ desc *Desc, -+ count uint64, -+ sum float64, -+ buckets map[float64]uint64, -+ labelValues ...string, -+) (Metric, error) { -+ if desc.err != nil { -+ return nil, desc.err -+ } -+ if err := validateLabelValues(labelValues, len(desc.variableLabels)); err != nil { -+ return nil, err -+ } -+ return &constHistogram{ -+ desc: desc, -+ count: count, -+ sum: sum, -+ buckets: buckets, -+ labelPairs: MakeLabelPairs(desc, labelValues), -+ }, nil -+} -+ -+// MustNewConstHistogram is a version of NewConstHistogram that panics where -+// NewConstHistogram would have returned an error. -+func MustNewConstHistogram( -+ desc *Desc, -+ count uint64, -+ sum float64, -+ buckets map[float64]uint64, -+ labelValues ...string, -+) Metric { -+ m, err := NewConstHistogram(desc, count, sum, buckets, labelValues...) -+ if err != nil { -+ panic(err) -+ } -+ return m -+} -+ -+type buckSort []*dto.Bucket -+ -+func (s buckSort) Len() int { -+ return len(s) -+} -+ -+func (s buckSort) Swap(i, j int) { -+ s[i], s[j] = s[j], s[i] -+} -+ -+func (s buckSort) Less(i, j int) bool { -+ return s[i].GetUpperBound() < s[j].GetUpperBound() -+} -+ -+// pickSchema returns the largest number n between -4 and 8 such that -+// 2^(2^-n) is less or equal the provided bucketFactor. -+// -+// Special cases: -+// - bucketFactor <= 1: panics. -+// - bucketFactor < 2^(2^-8) (but > 1): still returns 8. -+func pickSchema(bucketFactor float64) int32 { -+ if bucketFactor <= 1 { -+ panic(fmt.Errorf("bucketFactor %f is <=1", bucketFactor)) -+ } -+ floor := math.Floor(math.Log2(math.Log2(bucketFactor))) -+ switch { -+ case floor <= -8: -+ return 8 -+ case floor >= 4: -+ return -4 -+ default: -+ return -int32(floor) -+ } -+} -+ -+func makeBuckets(buckets *sync.Map) ([]*dto.BucketSpan, []int64) { -+ var ii []int -+ buckets.Range(func(k, v interface{}) bool { -+ ii = append(ii, k.(int)) -+ return true -+ }) -+ sort.Ints(ii) -+ -+ if len(ii) == 0 { -+ return nil, nil -+ } -+ -+ var ( -+ spans []*dto.BucketSpan -+ deltas []int64 -+ prevCount int64 -+ nextI int -+ ) -+ -+ appendDelta := func(count int64) { -+ *spans[len(spans)-1].Length++ -+ deltas = append(deltas, count-prevCount) -+ prevCount = count -+ } -+ -+ for n, i := range ii { -+ v, _ := buckets.Load(i) -+ count := atomic.LoadInt64(v.(*int64)) -+ // Multiple spans with only small gaps in between are probably -+ // encoded more efficiently as one larger span with a few empty -+ // buckets. Needs some research to find the sweet spot. For now, -+ // we assume that gaps of one ore two buckets should not create -+ // a new span. -+ iDelta := int32(i - nextI) -+ if n == 0 || iDelta > 2 { -+ // We have to create a new span, either because we are -+ // at the very beginning, or because we have found a gap -+ // of more than two buckets. -+ spans = append(spans, &dto.BucketSpan{ -+ Offset: proto.Int32(iDelta), -+ Length: proto.Uint32(0), -+ }) -+ } else { -+ // We have found a small gap (or no gap at all). -+ // Insert empty buckets as needed. -+ for j := int32(0); j < iDelta; j++ { -+ appendDelta(0) -+ } -+ } -+ appendDelta(count) -+ nextI = i + 1 -+ } -+ return spans, deltas -+} -+ -+// addToBucket increments the sparse bucket at key by the provided amount. It -+// returns true if a new sparse bucket had to be created for that. -+func addToBucket(buckets *sync.Map, key int, increment int64) bool { -+ if existingBucket, ok := buckets.Load(key); ok { -+ // Fast path without allocation. -+ atomic.AddInt64(existingBucket.(*int64), increment) -+ return false -+ } -+ // Bucket doesn't exist yet. Slow path allocating new counter. -+ newBucket := increment // TODO(beorn7): Check if this is sufficient to not let increment escape. -+ if actualBucket, loaded := buckets.LoadOrStore(key, &newBucket); loaded { -+ // The bucket was created concurrently in another goroutine. -+ // Have to increment after all. -+ atomic.AddInt64(actualBucket.(*int64), increment) -+ return false -+ } -+ return true -+} -+ -+// addAndReset returns a function to be used with sync.Map.Range of spare -+// buckets in coldCounts. It increments the buckets in the provided hotBuckets -+// according to the buckets ranged through. It then resets all buckets ranged -+// through to 0 (but leaves them in place so that they don't need to get -+// recreated on the next scrape). -+func addAndReset(hotBuckets *sync.Map, bucketNumber *uint32) func(k, v interface{}) bool { -+ return func(k, v interface{}) bool { -+ bucket := v.(*int64) -+ if addToBucket(hotBuckets, k.(int), atomic.LoadInt64(bucket)) { -+ atomic.AddUint32(bucketNumber, 1) -+ } -+ atomic.StoreInt64(bucket, 0) -+ return true -+ } -+} -+ -+func deleteSyncMap(m *sync.Map) { -+ m.Range(func(k, v interface{}) bool { -+ m.Delete(k) -+ return true -+ }) -+} -+ -+func findSmallestKey(m *sync.Map) int { -+ result := math.MaxInt32 -+ m.Range(func(k, v interface{}) bool { -+ key := k.(int) -+ if key < result { -+ result = key -+ } -+ return true -+ }) -+ return result -+} -+ -+func getLe(key int, schema int32) float64 { -+ // Here a bit of context about the behavior for the last bucket counting -+ // regular numbers (called simply "last bucket" below) and the bucket -+ // counting observations of ±Inf (called "inf bucket" below, with a key -+ // one higher than that of the "last bucket"): -+ // -+ // If we apply the usual formula to the last bucket, its upper bound -+ // would be calculated as +Inf. The reason is that the max possible -+ // regular float64 number (math.MaxFloat64) doesn't coincide with one of -+ // the calculated bucket boundaries. So the calculated boundary has to -+ // be larger than math.MaxFloat64, and the only float64 larger than -+ // math.MaxFloat64 is +Inf. However, we want to count actual -+ // observations of ±Inf in the inf bucket. Therefore, we have to treat -+ // the upper bound of the last bucket specially and set it to -+ // math.MaxFloat64. (The upper bound of the inf bucket, with its key -+ // being one higher than that of the last bucket, naturally comes out as -+ // +Inf by the usual formula. So that's fine.) -+ // -+ // math.MaxFloat64 has a frac of 0.9999999999999999 and an exp of -+ // 1024. If there were a float64 number following math.MaxFloat64, it -+ // would have a frac of 1.0 and an exp of 1024, or equivalently a frac -+ // of 0.5 and an exp of 1025. However, since frac must be smaller than -+ // 1, and exp must be smaller than 1025, either representation overflows -+ // a float64. (Which, in turn, is the reason that math.MaxFloat64 is the -+ // largest possible float64. Q.E.D.) However, the formula for -+ // calculating the upper bound from the idx and schema of the last -+ // bucket results in precisely that. It is either frac=1.0 & exp=1024 -+ // (for schema < 0) or frac=0.5 & exp=1025 (for schema >=0). (This is, -+ // by the way, a power of two where the exponent itself is a power of -+ // two, 2¹⁰ in fact, which coinicides with a bucket boundary in all -+ // schemas.) So these are the special cases we have to catch below. -+ if schema < 0 { -+ exp := key << -schema -+ if exp == 1024 { -+ // This is the last bucket before the overflow bucket -+ // (for ±Inf observations). Return math.MaxFloat64 as -+ // explained above. -+ return math.MaxFloat64 -+ } -+ return math.Ldexp(1, exp) -+ } -+ -+ fracIdx := key & ((1 << schema) - 1) -+ frac := nativeHistogramBounds[schema][fracIdx] -+ exp := (key >> schema) + 1 -+ if frac == 0.5 && exp == 1025 { -+ // This is the last bucket before the overflow bucket (for ±Inf -+ // observations). Return math.MaxFloat64 as explained above. -+ return math.MaxFloat64 -+ } -+ return math.Ldexp(frac, exp) -+} -+ -+// waitForCooldown returns after the count field in the provided histogramCounts -+// has reached the provided count value. -+func waitForCooldown(count uint64, counts *histogramCounts) { -+ for count != atomic.LoadUint64(&counts.count) { -+ runtime.Gosched() // Let observations get work done. -+ } -+} -+ -+// atomicAddFloat adds the provided float atomically to another float -+// represented by the bit pattern the bits pointer is pointing to. -+func atomicAddFloat(bits *uint64, v float64) { -+ for { -+ loadedBits := atomic.LoadUint64(bits) -+ newBits := math.Float64bits(math.Float64frombits(loadedBits) + v) -+ if atomic.CompareAndSwapUint64(bits, loadedBits, newBits) { -+ break -+ } -+ } -+} -+ -+// atomicDecUint32 atomically decrements the uint32 p points to. See -+// https://pkg.go.dev/sync/atomic#AddUint32 to understand how this is done. -+func atomicDecUint32(p *uint32) { -+ atomic.AddUint32(p, ^uint32(0)) -+} -+ -+// addAndResetCounts adds certain fields (count, sum, conventional buckets, zero -+// bucket) from the cold counts to the corresponding fields in the hot -+// counts. Those fields are then reset to 0 in the cold counts. -+func addAndResetCounts(hot, cold *histogramCounts) { -+ atomic.AddUint64(&hot.count, atomic.LoadUint64(&cold.count)) -+ atomic.StoreUint64(&cold.count, 0) -+ coldSum := math.Float64frombits(atomic.LoadUint64(&cold.sumBits)) -+ atomicAddFloat(&hot.sumBits, coldSum) -+ atomic.StoreUint64(&cold.sumBits, 0) -+ for i := range hot.buckets { -+ atomic.AddUint64(&hot.buckets[i], atomic.LoadUint64(&cold.buckets[i])) -+ atomic.StoreUint64(&cold.buckets[i], 0) -+ } -+ atomic.AddUint64(&hot.nativeHistogramZeroBucket, atomic.LoadUint64(&cold.nativeHistogramZeroBucket)) -+ atomic.StoreUint64(&cold.nativeHistogramZeroBucket, 0) -+} -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/internal/almost_equal.go b/vendor/github.com/prometheus/client_golang/prometheus/internal/almost_equal.go -new file mode 100755 -index 0000000..1ed5abe ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/internal/almost_equal.go -@@ -0,0 +1,60 @@ -+// Copyright (c) 2015 Björn Rabenstein -+// -+// 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. -+// -+// The code in this package is copy/paste to avoid a dependency. Hence this file -+// carries the copyright of the original repo. -+// https://github.com/beorn7/floats -+package internal -+ -+import ( -+ "math" -+) -+ -+// minNormalFloat64 is the smallest positive normal value of type float64. -+var minNormalFloat64 = math.Float64frombits(0x0010000000000000) -+ -+// AlmostEqualFloat64 returns true if a and b are equal within a relative error -+// of epsilon. See http://floating-point-gui.de/errors/comparison/ for the -+// details of the applied method. -+func AlmostEqualFloat64(a, b, epsilon float64) bool { -+ if a == b { -+ return true -+ } -+ absA := math.Abs(a) -+ absB := math.Abs(b) -+ diff := math.Abs(a - b) -+ if a == 0 || b == 0 || absA+absB < minNormalFloat64 { -+ return diff < epsilon*minNormalFloat64 -+ } -+ return diff/math.Min(absA+absB, math.MaxFloat64) < epsilon -+} -+ -+// AlmostEqualFloat64s is the slice form of AlmostEqualFloat64. -+func AlmostEqualFloat64s(a, b []float64, epsilon float64) bool { -+ if len(a) != len(b) { -+ return false -+ } -+ for i := range a { -+ if !AlmostEqualFloat64(a[i], b[i], epsilon) { -+ return false -+ } -+ } -+ return true -+} -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/internal/difflib.go b/vendor/github.com/prometheus/client_golang/prometheus/internal/difflib.go -new file mode 100755 -index 0000000..fd0750f ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/internal/difflib.go -@@ -0,0 +1,654 @@ -+// Copyright 2022 The Prometheus 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. -+// -+// It provides tools to compare sequences of strings and generate textual diffs. -+// -+// Maintaining `GetUnifiedDiffString` here because original repository -+// (https://github.com/pmezard/go-difflib) is no loger maintained. -+package internal -+ -+import ( -+ "bufio" -+ "bytes" -+ "fmt" -+ "io" -+ "strings" -+) -+ -+func min(a, b int) int { -+ if a < b { -+ return a -+ } -+ return b -+} -+ -+func max(a, b int) int { -+ if a > b { -+ return a -+ } -+ return b -+} -+ -+func calculateRatio(matches, length int) float64 { -+ if length > 0 { -+ return 2.0 * float64(matches) / float64(length) -+ } -+ return 1.0 -+} -+ -+type Match struct { -+ A int -+ B int -+ Size int -+} -+ -+type OpCode struct { -+ Tag byte -+ I1 int -+ I2 int -+ J1 int -+ J2 int -+} -+ -+// SequenceMatcher compares sequence of strings. The basic -+// algorithm predates, and is a little fancier than, an algorithm -+// published in the late 1980's by Ratcliff and Obershelp under the -+// hyperbolic name "gestalt pattern matching". The basic idea is to find -+// the longest contiguous matching subsequence that contains no "junk" -+// elements (R-O doesn't address junk). The same idea is then applied -+// recursively to the pieces of the sequences to the left and to the right -+// of the matching subsequence. This does not yield minimal edit -+// sequences, but does tend to yield matches that "look right" to people. -+// -+// SequenceMatcher tries to compute a "human-friendly diff" between two -+// sequences. Unlike e.g. UNIX(tm) diff, the fundamental notion is the -+// longest *contiguous* & junk-free matching subsequence. That's what -+// catches peoples' eyes. The Windows(tm) windiff has another interesting -+// notion, pairing up elements that appear uniquely in each sequence. -+// That, and the method here, appear to yield more intuitive difference -+// reports than does diff. This method appears to be the least vulnerable -+// to synching up on blocks of "junk lines", though (like blank lines in -+// ordinary text files, or maybe "

" lines in HTML files). That may be -+// because this is the only method of the 3 that has a *concept* of -+// "junk" . -+// -+// Timing: Basic R-O is cubic time worst case and quadratic time expected -+// case. SequenceMatcher is quadratic time for the worst case and has -+// expected-case behavior dependent in a complicated way on how many -+// elements the sequences have in common; best case time is linear. -+type SequenceMatcher struct { -+ a []string -+ b []string -+ b2j map[string][]int -+ IsJunk func(string) bool -+ autoJunk bool -+ bJunk map[string]struct{} -+ matchingBlocks []Match -+ fullBCount map[string]int -+ bPopular map[string]struct{} -+ opCodes []OpCode -+} -+ -+func NewMatcher(a, b []string) *SequenceMatcher { -+ m := SequenceMatcher{autoJunk: true} -+ m.SetSeqs(a, b) -+ return &m -+} -+ -+func NewMatcherWithJunk(a, b []string, autoJunk bool, -+ isJunk func(string) bool, -+) *SequenceMatcher { -+ m := SequenceMatcher{IsJunk: isJunk, autoJunk: autoJunk} -+ m.SetSeqs(a, b) -+ return &m -+} -+ -+// Set two sequences to be compared. -+func (m *SequenceMatcher) SetSeqs(a, b []string) { -+ m.SetSeq1(a) -+ m.SetSeq2(b) -+} -+ -+// Set the first sequence to be compared. The second sequence to be compared is -+// not changed. -+// -+// SequenceMatcher computes and caches detailed information about the second -+// sequence, so if you want to compare one sequence S against many sequences, -+// use .SetSeq2(s) once and call .SetSeq1(x) repeatedly for each of the other -+// sequences. -+// -+// See also SetSeqs() and SetSeq2(). -+func (m *SequenceMatcher) SetSeq1(a []string) { -+ if &a == &m.a { -+ return -+ } -+ m.a = a -+ m.matchingBlocks = nil -+ m.opCodes = nil -+} -+ -+// Set the second sequence to be compared. The first sequence to be compared is -+// not changed. -+func (m *SequenceMatcher) SetSeq2(b []string) { -+ if &b == &m.b { -+ return -+ } -+ m.b = b -+ m.matchingBlocks = nil -+ m.opCodes = nil -+ m.fullBCount = nil -+ m.chainB() -+} -+ -+func (m *SequenceMatcher) chainB() { -+ // Populate line -> index mapping -+ b2j := map[string][]int{} -+ for i, s := range m.b { -+ indices := b2j[s] -+ indices = append(indices, i) -+ b2j[s] = indices -+ } -+ -+ // Purge junk elements -+ m.bJunk = map[string]struct{}{} -+ if m.IsJunk != nil { -+ junk := m.bJunk -+ for s := range b2j { -+ if m.IsJunk(s) { -+ junk[s] = struct{}{} -+ } -+ } -+ for s := range junk { -+ delete(b2j, s) -+ } -+ } -+ -+ // Purge remaining popular elements -+ popular := map[string]struct{}{} -+ n := len(m.b) -+ if m.autoJunk && n >= 200 { -+ ntest := n/100 + 1 -+ for s, indices := range b2j { -+ if len(indices) > ntest { -+ popular[s] = struct{}{} -+ } -+ } -+ for s := range popular { -+ delete(b2j, s) -+ } -+ } -+ m.bPopular = popular -+ m.b2j = b2j -+} -+ -+func (m *SequenceMatcher) isBJunk(s string) bool { -+ _, ok := m.bJunk[s] -+ return ok -+} -+ -+// Find longest matching block in a[alo:ahi] and b[blo:bhi]. -+// -+// If IsJunk is not defined: -+// -+// Return (i,j,k) such that a[i:i+k] is equal to b[j:j+k], where -+// -+// alo <= i <= i+k <= ahi -+// blo <= j <= j+k <= bhi -+// -+// and for all (i',j',k') meeting those conditions, -+// -+// k >= k' -+// i <= i' -+// and if i == i', j <= j' -+// -+// In other words, of all maximal matching blocks, return one that -+// starts earliest in a, and of all those maximal matching blocks that -+// start earliest in a, return the one that starts earliest in b. -+// -+// If IsJunk is defined, first the longest matching block is -+// determined as above, but with the additional restriction that no -+// junk element appears in the block. Then that block is extended as -+// far as possible by matching (only) junk elements on both sides. So -+// the resulting block never matches on junk except as identical junk -+// happens to be adjacent to an "interesting" match. -+// -+// If no blocks match, return (alo, blo, 0). -+func (m *SequenceMatcher) findLongestMatch(alo, ahi, blo, bhi int) Match { -+ // CAUTION: stripping common prefix or suffix would be incorrect. -+ // E.g., -+ // ab -+ // acab -+ // Longest matching block is "ab", but if common prefix is -+ // stripped, it's "a" (tied with "b"). UNIX(tm) diff does so -+ // strip, so ends up claiming that ab is changed to acab by -+ // inserting "ca" in the middle. That's minimal but unintuitive: -+ // "it's obvious" that someone inserted "ac" at the front. -+ // Windiff ends up at the same place as diff, but by pairing up -+ // the unique 'b's and then matching the first two 'a's. -+ besti, bestj, bestsize := alo, blo, 0 -+ -+ // find longest junk-free match -+ // during an iteration of the loop, j2len[j] = length of longest -+ // junk-free match ending with a[i-1] and b[j] -+ j2len := map[int]int{} -+ for i := alo; i != ahi; i++ { -+ // look at all instances of a[i] in b; note that because -+ // b2j has no junk keys, the loop is skipped if a[i] is junk -+ newj2len := map[int]int{} -+ for _, j := range m.b2j[m.a[i]] { -+ // a[i] matches b[j] -+ if j < blo { -+ continue -+ } -+ if j >= bhi { -+ break -+ } -+ k := j2len[j-1] + 1 -+ newj2len[j] = k -+ if k > bestsize { -+ besti, bestj, bestsize = i-k+1, j-k+1, k -+ } -+ } -+ j2len = newj2len -+ } -+ -+ // Extend the best by non-junk elements on each end. In particular, -+ // "popular" non-junk elements aren't in b2j, which greatly speeds -+ // the inner loop above, but also means "the best" match so far -+ // doesn't contain any junk *or* popular non-junk elements. -+ for besti > alo && bestj > blo && !m.isBJunk(m.b[bestj-1]) && -+ m.a[besti-1] == m.b[bestj-1] { -+ besti, bestj, bestsize = besti-1, bestj-1, bestsize+1 -+ } -+ for besti+bestsize < ahi && bestj+bestsize < bhi && -+ !m.isBJunk(m.b[bestj+bestsize]) && -+ m.a[besti+bestsize] == m.b[bestj+bestsize] { -+ bestsize++ -+ } -+ -+ // Now that we have a wholly interesting match (albeit possibly -+ // empty!), we may as well suck up the matching junk on each -+ // side of it too. Can't think of a good reason not to, and it -+ // saves post-processing the (possibly considerable) expense of -+ // figuring out what to do with it. In the case of an empty -+ // interesting match, this is clearly the right thing to do, -+ // because no other kind of match is possible in the regions. -+ for besti > alo && bestj > blo && m.isBJunk(m.b[bestj-1]) && -+ m.a[besti-1] == m.b[bestj-1] { -+ besti, bestj, bestsize = besti-1, bestj-1, bestsize+1 -+ } -+ for besti+bestsize < ahi && bestj+bestsize < bhi && -+ m.isBJunk(m.b[bestj+bestsize]) && -+ m.a[besti+bestsize] == m.b[bestj+bestsize] { -+ bestsize++ -+ } -+ -+ return Match{A: besti, B: bestj, Size: bestsize} -+} -+ -+// Return list of triples describing matching subsequences. -+// -+// Each triple is of the form (i, j, n), and means that -+// a[i:i+n] == b[j:j+n]. The triples are monotonically increasing in -+// i and in j. It's also guaranteed that if (i, j, n) and (i', j', n') are -+// adjacent triples in the list, and the second is not the last triple in the -+// list, then i+n != i' or j+n != j'. IOW, adjacent triples never describe -+// adjacent equal blocks. -+// -+// The last triple is a dummy, (len(a), len(b), 0), and is the only -+// triple with n==0. -+func (m *SequenceMatcher) GetMatchingBlocks() []Match { -+ if m.matchingBlocks != nil { -+ return m.matchingBlocks -+ } -+ -+ var matchBlocks func(alo, ahi, blo, bhi int, matched []Match) []Match -+ matchBlocks = func(alo, ahi, blo, bhi int, matched []Match) []Match { -+ match := m.findLongestMatch(alo, ahi, blo, bhi) -+ i, j, k := match.A, match.B, match.Size -+ if match.Size > 0 { -+ if alo < i && blo < j { -+ matched = matchBlocks(alo, i, blo, j, matched) -+ } -+ matched = append(matched, match) -+ if i+k < ahi && j+k < bhi { -+ matched = matchBlocks(i+k, ahi, j+k, bhi, matched) -+ } -+ } -+ return matched -+ } -+ matched := matchBlocks(0, len(m.a), 0, len(m.b), nil) -+ -+ // It's possible that we have adjacent equal blocks in the -+ // matching_blocks list now. -+ nonAdjacent := []Match{} -+ i1, j1, k1 := 0, 0, 0 -+ for _, b := range matched { -+ // Is this block adjacent to i1, j1, k1? -+ i2, j2, k2 := b.A, b.B, b.Size -+ if i1+k1 == i2 && j1+k1 == j2 { -+ // Yes, so collapse them -- this just increases the length of -+ // the first block by the length of the second, and the first -+ // block so lengthened remains the block to compare against. -+ k1 += k2 -+ } else { -+ // Not adjacent. Remember the first block (k1==0 means it's -+ // the dummy we started with), and make the second block the -+ // new block to compare against. -+ if k1 > 0 { -+ nonAdjacent = append(nonAdjacent, Match{i1, j1, k1}) -+ } -+ i1, j1, k1 = i2, j2, k2 -+ } -+ } -+ if k1 > 0 { -+ nonAdjacent = append(nonAdjacent, Match{i1, j1, k1}) -+ } -+ -+ nonAdjacent = append(nonAdjacent, Match{len(m.a), len(m.b), 0}) -+ m.matchingBlocks = nonAdjacent -+ return m.matchingBlocks -+} -+ -+// Return list of 5-tuples describing how to turn a into b. -+// -+// Each tuple is of the form (tag, i1, i2, j1, j2). The first tuple -+// has i1 == j1 == 0, and remaining tuples have i1 == the i2 from the -+// tuple preceding it, and likewise for j1 == the previous j2. -+// -+// The tags are characters, with these meanings: -+// -+// 'r' (replace): a[i1:i2] should be replaced by b[j1:j2] -+// -+// 'd' (delete): a[i1:i2] should be deleted, j1==j2 in this case. -+// -+// 'i' (insert): b[j1:j2] should be inserted at a[i1:i1], i1==i2 in this case. -+// -+// 'e' (equal): a[i1:i2] == b[j1:j2] -+func (m *SequenceMatcher) GetOpCodes() []OpCode { -+ if m.opCodes != nil { -+ return m.opCodes -+ } -+ i, j := 0, 0 -+ matching := m.GetMatchingBlocks() -+ opCodes := make([]OpCode, 0, len(matching)) -+ for _, m := range matching { -+ // invariant: we've pumped out correct diffs to change -+ // a[:i] into b[:j], and the next matching block is -+ // a[ai:ai+size] == b[bj:bj+size]. So we need to pump -+ // out a diff to change a[i:ai] into b[j:bj], pump out -+ // the matching block, and move (i,j) beyond the match -+ ai, bj, size := m.A, m.B, m.Size -+ tag := byte(0) -+ if i < ai && j < bj { -+ tag = 'r' -+ } else if i < ai { -+ tag = 'd' -+ } else if j < bj { -+ tag = 'i' -+ } -+ if tag > 0 { -+ opCodes = append(opCodes, OpCode{tag, i, ai, j, bj}) -+ } -+ i, j = ai+size, bj+size -+ // the list of matching blocks is terminated by a -+ // sentinel with size 0 -+ if size > 0 { -+ opCodes = append(opCodes, OpCode{'e', ai, i, bj, j}) -+ } -+ } -+ m.opCodes = opCodes -+ return m.opCodes -+} -+ -+// Isolate change clusters by eliminating ranges with no changes. -+// -+// Return a generator of groups with up to n lines of context. -+// Each group is in the same format as returned by GetOpCodes(). -+func (m *SequenceMatcher) GetGroupedOpCodes(n int) [][]OpCode { -+ if n < 0 { -+ n = 3 -+ } -+ codes := m.GetOpCodes() -+ if len(codes) == 0 { -+ codes = []OpCode{{'e', 0, 1, 0, 1}} -+ } -+ // Fixup leading and trailing groups if they show no changes. -+ if codes[0].Tag == 'e' { -+ c := codes[0] -+ i1, i2, j1, j2 := c.I1, c.I2, c.J1, c.J2 -+ codes[0] = OpCode{c.Tag, max(i1, i2-n), i2, max(j1, j2-n), j2} -+ } -+ if codes[len(codes)-1].Tag == 'e' { -+ c := codes[len(codes)-1] -+ i1, i2, j1, j2 := c.I1, c.I2, c.J1, c.J2 -+ codes[len(codes)-1] = OpCode{c.Tag, i1, min(i2, i1+n), j1, min(j2, j1+n)} -+ } -+ nn := n + n -+ groups := [][]OpCode{} -+ group := []OpCode{} -+ for _, c := range codes { -+ i1, i2, j1, j2 := c.I1, c.I2, c.J1, c.J2 -+ // End the current group and start a new one whenever -+ // there is a large range with no changes. -+ if c.Tag == 'e' && i2-i1 > nn { -+ group = append(group, OpCode{ -+ c.Tag, i1, min(i2, i1+n), -+ j1, min(j2, j1+n), -+ }) -+ groups = append(groups, group) -+ group = []OpCode{} -+ i1, j1 = max(i1, i2-n), max(j1, j2-n) -+ } -+ group = append(group, OpCode{c.Tag, i1, i2, j1, j2}) -+ } -+ if len(group) > 0 && !(len(group) == 1 && group[0].Tag == 'e') { -+ groups = append(groups, group) -+ } -+ return groups -+} -+ -+// Return a measure of the sequences' similarity (float in [0,1]). -+// -+// Where T is the total number of elements in both sequences, and -+// M is the number of matches, this is 2.0*M / T. -+// Note that this is 1 if the sequences are identical, and 0 if -+// they have nothing in common. -+// -+// .Ratio() is expensive to compute if you haven't already computed -+// .GetMatchingBlocks() or .GetOpCodes(), in which case you may -+// want to try .QuickRatio() or .RealQuickRation() first to get an -+// upper bound. -+func (m *SequenceMatcher) Ratio() float64 { -+ matches := 0 -+ for _, m := range m.GetMatchingBlocks() { -+ matches += m.Size -+ } -+ return calculateRatio(matches, len(m.a)+len(m.b)) -+} -+ -+// Return an upper bound on ratio() relatively quickly. -+// -+// This isn't defined beyond that it is an upper bound on .Ratio(), and -+// is faster to compute. -+func (m *SequenceMatcher) QuickRatio() float64 { -+ // viewing a and b as multisets, set matches to the cardinality -+ // of their intersection; this counts the number of matches -+ // without regard to order, so is clearly an upper bound -+ if m.fullBCount == nil { -+ m.fullBCount = map[string]int{} -+ for _, s := range m.b { -+ m.fullBCount[s]++ -+ } -+ } -+ -+ // avail[x] is the number of times x appears in 'b' less the -+ // number of times we've seen it in 'a' so far ... kinda -+ avail := map[string]int{} -+ matches := 0 -+ for _, s := range m.a { -+ n, ok := avail[s] -+ if !ok { -+ n = m.fullBCount[s] -+ } -+ avail[s] = n - 1 -+ if n > 0 { -+ matches++ -+ } -+ } -+ return calculateRatio(matches, len(m.a)+len(m.b)) -+} -+ -+// Return an upper bound on ratio() very quickly. -+// -+// This isn't defined beyond that it is an upper bound on .Ratio(), and -+// is faster to compute than either .Ratio() or .QuickRatio(). -+func (m *SequenceMatcher) RealQuickRatio() float64 { -+ la, lb := len(m.a), len(m.b) -+ return calculateRatio(min(la, lb), la+lb) -+} -+ -+// Convert range to the "ed" format -+func formatRangeUnified(start, stop int) string { -+ // Per the diff spec at http://www.unix.org/single_unix_specification/ -+ beginning := start + 1 // lines start numbering with one -+ length := stop - start -+ if length == 1 { -+ return fmt.Sprintf("%d", beginning) -+ } -+ if length == 0 { -+ beginning-- // empty ranges begin at line just before the range -+ } -+ return fmt.Sprintf("%d,%d", beginning, length) -+} -+ -+// Unified diff parameters -+type UnifiedDiff struct { -+ A []string // First sequence lines -+ FromFile string // First file name -+ FromDate string // First file time -+ B []string // Second sequence lines -+ ToFile string // Second file name -+ ToDate string // Second file time -+ Eol string // Headers end of line, defaults to LF -+ Context int // Number of context lines -+} -+ -+// Compare two sequences of lines; generate the delta as a unified diff. -+// -+// Unified diffs are a compact way of showing line changes and a few -+// lines of context. The number of context lines is set by 'n' which -+// defaults to three. -+// -+// By default, the diff control lines (those with ---, +++, or @@) are -+// created with a trailing newline. This is helpful so that inputs -+// created from file.readlines() result in diffs that are suitable for -+// file.writelines() since both the inputs and outputs have trailing -+// newlines. -+// -+// For inputs that do not have trailing newlines, set the lineterm -+// argument to "" so that the output will be uniformly newline free. -+// -+// The unidiff format normally has a header for filenames and modification -+// times. Any or all of these may be specified using strings for -+// 'fromfile', 'tofile', 'fromfiledate', and 'tofiledate'. -+// The modification times are normally expressed in the ISO 8601 format. -+func WriteUnifiedDiff(writer io.Writer, diff UnifiedDiff) error { -+ buf := bufio.NewWriter(writer) -+ defer buf.Flush() -+ wf := func(format string, args ...interface{}) error { -+ _, err := buf.WriteString(fmt.Sprintf(format, args...)) -+ return err -+ } -+ ws := func(s string) error { -+ _, err := buf.WriteString(s) -+ return err -+ } -+ -+ if len(diff.Eol) == 0 { -+ diff.Eol = "\n" -+ } -+ -+ started := false -+ m := NewMatcher(diff.A, diff.B) -+ for _, g := range m.GetGroupedOpCodes(diff.Context) { -+ if !started { -+ started = true -+ fromDate := "" -+ if len(diff.FromDate) > 0 { -+ fromDate = "\t" + diff.FromDate -+ } -+ toDate := "" -+ if len(diff.ToDate) > 0 { -+ toDate = "\t" + diff.ToDate -+ } -+ if diff.FromFile != "" || diff.ToFile != "" { -+ err := wf("--- %s%s%s", diff.FromFile, fromDate, diff.Eol) -+ if err != nil { -+ return err -+ } -+ err = wf("+++ %s%s%s", diff.ToFile, toDate, diff.Eol) -+ if err != nil { -+ return err -+ } -+ } -+ } -+ first, last := g[0], g[len(g)-1] -+ range1 := formatRangeUnified(first.I1, last.I2) -+ range2 := formatRangeUnified(first.J1, last.J2) -+ if err := wf("@@ -%s +%s @@%s", range1, range2, diff.Eol); err != nil { -+ return err -+ } -+ for _, c := range g { -+ i1, i2, j1, j2 := c.I1, c.I2, c.J1, c.J2 -+ if c.Tag == 'e' { -+ for _, line := range diff.A[i1:i2] { -+ if err := ws(" " + line); err != nil { -+ return err -+ } -+ } -+ continue -+ } -+ if c.Tag == 'r' || c.Tag == 'd' { -+ for _, line := range diff.A[i1:i2] { -+ if err := ws("-" + line); err != nil { -+ return err -+ } -+ } -+ } -+ if c.Tag == 'r' || c.Tag == 'i' { -+ for _, line := range diff.B[j1:j2] { -+ if err := ws("+" + line); err != nil { -+ return err -+ } -+ } -+ } -+ } -+ } -+ return nil -+} -+ -+// Like WriteUnifiedDiff but returns the diff a string. -+func GetUnifiedDiffString(diff UnifiedDiff) (string, error) { -+ w := &bytes.Buffer{} -+ err := WriteUnifiedDiff(w, diff) -+ return w.String(), err -+} -+ -+// Split a string on "\n" while preserving them. The output can be used -+// as input for UnifiedDiff and ContextDiff structures. -+func SplitLines(s string) []string { -+ lines := strings.SplitAfter(s, "\n") -+ lines[len(lines)-1] += "\n" -+ return lines -+} -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/internal/go_collector_options.go b/vendor/github.com/prometheus/client_golang/prometheus/internal/go_collector_options.go -new file mode 100755 -index 0000000..723b45d ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/internal/go_collector_options.go -@@ -0,0 +1,32 @@ -+// Copyright 2021 The Prometheus 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 internal -+ -+import "regexp" -+ -+type GoCollectorRule struct { -+ Matcher *regexp.Regexp -+ Deny bool -+} -+ -+// GoCollectorOptions should not be used be directly by anything, except `collectors` package. -+// Use it via collectors package instead. See issue -+// https://github.com/prometheus/client_golang/issues/1030. -+// -+// This is internal, so external users only can use it via `collector.WithGoCollector*` methods -+type GoCollectorOptions struct { -+ DisableMemStatsLikeMetrics bool -+ RuntimeMetricSumForHist map[string]string -+ RuntimeMetricRules []GoCollectorRule -+} -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/internal/go_runtime_metrics.go b/vendor/github.com/prometheus/client_golang/prometheus/internal/go_runtime_metrics.go -new file mode 100755 -index 0000000..97d17d6 ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/internal/go_runtime_metrics.go -@@ -0,0 +1,142 @@ -+// Copyright 2021 The Prometheus 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:build go1.17 -+// +build go1.17 -+ -+package internal -+ -+import ( -+ "math" -+ "path" -+ "runtime/metrics" -+ "strings" -+ -+ "github.com/prometheus/common/model" -+) -+ -+// RuntimeMetricsToProm produces a Prometheus metric name from a runtime/metrics -+// metric description and validates whether the metric is suitable for integration -+// with Prometheus. -+// -+// Returns false if a name could not be produced, or if Prometheus does not understand -+// the runtime/metrics Kind. -+// -+// Note that the main reason a name couldn't be produced is if the runtime/metrics -+// package exports a name with characters outside the valid Prometheus metric name -+// character set. This is theoretically possible, but should never happen in practice. -+// Still, don't rely on it. -+func RuntimeMetricsToProm(d *metrics.Description) (string, string, string, bool) { -+ namespace := "go" -+ -+ comp := strings.SplitN(d.Name, ":", 2) -+ key := comp[0] -+ unit := comp[1] -+ -+ // The last path element in the key is the name, -+ // the rest is the subsystem. -+ subsystem := path.Dir(key[1:] /* remove leading / */) -+ name := path.Base(key) -+ -+ // subsystem is translated by replacing all / and - with _. -+ subsystem = strings.ReplaceAll(subsystem, "/", "_") -+ subsystem = strings.ReplaceAll(subsystem, "-", "_") -+ -+ // unit is translated assuming that the unit contains no -+ // non-ASCII characters. -+ unit = strings.ReplaceAll(unit, "-", "_") -+ unit = strings.ReplaceAll(unit, "*", "_") -+ unit = strings.ReplaceAll(unit, "/", "_per_") -+ -+ // name has - replaced with _ and is concatenated with the unit and -+ // other data. -+ name = strings.ReplaceAll(name, "-", "_") -+ name += "_" + unit -+ if d.Cumulative && d.Kind != metrics.KindFloat64Histogram { -+ name += "_total" -+ } -+ -+ valid := model.IsValidMetricName(model.LabelValue(namespace + "_" + subsystem + "_" + name)) -+ switch d.Kind { -+ case metrics.KindUint64: -+ case metrics.KindFloat64: -+ case metrics.KindFloat64Histogram: -+ default: -+ valid = false -+ } -+ return namespace, subsystem, name, valid -+} -+ -+// RuntimeMetricsBucketsForUnit takes a set of buckets obtained for a runtime/metrics histogram -+// type (so, lower-bound inclusive) and a unit from a runtime/metrics name, and produces -+// a reduced set of buckets. This function always removes any -Inf bucket as it's represented -+// as the bottom-most upper-bound inclusive bucket in Prometheus. -+func RuntimeMetricsBucketsForUnit(buckets []float64, unit string) []float64 { -+ switch unit { -+ case "bytes": -+ // Re-bucket as powers of 2. -+ return reBucketExp(buckets, 2) -+ case "seconds": -+ // Re-bucket as powers of 10 and then merge all buckets greater -+ // than 1 second into the +Inf bucket. -+ b := reBucketExp(buckets, 10) -+ for i := range b { -+ if b[i] <= 1 { -+ continue -+ } -+ b[i] = math.Inf(1) -+ b = b[:i+1] -+ break -+ } -+ return b -+ } -+ return buckets -+} -+ -+// reBucketExp takes a list of bucket boundaries (lower bound inclusive) and -+// downsamples the buckets to those a multiple of base apart. The end result -+// is a roughly exponential (in many cases, perfectly exponential) bucketing -+// scheme. -+func reBucketExp(buckets []float64, base float64) []float64 { -+ bucket := buckets[0] -+ var newBuckets []float64 -+ // We may see a -Inf here, in which case, add it and skip it -+ // since we risk producing NaNs otherwise. -+ // -+ // We need to preserve -Inf values to maintain runtime/metrics -+ // conventions. We'll strip it out later. -+ if bucket == math.Inf(-1) { -+ newBuckets = append(newBuckets, bucket) -+ buckets = buckets[1:] -+ bucket = buckets[0] -+ } -+ // From now on, bucket should always have a non-Inf value because -+ // Infs are only ever at the ends of the bucket lists, so -+ // arithmetic operations on it are non-NaN. -+ for i := 1; i < len(buckets); i++ { -+ if bucket >= 0 && buckets[i] < bucket*base { -+ // The next bucket we want to include is at least bucket*base. -+ continue -+ } else if bucket < 0 && buckets[i] < bucket/base { -+ // In this case the bucket we're targeting is negative, and since -+ // we're ascending through buckets here, we need to divide to get -+ // closer to zero exponentially. -+ continue -+ } -+ // The +Inf bucket will always be the last one, and we'll always -+ // end up including it here because bucket -+ newBuckets = append(newBuckets, bucket) -+ bucket = buckets[i] -+ } -+ return append(newBuckets, bucket) -+} -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/internal/metric.go b/vendor/github.com/prometheus/client_golang/prometheus/internal/metric.go -new file mode 100755 -index 0000000..6515c11 ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/internal/metric.go -@@ -0,0 +1,101 @@ -+// Copyright 2018 The Prometheus 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 internal -+ -+import ( -+ "sort" -+ -+ dto "github.com/prometheus/client_model/go" -+) -+ -+// LabelPairSorter implements sort.Interface. It is used to sort a slice of -+// dto.LabelPair pointers. -+type LabelPairSorter []*dto.LabelPair -+ -+func (s LabelPairSorter) Len() int { -+ return len(s) -+} -+ -+func (s LabelPairSorter) Swap(i, j int) { -+ s[i], s[j] = s[j], s[i] -+} -+ -+func (s LabelPairSorter) Less(i, j int) bool { -+ return s[i].GetName() < s[j].GetName() -+} -+ -+// MetricSorter is a sortable slice of *dto.Metric. -+type MetricSorter []*dto.Metric -+ -+func (s MetricSorter) Len() int { -+ return len(s) -+} -+ -+func (s MetricSorter) Swap(i, j int) { -+ s[i], s[j] = s[j], s[i] -+} -+ -+func (s MetricSorter) Less(i, j int) bool { -+ if len(s[i].Label) != len(s[j].Label) { -+ // This should not happen. The metrics are -+ // inconsistent. However, we have to deal with the fact, as -+ // people might use custom collectors or metric family injection -+ // to create inconsistent metrics. So let's simply compare the -+ // number of labels in this case. That will still yield -+ // reproducible sorting. -+ return len(s[i].Label) < len(s[j].Label) -+ } -+ for n, lp := range s[i].Label { -+ vi := lp.GetValue() -+ vj := s[j].Label[n].GetValue() -+ if vi != vj { -+ return vi < vj -+ } -+ } -+ -+ // We should never arrive here. Multiple metrics with the same -+ // label set in the same scrape will lead to undefined ingestion -+ // behavior. However, as above, we have to provide stable sorting -+ // here, even for inconsistent metrics. So sort equal metrics -+ // by their timestamp, with missing timestamps (implying "now") -+ // coming last. -+ if s[i].TimestampMs == nil { -+ return false -+ } -+ if s[j].TimestampMs == nil { -+ return true -+ } -+ return s[i].GetTimestampMs() < s[j].GetTimestampMs() -+} -+ -+// NormalizeMetricFamilies returns a MetricFamily slice with empty -+// MetricFamilies pruned and the remaining MetricFamilies sorted by name within -+// the slice, with the contained Metrics sorted within each MetricFamily. -+func NormalizeMetricFamilies(metricFamiliesByName map[string]*dto.MetricFamily) []*dto.MetricFamily { -+ for _, mf := range metricFamiliesByName { -+ sort.Sort(MetricSorter(mf.Metric)) -+ } -+ names := make([]string, 0, len(metricFamiliesByName)) -+ for name, mf := range metricFamiliesByName { -+ if len(mf.Metric) > 0 { -+ names = append(names, name) -+ } -+ } -+ sort.Strings(names) -+ result := make([]*dto.MetricFamily, 0, len(names)) -+ for _, name := range names { -+ result = append(result, metricFamiliesByName[name]) -+ } -+ return result -+} -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/labels.go b/vendor/github.com/prometheus/client_golang/prometheus/labels.go -new file mode 100755 -index 0000000..c1b8fad ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/labels.go -@@ -0,0 +1,88 @@ -+// Copyright 2018 The Prometheus 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 prometheus -+ -+import ( -+ "errors" -+ "fmt" -+ "strings" -+ "unicode/utf8" -+ -+ "github.com/prometheus/common/model" -+) -+ -+// Labels represents a collection of label name -> value mappings. This type is -+// commonly used with the With(Labels) and GetMetricWith(Labels) methods of -+// metric vector Collectors, e.g.: -+// -+// myVec.With(Labels{"code": "404", "method": "GET"}).Add(42) -+// -+// The other use-case is the specification of constant label pairs in Opts or to -+// create a Desc. -+type Labels map[string]string -+ -+// reservedLabelPrefix is a prefix which is not legal in user-supplied -+// label names. -+const reservedLabelPrefix = "__" -+ -+var errInconsistentCardinality = errors.New("inconsistent label cardinality") -+ -+func makeInconsistentCardinalityError(fqName string, labels, labelValues []string) error { -+ return fmt.Errorf( -+ "%w: %q has %d variable labels named %q but %d values %q were provided", -+ errInconsistentCardinality, fqName, -+ len(labels), labels, -+ len(labelValues), labelValues, -+ ) -+} -+ -+func validateValuesInLabels(labels Labels, expectedNumberOfValues int) error { -+ if len(labels) != expectedNumberOfValues { -+ return fmt.Errorf( -+ "%w: expected %d label values but got %d in %#v", -+ errInconsistentCardinality, expectedNumberOfValues, -+ len(labels), labels, -+ ) -+ } -+ -+ for name, val := range labels { -+ if !utf8.ValidString(val) { -+ return fmt.Errorf("label %s: value %q is not valid UTF-8", name, val) -+ } -+ } -+ -+ return nil -+} -+ -+func validateLabelValues(vals []string, expectedNumberOfValues int) error { -+ if len(vals) != expectedNumberOfValues { -+ return fmt.Errorf( -+ "%w: expected %d label values but got %d in %#v", -+ errInconsistentCardinality, expectedNumberOfValues, -+ len(vals), vals, -+ ) -+ } -+ -+ for _, val := range vals { -+ if !utf8.ValidString(val) { -+ return fmt.Errorf("label value %q is not valid UTF-8", val) -+ } -+ } -+ -+ return nil -+} -+ -+func checkLabelName(l string) bool { -+ return model.LabelName(l).IsValid() && !strings.HasPrefix(l, reservedLabelPrefix) -+} -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/metric.go b/vendor/github.com/prometheus/client_golang/prometheus/metric.go -new file mode 100755 -index 0000000..b5119c5 ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/metric.go -@@ -0,0 +1,256 @@ -+// Copyright 2014 The Prometheus 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 prometheus -+ -+import ( -+ "errors" -+ "math" -+ "sort" -+ "strings" -+ "time" -+ -+ //nolint:staticcheck // Ignore SA1019. Need to keep deprecated package for compatibility. -+ "github.com/golang/protobuf/proto" -+ "github.com/prometheus/common/model" -+ -+ dto "github.com/prometheus/client_model/go" -+) -+ -+var separatorByteSlice = []byte{model.SeparatorByte} // For convenient use with xxhash. -+ -+// A Metric models a single sample value with its meta data being exported to -+// Prometheus. Implementations of Metric in this package are Gauge, Counter, -+// Histogram, Summary, and Untyped. -+type Metric interface { -+ // Desc returns the descriptor for the Metric. This method idempotently -+ // returns the same descriptor throughout the lifetime of the -+ // Metric. The returned descriptor is immutable by contract. A Metric -+ // unable to describe itself must return an invalid descriptor (created -+ // with NewInvalidDesc). -+ Desc() *Desc -+ // Write encodes the Metric into a "Metric" Protocol Buffer data -+ // transmission object. -+ // -+ // Metric implementations must observe concurrency safety as reads of -+ // this metric may occur at any time, and any blocking occurs at the -+ // expense of total performance of rendering all registered -+ // metrics. Ideally, Metric implementations should support concurrent -+ // readers. -+ // -+ // While populating dto.Metric, it is the responsibility of the -+ // implementation to ensure validity of the Metric protobuf (like valid -+ // UTF-8 strings or syntactically valid metric and label names). It is -+ // recommended to sort labels lexicographically. Callers of Write should -+ // still make sure of sorting if they depend on it. -+ Write(*dto.Metric) error -+ // TODO(beorn7): The original rationale of passing in a pre-allocated -+ // dto.Metric protobuf to save allocations has disappeared. The -+ // signature of this method should be changed to "Write() (*dto.Metric, -+ // error)". -+} -+ -+// Opts bundles the options for creating most Metric types. Each metric -+// implementation XXX has its own XXXOpts type, but in most cases, it is just -+// an alias of this type (which might change when the requirement arises.) -+// -+// It is mandatory to set Name to a non-empty string. All other fields are -+// optional and can safely be left at their zero value, although it is strongly -+// encouraged to set a Help string. -+type Opts struct { -+ // Namespace, Subsystem, and Name are components of the fully-qualified -+ // name of the Metric (created by joining these components with -+ // "_"). Only Name is mandatory, the others merely help structuring the -+ // name. Note that the fully-qualified name of the metric must be a -+ // valid Prometheus metric name. -+ Namespace string -+ Subsystem string -+ Name string -+ -+ // Help provides information about this metric. -+ // -+ // Metrics with the same fully-qualified name must have the same Help -+ // string. -+ Help string -+ -+ // ConstLabels are used to attach fixed labels to this metric. Metrics -+ // with the same fully-qualified name must have the same label names in -+ // their ConstLabels. -+ // -+ // ConstLabels are only used rarely. In particular, do not use them to -+ // attach the same labels to all your metrics. Those use cases are -+ // better covered by target labels set by the scraping Prometheus -+ // server, or by one specific metric (e.g. a build_info or a -+ // machine_role metric). See also -+ // https://prometheus.io/docs/instrumenting/writing_exporters/#target-labels-not-static-scraped-labels -+ ConstLabels Labels -+} -+ -+// BuildFQName joins the given three name components by "_". Empty name -+// components are ignored. If the name parameter itself is empty, an empty -+// string is returned, no matter what. Metric implementations included in this -+// library use this function internally to generate the fully-qualified metric -+// name from the name component in their Opts. Users of the library will only -+// need this function if they implement their own Metric or instantiate a Desc -+// (with NewDesc) directly. -+func BuildFQName(namespace, subsystem, name string) string { -+ if name == "" { -+ return "" -+ } -+ switch { -+ case namespace != "" && subsystem != "": -+ return strings.Join([]string{namespace, subsystem, name}, "_") -+ case namespace != "": -+ return strings.Join([]string{namespace, name}, "_") -+ case subsystem != "": -+ return strings.Join([]string{subsystem, name}, "_") -+ } -+ return name -+} -+ -+type invalidMetric struct { -+ desc *Desc -+ err error -+} -+ -+// NewInvalidMetric returns a metric whose Write method always returns the -+// provided error. It is useful if a Collector finds itself unable to collect -+// a metric and wishes to report an error to the registry. -+func NewInvalidMetric(desc *Desc, err error) Metric { -+ return &invalidMetric{desc, err} -+} -+ -+func (m *invalidMetric) Desc() *Desc { return m.desc } -+ -+func (m *invalidMetric) Write(*dto.Metric) error { return m.err } -+ -+type timestampedMetric struct { -+ Metric -+ t time.Time -+} -+ -+func (m timestampedMetric) Write(pb *dto.Metric) error { -+ e := m.Metric.Write(pb) -+ pb.TimestampMs = proto.Int64(m.t.Unix()*1000 + int64(m.t.Nanosecond()/1000000)) -+ return e -+} -+ -+// NewMetricWithTimestamp returns a new Metric wrapping the provided Metric in a -+// way that it has an explicit timestamp set to the provided Time. This is only -+// useful in rare cases as the timestamp of a Prometheus metric should usually -+// be set by the Prometheus server during scraping. Exceptions include mirroring -+// metrics with given timestamps from other metric -+// sources. -+// -+// NewMetricWithTimestamp works best with MustNewConstMetric, -+// MustNewConstHistogram, and MustNewConstSummary, see example. -+// -+// Currently, the exposition formats used by Prometheus are limited to -+// millisecond resolution. Thus, the provided time will be rounded down to the -+// next full millisecond value. -+func NewMetricWithTimestamp(t time.Time, m Metric) Metric { -+ return timestampedMetric{Metric: m, t: t} -+} -+ -+type withExemplarsMetric struct { -+ Metric -+ -+ exemplars []*dto.Exemplar -+} -+ -+func (m *withExemplarsMetric) Write(pb *dto.Metric) error { -+ if err := m.Metric.Write(pb); err != nil { -+ return err -+ } -+ -+ switch { -+ case pb.Counter != nil: -+ pb.Counter.Exemplar = m.exemplars[len(m.exemplars)-1] -+ case pb.Histogram != nil: -+ for _, e := range m.exemplars { -+ // pb.Histogram.Bucket are sorted by UpperBound. -+ i := sort.Search(len(pb.Histogram.Bucket), func(i int) bool { -+ return pb.Histogram.Bucket[i].GetUpperBound() >= e.GetValue() -+ }) -+ if i < len(pb.Histogram.Bucket) { -+ pb.Histogram.Bucket[i].Exemplar = e -+ } else { -+ // The +Inf bucket should be explicitly added if there is an exemplar for it, similar to non-const histogram logic in https://github.com/prometheus/client_golang/blob/main/prometheus/histogram.go#L357-L365. -+ b := &dto.Bucket{ -+ CumulativeCount: proto.Uint64(pb.Histogram.GetSampleCount()), -+ UpperBound: proto.Float64(math.Inf(1)), -+ Exemplar: e, -+ } -+ pb.Histogram.Bucket = append(pb.Histogram.Bucket, b) -+ } -+ } -+ default: -+ // TODO(bwplotka): Implement Gauge? -+ return errors.New("cannot inject exemplar into Gauge, Summary or Untyped") -+ } -+ -+ return nil -+} -+ -+// Exemplar is easier to use, user-facing representation of *dto.Exemplar. -+type Exemplar struct { -+ Value float64 -+ Labels Labels -+ // Optional. -+ // Default value (time.Time{}) indicates its empty, which should be -+ // understood as time.Now() time at the moment of creation of metric. -+ Timestamp time.Time -+} -+ -+// NewMetricWithExemplars returns a new Metric wrapping the provided Metric with given -+// exemplars. Exemplars are validated. -+// -+// Only last applicable exemplar is injected from the list. -+// For example for Counter it means last exemplar is injected. -+// For Histogram, it means last applicable exemplar for each bucket is injected. -+// -+// NewMetricWithExemplars works best with MustNewConstMetric and -+// MustNewConstHistogram, see example. -+func NewMetricWithExemplars(m Metric, exemplars ...Exemplar) (Metric, error) { -+ if len(exemplars) == 0 { -+ return nil, errors.New("no exemplar was passed for NewMetricWithExemplars") -+ } -+ -+ var ( -+ now = time.Now() -+ exs = make([]*dto.Exemplar, len(exemplars)) -+ err error -+ ) -+ for i, e := range exemplars { -+ ts := e.Timestamp -+ if ts == (time.Time{}) { -+ ts = now -+ } -+ exs[i], err = newExemplar(e.Value, ts, e.Labels) -+ if err != nil { -+ return nil, err -+ } -+ } -+ -+ return &withExemplarsMetric{Metric: m, exemplars: exs}, nil -+} -+ -+// MustNewMetricWithExemplars is a version of NewMetricWithExemplars that panics where -+// NewMetricWithExemplars would have returned an error. -+func MustNewMetricWithExemplars(m Metric, exemplars ...Exemplar) Metric { -+ ret, err := NewMetricWithExemplars(m, exemplars...) -+ if err != nil { -+ panic(err) -+ } -+ return ret -+} -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/num_threads.go b/vendor/github.com/prometheus/client_golang/prometheus/num_threads.go -new file mode 100755 -index 0000000..7c12b21 ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/num_threads.go -@@ -0,0 +1,25 @@ -+// Copyright 2018 The Prometheus 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:build !js || wasm -+// +build !js wasm -+ -+package prometheus -+ -+import "runtime" -+ -+// getRuntimeNumThreads returns the number of open OS threads. -+func getRuntimeNumThreads() float64 { -+ n, _ := runtime.ThreadCreateProfile(nil) -+ return float64(n) -+} -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/num_threads_gopherjs.go b/vendor/github.com/prometheus/client_golang/prometheus/num_threads_gopherjs.go -new file mode 100755 -index 0000000..7348df0 ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/num_threads_gopherjs.go -@@ -0,0 +1,22 @@ -+// Copyright 2018 The Prometheus 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:build js && !wasm -+// +build js,!wasm -+ -+package prometheus -+ -+// getRuntimeNumThreads returns the number of open OS threads. -+func getRuntimeNumThreads() float64 { -+ return 1 -+} -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/observer.go b/vendor/github.com/prometheus/client_golang/prometheus/observer.go -new file mode 100755 -index 0000000..03773b2 ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/observer.go -@@ -0,0 +1,64 @@ -+// Copyright 2017 The Prometheus 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 prometheus -+ -+// Observer is the interface that wraps the Observe method, which is used by -+// Histogram and Summary to add observations. -+type Observer interface { -+ Observe(float64) -+} -+ -+// The ObserverFunc type is an adapter to allow the use of ordinary -+// functions as Observers. If f is a function with the appropriate -+// signature, ObserverFunc(f) is an Observer that calls f. -+// -+// This adapter is usually used in connection with the Timer type, and there are -+// two general use cases: -+// -+// The most common one is to use a Gauge as the Observer for a Timer. -+// See the "Gauge" Timer example. -+// -+// The more advanced use case is to create a function that dynamically decides -+// which Observer to use for observing the duration. See the "Complex" Timer -+// example. -+type ObserverFunc func(float64) -+ -+// Observe calls f(value). It implements Observer. -+func (f ObserverFunc) Observe(value float64) { -+ f(value) -+} -+ -+// ObserverVec is an interface implemented by `HistogramVec` and `SummaryVec`. -+type ObserverVec interface { -+ GetMetricWith(Labels) (Observer, error) -+ GetMetricWithLabelValues(lvs ...string) (Observer, error) -+ With(Labels) Observer -+ WithLabelValues(...string) Observer -+ CurryWith(Labels) (ObserverVec, error) -+ MustCurryWith(Labels) ObserverVec -+ -+ Collector -+} -+ -+// ExemplarObserver is implemented by Observers that offer the option of -+// observing a value together with an exemplar. Its ObserveWithExemplar method -+// works like the Observe method of an Observer but also replaces the currently -+// saved exemplar (if any) with a new one, created from the provided value, the -+// current time as timestamp, and the provided Labels. Empty Labels will lead to -+// a valid (label-less) exemplar. But if Labels is nil, the current exemplar is -+// left in place. ObserveWithExemplar panics if any of the provided labels are -+// invalid or if the provided labels contain more than 128 runes in total. -+type ExemplarObserver interface { -+ ObserveWithExemplar(value float64, exemplar Labels) -+} -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/process_collector.go b/vendor/github.com/prometheus/client_golang/prometheus/process_collector.go -new file mode 100755 -index 0000000..8548dd1 ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/process_collector.go -@@ -0,0 +1,164 @@ -+// Copyright 2015 The Prometheus 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 prometheus -+ -+import ( -+ "errors" -+ "fmt" -+ "os" -+ "strconv" -+ "strings" -+) -+ -+type processCollector struct { -+ collectFn func(chan<- Metric) -+ pidFn func() (int, error) -+ reportErrors bool -+ cpuTotal *Desc -+ openFDs, maxFDs *Desc -+ vsize, maxVsize *Desc -+ rss *Desc -+ startTime *Desc -+} -+ -+// ProcessCollectorOpts defines the behavior of a process metrics collector -+// created with NewProcessCollector. -+type ProcessCollectorOpts struct { -+ // PidFn returns the PID of the process the collector collects metrics -+ // for. It is called upon each collection. By default, the PID of the -+ // current process is used, as determined on construction time by -+ // calling os.Getpid(). -+ PidFn func() (int, error) -+ // If non-empty, each of the collected metrics is prefixed by the -+ // provided string and an underscore ("_"). -+ Namespace string -+ // If true, any error encountered during collection is reported as an -+ // invalid metric (see NewInvalidMetric). Otherwise, errors are ignored -+ // and the collected metrics will be incomplete. (Possibly, no metrics -+ // will be collected at all.) While that's usually not desired, it is -+ // appropriate for the common "mix-in" of process metrics, where process -+ // metrics are nice to have, but failing to collect them should not -+ // disrupt the collection of the remaining metrics. -+ ReportErrors bool -+} -+ -+// NewProcessCollector is the obsolete version of collectors.NewProcessCollector. -+// See there for documentation. -+// -+// Deprecated: Use collectors.NewProcessCollector instead. -+func NewProcessCollector(opts ProcessCollectorOpts) Collector { -+ ns := "" -+ if len(opts.Namespace) > 0 { -+ ns = opts.Namespace + "_" -+ } -+ -+ c := &processCollector{ -+ reportErrors: opts.ReportErrors, -+ cpuTotal: NewDesc( -+ ns+"process_cpu_seconds_total", -+ "Total user and system CPU time spent in seconds.", -+ nil, nil, -+ ), -+ openFDs: NewDesc( -+ ns+"process_open_fds", -+ "Number of open file descriptors.", -+ nil, nil, -+ ), -+ maxFDs: NewDesc( -+ ns+"process_max_fds", -+ "Maximum number of open file descriptors.", -+ nil, nil, -+ ), -+ vsize: NewDesc( -+ ns+"process_virtual_memory_bytes", -+ "Virtual memory size in bytes.", -+ nil, nil, -+ ), -+ maxVsize: NewDesc( -+ ns+"process_virtual_memory_max_bytes", -+ "Maximum amount of virtual memory available in bytes.", -+ nil, nil, -+ ), -+ rss: NewDesc( -+ ns+"process_resident_memory_bytes", -+ "Resident memory size in bytes.", -+ nil, nil, -+ ), -+ startTime: NewDesc( -+ ns+"process_start_time_seconds", -+ "Start time of the process since unix epoch in seconds.", -+ nil, nil, -+ ), -+ } -+ -+ if opts.PidFn == nil { -+ c.pidFn = getPIDFn() -+ } else { -+ c.pidFn = opts.PidFn -+ } -+ -+ // Set up process metric collection if supported by the runtime. -+ if canCollectProcess() { -+ c.collectFn = c.processCollect -+ } else { -+ c.collectFn = func(ch chan<- Metric) { -+ c.reportError(ch, nil, errors.New("process metrics not supported on this platform")) -+ } -+ } -+ -+ return c -+} -+ -+// Describe returns all descriptions of the collector. -+func (c *processCollector) Describe(ch chan<- *Desc) { -+ ch <- c.cpuTotal -+ ch <- c.openFDs -+ ch <- c.maxFDs -+ ch <- c.vsize -+ ch <- c.maxVsize -+ ch <- c.rss -+ ch <- c.startTime -+} -+ -+// Collect returns the current state of all metrics of the collector. -+func (c *processCollector) Collect(ch chan<- Metric) { -+ c.collectFn(ch) -+} -+ -+func (c *processCollector) reportError(ch chan<- Metric, desc *Desc, err error) { -+ if !c.reportErrors { -+ return -+ } -+ if desc == nil { -+ desc = NewInvalidDesc(err) -+ } -+ ch <- NewInvalidMetric(desc, err) -+} -+ -+// NewPidFileFn returns a function that retrieves a pid from the specified file. -+// It is meant to be used for the PidFn field in ProcessCollectorOpts. -+func NewPidFileFn(pidFilePath string) func() (int, error) { -+ return func() (int, error) { -+ content, err := os.ReadFile(pidFilePath) -+ if err != nil { -+ return 0, fmt.Errorf("can't read pid file %q: %w", pidFilePath, err) -+ } -+ pid, err := strconv.Atoi(strings.TrimSpace(string(content))) -+ if err != nil { -+ return 0, fmt.Errorf("can't parse pid file %q: %w", pidFilePath, err) -+ } -+ -+ return pid, nil -+ } -+} -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/process_collector_js.go b/vendor/github.com/prometheus/client_golang/prometheus/process_collector_js.go -new file mode 100755 -index 0000000..b1e363d ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/process_collector_js.go -@@ -0,0 +1,26 @@ -+// Copyright 2019 The Prometheus 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:build js -+// +build js -+ -+package prometheus -+ -+func canCollectProcess() bool { -+ return false -+} -+ -+func (c *processCollector) processCollect(ch chan<- Metric) { -+ // noop on this platform -+ return -+} -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/process_collector_other.go b/vendor/github.com/prometheus/client_golang/prometheus/process_collector_other.go -new file mode 100755 -index 0000000..c0152cd ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/process_collector_other.go -@@ -0,0 +1,66 @@ -+// Copyright 2019 The Prometheus 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:build !windows && !js -+// +build !windows,!js -+ -+package prometheus -+ -+import ( -+ "github.com/prometheus/procfs" -+) -+ -+func canCollectProcess() bool { -+ _, err := procfs.NewDefaultFS() -+ return err == nil -+} -+ -+func (c *processCollector) processCollect(ch chan<- Metric) { -+ pid, err := c.pidFn() -+ if err != nil { -+ c.reportError(ch, nil, err) -+ return -+ } -+ -+ p, err := procfs.NewProc(pid) -+ if err != nil { -+ c.reportError(ch, nil, err) -+ return -+ } -+ -+ if stat, err := p.Stat(); err == nil { -+ ch <- MustNewConstMetric(c.cpuTotal, CounterValue, stat.CPUTime()) -+ ch <- MustNewConstMetric(c.vsize, GaugeValue, float64(stat.VirtualMemory())) -+ ch <- MustNewConstMetric(c.rss, GaugeValue, float64(stat.ResidentMemory())) -+ if startTime, err := stat.StartTime(); err == nil { -+ ch <- MustNewConstMetric(c.startTime, GaugeValue, startTime) -+ } else { -+ c.reportError(ch, c.startTime, err) -+ } -+ } else { -+ c.reportError(ch, nil, err) -+ } -+ -+ if fds, err := p.FileDescriptorsLen(); err == nil { -+ ch <- MustNewConstMetric(c.openFDs, GaugeValue, float64(fds)) -+ } else { -+ c.reportError(ch, c.openFDs, err) -+ } -+ -+ if limits, err := p.Limits(); err == nil { -+ ch <- MustNewConstMetric(c.maxFDs, GaugeValue, float64(limits.OpenFiles)) -+ ch <- MustNewConstMetric(c.maxVsize, GaugeValue, float64(limits.AddressSpace)) -+ } else { -+ c.reportError(ch, nil, err) -+ } -+} -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/process_collector_windows.go b/vendor/github.com/prometheus/client_golang/prometheus/process_collector_windows.go -new file mode 100755 -index 0000000..f973398 ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/process_collector_windows.go -@@ -0,0 +1,116 @@ -+// Copyright 2019 The Prometheus 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 prometheus -+ -+import ( -+ "syscall" -+ "unsafe" -+ -+ "golang.org/x/sys/windows" -+) -+ -+func canCollectProcess() bool { -+ return true -+} -+ -+var ( -+ modpsapi = syscall.NewLazyDLL("psapi.dll") -+ modkernel32 = syscall.NewLazyDLL("kernel32.dll") -+ -+ procGetProcessMemoryInfo = modpsapi.NewProc("GetProcessMemoryInfo") -+ procGetProcessHandleCount = modkernel32.NewProc("GetProcessHandleCount") -+) -+ -+type processMemoryCounters struct { -+ // System interface description -+ // https://docs.microsoft.com/en-us/windows/desktop/api/psapi/ns-psapi-process_memory_counters_ex -+ -+ // Refer to the Golang internal implementation -+ // https://golang.org/src/internal/syscall/windows/psapi_windows.go -+ _ uint32 -+ PageFaultCount uint32 -+ PeakWorkingSetSize uintptr -+ WorkingSetSize uintptr -+ QuotaPeakPagedPoolUsage uintptr -+ QuotaPagedPoolUsage uintptr -+ QuotaPeakNonPagedPoolUsage uintptr -+ QuotaNonPagedPoolUsage uintptr -+ PagefileUsage uintptr -+ PeakPagefileUsage uintptr -+ PrivateUsage uintptr -+} -+ -+func getProcessMemoryInfo(handle windows.Handle) (processMemoryCounters, error) { -+ mem := processMemoryCounters{} -+ r1, _, err := procGetProcessMemoryInfo.Call( -+ uintptr(handle), -+ uintptr(unsafe.Pointer(&mem)), -+ uintptr(unsafe.Sizeof(mem)), -+ ) -+ if r1 != 1 { -+ return mem, err -+ } else { -+ return mem, nil -+ } -+} -+ -+func getProcessHandleCount(handle windows.Handle) (uint32, error) { -+ var count uint32 -+ r1, _, err := procGetProcessHandleCount.Call( -+ uintptr(handle), -+ uintptr(unsafe.Pointer(&count)), -+ ) -+ if r1 != 1 { -+ return 0, err -+ } else { -+ return count, nil -+ } -+} -+ -+func (c *processCollector) processCollect(ch chan<- Metric) { -+ h, err := windows.GetCurrentProcess() -+ if err != nil { -+ c.reportError(ch, nil, err) -+ return -+ } -+ -+ var startTime, exitTime, kernelTime, userTime windows.Filetime -+ err = windows.GetProcessTimes(h, &startTime, &exitTime, &kernelTime, &userTime) -+ if err != nil { -+ c.reportError(ch, nil, err) -+ return -+ } -+ ch <- MustNewConstMetric(c.startTime, GaugeValue, float64(startTime.Nanoseconds()/1e9)) -+ ch <- MustNewConstMetric(c.cpuTotal, CounterValue, fileTimeToSeconds(kernelTime)+fileTimeToSeconds(userTime)) -+ -+ mem, err := getProcessMemoryInfo(h) -+ if err != nil { -+ c.reportError(ch, nil, err) -+ return -+ } -+ ch <- MustNewConstMetric(c.vsize, GaugeValue, float64(mem.PrivateUsage)) -+ ch <- MustNewConstMetric(c.rss, GaugeValue, float64(mem.WorkingSetSize)) -+ -+ handles, err := getProcessHandleCount(h) -+ if err != nil { -+ c.reportError(ch, nil, err) -+ return -+ } -+ ch <- MustNewConstMetric(c.openFDs, GaugeValue, float64(handles)) -+ ch <- MustNewConstMetric(c.maxFDs, GaugeValue, float64(16*1024*1024)) // Windows has a hard-coded max limit, not per-process. -+} -+ -+func fileTimeToSeconds(ft windows.Filetime) float64 { -+ return float64(uint64(ft.HighDateTime)<<32+uint64(ft.LowDateTime)) / 1e7 -+} -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/promhttp/delegator.go b/vendor/github.com/prometheus/client_golang/prometheus/promhttp/delegator.go -new file mode 100755 -index 0000000..9819917 ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/promhttp/delegator.go -@@ -0,0 +1,374 @@ -+// Copyright 2017 The Prometheus 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 promhttp -+ -+import ( -+ "bufio" -+ "io" -+ "net" -+ "net/http" -+) -+ -+const ( -+ closeNotifier = 1 << iota -+ flusher -+ hijacker -+ readerFrom -+ pusher -+) -+ -+type delegator interface { -+ http.ResponseWriter -+ -+ Status() int -+ Written() int64 -+} -+ -+type responseWriterDelegator struct { -+ http.ResponseWriter -+ -+ status int -+ written int64 -+ wroteHeader bool -+ observeWriteHeader func(int) -+} -+ -+func (r *responseWriterDelegator) Status() int { -+ return r.status -+} -+ -+func (r *responseWriterDelegator) Written() int64 { -+ return r.written -+} -+ -+func (r *responseWriterDelegator) WriteHeader(code int) { -+ if r.observeWriteHeader != nil && !r.wroteHeader { -+ // Only call observeWriteHeader for the 1st time. It's a bug if -+ // WriteHeader is called more than once, but we want to protect -+ // against it here. Note that we still delegate the WriteHeader -+ // to the original ResponseWriter to not mask the bug from it. -+ r.observeWriteHeader(code) -+ } -+ r.status = code -+ r.wroteHeader = true -+ r.ResponseWriter.WriteHeader(code) -+} -+ -+func (r *responseWriterDelegator) Write(b []byte) (int, error) { -+ // If applicable, call WriteHeader here so that observeWriteHeader is -+ // handled appropriately. -+ if !r.wroteHeader { -+ r.WriteHeader(http.StatusOK) -+ } -+ n, err := r.ResponseWriter.Write(b) -+ r.written += int64(n) -+ return n, err -+} -+ -+type ( -+ closeNotifierDelegator struct{ *responseWriterDelegator } -+ flusherDelegator struct{ *responseWriterDelegator } -+ hijackerDelegator struct{ *responseWriterDelegator } -+ readerFromDelegator struct{ *responseWriterDelegator } -+ pusherDelegator struct{ *responseWriterDelegator } -+) -+ -+func (d closeNotifierDelegator) CloseNotify() <-chan bool { -+ //nolint:staticcheck // Ignore SA1019. http.CloseNotifier is deprecated but we keep it here to not break existing users. -+ return d.ResponseWriter.(http.CloseNotifier).CloseNotify() -+} -+ -+func (d flusherDelegator) Flush() { -+ // If applicable, call WriteHeader here so that observeWriteHeader is -+ // handled appropriately. -+ if !d.wroteHeader { -+ d.WriteHeader(http.StatusOK) -+ } -+ d.ResponseWriter.(http.Flusher).Flush() -+} -+ -+func (d hijackerDelegator) Hijack() (net.Conn, *bufio.ReadWriter, error) { -+ return d.ResponseWriter.(http.Hijacker).Hijack() -+} -+ -+func (d readerFromDelegator) ReadFrom(re io.Reader) (int64, error) { -+ // If applicable, call WriteHeader here so that observeWriteHeader is -+ // handled appropriately. -+ if !d.wroteHeader { -+ d.WriteHeader(http.StatusOK) -+ } -+ n, err := d.ResponseWriter.(io.ReaderFrom).ReadFrom(re) -+ d.written += n -+ return n, err -+} -+ -+func (d pusherDelegator) Push(target string, opts *http.PushOptions) error { -+ return d.ResponseWriter.(http.Pusher).Push(target, opts) -+} -+ -+var pickDelegator = make([]func(*responseWriterDelegator) delegator, 32) -+ -+func init() { -+ // TODO(beorn7): Code generation would help here. -+ pickDelegator[0] = func(d *responseWriterDelegator) delegator { // 0 -+ return d -+ } -+ pickDelegator[closeNotifier] = func(d *responseWriterDelegator) delegator { // 1 -+ return closeNotifierDelegator{d} -+ } -+ pickDelegator[flusher] = func(d *responseWriterDelegator) delegator { // 2 -+ return flusherDelegator{d} -+ } -+ pickDelegator[flusher+closeNotifier] = func(d *responseWriterDelegator) delegator { // 3 -+ return struct { -+ *responseWriterDelegator -+ http.Flusher -+ http.CloseNotifier -+ }{d, flusherDelegator{d}, closeNotifierDelegator{d}} -+ } -+ pickDelegator[hijacker] = func(d *responseWriterDelegator) delegator { // 4 -+ return hijackerDelegator{d} -+ } -+ pickDelegator[hijacker+closeNotifier] = func(d *responseWriterDelegator) delegator { // 5 -+ return struct { -+ *responseWriterDelegator -+ http.Hijacker -+ http.CloseNotifier -+ }{d, hijackerDelegator{d}, closeNotifierDelegator{d}} -+ } -+ pickDelegator[hijacker+flusher] = func(d *responseWriterDelegator) delegator { // 6 -+ return struct { -+ *responseWriterDelegator -+ http.Hijacker -+ http.Flusher -+ }{d, hijackerDelegator{d}, flusherDelegator{d}} -+ } -+ pickDelegator[hijacker+flusher+closeNotifier] = func(d *responseWriterDelegator) delegator { // 7 -+ return struct { -+ *responseWriterDelegator -+ http.Hijacker -+ http.Flusher -+ http.CloseNotifier -+ }{d, hijackerDelegator{d}, flusherDelegator{d}, closeNotifierDelegator{d}} -+ } -+ pickDelegator[readerFrom] = func(d *responseWriterDelegator) delegator { // 8 -+ return readerFromDelegator{d} -+ } -+ pickDelegator[readerFrom+closeNotifier] = func(d *responseWriterDelegator) delegator { // 9 -+ return struct { -+ *responseWriterDelegator -+ io.ReaderFrom -+ http.CloseNotifier -+ }{d, readerFromDelegator{d}, closeNotifierDelegator{d}} -+ } -+ pickDelegator[readerFrom+flusher] = func(d *responseWriterDelegator) delegator { // 10 -+ return struct { -+ *responseWriterDelegator -+ io.ReaderFrom -+ http.Flusher -+ }{d, readerFromDelegator{d}, flusherDelegator{d}} -+ } -+ pickDelegator[readerFrom+flusher+closeNotifier] = func(d *responseWriterDelegator) delegator { // 11 -+ return struct { -+ *responseWriterDelegator -+ io.ReaderFrom -+ http.Flusher -+ http.CloseNotifier -+ }{d, readerFromDelegator{d}, flusherDelegator{d}, closeNotifierDelegator{d}} -+ } -+ pickDelegator[readerFrom+hijacker] = func(d *responseWriterDelegator) delegator { // 12 -+ return struct { -+ *responseWriterDelegator -+ io.ReaderFrom -+ http.Hijacker -+ }{d, readerFromDelegator{d}, hijackerDelegator{d}} -+ } -+ pickDelegator[readerFrom+hijacker+closeNotifier] = func(d *responseWriterDelegator) delegator { // 13 -+ return struct { -+ *responseWriterDelegator -+ io.ReaderFrom -+ http.Hijacker -+ http.CloseNotifier -+ }{d, readerFromDelegator{d}, hijackerDelegator{d}, closeNotifierDelegator{d}} -+ } -+ pickDelegator[readerFrom+hijacker+flusher] = func(d *responseWriterDelegator) delegator { // 14 -+ return struct { -+ *responseWriterDelegator -+ io.ReaderFrom -+ http.Hijacker -+ http.Flusher -+ }{d, readerFromDelegator{d}, hijackerDelegator{d}, flusherDelegator{d}} -+ } -+ pickDelegator[readerFrom+hijacker+flusher+closeNotifier] = func(d *responseWriterDelegator) delegator { // 15 -+ return struct { -+ *responseWriterDelegator -+ io.ReaderFrom -+ http.Hijacker -+ http.Flusher -+ http.CloseNotifier -+ }{d, readerFromDelegator{d}, hijackerDelegator{d}, flusherDelegator{d}, closeNotifierDelegator{d}} -+ } -+ pickDelegator[pusher] = func(d *responseWriterDelegator) delegator { // 16 -+ return pusherDelegator{d} -+ } -+ pickDelegator[pusher+closeNotifier] = func(d *responseWriterDelegator) delegator { // 17 -+ return struct { -+ *responseWriterDelegator -+ http.Pusher -+ http.CloseNotifier -+ }{d, pusherDelegator{d}, closeNotifierDelegator{d}} -+ } -+ pickDelegator[pusher+flusher] = func(d *responseWriterDelegator) delegator { // 18 -+ return struct { -+ *responseWriterDelegator -+ http.Pusher -+ http.Flusher -+ }{d, pusherDelegator{d}, flusherDelegator{d}} -+ } -+ pickDelegator[pusher+flusher+closeNotifier] = func(d *responseWriterDelegator) delegator { // 19 -+ return struct { -+ *responseWriterDelegator -+ http.Pusher -+ http.Flusher -+ http.CloseNotifier -+ }{d, pusherDelegator{d}, flusherDelegator{d}, closeNotifierDelegator{d}} -+ } -+ pickDelegator[pusher+hijacker] = func(d *responseWriterDelegator) delegator { // 20 -+ return struct { -+ *responseWriterDelegator -+ http.Pusher -+ http.Hijacker -+ }{d, pusherDelegator{d}, hijackerDelegator{d}} -+ } -+ pickDelegator[pusher+hijacker+closeNotifier] = func(d *responseWriterDelegator) delegator { // 21 -+ return struct { -+ *responseWriterDelegator -+ http.Pusher -+ http.Hijacker -+ http.CloseNotifier -+ }{d, pusherDelegator{d}, hijackerDelegator{d}, closeNotifierDelegator{d}} -+ } -+ pickDelegator[pusher+hijacker+flusher] = func(d *responseWriterDelegator) delegator { // 22 -+ return struct { -+ *responseWriterDelegator -+ http.Pusher -+ http.Hijacker -+ http.Flusher -+ }{d, pusherDelegator{d}, hijackerDelegator{d}, flusherDelegator{d}} -+ } -+ pickDelegator[pusher+hijacker+flusher+closeNotifier] = func(d *responseWriterDelegator) delegator { // 23 -+ return struct { -+ *responseWriterDelegator -+ http.Pusher -+ http.Hijacker -+ http.Flusher -+ http.CloseNotifier -+ }{d, pusherDelegator{d}, hijackerDelegator{d}, flusherDelegator{d}, closeNotifierDelegator{d}} -+ } -+ pickDelegator[pusher+readerFrom] = func(d *responseWriterDelegator) delegator { // 24 -+ return struct { -+ *responseWriterDelegator -+ http.Pusher -+ io.ReaderFrom -+ }{d, pusherDelegator{d}, readerFromDelegator{d}} -+ } -+ pickDelegator[pusher+readerFrom+closeNotifier] = func(d *responseWriterDelegator) delegator { // 25 -+ return struct { -+ *responseWriterDelegator -+ http.Pusher -+ io.ReaderFrom -+ http.CloseNotifier -+ }{d, pusherDelegator{d}, readerFromDelegator{d}, closeNotifierDelegator{d}} -+ } -+ pickDelegator[pusher+readerFrom+flusher] = func(d *responseWriterDelegator) delegator { // 26 -+ return struct { -+ *responseWriterDelegator -+ http.Pusher -+ io.ReaderFrom -+ http.Flusher -+ }{d, pusherDelegator{d}, readerFromDelegator{d}, flusherDelegator{d}} -+ } -+ pickDelegator[pusher+readerFrom+flusher+closeNotifier] = func(d *responseWriterDelegator) delegator { // 27 -+ return struct { -+ *responseWriterDelegator -+ http.Pusher -+ io.ReaderFrom -+ http.Flusher -+ http.CloseNotifier -+ }{d, pusherDelegator{d}, readerFromDelegator{d}, flusherDelegator{d}, closeNotifierDelegator{d}} -+ } -+ pickDelegator[pusher+readerFrom+hijacker] = func(d *responseWriterDelegator) delegator { // 28 -+ return struct { -+ *responseWriterDelegator -+ http.Pusher -+ io.ReaderFrom -+ http.Hijacker -+ }{d, pusherDelegator{d}, readerFromDelegator{d}, hijackerDelegator{d}} -+ } -+ pickDelegator[pusher+readerFrom+hijacker+closeNotifier] = func(d *responseWriterDelegator) delegator { // 29 -+ return struct { -+ *responseWriterDelegator -+ http.Pusher -+ io.ReaderFrom -+ http.Hijacker -+ http.CloseNotifier -+ }{d, pusherDelegator{d}, readerFromDelegator{d}, hijackerDelegator{d}, closeNotifierDelegator{d}} -+ } -+ pickDelegator[pusher+readerFrom+hijacker+flusher] = func(d *responseWriterDelegator) delegator { // 30 -+ return struct { -+ *responseWriterDelegator -+ http.Pusher -+ io.ReaderFrom -+ http.Hijacker -+ http.Flusher -+ }{d, pusherDelegator{d}, readerFromDelegator{d}, hijackerDelegator{d}, flusherDelegator{d}} -+ } -+ pickDelegator[pusher+readerFrom+hijacker+flusher+closeNotifier] = func(d *responseWriterDelegator) delegator { // 31 -+ return struct { -+ *responseWriterDelegator -+ http.Pusher -+ io.ReaderFrom -+ http.Hijacker -+ http.Flusher -+ http.CloseNotifier -+ }{d, pusherDelegator{d}, readerFromDelegator{d}, hijackerDelegator{d}, flusherDelegator{d}, closeNotifierDelegator{d}} -+ } -+} -+ -+func newDelegator(w http.ResponseWriter, observeWriteHeaderFunc func(int)) delegator { -+ d := &responseWriterDelegator{ -+ ResponseWriter: w, -+ observeWriteHeader: observeWriteHeaderFunc, -+ } -+ -+ id := 0 -+ //nolint:staticcheck // Ignore SA1019. http.CloseNotifier is deprecated but we keep it here to not break existing users. -+ if _, ok := w.(http.CloseNotifier); ok { -+ id += closeNotifier -+ } -+ if _, ok := w.(http.Flusher); ok { -+ id += flusher -+ } -+ if _, ok := w.(http.Hijacker); ok { -+ id += hijacker -+ } -+ if _, ok := w.(io.ReaderFrom); ok { -+ id += readerFrom -+ } -+ if _, ok := w.(http.Pusher); ok { -+ id += pusher -+ } -+ -+ return pickDelegator[id](d) -+} -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/promhttp/http.go b/vendor/github.com/prometheus/client_golang/prometheus/promhttp/http.go -new file mode 100755 -index 0000000..a4cc981 ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/promhttp/http.go -@@ -0,0 +1,395 @@ -+// Copyright 2016 The Prometheus 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 promhttp provides tooling around HTTP servers and clients. -+// -+// First, the package allows the creation of http.Handler instances to expose -+// Prometheus metrics via HTTP. promhttp.Handler acts on the -+// prometheus.DefaultGatherer. With HandlerFor, you can create a handler for a -+// custom registry or anything that implements the Gatherer interface. It also -+// allows the creation of handlers that act differently on errors or allow to -+// log errors. -+// -+// Second, the package provides tooling to instrument instances of http.Handler -+// via middleware. Middleware wrappers follow the naming scheme -+// InstrumentHandlerX, where X describes the intended use of the middleware. -+// See each function's doc comment for specific details. -+// -+// Finally, the package allows for an http.RoundTripper to be instrumented via -+// middleware. Middleware wrappers follow the naming scheme -+// InstrumentRoundTripperX, where X describes the intended use of the -+// middleware. See each function's doc comment for specific details. -+package promhttp -+ -+import ( -+ "compress/gzip" -+ "errors" -+ "fmt" -+ "io" -+ "net/http" -+ "strings" -+ "sync" -+ "time" -+ -+ "github.com/prometheus/common/expfmt" -+ -+ "github.com/prometheus/client_golang/prometheus" -+) -+ -+const ( -+ contentTypeHeader = "Content-Type" -+ contentEncodingHeader = "Content-Encoding" -+ acceptEncodingHeader = "Accept-Encoding" -+) -+ -+var gzipPool = sync.Pool{ -+ New: func() interface{} { -+ return gzip.NewWriter(nil) -+ }, -+} -+ -+// Handler returns an http.Handler for the prometheus.DefaultGatherer, using -+// default HandlerOpts, i.e. it reports the first error as an HTTP error, it has -+// no error logging, and it applies compression if requested by the client. -+// -+// The returned http.Handler is already instrumented using the -+// InstrumentMetricHandler function and the prometheus.DefaultRegisterer. If you -+// create multiple http.Handlers by separate calls of the Handler function, the -+// metrics used for instrumentation will be shared between them, providing -+// global scrape counts. -+// -+// This function is meant to cover the bulk of basic use cases. If you are doing -+// anything that requires more customization (including using a non-default -+// Gatherer, different instrumentation, and non-default HandlerOpts), use the -+// HandlerFor function. See there for details. -+func Handler() http.Handler { -+ return InstrumentMetricHandler( -+ prometheus.DefaultRegisterer, HandlerFor(prometheus.DefaultGatherer, HandlerOpts{}), -+ ) -+} -+ -+// HandlerFor returns an uninstrumented http.Handler for the provided -+// Gatherer. The behavior of the Handler is defined by the provided -+// HandlerOpts. Thus, HandlerFor is useful to create http.Handlers for custom -+// Gatherers, with non-default HandlerOpts, and/or with custom (or no) -+// instrumentation. Use the InstrumentMetricHandler function to apply the same -+// kind of instrumentation as it is used by the Handler function. -+func HandlerFor(reg prometheus.Gatherer, opts HandlerOpts) http.Handler { -+ return HandlerForTransactional(prometheus.ToTransactionalGatherer(reg), opts) -+} -+ -+// HandlerForTransactional is like HandlerFor, but it uses transactional gather, which -+// can safely change in-place returned *dto.MetricFamily before call to `Gather` and after -+// call to `done` of that `Gather`. -+func HandlerForTransactional(reg prometheus.TransactionalGatherer, opts HandlerOpts) http.Handler { -+ var ( -+ inFlightSem chan struct{} -+ errCnt = prometheus.NewCounterVec( -+ prometheus.CounterOpts{ -+ Name: "promhttp_metric_handler_errors_total", -+ Help: "Total number of internal errors encountered by the promhttp metric handler.", -+ }, -+ []string{"cause"}, -+ ) -+ ) -+ -+ if opts.MaxRequestsInFlight > 0 { -+ inFlightSem = make(chan struct{}, opts.MaxRequestsInFlight) -+ } -+ if opts.Registry != nil { -+ // Initialize all possibilities that can occur below. -+ errCnt.WithLabelValues("gathering") -+ errCnt.WithLabelValues("encoding") -+ if err := opts.Registry.Register(errCnt); err != nil { -+ are := &prometheus.AlreadyRegisteredError{} -+ if errors.As(err, are) { -+ errCnt = are.ExistingCollector.(*prometheus.CounterVec) -+ } else { -+ panic(err) -+ } -+ } -+ } -+ -+ h := http.HandlerFunc(func(rsp http.ResponseWriter, req *http.Request) { -+ if inFlightSem != nil { -+ select { -+ case inFlightSem <- struct{}{}: // All good, carry on. -+ defer func() { <-inFlightSem }() -+ default: -+ http.Error(rsp, fmt.Sprintf( -+ "Limit of concurrent requests reached (%d), try again later.", opts.MaxRequestsInFlight, -+ ), http.StatusServiceUnavailable) -+ return -+ } -+ } -+ mfs, done, err := reg.Gather() -+ defer done() -+ if err != nil { -+ if opts.ErrorLog != nil { -+ opts.ErrorLog.Println("error gathering metrics:", err) -+ } -+ errCnt.WithLabelValues("gathering").Inc() -+ switch opts.ErrorHandling { -+ case PanicOnError: -+ panic(err) -+ case ContinueOnError: -+ if len(mfs) == 0 { -+ // Still report the error if no metrics have been gathered. -+ httpError(rsp, err) -+ return -+ } -+ case HTTPErrorOnError: -+ httpError(rsp, err) -+ return -+ } -+ } -+ -+ var contentType expfmt.Format -+ if opts.EnableOpenMetrics { -+ contentType = expfmt.NegotiateIncludingOpenMetrics(req.Header) -+ } else { -+ contentType = expfmt.Negotiate(req.Header) -+ } -+ header := rsp.Header() -+ header.Set(contentTypeHeader, string(contentType)) -+ -+ w := io.Writer(rsp) -+ if !opts.DisableCompression && gzipAccepted(req.Header) { -+ header.Set(contentEncodingHeader, "gzip") -+ gz := gzipPool.Get().(*gzip.Writer) -+ defer gzipPool.Put(gz) -+ -+ gz.Reset(w) -+ defer gz.Close() -+ -+ w = gz -+ } -+ -+ enc := expfmt.NewEncoder(w, contentType) -+ -+ // handleError handles the error according to opts.ErrorHandling -+ // and returns true if we have to abort after the handling. -+ handleError := func(err error) bool { -+ if err == nil { -+ return false -+ } -+ if opts.ErrorLog != nil { -+ opts.ErrorLog.Println("error encoding and sending metric family:", err) -+ } -+ errCnt.WithLabelValues("encoding").Inc() -+ switch opts.ErrorHandling { -+ case PanicOnError: -+ panic(err) -+ case HTTPErrorOnError: -+ // We cannot really send an HTTP error at this -+ // point because we most likely have written -+ // something to rsp already. But at least we can -+ // stop sending. -+ return true -+ } -+ // Do nothing in all other cases, including ContinueOnError. -+ return false -+ } -+ -+ for _, mf := range mfs { -+ if handleError(enc.Encode(mf)) { -+ return -+ } -+ } -+ if closer, ok := enc.(expfmt.Closer); ok { -+ // This in particular takes care of the final "# EOF\n" line for OpenMetrics. -+ if handleError(closer.Close()) { -+ return -+ } -+ } -+ }) -+ -+ if opts.Timeout <= 0 { -+ return h -+ } -+ return http.TimeoutHandler(h, opts.Timeout, fmt.Sprintf( -+ "Exceeded configured timeout of %v.\n", -+ opts.Timeout, -+ )) -+} -+ -+// InstrumentMetricHandler is usually used with an http.Handler returned by the -+// HandlerFor function. It instruments the provided http.Handler with two -+// metrics: A counter vector "promhttp_metric_handler_requests_total" to count -+// scrapes partitioned by HTTP status code, and a gauge -+// "promhttp_metric_handler_requests_in_flight" to track the number of -+// simultaneous scrapes. This function idempotently registers collectors for -+// both metrics with the provided Registerer. It panics if the registration -+// fails. The provided metrics are useful to see how many scrapes hit the -+// monitored target (which could be from different Prometheus servers or other -+// scrapers), and how often they overlap (which would result in more than one -+// scrape in flight at the same time). Note that the scrapes-in-flight gauge -+// will contain the scrape by which it is exposed, while the scrape counter will -+// only get incremented after the scrape is complete (as only then the status -+// code is known). For tracking scrape durations, use the -+// "scrape_duration_seconds" gauge created by the Prometheus server upon each -+// scrape. -+func InstrumentMetricHandler(reg prometheus.Registerer, handler http.Handler) http.Handler { -+ cnt := prometheus.NewCounterVec( -+ prometheus.CounterOpts{ -+ Name: "promhttp_metric_handler_requests_total", -+ Help: "Total number of scrapes by HTTP status code.", -+ }, -+ []string{"code"}, -+ ) -+ // Initialize the most likely HTTP status codes. -+ cnt.WithLabelValues("200") -+ cnt.WithLabelValues("500") -+ cnt.WithLabelValues("503") -+ if err := reg.Register(cnt); err != nil { -+ are := &prometheus.AlreadyRegisteredError{} -+ if errors.As(err, are) { -+ cnt = are.ExistingCollector.(*prometheus.CounterVec) -+ } else { -+ panic(err) -+ } -+ } -+ -+ gge := prometheus.NewGauge(prometheus.GaugeOpts{ -+ Name: "promhttp_metric_handler_requests_in_flight", -+ Help: "Current number of scrapes being served.", -+ }) -+ if err := reg.Register(gge); err != nil { -+ are := &prometheus.AlreadyRegisteredError{} -+ if errors.As(err, are) { -+ gge = are.ExistingCollector.(prometheus.Gauge) -+ } else { -+ panic(err) -+ } -+ } -+ -+ return InstrumentHandlerCounter(cnt, InstrumentHandlerInFlight(gge, handler)) -+} -+ -+// HandlerErrorHandling defines how a Handler serving metrics will handle -+// errors. -+type HandlerErrorHandling int -+ -+// These constants cause handlers serving metrics to behave as described if -+// errors are encountered. -+const ( -+ // Serve an HTTP status code 500 upon the first error -+ // encountered. Report the error message in the body. Note that HTTP -+ // errors cannot be served anymore once the beginning of a regular -+ // payload has been sent. Thus, in the (unlikely) case that encoding the -+ // payload into the negotiated wire format fails, serving the response -+ // will simply be aborted. Set an ErrorLog in HandlerOpts to detect -+ // those errors. -+ HTTPErrorOnError HandlerErrorHandling = iota -+ // Ignore errors and try to serve as many metrics as possible. However, -+ // if no metrics can be served, serve an HTTP status code 500 and the -+ // last error message in the body. Only use this in deliberate "best -+ // effort" metrics collection scenarios. In this case, it is highly -+ // recommended to provide other means of detecting errors: By setting an -+ // ErrorLog in HandlerOpts, the errors are logged. By providing a -+ // Registry in HandlerOpts, the exposed metrics include an error counter -+ // "promhttp_metric_handler_errors_total", which can be used for -+ // alerts. -+ ContinueOnError -+ // Panic upon the first error encountered (useful for "crash only" apps). -+ PanicOnError -+) -+ -+// Logger is the minimal interface HandlerOpts needs for logging. Note that -+// log.Logger from the standard library implements this interface, and it is -+// easy to implement by custom loggers, if they don't do so already anyway. -+type Logger interface { -+ Println(v ...interface{}) -+} -+ -+// HandlerOpts specifies options how to serve metrics via an http.Handler. The -+// zero value of HandlerOpts is a reasonable default. -+type HandlerOpts struct { -+ // ErrorLog specifies an optional Logger for errors collecting and -+ // serving metrics. If nil, errors are not logged at all. Note that the -+ // type of a reported error is often prometheus.MultiError, which -+ // formats into a multi-line error string. If you want to avoid the -+ // latter, create a Logger implementation that detects a -+ // prometheus.MultiError and formats the contained errors into one line. -+ ErrorLog Logger -+ // ErrorHandling defines how errors are handled. Note that errors are -+ // logged regardless of the configured ErrorHandling provided ErrorLog -+ // is not nil. -+ ErrorHandling HandlerErrorHandling -+ // If Registry is not nil, it is used to register a metric -+ // "promhttp_metric_handler_errors_total", partitioned by "cause". A -+ // failed registration causes a panic. Note that this error counter is -+ // different from the instrumentation you get from the various -+ // InstrumentHandler... helpers. It counts errors that don't necessarily -+ // result in a non-2xx HTTP status code. There are two typical cases: -+ // (1) Encoding errors that only happen after streaming of the HTTP body -+ // has already started (and the status code 200 has been sent). This -+ // should only happen with custom collectors. (2) Collection errors with -+ // no effect on the HTTP status code because ErrorHandling is set to -+ // ContinueOnError. -+ Registry prometheus.Registerer -+ // If DisableCompression is true, the handler will never compress the -+ // response, even if requested by the client. -+ DisableCompression bool -+ // The number of concurrent HTTP requests is limited to -+ // MaxRequestsInFlight. Additional requests are responded to with 503 -+ // Service Unavailable and a suitable message in the body. If -+ // MaxRequestsInFlight is 0 or negative, no limit is applied. -+ MaxRequestsInFlight int -+ // If handling a request takes longer than Timeout, it is responded to -+ // with 503 ServiceUnavailable and a suitable Message. No timeout is -+ // applied if Timeout is 0 or negative. Note that with the current -+ // implementation, reaching the timeout simply ends the HTTP requests as -+ // described above (and even that only if sending of the body hasn't -+ // started yet), while the bulk work of gathering all the metrics keeps -+ // running in the background (with the eventual result to be thrown -+ // away). Until the implementation is improved, it is recommended to -+ // implement a separate timeout in potentially slow Collectors. -+ Timeout time.Duration -+ // If true, the experimental OpenMetrics encoding is added to the -+ // possible options during content negotiation. Note that Prometheus -+ // 2.5.0+ will negotiate OpenMetrics as first priority. OpenMetrics is -+ // the only way to transmit exemplars. However, the move to OpenMetrics -+ // is not completely transparent. Most notably, the values of "quantile" -+ // labels of Summaries and "le" labels of Histograms are formatted with -+ // a trailing ".0" if they would otherwise look like integer numbers -+ // (which changes the identity of the resulting series on the Prometheus -+ // server). -+ EnableOpenMetrics bool -+} -+ -+// gzipAccepted returns whether the client will accept gzip-encoded content. -+func gzipAccepted(header http.Header) bool { -+ a := header.Get(acceptEncodingHeader) -+ parts := strings.Split(a, ",") -+ for _, part := range parts { -+ part = strings.TrimSpace(part) -+ if part == "gzip" || strings.HasPrefix(part, "gzip;") { -+ return true -+ } -+ } -+ return false -+} -+ -+// httpError removes any content-encoding header and then calls http.Error with -+// the provided error and http.StatusInternalServerError. Error contents is -+// supposed to be uncompressed plain text. Same as with a plain http.Error, this -+// must not be called if the header or any payload has already been sent. -+func httpError(rsp http.ResponseWriter, err error) { -+ rsp.Header().Del(contentEncodingHeader) -+ http.Error( -+ rsp, -+ "An error has occurred while serving metrics:\n\n"+err.Error(), -+ http.StatusInternalServerError, -+ ) -+} -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/promhttp/instrument_client.go b/vendor/github.com/prometheus/client_golang/prometheus/promhttp/instrument_client.go -new file mode 100755 -index 0000000..2108678 ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/promhttp/instrument_client.go -@@ -0,0 +1,247 @@ -+// Copyright 2017 The Prometheus 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 promhttp -+ -+import ( -+ "crypto/tls" -+ "net/http" -+ "net/http/httptrace" -+ "time" -+ -+ "github.com/prometheus/client_golang/prometheus" -+) -+ -+// The RoundTripperFunc type is an adapter to allow the use of ordinary -+// functions as RoundTrippers. If f is a function with the appropriate -+// signature, RountTripperFunc(f) is a RoundTripper that calls f. -+type RoundTripperFunc func(req *http.Request) (*http.Response, error) -+ -+// RoundTrip implements the RoundTripper interface. -+func (rt RoundTripperFunc) RoundTrip(r *http.Request) (*http.Response, error) { -+ return rt(r) -+} -+ -+// InstrumentRoundTripperInFlight is a middleware that wraps the provided -+// http.RoundTripper. It sets the provided prometheus.Gauge to the number of -+// requests currently handled by the wrapped http.RoundTripper. -+// -+// See the example for ExampleInstrumentRoundTripperDuration for example usage. -+func InstrumentRoundTripperInFlight(gauge prometheus.Gauge, next http.RoundTripper) RoundTripperFunc { -+ return func(r *http.Request) (*http.Response, error) { -+ gauge.Inc() -+ defer gauge.Dec() -+ return next.RoundTrip(r) -+ } -+} -+ -+// InstrumentRoundTripperCounter is a middleware that wraps the provided -+// http.RoundTripper to observe the request result with the provided CounterVec. -+// The CounterVec must have zero, one, or two non-const non-curried labels. For -+// those, the only allowed label names are "code" and "method". The function -+// panics otherwise. For the "method" label a predefined default label value set -+// is used to filter given values. Values besides predefined values will count -+// as `unknown` method.`WithExtraMethods` can be used to add more -+// methods to the set. Partitioning of the CounterVec happens by HTTP status code -+// and/or HTTP method if the respective instance label names are present in the -+// CounterVec. For unpartitioned counting, use a CounterVec with zero labels. -+// -+// If the wrapped RoundTripper panics or returns a non-nil error, the Counter -+// is not incremented. -+// -+// Use with WithExemplarFromContext to instrument the exemplars on the counter of requests. -+// -+// See the example for ExampleInstrumentRoundTripperDuration for example usage. -+func InstrumentRoundTripperCounter(counter *prometheus.CounterVec, next http.RoundTripper, opts ...Option) RoundTripperFunc { -+ rtOpts := defaultOptions() -+ for _, o := range opts { -+ o.apply(rtOpts) -+ } -+ -+ code, method := checkLabels(counter) -+ -+ return func(r *http.Request) (*http.Response, error) { -+ resp, err := next.RoundTrip(r) -+ if err == nil { -+ addWithExemplar( -+ counter.With(labels(code, method, r.Method, resp.StatusCode, rtOpts.extraMethods...)), -+ 1, -+ rtOpts.getExemplarFn(r.Context()), -+ ) -+ } -+ return resp, err -+ } -+} -+ -+// InstrumentRoundTripperDuration is a middleware that wraps the provided -+// http.RoundTripper to observe the request duration with the provided -+// ObserverVec. The ObserverVec must have zero, one, or two non-const -+// non-curried labels. For those, the only allowed label names are "code" and -+// "method". The function panics otherwise. For the "method" label a predefined -+// default label value set is used to filter given values. Values besides -+// predefined values will count as `unknown` method. `WithExtraMethods` -+// can be used to add more methods to the set. The Observe method of the Observer -+// in the ObserverVec is called with the request duration in -+// seconds. Partitioning happens by HTTP status code and/or HTTP method if the -+// respective instance label names are present in the ObserverVec. For -+// unpartitioned observations, use an ObserverVec with zero labels. Note that -+// partitioning of Histograms is expensive and should be used judiciously. -+// -+// If the wrapped RoundTripper panics or returns a non-nil error, no values are -+// reported. -+// -+// Use with WithExemplarFromContext to instrument the exemplars on the duration histograms. -+// -+// Note that this method is only guaranteed to never observe negative durations -+// if used with Go1.9+. -+func InstrumentRoundTripperDuration(obs prometheus.ObserverVec, next http.RoundTripper, opts ...Option) RoundTripperFunc { -+ rtOpts := defaultOptions() -+ for _, o := range opts { -+ o.apply(rtOpts) -+ } -+ -+ code, method := checkLabels(obs) -+ -+ return func(r *http.Request) (*http.Response, error) { -+ start := time.Now() -+ resp, err := next.RoundTrip(r) -+ if err == nil { -+ observeWithExemplar( -+ obs.With(labels(code, method, r.Method, resp.StatusCode, rtOpts.extraMethods...)), -+ time.Since(start).Seconds(), -+ rtOpts.getExemplarFn(r.Context()), -+ ) -+ } -+ return resp, err -+ } -+} -+ -+// InstrumentTrace is used to offer flexibility in instrumenting the available -+// httptrace.ClientTrace hook functions. Each function is passed a float64 -+// representing the time in seconds since the start of the http request. A user -+// may choose to use separately buckets Histograms, or implement custom -+// instance labels on a per function basis. -+type InstrumentTrace struct { -+ GotConn func(float64) -+ PutIdleConn func(float64) -+ GotFirstResponseByte func(float64) -+ Got100Continue func(float64) -+ DNSStart func(float64) -+ DNSDone func(float64) -+ ConnectStart func(float64) -+ ConnectDone func(float64) -+ TLSHandshakeStart func(float64) -+ TLSHandshakeDone func(float64) -+ WroteHeaders func(float64) -+ Wait100Continue func(float64) -+ WroteRequest func(float64) -+} -+ -+// InstrumentRoundTripperTrace is a middleware that wraps the provided -+// RoundTripper and reports times to hook functions provided in the -+// InstrumentTrace struct. Hook functions that are not present in the provided -+// InstrumentTrace struct are ignored. Times reported to the hook functions are -+// time since the start of the request. Only with Go1.9+, those times are -+// guaranteed to never be negative. (Earlier Go versions are not using a -+// monotonic clock.) Note that partitioning of Histograms is expensive and -+// should be used judiciously. -+// -+// For hook functions that receive an error as an argument, no observations are -+// made in the event of a non-nil error value. -+// -+// See the example for ExampleInstrumentRoundTripperDuration for example usage. -+func InstrumentRoundTripperTrace(it *InstrumentTrace, next http.RoundTripper) RoundTripperFunc { -+ return func(r *http.Request) (*http.Response, error) { -+ start := time.Now() -+ -+ trace := &httptrace.ClientTrace{ -+ GotConn: func(_ httptrace.GotConnInfo) { -+ if it.GotConn != nil { -+ it.GotConn(time.Since(start).Seconds()) -+ } -+ }, -+ PutIdleConn: func(err error) { -+ if err != nil { -+ return -+ } -+ if it.PutIdleConn != nil { -+ it.PutIdleConn(time.Since(start).Seconds()) -+ } -+ }, -+ DNSStart: func(_ httptrace.DNSStartInfo) { -+ if it.DNSStart != nil { -+ it.DNSStart(time.Since(start).Seconds()) -+ } -+ }, -+ DNSDone: func(_ httptrace.DNSDoneInfo) { -+ if it.DNSDone != nil { -+ it.DNSDone(time.Since(start).Seconds()) -+ } -+ }, -+ ConnectStart: func(_, _ string) { -+ if it.ConnectStart != nil { -+ it.ConnectStart(time.Since(start).Seconds()) -+ } -+ }, -+ ConnectDone: func(_, _ string, err error) { -+ if err != nil { -+ return -+ } -+ if it.ConnectDone != nil { -+ it.ConnectDone(time.Since(start).Seconds()) -+ } -+ }, -+ GotFirstResponseByte: func() { -+ if it.GotFirstResponseByte != nil { -+ it.GotFirstResponseByte(time.Since(start).Seconds()) -+ } -+ }, -+ Got100Continue: func() { -+ if it.Got100Continue != nil { -+ it.Got100Continue(time.Since(start).Seconds()) -+ } -+ }, -+ TLSHandshakeStart: func() { -+ if it.TLSHandshakeStart != nil { -+ it.TLSHandshakeStart(time.Since(start).Seconds()) -+ } -+ }, -+ TLSHandshakeDone: func(_ tls.ConnectionState, err error) { -+ if err != nil { -+ return -+ } -+ if it.TLSHandshakeDone != nil { -+ it.TLSHandshakeDone(time.Since(start).Seconds()) -+ } -+ }, -+ WroteHeaders: func() { -+ if it.WroteHeaders != nil { -+ it.WroteHeaders(time.Since(start).Seconds()) -+ } -+ }, -+ Wait100Continue: func() { -+ if it.Wait100Continue != nil { -+ it.Wait100Continue(time.Since(start).Seconds()) -+ } -+ }, -+ WroteRequest: func(_ httptrace.WroteRequestInfo) { -+ if it.WroteRequest != nil { -+ it.WroteRequest(time.Since(start).Seconds()) -+ } -+ }, -+ } -+ r = r.WithContext(httptrace.WithClientTrace(r.Context(), trace)) -+ -+ return next.RoundTrip(r) -+ } -+} -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/promhttp/instrument_server.go b/vendor/github.com/prometheus/client_golang/prometheus/promhttp/instrument_server.go -new file mode 100755 -index 0000000..cca67a7 ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/promhttp/instrument_server.go -@@ -0,0 +1,570 @@ -+// Copyright 2017 The Prometheus 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 promhttp -+ -+import ( -+ "errors" -+ "net/http" -+ "strconv" -+ "strings" -+ "time" -+ -+ dto "github.com/prometheus/client_model/go" -+ -+ "github.com/prometheus/client_golang/prometheus" -+) -+ -+// magicString is used for the hacky label test in checkLabels. Remove once fixed. -+const magicString = "zZgWfBxLqvG8kc8IMv3POi2Bb0tZI3vAnBx+gBaFi9FyPzB/CzKUer1yufDa" -+ -+// observeWithExemplar is a wrapper for [prometheus.ExemplarAdder.ExemplarObserver], -+// which falls back to [prometheus.Observer.Observe] if no labels are provided. -+func observeWithExemplar(obs prometheus.Observer, val float64, labels map[string]string) { -+ if labels == nil { -+ obs.Observe(val) -+ return -+ } -+ obs.(prometheus.ExemplarObserver).ObserveWithExemplar(val, labels) -+} -+ -+// addWithExemplar is a wrapper for [prometheus.ExemplarAdder.AddWithExemplar], -+// which falls back to [prometheus.Counter.Add] if no labels are provided. -+func addWithExemplar(obs prometheus.Counter, val float64, labels map[string]string) { -+ if labels == nil { -+ obs.Add(val) -+ return -+ } -+ obs.(prometheus.ExemplarAdder).AddWithExemplar(val, labels) -+} -+ -+// InstrumentHandlerInFlight is a middleware that wraps the provided -+// http.Handler. It sets the provided prometheus.Gauge to the number of -+// requests currently handled by the wrapped http.Handler. -+// -+// See the example for InstrumentHandlerDuration for example usage. -+func InstrumentHandlerInFlight(g prometheus.Gauge, next http.Handler) http.Handler { -+ return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { -+ g.Inc() -+ defer g.Dec() -+ next.ServeHTTP(w, r) -+ }) -+} -+ -+// InstrumentHandlerDuration is a middleware that wraps the provided -+// http.Handler to observe the request duration with the provided ObserverVec. -+// The ObserverVec must have valid metric and label names and must have zero, -+// one, or two non-const non-curried labels. For those, the only allowed label -+// names are "code" and "method". The function panics otherwise. For the "method" -+// label a predefined default label value set is used to filter given values. -+// Values besides predefined values will count as `unknown` method. -+// `WithExtraMethods` can be used to add more methods to the set. The Observe -+// method of the Observer in the ObserverVec is called with the request duration -+// in seconds. Partitioning happens by HTTP status code and/or HTTP method if -+// the respective instance label names are present in the ObserverVec. For -+// unpartitioned observations, use an ObserverVec with zero labels. Note that -+// partitioning of Histograms is expensive and should be used judiciously. -+// -+// If the wrapped Handler does not set a status code, a status code of 200 is assumed. -+// -+// If the wrapped Handler panics, no values are reported. -+// -+// Note that this method is only guaranteed to never observe negative durations -+// if used with Go1.9+. -+func InstrumentHandlerDuration(obs prometheus.ObserverVec, next http.Handler, opts ...Option) http.HandlerFunc { -+ hOpts := defaultOptions() -+ for _, o := range opts { -+ o.apply(hOpts) -+ } -+ -+ code, method := checkLabels(obs) -+ -+ if code { -+ return func(w http.ResponseWriter, r *http.Request) { -+ now := time.Now() -+ d := newDelegator(w, nil) -+ next.ServeHTTP(d, r) -+ -+ observeWithExemplar( -+ obs.With(labels(code, method, r.Method, d.Status(), hOpts.extraMethods...)), -+ time.Since(now).Seconds(), -+ hOpts.getExemplarFn(r.Context()), -+ ) -+ } -+ } -+ -+ return func(w http.ResponseWriter, r *http.Request) { -+ now := time.Now() -+ next.ServeHTTP(w, r) -+ -+ observeWithExemplar( -+ obs.With(labels(code, method, r.Method, 0, hOpts.extraMethods...)), -+ time.Since(now).Seconds(), -+ hOpts.getExemplarFn(r.Context()), -+ ) -+ } -+} -+ -+// InstrumentHandlerCounter is a middleware that wraps the provided http.Handler -+// to observe the request result with the provided CounterVec. The CounterVec -+// must have valid metric and label names and must have zero, one, or two -+// non-const non-curried labels. For those, the only allowed label names are -+// "code" and "method". The function panics otherwise. For the "method" -+// label a predefined default label value set is used to filter given values. -+// Values besides predefined values will count as `unknown` method. -+// `WithExtraMethods` can be used to add more methods to the set. Partitioning of the -+// CounterVec happens by HTTP status code and/or HTTP method if the respective -+// instance label names are present in the CounterVec. For unpartitioned -+// counting, use a CounterVec with zero labels. -+// -+// If the wrapped Handler does not set a status code, a status code of 200 is assumed. -+// -+// If the wrapped Handler panics, the Counter is not incremented. -+// -+// See the example for InstrumentHandlerDuration for example usage. -+func InstrumentHandlerCounter(counter *prometheus.CounterVec, next http.Handler, opts ...Option) http.HandlerFunc { -+ hOpts := defaultOptions() -+ for _, o := range opts { -+ o.apply(hOpts) -+ } -+ -+ code, method := checkLabels(counter) -+ -+ if code { -+ return func(w http.ResponseWriter, r *http.Request) { -+ d := newDelegator(w, nil) -+ next.ServeHTTP(d, r) -+ -+ addWithExemplar( -+ counter.With(labels(code, method, r.Method, d.Status(), hOpts.extraMethods...)), -+ 1, -+ hOpts.getExemplarFn(r.Context()), -+ ) -+ } -+ } -+ -+ return func(w http.ResponseWriter, r *http.Request) { -+ next.ServeHTTP(w, r) -+ addWithExemplar( -+ counter.With(labels(code, method, r.Method, 0, hOpts.extraMethods...)), -+ 1, -+ hOpts.getExemplarFn(r.Context()), -+ ) -+ } -+} -+ -+// InstrumentHandlerTimeToWriteHeader is a middleware that wraps the provided -+// http.Handler to observe with the provided ObserverVec the request duration -+// until the response headers are written. The ObserverVec must have valid -+// metric and label names and must have zero, one, or two non-const non-curried -+// labels. For those, the only allowed label names are "code" and "method". The -+// function panics otherwise. For the "method" label a predefined default label -+// value set is used to filter given values. Values besides predefined values -+// will count as `unknown` method.`WithExtraMethods` can be used to add more -+// methods to the set. The Observe method of the Observer in the -+// ObserverVec is called with the request duration in seconds. Partitioning -+// happens by HTTP status code and/or HTTP method if the respective instance -+// label names are present in the ObserverVec. For unpartitioned observations, -+// use an ObserverVec with zero labels. Note that partitioning of Histograms is -+// expensive and should be used judiciously. -+// -+// If the wrapped Handler panics before calling WriteHeader, no value is -+// reported. -+// -+// Note that this method is only guaranteed to never observe negative durations -+// if used with Go1.9+. -+// -+// See the example for InstrumentHandlerDuration for example usage. -+func InstrumentHandlerTimeToWriteHeader(obs prometheus.ObserverVec, next http.Handler, opts ...Option) http.HandlerFunc { -+ hOpts := defaultOptions() -+ for _, o := range opts { -+ o.apply(hOpts) -+ } -+ -+ code, method := checkLabels(obs) -+ -+ return func(w http.ResponseWriter, r *http.Request) { -+ now := time.Now() -+ d := newDelegator(w, func(status int) { -+ observeWithExemplar( -+ obs.With(labels(code, method, r.Method, status, hOpts.extraMethods...)), -+ time.Since(now).Seconds(), -+ hOpts.getExemplarFn(r.Context()), -+ ) -+ }) -+ next.ServeHTTP(d, r) -+ } -+} -+ -+// InstrumentHandlerRequestSize is a middleware that wraps the provided -+// http.Handler to observe the request size with the provided ObserverVec. The -+// ObserverVec must have valid metric and label names and must have zero, one, -+// or two non-const non-curried labels. For those, the only allowed label names -+// are "code" and "method". The function panics otherwise. For the "method" -+// label a predefined default label value set is used to filter given values. -+// Values besides predefined values will count as `unknown` method. -+// `WithExtraMethods` can be used to add more methods to the set. The Observe -+// method of the Observer in the ObserverVec is called with the request size in -+// bytes. Partitioning happens by HTTP status code and/or HTTP method if the -+// respective instance label names are present in the ObserverVec. For -+// unpartitioned observations, use an ObserverVec with zero labels. Note that -+// partitioning of Histograms is expensive and should be used judiciously. -+// -+// If the wrapped Handler does not set a status code, a status code of 200 is assumed. -+// -+// If the wrapped Handler panics, no values are reported. -+// -+// See the example for InstrumentHandlerDuration for example usage. -+func InstrumentHandlerRequestSize(obs prometheus.ObserverVec, next http.Handler, opts ...Option) http.HandlerFunc { -+ hOpts := defaultOptions() -+ for _, o := range opts { -+ o.apply(hOpts) -+ } -+ -+ code, method := checkLabels(obs) -+ if code { -+ return func(w http.ResponseWriter, r *http.Request) { -+ d := newDelegator(w, nil) -+ next.ServeHTTP(d, r) -+ size := computeApproximateRequestSize(r) -+ observeWithExemplar( -+ obs.With(labels(code, method, r.Method, d.Status(), hOpts.extraMethods...)), -+ float64(size), -+ hOpts.getExemplarFn(r.Context()), -+ ) -+ } -+ } -+ -+ return func(w http.ResponseWriter, r *http.Request) { -+ next.ServeHTTP(w, r) -+ size := computeApproximateRequestSize(r) -+ observeWithExemplar( -+ obs.With(labels(code, method, r.Method, 0, hOpts.extraMethods...)), -+ float64(size), -+ hOpts.getExemplarFn(r.Context()), -+ ) -+ } -+} -+ -+// InstrumentHandlerResponseSize is a middleware that wraps the provided -+// http.Handler to observe the response size with the provided ObserverVec. The -+// ObserverVec must have valid metric and label names and must have zero, one, -+// or two non-const non-curried labels. For those, the only allowed label names -+// are "code" and "method". The function panics otherwise. For the "method" -+// label a predefined default label value set is used to filter given values. -+// Values besides predefined values will count as `unknown` method. -+// `WithExtraMethods` can be used to add more methods to the set. The Observe -+// method of the Observer in the ObserverVec is called with the response size in -+// bytes. Partitioning happens by HTTP status code and/or HTTP method if the -+// respective instance label names are present in the ObserverVec. For -+// unpartitioned observations, use an ObserverVec with zero labels. Note that -+// partitioning of Histograms is expensive and should be used judiciously. -+// -+// If the wrapped Handler does not set a status code, a status code of 200 is assumed. -+// -+// If the wrapped Handler panics, no values are reported. -+// -+// See the example for InstrumentHandlerDuration for example usage. -+func InstrumentHandlerResponseSize(obs prometheus.ObserverVec, next http.Handler, opts ...Option) http.Handler { -+ hOpts := defaultOptions() -+ for _, o := range opts { -+ o.apply(hOpts) -+ } -+ -+ code, method := checkLabels(obs) -+ -+ return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { -+ d := newDelegator(w, nil) -+ next.ServeHTTP(d, r) -+ observeWithExemplar( -+ obs.With(labels(code, method, r.Method, d.Status(), hOpts.extraMethods...)), -+ float64(d.Written()), -+ hOpts.getExemplarFn(r.Context()), -+ ) -+ }) -+} -+ -+// checkLabels returns whether the provided Collector has a non-const, -+// non-curried label named "code" and/or "method". It panics if the provided -+// Collector does not have a Desc or has more than one Desc or its Desc is -+// invalid. It also panics if the Collector has any non-const, non-curried -+// labels that are not named "code" or "method". -+func checkLabels(c prometheus.Collector) (code, method bool) { -+ // TODO(beorn7): Remove this hacky way to check for instance labels -+ // once Descriptors can have their dimensionality queried. -+ var ( -+ desc *prometheus.Desc -+ m prometheus.Metric -+ pm dto.Metric -+ lvs []string -+ ) -+ -+ // Get the Desc from the Collector. -+ descc := make(chan *prometheus.Desc, 1) -+ c.Describe(descc) -+ -+ select { -+ case desc = <-descc: -+ default: -+ panic("no description provided by collector") -+ } -+ select { -+ case <-descc: -+ panic("more than one description provided by collector") -+ default: -+ } -+ -+ close(descc) -+ -+ // Make sure the Collector has a valid Desc by registering it with a -+ // temporary registry. -+ prometheus.NewRegistry().MustRegister(c) -+ -+ // Create a ConstMetric with the Desc. Since we don't know how many -+ // variable labels there are, try for as long as it needs. -+ for err := errors.New("dummy"); err != nil; lvs = append(lvs, magicString) { -+ m, err = prometheus.NewConstMetric(desc, prometheus.UntypedValue, 0, lvs...) -+ } -+ -+ // Write out the metric into a proto message and look at the labels. -+ // If the value is not the magicString, it is a constLabel, which doesn't interest us. -+ // If the label is curried, it doesn't interest us. -+ // In all other cases, only "code" or "method" is allowed. -+ if err := m.Write(&pm); err != nil { -+ panic("error checking metric for labels") -+ } -+ for _, label := range pm.Label { -+ name, value := label.GetName(), label.GetValue() -+ if value != magicString || isLabelCurried(c, name) { -+ continue -+ } -+ switch name { -+ case "code": -+ code = true -+ case "method": -+ method = true -+ default: -+ panic("metric partitioned with non-supported labels") -+ } -+ } -+ return -+} -+ -+func isLabelCurried(c prometheus.Collector, label string) bool { -+ // This is even hackier than the label test above. -+ // We essentially try to curry again and see if it works. -+ // But for that, we need to type-convert to the two -+ // types we use here, ObserverVec or *CounterVec. -+ switch v := c.(type) { -+ case *prometheus.CounterVec: -+ if _, err := v.CurryWith(prometheus.Labels{label: "dummy"}); err == nil { -+ return false -+ } -+ case prometheus.ObserverVec: -+ if _, err := v.CurryWith(prometheus.Labels{label: "dummy"}); err == nil { -+ return false -+ } -+ default: -+ panic("unsupported metric vec type") -+ } -+ return true -+} -+ -+// emptyLabels is a one-time allocation for non-partitioned metrics to avoid -+// unnecessary allocations on each request. -+var emptyLabels = prometheus.Labels{} -+ -+func labels(code, method bool, reqMethod string, status int, extraMethods ...string) prometheus.Labels { -+ if !(code || method) { -+ return emptyLabels -+ } -+ labels := prometheus.Labels{} -+ -+ if code { -+ labels["code"] = sanitizeCode(status) -+ } -+ if method { -+ labels["method"] = sanitizeMethod(reqMethod, extraMethods...) -+ } -+ -+ return labels -+} -+ -+func computeApproximateRequestSize(r *http.Request) int { -+ s := 0 -+ if r.URL != nil { -+ s += len(r.URL.String()) -+ } -+ -+ s += len(r.Method) -+ s += len(r.Proto) -+ for name, values := range r.Header { -+ s += len(name) -+ for _, value := range values { -+ s += len(value) -+ } -+ } -+ s += len(r.Host) -+ -+ // N.B. r.Form and r.MultipartForm are assumed to be included in r.URL. -+ -+ if r.ContentLength != -1 { -+ s += int(r.ContentLength) -+ } -+ return s -+} -+ -+// If the wrapped http.Handler has a known method, it will be sanitized and returned. -+// Otherwise, "unknown" will be returned. The known method list can be extended -+// as needed by using extraMethods parameter. -+func sanitizeMethod(m string, extraMethods ...string) string { -+ // See https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods for -+ // the methods chosen as default. -+ switch m { -+ case "GET", "get": -+ return "get" -+ case "PUT", "put": -+ return "put" -+ case "HEAD", "head": -+ return "head" -+ case "POST", "post": -+ return "post" -+ case "DELETE", "delete": -+ return "delete" -+ case "CONNECT", "connect": -+ return "connect" -+ case "OPTIONS", "options": -+ return "options" -+ case "NOTIFY", "notify": -+ return "notify" -+ case "TRACE", "trace": -+ return "trace" -+ case "PATCH", "patch": -+ return "patch" -+ default: -+ for _, method := range extraMethods { -+ if strings.EqualFold(m, method) { -+ return strings.ToLower(m) -+ } -+ } -+ return "unknown" -+ } -+} -+ -+// If the wrapped http.Handler has not set a status code, i.e. the value is -+// currently 0, sanitizeCode will return 200, for consistency with behavior in -+// the stdlib. -+func sanitizeCode(s int) string { -+ // See for accepted codes https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml -+ switch s { -+ case 100: -+ return "100" -+ case 101: -+ return "101" -+ -+ case 200, 0: -+ return "200" -+ case 201: -+ return "201" -+ case 202: -+ return "202" -+ case 203: -+ return "203" -+ case 204: -+ return "204" -+ case 205: -+ return "205" -+ case 206: -+ return "206" -+ -+ case 300: -+ return "300" -+ case 301: -+ return "301" -+ case 302: -+ return "302" -+ case 304: -+ return "304" -+ case 305: -+ return "305" -+ case 307: -+ return "307" -+ -+ case 400: -+ return "400" -+ case 401: -+ return "401" -+ case 402: -+ return "402" -+ case 403: -+ return "403" -+ case 404: -+ return "404" -+ case 405: -+ return "405" -+ case 406: -+ return "406" -+ case 407: -+ return "407" -+ case 408: -+ return "408" -+ case 409: -+ return "409" -+ case 410: -+ return "410" -+ case 411: -+ return "411" -+ case 412: -+ return "412" -+ case 413: -+ return "413" -+ case 414: -+ return "414" -+ case 415: -+ return "415" -+ case 416: -+ return "416" -+ case 417: -+ return "417" -+ case 418: -+ return "418" -+ -+ case 500: -+ return "500" -+ case 501: -+ return "501" -+ case 502: -+ return "502" -+ case 503: -+ return "503" -+ case 504: -+ return "504" -+ case 505: -+ return "505" -+ -+ case 428: -+ return "428" -+ case 429: -+ return "429" -+ case 431: -+ return "431" -+ case 511: -+ return "511" -+ -+ default: -+ if s >= 100 && s <= 599 { -+ return strconv.Itoa(s) -+ } -+ return "unknown" -+ } -+} -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/promhttp/option.go b/vendor/github.com/prometheus/client_golang/prometheus/promhttp/option.go -new file mode 100755 -index 0000000..c590d91 ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/promhttp/option.go -@@ -0,0 +1,58 @@ -+// Copyright 2022 The Prometheus 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 promhttp -+ -+import ( -+ "context" -+ -+ "github.com/prometheus/client_golang/prometheus" -+) -+ -+// Option are used to configure both handler (middleware) or round tripper. -+type Option interface { -+ apply(*options) -+} -+ -+// options store options for both a handler or round tripper. -+type options struct { -+ extraMethods []string -+ getExemplarFn func(requestCtx context.Context) prometheus.Labels -+} -+ -+func defaultOptions() *options { -+ return &options{getExemplarFn: func(ctx context.Context) prometheus.Labels { return nil }} -+} -+ -+type optionApplyFunc func(*options) -+ -+func (o optionApplyFunc) apply(opt *options) { o(opt) } -+ -+// WithExtraMethods adds additional HTTP methods to the list of allowed methods. -+// See https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods for the default list. -+// -+// See the example for ExampleInstrumentHandlerWithExtraMethods for example usage. -+func WithExtraMethods(methods ...string) Option { -+ return optionApplyFunc(func(o *options) { -+ o.extraMethods = methods -+ }) -+} -+ -+// WithExemplarFromContext adds allows to put a hook to all counter and histogram metrics. -+// If the hook function returns non-nil labels, exemplars will be added for that request, otherwise metric -+// will get instrumented without exemplar. -+func WithExemplarFromContext(getExemplarFn func(requestCtx context.Context) prometheus.Labels) Option { -+ return optionApplyFunc(func(o *options) { -+ o.getExemplarFn = getExemplarFn -+ }) -+} -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/registry.go b/vendor/github.com/prometheus/client_golang/prometheus/registry.go -new file mode 100755 -index 0000000..09e34d3 ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/registry.go -@@ -0,0 +1,1072 @@ -+// Copyright 2014 The Prometheus 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 prometheus -+ -+import ( -+ "bytes" -+ "errors" -+ "fmt" -+ "os" -+ "path/filepath" -+ "runtime" -+ "sort" -+ "strings" -+ "sync" -+ "unicode/utf8" -+ -+ "github.com/cespare/xxhash/v2" -+ //nolint:staticcheck // Ignore SA1019. Need to keep deprecated package for compatibility. -+ "github.com/golang/protobuf/proto" -+ "github.com/prometheus/common/expfmt" -+ -+ dto "github.com/prometheus/client_model/go" -+ -+ "github.com/prometheus/client_golang/prometheus/internal" -+) -+ -+const ( -+ // Capacity for the channel to collect metrics and descriptors. -+ capMetricChan = 1000 -+ capDescChan = 10 -+) -+ -+// DefaultRegisterer and DefaultGatherer are the implementations of the -+// Registerer and Gatherer interface a number of convenience functions in this -+// package act on. Initially, both variables point to the same Registry, which -+// has a process collector (currently on Linux only, see NewProcessCollector) -+// and a Go collector (see NewGoCollector, in particular the note about -+// stop-the-world implication with Go versions older than 1.9) already -+// registered. This approach to keep default instances as global state mirrors -+// the approach of other packages in the Go standard library. Note that there -+// are caveats. Change the variables with caution and only if you understand the -+// consequences. Users who want to avoid global state altogether should not use -+// the convenience functions and act on custom instances instead. -+var ( -+ defaultRegistry = NewRegistry() -+ DefaultRegisterer Registerer = defaultRegistry -+ DefaultGatherer Gatherer = defaultRegistry -+) -+ -+func init() { -+ MustRegister(NewProcessCollector(ProcessCollectorOpts{})) -+ MustRegister(NewGoCollector()) -+} -+ -+// NewRegistry creates a new vanilla Registry without any Collectors -+// pre-registered. -+func NewRegistry() *Registry { -+ return &Registry{ -+ collectorsByID: map[uint64]Collector{}, -+ descIDs: map[uint64]struct{}{}, -+ dimHashesByName: map[string]uint64{}, -+ } -+} -+ -+// NewPedanticRegistry returns a registry that checks during collection if each -+// collected Metric is consistent with its reported Desc, and if the Desc has -+// actually been registered with the registry. Unchecked Collectors (those whose -+// Describe method does not yield any descriptors) are excluded from the check. -+// -+// Usually, a Registry will be happy as long as the union of all collected -+// Metrics is consistent and valid even if some metrics are not consistent with -+// their own Desc or a Desc provided by their registered Collector. Well-behaved -+// Collectors and Metrics will only provide consistent Descs. This Registry is -+// useful to test the implementation of Collectors and Metrics. -+func NewPedanticRegistry() *Registry { -+ r := NewRegistry() -+ r.pedanticChecksEnabled = true -+ return r -+} -+ -+// Registerer is the interface for the part of a registry in charge of -+// registering and unregistering. Users of custom registries should use -+// Registerer as type for registration purposes (rather than the Registry type -+// directly). In that way, they are free to use custom Registerer implementation -+// (e.g. for testing purposes). -+type Registerer interface { -+ // Register registers a new Collector to be included in metrics -+ // collection. It returns an error if the descriptors provided by the -+ // Collector are invalid or if they — in combination with descriptors of -+ // already registered Collectors — do not fulfill the consistency and -+ // uniqueness criteria described in the documentation of metric.Desc. -+ // -+ // If the provided Collector is equal to a Collector already registered -+ // (which includes the case of re-registering the same Collector), the -+ // returned error is an instance of AlreadyRegisteredError, which -+ // contains the previously registered Collector. -+ // -+ // A Collector whose Describe method does not yield any Desc is treated -+ // as unchecked. Registration will always succeed. No check for -+ // re-registering (see previous paragraph) is performed. Thus, the -+ // caller is responsible for not double-registering the same unchecked -+ // Collector, and for providing a Collector that will not cause -+ // inconsistent metrics on collection. (This would lead to scrape -+ // errors.) -+ Register(Collector) error -+ // MustRegister works like Register but registers any number of -+ // Collectors and panics upon the first registration that causes an -+ // error. -+ MustRegister(...Collector) -+ // Unregister unregisters the Collector that equals the Collector passed -+ // in as an argument. (Two Collectors are considered equal if their -+ // Describe method yields the same set of descriptors.) The function -+ // returns whether a Collector was unregistered. Note that an unchecked -+ // Collector cannot be unregistered (as its Describe method does not -+ // yield any descriptor). -+ // -+ // Note that even after unregistering, it will not be possible to -+ // register a new Collector that is inconsistent with the unregistered -+ // Collector, e.g. a Collector collecting metrics with the same name but -+ // a different help string. The rationale here is that the same registry -+ // instance must only collect consistent metrics throughout its -+ // lifetime. -+ Unregister(Collector) bool -+} -+ -+// Gatherer is the interface for the part of a registry in charge of gathering -+// the collected metrics into a number of MetricFamilies. The Gatherer interface -+// comes with the same general implication as described for the Registerer -+// interface. -+type Gatherer interface { -+ // Gather calls the Collect method of the registered Collectors and then -+ // gathers the collected metrics into a lexicographically sorted slice -+ // of uniquely named MetricFamily protobufs. Gather ensures that the -+ // returned slice is valid and self-consistent so that it can be used -+ // for valid exposition. As an exception to the strict consistency -+ // requirements described for metric.Desc, Gather will tolerate -+ // different sets of label names for metrics of the same metric family. -+ // -+ // Even if an error occurs, Gather attempts to gather as many metrics as -+ // possible. Hence, if a non-nil error is returned, the returned -+ // MetricFamily slice could be nil (in case of a fatal error that -+ // prevented any meaningful metric collection) or contain a number of -+ // MetricFamily protobufs, some of which might be incomplete, and some -+ // might be missing altogether. The returned error (which might be a -+ // MultiError) explains the details. Note that this is mostly useful for -+ // debugging purposes. If the gathered protobufs are to be used for -+ // exposition in actual monitoring, it is almost always better to not -+ // expose an incomplete result and instead disregard the returned -+ // MetricFamily protobufs in case the returned error is non-nil. -+ Gather() ([]*dto.MetricFamily, error) -+} -+ -+// Register registers the provided Collector with the DefaultRegisterer. -+// -+// Register is a shortcut for DefaultRegisterer.Register(c). See there for more -+// details. -+func Register(c Collector) error { -+ return DefaultRegisterer.Register(c) -+} -+ -+// MustRegister registers the provided Collectors with the DefaultRegisterer and -+// panics if any error occurs. -+// -+// MustRegister is a shortcut for DefaultRegisterer.MustRegister(cs...). See -+// there for more details. -+func MustRegister(cs ...Collector) { -+ DefaultRegisterer.MustRegister(cs...) -+} -+ -+// Unregister removes the registration of the provided Collector from the -+// DefaultRegisterer. -+// -+// Unregister is a shortcut for DefaultRegisterer.Unregister(c). See there for -+// more details. -+func Unregister(c Collector) bool { -+ return DefaultRegisterer.Unregister(c) -+} -+ -+// GathererFunc turns a function into a Gatherer. -+type GathererFunc func() ([]*dto.MetricFamily, error) -+ -+// Gather implements Gatherer. -+func (gf GathererFunc) Gather() ([]*dto.MetricFamily, error) { -+ return gf() -+} -+ -+// AlreadyRegisteredError is returned by the Register method if the Collector to -+// be registered has already been registered before, or a different Collector -+// that collects the same metrics has been registered before. Registration fails -+// in that case, but you can detect from the kind of error what has -+// happened. The error contains fields for the existing Collector and the -+// (rejected) new Collector that equals the existing one. This can be used to -+// find out if an equal Collector has been registered before and switch over to -+// using the old one, as demonstrated in the example. -+type AlreadyRegisteredError struct { -+ ExistingCollector, NewCollector Collector -+} -+ -+func (err AlreadyRegisteredError) Error() string { -+ return "duplicate metrics collector registration attempted" -+} -+ -+// MultiError is a slice of errors implementing the error interface. It is used -+// by a Gatherer to report multiple errors during MetricFamily gathering. -+type MultiError []error -+ -+// Error formats the contained errors as a bullet point list, preceded by the -+// total number of errors. Note that this results in a multi-line string. -+func (errs MultiError) Error() string { -+ if len(errs) == 0 { -+ return "" -+ } -+ buf := &bytes.Buffer{} -+ fmt.Fprintf(buf, "%d error(s) occurred:", len(errs)) -+ for _, err := range errs { -+ fmt.Fprintf(buf, "\n* %s", err) -+ } -+ return buf.String() -+} -+ -+// Append appends the provided error if it is not nil. -+func (errs *MultiError) Append(err error) { -+ if err != nil { -+ *errs = append(*errs, err) -+ } -+} -+ -+// MaybeUnwrap returns nil if len(errs) is 0. It returns the first and only -+// contained error as error if len(errs is 1). In all other cases, it returns -+// the MultiError directly. This is helpful for returning a MultiError in a way -+// that only uses the MultiError if needed. -+func (errs MultiError) MaybeUnwrap() error { -+ switch len(errs) { -+ case 0: -+ return nil -+ case 1: -+ return errs[0] -+ default: -+ return errs -+ } -+} -+ -+// Registry registers Prometheus collectors, collects their metrics, and gathers -+// them into MetricFamilies for exposition. It implements Registerer, Gatherer, -+// and Collector. The zero value is not usable. Create instances with -+// NewRegistry or NewPedanticRegistry. -+// -+// Registry implements Collector to allow it to be used for creating groups of -+// metrics. See the Grouping example for how this can be done. -+type Registry struct { -+ mtx sync.RWMutex -+ collectorsByID map[uint64]Collector // ID is a hash of the descIDs. -+ descIDs map[uint64]struct{} -+ dimHashesByName map[string]uint64 -+ uncheckedCollectors []Collector -+ pedanticChecksEnabled bool -+} -+ -+// Register implements Registerer. -+func (r *Registry) Register(c Collector) error { -+ var ( -+ descChan = make(chan *Desc, capDescChan) -+ newDescIDs = map[uint64]struct{}{} -+ newDimHashesByName = map[string]uint64{} -+ collectorID uint64 // All desc IDs XOR'd together. -+ duplicateDescErr error -+ ) -+ go func() { -+ c.Describe(descChan) -+ close(descChan) -+ }() -+ r.mtx.Lock() -+ defer func() { -+ // Drain channel in case of premature return to not leak a goroutine. -+ for range descChan { -+ } -+ r.mtx.Unlock() -+ }() -+ // Conduct various tests... -+ for desc := range descChan { -+ -+ // Is the descriptor valid at all? -+ if desc.err != nil { -+ return fmt.Errorf("descriptor %s is invalid: %w", desc, desc.err) -+ } -+ -+ // Is the descID unique? -+ // (In other words: Is the fqName + constLabel combination unique?) -+ if _, exists := r.descIDs[desc.id]; exists { -+ duplicateDescErr = fmt.Errorf("descriptor %s already exists with the same fully-qualified name and const label values", desc) -+ } -+ // If it is not a duplicate desc in this collector, XOR it to -+ // the collectorID. (We allow duplicate descs within the same -+ // collector, but their existence must be a no-op.) -+ if _, exists := newDescIDs[desc.id]; !exists { -+ newDescIDs[desc.id] = struct{}{} -+ collectorID ^= desc.id -+ } -+ -+ // Are all the label names and the help string consistent with -+ // previous descriptors of the same name? -+ // First check existing descriptors... -+ if dimHash, exists := r.dimHashesByName[desc.fqName]; exists { -+ if dimHash != desc.dimHash { -+ return fmt.Errorf("a previously registered descriptor with the same fully-qualified name as %s has different label names or a different help string", desc) -+ } -+ } else { -+ // ...then check the new descriptors already seen. -+ if dimHash, exists := newDimHashesByName[desc.fqName]; exists { -+ if dimHash != desc.dimHash { -+ return fmt.Errorf("descriptors reported by collector have inconsistent label names or help strings for the same fully-qualified name, offender is %s", desc) -+ } -+ } else { -+ newDimHashesByName[desc.fqName] = desc.dimHash -+ } -+ } -+ } -+ // A Collector yielding no Desc at all is considered unchecked. -+ if len(newDescIDs) == 0 { -+ r.uncheckedCollectors = append(r.uncheckedCollectors, c) -+ return nil -+ } -+ if existing, exists := r.collectorsByID[collectorID]; exists { -+ switch e := existing.(type) { -+ case *wrappingCollector: -+ return AlreadyRegisteredError{ -+ ExistingCollector: e.unwrapRecursively(), -+ NewCollector: c, -+ } -+ default: -+ return AlreadyRegisteredError{ -+ ExistingCollector: e, -+ NewCollector: c, -+ } -+ } -+ } -+ // If the collectorID is new, but at least one of the descs existed -+ // before, we are in trouble. -+ if duplicateDescErr != nil { -+ return duplicateDescErr -+ } -+ -+ // Only after all tests have passed, actually register. -+ r.collectorsByID[collectorID] = c -+ for hash := range newDescIDs { -+ r.descIDs[hash] = struct{}{} -+ } -+ for name, dimHash := range newDimHashesByName { -+ r.dimHashesByName[name] = dimHash -+ } -+ return nil -+} -+ -+// Unregister implements Registerer. -+func (r *Registry) Unregister(c Collector) bool { -+ var ( -+ descChan = make(chan *Desc, capDescChan) -+ descIDs = map[uint64]struct{}{} -+ collectorID uint64 // All desc IDs XOR'd together. -+ ) -+ go func() { -+ c.Describe(descChan) -+ close(descChan) -+ }() -+ for desc := range descChan { -+ if _, exists := descIDs[desc.id]; !exists { -+ collectorID ^= desc.id -+ descIDs[desc.id] = struct{}{} -+ } -+ } -+ -+ r.mtx.RLock() -+ if _, exists := r.collectorsByID[collectorID]; !exists { -+ r.mtx.RUnlock() -+ return false -+ } -+ r.mtx.RUnlock() -+ -+ r.mtx.Lock() -+ defer r.mtx.Unlock() -+ -+ delete(r.collectorsByID, collectorID) -+ for id := range descIDs { -+ delete(r.descIDs, id) -+ } -+ // dimHashesByName is left untouched as those must be consistent -+ // throughout the lifetime of a program. -+ return true -+} -+ -+// MustRegister implements Registerer. -+func (r *Registry) MustRegister(cs ...Collector) { -+ for _, c := range cs { -+ if err := r.Register(c); err != nil { -+ panic(err) -+ } -+ } -+} -+ -+// Gather implements Gatherer. -+func (r *Registry) Gather() ([]*dto.MetricFamily, error) { -+ r.mtx.RLock() -+ -+ if len(r.collectorsByID) == 0 && len(r.uncheckedCollectors) == 0 { -+ // Fast path. -+ r.mtx.RUnlock() -+ return nil, nil -+ } -+ -+ var ( -+ checkedMetricChan = make(chan Metric, capMetricChan) -+ uncheckedMetricChan = make(chan Metric, capMetricChan) -+ metricHashes = map[uint64]struct{}{} -+ wg sync.WaitGroup -+ errs MultiError // The collected errors to return in the end. -+ registeredDescIDs map[uint64]struct{} // Only used for pedantic checks -+ ) -+ -+ goroutineBudget := len(r.collectorsByID) + len(r.uncheckedCollectors) -+ metricFamiliesByName := make(map[string]*dto.MetricFamily, len(r.dimHashesByName)) -+ checkedCollectors := make(chan Collector, len(r.collectorsByID)) -+ uncheckedCollectors := make(chan Collector, len(r.uncheckedCollectors)) -+ for _, collector := range r.collectorsByID { -+ checkedCollectors <- collector -+ } -+ for _, collector := range r.uncheckedCollectors { -+ uncheckedCollectors <- collector -+ } -+ // In case pedantic checks are enabled, we have to copy the map before -+ // giving up the RLock. -+ if r.pedanticChecksEnabled { -+ registeredDescIDs = make(map[uint64]struct{}, len(r.descIDs)) -+ for id := range r.descIDs { -+ registeredDescIDs[id] = struct{}{} -+ } -+ } -+ r.mtx.RUnlock() -+ -+ wg.Add(goroutineBudget) -+ -+ collectWorker := func() { -+ for { -+ select { -+ case collector := <-checkedCollectors: -+ collector.Collect(checkedMetricChan) -+ case collector := <-uncheckedCollectors: -+ collector.Collect(uncheckedMetricChan) -+ default: -+ return -+ } -+ wg.Done() -+ } -+ } -+ -+ // Start the first worker now to make sure at least one is running. -+ go collectWorker() -+ goroutineBudget-- -+ -+ // Close checkedMetricChan and uncheckedMetricChan once all collectors -+ // are collected. -+ go func() { -+ wg.Wait() -+ close(checkedMetricChan) -+ close(uncheckedMetricChan) -+ }() -+ -+ // Drain checkedMetricChan and uncheckedMetricChan in case of premature return. -+ defer func() { -+ if checkedMetricChan != nil { -+ for range checkedMetricChan { -+ } -+ } -+ if uncheckedMetricChan != nil { -+ for range uncheckedMetricChan { -+ } -+ } -+ }() -+ -+ // Copy the channel references so we can nil them out later to remove -+ // them from the select statements below. -+ cmc := checkedMetricChan -+ umc := uncheckedMetricChan -+ -+ for { -+ select { -+ case metric, ok := <-cmc: -+ if !ok { -+ cmc = nil -+ break -+ } -+ errs.Append(processMetric( -+ metric, metricFamiliesByName, -+ metricHashes, -+ registeredDescIDs, -+ )) -+ case metric, ok := <-umc: -+ if !ok { -+ umc = nil -+ break -+ } -+ errs.Append(processMetric( -+ metric, metricFamiliesByName, -+ metricHashes, -+ nil, -+ )) -+ default: -+ if goroutineBudget <= 0 || len(checkedCollectors)+len(uncheckedCollectors) == 0 { -+ // All collectors are already being worked on or -+ // we have already as many goroutines started as -+ // there are collectors. Do the same as above, -+ // just without the default. -+ select { -+ case metric, ok := <-cmc: -+ if !ok { -+ cmc = nil -+ break -+ } -+ errs.Append(processMetric( -+ metric, metricFamiliesByName, -+ metricHashes, -+ registeredDescIDs, -+ )) -+ case metric, ok := <-umc: -+ if !ok { -+ umc = nil -+ break -+ } -+ errs.Append(processMetric( -+ metric, metricFamiliesByName, -+ metricHashes, -+ nil, -+ )) -+ } -+ break -+ } -+ // Start more workers. -+ go collectWorker() -+ goroutineBudget-- -+ runtime.Gosched() -+ } -+ // Once both checkedMetricChan and uncheckdMetricChan are closed -+ // and drained, the contraption above will nil out cmc and umc, -+ // and then we can leave the collect loop here. -+ if cmc == nil && umc == nil { -+ break -+ } -+ } -+ return internal.NormalizeMetricFamilies(metricFamiliesByName), errs.MaybeUnwrap() -+} -+ -+// Describe implements Collector. -+func (r *Registry) Describe(ch chan<- *Desc) { -+ r.mtx.RLock() -+ defer r.mtx.RUnlock() -+ -+ // Only report the checked Collectors; unchecked collectors don't report any -+ // Desc. -+ for _, c := range r.collectorsByID { -+ c.Describe(ch) -+ } -+} -+ -+// Collect implements Collector. -+func (r *Registry) Collect(ch chan<- Metric) { -+ r.mtx.RLock() -+ defer r.mtx.RUnlock() -+ -+ for _, c := range r.collectorsByID { -+ c.Collect(ch) -+ } -+ for _, c := range r.uncheckedCollectors { -+ c.Collect(ch) -+ } -+} -+ -+// WriteToTextfile calls Gather on the provided Gatherer, encodes the result in the -+// Prometheus text format, and writes it to a temporary file. Upon success, the -+// temporary file is renamed to the provided filename. -+// -+// This is intended for use with the textfile collector of the node exporter. -+// Note that the node exporter expects the filename to be suffixed with ".prom". -+func WriteToTextfile(filename string, g Gatherer) error { -+ tmp, err := os.CreateTemp(filepath.Dir(filename), filepath.Base(filename)) -+ if err != nil { -+ return err -+ } -+ defer os.Remove(tmp.Name()) -+ -+ mfs, err := g.Gather() -+ if err != nil { -+ return err -+ } -+ for _, mf := range mfs { -+ if _, err := expfmt.MetricFamilyToText(tmp, mf); err != nil { -+ return err -+ } -+ } -+ if err := tmp.Close(); err != nil { -+ return err -+ } -+ -+ if err := os.Chmod(tmp.Name(), 0o644); err != nil { -+ return err -+ } -+ return os.Rename(tmp.Name(), filename) -+} -+ -+// processMetric is an internal helper method only used by the Gather method. -+func processMetric( -+ metric Metric, -+ metricFamiliesByName map[string]*dto.MetricFamily, -+ metricHashes map[uint64]struct{}, -+ registeredDescIDs map[uint64]struct{}, -+) error { -+ desc := metric.Desc() -+ // Wrapped metrics collected by an unchecked Collector can have an -+ // invalid Desc. -+ if desc.err != nil { -+ return desc.err -+ } -+ dtoMetric := &dto.Metric{} -+ if err := metric.Write(dtoMetric); err != nil { -+ return fmt.Errorf("error collecting metric %v: %w", desc, err) -+ } -+ metricFamily, ok := metricFamiliesByName[desc.fqName] -+ if ok { // Existing name. -+ if metricFamily.GetHelp() != desc.help { -+ return fmt.Errorf( -+ "collected metric %s %s has help %q but should have %q", -+ desc.fqName, dtoMetric, desc.help, metricFamily.GetHelp(), -+ ) -+ } -+ // TODO(beorn7): Simplify switch once Desc has type. -+ switch metricFamily.GetType() { -+ case dto.MetricType_COUNTER: -+ if dtoMetric.Counter == nil { -+ return fmt.Errorf( -+ "collected metric %s %s should be a Counter", -+ desc.fqName, dtoMetric, -+ ) -+ } -+ case dto.MetricType_GAUGE: -+ if dtoMetric.Gauge == nil { -+ return fmt.Errorf( -+ "collected metric %s %s should be a Gauge", -+ desc.fqName, dtoMetric, -+ ) -+ } -+ case dto.MetricType_SUMMARY: -+ if dtoMetric.Summary == nil { -+ return fmt.Errorf( -+ "collected metric %s %s should be a Summary", -+ desc.fqName, dtoMetric, -+ ) -+ } -+ case dto.MetricType_UNTYPED: -+ if dtoMetric.Untyped == nil { -+ return fmt.Errorf( -+ "collected metric %s %s should be Untyped", -+ desc.fqName, dtoMetric, -+ ) -+ } -+ case dto.MetricType_HISTOGRAM: -+ if dtoMetric.Histogram == nil { -+ return fmt.Errorf( -+ "collected metric %s %s should be a Histogram", -+ desc.fqName, dtoMetric, -+ ) -+ } -+ default: -+ panic("encountered MetricFamily with invalid type") -+ } -+ } else { // New name. -+ metricFamily = &dto.MetricFamily{} -+ metricFamily.Name = proto.String(desc.fqName) -+ metricFamily.Help = proto.String(desc.help) -+ // TODO(beorn7): Simplify switch once Desc has type. -+ switch { -+ case dtoMetric.Gauge != nil: -+ metricFamily.Type = dto.MetricType_GAUGE.Enum() -+ case dtoMetric.Counter != nil: -+ metricFamily.Type = dto.MetricType_COUNTER.Enum() -+ case dtoMetric.Summary != nil: -+ metricFamily.Type = dto.MetricType_SUMMARY.Enum() -+ case dtoMetric.Untyped != nil: -+ metricFamily.Type = dto.MetricType_UNTYPED.Enum() -+ case dtoMetric.Histogram != nil: -+ metricFamily.Type = dto.MetricType_HISTOGRAM.Enum() -+ default: -+ return fmt.Errorf("empty metric collected: %s", dtoMetric) -+ } -+ if err := checkSuffixCollisions(metricFamily, metricFamiliesByName); err != nil { -+ return err -+ } -+ metricFamiliesByName[desc.fqName] = metricFamily -+ } -+ if err := checkMetricConsistency(metricFamily, dtoMetric, metricHashes); err != nil { -+ return err -+ } -+ if registeredDescIDs != nil { -+ // Is the desc registered at all? -+ if _, exist := registeredDescIDs[desc.id]; !exist { -+ return fmt.Errorf( -+ "collected metric %s %s with unregistered descriptor %s", -+ metricFamily.GetName(), dtoMetric, desc, -+ ) -+ } -+ if err := checkDescConsistency(metricFamily, dtoMetric, desc); err != nil { -+ return err -+ } -+ } -+ metricFamily.Metric = append(metricFamily.Metric, dtoMetric) -+ return nil -+} -+ -+// Gatherers is a slice of Gatherer instances that implements the Gatherer -+// interface itself. Its Gather method calls Gather on all Gatherers in the -+// slice in order and returns the merged results. Errors returned from the -+// Gather calls are all returned in a flattened MultiError. Duplicate and -+// inconsistent Metrics are skipped (first occurrence in slice order wins) and -+// reported in the returned error. -+// -+// Gatherers can be used to merge the Gather results from multiple -+// Registries. It also provides a way to directly inject existing MetricFamily -+// protobufs into the gathering by creating a custom Gatherer with a Gather -+// method that simply returns the existing MetricFamily protobufs. Note that no -+// registration is involved (in contrast to Collector registration), so -+// obviously registration-time checks cannot happen. Any inconsistencies between -+// the gathered MetricFamilies are reported as errors by the Gather method, and -+// inconsistent Metrics are dropped. Invalid parts of the MetricFamilies -+// (e.g. syntactically invalid metric or label names) will go undetected. -+type Gatherers []Gatherer -+ -+// Gather implements Gatherer. -+func (gs Gatherers) Gather() ([]*dto.MetricFamily, error) { -+ var ( -+ metricFamiliesByName = map[string]*dto.MetricFamily{} -+ metricHashes = map[uint64]struct{}{} -+ errs MultiError // The collected errors to return in the end. -+ ) -+ -+ for i, g := range gs { -+ mfs, err := g.Gather() -+ if err != nil { -+ multiErr := MultiError{} -+ if errors.As(err, &multiErr) { -+ for _, err := range multiErr { -+ errs = append(errs, fmt.Errorf("[from Gatherer #%d] %w", i+1, err)) -+ } -+ } else { -+ errs = append(errs, fmt.Errorf("[from Gatherer #%d] %w", i+1, err)) -+ } -+ } -+ for _, mf := range mfs { -+ existingMF, exists := metricFamiliesByName[mf.GetName()] -+ if exists { -+ if existingMF.GetHelp() != mf.GetHelp() { -+ errs = append(errs, fmt.Errorf( -+ "gathered metric family %s has help %q but should have %q", -+ mf.GetName(), mf.GetHelp(), existingMF.GetHelp(), -+ )) -+ continue -+ } -+ if existingMF.GetType() != mf.GetType() { -+ errs = append(errs, fmt.Errorf( -+ "gathered metric family %s has type %s but should have %s", -+ mf.GetName(), mf.GetType(), existingMF.GetType(), -+ )) -+ continue -+ } -+ } else { -+ existingMF = &dto.MetricFamily{} -+ existingMF.Name = mf.Name -+ existingMF.Help = mf.Help -+ existingMF.Type = mf.Type -+ if err := checkSuffixCollisions(existingMF, metricFamiliesByName); err != nil { -+ errs = append(errs, err) -+ continue -+ } -+ metricFamiliesByName[mf.GetName()] = existingMF -+ } -+ for _, m := range mf.Metric { -+ if err := checkMetricConsistency(existingMF, m, metricHashes); err != nil { -+ errs = append(errs, err) -+ continue -+ } -+ existingMF.Metric = append(existingMF.Metric, m) -+ } -+ } -+ } -+ return internal.NormalizeMetricFamilies(metricFamiliesByName), errs.MaybeUnwrap() -+} -+ -+// checkSuffixCollisions checks for collisions with the “magic” suffixes the -+// Prometheus text format and the internal metric representation of the -+// Prometheus server add while flattening Summaries and Histograms. -+func checkSuffixCollisions(mf *dto.MetricFamily, mfs map[string]*dto.MetricFamily) error { -+ var ( -+ newName = mf.GetName() -+ newType = mf.GetType() -+ newNameWithoutSuffix = "" -+ ) -+ switch { -+ case strings.HasSuffix(newName, "_count"): -+ newNameWithoutSuffix = newName[:len(newName)-6] -+ case strings.HasSuffix(newName, "_sum"): -+ newNameWithoutSuffix = newName[:len(newName)-4] -+ case strings.HasSuffix(newName, "_bucket"): -+ newNameWithoutSuffix = newName[:len(newName)-7] -+ } -+ if newNameWithoutSuffix != "" { -+ if existingMF, ok := mfs[newNameWithoutSuffix]; ok { -+ switch existingMF.GetType() { -+ case dto.MetricType_SUMMARY: -+ if !strings.HasSuffix(newName, "_bucket") { -+ return fmt.Errorf( -+ "collected metric named %q collides with previously collected summary named %q", -+ newName, newNameWithoutSuffix, -+ ) -+ } -+ case dto.MetricType_HISTOGRAM: -+ return fmt.Errorf( -+ "collected metric named %q collides with previously collected histogram named %q", -+ newName, newNameWithoutSuffix, -+ ) -+ } -+ } -+ } -+ if newType == dto.MetricType_SUMMARY || newType == dto.MetricType_HISTOGRAM { -+ if _, ok := mfs[newName+"_count"]; ok { -+ return fmt.Errorf( -+ "collected histogram or summary named %q collides with previously collected metric named %q", -+ newName, newName+"_count", -+ ) -+ } -+ if _, ok := mfs[newName+"_sum"]; ok { -+ return fmt.Errorf( -+ "collected histogram or summary named %q collides with previously collected metric named %q", -+ newName, newName+"_sum", -+ ) -+ } -+ } -+ if newType == dto.MetricType_HISTOGRAM { -+ if _, ok := mfs[newName+"_bucket"]; ok { -+ return fmt.Errorf( -+ "collected histogram named %q collides with previously collected metric named %q", -+ newName, newName+"_bucket", -+ ) -+ } -+ } -+ return nil -+} -+ -+// checkMetricConsistency checks if the provided Metric is consistent with the -+// provided MetricFamily. It also hashes the Metric labels and the MetricFamily -+// name. If the resulting hash is already in the provided metricHashes, an error -+// is returned. If not, it is added to metricHashes. -+func checkMetricConsistency( -+ metricFamily *dto.MetricFamily, -+ dtoMetric *dto.Metric, -+ metricHashes map[uint64]struct{}, -+) error { -+ name := metricFamily.GetName() -+ -+ // Type consistency with metric family. -+ if metricFamily.GetType() == dto.MetricType_GAUGE && dtoMetric.Gauge == nil || -+ metricFamily.GetType() == dto.MetricType_COUNTER && dtoMetric.Counter == nil || -+ metricFamily.GetType() == dto.MetricType_SUMMARY && dtoMetric.Summary == nil || -+ metricFamily.GetType() == dto.MetricType_HISTOGRAM && dtoMetric.Histogram == nil || -+ metricFamily.GetType() == dto.MetricType_UNTYPED && dtoMetric.Untyped == nil { -+ return fmt.Errorf( -+ "collected metric %q { %s} is not a %s", -+ name, dtoMetric, metricFamily.GetType(), -+ ) -+ } -+ -+ previousLabelName := "" -+ for _, labelPair := range dtoMetric.GetLabel() { -+ labelName := labelPair.GetName() -+ if labelName == previousLabelName { -+ return fmt.Errorf( -+ "collected metric %q { %s} has two or more labels with the same name: %s", -+ name, dtoMetric, labelName, -+ ) -+ } -+ if !checkLabelName(labelName) { -+ return fmt.Errorf( -+ "collected metric %q { %s} has a label with an invalid name: %s", -+ name, dtoMetric, labelName, -+ ) -+ } -+ if dtoMetric.Summary != nil && labelName == quantileLabel { -+ return fmt.Errorf( -+ "collected metric %q { %s} must not have an explicit %q label", -+ name, dtoMetric, quantileLabel, -+ ) -+ } -+ if !utf8.ValidString(labelPair.GetValue()) { -+ return fmt.Errorf( -+ "collected metric %q { %s} has a label named %q whose value is not utf8: %#v", -+ name, dtoMetric, labelName, labelPair.GetValue()) -+ } -+ previousLabelName = labelName -+ } -+ -+ // Is the metric unique (i.e. no other metric with the same name and the same labels)? -+ h := xxhash.New() -+ h.WriteString(name) -+ h.Write(separatorByteSlice) -+ // Make sure label pairs are sorted. We depend on it for the consistency -+ // check. -+ if !sort.IsSorted(internal.LabelPairSorter(dtoMetric.Label)) { -+ // We cannot sort dtoMetric.Label in place as it is immutable by contract. -+ copiedLabels := make([]*dto.LabelPair, len(dtoMetric.Label)) -+ copy(copiedLabels, dtoMetric.Label) -+ sort.Sort(internal.LabelPairSorter(copiedLabels)) -+ dtoMetric.Label = copiedLabels -+ } -+ for _, lp := range dtoMetric.Label { -+ h.WriteString(lp.GetName()) -+ h.Write(separatorByteSlice) -+ h.WriteString(lp.GetValue()) -+ h.Write(separatorByteSlice) -+ } -+ hSum := h.Sum64() -+ if _, exists := metricHashes[hSum]; exists { -+ return fmt.Errorf( -+ "collected metric %q { %s} was collected before with the same name and label values", -+ name, dtoMetric, -+ ) -+ } -+ metricHashes[hSum] = struct{}{} -+ return nil -+} -+ -+func checkDescConsistency( -+ metricFamily *dto.MetricFamily, -+ dtoMetric *dto.Metric, -+ desc *Desc, -+) error { -+ // Desc help consistency with metric family help. -+ if metricFamily.GetHelp() != desc.help { -+ return fmt.Errorf( -+ "collected metric %s %s has help %q but should have %q", -+ metricFamily.GetName(), dtoMetric, metricFamily.GetHelp(), desc.help, -+ ) -+ } -+ -+ // Is the desc consistent with the content of the metric? -+ lpsFromDesc := make([]*dto.LabelPair, len(desc.constLabelPairs), len(dtoMetric.Label)) -+ copy(lpsFromDesc, desc.constLabelPairs) -+ for _, l := range desc.variableLabels { -+ lpsFromDesc = append(lpsFromDesc, &dto.LabelPair{ -+ Name: proto.String(l), -+ }) -+ } -+ if len(lpsFromDesc) != len(dtoMetric.Label) { -+ return fmt.Errorf( -+ "labels in collected metric %s %s are inconsistent with descriptor %s", -+ metricFamily.GetName(), dtoMetric, desc, -+ ) -+ } -+ sort.Sort(internal.LabelPairSorter(lpsFromDesc)) -+ for i, lpFromDesc := range lpsFromDesc { -+ lpFromMetric := dtoMetric.Label[i] -+ if lpFromDesc.GetName() != lpFromMetric.GetName() || -+ lpFromDesc.Value != nil && lpFromDesc.GetValue() != lpFromMetric.GetValue() { -+ return fmt.Errorf( -+ "labels in collected metric %s %s are inconsistent with descriptor %s", -+ metricFamily.GetName(), dtoMetric, desc, -+ ) -+ } -+ } -+ return nil -+} -+ -+var _ TransactionalGatherer = &MultiTRegistry{} -+ -+// MultiTRegistry is a TransactionalGatherer that joins gathered metrics from multiple -+// transactional gatherers. -+// -+// It is caller responsibility to ensure two registries have mutually exclusive metric families, -+// no deduplication will happen. -+type MultiTRegistry struct { -+ tGatherers []TransactionalGatherer -+} -+ -+// NewMultiTRegistry creates MultiTRegistry. -+func NewMultiTRegistry(tGatherers ...TransactionalGatherer) *MultiTRegistry { -+ return &MultiTRegistry{ -+ tGatherers: tGatherers, -+ } -+} -+ -+// Gather implements TransactionalGatherer interface. -+func (r *MultiTRegistry) Gather() (mfs []*dto.MetricFamily, done func(), err error) { -+ errs := MultiError{} -+ -+ dFns := make([]func(), 0, len(r.tGatherers)) -+ // TODO(bwplotka): Implement concurrency for those? -+ for _, g := range r.tGatherers { -+ // TODO(bwplotka): Check for duplicates? -+ m, d, err := g.Gather() -+ errs.Append(err) -+ -+ mfs = append(mfs, m...) -+ dFns = append(dFns, d) -+ } -+ -+ // TODO(bwplotka): Consider sort in place, given metric family in gather is sorted already. -+ sort.Slice(mfs, func(i, j int) bool { -+ return *mfs[i].Name < *mfs[j].Name -+ }) -+ return mfs, func() { -+ for _, d := range dFns { -+ d() -+ } -+ }, errs.MaybeUnwrap() -+} -+ -+// TransactionalGatherer represents transactional gatherer that can be triggered to notify gatherer that memory -+// used by metric family is no longer used by a caller. This allows implementations with cache. -+type TransactionalGatherer interface { -+ // Gather returns metrics in a lexicographically sorted slice -+ // of uniquely named MetricFamily protobufs. Gather ensures that the -+ // returned slice is valid and self-consistent so that it can be used -+ // for valid exposition. As an exception to the strict consistency -+ // requirements described for metric.Desc, Gather will tolerate -+ // different sets of label names for metrics of the same metric family. -+ // -+ // Even if an error occurs, Gather attempts to gather as many metrics as -+ // possible. Hence, if a non-nil error is returned, the returned -+ // MetricFamily slice could be nil (in case of a fatal error that -+ // prevented any meaningful metric collection) or contain a number of -+ // MetricFamily protobufs, some of which might be incomplete, and some -+ // might be missing altogether. The returned error (which might be a -+ // MultiError) explains the details. Note that this is mostly useful for -+ // debugging purposes. If the gathered protobufs are to be used for -+ // exposition in actual monitoring, it is almost always better to not -+ // expose an incomplete result and instead disregard the returned -+ // MetricFamily protobufs in case the returned error is non-nil. -+ // -+ // Important: done is expected to be triggered (even if the error occurs!) -+ // once caller does not need returned slice of dto.MetricFamily. -+ Gather() (_ []*dto.MetricFamily, done func(), err error) -+} -+ -+// ToTransactionalGatherer transforms Gatherer to transactional one with noop as done function. -+func ToTransactionalGatherer(g Gatherer) TransactionalGatherer { -+ return &noTransactionGatherer{g: g} -+} -+ -+type noTransactionGatherer struct { -+ g Gatherer -+} -+ -+// Gather implements TransactionalGatherer interface. -+func (g *noTransactionGatherer) Gather() (_ []*dto.MetricFamily, done func(), err error) { -+ mfs, err := g.g.Gather() -+ return mfs, func() {}, err -+} -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/summary.go b/vendor/github.com/prometheus/client_golang/prometheus/summary.go -new file mode 100755 -index 0000000..7bc448a ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/summary.go -@@ -0,0 +1,747 @@ -+// Copyright 2014 The Prometheus 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 prometheus -+ -+import ( -+ "fmt" -+ "math" -+ "runtime" -+ "sort" -+ "sync" -+ "sync/atomic" -+ "time" -+ -+ "github.com/beorn7/perks/quantile" -+ //nolint:staticcheck // Ignore SA1019. Need to keep deprecated package for compatibility. -+ "github.com/golang/protobuf/proto" -+ -+ dto "github.com/prometheus/client_model/go" -+) -+ -+// quantileLabel is used for the label that defines the quantile in a -+// summary. -+const quantileLabel = "quantile" -+ -+// A Summary captures individual observations from an event or sample stream and -+// summarizes them in a manner similar to traditional summary statistics: 1. sum -+// of observations, 2. observation count, 3. rank estimations. -+// -+// A typical use-case is the observation of request latencies. By default, a -+// Summary provides the median, the 90th and the 99th percentile of the latency -+// as rank estimations. However, the default behavior will change in the -+// upcoming v1.0.0 of the library. There will be no rank estimations at all by -+// default. For a sane transition, it is recommended to set the desired rank -+// estimations explicitly. -+// -+// Note that the rank estimations cannot be aggregated in a meaningful way with -+// the Prometheus query language (i.e. you cannot average or add them). If you -+// need aggregatable quantiles (e.g. you want the 99th percentile latency of all -+// queries served across all instances of a service), consider the Histogram -+// metric type. See the Prometheus documentation for more details. -+// -+// To create Summary instances, use NewSummary. -+type Summary interface { -+ Metric -+ Collector -+ -+ // Observe adds a single observation to the summary. Observations are -+ // usually positive or zero. Negative observations are accepted but -+ // prevent current versions of Prometheus from properly detecting -+ // counter resets in the sum of observations. See -+ // https://prometheus.io/docs/practices/histograms/#count-and-sum-of-observations -+ // for details. -+ Observe(float64) -+} -+ -+var errQuantileLabelNotAllowed = fmt.Errorf( -+ "%q is not allowed as label name in summaries", quantileLabel, -+) -+ -+// Default values for SummaryOpts. -+const ( -+ // DefMaxAge is the default duration for which observations stay -+ // relevant. -+ DefMaxAge time.Duration = 10 * time.Minute -+ // DefAgeBuckets is the default number of buckets used to calculate the -+ // age of observations. -+ DefAgeBuckets = 5 -+ // DefBufCap is the standard buffer size for collecting Summary observations. -+ DefBufCap = 500 -+) -+ -+// SummaryOpts bundles the options for creating a Summary metric. It is -+// mandatory to set Name to a non-empty string. While all other fields are -+// optional and can safely be left at their zero value, it is recommended to set -+// a help string and to explicitly set the Objectives field to the desired value -+// as the default value will change in the upcoming v1.0.0 of the library. -+type SummaryOpts struct { -+ // Namespace, Subsystem, and Name are components of the fully-qualified -+ // name of the Summary (created by joining these components with -+ // "_"). Only Name is mandatory, the others merely help structuring the -+ // name. Note that the fully-qualified name of the Summary must be a -+ // valid Prometheus metric name. -+ Namespace string -+ Subsystem string -+ Name string -+ -+ // Help provides information about this Summary. -+ // -+ // Metrics with the same fully-qualified name must have the same Help -+ // string. -+ Help string -+ -+ // ConstLabels are used to attach fixed labels to this metric. Metrics -+ // with the same fully-qualified name must have the same label names in -+ // their ConstLabels. -+ // -+ // Due to the way a Summary is represented in the Prometheus text format -+ // and how it is handled by the Prometheus server internally, “quantile” -+ // is an illegal label name. Construction of a Summary or SummaryVec -+ // will panic if this label name is used in ConstLabels. -+ // -+ // ConstLabels are only used rarely. In particular, do not use them to -+ // attach the same labels to all your metrics. Those use cases are -+ // better covered by target labels set by the scraping Prometheus -+ // server, or by one specific metric (e.g. a build_info or a -+ // machine_role metric). See also -+ // https://prometheus.io/docs/instrumenting/writing_exporters/#target-labels-not-static-scraped-labels -+ ConstLabels Labels -+ -+ // Objectives defines the quantile rank estimates with their respective -+ // absolute error. If Objectives[q] = e, then the value reported for q -+ // will be the φ-quantile value for some φ between q-e and q+e. The -+ // default value is an empty map, resulting in a summary without -+ // quantiles. -+ Objectives map[float64]float64 -+ -+ // MaxAge defines the duration for which an observation stays relevant -+ // for the summary. Only applies to pre-calculated quantiles, does not -+ // apply to _sum and _count. Must be positive. The default value is -+ // DefMaxAge. -+ MaxAge time.Duration -+ -+ // AgeBuckets is the number of buckets used to exclude observations that -+ // are older than MaxAge from the summary. A higher number has a -+ // resource penalty, so only increase it if the higher resolution is -+ // really required. For very high observation rates, you might want to -+ // reduce the number of age buckets. With only one age bucket, you will -+ // effectively see a complete reset of the summary each time MaxAge has -+ // passed. The default value is DefAgeBuckets. -+ AgeBuckets uint32 -+ -+ // BufCap defines the default sample stream buffer size. The default -+ // value of DefBufCap should suffice for most uses. If there is a need -+ // to increase the value, a multiple of 500 is recommended (because that -+ // is the internal buffer size of the underlying package -+ // "github.com/bmizerany/perks/quantile"). -+ BufCap uint32 -+} -+ -+// Problem with the sliding-window decay algorithm... The Merge method of -+// perk/quantile is actually not working as advertised - and it might be -+// unfixable, as the underlying algorithm is apparently not capable of merging -+// summaries in the first place. To avoid using Merge, we are currently adding -+// observations to _each_ age bucket, i.e. the effort to add a sample is -+// essentially multiplied by the number of age buckets. When rotating age -+// buckets, we empty the previous head stream. On scrape time, we simply take -+// the quantiles from the head stream (no merging required). Result: More effort -+// on observation time, less effort on scrape time, which is exactly the -+// opposite of what we try to accomplish, but at least the results are correct. -+// -+// The quite elegant previous contraption to merge the age buckets efficiently -+// on scrape time (see code up commit 6b9530d72ea715f0ba612c0120e6e09fbf1d49d0) -+// can't be used anymore. -+ -+// NewSummary creates a new Summary based on the provided SummaryOpts. -+func NewSummary(opts SummaryOpts) Summary { -+ return newSummary( -+ NewDesc( -+ BuildFQName(opts.Namespace, opts.Subsystem, opts.Name), -+ opts.Help, -+ nil, -+ opts.ConstLabels, -+ ), -+ opts, -+ ) -+} -+ -+func newSummary(desc *Desc, opts SummaryOpts, labelValues ...string) Summary { -+ if len(desc.variableLabels) != len(labelValues) { -+ panic(makeInconsistentCardinalityError(desc.fqName, desc.variableLabels, labelValues)) -+ } -+ -+ for _, n := range desc.variableLabels { -+ if n == quantileLabel { -+ panic(errQuantileLabelNotAllowed) -+ } -+ } -+ for _, lp := range desc.constLabelPairs { -+ if lp.GetName() == quantileLabel { -+ panic(errQuantileLabelNotAllowed) -+ } -+ } -+ -+ if opts.Objectives == nil { -+ opts.Objectives = map[float64]float64{} -+ } -+ -+ if opts.MaxAge < 0 { -+ panic(fmt.Errorf("illegal max age MaxAge=%v", opts.MaxAge)) -+ } -+ if opts.MaxAge == 0 { -+ opts.MaxAge = DefMaxAge -+ } -+ -+ if opts.AgeBuckets == 0 { -+ opts.AgeBuckets = DefAgeBuckets -+ } -+ -+ if opts.BufCap == 0 { -+ opts.BufCap = DefBufCap -+ } -+ -+ if len(opts.Objectives) == 0 { -+ // Use the lock-free implementation of a Summary without objectives. -+ s := &noObjectivesSummary{ -+ desc: desc, -+ labelPairs: MakeLabelPairs(desc, labelValues), -+ counts: [2]*summaryCounts{{}, {}}, -+ } -+ s.init(s) // Init self-collection. -+ return s -+ } -+ -+ s := &summary{ -+ desc: desc, -+ -+ objectives: opts.Objectives, -+ sortedObjectives: make([]float64, 0, len(opts.Objectives)), -+ -+ labelPairs: MakeLabelPairs(desc, labelValues), -+ -+ hotBuf: make([]float64, 0, opts.BufCap), -+ coldBuf: make([]float64, 0, opts.BufCap), -+ streamDuration: opts.MaxAge / time.Duration(opts.AgeBuckets), -+ } -+ s.headStreamExpTime = time.Now().Add(s.streamDuration) -+ s.hotBufExpTime = s.headStreamExpTime -+ -+ for i := uint32(0); i < opts.AgeBuckets; i++ { -+ s.streams = append(s.streams, s.newStream()) -+ } -+ s.headStream = s.streams[0] -+ -+ for qu := range s.objectives { -+ s.sortedObjectives = append(s.sortedObjectives, qu) -+ } -+ sort.Float64s(s.sortedObjectives) -+ -+ s.init(s) // Init self-collection. -+ return s -+} -+ -+type summary struct { -+ selfCollector -+ -+ bufMtx sync.Mutex // Protects hotBuf and hotBufExpTime. -+ mtx sync.Mutex // Protects every other moving part. -+ // Lock bufMtx before mtx if both are needed. -+ -+ desc *Desc -+ -+ objectives map[float64]float64 -+ sortedObjectives []float64 -+ -+ labelPairs []*dto.LabelPair -+ -+ sum float64 -+ cnt uint64 -+ -+ hotBuf, coldBuf []float64 -+ -+ streams []*quantile.Stream -+ streamDuration time.Duration -+ headStream *quantile.Stream -+ headStreamIdx int -+ headStreamExpTime, hotBufExpTime time.Time -+} -+ -+func (s *summary) Desc() *Desc { -+ return s.desc -+} -+ -+func (s *summary) Observe(v float64) { -+ s.bufMtx.Lock() -+ defer s.bufMtx.Unlock() -+ -+ now := time.Now() -+ if now.After(s.hotBufExpTime) { -+ s.asyncFlush(now) -+ } -+ s.hotBuf = append(s.hotBuf, v) -+ if len(s.hotBuf) == cap(s.hotBuf) { -+ s.asyncFlush(now) -+ } -+} -+ -+func (s *summary) Write(out *dto.Metric) error { -+ sum := &dto.Summary{} -+ qs := make([]*dto.Quantile, 0, len(s.objectives)) -+ -+ s.bufMtx.Lock() -+ s.mtx.Lock() -+ // Swap bufs even if hotBuf is empty to set new hotBufExpTime. -+ s.swapBufs(time.Now()) -+ s.bufMtx.Unlock() -+ -+ s.flushColdBuf() -+ sum.SampleCount = proto.Uint64(s.cnt) -+ sum.SampleSum = proto.Float64(s.sum) -+ -+ for _, rank := range s.sortedObjectives { -+ var q float64 -+ if s.headStream.Count() == 0 { -+ q = math.NaN() -+ } else { -+ q = s.headStream.Query(rank) -+ } -+ qs = append(qs, &dto.Quantile{ -+ Quantile: proto.Float64(rank), -+ Value: proto.Float64(q), -+ }) -+ } -+ -+ s.mtx.Unlock() -+ -+ if len(qs) > 0 { -+ sort.Sort(quantSort(qs)) -+ } -+ sum.Quantile = qs -+ -+ out.Summary = sum -+ out.Label = s.labelPairs -+ return nil -+} -+ -+func (s *summary) newStream() *quantile.Stream { -+ return quantile.NewTargeted(s.objectives) -+} -+ -+// asyncFlush needs bufMtx locked. -+func (s *summary) asyncFlush(now time.Time) { -+ s.mtx.Lock() -+ s.swapBufs(now) -+ -+ // Unblock the original goroutine that was responsible for the mutation -+ // that triggered the compaction. But hold onto the global non-buffer -+ // state mutex until the operation finishes. -+ go func() { -+ s.flushColdBuf() -+ s.mtx.Unlock() -+ }() -+} -+ -+// rotateStreams needs mtx AND bufMtx locked. -+func (s *summary) maybeRotateStreams() { -+ for !s.hotBufExpTime.Equal(s.headStreamExpTime) { -+ s.headStream.Reset() -+ s.headStreamIdx++ -+ if s.headStreamIdx >= len(s.streams) { -+ s.headStreamIdx = 0 -+ } -+ s.headStream = s.streams[s.headStreamIdx] -+ s.headStreamExpTime = s.headStreamExpTime.Add(s.streamDuration) -+ } -+} -+ -+// flushColdBuf needs mtx locked. -+func (s *summary) flushColdBuf() { -+ for _, v := range s.coldBuf { -+ for _, stream := range s.streams { -+ stream.Insert(v) -+ } -+ s.cnt++ -+ s.sum += v -+ } -+ s.coldBuf = s.coldBuf[0:0] -+ s.maybeRotateStreams() -+} -+ -+// swapBufs needs mtx AND bufMtx locked, coldBuf must be empty. -+func (s *summary) swapBufs(now time.Time) { -+ if len(s.coldBuf) != 0 { -+ panic("coldBuf is not empty") -+ } -+ s.hotBuf, s.coldBuf = s.coldBuf, s.hotBuf -+ // hotBuf is now empty and gets new expiration set. -+ for now.After(s.hotBufExpTime) { -+ s.hotBufExpTime = s.hotBufExpTime.Add(s.streamDuration) -+ } -+} -+ -+type summaryCounts struct { -+ // sumBits contains the bits of the float64 representing the sum of all -+ // observations. sumBits and count have to go first in the struct to -+ // guarantee alignment for atomic operations. -+ // http://golang.org/pkg/sync/atomic/#pkg-note-BUG -+ sumBits uint64 -+ count uint64 -+} -+ -+type noObjectivesSummary struct { -+ // countAndHotIdx enables lock-free writes with use of atomic updates. -+ // The most significant bit is the hot index [0 or 1] of the count field -+ // below. Observe calls update the hot one. All remaining bits count the -+ // number of Observe calls. Observe starts by incrementing this counter, -+ // and finish by incrementing the count field in the respective -+ // summaryCounts, as a marker for completion. -+ // -+ // Calls of the Write method (which are non-mutating reads from the -+ // perspective of the summary) swap the hot–cold under the writeMtx -+ // lock. A cooldown is awaited (while locked) by comparing the number of -+ // observations with the initiation count. Once they match, then the -+ // last observation on the now cool one has completed. All cool fields must -+ // be merged into the new hot before releasing writeMtx. -+ -+ // Fields with atomic access first! See alignment constraint: -+ // http://golang.org/pkg/sync/atomic/#pkg-note-BUG -+ countAndHotIdx uint64 -+ -+ selfCollector -+ desc *Desc -+ writeMtx sync.Mutex // Only used in the Write method. -+ -+ // Two counts, one is "hot" for lock-free observations, the other is -+ // "cold" for writing out a dto.Metric. It has to be an array of -+ // pointers to guarantee 64bit alignment of the histogramCounts, see -+ // http://golang.org/pkg/sync/atomic/#pkg-note-BUG. -+ counts [2]*summaryCounts -+ -+ labelPairs []*dto.LabelPair -+} -+ -+func (s *noObjectivesSummary) Desc() *Desc { -+ return s.desc -+} -+ -+func (s *noObjectivesSummary) Observe(v float64) { -+ // We increment h.countAndHotIdx so that the counter in the lower -+ // 63 bits gets incremented. At the same time, we get the new value -+ // back, which we can use to find the currently-hot counts. -+ n := atomic.AddUint64(&s.countAndHotIdx, 1) -+ hotCounts := s.counts[n>>63] -+ -+ for { -+ oldBits := atomic.LoadUint64(&hotCounts.sumBits) -+ newBits := math.Float64bits(math.Float64frombits(oldBits) + v) -+ if atomic.CompareAndSwapUint64(&hotCounts.sumBits, oldBits, newBits) { -+ break -+ } -+ } -+ // Increment count last as we take it as a signal that the observation -+ // is complete. -+ atomic.AddUint64(&hotCounts.count, 1) -+} -+ -+func (s *noObjectivesSummary) Write(out *dto.Metric) error { -+ // For simplicity, we protect this whole method by a mutex. It is not in -+ // the hot path, i.e. Observe is called much more often than Write. The -+ // complication of making Write lock-free isn't worth it, if possible at -+ // all. -+ s.writeMtx.Lock() -+ defer s.writeMtx.Unlock() -+ -+ // Adding 1<<63 switches the hot index (from 0 to 1 or from 1 to 0) -+ // without touching the count bits. See the struct comments for a full -+ // description of the algorithm. -+ n := atomic.AddUint64(&s.countAndHotIdx, 1<<63) -+ // count is contained unchanged in the lower 63 bits. -+ count := n & ((1 << 63) - 1) -+ // The most significant bit tells us which counts is hot. The complement -+ // is thus the cold one. -+ hotCounts := s.counts[n>>63] -+ coldCounts := s.counts[(^n)>>63] -+ -+ // Await cooldown. -+ for count != atomic.LoadUint64(&coldCounts.count) { -+ runtime.Gosched() // Let observations get work done. -+ } -+ -+ sum := &dto.Summary{ -+ SampleCount: proto.Uint64(count), -+ SampleSum: proto.Float64(math.Float64frombits(atomic.LoadUint64(&coldCounts.sumBits))), -+ } -+ -+ out.Summary = sum -+ out.Label = s.labelPairs -+ -+ // Finally add all the cold counts to the new hot counts and reset the cold counts. -+ atomic.AddUint64(&hotCounts.count, count) -+ atomic.StoreUint64(&coldCounts.count, 0) -+ for { -+ oldBits := atomic.LoadUint64(&hotCounts.sumBits) -+ newBits := math.Float64bits(math.Float64frombits(oldBits) + sum.GetSampleSum()) -+ if atomic.CompareAndSwapUint64(&hotCounts.sumBits, oldBits, newBits) { -+ atomic.StoreUint64(&coldCounts.sumBits, 0) -+ break -+ } -+ } -+ return nil -+} -+ -+type quantSort []*dto.Quantile -+ -+func (s quantSort) Len() int { -+ return len(s) -+} -+ -+func (s quantSort) Swap(i, j int) { -+ s[i], s[j] = s[j], s[i] -+} -+ -+func (s quantSort) Less(i, j int) bool { -+ return s[i].GetQuantile() < s[j].GetQuantile() -+} -+ -+// SummaryVec is a Collector that bundles a set of Summaries that all share the -+// same Desc, but have different values for their variable labels. This is used -+// if you want to count the same thing partitioned by various dimensions -+// (e.g. HTTP request latencies, partitioned by status code and method). Create -+// instances with NewSummaryVec. -+type SummaryVec struct { -+ *MetricVec -+} -+ -+// NewSummaryVec creates a new SummaryVec based on the provided SummaryOpts and -+// partitioned by the given label names. -+// -+// Due to the way a Summary is represented in the Prometheus text format and how -+// it is handled by the Prometheus server internally, “quantile” is an illegal -+// label name. NewSummaryVec will panic if this label name is used. -+func NewSummaryVec(opts SummaryOpts, labelNames []string) *SummaryVec { -+ for _, ln := range labelNames { -+ if ln == quantileLabel { -+ panic(errQuantileLabelNotAllowed) -+ } -+ } -+ desc := NewDesc( -+ BuildFQName(opts.Namespace, opts.Subsystem, opts.Name), -+ opts.Help, -+ labelNames, -+ opts.ConstLabels, -+ ) -+ return &SummaryVec{ -+ MetricVec: NewMetricVec(desc, func(lvs ...string) Metric { -+ return newSummary(desc, opts, lvs...) -+ }), -+ } -+} -+ -+// GetMetricWithLabelValues returns the Summary for the given slice of label -+// values (same order as the variable labels in Desc). If that combination of -+// label values is accessed for the first time, a new Summary is created. -+// -+// It is possible to call this method without using the returned Summary to only -+// create the new Summary but leave it at its starting value, a Summary without -+// any observations. -+// -+// Keeping the Summary for later use is possible (and should be considered if -+// performance is critical), but keep in mind that Reset, DeleteLabelValues and -+// Delete can be used to delete the Summary from the SummaryVec. In that case, -+// the Summary will still exist, but it will not be exported anymore, even if a -+// Summary with the same label values is created later. See also the CounterVec -+// example. -+// -+// An error is returned if the number of label values is not the same as the -+// number of variable labels in Desc (minus any curried labels). -+// -+// Note that for more than one label value, this method is prone to mistakes -+// caused by an incorrect order of arguments. Consider GetMetricWith(Labels) as -+// an alternative to avoid that type of mistake. For higher label numbers, the -+// latter has a much more readable (albeit more verbose) syntax, but it comes -+// with a performance overhead (for creating and processing the Labels map). -+// See also the GaugeVec example. -+func (v *SummaryVec) GetMetricWithLabelValues(lvs ...string) (Observer, error) { -+ metric, err := v.MetricVec.GetMetricWithLabelValues(lvs...) -+ if metric != nil { -+ return metric.(Observer), err -+ } -+ return nil, err -+} -+ -+// GetMetricWith returns the Summary for the given Labels map (the label names -+// must match those of the variable labels in Desc). If that label map is -+// accessed for the first time, a new Summary is created. Implications of -+// creating a Summary without using it and keeping the Summary for later use are -+// the same as for GetMetricWithLabelValues. -+// -+// An error is returned if the number and names of the Labels are inconsistent -+// with those of the variable labels in Desc (minus any curried labels). -+// -+// This method is used for the same purpose as -+// GetMetricWithLabelValues(...string). See there for pros and cons of the two -+// methods. -+func (v *SummaryVec) GetMetricWith(labels Labels) (Observer, error) { -+ metric, err := v.MetricVec.GetMetricWith(labels) -+ if metric != nil { -+ return metric.(Observer), err -+ } -+ return nil, err -+} -+ -+// WithLabelValues works as GetMetricWithLabelValues, but panics where -+// GetMetricWithLabelValues would have returned an error. Not returning an -+// error allows shortcuts like -+// -+// myVec.WithLabelValues("404", "GET").Observe(42.21) -+func (v *SummaryVec) WithLabelValues(lvs ...string) Observer { -+ s, err := v.GetMetricWithLabelValues(lvs...) -+ if err != nil { -+ panic(err) -+ } -+ return s -+} -+ -+// With works as GetMetricWith, but panics where GetMetricWithLabels would have -+// returned an error. Not returning an error allows shortcuts like -+// -+// myVec.With(prometheus.Labels{"code": "404", "method": "GET"}).Observe(42.21) -+func (v *SummaryVec) With(labels Labels) Observer { -+ s, err := v.GetMetricWith(labels) -+ if err != nil { -+ panic(err) -+ } -+ return s -+} -+ -+// CurryWith returns a vector curried with the provided labels, i.e. the -+// returned vector has those labels pre-set for all labeled operations performed -+// on it. The cardinality of the curried vector is reduced accordingly. The -+// order of the remaining labels stays the same (just with the curried labels -+// taken out of the sequence – which is relevant for the -+// (GetMetric)WithLabelValues methods). It is possible to curry a curried -+// vector, but only with labels not yet used for currying before. -+// -+// The metrics contained in the SummaryVec are shared between the curried and -+// uncurried vectors. They are just accessed differently. Curried and uncurried -+// vectors behave identically in terms of collection. Only one must be -+// registered with a given registry (usually the uncurried version). The Reset -+// method deletes all metrics, even if called on a curried vector. -+func (v *SummaryVec) CurryWith(labels Labels) (ObserverVec, error) { -+ vec, err := v.MetricVec.CurryWith(labels) -+ if vec != nil { -+ return &SummaryVec{vec}, err -+ } -+ return nil, err -+} -+ -+// MustCurryWith works as CurryWith but panics where CurryWith would have -+// returned an error. -+func (v *SummaryVec) MustCurryWith(labels Labels) ObserverVec { -+ vec, err := v.CurryWith(labels) -+ if err != nil { -+ panic(err) -+ } -+ return vec -+} -+ -+type constSummary struct { -+ desc *Desc -+ count uint64 -+ sum float64 -+ quantiles map[float64]float64 -+ labelPairs []*dto.LabelPair -+} -+ -+func (s *constSummary) Desc() *Desc { -+ return s.desc -+} -+ -+func (s *constSummary) Write(out *dto.Metric) error { -+ sum := &dto.Summary{} -+ qs := make([]*dto.Quantile, 0, len(s.quantiles)) -+ -+ sum.SampleCount = proto.Uint64(s.count) -+ sum.SampleSum = proto.Float64(s.sum) -+ -+ for rank, q := range s.quantiles { -+ qs = append(qs, &dto.Quantile{ -+ Quantile: proto.Float64(rank), -+ Value: proto.Float64(q), -+ }) -+ } -+ -+ if len(qs) > 0 { -+ sort.Sort(quantSort(qs)) -+ } -+ sum.Quantile = qs -+ -+ out.Summary = sum -+ out.Label = s.labelPairs -+ -+ return nil -+} -+ -+// NewConstSummary returns a metric representing a Prometheus summary with fixed -+// values for the count, sum, and quantiles. As those parameters cannot be -+// changed, the returned value does not implement the Summary interface (but -+// only the Metric interface). Users of this package will not have much use for -+// it in regular operations. However, when implementing custom Collectors, it is -+// useful as a throw-away metric that is generated on the fly to send it to -+// Prometheus in the Collect method. -+// -+// quantiles maps ranks to quantile values. For example, a median latency of -+// 0.23s and a 99th percentile latency of 0.56s would be expressed as: -+// -+// map[float64]float64{0.5: 0.23, 0.99: 0.56} -+// -+// NewConstSummary returns an error if the length of labelValues is not -+// consistent with the variable labels in Desc or if Desc is invalid. -+func NewConstSummary( -+ desc *Desc, -+ count uint64, -+ sum float64, -+ quantiles map[float64]float64, -+ labelValues ...string, -+) (Metric, error) { -+ if desc.err != nil { -+ return nil, desc.err -+ } -+ if err := validateLabelValues(labelValues, len(desc.variableLabels)); err != nil { -+ return nil, err -+ } -+ return &constSummary{ -+ desc: desc, -+ count: count, -+ sum: sum, -+ quantiles: quantiles, -+ labelPairs: MakeLabelPairs(desc, labelValues), -+ }, nil -+} -+ -+// MustNewConstSummary is a version of NewConstSummary that panics where -+// NewConstMetric would have returned an error. -+func MustNewConstSummary( -+ desc *Desc, -+ count uint64, -+ sum float64, -+ quantiles map[float64]float64, -+ labelValues ...string, -+) Metric { -+ m, err := NewConstSummary(desc, count, sum, quantiles, labelValues...) -+ if err != nil { -+ panic(err) -+ } -+ return m -+} -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/timer.go b/vendor/github.com/prometheus/client_golang/prometheus/timer.go -new file mode 100755 -index 0000000..f28a76f ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/timer.go -@@ -0,0 +1,55 @@ -+// Copyright 2016 The Prometheus 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 prometheus -+ -+import "time" -+ -+// Timer is a helper type to time functions. Use NewTimer to create new -+// instances. -+type Timer struct { -+ begin time.Time -+ observer Observer -+} -+ -+// NewTimer creates a new Timer. The provided Observer is used to observe a -+// duration in seconds. Timer is usually used to time a function call in the -+// following way: -+// -+// func TimeMe() { -+// timer := NewTimer(myHistogram) -+// defer timer.ObserveDuration() -+// // Do actual work. -+// } -+func NewTimer(o Observer) *Timer { -+ return &Timer{ -+ begin: time.Now(), -+ observer: o, -+ } -+} -+ -+// ObserveDuration records the duration passed since the Timer was created with -+// NewTimer. It calls the Observe method of the Observer provided during -+// construction with the duration in seconds as an argument. The observed -+// duration is also returned. ObserveDuration is usually called with a defer -+// statement. -+// -+// Note that this method is only guaranteed to never observe negative durations -+// if used with Go1.9+. -+func (t *Timer) ObserveDuration() time.Duration { -+ d := time.Since(t.begin) -+ if t.observer != nil { -+ t.observer.Observe(d.Seconds()) -+ } -+ return d -+} -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/untyped.go b/vendor/github.com/prometheus/client_golang/prometheus/untyped.go -new file mode 100755 -index 0000000..0f9ce63 ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/untyped.go -@@ -0,0 +1,42 @@ -+// Copyright 2014 The Prometheus 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 prometheus -+ -+// UntypedOpts is an alias for Opts. See there for doc comments. -+type UntypedOpts Opts -+ -+// UntypedFunc works like GaugeFunc but the collected metric is of type -+// "Untyped". UntypedFunc is useful to mirror an external metric of unknown -+// type. -+// -+// To create UntypedFunc instances, use NewUntypedFunc. -+type UntypedFunc interface { -+ Metric -+ Collector -+} -+ -+// NewUntypedFunc creates a new UntypedFunc based on the provided -+// UntypedOpts. The value reported is determined by calling the given function -+// from within the Write method. Take into account that metric collection may -+// happen concurrently. If that results in concurrent calls to Write, like in -+// the case where an UntypedFunc is directly registered with Prometheus, the -+// provided function must be concurrency-safe. -+func NewUntypedFunc(opts UntypedOpts, function func() float64) UntypedFunc { -+ return newValueFunc(NewDesc( -+ BuildFQName(opts.Namespace, opts.Subsystem, opts.Name), -+ opts.Help, -+ nil, -+ opts.ConstLabels, -+ ), UntypedValue, function) -+} -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/value.go b/vendor/github.com/prometheus/client_golang/prometheus/value.go -new file mode 100755 -index 0000000..2d3abc1 ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/value.go -@@ -0,0 +1,237 @@ -+// Copyright 2014 The Prometheus 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 prometheus -+ -+import ( -+ "fmt" -+ "sort" -+ "time" -+ "unicode/utf8" -+ -+ //nolint:staticcheck // Ignore SA1019. Need to keep deprecated package for compatibility. -+ "github.com/golang/protobuf/proto" -+ "google.golang.org/protobuf/types/known/timestamppb" -+ -+ "github.com/prometheus/client_golang/prometheus/internal" -+ -+ dto "github.com/prometheus/client_model/go" -+) -+ -+// ValueType is an enumeration of metric types that represent a simple value. -+type ValueType int -+ -+// Possible values for the ValueType enum. Use UntypedValue to mark a metric -+// with an unknown type. -+const ( -+ _ ValueType = iota -+ CounterValue -+ GaugeValue -+ UntypedValue -+) -+ -+var ( -+ CounterMetricTypePtr = func() *dto.MetricType { d := dto.MetricType_COUNTER; return &d }() -+ GaugeMetricTypePtr = func() *dto.MetricType { d := dto.MetricType_GAUGE; return &d }() -+ UntypedMetricTypePtr = func() *dto.MetricType { d := dto.MetricType_UNTYPED; return &d }() -+) -+ -+func (v ValueType) ToDTO() *dto.MetricType { -+ switch v { -+ case CounterValue: -+ return CounterMetricTypePtr -+ case GaugeValue: -+ return GaugeMetricTypePtr -+ default: -+ return UntypedMetricTypePtr -+ } -+} -+ -+// valueFunc is a generic metric for simple values retrieved on collect time -+// from a function. It implements Metric and Collector. Its effective type is -+// determined by ValueType. This is a low-level building block used by the -+// library to back the implementations of CounterFunc, GaugeFunc, and -+// UntypedFunc. -+type valueFunc struct { -+ selfCollector -+ -+ desc *Desc -+ valType ValueType -+ function func() float64 -+ labelPairs []*dto.LabelPair -+} -+ -+// newValueFunc returns a newly allocated valueFunc with the given Desc and -+// ValueType. The value reported is determined by calling the given function -+// from within the Write method. Take into account that metric collection may -+// happen concurrently. If that results in concurrent calls to Write, like in -+// the case where a valueFunc is directly registered with Prometheus, the -+// provided function must be concurrency-safe. -+func newValueFunc(desc *Desc, valueType ValueType, function func() float64) *valueFunc { -+ result := &valueFunc{ -+ desc: desc, -+ valType: valueType, -+ function: function, -+ labelPairs: MakeLabelPairs(desc, nil), -+ } -+ result.init(result) -+ return result -+} -+ -+func (v *valueFunc) Desc() *Desc { -+ return v.desc -+} -+ -+func (v *valueFunc) Write(out *dto.Metric) error { -+ return populateMetric(v.valType, v.function(), v.labelPairs, nil, out) -+} -+ -+// NewConstMetric returns a metric with one fixed value that cannot be -+// changed. Users of this package will not have much use for it in regular -+// operations. However, when implementing custom Collectors, it is useful as a -+// throw-away metric that is generated on the fly to send it to Prometheus in -+// the Collect method. NewConstMetric returns an error if the length of -+// labelValues is not consistent with the variable labels in Desc or if Desc is -+// invalid. -+func NewConstMetric(desc *Desc, valueType ValueType, value float64, labelValues ...string) (Metric, error) { -+ if desc.err != nil { -+ return nil, desc.err -+ } -+ if err := validateLabelValues(labelValues, len(desc.variableLabels)); err != nil { -+ return nil, err -+ } -+ -+ metric := &dto.Metric{} -+ if err := populateMetric(valueType, value, MakeLabelPairs(desc, labelValues), nil, metric); err != nil { -+ return nil, err -+ } -+ -+ return &constMetric{ -+ desc: desc, -+ metric: metric, -+ }, nil -+} -+ -+// MustNewConstMetric is a version of NewConstMetric that panics where -+// NewConstMetric would have returned an error. -+func MustNewConstMetric(desc *Desc, valueType ValueType, value float64, labelValues ...string) Metric { -+ m, err := NewConstMetric(desc, valueType, value, labelValues...) -+ if err != nil { -+ panic(err) -+ } -+ return m -+} -+ -+type constMetric struct { -+ desc *Desc -+ metric *dto.Metric -+} -+ -+func (m *constMetric) Desc() *Desc { -+ return m.desc -+} -+ -+func (m *constMetric) Write(out *dto.Metric) error { -+ out.Label = m.metric.Label -+ out.Counter = m.metric.Counter -+ out.Gauge = m.metric.Gauge -+ out.Untyped = m.metric.Untyped -+ return nil -+} -+ -+func populateMetric( -+ t ValueType, -+ v float64, -+ labelPairs []*dto.LabelPair, -+ e *dto.Exemplar, -+ m *dto.Metric, -+) error { -+ m.Label = labelPairs -+ switch t { -+ case CounterValue: -+ m.Counter = &dto.Counter{Value: proto.Float64(v), Exemplar: e} -+ case GaugeValue: -+ m.Gauge = &dto.Gauge{Value: proto.Float64(v)} -+ case UntypedValue: -+ m.Untyped = &dto.Untyped{Value: proto.Float64(v)} -+ default: -+ return fmt.Errorf("encountered unknown type %v", t) -+ } -+ return nil -+} -+ -+// MakeLabelPairs is a helper function to create protobuf LabelPairs from the -+// variable and constant labels in the provided Desc. The values for the -+// variable labels are defined by the labelValues slice, which must be in the -+// same order as the corresponding variable labels in the Desc. -+// -+// This function is only needed for custom Metric implementations. See MetricVec -+// example. -+func MakeLabelPairs(desc *Desc, labelValues []string) []*dto.LabelPair { -+ totalLen := len(desc.variableLabels) + len(desc.constLabelPairs) -+ if totalLen == 0 { -+ // Super fast path. -+ return nil -+ } -+ if len(desc.variableLabels) == 0 { -+ // Moderately fast path. -+ return desc.constLabelPairs -+ } -+ labelPairs := make([]*dto.LabelPair, 0, totalLen) -+ for i, n := range desc.variableLabels { -+ labelPairs = append(labelPairs, &dto.LabelPair{ -+ Name: proto.String(n), -+ Value: proto.String(labelValues[i]), -+ }) -+ } -+ labelPairs = append(labelPairs, desc.constLabelPairs...) -+ sort.Sort(internal.LabelPairSorter(labelPairs)) -+ return labelPairs -+} -+ -+// ExemplarMaxRunes is the max total number of runes allowed in exemplar labels. -+const ExemplarMaxRunes = 128 -+ -+// newExemplar creates a new dto.Exemplar from the provided values. An error is -+// returned if any of the label names or values are invalid or if the total -+// number of runes in the label names and values exceeds ExemplarMaxRunes. -+func newExemplar(value float64, ts time.Time, l Labels) (*dto.Exemplar, error) { -+ e := &dto.Exemplar{} -+ e.Value = proto.Float64(value) -+ tsProto := timestamppb.New(ts) -+ if err := tsProto.CheckValid(); err != nil { -+ return nil, err -+ } -+ e.Timestamp = tsProto -+ labelPairs := make([]*dto.LabelPair, 0, len(l)) -+ var runes int -+ for name, value := range l { -+ if !checkLabelName(name) { -+ return nil, fmt.Errorf("exemplar label name %q is invalid", name) -+ } -+ runes += utf8.RuneCountInString(name) -+ if !utf8.ValidString(value) { -+ return nil, fmt.Errorf("exemplar label value %q is not valid UTF-8", value) -+ } -+ runes += utf8.RuneCountInString(value) -+ labelPairs = append(labelPairs, &dto.LabelPair{ -+ Name: proto.String(name), -+ Value: proto.String(value), -+ }) -+ } -+ if runes > ExemplarMaxRunes { -+ return nil, fmt.Errorf("exemplar labels have %d runes, exceeding the limit of %d", runes, ExemplarMaxRunes) -+ } -+ e.Label = labelPairs -+ return e, nil -+} -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/vec.go b/vendor/github.com/prometheus/client_golang/prometheus/vec.go -new file mode 100755 -index 0000000..7ae3225 ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/vec.go -@@ -0,0 +1,642 @@ -+// Copyright 2014 The Prometheus 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 prometheus -+ -+import ( -+ "fmt" -+ "sync" -+ -+ "github.com/prometheus/common/model" -+) -+ -+// MetricVec is a Collector to bundle metrics of the same name that differ in -+// their label values. MetricVec is not used directly but as a building block -+// for implementations of vectors of a given metric type, like GaugeVec, -+// CounterVec, SummaryVec, and HistogramVec. It is exported so that it can be -+// used for custom Metric implementations. -+// -+// To create a FooVec for custom Metric Foo, embed a pointer to MetricVec in -+// FooVec and initialize it with NewMetricVec. Implement wrappers for -+// GetMetricWithLabelValues and GetMetricWith that return (Foo, error) rather -+// than (Metric, error). Similarly, create a wrapper for CurryWith that returns -+// (*FooVec, error) rather than (*MetricVec, error). It is recommended to also -+// add the convenience methods WithLabelValues, With, and MustCurryWith, which -+// panic instead of returning errors. See also the MetricVec example. -+type MetricVec struct { -+ *metricMap -+ -+ curry []curriedLabelValue -+ -+ // hashAdd and hashAddByte can be replaced for testing collision handling. -+ hashAdd func(h uint64, s string) uint64 -+ hashAddByte func(h uint64, b byte) uint64 -+} -+ -+// NewMetricVec returns an initialized metricVec. -+func NewMetricVec(desc *Desc, newMetric func(lvs ...string) Metric) *MetricVec { -+ return &MetricVec{ -+ metricMap: &metricMap{ -+ metrics: map[uint64][]metricWithLabelValues{}, -+ desc: desc, -+ newMetric: newMetric, -+ }, -+ hashAdd: hashAdd, -+ hashAddByte: hashAddByte, -+ } -+} -+ -+// DeleteLabelValues removes the metric where the variable labels are the same -+// as those passed in as labels (same order as the VariableLabels in Desc). It -+// returns true if a metric was deleted. -+// -+// It is not an error if the number of label values is not the same as the -+// number of VariableLabels in Desc. However, such inconsistent label count can -+// never match an actual metric, so the method will always return false in that -+// case. -+// -+// Note that for more than one label value, this method is prone to mistakes -+// caused by an incorrect order of arguments. Consider Delete(Labels) as an -+// alternative to avoid that type of mistake. For higher label numbers, the -+// latter has a much more readable (albeit more verbose) syntax, but it comes -+// with a performance overhead (for creating and processing the Labels map). -+// See also the CounterVec example. -+func (m *MetricVec) DeleteLabelValues(lvs ...string) bool { -+ h, err := m.hashLabelValues(lvs) -+ if err != nil { -+ return false -+ } -+ -+ return m.metricMap.deleteByHashWithLabelValues(h, lvs, m.curry) -+} -+ -+// Delete deletes the metric where the variable labels are the same as those -+// passed in as labels. It returns true if a metric was deleted. -+// -+// It is not an error if the number and names of the Labels are inconsistent -+// with those of the VariableLabels in Desc. However, such inconsistent Labels -+// can never match an actual metric, so the method will always return false in -+// that case. -+// -+// This method is used for the same purpose as DeleteLabelValues(...string). See -+// there for pros and cons of the two methods. -+func (m *MetricVec) Delete(labels Labels) bool { -+ h, err := m.hashLabels(labels) -+ if err != nil { -+ return false -+ } -+ -+ return m.metricMap.deleteByHashWithLabels(h, labels, m.curry) -+} -+ -+// DeletePartialMatch deletes all metrics where the variable labels contain all of those -+// passed in as labels. The order of the labels does not matter. -+// It returns the number of metrics deleted. -+// -+// Note that curried labels will never be matched if deleting from the curried vector. -+// To match curried labels with DeletePartialMatch, it must be called on the base vector. -+func (m *MetricVec) DeletePartialMatch(labels Labels) int { -+ return m.metricMap.deleteByLabels(labels, m.curry) -+} -+ -+// Without explicit forwarding of Describe, Collect, Reset, those methods won't -+// show up in GoDoc. -+ -+// Describe implements Collector. -+func (m *MetricVec) Describe(ch chan<- *Desc) { m.metricMap.Describe(ch) } -+ -+// Collect implements Collector. -+func (m *MetricVec) Collect(ch chan<- Metric) { m.metricMap.Collect(ch) } -+ -+// Reset deletes all metrics in this vector. -+func (m *MetricVec) Reset() { m.metricMap.Reset() } -+ -+// CurryWith returns a vector curried with the provided labels, i.e. the -+// returned vector has those labels pre-set for all labeled operations performed -+// on it. The cardinality of the curried vector is reduced accordingly. The -+// order of the remaining labels stays the same (just with the curried labels -+// taken out of the sequence – which is relevant for the -+// (GetMetric)WithLabelValues methods). It is possible to curry a curried -+// vector, but only with labels not yet used for currying before. -+// -+// The metrics contained in the MetricVec are shared between the curried and -+// uncurried vectors. They are just accessed differently. Curried and uncurried -+// vectors behave identically in terms of collection. Only one must be -+// registered with a given registry (usually the uncurried version). The Reset -+// method deletes all metrics, even if called on a curried vector. -+// -+// Note that CurryWith is usually not called directly but through a wrapper -+// around MetricVec, implementing a vector for a specific Metric -+// implementation, for example GaugeVec. -+func (m *MetricVec) CurryWith(labels Labels) (*MetricVec, error) { -+ var ( -+ newCurry []curriedLabelValue -+ oldCurry = m.curry -+ iCurry int -+ ) -+ for i, label := range m.desc.variableLabels { -+ val, ok := labels[label] -+ if iCurry < len(oldCurry) && oldCurry[iCurry].index == i { -+ if ok { -+ return nil, fmt.Errorf("label name %q is already curried", label) -+ } -+ newCurry = append(newCurry, oldCurry[iCurry]) -+ iCurry++ -+ } else { -+ if !ok { -+ continue // Label stays uncurried. -+ } -+ newCurry = append(newCurry, curriedLabelValue{i, val}) -+ } -+ } -+ if l := len(oldCurry) + len(labels) - len(newCurry); l > 0 { -+ return nil, fmt.Errorf("%d unknown label(s) found during currying", l) -+ } -+ -+ return &MetricVec{ -+ metricMap: m.metricMap, -+ curry: newCurry, -+ hashAdd: m.hashAdd, -+ hashAddByte: m.hashAddByte, -+ }, nil -+} -+ -+// GetMetricWithLabelValues returns the Metric for the given slice of label -+// values (same order as the variable labels in Desc). If that combination of -+// label values is accessed for the first time, a new Metric is created (by -+// calling the newMetric function provided during construction of the -+// MetricVec). -+// -+// It is possible to call this method without using the returned Metric to only -+// create the new Metric but leave it in its initial state. -+// -+// Keeping the Metric for later use is possible (and should be considered if -+// performance is critical), but keep in mind that Reset, DeleteLabelValues and -+// Delete can be used to delete the Metric from the MetricVec. In that case, the -+// Metric will still exist, but it will not be exported anymore, even if a -+// Metric with the same label values is created later. -+// -+// An error is returned if the number of label values is not the same as the -+// number of variable labels in Desc (minus any curried labels). -+// -+// Note that for more than one label value, this method is prone to mistakes -+// caused by an incorrect order of arguments. Consider GetMetricWith(Labels) as -+// an alternative to avoid that type of mistake. For higher label numbers, the -+// latter has a much more readable (albeit more verbose) syntax, but it comes -+// with a performance overhead (for creating and processing the Labels map). -+// -+// Note that GetMetricWithLabelValues is usually not called directly but through -+// a wrapper around MetricVec, implementing a vector for a specific Metric -+// implementation, for example GaugeVec. -+func (m *MetricVec) GetMetricWithLabelValues(lvs ...string) (Metric, error) { -+ h, err := m.hashLabelValues(lvs) -+ if err != nil { -+ return nil, err -+ } -+ -+ return m.metricMap.getOrCreateMetricWithLabelValues(h, lvs, m.curry), nil -+} -+ -+// GetMetricWith returns the Metric for the given Labels map (the label names -+// must match those of the variable labels in Desc). If that label map is -+// accessed for the first time, a new Metric is created. Implications of -+// creating a Metric without using it and keeping the Metric for later use -+// are the same as for GetMetricWithLabelValues. -+// -+// An error is returned if the number and names of the Labels are inconsistent -+// with those of the variable labels in Desc (minus any curried labels). -+// -+// This method is used for the same purpose as -+// GetMetricWithLabelValues(...string). See there for pros and cons of the two -+// methods. -+// -+// Note that GetMetricWith is usually not called directly but through a wrapper -+// around MetricVec, implementing a vector for a specific Metric implementation, -+// for example GaugeVec. -+func (m *MetricVec) GetMetricWith(labels Labels) (Metric, error) { -+ h, err := m.hashLabels(labels) -+ if err != nil { -+ return nil, err -+ } -+ -+ return m.metricMap.getOrCreateMetricWithLabels(h, labels, m.curry), nil -+} -+ -+func (m *MetricVec) hashLabelValues(vals []string) (uint64, error) { -+ if err := validateLabelValues(vals, len(m.desc.variableLabels)-len(m.curry)); err != nil { -+ return 0, err -+ } -+ -+ var ( -+ h = hashNew() -+ curry = m.curry -+ iVals, iCurry int -+ ) -+ for i := 0; i < len(m.desc.variableLabels); i++ { -+ if iCurry < len(curry) && curry[iCurry].index == i { -+ h = m.hashAdd(h, curry[iCurry].value) -+ iCurry++ -+ } else { -+ h = m.hashAdd(h, vals[iVals]) -+ iVals++ -+ } -+ h = m.hashAddByte(h, model.SeparatorByte) -+ } -+ return h, nil -+} -+ -+func (m *MetricVec) hashLabels(labels Labels) (uint64, error) { -+ if err := validateValuesInLabels(labels, len(m.desc.variableLabels)-len(m.curry)); err != nil { -+ return 0, err -+ } -+ -+ var ( -+ h = hashNew() -+ curry = m.curry -+ iCurry int -+ ) -+ for i, label := range m.desc.variableLabels { -+ val, ok := labels[label] -+ if iCurry < len(curry) && curry[iCurry].index == i { -+ if ok { -+ return 0, fmt.Errorf("label name %q is already curried", label) -+ } -+ h = m.hashAdd(h, curry[iCurry].value) -+ iCurry++ -+ } else { -+ if !ok { -+ return 0, fmt.Errorf("label name %q missing in label map", label) -+ } -+ h = m.hashAdd(h, val) -+ } -+ h = m.hashAddByte(h, model.SeparatorByte) -+ } -+ return h, nil -+} -+ -+// metricWithLabelValues provides the metric and its label values for -+// disambiguation on hash collision. -+type metricWithLabelValues struct { -+ values []string -+ metric Metric -+} -+ -+// curriedLabelValue sets the curried value for a label at the given index. -+type curriedLabelValue struct { -+ index int -+ value string -+} -+ -+// metricMap is a helper for metricVec and shared between differently curried -+// metricVecs. -+type metricMap struct { -+ mtx sync.RWMutex // Protects metrics. -+ metrics map[uint64][]metricWithLabelValues -+ desc *Desc -+ newMetric func(labelValues ...string) Metric -+} -+ -+// Describe implements Collector. It will send exactly one Desc to the provided -+// channel. -+func (m *metricMap) Describe(ch chan<- *Desc) { -+ ch <- m.desc -+} -+ -+// Collect implements Collector. -+func (m *metricMap) Collect(ch chan<- Metric) { -+ m.mtx.RLock() -+ defer m.mtx.RUnlock() -+ -+ for _, metrics := range m.metrics { -+ for _, metric := range metrics { -+ ch <- metric.metric -+ } -+ } -+} -+ -+// Reset deletes all metrics in this vector. -+func (m *metricMap) Reset() { -+ m.mtx.Lock() -+ defer m.mtx.Unlock() -+ -+ for h := range m.metrics { -+ delete(m.metrics, h) -+ } -+} -+ -+// deleteByHashWithLabelValues removes the metric from the hash bucket h. If -+// there are multiple matches in the bucket, use lvs to select a metric and -+// remove only that metric. -+func (m *metricMap) deleteByHashWithLabelValues( -+ h uint64, lvs []string, curry []curriedLabelValue, -+) bool { -+ m.mtx.Lock() -+ defer m.mtx.Unlock() -+ -+ metrics, ok := m.metrics[h] -+ if !ok { -+ return false -+ } -+ -+ i := findMetricWithLabelValues(metrics, lvs, curry) -+ if i >= len(metrics) { -+ return false -+ } -+ -+ if len(metrics) > 1 { -+ old := metrics -+ m.metrics[h] = append(metrics[:i], metrics[i+1:]...) -+ old[len(old)-1] = metricWithLabelValues{} -+ } else { -+ delete(m.metrics, h) -+ } -+ return true -+} -+ -+// deleteByHashWithLabels removes the metric from the hash bucket h. If there -+// are multiple matches in the bucket, use lvs to select a metric and remove -+// only that metric. -+func (m *metricMap) deleteByHashWithLabels( -+ h uint64, labels Labels, curry []curriedLabelValue, -+) bool { -+ m.mtx.Lock() -+ defer m.mtx.Unlock() -+ -+ metrics, ok := m.metrics[h] -+ if !ok { -+ return false -+ } -+ i := findMetricWithLabels(m.desc, metrics, labels, curry) -+ if i >= len(metrics) { -+ return false -+ } -+ -+ if len(metrics) > 1 { -+ old := metrics -+ m.metrics[h] = append(metrics[:i], metrics[i+1:]...) -+ old[len(old)-1] = metricWithLabelValues{} -+ } else { -+ delete(m.metrics, h) -+ } -+ return true -+} -+ -+// deleteByLabels deletes a metric if the given labels are present in the metric. -+func (m *metricMap) deleteByLabels(labels Labels, curry []curriedLabelValue) int { -+ m.mtx.Lock() -+ defer m.mtx.Unlock() -+ -+ var numDeleted int -+ -+ for h, metrics := range m.metrics { -+ i := findMetricWithPartialLabels(m.desc, metrics, labels, curry) -+ if i >= len(metrics) { -+ // Didn't find matching labels in this metric slice. -+ continue -+ } -+ delete(m.metrics, h) -+ numDeleted++ -+ } -+ -+ return numDeleted -+} -+ -+// findMetricWithPartialLabel returns the index of the matching metric or -+// len(metrics) if not found. -+func findMetricWithPartialLabels( -+ desc *Desc, metrics []metricWithLabelValues, labels Labels, curry []curriedLabelValue, -+) int { -+ for i, metric := range metrics { -+ if matchPartialLabels(desc, metric.values, labels, curry) { -+ return i -+ } -+ } -+ return len(metrics) -+} -+ -+// indexOf searches the given slice of strings for the target string and returns -+// the index or len(items) as well as a boolean whether the search succeeded. -+func indexOf(target string, items []string) (int, bool) { -+ for i, l := range items { -+ if l == target { -+ return i, true -+ } -+ } -+ return len(items), false -+} -+ -+// valueMatchesVariableOrCurriedValue determines if a value was previously curried, -+// and returns whether it matches either the "base" value or the curried value accordingly. -+// It also indicates whether the match is against a curried or uncurried value. -+func valueMatchesVariableOrCurriedValue(targetValue string, index int, values []string, curry []curriedLabelValue) (bool, bool) { -+ for _, curriedValue := range curry { -+ if curriedValue.index == index { -+ // This label was curried. See if the curried value matches our target. -+ return curriedValue.value == targetValue, true -+ } -+ } -+ // This label was not curried. See if the current value matches our target label. -+ return values[index] == targetValue, false -+} -+ -+// matchPartialLabels searches the current metric and returns whether all of the target label:value pairs are present. -+func matchPartialLabels(desc *Desc, values []string, labels Labels, curry []curriedLabelValue) bool { -+ for l, v := range labels { -+ // Check if the target label exists in our metrics and get the index. -+ varLabelIndex, validLabel := indexOf(l, desc.variableLabels) -+ if validLabel { -+ // Check the value of that label against the target value. -+ // We don't consider curried values in partial matches. -+ matches, curried := valueMatchesVariableOrCurriedValue(v, varLabelIndex, values, curry) -+ if matches && !curried { -+ continue -+ } -+ } -+ return false -+ } -+ return true -+} -+ -+// getOrCreateMetricWithLabelValues retrieves the metric by hash and label value -+// or creates it and returns the new one. -+// -+// This function holds the mutex. -+func (m *metricMap) getOrCreateMetricWithLabelValues( -+ hash uint64, lvs []string, curry []curriedLabelValue, -+) Metric { -+ m.mtx.RLock() -+ metric, ok := m.getMetricWithHashAndLabelValues(hash, lvs, curry) -+ m.mtx.RUnlock() -+ if ok { -+ return metric -+ } -+ -+ m.mtx.Lock() -+ defer m.mtx.Unlock() -+ metric, ok = m.getMetricWithHashAndLabelValues(hash, lvs, curry) -+ if !ok { -+ inlinedLVs := inlineLabelValues(lvs, curry) -+ metric = m.newMetric(inlinedLVs...) -+ m.metrics[hash] = append(m.metrics[hash], metricWithLabelValues{values: inlinedLVs, metric: metric}) -+ } -+ return metric -+} -+ -+// getOrCreateMetricWithLabelValues retrieves the metric by hash and label value -+// or creates it and returns the new one. -+// -+// This function holds the mutex. -+func (m *metricMap) getOrCreateMetricWithLabels( -+ hash uint64, labels Labels, curry []curriedLabelValue, -+) Metric { -+ m.mtx.RLock() -+ metric, ok := m.getMetricWithHashAndLabels(hash, labels, curry) -+ m.mtx.RUnlock() -+ if ok { -+ return metric -+ } -+ -+ m.mtx.Lock() -+ defer m.mtx.Unlock() -+ metric, ok = m.getMetricWithHashAndLabels(hash, labels, curry) -+ if !ok { -+ lvs := extractLabelValues(m.desc, labels, curry) -+ metric = m.newMetric(lvs...) -+ m.metrics[hash] = append(m.metrics[hash], metricWithLabelValues{values: lvs, metric: metric}) -+ } -+ return metric -+} -+ -+// getMetricWithHashAndLabelValues gets a metric while handling possible -+// collisions in the hash space. Must be called while holding the read mutex. -+func (m *metricMap) getMetricWithHashAndLabelValues( -+ h uint64, lvs []string, curry []curriedLabelValue, -+) (Metric, bool) { -+ metrics, ok := m.metrics[h] -+ if ok { -+ if i := findMetricWithLabelValues(metrics, lvs, curry); i < len(metrics) { -+ return metrics[i].metric, true -+ } -+ } -+ return nil, false -+} -+ -+// getMetricWithHashAndLabels gets a metric while handling possible collisions in -+// the hash space. Must be called while holding read mutex. -+func (m *metricMap) getMetricWithHashAndLabels( -+ h uint64, labels Labels, curry []curriedLabelValue, -+) (Metric, bool) { -+ metrics, ok := m.metrics[h] -+ if ok { -+ if i := findMetricWithLabels(m.desc, metrics, labels, curry); i < len(metrics) { -+ return metrics[i].metric, true -+ } -+ } -+ return nil, false -+} -+ -+// findMetricWithLabelValues returns the index of the matching metric or -+// len(metrics) if not found. -+func findMetricWithLabelValues( -+ metrics []metricWithLabelValues, lvs []string, curry []curriedLabelValue, -+) int { -+ for i, metric := range metrics { -+ if matchLabelValues(metric.values, lvs, curry) { -+ return i -+ } -+ } -+ return len(metrics) -+} -+ -+// findMetricWithLabels returns the index of the matching metric or len(metrics) -+// if not found. -+func findMetricWithLabels( -+ desc *Desc, metrics []metricWithLabelValues, labels Labels, curry []curriedLabelValue, -+) int { -+ for i, metric := range metrics { -+ if matchLabels(desc, metric.values, labels, curry) { -+ return i -+ } -+ } -+ return len(metrics) -+} -+ -+func matchLabelValues(values, lvs []string, curry []curriedLabelValue) bool { -+ if len(values) != len(lvs)+len(curry) { -+ return false -+ } -+ var iLVs, iCurry int -+ for i, v := range values { -+ if iCurry < len(curry) && curry[iCurry].index == i { -+ if v != curry[iCurry].value { -+ return false -+ } -+ iCurry++ -+ continue -+ } -+ if v != lvs[iLVs] { -+ return false -+ } -+ iLVs++ -+ } -+ return true -+} -+ -+func matchLabels(desc *Desc, values []string, labels Labels, curry []curriedLabelValue) bool { -+ if len(values) != len(labels)+len(curry) { -+ return false -+ } -+ iCurry := 0 -+ for i, k := range desc.variableLabels { -+ if iCurry < len(curry) && curry[iCurry].index == i { -+ if values[i] != curry[iCurry].value { -+ return false -+ } -+ iCurry++ -+ continue -+ } -+ if values[i] != labels[k] { -+ return false -+ } -+ } -+ return true -+} -+ -+func extractLabelValues(desc *Desc, labels Labels, curry []curriedLabelValue) []string { -+ labelValues := make([]string, len(labels)+len(curry)) -+ iCurry := 0 -+ for i, k := range desc.variableLabels { -+ if iCurry < len(curry) && curry[iCurry].index == i { -+ labelValues[i] = curry[iCurry].value -+ iCurry++ -+ continue -+ } -+ labelValues[i] = labels[k] -+ } -+ return labelValues -+} -+ -+func inlineLabelValues(lvs []string, curry []curriedLabelValue) []string { -+ labelValues := make([]string, len(lvs)+len(curry)) -+ var iCurry, iLVs int -+ for i := range labelValues { -+ if iCurry < len(curry) && curry[iCurry].index == i { -+ labelValues[i] = curry[iCurry].value -+ iCurry++ -+ continue -+ } -+ labelValues[i] = lvs[iLVs] -+ iLVs++ -+ } -+ return labelValues -+} -diff --git a/vendor/github.com/prometheus/client_golang/prometheus/wrap.go b/vendor/github.com/prometheus/client_golang/prometheus/wrap.go -new file mode 100755 -index 0000000..1498ee1 ---- /dev/null -+++ b/vendor/github.com/prometheus/client_golang/prometheus/wrap.go -@@ -0,0 +1,216 @@ -+// Copyright 2018 The Prometheus 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 prometheus -+ -+import ( -+ "fmt" -+ "sort" -+ -+ //nolint:staticcheck // Ignore SA1019. Need to keep deprecated package for compatibility. -+ "github.com/golang/protobuf/proto" -+ -+ dto "github.com/prometheus/client_model/go" -+ -+ "github.com/prometheus/client_golang/prometheus/internal" -+) -+ -+// WrapRegistererWith returns a Registerer wrapping the provided -+// Registerer. Collectors registered with the returned Registerer will be -+// registered with the wrapped Registerer in a modified way. The modified -+// Collector adds the provided Labels to all Metrics it collects (as -+// ConstLabels). The Metrics collected by the unmodified Collector must not -+// duplicate any of those labels. Wrapping a nil value is valid, resulting -+// in a no-op Registerer. -+// -+// WrapRegistererWith provides a way to add fixed labels to a subset of -+// Collectors. It should not be used to add fixed labels to all metrics -+// exposed. See also -+// https://prometheus.io/docs/instrumenting/writing_exporters/#target-labels-not-static-scraped-labels -+// -+// Conflicts between Collectors registered through the original Registerer with -+// Collectors registered through the wrapping Registerer will still be -+// detected. Any AlreadyRegisteredError returned by the Register method of -+// either Registerer will contain the ExistingCollector in the form it was -+// provided to the respective registry. -+// -+// The Collector example demonstrates a use of WrapRegistererWith. -+func WrapRegistererWith(labels Labels, reg Registerer) Registerer { -+ return &wrappingRegisterer{ -+ wrappedRegisterer: reg, -+ labels: labels, -+ } -+} -+ -+// WrapRegistererWithPrefix returns a Registerer wrapping the provided -+// Registerer. Collectors registered with the returned Registerer will be -+// registered with the wrapped Registerer in a modified way. The modified -+// Collector adds the provided prefix to the name of all Metrics it collects. -+// Wrapping a nil value is valid, resulting in a no-op Registerer. -+// -+// WrapRegistererWithPrefix is useful to have one place to prefix all metrics of -+// a sub-system. To make this work, register metrics of the sub-system with the -+// wrapping Registerer returned by WrapRegistererWithPrefix. It is rarely useful -+// to use the same prefix for all metrics exposed. In particular, do not prefix -+// metric names that are standardized across applications, as that would break -+// horizontal monitoring, for example the metrics provided by the Go collector -+// (see NewGoCollector) and the process collector (see NewProcessCollector). (In -+// fact, those metrics are already prefixed with “go_” or “process_”, -+// respectively.) -+// -+// Conflicts between Collectors registered through the original Registerer with -+// Collectors registered through the wrapping Registerer will still be -+// detected. Any AlreadyRegisteredError returned by the Register method of -+// either Registerer will contain the ExistingCollector in the form it was -+// provided to the respective registry. -+func WrapRegistererWithPrefix(prefix string, reg Registerer) Registerer { -+ return &wrappingRegisterer{ -+ wrappedRegisterer: reg, -+ prefix: prefix, -+ } -+} -+ -+type wrappingRegisterer struct { -+ wrappedRegisterer Registerer -+ prefix string -+ labels Labels -+} -+ -+func (r *wrappingRegisterer) Register(c Collector) error { -+ if r.wrappedRegisterer == nil { -+ return nil -+ } -+ return r.wrappedRegisterer.Register(&wrappingCollector{ -+ wrappedCollector: c, -+ prefix: r.prefix, -+ labels: r.labels, -+ }) -+} -+ -+func (r *wrappingRegisterer) MustRegister(cs ...Collector) { -+ if r.wrappedRegisterer == nil { -+ return -+ } -+ for _, c := range cs { -+ if err := r.Register(c); err != nil { -+ panic(err) -+ } -+ } -+} -+ -+func (r *wrappingRegisterer) Unregister(c Collector) bool { -+ if r.wrappedRegisterer == nil { -+ return false -+ } -+ return r.wrappedRegisterer.Unregister(&wrappingCollector{ -+ wrappedCollector: c, -+ prefix: r.prefix, -+ labels: r.labels, -+ }) -+} -+ -+type wrappingCollector struct { -+ wrappedCollector Collector -+ prefix string -+ labels Labels -+} -+ -+func (c *wrappingCollector) Collect(ch chan<- Metric) { -+ wrappedCh := make(chan Metric) -+ go func() { -+ c.wrappedCollector.Collect(wrappedCh) -+ close(wrappedCh) -+ }() -+ for m := range wrappedCh { -+ ch <- &wrappingMetric{ -+ wrappedMetric: m, -+ prefix: c.prefix, -+ labels: c.labels, -+ } -+ } -+} -+ -+func (c *wrappingCollector) Describe(ch chan<- *Desc) { -+ wrappedCh := make(chan *Desc) -+ go func() { -+ c.wrappedCollector.Describe(wrappedCh) -+ close(wrappedCh) -+ }() -+ for desc := range wrappedCh { -+ ch <- wrapDesc(desc, c.prefix, c.labels) -+ } -+} -+ -+func (c *wrappingCollector) unwrapRecursively() Collector { -+ switch wc := c.wrappedCollector.(type) { -+ case *wrappingCollector: -+ return wc.unwrapRecursively() -+ default: -+ return wc -+ } -+} -+ -+type wrappingMetric struct { -+ wrappedMetric Metric -+ prefix string -+ labels Labels -+} -+ -+func (m *wrappingMetric) Desc() *Desc { -+ return wrapDesc(m.wrappedMetric.Desc(), m.prefix, m.labels) -+} -+ -+func (m *wrappingMetric) Write(out *dto.Metric) error { -+ if err := m.wrappedMetric.Write(out); err != nil { -+ return err -+ } -+ if len(m.labels) == 0 { -+ // No wrapping labels. -+ return nil -+ } -+ for ln, lv := range m.labels { -+ out.Label = append(out.Label, &dto.LabelPair{ -+ Name: proto.String(ln), -+ Value: proto.String(lv), -+ }) -+ } -+ sort.Sort(internal.LabelPairSorter(out.Label)) -+ return nil -+} -+ -+func wrapDesc(desc *Desc, prefix string, labels Labels) *Desc { -+ constLabels := Labels{} -+ for _, lp := range desc.constLabelPairs { -+ constLabels[*lp.Name] = *lp.Value -+ } -+ for ln, lv := range labels { -+ if _, alreadyUsed := constLabels[ln]; alreadyUsed { -+ return &Desc{ -+ fqName: desc.fqName, -+ help: desc.help, -+ variableLabels: desc.variableLabels, -+ constLabelPairs: desc.constLabelPairs, -+ err: fmt.Errorf("attempted wrapping with already existing label name %q", ln), -+ } -+ } -+ constLabels[ln] = lv -+ } -+ // NewDesc will do remaining validations. -+ newDesc := NewDesc(prefix+desc.fqName, desc.help, desc.variableLabels, constLabels) -+ // Propagate errors if there was any. This will override any errer -+ // created by NewDesc above, i.e. earlier errors get precedence. -+ if desc.err != nil { -+ newDesc.err = desc.err -+ } -+ return newDesc -+} -diff --git a/vendor/github.com/prometheus/client_model/LICENSE b/vendor/github.com/prometheus/client_model/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/prometheus/client_model/NOTICE b/vendor/github.com/prometheus/client_model/NOTICE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/prometheus/client_model/go/metrics.pb.go b/vendor/github.com/prometheus/client_model/go/metrics.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/prometheus/common/LICENSE b/vendor/github.com/prometheus/common/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/prometheus/common/NOTICE b/vendor/github.com/prometheus/common/NOTICE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/prometheus/common/expfmt/decode.go b/vendor/github.com/prometheus/common/expfmt/decode.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/prometheus/common/expfmt/encode.go b/vendor/github.com/prometheus/common/expfmt/encode.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/prometheus/common/expfmt/expfmt.go b/vendor/github.com/prometheus/common/expfmt/expfmt.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/prometheus/common/expfmt/fuzz.go b/vendor/github.com/prometheus/common/expfmt/fuzz.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/prometheus/common/expfmt/openmetrics_create.go b/vendor/github.com/prometheus/common/expfmt/openmetrics_create.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/prometheus/common/expfmt/text_create.go b/vendor/github.com/prometheus/common/expfmt/text_create.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/prometheus/common/expfmt/text_parse.go b/vendor/github.com/prometheus/common/expfmt/text_parse.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg/README.txt b/vendor/github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg/README.txt -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg/autoneg.go b/vendor/github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg/autoneg.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/prometheus/common/model/alert.go b/vendor/github.com/prometheus/common/model/alert.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/prometheus/common/model/fingerprinting.go b/vendor/github.com/prometheus/common/model/fingerprinting.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/prometheus/common/model/fnv.go b/vendor/github.com/prometheus/common/model/fnv.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/prometheus/common/model/labels.go b/vendor/github.com/prometheus/common/model/labels.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/prometheus/common/model/labelset.go b/vendor/github.com/prometheus/common/model/labelset.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/prometheus/common/model/metric.go b/vendor/github.com/prometheus/common/model/metric.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/prometheus/common/model/model.go b/vendor/github.com/prometheus/common/model/model.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/prometheus/common/model/signature.go b/vendor/github.com/prometheus/common/model/signature.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/prometheus/common/model/silence.go b/vendor/github.com/prometheus/common/model/silence.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/prometheus/common/model/time.go b/vendor/github.com/prometheus/common/model/time.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/prometheus/common/model/value.go b/vendor/github.com/prometheus/common/model/value.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/prometheus/procfs/.gitignore b/vendor/github.com/prometheus/procfs/.gitignore -new file mode 100755 -index 0000000..7cc33ae ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/.gitignore -@@ -0,0 +1,2 @@ -+/testdata/fixtures/ -+/fixtures -diff --git a/vendor/github.com/prometheus/procfs/.golangci.yml b/vendor/github.com/prometheus/procfs/.golangci.yml -new file mode 100755 -index 0000000..a197699 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/.golangci.yml -@@ -0,0 +1,12 @@ -+--- -+linters: -+ enable: -+ - godot -+ - revive -+ -+linter-settings: -+ godot: -+ capital: true -+ exclude: -+ # Ignore "See: URL" -+ - 'See:' -diff --git a/vendor/github.com/prometheus/procfs/CODE_OF_CONDUCT.md b/vendor/github.com/prometheus/procfs/CODE_OF_CONDUCT.md -new file mode 100755 -index 0000000..d325872 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/CODE_OF_CONDUCT.md -@@ -0,0 +1,3 @@ -+# Prometheus Community Code of Conduct -+ -+Prometheus follows the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/main/code-of-conduct.md). -diff --git a/vendor/github.com/prometheus/procfs/CONTRIBUTING.md b/vendor/github.com/prometheus/procfs/CONTRIBUTING.md -new file mode 100755 -index 0000000..853eb9d ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/CONTRIBUTING.md -@@ -0,0 +1,121 @@ -+# Contributing -+ -+Prometheus uses GitHub to manage reviews of pull requests. -+ -+* If you are a new contributor see: [Steps to Contribute](#steps-to-contribute) -+ -+* If you have a trivial fix or improvement, go ahead and create a pull request, -+ addressing (with `@...`) a suitable maintainer of this repository (see -+ [MAINTAINERS.md](MAINTAINERS.md)) in the description of the pull request. -+ -+* If you plan to do something more involved, first discuss your ideas -+ on our [mailing list](https://groups.google.com/forum/?fromgroups#!forum/prometheus-developers). -+ This will avoid unnecessary work and surely give you and us a good deal -+ of inspiration. Also please see our [non-goals issue](https://github.com/prometheus/docs/issues/149) on areas that the Prometheus community doesn't plan to work on. -+ -+* Relevant coding style guidelines are the [Go Code Review -+ Comments](https://code.google.com/p/go-wiki/wiki/CodeReviewComments) -+ and the _Formatting and style_ section of Peter Bourgon's [Go: Best -+ Practices for Production -+ Environments](https://peter.bourgon.org/go-in-production/#formatting-and-style). -+ -+* Be sure to sign off on the [DCO](https://github.com/probot/dco#how-it-works) -+ -+## Steps to Contribute -+ -+Should you wish to work on an issue, please claim it first by commenting on the GitHub issue that you want to work on it. This is to prevent duplicated efforts from contributors on the same issue. -+ -+Please check the [`help-wanted`](https://github.com/prometheus/procfs/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) label to find issues that are good for getting started. If you have questions about one of the issues, with or without the tag, please comment on them and one of the maintainers will clarify it. For a quicker response, contact us over [IRC](https://prometheus.io/community). -+ -+For quickly compiling and testing your changes do: -+``` -+make test # Make sure all the tests pass before you commit and push :) -+``` -+ -+We use [`golangci-lint`](https://github.com/golangci/golangci-lint) for linting the code. If it reports an issue and you think that the warning needs to be disregarded or is a false-positive, you can add a special comment `//nolint:linter1[,linter2,...]` before the offending line. Use this sparingly though, fixing the code to comply with the linter's recommendation is in general the preferred course of action. -+ -+## Pull Request Checklist -+ -+* Branch from the master branch and, if needed, rebase to the current master branch before submitting your pull request. If it doesn't merge cleanly with master you may be asked to rebase your changes. -+ -+* Commits should be as small as possible, while ensuring that each commit is correct independently (i.e., each commit should compile and pass tests). -+ -+* If your patch is not getting reviewed or you need a specific person to review it, you can @-reply a reviewer asking for a review in the pull request or a comment, or you can ask for a review on IRC channel [#prometheus](https://webchat.freenode.net/?channels=#prometheus) on irc.freenode.net (for the easiest start, [join via Riot](https://riot.im/app/#/room/#prometheus:matrix.org)). -+ -+* Add tests relevant to the fixed bug or new feature. -+ -+## Dependency management -+ -+The Prometheus project uses [Go modules](https://golang.org/cmd/go/#hdr-Modules__module_versions__and_more) to manage dependencies on external packages. This requires a working Go environment with version 1.12 or greater installed. -+ -+All dependencies are vendored in the `vendor/` directory. -+ -+To add or update a new dependency, use the `go get` command: -+ -+```bash -+# Pick the latest tagged release. -+go get example.com/some/module/pkg -+ -+# Pick a specific version. -+go get example.com/some/module/pkg@vX.Y.Z -+``` -+ -+Tidy up the `go.mod` and `go.sum` files and copy the new/updated dependency to the `vendor/` directory: -+ -+ -+```bash -+# The GO111MODULE variable can be omitted when the code isn't located in GOPATH. -+GO111MODULE=on go mod tidy -+ -+GO111MODULE=on go mod vendor -+``` -+ -+You have to commit the changes to `go.mod`, `go.sum` and the `vendor/` directory before submitting the pull request. -+ -+ -+## API Implementation Guidelines -+ -+### Naming and Documentation -+ -+Public functions and structs should normally be named according to the file(s) being read and parsed. For example, -+the `fs.BuddyInfo()` function reads the file `/proc/buddyinfo`. In addition, the godoc for each public function -+should contain the path to the file(s) being read and a URL of the linux kernel documentation describing the file(s). -+ -+### Reading vs. Parsing -+ -+Most functionality in this library consists of reading files and then parsing the text into structured data. In most -+cases reading and parsing should be separated into different functions/methods with a public `fs.Thing()` method and -+a private `parseThing(r Reader)` function. This provides a logical separation and allows parsing to be tested -+directly without the need to read from the filesystem. Using a `Reader` argument is preferred over other data types -+such as `string` or `*File` because it provides the most flexibility regarding the data source. When a set of files -+in a directory needs to be parsed, then a `path` string parameter to the parse function can be used instead. -+ -+### /proc and /sys filesystem I/O -+ -+The `proc` and `sys` filesystems are pseudo file systems and work a bit differently from standard disk I/O. -+Many of the files are changing continuously and the data being read can in some cases change between subsequent -+reads in the same file. Also, most of the files are relatively small (less than a few KBs), and system calls -+to the `stat` function will often return the wrong size. Therefore, for most files it's recommended to read the -+full file in a single operation using an internal utility function called `util.ReadFileNoStat`. -+This function is similar to `os.ReadFile`, but it avoids the system call to `stat` to get the current size of -+the file. -+ -+Note that parsing the file's contents can still be performed one line at a time. This is done by first reading -+the full file, and then using a scanner on the `[]byte` or `string` containing the data. -+ -+``` -+ data, err := util.ReadFileNoStat("/proc/cpuinfo") -+ if err != nil { -+ return err -+ } -+ reader := bytes.NewReader(data) -+ scanner := bufio.NewScanner(reader) -+``` -+ -+The `/sys` filesystem contains many very small files which contain only a single numeric or text value. These files -+can be read using an internal function called `util.SysReadFile` which is similar to `os.ReadFile` but does -+not bother to check the size of the file before reading. -+``` -+ data, err := util.SysReadFile("/sys/class/power_supply/BAT0/capacity") -+``` -+ -diff --git a/vendor/github.com/prometheus/procfs/LICENSE b/vendor/github.com/prometheus/procfs/LICENSE -new file mode 100755 -index 0000000..261eeb9 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/LICENSE -@@ -0,0 +1,201 @@ -+ Apache License -+ Version 2.0, January 2004 -+ http://www.apache.org/licenses/ -+ -+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -+ -+ 1. Definitions. -+ -+ "License" shall mean the terms and conditions for use, reproduction, -+ and distribution as defined by Sections 1 through 9 of this document. -+ -+ "Licensor" shall mean the copyright owner or entity authorized by -+ the copyright owner that is granting the License. -+ -+ "Legal Entity" shall mean the union of the acting entity and all -+ other entities that control, are controlled by, or are under common -+ control with that entity. For the purposes of this definition, -+ "control" means (i) the power, direct or indirect, to cause the -+ direction or management of such entity, whether by contract or -+ otherwise, or (ii) ownership of fifty percent (50%) or more of the -+ outstanding shares, or (iii) beneficial ownership of such entity. -+ -+ "You" (or "Your") shall mean an individual or Legal Entity -+ exercising permissions granted by this License. -+ -+ "Source" form shall mean the preferred form for making modifications, -+ including but not limited to software source code, documentation -+ source, and configuration files. -+ -+ "Object" form shall mean any form resulting from mechanical -+ transformation or translation of a Source form, including but -+ not limited to compiled object code, generated documentation, -+ and conversions to other media types. -+ -+ "Work" shall mean the work of authorship, whether in Source or -+ Object form, made available under the License, as indicated by a -+ copyright notice that is included in or attached to the work -+ (an example is provided in the Appendix below). -+ -+ "Derivative Works" shall mean any work, whether in Source or Object -+ form, that is based on (or derived from) the Work and for which the -+ editorial revisions, annotations, elaborations, or other modifications -+ represent, as a whole, an original work of authorship. For the purposes -+ of this License, Derivative Works shall not include works that remain -+ separable from, or merely link (or bind by name) to the interfaces of, -+ the Work and Derivative Works thereof. -+ -+ "Contribution" shall mean any work of authorship, including -+ the original version of the Work and any modifications or additions -+ to that Work or Derivative Works thereof, that is intentionally -+ submitted to Licensor for inclusion in the Work by the copyright owner -+ or by an individual or Legal Entity authorized to submit on behalf of -+ the copyright owner. For the purposes of this definition, "submitted" -+ means any form of electronic, verbal, or written communication sent -+ to the Licensor or its representatives, including but not limited to -+ communication on electronic mailing lists, source code control systems, -+ and issue tracking systems that are managed by, or on behalf of, the -+ Licensor for the purpose of discussing and improving the Work, but -+ excluding communication that is conspicuously marked or otherwise -+ designated in writing by the copyright owner as "Not a Contribution." -+ -+ "Contributor" shall mean Licensor and any individual or Legal Entity -+ on behalf of whom a Contribution has been received by Licensor and -+ subsequently incorporated within the Work. -+ -+ 2. Grant of Copyright License. Subject to the terms and conditions of -+ this License, each Contributor hereby grants to You a perpetual, -+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable -+ copyright license to reproduce, prepare Derivative Works of, -+ publicly display, publicly perform, sublicense, and distribute the -+ Work and such Derivative Works in Source or Object form. -+ -+ 3. Grant of Patent License. Subject to the terms and conditions of -+ this License, each Contributor hereby grants to You a perpetual, -+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable -+ (except as stated in this section) patent license to make, have made, -+ use, offer to sell, sell, import, and otherwise transfer the Work, -+ where such license applies only to those patent claims licensable -+ by such Contributor that are necessarily infringed by their -+ Contribution(s) alone or by combination of their Contribution(s) -+ with the Work to which such Contribution(s) was submitted. If You -+ institute patent litigation against any entity (including a -+ cross-claim or counterclaim in a lawsuit) alleging that the Work -+ or a Contribution incorporated within the Work constitutes direct -+ or contributory patent infringement, then any patent licenses -+ granted to You under this License for that Work shall terminate -+ as of the date such litigation is filed. -+ -+ 4. Redistribution. You may reproduce and distribute copies of the -+ Work or Derivative Works thereof in any medium, with or without -+ modifications, and in Source or Object form, provided that You -+ meet the following conditions: -+ -+ (a) You must give any other recipients of the Work or -+ Derivative Works a copy of this License; and -+ -+ (b) You must cause any modified files to carry prominent notices -+ stating that You changed the files; and -+ -+ (c) You must retain, in the Source form of any Derivative Works -+ that You distribute, all copyright, patent, trademark, and -+ attribution notices from the Source form of the Work, -+ excluding those notices that do not pertain to any part of -+ the Derivative Works; and -+ -+ (d) If the Work includes a "NOTICE" text file as part of its -+ distribution, then any Derivative Works that You distribute must -+ include a readable copy of the attribution notices contained -+ within such NOTICE file, excluding those notices that do not -+ pertain to any part of the Derivative Works, in at least one -+ of the following places: within a NOTICE text file distributed -+ as part of the Derivative Works; within the Source form or -+ documentation, if provided along with the Derivative Works; or, -+ within a display generated by the Derivative Works, if and -+ wherever such third-party notices normally appear. The contents -+ of the NOTICE file are for informational purposes only and -+ do not modify the License. You may add Your own attribution -+ notices within Derivative Works that You distribute, alongside -+ or as an addendum to the NOTICE text from the Work, provided -+ that such additional attribution notices cannot be construed -+ as modifying the License. -+ -+ You may add Your own copyright statement to Your modifications and -+ may provide additional or different license terms and conditions -+ for use, reproduction, or distribution of Your modifications, or -+ for any such Derivative Works as a whole, provided Your use, -+ reproduction, and distribution of the Work otherwise complies with -+ the conditions stated in this License. -+ -+ 5. Submission of Contributions. Unless You explicitly state otherwise, -+ any Contribution intentionally submitted for inclusion in the Work -+ by You to the Licensor shall be under the terms and conditions of -+ this License, without any additional terms or conditions. -+ Notwithstanding the above, nothing herein shall supersede or modify -+ the terms of any separate license agreement you may have executed -+ with Licensor regarding such Contributions. -+ -+ 6. Trademarks. This License does not grant permission to use the trade -+ names, trademarks, service marks, or product names of the Licensor, -+ except as required for reasonable and customary use in describing the -+ origin of the Work and reproducing the content of the NOTICE file. -+ -+ 7. Disclaimer of Warranty. Unless required by applicable law or -+ agreed to in writing, Licensor provides the Work (and each -+ Contributor provides its Contributions) on an "AS IS" BASIS, -+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -+ implied, including, without limitation, any warranties or conditions -+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A -+ PARTICULAR PURPOSE. You are solely responsible for determining the -+ appropriateness of using or redistributing the Work and assume any -+ risks associated with Your exercise of permissions under this License. -+ -+ 8. Limitation of Liability. In no event and under no legal theory, -+ whether in tort (including negligence), contract, or otherwise, -+ unless required by applicable law (such as deliberate and grossly -+ negligent acts) or agreed to in writing, shall any Contributor be -+ liable to You for damages, including any direct, indirect, special, -+ incidental, or consequential damages of any character arising as a -+ result of this License or out of the use or inability to use the -+ Work (including but not limited to damages for loss of goodwill, -+ work stoppage, computer failure or malfunction, or any and all -+ other commercial damages or losses), even if such Contributor -+ has been advised of the possibility of such damages. -+ -+ 9. Accepting Warranty or Additional Liability. While redistributing -+ the Work or Derivative Works thereof, You may choose to offer, -+ and charge a fee for, acceptance of support, warranty, indemnity, -+ or other liability obligations and/or rights consistent with this -+ License. However, in accepting such obligations, You may act only -+ on Your own behalf and on Your sole responsibility, not on behalf -+ of any other Contributor, and only if You agree to indemnify, -+ defend, and hold each Contributor harmless for any liability -+ incurred by, or claims asserted against, such Contributor by reason -+ of your accepting any such warranty or additional liability. -+ -+ END OF TERMS AND CONDITIONS -+ -+ APPENDIX: How to apply the Apache License to your work. -+ -+ To apply the Apache License to your work, attach the following -+ boilerplate notice, with the fields enclosed by brackets "[]" -+ replaced with your own identifying information. (Don't include -+ the brackets!) The text should be enclosed in the appropriate -+ comment syntax for the file format. We also recommend that a -+ file or class name and description of purpose be included on the -+ same "printed page" as the copyright notice for easier -+ identification within third-party archives. -+ -+ Copyright [yyyy] [name of copyright owner] -+ -+ 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. -diff --git a/vendor/github.com/prometheus/procfs/MAINTAINERS.md b/vendor/github.com/prometheus/procfs/MAINTAINERS.md -new file mode 100755 -index 0000000..56ba67d ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/MAINTAINERS.md -@@ -0,0 +1,2 @@ -+* Johannes 'fish' Ziemke @discordianfish -+* Paul Gier @pgier -diff --git a/vendor/github.com/prometheus/procfs/Makefile b/vendor/github.com/prometheus/procfs/Makefile -new file mode 100755 -index 0000000..7edfe4d ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/Makefile -@@ -0,0 +1,31 @@ -+# Copyright 2018 The Prometheus 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. -+ -+include Makefile.common -+ -+%/.unpacked: %.ttar -+ @echo ">> extracting fixtures $*" -+ ./ttar -C $(dir $*) -x -f $*.ttar -+ touch $@ -+ -+fixtures: testdata/fixtures/.unpacked -+ -+update_fixtures: -+ rm -vf testdata/fixtures/.unpacked -+ ./ttar -c -f testdata/fixtures.ttar -C testdata/ fixtures/ -+ -+.PHONY: build -+build: -+ -+.PHONY: test -+test: testdata/fixtures/.unpacked common-test -diff --git a/vendor/github.com/prometheus/procfs/Makefile.common b/vendor/github.com/prometheus/procfs/Makefile.common -new file mode 100755 -index 0000000..6c8e3e2 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/Makefile.common -@@ -0,0 +1,264 @@ -+# Copyright 2018 The Prometheus 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. -+ -+ -+# A common Makefile that includes rules to be reused in different prometheus projects. -+# !!! Open PRs only against the prometheus/prometheus/Makefile.common repository! -+ -+# Example usage : -+# Create the main Makefile in the root project directory. -+# include Makefile.common -+# customTarget: -+# @echo ">> Running customTarget" -+# -+ -+# Ensure GOBIN is not set during build so that promu is installed to the correct path -+unexport GOBIN -+ -+GO ?= go -+GOFMT ?= $(GO)fmt -+FIRST_GOPATH := $(firstword $(subst :, ,$(shell $(GO) env GOPATH))) -+GOOPTS ?= -+GOHOSTOS ?= $(shell $(GO) env GOHOSTOS) -+GOHOSTARCH ?= $(shell $(GO) env GOHOSTARCH) -+ -+GO_VERSION ?= $(shell $(GO) version) -+GO_VERSION_NUMBER ?= $(word 3, $(GO_VERSION)) -+PRE_GO_111 ?= $(shell echo $(GO_VERSION_NUMBER) | grep -E 'go1\.(10|[0-9])\.') -+ -+PROMU := $(FIRST_GOPATH)/bin/promu -+pkgs = ./... -+ -+ifeq (arm, $(GOHOSTARCH)) -+ GOHOSTARM ?= $(shell GOARM= $(GO) env GOARM) -+ GO_BUILD_PLATFORM ?= $(GOHOSTOS)-$(GOHOSTARCH)v$(GOHOSTARM) -+else -+ GO_BUILD_PLATFORM ?= $(GOHOSTOS)-$(GOHOSTARCH) -+endif -+ -+GOTEST := $(GO) test -+GOTEST_DIR := -+ifneq ($(CIRCLE_JOB),) -+ifneq ($(shell which gotestsum),) -+ GOTEST_DIR := test-results -+ GOTEST := gotestsum --junitfile $(GOTEST_DIR)/unit-tests.xml -- -+endif -+endif -+ -+PROMU_VERSION ?= 0.13.0 -+PROMU_URL := https://github.com/prometheus/promu/releases/download/v$(PROMU_VERSION)/promu-$(PROMU_VERSION).$(GO_BUILD_PLATFORM).tar.gz -+ -+GOLANGCI_LINT := -+GOLANGCI_LINT_OPTS ?= -+GOLANGCI_LINT_VERSION ?= v1.45.2 -+# golangci-lint only supports linux, darwin and windows platforms on i386/amd64. -+# windows isn't included here because of the path separator being different. -+ifeq ($(GOHOSTOS),$(filter $(GOHOSTOS),linux darwin)) -+ ifeq ($(GOHOSTARCH),$(filter $(GOHOSTARCH),amd64 i386)) -+ # If we're in CI and there is an Actions file, that means the linter -+ # is being run in Actions, so we don't need to run it here. -+ ifeq (,$(CIRCLE_JOB)) -+ GOLANGCI_LINT := $(FIRST_GOPATH)/bin/golangci-lint -+ else ifeq (,$(wildcard .github/workflows/golangci-lint.yml)) -+ GOLANGCI_LINT := $(FIRST_GOPATH)/bin/golangci-lint -+ endif -+ endif -+endif -+ -+PREFIX ?= $(shell pwd) -+BIN_DIR ?= $(shell pwd) -+DOCKER_IMAGE_TAG ?= $(subst /,-,$(shell git rev-parse --abbrev-ref HEAD)) -+DOCKERFILE_PATH ?= ./Dockerfile -+DOCKERBUILD_CONTEXT ?= ./ -+DOCKER_REPO ?= prom -+ -+DOCKER_ARCHS ?= amd64 -+ -+BUILD_DOCKER_ARCHS = $(addprefix common-docker-,$(DOCKER_ARCHS)) -+PUBLISH_DOCKER_ARCHS = $(addprefix common-docker-publish-,$(DOCKER_ARCHS)) -+TAG_DOCKER_ARCHS = $(addprefix common-docker-tag-latest-,$(DOCKER_ARCHS)) -+ -+ifeq ($(GOHOSTARCH),amd64) -+ ifeq ($(GOHOSTOS),$(filter $(GOHOSTOS),linux freebsd darwin windows)) -+ # Only supported on amd64 -+ test-flags := -race -+ endif -+endif -+ -+# This rule is used to forward a target like "build" to "common-build". This -+# allows a new "build" target to be defined in a Makefile which includes this -+# one and override "common-build" without override warnings. -+%: common-% ; -+ -+.PHONY: common-all -+common-all: precheck style check_license lint yamllint unused build test -+ -+.PHONY: common-style -+common-style: -+ @echo ">> checking code style" -+ @fmtRes=$$($(GOFMT) -d $$(find . -path ./vendor -prune -o -name '*.go' -print)); \ -+ if [ -n "$${fmtRes}" ]; then \ -+ echo "gofmt checking failed!"; echo "$${fmtRes}"; echo; \ -+ echo "Please ensure you are using $$($(GO) version) for formatting code."; \ -+ exit 1; \ -+ fi -+ -+.PHONY: common-check_license -+common-check_license: -+ @echo ">> checking license header" -+ @licRes=$$(for file in $$(find . -type f -iname '*.go' ! -path './vendor/*') ; do \ -+ awk 'NR<=3' $$file | grep -Eq "(Copyright|generated|GENERATED)" || echo $$file; \ -+ done); \ -+ if [ -n "$${licRes}" ]; then \ -+ echo "license header checking failed:"; echo "$${licRes}"; \ -+ exit 1; \ -+ fi -+ -+.PHONY: common-deps -+common-deps: -+ @echo ">> getting dependencies" -+ $(GO) mod download -+ -+.PHONY: update-go-deps -+update-go-deps: -+ @echo ">> updating Go dependencies" -+ @for m in $$($(GO) list -mod=readonly -m -f '{{ if and (not .Indirect) (not .Main)}}{{.Path}}{{end}}' all); do \ -+ $(GO) get -d $$m; \ -+ done -+ $(GO) mod tidy -+ -+.PHONY: common-test-short -+common-test-short: $(GOTEST_DIR) -+ @echo ">> running short tests" -+ $(GOTEST) -short $(GOOPTS) $(pkgs) -+ -+.PHONY: common-test -+common-test: $(GOTEST_DIR) -+ @echo ">> running all tests" -+ $(GOTEST) $(test-flags) $(GOOPTS) $(pkgs) -+ -+$(GOTEST_DIR): -+ @mkdir -p $@ -+ -+.PHONY: common-format -+common-format: -+ @echo ">> formatting code" -+ $(GO) fmt $(pkgs) -+ -+.PHONY: common-vet -+common-vet: -+ @echo ">> vetting code" -+ $(GO) vet $(GOOPTS) $(pkgs) -+ -+.PHONY: common-lint -+common-lint: $(GOLANGCI_LINT) -+ifdef GOLANGCI_LINT -+ @echo ">> running golangci-lint" -+# 'go list' needs to be executed before staticcheck to prepopulate the modules cache. -+# Otherwise staticcheck might fail randomly for some reason not yet explained. -+ $(GO) list -e -compiled -test=true -export=false -deps=true -find=false -tags= -- ./... > /dev/null -+ $(GOLANGCI_LINT) run $(GOLANGCI_LINT_OPTS) $(pkgs) -+endif -+ -+.PHONY: common-yamllint -+common-yamllint: -+ @echo ">> running yamllint on all YAML files in the repository" -+ifeq (, $(shell which yamllint)) -+ @echo "yamllint not installed so skipping" -+else -+ yamllint . -+endif -+ -+# For backward-compatibility. -+.PHONY: common-staticcheck -+common-staticcheck: lint -+ -+.PHONY: common-unused -+common-unused: -+ @echo ">> running check for unused/missing packages in go.mod" -+ $(GO) mod tidy -+ @git diff --exit-code -- go.sum go.mod -+ -+.PHONY: common-build -+common-build: promu -+ @echo ">> building binaries" -+ $(PROMU) build --prefix $(PREFIX) $(PROMU_BINARIES) -+ -+.PHONY: common-tarball -+common-tarball: promu -+ @echo ">> building release tarball" -+ $(PROMU) tarball --prefix $(PREFIX) $(BIN_DIR) -+ -+.PHONY: common-docker $(BUILD_DOCKER_ARCHS) -+common-docker: $(BUILD_DOCKER_ARCHS) -+$(BUILD_DOCKER_ARCHS): common-docker-%: -+ docker build -t "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(DOCKER_IMAGE_TAG)" \ -+ -f $(DOCKERFILE_PATH) \ -+ --build-arg ARCH="$*" \ -+ --build-arg OS="linux" \ -+ $(DOCKERBUILD_CONTEXT) -+ -+.PHONY: common-docker-publish $(PUBLISH_DOCKER_ARCHS) -+common-docker-publish: $(PUBLISH_DOCKER_ARCHS) -+$(PUBLISH_DOCKER_ARCHS): common-docker-publish-%: -+ docker push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(DOCKER_IMAGE_TAG)" -+ -+DOCKER_MAJOR_VERSION_TAG = $(firstword $(subst ., ,$(shell cat VERSION))) -+.PHONY: common-docker-tag-latest $(TAG_DOCKER_ARCHS) -+common-docker-tag-latest: $(TAG_DOCKER_ARCHS) -+$(TAG_DOCKER_ARCHS): common-docker-tag-latest-%: -+ docker tag "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(DOCKER_IMAGE_TAG)" "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:latest" -+ docker tag "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(DOCKER_IMAGE_TAG)" "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:v$(DOCKER_MAJOR_VERSION_TAG)" -+ -+.PHONY: common-docker-manifest -+common-docker-manifest: -+ DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(DOCKER_IMAGE_TAG)" $(foreach ARCH,$(DOCKER_ARCHS),$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$(ARCH):$(DOCKER_IMAGE_TAG)) -+ DOCKER_CLI_EXPERIMENTAL=enabled docker manifest push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(DOCKER_IMAGE_TAG)" -+ -+.PHONY: promu -+promu: $(PROMU) -+ -+$(PROMU): -+ $(eval PROMU_TMP := $(shell mktemp -d)) -+ curl -s -L $(PROMU_URL) | tar -xvzf - -C $(PROMU_TMP) -+ mkdir -p $(FIRST_GOPATH)/bin -+ cp $(PROMU_TMP)/promu-$(PROMU_VERSION).$(GO_BUILD_PLATFORM)/promu $(FIRST_GOPATH)/bin/promu -+ rm -r $(PROMU_TMP) -+ -+.PHONY: proto -+proto: -+ @echo ">> generating code from proto files" -+ @./scripts/genproto.sh -+ -+ifdef GOLANGCI_LINT -+$(GOLANGCI_LINT): -+ mkdir -p $(FIRST_GOPATH)/bin -+ curl -sfL https://raw.githubusercontent.com/golangci/golangci-lint/$(GOLANGCI_LINT_VERSION)/install.sh \ -+ | sed -e '/install -d/d' \ -+ | sh -s -- -b $(FIRST_GOPATH)/bin $(GOLANGCI_LINT_VERSION) -+endif -+ -+.PHONY: precheck -+precheck:: -+ -+define PRECHECK_COMMAND_template = -+precheck:: $(1)_precheck -+ -+PRECHECK_COMMAND_$(1) ?= $(1) $$(strip $$(PRECHECK_OPTIONS_$(1))) -+.PHONY: $(1)_precheck -+$(1)_precheck: -+ @if ! $$(PRECHECK_COMMAND_$(1)) 1>/dev/null 2>&1; then \ -+ echo "Execution of '$$(PRECHECK_COMMAND_$(1))' command failed. Is $(1) installed?"; \ -+ exit 1; \ -+ fi -+endef -diff --git a/vendor/github.com/prometheus/procfs/NOTICE b/vendor/github.com/prometheus/procfs/NOTICE -new file mode 100755 -index 0000000..53c5e9a ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/NOTICE -@@ -0,0 +1,7 @@ -+procfs provides functions to retrieve system, kernel and process -+metrics from the pseudo-filesystem proc. -+ -+Copyright 2014-2015 The Prometheus Authors -+ -+This product includes software developed at -+SoundCloud Ltd. (http://soundcloud.com/). -diff --git a/vendor/github.com/prometheus/procfs/README.md b/vendor/github.com/prometheus/procfs/README.md -new file mode 100755 -index 0000000..43c3773 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/README.md -@@ -0,0 +1,61 @@ -+# procfs -+ -+This package provides functions to retrieve system, kernel, and process -+metrics from the pseudo-filesystems /proc and /sys. -+ -+*WARNING*: This package is a work in progress. Its API may still break in -+backwards-incompatible ways without warnings. Use it at your own risk. -+ -+[![Go Reference](https://pkg.go.dev/badge/github.com/prometheus/procfs.svg)](https://pkg.go.dev/github.com/prometheus/procfs) -+[![CircleCI](https://circleci.com/gh/prometheus/procfs/tree/master.svg?style=svg)](https://circleci.com/gh/prometheus/procfs/tree/master) -+[![Go Report Card](https://goreportcard.com/badge/github.com/prometheus/procfs)](https://goreportcard.com/report/github.com/prometheus/procfs) -+ -+## Usage -+ -+The procfs library is organized by packages based on whether the gathered data is coming from -+/proc, /sys, or both. Each package contains an `FS` type which represents the path to either /proc, -+/sys, or both. For example, cpu statistics are gathered from -+`/proc/stat` and are available via the root procfs package. First, the proc filesystem mount -+point is initialized, and then the stat information is read. -+ -+```go -+fs, err := procfs.NewFS("/proc") -+stats, err := fs.Stat() -+``` -+ -+Some sub-packages such as `blockdevice`, require access to both the proc and sys filesystems. -+ -+```go -+ fs, err := blockdevice.NewFS("/proc", "/sys") -+ stats, err := fs.ProcDiskstats() -+``` -+ -+## Package Organization -+ -+The packages in this project are organized according to (1) whether the data comes from the `/proc` or -+`/sys` filesystem and (2) the type of information being retrieved. For example, most process information -+can be gathered from the functions in the root `procfs` package. Information about block devices such as disk drives -+is available in the `blockdevices` sub-package. -+ -+## Building and Testing -+ -+The procfs library is intended to be built as part of another application, so there are no distributable binaries. -+However, most of the API includes unit tests which can be run with `make test`. -+ -+### Updating Test Fixtures -+ -+The procfs library includes a set of test fixtures which include many example files from -+the `/proc` and `/sys` filesystems. These fixtures are included as a [ttar](https://github.com/ideaship/ttar) file -+which is extracted automatically during testing. To add/update the test fixtures, first -+ensure the `fixtures` directory is up to date by removing the existing directory and then -+extracting the ttar file using `make fixtures/.unpacked` or just `make test`. -+ -+```bash -+rm -rf fixtures -+make test -+``` -+ -+Next, make the required changes to the extracted files in the `fixtures` directory. When -+the changes are complete, run `make update_fixtures` to create a new `fixtures.ttar` file -+based on the updated `fixtures` directory. And finally, verify the changes using -+`git diff fixtures.ttar`. -diff --git a/vendor/github.com/prometheus/procfs/SECURITY.md b/vendor/github.com/prometheus/procfs/SECURITY.md -new file mode 100755 -index 0000000..fed02d8 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/SECURITY.md -@@ -0,0 +1,6 @@ -+# Reporting a security issue -+ -+The Prometheus security policy, including how to report vulnerabilities, can be -+found here: -+ -+ -diff --git a/vendor/github.com/prometheus/procfs/arp.go b/vendor/github.com/prometheus/procfs/arp.go -new file mode 100755 -index 0000000..68f36e8 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/arp.go -@@ -0,0 +1,116 @@ -+// Copyright 2019 The Prometheus 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 procfs -+ -+import ( -+ "fmt" -+ "net" -+ "os" -+ "strconv" -+ "strings" -+) -+ -+// Learned from include/uapi/linux/if_arp.h. -+const ( -+ // completed entry (ha valid). -+ ATFComplete = 0x02 -+ // permanent entry. -+ ATFPermanent = 0x04 -+ // Publish entry. -+ ATFPublish = 0x08 -+ // Has requested trailers. -+ ATFUseTrailers = 0x10 -+ // Obsoleted: Want to use a netmask (only for proxy entries). -+ ATFNetmask = 0x20 -+ // Don't answer this addresses. -+ ATFDontPublish = 0x40 -+) -+ -+// ARPEntry contains a single row of the columnar data represented in -+// /proc/net/arp. -+type ARPEntry struct { -+ // IP address -+ IPAddr net.IP -+ // MAC address -+ HWAddr net.HardwareAddr -+ // Name of the device -+ Device string -+ // Flags -+ Flags byte -+} -+ -+// GatherARPEntries retrieves all the ARP entries, parse the relevant columns, -+// and then return a slice of ARPEntry's. -+func (fs FS) GatherARPEntries() ([]ARPEntry, error) { -+ data, err := os.ReadFile(fs.proc.Path("net/arp")) -+ if err != nil { -+ return nil, fmt.Errorf("error reading arp %q: %w", fs.proc.Path("net/arp"), err) -+ } -+ -+ return parseARPEntries(data) -+} -+ -+func parseARPEntries(data []byte) ([]ARPEntry, error) { -+ lines := strings.Split(string(data), "\n") -+ entries := make([]ARPEntry, 0) -+ var err error -+ const ( -+ expectedDataWidth = 6 -+ expectedHeaderWidth = 9 -+ ) -+ for _, line := range lines { -+ columns := strings.Fields(line) -+ width := len(columns) -+ -+ if width == expectedHeaderWidth || width == 0 { -+ continue -+ } else if width == expectedDataWidth { -+ entry, err := parseARPEntry(columns) -+ if err != nil { -+ return []ARPEntry{}, fmt.Errorf("failed to parse ARP entry: %w", err) -+ } -+ entries = append(entries, entry) -+ } else { -+ return []ARPEntry{}, fmt.Errorf("%d columns were detected, but %d were expected", width, expectedDataWidth) -+ } -+ -+ } -+ -+ return entries, err -+} -+ -+func parseARPEntry(columns []string) (ARPEntry, error) { -+ entry := ARPEntry{Device: columns[5]} -+ ip := net.ParseIP(columns[0]) -+ entry.IPAddr = ip -+ -+ if mac, err := net.ParseMAC(columns[3]); err == nil { -+ entry.HWAddr = mac -+ } else { -+ return ARPEntry{}, err -+ } -+ -+ if flags, err := strconv.ParseUint(columns[2], 0, 8); err == nil { -+ entry.Flags = byte(flags) -+ } else { -+ return ARPEntry{}, err -+ } -+ -+ return entry, nil -+} -+ -+// IsComplete returns true if ARP entry is marked with complete flag. -+func (entry *ARPEntry) IsComplete() bool { -+ return entry.Flags&ATFComplete != 0 -+} -diff --git a/vendor/github.com/prometheus/procfs/buddyinfo.go b/vendor/github.com/prometheus/procfs/buddyinfo.go -new file mode 100755 -index 0000000..f5b7939 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/buddyinfo.go -@@ -0,0 +1,85 @@ -+// Copyright 2017 The Prometheus 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 procfs -+ -+import ( -+ "bufio" -+ "fmt" -+ "io" -+ "os" -+ "strconv" -+ "strings" -+) -+ -+// A BuddyInfo is the details parsed from /proc/buddyinfo. -+// The data is comprised of an array of free fragments of each size. -+// The sizes are 2^n*PAGE_SIZE, where n is the array index. -+type BuddyInfo struct { -+ Node string -+ Zone string -+ Sizes []float64 -+} -+ -+// BuddyInfo reads the buddyinfo statistics from the specified `proc` filesystem. -+func (fs FS) BuddyInfo() ([]BuddyInfo, error) { -+ file, err := os.Open(fs.proc.Path("buddyinfo")) -+ if err != nil { -+ return nil, err -+ } -+ defer file.Close() -+ -+ return parseBuddyInfo(file) -+} -+ -+func parseBuddyInfo(r io.Reader) ([]BuddyInfo, error) { -+ var ( -+ buddyInfo = []BuddyInfo{} -+ scanner = bufio.NewScanner(r) -+ bucketCount = -1 -+ ) -+ -+ for scanner.Scan() { -+ var err error -+ line := scanner.Text() -+ parts := strings.Fields(line) -+ -+ if len(parts) < 4 { -+ return nil, fmt.Errorf("invalid number of fields when parsing buddyinfo") -+ } -+ -+ node := strings.TrimRight(parts[1], ",") -+ zone := strings.TrimRight(parts[3], ",") -+ arraySize := len(parts[4:]) -+ -+ if bucketCount == -1 { -+ bucketCount = arraySize -+ } else { -+ if bucketCount != arraySize { -+ return nil, fmt.Errorf("mismatch in number of buddyinfo buckets, previous count %d, new count %d", bucketCount, arraySize) -+ } -+ } -+ -+ sizes := make([]float64, arraySize) -+ for i := 0; i < arraySize; i++ { -+ sizes[i], err = strconv.ParseFloat(parts[i+4], 64) -+ if err != nil { -+ return nil, fmt.Errorf("invalid value in buddyinfo: %w", err) -+ } -+ } -+ -+ buddyInfo = append(buddyInfo, BuddyInfo{node, zone, sizes}) -+ } -+ -+ return buddyInfo, scanner.Err() -+} -diff --git a/vendor/github.com/prometheus/procfs/cmdline.go b/vendor/github.com/prometheus/procfs/cmdline.go -new file mode 100755 -index 0000000..bf4f3b4 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/cmdline.go -@@ -0,0 +1,30 @@ -+// Copyright 2021 The Prometheus 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 procfs -+ -+import ( -+ "strings" -+ -+ "github.com/prometheus/procfs/internal/util" -+) -+ -+// CmdLine returns the command line of the kernel. -+func (fs FS) CmdLine() ([]string, error) { -+ data, err := util.ReadFileNoStat(fs.proc.Path("cmdline")) -+ if err != nil { -+ return nil, err -+ } -+ -+ return strings.Fields(string(data)), nil -+} -diff --git a/vendor/github.com/prometheus/procfs/cpuinfo.go b/vendor/github.com/prometheus/procfs/cpuinfo.go -new file mode 100755 -index 0000000..ff6b927 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/cpuinfo.go -@@ -0,0 +1,482 @@ -+// Copyright 2019 The Prometheus 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:build linux -+// +build linux -+ -+package procfs -+ -+import ( -+ "bufio" -+ "bytes" -+ "errors" -+ "fmt" -+ "regexp" -+ "strconv" -+ "strings" -+ -+ "github.com/prometheus/procfs/internal/util" -+) -+ -+// CPUInfo contains general information about a system CPU found in /proc/cpuinfo. -+type CPUInfo struct { -+ Processor uint -+ VendorID string -+ CPUFamily string -+ Model string -+ ModelName string -+ Stepping string -+ Microcode string -+ CPUMHz float64 -+ CacheSize string -+ PhysicalID string -+ Siblings uint -+ CoreID string -+ CPUCores uint -+ APICID string -+ InitialAPICID string -+ FPU string -+ FPUException string -+ CPUIDLevel uint -+ WP string -+ Flags []string -+ Bugs []string -+ BogoMips float64 -+ CLFlushSize uint -+ CacheAlignment uint -+ AddressSizes string -+ PowerManagement string -+} -+ -+var ( -+ cpuinfoClockRegexp = regexp.MustCompile(`([\d.]+)`) -+ cpuinfoS390XProcessorRegexp = regexp.MustCompile(`^processor\s+(\d+):.*`) -+) -+ -+// CPUInfo returns information about current system CPUs. -+// See https://www.kernel.org/doc/Documentation/filesystems/proc.txt -+func (fs FS) CPUInfo() ([]CPUInfo, error) { -+ data, err := util.ReadFileNoStat(fs.proc.Path("cpuinfo")) -+ if err != nil { -+ return nil, err -+ } -+ return parseCPUInfo(data) -+} -+ -+func parseCPUInfoX86(info []byte) ([]CPUInfo, error) { -+ scanner := bufio.NewScanner(bytes.NewReader(info)) -+ -+ // find the first "processor" line -+ firstLine := firstNonEmptyLine(scanner) -+ if !strings.HasPrefix(firstLine, "processor") || !strings.Contains(firstLine, ":") { -+ return nil, fmt.Errorf("invalid cpuinfo file: %q", firstLine) -+ } -+ field := strings.SplitN(firstLine, ": ", 2) -+ v, err := strconv.ParseUint(field[1], 0, 32) -+ if err != nil { -+ return nil, err -+ } -+ firstcpu := CPUInfo{Processor: uint(v)} -+ cpuinfo := []CPUInfo{firstcpu} -+ i := 0 -+ -+ for scanner.Scan() { -+ line := scanner.Text() -+ if !strings.Contains(line, ":") { -+ continue -+ } -+ field := strings.SplitN(line, ": ", 2) -+ switch strings.TrimSpace(field[0]) { -+ case "processor": -+ cpuinfo = append(cpuinfo, CPUInfo{}) // start of the next processor -+ i++ -+ v, err := strconv.ParseUint(field[1], 0, 32) -+ if err != nil { -+ return nil, err -+ } -+ cpuinfo[i].Processor = uint(v) -+ case "vendor", "vendor_id": -+ cpuinfo[i].VendorID = field[1] -+ case "cpu family": -+ cpuinfo[i].CPUFamily = field[1] -+ case "model": -+ cpuinfo[i].Model = field[1] -+ case "model name": -+ cpuinfo[i].ModelName = field[1] -+ case "stepping": -+ cpuinfo[i].Stepping = field[1] -+ case "microcode": -+ cpuinfo[i].Microcode = field[1] -+ case "cpu MHz": -+ v, err := strconv.ParseFloat(field[1], 64) -+ if err != nil { -+ return nil, err -+ } -+ cpuinfo[i].CPUMHz = v -+ case "cache size": -+ cpuinfo[i].CacheSize = field[1] -+ case "physical id": -+ cpuinfo[i].PhysicalID = field[1] -+ case "siblings": -+ v, err := strconv.ParseUint(field[1], 0, 32) -+ if err != nil { -+ return nil, err -+ } -+ cpuinfo[i].Siblings = uint(v) -+ case "core id": -+ cpuinfo[i].CoreID = field[1] -+ case "cpu cores": -+ v, err := strconv.ParseUint(field[1], 0, 32) -+ if err != nil { -+ return nil, err -+ } -+ cpuinfo[i].CPUCores = uint(v) -+ case "apicid": -+ cpuinfo[i].APICID = field[1] -+ case "initial apicid": -+ cpuinfo[i].InitialAPICID = field[1] -+ case "fpu": -+ cpuinfo[i].FPU = field[1] -+ case "fpu_exception": -+ cpuinfo[i].FPUException = field[1] -+ case "cpuid level": -+ v, err := strconv.ParseUint(field[1], 0, 32) -+ if err != nil { -+ return nil, err -+ } -+ cpuinfo[i].CPUIDLevel = uint(v) -+ case "wp": -+ cpuinfo[i].WP = field[1] -+ case "flags": -+ cpuinfo[i].Flags = strings.Fields(field[1]) -+ case "bugs": -+ cpuinfo[i].Bugs = strings.Fields(field[1]) -+ case "bogomips": -+ v, err := strconv.ParseFloat(field[1], 64) -+ if err != nil { -+ return nil, err -+ } -+ cpuinfo[i].BogoMips = v -+ case "clflush size": -+ v, err := strconv.ParseUint(field[1], 0, 32) -+ if err != nil { -+ return nil, err -+ } -+ cpuinfo[i].CLFlushSize = uint(v) -+ case "cache_alignment": -+ v, err := strconv.ParseUint(field[1], 0, 32) -+ if err != nil { -+ return nil, err -+ } -+ cpuinfo[i].CacheAlignment = uint(v) -+ case "address sizes": -+ cpuinfo[i].AddressSizes = field[1] -+ case "power management": -+ cpuinfo[i].PowerManagement = field[1] -+ } -+ } -+ return cpuinfo, nil -+} -+ -+func parseCPUInfoARM(info []byte) ([]CPUInfo, error) { -+ scanner := bufio.NewScanner(bytes.NewReader(info)) -+ -+ firstLine := firstNonEmptyLine(scanner) -+ match, _ := regexp.MatchString("^[Pp]rocessor", firstLine) -+ if !match || !strings.Contains(firstLine, ":") { -+ return nil, fmt.Errorf("invalid cpuinfo file: %q", firstLine) -+ } -+ field := strings.SplitN(firstLine, ": ", 2) -+ cpuinfo := []CPUInfo{} -+ featuresLine := "" -+ commonCPUInfo := CPUInfo{} -+ i := 0 -+ if strings.TrimSpace(field[0]) == "Processor" { -+ commonCPUInfo = CPUInfo{ModelName: field[1]} -+ i = -1 -+ } else { -+ v, err := strconv.ParseUint(field[1], 0, 32) -+ if err != nil { -+ return nil, err -+ } -+ firstcpu := CPUInfo{Processor: uint(v)} -+ cpuinfo = []CPUInfo{firstcpu} -+ } -+ -+ for scanner.Scan() { -+ line := scanner.Text() -+ if !strings.Contains(line, ":") { -+ continue -+ } -+ field := strings.SplitN(line, ": ", 2) -+ switch strings.TrimSpace(field[0]) { -+ case "processor": -+ cpuinfo = append(cpuinfo, commonCPUInfo) // start of the next processor -+ i++ -+ v, err := strconv.ParseUint(field[1], 0, 32) -+ if err != nil { -+ return nil, err -+ } -+ cpuinfo[i].Processor = uint(v) -+ case "BogoMIPS": -+ if i == -1 { -+ cpuinfo = append(cpuinfo, commonCPUInfo) // There is only one processor -+ i++ -+ cpuinfo[i].Processor = 0 -+ } -+ v, err := strconv.ParseFloat(field[1], 64) -+ if err != nil { -+ return nil, err -+ } -+ cpuinfo[i].BogoMips = v -+ case "Features": -+ featuresLine = line -+ case "model name": -+ cpuinfo[i].ModelName = field[1] -+ } -+ } -+ fields := strings.SplitN(featuresLine, ": ", 2) -+ for i := range cpuinfo { -+ cpuinfo[i].Flags = strings.Fields(fields[1]) -+ } -+ return cpuinfo, nil -+ -+} -+ -+func parseCPUInfoS390X(info []byte) ([]CPUInfo, error) { -+ scanner := bufio.NewScanner(bytes.NewReader(info)) -+ -+ firstLine := firstNonEmptyLine(scanner) -+ if !strings.HasPrefix(firstLine, "vendor_id") || !strings.Contains(firstLine, ":") { -+ return nil, fmt.Errorf("invalid cpuinfo file: %q", firstLine) -+ } -+ field := strings.SplitN(firstLine, ": ", 2) -+ cpuinfo := []CPUInfo{} -+ commonCPUInfo := CPUInfo{VendorID: field[1]} -+ -+ for scanner.Scan() { -+ line := scanner.Text() -+ if !strings.Contains(line, ":") { -+ continue -+ } -+ field := strings.SplitN(line, ": ", 2) -+ switch strings.TrimSpace(field[0]) { -+ case "bogomips per cpu": -+ v, err := strconv.ParseFloat(field[1], 64) -+ if err != nil { -+ return nil, err -+ } -+ commonCPUInfo.BogoMips = v -+ case "features": -+ commonCPUInfo.Flags = strings.Fields(field[1]) -+ } -+ if strings.HasPrefix(line, "processor") { -+ match := cpuinfoS390XProcessorRegexp.FindStringSubmatch(line) -+ if len(match) < 2 { -+ return nil, fmt.Errorf("invalid cpuinfo file: %q", firstLine) -+ } -+ cpu := commonCPUInfo -+ v, err := strconv.ParseUint(match[1], 0, 32) -+ if err != nil { -+ return nil, err -+ } -+ cpu.Processor = uint(v) -+ cpuinfo = append(cpuinfo, cpu) -+ } -+ if strings.HasPrefix(line, "cpu number") { -+ break -+ } -+ } -+ -+ i := 0 -+ for scanner.Scan() { -+ line := scanner.Text() -+ if !strings.Contains(line, ":") { -+ continue -+ } -+ field := strings.SplitN(line, ": ", 2) -+ switch strings.TrimSpace(field[0]) { -+ case "cpu number": -+ i++ -+ case "cpu MHz dynamic": -+ clock := cpuinfoClockRegexp.FindString(strings.TrimSpace(field[1])) -+ v, err := strconv.ParseFloat(clock, 64) -+ if err != nil { -+ return nil, err -+ } -+ cpuinfo[i].CPUMHz = v -+ case "physical id": -+ cpuinfo[i].PhysicalID = field[1] -+ case "core id": -+ cpuinfo[i].CoreID = field[1] -+ case "cpu cores": -+ v, err := strconv.ParseUint(field[1], 0, 32) -+ if err != nil { -+ return nil, err -+ } -+ cpuinfo[i].CPUCores = uint(v) -+ case "siblings": -+ v, err := strconv.ParseUint(field[1], 0, 32) -+ if err != nil { -+ return nil, err -+ } -+ cpuinfo[i].Siblings = uint(v) -+ } -+ } -+ -+ return cpuinfo, nil -+} -+ -+func parseCPUInfoMips(info []byte) ([]CPUInfo, error) { -+ scanner := bufio.NewScanner(bytes.NewReader(info)) -+ -+ // find the first "processor" line -+ firstLine := firstNonEmptyLine(scanner) -+ if !strings.HasPrefix(firstLine, "system type") || !strings.Contains(firstLine, ":") { -+ return nil, fmt.Errorf("invalid cpuinfo file: %q", firstLine) -+ } -+ field := strings.SplitN(firstLine, ": ", 2) -+ cpuinfo := []CPUInfo{} -+ systemType := field[1] -+ -+ i := 0 -+ -+ for scanner.Scan() { -+ line := scanner.Text() -+ if !strings.Contains(line, ":") { -+ continue -+ } -+ field := strings.SplitN(line, ": ", 2) -+ switch strings.TrimSpace(field[0]) { -+ case "processor": -+ v, err := strconv.ParseUint(field[1], 0, 32) -+ if err != nil { -+ return nil, err -+ } -+ i = int(v) -+ cpuinfo = append(cpuinfo, CPUInfo{}) // start of the next processor -+ cpuinfo[i].Processor = uint(v) -+ cpuinfo[i].VendorID = systemType -+ case "cpu model": -+ cpuinfo[i].ModelName = field[1] -+ case "BogoMIPS": -+ v, err := strconv.ParseFloat(field[1], 64) -+ if err != nil { -+ return nil, err -+ } -+ cpuinfo[i].BogoMips = v -+ } -+ } -+ return cpuinfo, nil -+} -+ -+func parseCPUInfoPPC(info []byte) ([]CPUInfo, error) { -+ scanner := bufio.NewScanner(bytes.NewReader(info)) -+ -+ firstLine := firstNonEmptyLine(scanner) -+ if !strings.HasPrefix(firstLine, "processor") || !strings.Contains(firstLine, ":") { -+ return nil, fmt.Errorf("invalid cpuinfo file: %q", firstLine) -+ } -+ field := strings.SplitN(firstLine, ": ", 2) -+ v, err := strconv.ParseUint(field[1], 0, 32) -+ if err != nil { -+ return nil, err -+ } -+ firstcpu := CPUInfo{Processor: uint(v)} -+ cpuinfo := []CPUInfo{firstcpu} -+ i := 0 -+ -+ for scanner.Scan() { -+ line := scanner.Text() -+ if !strings.Contains(line, ":") { -+ continue -+ } -+ field := strings.SplitN(line, ": ", 2) -+ switch strings.TrimSpace(field[0]) { -+ case "processor": -+ cpuinfo = append(cpuinfo, CPUInfo{}) // start of the next processor -+ i++ -+ v, err := strconv.ParseUint(field[1], 0, 32) -+ if err != nil { -+ return nil, err -+ } -+ cpuinfo[i].Processor = uint(v) -+ case "cpu": -+ cpuinfo[i].VendorID = field[1] -+ case "clock": -+ clock := cpuinfoClockRegexp.FindString(strings.TrimSpace(field[1])) -+ v, err := strconv.ParseFloat(clock, 64) -+ if err != nil { -+ return nil, err -+ } -+ cpuinfo[i].CPUMHz = v -+ } -+ } -+ return cpuinfo, nil -+} -+ -+func parseCPUInfoRISCV(info []byte) ([]CPUInfo, error) { -+ scanner := bufio.NewScanner(bytes.NewReader(info)) -+ -+ firstLine := firstNonEmptyLine(scanner) -+ if !strings.HasPrefix(firstLine, "processor") || !strings.Contains(firstLine, ":") { -+ return nil, fmt.Errorf("invalid cpuinfo file: %q", firstLine) -+ } -+ field := strings.SplitN(firstLine, ": ", 2) -+ v, err := strconv.ParseUint(field[1], 0, 32) -+ if err != nil { -+ return nil, err -+ } -+ firstcpu := CPUInfo{Processor: uint(v)} -+ cpuinfo := []CPUInfo{firstcpu} -+ i := 0 -+ -+ for scanner.Scan() { -+ line := scanner.Text() -+ if !strings.Contains(line, ":") { -+ continue -+ } -+ field := strings.SplitN(line, ": ", 2) -+ switch strings.TrimSpace(field[0]) { -+ case "processor": -+ v, err := strconv.ParseUint(field[1], 0, 32) -+ if err != nil { -+ return nil, err -+ } -+ i = int(v) -+ cpuinfo = append(cpuinfo, CPUInfo{}) // start of the next processor -+ cpuinfo[i].Processor = uint(v) -+ case "hart": -+ cpuinfo[i].CoreID = field[1] -+ case "isa": -+ cpuinfo[i].ModelName = field[1] -+ } -+ } -+ return cpuinfo, nil -+} -+ -+func parseCPUInfoDummy(_ []byte) ([]CPUInfo, error) { // nolint:unused,deadcode -+ return nil, errors.New("not implemented") -+} -+ -+// firstNonEmptyLine advances the scanner to the first non-empty line -+// and returns the contents of that line. -+func firstNonEmptyLine(scanner *bufio.Scanner) string { -+ for scanner.Scan() { -+ line := scanner.Text() -+ if strings.TrimSpace(line) != "" { -+ return line -+ } -+ } -+ return "" -+} -diff --git a/vendor/github.com/prometheus/procfs/cpuinfo_armx.go b/vendor/github.com/prometheus/procfs/cpuinfo_armx.go -new file mode 100755 -index 0000000..64cfd53 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/cpuinfo_armx.go -@@ -0,0 +1,20 @@ -+// Copyright 2020 The Prometheus 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:build linux && (arm || arm64) -+// +build linux -+// +build arm arm64 -+ -+package procfs -+ -+var parseCPUInfo = parseCPUInfoARM -diff --git a/vendor/github.com/prometheus/procfs/cpuinfo_mipsx.go b/vendor/github.com/prometheus/procfs/cpuinfo_mipsx.go -new file mode 100755 -index 0000000..c11207f ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/cpuinfo_mipsx.go -@@ -0,0 +1,20 @@ -+// Copyright 2020 The Prometheus 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:build linux && (mips || mipsle || mips64 || mips64le) -+// +build linux -+// +build mips mipsle mips64 mips64le -+ -+package procfs -+ -+var parseCPUInfo = parseCPUInfoMips -diff --git a/vendor/github.com/prometheus/procfs/cpuinfo_others.go b/vendor/github.com/prometheus/procfs/cpuinfo_others.go -new file mode 100755 -index 0000000..ea41bf2 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/cpuinfo_others.go -@@ -0,0 +1,19 @@ -+// Copyright 2020 The Prometheus 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:build linux && !386 && !amd64 && !arm && !arm64 && !mips && !mips64 && !mips64le && !mipsle && !ppc64 && !ppc64le && !riscv64 && !s390x -+// +build linux,!386,!amd64,!arm,!arm64,!mips,!mips64,!mips64le,!mipsle,!ppc64,!ppc64le,!riscv64,!s390x -+ -+package procfs -+ -+var parseCPUInfo = parseCPUInfoDummy -diff --git a/vendor/github.com/prometheus/procfs/cpuinfo_ppcx.go b/vendor/github.com/prometheus/procfs/cpuinfo_ppcx.go -new file mode 100755 -index 0000000..003bc2a ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/cpuinfo_ppcx.go -@@ -0,0 +1,20 @@ -+// Copyright 2020 The Prometheus 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:build linux && (ppc64 || ppc64le) -+// +build linux -+// +build ppc64 ppc64le -+ -+package procfs -+ -+var parseCPUInfo = parseCPUInfoPPC -diff --git a/vendor/github.com/prometheus/procfs/cpuinfo_riscvx.go b/vendor/github.com/prometheus/procfs/cpuinfo_riscvx.go -new file mode 100755 -index 0000000..1c9b731 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/cpuinfo_riscvx.go -@@ -0,0 +1,20 @@ -+// Copyright 2020 The Prometheus 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:build linux && (riscv || riscv64) -+// +build linux -+// +build riscv riscv64 -+ -+package procfs -+ -+var parseCPUInfo = parseCPUInfoRISCV -diff --git a/vendor/github.com/prometheus/procfs/cpuinfo_s390x.go b/vendor/github.com/prometheus/procfs/cpuinfo_s390x.go -new file mode 100755 -index 0000000..fa3686b ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/cpuinfo_s390x.go -@@ -0,0 +1,19 @@ -+// Copyright 2020 The Prometheus 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:build linux -+// +build linux -+ -+package procfs -+ -+var parseCPUInfo = parseCPUInfoS390X -diff --git a/vendor/github.com/prometheus/procfs/cpuinfo_x86.go b/vendor/github.com/prometheus/procfs/cpuinfo_x86.go -new file mode 100755 -index 0000000..a0ef555 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/cpuinfo_x86.go -@@ -0,0 +1,20 @@ -+// Copyright 2020 The Prometheus 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:build linux && (386 || amd64) -+// +build linux -+// +build 386 amd64 -+ -+package procfs -+ -+var parseCPUInfo = parseCPUInfoX86 -diff --git a/vendor/github.com/prometheus/procfs/crypto.go b/vendor/github.com/prometheus/procfs/crypto.go -new file mode 100755 -index 0000000..5048ad1 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/crypto.go -@@ -0,0 +1,153 @@ -+// Copyright 2019 The Prometheus 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 procfs -+ -+import ( -+ "bufio" -+ "bytes" -+ "fmt" -+ "io" -+ "strings" -+ -+ "github.com/prometheus/procfs/internal/util" -+) -+ -+// Crypto holds info parsed from /proc/crypto. -+type Crypto struct { -+ Alignmask *uint64 -+ Async bool -+ Blocksize *uint64 -+ Chunksize *uint64 -+ Ctxsize *uint64 -+ Digestsize *uint64 -+ Driver string -+ Geniv string -+ Internal string -+ Ivsize *uint64 -+ Maxauthsize *uint64 -+ MaxKeysize *uint64 -+ MinKeysize *uint64 -+ Module string -+ Name string -+ Priority *int64 -+ Refcnt *int64 -+ Seedsize *uint64 -+ Selftest string -+ Type string -+ Walksize *uint64 -+} -+ -+// Crypto parses an crypto-file (/proc/crypto) and returns a slice of -+// structs containing the relevant info. More information available here: -+// https://kernel.readthedocs.io/en/sphinx-samples/crypto-API.html -+func (fs FS) Crypto() ([]Crypto, error) { -+ path := fs.proc.Path("crypto") -+ b, err := util.ReadFileNoStat(path) -+ if err != nil { -+ return nil, fmt.Errorf("error reading crypto %q: %w", path, err) -+ } -+ -+ crypto, err := parseCrypto(bytes.NewReader(b)) -+ if err != nil { -+ return nil, fmt.Errorf("error parsing crypto %q: %w", path, err) -+ } -+ -+ return crypto, nil -+} -+ -+// parseCrypto parses a /proc/crypto stream into Crypto elements. -+func parseCrypto(r io.Reader) ([]Crypto, error) { -+ var out []Crypto -+ -+ s := bufio.NewScanner(r) -+ for s.Scan() { -+ text := s.Text() -+ switch { -+ case strings.HasPrefix(text, "name"): -+ // Each crypto element begins with its name. -+ out = append(out, Crypto{}) -+ case text == "": -+ continue -+ } -+ -+ kv := strings.Split(text, ":") -+ if len(kv) != 2 { -+ return nil, fmt.Errorf("malformed crypto line: %q", text) -+ } -+ -+ k := strings.TrimSpace(kv[0]) -+ v := strings.TrimSpace(kv[1]) -+ -+ // Parse the key/value pair into the currently focused element. -+ c := &out[len(out)-1] -+ if err := c.parseKV(k, v); err != nil { -+ return nil, err -+ } -+ } -+ -+ if err := s.Err(); err != nil { -+ return nil, err -+ } -+ -+ return out, nil -+} -+ -+// parseKV parses a key/value pair into the appropriate field of c. -+func (c *Crypto) parseKV(k, v string) error { -+ vp := util.NewValueParser(v) -+ -+ switch k { -+ case "async": -+ // Interpret literal yes as true. -+ c.Async = v == "yes" -+ case "blocksize": -+ c.Blocksize = vp.PUInt64() -+ case "chunksize": -+ c.Chunksize = vp.PUInt64() -+ case "digestsize": -+ c.Digestsize = vp.PUInt64() -+ case "driver": -+ c.Driver = v -+ case "geniv": -+ c.Geniv = v -+ case "internal": -+ c.Internal = v -+ case "ivsize": -+ c.Ivsize = vp.PUInt64() -+ case "maxauthsize": -+ c.Maxauthsize = vp.PUInt64() -+ case "max keysize": -+ c.MaxKeysize = vp.PUInt64() -+ case "min keysize": -+ c.MinKeysize = vp.PUInt64() -+ case "module": -+ c.Module = v -+ case "name": -+ c.Name = v -+ case "priority": -+ c.Priority = vp.PInt64() -+ case "refcnt": -+ c.Refcnt = vp.PInt64() -+ case "seedsize": -+ c.Seedsize = vp.PUInt64() -+ case "selftest": -+ c.Selftest = v -+ case "type": -+ c.Type = v -+ case "walksize": -+ c.Walksize = vp.PUInt64() -+ } -+ -+ return vp.Err() -+} -diff --git a/vendor/github.com/prometheus/procfs/doc.go b/vendor/github.com/prometheus/procfs/doc.go -new file mode 100755 -index 0000000..d31a826 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/doc.go -@@ -0,0 +1,45 @@ -+// Copyright 2014 Prometheus Team -+// 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 procfs provides functions to retrieve system, kernel and process -+// metrics from the pseudo-filesystem proc. -+// -+// Example: -+// -+// package main -+// -+// import ( -+// "fmt" -+// "log" -+// -+// "github.com/prometheus/procfs" -+// ) -+// -+// func main() { -+// p, err := procfs.Self() -+// if err != nil { -+// log.Fatalf("could not get process: %s", err) -+// } -+// -+// stat, err := p.Stat() -+// if err != nil { -+// log.Fatalf("could not get process stat: %s", err) -+// } -+// -+// fmt.Printf("command: %s\n", stat.Comm) -+// fmt.Printf("cpu time: %fs\n", stat.CPUTime()) -+// fmt.Printf("vsize: %dB\n", stat.VirtualMemory()) -+// fmt.Printf("rss: %dB\n", stat.ResidentMemory()) -+// } -+// -+package procfs -diff --git a/vendor/github.com/prometheus/procfs/fs.go b/vendor/github.com/prometheus/procfs/fs.go -new file mode 100755 -index 0000000..0102ab0 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/fs.go -@@ -0,0 +1,43 @@ -+// Copyright 2018 The Prometheus 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 procfs -+ -+import ( -+ "github.com/prometheus/procfs/internal/fs" -+) -+ -+// FS represents the pseudo-filesystem sys, which provides an interface to -+// kernel data structures. -+type FS struct { -+ proc fs.FS -+} -+ -+// DefaultMountPoint is the common mount point of the proc filesystem. -+const DefaultMountPoint = fs.DefaultProcMountPoint -+ -+// NewDefaultFS returns a new proc FS mounted under the default proc mountPoint. -+// It will error if the mount point directory can't be read or is a file. -+func NewDefaultFS() (FS, error) { -+ return NewFS(DefaultMountPoint) -+} -+ -+// NewFS returns a new proc FS mounted under the given proc mountPoint. It will error -+// if the mount point directory can't be read or is a file. -+func NewFS(mountPoint string) (FS, error) { -+ fs, err := fs.NewFS(mountPoint) -+ if err != nil { -+ return FS{}, err -+ } -+ return FS{fs}, nil -+} -diff --git a/vendor/github.com/prometheus/procfs/fscache.go b/vendor/github.com/prometheus/procfs/fscache.go -new file mode 100755 -index 0000000..f8070e6 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/fscache.go -@@ -0,0 +1,422 @@ -+// Copyright 2019 The Prometheus 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 procfs -+ -+import ( -+ "bufio" -+ "bytes" -+ "fmt" -+ "io" -+ "strconv" -+ "strings" -+ -+ "github.com/prometheus/procfs/internal/util" -+) -+ -+// Fscacheinfo represents fscache statistics. -+type Fscacheinfo struct { -+ // Number of index cookies allocated -+ IndexCookiesAllocated uint64 -+ // data storage cookies allocated -+ DataStorageCookiesAllocated uint64 -+ // Number of special cookies allocated -+ SpecialCookiesAllocated uint64 -+ // Number of objects allocated -+ ObjectsAllocated uint64 -+ // Number of object allocation failures -+ ObjectAllocationsFailure uint64 -+ // Number of objects that reached the available state -+ ObjectsAvailable uint64 -+ // Number of objects that reached the dead state -+ ObjectsDead uint64 -+ // Number of objects that didn't have a coherency check -+ ObjectsWithoutCoherencyCheck uint64 -+ // Number of objects that passed a coherency check -+ ObjectsWithCoherencyCheck uint64 -+ // Number of objects that needed a coherency data update -+ ObjectsNeedCoherencyCheckUpdate uint64 -+ // Number of objects that were declared obsolete -+ ObjectsDeclaredObsolete uint64 -+ // Number of pages marked as being cached -+ PagesMarkedAsBeingCached uint64 -+ // Number of uncache page requests seen -+ UncachePagesRequestSeen uint64 -+ // Number of acquire cookie requests seen -+ AcquireCookiesRequestSeen uint64 -+ // Number of acq reqs given a NULL parent -+ AcquireRequestsWithNullParent uint64 -+ // Number of acq reqs rejected due to no cache available -+ AcquireRequestsRejectedNoCacheAvailable uint64 -+ // Number of acq reqs succeeded -+ AcquireRequestsSucceeded uint64 -+ // Number of acq reqs rejected due to error -+ AcquireRequestsRejectedDueToError uint64 -+ // Number of acq reqs failed on ENOMEM -+ AcquireRequestsFailedDueToEnomem uint64 -+ // Number of lookup calls made on cache backends -+ LookupsNumber uint64 -+ // Number of negative lookups made -+ LookupsNegative uint64 -+ // Number of positive lookups made -+ LookupsPositive uint64 -+ // Number of objects created by lookup -+ ObjectsCreatedByLookup uint64 -+ // Number of lookups timed out and requeued -+ LookupsTimedOutAndRequed uint64 -+ InvalidationsNumber uint64 -+ InvalidationsRunning uint64 -+ // Number of update cookie requests seen -+ UpdateCookieRequestSeen uint64 -+ // Number of upd reqs given a NULL parent -+ UpdateRequestsWithNullParent uint64 -+ // Number of upd reqs granted CPU time -+ UpdateRequestsRunning uint64 -+ // Number of relinquish cookie requests seen -+ RelinquishCookiesRequestSeen uint64 -+ // Number of rlq reqs given a NULL parent -+ RelinquishCookiesWithNullParent uint64 -+ // Number of rlq reqs waited on completion of creation -+ RelinquishRequestsWaitingCompleteCreation uint64 -+ // Relinqs rtr -+ RelinquishRetries uint64 -+ // Number of attribute changed requests seen -+ AttributeChangedRequestsSeen uint64 -+ // Number of attr changed requests queued -+ AttributeChangedRequestsQueued uint64 -+ // Number of attr changed rejected -ENOBUFS -+ AttributeChangedRejectDueToEnobufs uint64 -+ // Number of attr changed failed -ENOMEM -+ AttributeChangedFailedDueToEnomem uint64 -+ // Number of attr changed ops given CPU time -+ AttributeChangedOps uint64 -+ // Number of allocation requests seen -+ AllocationRequestsSeen uint64 -+ // Number of successful alloc reqs -+ AllocationOkRequests uint64 -+ // Number of alloc reqs that waited on lookup completion -+ AllocationWaitingOnLookup uint64 -+ // Number of alloc reqs rejected -ENOBUFS -+ AllocationsRejectedDueToEnobufs uint64 -+ // Number of alloc reqs aborted -ERESTARTSYS -+ AllocationsAbortedDueToErestartsys uint64 -+ // Number of alloc reqs submitted -+ AllocationOperationsSubmitted uint64 -+ // Number of alloc reqs waited for CPU time -+ AllocationsWaitedForCPU uint64 -+ // Number of alloc reqs aborted due to object death -+ AllocationsAbortedDueToObjectDeath uint64 -+ // Number of retrieval (read) requests seen -+ RetrievalsReadRequests uint64 -+ // Number of successful retr reqs -+ RetrievalsOk uint64 -+ // Number of retr reqs that waited on lookup completion -+ RetrievalsWaitingLookupCompletion uint64 -+ // Number of retr reqs returned -ENODATA -+ RetrievalsReturnedEnodata uint64 -+ // Number of retr reqs rejected -ENOBUFS -+ RetrievalsRejectedDueToEnobufs uint64 -+ // Number of retr reqs aborted -ERESTARTSYS -+ RetrievalsAbortedDueToErestartsys uint64 -+ // Number of retr reqs failed -ENOMEM -+ RetrievalsFailedDueToEnomem uint64 -+ // Number of retr reqs submitted -+ RetrievalsRequests uint64 -+ // Number of retr reqs waited for CPU time -+ RetrievalsWaitingCPU uint64 -+ // Number of retr reqs aborted due to object death -+ RetrievalsAbortedDueToObjectDeath uint64 -+ // Number of storage (write) requests seen -+ StoreWriteRequests uint64 -+ // Number of successful store reqs -+ StoreSuccessfulRequests uint64 -+ // Number of store reqs on a page already pending storage -+ StoreRequestsOnPendingStorage uint64 -+ // Number of store reqs rejected -ENOBUFS -+ StoreRequestsRejectedDueToEnobufs uint64 -+ // Number of store reqs failed -ENOMEM -+ StoreRequestsFailedDueToEnomem uint64 -+ // Number of store reqs submitted -+ StoreRequestsSubmitted uint64 -+ // Number of store reqs granted CPU time -+ StoreRequestsRunning uint64 -+ // Number of pages given store req processing time -+ StorePagesWithRequestsProcessing uint64 -+ // Number of store reqs deleted from tracking tree -+ StoreRequestsDeleted uint64 -+ // Number of store reqs over store limit -+ StoreRequestsOverStoreLimit uint64 -+ // Number of release reqs against pages with no pending store -+ ReleaseRequestsAgainstPagesWithNoPendingStorage uint64 -+ // Number of release reqs against pages stored by time lock granted -+ ReleaseRequestsAgainstPagesStoredByTimeLockGranted uint64 -+ // Number of release reqs ignored due to in-progress store -+ ReleaseRequestsIgnoredDueToInProgressStore uint64 -+ // Number of page stores cancelled due to release req -+ PageStoresCancelledByReleaseRequests uint64 -+ VmscanWaiting uint64 -+ // Number of times async ops added to pending queues -+ OpsPending uint64 -+ // Number of times async ops given CPU time -+ OpsRunning uint64 -+ // Number of times async ops queued for processing -+ OpsEnqueued uint64 -+ // Number of async ops cancelled -+ OpsCancelled uint64 -+ // Number of async ops rejected due to object lookup/create failure -+ OpsRejected uint64 -+ // Number of async ops initialised -+ OpsInitialised uint64 -+ // Number of async ops queued for deferred release -+ OpsDeferred uint64 -+ // Number of async ops released (should equal ini=N when idle) -+ OpsReleased uint64 -+ // Number of deferred-release async ops garbage collected -+ OpsGarbageCollected uint64 -+ // Number of in-progress alloc_object() cache ops -+ CacheopAllocationsinProgress uint64 -+ // Number of in-progress lookup_object() cache ops -+ CacheopLookupObjectInProgress uint64 -+ // Number of in-progress lookup_complete() cache ops -+ CacheopLookupCompleteInPorgress uint64 -+ // Number of in-progress grab_object() cache ops -+ CacheopGrabObjectInProgress uint64 -+ CacheopInvalidations uint64 -+ // Number of in-progress update_object() cache ops -+ CacheopUpdateObjectInProgress uint64 -+ // Number of in-progress drop_object() cache ops -+ CacheopDropObjectInProgress uint64 -+ // Number of in-progress put_object() cache ops -+ CacheopPutObjectInProgress uint64 -+ // Number of in-progress attr_changed() cache ops -+ CacheopAttributeChangeInProgress uint64 -+ // Number of in-progress sync_cache() cache ops -+ CacheopSyncCacheInProgress uint64 -+ // Number of in-progress read_or_alloc_page() cache ops -+ CacheopReadOrAllocPageInProgress uint64 -+ // Number of in-progress read_or_alloc_pages() cache ops -+ CacheopReadOrAllocPagesInProgress uint64 -+ // Number of in-progress allocate_page() cache ops -+ CacheopAllocatePageInProgress uint64 -+ // Number of in-progress allocate_pages() cache ops -+ CacheopAllocatePagesInProgress uint64 -+ // Number of in-progress write_page() cache ops -+ CacheopWritePagesInProgress uint64 -+ // Number of in-progress uncache_page() cache ops -+ CacheopUncachePagesInProgress uint64 -+ // Number of in-progress dissociate_pages() cache ops -+ CacheopDissociatePagesInProgress uint64 -+ // Number of object lookups/creations rejected due to lack of space -+ CacheevLookupsAndCreationsRejectedLackSpace uint64 -+ // Number of stale objects deleted -+ CacheevStaleObjectsDeleted uint64 -+ // Number of objects retired when relinquished -+ CacheevRetiredWhenReliquished uint64 -+ // Number of objects culled -+ CacheevObjectsCulled uint64 -+} -+ -+// Fscacheinfo returns information about current fscache statistics. -+// See https://www.kernel.org/doc/Documentation/filesystems/caching/fscache.txt -+func (fs FS) Fscacheinfo() (Fscacheinfo, error) { -+ b, err := util.ReadFileNoStat(fs.proc.Path("fs/fscache/stats")) -+ if err != nil { -+ return Fscacheinfo{}, err -+ } -+ -+ m, err := parseFscacheinfo(bytes.NewReader(b)) -+ if err != nil { -+ return Fscacheinfo{}, fmt.Errorf("failed to parse Fscacheinfo: %w", err) -+ } -+ -+ return *m, nil -+} -+ -+func setFSCacheFields(fields []string, setFields ...*uint64) error { -+ var err error -+ if len(fields) < len(setFields) { -+ return fmt.Errorf("Insufficient number of fields, expected %v, got %v", len(setFields), len(fields)) -+ } -+ -+ for i := range setFields { -+ *setFields[i], err = strconv.ParseUint(strings.Split(fields[i], "=")[1], 0, 64) -+ if err != nil { -+ return err -+ } -+ } -+ return nil -+} -+ -+func parseFscacheinfo(r io.Reader) (*Fscacheinfo, error) { -+ var m Fscacheinfo -+ s := bufio.NewScanner(r) -+ for s.Scan() { -+ fields := strings.Fields(s.Text()) -+ if len(fields) < 2 { -+ return nil, fmt.Errorf("malformed Fscacheinfo line: %q", s.Text()) -+ } -+ -+ switch fields[0] { -+ case "Cookies:": -+ err := setFSCacheFields(fields[1:], &m.IndexCookiesAllocated, &m.DataStorageCookiesAllocated, -+ &m.SpecialCookiesAllocated) -+ if err != nil { -+ return &m, err -+ } -+ case "Objects:": -+ err := setFSCacheFields(fields[1:], &m.ObjectsAllocated, &m.ObjectAllocationsFailure, -+ &m.ObjectsAvailable, &m.ObjectsDead) -+ if err != nil { -+ return &m, err -+ } -+ case "ChkAux": -+ err := setFSCacheFields(fields[2:], &m.ObjectsWithoutCoherencyCheck, &m.ObjectsWithCoherencyCheck, -+ &m.ObjectsNeedCoherencyCheckUpdate, &m.ObjectsDeclaredObsolete) -+ if err != nil { -+ return &m, err -+ } -+ case "Pages": -+ err := setFSCacheFields(fields[2:], &m.PagesMarkedAsBeingCached, &m.UncachePagesRequestSeen) -+ if err != nil { -+ return &m, err -+ } -+ case "Acquire:": -+ err := setFSCacheFields(fields[1:], &m.AcquireCookiesRequestSeen, &m.AcquireRequestsWithNullParent, -+ &m.AcquireRequestsRejectedNoCacheAvailable, &m.AcquireRequestsSucceeded, &m.AcquireRequestsRejectedDueToError, -+ &m.AcquireRequestsFailedDueToEnomem) -+ if err != nil { -+ return &m, err -+ } -+ case "Lookups:": -+ err := setFSCacheFields(fields[1:], &m.LookupsNumber, &m.LookupsNegative, &m.LookupsPositive, -+ &m.ObjectsCreatedByLookup, &m.LookupsTimedOutAndRequed) -+ if err != nil { -+ return &m, err -+ } -+ case "Invals": -+ err := setFSCacheFields(fields[2:], &m.InvalidationsNumber, &m.InvalidationsRunning) -+ if err != nil { -+ return &m, err -+ } -+ case "Updates:": -+ err := setFSCacheFields(fields[1:], &m.UpdateCookieRequestSeen, &m.UpdateRequestsWithNullParent, -+ &m.UpdateRequestsRunning) -+ if err != nil { -+ return &m, err -+ } -+ case "Relinqs:": -+ err := setFSCacheFields(fields[1:], &m.RelinquishCookiesRequestSeen, &m.RelinquishCookiesWithNullParent, -+ &m.RelinquishRequestsWaitingCompleteCreation, &m.RelinquishRetries) -+ if err != nil { -+ return &m, err -+ } -+ case "AttrChg:": -+ err := setFSCacheFields(fields[1:], &m.AttributeChangedRequestsSeen, &m.AttributeChangedRequestsQueued, -+ &m.AttributeChangedRejectDueToEnobufs, &m.AttributeChangedFailedDueToEnomem, &m.AttributeChangedOps) -+ if err != nil { -+ return &m, err -+ } -+ case "Allocs": -+ if strings.Split(fields[2], "=")[0] == "n" { -+ err := setFSCacheFields(fields[2:], &m.AllocationRequestsSeen, &m.AllocationOkRequests, -+ &m.AllocationWaitingOnLookup, &m.AllocationsRejectedDueToEnobufs, &m.AllocationsAbortedDueToErestartsys) -+ if err != nil { -+ return &m, err -+ } -+ } else { -+ err := setFSCacheFields(fields[2:], &m.AllocationOperationsSubmitted, &m.AllocationsWaitedForCPU, -+ &m.AllocationsAbortedDueToObjectDeath) -+ if err != nil { -+ return &m, err -+ } -+ } -+ case "Retrvls:": -+ if strings.Split(fields[1], "=")[0] == "n" { -+ err := setFSCacheFields(fields[1:], &m.RetrievalsReadRequests, &m.RetrievalsOk, &m.RetrievalsWaitingLookupCompletion, -+ &m.RetrievalsReturnedEnodata, &m.RetrievalsRejectedDueToEnobufs, &m.RetrievalsAbortedDueToErestartsys, -+ &m.RetrievalsFailedDueToEnomem) -+ if err != nil { -+ return &m, err -+ } -+ } else { -+ err := setFSCacheFields(fields[1:], &m.RetrievalsRequests, &m.RetrievalsWaitingCPU, &m.RetrievalsAbortedDueToObjectDeath) -+ if err != nil { -+ return &m, err -+ } -+ } -+ case "Stores": -+ if strings.Split(fields[2], "=")[0] == "n" { -+ err := setFSCacheFields(fields[2:], &m.StoreWriteRequests, &m.StoreSuccessfulRequests, -+ &m.StoreRequestsOnPendingStorage, &m.StoreRequestsRejectedDueToEnobufs, &m.StoreRequestsFailedDueToEnomem) -+ if err != nil { -+ return &m, err -+ } -+ } else { -+ err := setFSCacheFields(fields[2:], &m.StoreRequestsSubmitted, &m.StoreRequestsRunning, -+ &m.StorePagesWithRequestsProcessing, &m.StoreRequestsDeleted, &m.StoreRequestsOverStoreLimit) -+ if err != nil { -+ return &m, err -+ } -+ } -+ case "VmScan": -+ err := setFSCacheFields(fields[2:], &m.ReleaseRequestsAgainstPagesWithNoPendingStorage, -+ &m.ReleaseRequestsAgainstPagesStoredByTimeLockGranted, &m.ReleaseRequestsIgnoredDueToInProgressStore, -+ &m.PageStoresCancelledByReleaseRequests, &m.VmscanWaiting) -+ if err != nil { -+ return &m, err -+ } -+ case "Ops": -+ if strings.Split(fields[2], "=")[0] == "pend" { -+ err := setFSCacheFields(fields[2:], &m.OpsPending, &m.OpsRunning, &m.OpsEnqueued, &m.OpsCancelled, &m.OpsRejected) -+ if err != nil { -+ return &m, err -+ } -+ } else { -+ err := setFSCacheFields(fields[2:], &m.OpsInitialised, &m.OpsDeferred, &m.OpsReleased, &m.OpsGarbageCollected) -+ if err != nil { -+ return &m, err -+ } -+ } -+ case "CacheOp:": -+ if strings.Split(fields[1], "=")[0] == "alo" { -+ err := setFSCacheFields(fields[1:], &m.CacheopAllocationsinProgress, &m.CacheopLookupObjectInProgress, -+ &m.CacheopLookupCompleteInPorgress, &m.CacheopGrabObjectInProgress) -+ if err != nil { -+ return &m, err -+ } -+ } else if strings.Split(fields[1], "=")[0] == "inv" { -+ err := setFSCacheFields(fields[1:], &m.CacheopInvalidations, &m.CacheopUpdateObjectInProgress, -+ &m.CacheopDropObjectInProgress, &m.CacheopPutObjectInProgress, &m.CacheopAttributeChangeInProgress, -+ &m.CacheopSyncCacheInProgress) -+ if err != nil { -+ return &m, err -+ } -+ } else { -+ err := setFSCacheFields(fields[1:], &m.CacheopReadOrAllocPageInProgress, &m.CacheopReadOrAllocPagesInProgress, -+ &m.CacheopAllocatePageInProgress, &m.CacheopAllocatePagesInProgress, &m.CacheopWritePagesInProgress, -+ &m.CacheopUncachePagesInProgress, &m.CacheopDissociatePagesInProgress) -+ if err != nil { -+ return &m, err -+ } -+ } -+ case "CacheEv:": -+ err := setFSCacheFields(fields[1:], &m.CacheevLookupsAndCreationsRejectedLackSpace, &m.CacheevStaleObjectsDeleted, -+ &m.CacheevRetiredWhenReliquished, &m.CacheevObjectsCulled) -+ if err != nil { -+ return &m, err -+ } -+ } -+ } -+ -+ return &m, nil -+} -diff --git a/vendor/github.com/prometheus/procfs/internal/fs/fs.go b/vendor/github.com/prometheus/procfs/internal/fs/fs.go -new file mode 100755 -index 0000000..3c18c76 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/internal/fs/fs.go -@@ -0,0 +1,55 @@ -+// Copyright 2019 The Prometheus 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 fs -+ -+import ( -+ "fmt" -+ "os" -+ "path/filepath" -+) -+ -+const ( -+ // DefaultProcMountPoint is the common mount point of the proc filesystem. -+ DefaultProcMountPoint = "/proc" -+ -+ // DefaultSysMountPoint is the common mount point of the sys filesystem. -+ DefaultSysMountPoint = "/sys" -+ -+ // DefaultConfigfsMountPoint is the common mount point of the configfs. -+ DefaultConfigfsMountPoint = "/sys/kernel/config" -+) -+ -+// FS represents a pseudo-filesystem, normally /proc or /sys, which provides an -+// interface to kernel data structures. -+type FS string -+ -+// NewFS returns a new FS mounted under the given mountPoint. It will error -+// if the mount point can't be read. -+func NewFS(mountPoint string) (FS, error) { -+ info, err := os.Stat(mountPoint) -+ if err != nil { -+ return "", fmt.Errorf("could not read %q: %w", mountPoint, err) -+ } -+ if !info.IsDir() { -+ return "", fmt.Errorf("mount point %q is not a directory", mountPoint) -+ } -+ -+ return FS(mountPoint), nil -+} -+ -+// Path appends the given path elements to the filesystem path, adding separators -+// as necessary. -+func (fs FS) Path(p ...string) string { -+ return filepath.Join(append([]string{string(fs)}, p...)...) -+} -diff --git a/vendor/github.com/prometheus/procfs/internal/util/parse.go b/vendor/github.com/prometheus/procfs/internal/util/parse.go -new file mode 100755 -index 0000000..b030951 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/internal/util/parse.go -@@ -0,0 +1,97 @@ -+// Copyright 2018 The Prometheus 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 util -+ -+import ( -+ "os" -+ "strconv" -+ "strings" -+) -+ -+// ParseUint32s parses a slice of strings into a slice of uint32s. -+func ParseUint32s(ss []string) ([]uint32, error) { -+ us := make([]uint32, 0, len(ss)) -+ for _, s := range ss { -+ u, err := strconv.ParseUint(s, 10, 32) -+ if err != nil { -+ return nil, err -+ } -+ -+ us = append(us, uint32(u)) -+ } -+ -+ return us, nil -+} -+ -+// ParseUint64s parses a slice of strings into a slice of uint64s. -+func ParseUint64s(ss []string) ([]uint64, error) { -+ us := make([]uint64, 0, len(ss)) -+ for _, s := range ss { -+ u, err := strconv.ParseUint(s, 10, 64) -+ if err != nil { -+ return nil, err -+ } -+ -+ us = append(us, u) -+ } -+ -+ return us, nil -+} -+ -+// ParsePInt64s parses a slice of strings into a slice of int64 pointers. -+func ParsePInt64s(ss []string) ([]*int64, error) { -+ us := make([]*int64, 0, len(ss)) -+ for _, s := range ss { -+ u, err := strconv.ParseInt(s, 10, 64) -+ if err != nil { -+ return nil, err -+ } -+ -+ us = append(us, &u) -+ } -+ -+ return us, nil -+} -+ -+// ReadUintFromFile reads a file and attempts to parse a uint64 from it. -+func ReadUintFromFile(path string) (uint64, error) { -+ data, err := os.ReadFile(path) -+ if err != nil { -+ return 0, err -+ } -+ return strconv.ParseUint(strings.TrimSpace(string(data)), 10, 64) -+} -+ -+// ReadIntFromFile reads a file and attempts to parse a int64 from it. -+func ReadIntFromFile(path string) (int64, error) { -+ data, err := os.ReadFile(path) -+ if err != nil { -+ return 0, err -+ } -+ return strconv.ParseInt(strings.TrimSpace(string(data)), 10, 64) -+} -+ -+// ParseBool parses a string into a boolean pointer. -+func ParseBool(b string) *bool { -+ var truth bool -+ switch b { -+ case "enabled": -+ truth = true -+ case "disabled": -+ truth = false -+ default: -+ return nil -+ } -+ return &truth -+} -diff --git a/vendor/github.com/prometheus/procfs/internal/util/readfile.go b/vendor/github.com/prometheus/procfs/internal/util/readfile.go -new file mode 100755 -index 0000000..71b7a70 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/internal/util/readfile.go -@@ -0,0 +1,37 @@ -+// Copyright 2019 The Prometheus 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 util -+ -+import ( -+ "io" -+ "os" -+) -+ -+// ReadFileNoStat uses io.ReadAll to read contents of entire file. -+// This is similar to os.ReadFile but without the call to os.Stat, because -+// many files in /proc and /sys report incorrect file sizes (either 0 or 4096). -+// Reads a max file size of 1024kB. For files larger than this, a scanner -+// should be used. -+func ReadFileNoStat(filename string) ([]byte, error) { -+ const maxBufferSize = 1024 * 1024 -+ -+ f, err := os.Open(filename) -+ if err != nil { -+ return nil, err -+ } -+ defer f.Close() -+ -+ reader := io.LimitReader(f, maxBufferSize) -+ return io.ReadAll(reader) -+} -diff --git a/vendor/github.com/prometheus/procfs/internal/util/sysreadfile.go b/vendor/github.com/prometheus/procfs/internal/util/sysreadfile.go -new file mode 100755 -index 0000000..1ab875c ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/internal/util/sysreadfile.go -@@ -0,0 +1,50 @@ -+// Copyright 2018 The Prometheus 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:build (linux || darwin) && !appengine -+// +build linux darwin -+// +build !appengine -+ -+package util -+ -+import ( -+ "bytes" -+ "os" -+ "syscall" -+) -+ -+// SysReadFile is a simplified os.ReadFile that invokes syscall.Read directly. -+// https://github.com/prometheus/node_exporter/pull/728/files -+// -+// Note that this function will not read files larger than 128 bytes. -+func SysReadFile(file string) (string, error) { -+ f, err := os.Open(file) -+ if err != nil { -+ return "", err -+ } -+ defer f.Close() -+ -+ // On some machines, hwmon drivers are broken and return EAGAIN. This causes -+ // Go's os.ReadFile implementation to poll forever. -+ // -+ // Since we either want to read data or bail immediately, do the simplest -+ // possible read using syscall directly. -+ const sysFileBufferSize = 128 -+ b := make([]byte, sysFileBufferSize) -+ n, err := syscall.Read(int(f.Fd()), b) -+ if err != nil { -+ return "", err -+ } -+ -+ return string(bytes.TrimSpace(b[:n])), nil -+} -diff --git a/vendor/github.com/prometheus/procfs/internal/util/sysreadfile_compat.go b/vendor/github.com/prometheus/procfs/internal/util/sysreadfile_compat.go -new file mode 100755 -index 0000000..1d86f5e ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/internal/util/sysreadfile_compat.go -@@ -0,0 +1,27 @@ -+// Copyright 2019 The Prometheus 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:build (linux && appengine) || (!linux && !darwin) -+// +build linux,appengine !linux,!darwin -+ -+package util -+ -+import ( -+ "fmt" -+) -+ -+// SysReadFile is here implemented as a noop for builds that do not support -+// the read syscall. For example Windows, or Linux on Google App Engine. -+func SysReadFile(file string) (string, error) { -+ return "", fmt.Errorf("not supported on this platform") -+} -diff --git a/vendor/github.com/prometheus/procfs/internal/util/valueparser.go b/vendor/github.com/prometheus/procfs/internal/util/valueparser.go -new file mode 100755 -index 0000000..fe2355d ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/internal/util/valueparser.go -@@ -0,0 +1,91 @@ -+// Copyright 2019 The Prometheus 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 util -+ -+import ( -+ "strconv" -+) -+ -+// TODO(mdlayher): util packages are an anti-pattern and this should be moved -+// somewhere else that is more focused in the future. -+ -+// A ValueParser enables parsing a single string into a variety of data types -+// in a concise and safe way. The Err method must be invoked after invoking -+// any other methods to ensure a value was successfully parsed. -+type ValueParser struct { -+ v string -+ err error -+} -+ -+// NewValueParser creates a ValueParser using the input string. -+func NewValueParser(v string) *ValueParser { -+ return &ValueParser{v: v} -+} -+ -+// Int interprets the underlying value as an int and returns that value. -+func (vp *ValueParser) Int() int { return int(vp.int64()) } -+ -+// PInt64 interprets the underlying value as an int64 and returns a pointer to -+// that value. -+func (vp *ValueParser) PInt64() *int64 { -+ if vp.err != nil { -+ return nil -+ } -+ -+ v := vp.int64() -+ return &v -+} -+ -+// int64 interprets the underlying value as an int64 and returns that value. -+// TODO: export if/when necessary. -+func (vp *ValueParser) int64() int64 { -+ if vp.err != nil { -+ return 0 -+ } -+ -+ // A base value of zero makes ParseInt infer the correct base using the -+ // string's prefix, if any. -+ const base = 0 -+ v, err := strconv.ParseInt(vp.v, base, 64) -+ if err != nil { -+ vp.err = err -+ return 0 -+ } -+ -+ return v -+} -+ -+// PUInt64 interprets the underlying value as an uint64 and returns a pointer to -+// that value. -+func (vp *ValueParser) PUInt64() *uint64 { -+ if vp.err != nil { -+ return nil -+ } -+ -+ // A base value of zero makes ParseInt infer the correct base using the -+ // string's prefix, if any. -+ const base = 0 -+ v, err := strconv.ParseUint(vp.v, base, 64) -+ if err != nil { -+ vp.err = err -+ return nil -+ } -+ -+ return &v -+} -+ -+// Err returns the last error, if any, encountered by the ValueParser. -+func (vp *ValueParser) Err() error { -+ return vp.err -+} -diff --git a/vendor/github.com/prometheus/procfs/ipvs.go b/vendor/github.com/prometheus/procfs/ipvs.go -new file mode 100755 -index 0000000..391c079 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/ipvs.go -@@ -0,0 +1,240 @@ -+// Copyright 2018 The Prometheus 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 procfs -+ -+import ( -+ "bufio" -+ "bytes" -+ "encoding/hex" -+ "errors" -+ "fmt" -+ "io" -+ "net" -+ "os" -+ "strconv" -+ "strings" -+ -+ "github.com/prometheus/procfs/internal/util" -+) -+ -+// IPVSStats holds IPVS statistics, as exposed by the kernel in `/proc/net/ip_vs_stats`. -+type IPVSStats struct { -+ // Total count of connections. -+ Connections uint64 -+ // Total incoming packages processed. -+ IncomingPackets uint64 -+ // Total outgoing packages processed. -+ OutgoingPackets uint64 -+ // Total incoming traffic. -+ IncomingBytes uint64 -+ // Total outgoing traffic. -+ OutgoingBytes uint64 -+} -+ -+// IPVSBackendStatus holds current metrics of one virtual / real address pair. -+type IPVSBackendStatus struct { -+ // The local (virtual) IP address. -+ LocalAddress net.IP -+ // The remote (real) IP address. -+ RemoteAddress net.IP -+ // The local (virtual) port. -+ LocalPort uint16 -+ // The remote (real) port. -+ RemotePort uint16 -+ // The local firewall mark -+ LocalMark string -+ // The transport protocol (TCP, UDP). -+ Proto string -+ // The current number of active connections for this virtual/real address pair. -+ ActiveConn uint64 -+ // The current number of inactive connections for this virtual/real address pair. -+ InactConn uint64 -+ // The current weight of this virtual/real address pair. -+ Weight uint64 -+} -+ -+// IPVSStats reads the IPVS statistics from the specified `proc` filesystem. -+func (fs FS) IPVSStats() (IPVSStats, error) { -+ data, err := util.ReadFileNoStat(fs.proc.Path("net/ip_vs_stats")) -+ if err != nil { -+ return IPVSStats{}, err -+ } -+ -+ return parseIPVSStats(bytes.NewReader(data)) -+} -+ -+// parseIPVSStats performs the actual parsing of `ip_vs_stats`. -+func parseIPVSStats(r io.Reader) (IPVSStats, error) { -+ var ( -+ statContent []byte -+ statLines []string -+ statFields []string -+ stats IPVSStats -+ ) -+ -+ statContent, err := io.ReadAll(r) -+ if err != nil { -+ return IPVSStats{}, err -+ } -+ -+ statLines = strings.SplitN(string(statContent), "\n", 4) -+ if len(statLines) != 4 { -+ return IPVSStats{}, errors.New("ip_vs_stats corrupt: too short") -+ } -+ -+ statFields = strings.Fields(statLines[2]) -+ if len(statFields) != 5 { -+ return IPVSStats{}, errors.New("ip_vs_stats corrupt: unexpected number of fields") -+ } -+ -+ stats.Connections, err = strconv.ParseUint(statFields[0], 16, 64) -+ if err != nil { -+ return IPVSStats{}, err -+ } -+ stats.IncomingPackets, err = strconv.ParseUint(statFields[1], 16, 64) -+ if err != nil { -+ return IPVSStats{}, err -+ } -+ stats.OutgoingPackets, err = strconv.ParseUint(statFields[2], 16, 64) -+ if err != nil { -+ return IPVSStats{}, err -+ } -+ stats.IncomingBytes, err = strconv.ParseUint(statFields[3], 16, 64) -+ if err != nil { -+ return IPVSStats{}, err -+ } -+ stats.OutgoingBytes, err = strconv.ParseUint(statFields[4], 16, 64) -+ if err != nil { -+ return IPVSStats{}, err -+ } -+ -+ return stats, nil -+} -+ -+// IPVSBackendStatus reads and returns the status of all (virtual,real) server pairs from the specified `proc` filesystem. -+func (fs FS) IPVSBackendStatus() ([]IPVSBackendStatus, error) { -+ file, err := os.Open(fs.proc.Path("net/ip_vs")) -+ if err != nil { -+ return nil, err -+ } -+ defer file.Close() -+ -+ return parseIPVSBackendStatus(file) -+} -+ -+func parseIPVSBackendStatus(file io.Reader) ([]IPVSBackendStatus, error) { -+ var ( -+ status []IPVSBackendStatus -+ scanner = bufio.NewScanner(file) -+ proto string -+ localMark string -+ localAddress net.IP -+ localPort uint16 -+ err error -+ ) -+ -+ for scanner.Scan() { -+ fields := strings.Fields(scanner.Text()) -+ if len(fields) == 0 { -+ continue -+ } -+ switch { -+ case fields[0] == "IP" || fields[0] == "Prot" || fields[1] == "RemoteAddress:Port": -+ continue -+ case fields[0] == "TCP" || fields[0] == "UDP": -+ if len(fields) < 2 { -+ continue -+ } -+ proto = fields[0] -+ localMark = "" -+ localAddress, localPort, err = parseIPPort(fields[1]) -+ if err != nil { -+ return nil, err -+ } -+ case fields[0] == "FWM": -+ if len(fields) < 2 { -+ continue -+ } -+ proto = fields[0] -+ localMark = fields[1] -+ localAddress = nil -+ localPort = 0 -+ case fields[0] == "->": -+ if len(fields) < 6 { -+ continue -+ } -+ remoteAddress, remotePort, err := parseIPPort(fields[1]) -+ if err != nil { -+ return nil, err -+ } -+ weight, err := strconv.ParseUint(fields[3], 10, 64) -+ if err != nil { -+ return nil, err -+ } -+ activeConn, err := strconv.ParseUint(fields[4], 10, 64) -+ if err != nil { -+ return nil, err -+ } -+ inactConn, err := strconv.ParseUint(fields[5], 10, 64) -+ if err != nil { -+ return nil, err -+ } -+ status = append(status, IPVSBackendStatus{ -+ LocalAddress: localAddress, -+ LocalPort: localPort, -+ LocalMark: localMark, -+ RemoteAddress: remoteAddress, -+ RemotePort: remotePort, -+ Proto: proto, -+ Weight: weight, -+ ActiveConn: activeConn, -+ InactConn: inactConn, -+ }) -+ } -+ } -+ return status, nil -+} -+ -+func parseIPPort(s string) (net.IP, uint16, error) { -+ var ( -+ ip net.IP -+ err error -+ ) -+ -+ switch len(s) { -+ case 13: -+ ip, err = hex.DecodeString(s[0:8]) -+ if err != nil { -+ return nil, 0, err -+ } -+ case 46: -+ ip = net.ParseIP(s[1:40]) -+ if ip == nil { -+ return nil, 0, fmt.Errorf("invalid IPv6 address: %s", s[1:40]) -+ } -+ default: -+ return nil, 0, fmt.Errorf("unexpected IP:Port: %s", s) -+ } -+ -+ portString := s[len(s)-4:] -+ if len(portString) != 4 { -+ return nil, 0, fmt.Errorf("unexpected port string format: %s", portString) -+ } -+ port, err := strconv.ParseUint(portString, 16, 16) -+ if err != nil { -+ return nil, 0, err -+ } -+ -+ return ip, uint16(port), nil -+} -diff --git a/vendor/github.com/prometheus/procfs/kernel_random.go b/vendor/github.com/prometheus/procfs/kernel_random.go -new file mode 100755 -index 0000000..db88566 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/kernel_random.go -@@ -0,0 +1,63 @@ -+// Copyright 2020 The Prometheus 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:build !windows -+// +build !windows -+ -+package procfs -+ -+import ( -+ "os" -+ -+ "github.com/prometheus/procfs/internal/util" -+) -+ -+// KernelRandom contains information about to the kernel's random number generator. -+type KernelRandom struct { -+ // EntropyAvaliable gives the available entropy, in bits. -+ EntropyAvaliable *uint64 -+ // PoolSize gives the size of the entropy pool, in bits. -+ PoolSize *uint64 -+ // URandomMinReseedSeconds is the number of seconds after which the DRNG will be reseeded. -+ URandomMinReseedSeconds *uint64 -+ // WriteWakeupThreshold the number of bits of entropy below which we wake up processes -+ // that do a select(2) or poll(2) for write access to /dev/random. -+ WriteWakeupThreshold *uint64 -+ // ReadWakeupThreshold is the number of bits of entropy required for waking up processes that sleep -+ // waiting for entropy from /dev/random. -+ ReadWakeupThreshold *uint64 -+} -+ -+// KernelRandom returns values from /proc/sys/kernel/random. -+func (fs FS) KernelRandom() (KernelRandom, error) { -+ random := KernelRandom{} -+ -+ for file, p := range map[string]**uint64{ -+ "entropy_avail": &random.EntropyAvaliable, -+ "poolsize": &random.PoolSize, -+ "urandom_min_reseed_secs": &random.URandomMinReseedSeconds, -+ "write_wakeup_threshold": &random.WriteWakeupThreshold, -+ "read_wakeup_threshold": &random.ReadWakeupThreshold, -+ } { -+ val, err := util.ReadUintFromFile(fs.proc.Path("sys", "kernel", "random", file)) -+ if os.IsNotExist(err) { -+ continue -+ } -+ if err != nil { -+ return random, err -+ } -+ *p = &val -+ } -+ -+ return random, nil -+} -diff --git a/vendor/github.com/prometheus/procfs/loadavg.go b/vendor/github.com/prometheus/procfs/loadavg.go -new file mode 100755 -index 0000000..0096caf ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/loadavg.go -@@ -0,0 +1,62 @@ -+// Copyright 2019 The Prometheus 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 procfs -+ -+import ( -+ "fmt" -+ "strconv" -+ "strings" -+ -+ "github.com/prometheus/procfs/internal/util" -+) -+ -+// LoadAvg represents an entry in /proc/loadavg. -+type LoadAvg struct { -+ Load1 float64 -+ Load5 float64 -+ Load15 float64 -+} -+ -+// LoadAvg returns loadavg from /proc. -+func (fs FS) LoadAvg() (*LoadAvg, error) { -+ path := fs.proc.Path("loadavg") -+ -+ data, err := util.ReadFileNoStat(path) -+ if err != nil { -+ return nil, err -+ } -+ return parseLoad(data) -+} -+ -+// Parse /proc loadavg and return 1m, 5m and 15m. -+func parseLoad(loadavgBytes []byte) (*LoadAvg, error) { -+ loads := make([]float64, 3) -+ parts := strings.Fields(string(loadavgBytes)) -+ if len(parts) < 3 { -+ return nil, fmt.Errorf("malformed loadavg line: too few fields in loadavg string: %q", string(loadavgBytes)) -+ } -+ -+ var err error -+ for i, load := range parts[0:3] { -+ loads[i], err = strconv.ParseFloat(load, 64) -+ if err != nil { -+ return nil, fmt.Errorf("could not parse load %q: %w", load, err) -+ } -+ } -+ return &LoadAvg{ -+ Load1: loads[0], -+ Load5: loads[1], -+ Load15: loads[2], -+ }, nil -+} -diff --git a/vendor/github.com/prometheus/procfs/mdstat.go b/vendor/github.com/prometheus/procfs/mdstat.go -new file mode 100755 -index 0000000..a95c889 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/mdstat.go -@@ -0,0 +1,266 @@ -+// Copyright 2018 The Prometheus 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 procfs -+ -+import ( -+ "fmt" -+ "os" -+ "regexp" -+ "strconv" -+ "strings" -+) -+ -+var ( -+ statusLineRE = regexp.MustCompile(`(\d+) blocks .*\[(\d+)/(\d+)\] \[([U_]+)\]`) -+ recoveryLineBlocksRE = regexp.MustCompile(`\((\d+)/\d+\)`) -+ recoveryLinePctRE = regexp.MustCompile(`= (.+)%`) -+ recoveryLineFinishRE = regexp.MustCompile(`finish=(.+)min`) -+ recoveryLineSpeedRE = regexp.MustCompile(`speed=(.+)[A-Z]`) -+ componentDeviceRE = regexp.MustCompile(`(.*)\[\d+\]`) -+) -+ -+// MDStat holds info parsed from /proc/mdstat. -+type MDStat struct { -+ // Name of the device. -+ Name string -+ // activity-state of the device. -+ ActivityState string -+ // Number of active disks. -+ DisksActive int64 -+ // Total number of disks the device requires. -+ DisksTotal int64 -+ // Number of failed disks. -+ DisksFailed int64 -+ // Number of "down" disks. (the _ indicator in the status line) -+ DisksDown int64 -+ // Spare disks in the device. -+ DisksSpare int64 -+ // Number of blocks the device holds. -+ BlocksTotal int64 -+ // Number of blocks on the device that are in sync. -+ BlocksSynced int64 -+ // progress percentage of current sync -+ BlocksSyncedPct float64 -+ // estimated finishing time for current sync (in minutes) -+ BlocksSyncedFinishTime float64 -+ // current sync speed (in Kilobytes/sec) -+ BlocksSyncedSpeed float64 -+ // Name of md component devices -+ Devices []string -+} -+ -+// MDStat parses an mdstat-file (/proc/mdstat) and returns a slice of -+// structs containing the relevant info. More information available here: -+// https://raid.wiki.kernel.org/index.php/Mdstat -+func (fs FS) MDStat() ([]MDStat, error) { -+ data, err := os.ReadFile(fs.proc.Path("mdstat")) -+ if err != nil { -+ return nil, err -+ } -+ mdstat, err := parseMDStat(data) -+ if err != nil { -+ return nil, fmt.Errorf("error parsing mdstat %q: %w", fs.proc.Path("mdstat"), err) -+ } -+ return mdstat, nil -+} -+ -+// parseMDStat parses data from mdstat file (/proc/mdstat) and returns a slice of -+// structs containing the relevant info. -+func parseMDStat(mdStatData []byte) ([]MDStat, error) { -+ mdStats := []MDStat{} -+ lines := strings.Split(string(mdStatData), "\n") -+ -+ for i, line := range lines { -+ if strings.TrimSpace(line) == "" || line[0] == ' ' || -+ strings.HasPrefix(line, "Personalities") || -+ strings.HasPrefix(line, "unused") { -+ continue -+ } -+ -+ deviceFields := strings.Fields(line) -+ if len(deviceFields) < 3 { -+ return nil, fmt.Errorf("not enough fields in mdline (expected at least 3): %s", line) -+ } -+ mdName := deviceFields[0] // mdx -+ state := deviceFields[2] // active or inactive -+ -+ if len(lines) <= i+3 { -+ return nil, fmt.Errorf("error parsing %q: too few lines for md device", mdName) -+ } -+ -+ // Failed disks have the suffix (F) & Spare disks have the suffix (S). -+ fail := int64(strings.Count(line, "(F)")) -+ spare := int64(strings.Count(line, "(S)")) -+ active, total, down, size, err := evalStatusLine(lines[i], lines[i+1]) -+ -+ if err != nil { -+ return nil, fmt.Errorf("error parsing md device lines: %w", err) -+ } -+ -+ syncLineIdx := i + 2 -+ if strings.Contains(lines[i+2], "bitmap") { // skip bitmap line -+ syncLineIdx++ -+ } -+ -+ // If device is syncing at the moment, get the number of currently -+ // synced bytes, otherwise that number equals the size of the device. -+ syncedBlocks := size -+ speed := float64(0) -+ finish := float64(0) -+ pct := float64(0) -+ recovering := strings.Contains(lines[syncLineIdx], "recovery") -+ resyncing := strings.Contains(lines[syncLineIdx], "resync") -+ checking := strings.Contains(lines[syncLineIdx], "check") -+ -+ // Append recovery and resyncing state info. -+ if recovering || resyncing || checking { -+ if recovering { -+ state = "recovering" -+ } else if checking { -+ state = "checking" -+ } else { -+ state = "resyncing" -+ } -+ -+ // Handle case when resync=PENDING or resync=DELAYED. -+ if strings.Contains(lines[syncLineIdx], "PENDING") || -+ strings.Contains(lines[syncLineIdx], "DELAYED") { -+ syncedBlocks = 0 -+ } else { -+ syncedBlocks, pct, finish, speed, err = evalRecoveryLine(lines[syncLineIdx]) -+ if err != nil { -+ return nil, fmt.Errorf("error parsing sync line in md device %q: %w", mdName, err) -+ } -+ } -+ } -+ -+ mdStats = append(mdStats, MDStat{ -+ Name: mdName, -+ ActivityState: state, -+ DisksActive: active, -+ DisksFailed: fail, -+ DisksDown: down, -+ DisksSpare: spare, -+ DisksTotal: total, -+ BlocksTotal: size, -+ BlocksSynced: syncedBlocks, -+ BlocksSyncedPct: pct, -+ BlocksSyncedFinishTime: finish, -+ BlocksSyncedSpeed: speed, -+ Devices: evalComponentDevices(deviceFields), -+ }) -+ } -+ -+ return mdStats, nil -+} -+ -+func evalStatusLine(deviceLine, statusLine string) (active, total, down, size int64, err error) { -+ statusFields := strings.Fields(statusLine) -+ if len(statusFields) < 1 { -+ return 0, 0, 0, 0, fmt.Errorf("unexpected statusLine %q", statusLine) -+ } -+ -+ sizeStr := statusFields[0] -+ size, err = strconv.ParseInt(sizeStr, 10, 64) -+ if err != nil { -+ return 0, 0, 0, 0, fmt.Errorf("unexpected statusLine %q: %w", statusLine, err) -+ } -+ -+ if strings.Contains(deviceLine, "raid0") || strings.Contains(deviceLine, "linear") { -+ // In the device deviceLine, only disks have a number associated with them in []. -+ total = int64(strings.Count(deviceLine, "[")) -+ return total, total, 0, size, nil -+ } -+ -+ if strings.Contains(deviceLine, "inactive") { -+ return 0, 0, 0, size, nil -+ } -+ -+ matches := statusLineRE.FindStringSubmatch(statusLine) -+ if len(matches) != 5 { -+ return 0, 0, 0, 0, fmt.Errorf("couldn't find all the substring matches: %s", statusLine) -+ } -+ -+ total, err = strconv.ParseInt(matches[2], 10, 64) -+ if err != nil { -+ return 0, 0, 0, 0, fmt.Errorf("unexpected statusLine %q: %w", statusLine, err) -+ } -+ -+ active, err = strconv.ParseInt(matches[3], 10, 64) -+ if err != nil { -+ return 0, 0, 0, 0, fmt.Errorf("unexpected statusLine %q: %w", statusLine, err) -+ } -+ down = int64(strings.Count(matches[4], "_")) -+ -+ return active, total, down, size, nil -+} -+ -+func evalRecoveryLine(recoveryLine string) (syncedBlocks int64, pct float64, finish float64, speed float64, err error) { -+ matches := recoveryLineBlocksRE.FindStringSubmatch(recoveryLine) -+ if len(matches) != 2 { -+ return 0, 0, 0, 0, fmt.Errorf("unexpected recoveryLine: %s", recoveryLine) -+ } -+ -+ syncedBlocks, err = strconv.ParseInt(matches[1], 10, 64) -+ if err != nil { -+ return 0, 0, 0, 0, fmt.Errorf("error parsing int from recoveryLine %q: %w", recoveryLine, err) -+ } -+ -+ // Get percentage complete -+ matches = recoveryLinePctRE.FindStringSubmatch(recoveryLine) -+ if len(matches) != 2 { -+ return syncedBlocks, 0, 0, 0, fmt.Errorf("unexpected recoveryLine matching percentage: %s", recoveryLine) -+ } -+ pct, err = strconv.ParseFloat(strings.TrimSpace(matches[1]), 64) -+ if err != nil { -+ return syncedBlocks, 0, 0, 0, fmt.Errorf("error parsing float from recoveryLine %q: %w", recoveryLine, err) -+ } -+ -+ // Get time expected left to complete -+ matches = recoveryLineFinishRE.FindStringSubmatch(recoveryLine) -+ if len(matches) != 2 { -+ return syncedBlocks, pct, 0, 0, fmt.Errorf("unexpected recoveryLine matching est. finish time: %s", recoveryLine) -+ } -+ finish, err = strconv.ParseFloat(matches[1], 64) -+ if err != nil { -+ return syncedBlocks, pct, 0, 0, fmt.Errorf("error parsing float from recoveryLine %q: %w", recoveryLine, err) -+ } -+ -+ // Get recovery speed -+ matches = recoveryLineSpeedRE.FindStringSubmatch(recoveryLine) -+ if len(matches) != 2 { -+ return syncedBlocks, pct, finish, 0, fmt.Errorf("unexpected recoveryLine matching speed: %s", recoveryLine) -+ } -+ speed, err = strconv.ParseFloat(matches[1], 64) -+ if err != nil { -+ return syncedBlocks, pct, finish, 0, fmt.Errorf("error parsing float from recoveryLine %q: %w", recoveryLine, err) -+ } -+ -+ return syncedBlocks, pct, finish, speed, nil -+} -+ -+func evalComponentDevices(deviceFields []string) []string { -+ mdComponentDevices := make([]string, 0) -+ if len(deviceFields) > 3 { -+ for _, field := range deviceFields[4:] { -+ match := componentDeviceRE.FindStringSubmatch(field) -+ if match == nil { -+ continue -+ } -+ mdComponentDevices = append(mdComponentDevices, match[1]) -+ } -+ } -+ -+ return mdComponentDevices -+} -diff --git a/vendor/github.com/prometheus/procfs/meminfo.go b/vendor/github.com/prometheus/procfs/meminfo.go -new file mode 100755 -index 0000000..f65e174 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/meminfo.go -@@ -0,0 +1,277 @@ -+// Copyright 2019 The Prometheus 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 procfs -+ -+import ( -+ "bufio" -+ "bytes" -+ "fmt" -+ "io" -+ "strconv" -+ "strings" -+ -+ "github.com/prometheus/procfs/internal/util" -+) -+ -+// Meminfo represents memory statistics. -+type Meminfo struct { -+ // Total usable ram (i.e. physical ram minus a few reserved -+ // bits and the kernel binary code) -+ MemTotal *uint64 -+ // The sum of LowFree+HighFree -+ MemFree *uint64 -+ // An estimate of how much memory is available for starting -+ // new applications, without swapping. Calculated from -+ // MemFree, SReclaimable, the size of the file LRU lists, and -+ // the low watermarks in each zone. The estimate takes into -+ // account that the system needs some page cache to function -+ // well, and that not all reclaimable slab will be -+ // reclaimable, due to items being in use. The impact of those -+ // factors will vary from system to system. -+ MemAvailable *uint64 -+ // Relatively temporary storage for raw disk blocks shouldn't -+ // get tremendously large (20MB or so) -+ Buffers *uint64 -+ Cached *uint64 -+ // Memory that once was swapped out, is swapped back in but -+ // still also is in the swapfile (if memory is needed it -+ // doesn't need to be swapped out AGAIN because it is already -+ // in the swapfile. This saves I/O) -+ SwapCached *uint64 -+ // Memory that has been used more recently and usually not -+ // reclaimed unless absolutely necessary. -+ Active *uint64 -+ // Memory which has been less recently used. It is more -+ // eligible to be reclaimed for other purposes -+ Inactive *uint64 -+ ActiveAnon *uint64 -+ InactiveAnon *uint64 -+ ActiveFile *uint64 -+ InactiveFile *uint64 -+ Unevictable *uint64 -+ Mlocked *uint64 -+ // total amount of swap space available -+ SwapTotal *uint64 -+ // Memory which has been evicted from RAM, and is temporarily -+ // on the disk -+ SwapFree *uint64 -+ // Memory which is waiting to get written back to the disk -+ Dirty *uint64 -+ // Memory which is actively being written back to the disk -+ Writeback *uint64 -+ // Non-file backed pages mapped into userspace page tables -+ AnonPages *uint64 -+ // files which have been mapped, such as libraries -+ Mapped *uint64 -+ Shmem *uint64 -+ // in-kernel data structures cache -+ Slab *uint64 -+ // Part of Slab, that might be reclaimed, such as caches -+ SReclaimable *uint64 -+ // Part of Slab, that cannot be reclaimed on memory pressure -+ SUnreclaim *uint64 -+ KernelStack *uint64 -+ // amount of memory dedicated to the lowest level of page -+ // tables. -+ PageTables *uint64 -+ // NFS pages sent to the server, but not yet committed to -+ // stable storage -+ NFSUnstable *uint64 -+ // Memory used for block device "bounce buffers" -+ Bounce *uint64 -+ // Memory used by FUSE for temporary writeback buffers -+ WritebackTmp *uint64 -+ // Based on the overcommit ratio ('vm.overcommit_ratio'), -+ // this is the total amount of memory currently available to -+ // be allocated on the system. This limit is only adhered to -+ // if strict overcommit accounting is enabled (mode 2 in -+ // 'vm.overcommit_memory'). -+ // The CommitLimit is calculated with the following formula: -+ // CommitLimit = ([total RAM pages] - [total huge TLB pages]) * -+ // overcommit_ratio / 100 + [total swap pages] -+ // For example, on a system with 1G of physical RAM and 7G -+ // of swap with a `vm.overcommit_ratio` of 30 it would -+ // yield a CommitLimit of 7.3G. -+ // For more details, see the memory overcommit documentation -+ // in vm/overcommit-accounting. -+ CommitLimit *uint64 -+ // The amount of memory presently allocated on the system. -+ // The committed memory is a sum of all of the memory which -+ // has been allocated by processes, even if it has not been -+ // "used" by them as of yet. A process which malloc()'s 1G -+ // of memory, but only touches 300M of it will show up as -+ // using 1G. This 1G is memory which has been "committed" to -+ // by the VM and can be used at any time by the allocating -+ // application. With strict overcommit enabled on the system -+ // (mode 2 in 'vm.overcommit_memory'),allocations which would -+ // exceed the CommitLimit (detailed above) will not be permitted. -+ // This is useful if one needs to guarantee that processes will -+ // not fail due to lack of memory once that memory has been -+ // successfully allocated. -+ CommittedAS *uint64 -+ // total size of vmalloc memory area -+ VmallocTotal *uint64 -+ // amount of vmalloc area which is used -+ VmallocUsed *uint64 -+ // largest contiguous block of vmalloc area which is free -+ VmallocChunk *uint64 -+ HardwareCorrupted *uint64 -+ AnonHugePages *uint64 -+ ShmemHugePages *uint64 -+ ShmemPmdMapped *uint64 -+ CmaTotal *uint64 -+ CmaFree *uint64 -+ HugePagesTotal *uint64 -+ HugePagesFree *uint64 -+ HugePagesRsvd *uint64 -+ HugePagesSurp *uint64 -+ Hugepagesize *uint64 -+ DirectMap4k *uint64 -+ DirectMap2M *uint64 -+ DirectMap1G *uint64 -+} -+ -+// Meminfo returns an information about current kernel/system memory statistics. -+// See https://www.kernel.org/doc/Documentation/filesystems/proc.txt -+func (fs FS) Meminfo() (Meminfo, error) { -+ b, err := util.ReadFileNoStat(fs.proc.Path("meminfo")) -+ if err != nil { -+ return Meminfo{}, err -+ } -+ -+ m, err := parseMemInfo(bytes.NewReader(b)) -+ if err != nil { -+ return Meminfo{}, fmt.Errorf("failed to parse meminfo: %w", err) -+ } -+ -+ return *m, nil -+} -+ -+func parseMemInfo(r io.Reader) (*Meminfo, error) { -+ var m Meminfo -+ s := bufio.NewScanner(r) -+ for s.Scan() { -+ // Each line has at least a name and value; we ignore the unit. -+ fields := strings.Fields(s.Text()) -+ if len(fields) < 2 { -+ return nil, fmt.Errorf("malformed meminfo line: %q", s.Text()) -+ } -+ -+ v, err := strconv.ParseUint(fields[1], 0, 64) -+ if err != nil { -+ return nil, err -+ } -+ -+ switch fields[0] { -+ case "MemTotal:": -+ m.MemTotal = &v -+ case "MemFree:": -+ m.MemFree = &v -+ case "MemAvailable:": -+ m.MemAvailable = &v -+ case "Buffers:": -+ m.Buffers = &v -+ case "Cached:": -+ m.Cached = &v -+ case "SwapCached:": -+ m.SwapCached = &v -+ case "Active:": -+ m.Active = &v -+ case "Inactive:": -+ m.Inactive = &v -+ case "Active(anon):": -+ m.ActiveAnon = &v -+ case "Inactive(anon):": -+ m.InactiveAnon = &v -+ case "Active(file):": -+ m.ActiveFile = &v -+ case "Inactive(file):": -+ m.InactiveFile = &v -+ case "Unevictable:": -+ m.Unevictable = &v -+ case "Mlocked:": -+ m.Mlocked = &v -+ case "SwapTotal:": -+ m.SwapTotal = &v -+ case "SwapFree:": -+ m.SwapFree = &v -+ case "Dirty:": -+ m.Dirty = &v -+ case "Writeback:": -+ m.Writeback = &v -+ case "AnonPages:": -+ m.AnonPages = &v -+ case "Mapped:": -+ m.Mapped = &v -+ case "Shmem:": -+ m.Shmem = &v -+ case "Slab:": -+ m.Slab = &v -+ case "SReclaimable:": -+ m.SReclaimable = &v -+ case "SUnreclaim:": -+ m.SUnreclaim = &v -+ case "KernelStack:": -+ m.KernelStack = &v -+ case "PageTables:": -+ m.PageTables = &v -+ case "NFS_Unstable:": -+ m.NFSUnstable = &v -+ case "Bounce:": -+ m.Bounce = &v -+ case "WritebackTmp:": -+ m.WritebackTmp = &v -+ case "CommitLimit:": -+ m.CommitLimit = &v -+ case "Committed_AS:": -+ m.CommittedAS = &v -+ case "VmallocTotal:": -+ m.VmallocTotal = &v -+ case "VmallocUsed:": -+ m.VmallocUsed = &v -+ case "VmallocChunk:": -+ m.VmallocChunk = &v -+ case "HardwareCorrupted:": -+ m.HardwareCorrupted = &v -+ case "AnonHugePages:": -+ m.AnonHugePages = &v -+ case "ShmemHugePages:": -+ m.ShmemHugePages = &v -+ case "ShmemPmdMapped:": -+ m.ShmemPmdMapped = &v -+ case "CmaTotal:": -+ m.CmaTotal = &v -+ case "CmaFree:": -+ m.CmaFree = &v -+ case "HugePages_Total:": -+ m.HugePagesTotal = &v -+ case "HugePages_Free:": -+ m.HugePagesFree = &v -+ case "HugePages_Rsvd:": -+ m.HugePagesRsvd = &v -+ case "HugePages_Surp:": -+ m.HugePagesSurp = &v -+ case "Hugepagesize:": -+ m.Hugepagesize = &v -+ case "DirectMap4k:": -+ m.DirectMap4k = &v -+ case "DirectMap2M:": -+ m.DirectMap2M = &v -+ case "DirectMap1G:": -+ m.DirectMap1G = &v -+ } -+ } -+ -+ return &m, nil -+} -diff --git a/vendor/github.com/prometheus/procfs/mountinfo.go b/vendor/github.com/prometheus/procfs/mountinfo.go -new file mode 100755 -index 0000000..59f4d50 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/mountinfo.go -@@ -0,0 +1,180 @@ -+// Copyright 2019 The Prometheus 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 procfs -+ -+import ( -+ "bufio" -+ "bytes" -+ "fmt" -+ "strconv" -+ "strings" -+ -+ "github.com/prometheus/procfs/internal/util" -+) -+ -+// A MountInfo is a type that describes the details, options -+// for each mount, parsed from /proc/self/mountinfo. -+// The fields described in each entry of /proc/self/mountinfo -+// is described in the following man page. -+// http://man7.org/linux/man-pages/man5/proc.5.html -+type MountInfo struct { -+ // Unique ID for the mount -+ MountID int -+ // The ID of the parent mount -+ ParentID int -+ // The value of `st_dev` for the files on this FS -+ MajorMinorVer string -+ // The pathname of the directory in the FS that forms -+ // the root for this mount -+ Root string -+ // The pathname of the mount point relative to the root -+ MountPoint string -+ // Mount options -+ Options map[string]string -+ // Zero or more optional fields -+ OptionalFields map[string]string -+ // The Filesystem type -+ FSType string -+ // FS specific information or "none" -+ Source string -+ // Superblock options -+ SuperOptions map[string]string -+} -+ -+// Reads each line of the mountinfo file, and returns a list of formatted MountInfo structs. -+func parseMountInfo(info []byte) ([]*MountInfo, error) { -+ mounts := []*MountInfo{} -+ scanner := bufio.NewScanner(bytes.NewReader(info)) -+ for scanner.Scan() { -+ mountString := scanner.Text() -+ parsedMounts, err := parseMountInfoString(mountString) -+ if err != nil { -+ return nil, err -+ } -+ mounts = append(mounts, parsedMounts) -+ } -+ -+ err := scanner.Err() -+ return mounts, err -+} -+ -+// Parses a mountinfo file line, and converts it to a MountInfo struct. -+// An important check here is to see if the hyphen separator, as if it does not exist, -+// it means that the line is malformed. -+func parseMountInfoString(mountString string) (*MountInfo, error) { -+ var err error -+ -+ mountInfo := strings.Split(mountString, " ") -+ mountInfoLength := len(mountInfo) -+ if mountInfoLength < 10 { -+ return nil, fmt.Errorf("couldn't find enough fields in mount string: %s", mountString) -+ } -+ -+ if mountInfo[mountInfoLength-4] != "-" { -+ return nil, fmt.Errorf("couldn't find separator in expected field: %s", mountInfo[mountInfoLength-4]) -+ } -+ -+ mount := &MountInfo{ -+ MajorMinorVer: mountInfo[2], -+ Root: mountInfo[3], -+ MountPoint: mountInfo[4], -+ Options: mountOptionsParser(mountInfo[5]), -+ OptionalFields: nil, -+ FSType: mountInfo[mountInfoLength-3], -+ Source: mountInfo[mountInfoLength-2], -+ SuperOptions: mountOptionsParser(mountInfo[mountInfoLength-1]), -+ } -+ -+ mount.MountID, err = strconv.Atoi(mountInfo[0]) -+ if err != nil { -+ return nil, fmt.Errorf("failed to parse mount ID") -+ } -+ mount.ParentID, err = strconv.Atoi(mountInfo[1]) -+ if err != nil { -+ return nil, fmt.Errorf("failed to parse parent ID") -+ } -+ // Has optional fields, which is a space separated list of values. -+ // Example: shared:2 master:7 -+ if mountInfo[6] != "" { -+ mount.OptionalFields, err = mountOptionsParseOptionalFields(mountInfo[6 : mountInfoLength-4]) -+ if err != nil { -+ return nil, err -+ } -+ } -+ return mount, nil -+} -+ -+// mountOptionsIsValidField checks a string against a valid list of optional fields keys. -+func mountOptionsIsValidField(s string) bool { -+ switch s { -+ case -+ "shared", -+ "master", -+ "propagate_from", -+ "unbindable": -+ return true -+ } -+ return false -+} -+ -+// mountOptionsParseOptionalFields parses a list of optional fields strings into a double map of strings. -+func mountOptionsParseOptionalFields(o []string) (map[string]string, error) { -+ optionalFields := make(map[string]string) -+ for _, field := range o { -+ optionSplit := strings.SplitN(field, ":", 2) -+ value := "" -+ if len(optionSplit) == 2 { -+ value = optionSplit[1] -+ } -+ if mountOptionsIsValidField(optionSplit[0]) { -+ optionalFields[optionSplit[0]] = value -+ } -+ } -+ return optionalFields, nil -+} -+ -+// mountOptionsParser parses the mount options, superblock options. -+func mountOptionsParser(mountOptions string) map[string]string { -+ opts := make(map[string]string) -+ options := strings.Split(mountOptions, ",") -+ for _, opt := range options { -+ splitOption := strings.Split(opt, "=") -+ if len(splitOption) < 2 { -+ key := splitOption[0] -+ opts[key] = "" -+ } else { -+ key, value := splitOption[0], splitOption[1] -+ opts[key] = value -+ } -+ } -+ return opts -+} -+ -+// GetMounts retrieves mountinfo information from `/proc/self/mountinfo`. -+func GetMounts() ([]*MountInfo, error) { -+ data, err := util.ReadFileNoStat("/proc/self/mountinfo") -+ if err != nil { -+ return nil, err -+ } -+ return parseMountInfo(data) -+} -+ -+// GetProcMounts retrieves mountinfo information from a processes' `/proc//mountinfo`. -+func GetProcMounts(pid int) ([]*MountInfo, error) { -+ data, err := util.ReadFileNoStat(fmt.Sprintf("/proc/%d/mountinfo", pid)) -+ if err != nil { -+ return nil, err -+ } -+ return parseMountInfo(data) -+} -diff --git a/vendor/github.com/prometheus/procfs/mountstats.go b/vendor/github.com/prometheus/procfs/mountstats.go -new file mode 100755 -index 0000000..f7a828b ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/mountstats.go -@@ -0,0 +1,638 @@ -+// Copyright 2018 The Prometheus 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 procfs -+ -+// While implementing parsing of /proc/[pid]/mountstats, this blog was used -+// heavily as a reference: -+// https://utcc.utoronto.ca/~cks/space/blog/linux/NFSMountstatsIndex -+// -+// Special thanks to Chris Siebenmann for all of his posts explaining the -+// various statistics available for NFS. -+ -+import ( -+ "bufio" -+ "fmt" -+ "io" -+ "strconv" -+ "strings" -+ "time" -+) -+ -+// Constants shared between multiple functions. -+const ( -+ deviceEntryLen = 8 -+ -+ fieldBytesLen = 8 -+ fieldEventsLen = 27 -+ -+ statVersion10 = "1.0" -+ statVersion11 = "1.1" -+ -+ fieldTransport10TCPLen = 10 -+ fieldTransport10UDPLen = 7 -+ -+ fieldTransport11TCPLen = 13 -+ fieldTransport11UDPLen = 10 -+) -+ -+// A Mount is a device mount parsed from /proc/[pid]/mountstats. -+type Mount struct { -+ // Name of the device. -+ Device string -+ // The mount point of the device. -+ Mount string -+ // The filesystem type used by the device. -+ Type string -+ // If available additional statistics related to this Mount. -+ // Use a type assertion to determine if additional statistics are available. -+ Stats MountStats -+} -+ -+// A MountStats is a type which contains detailed statistics for a specific -+// type of Mount. -+type MountStats interface { -+ mountStats() -+} -+ -+// A MountStatsNFS is a MountStats implementation for NFSv3 and v4 mounts. -+type MountStatsNFS struct { -+ // The version of statistics provided. -+ StatVersion string -+ // The mount options of the NFS mount. -+ Opts map[string]string -+ // The age of the NFS mount. -+ Age time.Duration -+ // Statistics related to byte counters for various operations. -+ Bytes NFSBytesStats -+ // Statistics related to various NFS event occurrences. -+ Events NFSEventsStats -+ // Statistics broken down by filesystem operation. -+ Operations []NFSOperationStats -+ // Statistics about the NFS RPC transport. -+ Transport NFSTransportStats -+} -+ -+// mountStats implements MountStats. -+func (m MountStatsNFS) mountStats() {} -+ -+// A NFSBytesStats contains statistics about the number of bytes read and written -+// by an NFS client to and from an NFS server. -+type NFSBytesStats struct { -+ // Number of bytes read using the read() syscall. -+ Read uint64 -+ // Number of bytes written using the write() syscall. -+ Write uint64 -+ // Number of bytes read using the read() syscall in O_DIRECT mode. -+ DirectRead uint64 -+ // Number of bytes written using the write() syscall in O_DIRECT mode. -+ DirectWrite uint64 -+ // Number of bytes read from the NFS server, in total. -+ ReadTotal uint64 -+ // Number of bytes written to the NFS server, in total. -+ WriteTotal uint64 -+ // Number of pages read directly via mmap()'d files. -+ ReadPages uint64 -+ // Number of pages written directly via mmap()'d files. -+ WritePages uint64 -+} -+ -+// A NFSEventsStats contains statistics about NFS event occurrences. -+type NFSEventsStats struct { -+ // Number of times cached inode attributes are re-validated from the server. -+ InodeRevalidate uint64 -+ // Number of times cached dentry nodes are re-validated from the server. -+ DnodeRevalidate uint64 -+ // Number of times an inode cache is cleared. -+ DataInvalidate uint64 -+ // Number of times cached inode attributes are invalidated. -+ AttributeInvalidate uint64 -+ // Number of times files or directories have been open()'d. -+ VFSOpen uint64 -+ // Number of times a directory lookup has occurred. -+ VFSLookup uint64 -+ // Number of times permissions have been checked. -+ VFSAccess uint64 -+ // Number of updates (and potential writes) to pages. -+ VFSUpdatePage uint64 -+ // Number of pages read directly via mmap()'d files. -+ VFSReadPage uint64 -+ // Number of times a group of pages have been read. -+ VFSReadPages uint64 -+ // Number of pages written directly via mmap()'d files. -+ VFSWritePage uint64 -+ // Number of times a group of pages have been written. -+ VFSWritePages uint64 -+ // Number of times directory entries have been read with getdents(). -+ VFSGetdents uint64 -+ // Number of times attributes have been set on inodes. -+ VFSSetattr uint64 -+ // Number of pending writes that have been forcefully flushed to the server. -+ VFSFlush uint64 -+ // Number of times fsync() has been called on directories and files. -+ VFSFsync uint64 -+ // Number of times locking has been attempted on a file. -+ VFSLock uint64 -+ // Number of times files have been closed and released. -+ VFSFileRelease uint64 -+ // Unknown. Possibly unused. -+ CongestionWait uint64 -+ // Number of times files have been truncated. -+ Truncation uint64 -+ // Number of times a file has been grown due to writes beyond its existing end. -+ WriteExtension uint64 -+ // Number of times a file was removed while still open by another process. -+ SillyRename uint64 -+ // Number of times the NFS server gave less data than expected while reading. -+ ShortRead uint64 -+ // Number of times the NFS server wrote less data than expected while writing. -+ ShortWrite uint64 -+ // Number of times the NFS server indicated EJUKEBOX; retrieving data from -+ // offline storage. -+ JukeboxDelay uint64 -+ // Number of NFS v4.1+ pNFS reads. -+ PNFSRead uint64 -+ // Number of NFS v4.1+ pNFS writes. -+ PNFSWrite uint64 -+} -+ -+// A NFSOperationStats contains statistics for a single operation. -+type NFSOperationStats struct { -+ // The name of the operation. -+ Operation string -+ // Number of requests performed for this operation. -+ Requests uint64 -+ // Number of times an actual RPC request has been transmitted for this operation. -+ Transmissions uint64 -+ // Number of times a request has had a major timeout. -+ MajorTimeouts uint64 -+ // Number of bytes sent for this operation, including RPC headers and payload. -+ BytesSent uint64 -+ // Number of bytes received for this operation, including RPC headers and payload. -+ BytesReceived uint64 -+ // Duration all requests spent queued for transmission before they were sent. -+ CumulativeQueueMilliseconds uint64 -+ // Duration it took to get a reply back after the request was transmitted. -+ CumulativeTotalResponseMilliseconds uint64 -+ // Duration from when a request was enqueued to when it was completely handled. -+ CumulativeTotalRequestMilliseconds uint64 -+ // The count of operations that complete with tk_status < 0. These statuses usually indicate error conditions. -+ Errors uint64 -+} -+ -+// A NFSTransportStats contains statistics for the NFS mount RPC requests and -+// responses. -+type NFSTransportStats struct { -+ // The transport protocol used for the NFS mount. -+ Protocol string -+ // The local port used for the NFS mount. -+ Port uint64 -+ // Number of times the client has had to establish a connection from scratch -+ // to the NFS server. -+ Bind uint64 -+ // Number of times the client has made a TCP connection to the NFS server. -+ Connect uint64 -+ // Duration (in jiffies, a kernel internal unit of time) the NFS mount has -+ // spent waiting for connections to the server to be established. -+ ConnectIdleTime uint64 -+ // Duration since the NFS mount last saw any RPC traffic. -+ IdleTimeSeconds uint64 -+ // Number of RPC requests for this mount sent to the NFS server. -+ Sends uint64 -+ // Number of RPC responses for this mount received from the NFS server. -+ Receives uint64 -+ // Number of times the NFS server sent a response with a transaction ID -+ // unknown to this client. -+ BadTransactionIDs uint64 -+ // A running counter, incremented on each request as the current difference -+ // ebetween sends and receives. -+ CumulativeActiveRequests uint64 -+ // A running counter, incremented on each request by the current backlog -+ // queue size. -+ CumulativeBacklog uint64 -+ -+ // Stats below only available with stat version 1.1. -+ -+ // Maximum number of simultaneously active RPC requests ever used. -+ MaximumRPCSlotsUsed uint64 -+ // A running counter, incremented on each request as the current size of the -+ // sending queue. -+ CumulativeSendingQueue uint64 -+ // A running counter, incremented on each request as the current size of the -+ // pending queue. -+ CumulativePendingQueue uint64 -+} -+ -+// parseMountStats parses a /proc/[pid]/mountstats file and returns a slice -+// of Mount structures containing detailed information about each mount. -+// If available, statistics for each mount are parsed as well. -+func parseMountStats(r io.Reader) ([]*Mount, error) { -+ const ( -+ device = "device" -+ statVersionPrefix = "statvers=" -+ -+ nfs3Type = "nfs" -+ nfs4Type = "nfs4" -+ ) -+ -+ var mounts []*Mount -+ -+ s := bufio.NewScanner(r) -+ for s.Scan() { -+ // Only look for device entries in this function -+ ss := strings.Fields(string(s.Bytes())) -+ if len(ss) == 0 || ss[0] != device { -+ continue -+ } -+ -+ m, err := parseMount(ss) -+ if err != nil { -+ return nil, err -+ } -+ -+ // Does this mount also possess statistics information? -+ if len(ss) > deviceEntryLen { -+ // Only NFSv3 and v4 are supported for parsing statistics -+ if m.Type != nfs3Type && m.Type != nfs4Type { -+ return nil, fmt.Errorf("cannot parse MountStats for fstype %q", m.Type) -+ } -+ -+ statVersion := strings.TrimPrefix(ss[8], statVersionPrefix) -+ -+ stats, err := parseMountStatsNFS(s, statVersion) -+ if err != nil { -+ return nil, err -+ } -+ -+ m.Stats = stats -+ } -+ -+ mounts = append(mounts, m) -+ } -+ -+ return mounts, s.Err() -+} -+ -+// parseMount parses an entry in /proc/[pid]/mountstats in the format: -+// device [device] mounted on [mount] with fstype [type] -+func parseMount(ss []string) (*Mount, error) { -+ if len(ss) < deviceEntryLen { -+ return nil, fmt.Errorf("invalid device entry: %v", ss) -+ } -+ -+ // Check for specific words appearing at specific indices to ensure -+ // the format is consistent with what we expect -+ format := []struct { -+ i int -+ s string -+ }{ -+ {i: 0, s: "device"}, -+ {i: 2, s: "mounted"}, -+ {i: 3, s: "on"}, -+ {i: 5, s: "with"}, -+ {i: 6, s: "fstype"}, -+ } -+ -+ for _, f := range format { -+ if ss[f.i] != f.s { -+ return nil, fmt.Errorf("invalid device entry: %v", ss) -+ } -+ } -+ -+ return &Mount{ -+ Device: ss[1], -+ Mount: ss[4], -+ Type: ss[7], -+ }, nil -+} -+ -+// parseMountStatsNFS parses a MountStatsNFS by scanning additional information -+// related to NFS statistics. -+func parseMountStatsNFS(s *bufio.Scanner, statVersion string) (*MountStatsNFS, error) { -+ // Field indicators for parsing specific types of data -+ const ( -+ fieldOpts = "opts:" -+ fieldAge = "age:" -+ fieldBytes = "bytes:" -+ fieldEvents = "events:" -+ fieldPerOpStats = "per-op" -+ fieldTransport = "xprt:" -+ ) -+ -+ stats := &MountStatsNFS{ -+ StatVersion: statVersion, -+ } -+ -+ for s.Scan() { -+ ss := strings.Fields(string(s.Bytes())) -+ if len(ss) == 0 { -+ break -+ } -+ -+ switch ss[0] { -+ case fieldOpts: -+ if len(ss) < 2 { -+ return nil, fmt.Errorf("not enough information for NFS stats: %v", ss) -+ } -+ if stats.Opts == nil { -+ stats.Opts = map[string]string{} -+ } -+ for _, opt := range strings.Split(ss[1], ",") { -+ split := strings.Split(opt, "=") -+ if len(split) == 2 { -+ stats.Opts[split[0]] = split[1] -+ } else { -+ stats.Opts[opt] = "" -+ } -+ } -+ case fieldAge: -+ if len(ss) < 2 { -+ return nil, fmt.Errorf("not enough information for NFS stats: %v", ss) -+ } -+ // Age integer is in seconds -+ d, err := time.ParseDuration(ss[1] + "s") -+ if err != nil { -+ return nil, err -+ } -+ -+ stats.Age = d -+ case fieldBytes: -+ if len(ss) < 2 { -+ return nil, fmt.Errorf("not enough information for NFS stats: %v", ss) -+ } -+ bstats, err := parseNFSBytesStats(ss[1:]) -+ if err != nil { -+ return nil, err -+ } -+ -+ stats.Bytes = *bstats -+ case fieldEvents: -+ if len(ss) < 2 { -+ return nil, fmt.Errorf("not enough information for NFS stats: %v", ss) -+ } -+ estats, err := parseNFSEventsStats(ss[1:]) -+ if err != nil { -+ return nil, err -+ } -+ -+ stats.Events = *estats -+ case fieldTransport: -+ if len(ss) < 3 { -+ return nil, fmt.Errorf("not enough information for NFS transport stats: %v", ss) -+ } -+ -+ tstats, err := parseNFSTransportStats(ss[1:], statVersion) -+ if err != nil { -+ return nil, err -+ } -+ -+ stats.Transport = *tstats -+ } -+ -+ // When encountering "per-operation statistics", we must break this -+ // loop and parse them separately to ensure we can terminate parsing -+ // before reaching another device entry; hence why this 'if' statement -+ // is not just another switch case -+ if ss[0] == fieldPerOpStats { -+ break -+ } -+ } -+ -+ if err := s.Err(); err != nil { -+ return nil, err -+ } -+ -+ // NFS per-operation stats appear last before the next device entry -+ perOpStats, err := parseNFSOperationStats(s) -+ if err != nil { -+ return nil, err -+ } -+ -+ stats.Operations = perOpStats -+ -+ return stats, nil -+} -+ -+// parseNFSBytesStats parses a NFSBytesStats line using an input set of -+// integer fields. -+func parseNFSBytesStats(ss []string) (*NFSBytesStats, error) { -+ if len(ss) != fieldBytesLen { -+ return nil, fmt.Errorf("invalid NFS bytes stats: %v", ss) -+ } -+ -+ ns := make([]uint64, 0, fieldBytesLen) -+ for _, s := range ss { -+ n, err := strconv.ParseUint(s, 10, 64) -+ if err != nil { -+ return nil, err -+ } -+ -+ ns = append(ns, n) -+ } -+ -+ return &NFSBytesStats{ -+ Read: ns[0], -+ Write: ns[1], -+ DirectRead: ns[2], -+ DirectWrite: ns[3], -+ ReadTotal: ns[4], -+ WriteTotal: ns[5], -+ ReadPages: ns[6], -+ WritePages: ns[7], -+ }, nil -+} -+ -+// parseNFSEventsStats parses a NFSEventsStats line using an input set of -+// integer fields. -+func parseNFSEventsStats(ss []string) (*NFSEventsStats, error) { -+ if len(ss) != fieldEventsLen { -+ return nil, fmt.Errorf("invalid NFS events stats: %v", ss) -+ } -+ -+ ns := make([]uint64, 0, fieldEventsLen) -+ for _, s := range ss { -+ n, err := strconv.ParseUint(s, 10, 64) -+ if err != nil { -+ return nil, err -+ } -+ -+ ns = append(ns, n) -+ } -+ -+ return &NFSEventsStats{ -+ InodeRevalidate: ns[0], -+ DnodeRevalidate: ns[1], -+ DataInvalidate: ns[2], -+ AttributeInvalidate: ns[3], -+ VFSOpen: ns[4], -+ VFSLookup: ns[5], -+ VFSAccess: ns[6], -+ VFSUpdatePage: ns[7], -+ VFSReadPage: ns[8], -+ VFSReadPages: ns[9], -+ VFSWritePage: ns[10], -+ VFSWritePages: ns[11], -+ VFSGetdents: ns[12], -+ VFSSetattr: ns[13], -+ VFSFlush: ns[14], -+ VFSFsync: ns[15], -+ VFSLock: ns[16], -+ VFSFileRelease: ns[17], -+ CongestionWait: ns[18], -+ Truncation: ns[19], -+ WriteExtension: ns[20], -+ SillyRename: ns[21], -+ ShortRead: ns[22], -+ ShortWrite: ns[23], -+ JukeboxDelay: ns[24], -+ PNFSRead: ns[25], -+ PNFSWrite: ns[26], -+ }, nil -+} -+ -+// parseNFSOperationStats parses a slice of NFSOperationStats by scanning -+// additional information about per-operation statistics until an empty -+// line is reached. -+func parseNFSOperationStats(s *bufio.Scanner) ([]NFSOperationStats, error) { -+ const ( -+ // Minimum number of expected fields in each per-operation statistics set -+ minFields = 9 -+ ) -+ -+ var ops []NFSOperationStats -+ -+ for s.Scan() { -+ ss := strings.Fields(string(s.Bytes())) -+ if len(ss) == 0 { -+ // Must break when reading a blank line after per-operation stats to -+ // enable top-level function to parse the next device entry -+ break -+ } -+ -+ if len(ss) < minFields { -+ return nil, fmt.Errorf("invalid NFS per-operations stats: %v", ss) -+ } -+ -+ // Skip string operation name for integers -+ ns := make([]uint64, 0, minFields-1) -+ for _, st := range ss[1:] { -+ n, err := strconv.ParseUint(st, 10, 64) -+ if err != nil { -+ return nil, err -+ } -+ -+ ns = append(ns, n) -+ } -+ -+ opStats := NFSOperationStats{ -+ Operation: strings.TrimSuffix(ss[0], ":"), -+ Requests: ns[0], -+ Transmissions: ns[1], -+ MajorTimeouts: ns[2], -+ BytesSent: ns[3], -+ BytesReceived: ns[4], -+ CumulativeQueueMilliseconds: ns[5], -+ CumulativeTotalResponseMilliseconds: ns[6], -+ CumulativeTotalRequestMilliseconds: ns[7], -+ } -+ -+ if len(ns) > 8 { -+ opStats.Errors = ns[8] -+ } -+ -+ ops = append(ops, opStats) -+ } -+ -+ return ops, s.Err() -+} -+ -+// parseNFSTransportStats parses a NFSTransportStats line using an input set of -+// integer fields matched to a specific stats version. -+func parseNFSTransportStats(ss []string, statVersion string) (*NFSTransportStats, error) { -+ // Extract the protocol field. It is the only string value in the line -+ protocol := ss[0] -+ ss = ss[1:] -+ -+ switch statVersion { -+ case statVersion10: -+ var expectedLength int -+ if protocol == "tcp" { -+ expectedLength = fieldTransport10TCPLen -+ } else if protocol == "udp" { -+ expectedLength = fieldTransport10UDPLen -+ } else { -+ return nil, fmt.Errorf("invalid NFS protocol \"%s\" in stats 1.0 statement: %v", protocol, ss) -+ } -+ if len(ss) != expectedLength { -+ return nil, fmt.Errorf("invalid NFS transport stats 1.0 statement: %v", ss) -+ } -+ case statVersion11: -+ var expectedLength int -+ if protocol == "tcp" { -+ expectedLength = fieldTransport11TCPLen -+ } else if protocol == "udp" { -+ expectedLength = fieldTransport11UDPLen -+ } else { -+ return nil, fmt.Errorf("invalid NFS protocol \"%s\" in stats 1.1 statement: %v", protocol, ss) -+ } -+ if len(ss) != expectedLength { -+ return nil, fmt.Errorf("invalid NFS transport stats 1.1 statement: %v", ss) -+ } -+ default: -+ return nil, fmt.Errorf("unrecognized NFS transport stats version: %q", statVersion) -+ } -+ -+ // Allocate enough for v1.1 stats since zero value for v1.1 stats will be okay -+ // in a v1.0 response. Since the stat length is bigger for TCP stats, we use -+ // the TCP length here. -+ // -+ // Note: slice length must be set to length of v1.1 stats to avoid a panic when -+ // only v1.0 stats are present. -+ // See: https://github.com/prometheus/node_exporter/issues/571. -+ ns := make([]uint64, fieldTransport11TCPLen) -+ for i, s := range ss { -+ n, err := strconv.ParseUint(s, 10, 64) -+ if err != nil { -+ return nil, err -+ } -+ -+ ns[i] = n -+ } -+ -+ // The fields differ depending on the transport protocol (TCP or UDP) -+ // From https://utcc.utoronto.ca/%7Ecks/space/blog/linux/NFSMountstatsXprt -+ // -+ // For the udp RPC transport there is no connection count, connect idle time, -+ // or idle time (fields #3, #4, and #5); all other fields are the same. So -+ // we set them to 0 here. -+ if protocol == "udp" { -+ ns = append(ns[:2], append(make([]uint64, 3), ns[2:]...)...) -+ } -+ -+ return &NFSTransportStats{ -+ Protocol: protocol, -+ Port: ns[0], -+ Bind: ns[1], -+ Connect: ns[2], -+ ConnectIdleTime: ns[3], -+ IdleTimeSeconds: ns[4], -+ Sends: ns[5], -+ Receives: ns[6], -+ BadTransactionIDs: ns[7], -+ CumulativeActiveRequests: ns[8], -+ CumulativeBacklog: ns[9], -+ MaximumRPCSlotsUsed: ns[10], -+ CumulativeSendingQueue: ns[11], -+ CumulativePendingQueue: ns[12], -+ }, nil -+} -diff --git a/vendor/github.com/prometheus/procfs/net_conntrackstat.go b/vendor/github.com/prometheus/procfs/net_conntrackstat.go -new file mode 100755 -index 0000000..8300dac ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/net_conntrackstat.go -@@ -0,0 +1,153 @@ -+// Copyright 2020 The Prometheus 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 procfs -+ -+import ( -+ "bufio" -+ "bytes" -+ "fmt" -+ "io" -+ "strconv" -+ "strings" -+ -+ "github.com/prometheus/procfs/internal/util" -+) -+ -+// A ConntrackStatEntry represents one line from net/stat/nf_conntrack -+// and contains netfilter conntrack statistics at one CPU core. -+type ConntrackStatEntry struct { -+ Entries uint64 -+ Found uint64 -+ Invalid uint64 -+ Ignore uint64 -+ Insert uint64 -+ InsertFailed uint64 -+ Drop uint64 -+ EarlyDrop uint64 -+ SearchRestart uint64 -+} -+ -+// ConntrackStat retrieves netfilter's conntrack statistics, split by CPU cores. -+func (fs FS) ConntrackStat() ([]ConntrackStatEntry, error) { -+ return readConntrackStat(fs.proc.Path("net", "stat", "nf_conntrack")) -+} -+ -+// Parses a slice of ConntrackStatEntries from the given filepath. -+func readConntrackStat(path string) ([]ConntrackStatEntry, error) { -+ // This file is small and can be read with one syscall. -+ b, err := util.ReadFileNoStat(path) -+ if err != nil { -+ // Do not wrap this error so the caller can detect os.IsNotExist and -+ // similar conditions. -+ return nil, err -+ } -+ -+ stat, err := parseConntrackStat(bytes.NewReader(b)) -+ if err != nil { -+ return nil, fmt.Errorf("failed to read conntrack stats from %q: %w", path, err) -+ } -+ -+ return stat, nil -+} -+ -+// Reads the contents of a conntrack statistics file and parses a slice of ConntrackStatEntries. -+func parseConntrackStat(r io.Reader) ([]ConntrackStatEntry, error) { -+ var entries []ConntrackStatEntry -+ -+ scanner := bufio.NewScanner(r) -+ scanner.Scan() -+ for scanner.Scan() { -+ fields := strings.Fields(scanner.Text()) -+ conntrackEntry, err := parseConntrackStatEntry(fields) -+ if err != nil { -+ return nil, err -+ } -+ entries = append(entries, *conntrackEntry) -+ } -+ -+ return entries, nil -+} -+ -+// Parses a ConntrackStatEntry from given array of fields. -+func parseConntrackStatEntry(fields []string) (*ConntrackStatEntry, error) { -+ if len(fields) != 17 { -+ return nil, fmt.Errorf("invalid conntrackstat entry, missing fields") -+ } -+ entry := &ConntrackStatEntry{} -+ -+ entries, err := parseConntrackStatField(fields[0]) -+ if err != nil { -+ return nil, err -+ } -+ entry.Entries = entries -+ -+ found, err := parseConntrackStatField(fields[2]) -+ if err != nil { -+ return nil, err -+ } -+ entry.Found = found -+ -+ invalid, err := parseConntrackStatField(fields[4]) -+ if err != nil { -+ return nil, err -+ } -+ entry.Invalid = invalid -+ -+ ignore, err := parseConntrackStatField(fields[5]) -+ if err != nil { -+ return nil, err -+ } -+ entry.Ignore = ignore -+ -+ insert, err := parseConntrackStatField(fields[8]) -+ if err != nil { -+ return nil, err -+ } -+ entry.Insert = insert -+ -+ insertFailed, err := parseConntrackStatField(fields[9]) -+ if err != nil { -+ return nil, err -+ } -+ entry.InsertFailed = insertFailed -+ -+ drop, err := parseConntrackStatField(fields[10]) -+ if err != nil { -+ return nil, err -+ } -+ entry.Drop = drop -+ -+ earlyDrop, err := parseConntrackStatField(fields[11]) -+ if err != nil { -+ return nil, err -+ } -+ entry.EarlyDrop = earlyDrop -+ -+ searchRestart, err := parseConntrackStatField(fields[16]) -+ if err != nil { -+ return nil, err -+ } -+ entry.SearchRestart = searchRestart -+ -+ return entry, nil -+} -+ -+// Parses a uint64 from given hex in string. -+func parseConntrackStatField(field string) (uint64, error) { -+ val, err := strconv.ParseUint(field, 16, 64) -+ if err != nil { -+ return 0, fmt.Errorf("couldn't parse %q field: %w", field, err) -+ } -+ return val, err -+} -diff --git a/vendor/github.com/prometheus/procfs/net_dev.go b/vendor/github.com/prometheus/procfs/net_dev.go -new file mode 100755 -index 0000000..e66208a ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/net_dev.go -@@ -0,0 +1,205 @@ -+// Copyright 2018 The Prometheus 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 procfs -+ -+import ( -+ "bufio" -+ "errors" -+ "os" -+ "sort" -+ "strconv" -+ "strings" -+) -+ -+// NetDevLine is single line parsed from /proc/net/dev or /proc/[pid]/net/dev. -+type NetDevLine struct { -+ Name string `json:"name"` // The name of the interface. -+ RxBytes uint64 `json:"rx_bytes"` // Cumulative count of bytes received. -+ RxPackets uint64 `json:"rx_packets"` // Cumulative count of packets received. -+ RxErrors uint64 `json:"rx_errors"` // Cumulative count of receive errors encountered. -+ RxDropped uint64 `json:"rx_dropped"` // Cumulative count of packets dropped while receiving. -+ RxFIFO uint64 `json:"rx_fifo"` // Cumulative count of FIFO buffer errors. -+ RxFrame uint64 `json:"rx_frame"` // Cumulative count of packet framing errors. -+ RxCompressed uint64 `json:"rx_compressed"` // Cumulative count of compressed packets received by the device driver. -+ RxMulticast uint64 `json:"rx_multicast"` // Cumulative count of multicast frames received by the device driver. -+ TxBytes uint64 `json:"tx_bytes"` // Cumulative count of bytes transmitted. -+ TxPackets uint64 `json:"tx_packets"` // Cumulative count of packets transmitted. -+ TxErrors uint64 `json:"tx_errors"` // Cumulative count of transmit errors encountered. -+ TxDropped uint64 `json:"tx_dropped"` // Cumulative count of packets dropped while transmitting. -+ TxFIFO uint64 `json:"tx_fifo"` // Cumulative count of FIFO buffer errors. -+ TxCollisions uint64 `json:"tx_collisions"` // Cumulative count of collisions detected on the interface. -+ TxCarrier uint64 `json:"tx_carrier"` // Cumulative count of carrier losses detected by the device driver. -+ TxCompressed uint64 `json:"tx_compressed"` // Cumulative count of compressed packets transmitted by the device driver. -+} -+ -+// NetDev is parsed from /proc/net/dev or /proc/[pid]/net/dev. The map keys -+// are interface names. -+type NetDev map[string]NetDevLine -+ -+// NetDev returns kernel/system statistics read from /proc/net/dev. -+func (fs FS) NetDev() (NetDev, error) { -+ return newNetDev(fs.proc.Path("net/dev")) -+} -+ -+// NetDev returns kernel/system statistics read from /proc/[pid]/net/dev. -+func (p Proc) NetDev() (NetDev, error) { -+ return newNetDev(p.path("net/dev")) -+} -+ -+// newNetDev creates a new NetDev from the contents of the given file. -+func newNetDev(file string) (NetDev, error) { -+ f, err := os.Open(file) -+ if err != nil { -+ return NetDev{}, err -+ } -+ defer f.Close() -+ -+ netDev := NetDev{} -+ s := bufio.NewScanner(f) -+ for n := 0; s.Scan(); n++ { -+ // Skip the 2 header lines. -+ if n < 2 { -+ continue -+ } -+ -+ line, err := netDev.parseLine(s.Text()) -+ if err != nil { -+ return netDev, err -+ } -+ -+ netDev[line.Name] = *line -+ } -+ -+ return netDev, s.Err() -+} -+ -+// parseLine parses a single line from the /proc/net/dev file. Header lines -+// must be filtered prior to calling this method. -+func (netDev NetDev) parseLine(rawLine string) (*NetDevLine, error) { -+ idx := strings.LastIndex(rawLine, ":") -+ if idx == -1 { -+ return nil, errors.New("invalid net/dev line, missing colon") -+ } -+ fields := strings.Fields(strings.TrimSpace(rawLine[idx+1:])) -+ -+ var err error -+ line := &NetDevLine{} -+ -+ // Interface Name -+ line.Name = strings.TrimSpace(rawLine[:idx]) -+ if line.Name == "" { -+ return nil, errors.New("invalid net/dev line, empty interface name") -+ } -+ -+ // RX -+ line.RxBytes, err = strconv.ParseUint(fields[0], 10, 64) -+ if err != nil { -+ return nil, err -+ } -+ line.RxPackets, err = strconv.ParseUint(fields[1], 10, 64) -+ if err != nil { -+ return nil, err -+ } -+ line.RxErrors, err = strconv.ParseUint(fields[2], 10, 64) -+ if err != nil { -+ return nil, err -+ } -+ line.RxDropped, err = strconv.ParseUint(fields[3], 10, 64) -+ if err != nil { -+ return nil, err -+ } -+ line.RxFIFO, err = strconv.ParseUint(fields[4], 10, 64) -+ if err != nil { -+ return nil, err -+ } -+ line.RxFrame, err = strconv.ParseUint(fields[5], 10, 64) -+ if err != nil { -+ return nil, err -+ } -+ line.RxCompressed, err = strconv.ParseUint(fields[6], 10, 64) -+ if err != nil { -+ return nil, err -+ } -+ line.RxMulticast, err = strconv.ParseUint(fields[7], 10, 64) -+ if err != nil { -+ return nil, err -+ } -+ -+ // TX -+ line.TxBytes, err = strconv.ParseUint(fields[8], 10, 64) -+ if err != nil { -+ return nil, err -+ } -+ line.TxPackets, err = strconv.ParseUint(fields[9], 10, 64) -+ if err != nil { -+ return nil, err -+ } -+ line.TxErrors, err = strconv.ParseUint(fields[10], 10, 64) -+ if err != nil { -+ return nil, err -+ } -+ line.TxDropped, err = strconv.ParseUint(fields[11], 10, 64) -+ if err != nil { -+ return nil, err -+ } -+ line.TxFIFO, err = strconv.ParseUint(fields[12], 10, 64) -+ if err != nil { -+ return nil, err -+ } -+ line.TxCollisions, err = strconv.ParseUint(fields[13], 10, 64) -+ if err != nil { -+ return nil, err -+ } -+ line.TxCarrier, err = strconv.ParseUint(fields[14], 10, 64) -+ if err != nil { -+ return nil, err -+ } -+ line.TxCompressed, err = strconv.ParseUint(fields[15], 10, 64) -+ if err != nil { -+ return nil, err -+ } -+ -+ return line, nil -+} -+ -+// Total aggregates the values across interfaces and returns a new NetDevLine. -+// The Name field will be a sorted comma separated list of interface names. -+func (netDev NetDev) Total() NetDevLine { -+ total := NetDevLine{} -+ -+ names := make([]string, 0, len(netDev)) -+ for _, ifc := range netDev { -+ names = append(names, ifc.Name) -+ total.RxBytes += ifc.RxBytes -+ total.RxPackets += ifc.RxPackets -+ total.RxErrors += ifc.RxErrors -+ total.RxDropped += ifc.RxDropped -+ total.RxFIFO += ifc.RxFIFO -+ total.RxFrame += ifc.RxFrame -+ total.RxCompressed += ifc.RxCompressed -+ total.RxMulticast += ifc.RxMulticast -+ total.TxBytes += ifc.TxBytes -+ total.TxPackets += ifc.TxPackets -+ total.TxErrors += ifc.TxErrors -+ total.TxDropped += ifc.TxDropped -+ total.TxFIFO += ifc.TxFIFO -+ total.TxCollisions += ifc.TxCollisions -+ total.TxCarrier += ifc.TxCarrier -+ total.TxCompressed += ifc.TxCompressed -+ } -+ sort.Strings(names) -+ total.Name = strings.Join(names, ", ") -+ -+ return total -+} -diff --git a/vendor/github.com/prometheus/procfs/net_ip_socket.go b/vendor/github.com/prometheus/procfs/net_ip_socket.go -new file mode 100755 -index 0000000..7fd57d7 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/net_ip_socket.go -@@ -0,0 +1,226 @@ -+// Copyright 2020 The Prometheus 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 procfs -+ -+import ( -+ "bufio" -+ "encoding/hex" -+ "fmt" -+ "io" -+ "net" -+ "os" -+ "strconv" -+ "strings" -+) -+ -+const ( -+ // readLimit is used by io.LimitReader while reading the content of the -+ // /proc/net/udp{,6} files. The number of lines inside such a file is dynamic -+ // as each line represents a single used socket. -+ // In theory, the number of available sockets is 65535 (2^16 - 1) per IP. -+ // With e.g. 150 Byte per line and the maximum number of 65535, -+ // the reader needs to handle 150 Byte * 65535 =~ 10 MB for a single IP. -+ readLimit = 4294967296 // Byte -> 4 GiB -+) -+ -+// This contains generic data structures for both udp and tcp sockets. -+type ( -+ // NetIPSocket represents the contents of /proc/net/{t,u}dp{,6} file without the header. -+ NetIPSocket []*netIPSocketLine -+ -+ // NetIPSocketSummary provides already computed values like the total queue lengths or -+ // the total number of used sockets. In contrast to NetIPSocket it does not collect -+ // the parsed lines into a slice. -+ NetIPSocketSummary struct { -+ // TxQueueLength shows the total queue length of all parsed tx_queue lengths. -+ TxQueueLength uint64 -+ // RxQueueLength shows the total queue length of all parsed rx_queue lengths. -+ RxQueueLength uint64 -+ // UsedSockets shows the total number of parsed lines representing the -+ // number of used sockets. -+ UsedSockets uint64 -+ } -+ -+ // netIPSocketLine represents the fields parsed from a single line -+ // in /proc/net/{t,u}dp{,6}. Fields which are not used by IPSocket are skipped. -+ // For the proc file format details, see https://linux.die.net/man/5/proc. -+ netIPSocketLine struct { -+ Sl uint64 -+ LocalAddr net.IP -+ LocalPort uint64 -+ RemAddr net.IP -+ RemPort uint64 -+ St uint64 -+ TxQueue uint64 -+ RxQueue uint64 -+ UID uint64 -+ Inode uint64 -+ } -+) -+ -+func newNetIPSocket(file string) (NetIPSocket, error) { -+ f, err := os.Open(file) -+ if err != nil { -+ return nil, err -+ } -+ defer f.Close() -+ -+ var netIPSocket NetIPSocket -+ -+ lr := io.LimitReader(f, readLimit) -+ s := bufio.NewScanner(lr) -+ s.Scan() // skip first line with headers -+ for s.Scan() { -+ fields := strings.Fields(s.Text()) -+ line, err := parseNetIPSocketLine(fields) -+ if err != nil { -+ return nil, err -+ } -+ netIPSocket = append(netIPSocket, line) -+ } -+ if err := s.Err(); err != nil { -+ return nil, err -+ } -+ return netIPSocket, nil -+} -+ -+// newNetIPSocketSummary creates a new NetIPSocket{,6} from the contents of the given file. -+func newNetIPSocketSummary(file string) (*NetIPSocketSummary, error) { -+ f, err := os.Open(file) -+ if err != nil { -+ return nil, err -+ } -+ defer f.Close() -+ -+ var netIPSocketSummary NetIPSocketSummary -+ -+ lr := io.LimitReader(f, readLimit) -+ s := bufio.NewScanner(lr) -+ s.Scan() // skip first line with headers -+ for s.Scan() { -+ fields := strings.Fields(s.Text()) -+ line, err := parseNetIPSocketLine(fields) -+ if err != nil { -+ return nil, err -+ } -+ netIPSocketSummary.TxQueueLength += line.TxQueue -+ netIPSocketSummary.RxQueueLength += line.RxQueue -+ netIPSocketSummary.UsedSockets++ -+ } -+ if err := s.Err(); err != nil { -+ return nil, err -+ } -+ return &netIPSocketSummary, nil -+} -+ -+// the /proc/net/{t,u}dp{,6} files are network byte order for ipv4 and for ipv6 the address is four words consisting of four bytes each. In each of those four words the four bytes are written in reverse order. -+ -+func parseIP(hexIP string) (net.IP, error) { -+ var byteIP []byte -+ byteIP, err := hex.DecodeString(hexIP) -+ if err != nil { -+ return nil, fmt.Errorf("cannot parse address field in socket line %q", hexIP) -+ } -+ switch len(byteIP) { -+ case 4: -+ return net.IP{byteIP[3], byteIP[2], byteIP[1], byteIP[0]}, nil -+ case 16: -+ i := net.IP{ -+ byteIP[3], byteIP[2], byteIP[1], byteIP[0], -+ byteIP[7], byteIP[6], byteIP[5], byteIP[4], -+ byteIP[11], byteIP[10], byteIP[9], byteIP[8], -+ byteIP[15], byteIP[14], byteIP[13], byteIP[12], -+ } -+ return i, nil -+ default: -+ return nil, fmt.Errorf("Unable to parse IP %s", hexIP) -+ } -+} -+ -+// parseNetIPSocketLine parses a single line, represented by a list of fields. -+func parseNetIPSocketLine(fields []string) (*netIPSocketLine, error) { -+ line := &netIPSocketLine{} -+ if len(fields) < 10 { -+ return nil, fmt.Errorf( -+ "cannot parse net socket line as it has less then 10 columns %q", -+ strings.Join(fields, " "), -+ ) -+ } -+ var err error // parse error -+ -+ // sl -+ s := strings.Split(fields[0], ":") -+ if len(s) != 2 { -+ return nil, fmt.Errorf("cannot parse sl field in socket line %q", fields[0]) -+ } -+ -+ if line.Sl, err = strconv.ParseUint(s[0], 0, 64); err != nil { -+ return nil, fmt.Errorf("cannot parse sl value in socket line: %w", err) -+ } -+ // local_address -+ l := strings.Split(fields[1], ":") -+ if len(l) != 2 { -+ return nil, fmt.Errorf("cannot parse local_address field in socket line %q", fields[1]) -+ } -+ if line.LocalAddr, err = parseIP(l[0]); err != nil { -+ return nil, err -+ } -+ if line.LocalPort, err = strconv.ParseUint(l[1], 16, 64); err != nil { -+ return nil, fmt.Errorf("cannot parse local_address port value in socket line: %w", err) -+ } -+ -+ // remote_address -+ r := strings.Split(fields[2], ":") -+ if len(r) != 2 { -+ return nil, fmt.Errorf("cannot parse rem_address field in socket line %q", fields[1]) -+ } -+ if line.RemAddr, err = parseIP(r[0]); err != nil { -+ return nil, err -+ } -+ if line.RemPort, err = strconv.ParseUint(r[1], 16, 64); err != nil { -+ return nil, fmt.Errorf("cannot parse rem_address port value in socket line: %w", err) -+ } -+ -+ // st -+ if line.St, err = strconv.ParseUint(fields[3], 16, 64); err != nil { -+ return nil, fmt.Errorf("cannot parse st value in socket line: %w", err) -+ } -+ -+ // tx_queue and rx_queue -+ q := strings.Split(fields[4], ":") -+ if len(q) != 2 { -+ return nil, fmt.Errorf( -+ "cannot parse tx/rx queues in socket line as it has a missing colon %q", -+ fields[4], -+ ) -+ } -+ if line.TxQueue, err = strconv.ParseUint(q[0], 16, 64); err != nil { -+ return nil, fmt.Errorf("cannot parse tx_queue value in socket line: %w", err) -+ } -+ if line.RxQueue, err = strconv.ParseUint(q[1], 16, 64); err != nil { -+ return nil, fmt.Errorf("cannot parse rx_queue value in socket line: %w", err) -+ } -+ -+ // uid -+ if line.UID, err = strconv.ParseUint(fields[7], 0, 64); err != nil { -+ return nil, fmt.Errorf("cannot parse uid value in socket line: %w", err) -+ } -+ -+ // inode -+ if line.Inode, err = strconv.ParseUint(fields[9], 0, 64); err != nil { -+ return nil, fmt.Errorf("cannot parse inode value in socket line: %w", err) -+ } -+ -+ return line, nil -+} -diff --git a/vendor/github.com/prometheus/procfs/net_protocols.go b/vendor/github.com/prometheus/procfs/net_protocols.go -new file mode 100755 -index 0000000..374b6f7 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/net_protocols.go -@@ -0,0 +1,180 @@ -+// Copyright 2020 The Prometheus 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 procfs -+ -+import ( -+ "bufio" -+ "bytes" -+ "fmt" -+ "strconv" -+ "strings" -+ -+ "github.com/prometheus/procfs/internal/util" -+) -+ -+// NetProtocolStats stores the contents from /proc/net/protocols. -+type NetProtocolStats map[string]NetProtocolStatLine -+ -+// NetProtocolStatLine contains a single line parsed from /proc/net/protocols. We -+// only care about the first six columns as the rest are not likely to change -+// and only serve to provide a set of capabilities for each protocol. -+type NetProtocolStatLine struct { -+ Name string // 0 The name of the protocol -+ Size uint64 // 1 The size, in bytes, of a given protocol structure. e.g. sizeof(struct tcp_sock) or sizeof(struct unix_sock) -+ Sockets int64 // 2 Number of sockets in use by this protocol -+ Memory int64 // 3 Number of 4KB pages allocated by all sockets of this protocol -+ Pressure int // 4 This is either yes, no, or NI (not implemented). For the sake of simplicity we treat NI as not experiencing memory pressure. -+ MaxHeader uint64 // 5 Protocol specific max header size -+ Slab bool // 6 Indicates whether or not memory is allocated from the SLAB -+ ModuleName string // 7 The name of the module that implemented this protocol or "kernel" if not from a module -+ Capabilities NetProtocolCapabilities -+} -+ -+// NetProtocolCapabilities contains a list of capabilities for each protocol. -+type NetProtocolCapabilities struct { -+ Close bool // 8 -+ Connect bool // 9 -+ Disconnect bool // 10 -+ Accept bool // 11 -+ IoCtl bool // 12 -+ Init bool // 13 -+ Destroy bool // 14 -+ Shutdown bool // 15 -+ SetSockOpt bool // 16 -+ GetSockOpt bool // 17 -+ SendMsg bool // 18 -+ RecvMsg bool // 19 -+ SendPage bool // 20 -+ Bind bool // 21 -+ BacklogRcv bool // 22 -+ Hash bool // 23 -+ UnHash bool // 24 -+ GetPort bool // 25 -+ EnterMemoryPressure bool // 26 -+} -+ -+// NetProtocols reads stats from /proc/net/protocols and returns a map of -+// PortocolStatLine entries. As of this writing no official Linux Documentation -+// exists, however the source is fairly self-explanatory and the format seems -+// stable since its introduction in 2.6.12-rc2 -+// Linux 2.6.12-rc2 - https://elixir.bootlin.com/linux/v2.6.12-rc2/source/net/core/sock.c#L1452 -+// Linux 5.10 - https://elixir.bootlin.com/linux/v5.10.4/source/net/core/sock.c#L3586 -+func (fs FS) NetProtocols() (NetProtocolStats, error) { -+ data, err := util.ReadFileNoStat(fs.proc.Path("net/protocols")) -+ if err != nil { -+ return NetProtocolStats{}, err -+ } -+ return parseNetProtocols(bufio.NewScanner(bytes.NewReader(data))) -+} -+ -+func parseNetProtocols(s *bufio.Scanner) (NetProtocolStats, error) { -+ nps := NetProtocolStats{} -+ -+ // Skip the header line -+ s.Scan() -+ -+ for s.Scan() { -+ line, err := nps.parseLine(s.Text()) -+ if err != nil { -+ return NetProtocolStats{}, err -+ } -+ -+ nps[line.Name] = *line -+ } -+ return nps, nil -+} -+ -+func (ps NetProtocolStats) parseLine(rawLine string) (*NetProtocolStatLine, error) { -+ line := &NetProtocolStatLine{Capabilities: NetProtocolCapabilities{}} -+ var err error -+ const enabled = "yes" -+ const disabled = "no" -+ -+ fields := strings.Fields(rawLine) -+ line.Name = fields[0] -+ line.Size, err = strconv.ParseUint(fields[1], 10, 64) -+ if err != nil { -+ return nil, err -+ } -+ line.Sockets, err = strconv.ParseInt(fields[2], 10, 64) -+ if err != nil { -+ return nil, err -+ } -+ line.Memory, err = strconv.ParseInt(fields[3], 10, 64) -+ if err != nil { -+ return nil, err -+ } -+ if fields[4] == enabled { -+ line.Pressure = 1 -+ } else if fields[4] == disabled { -+ line.Pressure = 0 -+ } else { -+ line.Pressure = -1 -+ } -+ line.MaxHeader, err = strconv.ParseUint(fields[5], 10, 64) -+ if err != nil { -+ return nil, err -+ } -+ if fields[6] == enabled { -+ line.Slab = true -+ } else if fields[6] == disabled { -+ line.Slab = false -+ } else { -+ return nil, fmt.Errorf("unable to parse capability for protocol: %s", line.Name) -+ } -+ line.ModuleName = fields[7] -+ -+ err = line.Capabilities.parseCapabilities(fields[8:]) -+ if err != nil { -+ return nil, err -+ } -+ -+ return line, nil -+} -+ -+func (pc *NetProtocolCapabilities) parseCapabilities(capabilities []string) error { -+ // The capabilities are all bools so we can loop over to map them -+ capabilityFields := [...]*bool{ -+ &pc.Close, -+ &pc.Connect, -+ &pc.Disconnect, -+ &pc.Accept, -+ &pc.IoCtl, -+ &pc.Init, -+ &pc.Destroy, -+ &pc.Shutdown, -+ &pc.SetSockOpt, -+ &pc.GetSockOpt, -+ &pc.SendMsg, -+ &pc.RecvMsg, -+ &pc.SendPage, -+ &pc.Bind, -+ &pc.BacklogRcv, -+ &pc.Hash, -+ &pc.UnHash, -+ &pc.GetPort, -+ &pc.EnterMemoryPressure, -+ } -+ -+ for i := 0; i < len(capabilities); i++ { -+ if capabilities[i] == "y" { -+ *capabilityFields[i] = true -+ } else if capabilities[i] == "n" { -+ *capabilityFields[i] = false -+ } else { -+ return fmt.Errorf("unable to parse capability block for protocol: position %d", i) -+ } -+ } -+ return nil -+} -diff --git a/vendor/github.com/prometheus/procfs/net_sockstat.go b/vendor/github.com/prometheus/procfs/net_sockstat.go -new file mode 100755 -index 0000000..e36f487 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/net_sockstat.go -@@ -0,0 +1,163 @@ -+// Copyright 2019 The Prometheus 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 procfs -+ -+import ( -+ "bufio" -+ "bytes" -+ "errors" -+ "fmt" -+ "io" -+ "strings" -+ -+ "github.com/prometheus/procfs/internal/util" -+) -+ -+// A NetSockstat contains the output of /proc/net/sockstat{,6} for IPv4 or IPv6, -+// respectively. -+type NetSockstat struct { -+ // Used is non-nil for IPv4 sockstat results, but nil for IPv6. -+ Used *int -+ Protocols []NetSockstatProtocol -+} -+ -+// A NetSockstatProtocol contains statistics about a given socket protocol. -+// Pointer fields indicate that the value may or may not be present on any -+// given protocol. -+type NetSockstatProtocol struct { -+ Protocol string -+ InUse int -+ Orphan *int -+ TW *int -+ Alloc *int -+ Mem *int -+ Memory *int -+} -+ -+// NetSockstat retrieves IPv4 socket statistics. -+func (fs FS) NetSockstat() (*NetSockstat, error) { -+ return readSockstat(fs.proc.Path("net", "sockstat")) -+} -+ -+// NetSockstat6 retrieves IPv6 socket statistics. -+// -+// If IPv6 is disabled on this kernel, the returned error can be checked with -+// os.IsNotExist. -+func (fs FS) NetSockstat6() (*NetSockstat, error) { -+ return readSockstat(fs.proc.Path("net", "sockstat6")) -+} -+ -+// readSockstat opens and parses a NetSockstat from the input file. -+func readSockstat(name string) (*NetSockstat, error) { -+ // This file is small and can be read with one syscall. -+ b, err := util.ReadFileNoStat(name) -+ if err != nil { -+ // Do not wrap this error so the caller can detect os.IsNotExist and -+ // similar conditions. -+ return nil, err -+ } -+ -+ stat, err := parseSockstat(bytes.NewReader(b)) -+ if err != nil { -+ return nil, fmt.Errorf("failed to read sockstats from %q: %w", name, err) -+ } -+ -+ return stat, nil -+} -+ -+// parseSockstat reads the contents of a sockstat file and parses a NetSockstat. -+func parseSockstat(r io.Reader) (*NetSockstat, error) { -+ var stat NetSockstat -+ s := bufio.NewScanner(r) -+ for s.Scan() { -+ // Expect a minimum of a protocol and one key/value pair. -+ fields := strings.Split(s.Text(), " ") -+ if len(fields) < 3 { -+ return nil, fmt.Errorf("malformed sockstat line: %q", s.Text()) -+ } -+ -+ // The remaining fields are key/value pairs. -+ kvs, err := parseSockstatKVs(fields[1:]) -+ if err != nil { -+ return nil, fmt.Errorf("error parsing sockstat key/value pairs from %q: %w", s.Text(), err) -+ } -+ -+ // The first field is the protocol. We must trim its colon suffix. -+ proto := strings.TrimSuffix(fields[0], ":") -+ switch proto { -+ case "sockets": -+ // Special case: IPv4 has a sockets "used" key/value pair that we -+ // embed at the top level of the structure. -+ used := kvs["used"] -+ stat.Used = &used -+ default: -+ // Parse all other lines as individual protocols. -+ nsp := parseSockstatProtocol(kvs) -+ nsp.Protocol = proto -+ stat.Protocols = append(stat.Protocols, nsp) -+ } -+ } -+ -+ if err := s.Err(); err != nil { -+ return nil, err -+ } -+ -+ return &stat, nil -+} -+ -+// parseSockstatKVs parses a string slice into a map of key/value pairs. -+func parseSockstatKVs(kvs []string) (map[string]int, error) { -+ if len(kvs)%2 != 0 { -+ return nil, errors.New("odd number of fields in key/value pairs") -+ } -+ -+ // Iterate two values at a time to gather key/value pairs. -+ out := make(map[string]int, len(kvs)/2) -+ for i := 0; i < len(kvs); i += 2 { -+ vp := util.NewValueParser(kvs[i+1]) -+ out[kvs[i]] = vp.Int() -+ -+ if err := vp.Err(); err != nil { -+ return nil, err -+ } -+ } -+ -+ return out, nil -+} -+ -+// parseSockstatProtocol parses a NetSockstatProtocol from the input kvs map. -+func parseSockstatProtocol(kvs map[string]int) NetSockstatProtocol { -+ var nsp NetSockstatProtocol -+ for k, v := range kvs { -+ // Capture the range variable to ensure we get unique pointers for -+ // each of the optional fields. -+ v := v -+ switch k { -+ case "inuse": -+ nsp.InUse = v -+ case "orphan": -+ nsp.Orphan = &v -+ case "tw": -+ nsp.TW = &v -+ case "alloc": -+ nsp.Alloc = &v -+ case "mem": -+ nsp.Mem = &v -+ case "memory": -+ nsp.Memory = &v -+ } -+ } -+ -+ return nsp -+} -diff --git a/vendor/github.com/prometheus/procfs/net_softnet.go b/vendor/github.com/prometheus/procfs/net_softnet.go -new file mode 100755 -index 0000000..a94f86d ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/net_softnet.go -@@ -0,0 +1,102 @@ -+// Copyright 2019 The Prometheus 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 procfs -+ -+import ( -+ "bufio" -+ "bytes" -+ "fmt" -+ "io" -+ "strconv" -+ "strings" -+ -+ "github.com/prometheus/procfs/internal/util" -+) -+ -+// For the proc file format details, -+// See: -+// * Linux 2.6.23 https://elixir.bootlin.com/linux/v2.6.23/source/net/core/dev.c#L2343 -+// * Linux 4.17 https://elixir.bootlin.com/linux/v4.17/source/net/core/net-procfs.c#L162 -+// and https://elixir.bootlin.com/linux/v4.17/source/include/linux/netdevice.h#L2810. -+ -+// SoftnetStat contains a single row of data from /proc/net/softnet_stat. -+type SoftnetStat struct { -+ // Number of processed packets. -+ Processed uint32 -+ // Number of dropped packets. -+ Dropped uint32 -+ // Number of times processing packets ran out of quota. -+ TimeSqueezed uint32 -+} -+ -+var softNetProcFile = "net/softnet_stat" -+ -+// NetSoftnetStat reads data from /proc/net/softnet_stat. -+func (fs FS) NetSoftnetStat() ([]SoftnetStat, error) { -+ b, err := util.ReadFileNoStat(fs.proc.Path(softNetProcFile)) -+ if err != nil { -+ return nil, err -+ } -+ -+ entries, err := parseSoftnet(bytes.NewReader(b)) -+ if err != nil { -+ return nil, fmt.Errorf("failed to parse /proc/net/softnet_stat: %w", err) -+ } -+ -+ return entries, nil -+} -+ -+func parseSoftnet(r io.Reader) ([]SoftnetStat, error) { -+ const minColumns = 9 -+ -+ s := bufio.NewScanner(r) -+ -+ var stats []SoftnetStat -+ for s.Scan() { -+ columns := strings.Fields(s.Text()) -+ width := len(columns) -+ -+ if width < minColumns { -+ return nil, fmt.Errorf("%d columns were detected, but at least %d were expected", width, minColumns) -+ } -+ -+ // We only parse the first three columns at the moment. -+ us, err := parseHexUint32s(columns[0:3]) -+ if err != nil { -+ return nil, err -+ } -+ -+ stats = append(stats, SoftnetStat{ -+ Processed: us[0], -+ Dropped: us[1], -+ TimeSqueezed: us[2], -+ }) -+ } -+ -+ return stats, nil -+} -+ -+func parseHexUint32s(ss []string) ([]uint32, error) { -+ us := make([]uint32, 0, len(ss)) -+ for _, s := range ss { -+ u, err := strconv.ParseUint(s, 16, 32) -+ if err != nil { -+ return nil, err -+ } -+ -+ us = append(us, uint32(u)) -+ } -+ -+ return us, nil -+} -diff --git a/vendor/github.com/prometheus/procfs/net_tcp.go b/vendor/github.com/prometheus/procfs/net_tcp.go -new file mode 100755 -index 0000000..5277629 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/net_tcp.go -@@ -0,0 +1,64 @@ -+// Copyright 2020 The Prometheus 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 procfs -+ -+type ( -+ // NetTCP represents the contents of /proc/net/tcp{,6} file without the header. -+ NetTCP []*netIPSocketLine -+ -+ // NetTCPSummary provides already computed values like the total queue lengths or -+ // the total number of used sockets. In contrast to NetTCP it does not collect -+ // the parsed lines into a slice. -+ NetTCPSummary NetIPSocketSummary -+) -+ -+// NetTCP returns the IPv4 kernel/networking statistics for TCP datagrams -+// read from /proc/net/tcp. -+func (fs FS) NetTCP() (NetTCP, error) { -+ return newNetTCP(fs.proc.Path("net/tcp")) -+} -+ -+// NetTCP6 returns the IPv6 kernel/networking statistics for TCP datagrams -+// read from /proc/net/tcp6. -+func (fs FS) NetTCP6() (NetTCP, error) { -+ return newNetTCP(fs.proc.Path("net/tcp6")) -+} -+ -+// NetTCPSummary returns already computed statistics like the total queue lengths -+// for TCP datagrams read from /proc/net/tcp. -+func (fs FS) NetTCPSummary() (*NetTCPSummary, error) { -+ return newNetTCPSummary(fs.proc.Path("net/tcp")) -+} -+ -+// NetTCP6Summary returns already computed statistics like the total queue lengths -+// for TCP datagrams read from /proc/net/tcp6. -+func (fs FS) NetTCP6Summary() (*NetTCPSummary, error) { -+ return newNetTCPSummary(fs.proc.Path("net/tcp6")) -+} -+ -+// newNetTCP creates a new NetTCP{,6} from the contents of the given file. -+func newNetTCP(file string) (NetTCP, error) { -+ n, err := newNetIPSocket(file) -+ n1 := NetTCP(n) -+ return n1, err -+} -+ -+func newNetTCPSummary(file string) (*NetTCPSummary, error) { -+ n, err := newNetIPSocketSummary(file) -+ if n == nil { -+ return nil, err -+ } -+ n1 := NetTCPSummary(*n) -+ return &n1, err -+} -diff --git a/vendor/github.com/prometheus/procfs/net_udp.go b/vendor/github.com/prometheus/procfs/net_udp.go -new file mode 100755 -index 0000000..9ac3daf ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/net_udp.go -@@ -0,0 +1,64 @@ -+// Copyright 2020 The Prometheus 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 procfs -+ -+type ( -+ // NetUDP represents the contents of /proc/net/udp{,6} file without the header. -+ NetUDP []*netIPSocketLine -+ -+ // NetUDPSummary provides already computed values like the total queue lengths or -+ // the total number of used sockets. In contrast to NetUDP it does not collect -+ // the parsed lines into a slice. -+ NetUDPSummary NetIPSocketSummary -+) -+ -+// NetUDP returns the IPv4 kernel/networking statistics for UDP datagrams -+// read from /proc/net/udp. -+func (fs FS) NetUDP() (NetUDP, error) { -+ return newNetUDP(fs.proc.Path("net/udp")) -+} -+ -+// NetUDP6 returns the IPv6 kernel/networking statistics for UDP datagrams -+// read from /proc/net/udp6. -+func (fs FS) NetUDP6() (NetUDP, error) { -+ return newNetUDP(fs.proc.Path("net/udp6")) -+} -+ -+// NetUDPSummary returns already computed statistics like the total queue lengths -+// for UDP datagrams read from /proc/net/udp. -+func (fs FS) NetUDPSummary() (*NetUDPSummary, error) { -+ return newNetUDPSummary(fs.proc.Path("net/udp")) -+} -+ -+// NetUDP6Summary returns already computed statistics like the total queue lengths -+// for UDP datagrams read from /proc/net/udp6. -+func (fs FS) NetUDP6Summary() (*NetUDPSummary, error) { -+ return newNetUDPSummary(fs.proc.Path("net/udp6")) -+} -+ -+// newNetUDP creates a new NetUDP{,6} from the contents of the given file. -+func newNetUDP(file string) (NetUDP, error) { -+ n, err := newNetIPSocket(file) -+ n1 := NetUDP(n) -+ return n1, err -+} -+ -+func newNetUDPSummary(file string) (*NetUDPSummary, error) { -+ n, err := newNetIPSocketSummary(file) -+ if n == nil { -+ return nil, err -+ } -+ n1 := NetUDPSummary(*n) -+ return &n1, err -+} -diff --git a/vendor/github.com/prometheus/procfs/net_unix.go b/vendor/github.com/prometheus/procfs/net_unix.go -new file mode 100755 -index 0000000..98aa8e1 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/net_unix.go -@@ -0,0 +1,257 @@ -+// Copyright 2018 The Prometheus 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 procfs -+ -+import ( -+ "bufio" -+ "fmt" -+ "io" -+ "os" -+ "strconv" -+ "strings" -+) -+ -+// For the proc file format details, -+// see https://elixir.bootlin.com/linux/v4.17/source/net/unix/af_unix.c#L2815 -+// and https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/net.h#L48. -+ -+// Constants for the various /proc/net/unix enumerations. -+// TODO: match against x/sys/unix or similar? -+const ( -+ netUnixTypeStream = 1 -+ netUnixTypeDgram = 2 -+ netUnixTypeSeqpacket = 5 -+ -+ netUnixFlagDefault = 0 -+ netUnixFlagListen = 1 << 16 -+ -+ netUnixStateUnconnected = 1 -+ netUnixStateConnecting = 2 -+ netUnixStateConnected = 3 -+ netUnixStateDisconnected = 4 -+) -+ -+// NetUNIXType is the type of the type field. -+type NetUNIXType uint64 -+ -+// NetUNIXFlags is the type of the flags field. -+type NetUNIXFlags uint64 -+ -+// NetUNIXState is the type of the state field. -+type NetUNIXState uint64 -+ -+// NetUNIXLine represents a line of /proc/net/unix. -+type NetUNIXLine struct { -+ KernelPtr string -+ RefCount uint64 -+ Protocol uint64 -+ Flags NetUNIXFlags -+ Type NetUNIXType -+ State NetUNIXState -+ Inode uint64 -+ Path string -+} -+ -+// NetUNIX holds the data read from /proc/net/unix. -+type NetUNIX struct { -+ Rows []*NetUNIXLine -+} -+ -+// NetUNIX returns data read from /proc/net/unix. -+func (fs FS) NetUNIX() (*NetUNIX, error) { -+ return readNetUNIX(fs.proc.Path("net/unix")) -+} -+ -+// readNetUNIX reads data in /proc/net/unix format from the specified file. -+func readNetUNIX(file string) (*NetUNIX, error) { -+ // This file could be quite large and a streaming read is desirable versus -+ // reading the entire contents at once. -+ f, err := os.Open(file) -+ if err != nil { -+ return nil, err -+ } -+ defer f.Close() -+ -+ return parseNetUNIX(f) -+} -+ -+// parseNetUNIX creates a NetUnix structure from the incoming stream. -+func parseNetUNIX(r io.Reader) (*NetUNIX, error) { -+ // Begin scanning by checking for the existence of Inode. -+ s := bufio.NewScanner(r) -+ s.Scan() -+ -+ // From the man page of proc(5), it does not contain an Inode field, -+ // but in actually it exists. This code works for both cases. -+ hasInode := strings.Contains(s.Text(), "Inode") -+ -+ // Expect a minimum number of fields, but Inode and Path are optional: -+ // Num RefCount Protocol Flags Type St Inode Path -+ minFields := 6 -+ if hasInode { -+ minFields++ -+ } -+ -+ var nu NetUNIX -+ for s.Scan() { -+ line := s.Text() -+ item, err := nu.parseLine(line, hasInode, minFields) -+ if err != nil { -+ return nil, fmt.Errorf("failed to parse /proc/net/unix data %q: %w", line, err) -+ } -+ -+ nu.Rows = append(nu.Rows, item) -+ } -+ -+ if err := s.Err(); err != nil { -+ return nil, fmt.Errorf("failed to scan /proc/net/unix data: %w", err) -+ } -+ -+ return &nu, nil -+} -+ -+func (u *NetUNIX) parseLine(line string, hasInode bool, min int) (*NetUNIXLine, error) { -+ fields := strings.Fields(line) -+ -+ l := len(fields) -+ if l < min { -+ return nil, fmt.Errorf("expected at least %d fields but got %d", min, l) -+ } -+ -+ // Field offsets are as follows: -+ // Num RefCount Protocol Flags Type St Inode Path -+ -+ kernelPtr := strings.TrimSuffix(fields[0], ":") -+ -+ users, err := u.parseUsers(fields[1]) -+ if err != nil { -+ return nil, fmt.Errorf("failed to parse ref count %q: %w", fields[1], err) -+ } -+ -+ flags, err := u.parseFlags(fields[3]) -+ if err != nil { -+ return nil, fmt.Errorf("failed to parse flags %q: %w", fields[3], err) -+ } -+ -+ typ, err := u.parseType(fields[4]) -+ if err != nil { -+ return nil, fmt.Errorf("failed to parse type %q: %w", fields[4], err) -+ } -+ -+ state, err := u.parseState(fields[5]) -+ if err != nil { -+ return nil, fmt.Errorf("failed to parse state %q: %w", fields[5], err) -+ } -+ -+ var inode uint64 -+ if hasInode { -+ inode, err = u.parseInode(fields[6]) -+ if err != nil { -+ return nil, fmt.Errorf("failed to parse inode %q: %w", fields[6], err) -+ } -+ } -+ -+ n := &NetUNIXLine{ -+ KernelPtr: kernelPtr, -+ RefCount: users, -+ Type: typ, -+ Flags: flags, -+ State: state, -+ Inode: inode, -+ } -+ -+ // Path field is optional. -+ if l > min { -+ // Path occurs at either index 6 or 7 depending on whether inode is -+ // already present. -+ pathIdx := 7 -+ if !hasInode { -+ pathIdx-- -+ } -+ -+ n.Path = fields[pathIdx] -+ } -+ -+ return n, nil -+} -+ -+func (u NetUNIX) parseUsers(s string) (uint64, error) { -+ return strconv.ParseUint(s, 16, 32) -+} -+ -+func (u NetUNIX) parseType(s string) (NetUNIXType, error) { -+ typ, err := strconv.ParseUint(s, 16, 16) -+ if err != nil { -+ return 0, err -+ } -+ -+ return NetUNIXType(typ), nil -+} -+ -+func (u NetUNIX) parseFlags(s string) (NetUNIXFlags, error) { -+ flags, err := strconv.ParseUint(s, 16, 32) -+ if err != nil { -+ return 0, err -+ } -+ -+ return NetUNIXFlags(flags), nil -+} -+ -+func (u NetUNIX) parseState(s string) (NetUNIXState, error) { -+ st, err := strconv.ParseInt(s, 16, 8) -+ if err != nil { -+ return 0, err -+ } -+ -+ return NetUNIXState(st), nil -+} -+ -+func (u NetUNIX) parseInode(s string) (uint64, error) { -+ return strconv.ParseUint(s, 10, 64) -+} -+ -+func (t NetUNIXType) String() string { -+ switch t { -+ case netUnixTypeStream: -+ return "stream" -+ case netUnixTypeDgram: -+ return "dgram" -+ case netUnixTypeSeqpacket: -+ return "seqpacket" -+ } -+ return "unknown" -+} -+ -+func (f NetUNIXFlags) String() string { -+ switch f { -+ case netUnixFlagListen: -+ return "listen" -+ default: -+ return "default" -+ } -+} -+ -+func (s NetUNIXState) String() string { -+ switch s { -+ case netUnixStateUnconnected: -+ return "unconnected" -+ case netUnixStateConnecting: -+ return "connecting" -+ case netUnixStateConnected: -+ return "connected" -+ case netUnixStateDisconnected: -+ return "disconnected" -+ } -+ return "unknown" -+} -diff --git a/vendor/github.com/prometheus/procfs/net_xfrm.go b/vendor/github.com/prometheus/procfs/net_xfrm.go -new file mode 100755 -index 0000000..f9d9d24 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/net_xfrm.go -@@ -0,0 +1,189 @@ -+// Copyright 2017 Prometheus Team -+// 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 procfs -+ -+import ( -+ "bufio" -+ "fmt" -+ "os" -+ "strconv" -+ "strings" -+) -+ -+// XfrmStat models the contents of /proc/net/xfrm_stat. -+type XfrmStat struct { -+ // All errors which are not matched by other -+ XfrmInError int -+ // No buffer is left -+ XfrmInBufferError int -+ // Header Error -+ XfrmInHdrError int -+ // No state found -+ // i.e. either inbound SPI, address, or IPSEC protocol at SA is wrong -+ XfrmInNoStates int -+ // Transformation protocol specific error -+ // e.g. SA Key is wrong -+ XfrmInStateProtoError int -+ // Transformation mode specific error -+ XfrmInStateModeError int -+ // Sequence error -+ // e.g. sequence number is out of window -+ XfrmInStateSeqError int -+ // State is expired -+ XfrmInStateExpired int -+ // State has mismatch option -+ // e.g. UDP encapsulation type is mismatched -+ XfrmInStateMismatch int -+ // State is invalid -+ XfrmInStateInvalid int -+ // No matching template for states -+ // e.g. Inbound SAs are correct but SP rule is wrong -+ XfrmInTmplMismatch int -+ // No policy is found for states -+ // e.g. Inbound SAs are correct but no SP is found -+ XfrmInNoPols int -+ // Policy discards -+ XfrmInPolBlock int -+ // Policy error -+ XfrmInPolError int -+ // All errors which are not matched by others -+ XfrmOutError int -+ // Bundle generation error -+ XfrmOutBundleGenError int -+ // Bundle check error -+ XfrmOutBundleCheckError int -+ // No state was found -+ XfrmOutNoStates int -+ // Transformation protocol specific error -+ XfrmOutStateProtoError int -+ // Transportation mode specific error -+ XfrmOutStateModeError int -+ // Sequence error -+ // i.e sequence number overflow -+ XfrmOutStateSeqError int -+ // State is expired -+ XfrmOutStateExpired int -+ // Policy discads -+ XfrmOutPolBlock int -+ // Policy is dead -+ XfrmOutPolDead int -+ // Policy Error -+ XfrmOutPolError int -+ // Forward routing of a packet is not allowed -+ XfrmFwdHdrError int -+ // State is invalid, perhaps expired -+ XfrmOutStateInvalid int -+ // State hasn’t been fully acquired before use -+ XfrmAcquireError int -+} -+ -+// NewXfrmStat reads the xfrm_stat statistics. -+func NewXfrmStat() (XfrmStat, error) { -+ fs, err := NewFS(DefaultMountPoint) -+ if err != nil { -+ return XfrmStat{}, err -+ } -+ -+ return fs.NewXfrmStat() -+} -+ -+// NewXfrmStat reads the xfrm_stat statistics from the 'proc' filesystem. -+func (fs FS) NewXfrmStat() (XfrmStat, error) { -+ file, err := os.Open(fs.proc.Path("net/xfrm_stat")) -+ if err != nil { -+ return XfrmStat{}, err -+ } -+ defer file.Close() -+ -+ var ( -+ x = XfrmStat{} -+ s = bufio.NewScanner(file) -+ ) -+ -+ for s.Scan() { -+ fields := strings.Fields(s.Text()) -+ -+ if len(fields) != 2 { -+ return XfrmStat{}, fmt.Errorf("couldn't parse %q line %q", file.Name(), s.Text()) -+ } -+ -+ name := fields[0] -+ value, err := strconv.Atoi(fields[1]) -+ if err != nil { -+ return XfrmStat{}, err -+ } -+ -+ switch name { -+ case "XfrmInError": -+ x.XfrmInError = value -+ case "XfrmInBufferError": -+ x.XfrmInBufferError = value -+ case "XfrmInHdrError": -+ x.XfrmInHdrError = value -+ case "XfrmInNoStates": -+ x.XfrmInNoStates = value -+ case "XfrmInStateProtoError": -+ x.XfrmInStateProtoError = value -+ case "XfrmInStateModeError": -+ x.XfrmInStateModeError = value -+ case "XfrmInStateSeqError": -+ x.XfrmInStateSeqError = value -+ case "XfrmInStateExpired": -+ x.XfrmInStateExpired = value -+ case "XfrmInStateInvalid": -+ x.XfrmInStateInvalid = value -+ case "XfrmInTmplMismatch": -+ x.XfrmInTmplMismatch = value -+ case "XfrmInNoPols": -+ x.XfrmInNoPols = value -+ case "XfrmInPolBlock": -+ x.XfrmInPolBlock = value -+ case "XfrmInPolError": -+ x.XfrmInPolError = value -+ case "XfrmOutError": -+ x.XfrmOutError = value -+ case "XfrmInStateMismatch": -+ x.XfrmInStateMismatch = value -+ case "XfrmOutBundleGenError": -+ x.XfrmOutBundleGenError = value -+ case "XfrmOutBundleCheckError": -+ x.XfrmOutBundleCheckError = value -+ case "XfrmOutNoStates": -+ x.XfrmOutNoStates = value -+ case "XfrmOutStateProtoError": -+ x.XfrmOutStateProtoError = value -+ case "XfrmOutStateModeError": -+ x.XfrmOutStateModeError = value -+ case "XfrmOutStateSeqError": -+ x.XfrmOutStateSeqError = value -+ case "XfrmOutStateExpired": -+ x.XfrmOutStateExpired = value -+ case "XfrmOutPolBlock": -+ x.XfrmOutPolBlock = value -+ case "XfrmOutPolDead": -+ x.XfrmOutPolDead = value -+ case "XfrmOutPolError": -+ x.XfrmOutPolError = value -+ case "XfrmFwdHdrError": -+ x.XfrmFwdHdrError = value -+ case "XfrmOutStateInvalid": -+ x.XfrmOutStateInvalid = value -+ case "XfrmAcquireError": -+ x.XfrmAcquireError = value -+ } -+ -+ } -+ -+ return x, s.Err() -+} -diff --git a/vendor/github.com/prometheus/procfs/netstat.go b/vendor/github.com/prometheus/procfs/netstat.go -new file mode 100755 -index 0000000..dcea9c5 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/netstat.go -@@ -0,0 +1,68 @@ -+// Copyright 2020 The Prometheus 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 procfs -+ -+import ( -+ "bufio" -+ "os" -+ "path/filepath" -+ "strconv" -+ "strings" -+) -+ -+// NetStat contains statistics for all the counters from one file. -+type NetStat struct { -+ Stats map[string][]uint64 -+ Filename string -+} -+ -+// NetStat retrieves stats from `/proc/net/stat/`. -+func (fs FS) NetStat() ([]NetStat, error) { -+ statFiles, err := filepath.Glob(fs.proc.Path("net/stat/*")) -+ if err != nil { -+ return nil, err -+ } -+ -+ var netStatsTotal []NetStat -+ -+ for _, filePath := range statFiles { -+ file, err := os.Open(filePath) -+ if err != nil { -+ return nil, err -+ } -+ -+ netStatFile := NetStat{ -+ Filename: filepath.Base(filePath), -+ Stats: make(map[string][]uint64), -+ } -+ scanner := bufio.NewScanner(file) -+ scanner.Scan() -+ // First string is always a header for stats -+ var headers []string -+ headers = append(headers, strings.Fields(scanner.Text())...) -+ -+ // Other strings represent per-CPU counters -+ for scanner.Scan() { -+ for num, counter := range strings.Fields(scanner.Text()) { -+ value, err := strconv.ParseUint(counter, 16, 64) -+ if err != nil { -+ return nil, err -+ } -+ netStatFile.Stats[headers[num]] = append(netStatFile.Stats[headers[num]], value) -+ } -+ } -+ netStatsTotal = append(netStatsTotal, netStatFile) -+ } -+ return netStatsTotal, nil -+} -diff --git a/vendor/github.com/prometheus/procfs/proc.go b/vendor/github.com/prometheus/procfs/proc.go -new file mode 100755 -index 0000000..c30223a ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/proc.go -@@ -0,0 +1,319 @@ -+// Copyright 2018 The Prometheus 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 procfs -+ -+import ( -+ "bytes" -+ "fmt" -+ "io" -+ "os" -+ "strconv" -+ "strings" -+ -+ "github.com/prometheus/procfs/internal/fs" -+ "github.com/prometheus/procfs/internal/util" -+) -+ -+// Proc provides information about a running process. -+type Proc struct { -+ // The process ID. -+ PID int -+ -+ fs fs.FS -+} -+ -+// Procs represents a list of Proc structs. -+type Procs []Proc -+ -+func (p Procs) Len() int { return len(p) } -+func (p Procs) Swap(i, j int) { p[i], p[j] = p[j], p[i] } -+func (p Procs) Less(i, j int) bool { return p[i].PID < p[j].PID } -+ -+// Self returns a process for the current process read via /proc/self. -+func Self() (Proc, error) { -+ fs, err := NewFS(DefaultMountPoint) -+ if err != nil { -+ return Proc{}, err -+ } -+ return fs.Self() -+} -+ -+// NewProc returns a process for the given pid under /proc. -+func NewProc(pid int) (Proc, error) { -+ fs, err := NewFS(DefaultMountPoint) -+ if err != nil { -+ return Proc{}, err -+ } -+ return fs.Proc(pid) -+} -+ -+// AllProcs returns a list of all currently available processes under /proc. -+func AllProcs() (Procs, error) { -+ fs, err := NewFS(DefaultMountPoint) -+ if err != nil { -+ return Procs{}, err -+ } -+ return fs.AllProcs() -+} -+ -+// Self returns a process for the current process. -+func (fs FS) Self() (Proc, error) { -+ p, err := os.Readlink(fs.proc.Path("self")) -+ if err != nil { -+ return Proc{}, err -+ } -+ pid, err := strconv.Atoi(strings.Replace(p, string(fs.proc), "", -1)) -+ if err != nil { -+ return Proc{}, err -+ } -+ return fs.Proc(pid) -+} -+ -+// NewProc returns a process for the given pid. -+// -+// Deprecated: Use fs.Proc() instead. -+func (fs FS) NewProc(pid int) (Proc, error) { -+ return fs.Proc(pid) -+} -+ -+// Proc returns a process for the given pid. -+func (fs FS) Proc(pid int) (Proc, error) { -+ if _, err := os.Stat(fs.proc.Path(strconv.Itoa(pid))); err != nil { -+ return Proc{}, err -+ } -+ return Proc{PID: pid, fs: fs.proc}, nil -+} -+ -+// AllProcs returns a list of all currently available processes. -+func (fs FS) AllProcs() (Procs, error) { -+ d, err := os.Open(fs.proc.Path()) -+ if err != nil { -+ return Procs{}, err -+ } -+ defer d.Close() -+ -+ names, err := d.Readdirnames(-1) -+ if err != nil { -+ return Procs{}, fmt.Errorf("could not read %q: %w", d.Name(), err) -+ } -+ -+ p := Procs{} -+ for _, n := range names { -+ pid, err := strconv.ParseInt(n, 10, 64) -+ if err != nil { -+ continue -+ } -+ p = append(p, Proc{PID: int(pid), fs: fs.proc}) -+ } -+ -+ return p, nil -+} -+ -+// CmdLine returns the command line of a process. -+func (p Proc) CmdLine() ([]string, error) { -+ data, err := util.ReadFileNoStat(p.path("cmdline")) -+ if err != nil { -+ return nil, err -+ } -+ -+ if len(data) < 1 { -+ return []string{}, nil -+ } -+ -+ return strings.Split(string(bytes.TrimRight(data, string("\x00"))), string(byte(0))), nil -+} -+ -+// Wchan returns the wchan (wait channel) of a process. -+func (p Proc) Wchan() (string, error) { -+ f, err := os.Open(p.path("wchan")) -+ if err != nil { -+ return "", err -+ } -+ defer f.Close() -+ -+ data, err := io.ReadAll(f) -+ if err != nil { -+ return "", err -+ } -+ -+ wchan := string(data) -+ if wchan == "" || wchan == "0" { -+ return "", nil -+ } -+ -+ return wchan, nil -+} -+ -+// Comm returns the command name of a process. -+func (p Proc) Comm() (string, error) { -+ data, err := util.ReadFileNoStat(p.path("comm")) -+ if err != nil { -+ return "", err -+ } -+ -+ return strings.TrimSpace(string(data)), nil -+} -+ -+// Executable returns the absolute path of the executable command of a process. -+func (p Proc) Executable() (string, error) { -+ exe, err := os.Readlink(p.path("exe")) -+ if os.IsNotExist(err) { -+ return "", nil -+ } -+ -+ return exe, err -+} -+ -+// Cwd returns the absolute path to the current working directory of the process. -+func (p Proc) Cwd() (string, error) { -+ wd, err := os.Readlink(p.path("cwd")) -+ if os.IsNotExist(err) { -+ return "", nil -+ } -+ -+ return wd, err -+} -+ -+// RootDir returns the absolute path to the process's root directory (as set by chroot). -+func (p Proc) RootDir() (string, error) { -+ rdir, err := os.Readlink(p.path("root")) -+ if os.IsNotExist(err) { -+ return "", nil -+ } -+ -+ return rdir, err -+} -+ -+// FileDescriptors returns the currently open file descriptors of a process. -+func (p Proc) FileDescriptors() ([]uintptr, error) { -+ names, err := p.fileDescriptors() -+ if err != nil { -+ return nil, err -+ } -+ -+ fds := make([]uintptr, len(names)) -+ for i, n := range names { -+ fd, err := strconv.ParseInt(n, 10, 32) -+ if err != nil { -+ return nil, fmt.Errorf("could not parse fd %q: %w", n, err) -+ } -+ fds[i] = uintptr(fd) -+ } -+ -+ return fds, nil -+} -+ -+// FileDescriptorTargets returns the targets of all file descriptors of a process. -+// If a file descriptor is not a symlink to a file (like a socket), that value will be the empty string. -+func (p Proc) FileDescriptorTargets() ([]string, error) { -+ names, err := p.fileDescriptors() -+ if err != nil { -+ return nil, err -+ } -+ -+ targets := make([]string, len(names)) -+ -+ for i, name := range names { -+ target, err := os.Readlink(p.path("fd", name)) -+ if err == nil { -+ targets[i] = target -+ } -+ } -+ -+ return targets, nil -+} -+ -+// FileDescriptorsLen returns the number of currently open file descriptors of -+// a process. -+func (p Proc) FileDescriptorsLen() (int, error) { -+ fds, err := p.fileDescriptors() -+ if err != nil { -+ return 0, err -+ } -+ -+ return len(fds), nil -+} -+ -+// MountStats retrieves statistics and configuration for mount points in a -+// process's namespace. -+func (p Proc) MountStats() ([]*Mount, error) { -+ f, err := os.Open(p.path("mountstats")) -+ if err != nil { -+ return nil, err -+ } -+ defer f.Close() -+ -+ return parseMountStats(f) -+} -+ -+// MountInfo retrieves mount information for mount points in a -+// process's namespace. -+// It supplies information missing in `/proc/self/mounts` and -+// fixes various other problems with that file too. -+func (p Proc) MountInfo() ([]*MountInfo, error) { -+ data, err := util.ReadFileNoStat(p.path("mountinfo")) -+ if err != nil { -+ return nil, err -+ } -+ return parseMountInfo(data) -+} -+ -+func (p Proc) fileDescriptors() ([]string, error) { -+ d, err := os.Open(p.path("fd")) -+ if err != nil { -+ return nil, err -+ } -+ defer d.Close() -+ -+ names, err := d.Readdirnames(-1) -+ if err != nil { -+ return nil, fmt.Errorf("could not read %q: %w", d.Name(), err) -+ } -+ -+ return names, nil -+} -+ -+func (p Proc) path(pa ...string) string { -+ return p.fs.Path(append([]string{strconv.Itoa(p.PID)}, pa...)...) -+} -+ -+// FileDescriptorsInfo retrieves information about all file descriptors of -+// the process. -+func (p Proc) FileDescriptorsInfo() (ProcFDInfos, error) { -+ names, err := p.fileDescriptors() -+ if err != nil { -+ return nil, err -+ } -+ -+ var fdinfos ProcFDInfos -+ -+ for _, n := range names { -+ fdinfo, err := p.FDInfo(n) -+ if err != nil { -+ continue -+ } -+ fdinfos = append(fdinfos, *fdinfo) -+ } -+ -+ return fdinfos, nil -+} -+ -+// Schedstat returns task scheduling information for the process. -+func (p Proc) Schedstat() (ProcSchedstat, error) { -+ contents, err := os.ReadFile(p.path("schedstat")) -+ if err != nil { -+ return ProcSchedstat{}, err -+ } -+ return parseProcSchedstat(string(contents)) -+} -diff --git a/vendor/github.com/prometheus/procfs/proc_cgroup.go b/vendor/github.com/prometheus/procfs/proc_cgroup.go -new file mode 100755 -index 0000000..cca0332 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/proc_cgroup.go -@@ -0,0 +1,98 @@ -+// Copyright 2020 The Prometheus 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 procfs -+ -+import ( -+ "bufio" -+ "bytes" -+ "fmt" -+ "strconv" -+ "strings" -+ -+ "github.com/prometheus/procfs/internal/util" -+) -+ -+// Cgroup models one line from /proc/[pid]/cgroup. Each Cgroup struct describes the the placement of a PID inside a -+// specific control hierarchy. The kernel has two cgroup APIs, v1 and v2. v1 has one hierarchy per available resource -+// controller, while v2 has one unified hierarchy shared by all controllers. Regardless of v1 or v2, all hierarchies -+// contain all running processes, so the question answerable with a Cgroup struct is 'where is this process in -+// this hierarchy' (where==what path on the specific cgroupfs). By prefixing this path with the mount point of -+// *this specific* hierarchy, you can locate the relevant pseudo-files needed to read/set the data for this PID -+// in this hierarchy -+// -+// Also see http://man7.org/linux/man-pages/man7/cgroups.7.html -+type Cgroup struct { -+ // HierarchyID that can be matched to a named hierarchy using /proc/cgroups. Cgroups V2 only has one -+ // hierarchy, so HierarchyID is always 0. For cgroups v1 this is a unique ID number -+ HierarchyID int -+ // Controllers using this hierarchy of processes. Controllers are also known as subsystems. For -+ // Cgroups V2 this may be empty, as all active controllers use the same hierarchy -+ Controllers []string -+ // Path of this control group, relative to the mount point of the cgroupfs representing this specific -+ // hierarchy -+ Path string -+} -+ -+// parseCgroupString parses each line of the /proc/[pid]/cgroup file -+// Line format is hierarchyID:[controller1,controller2]:path. -+func parseCgroupString(cgroupStr string) (*Cgroup, error) { -+ var err error -+ -+ fields := strings.SplitN(cgroupStr, ":", 3) -+ if len(fields) < 3 { -+ return nil, fmt.Errorf("at least 3 fields required, found %d fields in cgroup string: %s", len(fields), cgroupStr) -+ } -+ -+ cgroup := &Cgroup{ -+ Path: fields[2], -+ Controllers: nil, -+ } -+ cgroup.HierarchyID, err = strconv.Atoi(fields[0]) -+ if err != nil { -+ return nil, fmt.Errorf("failed to parse hierarchy ID") -+ } -+ if fields[1] != "" { -+ ssNames := strings.Split(fields[1], ",") -+ cgroup.Controllers = append(cgroup.Controllers, ssNames...) -+ } -+ return cgroup, nil -+} -+ -+// parseCgroups reads each line of the /proc/[pid]/cgroup file. -+func parseCgroups(data []byte) ([]Cgroup, error) { -+ var cgroups []Cgroup -+ scanner := bufio.NewScanner(bytes.NewReader(data)) -+ for scanner.Scan() { -+ mountString := scanner.Text() -+ parsedMounts, err := parseCgroupString(mountString) -+ if err != nil { -+ return nil, err -+ } -+ cgroups = append(cgroups, *parsedMounts) -+ } -+ -+ err := scanner.Err() -+ return cgroups, err -+} -+ -+// Cgroups reads from /proc//cgroups and returns a []*Cgroup struct locating this PID in each process -+// control hierarchy running on this system. On every system (v1 and v2), all hierarchies contain all processes, -+// so the len of the returned struct is equal to the number of active hierarchies on this system. -+func (p Proc) Cgroups() ([]Cgroup, error) { -+ data, err := util.ReadFileNoStat(p.path("cgroup")) -+ if err != nil { -+ return nil, err -+ } -+ return parseCgroups(data) -+} -diff --git a/vendor/github.com/prometheus/procfs/proc_cgroups.go b/vendor/github.com/prometheus/procfs/proc_cgroups.go -new file mode 100755 -index 0000000..24d4dce ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/proc_cgroups.go -@@ -0,0 +1,98 @@ -+// Copyright 2021 The Prometheus 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 procfs -+ -+import ( -+ "bufio" -+ "bytes" -+ "fmt" -+ "strconv" -+ "strings" -+ -+ "github.com/prometheus/procfs/internal/util" -+) -+ -+// CgroupSummary models one line from /proc/cgroups. -+// This file contains information about the controllers that are compiled into the kernel. -+// -+// Also see http://man7.org/linux/man-pages/man7/cgroups.7.html -+type CgroupSummary struct { -+ // The name of the controller. controller is also known as subsystem. -+ SubsysName string -+ // The unique ID of the cgroup hierarchy on which this controller is mounted. -+ Hierarchy int -+ // The number of control groups in this hierarchy using this controller. -+ Cgroups int -+ // This field contains the value 1 if this controller is enabled, or 0 if it has been disabled -+ Enabled int -+} -+ -+// parseCgroupSummary parses each line of the /proc/cgroup file -+// Line format is `subsys_name hierarchy num_cgroups enabled`. -+func parseCgroupSummaryString(CgroupSummaryStr string) (*CgroupSummary, error) { -+ var err error -+ -+ fields := strings.Fields(CgroupSummaryStr) -+ // require at least 4 fields -+ if len(fields) < 4 { -+ return nil, fmt.Errorf("at least 4 fields required, found %d fields in cgroup info string: %s", len(fields), CgroupSummaryStr) -+ } -+ -+ CgroupSummary := &CgroupSummary{ -+ SubsysName: fields[0], -+ } -+ CgroupSummary.Hierarchy, err = strconv.Atoi(fields[1]) -+ if err != nil { -+ return nil, fmt.Errorf("failed to parse hierarchy ID") -+ } -+ CgroupSummary.Cgroups, err = strconv.Atoi(fields[2]) -+ if err != nil { -+ return nil, fmt.Errorf("failed to parse Cgroup Num") -+ } -+ CgroupSummary.Enabled, err = strconv.Atoi(fields[3]) -+ if err != nil { -+ return nil, fmt.Errorf("failed to parse Enabled") -+ } -+ return CgroupSummary, nil -+} -+ -+// parseCgroupSummary reads each line of the /proc/cgroup file. -+func parseCgroupSummary(data []byte) ([]CgroupSummary, error) { -+ var CgroupSummarys []CgroupSummary -+ scanner := bufio.NewScanner(bytes.NewReader(data)) -+ for scanner.Scan() { -+ CgroupSummaryString := scanner.Text() -+ // ignore comment lines -+ if strings.HasPrefix(CgroupSummaryString, "#") { -+ continue -+ } -+ CgroupSummary, err := parseCgroupSummaryString(CgroupSummaryString) -+ if err != nil { -+ return nil, err -+ } -+ CgroupSummarys = append(CgroupSummarys, *CgroupSummary) -+ } -+ -+ err := scanner.Err() -+ return CgroupSummarys, err -+} -+ -+// CgroupSummarys returns information about current /proc/cgroups. -+func (fs FS) CgroupSummarys() ([]CgroupSummary, error) { -+ data, err := util.ReadFileNoStat(fs.proc.Path("cgroups")) -+ if err != nil { -+ return nil, err -+ } -+ return parseCgroupSummary(data) -+} -diff --git a/vendor/github.com/prometheus/procfs/proc_environ.go b/vendor/github.com/prometheus/procfs/proc_environ.go -new file mode 100755 -index 0000000..57a8989 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/proc_environ.go -@@ -0,0 +1,37 @@ -+// Copyright 2019 The Prometheus 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 procfs -+ -+import ( -+ "strings" -+ -+ "github.com/prometheus/procfs/internal/util" -+) -+ -+// Environ reads process environments from `/proc//environ`. -+func (p Proc) Environ() ([]string, error) { -+ environments := make([]string, 0) -+ -+ data, err := util.ReadFileNoStat(p.path("environ")) -+ if err != nil { -+ return environments, err -+ } -+ -+ environments = strings.Split(string(data), "\000") -+ if len(environments) > 0 { -+ environments = environments[:len(environments)-1] -+ } -+ -+ return environments, nil -+} -diff --git a/vendor/github.com/prometheus/procfs/proc_fdinfo.go b/vendor/github.com/prometheus/procfs/proc_fdinfo.go -new file mode 100755 -index 0000000..1bbdd4a ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/proc_fdinfo.go -@@ -0,0 +1,132 @@ -+// Copyright 2019 The Prometheus 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 procfs -+ -+import ( -+ "bufio" -+ "bytes" -+ "fmt" -+ "regexp" -+ -+ "github.com/prometheus/procfs/internal/util" -+) -+ -+var ( -+ rPos = regexp.MustCompile(`^pos:\s+(\d+)$`) -+ rFlags = regexp.MustCompile(`^flags:\s+(\d+)$`) -+ rMntID = regexp.MustCompile(`^mnt_id:\s+(\d+)$`) -+ rInotify = regexp.MustCompile(`^inotify`) -+ rInotifyParts = regexp.MustCompile(`^inotify\s+wd:([0-9a-f]+)\s+ino:([0-9a-f]+)\s+sdev:([0-9a-f]+)(?:\s+mask:([0-9a-f]+))?`) -+) -+ -+// ProcFDInfo contains represents file descriptor information. -+type ProcFDInfo struct { -+ // File descriptor -+ FD string -+ // File offset -+ Pos string -+ // File access mode and status flags -+ Flags string -+ // Mount point ID -+ MntID string -+ // List of inotify lines (structured) in the fdinfo file (kernel 3.8+ only) -+ InotifyInfos []InotifyInfo -+} -+ -+// FDInfo constructor. On kernels older than 3.8, InotifyInfos will always be empty. -+func (p Proc) FDInfo(fd string) (*ProcFDInfo, error) { -+ data, err := util.ReadFileNoStat(p.path("fdinfo", fd)) -+ if err != nil { -+ return nil, err -+ } -+ -+ var text, pos, flags, mntid string -+ var inotify []InotifyInfo -+ -+ scanner := bufio.NewScanner(bytes.NewReader(data)) -+ for scanner.Scan() { -+ text = scanner.Text() -+ if rPos.MatchString(text) { -+ pos = rPos.FindStringSubmatch(text)[1] -+ } else if rFlags.MatchString(text) { -+ flags = rFlags.FindStringSubmatch(text)[1] -+ } else if rMntID.MatchString(text) { -+ mntid = rMntID.FindStringSubmatch(text)[1] -+ } else if rInotify.MatchString(text) { -+ newInotify, err := parseInotifyInfo(text) -+ if err != nil { -+ return nil, err -+ } -+ inotify = append(inotify, *newInotify) -+ } -+ } -+ -+ i := &ProcFDInfo{ -+ FD: fd, -+ Pos: pos, -+ Flags: flags, -+ MntID: mntid, -+ InotifyInfos: inotify, -+ } -+ -+ return i, nil -+} -+ -+// InotifyInfo represents a single inotify line in the fdinfo file. -+type InotifyInfo struct { -+ // Watch descriptor number -+ WD string -+ // Inode number -+ Ino string -+ // Device ID -+ Sdev string -+ // Mask of events being monitored -+ Mask string -+} -+ -+// InotifyInfo constructor. Only available on kernel 3.8+. -+func parseInotifyInfo(line string) (*InotifyInfo, error) { -+ m := rInotifyParts.FindStringSubmatch(line) -+ if len(m) >= 4 { -+ var mask string -+ if len(m) == 5 { -+ mask = m[4] -+ } -+ i := &InotifyInfo{ -+ WD: m[1], -+ Ino: m[2], -+ Sdev: m[3], -+ Mask: mask, -+ } -+ return i, nil -+ } -+ return nil, fmt.Errorf("invalid inode entry: %q", line) -+} -+ -+// ProcFDInfos represents a list of ProcFDInfo structs. -+type ProcFDInfos []ProcFDInfo -+ -+func (p ProcFDInfos) Len() int { return len(p) } -+func (p ProcFDInfos) Swap(i, j int) { p[i], p[j] = p[j], p[i] } -+func (p ProcFDInfos) Less(i, j int) bool { return p[i].FD < p[j].FD } -+ -+// InotifyWatchLen returns the total number of inotify watches. -+func (p ProcFDInfos) InotifyWatchLen() (int, error) { -+ length := 0 -+ for _, f := range p { -+ length += len(f.InotifyInfos) -+ } -+ -+ return length, nil -+} -diff --git a/vendor/github.com/prometheus/procfs/proc_io.go b/vendor/github.com/prometheus/procfs/proc_io.go -new file mode 100755 -index 0000000..776f349 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/proc_io.go -@@ -0,0 +1,59 @@ -+// Copyright 2018 The Prometheus 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 procfs -+ -+import ( -+ "fmt" -+ -+ "github.com/prometheus/procfs/internal/util" -+) -+ -+// ProcIO models the content of /proc//io. -+type ProcIO struct { -+ // Chars read. -+ RChar uint64 -+ // Chars written. -+ WChar uint64 -+ // Read syscalls. -+ SyscR uint64 -+ // Write syscalls. -+ SyscW uint64 -+ // Bytes read. -+ ReadBytes uint64 -+ // Bytes written. -+ WriteBytes uint64 -+ // Bytes written, but taking into account truncation. See -+ // Documentation/filesystems/proc.txt in the kernel sources for -+ // detailed explanation. -+ CancelledWriteBytes int64 -+} -+ -+// IO creates a new ProcIO instance from a given Proc instance. -+func (p Proc) IO() (ProcIO, error) { -+ pio := ProcIO{} -+ -+ data, err := util.ReadFileNoStat(p.path("io")) -+ if err != nil { -+ return pio, err -+ } -+ -+ ioFormat := "rchar: %d\nwchar: %d\nsyscr: %d\nsyscw: %d\n" + -+ "read_bytes: %d\nwrite_bytes: %d\n" + -+ "cancelled_write_bytes: %d\n" -+ -+ _, err = fmt.Sscanf(string(data), ioFormat, &pio.RChar, &pio.WChar, &pio.SyscR, -+ &pio.SyscW, &pio.ReadBytes, &pio.WriteBytes, &pio.CancelledWriteBytes) -+ -+ return pio, err -+} -diff --git a/vendor/github.com/prometheus/procfs/proc_limits.go b/vendor/github.com/prometheus/procfs/proc_limits.go -new file mode 100755 -index 0000000..7a13881 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/proc_limits.go -@@ -0,0 +1,160 @@ -+// Copyright 2018 The Prometheus 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 procfs -+ -+import ( -+ "bufio" -+ "fmt" -+ "os" -+ "regexp" -+ "strconv" -+) -+ -+// ProcLimits represents the soft limits for each of the process's resource -+// limits. For more information see getrlimit(2): -+// http://man7.org/linux/man-pages/man2/getrlimit.2.html. -+type ProcLimits struct { -+ // CPU time limit in seconds. -+ CPUTime uint64 -+ // Maximum size of files that the process may create. -+ FileSize uint64 -+ // Maximum size of the process's data segment (initialized data, -+ // uninitialized data, and heap). -+ DataSize uint64 -+ // Maximum size of the process stack in bytes. -+ StackSize uint64 -+ // Maximum size of a core file. -+ CoreFileSize uint64 -+ // Limit of the process's resident set in pages. -+ ResidentSet uint64 -+ // Maximum number of processes that can be created for the real user ID of -+ // the calling process. -+ Processes uint64 -+ // Value one greater than the maximum file descriptor number that can be -+ // opened by this process. -+ OpenFiles uint64 -+ // Maximum number of bytes of memory that may be locked into RAM. -+ LockedMemory uint64 -+ // Maximum size of the process's virtual memory address space in bytes. -+ AddressSpace uint64 -+ // Limit on the combined number of flock(2) locks and fcntl(2) leases that -+ // this process may establish. -+ FileLocks uint64 -+ // Limit of signals that may be queued for the real user ID of the calling -+ // process. -+ PendingSignals uint64 -+ // Limit on the number of bytes that can be allocated for POSIX message -+ // queues for the real user ID of the calling process. -+ MsqqueueSize uint64 -+ // Limit of the nice priority set using setpriority(2) or nice(2). -+ NicePriority uint64 -+ // Limit of the real-time priority set using sched_setscheduler(2) or -+ // sched_setparam(2). -+ RealtimePriority uint64 -+ // Limit (in microseconds) on the amount of CPU time that a process -+ // scheduled under a real-time scheduling policy may consume without making -+ // a blocking system call. -+ RealtimeTimeout uint64 -+} -+ -+const ( -+ limitsFields = 4 -+ limitsUnlimited = "unlimited" -+) -+ -+var ( -+ limitsMatch = regexp.MustCompile(`(Max \w+\s{0,1}?\w*\s{0,1}\w*)\s{2,}(\w+)\s+(\w+)`) -+) -+ -+// NewLimits returns the current soft limits of the process. -+// -+// Deprecated: Use p.Limits() instead. -+func (p Proc) NewLimits() (ProcLimits, error) { -+ return p.Limits() -+} -+ -+// Limits returns the current soft limits of the process. -+func (p Proc) Limits() (ProcLimits, error) { -+ f, err := os.Open(p.path("limits")) -+ if err != nil { -+ return ProcLimits{}, err -+ } -+ defer f.Close() -+ -+ var ( -+ l = ProcLimits{} -+ s = bufio.NewScanner(f) -+ ) -+ -+ s.Scan() // Skip limits header -+ -+ for s.Scan() { -+ //fields := limitsMatch.Split(s.Text(), limitsFields) -+ fields := limitsMatch.FindStringSubmatch(s.Text()) -+ if len(fields) != limitsFields { -+ return ProcLimits{}, fmt.Errorf("couldn't parse %q line %q", f.Name(), s.Text()) -+ } -+ -+ switch fields[1] { -+ case "Max cpu time": -+ l.CPUTime, err = parseUint(fields[2]) -+ case "Max file size": -+ l.FileSize, err = parseUint(fields[2]) -+ case "Max data size": -+ l.DataSize, err = parseUint(fields[2]) -+ case "Max stack size": -+ l.StackSize, err = parseUint(fields[2]) -+ case "Max core file size": -+ l.CoreFileSize, err = parseUint(fields[2]) -+ case "Max resident set": -+ l.ResidentSet, err = parseUint(fields[2]) -+ case "Max processes": -+ l.Processes, err = parseUint(fields[2]) -+ case "Max open files": -+ l.OpenFiles, err = parseUint(fields[2]) -+ case "Max locked memory": -+ l.LockedMemory, err = parseUint(fields[2]) -+ case "Max address space": -+ l.AddressSpace, err = parseUint(fields[2]) -+ case "Max file locks": -+ l.FileLocks, err = parseUint(fields[2]) -+ case "Max pending signals": -+ l.PendingSignals, err = parseUint(fields[2]) -+ case "Max msgqueue size": -+ l.MsqqueueSize, err = parseUint(fields[2]) -+ case "Max nice priority": -+ l.NicePriority, err = parseUint(fields[2]) -+ case "Max realtime priority": -+ l.RealtimePriority, err = parseUint(fields[2]) -+ case "Max realtime timeout": -+ l.RealtimeTimeout, err = parseUint(fields[2]) -+ } -+ if err != nil { -+ return ProcLimits{}, err -+ } -+ } -+ -+ return l, s.Err() -+} -+ -+func parseUint(s string) (uint64, error) { -+ if s == limitsUnlimited { -+ return 18446744073709551615, nil -+ } -+ i, err := strconv.ParseUint(s, 10, 64) -+ if err != nil { -+ return 0, fmt.Errorf("couldn't parse value %q: %w", s, err) -+ } -+ return i, nil -+} -diff --git a/vendor/github.com/prometheus/procfs/proc_maps.go b/vendor/github.com/prometheus/procfs/proc_maps.go -new file mode 100755 -index 0000000..f1bcbf3 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/proc_maps.go -@@ -0,0 +1,211 @@ -+// Copyright 2019 The Prometheus 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:build (aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris) && !js -+// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris -+// +build !js -+ -+package procfs -+ -+import ( -+ "bufio" -+ "fmt" -+ "os" -+ "strconv" -+ "strings" -+ -+ "golang.org/x/sys/unix" -+) -+ -+// ProcMapPermissions contains permission settings read from `/proc/[pid]/maps`. -+type ProcMapPermissions struct { -+ // mapping has the [R]ead flag set -+ Read bool -+ // mapping has the [W]rite flag set -+ Write bool -+ // mapping has the [X]ecutable flag set -+ Execute bool -+ // mapping has the [S]hared flag set -+ Shared bool -+ // mapping is marked as [P]rivate (copy on write) -+ Private bool -+} -+ -+// ProcMap contains the process memory-mappings of the process -+// read from `/proc/[pid]/maps`. -+type ProcMap struct { -+ // The start address of current mapping. -+ StartAddr uintptr -+ // The end address of the current mapping -+ EndAddr uintptr -+ // The permissions for this mapping -+ Perms *ProcMapPermissions -+ // The current offset into the file/fd (e.g., shared libs) -+ Offset int64 -+ // Device owner of this mapping (major:minor) in Mkdev format. -+ Dev uint64 -+ // The inode of the device above -+ Inode uint64 -+ // The file or psuedofile (or empty==anonymous) -+ Pathname string -+} -+ -+// parseDevice parses the device token of a line and converts it to a dev_t -+// (mkdev) like structure. -+func parseDevice(s string) (uint64, error) { -+ toks := strings.Split(s, ":") -+ if len(toks) < 2 { -+ return 0, fmt.Errorf("unexpected number of fields") -+ } -+ -+ major, err := strconv.ParseUint(toks[0], 16, 0) -+ if err != nil { -+ return 0, err -+ } -+ -+ minor, err := strconv.ParseUint(toks[1], 16, 0) -+ if err != nil { -+ return 0, err -+ } -+ -+ return unix.Mkdev(uint32(major), uint32(minor)), nil -+} -+ -+// parseAddress converts a hex-string to a uintptr. -+func parseAddress(s string) (uintptr, error) { -+ a, err := strconv.ParseUint(s, 16, 0) -+ if err != nil { -+ return 0, err -+ } -+ -+ return uintptr(a), nil -+} -+ -+// parseAddresses parses the start-end address. -+func parseAddresses(s string) (uintptr, uintptr, error) { -+ toks := strings.Split(s, "-") -+ if len(toks) < 2 { -+ return 0, 0, fmt.Errorf("invalid address") -+ } -+ -+ saddr, err := parseAddress(toks[0]) -+ if err != nil { -+ return 0, 0, err -+ } -+ -+ eaddr, err := parseAddress(toks[1]) -+ if err != nil { -+ return 0, 0, err -+ } -+ -+ return saddr, eaddr, nil -+} -+ -+// parsePermissions parses a token and returns any that are set. -+func parsePermissions(s string) (*ProcMapPermissions, error) { -+ if len(s) < 4 { -+ return nil, fmt.Errorf("invalid permissions token") -+ } -+ -+ perms := ProcMapPermissions{} -+ for _, ch := range s { -+ switch ch { -+ case 'r': -+ perms.Read = true -+ case 'w': -+ perms.Write = true -+ case 'x': -+ perms.Execute = true -+ case 'p': -+ perms.Private = true -+ case 's': -+ perms.Shared = true -+ } -+ } -+ -+ return &perms, nil -+} -+ -+// parseProcMap will attempt to parse a single line within a proc/[pid]/maps -+// buffer. -+func parseProcMap(text string) (*ProcMap, error) { -+ fields := strings.Fields(text) -+ if len(fields) < 5 { -+ return nil, fmt.Errorf("truncated procmap entry") -+ } -+ -+ saddr, eaddr, err := parseAddresses(fields[0]) -+ if err != nil { -+ return nil, err -+ } -+ -+ perms, err := parsePermissions(fields[1]) -+ if err != nil { -+ return nil, err -+ } -+ -+ offset, err := strconv.ParseInt(fields[2], 16, 0) -+ if err != nil { -+ return nil, err -+ } -+ -+ device, err := parseDevice(fields[3]) -+ if err != nil { -+ return nil, err -+ } -+ -+ inode, err := strconv.ParseUint(fields[4], 10, 0) -+ if err != nil { -+ return nil, err -+ } -+ -+ pathname := "" -+ -+ if len(fields) >= 5 { -+ pathname = strings.Join(fields[5:], " ") -+ } -+ -+ return &ProcMap{ -+ StartAddr: saddr, -+ EndAddr: eaddr, -+ Perms: perms, -+ Offset: offset, -+ Dev: device, -+ Inode: inode, -+ Pathname: pathname, -+ }, nil -+} -+ -+// ProcMaps reads from /proc/[pid]/maps to get the memory-mappings of the -+// process. -+func (p Proc) ProcMaps() ([]*ProcMap, error) { -+ file, err := os.Open(p.path("maps")) -+ if err != nil { -+ return nil, err -+ } -+ defer file.Close() -+ -+ maps := []*ProcMap{} -+ scan := bufio.NewScanner(file) -+ -+ for scan.Scan() { -+ m, err := parseProcMap(scan.Text()) -+ if err != nil { -+ return nil, err -+ } -+ -+ maps = append(maps, m) -+ } -+ -+ return maps, nil -+} -diff --git a/vendor/github.com/prometheus/procfs/proc_netstat.go b/vendor/github.com/prometheus/procfs/proc_netstat.go -new file mode 100755 -index 0000000..48b5238 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/proc_netstat.go -@@ -0,0 +1,440 @@ -+// Copyright 2022 The Prometheus 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 procfs -+ -+import ( -+ "bufio" -+ "bytes" -+ "fmt" -+ "io" -+ "strconv" -+ "strings" -+ -+ "github.com/prometheus/procfs/internal/util" -+) -+ -+// ProcNetstat models the content of /proc//net/netstat. -+type ProcNetstat struct { -+ // The process ID. -+ PID int -+ TcpExt -+ IpExt -+} -+ -+type TcpExt struct { // nolint:revive -+ SyncookiesSent float64 -+ SyncookiesRecv float64 -+ SyncookiesFailed float64 -+ EmbryonicRsts float64 -+ PruneCalled float64 -+ RcvPruned float64 -+ OfoPruned float64 -+ OutOfWindowIcmps float64 -+ LockDroppedIcmps float64 -+ ArpFilter float64 -+ TW float64 -+ TWRecycled float64 -+ TWKilled float64 -+ PAWSActive float64 -+ PAWSEstab float64 -+ DelayedACKs float64 -+ DelayedACKLocked float64 -+ DelayedACKLost float64 -+ ListenOverflows float64 -+ ListenDrops float64 -+ TCPHPHits float64 -+ TCPPureAcks float64 -+ TCPHPAcks float64 -+ TCPRenoRecovery float64 -+ TCPSackRecovery float64 -+ TCPSACKReneging float64 -+ TCPSACKReorder float64 -+ TCPRenoReorder float64 -+ TCPTSReorder float64 -+ TCPFullUndo float64 -+ TCPPartialUndo float64 -+ TCPDSACKUndo float64 -+ TCPLossUndo float64 -+ TCPLostRetransmit float64 -+ TCPRenoFailures float64 -+ TCPSackFailures float64 -+ TCPLossFailures float64 -+ TCPFastRetrans float64 -+ TCPSlowStartRetrans float64 -+ TCPTimeouts float64 -+ TCPLossProbes float64 -+ TCPLossProbeRecovery float64 -+ TCPRenoRecoveryFail float64 -+ TCPSackRecoveryFail float64 -+ TCPRcvCollapsed float64 -+ TCPDSACKOldSent float64 -+ TCPDSACKOfoSent float64 -+ TCPDSACKRecv float64 -+ TCPDSACKOfoRecv float64 -+ TCPAbortOnData float64 -+ TCPAbortOnClose float64 -+ TCPAbortOnMemory float64 -+ TCPAbortOnTimeout float64 -+ TCPAbortOnLinger float64 -+ TCPAbortFailed float64 -+ TCPMemoryPressures float64 -+ TCPMemoryPressuresChrono float64 -+ TCPSACKDiscard float64 -+ TCPDSACKIgnoredOld float64 -+ TCPDSACKIgnoredNoUndo float64 -+ TCPSpuriousRTOs float64 -+ TCPMD5NotFound float64 -+ TCPMD5Unexpected float64 -+ TCPMD5Failure float64 -+ TCPSackShifted float64 -+ TCPSackMerged float64 -+ TCPSackShiftFallback float64 -+ TCPBacklogDrop float64 -+ PFMemallocDrop float64 -+ TCPMinTTLDrop float64 -+ TCPDeferAcceptDrop float64 -+ IPReversePathFilter float64 -+ TCPTimeWaitOverflow float64 -+ TCPReqQFullDoCookies float64 -+ TCPReqQFullDrop float64 -+ TCPRetransFail float64 -+ TCPRcvCoalesce float64 -+ TCPOFOQueue float64 -+ TCPOFODrop float64 -+ TCPOFOMerge float64 -+ TCPChallengeACK float64 -+ TCPSYNChallenge float64 -+ TCPFastOpenActive float64 -+ TCPFastOpenActiveFail float64 -+ TCPFastOpenPassive float64 -+ TCPFastOpenPassiveFail float64 -+ TCPFastOpenListenOverflow float64 -+ TCPFastOpenCookieReqd float64 -+ TCPFastOpenBlackhole float64 -+ TCPSpuriousRtxHostQueues float64 -+ BusyPollRxPackets float64 -+ TCPAutoCorking float64 -+ TCPFromZeroWindowAdv float64 -+ TCPToZeroWindowAdv float64 -+ TCPWantZeroWindowAdv float64 -+ TCPSynRetrans float64 -+ TCPOrigDataSent float64 -+ TCPHystartTrainDetect float64 -+ TCPHystartTrainCwnd float64 -+ TCPHystartDelayDetect float64 -+ TCPHystartDelayCwnd float64 -+ TCPACKSkippedSynRecv float64 -+ TCPACKSkippedPAWS float64 -+ TCPACKSkippedSeq float64 -+ TCPACKSkippedFinWait2 float64 -+ TCPACKSkippedTimeWait float64 -+ TCPACKSkippedChallenge float64 -+ TCPWinProbe float64 -+ TCPKeepAlive float64 -+ TCPMTUPFail float64 -+ TCPMTUPSuccess float64 -+ TCPWqueueTooBig float64 -+} -+ -+type IpExt struct { // nolint:revive -+ InNoRoutes float64 -+ InTruncatedPkts float64 -+ InMcastPkts float64 -+ OutMcastPkts float64 -+ InBcastPkts float64 -+ OutBcastPkts float64 -+ InOctets float64 -+ OutOctets float64 -+ InMcastOctets float64 -+ OutMcastOctets float64 -+ InBcastOctets float64 -+ OutBcastOctets float64 -+ InCsumErrors float64 -+ InNoECTPkts float64 -+ InECT1Pkts float64 -+ InECT0Pkts float64 -+ InCEPkts float64 -+ ReasmOverlaps float64 -+} -+ -+func (p Proc) Netstat() (ProcNetstat, error) { -+ filename := p.path("net/netstat") -+ data, err := util.ReadFileNoStat(filename) -+ if err != nil { -+ return ProcNetstat{PID: p.PID}, err -+ } -+ procNetstat, err := parseNetstat(bytes.NewReader(data), filename) -+ procNetstat.PID = p.PID -+ return procNetstat, err -+} -+ -+// parseNetstat parses the metrics from proc//net/netstat file -+// and returns a ProcNetstat structure. -+func parseNetstat(r io.Reader, fileName string) (ProcNetstat, error) { -+ var ( -+ scanner = bufio.NewScanner(r) -+ procNetstat = ProcNetstat{} -+ ) -+ -+ for scanner.Scan() { -+ nameParts := strings.Split(scanner.Text(), " ") -+ scanner.Scan() -+ valueParts := strings.Split(scanner.Text(), " ") -+ // Remove trailing :. -+ protocol := strings.TrimSuffix(nameParts[0], ":") -+ if len(nameParts) != len(valueParts) { -+ return procNetstat, fmt.Errorf("mismatch field count mismatch in %s: %s", -+ fileName, protocol) -+ } -+ for i := 1; i < len(nameParts); i++ { -+ value, err := strconv.ParseFloat(valueParts[i], 64) -+ if err != nil { -+ return procNetstat, err -+ } -+ key := nameParts[i] -+ -+ switch protocol { -+ case "TcpExt": -+ switch key { -+ case "SyncookiesSent": -+ procNetstat.TcpExt.SyncookiesSent = value -+ case "SyncookiesRecv": -+ procNetstat.TcpExt.SyncookiesRecv = value -+ case "SyncookiesFailed": -+ procNetstat.TcpExt.SyncookiesFailed = value -+ case "EmbryonicRsts": -+ procNetstat.TcpExt.EmbryonicRsts = value -+ case "PruneCalled": -+ procNetstat.TcpExt.PruneCalled = value -+ case "RcvPruned": -+ procNetstat.TcpExt.RcvPruned = value -+ case "OfoPruned": -+ procNetstat.TcpExt.OfoPruned = value -+ case "OutOfWindowIcmps": -+ procNetstat.TcpExt.OutOfWindowIcmps = value -+ case "LockDroppedIcmps": -+ procNetstat.TcpExt.LockDroppedIcmps = value -+ case "ArpFilter": -+ procNetstat.TcpExt.ArpFilter = value -+ case "TW": -+ procNetstat.TcpExt.TW = value -+ case "TWRecycled": -+ procNetstat.TcpExt.TWRecycled = value -+ case "TWKilled": -+ procNetstat.TcpExt.TWKilled = value -+ case "PAWSActive": -+ procNetstat.TcpExt.PAWSActive = value -+ case "PAWSEstab": -+ procNetstat.TcpExt.PAWSEstab = value -+ case "DelayedACKs": -+ procNetstat.TcpExt.DelayedACKs = value -+ case "DelayedACKLocked": -+ procNetstat.TcpExt.DelayedACKLocked = value -+ case "DelayedACKLost": -+ procNetstat.TcpExt.DelayedACKLost = value -+ case "ListenOverflows": -+ procNetstat.TcpExt.ListenOverflows = value -+ case "ListenDrops": -+ procNetstat.TcpExt.ListenDrops = value -+ case "TCPHPHits": -+ procNetstat.TcpExt.TCPHPHits = value -+ case "TCPPureAcks": -+ procNetstat.TcpExt.TCPPureAcks = value -+ case "TCPHPAcks": -+ procNetstat.TcpExt.TCPHPAcks = value -+ case "TCPRenoRecovery": -+ procNetstat.TcpExt.TCPRenoRecovery = value -+ case "TCPSackRecovery": -+ procNetstat.TcpExt.TCPSackRecovery = value -+ case "TCPSACKReneging": -+ procNetstat.TcpExt.TCPSACKReneging = value -+ case "TCPSACKReorder": -+ procNetstat.TcpExt.TCPSACKReorder = value -+ case "TCPRenoReorder": -+ procNetstat.TcpExt.TCPRenoReorder = value -+ case "TCPTSReorder": -+ procNetstat.TcpExt.TCPTSReorder = value -+ case "TCPFullUndo": -+ procNetstat.TcpExt.TCPFullUndo = value -+ case "TCPPartialUndo": -+ procNetstat.TcpExt.TCPPartialUndo = value -+ case "TCPDSACKUndo": -+ procNetstat.TcpExt.TCPDSACKUndo = value -+ case "TCPLossUndo": -+ procNetstat.TcpExt.TCPLossUndo = value -+ case "TCPLostRetransmit": -+ procNetstat.TcpExt.TCPLostRetransmit = value -+ case "TCPRenoFailures": -+ procNetstat.TcpExt.TCPRenoFailures = value -+ case "TCPSackFailures": -+ procNetstat.TcpExt.TCPSackFailures = value -+ case "TCPLossFailures": -+ procNetstat.TcpExt.TCPLossFailures = value -+ case "TCPFastRetrans": -+ procNetstat.TcpExt.TCPFastRetrans = value -+ case "TCPSlowStartRetrans": -+ procNetstat.TcpExt.TCPSlowStartRetrans = value -+ case "TCPTimeouts": -+ procNetstat.TcpExt.TCPTimeouts = value -+ case "TCPLossProbes": -+ procNetstat.TcpExt.TCPLossProbes = value -+ case "TCPLossProbeRecovery": -+ procNetstat.TcpExt.TCPLossProbeRecovery = value -+ case "TCPRenoRecoveryFail": -+ procNetstat.TcpExt.TCPRenoRecoveryFail = value -+ case "TCPSackRecoveryFail": -+ procNetstat.TcpExt.TCPSackRecoveryFail = value -+ case "TCPRcvCollapsed": -+ procNetstat.TcpExt.TCPRcvCollapsed = value -+ case "TCPDSACKOldSent": -+ procNetstat.TcpExt.TCPDSACKOldSent = value -+ case "TCPDSACKOfoSent": -+ procNetstat.TcpExt.TCPDSACKOfoSent = value -+ case "TCPDSACKRecv": -+ procNetstat.TcpExt.TCPDSACKRecv = value -+ case "TCPDSACKOfoRecv": -+ procNetstat.TcpExt.TCPDSACKOfoRecv = value -+ case "TCPAbortOnData": -+ procNetstat.TcpExt.TCPAbortOnData = value -+ case "TCPAbortOnClose": -+ procNetstat.TcpExt.TCPAbortOnClose = value -+ case "TCPDeferAcceptDrop": -+ procNetstat.TcpExt.TCPDeferAcceptDrop = value -+ case "IPReversePathFilter": -+ procNetstat.TcpExt.IPReversePathFilter = value -+ case "TCPTimeWaitOverflow": -+ procNetstat.TcpExt.TCPTimeWaitOverflow = value -+ case "TCPReqQFullDoCookies": -+ procNetstat.TcpExt.TCPReqQFullDoCookies = value -+ case "TCPReqQFullDrop": -+ procNetstat.TcpExt.TCPReqQFullDrop = value -+ case "TCPRetransFail": -+ procNetstat.TcpExt.TCPRetransFail = value -+ case "TCPRcvCoalesce": -+ procNetstat.TcpExt.TCPRcvCoalesce = value -+ case "TCPOFOQueue": -+ procNetstat.TcpExt.TCPOFOQueue = value -+ case "TCPOFODrop": -+ procNetstat.TcpExt.TCPOFODrop = value -+ case "TCPOFOMerge": -+ procNetstat.TcpExt.TCPOFOMerge = value -+ case "TCPChallengeACK": -+ procNetstat.TcpExt.TCPChallengeACK = value -+ case "TCPSYNChallenge": -+ procNetstat.TcpExt.TCPSYNChallenge = value -+ case "TCPFastOpenActive": -+ procNetstat.TcpExt.TCPFastOpenActive = value -+ case "TCPFastOpenActiveFail": -+ procNetstat.TcpExt.TCPFastOpenActiveFail = value -+ case "TCPFastOpenPassive": -+ procNetstat.TcpExt.TCPFastOpenPassive = value -+ case "TCPFastOpenPassiveFail": -+ procNetstat.TcpExt.TCPFastOpenPassiveFail = value -+ case "TCPFastOpenListenOverflow": -+ procNetstat.TcpExt.TCPFastOpenListenOverflow = value -+ case "TCPFastOpenCookieReqd": -+ procNetstat.TcpExt.TCPFastOpenCookieReqd = value -+ case "TCPFastOpenBlackhole": -+ procNetstat.TcpExt.TCPFastOpenBlackhole = value -+ case "TCPSpuriousRtxHostQueues": -+ procNetstat.TcpExt.TCPSpuriousRtxHostQueues = value -+ case "BusyPollRxPackets": -+ procNetstat.TcpExt.BusyPollRxPackets = value -+ case "TCPAutoCorking": -+ procNetstat.TcpExt.TCPAutoCorking = value -+ case "TCPFromZeroWindowAdv": -+ procNetstat.TcpExt.TCPFromZeroWindowAdv = value -+ case "TCPToZeroWindowAdv": -+ procNetstat.TcpExt.TCPToZeroWindowAdv = value -+ case "TCPWantZeroWindowAdv": -+ procNetstat.TcpExt.TCPWantZeroWindowAdv = value -+ case "TCPSynRetrans": -+ procNetstat.TcpExt.TCPSynRetrans = value -+ case "TCPOrigDataSent": -+ procNetstat.TcpExt.TCPOrigDataSent = value -+ case "TCPHystartTrainDetect": -+ procNetstat.TcpExt.TCPHystartTrainDetect = value -+ case "TCPHystartTrainCwnd": -+ procNetstat.TcpExt.TCPHystartTrainCwnd = value -+ case "TCPHystartDelayDetect": -+ procNetstat.TcpExt.TCPHystartDelayDetect = value -+ case "TCPHystartDelayCwnd": -+ procNetstat.TcpExt.TCPHystartDelayCwnd = value -+ case "TCPACKSkippedSynRecv": -+ procNetstat.TcpExt.TCPACKSkippedSynRecv = value -+ case "TCPACKSkippedPAWS": -+ procNetstat.TcpExt.TCPACKSkippedPAWS = value -+ case "TCPACKSkippedSeq": -+ procNetstat.TcpExt.TCPACKSkippedSeq = value -+ case "TCPACKSkippedFinWait2": -+ procNetstat.TcpExt.TCPACKSkippedFinWait2 = value -+ case "TCPACKSkippedTimeWait": -+ procNetstat.TcpExt.TCPACKSkippedTimeWait = value -+ case "TCPACKSkippedChallenge": -+ procNetstat.TcpExt.TCPACKSkippedChallenge = value -+ case "TCPWinProbe": -+ procNetstat.TcpExt.TCPWinProbe = value -+ case "TCPKeepAlive": -+ procNetstat.TcpExt.TCPKeepAlive = value -+ case "TCPMTUPFail": -+ procNetstat.TcpExt.TCPMTUPFail = value -+ case "TCPMTUPSuccess": -+ procNetstat.TcpExt.TCPMTUPSuccess = value -+ case "TCPWqueueTooBig": -+ procNetstat.TcpExt.TCPWqueueTooBig = value -+ } -+ case "IpExt": -+ switch key { -+ case "InNoRoutes": -+ procNetstat.IpExt.InNoRoutes = value -+ case "InTruncatedPkts": -+ procNetstat.IpExt.InTruncatedPkts = value -+ case "InMcastPkts": -+ procNetstat.IpExt.InMcastPkts = value -+ case "OutMcastPkts": -+ procNetstat.IpExt.OutMcastPkts = value -+ case "InBcastPkts": -+ procNetstat.IpExt.InBcastPkts = value -+ case "OutBcastPkts": -+ procNetstat.IpExt.OutBcastPkts = value -+ case "InOctets": -+ procNetstat.IpExt.InOctets = value -+ case "OutOctets": -+ procNetstat.IpExt.OutOctets = value -+ case "InMcastOctets": -+ procNetstat.IpExt.InMcastOctets = value -+ case "OutMcastOctets": -+ procNetstat.IpExt.OutMcastOctets = value -+ case "InBcastOctets": -+ procNetstat.IpExt.InBcastOctets = value -+ case "OutBcastOctets": -+ procNetstat.IpExt.OutBcastOctets = value -+ case "InCsumErrors": -+ procNetstat.IpExt.InCsumErrors = value -+ case "InNoECTPkts": -+ procNetstat.IpExt.InNoECTPkts = value -+ case "InECT1Pkts": -+ procNetstat.IpExt.InECT1Pkts = value -+ case "InECT0Pkts": -+ procNetstat.IpExt.InECT0Pkts = value -+ case "InCEPkts": -+ procNetstat.IpExt.InCEPkts = value -+ case "ReasmOverlaps": -+ procNetstat.IpExt.ReasmOverlaps = value -+ } -+ } -+ } -+ } -+ return procNetstat, scanner.Err() -+} -diff --git a/vendor/github.com/prometheus/procfs/proc_ns.go b/vendor/github.com/prometheus/procfs/proc_ns.go -new file mode 100755 -index 0000000..391b4cb ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/proc_ns.go -@@ -0,0 +1,68 @@ -+// Copyright 2018 The Prometheus 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 procfs -+ -+import ( -+ "fmt" -+ "os" -+ "strconv" -+ "strings" -+) -+ -+// Namespace represents a single namespace of a process. -+type Namespace struct { -+ Type string // Namespace type. -+ Inode uint32 // Inode number of the namespace. If two processes are in the same namespace their inodes will match. -+} -+ -+// Namespaces contains all of the namespaces that the process is contained in. -+type Namespaces map[string]Namespace -+ -+// Namespaces reads from /proc//ns/* to get the namespaces of which the -+// process is a member. -+func (p Proc) Namespaces() (Namespaces, error) { -+ d, err := os.Open(p.path("ns")) -+ if err != nil { -+ return nil, err -+ } -+ defer d.Close() -+ -+ names, err := d.Readdirnames(-1) -+ if err != nil { -+ return nil, fmt.Errorf("failed to read contents of ns dir: %w", err) -+ } -+ -+ ns := make(Namespaces, len(names)) -+ for _, name := range names { -+ target, err := os.Readlink(p.path("ns", name)) -+ if err != nil { -+ return nil, err -+ } -+ -+ fields := strings.SplitN(target, ":", 2) -+ if len(fields) != 2 { -+ return nil, fmt.Errorf("failed to parse namespace type and inode from %q", target) -+ } -+ -+ typ := fields[0] -+ inode, err := strconv.ParseUint(strings.Trim(fields[1], "[]"), 10, 32) -+ if err != nil { -+ return nil, fmt.Errorf("failed to parse inode from %q: %w", fields[1], err) -+ } -+ -+ ns[name] = Namespace{typ, uint32(inode)} -+ } -+ -+ return ns, nil -+} -diff --git a/vendor/github.com/prometheus/procfs/proc_psi.go b/vendor/github.com/prometheus/procfs/proc_psi.go -new file mode 100755 -index 0000000..a68fe15 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/proc_psi.go -@@ -0,0 +1,102 @@ -+// Copyright 2019 The Prometheus 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 procfs -+ -+// The PSI / pressure interface is described at -+// https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/accounting/psi.txt -+// Each resource (cpu, io, memory, ...) is exposed as a single file. -+// Each file may contain up to two lines, one for "some" pressure and one for "full" pressure. -+// Each line contains several averages (over n seconds) and a total in µs. -+// -+// Example io pressure file: -+// > some avg10=0.06 avg60=0.21 avg300=0.99 total=8537362 -+// > full avg10=0.00 avg60=0.13 avg300=0.96 total=8183134 -+ -+import ( -+ "bufio" -+ "bytes" -+ "fmt" -+ "io" -+ "strings" -+ -+ "github.com/prometheus/procfs/internal/util" -+) -+ -+const lineFormat = "avg10=%f avg60=%f avg300=%f total=%d" -+ -+// PSILine is a single line of values as returned by `/proc/pressure/*`. -+// -+// The Avg entries are averages over n seconds, as a percentage. -+// The Total line is in microseconds. -+type PSILine struct { -+ Avg10 float64 -+ Avg60 float64 -+ Avg300 float64 -+ Total uint64 -+} -+ -+// PSIStats represent pressure stall information from /proc/pressure/* -+// -+// "Some" indicates the share of time in which at least some tasks are stalled. -+// "Full" indicates the share of time in which all non-idle tasks are stalled simultaneously. -+type PSIStats struct { -+ Some *PSILine -+ Full *PSILine -+} -+ -+// PSIStatsForResource reads pressure stall information for the specified -+// resource from /proc/pressure/. At time of writing this can be -+// either "cpu", "memory" or "io". -+func (fs FS) PSIStatsForResource(resource string) (PSIStats, error) { -+ data, err := util.ReadFileNoStat(fs.proc.Path(fmt.Sprintf("%s/%s", "pressure", resource))) -+ if err != nil { -+ return PSIStats{}, fmt.Errorf("psi_stats: unavailable for %q: %w", resource, err) -+ } -+ -+ return parsePSIStats(resource, bytes.NewReader(data)) -+} -+ -+// parsePSIStats parses the specified file for pressure stall information. -+func parsePSIStats(resource string, r io.Reader) (PSIStats, error) { -+ psiStats := PSIStats{} -+ -+ scanner := bufio.NewScanner(r) -+ for scanner.Scan() { -+ l := scanner.Text() -+ prefix := strings.Split(l, " ")[0] -+ switch prefix { -+ case "some": -+ psi := PSILine{} -+ _, err := fmt.Sscanf(l, fmt.Sprintf("some %s", lineFormat), &psi.Avg10, &psi.Avg60, &psi.Avg300, &psi.Total) -+ if err != nil { -+ return PSIStats{}, err -+ } -+ psiStats.Some = &psi -+ case "full": -+ psi := PSILine{} -+ _, err := fmt.Sscanf(l, fmt.Sprintf("full %s", lineFormat), &psi.Avg10, &psi.Avg60, &psi.Avg300, &psi.Total) -+ if err != nil { -+ return PSIStats{}, err -+ } -+ psiStats.Full = &psi -+ default: -+ // If we encounter a line with an unknown prefix, ignore it and move on -+ // Should new measurement types be added in the future we'll simply ignore them instead -+ // of erroring on retrieval -+ continue -+ } -+ } -+ -+ return psiStats, nil -+} -diff --git a/vendor/github.com/prometheus/procfs/proc_smaps.go b/vendor/github.com/prometheus/procfs/proc_smaps.go -new file mode 100755 -index 0000000..0e97d99 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/proc_smaps.go -@@ -0,0 +1,166 @@ -+// Copyright 2020 The Prometheus 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:build !windows -+// +build !windows -+ -+package procfs -+ -+import ( -+ "bufio" -+ "errors" -+ "fmt" -+ "os" -+ "regexp" -+ "strconv" -+ "strings" -+ -+ "github.com/prometheus/procfs/internal/util" -+) -+ -+var ( -+ // match the header line before each mapped zone in `/proc/pid/smaps`. -+ procSMapsHeaderLine = regexp.MustCompile(`^[a-f0-9].*$`) -+) -+ -+type ProcSMapsRollup struct { -+ // Amount of the mapping that is currently resident in RAM. -+ Rss uint64 -+ // Process's proportional share of this mapping. -+ Pss uint64 -+ // Size in bytes of clean shared pages. -+ SharedClean uint64 -+ // Size in bytes of dirty shared pages. -+ SharedDirty uint64 -+ // Size in bytes of clean private pages. -+ PrivateClean uint64 -+ // Size in bytes of dirty private pages. -+ PrivateDirty uint64 -+ // Amount of memory currently marked as referenced or accessed. -+ Referenced uint64 -+ // Amount of memory that does not belong to any file. -+ Anonymous uint64 -+ // Amount would-be-anonymous memory currently on swap. -+ Swap uint64 -+ // Process's proportional memory on swap. -+ SwapPss uint64 -+} -+ -+// ProcSMapsRollup reads from /proc/[pid]/smaps_rollup to get summed memory information of the -+// process. -+// -+// If smaps_rollup does not exists (require kernel >= 4.15), the content of /proc/pid/smaps will -+// we read and summed. -+func (p Proc) ProcSMapsRollup() (ProcSMapsRollup, error) { -+ data, err := util.ReadFileNoStat(p.path("smaps_rollup")) -+ if err != nil && os.IsNotExist(err) { -+ return p.procSMapsRollupManual() -+ } -+ if err != nil { -+ return ProcSMapsRollup{}, err -+ } -+ -+ lines := strings.Split(string(data), "\n") -+ smaps := ProcSMapsRollup{} -+ -+ // skip first line which don't contains information we need -+ lines = lines[1:] -+ for _, line := range lines { -+ if line == "" { -+ continue -+ } -+ -+ if err := smaps.parseLine(line); err != nil { -+ return ProcSMapsRollup{}, err -+ } -+ } -+ -+ return smaps, nil -+} -+ -+// Read /proc/pid/smaps and do the roll-up in Go code. -+func (p Proc) procSMapsRollupManual() (ProcSMapsRollup, error) { -+ file, err := os.Open(p.path("smaps")) -+ if err != nil { -+ return ProcSMapsRollup{}, err -+ } -+ defer file.Close() -+ -+ smaps := ProcSMapsRollup{} -+ scan := bufio.NewScanner(file) -+ -+ for scan.Scan() { -+ line := scan.Text() -+ -+ if procSMapsHeaderLine.MatchString(line) { -+ continue -+ } -+ -+ if err := smaps.parseLine(line); err != nil { -+ return ProcSMapsRollup{}, err -+ } -+ } -+ -+ return smaps, nil -+} -+ -+func (s *ProcSMapsRollup) parseLine(line string) error { -+ kv := strings.SplitN(line, ":", 2) -+ if len(kv) != 2 { -+ fmt.Println(line) -+ return errors.New("invalid net/dev line, missing colon") -+ } -+ -+ k := kv[0] -+ if k == "VmFlags" { -+ return nil -+ } -+ -+ v := strings.TrimSpace(kv[1]) -+ v = strings.TrimRight(v, " kB") -+ -+ vKBytes, err := strconv.ParseUint(v, 10, 64) -+ if err != nil { -+ return err -+ } -+ vBytes := vKBytes * 1024 -+ -+ s.addValue(k, v, vKBytes, vBytes) -+ -+ return nil -+} -+ -+func (s *ProcSMapsRollup) addValue(k string, vString string, vUint uint64, vUintBytes uint64) { -+ switch k { -+ case "Rss": -+ s.Rss += vUintBytes -+ case "Pss": -+ s.Pss += vUintBytes -+ case "Shared_Clean": -+ s.SharedClean += vUintBytes -+ case "Shared_Dirty": -+ s.SharedDirty += vUintBytes -+ case "Private_Clean": -+ s.PrivateClean += vUintBytes -+ case "Private_Dirty": -+ s.PrivateDirty += vUintBytes -+ case "Referenced": -+ s.Referenced += vUintBytes -+ case "Anonymous": -+ s.Anonymous += vUintBytes -+ case "Swap": -+ s.Swap += vUintBytes -+ case "SwapPss": -+ s.SwapPss += vUintBytes -+ } -+} -diff --git a/vendor/github.com/prometheus/procfs/proc_snmp.go b/vendor/github.com/prometheus/procfs/proc_snmp.go -new file mode 100755 -index 0000000..ae19189 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/proc_snmp.go -@@ -0,0 +1,353 @@ -+// Copyright 2022 The Prometheus 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 procfs -+ -+import ( -+ "bufio" -+ "bytes" -+ "fmt" -+ "io" -+ "strconv" -+ "strings" -+ -+ "github.com/prometheus/procfs/internal/util" -+) -+ -+// ProcSnmp models the content of /proc//net/snmp. -+type ProcSnmp struct { -+ // The process ID. -+ PID int -+ Ip -+ Icmp -+ IcmpMsg -+ Tcp -+ Udp -+ UdpLite -+} -+ -+type Ip struct { // nolint:revive -+ Forwarding float64 -+ DefaultTTL float64 -+ InReceives float64 -+ InHdrErrors float64 -+ InAddrErrors float64 -+ ForwDatagrams float64 -+ InUnknownProtos float64 -+ InDiscards float64 -+ InDelivers float64 -+ OutRequests float64 -+ OutDiscards float64 -+ OutNoRoutes float64 -+ ReasmTimeout float64 -+ ReasmReqds float64 -+ ReasmOKs float64 -+ ReasmFails float64 -+ FragOKs float64 -+ FragFails float64 -+ FragCreates float64 -+} -+ -+type Icmp struct { -+ InMsgs float64 -+ InErrors float64 -+ InCsumErrors float64 -+ InDestUnreachs float64 -+ InTimeExcds float64 -+ InParmProbs float64 -+ InSrcQuenchs float64 -+ InRedirects float64 -+ InEchos float64 -+ InEchoReps float64 -+ InTimestamps float64 -+ InTimestampReps float64 -+ InAddrMasks float64 -+ InAddrMaskReps float64 -+ OutMsgs float64 -+ OutErrors float64 -+ OutDestUnreachs float64 -+ OutTimeExcds float64 -+ OutParmProbs float64 -+ OutSrcQuenchs float64 -+ OutRedirects float64 -+ OutEchos float64 -+ OutEchoReps float64 -+ OutTimestamps float64 -+ OutTimestampReps float64 -+ OutAddrMasks float64 -+ OutAddrMaskReps float64 -+} -+ -+type IcmpMsg struct { -+ InType3 float64 -+ OutType3 float64 -+} -+ -+type Tcp struct { // nolint:revive -+ RtoAlgorithm float64 -+ RtoMin float64 -+ RtoMax float64 -+ MaxConn float64 -+ ActiveOpens float64 -+ PassiveOpens float64 -+ AttemptFails float64 -+ EstabResets float64 -+ CurrEstab float64 -+ InSegs float64 -+ OutSegs float64 -+ RetransSegs float64 -+ InErrs float64 -+ OutRsts float64 -+ InCsumErrors float64 -+} -+ -+type Udp struct { // nolint:revive -+ InDatagrams float64 -+ NoPorts float64 -+ InErrors float64 -+ OutDatagrams float64 -+ RcvbufErrors float64 -+ SndbufErrors float64 -+ InCsumErrors float64 -+ IgnoredMulti float64 -+} -+ -+type UdpLite struct { // nolint:revive -+ InDatagrams float64 -+ NoPorts float64 -+ InErrors float64 -+ OutDatagrams float64 -+ RcvbufErrors float64 -+ SndbufErrors float64 -+ InCsumErrors float64 -+ IgnoredMulti float64 -+} -+ -+func (p Proc) Snmp() (ProcSnmp, error) { -+ filename := p.path("net/snmp") -+ data, err := util.ReadFileNoStat(filename) -+ if err != nil { -+ return ProcSnmp{PID: p.PID}, err -+ } -+ procSnmp, err := parseSnmp(bytes.NewReader(data), filename) -+ procSnmp.PID = p.PID -+ return procSnmp, err -+} -+ -+// parseSnmp parses the metrics from proc//net/snmp file -+// and returns a map contains those metrics (e.g. {"Ip": {"Forwarding": 2}}). -+func parseSnmp(r io.Reader, fileName string) (ProcSnmp, error) { -+ var ( -+ scanner = bufio.NewScanner(r) -+ procSnmp = ProcSnmp{} -+ ) -+ -+ for scanner.Scan() { -+ nameParts := strings.Split(scanner.Text(), " ") -+ scanner.Scan() -+ valueParts := strings.Split(scanner.Text(), " ") -+ // Remove trailing :. -+ protocol := strings.TrimSuffix(nameParts[0], ":") -+ if len(nameParts) != len(valueParts) { -+ return procSnmp, fmt.Errorf("mismatch field count mismatch in %s: %s", -+ fileName, protocol) -+ } -+ for i := 1; i < len(nameParts); i++ { -+ value, err := strconv.ParseFloat(valueParts[i], 64) -+ if err != nil { -+ return procSnmp, err -+ } -+ key := nameParts[i] -+ -+ switch protocol { -+ case "Ip": -+ switch key { -+ case "Forwarding": -+ procSnmp.Ip.Forwarding = value -+ case "DefaultTTL": -+ procSnmp.Ip.DefaultTTL = value -+ case "InReceives": -+ procSnmp.Ip.InReceives = value -+ case "InHdrErrors": -+ procSnmp.Ip.InHdrErrors = value -+ case "InAddrErrors": -+ procSnmp.Ip.InAddrErrors = value -+ case "ForwDatagrams": -+ procSnmp.Ip.ForwDatagrams = value -+ case "InUnknownProtos": -+ procSnmp.Ip.InUnknownProtos = value -+ case "InDiscards": -+ procSnmp.Ip.InDiscards = value -+ case "InDelivers": -+ procSnmp.Ip.InDelivers = value -+ case "OutRequests": -+ procSnmp.Ip.OutRequests = value -+ case "OutDiscards": -+ procSnmp.Ip.OutDiscards = value -+ case "OutNoRoutes": -+ procSnmp.Ip.OutNoRoutes = value -+ case "ReasmTimeout": -+ procSnmp.Ip.ReasmTimeout = value -+ case "ReasmReqds": -+ procSnmp.Ip.ReasmReqds = value -+ case "ReasmOKs": -+ procSnmp.Ip.ReasmOKs = value -+ case "ReasmFails": -+ procSnmp.Ip.ReasmFails = value -+ case "FragOKs": -+ procSnmp.Ip.FragOKs = value -+ case "FragFails": -+ procSnmp.Ip.FragFails = value -+ case "FragCreates": -+ procSnmp.Ip.FragCreates = value -+ } -+ case "Icmp": -+ switch key { -+ case "InMsgs": -+ procSnmp.Icmp.InMsgs = value -+ case "InErrors": -+ procSnmp.Icmp.InErrors = value -+ case "InCsumErrors": -+ procSnmp.Icmp.InCsumErrors = value -+ case "InDestUnreachs": -+ procSnmp.Icmp.InDestUnreachs = value -+ case "InTimeExcds": -+ procSnmp.Icmp.InTimeExcds = value -+ case "InParmProbs": -+ procSnmp.Icmp.InParmProbs = value -+ case "InSrcQuenchs": -+ procSnmp.Icmp.InSrcQuenchs = value -+ case "InRedirects": -+ procSnmp.Icmp.InRedirects = value -+ case "InEchos": -+ procSnmp.Icmp.InEchos = value -+ case "InEchoReps": -+ procSnmp.Icmp.InEchoReps = value -+ case "InTimestamps": -+ procSnmp.Icmp.InTimestamps = value -+ case "InTimestampReps": -+ procSnmp.Icmp.InTimestampReps = value -+ case "InAddrMasks": -+ procSnmp.Icmp.InAddrMasks = value -+ case "InAddrMaskReps": -+ procSnmp.Icmp.InAddrMaskReps = value -+ case "OutMsgs": -+ procSnmp.Icmp.OutMsgs = value -+ case "OutErrors": -+ procSnmp.Icmp.OutErrors = value -+ case "OutDestUnreachs": -+ procSnmp.Icmp.OutDestUnreachs = value -+ case "OutTimeExcds": -+ procSnmp.Icmp.OutTimeExcds = value -+ case "OutParmProbs": -+ procSnmp.Icmp.OutParmProbs = value -+ case "OutSrcQuenchs": -+ procSnmp.Icmp.OutSrcQuenchs = value -+ case "OutRedirects": -+ procSnmp.Icmp.OutRedirects = value -+ case "OutEchos": -+ procSnmp.Icmp.OutEchos = value -+ case "OutEchoReps": -+ procSnmp.Icmp.OutEchoReps = value -+ case "OutTimestamps": -+ procSnmp.Icmp.OutTimestamps = value -+ case "OutTimestampReps": -+ procSnmp.Icmp.OutTimestampReps = value -+ case "OutAddrMasks": -+ procSnmp.Icmp.OutAddrMasks = value -+ case "OutAddrMaskReps": -+ procSnmp.Icmp.OutAddrMaskReps = value -+ } -+ case "IcmpMsg": -+ switch key { -+ case "InType3": -+ procSnmp.IcmpMsg.InType3 = value -+ case "OutType3": -+ procSnmp.IcmpMsg.OutType3 = value -+ } -+ case "Tcp": -+ switch key { -+ case "RtoAlgorithm": -+ procSnmp.Tcp.RtoAlgorithm = value -+ case "RtoMin": -+ procSnmp.Tcp.RtoMin = value -+ case "RtoMax": -+ procSnmp.Tcp.RtoMax = value -+ case "MaxConn": -+ procSnmp.Tcp.MaxConn = value -+ case "ActiveOpens": -+ procSnmp.Tcp.ActiveOpens = value -+ case "PassiveOpens": -+ procSnmp.Tcp.PassiveOpens = value -+ case "AttemptFails": -+ procSnmp.Tcp.AttemptFails = value -+ case "EstabResets": -+ procSnmp.Tcp.EstabResets = value -+ case "CurrEstab": -+ procSnmp.Tcp.CurrEstab = value -+ case "InSegs": -+ procSnmp.Tcp.InSegs = value -+ case "OutSegs": -+ procSnmp.Tcp.OutSegs = value -+ case "RetransSegs": -+ procSnmp.Tcp.RetransSegs = value -+ case "InErrs": -+ procSnmp.Tcp.InErrs = value -+ case "OutRsts": -+ procSnmp.Tcp.OutRsts = value -+ case "InCsumErrors": -+ procSnmp.Tcp.InCsumErrors = value -+ } -+ case "Udp": -+ switch key { -+ case "InDatagrams": -+ procSnmp.Udp.InDatagrams = value -+ case "NoPorts": -+ procSnmp.Udp.NoPorts = value -+ case "InErrors": -+ procSnmp.Udp.InErrors = value -+ case "OutDatagrams": -+ procSnmp.Udp.OutDatagrams = value -+ case "RcvbufErrors": -+ procSnmp.Udp.RcvbufErrors = value -+ case "SndbufErrors": -+ procSnmp.Udp.SndbufErrors = value -+ case "InCsumErrors": -+ procSnmp.Udp.InCsumErrors = value -+ case "IgnoredMulti": -+ procSnmp.Udp.IgnoredMulti = value -+ } -+ case "UdpLite": -+ switch key { -+ case "InDatagrams": -+ procSnmp.UdpLite.InDatagrams = value -+ case "NoPorts": -+ procSnmp.UdpLite.NoPorts = value -+ case "InErrors": -+ procSnmp.UdpLite.InErrors = value -+ case "OutDatagrams": -+ procSnmp.UdpLite.OutDatagrams = value -+ case "RcvbufErrors": -+ procSnmp.UdpLite.RcvbufErrors = value -+ case "SndbufErrors": -+ procSnmp.UdpLite.SndbufErrors = value -+ case "InCsumErrors": -+ procSnmp.UdpLite.InCsumErrors = value -+ case "IgnoredMulti": -+ procSnmp.UdpLite.IgnoredMulti = value -+ } -+ } -+ } -+ } -+ return procSnmp, scanner.Err() -+} -diff --git a/vendor/github.com/prometheus/procfs/proc_snmp6.go b/vendor/github.com/prometheus/procfs/proc_snmp6.go -new file mode 100755 -index 0000000..f611992 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/proc_snmp6.go -@@ -0,0 +1,381 @@ -+// Copyright 2022 The Prometheus 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 procfs -+ -+import ( -+ "bufio" -+ "bytes" -+ "errors" -+ "io" -+ "os" -+ "strconv" -+ "strings" -+ -+ "github.com/prometheus/procfs/internal/util" -+) -+ -+// ProcSnmp6 models the content of /proc//net/snmp6. -+type ProcSnmp6 struct { -+ // The process ID. -+ PID int -+ Ip6 -+ Icmp6 -+ Udp6 -+ UdpLite6 -+} -+ -+type Ip6 struct { // nolint:revive -+ InReceives float64 -+ InHdrErrors float64 -+ InTooBigErrors float64 -+ InNoRoutes float64 -+ InAddrErrors float64 -+ InUnknownProtos float64 -+ InTruncatedPkts float64 -+ InDiscards float64 -+ InDelivers float64 -+ OutForwDatagrams float64 -+ OutRequests float64 -+ OutDiscards float64 -+ OutNoRoutes float64 -+ ReasmTimeout float64 -+ ReasmReqds float64 -+ ReasmOKs float64 -+ ReasmFails float64 -+ FragOKs float64 -+ FragFails float64 -+ FragCreates float64 -+ InMcastPkts float64 -+ OutMcastPkts float64 -+ InOctets float64 -+ OutOctets float64 -+ InMcastOctets float64 -+ OutMcastOctets float64 -+ InBcastOctets float64 -+ OutBcastOctets float64 -+ InNoECTPkts float64 -+ InECT1Pkts float64 -+ InECT0Pkts float64 -+ InCEPkts float64 -+} -+ -+type Icmp6 struct { -+ InMsgs float64 -+ InErrors float64 -+ OutMsgs float64 -+ OutErrors float64 -+ InCsumErrors float64 -+ InDestUnreachs float64 -+ InPktTooBigs float64 -+ InTimeExcds float64 -+ InParmProblems float64 -+ InEchos float64 -+ InEchoReplies float64 -+ InGroupMembQueries float64 -+ InGroupMembResponses float64 -+ InGroupMembReductions float64 -+ InRouterSolicits float64 -+ InRouterAdvertisements float64 -+ InNeighborSolicits float64 -+ InNeighborAdvertisements float64 -+ InRedirects float64 -+ InMLDv2Reports float64 -+ OutDestUnreachs float64 -+ OutPktTooBigs float64 -+ OutTimeExcds float64 -+ OutParmProblems float64 -+ OutEchos float64 -+ OutEchoReplies float64 -+ OutGroupMembQueries float64 -+ OutGroupMembResponses float64 -+ OutGroupMembReductions float64 -+ OutRouterSolicits float64 -+ OutRouterAdvertisements float64 -+ OutNeighborSolicits float64 -+ OutNeighborAdvertisements float64 -+ OutRedirects float64 -+ OutMLDv2Reports float64 -+ InType1 float64 -+ InType134 float64 -+ InType135 float64 -+ InType136 float64 -+ InType143 float64 -+ OutType133 float64 -+ OutType135 float64 -+ OutType136 float64 -+ OutType143 float64 -+} -+ -+type Udp6 struct { // nolint:revive -+ InDatagrams float64 -+ NoPorts float64 -+ InErrors float64 -+ OutDatagrams float64 -+ RcvbufErrors float64 -+ SndbufErrors float64 -+ InCsumErrors float64 -+ IgnoredMulti float64 -+} -+ -+type UdpLite6 struct { // nolint:revive -+ InDatagrams float64 -+ NoPorts float64 -+ InErrors float64 -+ OutDatagrams float64 -+ RcvbufErrors float64 -+ SndbufErrors float64 -+ InCsumErrors float64 -+} -+ -+func (p Proc) Snmp6() (ProcSnmp6, error) { -+ filename := p.path("net/snmp6") -+ data, err := util.ReadFileNoStat(filename) -+ if err != nil { -+ // On systems with IPv6 disabled, this file won't exist. -+ // Do nothing. -+ if errors.Is(err, os.ErrNotExist) { -+ return ProcSnmp6{PID: p.PID}, nil -+ } -+ -+ return ProcSnmp6{PID: p.PID}, err -+ } -+ -+ procSnmp6, err := parseSNMP6Stats(bytes.NewReader(data)) -+ procSnmp6.PID = p.PID -+ return procSnmp6, err -+} -+ -+// parseSnmp6 parses the metrics from proc//net/snmp6 file -+// and returns a map contains those metrics. -+func parseSNMP6Stats(r io.Reader) (ProcSnmp6, error) { -+ var ( -+ scanner = bufio.NewScanner(r) -+ procSnmp6 = ProcSnmp6{} -+ ) -+ -+ for scanner.Scan() { -+ stat := strings.Fields(scanner.Text()) -+ if len(stat) < 2 { -+ continue -+ } -+ // Expect to have "6" in metric name, skip line otherwise -+ if sixIndex := strings.Index(stat[0], "6"); sixIndex != -1 { -+ protocol := stat[0][:sixIndex+1] -+ key := stat[0][sixIndex+1:] -+ value, err := strconv.ParseFloat(stat[1], 64) -+ if err != nil { -+ return procSnmp6, err -+ } -+ -+ switch protocol { -+ case "Ip6": -+ switch key { -+ case "InReceives": -+ procSnmp6.Ip6.InReceives = value -+ case "InHdrErrors": -+ procSnmp6.Ip6.InHdrErrors = value -+ case "InTooBigErrors": -+ procSnmp6.Ip6.InTooBigErrors = value -+ case "InNoRoutes": -+ procSnmp6.Ip6.InNoRoutes = value -+ case "InAddrErrors": -+ procSnmp6.Ip6.InAddrErrors = value -+ case "InUnknownProtos": -+ procSnmp6.Ip6.InUnknownProtos = value -+ case "InTruncatedPkts": -+ procSnmp6.Ip6.InTruncatedPkts = value -+ case "InDiscards": -+ procSnmp6.Ip6.InDiscards = value -+ case "InDelivers": -+ procSnmp6.Ip6.InDelivers = value -+ case "OutForwDatagrams": -+ procSnmp6.Ip6.OutForwDatagrams = value -+ case "OutRequests": -+ procSnmp6.Ip6.OutRequests = value -+ case "OutDiscards": -+ procSnmp6.Ip6.OutDiscards = value -+ case "OutNoRoutes": -+ procSnmp6.Ip6.OutNoRoutes = value -+ case "ReasmTimeout": -+ procSnmp6.Ip6.ReasmTimeout = value -+ case "ReasmReqds": -+ procSnmp6.Ip6.ReasmReqds = value -+ case "ReasmOKs": -+ procSnmp6.Ip6.ReasmOKs = value -+ case "ReasmFails": -+ procSnmp6.Ip6.ReasmFails = value -+ case "FragOKs": -+ procSnmp6.Ip6.FragOKs = value -+ case "FragFails": -+ procSnmp6.Ip6.FragFails = value -+ case "FragCreates": -+ procSnmp6.Ip6.FragCreates = value -+ case "InMcastPkts": -+ procSnmp6.Ip6.InMcastPkts = value -+ case "OutMcastPkts": -+ procSnmp6.Ip6.OutMcastPkts = value -+ case "InOctets": -+ procSnmp6.Ip6.InOctets = value -+ case "OutOctets": -+ procSnmp6.Ip6.OutOctets = value -+ case "InMcastOctets": -+ procSnmp6.Ip6.InMcastOctets = value -+ case "OutMcastOctets": -+ procSnmp6.Ip6.OutMcastOctets = value -+ case "InBcastOctets": -+ procSnmp6.Ip6.InBcastOctets = value -+ case "OutBcastOctets": -+ procSnmp6.Ip6.OutBcastOctets = value -+ case "InNoECTPkts": -+ procSnmp6.Ip6.InNoECTPkts = value -+ case "InECT1Pkts": -+ procSnmp6.Ip6.InECT1Pkts = value -+ case "InECT0Pkts": -+ procSnmp6.Ip6.InECT0Pkts = value -+ case "InCEPkts": -+ procSnmp6.Ip6.InCEPkts = value -+ -+ } -+ case "Icmp6": -+ switch key { -+ case "InMsgs": -+ procSnmp6.Icmp6.InMsgs = value -+ case "InErrors": -+ procSnmp6.Icmp6.InErrors = value -+ case "OutMsgs": -+ procSnmp6.Icmp6.OutMsgs = value -+ case "OutErrors": -+ procSnmp6.Icmp6.OutErrors = value -+ case "InCsumErrors": -+ procSnmp6.Icmp6.InCsumErrors = value -+ case "InDestUnreachs": -+ procSnmp6.Icmp6.InDestUnreachs = value -+ case "InPktTooBigs": -+ procSnmp6.Icmp6.InPktTooBigs = value -+ case "InTimeExcds": -+ procSnmp6.Icmp6.InTimeExcds = value -+ case "InParmProblems": -+ procSnmp6.Icmp6.InParmProblems = value -+ case "InEchos": -+ procSnmp6.Icmp6.InEchos = value -+ case "InEchoReplies": -+ procSnmp6.Icmp6.InEchoReplies = value -+ case "InGroupMembQueries": -+ procSnmp6.Icmp6.InGroupMembQueries = value -+ case "InGroupMembResponses": -+ procSnmp6.Icmp6.InGroupMembResponses = value -+ case "InGroupMembReductions": -+ procSnmp6.Icmp6.InGroupMembReductions = value -+ case "InRouterSolicits": -+ procSnmp6.Icmp6.InRouterSolicits = value -+ case "InRouterAdvertisements": -+ procSnmp6.Icmp6.InRouterAdvertisements = value -+ case "InNeighborSolicits": -+ procSnmp6.Icmp6.InNeighborSolicits = value -+ case "InNeighborAdvertisements": -+ procSnmp6.Icmp6.InNeighborAdvertisements = value -+ case "InRedirects": -+ procSnmp6.Icmp6.InRedirects = value -+ case "InMLDv2Reports": -+ procSnmp6.Icmp6.InMLDv2Reports = value -+ case "OutDestUnreachs": -+ procSnmp6.Icmp6.OutDestUnreachs = value -+ case "OutPktTooBigs": -+ procSnmp6.Icmp6.OutPktTooBigs = value -+ case "OutTimeExcds": -+ procSnmp6.Icmp6.OutTimeExcds = value -+ case "OutParmProblems": -+ procSnmp6.Icmp6.OutParmProblems = value -+ case "OutEchos": -+ procSnmp6.Icmp6.OutEchos = value -+ case "OutEchoReplies": -+ procSnmp6.Icmp6.OutEchoReplies = value -+ case "OutGroupMembQueries": -+ procSnmp6.Icmp6.OutGroupMembQueries = value -+ case "OutGroupMembResponses": -+ procSnmp6.Icmp6.OutGroupMembResponses = value -+ case "OutGroupMembReductions": -+ procSnmp6.Icmp6.OutGroupMembReductions = value -+ case "OutRouterSolicits": -+ procSnmp6.Icmp6.OutRouterSolicits = value -+ case "OutRouterAdvertisements": -+ procSnmp6.Icmp6.OutRouterAdvertisements = value -+ case "OutNeighborSolicits": -+ procSnmp6.Icmp6.OutNeighborSolicits = value -+ case "OutNeighborAdvertisements": -+ procSnmp6.Icmp6.OutNeighborAdvertisements = value -+ case "OutRedirects": -+ procSnmp6.Icmp6.OutRedirects = value -+ case "OutMLDv2Reports": -+ procSnmp6.Icmp6.OutMLDv2Reports = value -+ case "InType1": -+ procSnmp6.Icmp6.InType1 = value -+ case "InType134": -+ procSnmp6.Icmp6.InType134 = value -+ case "InType135": -+ procSnmp6.Icmp6.InType135 = value -+ case "InType136": -+ procSnmp6.Icmp6.InType136 = value -+ case "InType143": -+ procSnmp6.Icmp6.InType143 = value -+ case "OutType133": -+ procSnmp6.Icmp6.OutType133 = value -+ case "OutType135": -+ procSnmp6.Icmp6.OutType135 = value -+ case "OutType136": -+ procSnmp6.Icmp6.OutType136 = value -+ case "OutType143": -+ procSnmp6.Icmp6.OutType143 = value -+ } -+ case "Udp6": -+ switch key { -+ case "InDatagrams": -+ procSnmp6.Udp6.InDatagrams = value -+ case "NoPorts": -+ procSnmp6.Udp6.NoPorts = value -+ case "InErrors": -+ procSnmp6.Udp6.InErrors = value -+ case "OutDatagrams": -+ procSnmp6.Udp6.OutDatagrams = value -+ case "RcvbufErrors": -+ procSnmp6.Udp6.RcvbufErrors = value -+ case "SndbufErrors": -+ procSnmp6.Udp6.SndbufErrors = value -+ case "InCsumErrors": -+ procSnmp6.Udp6.InCsumErrors = value -+ case "IgnoredMulti": -+ procSnmp6.Udp6.IgnoredMulti = value -+ } -+ case "UdpLite6": -+ switch key { -+ case "InDatagrams": -+ procSnmp6.UdpLite6.InDatagrams = value -+ case "NoPorts": -+ procSnmp6.UdpLite6.NoPorts = value -+ case "InErrors": -+ procSnmp6.UdpLite6.InErrors = value -+ case "OutDatagrams": -+ procSnmp6.UdpLite6.OutDatagrams = value -+ case "RcvbufErrors": -+ procSnmp6.UdpLite6.RcvbufErrors = value -+ case "SndbufErrors": -+ procSnmp6.UdpLite6.SndbufErrors = value -+ case "InCsumErrors": -+ procSnmp6.UdpLite6.InCsumErrors = value -+ } -+ } -+ } -+ } -+ return procSnmp6, scanner.Err() -+} -diff --git a/vendor/github.com/prometheus/procfs/proc_stat.go b/vendor/github.com/prometheus/procfs/proc_stat.go -new file mode 100755 -index 0000000..06c556e ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/proc_stat.go -@@ -0,0 +1,222 @@ -+// Copyright 2018 The Prometheus 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 procfs -+ -+import ( -+ "bytes" -+ "fmt" -+ "os" -+ -+ "github.com/prometheus/procfs/internal/fs" -+ "github.com/prometheus/procfs/internal/util" -+) -+ -+// Originally, this USER_HZ value was dynamically retrieved via a sysconf call -+// which required cgo. However, that caused a lot of problems regarding -+// cross-compilation. Alternatives such as running a binary to determine the -+// value, or trying to derive it in some other way were all problematic. After -+// much research it was determined that USER_HZ is actually hardcoded to 100 on -+// all Go-supported platforms as of the time of this writing. This is why we -+// decided to hardcode it here as well. It is not impossible that there could -+// be systems with exceptions, but they should be very exotic edge cases, and -+// in that case, the worst outcome will be two misreported metrics. -+// -+// See also the following discussions: -+// -+// - https://github.com/prometheus/node_exporter/issues/52 -+// - https://github.com/prometheus/procfs/pull/2 -+// - http://stackoverflow.com/questions/17410841/how-does-user-hz-solve-the-jiffy-scaling-issue -+const userHZ = 100 -+ -+// ProcStat provides status information about the process, -+// read from /proc/[pid]/stat. -+type ProcStat struct { -+ // The process ID. -+ PID int -+ // The filename of the executable. -+ Comm string -+ // The process state. -+ State string -+ // The PID of the parent of this process. -+ PPID int -+ // The process group ID of the process. -+ PGRP int -+ // The session ID of the process. -+ Session int -+ // The controlling terminal of the process. -+ TTY int -+ // The ID of the foreground process group of the controlling terminal of -+ // the process. -+ TPGID int -+ // The kernel flags word of the process. -+ Flags uint -+ // The number of minor faults the process has made which have not required -+ // loading a memory page from disk. -+ MinFlt uint -+ // The number of minor faults that the process's waited-for children have -+ // made. -+ CMinFlt uint -+ // The number of major faults the process has made which have required -+ // loading a memory page from disk. -+ MajFlt uint -+ // The number of major faults that the process's waited-for children have -+ // made. -+ CMajFlt uint -+ // Amount of time that this process has been scheduled in user mode, -+ // measured in clock ticks. -+ UTime uint -+ // Amount of time that this process has been scheduled in kernel mode, -+ // measured in clock ticks. -+ STime uint -+ // Amount of time that this process's waited-for children have been -+ // scheduled in user mode, measured in clock ticks. -+ CUTime int -+ // Amount of time that this process's waited-for children have been -+ // scheduled in kernel mode, measured in clock ticks. -+ CSTime int -+ // For processes running a real-time scheduling policy, this is the negated -+ // scheduling priority, minus one. -+ Priority int -+ // The nice value, a value in the range 19 (low priority) to -20 (high -+ // priority). -+ Nice int -+ // Number of threads in this process. -+ NumThreads int -+ // The time the process started after system boot, the value is expressed -+ // in clock ticks. -+ Starttime uint64 -+ // Virtual memory size in bytes. -+ VSize uint -+ // Resident set size in pages. -+ RSS int -+ // Soft limit in bytes on the rss of the process. -+ RSSLimit uint64 -+ // Real-time scheduling priority, a number in the range 1 to 99 for processes -+ // scheduled under a real-time policy, or 0, for non-real-time processes. -+ RTPriority uint -+ // Scheduling policy. -+ Policy uint -+ // Aggregated block I/O delays, measured in clock ticks (centiseconds). -+ DelayAcctBlkIOTicks uint64 -+ -+ proc fs.FS -+} -+ -+// NewStat returns the current status information of the process. -+// -+// Deprecated: Use p.Stat() instead. -+func (p Proc) NewStat() (ProcStat, error) { -+ return p.Stat() -+} -+ -+// Stat returns the current status information of the process. -+func (p Proc) Stat() (ProcStat, error) { -+ data, err := util.ReadFileNoStat(p.path("stat")) -+ if err != nil { -+ return ProcStat{}, err -+ } -+ -+ var ( -+ ignoreInt64 int64 -+ ignoreUint64 uint64 -+ -+ s = ProcStat{PID: p.PID, proc: p.fs} -+ l = bytes.Index(data, []byte("(")) -+ r = bytes.LastIndex(data, []byte(")")) -+ ) -+ -+ if l < 0 || r < 0 { -+ return ProcStat{}, fmt.Errorf("unexpected format, couldn't extract comm %q", data) -+ } -+ -+ s.Comm = string(data[l+1 : r]) -+ -+ // Check the following resources for the details about the particular stat -+ // fields and their data types: -+ // * https://man7.org/linux/man-pages/man5/proc.5.html -+ // * https://man7.org/linux/man-pages/man3/scanf.3.html -+ _, err = fmt.Fscan( -+ bytes.NewBuffer(data[r+2:]), -+ &s.State, -+ &s.PPID, -+ &s.PGRP, -+ &s.Session, -+ &s.TTY, -+ &s.TPGID, -+ &s.Flags, -+ &s.MinFlt, -+ &s.CMinFlt, -+ &s.MajFlt, -+ &s.CMajFlt, -+ &s.UTime, -+ &s.STime, -+ &s.CUTime, -+ &s.CSTime, -+ &s.Priority, -+ &s.Nice, -+ &s.NumThreads, -+ &ignoreInt64, -+ &s.Starttime, -+ &s.VSize, -+ &s.RSS, -+ &s.RSSLimit, -+ &ignoreUint64, -+ &ignoreUint64, -+ &ignoreUint64, -+ &ignoreUint64, -+ &ignoreUint64, -+ &ignoreUint64, -+ &ignoreUint64, -+ &ignoreUint64, -+ &ignoreUint64, -+ &ignoreUint64, -+ &ignoreUint64, -+ &ignoreUint64, -+ &ignoreInt64, -+ &ignoreInt64, -+ &s.RTPriority, -+ &s.Policy, -+ &s.DelayAcctBlkIOTicks, -+ ) -+ if err != nil { -+ return ProcStat{}, err -+ } -+ -+ return s, nil -+} -+ -+// VirtualMemory returns the virtual memory size in bytes. -+func (s ProcStat) VirtualMemory() uint { -+ return s.VSize -+} -+ -+// ResidentMemory returns the resident memory size in bytes. -+func (s ProcStat) ResidentMemory() int { -+ return s.RSS * os.Getpagesize() -+} -+ -+// StartTime returns the unix timestamp of the process in seconds. -+func (s ProcStat) StartTime() (float64, error) { -+ fs := FS{proc: s.proc} -+ stat, err := fs.Stat() -+ if err != nil { -+ return 0, err -+ } -+ return float64(stat.BootTime) + (float64(s.Starttime) / userHZ), nil -+} -+ -+// CPUTime returns the total CPU user and system time in seconds. -+func (s ProcStat) CPUTime() float64 { -+ return float64(s.UTime+s.STime) / userHZ -+} -diff --git a/vendor/github.com/prometheus/procfs/proc_status.go b/vendor/github.com/prometheus/procfs/proc_status.go -new file mode 100755 -index 0000000..594022d ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/proc_status.go -@@ -0,0 +1,170 @@ -+// Copyright 2018 The Prometheus 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 procfs -+ -+import ( -+ "bytes" -+ "strconv" -+ "strings" -+ -+ "github.com/prometheus/procfs/internal/util" -+) -+ -+// ProcStatus provides status information about the process, -+// read from /proc/[pid]/stat. -+type ProcStatus struct { -+ // The process ID. -+ PID int -+ // The process name. -+ Name string -+ -+ // Thread group ID. -+ TGID int -+ -+ // Peak virtual memory size. -+ VmPeak uint64 // nolint:revive -+ // Virtual memory size. -+ VmSize uint64 // nolint:revive -+ // Locked memory size. -+ VmLck uint64 // nolint:revive -+ // Pinned memory size. -+ VmPin uint64 // nolint:revive -+ // Peak resident set size. -+ VmHWM uint64 // nolint:revive -+ // Resident set size (sum of RssAnnon RssFile and RssShmem). -+ VmRSS uint64 // nolint:revive -+ // Size of resident anonymous memory. -+ RssAnon uint64 // nolint:revive -+ // Size of resident file mappings. -+ RssFile uint64 // nolint:revive -+ // Size of resident shared memory. -+ RssShmem uint64 // nolint:revive -+ // Size of data segments. -+ VmData uint64 // nolint:revive -+ // Size of stack segments. -+ VmStk uint64 // nolint:revive -+ // Size of text segments. -+ VmExe uint64 // nolint:revive -+ // Shared library code size. -+ VmLib uint64 // nolint:revive -+ // Page table entries size. -+ VmPTE uint64 // nolint:revive -+ // Size of second-level page tables. -+ VmPMD uint64 // nolint:revive -+ // Swapped-out virtual memory size by anonymous private. -+ VmSwap uint64 // nolint:revive -+ // Size of hugetlb memory portions -+ HugetlbPages uint64 -+ -+ // Number of voluntary context switches. -+ VoluntaryCtxtSwitches uint64 -+ // Number of involuntary context switches. -+ NonVoluntaryCtxtSwitches uint64 -+ -+ // UIDs of the process (Real, effective, saved set, and filesystem UIDs) -+ UIDs [4]string -+ // GIDs of the process (Real, effective, saved set, and filesystem GIDs) -+ GIDs [4]string -+} -+ -+// NewStatus returns the current status information of the process. -+func (p Proc) NewStatus() (ProcStatus, error) { -+ data, err := util.ReadFileNoStat(p.path("status")) -+ if err != nil { -+ return ProcStatus{}, err -+ } -+ -+ s := ProcStatus{PID: p.PID} -+ -+ lines := strings.Split(string(data), "\n") -+ for _, line := range lines { -+ if !bytes.Contains([]byte(line), []byte(":")) { -+ continue -+ } -+ -+ kv := strings.SplitN(line, ":", 2) -+ -+ // removes spaces -+ k := string(strings.TrimSpace(kv[0])) -+ v := string(strings.TrimSpace(kv[1])) -+ // removes "kB" -+ v = string(bytes.Trim([]byte(v), " kB")) -+ -+ // value to int when possible -+ // we can skip error check here, 'cause vKBytes is not used when value is a string -+ vKBytes, _ := strconv.ParseUint(v, 10, 64) -+ // convert kB to B -+ vBytes := vKBytes * 1024 -+ -+ s.fillStatus(k, v, vKBytes, vBytes) -+ } -+ -+ return s, nil -+} -+ -+func (s *ProcStatus) fillStatus(k string, vString string, vUint uint64, vUintBytes uint64) { -+ switch k { -+ case "Tgid": -+ s.TGID = int(vUint) -+ case "Name": -+ s.Name = vString -+ case "Uid": -+ copy(s.UIDs[:], strings.Split(vString, "\t")) -+ case "Gid": -+ copy(s.GIDs[:], strings.Split(vString, "\t")) -+ case "VmPeak": -+ s.VmPeak = vUintBytes -+ case "VmSize": -+ s.VmSize = vUintBytes -+ case "VmLck": -+ s.VmLck = vUintBytes -+ case "VmPin": -+ s.VmPin = vUintBytes -+ case "VmHWM": -+ s.VmHWM = vUintBytes -+ case "VmRSS": -+ s.VmRSS = vUintBytes -+ case "RssAnon": -+ s.RssAnon = vUintBytes -+ case "RssFile": -+ s.RssFile = vUintBytes -+ case "RssShmem": -+ s.RssShmem = vUintBytes -+ case "VmData": -+ s.VmData = vUintBytes -+ case "VmStk": -+ s.VmStk = vUintBytes -+ case "VmExe": -+ s.VmExe = vUintBytes -+ case "VmLib": -+ s.VmLib = vUintBytes -+ case "VmPTE": -+ s.VmPTE = vUintBytes -+ case "VmPMD": -+ s.VmPMD = vUintBytes -+ case "VmSwap": -+ s.VmSwap = vUintBytes -+ case "HugetlbPages": -+ s.HugetlbPages = vUintBytes -+ case "voluntary_ctxt_switches": -+ s.VoluntaryCtxtSwitches = vUint -+ case "nonvoluntary_ctxt_switches": -+ s.NonVoluntaryCtxtSwitches = vUint -+ } -+} -+ -+// TotalCtxtSwitches returns the total context switch. -+func (s ProcStatus) TotalCtxtSwitches() uint64 { -+ return s.VoluntaryCtxtSwitches + s.NonVoluntaryCtxtSwitches -+} -diff --git a/vendor/github.com/prometheus/procfs/proc_sys.go b/vendor/github.com/prometheus/procfs/proc_sys.go -new file mode 100755 -index 0000000..d46533e ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/proc_sys.go -@@ -0,0 +1,51 @@ -+// Copyright 2022 The Prometheus 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 procfs -+ -+import ( -+ "fmt" -+ "strings" -+ -+ "github.com/prometheus/procfs/internal/util" -+) -+ -+func sysctlToPath(sysctl string) string { -+ return strings.Replace(sysctl, ".", "/", -1) -+} -+ -+func (fs FS) SysctlStrings(sysctl string) ([]string, error) { -+ value, err := util.SysReadFile(fs.proc.Path("sys", sysctlToPath(sysctl))) -+ if err != nil { -+ return nil, err -+ } -+ return strings.Fields(value), nil -+ -+} -+ -+func (fs FS) SysctlInts(sysctl string) ([]int, error) { -+ fields, err := fs.SysctlStrings(sysctl) -+ if err != nil { -+ return nil, err -+ } -+ -+ values := make([]int, len(fields)) -+ for i, f := range fields { -+ vp := util.NewValueParser(f) -+ values[i] = vp.Int() -+ if err := vp.Err(); err != nil { -+ return nil, fmt.Errorf("field %d in sysctl %s is not a valid int: %w", i, sysctl, err) -+ } -+ } -+ return values, nil -+} -diff --git a/vendor/github.com/prometheus/procfs/schedstat.go b/vendor/github.com/prometheus/procfs/schedstat.go -new file mode 100755 -index 0000000..5f7f32d ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/schedstat.go -@@ -0,0 +1,121 @@ -+// Copyright 2019 The Prometheus 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 procfs -+ -+import ( -+ "bufio" -+ "errors" -+ "os" -+ "regexp" -+ "strconv" -+) -+ -+var ( -+ cpuLineRE = regexp.MustCompile(`cpu(\d+) (\d+) (\d+) (\d+) (\d+) (\d+) (\d+) (\d+) (\d+) (\d+)`) -+ procLineRE = regexp.MustCompile(`(\d+) (\d+) (\d+)`) -+) -+ -+// Schedstat contains scheduler statistics from /proc/schedstat -+// -+// See -+// https://www.kernel.org/doc/Documentation/scheduler/sched-stats.txt -+// for a detailed description of what these numbers mean. -+// -+// Note the current kernel documentation claims some of the time units are in -+// jiffies when they are actually in nanoseconds since 2.6.23 with the -+// introduction of CFS. A fix to the documentation is pending. See -+// https://lore.kernel.org/patchwork/project/lkml/list/?series=403473 -+type Schedstat struct { -+ CPUs []*SchedstatCPU -+} -+ -+// SchedstatCPU contains the values from one "cpu" line. -+type SchedstatCPU struct { -+ CPUNum string -+ -+ RunningNanoseconds uint64 -+ WaitingNanoseconds uint64 -+ RunTimeslices uint64 -+} -+ -+// ProcSchedstat contains the values from `/proc//schedstat`. -+type ProcSchedstat struct { -+ RunningNanoseconds uint64 -+ WaitingNanoseconds uint64 -+ RunTimeslices uint64 -+} -+ -+// Schedstat reads data from `/proc/schedstat`. -+func (fs FS) Schedstat() (*Schedstat, error) { -+ file, err := os.Open(fs.proc.Path("schedstat")) -+ if err != nil { -+ return nil, err -+ } -+ defer file.Close() -+ -+ stats := &Schedstat{} -+ scanner := bufio.NewScanner(file) -+ -+ for scanner.Scan() { -+ match := cpuLineRE.FindStringSubmatch(scanner.Text()) -+ if match != nil { -+ cpu := &SchedstatCPU{} -+ cpu.CPUNum = match[1] -+ -+ cpu.RunningNanoseconds, err = strconv.ParseUint(match[8], 10, 64) -+ if err != nil { -+ continue -+ } -+ -+ cpu.WaitingNanoseconds, err = strconv.ParseUint(match[9], 10, 64) -+ if err != nil { -+ continue -+ } -+ -+ cpu.RunTimeslices, err = strconv.ParseUint(match[10], 10, 64) -+ if err != nil { -+ continue -+ } -+ -+ stats.CPUs = append(stats.CPUs, cpu) -+ } -+ } -+ -+ return stats, nil -+} -+ -+func parseProcSchedstat(contents string) (ProcSchedstat, error) { -+ var ( -+ stats ProcSchedstat -+ err error -+ ) -+ match := procLineRE.FindStringSubmatch(contents) -+ -+ if match != nil { -+ stats.RunningNanoseconds, err = strconv.ParseUint(match[1], 10, 64) -+ if err != nil { -+ return stats, err -+ } -+ -+ stats.WaitingNanoseconds, err = strconv.ParseUint(match[2], 10, 64) -+ if err != nil { -+ return stats, err -+ } -+ -+ stats.RunTimeslices, err = strconv.ParseUint(match[3], 10, 64) -+ return stats, err -+ } -+ -+ return stats, errors.New("could not parse schedstat") -+} -diff --git a/vendor/github.com/prometheus/procfs/slab.go b/vendor/github.com/prometheus/procfs/slab.go -new file mode 100755 -index 0000000..bc9aaf5 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/slab.go -@@ -0,0 +1,151 @@ -+// Copyright 2020 The Prometheus 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 procfs -+ -+import ( -+ "bufio" -+ "bytes" -+ "fmt" -+ "regexp" -+ "strconv" -+ "strings" -+ -+ "github.com/prometheus/procfs/internal/util" -+) -+ -+var ( -+ slabSpace = regexp.MustCompile(`\s+`) -+ slabVer = regexp.MustCompile(`slabinfo -`) -+ slabHeader = regexp.MustCompile(`# name`) -+) -+ -+// Slab represents a slab pool in the kernel. -+type Slab struct { -+ Name string -+ ObjActive int64 -+ ObjNum int64 -+ ObjSize int64 -+ ObjPerSlab int64 -+ PagesPerSlab int64 -+ // tunables -+ Limit int64 -+ Batch int64 -+ SharedFactor int64 -+ SlabActive int64 -+ SlabNum int64 -+ SharedAvail int64 -+} -+ -+// SlabInfo represents info for all slabs. -+type SlabInfo struct { -+ Slabs []*Slab -+} -+ -+func shouldParseSlab(line string) bool { -+ if slabVer.MatchString(line) { -+ return false -+ } -+ if slabHeader.MatchString(line) { -+ return false -+ } -+ return true -+} -+ -+// parseV21SlabEntry is used to parse a line from /proc/slabinfo version 2.1. -+func parseV21SlabEntry(line string) (*Slab, error) { -+ // First cleanup whitespace. -+ l := slabSpace.ReplaceAllString(line, " ") -+ s := strings.Split(l, " ") -+ if len(s) != 16 { -+ return nil, fmt.Errorf("unable to parse: %q", line) -+ } -+ var err error -+ i := &Slab{Name: s[0]} -+ i.ObjActive, err = strconv.ParseInt(s[1], 10, 64) -+ if err != nil { -+ return nil, err -+ } -+ i.ObjNum, err = strconv.ParseInt(s[2], 10, 64) -+ if err != nil { -+ return nil, err -+ } -+ i.ObjSize, err = strconv.ParseInt(s[3], 10, 64) -+ if err != nil { -+ return nil, err -+ } -+ i.ObjPerSlab, err = strconv.ParseInt(s[4], 10, 64) -+ if err != nil { -+ return nil, err -+ } -+ i.PagesPerSlab, err = strconv.ParseInt(s[5], 10, 64) -+ if err != nil { -+ return nil, err -+ } -+ i.Limit, err = strconv.ParseInt(s[8], 10, 64) -+ if err != nil { -+ return nil, err -+ } -+ i.Batch, err = strconv.ParseInt(s[9], 10, 64) -+ if err != nil { -+ return nil, err -+ } -+ i.SharedFactor, err = strconv.ParseInt(s[10], 10, 64) -+ if err != nil { -+ return nil, err -+ } -+ i.SlabActive, err = strconv.ParseInt(s[13], 10, 64) -+ if err != nil { -+ return nil, err -+ } -+ i.SlabNum, err = strconv.ParseInt(s[14], 10, 64) -+ if err != nil { -+ return nil, err -+ } -+ i.SharedAvail, err = strconv.ParseInt(s[15], 10, 64) -+ if err != nil { -+ return nil, err -+ } -+ return i, nil -+} -+ -+// parseSlabInfo21 is used to parse a slabinfo 2.1 file. -+func parseSlabInfo21(r *bytes.Reader) (SlabInfo, error) { -+ scanner := bufio.NewScanner(r) -+ s := SlabInfo{Slabs: []*Slab{}} -+ for scanner.Scan() { -+ line := scanner.Text() -+ if !shouldParseSlab(line) { -+ continue -+ } -+ slab, err := parseV21SlabEntry(line) -+ if err != nil { -+ return s, err -+ } -+ s.Slabs = append(s.Slabs, slab) -+ } -+ return s, nil -+} -+ -+// SlabInfo reads data from `/proc/slabinfo`. -+func (fs FS) SlabInfo() (SlabInfo, error) { -+ // TODO: Consider passing options to allow for parsing different -+ // slabinfo versions. However, slabinfo 2.1 has been stable since -+ // kernel 2.6.10 and later. -+ data, err := util.ReadFileNoStat(fs.proc.Path("slabinfo")) -+ if err != nil { -+ return SlabInfo{}, err -+ } -+ -+ return parseSlabInfo21(bytes.NewReader(data)) -+} -diff --git a/vendor/github.com/prometheus/procfs/softirqs.go b/vendor/github.com/prometheus/procfs/softirqs.go -new file mode 100755 -index 0000000..559129c ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/softirqs.go -@@ -0,0 +1,160 @@ -+// Copyright 2022 The Prometheus 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 procfs -+ -+import ( -+ "bufio" -+ "bytes" -+ "fmt" -+ "io" -+ "strconv" -+ "strings" -+ -+ "github.com/prometheus/procfs/internal/util" -+) -+ -+// Softirqs represents the softirq statistics. -+type Softirqs struct { -+ Hi []uint64 -+ Timer []uint64 -+ NetTx []uint64 -+ NetRx []uint64 -+ Block []uint64 -+ IRQPoll []uint64 -+ Tasklet []uint64 -+ Sched []uint64 -+ HRTimer []uint64 -+ RCU []uint64 -+} -+ -+func (fs FS) Softirqs() (Softirqs, error) { -+ fileName := fs.proc.Path("softirqs") -+ data, err := util.ReadFileNoStat(fileName) -+ if err != nil { -+ return Softirqs{}, err -+ } -+ -+ reader := bytes.NewReader(data) -+ -+ return parseSoftirqs(reader) -+} -+ -+func parseSoftirqs(r io.Reader) (Softirqs, error) { -+ var ( -+ softirqs = Softirqs{} -+ scanner = bufio.NewScanner(r) -+ ) -+ -+ if !scanner.Scan() { -+ return Softirqs{}, fmt.Errorf("softirqs empty") -+ } -+ -+ for scanner.Scan() { -+ parts := strings.Fields(scanner.Text()) -+ var err error -+ -+ // require at least one cpu -+ if len(parts) < 2 { -+ continue -+ } -+ switch { -+ case parts[0] == "HI:": -+ perCPU := parts[1:] -+ softirqs.Hi = make([]uint64, len(perCPU)) -+ for i, count := range perCPU { -+ if softirqs.Hi[i], err = strconv.ParseUint(count, 10, 64); err != nil { -+ return Softirqs{}, fmt.Errorf("couldn't parse %q (HI%d): %w", count, i, err) -+ } -+ } -+ case parts[0] == "TIMER:": -+ perCPU := parts[1:] -+ softirqs.Timer = make([]uint64, len(perCPU)) -+ for i, count := range perCPU { -+ if softirqs.Timer[i], err = strconv.ParseUint(count, 10, 64); err != nil { -+ return Softirqs{}, fmt.Errorf("couldn't parse %q (TIMER%d): %w", count, i, err) -+ } -+ } -+ case parts[0] == "NET_TX:": -+ perCPU := parts[1:] -+ softirqs.NetTx = make([]uint64, len(perCPU)) -+ for i, count := range perCPU { -+ if softirqs.NetTx[i], err = strconv.ParseUint(count, 10, 64); err != nil { -+ return Softirqs{}, fmt.Errorf("couldn't parse %q (NET_TX%d): %w", count, i, err) -+ } -+ } -+ case parts[0] == "NET_RX:": -+ perCPU := parts[1:] -+ softirqs.NetRx = make([]uint64, len(perCPU)) -+ for i, count := range perCPU { -+ if softirqs.NetRx[i], err = strconv.ParseUint(count, 10, 64); err != nil { -+ return Softirqs{}, fmt.Errorf("couldn't parse %q (NET_RX%d): %w", count, i, err) -+ } -+ } -+ case parts[0] == "BLOCK:": -+ perCPU := parts[1:] -+ softirqs.Block = make([]uint64, len(perCPU)) -+ for i, count := range perCPU { -+ if softirqs.Block[i], err = strconv.ParseUint(count, 10, 64); err != nil { -+ return Softirqs{}, fmt.Errorf("couldn't parse %q (BLOCK%d): %w", count, i, err) -+ } -+ } -+ case parts[0] == "IRQ_POLL:": -+ perCPU := parts[1:] -+ softirqs.IRQPoll = make([]uint64, len(perCPU)) -+ for i, count := range perCPU { -+ if softirqs.IRQPoll[i], err = strconv.ParseUint(count, 10, 64); err != nil { -+ return Softirqs{}, fmt.Errorf("couldn't parse %q (IRQ_POLL%d): %w", count, i, err) -+ } -+ } -+ case parts[0] == "TASKLET:": -+ perCPU := parts[1:] -+ softirqs.Tasklet = make([]uint64, len(perCPU)) -+ for i, count := range perCPU { -+ if softirqs.Tasklet[i], err = strconv.ParseUint(count, 10, 64); err != nil { -+ return Softirqs{}, fmt.Errorf("couldn't parse %q (TASKLET%d): %w", count, i, err) -+ } -+ } -+ case parts[0] == "SCHED:": -+ perCPU := parts[1:] -+ softirqs.Sched = make([]uint64, len(perCPU)) -+ for i, count := range perCPU { -+ if softirqs.Sched[i], err = strconv.ParseUint(count, 10, 64); err != nil { -+ return Softirqs{}, fmt.Errorf("couldn't parse %q (SCHED%d): %w", count, i, err) -+ } -+ } -+ case parts[0] == "HRTIMER:": -+ perCPU := parts[1:] -+ softirqs.HRTimer = make([]uint64, len(perCPU)) -+ for i, count := range perCPU { -+ if softirqs.HRTimer[i], err = strconv.ParseUint(count, 10, 64); err != nil { -+ return Softirqs{}, fmt.Errorf("couldn't parse %q (HRTIMER%d): %w", count, i, err) -+ } -+ } -+ case parts[0] == "RCU:": -+ perCPU := parts[1:] -+ softirqs.RCU = make([]uint64, len(perCPU)) -+ for i, count := range perCPU { -+ if softirqs.RCU[i], err = strconv.ParseUint(count, 10, 64); err != nil { -+ return Softirqs{}, fmt.Errorf("couldn't parse %q (RCU%d): %w", count, i, err) -+ } -+ } -+ } -+ } -+ -+ if err := scanner.Err(); err != nil { -+ return Softirqs{}, fmt.Errorf("couldn't parse softirqs: %w", err) -+ } -+ -+ return softirqs, scanner.Err() -+} -diff --git a/vendor/github.com/prometheus/procfs/stat.go b/vendor/github.com/prometheus/procfs/stat.go -new file mode 100755 -index 0000000..33f97ca ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/stat.go -@@ -0,0 +1,244 @@ -+// Copyright 2018 The Prometheus 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 procfs -+ -+import ( -+ "bufio" -+ "bytes" -+ "fmt" -+ "io" -+ "strconv" -+ "strings" -+ -+ "github.com/prometheus/procfs/internal/fs" -+ "github.com/prometheus/procfs/internal/util" -+) -+ -+// CPUStat shows how much time the cpu spend in various stages. -+type CPUStat struct { -+ User float64 -+ Nice float64 -+ System float64 -+ Idle float64 -+ Iowait float64 -+ IRQ float64 -+ SoftIRQ float64 -+ Steal float64 -+ Guest float64 -+ GuestNice float64 -+} -+ -+// SoftIRQStat represent the softirq statistics as exported in the procfs stat file. -+// A nice introduction can be found at https://0xax.gitbooks.io/linux-insides/content/interrupts/interrupts-9.html -+// It is possible to get per-cpu stats by reading `/proc/softirqs`. -+type SoftIRQStat struct { -+ Hi uint64 -+ Timer uint64 -+ NetTx uint64 -+ NetRx uint64 -+ Block uint64 -+ BlockIoPoll uint64 -+ Tasklet uint64 -+ Sched uint64 -+ Hrtimer uint64 -+ Rcu uint64 -+} -+ -+// Stat represents kernel/system statistics. -+type Stat struct { -+ // Boot time in seconds since the Epoch. -+ BootTime uint64 -+ // Summed up cpu statistics. -+ CPUTotal CPUStat -+ // Per-CPU statistics. -+ CPU []CPUStat -+ // Number of times interrupts were handled, which contains numbered and unnumbered IRQs. -+ IRQTotal uint64 -+ // Number of times a numbered IRQ was triggered. -+ IRQ []uint64 -+ // Number of times a context switch happened. -+ ContextSwitches uint64 -+ // Number of times a process was created. -+ ProcessCreated uint64 -+ // Number of processes currently running. -+ ProcessesRunning uint64 -+ // Number of processes currently blocked (waiting for IO). -+ ProcessesBlocked uint64 -+ // Number of times a softirq was scheduled. -+ SoftIRQTotal uint64 -+ // Detailed softirq statistics. -+ SoftIRQ SoftIRQStat -+} -+ -+// Parse a cpu statistics line and returns the CPUStat struct plus the cpu id (or -1 for the overall sum). -+func parseCPUStat(line string) (CPUStat, int64, error) { -+ cpuStat := CPUStat{} -+ var cpu string -+ -+ count, err := fmt.Sscanf(line, "%s %f %f %f %f %f %f %f %f %f %f", -+ &cpu, -+ &cpuStat.User, &cpuStat.Nice, &cpuStat.System, &cpuStat.Idle, -+ &cpuStat.Iowait, &cpuStat.IRQ, &cpuStat.SoftIRQ, &cpuStat.Steal, -+ &cpuStat.Guest, &cpuStat.GuestNice) -+ -+ if err != nil && err != io.EOF { -+ return CPUStat{}, -1, fmt.Errorf("couldn't parse %q (cpu): %w", line, err) -+ } -+ if count == 0 { -+ return CPUStat{}, -1, fmt.Errorf("couldn't parse %q (cpu): 0 elements parsed", line) -+ } -+ -+ cpuStat.User /= userHZ -+ cpuStat.Nice /= userHZ -+ cpuStat.System /= userHZ -+ cpuStat.Idle /= userHZ -+ cpuStat.Iowait /= userHZ -+ cpuStat.IRQ /= userHZ -+ cpuStat.SoftIRQ /= userHZ -+ cpuStat.Steal /= userHZ -+ cpuStat.Guest /= userHZ -+ cpuStat.GuestNice /= userHZ -+ -+ if cpu == "cpu" { -+ return cpuStat, -1, nil -+ } -+ -+ cpuID, err := strconv.ParseInt(cpu[3:], 10, 64) -+ if err != nil { -+ return CPUStat{}, -1, fmt.Errorf("couldn't parse %q (cpu/cpuid): %w", line, err) -+ } -+ -+ return cpuStat, cpuID, nil -+} -+ -+// Parse a softirq line. -+func parseSoftIRQStat(line string) (SoftIRQStat, uint64, error) { -+ softIRQStat := SoftIRQStat{} -+ var total uint64 -+ var prefix string -+ -+ _, err := fmt.Sscanf(line, "%s %d %d %d %d %d %d %d %d %d %d %d", -+ &prefix, &total, -+ &softIRQStat.Hi, &softIRQStat.Timer, &softIRQStat.NetTx, &softIRQStat.NetRx, -+ &softIRQStat.Block, &softIRQStat.BlockIoPoll, -+ &softIRQStat.Tasklet, &softIRQStat.Sched, -+ &softIRQStat.Hrtimer, &softIRQStat.Rcu) -+ -+ if err != nil { -+ return SoftIRQStat{}, 0, fmt.Errorf("couldn't parse %q (softirq): %w", line, err) -+ } -+ -+ return softIRQStat, total, nil -+} -+ -+// NewStat returns information about current cpu/process statistics. -+// See https://www.kernel.org/doc/Documentation/filesystems/proc.txt -+// -+// Deprecated: Use fs.Stat() instead. -+func NewStat() (Stat, error) { -+ fs, err := NewFS(fs.DefaultProcMountPoint) -+ if err != nil { -+ return Stat{}, err -+ } -+ return fs.Stat() -+} -+ -+// NewStat returns information about current cpu/process statistics. -+// See: https://www.kernel.org/doc/Documentation/filesystems/proc.txt -+// -+// Deprecated: Use fs.Stat() instead. -+func (fs FS) NewStat() (Stat, error) { -+ return fs.Stat() -+} -+ -+// Stat returns information about current cpu/process statistics. -+// See: https://www.kernel.org/doc/Documentation/filesystems/proc.txt -+func (fs FS) Stat() (Stat, error) { -+ fileName := fs.proc.Path("stat") -+ data, err := util.ReadFileNoStat(fileName) -+ if err != nil { -+ return Stat{}, err -+ } -+ -+ stat := Stat{} -+ -+ scanner := bufio.NewScanner(bytes.NewReader(data)) -+ for scanner.Scan() { -+ line := scanner.Text() -+ parts := strings.Fields(scanner.Text()) -+ // require at least -+ if len(parts) < 2 { -+ continue -+ } -+ switch { -+ case parts[0] == "btime": -+ if stat.BootTime, err = strconv.ParseUint(parts[1], 10, 64); err != nil { -+ return Stat{}, fmt.Errorf("couldn't parse %q (btime): %w", parts[1], err) -+ } -+ case parts[0] == "intr": -+ if stat.IRQTotal, err = strconv.ParseUint(parts[1], 10, 64); err != nil { -+ return Stat{}, fmt.Errorf("couldn't parse %q (intr): %w", parts[1], err) -+ } -+ numberedIRQs := parts[2:] -+ stat.IRQ = make([]uint64, len(numberedIRQs)) -+ for i, count := range numberedIRQs { -+ if stat.IRQ[i], err = strconv.ParseUint(count, 10, 64); err != nil { -+ return Stat{}, fmt.Errorf("couldn't parse %q (intr%d): %w", count, i, err) -+ } -+ } -+ case parts[0] == "ctxt": -+ if stat.ContextSwitches, err = strconv.ParseUint(parts[1], 10, 64); err != nil { -+ return Stat{}, fmt.Errorf("couldn't parse %q (ctxt): %w", parts[1], err) -+ } -+ case parts[0] == "processes": -+ if stat.ProcessCreated, err = strconv.ParseUint(parts[1], 10, 64); err != nil { -+ return Stat{}, fmt.Errorf("couldn't parse %q (processes): %w", parts[1], err) -+ } -+ case parts[0] == "procs_running": -+ if stat.ProcessesRunning, err = strconv.ParseUint(parts[1], 10, 64); err != nil { -+ return Stat{}, fmt.Errorf("couldn't parse %q (procs_running): %w", parts[1], err) -+ } -+ case parts[0] == "procs_blocked": -+ if stat.ProcessesBlocked, err = strconv.ParseUint(parts[1], 10, 64); err != nil { -+ return Stat{}, fmt.Errorf("couldn't parse %q (procs_blocked): %w", parts[1], err) -+ } -+ case parts[0] == "softirq": -+ softIRQStats, total, err := parseSoftIRQStat(line) -+ if err != nil { -+ return Stat{}, err -+ } -+ stat.SoftIRQTotal = total -+ stat.SoftIRQ = softIRQStats -+ case strings.HasPrefix(parts[0], "cpu"): -+ cpuStat, cpuID, err := parseCPUStat(line) -+ if err != nil { -+ return Stat{}, err -+ } -+ if cpuID == -1 { -+ stat.CPUTotal = cpuStat -+ } else { -+ for int64(len(stat.CPU)) <= cpuID { -+ stat.CPU = append(stat.CPU, CPUStat{}) -+ } -+ stat.CPU[cpuID] = cpuStat -+ } -+ } -+ } -+ -+ if err := scanner.Err(); err != nil { -+ return Stat{}, fmt.Errorf("couldn't parse %q: %w", fileName, err) -+ } -+ -+ return stat, nil -+} -diff --git a/vendor/github.com/prometheus/procfs/swaps.go b/vendor/github.com/prometheus/procfs/swaps.go -new file mode 100755 -index 0000000..15edc22 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/swaps.go -@@ -0,0 +1,89 @@ -+// Copyright 2019 The Prometheus 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 procfs -+ -+import ( -+ "bufio" -+ "bytes" -+ "fmt" -+ "strconv" -+ "strings" -+ -+ "github.com/prometheus/procfs/internal/util" -+) -+ -+// Swap represents an entry in /proc/swaps. -+type Swap struct { -+ Filename string -+ Type string -+ Size int -+ Used int -+ Priority int -+} -+ -+// Swaps returns a slice of all configured swap devices on the system. -+func (fs FS) Swaps() ([]*Swap, error) { -+ data, err := util.ReadFileNoStat(fs.proc.Path("swaps")) -+ if err != nil { -+ return nil, err -+ } -+ return parseSwaps(data) -+} -+ -+func parseSwaps(info []byte) ([]*Swap, error) { -+ swaps := []*Swap{} -+ scanner := bufio.NewScanner(bytes.NewReader(info)) -+ scanner.Scan() // ignore header line -+ for scanner.Scan() { -+ swapString := scanner.Text() -+ parsedSwap, err := parseSwapString(swapString) -+ if err != nil { -+ return nil, err -+ } -+ swaps = append(swaps, parsedSwap) -+ } -+ -+ err := scanner.Err() -+ return swaps, err -+} -+ -+func parseSwapString(swapString string) (*Swap, error) { -+ var err error -+ -+ swapFields := strings.Fields(swapString) -+ swapLength := len(swapFields) -+ if swapLength < 5 { -+ return nil, fmt.Errorf("too few fields in swap string: %s", swapString) -+ } -+ -+ swap := &Swap{ -+ Filename: swapFields[0], -+ Type: swapFields[1], -+ } -+ -+ swap.Size, err = strconv.Atoi(swapFields[2]) -+ if err != nil { -+ return nil, fmt.Errorf("invalid swap size: %s", swapFields[2]) -+ } -+ swap.Used, err = strconv.Atoi(swapFields[3]) -+ if err != nil { -+ return nil, fmt.Errorf("invalid swap used: %s", swapFields[3]) -+ } -+ swap.Priority, err = strconv.Atoi(swapFields[4]) -+ if err != nil { -+ return nil, fmt.Errorf("invalid swap priority: %s", swapFields[4]) -+ } -+ -+ return swap, nil -+} -diff --git a/vendor/github.com/prometheus/procfs/ttar b/vendor/github.com/prometheus/procfs/ttar -new file mode 100755 -index 0000000..19ef02b ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/ttar -@@ -0,0 +1,413 @@ -+#!/usr/bin/env bash -+ -+# Purpose: plain text tar format -+# Limitations: - only suitable for text files, directories, and symlinks -+# - stores only filename, content, and mode -+# - not designed for untrusted input -+# -+# Note: must work with bash version 3.2 (macOS) -+ -+# Copyright 2017 Roger Luethi -+# -+# 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. -+ -+set -o errexit -o nounset -+ -+# Sanitize environment (for instance, standard sorting of glob matches) -+export LC_ALL=C -+ -+path="" -+CMD="" -+ARG_STRING="$*" -+ -+#------------------------------------------------------------------------------ -+# Not all sed implementations can work on null bytes. In order to make ttar -+# work out of the box on macOS, use Python as a stream editor. -+ -+USE_PYTHON=0 -+ -+PYTHON_CREATE_FILTER=$(cat << 'PCF' -+#!/usr/bin/env python -+ -+import re -+import sys -+ -+for line in sys.stdin: -+ line = re.sub(r'EOF', r'\EOF', line) -+ line = re.sub(r'NULLBYTE', r'\NULLBYTE', line) -+ line = re.sub('\x00', r'NULLBYTE', line) -+ sys.stdout.write(line) -+PCF -+) -+ -+PYTHON_EXTRACT_FILTER=$(cat << 'PEF' -+#!/usr/bin/env python -+ -+import re -+import sys -+ -+for line in sys.stdin: -+ line = re.sub(r'(?/dev/null; then -+ echo "ERROR Python not found. Aborting." -+ exit 2 -+ fi -+ USE_PYTHON=1 -+ fi -+} -+ -+#------------------------------------------------------------------------------ -+ -+function usage { -+ bname=$(basename "$0") -+ cat << USAGE -+Usage: $bname [-C

] -c -f (create archive) -+ $bname -t -f (list archive contents) -+ $bname [-C ] -x -f (extract archive) -+ -+Options: -+ -C (change directory) -+ -v (verbose) -+ --recursive-unlink (recursively delete existing directory if path -+ collides with file or directory to extract) -+ -+Example: Change to sysfs directory, create ttar file from fixtures directory -+ $bname -C sysfs -c -f sysfs/fixtures.ttar fixtures/ -+USAGE -+exit "$1" -+} -+ -+function vecho { -+ if [ "${VERBOSE:-}" == "yes" ]; then -+ echo >&7 "$@" -+ fi -+} -+ -+function set_cmd { -+ if [ -n "$CMD" ]; then -+ echo "ERROR: more than one command given" -+ echo -+ usage 2 -+ fi -+ CMD=$1 -+} -+ -+unset VERBOSE -+unset RECURSIVE_UNLINK -+ -+while getopts :cf:-:htxvC: opt; do -+ case $opt in -+ c) -+ set_cmd "create" -+ ;; -+ f) -+ ARCHIVE=$OPTARG -+ ;; -+ h) -+ usage 0 -+ ;; -+ t) -+ set_cmd "list" -+ ;; -+ x) -+ set_cmd "extract" -+ ;; -+ v) -+ VERBOSE=yes -+ exec 7>&1 -+ ;; -+ C) -+ CDIR=$OPTARG -+ ;; -+ -) -+ case $OPTARG in -+ recursive-unlink) -+ RECURSIVE_UNLINK="yes" -+ ;; -+ *) -+ echo -e "Error: invalid option -$OPTARG" -+ echo -+ usage 1 -+ ;; -+ esac -+ ;; -+ *) -+ echo >&2 "ERROR: invalid option -$OPTARG" -+ echo -+ usage 1 -+ ;; -+ esac -+done -+ -+# Remove processed options from arguments -+shift $(( OPTIND - 1 )); -+ -+if [ "${CMD:-}" == "" ]; then -+ echo >&2 "ERROR: no command given" -+ echo -+ usage 1 -+elif [ "${ARCHIVE:-}" == "" ]; then -+ echo >&2 "ERROR: no archive name given" -+ echo -+ usage 1 -+fi -+ -+function list { -+ local path="" -+ local size=0 -+ local line_no=0 -+ local ttar_file=$1 -+ if [ -n "${2:-}" ]; then -+ echo >&2 "ERROR: too many arguments." -+ echo -+ usage 1 -+ fi -+ if [ ! -e "$ttar_file" ]; then -+ echo >&2 "ERROR: file not found ($ttar_file)" -+ echo -+ usage 1 -+ fi -+ while read -r line; do -+ line_no=$(( line_no + 1 )) -+ if [ $size -gt 0 ]; then -+ size=$(( size - 1 )) -+ continue -+ fi -+ if [[ $line =~ ^Path:\ (.*)$ ]]; then -+ path=${BASH_REMATCH[1]} -+ elif [[ $line =~ ^Lines:\ (.*)$ ]]; then -+ size=${BASH_REMATCH[1]} -+ echo "$path" -+ elif [[ $line =~ ^Directory:\ (.*)$ ]]; then -+ path=${BASH_REMATCH[1]} -+ echo "$path/" -+ elif [[ $line =~ ^SymlinkTo:\ (.*)$ ]]; then -+ echo "$path -> ${BASH_REMATCH[1]}" -+ fi -+ done < "$ttar_file" -+} -+ -+function extract { -+ local path="" -+ local size=0 -+ local line_no=0 -+ local ttar_file=$1 -+ if [ -n "${2:-}" ]; then -+ echo >&2 "ERROR: too many arguments." -+ echo -+ usage 1 -+ fi -+ if [ ! -e "$ttar_file" ]; then -+ echo >&2 "ERROR: file not found ($ttar_file)" -+ echo -+ usage 1 -+ fi -+ while IFS= read -r line; do -+ line_no=$(( line_no + 1 )) -+ local eof_without_newline -+ if [ "$size" -gt 0 ]; then -+ if [[ "$line" =~ [^\\]EOF ]]; then -+ # An EOF not preceded by a backslash indicates that the line -+ # does not end with a newline -+ eof_without_newline=1 -+ else -+ eof_without_newline=0 -+ fi -+ # Replace NULLBYTE with null byte if at beginning of line -+ # Replace NULLBYTE with null byte unless preceded by backslash -+ # Remove one backslash in front of NULLBYTE (if any) -+ # Remove EOF unless preceded by backslash -+ # Remove one backslash in front of EOF -+ if [ $USE_PYTHON -eq 1 ]; then -+ echo -n "$line" | python -c "$PYTHON_EXTRACT_FILTER" >> "$path" -+ else -+ # The repeated pattern makes up for sed's lack of negative -+ # lookbehind assertions (for consecutive null bytes). -+ echo -n "$line" | \ -+ sed -e 's/^NULLBYTE/\x0/g; -+ s/\([^\\]\)NULLBYTE/\1\x0/g; -+ s/\([^\\]\)NULLBYTE/\1\x0/g; -+ s/\\NULLBYTE/NULLBYTE/g; -+ s/\([^\\]\)EOF/\1/g; -+ s/\\EOF/EOF/g; -+ ' >> "$path" -+ fi -+ if [[ "$eof_without_newline" -eq 0 ]]; then -+ echo >> "$path" -+ fi -+ size=$(( size - 1 )) -+ continue -+ fi -+ if [[ $line =~ ^Path:\ (.*)$ ]]; then -+ path=${BASH_REMATCH[1]} -+ if [ -L "$path" ]; then -+ rm "$path" -+ elif [ -d "$path" ]; then -+ if [ "${RECURSIVE_UNLINK:-}" == "yes" ]; then -+ rm -r "$path" -+ else -+ # Safe because symlinks to directories are dealt with above -+ rmdir "$path" -+ fi -+ elif [ -e "$path" ]; then -+ rm "$path" -+ fi -+ elif [[ $line =~ ^Lines:\ (.*)$ ]]; then -+ size=${BASH_REMATCH[1]} -+ # Create file even if it is zero-length. -+ touch "$path" -+ vecho " $path" -+ elif [[ $line =~ ^Mode:\ (.*)$ ]]; then -+ mode=${BASH_REMATCH[1]} -+ chmod "$mode" "$path" -+ vecho "$mode" -+ elif [[ $line =~ ^Directory:\ (.*)$ ]]; then -+ path=${BASH_REMATCH[1]} -+ mkdir -p "$path" -+ vecho " $path/" -+ elif [[ $line =~ ^SymlinkTo:\ (.*)$ ]]; then -+ ln -s "${BASH_REMATCH[1]}" "$path" -+ vecho " $path -> ${BASH_REMATCH[1]}" -+ elif [[ $line =~ ^# ]]; then -+ # Ignore comments between files -+ continue -+ else -+ echo >&2 "ERROR: Unknown keyword on line $line_no: $line" -+ exit 1 -+ fi -+ done < "$ttar_file" -+} -+ -+function div { -+ echo "# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -" \ -+ "- - - - - -" -+} -+ -+function get_mode { -+ local mfile=$1 -+ if [ -z "${STAT_OPTION:-}" ]; then -+ if stat -c '%a' "$mfile" >/dev/null 2>&1; then -+ # GNU stat -+ STAT_OPTION='-c' -+ STAT_FORMAT='%a' -+ else -+ # BSD stat -+ STAT_OPTION='-f' -+ # Octal output, user/group/other (omit file type, sticky bit) -+ STAT_FORMAT='%OLp' -+ fi -+ fi -+ stat "${STAT_OPTION}" "${STAT_FORMAT}" "$mfile" -+} -+ -+function _create { -+ shopt -s nullglob -+ local mode -+ local eof_without_newline -+ while (( "$#" )); do -+ file=$1 -+ if [ -L "$file" ]; then -+ echo "Path: $file" -+ symlinkTo=$(readlink "$file") -+ echo "SymlinkTo: $symlinkTo" -+ vecho " $file -> $symlinkTo" -+ div -+ elif [ -d "$file" ]; then -+ # Strip trailing slash (if there is one) -+ file=${file%/} -+ echo "Directory: $file" -+ mode=$(get_mode "$file") -+ echo "Mode: $mode" -+ vecho "$mode $file/" -+ div -+ # Find all files and dirs, including hidden/dot files -+ for x in "$file/"{*,.[^.]*}; do -+ _create "$x" -+ done -+ elif [ -f "$file" ]; then -+ echo "Path: $file" -+ lines=$(wc -l "$file"|awk '{print $1}') -+ eof_without_newline=0 -+ if [[ "$(wc -c "$file"|awk '{print $1}')" -gt 0 ]] && \ -+ [[ "$(tail -c 1 "$file" | wc -l)" -eq 0 ]]; then -+ eof_without_newline=1 -+ lines=$((lines+1)) -+ fi -+ echo "Lines: $lines" -+ # Add backslash in front of EOF -+ # Add backslash in front of NULLBYTE -+ # Replace null byte with NULLBYTE -+ if [ $USE_PYTHON -eq 1 ]; then -+ < "$file" python -c "$PYTHON_CREATE_FILTER" -+ else -+ < "$file" \ -+ sed 's/EOF/\\EOF/g; -+ s/NULLBYTE/\\NULLBYTE/g; -+ s/\x0/NULLBYTE/g; -+ ' -+ fi -+ if [[ "$eof_without_newline" -eq 1 ]]; then -+ # Finish line with EOF to indicate that the original line did -+ # not end with a linefeed -+ echo "EOF" -+ fi -+ mode=$(get_mode "$file") -+ echo "Mode: $mode" -+ vecho "$mode $file" -+ div -+ else -+ echo >&2 "ERROR: file not found ($file in $(pwd))" -+ exit 2 -+ fi -+ shift -+ done -+} -+ -+function create { -+ ttar_file=$1 -+ shift -+ if [ -z "${1:-}" ]; then -+ echo >&2 "ERROR: missing arguments." -+ echo -+ usage 1 -+ fi -+ if [ -e "$ttar_file" ]; then -+ rm "$ttar_file" -+ fi -+ exec > "$ttar_file" -+ echo "# Archive created by ttar $ARG_STRING" -+ _create "$@" -+} -+ -+test_environment -+ -+if [ -n "${CDIR:-}" ]; then -+ if [[ "$ARCHIVE" != /* ]]; then -+ # Relative path: preserve the archive's location before changing -+ # directory -+ ARCHIVE="$(pwd)/$ARCHIVE" -+ fi -+ cd "$CDIR" -+fi -+ -+"$CMD" "$ARCHIVE" "$@" -diff --git a/vendor/github.com/prometheus/procfs/vm.go b/vendor/github.com/prometheus/procfs/vm.go -new file mode 100755 -index 0000000..20ceb77 ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/vm.go -@@ -0,0 +1,210 @@ -+// Copyright 2019 The Prometheus 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:build !windows -+// +build !windows -+ -+package procfs -+ -+import ( -+ "fmt" -+ "os" -+ "path/filepath" -+ "strings" -+ -+ "github.com/prometheus/procfs/internal/util" -+) -+ -+// The VM interface is described at -+// https://www.kernel.org/doc/Documentation/sysctl/vm.txt -+// Each setting is exposed as a single file. -+// Each file contains one line with a single numerical value, except lowmem_reserve_ratio which holds an array -+// and numa_zonelist_order (deprecated) which is a string. -+type VM struct { -+ AdminReserveKbytes *int64 // /proc/sys/vm/admin_reserve_kbytes -+ BlockDump *int64 // /proc/sys/vm/block_dump -+ CompactUnevictableAllowed *int64 // /proc/sys/vm/compact_unevictable_allowed -+ DirtyBackgroundBytes *int64 // /proc/sys/vm/dirty_background_bytes -+ DirtyBackgroundRatio *int64 // /proc/sys/vm/dirty_background_ratio -+ DirtyBytes *int64 // /proc/sys/vm/dirty_bytes -+ DirtyExpireCentisecs *int64 // /proc/sys/vm/dirty_expire_centisecs -+ DirtyRatio *int64 // /proc/sys/vm/dirty_ratio -+ DirtytimeExpireSeconds *int64 // /proc/sys/vm/dirtytime_expire_seconds -+ DirtyWritebackCentisecs *int64 // /proc/sys/vm/dirty_writeback_centisecs -+ DropCaches *int64 // /proc/sys/vm/drop_caches -+ ExtfragThreshold *int64 // /proc/sys/vm/extfrag_threshold -+ HugetlbShmGroup *int64 // /proc/sys/vm/hugetlb_shm_group -+ LaptopMode *int64 // /proc/sys/vm/laptop_mode -+ LegacyVaLayout *int64 // /proc/sys/vm/legacy_va_layout -+ LowmemReserveRatio []*int64 // /proc/sys/vm/lowmem_reserve_ratio -+ MaxMapCount *int64 // /proc/sys/vm/max_map_count -+ MemoryFailureEarlyKill *int64 // /proc/sys/vm/memory_failure_early_kill -+ MemoryFailureRecovery *int64 // /proc/sys/vm/memory_failure_recovery -+ MinFreeKbytes *int64 // /proc/sys/vm/min_free_kbytes -+ MinSlabRatio *int64 // /proc/sys/vm/min_slab_ratio -+ MinUnmappedRatio *int64 // /proc/sys/vm/min_unmapped_ratio -+ MmapMinAddr *int64 // /proc/sys/vm/mmap_min_addr -+ NrHugepages *int64 // /proc/sys/vm/nr_hugepages -+ NrHugepagesMempolicy *int64 // /proc/sys/vm/nr_hugepages_mempolicy -+ NrOvercommitHugepages *int64 // /proc/sys/vm/nr_overcommit_hugepages -+ NumaStat *int64 // /proc/sys/vm/numa_stat -+ NumaZonelistOrder string // /proc/sys/vm/numa_zonelist_order -+ OomDumpTasks *int64 // /proc/sys/vm/oom_dump_tasks -+ OomKillAllocatingTask *int64 // /proc/sys/vm/oom_kill_allocating_task -+ OvercommitKbytes *int64 // /proc/sys/vm/overcommit_kbytes -+ OvercommitMemory *int64 // /proc/sys/vm/overcommit_memory -+ OvercommitRatio *int64 // /proc/sys/vm/overcommit_ratio -+ PageCluster *int64 // /proc/sys/vm/page-cluster -+ PanicOnOom *int64 // /proc/sys/vm/panic_on_oom -+ PercpuPagelistFraction *int64 // /proc/sys/vm/percpu_pagelist_fraction -+ StatInterval *int64 // /proc/sys/vm/stat_interval -+ Swappiness *int64 // /proc/sys/vm/swappiness -+ UserReserveKbytes *int64 // /proc/sys/vm/user_reserve_kbytes -+ VfsCachePressure *int64 // /proc/sys/vm/vfs_cache_pressure -+ WatermarkBoostFactor *int64 // /proc/sys/vm/watermark_boost_factor -+ WatermarkScaleFactor *int64 // /proc/sys/vm/watermark_scale_factor -+ ZoneReclaimMode *int64 // /proc/sys/vm/zone_reclaim_mode -+} -+ -+// VM reads the VM statistics from the specified `proc` filesystem. -+func (fs FS) VM() (*VM, error) { -+ path := fs.proc.Path("sys/vm") -+ file, err := os.Stat(path) -+ if err != nil { -+ return nil, err -+ } -+ if !file.Mode().IsDir() { -+ return nil, fmt.Errorf("%s is not a directory", path) -+ } -+ -+ files, err := os.ReadDir(path) -+ if err != nil { -+ return nil, err -+ } -+ -+ var vm VM -+ for _, f := range files { -+ if f.IsDir() { -+ continue -+ } -+ -+ name := filepath.Join(path, f.Name()) -+ // ignore errors on read, as there are some write only -+ // in /proc/sys/vm -+ value, err := util.SysReadFile(name) -+ if err != nil { -+ continue -+ } -+ vp := util.NewValueParser(value) -+ -+ switch f.Name() { -+ case "admin_reserve_kbytes": -+ vm.AdminReserveKbytes = vp.PInt64() -+ case "block_dump": -+ vm.BlockDump = vp.PInt64() -+ case "compact_unevictable_allowed": -+ vm.CompactUnevictableAllowed = vp.PInt64() -+ case "dirty_background_bytes": -+ vm.DirtyBackgroundBytes = vp.PInt64() -+ case "dirty_background_ratio": -+ vm.DirtyBackgroundRatio = vp.PInt64() -+ case "dirty_bytes": -+ vm.DirtyBytes = vp.PInt64() -+ case "dirty_expire_centisecs": -+ vm.DirtyExpireCentisecs = vp.PInt64() -+ case "dirty_ratio": -+ vm.DirtyRatio = vp.PInt64() -+ case "dirtytime_expire_seconds": -+ vm.DirtytimeExpireSeconds = vp.PInt64() -+ case "dirty_writeback_centisecs": -+ vm.DirtyWritebackCentisecs = vp.PInt64() -+ case "drop_caches": -+ vm.DropCaches = vp.PInt64() -+ case "extfrag_threshold": -+ vm.ExtfragThreshold = vp.PInt64() -+ case "hugetlb_shm_group": -+ vm.HugetlbShmGroup = vp.PInt64() -+ case "laptop_mode": -+ vm.LaptopMode = vp.PInt64() -+ case "legacy_va_layout": -+ vm.LegacyVaLayout = vp.PInt64() -+ case "lowmem_reserve_ratio": -+ stringSlice := strings.Fields(value) -+ pint64Slice := make([]*int64, 0, len(stringSlice)) -+ for _, value := range stringSlice { -+ vp := util.NewValueParser(value) -+ pint64Slice = append(pint64Slice, vp.PInt64()) -+ } -+ vm.LowmemReserveRatio = pint64Slice -+ case "max_map_count": -+ vm.MaxMapCount = vp.PInt64() -+ case "memory_failure_early_kill": -+ vm.MemoryFailureEarlyKill = vp.PInt64() -+ case "memory_failure_recovery": -+ vm.MemoryFailureRecovery = vp.PInt64() -+ case "min_free_kbytes": -+ vm.MinFreeKbytes = vp.PInt64() -+ case "min_slab_ratio": -+ vm.MinSlabRatio = vp.PInt64() -+ case "min_unmapped_ratio": -+ vm.MinUnmappedRatio = vp.PInt64() -+ case "mmap_min_addr": -+ vm.MmapMinAddr = vp.PInt64() -+ case "nr_hugepages": -+ vm.NrHugepages = vp.PInt64() -+ case "nr_hugepages_mempolicy": -+ vm.NrHugepagesMempolicy = vp.PInt64() -+ case "nr_overcommit_hugepages": -+ vm.NrOvercommitHugepages = vp.PInt64() -+ case "numa_stat": -+ vm.NumaStat = vp.PInt64() -+ case "numa_zonelist_order": -+ vm.NumaZonelistOrder = value -+ case "oom_dump_tasks": -+ vm.OomDumpTasks = vp.PInt64() -+ case "oom_kill_allocating_task": -+ vm.OomKillAllocatingTask = vp.PInt64() -+ case "overcommit_kbytes": -+ vm.OvercommitKbytes = vp.PInt64() -+ case "overcommit_memory": -+ vm.OvercommitMemory = vp.PInt64() -+ case "overcommit_ratio": -+ vm.OvercommitRatio = vp.PInt64() -+ case "page-cluster": -+ vm.PageCluster = vp.PInt64() -+ case "panic_on_oom": -+ vm.PanicOnOom = vp.PInt64() -+ case "percpu_pagelist_fraction": -+ vm.PercpuPagelistFraction = vp.PInt64() -+ case "stat_interval": -+ vm.StatInterval = vp.PInt64() -+ case "swappiness": -+ vm.Swappiness = vp.PInt64() -+ case "user_reserve_kbytes": -+ vm.UserReserveKbytes = vp.PInt64() -+ case "vfs_cache_pressure": -+ vm.VfsCachePressure = vp.PInt64() -+ case "watermark_boost_factor": -+ vm.WatermarkBoostFactor = vp.PInt64() -+ case "watermark_scale_factor": -+ vm.WatermarkScaleFactor = vp.PInt64() -+ case "zone_reclaim_mode": -+ vm.ZoneReclaimMode = vp.PInt64() -+ } -+ if err := vp.Err(); err != nil { -+ return nil, err -+ } -+ } -+ -+ return &vm, nil -+} -diff --git a/vendor/github.com/prometheus/procfs/zoneinfo.go b/vendor/github.com/prometheus/procfs/zoneinfo.go -new file mode 100755 -index 0000000..c745a4c ---- /dev/null -+++ b/vendor/github.com/prometheus/procfs/zoneinfo.go -@@ -0,0 +1,196 @@ -+// Copyright 2019 The Prometheus 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:build !windows -+// +build !windows -+ -+package procfs -+ -+import ( -+ "bytes" -+ "fmt" -+ "os" -+ "regexp" -+ "strings" -+ -+ "github.com/prometheus/procfs/internal/util" -+) -+ -+// Zoneinfo holds info parsed from /proc/zoneinfo. -+type Zoneinfo struct { -+ Node string -+ Zone string -+ NrFreePages *int64 -+ Min *int64 -+ Low *int64 -+ High *int64 -+ Scanned *int64 -+ Spanned *int64 -+ Present *int64 -+ Managed *int64 -+ NrActiveAnon *int64 -+ NrInactiveAnon *int64 -+ NrIsolatedAnon *int64 -+ NrAnonPages *int64 -+ NrAnonTransparentHugepages *int64 -+ NrActiveFile *int64 -+ NrInactiveFile *int64 -+ NrIsolatedFile *int64 -+ NrFilePages *int64 -+ NrSlabReclaimable *int64 -+ NrSlabUnreclaimable *int64 -+ NrMlockStack *int64 -+ NrKernelStack *int64 -+ NrMapped *int64 -+ NrDirty *int64 -+ NrWriteback *int64 -+ NrUnevictable *int64 -+ NrShmem *int64 -+ NrDirtied *int64 -+ NrWritten *int64 -+ NumaHit *int64 -+ NumaMiss *int64 -+ NumaForeign *int64 -+ NumaInterleave *int64 -+ NumaLocal *int64 -+ NumaOther *int64 -+ Protection []*int64 -+} -+ -+var nodeZoneRE = regexp.MustCompile(`(\d+), zone\s+(\w+)`) -+ -+// Zoneinfo parses an zoneinfo-file (/proc/zoneinfo) and returns a slice of -+// structs containing the relevant info. More information available here: -+// https://www.kernel.org/doc/Documentation/sysctl/vm.txt -+func (fs FS) Zoneinfo() ([]Zoneinfo, error) { -+ data, err := os.ReadFile(fs.proc.Path("zoneinfo")) -+ if err != nil { -+ return nil, fmt.Errorf("error reading zoneinfo %q: %w", fs.proc.Path("zoneinfo"), err) -+ } -+ zoneinfo, err := parseZoneinfo(data) -+ if err != nil { -+ return nil, fmt.Errorf("error parsing zoneinfo %q: %w", fs.proc.Path("zoneinfo"), err) -+ } -+ return zoneinfo, nil -+} -+ -+func parseZoneinfo(zoneinfoData []byte) ([]Zoneinfo, error) { -+ -+ zoneinfo := []Zoneinfo{} -+ -+ zoneinfoBlocks := bytes.Split(zoneinfoData, []byte("\nNode")) -+ for _, block := range zoneinfoBlocks { -+ var zoneinfoElement Zoneinfo -+ lines := strings.Split(string(block), "\n") -+ for _, line := range lines { -+ -+ if nodeZone := nodeZoneRE.FindStringSubmatch(line); nodeZone != nil { -+ zoneinfoElement.Node = nodeZone[1] -+ zoneinfoElement.Zone = nodeZone[2] -+ continue -+ } -+ if strings.HasPrefix(strings.TrimSpace(line), "per-node stats") { -+ continue -+ } -+ parts := strings.Fields(strings.TrimSpace(line)) -+ if len(parts) < 2 { -+ continue -+ } -+ vp := util.NewValueParser(parts[1]) -+ switch parts[0] { -+ case "nr_free_pages": -+ zoneinfoElement.NrFreePages = vp.PInt64() -+ case "min": -+ zoneinfoElement.Min = vp.PInt64() -+ case "low": -+ zoneinfoElement.Low = vp.PInt64() -+ case "high": -+ zoneinfoElement.High = vp.PInt64() -+ case "scanned": -+ zoneinfoElement.Scanned = vp.PInt64() -+ case "spanned": -+ zoneinfoElement.Spanned = vp.PInt64() -+ case "present": -+ zoneinfoElement.Present = vp.PInt64() -+ case "managed": -+ zoneinfoElement.Managed = vp.PInt64() -+ case "nr_active_anon": -+ zoneinfoElement.NrActiveAnon = vp.PInt64() -+ case "nr_inactive_anon": -+ zoneinfoElement.NrInactiveAnon = vp.PInt64() -+ case "nr_isolated_anon": -+ zoneinfoElement.NrIsolatedAnon = vp.PInt64() -+ case "nr_anon_pages": -+ zoneinfoElement.NrAnonPages = vp.PInt64() -+ case "nr_anon_transparent_hugepages": -+ zoneinfoElement.NrAnonTransparentHugepages = vp.PInt64() -+ case "nr_active_file": -+ zoneinfoElement.NrActiveFile = vp.PInt64() -+ case "nr_inactive_file": -+ zoneinfoElement.NrInactiveFile = vp.PInt64() -+ case "nr_isolated_file": -+ zoneinfoElement.NrIsolatedFile = vp.PInt64() -+ case "nr_file_pages": -+ zoneinfoElement.NrFilePages = vp.PInt64() -+ case "nr_slab_reclaimable": -+ zoneinfoElement.NrSlabReclaimable = vp.PInt64() -+ case "nr_slab_unreclaimable": -+ zoneinfoElement.NrSlabUnreclaimable = vp.PInt64() -+ case "nr_mlock_stack": -+ zoneinfoElement.NrMlockStack = vp.PInt64() -+ case "nr_kernel_stack": -+ zoneinfoElement.NrKernelStack = vp.PInt64() -+ case "nr_mapped": -+ zoneinfoElement.NrMapped = vp.PInt64() -+ case "nr_dirty": -+ zoneinfoElement.NrDirty = vp.PInt64() -+ case "nr_writeback": -+ zoneinfoElement.NrWriteback = vp.PInt64() -+ case "nr_unevictable": -+ zoneinfoElement.NrUnevictable = vp.PInt64() -+ case "nr_shmem": -+ zoneinfoElement.NrShmem = vp.PInt64() -+ case "nr_dirtied": -+ zoneinfoElement.NrDirtied = vp.PInt64() -+ case "nr_written": -+ zoneinfoElement.NrWritten = vp.PInt64() -+ case "numa_hit": -+ zoneinfoElement.NumaHit = vp.PInt64() -+ case "numa_miss": -+ zoneinfoElement.NumaMiss = vp.PInt64() -+ case "numa_foreign": -+ zoneinfoElement.NumaForeign = vp.PInt64() -+ case "numa_interleave": -+ zoneinfoElement.NumaInterleave = vp.PInt64() -+ case "numa_local": -+ zoneinfoElement.NumaLocal = vp.PInt64() -+ case "numa_other": -+ zoneinfoElement.NumaOther = vp.PInt64() -+ case "protection:": -+ protectionParts := strings.Split(line, ":") -+ protectionValues := strings.Replace(protectionParts[1], "(", "", 1) -+ protectionValues = strings.Replace(protectionValues, ")", "", 1) -+ protectionValues = strings.TrimSpace(protectionValues) -+ protectionStringMap := strings.Split(protectionValues, ", ") -+ val, err := util.ParsePInt64s(protectionStringMap) -+ if err == nil { -+ zoneinfoElement.Protection = val -+ } -+ } -+ -+ } -+ -+ zoneinfo = append(zoneinfo, zoneinfoElement) -+ } -+ return zoneinfo, nil -+} -diff --git a/vendor/github.com/seccomp/libseccomp-golang/.gitignore b/vendor/github.com/seccomp/libseccomp-golang/.gitignore -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/seccomp/libseccomp-golang/.golangci.yml b/vendor/github.com/seccomp/libseccomp-golang/.golangci.yml -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/seccomp/libseccomp-golang/CHANGELOG b/vendor/github.com/seccomp/libseccomp-golang/CHANGELOG -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/seccomp/libseccomp-golang/CONTRIBUTING.md b/vendor/github.com/seccomp/libseccomp-golang/CONTRIBUTING.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/seccomp/libseccomp-golang/LICENSE b/vendor/github.com/seccomp/libseccomp-golang/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/seccomp/libseccomp-golang/Makefile b/vendor/github.com/seccomp/libseccomp-golang/Makefile -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/seccomp/libseccomp-golang/README.md b/vendor/github.com/seccomp/libseccomp-golang/README.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/seccomp/libseccomp-golang/SECURITY.md b/vendor/github.com/seccomp/libseccomp-golang/SECURITY.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/seccomp/libseccomp-golang/seccomp.go b/vendor/github.com/seccomp/libseccomp-golang/seccomp.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/seccomp/libseccomp-golang/seccomp_internal.go b/vendor/github.com/seccomp/libseccomp-golang/seccomp_internal.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/sirupsen/logrus/.gitignore b/vendor/github.com/sirupsen/logrus/.gitignore -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/sirupsen/logrus/.golangci.yml b/vendor/github.com/sirupsen/logrus/.golangci.yml -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/sirupsen/logrus/.travis.yml b/vendor/github.com/sirupsen/logrus/.travis.yml -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/sirupsen/logrus/CHANGELOG.md b/vendor/github.com/sirupsen/logrus/CHANGELOG.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/sirupsen/logrus/LICENSE b/vendor/github.com/sirupsen/logrus/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/sirupsen/logrus/README.md b/vendor/github.com/sirupsen/logrus/README.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/sirupsen/logrus/alt_exit.go b/vendor/github.com/sirupsen/logrus/alt_exit.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/sirupsen/logrus/appveyor.yml b/vendor/github.com/sirupsen/logrus/appveyor.yml -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/sirupsen/logrus/buffer_pool.go b/vendor/github.com/sirupsen/logrus/buffer_pool.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/sirupsen/logrus/doc.go b/vendor/github.com/sirupsen/logrus/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/sirupsen/logrus/entry.go b/vendor/github.com/sirupsen/logrus/entry.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/sirupsen/logrus/exported.go b/vendor/github.com/sirupsen/logrus/exported.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/sirupsen/logrus/formatter.go b/vendor/github.com/sirupsen/logrus/formatter.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/sirupsen/logrus/hooks.go b/vendor/github.com/sirupsen/logrus/hooks.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/sirupsen/logrus/json_formatter.go b/vendor/github.com/sirupsen/logrus/json_formatter.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/sirupsen/logrus/logger.go b/vendor/github.com/sirupsen/logrus/logger.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/sirupsen/logrus/logrus.go b/vendor/github.com/sirupsen/logrus/logrus.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/sirupsen/logrus/terminal_check_appengine.go b/vendor/github.com/sirupsen/logrus/terminal_check_appengine.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/sirupsen/logrus/terminal_check_bsd.go b/vendor/github.com/sirupsen/logrus/terminal_check_bsd.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/sirupsen/logrus/terminal_check_js.go b/vendor/github.com/sirupsen/logrus/terminal_check_js.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/sirupsen/logrus/terminal_check_no_terminal.go b/vendor/github.com/sirupsen/logrus/terminal_check_no_terminal.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/sirupsen/logrus/terminal_check_notappengine.go b/vendor/github.com/sirupsen/logrus/terminal_check_notappengine.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/sirupsen/logrus/terminal_check_solaris.go b/vendor/github.com/sirupsen/logrus/terminal_check_solaris.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/sirupsen/logrus/terminal_check_unix.go b/vendor/github.com/sirupsen/logrus/terminal_check_unix.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/sirupsen/logrus/terminal_check_windows.go b/vendor/github.com/sirupsen/logrus/terminal_check_windows.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/sirupsen/logrus/text_formatter.go b/vendor/github.com/sirupsen/logrus/text_formatter.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/sirupsen/logrus/writer.go b/vendor/github.com/sirupsen/logrus/writer.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/stretchr/testify/LICENSE b/vendor/github.com/stretchr/testify/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/stretchr/testify/assert/assertion_compare.go b/vendor/github.com/stretchr/testify/assert/assertion_compare.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/stretchr/testify/assert/assertion_compare_can_convert.go b/vendor/github.com/stretchr/testify/assert/assertion_compare_can_convert.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/stretchr/testify/assert/assertion_compare_legacy.go b/vendor/github.com/stretchr/testify/assert/assertion_compare_legacy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/stretchr/testify/assert/assertion_format.go b/vendor/github.com/stretchr/testify/assert/assertion_format.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/stretchr/testify/assert/assertion_format.go.tmpl b/vendor/github.com/stretchr/testify/assert/assertion_format.go.tmpl -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/stretchr/testify/assert/assertion_forward.go b/vendor/github.com/stretchr/testify/assert/assertion_forward.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/stretchr/testify/assert/assertion_forward.go.tmpl b/vendor/github.com/stretchr/testify/assert/assertion_forward.go.tmpl -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/stretchr/testify/assert/assertion_order.go b/vendor/github.com/stretchr/testify/assert/assertion_order.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/stretchr/testify/assert/assertions.go b/vendor/github.com/stretchr/testify/assert/assertions.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/stretchr/testify/assert/doc.go b/vendor/github.com/stretchr/testify/assert/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/stretchr/testify/assert/errors.go b/vendor/github.com/stretchr/testify/assert/errors.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/stretchr/testify/assert/forward_assertions.go b/vendor/github.com/stretchr/testify/assert/forward_assertions.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/stretchr/testify/assert/http_assertions.go b/vendor/github.com/stretchr/testify/assert/http_assertions.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/syndtr/gocapability/LICENSE b/vendor/github.com/syndtr/gocapability/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/syndtr/gocapability/capability/capability.go b/vendor/github.com/syndtr/gocapability/capability/capability.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/syndtr/gocapability/capability/capability_linux.go b/vendor/github.com/syndtr/gocapability/capability/capability_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/syndtr/gocapability/capability/capability_noop.go b/vendor/github.com/syndtr/gocapability/capability/capability_noop.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/syndtr/gocapability/capability/enum.go b/vendor/github.com/syndtr/gocapability/capability/enum.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/syndtr/gocapability/capability/enum_gen.go b/vendor/github.com/syndtr/gocapability/capability/enum_gen.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/syndtr/gocapability/capability/syscall_linux.go b/vendor/github.com/syndtr/gocapability/capability/syscall_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/.gitignore b/vendor/github.com/vishvananda/netlink/.gitignore -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/.travis.yml b/vendor/github.com/vishvananda/netlink/.travis.yml -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/CHANGELOG.md b/vendor/github.com/vishvananda/netlink/CHANGELOG.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/LICENSE b/vendor/github.com/vishvananda/netlink/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/Makefile b/vendor/github.com/vishvananda/netlink/Makefile -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/README.md b/vendor/github.com/vishvananda/netlink/README.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/addr.go b/vendor/github.com/vishvananda/netlink/addr.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/addr_linux.go b/vendor/github.com/vishvananda/netlink/addr_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/bpf_linux.go b/vendor/github.com/vishvananda/netlink/bpf_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/bridge_linux.go b/vendor/github.com/vishvananda/netlink/bridge_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/class.go b/vendor/github.com/vishvananda/netlink/class.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/class_linux.go b/vendor/github.com/vishvananda/netlink/class_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/conntrack_linux.go b/vendor/github.com/vishvananda/netlink/conntrack_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/conntrack_unspecified.go b/vendor/github.com/vishvananda/netlink/conntrack_unspecified.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/devlink_linux.go b/vendor/github.com/vishvananda/netlink/devlink_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/filter.go b/vendor/github.com/vishvananda/netlink/filter.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/filter_linux.go b/vendor/github.com/vishvananda/netlink/filter_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/fou.go b/vendor/github.com/vishvananda/netlink/fou.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/fou_linux.go b/vendor/github.com/vishvananda/netlink/fou_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/fou_unspecified.go b/vendor/github.com/vishvananda/netlink/fou_unspecified.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/genetlink_linux.go b/vendor/github.com/vishvananda/netlink/genetlink_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/genetlink_unspecified.go b/vendor/github.com/vishvananda/netlink/genetlink_unspecified.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/gtp_linux.go b/vendor/github.com/vishvananda/netlink/gtp_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/handle_linux.go b/vendor/github.com/vishvananda/netlink/handle_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/handle_unspecified.go b/vendor/github.com/vishvananda/netlink/handle_unspecified.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/ioctl_linux.go b/vendor/github.com/vishvananda/netlink/ioctl_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/link.go b/vendor/github.com/vishvananda/netlink/link.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/link_linux.go b/vendor/github.com/vishvananda/netlink/link_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/link_tuntap_linux.go b/vendor/github.com/vishvananda/netlink/link_tuntap_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/neigh.go b/vendor/github.com/vishvananda/netlink/neigh.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/neigh_linux.go b/vendor/github.com/vishvananda/netlink/neigh_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/netlink.go b/vendor/github.com/vishvananda/netlink/netlink.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/netlink_linux.go b/vendor/github.com/vishvananda/netlink/netlink_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/netlink_unspecified.go b/vendor/github.com/vishvananda/netlink/netlink_unspecified.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/netns_linux.go b/vendor/github.com/vishvananda/netlink/netns_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/netns_unspecified.go b/vendor/github.com/vishvananda/netlink/netns_unspecified.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/nl/addr_linux.go b/vendor/github.com/vishvananda/netlink/nl/addr_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/nl/bridge_linux.go b/vendor/github.com/vishvananda/netlink/nl/bridge_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/nl/conntrack_linux.go b/vendor/github.com/vishvananda/netlink/nl/conntrack_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/nl/devlink_linux.go b/vendor/github.com/vishvananda/netlink/nl/devlink_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/nl/genetlink_linux.go b/vendor/github.com/vishvananda/netlink/nl/genetlink_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/nl/link_linux.go b/vendor/github.com/vishvananda/netlink/nl/link_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/nl/mpls_linux.go b/vendor/github.com/vishvananda/netlink/nl/mpls_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/nl/nl_linux.go b/vendor/github.com/vishvananda/netlink/nl/nl_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/nl/nl_unspecified.go b/vendor/github.com/vishvananda/netlink/nl/nl_unspecified.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/nl/rdma_link_linux.go b/vendor/github.com/vishvananda/netlink/nl/rdma_link_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/nl/route_linux.go b/vendor/github.com/vishvananda/netlink/nl/route_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/nl/seg6_linux.go b/vendor/github.com/vishvananda/netlink/nl/seg6_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/nl/seg6local_linux.go b/vendor/github.com/vishvananda/netlink/nl/seg6local_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/nl/syscall.go b/vendor/github.com/vishvananda/netlink/nl/syscall.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/nl/tc_linux.go b/vendor/github.com/vishvananda/netlink/nl/tc_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/nl/xfrm_linux.go b/vendor/github.com/vishvananda/netlink/nl/xfrm_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/nl/xfrm_monitor_linux.go b/vendor/github.com/vishvananda/netlink/nl/xfrm_monitor_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/nl/xfrm_policy_linux.go b/vendor/github.com/vishvananda/netlink/nl/xfrm_policy_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/nl/xfrm_state_linux.go b/vendor/github.com/vishvananda/netlink/nl/xfrm_state_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/order.go b/vendor/github.com/vishvananda/netlink/order.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/protinfo.go b/vendor/github.com/vishvananda/netlink/protinfo.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/protinfo_linux.go b/vendor/github.com/vishvananda/netlink/protinfo_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/qdisc.go b/vendor/github.com/vishvananda/netlink/qdisc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/qdisc_linux.go b/vendor/github.com/vishvananda/netlink/qdisc_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/rdma_link_linux.go b/vendor/github.com/vishvananda/netlink/rdma_link_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/route.go b/vendor/github.com/vishvananda/netlink/route.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/route_linux.go b/vendor/github.com/vishvananda/netlink/route_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/route_unspecified.go b/vendor/github.com/vishvananda/netlink/route_unspecified.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/rule.go b/vendor/github.com/vishvananda/netlink/rule.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/rule_linux.go b/vendor/github.com/vishvananda/netlink/rule_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/socket.go b/vendor/github.com/vishvananda/netlink/socket.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/socket_linux.go b/vendor/github.com/vishvananda/netlink/socket_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/xfrm.go b/vendor/github.com/vishvananda/netlink/xfrm.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/xfrm_monitor_linux.go b/vendor/github.com/vishvananda/netlink/xfrm_monitor_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/xfrm_policy.go b/vendor/github.com/vishvananda/netlink/xfrm_policy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/xfrm_policy_linux.go b/vendor/github.com/vishvananda/netlink/xfrm_policy_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/xfrm_state.go b/vendor/github.com/vishvananda/netlink/xfrm_state.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netlink/xfrm_state_linux.go b/vendor/github.com/vishvananda/netlink/xfrm_state_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netns/LICENSE b/vendor/github.com/vishvananda/netns/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netns/README.md b/vendor/github.com/vishvananda/netns/README.md -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netns/netns.go b/vendor/github.com/vishvananda/netns/netns.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netns/netns_linux.go b/vendor/github.com/vishvananda/netns/netns_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/github.com/vishvananda/netns/netns_unspecified.go b/vendor/github.com/vishvananda/netns/netns_unspecified.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/crypto/AUTHORS b/vendor/golang.org/x/crypto/AUTHORS -deleted file mode 100644 -index 2b00ddb..0000000 ---- a/vendor/golang.org/x/crypto/AUTHORS -+++ /dev/null -@@ -1,3 +0,0 @@ --# This source code refers to The Go Authors for copyright purposes. --# The master list of authors is in the main Go distribution, --# visible at https://tip.golang.org/AUTHORS. -diff --git a/vendor/golang.org/x/crypto/CONTRIBUTORS b/vendor/golang.org/x/crypto/CONTRIBUTORS -deleted file mode 100644 -index 1fbd3e9..0000000 ---- a/vendor/golang.org/x/crypto/CONTRIBUTORS -+++ /dev/null -@@ -1,3 +0,0 @@ --# This source code was written by the Go contributors. --# The master list of contributors is in the main Go distribution, --# visible at https://tip.golang.org/CONTRIBUTORS. -diff --git a/vendor/golang.org/x/crypto/LICENSE b/vendor/golang.org/x/crypto/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/crypto/PATENTS b/vendor/golang.org/x/crypto/PATENTS -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/crypto/ssh/terminal/terminal.go b/vendor/golang.org/x/crypto/ssh/terminal/terminal.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/LICENSE b/vendor/golang.org/x/net/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/PATENTS b/vendor/golang.org/x/net/PATENTS -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/bpf/asm.go b/vendor/golang.org/x/net/bpf/asm.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/bpf/constants.go b/vendor/golang.org/x/net/bpf/constants.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/bpf/doc.go b/vendor/golang.org/x/net/bpf/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/bpf/instructions.go b/vendor/golang.org/x/net/bpf/instructions.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/bpf/setter.go b/vendor/golang.org/x/net/bpf/setter.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/bpf/vm.go b/vendor/golang.org/x/net/bpf/vm.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/bpf/vm_instructions.go b/vendor/golang.org/x/net/bpf/vm_instructions.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/context/context.go b/vendor/golang.org/x/net/context/context.go -old mode 100644 -new mode 100755 -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 37dc0cf..0000000 ---- a/vendor/golang.org/x/net/context/ctxhttp/ctxhttp.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 ctxhttp provides helper functions for performing context-aware HTTP requests. --package ctxhttp // import "golang.org/x/net/context/ctxhttp" -- --import ( -- "context" -- "io" -- "net/http" -- "net/url" -- "strings" --) -- --// 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/go17.go b/vendor/golang.org/x/net/context/go17.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/context/go19.go b/vendor/golang.org/x/net/context/go19.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/context/pre_go17.go b/vendor/golang.org/x/net/context/pre_go17.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/context/pre_go19.go b/vendor/golang.org/x/net/context/pre_go19.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/http/httpguts/guts.go b/vendor/golang.org/x/net/http/httpguts/guts.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/http/httpguts/httplex.go b/vendor/golang.org/x/net/http/httpguts/httplex.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/http2/.gitignore b/vendor/golang.org/x/net/http2/.gitignore -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/http2/Dockerfile b/vendor/golang.org/x/net/http2/Dockerfile -deleted file mode 100644 -index 8512245..0000000 ---- a/vendor/golang.org/x/net/http2/Dockerfile -+++ /dev/null -@@ -1,51 +0,0 @@ --# --# This Dockerfile builds a recent curl with HTTP/2 client support, using --# a recent nghttp2 build. --# --# See the Makefile for how to tag it. If Docker and that image is found, the --# Go tests use this curl binary for integration tests. --# -- --FROM ubuntu:trusty -- --RUN apt-get update && \ -- apt-get upgrade -y && \ -- apt-get install -y git-core build-essential wget -- --RUN apt-get install -y --no-install-recommends \ -- autotools-dev libtool pkg-config zlib1g-dev \ -- libcunit1-dev libssl-dev libxml2-dev libevent-dev \ -- automake autoconf -- --# The list of packages nghttp2 recommends for h2load: --RUN apt-get install -y --no-install-recommends make binutils \ -- autoconf automake autotools-dev \ -- libtool pkg-config zlib1g-dev libcunit1-dev libssl-dev libxml2-dev \ -- libev-dev libevent-dev libjansson-dev libjemalloc-dev \ -- cython python3.4-dev python-setuptools -- --# Note: setting NGHTTP2_VER before the git clone, so an old git clone isn't cached: --ENV NGHTTP2_VER 895da9a --RUN cd /root && git clone https://github.com/tatsuhiro-t/nghttp2.git -- --WORKDIR /root/nghttp2 --RUN git reset --hard $NGHTTP2_VER --RUN autoreconf -i --RUN automake --RUN autoconf --RUN ./configure --RUN make --RUN make install -- --WORKDIR /root --RUN wget https://curl.se/download/curl-7.45.0.tar.gz --RUN tar -zxvf curl-7.45.0.tar.gz --WORKDIR /root/curl-7.45.0 --RUN ./configure --with-ssl --with-nghttp2=/usr/local --RUN make --RUN make install --RUN ldconfig -- --CMD ["-h"] --ENTRYPOINT ["/usr/local/bin/curl"] -- -diff --git a/vendor/golang.org/x/net/http2/Makefile b/vendor/golang.org/x/net/http2/Makefile -deleted file mode 100644 -index 55fd826..0000000 ---- a/vendor/golang.org/x/net/http2/Makefile -+++ /dev/null -@@ -1,3 +0,0 @@ --curlimage: -- docker build -t gohttp2/curl . -- -diff --git a/vendor/golang.org/x/net/http2/ascii.go b/vendor/golang.org/x/net/http2/ascii.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/http2/ciphers.go b/vendor/golang.org/x/net/http2/ciphers.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/http2/client_conn_pool.go b/vendor/golang.org/x/net/http2/client_conn_pool.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/http2/databuffer.go b/vendor/golang.org/x/net/http2/databuffer.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/http2/errors.go b/vendor/golang.org/x/net/http2/errors.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/http2/flow.go b/vendor/golang.org/x/net/http2/flow.go -old mode 100644 -new mode 100755 -index b51f0e0..b7dbd18 ---- a/vendor/golang.org/x/net/http2/flow.go -+++ b/vendor/golang.org/x/net/http2/flow.go -@@ -6,23 +6,91 @@ - - package http2 - --// flow is the flow control window's size. --type flow struct { -+// inflowMinRefresh is the minimum number of bytes we'll send for a -+// flow control window update. -+const inflowMinRefresh = 4 << 10 -+ -+// inflow accounts for an inbound flow control window. -+// It tracks both the latest window sent to the peer (used for enforcement) -+// and the accumulated unsent window. -+type inflow struct { -+ avail int32 -+ unsent int32 -+} -+ -+// init sets the initial window. -+func (f *inflow) init(n int32) { -+ f.avail = n -+} -+ -+// add adds n bytes to the window, with a maximum window size of max, -+// indicating that the peer can now send us more data. -+// For example, the user read from a {Request,Response} body and consumed -+// some of the buffered data, so the peer can now send more. -+// It returns the number of bytes to send in a WINDOW_UPDATE frame to the peer. -+// Window updates are accumulated and sent when the unsent capacity -+// is at least inflowMinRefresh or will at least double the peer's available window. -+func (f *inflow) add(n int) (connAdd int32) { -+ if n < 0 { -+ panic("negative update") -+ } -+ unsent := int64(f.unsent) + int64(n) -+ // "A sender MUST NOT allow a flow-control window to exceed 2^31-1 octets." -+ // RFC 7540 Section 6.9.1. -+ const maxWindow = 1<<31 - 1 -+ if unsent+int64(f.avail) > maxWindow { -+ panic("flow control update exceeds maximum window size") -+ } -+ f.unsent = int32(unsent) -+ if f.unsent < inflowMinRefresh && f.unsent < f.avail { -+ // If there aren't at least inflowMinRefresh bytes of window to send, -+ // and this update won't at least double the window, buffer the update for later. -+ return 0 -+ } -+ f.avail += f.unsent -+ f.unsent = 0 -+ return int32(unsent) -+} -+ -+// take attempts to take n bytes from the peer's flow control window. -+// It reports whether the window has available capacity. -+func (f *inflow) take(n uint32) bool { -+ if n > uint32(f.avail) { -+ return false -+ } -+ f.avail -= int32(n) -+ return true -+} -+ -+// takeInflows attempts to take n bytes from two inflows, -+// typically connection-level and stream-level flows. -+// It reports whether both windows have available capacity. -+func takeInflows(f1, f2 *inflow, n uint32) bool { -+ if n > uint32(f1.avail) || n > uint32(f2.avail) { -+ return false -+ } -+ f1.avail -= int32(n) -+ f2.avail -= int32(n) -+ return true -+} -+ -+// outflow is the outbound flow control window's size. -+type outflow struct { - _ incomparable - - // n is the number of DATA bytes we're allowed to send. -- // A flow is kept both on a conn and a per-stream. -+ // An outflow is kept both on a conn and a per-stream. - n int32 - -- // conn points to the shared connection-level flow that is -- // shared by all streams on that conn. It is nil for the flow -+ // conn points to the shared connection-level outflow that is -+ // shared by all streams on that conn. It is nil for the outflow - // that's on the conn directly. -- conn *flow -+ conn *outflow - } - --func (f *flow) setConnFlow(cf *flow) { f.conn = cf } -+func (f *outflow) setConnFlow(cf *outflow) { f.conn = cf } - --func (f *flow) available() int32 { -+func (f *outflow) available() int32 { - n := f.n - if f.conn != nil && f.conn.n < n { - n = f.conn.n -@@ -30,7 +98,7 @@ func (f *flow) available() int32 { - return n - } - --func (f *flow) take(n int32) { -+func (f *outflow) take(n int32) { - if n > f.available() { - panic("internal error: took too much") - } -@@ -42,7 +110,7 @@ func (f *flow) take(n int32) { - - // add adds n bytes (positive or negative) to the flow control window. - // It returns false if the sum would exceed 2^31-1. --func (f *flow) add(n int32) bool { -+func (f *outflow) add(n int32) bool { - sum := f.n + n - if (sum > n) == (f.n > 0) { - f.n = sum -diff --git a/vendor/golang.org/x/net/http2/frame.go b/vendor/golang.org/x/net/http2/frame.go -old mode 100644 -new mode 100755 -index 184ac45..c1f6b90 ---- a/vendor/golang.org/x/net/http2/frame.go -+++ b/vendor/golang.org/x/net/http2/frame.go -@@ -662,6 +662,15 @@ func (f *Framer) WriteData(streamID uint32, endStream bool, data []byte) error { - // It is the caller's responsibility not to violate the maximum frame size - // and to not call other Write methods concurrently. - func (f *Framer) WriteDataPadded(streamID uint32, endStream bool, data, pad []byte) error { -+ if err := f.startWriteDataPadded(streamID, endStream, data, pad); err != nil { -+ return err -+ } -+ return f.endWrite() -+} -+ -+// startWriteDataPadded is WriteDataPadded, but only writes the frame to the Framer's internal buffer. -+// The caller should call endWrite to flush the frame to the underlying writer. -+func (f *Framer) startWriteDataPadded(streamID uint32, endStream bool, data, pad []byte) error { - if !validStreamID(streamID) && !f.AllowIllegalWrites { - return errStreamID - } -@@ -691,7 +700,7 @@ func (f *Framer) WriteDataPadded(streamID uint32, endStream bool, data, pad []by - } - f.wbuf = append(f.wbuf, data...) - f.wbuf = append(f.wbuf, pad...) -- return f.endWrite() -+ return nil - } - - // A SettingsFrame conveys configuration parameters that affect how -diff --git a/vendor/golang.org/x/net/http2/go111.go b/vendor/golang.org/x/net/http2/go111.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/http2/go115.go b/vendor/golang.org/x/net/http2/go115.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/http2/go118.go b/vendor/golang.org/x/net/http2/go118.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/http2/gotrack.go b/vendor/golang.org/x/net/http2/gotrack.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/http2/headermap.go b/vendor/golang.org/x/net/http2/headermap.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/http2/hpack/encode.go b/vendor/golang.org/x/net/http2/hpack/encode.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/http2/hpack/hpack.go b/vendor/golang.org/x/net/http2/hpack/hpack.go -old mode 100644 -new mode 100755 -index ebdfbee..7a1d976 ---- a/vendor/golang.org/x/net/http2/hpack/hpack.go -+++ b/vendor/golang.org/x/net/http2/hpack/hpack.go -@@ -211,7 +211,7 @@ func (d *Decoder) at(i uint64) (hf HeaderField, ok bool) { - return dt.ents[dt.len()-(int(i)-staticTable.len())], true - } - --// Decode decodes an entire block. -+// DecodeFull decodes an entire block. - // - // TODO: remove this method and make it incremental later? This is - // easier for debugging now. -@@ -359,6 +359,7 @@ func (d *Decoder) parseFieldLiteral(n uint8, it indexType) error { - - var hf HeaderField - wantStr := d.emitEnabled || it.indexed() -+ var undecodedName undecodedString - if nameIdx > 0 { - ihf, ok := d.at(nameIdx) - if !ok { -@@ -366,15 +367,27 @@ func (d *Decoder) parseFieldLiteral(n uint8, it indexType) error { - } - hf.Name = ihf.Name - } else { -- hf.Name, buf, err = d.readString(buf, wantStr) -+ undecodedName, buf, err = d.readString(buf) - if err != nil { - return err - } - } -- hf.Value, buf, err = d.readString(buf, wantStr) -+ undecodedValue, buf, err := d.readString(buf) - if err != nil { - return err - } -+ if wantStr { -+ if nameIdx <= 0 { -+ hf.Name, err = d.decodeString(undecodedName) -+ if err != nil { -+ return err -+ } -+ } -+ hf.Value, err = d.decodeString(undecodedValue) -+ if err != nil { -+ return err -+ } -+ } - d.buf = buf - if it.indexed() { - d.dynTab.add(hf) -@@ -459,46 +472,52 @@ func readVarInt(n byte, p []byte) (i uint64, remain []byte, err error) { - return 0, origP, errNeedMore - } - --// readString decodes an hpack string from p. -+// readString reads an hpack string from p. - // --// wantStr is whether s will be used. If false, decompression and --// []byte->string garbage are skipped if s will be ignored --// anyway. This does mean that huffman decoding errors for non-indexed --// strings past the MAX_HEADER_LIST_SIZE are ignored, but the server --// is returning an error anyway, and because they're not indexed, the error --// won't affect the decoding state. --func (d *Decoder) readString(p []byte, wantStr bool) (s string, remain []byte, err error) { -+// It returns a reference to the encoded string data to permit deferring decode costs -+// until after the caller verifies all data is present. -+func (d *Decoder) readString(p []byte) (u undecodedString, remain []byte, err error) { - if len(p) == 0 { -- return "", p, errNeedMore -+ return u, p, errNeedMore - } - isHuff := p[0]&128 != 0 - strLen, p, err := readVarInt(7, p) - if err != nil { -- return "", p, err -+ return u, p, err - } - if d.maxStrLen != 0 && strLen > uint64(d.maxStrLen) { -- return "", nil, ErrStringLength -+ // Returning an error here means Huffman decoding errors -+ // for non-indexed strings past the maximum string length -+ // are ignored, but the server is returning an error anyway -+ // and because the string is not indexed the error will not -+ // affect the decoding state. -+ return u, nil, ErrStringLength - } - if uint64(len(p)) < strLen { -- return "", p, errNeedMore -- } -- if !isHuff { -- if wantStr { -- s = string(p[:strLen]) -- } -- return s, p[strLen:], nil -+ return u, p, errNeedMore - } -+ u.isHuff = isHuff -+ u.b = p[:strLen] -+ return u, p[strLen:], nil -+} - -- if wantStr { -- buf := bufPool.Get().(*bytes.Buffer) -- buf.Reset() // don't trust others -- defer bufPool.Put(buf) -- if err := huffmanDecode(buf, d.maxStrLen, p[:strLen]); err != nil { -- buf.Reset() -- return "", nil, err -- } -+type undecodedString struct { -+ isHuff bool -+ b []byte -+} -+ -+func (d *Decoder) decodeString(u undecodedString) (string, error) { -+ if !u.isHuff { -+ return string(u.b), nil -+ } -+ buf := bufPool.Get().(*bytes.Buffer) -+ buf.Reset() // don't trust others -+ var s string -+ err := huffmanDecode(buf, d.maxStrLen, u.b) -+ if err == nil { - s = buf.String() -- buf.Reset() // be nice to GC - } -- return s, p[strLen:], nil -+ buf.Reset() // be nice to GC -+ bufPool.Put(buf) -+ return s, err - } -diff --git a/vendor/golang.org/x/net/http2/hpack/huffman.go b/vendor/golang.org/x/net/http2/hpack/huffman.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/http2/hpack/static_table.go b/vendor/golang.org/x/net/http2/hpack/static_table.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/http2/hpack/tables.go b/vendor/golang.org/x/net/http2/hpack/tables.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/http2/http2.go b/vendor/golang.org/x/net/http2/http2.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/http2/not_go111.go b/vendor/golang.org/x/net/http2/not_go111.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/http2/not_go115.go b/vendor/golang.org/x/net/http2/not_go115.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/http2/not_go118.go b/vendor/golang.org/x/net/http2/not_go118.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/http2/pipe.go b/vendor/golang.org/x/net/http2/pipe.go -old mode 100644 -new mode 100755 -index c15b8a7..684d984 ---- a/vendor/golang.org/x/net/http2/pipe.go -+++ b/vendor/golang.org/x/net/http2/pipe.go -@@ -88,13 +88,9 @@ func (p *pipe) Write(d []byte) (n int, err error) { - p.c.L = &p.mu - } - defer p.c.Signal() -- if p.err != nil { -+ if p.err != nil || p.breakErr != nil { - return 0, errClosedPipeWrite - } -- if p.breakErr != nil { -- p.unread += len(d) -- return len(d), nil // discard when there is no reader -- } - return p.b.Write(d) - } - -diff --git a/vendor/golang.org/x/net/http2/server.go b/vendor/golang.org/x/net/http2/server.go -old mode 100644 -new mode 100755 -index 4eb7617..02c88b6 ---- a/vendor/golang.org/x/net/http2/server.go -+++ b/vendor/golang.org/x/net/http2/server.go -@@ -441,14 +441,14 @@ func (s *Server) ServeConn(c net.Conn, opts *ServeConnOpts) { - if s.NewWriteScheduler != nil { - sc.writeSched = s.NewWriteScheduler() - } else { -- sc.writeSched = NewPriorityWriteScheduler(nil) -+ sc.writeSched = newRoundRobinWriteScheduler() - } - - // These start at the RFC-specified defaults. If there is a higher - // configured value for inflow, that will be updated when we send a - // WINDOW_UPDATE shortly after sending SETTINGS. - sc.flow.add(initialWindowSize) -- sc.inflow.add(initialWindowSize) -+ sc.inflow.init(initialWindowSize) - sc.hpackEncoder = hpack.NewEncoder(&sc.headerWriteBuf) - sc.hpackEncoder.SetMaxDynamicTableSizeLimit(s.maxEncoderHeaderTableSize()) - -@@ -563,8 +563,8 @@ type serverConn struct { - wroteFrameCh chan frameWriteResult // from writeFrameAsync -> serve, tickles more frame writes - bodyReadCh chan bodyReadMsg // from handlers -> serve - serveMsgCh chan interface{} // misc messages & code to send to / run on the serve loop -- flow flow // conn-wide (not stream-specific) outbound flow control -- inflow flow // conn-wide inbound flow control -+ flow outflow // conn-wide (not stream-specific) outbound flow control -+ inflow inflow // conn-wide inbound flow control - tlsState *tls.ConnectionState // shared by all handlers, like net/http - remoteAddrStr string - writeSched WriteScheduler -@@ -581,9 +581,11 @@ type serverConn struct { - advMaxStreams uint32 // our SETTINGS_MAX_CONCURRENT_STREAMS advertised the client - curClientStreams uint32 // number of open streams initiated by the client - curPushedStreams uint32 // number of open streams initiated by server push -+ curHandlers uint32 // number of running handler goroutines - maxClientStreamID uint32 // max ever seen from client (odd), or 0 if there have been no client requests - maxPushPromiseID uint32 // ID of the last push promise (even), or 0 if there have been no pushes - streams map[uint32]*stream -+ unstartedHandlers []unstartedHandler - initialStreamSendWindowSize int32 - maxFrameSize int32 - peerMaxHeaderListSize uint32 // zero means unknown (default) -@@ -641,10 +643,10 @@ type stream struct { - cancelCtx func() - - // owned by serverConn's serve loop: -- bodyBytes int64 // body bytes seen so far -- declBodyBytes int64 // or -1 if undeclared -- flow flow // limits writing from Handler to client -- inflow flow // what the client is allowed to POST/etc to us -+ bodyBytes int64 // body bytes seen so far -+ declBodyBytes int64 // or -1 if undeclared -+ flow outflow // limits writing from Handler to client -+ inflow inflow // what the client is allowed to POST/etc to us - state streamState - resetQueued bool // RST_STREAM queued for write; set by sc.resetStream - gotTrailerHeader bool // HEADER frame for trailers was seen -@@ -843,8 +845,13 @@ type frameWriteResult struct { - // and then reports when it's done. - // At most one goroutine can be running writeFrameAsync at a time per - // serverConn. --func (sc *serverConn) writeFrameAsync(wr FrameWriteRequest) { -- err := wr.write.writeFrame(sc) -+func (sc *serverConn) writeFrameAsync(wr FrameWriteRequest, wd *writeData) { -+ var err error -+ if wd == nil { -+ err = wr.write.writeFrame(sc) -+ } else { -+ err = sc.framer.endWrite() -+ } - sc.wroteFrameCh <- frameWriteResult{wr: wr, err: err} - } - -@@ -976,6 +983,8 @@ func (sc *serverConn) serve() { - return - case gracefulShutdownMsg: - sc.startGracefulShutdownInternal() -+ case handlerDoneMsg: -+ sc.handlerDone() - default: - panic("unknown timer") - } -@@ -1007,14 +1016,6 @@ func (sc *serverConn) serve() { - } - } - --func (sc *serverConn) awaitGracefulShutdown(sharedCh <-chan struct{}, privateCh chan struct{}) { -- select { -- case <-sc.doneServing: -- case <-sharedCh: -- close(privateCh) -- } --} -- - type serverMessage int - - // Message values sent to serveMsgCh. -@@ -1023,6 +1024,7 @@ var ( - idleTimerMsg = new(serverMessage) - shutdownTimerMsg = new(serverMessage) - gracefulShutdownMsg = new(serverMessage) -+ handlerDoneMsg = new(serverMessage) - ) - - func (sc *serverConn) onSettingsTimer() { sc.sendServeMsg(settingsTimerMsg) } -@@ -1251,9 +1253,16 @@ func (sc *serverConn) startFrameWrite(wr FrameWriteRequest) { - sc.writingFrameAsync = false - err := wr.write.writeFrame(sc) - sc.wroteFrame(frameWriteResult{wr: wr, err: err}) -+ } else if wd, ok := wr.write.(*writeData); ok { -+ // Encode the frame in the serve goroutine, to ensure we don't have -+ // any lingering asynchronous references to data passed to Write. -+ // See https://go.dev/issue/58446. -+ sc.framer.startWriteDataPadded(wd.streamID, wd.endStream, wd.p, nil) -+ sc.writingFrameAsync = true -+ go sc.writeFrameAsync(wr, wd) - } else { - sc.writingFrameAsync = true -- go sc.writeFrameAsync(wr) -+ go sc.writeFrameAsync(wr, nil) - } - } - -@@ -1503,7 +1512,7 @@ func (sc *serverConn) processFrame(f Frame) error { - if sc.inGoAway && (sc.goAwayCode != ErrCodeNo || f.Header().StreamID > sc.maxClientStreamID) { - - if f, ok := f.(*DataFrame); ok { -- if sc.inflow.available() < int32(f.Length) { -+ if !sc.inflow.take(f.Length) { - return sc.countError("data_flow", streamError(f.Header().StreamID, ErrCodeFlowControl)) - } - sc.sendWindowUpdate(nil, int(f.Length)) // conn-level -@@ -1775,14 +1784,9 @@ func (sc *serverConn) processData(f *DataFrame) error { - // But still enforce their connection-level flow control, - // and return any flow control bytes since we're not going - // to consume them. -- if sc.inflow.available() < int32(f.Length) { -+ if !sc.inflow.take(f.Length) { - return sc.countError("data_flow", streamError(id, ErrCodeFlowControl)) - } -- // Deduct the flow control from inflow, since we're -- // going to immediately add it back in -- // sendWindowUpdate, which also schedules sending the -- // frames. -- sc.inflow.take(int32(f.Length)) - sc.sendWindowUpdate(nil, int(f.Length)) // conn-level - - if st != nil && st.resetQueued { -@@ -1797,10 +1801,9 @@ func (sc *serverConn) processData(f *DataFrame) error { - - // Sender sending more than they'd declared? - if st.declBodyBytes != -1 && st.bodyBytes+int64(len(data)) > st.declBodyBytes { -- if sc.inflow.available() < int32(f.Length) { -+ if !sc.inflow.take(f.Length) { - return sc.countError("data_flow", streamError(id, ErrCodeFlowControl)) - } -- sc.inflow.take(int32(f.Length)) - sc.sendWindowUpdate(nil, int(f.Length)) // conn-level - - st.body.CloseWithError(fmt.Errorf("sender tried to send more than declared Content-Length of %d bytes", st.declBodyBytes)) -@@ -1811,29 +1814,33 @@ func (sc *serverConn) processData(f *DataFrame) error { - } - if f.Length > 0 { - // Check whether the client has flow control quota. -- if st.inflow.available() < int32(f.Length) { -+ if !takeInflows(&sc.inflow, &st.inflow, f.Length) { - return sc.countError("flow_on_data_length", streamError(id, ErrCodeFlowControl)) - } -- st.inflow.take(int32(f.Length)) - - if len(data) > 0 { -+ st.bodyBytes += int64(len(data)) - wrote, err := st.body.Write(data) - if err != nil { -+ // The handler has closed the request body. -+ // Return the connection-level flow control for the discarded data, -+ // but not the stream-level flow control. - sc.sendWindowUpdate(nil, int(f.Length)-wrote) -- return sc.countError("body_write_err", streamError(id, ErrCodeStreamClosed)) -+ return nil - } - if wrote != len(data) { - panic("internal error: bad Writer") - } -- st.bodyBytes += int64(len(data)) - } - - // Return any padded flow control now, since we won't - // refund it later on body reads. -- if pad := int32(f.Length) - int32(len(data)); pad > 0 { -- sc.sendWindowUpdate32(nil, pad) -- sc.sendWindowUpdate32(st, pad) -- } -+ // Call sendWindowUpdate even if there is no padding, -+ // to return buffered flow control credit if the sent -+ // window has shrunk. -+ pad := int32(f.Length) - int32(len(data)) -+ sc.sendWindowUpdate32(nil, pad) -+ sc.sendWindowUpdate32(st, pad) - } - if f.StreamEnded() { - st.endStream() -@@ -1890,9 +1897,11 @@ func (st *stream) copyTrailersToHandlerRequest() { - // onReadTimeout is run on its own goroutine (from time.AfterFunc) - // when the stream's ReadTimeout has fired. - func (st *stream) onReadTimeout() { -- // Wrap the ErrDeadlineExceeded to avoid callers depending on us -- // returning the bare error. -- st.body.CloseWithError(fmt.Errorf("%w", os.ErrDeadlineExceeded)) -+ if st.body != nil { -+ // Wrap the ErrDeadlineExceeded to avoid callers depending on us -+ // returning the bare error. -+ st.body.CloseWithError(fmt.Errorf("%w", os.ErrDeadlineExceeded)) -+ } - } - - // onWriteTimeout is run on its own goroutine (from time.AfterFunc) -@@ -2010,13 +2019,10 @@ func (sc *serverConn) processHeaders(f *MetaHeadersFrame) error { - // (in Go 1.8), though. That's a more sane option anyway. - if sc.hs.ReadTimeout != 0 { - sc.conn.SetReadDeadline(time.Time{}) -- if st.body != nil { -- st.readDeadline = time.AfterFunc(sc.hs.ReadTimeout, st.onReadTimeout) -- } -+ st.readDeadline = time.AfterFunc(sc.hs.ReadTimeout, st.onReadTimeout) - } - -- go sc.runHandler(rw, req, handler) -- return nil -+ return sc.scheduleHandler(id, rw, req, handler) - } - - func (sc *serverConn) upgradeRequest(req *http.Request) { -@@ -2036,6 +2042,10 @@ func (sc *serverConn) upgradeRequest(req *http.Request) { - sc.conn.SetReadDeadline(time.Time{}) - } - -+ // This is the first request on the connection, -+ // so start the handler directly rather than going -+ // through scheduleHandler. -+ sc.curHandlers++ - go sc.runHandler(rw, req, sc.handler.ServeHTTP) - } - -@@ -2105,8 +2115,7 @@ func (sc *serverConn) newStream(id, pusherID uint32, state streamState) *stream - st.cw.Init() - st.flow.conn = &sc.flow // link to conn-level counter - st.flow.add(sc.initialStreamSendWindowSize) -- st.inflow.conn = &sc.inflow // link to conn-level counter -- st.inflow.add(sc.srv.initialStreamRecvWindowSize()) -+ st.inflow.init(sc.srv.initialStreamRecvWindowSize()) - if sc.hs.WriteTimeout != 0 { - st.writeDeadline = time.AfterFunc(sc.hs.WriteTimeout, st.onWriteTimeout) - } -@@ -2198,7 +2207,7 @@ func (sc *serverConn) newWriterAndRequestNoBody(st *stream, rp requestParam) (*r - tlsState = sc.tlsState - } - -- needsContinue := rp.header.Get("Expect") == "100-continue" -+ needsContinue := httpguts.HeaderValuesContainsToken(rp.header["Expect"], "100-continue") - if needsContinue { - rp.header.Del("Expect") - } -@@ -2277,8 +2286,62 @@ func (sc *serverConn) newResponseWriter(st *stream, req *http.Request) *response - return &responseWriter{rws: rws} - } - -+type unstartedHandler struct { -+ streamID uint32 -+ rw *responseWriter -+ req *http.Request -+ handler func(http.ResponseWriter, *http.Request) -+} -+ -+// scheduleHandler starts a handler goroutine, -+// or schedules one to start as soon as an existing handler finishes. -+func (sc *serverConn) scheduleHandler(streamID uint32, rw *responseWriter, req *http.Request, handler func(http.ResponseWriter, *http.Request)) error { -+ sc.serveG.check() -+ maxHandlers := sc.advMaxStreams -+ if sc.curHandlers < maxHandlers { -+ sc.curHandlers++ -+ go sc.runHandler(rw, req, handler) -+ return nil -+ } -+ if len(sc.unstartedHandlers) > int(4*sc.advMaxStreams) { -+ return sc.countError("too_many_early_resets", ConnectionError(ErrCodeEnhanceYourCalm)) -+ } -+ sc.unstartedHandlers = append(sc.unstartedHandlers, unstartedHandler{ -+ streamID: streamID, -+ rw: rw, -+ req: req, -+ handler: handler, -+ }) -+ return nil -+} -+ -+func (sc *serverConn) handlerDone() { -+ sc.serveG.check() -+ sc.curHandlers-- -+ i := 0 -+ maxHandlers := sc.advMaxStreams -+ for ; i < len(sc.unstartedHandlers); i++ { -+ u := sc.unstartedHandlers[i] -+ if sc.streams[u.streamID] == nil { -+ // This stream was reset before its goroutine had a chance to start. -+ continue -+ } -+ if sc.curHandlers >= maxHandlers { -+ break -+ } -+ sc.curHandlers++ -+ go sc.runHandler(u.rw, u.req, u.handler) -+ sc.unstartedHandlers[i] = unstartedHandler{} // don't retain references -+ } -+ sc.unstartedHandlers = sc.unstartedHandlers[i:] -+ if len(sc.unstartedHandlers) == 0 { -+ sc.unstartedHandlers = nil -+ } -+} -+ - // Run on its own goroutine. - func (sc *serverConn) runHandler(rw *responseWriter, req *http.Request, handler func(http.ResponseWriter, *http.Request)) { -+ defer sc.sendServeMsg(handlerDoneMsg) - didPanic := true - defer func() { - rw.rws.stream.cancelCtx() -@@ -2388,47 +2451,28 @@ func (sc *serverConn) noteBodyRead(st *stream, n int) { - } - - // st may be nil for conn-level --func (sc *serverConn) sendWindowUpdate(st *stream, n int) { -- sc.serveG.check() -- // "The legal range for the increment to the flow control -- // window is 1 to 2^31-1 (2,147,483,647) octets." -- // A Go Read call on 64-bit machines could in theory read -- // a larger Read than this. Very unlikely, but we handle it here -- // rather than elsewhere for now. -- const maxUint31 = 1<<31 - 1 -- for n > maxUint31 { -- sc.sendWindowUpdate32(st, maxUint31) -- n -= maxUint31 -- } -- sc.sendWindowUpdate32(st, int32(n)) -+func (sc *serverConn) sendWindowUpdate32(st *stream, n int32) { -+ sc.sendWindowUpdate(st, int(n)) - } - - // st may be nil for conn-level --func (sc *serverConn) sendWindowUpdate32(st *stream, n int32) { -+func (sc *serverConn) sendWindowUpdate(st *stream, n int) { - sc.serveG.check() -- if n == 0 { -- return -- } -- if n < 0 { -- panic("negative update") -- } - var streamID uint32 -- if st != nil { -+ var send int32 -+ if st == nil { -+ send = sc.inflow.add(n) -+ } else { - streamID = st.id -+ send = st.inflow.add(n) -+ } -+ if send == 0 { -+ return - } - sc.writeFrame(FrameWriteRequest{ -- write: writeWindowUpdate{streamID: streamID, n: uint32(n)}, -+ write: writeWindowUpdate{streamID: streamID, n: uint32(send)}, - stream: st, - }) -- var ok bool -- if st == nil { -- ok = sc.inflow.add(n) -- } else { -- ok = st.inflow.add(n) -- } -- if !ok { -- panic("internal error; sent too many window updates without decrements?") -- } - } - - // requestBody is the Handler's Request.Body type. -@@ -2439,7 +2483,7 @@ type requestBody struct { - conn *serverConn - closeOnce sync.Once // for use by Close only - sawEOF bool // for use by Read only -- pipe *pipe // non-nil if we have a HTTP entity message body -+ pipe *pipe // non-nil if we have an HTTP entity message body - needsContinue bool // need to send a 100-continue - } - -@@ -2579,7 +2623,8 @@ func (rws *responseWriterState) writeChunk(p []byte) (n int, err error) { - clen = "" - } - } -- if clen == "" && rws.handlerDone && bodyAllowedForStatus(rws.status) && (len(p) > 0 || !isHeadResp) { -+ _, hasContentLength := rws.snapHeader["Content-Length"] -+ if !hasContentLength && clen == "" && rws.handlerDone && bodyAllowedForStatus(rws.status) && (len(p) > 0 || !isHeadResp) { - clen = strconv.Itoa(len(p)) - } - _, hasContentType := rws.snapHeader["Content-Type"] -@@ -2784,7 +2829,7 @@ func (w *responseWriter) FlushError() error { - err = rws.bw.Flush() - } else { - // The bufio.Writer won't call chunkWriter.Write -- // (writeChunk with zero bytes, so we have to do it -+ // (writeChunk with zero bytes), so we have to do it - // ourselves to force the HTTP response header and/or - // final DATA frame (with END_STREAM) to be sent. - _, err = chunkWriter{rws}.Write(nil) -diff --git a/vendor/golang.org/x/net/http2/transport.go b/vendor/golang.org/x/net/http2/transport.go -old mode 100644 -new mode 100755 -index 30f706e..4515b22 ---- a/vendor/golang.org/x/net/http2/transport.go -+++ b/vendor/golang.org/x/net/http2/transport.go -@@ -19,6 +19,7 @@ import ( - "io/fs" - "log" - "math" -+ "math/bits" - mathrand "math/rand" - "net" - "net/http" -@@ -47,10 +48,6 @@ const ( - // we buffer per stream. - transportDefaultStreamFlow = 4 << 20 - -- // transportDefaultStreamMinRefresh is the minimum number of bytes we'll send -- // a stream-level WINDOW_UPDATE for at a time. -- transportDefaultStreamMinRefresh = 4 << 10 -- - defaultUserAgent = "Go-http-client/2.0" - - // initialMaxConcurrentStreams is a connections maxConcurrentStreams until -@@ -294,8 +291,7 @@ func (t *Transport) initConnPool() { - // HTTP/2 server. - type ClientConn struct { - t *Transport -- tconn net.Conn // usually *tls.Conn, except specialized impls -- tconnClosed bool -+ tconn net.Conn // usually *tls.Conn, except specialized impls - tlsState *tls.ConnectionState // nil only for specialized impls - reused uint32 // whether conn is being reused; atomic - singleUse bool // whether being used for a single http.Request -@@ -310,8 +306,8 @@ type ClientConn struct { - - mu sync.Mutex // guards following - cond *sync.Cond // hold mu; broadcast on flow/closed changes -- flow flow // our conn-level flow control quota (cs.flow is per stream) -- inflow flow // peer's conn-level flow control -+ flow outflow // our conn-level flow control quota (cs.outflow is per stream) -+ inflow inflow // peer's conn-level flow control - doNotReuse bool // whether conn is marked to not be reused for any future requests - closing bool - closed bool -@@ -376,10 +372,10 @@ type clientStream struct { - respHeaderRecv chan struct{} // closed when headers are received - res *http.Response // set if respHeaderRecv is closed - -- flow flow // guarded by cc.mu -- inflow flow // guarded by cc.mu -- bytesRemain int64 // -1 means unknown; owned by transportResponseBody.Read -- readErr error // sticky read error; owned by transportResponseBody.Read -+ flow outflow // guarded by cc.mu -+ inflow inflow // guarded by cc.mu -+ bytesRemain int64 // -1 means unknown; owned by transportResponseBody.Read -+ readErr error // sticky read error; owned by transportResponseBody.Read - - reqBody io.ReadCloser - reqBodyContentLength int64 // -1 means unknown -@@ -522,11 +518,14 @@ func (t *Transport) RoundTrip(req *http.Request) (*http.Response, error) { - func authorityAddr(scheme string, authority string) (addr string) { - host, port, err := net.SplitHostPort(authority) - if err != nil { // authority didn't have a port -+ host = authority -+ port = "" -+ } -+ if port == "" { // authority's port was empty - port = "443" - if scheme == "http" { - port = "80" - } -- host = authority - } - if a, err := idna.ToASCII(host); err == nil { - host = a -@@ -564,10 +563,11 @@ func (t *Transport) RoundTripOpt(req *http.Request, opt RoundTripOpt) (*http.Res - traceGotConn(req, cc, reused) - res, err := cc.RoundTrip(req) - if err != nil && retry <= 6 { -+ roundTripErr := err - if req, err = shouldRetryRequest(req, err); err == nil { - // After the first retry, do exponential backoff with 10% jitter. - if retry == 0 { -- t.vlogf("RoundTrip retrying after failure: %v", err) -+ t.vlogf("RoundTrip retrying after failure: %v", roundTripErr) - continue - } - backoff := float64(uint(1) << (uint(retry) - 1)) -@@ -576,7 +576,7 @@ func (t *Transport) RoundTripOpt(req *http.Request, opt RoundTripOpt) (*http.Res - timer := backoffNewTimer(d) - select { - case <-timer.C: -- t.vlogf("RoundTrip retrying after failure: %v", err) -+ t.vlogf("RoundTrip retrying after failure: %v", roundTripErr) - continue - case <-req.Context().Done(): - timer.Stop() -@@ -811,7 +811,7 @@ func (t *Transport) newClientConn(c net.Conn, singleUse bool) (*ClientConn, erro - cc.bw.Write(clientPreface) - cc.fr.WriteSettings(initialSettings...) - cc.fr.WriteWindowUpdate(0, transportDefaultConnFlow) -- cc.inflow.add(transportDefaultConnFlow + initialWindowSize) -+ cc.inflow.init(transportDefaultConnFlow + initialWindowSize) - cc.bw.Flush() - if cc.werr != nil { - cc.Close() -@@ -1269,6 +1269,29 @@ func (cc *ClientConn) RoundTrip(req *http.Request) (*http.Response, error) { - return res, nil - } - -+ cancelRequest := func(cs *clientStream, err error) error { -+ cs.cc.mu.Lock() -+ bodyClosed := cs.reqBodyClosed -+ cs.cc.mu.Unlock() -+ // Wait for the request body to be closed. -+ // -+ // If nothing closed the body before now, abortStreamLocked -+ // will have started a goroutine to close it. -+ // -+ // Closing the body before returning avoids a race condition -+ // with net/http checking its readTrackingBody to see if the -+ // body was read from or closed. See golang/go#60041. -+ // -+ // The body is closed in a separate goroutine without the -+ // connection mutex held, but dropping the mutex before waiting -+ // will keep us from holding it indefinitely if the body -+ // close is slow for some reason. -+ if bodyClosed != nil { -+ <-bodyClosed -+ } -+ return err -+ } -+ - for { - select { - case <-cs.respHeaderRecv: -@@ -1288,10 +1311,10 @@ func (cc *ClientConn) RoundTrip(req *http.Request) (*http.Response, error) { - case <-ctx.Done(): - err := ctx.Err() - cs.abortStream(err) -- return nil, err -+ return nil, cancelRequest(cs, err) - case <-cs.reqCancel: - cs.abortStream(errRequestCanceled) -- return nil, errRequestCanceled -+ return nil, cancelRequest(cs, errRequestCanceled) - } - } - } -@@ -1573,7 +1596,7 @@ func (cs *clientStream) cleanupWriteRequest(err error) { - close(cs.donec) - } - --// awaitOpenSlotForStream waits until len(streams) < maxConcurrentStreams. -+// awaitOpenSlotForStreamLocked waits until len(streams) < maxConcurrentStreams. - // Must hold cc.mu. - func (cc *ClientConn) awaitOpenSlotForStreamLocked(cs *clientStream) error { - for { -@@ -1657,7 +1680,27 @@ func (cs *clientStream) frameScratchBufferLen(maxFrameSize int) int { - return int(n) // doesn't truncate; max is 512K - } - --var bufPool sync.Pool // of *[]byte -+// Seven bufPools manage different frame sizes. This helps to avoid scenarios where long-running -+// streaming requests using small frame sizes occupy large buffers initially allocated for prior -+// requests needing big buffers. The size ranges are as follows: -+// {0 KB, 16 KB], {16 KB, 32 KB], {32 KB, 64 KB], {64 KB, 128 KB], {128 KB, 256 KB], -+// {256 KB, 512 KB], {512 KB, infinity} -+// In practice, the maximum scratch buffer size should not exceed 512 KB due to -+// frameScratchBufferLen(maxFrameSize), thus the "infinity pool" should never be used. -+// It exists mainly as a safety measure, for potential future increases in max buffer size. -+var bufPools [7]sync.Pool // of *[]byte -+func bufPoolIndex(size int) int { -+ if size <= 16384 { -+ return 0 -+ } -+ size -= 1 -+ bits := bits.Len(uint(size)) -+ index := bits - 14 -+ if index >= len(bufPools) { -+ return len(bufPools) - 1 -+ } -+ return index -+} - - func (cs *clientStream) writeRequestBody(req *http.Request) (err error) { - cc := cs.cc -@@ -1675,12 +1718,13 @@ func (cs *clientStream) writeRequestBody(req *http.Request) (err error) { - // Scratch buffer for reading into & writing from. - scratchLen := cs.frameScratchBufferLen(maxFrameSize) - var buf []byte -- if bp, ok := bufPool.Get().(*[]byte); ok && len(*bp) >= scratchLen { -- defer bufPool.Put(bp) -+ index := bufPoolIndex(scratchLen) -+ if bp, ok := bufPools[index].Get().(*[]byte); ok && len(*bp) >= scratchLen { -+ defer bufPools[index].Put(bp) - buf = *bp - } else { - buf = make([]byte, scratchLen) -- defer bufPool.Put(&buf) -+ defer bufPools[index].Put(&buf) - } - - var sawEOF bool -@@ -1848,6 +1892,9 @@ func (cc *ClientConn) encodeHeaders(req *http.Request, addGzipHeader bool, trail - if err != nil { - return nil, err - } -+ if !httpguts.ValidHostHeader(host) { -+ return nil, errors.New("http2: invalid Host header") -+ } - - var path string - if req.Method != "CONNECT" { -@@ -1884,7 +1931,7 @@ func (cc *ClientConn) encodeHeaders(req *http.Request, addGzipHeader bool, trail - // 8.1.2.3 Request Pseudo-Header Fields - // The :path pseudo-header field includes the path and query parts of the - // target URI (the path-absolute production and optionally a '?' character -- // followed by the query production (see Sections 3.3 and 3.4 of -+ // followed by the query production, see Sections 3.3 and 3.4 of - // [RFC3986]). - f(":authority", host) - m := req.Method -@@ -2073,8 +2120,7 @@ type resAndError struct { - func (cc *ClientConn) addStreamLocked(cs *clientStream) { - cs.flow.add(int32(cc.initialWindowSize)) - cs.flow.setConnFlow(&cc.flow) -- cs.inflow.add(transportDefaultStreamFlow) -- cs.inflow.setConnFlow(&cc.inflow) -+ cs.inflow.init(transportDefaultStreamFlow) - cs.ID = cc.nextStreamID - cc.nextStreamID += 2 - cc.streams[cs.ID] = cs -@@ -2533,21 +2579,10 @@ func (b transportResponseBody) Read(p []byte) (n int, err error) { - } - - cc.mu.Lock() -- var connAdd, streamAdd int32 -- // Check the conn-level first, before the stream-level. -- if v := cc.inflow.available(); v < transportDefaultConnFlow/2 { -- connAdd = transportDefaultConnFlow - v -- cc.inflow.add(connAdd) -- } -+ connAdd := cc.inflow.add(n) -+ var streamAdd int32 - if err == nil { // No need to refresh if the stream is over or failed. -- // Consider any buffered body data (read from the conn but not -- // consumed by the client) when computing flow control for this -- // stream. -- v := int(cs.inflow.available()) + cs.bufPipe.Len() -- if v < transportDefaultStreamFlow-transportDefaultStreamMinRefresh { -- streamAdd = int32(transportDefaultStreamFlow - v) -- cs.inflow.add(streamAdd) -- } -+ streamAdd = cs.inflow.add(n) - } - cc.mu.Unlock() - -@@ -2571,29 +2606,27 @@ func (b transportResponseBody) Close() error { - cs := b.cs - cc := cs.cc - -+ cs.bufPipe.BreakWithError(errClosedResponseBody) -+ cs.abortStream(errClosedResponseBody) -+ - unread := cs.bufPipe.Len() - if unread > 0 { - cc.mu.Lock() - // Return connection-level flow control. -- if unread > 0 { -- cc.inflow.add(int32(unread)) -- } -+ connAdd := cc.inflow.add(unread) - cc.mu.Unlock() - - // TODO(dneil): Acquiring this mutex can block indefinitely. - // Move flow control return to a goroutine? - cc.wmu.Lock() - // Return connection-level flow control. -- if unread > 0 { -- cc.fr.WriteWindowUpdate(0, uint32(unread)) -+ if connAdd > 0 { -+ cc.fr.WriteWindowUpdate(0, uint32(connAdd)) - } - cc.bw.Flush() - cc.wmu.Unlock() - } - -- cs.bufPipe.BreakWithError(errClosedResponseBody) -- cs.abortStream(errClosedResponseBody) -- - select { - case <-cs.donec: - case <-cs.ctx.Done(): -@@ -2628,13 +2661,18 @@ func (rl *clientConnReadLoop) processData(f *DataFrame) error { - // But at least return their flow control: - if f.Length > 0 { - cc.mu.Lock() -- cc.inflow.add(int32(f.Length)) -+ ok := cc.inflow.take(f.Length) -+ connAdd := cc.inflow.add(int(f.Length)) - cc.mu.Unlock() -- -- cc.wmu.Lock() -- cc.fr.WriteWindowUpdate(0, uint32(f.Length)) -- cc.bw.Flush() -- cc.wmu.Unlock() -+ if !ok { -+ return ConnectionError(ErrCodeFlowControl) -+ } -+ if connAdd > 0 { -+ cc.wmu.Lock() -+ cc.fr.WriteWindowUpdate(0, uint32(connAdd)) -+ cc.bw.Flush() -+ cc.wmu.Unlock() -+ } - } - return nil - } -@@ -2665,9 +2703,7 @@ func (rl *clientConnReadLoop) processData(f *DataFrame) error { - } - // Check connection-level flow control. - cc.mu.Lock() -- if cs.inflow.available() >= int32(f.Length) { -- cs.inflow.take(int32(f.Length)) -- } else { -+ if !takeInflows(&cc.inflow, &cs.inflow, f.Length) { - cc.mu.Unlock() - return ConnectionError(ErrCodeFlowControl) - } -@@ -2689,19 +2725,20 @@ func (rl *clientConnReadLoop) processData(f *DataFrame) error { - } - } - -- if refund > 0 { -- cc.inflow.add(int32(refund)) -- if !didReset { -- cs.inflow.add(int32(refund)) -- } -+ sendConn := cc.inflow.add(refund) -+ var sendStream int32 -+ if !didReset { -+ sendStream = cs.inflow.add(refund) - } - cc.mu.Unlock() - -- if refund > 0 { -+ if sendConn > 0 || sendStream > 0 { - cc.wmu.Lock() -- cc.fr.WriteWindowUpdate(0, uint32(refund)) -- if !didReset { -- cc.fr.WriteWindowUpdate(cs.ID, uint32(refund)) -+ if sendConn > 0 { -+ cc.fr.WriteWindowUpdate(0, uint32(sendConn)) -+ } -+ if sendStream > 0 { -+ cc.fr.WriteWindowUpdate(cs.ID, uint32(sendStream)) - } - cc.bw.Flush() - cc.wmu.Unlock() -diff --git a/vendor/golang.org/x/net/http2/write.go b/vendor/golang.org/x/net/http2/write.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/http2/writesched.go b/vendor/golang.org/x/net/http2/writesched.go -old mode 100644 -new mode 100755 -index c7cd001..cc893ad ---- a/vendor/golang.org/x/net/http2/writesched.go -+++ b/vendor/golang.org/x/net/http2/writesched.go -@@ -184,7 +184,8 @@ func (wr *FrameWriteRequest) replyToWriter(err error) { - - // writeQueue is used by implementations of WriteScheduler. - type writeQueue struct { -- s []FrameWriteRequest -+ s []FrameWriteRequest -+ prev, next *writeQueue - } - - func (q *writeQueue) empty() bool { return len(q.s) == 0 } -diff --git a/vendor/golang.org/x/net/http2/writesched_priority.go b/vendor/golang.org/x/net/http2/writesched_priority.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/http2/writesched_random.go b/vendor/golang.org/x/net/http2/writesched_random.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/http2/writesched_roundrobin.go b/vendor/golang.org/x/net/http2/writesched_roundrobin.go -new file mode 100755 -index 0000000..54fe863 ---- /dev/null -+++ b/vendor/golang.org/x/net/http2/writesched_roundrobin.go -@@ -0,0 +1,119 @@ -+// Copyright 2023 The Go Authors. 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" -+) -+ -+type roundRobinWriteScheduler struct { -+ // control contains control frames (SETTINGS, PING, etc.). -+ control writeQueue -+ -+ // streams maps stream ID to a queue. -+ streams map[uint32]*writeQueue -+ -+ // stream queues are stored in a circular linked list. -+ // head is the next stream to write, or nil if there are no streams open. -+ head *writeQueue -+ -+ // pool of empty queues for reuse. -+ queuePool writeQueuePool -+} -+ -+// newRoundRobinWriteScheduler constructs a new write scheduler. -+// The round robin scheduler priorizes control frames -+// like SETTINGS and PING over DATA frames. -+// When there are no control frames to send, it performs a round-robin -+// selection from the ready streams. -+func newRoundRobinWriteScheduler() WriteScheduler { -+ ws := &roundRobinWriteScheduler{ -+ streams: make(map[uint32]*writeQueue), -+ } -+ return ws -+} -+ -+func (ws *roundRobinWriteScheduler) OpenStream(streamID uint32, options OpenStreamOptions) { -+ if ws.streams[streamID] != nil { -+ panic(fmt.Errorf("stream %d already opened", streamID)) -+ } -+ q := ws.queuePool.get() -+ ws.streams[streamID] = q -+ if ws.head == nil { -+ ws.head = q -+ q.next = q -+ q.prev = q -+ } else { -+ // Queues are stored in a ring. -+ // Insert the new stream before ws.head, putting it at the end of the list. -+ q.prev = ws.head.prev -+ q.next = ws.head -+ q.prev.next = q -+ q.next.prev = q -+ } -+} -+ -+func (ws *roundRobinWriteScheduler) CloseStream(streamID uint32) { -+ q := ws.streams[streamID] -+ if q == nil { -+ return -+ } -+ if q.next == q { -+ // This was the only open stream. -+ ws.head = nil -+ } else { -+ q.prev.next = q.next -+ q.next.prev = q.prev -+ if ws.head == q { -+ ws.head = q.next -+ } -+ } -+ delete(ws.streams, streamID) -+ ws.queuePool.put(q) -+} -+ -+func (ws *roundRobinWriteScheduler) AdjustStream(streamID uint32, priority PriorityParam) {} -+ -+func (ws *roundRobinWriteScheduler) Push(wr FrameWriteRequest) { -+ if wr.isControl() { -+ ws.control.push(wr) -+ return -+ } -+ q := ws.streams[wr.StreamID()] -+ if q == nil { -+ // This is a closed stream. -+ // wr should not be a HEADERS or DATA frame. -+ // We push the request onto the control queue. -+ if wr.DataSize() > 0 { -+ panic("add DATA on non-open stream") -+ } -+ ws.control.push(wr) -+ return -+ } -+ q.push(wr) -+} -+ -+func (ws *roundRobinWriteScheduler) Pop() (FrameWriteRequest, bool) { -+ // Control and RST_STREAM frames first. -+ if !ws.control.empty() { -+ return ws.control.shift(), true -+ } -+ if ws.head == nil { -+ return FrameWriteRequest{}, false -+ } -+ q := ws.head -+ for { -+ if wr, ok := q.consume(math.MaxInt32); ok { -+ ws.head = q.next -+ return wr, true -+ } -+ q = q.next -+ if q == ws.head { -+ break -+ } -+ } -+ return FrameWriteRequest{}, false -+} -diff --git a/vendor/golang.org/x/net/idna/go118.go b/vendor/golang.org/x/net/idna/go118.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/idna/idna10.0.0.go b/vendor/golang.org/x/net/idna/idna10.0.0.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/idna/idna9.0.0.go b/vendor/golang.org/x/net/idna/idna9.0.0.go -old mode 100644 -new mode 100755 -index aae6aac..ee1698c ---- a/vendor/golang.org/x/net/idna/idna9.0.0.go -+++ b/vendor/golang.org/x/net/idna/idna9.0.0.go -@@ -121,7 +121,7 @@ func CheckJoiners(enable bool) Option { - } - } - --// StrictDomainName limits the set of permissable ASCII characters to those -+// 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, - // but is only useful if ValidateLabels is set. -diff --git a/vendor/golang.org/x/net/idna/pre_go118.go b/vendor/golang.org/x/net/idna/pre_go118.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/idna/punycode.go b/vendor/golang.org/x/net/idna/punycode.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/idna/tables10.0.0.go b/vendor/golang.org/x/net/idna/tables10.0.0.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/idna/tables11.0.0.go b/vendor/golang.org/x/net/idna/tables11.0.0.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/idna/tables12.0.0.go b/vendor/golang.org/x/net/idna/tables12.0.0.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/idna/tables13.0.0.go b/vendor/golang.org/x/net/idna/tables13.0.0.go -old mode 100644 -new mode 100755 -index 390c5e5..66701ea ---- a/vendor/golang.org/x/net/idna/tables13.0.0.go -+++ b/vendor/golang.org/x/net/idna/tables13.0.0.go -@@ -1,151 +1,294 @@ - // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - --//go:build go1.16 --// +build go1.16 -+//go:build go1.16 && !go1.21 -+// +build go1.16,!go1.21 - - package idna - - // UnicodeVersion is the Unicode version from which the tables in this package are derived. - const UnicodeVersion = "13.0.0" - --var mappings string = "" + // Size: 8188 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\x06令和\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点\x04" + -- "2点\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œ\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\x03p" + -- "pv\x02wc\x02mc\x02md\x02mr\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 mappings string = "" + // Size: 6539 bytes -+ " ̈a ̄23 ́ ̧1o1⁄41⁄23⁄4i̇l·ʼnsdžⱥⱦhjrwy ̆ ̇ ̊ ̨ ̃ ̋lẍ́ ι; ̈́եւاٴوٴۇٴيٴक" + -+ "़ख़ग़ज़ड़ढ़फ़य़ড়ঢ়য়ਲ਼ਸ਼ਖ਼ਗ਼ਜ਼ਫ਼ଡ଼ଢ଼ําໍາຫນຫມགྷཌྷདྷབྷཛྷཀྵཱཱིུྲྀྲཱྀླྀླཱ" + -+ "ཱྀྀྒྷྜྷྡྷྦྷྫྷྐྵвдостъѣæbdeǝgikmnȣptuɐɑəɛɜŋɔɯvβγδφχρнɒcɕðfɟɡɥɨɩɪʝɭʟɱɰɲɳ" + -+ "ɴɵɸʂʃƫʉʊʋʌzʐʑʒθssάέήίόύώἀιἁιἂιἃιἄιἅιἆιἇιἠιἡιἢιἣιἤιἥιἦιἧιὠιὡιὢιὣιὤιὥιὦιὧ" + -+ "ιὰιαιάιᾶιι ̈͂ὴιηιήιῆι ̓̀ ̓́ ̓͂ΐ ̔̀ ̔́ ̔͂ΰ ̈̀`ὼιωιώιῶι′′′′′‵‵‵‵‵!!???!!?" + -+ "′′′′0456789+=()rsħnoqsmtmωåאבגדπ1⁄71⁄91⁄101⁄32⁄31⁄52⁄53⁄54⁄51⁄65⁄61⁄83" + -+ "⁄85⁄87⁄81⁄iiivviviiiixxi0⁄3∫∫∫∫∫∮∮∮∮∮1011121314151617181920(10)(11)(12" + -+ ")(13)(14)(15)(16)(17)(18)(19)(20)∫∫∫∫==⫝̸ɫɽȿɀ. ゙ ゚よりコト(ᄀ)(ᄂ)(ᄃ)(ᄅ)(ᄆ)(ᄇ)" + -+ "(ᄉ)(ᄋ)(ᄌ)(ᄎ)(ᄏ)(ᄐ)(ᄑ)(ᄒ)(가)(나)(다)(라)(마)(바)(사)(아)(자)(차)(카)(타)(파)(하)(주)(오전" + -+ ")(오후)(一)(二)(三)(四)(五)(六)(七)(八)(九)(十)(月)(火)(水)(木)(金)(土)(日)(株)(有)(社)(名)(特)(" + -+ "財)(祝)(労)(代)(呼)(学)(監)(企)(資)(協)(祭)(休)(自)(至)21222324252627282930313233343" + -+ "5참고주의3637383940414243444546474849501月2月3月4月5月6月7月8月9月10月11月12月hgev令和アパート" + -+ "アルファアンペアアールイニングインチウォンエスクードエーカーオンスオームカイリカラットカロリーガロンガンマギガギニーキュリーギルダーキロキロ" + -+ "グラムキロメートルキロワットグラムグラムトンクルゼイロクローネケースコルナコーポサイクルサンチームシリングセンチセントダースデシドルトンナノ" + -+ "ノットハイツパーセントパーツバーレルピアストルピクルピコビルファラッドフィートブッシェルフランヘクタールペソペニヒヘルツペンスページベータポ" + -+ "イントボルトホンポンドホールホーンマイクロマイルマッハマルクマンションミクロンミリミリバールメガメガトンメートルヤードヤールユアンリットルリ" + -+ "ラルピールーブルレムレントゲンワット0点1点2点3点4点5点6点7点8点9点10点11点12点13点14点15点16点17点18点19点20" + -+ "点21点22点23点24点daauovpcdmiu平成昭和大正明治株式会社panamakakbmbgbkcalpfnfmgkghzmldlk" + -+ "lfmnmmmcmkmm2m3m∕sm∕s2rad∕srad∕s2psnsmspvnvmvkvpwnwmwkwbqcccdc∕kgdbgyhah" + -+ "pinkkktlmlnlxphprsrsvwbv∕ma∕m1日2日3日4日5日6日7日8日9日10日11日12日13日14日15日16日17日1" + -+ "8日19日20日21日22日23日24日25日26日27日28日29日30日31日ьɦɬʞʇœʍ𤋮𢡊𢡄𣏕𥉉𥳐𧻓fffiflstմնմեմիվնմ" + -+ "խיִײַעהכלםרתשׁשׂשּׁשּׂאַאָאּבּגּדּהּוּזּטּיּךּכּלּמּנּסּףּפּצּקּרּשּתּו" + -+ "ֹבֿכֿפֿאלٱٻپڀٺٿٹڤڦڄڃچڇڍڌڎڈژڑکگڳڱںڻۀہھےۓڭۇۆۈۋۅۉېىئائەئوئۇئۆئۈئېئىیئجئحئم" + -+ "ئيبجبحبخبمبىبيتجتحتختمتىتيثجثمثىثيجحجمحجحمخجخحخمسجسحسخسمصحصمضجضحضخضمطحط" + -+ "مظمعجعمغجغمفجفحفخفمفىفيقحقمقىقيكاكجكحكخكلكمكىكيلجلحلخلملىليمجمحمخمممىمي" + -+ "نجنحنخنمنىنيهجهمهىهييجيحيخيميىييذٰرٰىٰ ٌّ ٍّ َّ ُّ ِّ ّٰئرئزئنبربزبنترت" + -+ "زتنثرثزثنمانرنزننيريزينئخئهبهتهصخلهنههٰيهثهسهشمشهـَّـُّـِّطىطيعىعيغىغيس" + -+ "ىسيشىشيحىحيجىجيخىخيصىصيضىضيشجشحشخشرسرصرضراًتجمتحجتحمتخمتمجتمحتمخجمححميح" + -+ "مىسحجسجحسجىسمحسمجسممصححصممشحمشجيشمخشممضحىضخمطمحطممطميعجمعممعمىغممغميغمى" + -+ "فخمقمحقمملحملحيلحىلججلخملمحمحجمحممحيمجحمجممخجمخممجخهمجهممنحمنحىنجمنجىنم" + -+ "ينمىيممبخيتجيتجىتخيتخىتميتمىجميجحىجمىسخىصحيشحيضحيلجيلمييحييجييميمميقمين" + -+ "حيعميكمينجحمخيلجمكممجحيحجيمجيفميبحيسخينجيصلےقلےاللهاكبرمحمدصلعمرسولعليه" + -+ "وسلمصلىصلى الله عليه وسلمجل جلالهریال,:!?_{}[]#&*-<>\\$%@ـًـَـُـِـّـْءآ" + -+ "أؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهويلآلألإلا\x22'/^|~¢£¬¦¥𝅗𝅥𝅘𝅥𝅘𝅥𝅮𝅘𝅥𝅯𝅘𝅥𝅰𝅘𝅥𝅱" + -+ "𝅘𝅥𝅲𝆹𝅥𝆺𝅥𝆹𝅥𝅮𝆺𝅥𝅮𝆹𝅥𝅯𝆺𝅥𝅯ıȷαεζηκλμνξοστυψ∇∂ϝٮڡٯ0,1,2,3,4,5,6,7,8,9,(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)〔s" + -+ "〕wzhvsdppvwcmcmdmrdjほかココサ手字双デ二多解天交映無料前後再新初終生販声吹演投捕一三遊左中右指走打禁空合満有月申割営配〔" + -+ "本〕〔三〕〔二〕〔安〕〔点〕〔打〕〔盗〕〔勝〕〔敗〕得可丽丸乁你侮侻倂偺備僧像㒞免兔兤具㒹內冗冤仌冬况凵刃㓟刻剆剷㔕勇勉勤勺包匆北卉卑博即卽" + -+ "卿灰及叟叫叱吆咞吸呈周咢哶唐啓啣善喙喫喳嗂圖嘆圗噑噴切壮城埴堍型堲報墬売壷夆夢奢姬娛娧姘婦㛮嬈嬾寃寘寧寳寿将尢㞁屠屮峀岍嵃嵮嵫嵼巡巢㠯巽帨帽" + -+ "幩㡢㡼庰庳庶廊廾舁弢㣇形彫㣣徚忍志忹悁㤺㤜悔惇慈慌慎慺憎憲憤憯懞懲懶成戛扝抱拔捐挽拼捨掃揤搢揅掩㨮摩摾撝摷㩬敏敬旣書晉㬙暑㬈㫤冒冕最暜肭䏙朗" + -+ "望朡杞杓㭉柺枅桒梅梎栟椔㮝楂榣槪檨櫛㰘次歔㱎歲殟殺殻汎沿泍汧洖派海流浩浸涅洴港湮㴳滋滇淹潮濆瀹瀞瀛㶖灊災灷炭煅熜爨爵牐犀犕獺王㺬玥㺸瑇瑜瑱璅" + -+ "瓊㼛甤甾異瘐㿼䀈直眞真睊䀹瞋䁆䂖硎碌磌䃣祖福秫䄯穀穊穏䈂篆築䈧糒䊠糨糣紀絣䌁緇縂繅䌴䍙罺羕翺者聠聰䏕育脃䐋脾媵舄辞䑫芑芋芝劳花芳芽苦若茝荣莭" + -+ "茣莽菧著荓菊菌菜䔫蓱蓳蔖蕤䕝䕡䕫虐虜虧虩蚩蚈蜎蛢蝹蜨蝫螆蟡蠁䗹衠衣裗裞䘵裺㒻䚾䛇誠諭變豕貫賁贛起跋趼跰軔輸邔郱鄑鄛鈸鋗鋘鉼鏹鐕開䦕閷䧦雃嶲霣" + -+ "䩮䩶韠䪲頋頩飢䬳餩馧駂駾䯎鬒鱀鳽䳎䳭鵧䳸麻䵖黹黾鼅鼏鼖鼻" -+ -+var mappingIndex = []uint16{ // 1650 elements -+ // Entry 0 - 3F -+ 0x0000, 0x0000, 0x0001, 0x0004, 0x0005, 0x0008, 0x0009, 0x000a, -+ 0x000d, 0x0010, 0x0011, 0x0012, 0x0017, 0x001c, 0x0021, 0x0024, -+ 0x0027, 0x002a, 0x002b, 0x002e, 0x0031, 0x0034, 0x0035, 0x0036, -+ 0x0037, 0x0038, 0x0039, 0x003c, 0x003f, 0x0042, 0x0045, 0x0048, -+ 0x004b, 0x004c, 0x004d, 0x0051, 0x0054, 0x0055, 0x005a, 0x005e, -+ 0x0062, 0x0066, 0x006a, 0x006e, 0x0074, 0x007a, 0x0080, 0x0086, -+ 0x008c, 0x0092, 0x0098, 0x009e, 0x00a4, 0x00aa, 0x00b0, 0x00b6, -+ 0x00bc, 0x00c2, 0x00c8, 0x00ce, 0x00d4, 0x00da, 0x00e0, 0x00e6, -+ // Entry 40 - 7F -+ 0x00ec, 0x00f2, 0x00f8, 0x00fe, 0x0104, 0x010a, 0x0110, 0x0116, -+ 0x011c, 0x0122, 0x0128, 0x012e, 0x0137, 0x013d, 0x0146, 0x014c, -+ 0x0152, 0x0158, 0x015e, 0x0164, 0x016a, 0x0170, 0x0172, 0x0174, -+ 0x0176, 0x0178, 0x017a, 0x017c, 0x017e, 0x0180, 0x0181, 0x0182, -+ 0x0183, 0x0185, 0x0186, 0x0187, 0x0188, 0x0189, 0x018a, 0x018c, -+ 0x018d, 0x018e, 0x018f, 0x0191, 0x0193, 0x0195, 0x0197, 0x0199, -+ 0x019b, 0x019d, 0x019f, 0x01a0, 0x01a2, 0x01a4, 0x01a6, 0x01a8, -+ 0x01aa, 0x01ac, 0x01ae, 0x01b0, 0x01b1, 0x01b3, 0x01b5, 0x01b6, -+ // Entry 80 - BF -+ 0x01b8, 0x01ba, 0x01bc, 0x01be, 0x01c0, 0x01c2, 0x01c4, 0x01c6, -+ 0x01c8, 0x01ca, 0x01cc, 0x01ce, 0x01d0, 0x01d2, 0x01d4, 0x01d6, -+ 0x01d8, 0x01da, 0x01dc, 0x01de, 0x01e0, 0x01e2, 0x01e4, 0x01e5, -+ 0x01e7, 0x01e9, 0x01eb, 0x01ed, 0x01ef, 0x01f1, 0x01f3, 0x01f5, -+ 0x01f7, 0x01f9, 0x01fb, 0x01fd, 0x0202, 0x0207, 0x020c, 0x0211, -+ 0x0216, 0x021b, 0x0220, 0x0225, 0x022a, 0x022f, 0x0234, 0x0239, -+ 0x023e, 0x0243, 0x0248, 0x024d, 0x0252, 0x0257, 0x025c, 0x0261, -+ 0x0266, 0x026b, 0x0270, 0x0275, 0x027a, 0x027e, 0x0282, 0x0287, -+ // Entry C0 - FF -+ 0x0289, 0x028e, 0x0293, 0x0297, 0x029b, 0x02a0, 0x02a5, 0x02aa, -+ 0x02af, 0x02b1, 0x02b6, 0x02bb, 0x02c0, 0x02c2, 0x02c7, 0x02c8, -+ 0x02cd, 0x02d1, 0x02d5, 0x02da, 0x02e0, 0x02e9, 0x02ef, 0x02f8, -+ 0x02fa, 0x02fc, 0x02fe, 0x0300, 0x030c, 0x030d, 0x030e, 0x030f, -+ 0x0310, 0x0311, 0x0312, 0x0313, 0x0314, 0x0315, 0x0316, 0x0317, -+ 0x0319, 0x031b, 0x031d, 0x031e, 0x0320, 0x0322, 0x0324, 0x0326, -+ 0x0328, 0x032a, 0x032c, 0x032e, 0x0330, 0x0335, 0x033a, 0x0340, -+ 0x0345, 0x034a, 0x034f, 0x0354, 0x0359, 0x035e, 0x0363, 0x0368, -+ // Entry 100 - 13F -+ 0x036d, 0x0372, 0x0377, 0x037c, 0x0380, 0x0382, 0x0384, 0x0386, -+ 0x038a, 0x038c, 0x038e, 0x0393, 0x0399, 0x03a2, 0x03a8, 0x03b1, -+ 0x03b3, 0x03b5, 0x03b7, 0x03b9, 0x03bb, 0x03bd, 0x03bf, 0x03c1, -+ 0x03c3, 0x03c5, 0x03c7, 0x03cb, 0x03cf, 0x03d3, 0x03d7, 0x03db, -+ 0x03df, 0x03e3, 0x03e7, 0x03eb, 0x03ef, 0x03f3, 0x03ff, 0x0401, -+ 0x0406, 0x0408, 0x040a, 0x040c, 0x040e, 0x040f, 0x0413, 0x0417, -+ 0x041d, 0x0423, 0x0428, 0x042d, 0x0432, 0x0437, 0x043c, 0x0441, -+ 0x0446, 0x044b, 0x0450, 0x0455, 0x045a, 0x045f, 0x0464, 0x0469, -+ // Entry 140 - 17F -+ 0x046e, 0x0473, 0x0478, 0x047d, 0x0482, 0x0487, 0x048c, 0x0491, -+ 0x0496, 0x049b, 0x04a0, 0x04a5, 0x04aa, 0x04af, 0x04b4, 0x04bc, -+ 0x04c4, 0x04c9, 0x04ce, 0x04d3, 0x04d8, 0x04dd, 0x04e2, 0x04e7, -+ 0x04ec, 0x04f1, 0x04f6, 0x04fb, 0x0500, 0x0505, 0x050a, 0x050f, -+ 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, -+ 0x053c, 0x0541, 0x0546, 0x054b, 0x0550, 0x0555, 0x055a, 0x055f, -+ 0x0564, 0x0569, 0x056e, 0x0573, 0x0578, 0x057a, 0x057c, 0x057e, -+ 0x0580, 0x0582, 0x0584, 0x0586, 0x0588, 0x058a, 0x058c, 0x058e, -+ // Entry 180 - 1BF -+ 0x0590, 0x0592, 0x0594, 0x0596, 0x059c, 0x05a2, 0x05a4, 0x05a6, -+ 0x05a8, 0x05aa, 0x05ac, 0x05ae, 0x05b0, 0x05b2, 0x05b4, 0x05b6, -+ 0x05b8, 0x05ba, 0x05bc, 0x05be, 0x05c0, 0x05c4, 0x05c8, 0x05cc, -+ 0x05d0, 0x05d4, 0x05d8, 0x05dc, 0x05e0, 0x05e4, 0x05e9, 0x05ee, -+ 0x05f3, 0x05f5, 0x05f7, 0x05fd, 0x0609, 0x0615, 0x0621, 0x062a, -+ 0x0636, 0x063f, 0x0648, 0x0657, 0x0663, 0x066c, 0x0675, 0x067e, -+ 0x068a, 0x0696, 0x069f, 0x06a8, 0x06ae, 0x06b7, 0x06c3, 0x06cf, -+ 0x06d5, 0x06e4, 0x06f6, 0x0705, 0x070e, 0x071d, 0x072c, 0x0738, -+ // Entry 1C0 - 1FF -+ 0x0741, 0x074a, 0x0753, 0x075f, 0x076e, 0x077a, 0x0783, 0x078c, -+ 0x0795, 0x079b, 0x07a1, 0x07a7, 0x07ad, 0x07b6, 0x07bf, 0x07ce, -+ 0x07d7, 0x07e3, 0x07f2, 0x07fb, 0x0801, 0x0807, 0x0816, 0x0822, -+ 0x0831, 0x083a, 0x0849, 0x084f, 0x0858, 0x0861, 0x086a, 0x0873, -+ 0x087c, 0x0888, 0x0891, 0x0897, 0x08a0, 0x08a9, 0x08b2, 0x08be, -+ 0x08c7, 0x08d0, 0x08d9, 0x08e8, 0x08f4, 0x08fa, 0x0909, 0x090f, -+ 0x091b, 0x0927, 0x0930, 0x0939, 0x0942, 0x094e, 0x0954, 0x095d, -+ 0x0969, 0x096f, 0x097e, 0x0987, 0x098b, 0x098f, 0x0993, 0x0997, -+ // Entry 200 - 23F -+ 0x099b, 0x099f, 0x09a3, 0x09a7, 0x09ab, 0x09af, 0x09b4, 0x09b9, -+ 0x09be, 0x09c3, 0x09c8, 0x09cd, 0x09d2, 0x09d7, 0x09dc, 0x09e1, -+ 0x09e6, 0x09eb, 0x09f0, 0x09f5, 0x09fa, 0x09fc, 0x09fe, 0x0a00, -+ 0x0a02, 0x0a04, 0x0a06, 0x0a0c, 0x0a12, 0x0a18, 0x0a1e, 0x0a2a, -+ 0x0a2c, 0x0a2e, 0x0a30, 0x0a32, 0x0a34, 0x0a36, 0x0a38, 0x0a3c, -+ 0x0a3e, 0x0a40, 0x0a42, 0x0a44, 0x0a46, 0x0a48, 0x0a4a, 0x0a4c, -+ 0x0a4e, 0x0a50, 0x0a52, 0x0a54, 0x0a56, 0x0a58, 0x0a5a, 0x0a5f, -+ 0x0a65, 0x0a6c, 0x0a74, 0x0a76, 0x0a78, 0x0a7a, 0x0a7c, 0x0a7e, -+ // Entry 240 - 27F -+ 0x0a80, 0x0a82, 0x0a84, 0x0a86, 0x0a88, 0x0a8a, 0x0a8c, 0x0a8e, -+ 0x0a90, 0x0a96, 0x0a98, 0x0a9a, 0x0a9c, 0x0a9e, 0x0aa0, 0x0aa2, -+ 0x0aa4, 0x0aa6, 0x0aa8, 0x0aaa, 0x0aac, 0x0aae, 0x0ab0, 0x0ab2, -+ 0x0ab4, 0x0ab9, 0x0abe, 0x0ac2, 0x0ac6, 0x0aca, 0x0ace, 0x0ad2, -+ 0x0ad6, 0x0ada, 0x0ade, 0x0ae2, 0x0ae7, 0x0aec, 0x0af1, 0x0af6, -+ 0x0afb, 0x0b00, 0x0b05, 0x0b0a, 0x0b0f, 0x0b14, 0x0b19, 0x0b1e, -+ 0x0b23, 0x0b28, 0x0b2d, 0x0b32, 0x0b37, 0x0b3c, 0x0b41, 0x0b46, -+ 0x0b4b, 0x0b50, 0x0b52, 0x0b54, 0x0b56, 0x0b58, 0x0b5a, 0x0b5c, -+ // Entry 280 - 2BF -+ 0x0b5e, 0x0b62, 0x0b66, 0x0b6a, 0x0b6e, 0x0b72, 0x0b76, 0x0b7a, -+ 0x0b7c, 0x0b7e, 0x0b80, 0x0b82, 0x0b86, 0x0b8a, 0x0b8e, 0x0b92, -+ 0x0b96, 0x0b9a, 0x0b9e, 0x0ba0, 0x0ba2, 0x0ba4, 0x0ba6, 0x0ba8, -+ 0x0baa, 0x0bac, 0x0bb0, 0x0bb4, 0x0bba, 0x0bc0, 0x0bc4, 0x0bc8, -+ 0x0bcc, 0x0bd0, 0x0bd4, 0x0bd8, 0x0bdc, 0x0be0, 0x0be4, 0x0be8, -+ 0x0bec, 0x0bf0, 0x0bf4, 0x0bf8, 0x0bfc, 0x0c00, 0x0c04, 0x0c08, -+ 0x0c0c, 0x0c10, 0x0c14, 0x0c18, 0x0c1c, 0x0c20, 0x0c24, 0x0c28, -+ 0x0c2c, 0x0c30, 0x0c34, 0x0c36, 0x0c38, 0x0c3a, 0x0c3c, 0x0c3e, -+ // Entry 2C0 - 2FF -+ 0x0c40, 0x0c42, 0x0c44, 0x0c46, 0x0c48, 0x0c4a, 0x0c4c, 0x0c4e, -+ 0x0c50, 0x0c52, 0x0c54, 0x0c56, 0x0c58, 0x0c5a, 0x0c5c, 0x0c5e, -+ 0x0c60, 0x0c62, 0x0c64, 0x0c66, 0x0c68, 0x0c6a, 0x0c6c, 0x0c6e, -+ 0x0c70, 0x0c72, 0x0c74, 0x0c76, 0x0c78, 0x0c7a, 0x0c7c, 0x0c7e, -+ 0x0c80, 0x0c82, 0x0c86, 0x0c8a, 0x0c8e, 0x0c92, 0x0c96, 0x0c9a, -+ 0x0c9e, 0x0ca2, 0x0ca4, 0x0ca8, 0x0cac, 0x0cb0, 0x0cb4, 0x0cb8, -+ 0x0cbc, 0x0cc0, 0x0cc4, 0x0cc8, 0x0ccc, 0x0cd0, 0x0cd4, 0x0cd8, -+ 0x0cdc, 0x0ce0, 0x0ce4, 0x0ce8, 0x0cec, 0x0cf0, 0x0cf4, 0x0cf8, -+ // Entry 300 - 33F -+ 0x0cfc, 0x0d00, 0x0d04, 0x0d08, 0x0d0c, 0x0d10, 0x0d14, 0x0d18, -+ 0x0d1c, 0x0d20, 0x0d24, 0x0d28, 0x0d2c, 0x0d30, 0x0d34, 0x0d38, -+ 0x0d3c, 0x0d40, 0x0d44, 0x0d48, 0x0d4c, 0x0d50, 0x0d54, 0x0d58, -+ 0x0d5c, 0x0d60, 0x0d64, 0x0d68, 0x0d6c, 0x0d70, 0x0d74, 0x0d78, -+ 0x0d7c, 0x0d80, 0x0d84, 0x0d88, 0x0d8c, 0x0d90, 0x0d94, 0x0d98, -+ 0x0d9c, 0x0da0, 0x0da4, 0x0da8, 0x0dac, 0x0db0, 0x0db4, 0x0db8, -+ 0x0dbc, 0x0dc0, 0x0dc4, 0x0dc8, 0x0dcc, 0x0dd0, 0x0dd4, 0x0dd8, -+ 0x0ddc, 0x0de0, 0x0de4, 0x0de8, 0x0dec, 0x0df0, 0x0df4, 0x0df8, -+ // Entry 340 - 37F -+ 0x0dfc, 0x0e00, 0x0e04, 0x0e08, 0x0e0c, 0x0e10, 0x0e14, 0x0e18, -+ 0x0e1d, 0x0e22, 0x0e27, 0x0e2c, 0x0e31, 0x0e36, 0x0e3a, 0x0e3e, -+ 0x0e42, 0x0e46, 0x0e4a, 0x0e4e, 0x0e52, 0x0e56, 0x0e5a, 0x0e5e, -+ 0x0e62, 0x0e66, 0x0e6a, 0x0e6e, 0x0e72, 0x0e76, 0x0e7a, 0x0e7e, -+ 0x0e82, 0x0e86, 0x0e8a, 0x0e8e, 0x0e92, 0x0e96, 0x0e9a, 0x0e9e, -+ 0x0ea2, 0x0ea6, 0x0eaa, 0x0eae, 0x0eb2, 0x0eb6, 0x0ebc, 0x0ec2, -+ 0x0ec8, 0x0ecc, 0x0ed0, 0x0ed4, 0x0ed8, 0x0edc, 0x0ee0, 0x0ee4, -+ 0x0ee8, 0x0eec, 0x0ef0, 0x0ef4, 0x0ef8, 0x0efc, 0x0f00, 0x0f04, -+ // Entry 380 - 3BF -+ 0x0f08, 0x0f0c, 0x0f10, 0x0f14, 0x0f18, 0x0f1c, 0x0f20, 0x0f24, -+ 0x0f28, 0x0f2c, 0x0f30, 0x0f34, 0x0f38, 0x0f3e, 0x0f44, 0x0f4a, -+ 0x0f50, 0x0f56, 0x0f5c, 0x0f62, 0x0f68, 0x0f6e, 0x0f74, 0x0f7a, -+ 0x0f80, 0x0f86, 0x0f8c, 0x0f92, 0x0f98, 0x0f9e, 0x0fa4, 0x0faa, -+ 0x0fb0, 0x0fb6, 0x0fbc, 0x0fc2, 0x0fc8, 0x0fce, 0x0fd4, 0x0fda, -+ 0x0fe0, 0x0fe6, 0x0fec, 0x0ff2, 0x0ff8, 0x0ffe, 0x1004, 0x100a, -+ 0x1010, 0x1016, 0x101c, 0x1022, 0x1028, 0x102e, 0x1034, 0x103a, -+ 0x1040, 0x1046, 0x104c, 0x1052, 0x1058, 0x105e, 0x1064, 0x106a, -+ // Entry 3C0 - 3FF -+ 0x1070, 0x1076, 0x107c, 0x1082, 0x1088, 0x108e, 0x1094, 0x109a, -+ 0x10a0, 0x10a6, 0x10ac, 0x10b2, 0x10b8, 0x10be, 0x10c4, 0x10ca, -+ 0x10d0, 0x10d6, 0x10dc, 0x10e2, 0x10e8, 0x10ee, 0x10f4, 0x10fa, -+ 0x1100, 0x1106, 0x110c, 0x1112, 0x1118, 0x111e, 0x1124, 0x112a, -+ 0x1130, 0x1136, 0x113c, 0x1142, 0x1148, 0x114e, 0x1154, 0x115a, -+ 0x1160, 0x1166, 0x116c, 0x1172, 0x1178, 0x1180, 0x1188, 0x1190, -+ 0x1198, 0x11a0, 0x11a8, 0x11b0, 0x11b6, 0x11d7, 0x11e6, 0x11ee, -+ 0x11ef, 0x11f0, 0x11f1, 0x11f2, 0x11f3, 0x11f4, 0x11f5, 0x11f6, -+ // Entry 400 - 43F -+ 0x11f7, 0x11f8, 0x11f9, 0x11fa, 0x11fb, 0x11fc, 0x11fd, 0x11fe, -+ 0x11ff, 0x1200, 0x1201, 0x1205, 0x1209, 0x120d, 0x1211, 0x1215, -+ 0x1219, 0x121b, 0x121d, 0x121f, 0x1221, 0x1223, 0x1225, 0x1227, -+ 0x1229, 0x122b, 0x122d, 0x122f, 0x1231, 0x1233, 0x1235, 0x1237, -+ 0x1239, 0x123b, 0x123d, 0x123f, 0x1241, 0x1243, 0x1245, 0x1247, -+ 0x1249, 0x124b, 0x124d, 0x124f, 0x1251, 0x1253, 0x1255, 0x1257, -+ 0x1259, 0x125b, 0x125d, 0x125f, 0x1263, 0x1267, 0x126b, 0x126f, -+ 0x1270, 0x1271, 0x1272, 0x1273, 0x1274, 0x1275, 0x1277, 0x1279, -+ // Entry 440 - 47F -+ 0x127b, 0x127d, 0x127f, 0x1287, 0x128f, 0x129b, 0x12a7, 0x12b3, -+ 0x12bf, 0x12cb, 0x12d3, 0x12db, 0x12e7, 0x12f3, 0x12ff, 0x130b, -+ 0x130d, 0x130f, 0x1311, 0x1313, 0x1315, 0x1317, 0x1319, 0x131b, -+ 0x131d, 0x131f, 0x1321, 0x1323, 0x1325, 0x1327, 0x1329, 0x132b, -+ 0x132e, 0x1331, 0x1333, 0x1335, 0x1337, 0x1339, 0x133b, 0x133d, -+ 0x133f, 0x1341, 0x1343, 0x1345, 0x1347, 0x1349, 0x134b, 0x134d, -+ 0x1350, 0x1353, 0x1356, 0x1359, 0x135c, 0x135f, 0x1362, 0x1365, -+ 0x1368, 0x136b, 0x136e, 0x1371, 0x1374, 0x1377, 0x137a, 0x137d, -+ // Entry 480 - 4BF -+ 0x1380, 0x1383, 0x1386, 0x1389, 0x138c, 0x138f, 0x1392, 0x1395, -+ 0x1398, 0x139b, 0x13a2, 0x13a4, 0x13a6, 0x13a8, 0x13ab, 0x13ad, -+ 0x13af, 0x13b1, 0x13b3, 0x13b5, 0x13bb, 0x13c1, 0x13c4, 0x13c7, -+ 0x13ca, 0x13cd, 0x13d0, 0x13d3, 0x13d6, 0x13d9, 0x13dc, 0x13df, -+ 0x13e2, 0x13e5, 0x13e8, 0x13eb, 0x13ee, 0x13f1, 0x13f4, 0x13f7, -+ 0x13fa, 0x13fd, 0x1400, 0x1403, 0x1406, 0x1409, 0x140c, 0x140f, -+ 0x1412, 0x1415, 0x1418, 0x141b, 0x141e, 0x1421, 0x1424, 0x1427, -+ 0x142a, 0x142d, 0x1430, 0x1433, 0x1436, 0x1439, 0x143c, 0x143f, -+ // Entry 4C0 - 4FF -+ 0x1442, 0x1445, 0x1448, 0x1451, 0x145a, 0x1463, 0x146c, 0x1475, -+ 0x147e, 0x1487, 0x1490, 0x1499, 0x149c, 0x149f, 0x14a2, 0x14a5, -+ 0x14a8, 0x14ab, 0x14ae, 0x14b1, 0x14b4, 0x14b7, 0x14ba, 0x14bd, -+ 0x14c0, 0x14c3, 0x14c6, 0x14c9, 0x14cc, 0x14cf, 0x14d2, 0x14d5, -+ 0x14d8, 0x14db, 0x14de, 0x14e1, 0x14e4, 0x14e7, 0x14ea, 0x14ed, -+ 0x14f0, 0x14f3, 0x14f6, 0x14f9, 0x14fc, 0x14ff, 0x1502, 0x1505, -+ 0x1508, 0x150b, 0x150e, 0x1511, 0x1514, 0x1517, 0x151a, 0x151d, -+ 0x1520, 0x1523, 0x1526, 0x1529, 0x152c, 0x152f, 0x1532, 0x1535, -+ // Entry 500 - 53F -+ 0x1538, 0x153b, 0x153e, 0x1541, 0x1544, 0x1547, 0x154a, 0x154d, -+ 0x1550, 0x1553, 0x1556, 0x1559, 0x155c, 0x155f, 0x1562, 0x1565, -+ 0x1568, 0x156b, 0x156e, 0x1571, 0x1574, 0x1577, 0x157a, 0x157d, -+ 0x1580, 0x1583, 0x1586, 0x1589, 0x158c, 0x158f, 0x1592, 0x1595, -+ 0x1598, 0x159b, 0x159e, 0x15a1, 0x15a4, 0x15a7, 0x15aa, 0x15ad, -+ 0x15b0, 0x15b3, 0x15b6, 0x15b9, 0x15bc, 0x15bf, 0x15c2, 0x15c5, -+ 0x15c8, 0x15cb, 0x15ce, 0x15d1, 0x15d4, 0x15d7, 0x15da, 0x15dd, -+ 0x15e0, 0x15e3, 0x15e6, 0x15e9, 0x15ec, 0x15ef, 0x15f2, 0x15f5, -+ // Entry 540 - 57F -+ 0x15f8, 0x15fb, 0x15fe, 0x1601, 0x1604, 0x1607, 0x160a, 0x160d, -+ 0x1610, 0x1613, 0x1616, 0x1619, 0x161c, 0x161f, 0x1622, 0x1625, -+ 0x1628, 0x162b, 0x162e, 0x1631, 0x1634, 0x1637, 0x163a, 0x163d, -+ 0x1640, 0x1643, 0x1646, 0x1649, 0x164c, 0x164f, 0x1652, 0x1655, -+ 0x1658, 0x165b, 0x165e, 0x1661, 0x1664, 0x1667, 0x166a, 0x166d, -+ 0x1670, 0x1673, 0x1676, 0x1679, 0x167c, 0x167f, 0x1682, 0x1685, -+ 0x1688, 0x168b, 0x168e, 0x1691, 0x1694, 0x1697, 0x169a, 0x169d, -+ 0x16a0, 0x16a3, 0x16a6, 0x16a9, 0x16ac, 0x16af, 0x16b2, 0x16b5, -+ // Entry 580 - 5BF -+ 0x16b8, 0x16bb, 0x16be, 0x16c1, 0x16c4, 0x16c7, 0x16ca, 0x16cd, -+ 0x16d0, 0x16d3, 0x16d6, 0x16d9, 0x16dc, 0x16df, 0x16e2, 0x16e5, -+ 0x16e8, 0x16eb, 0x16ee, 0x16f1, 0x16f4, 0x16f7, 0x16fa, 0x16fd, -+ 0x1700, 0x1703, 0x1706, 0x1709, 0x170c, 0x170f, 0x1712, 0x1715, -+ 0x1718, 0x171b, 0x171e, 0x1721, 0x1724, 0x1727, 0x172a, 0x172d, -+ 0x1730, 0x1733, 0x1736, 0x1739, 0x173c, 0x173f, 0x1742, 0x1745, -+ 0x1748, 0x174b, 0x174e, 0x1751, 0x1754, 0x1757, 0x175a, 0x175d, -+ 0x1760, 0x1763, 0x1766, 0x1769, 0x176c, 0x176f, 0x1772, 0x1775, -+ // Entry 5C0 - 5FF -+ 0x1778, 0x177b, 0x177e, 0x1781, 0x1784, 0x1787, 0x178a, 0x178d, -+ 0x1790, 0x1793, 0x1796, 0x1799, 0x179c, 0x179f, 0x17a2, 0x17a5, -+ 0x17a8, 0x17ab, 0x17ae, 0x17b1, 0x17b4, 0x17b7, 0x17ba, 0x17bd, -+ 0x17c0, 0x17c3, 0x17c6, 0x17c9, 0x17cc, 0x17cf, 0x17d2, 0x17d5, -+ 0x17d8, 0x17db, 0x17de, 0x17e1, 0x17e4, 0x17e7, 0x17ea, 0x17ed, -+ 0x17f0, 0x17f3, 0x17f6, 0x17f9, 0x17fc, 0x17ff, 0x1802, 0x1805, -+ 0x1808, 0x180b, 0x180e, 0x1811, 0x1814, 0x1817, 0x181a, 0x181d, -+ 0x1820, 0x1823, 0x1826, 0x1829, 0x182c, 0x182f, 0x1832, 0x1835, -+ // Entry 600 - 63F -+ 0x1838, 0x183b, 0x183e, 0x1841, 0x1844, 0x1847, 0x184a, 0x184d, -+ 0x1850, 0x1853, 0x1856, 0x1859, 0x185c, 0x185f, 0x1862, 0x1865, -+ 0x1868, 0x186b, 0x186e, 0x1871, 0x1874, 0x1877, 0x187a, 0x187d, -+ 0x1880, 0x1883, 0x1886, 0x1889, 0x188c, 0x188f, 0x1892, 0x1895, -+ 0x1898, 0x189b, 0x189e, 0x18a1, 0x18a4, 0x18a7, 0x18aa, 0x18ad, -+ 0x18b0, 0x18b3, 0x18b6, 0x18b9, 0x18bc, 0x18bf, 0x18c2, 0x18c5, -+ 0x18c8, 0x18cb, 0x18ce, 0x18d1, 0x18d4, 0x18d7, 0x18da, 0x18dd, -+ 0x18e0, 0x18e3, 0x18e6, 0x18e9, 0x18ec, 0x18ef, 0x18f2, 0x18f5, -+ // Entry 640 - 67F -+ 0x18f8, 0x18fb, 0x18fe, 0x1901, 0x1904, 0x1907, 0x190a, 0x190d, -+ 0x1910, 0x1913, 0x1916, 0x1919, 0x191c, 0x191f, 0x1922, 0x1925, -+ 0x1928, 0x192b, 0x192e, 0x1931, 0x1934, 0x1937, 0x193a, 0x193d, -+ 0x1940, 0x1943, 0x1946, 0x1949, 0x194c, 0x194f, 0x1952, 0x1955, -+ 0x1958, 0x195b, 0x195e, 0x1961, 0x1964, 0x1967, 0x196a, 0x196d, -+ 0x1970, 0x1973, 0x1976, 0x1979, 0x197c, 0x197f, 0x1982, 0x1985, -+ 0x1988, 0x198b, -+} // Size: 3324 bytes - - var xorData string = "" + // Size: 4862 bytes - "\x02\x0c\x09\x02\xb0\xec\x02\xad\xd8\x02\xad\xd9\x02\x06\x07\x02\x0f\x12" + -@@ -547,7 +690,7 @@ func (t *idnaTrie) lookupStringUnsafe(s string) uint16 { - return 0 - } - --// idnaTrie. Total size: 30288 bytes (29.58 KiB). Checksum: c0cd84404a2f6f19. -+// idnaTrie. Total size: 30196 bytes (29.49 KiB). Checksum: e2ae95a945f04016. - type idnaTrie struct{} - - func newIdnaTrie(i int) *idnaTrie { -@@ -600,11 +743,11 @@ var idnaValues = [8192]uint16{ - 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, -+ 0xe4: 0x0018, 0xe5: 0x0018, 0xe6: 0x0018, 0xe7: 0x0018, 0xe8: 0x0012, 0xe9: 0x0018, -+ 0xea: 0x0019, 0xeb: 0x0018, 0xec: 0x0018, 0xed: 0x03c0, 0xee: 0x0018, 0xef: 0x0022, -+ 0xf0: 0x0018, 0xf1: 0x0018, 0xf2: 0x0029, 0xf3: 0x0031, 0xf4: 0x003a, 0xf5: 0x0005, -+ 0xf6: 0x0018, 0xf7: 0x0008, 0xf8: 0x0042, 0xf9: 0x0049, 0xfa: 0x0051, 0xfb: 0x0018, -+ 0xfc: 0x0059, 0xfd: 0x0061, 0xfe: 0x0069, 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, -@@ -614,12 +757,12 @@ var idnaValues = [8192]uint16{ - 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, -+ 0x130: 0x0071, 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, -+ 0x13c: 0x0008, 0x13d: 0xe01d, 0x13e: 0x0008, 0x13f: 0x0079, - // 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, -+ 0x140: 0x0079, 0x141: 0xe01d, 0x142: 0x0008, 0x143: 0xe03d, 0x144: 0x0008, 0x145: 0xe01d, -+ 0x146: 0x0008, 0x147: 0xe07d, 0x148: 0x0008, 0x149: 0x0081, 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, -@@ -628,7 +771,7 @@ var idnaValues = [8192]uint16{ - 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, -+ 0x17c: 0x0008, 0x17d: 0xe01d, 0x17e: 0x0008, 0x17f: 0x0089, - // 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, -@@ -642,8 +785,8 @@ var idnaValues = [8192]uint16{ - 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, -+ 0x1c0: 0x0008, 0x1c1: 0x0008, 0x1c2: 0x0008, 0x1c3: 0x0008, 0x1c4: 0x0091, 0x1c5: 0x0091, -+ 0x1c6: 0x0091, 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, -@@ -663,22 +806,22 @@ var idnaValues = [8192]uint16{ - 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, -+ 0x236: 0x0008, 0x237: 0x0008, 0x238: 0x0008, 0x239: 0x0008, 0x23a: 0x0099, 0x23b: 0xe03d, -+ 0x23c: 0x0008, 0x23d: 0x031d, 0x23e: 0x00a1, 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, -+ 0x258: 0x00d2, 0x259: 0x00da, 0x25a: 0x00e2, 0x25b: 0x00ea, 0x25c: 0x00f2, 0x25d: 0x00fa, -+ 0x25e: 0x0018, 0x25f: 0x0018, 0x260: 0x03ad, 0x261: 0x0101, 0x262: 0x0089, 0x263: 0x0109, - 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, -+ 0x280: 0x03dd, 0x281: 0x03dd, 0x282: 0x3308, 0x283: 0x03f5, 0x284: 0x0111, 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, -@@ -687,10 +830,10 @@ var idnaValues = [8192]uint16{ - 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, -+ 0x2b6: 0xe00d, 0x2b7: 0x0008, 0x2b8: 0x0040, 0x2b9: 0x0040, 0x2ba: 0x011a, 0x2bb: 0x0008, -+ 0x2bc: 0x0008, 0x2bd: 0x0008, 0x2be: 0x0122, 0x2bf: 0x043d, - // Block 0xb, offset 0x2c0 -- 0x2c0: 0x0040, 0x2c1: 0x0040, 0x2c2: 0x0040, 0x2c3: 0x0040, 0x2c4: 0x008a, 0x2c5: 0x03d2, -+ 0x2c0: 0x0040, 0x2c1: 0x0040, 0x2c2: 0x0040, 0x2c3: 0x0040, 0x2c4: 0x003a, 0x2c5: 0x012a, - 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, -@@ -782,8 +925,8 @@ var idnaValues = [8192]uint16{ - 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, -+ 0x4b0: 0x3308, 0x4b1: 0x0c08, 0x4b2: 0x0c08, 0x4b3: 0x0c08, 0x4b4: 0x0808, 0x4b5: 0x0139, -+ 0x4b6: 0x0141, 0x4b7: 0x0149, 0x4b8: 0x0151, 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, -@@ -826,8 +969,8 @@ var idnaValues = [8192]uint16{ - 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, -+ 0x598: 0x0159, 0x599: 0x0161, 0x59a: 0x0169, 0x59b: 0x0171, 0x59c: 0x0179, 0x59d: 0x0181, -+ 0x59e: 0x0189, 0x59f: 0x0191, 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, -@@ -850,8 +993,8 @@ var idnaValues = [8192]uint16{ - 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, -+ 0x618: 0x0040, 0x619: 0x0040, 0x61a: 0x0040, 0x61b: 0x0040, 0x61c: 0x0199, 0x61d: 0x01a1, -+ 0x61e: 0x0040, 0x61f: 0x01a9, 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, -@@ -866,16 +1009,16 @@ var idnaValues = [8192]uint16{ - 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, -+ 0x670: 0x0008, 0x671: 0x0040, 0x672: 0x0008, 0x673: 0x01b1, 0x674: 0x0040, 0x675: 0x0008, -+ 0x676: 0x01b9, 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, -+ 0x698: 0x0040, 0x699: 0x01c1, 0x69a: 0x01c9, 0x69b: 0x01d1, 0x69c: 0x0008, 0x69d: 0x0040, -+ 0x69e: 0x01d9, 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, -@@ -922,7 +1065,7 @@ var idnaValues = [8192]uint16{ - 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: 0x3308, 0x796: 0x3308, 0x797: 0x3008, -- 0x798: 0x0040, 0x799: 0x0040, 0x79a: 0x0040, 0x79b: 0x0040, 0x79c: 0x0881, 0x79d: 0x08b9, -+ 0x798: 0x0040, 0x799: 0x0040, 0x79a: 0x0040, 0x79b: 0x0040, 0x79c: 0x01e1, 0x79d: 0x01e9, - 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, -@@ -998,32 +1141,32 @@ var idnaValues = [8192]uint16{ - 0x91e: 0x0008, 0x91f: 0x0008, 0x920: 0x0008, 0x921: 0x0008, 0x922: 0x0008, 0x923: 0x0008, - 0x924: 0x0040, 0x925: 0x0008, 0x926: 0x0040, 0x927: 0x0008, 0x928: 0x0008, 0x929: 0x0008, - 0x92a: 0x0008, 0x92b: 0x0008, 0x92c: 0x0008, 0x92d: 0x0008, 0x92e: 0x0008, 0x92f: 0x0008, -- 0x930: 0x0008, 0x931: 0x3308, 0x932: 0x0008, 0x933: 0x0929, 0x934: 0x3308, 0x935: 0x3308, -+ 0x930: 0x0008, 0x931: 0x3308, 0x932: 0x0008, 0x933: 0x01f9, 0x934: 0x3308, 0x935: 0x3308, - 0x936: 0x3308, 0x937: 0x3308, 0x938: 0x3308, 0x939: 0x3308, 0x93a: 0x3b08, 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, -+ 0x940: 0x0008, 0x941: 0x0008, 0x942: 0x0008, 0x943: 0x0211, 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, -+ 0x94c: 0x0008, 0x94d: 0x0219, 0x94e: 0x0008, 0x94f: 0x0008, 0x950: 0x0008, 0x951: 0x0008, -+ 0x952: 0x0221, 0x953: 0x0008, 0x954: 0x0008, 0x955: 0x0008, 0x956: 0x0008, 0x957: 0x0229, -+ 0x958: 0x0008, 0x959: 0x0008, 0x95a: 0x0008, 0x95b: 0x0008, 0x95c: 0x0231, 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, -+ 0x964: 0x0008, 0x965: 0x0008, 0x966: 0x0008, 0x967: 0x0008, 0x968: 0x0008, 0x969: 0x0239, - 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, -+ 0x970: 0x0040, 0x971: 0x3308, 0x972: 0x3308, 0x973: 0x0241, 0x974: 0x3308, 0x975: 0x0249, -+ 0x976: 0x0251, 0x977: 0x0259, 0x978: 0x0261, 0x979: 0x0269, 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, -+ 0x980: 0x3308, 0x981: 0x0271, 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, -+ 0x992: 0x3308, 0x993: 0x0279, 0x994: 0x3308, 0x995: 0x3308, 0x996: 0x3308, 0x997: 0x3308, -+ 0x998: 0x0040, 0x999: 0x3308, 0x99a: 0x3308, 0x99b: 0x3308, 0x99c: 0x3308, 0x99d: 0x0281, -+ 0x99e: 0x3308, 0x99f: 0x3308, 0x9a0: 0x3308, 0x9a1: 0x3308, 0x9a2: 0x0289, 0x9a3: 0x3308, -+ 0x9a4: 0x3308, 0x9a5: 0x3308, 0x9a6: 0x3308, 0x9a7: 0x0291, 0x9a8: 0x3308, 0x9a9: 0x3308, -+ 0x9aa: 0x3308, 0x9ab: 0x3308, 0x9ac: 0x0299, 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, -+ 0x9b6: 0x3308, 0x9b7: 0x3308, 0x9b8: 0x3308, 0x9b9: 0x02a1, 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, -@@ -1033,34 +1176,34 @@ var idnaValues = [8192]uint16{ - 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, -+ 0x9ea: 0x0008, 0x9eb: 0x0008, 0x9ec: 0x0019, 0x9ed: 0x02e1, 0x9ee: 0x02e9, 0x9ef: 0x0008, -+ 0x9f0: 0x02f1, 0x9f1: 0x02f9, 0x9f2: 0x0301, 0x9f3: 0x0309, 0x9f4: 0x00a9, 0x9f5: 0x0311, -+ 0x9f6: 0x00b1, 0x9f7: 0x0319, 0x9f8: 0x0101, 0x9f9: 0x0321, 0x9fa: 0x0329, 0x9fb: 0x0008, -+ 0x9fc: 0x0051, 0x9fd: 0x0331, 0x9fe: 0x0339, 0x9ff: 0x00b9, - // Block 0x28, offset 0xa00 -- 0xa00: 0x0fa9, 0xa01: 0x0fb9, 0xa02: 0x0279, 0xa03: 0x0039, 0xa04: 0x0fc9, 0xa05: 0x0fe1, -- 0xa06: 0x05b5, 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: 0x05cd, 0xa15: 0x05cd, 0xa16: 0x0f99, 0xa17: 0x0fa9, -- 0xa18: 0x0fb9, 0xa19: 0x05b5, 0xa1a: 0x1071, 0xa1b: 0x1089, 0xa1c: 0x05e5, 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, -+ 0xa00: 0x0341, 0xa01: 0x0349, 0xa02: 0x00c1, 0xa03: 0x0019, 0xa04: 0x0351, 0xa05: 0x0359, -+ 0xa06: 0x05b5, 0xa07: 0x02e9, 0xa08: 0x02f1, 0xa09: 0x02f9, 0xa0a: 0x0361, 0xa0b: 0x0369, -+ 0xa0c: 0x0371, 0xa0d: 0x0309, 0xa0e: 0x0008, 0xa0f: 0x0319, 0xa10: 0x0321, 0xa11: 0x0379, -+ 0xa12: 0x0051, 0xa13: 0x0381, 0xa14: 0x05cd, 0xa15: 0x05cd, 0xa16: 0x0339, 0xa17: 0x0341, -+ 0xa18: 0x0349, 0xa19: 0x05b5, 0xa1a: 0x0389, 0xa1b: 0x0391, 0xa1c: 0x05e5, 0xa1d: 0x0399, -+ 0xa1e: 0x03a1, 0xa1f: 0x03a9, 0xa20: 0x03b1, 0xa21: 0x03b9, 0xa22: 0x0311, 0xa23: 0x00b9, -+ 0xa24: 0x0349, 0xa25: 0x0391, 0xa26: 0x0399, 0xa27: 0x03a1, 0xa28: 0x03c1, 0xa29: 0x03b1, -+ 0xa2a: 0x03b9, 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, -+ 0xa36: 0x0008, 0xa37: 0x0008, 0xa38: 0x03c9, 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: 0x05fd, 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: 0x0615, 0xa79: 0x13a1, 0xa7a: 0x13b9, 0xa7b: 0x13d1, -- 0xa7c: 0x13e1, 0xa7d: 0x13f9, 0xa7e: 0x1411, 0xa7f: 0x1429, -+ 0xa58: 0x0008, 0xa59: 0x0008, 0xa5a: 0x0008, 0xa5b: 0x03d1, 0xa5c: 0x03d9, 0xa5d: 0x03e1, -+ 0xa5e: 0x03e9, 0xa5f: 0x0371, 0xa60: 0x03f1, 0xa61: 0x03f9, 0xa62: 0x0401, 0xa63: 0x0409, -+ 0xa64: 0x0411, 0xa65: 0x0419, 0xa66: 0x0421, 0xa67: 0x05fd, 0xa68: 0x0429, 0xa69: 0x0431, -+ 0xa6a: 0xe17d, 0xa6b: 0x0439, 0xa6c: 0x0441, 0xa6d: 0x0449, 0xa6e: 0x0451, 0xa6f: 0x0459, -+ 0xa70: 0x0461, 0xa71: 0x0469, 0xa72: 0x0471, 0xa73: 0x0479, 0xa74: 0x0481, 0xa75: 0x0489, -+ 0xa76: 0x0491, 0xa77: 0x0499, 0xa78: 0x0615, 0xa79: 0x04a1, 0xa7a: 0x04a9, 0xa7b: 0x04b1, -+ 0xa7c: 0x04b9, 0xa7d: 0x04c1, 0xa7e: 0x04c9, 0xa7f: 0x04d1, - // 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, -@@ -1079,7 +1222,7 @@ var idnaValues = [8192]uint16{ - 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: 0x062d, 0xadb: 0x064d, 0xadc: 0x0008, 0xadd: 0x0008, -- 0xade: 0x1441, 0xadf: 0x0008, 0xae0: 0xe00d, 0xae1: 0x0008, 0xae2: 0xe00d, 0xae3: 0x0008, -+ 0xade: 0x04d9, 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, -@@ -1094,33 +1237,33 @@ var idnaValues = [8192]uint16{ - 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, -+ 0xb30: 0x0008, 0xb31: 0x04e1, 0xb32: 0x0008, 0xb33: 0x04e9, 0xb34: 0x0008, 0xb35: 0x04f1, -+ 0xb36: 0x0008, 0xb37: 0x04f9, 0xb38: 0x0008, 0xb39: 0x0501, 0xb3a: 0x0008, 0xb3b: 0x0509, -+ 0xb3c: 0x0008, 0xb3d: 0x0511, 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: 0x0665, 0xb7b: 0x1459, -- 0xb7c: 0x19b1, 0xb7d: 0x067e, 0xb7e: 0x1a31, 0xb7f: 0x069e, -+ 0xb40: 0x0519, 0xb41: 0x0521, 0xb42: 0x0529, 0xb43: 0x0531, 0xb44: 0x0539, 0xb45: 0x0541, -+ 0xb46: 0x0549, 0xb47: 0x0551, 0xb48: 0x0519, 0xb49: 0x0521, 0xb4a: 0x0529, 0xb4b: 0x0531, -+ 0xb4c: 0x0539, 0xb4d: 0x0541, 0xb4e: 0x0549, 0xb4f: 0x0551, 0xb50: 0x0559, 0xb51: 0x0561, -+ 0xb52: 0x0569, 0xb53: 0x0571, 0xb54: 0x0579, 0xb55: 0x0581, 0xb56: 0x0589, 0xb57: 0x0591, -+ 0xb58: 0x0559, 0xb59: 0x0561, 0xb5a: 0x0569, 0xb5b: 0x0571, 0xb5c: 0x0579, 0xb5d: 0x0581, -+ 0xb5e: 0x0589, 0xb5f: 0x0591, 0xb60: 0x0599, 0xb61: 0x05a1, 0xb62: 0x05a9, 0xb63: 0x05b1, -+ 0xb64: 0x05b9, 0xb65: 0x05c1, 0xb66: 0x05c9, 0xb67: 0x05d1, 0xb68: 0x0599, 0xb69: 0x05a1, -+ 0xb6a: 0x05a9, 0xb6b: 0x05b1, 0xb6c: 0x05b9, 0xb6d: 0x05c1, 0xb6e: 0x05c9, 0xb6f: 0x05d1, -+ 0xb70: 0x0008, 0xb71: 0x0008, 0xb72: 0x05d9, 0xb73: 0x05e1, 0xb74: 0x05e9, 0xb75: 0x0040, -+ 0xb76: 0x0008, 0xb77: 0x05f1, 0xb78: 0xe045, 0xb79: 0xe045, 0xb7a: 0x0665, 0xb7b: 0x04e1, -+ 0xb7c: 0x05e1, 0xb7d: 0x067e, 0xb7e: 0x05f9, 0xb7f: 0x069e, - // Block 0x2e, offset 0xb80 -- 0xb80: 0x06be, 0xb81: 0x1a4a, 0xb82: 0x1a79, 0xb83: 0x1aa9, 0xb84: 0x1ad1, 0xb85: 0x0040, -- 0xb86: 0x0008, 0xb87: 0x1af9, 0xb88: 0x06dd, 0xb89: 0x1471, 0xb8a: 0x06f5, 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: 0x070d, 0xb9b: 0x14a1, 0xb9c: 0x0040, 0xb9d: 0x1bd2, -- 0xb9e: 0x1c02, 0xb9f: 0x1c32, 0xba0: 0x0008, 0xba1: 0x0008, 0xba2: 0x0008, 0xba3: 0x1c61, -+ 0xb80: 0x06be, 0xb81: 0x0602, 0xb82: 0x0609, 0xb83: 0x0611, 0xb84: 0x0619, 0xb85: 0x0040, -+ 0xb86: 0x0008, 0xb87: 0x0621, 0xb88: 0x06dd, 0xb89: 0x04e9, 0xb8a: 0x06f5, 0xb8b: 0x04f1, -+ 0xb8c: 0x0611, 0xb8d: 0x062a, 0xb8e: 0x0632, 0xb8f: 0x063a, 0xb90: 0x0008, 0xb91: 0x0008, -+ 0xb92: 0x0008, 0xb93: 0x0641, 0xb94: 0x0040, 0xb95: 0x0040, 0xb96: 0x0008, 0xb97: 0x0008, -+ 0xb98: 0xe045, 0xb99: 0xe045, 0xb9a: 0x070d, 0xb9b: 0x04f9, 0xb9c: 0x0040, 0xb9d: 0x064a, -+ 0xb9e: 0x0652, 0xb9f: 0x065a, 0xba0: 0x0008, 0xba1: 0x0008, 0xba2: 0x0008, 0xba3: 0x0661, - 0xba4: 0x0008, 0xba5: 0x0008, 0xba6: 0x0008, 0xba7: 0x0008, 0xba8: 0xe045, 0xba9: 0xe045, -- 0xbaa: 0x0725, 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: 0x073d, 0xbb9: 0x14b9, 0xbba: 0x0515, 0xbbb: 0x14e9, -- 0xbbc: 0x1ce9, 0xbbd: 0x0756, 0xbbe: 0x0776, 0xbbf: 0x0040, -+ 0xbaa: 0x0725, 0xbab: 0x0509, 0xbac: 0xe04d, 0xbad: 0x066a, 0xbae: 0x012a, 0xbaf: 0x0672, -+ 0xbb0: 0x0040, 0xbb1: 0x0040, 0xbb2: 0x0679, 0xbb3: 0x0681, 0xbb4: 0x0689, 0xbb5: 0x0040, -+ 0xbb6: 0x0008, 0xbb7: 0x0691, 0xbb8: 0x073d, 0xbb9: 0x0501, 0xbba: 0x0515, 0xbbb: 0x0511, -+ 0xbbc: 0x0681, 0xbbd: 0x0756, 0xbbe: 0x0776, 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, -@@ -1130,72 +1273,72 @@ var idnaValues = [8192]uint16{ - 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: 0x07b6, 0xbff: 0x0018, -+ 0xbf0: 0x0018, 0xbf1: 0x0018, 0xbf2: 0x0018, 0xbf3: 0x0699, 0xbf4: 0x06a1, 0xbf5: 0x0018, -+ 0xbf6: 0x06a9, 0xbf7: 0x06b1, 0xbf8: 0x0018, 0xbf9: 0x0018, 0xbfa: 0x0018, 0xbfb: 0x0018, -+ 0xbfc: 0x06ba, 0xbfd: 0x0018, 0xbfe: 0x07b6, 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, -+ 0xc06: 0x0018, 0xc07: 0x06c2, 0xc08: 0x06ca, 0xc09: 0x06d2, 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, -+ 0xc12: 0x0018, 0xc13: 0x0018, 0xc14: 0x0018, 0xc15: 0x0018, 0xc16: 0x0018, 0xc17: 0x06d9, - 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: 0x07d5, -- 0xc3c: 0x1fc2, 0xc3d: 0x1fd2, 0xc3e: 0x1fe2, 0xc3f: 0x0f71, -+ 0xc30: 0x06e1, 0xc31: 0x0311, 0xc32: 0x0040, 0xc33: 0x0040, 0xc34: 0x06e9, 0xc35: 0x06f1, -+ 0xc36: 0x06f9, 0xc37: 0x0701, 0xc38: 0x0709, 0xc39: 0x0711, 0xc3a: 0x071a, 0xc3b: 0x07d5, -+ 0xc3c: 0x0722, 0xc3d: 0x072a, 0xc3e: 0x0732, 0xc3f: 0x0329, - // 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: 0x07ed, -- 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, -+ 0xc40: 0x06e1, 0xc41: 0x0049, 0xc42: 0x0029, 0xc43: 0x0031, 0xc44: 0x06e9, 0xc45: 0x06f1, -+ 0xc46: 0x06f9, 0xc47: 0x0701, 0xc48: 0x0709, 0xc49: 0x0711, 0xc4a: 0x071a, 0xc4b: 0x07ed, -+ 0xc4c: 0x0722, 0xc4d: 0x072a, 0xc4e: 0x0732, 0xc4f: 0x0040, 0xc50: 0x0019, 0xc51: 0x02f9, -+ 0xc52: 0x0051, 0xc53: 0x0109, 0xc54: 0x0361, 0xc55: 0x00a9, 0xc56: 0x0319, 0xc57: 0x0101, -+ 0xc58: 0x0321, 0xc59: 0x0329, 0xc5a: 0x0339, 0xc5b: 0x0089, 0xc5c: 0x0341, 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, -+ 0xc64: 0x0018, 0xc65: 0x0018, 0xc66: 0x0018, 0xc67: 0x0018, 0xc68: 0x0739, 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: 0x0806, 0xc81: 0x0826, 0xc82: 0x1159, 0xc83: 0x0845, 0xc84: 0x0018, 0xc85: 0x0866, -- 0xc86: 0x0886, 0xc87: 0x1011, 0xc88: 0x0018, 0xc89: 0x08a5, 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: 0x08c5, 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: 0x08e5, -- 0xcbc: 0x2109, 0xcbd: 0x10b1, 0xcbe: 0x10b1, 0xcbf: 0x2109, -+ 0xc80: 0x0806, 0xc81: 0x0826, 0xc82: 0x03d9, 0xc83: 0x0845, 0xc84: 0x0018, 0xc85: 0x0866, -+ 0xc86: 0x0886, 0xc87: 0x0369, 0xc88: 0x0018, 0xc89: 0x08a5, 0xc8a: 0x0309, 0xc8b: 0x00a9, -+ 0xc8c: 0x00a9, 0xc8d: 0x00a9, 0xc8e: 0x00a9, 0xc8f: 0x0741, 0xc90: 0x0311, 0xc91: 0x0311, -+ 0xc92: 0x0101, 0xc93: 0x0101, 0xc94: 0x0018, 0xc95: 0x0329, 0xc96: 0x0749, 0xc97: 0x0018, -+ 0xc98: 0x0018, 0xc99: 0x0339, 0xc9a: 0x0751, 0xc9b: 0x00b9, 0xc9c: 0x00b9, 0xc9d: 0x00b9, -+ 0xc9e: 0x0018, 0xc9f: 0x0018, 0xca0: 0x0759, 0xca1: 0x08c5, 0xca2: 0x0761, 0xca3: 0x0018, -+ 0xca4: 0x04b1, 0xca5: 0x0018, 0xca6: 0x0769, 0xca7: 0x0018, 0xca8: 0x04b1, 0xca9: 0x0018, -+ 0xcaa: 0x0319, 0xcab: 0x0771, 0xcac: 0x02e9, 0xcad: 0x03d9, 0xcae: 0x0018, 0xcaf: 0x02f9, -+ 0xcb0: 0x02f9, 0xcb1: 0x03f1, 0xcb2: 0x0040, 0xcb3: 0x0321, 0xcb4: 0x0051, 0xcb5: 0x0779, -+ 0xcb6: 0x0781, 0xcb7: 0x0789, 0xcb8: 0x0791, 0xcb9: 0x0311, 0xcba: 0x0018, 0xcbb: 0x08e5, -+ 0xcbc: 0x0799, 0xcbd: 0x03a1, 0xcbe: 0x03a1, 0xcbf: 0x0799, - // Block 0x33, offset 0xcc0 -- 0xcc0: 0x0905, 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: 0x091d, 0xce3: 0x2439, -- 0xce4: 0x1089, 0xce5: 0x2451, 0xce6: 0x093d, 0xce7: 0x2469, 0xce8: 0x2491, 0xce9: 0x0369, -- 0xcea: 0x24a9, 0xceb: 0x095d, 0xcec: 0x0359, 0xced: 0x1159, 0xcee: 0x0ef9, 0xcef: 0x0f61, -- 0xcf0: 0x0f41, 0xcf1: 0x2421, 0xcf2: 0x097d, 0xcf3: 0x2439, 0xcf4: 0x1089, 0xcf5: 0x2451, -- 0xcf6: 0x099d, 0xcf7: 0x2469, 0xcf8: 0x2491, 0xcf9: 0x0369, 0xcfa: 0x24a9, 0xcfb: 0x09bd, -- 0xcfc: 0x0359, 0xcfd: 0x1159, 0xcfe: 0x0ef9, 0xcff: 0x0f61, -+ 0xcc0: 0x0905, 0xcc1: 0x0018, 0xcc2: 0x0018, 0xcc3: 0x0018, 0xcc4: 0x0018, 0xcc5: 0x02f1, -+ 0xcc6: 0x02f1, 0xcc7: 0x02f9, 0xcc8: 0x0311, 0xcc9: 0x00b1, 0xcca: 0x0018, 0xccb: 0x0018, -+ 0xccc: 0x0018, 0xccd: 0x0018, 0xcce: 0x0008, 0xccf: 0x0018, 0xcd0: 0x07a1, 0xcd1: 0x07a9, -+ 0xcd2: 0x07b1, 0xcd3: 0x07b9, 0xcd4: 0x07c1, 0xcd5: 0x07c9, 0xcd6: 0x07d1, 0xcd7: 0x07d9, -+ 0xcd8: 0x07e1, 0xcd9: 0x07e9, 0xcda: 0x07f1, 0xcdb: 0x07f9, 0xcdc: 0x0801, 0xcdd: 0x0809, -+ 0xcde: 0x0811, 0xcdf: 0x0819, 0xce0: 0x0311, 0xce1: 0x0821, 0xce2: 0x091d, 0xce3: 0x0829, -+ 0xce4: 0x0391, 0xce5: 0x0831, 0xce6: 0x093d, 0xce7: 0x0839, 0xce8: 0x0841, 0xce9: 0x0109, -+ 0xcea: 0x0849, 0xceb: 0x095d, 0xcec: 0x0101, 0xced: 0x03d9, 0xcee: 0x02f1, 0xcef: 0x0321, -+ 0xcf0: 0x0311, 0xcf1: 0x0821, 0xcf2: 0x097d, 0xcf3: 0x0829, 0xcf4: 0x0391, 0xcf5: 0x0831, -+ 0xcf6: 0x099d, 0xcf7: 0x0839, 0xcf8: 0x0841, 0xcf9: 0x0109, 0xcfa: 0x0849, 0xcfb: 0x09bd, -+ 0xcfc: 0x0101, 0xcfd: 0x03d9, 0xcfe: 0x02f1, 0xcff: 0x0321, - // 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: 0x0a1e, 0xd35: 0x0a3e, -+ 0xd1e: 0x0040, 0xd1f: 0x0040, 0xd20: 0x0049, 0xd21: 0x0029, 0xd22: 0x0031, 0xd23: 0x06e9, -+ 0xd24: 0x06f1, 0xd25: 0x06f9, 0xd26: 0x0701, 0xd27: 0x0709, 0xd28: 0x0711, 0xd29: 0x0879, -+ 0xd2a: 0x0881, 0xd2b: 0x0889, 0xd2c: 0x0891, 0xd2d: 0x0899, 0xd2e: 0x08a1, 0xd2f: 0x08a9, -+ 0xd30: 0x08b1, 0xd31: 0x08b9, 0xd32: 0x08c1, 0xd33: 0x08c9, 0xd34: 0x0a1e, 0xd35: 0x0a3e, - 0xd36: 0x0a5e, 0xd37: 0x0a7e, 0xd38: 0x0a9e, 0xd39: 0x0abe, 0xd3a: 0x0ade, 0xd3b: 0x0afe, -- 0xd3c: 0x0b1e, 0xd3d: 0x270a, 0xd3e: 0x2732, 0xd3f: 0x275a, -+ 0xd3c: 0x0b1e, 0xd3d: 0x08d2, 0xd3e: 0x08da, 0xd3f: 0x08e2, - // 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, -+ 0xd40: 0x08ea, 0xd41: 0x08f2, 0xd42: 0x08fa, 0xd43: 0x0902, 0xd44: 0x090a, 0xd45: 0x0912, -+ 0xd46: 0x091a, 0xd47: 0x0922, 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: 0x0b3e, 0xd5d: 0x0b5e, -@@ -1203,17 +1346,17 @@ var idnaValues = [8192]uint16{ - 0xd64: 0x0c3e, 0xd65: 0x0c5e, 0xd66: 0x0c7e, 0xd67: 0x0c9e, 0xd68: 0x0cbe, 0xd69: 0x0cde, - 0xd6a: 0x0cfe, 0xd6b: 0x0d1e, 0xd6c: 0x0d3e, 0xd6d: 0x0d5e, 0xd6e: 0x0d7e, 0xd6f: 0x0d9e, - 0xd70: 0x0dbe, 0xd71: 0x0dde, 0xd72: 0x0dfe, 0xd73: 0x0e1e, 0xd74: 0x0e3e, 0xd75: 0x0e5e, -- 0xd76: 0x0039, 0xd77: 0x0ee9, 0xd78: 0x1159, 0xd79: 0x0ef9, 0xd7a: 0x0f09, 0xd7b: 0x1199, -- 0xd7c: 0x0f31, 0xd7d: 0x0249, 0xd7e: 0x0f41, 0xd7f: 0x0259, -+ 0xd76: 0x0019, 0xd77: 0x02e9, 0xd78: 0x03d9, 0xd79: 0x02f1, 0xd7a: 0x02f9, 0xd7b: 0x03f1, -+ 0xd7c: 0x0309, 0xd7d: 0x00a9, 0xd7e: 0x0311, 0xd7f: 0x00b1, - // 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, -+ 0xd80: 0x0319, 0xd81: 0x0101, 0xd82: 0x0321, 0xd83: 0x0329, 0xd84: 0x0051, 0xd85: 0x0339, -+ 0xd86: 0x0751, 0xd87: 0x00b9, 0xd88: 0x0089, 0xd89: 0x0341, 0xd8a: 0x0349, 0xd8b: 0x0391, -+ 0xd8c: 0x00c1, 0xd8d: 0x0109, 0xd8e: 0x00c9, 0xd8f: 0x04b1, 0xd90: 0x0019, 0xd91: 0x02e9, -+ 0xd92: 0x03d9, 0xd93: 0x02f1, 0xd94: 0x02f9, 0xd95: 0x03f1, 0xd96: 0x0309, 0xd97: 0x00a9, -+ 0xd98: 0x0311, 0xd99: 0x00b1, 0xd9a: 0x0319, 0xd9b: 0x0101, 0xd9c: 0x0321, 0xd9d: 0x0329, -+ 0xd9e: 0x0051, 0xd9f: 0x0339, 0xda0: 0x0751, 0xda1: 0x00b9, 0xda2: 0x0089, 0xda3: 0x0341, -+ 0xda4: 0x0349, 0xda5: 0x0391, 0xda6: 0x00c1, 0xda7: 0x0109, 0xda8: 0x00c9, 0xda9: 0x04b1, -+ 0xdaa: 0x06e1, 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, -@@ -1223,12 +1366,12 @@ var idnaValues = [8192]uint16{ - 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: 0x0ed5, -- 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, -+ 0xdde: 0x0008, 0xddf: 0x0040, 0xde0: 0xe00d, 0xde1: 0x0008, 0xde2: 0x0941, 0xde3: 0x0ed5, -+ 0xde4: 0x0949, 0xde5: 0x0008, 0xde6: 0x0008, 0xde7: 0xe07d, 0xde8: 0x0008, 0xde9: 0xe01d, -+ 0xdea: 0x0008, 0xdeb: 0xe03d, 0xdec: 0x0008, 0xded: 0x0359, 0xdee: 0x0441, 0xdef: 0x0351, -+ 0xdf0: 0x03d1, 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, -+ 0xdfc: 0x00b1, 0xdfd: 0x0391, 0xdfe: 0x0951, 0xdff: 0x0959, - // 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, -@@ -1254,7 +1397,7 @@ var idnaValues = [8192]uint16{ - 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, -+ 0xe80: 0x000a, 0xe81: 0x0018, 0xe82: 0x0961, 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, -@@ -1290,17 +1433,17 @@ var idnaValues = [8192]uint16{ - 0xf36: 0x0008, 0xf37: 0x0008, 0xf38: 0x0008, 0xf39: 0x0008, 0xf3a: 0x0008, 0xf3b: 0x0008, - 0xf3c: 0x0008, 0xf3d: 0x0008, 0xf3e: 0x0008, 0xf3f: 0x0008, - // Block 0x3d, offset 0xf40 -- 0xf40: 0x36a2, 0xf41: 0x36d2, 0xf42: 0x3702, 0xf43: 0x3732, 0xf44: 0x32d5, 0xf45: 0x32f5, -+ 0xf40: 0x0b82, 0xf41: 0x0b8a, 0xf42: 0x0b92, 0xf43: 0x0b9a, 0xf44: 0x32d5, 0xf45: 0x32f5, - 0xf46: 0x3315, 0xf47: 0x3335, 0xf48: 0x0018, 0xf49: 0x0018, 0xf4a: 0x0018, 0xf4b: 0x0018, -- 0xf4c: 0x0018, 0xf4d: 0x0018, 0xf4e: 0x0018, 0xf4f: 0x0018, 0xf50: 0x3355, 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: 0x3375, 0xf61: 0x3395, 0xf62: 0x33b5, 0xf63: 0x33d5, -+ 0xf4c: 0x0018, 0xf4d: 0x0018, 0xf4e: 0x0018, 0xf4f: 0x0018, 0xf50: 0x3355, 0xf51: 0x0ba1, -+ 0xf52: 0x0ba9, 0xf53: 0x0bb1, 0xf54: 0x0bb9, 0xf55: 0x0bc1, 0xf56: 0x0bc9, 0xf57: 0x0bd1, -+ 0xf58: 0x0bd9, 0xf59: 0x0be1, 0xf5a: 0x0be9, 0xf5b: 0x0bf1, 0xf5c: 0x0bf9, 0xf5d: 0x0c01, -+ 0xf5e: 0x0c09, 0xf5f: 0x0c11, 0xf60: 0x3375, 0xf61: 0x3395, 0xf62: 0x33b5, 0xf63: 0x33d5, - 0xf64: 0x33f5, 0xf65: 0x33f5, 0xf66: 0x3415, 0xf67: 0x3435, 0xf68: 0x3455, 0xf69: 0x3475, - 0xf6a: 0x3495, 0xf6b: 0x34b5, 0xf6c: 0x34d5, 0xf6d: 0x34f5, 0xf6e: 0x3515, 0xf6f: 0x3535, - 0xf70: 0x3555, 0xf71: 0x3575, 0xf72: 0x3595, 0xf73: 0x35b5, 0xf74: 0x35d5, 0xf75: 0x35f5, - 0xf76: 0x3615, 0xf77: 0x3635, 0xf78: 0x3655, 0xf79: 0x3675, 0xf7a: 0x3695, 0xf7b: 0x36b5, -- 0xf7c: 0x38c9, 0xf7d: 0x3901, 0xf7e: 0x36d5, 0xf7f: 0x0018, -+ 0xf7c: 0x0c19, 0xf7d: 0x0c21, 0xf7e: 0x36d5, 0xf7f: 0x0018, - // Block 0x3e, offset 0xf80 - 0xf80: 0x36f5, 0xf81: 0x3715, 0xf82: 0x3735, 0xf83: 0x3755, 0xf84: 0x3775, 0xf85: 0x3795, - 0xf86: 0x37b5, 0xf87: 0x37d5, 0xf88: 0x37f5, 0xf89: 0x3815, 0xf8a: 0x3835, 0xf8b: 0x3855, -@@ -1310,13 +1453,13 @@ var idnaValues = [8192]uint16{ - 0xf9e: 0x3ab5, 0xf9f: 0x3ad5, 0xfa0: 0x3af5, 0xfa1: 0x3b15, 0xfa2: 0x3b35, 0xfa3: 0x3b55, - 0xfa4: 0x3b75, 0xfa5: 0x3b95, 0xfa6: 0x1295, 0xfa7: 0x3bb5, 0xfa8: 0x3bd5, 0xfa9: 0x3bf5, - 0xfaa: 0x3c15, 0xfab: 0x3c35, 0xfac: 0x3c55, 0xfad: 0x3c75, 0xfae: 0x23b5, 0xfaf: 0x3c95, -- 0xfb0: 0x3cb5, 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, -+ 0xfb0: 0x3cb5, 0xfb1: 0x0c29, 0xfb2: 0x0c31, 0xfb3: 0x0c39, 0xfb4: 0x0c41, 0xfb5: 0x0c49, -+ 0xfb6: 0x0c51, 0xfb7: 0x0c59, 0xfb8: 0x0c61, 0xfb9: 0x0c69, 0xfba: 0x0c71, 0xfbb: 0x0c79, -+ 0xfbc: 0x0c81, 0xfbd: 0x0c89, 0xfbe: 0x0c91, 0xfbf: 0x0c99, - // 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: 0x3cd5, 0xfce: 0x3cb1, 0xfcf: 0x3cf5, 0xfd0: 0x3d15, 0xfd1: 0x3d2d, -+ 0xfc0: 0x0ca1, 0xfc1: 0x0ca9, 0xfc2: 0x0cb1, 0xfc3: 0x0cb9, 0xfc4: 0x0cc1, 0xfc5: 0x0cc9, -+ 0xfc6: 0x0cd1, 0xfc7: 0x0cd9, 0xfc8: 0x0ce1, 0xfc9: 0x0ce9, 0xfca: 0x0cf1, 0xfcb: 0x0cf9, -+ 0xfcc: 0x0d01, 0xfcd: 0x3cd5, 0xfce: 0x0d09, 0xfcf: 0x3cf5, 0xfd0: 0x3d15, 0xfd1: 0x3d2d, - 0xfd2: 0x3d45, 0xfd3: 0x3d5d, 0xfd4: 0x3d75, 0xfd5: 0x3d75, 0xfd6: 0x3d5d, 0xfd7: 0x3d8d, - 0xfd8: 0x07d5, 0xfd9: 0x3da5, 0xfda: 0x3dbd, 0xfdb: 0x3dd5, 0xfdc: 0x3ded, 0xfdd: 0x3e05, - 0xfde: 0x3e1d, 0xfdf: 0x3e35, 0xfe0: 0x3e4d, 0xfe1: 0x3e65, 0xfe2: 0x3e7d, 0xfe3: 0x3e95, -@@ -1324,769 +1467,769 @@ var idnaValues = [8192]uint16{ - 0xfea: 0x3ef5, 0xfeb: 0x3f0d, 0xfec: 0x3f25, 0xfed: 0x3f3d, 0xfee: 0x3f55, 0xfef: 0x3f55, - 0xff0: 0x3f6d, 0xff1: 0x3f6d, 0xff2: 0x3f6d, 0xff3: 0x3f85, 0xff4: 0x3f9d, 0xff5: 0x3fb5, - 0xff6: 0x3fcd, 0xff7: 0x3fb5, 0xff8: 0x3fe5, 0xff9: 0x3ffd, 0xffa: 0x3f85, 0xffb: 0x4015, -- 0xffc: 0x402d, 0xffd: 0x402d, 0xffe: 0x402d, 0xfff: 0x3cc9, -+ 0xffc: 0x402d, 0xffd: 0x402d, 0xffe: 0x402d, 0xfff: 0x0d11, - // Block 0x40, offset 0x1000 -- 0x1000: 0x3d01, 0x1001: 0x3d69, 0x1002: 0x3dd1, 0x1003: 0x3e39, 0x1004: 0x3e89, 0x1005: 0x3ef1, -- 0x1006: 0x3f41, 0x1007: 0x3f91, 0x1008: 0x4011, 0x1009: 0x4079, 0x100a: 0x40c9, 0x100b: 0x4119, -- 0x100c: 0x4169, 0x100d: 0x41d1, 0x100e: 0x4239, 0x100f: 0x4289, 0x1010: 0x42d9, 0x1011: 0x4311, -- 0x1012: 0x4361, 0x1013: 0x43c9, 0x1014: 0x4431, 0x1015: 0x4469, 0x1016: 0x44e9, 0x1017: 0x4581, -- 0x1018: 0x4601, 0x1019: 0x4651, 0x101a: 0x46d1, 0x101b: 0x4751, 0x101c: 0x47b9, 0x101d: 0x4809, -- 0x101e: 0x4859, 0x101f: 0x48a9, 0x1020: 0x4911, 0x1021: 0x4991, 0x1022: 0x49f9, 0x1023: 0x4a49, -- 0x1024: 0x4a99, 0x1025: 0x4ae9, 0x1026: 0x4b21, 0x1027: 0x4b59, 0x1028: 0x4b91, 0x1029: 0x4bc9, -- 0x102a: 0x4c19, 0x102b: 0x4c69, 0x102c: 0x4ce9, 0x102d: 0x4d39, 0x102e: 0x4da1, 0x102f: 0x4e21, -- 0x1030: 0x4e71, 0x1031: 0x4ea9, 0x1032: 0x4ee1, 0x1033: 0x4f61, 0x1034: 0x4fc9, 0x1035: 0x5049, -- 0x1036: 0x5099, 0x1037: 0x5119, 0x1038: 0x5151, 0x1039: 0x51a1, 0x103a: 0x51f1, 0x103b: 0x5241, -- 0x103c: 0x5291, 0x103d: 0x52e1, 0x103e: 0x5349, 0x103f: 0x5399, -+ 0x1000: 0x10f9, 0x1001: 0x1101, 0x1002: 0x40a5, 0x1003: 0x1109, 0x1004: 0x1111, 0x1005: 0x1119, -+ 0x1006: 0x1121, 0x1007: 0x1129, 0x1008: 0x40c5, 0x1009: 0x1131, 0x100a: 0x1139, 0x100b: 0x1141, -+ 0x100c: 0x40e5, 0x100d: 0x40e5, 0x100e: 0x1149, 0x100f: 0x1151, 0x1010: 0x1159, 0x1011: 0x4105, -+ 0x1012: 0x4125, 0x1013: 0x4145, 0x1014: 0x4165, 0x1015: 0x4185, 0x1016: 0x1161, 0x1017: 0x1169, -+ 0x1018: 0x1171, 0x1019: 0x1179, 0x101a: 0x1181, 0x101b: 0x41a5, 0x101c: 0x1189, 0x101d: 0x1191, -+ 0x101e: 0x1199, 0x101f: 0x41c5, 0x1020: 0x41e5, 0x1021: 0x11a1, 0x1022: 0x4205, 0x1023: 0x4225, -+ 0x1024: 0x4245, 0x1025: 0x11a9, 0x1026: 0x4265, 0x1027: 0x11b1, 0x1028: 0x11b9, 0x1029: 0x10f9, -+ 0x102a: 0x4285, 0x102b: 0x42a5, 0x102c: 0x42c5, 0x102d: 0x42e5, 0x102e: 0x11c1, 0x102f: 0x11c9, -+ 0x1030: 0x11d1, 0x1031: 0x11d9, 0x1032: 0x4305, 0x1033: 0x11e1, 0x1034: 0x11e9, 0x1035: 0x11f1, -+ 0x1036: 0x4325, 0x1037: 0x11f9, 0x1038: 0x1201, 0x1039: 0x11f9, 0x103a: 0x1209, 0x103b: 0x1211, -+ 0x103c: 0x4345, 0x103d: 0x1219, 0x103e: 0x1221, 0x103f: 0x1219, - // Block 0x41, offset 0x1040 -- 0x1040: 0x53d1, 0x1041: 0x5421, 0x1042: 0x5471, 0x1043: 0x54c1, 0x1044: 0x5529, 0x1045: 0x5579, -- 0x1046: 0x55c9, 0x1047: 0x5619, 0x1048: 0x5699, 0x1049: 0x5701, 0x104a: 0x5739, 0x104b: 0x57b9, -- 0x104c: 0x57f1, 0x104d: 0x5859, 0x104e: 0x58c1, 0x104f: 0x5911, 0x1050: 0x5961, 0x1051: 0x59b1, -- 0x1052: 0x5a19, 0x1053: 0x5a51, 0x1054: 0x5aa1, 0x1055: 0x5b09, 0x1056: 0x5b41, 0x1057: 0x5bc1, -- 0x1058: 0x5c11, 0x1059: 0x5c39, 0x105a: 0x5c61, 0x105b: 0x5c89, 0x105c: 0x5cb1, 0x105d: 0x5cd9, -- 0x105e: 0x5d01, 0x105f: 0x5d29, 0x1060: 0x5d51, 0x1061: 0x5d79, 0x1062: 0x5da1, 0x1063: 0x5dd1, -- 0x1064: 0x5e01, 0x1065: 0x5e31, 0x1066: 0x5e61, 0x1067: 0x5e91, 0x1068: 0x5ec1, 0x1069: 0x5ef1, -- 0x106a: 0x5f21, 0x106b: 0x5f51, 0x106c: 0x5f81, 0x106d: 0x5fb1, 0x106e: 0x5fe1, 0x106f: 0x6011, -- 0x1070: 0x6041, 0x1071: 0x4045, 0x1072: 0x6071, 0x1073: 0x6089, 0x1074: 0x4065, 0x1075: 0x60a1, -- 0x1076: 0x60b9, 0x1077: 0x60d1, 0x1078: 0x4085, 0x1079: 0x4085, 0x107a: 0x60e9, 0x107b: 0x6101, -- 0x107c: 0x6139, 0x107d: 0x6171, 0x107e: 0x61a9, 0x107f: 0x61e1, -+ 0x1040: 0x4365, 0x1041: 0x4385, 0x1042: 0x0040, 0x1043: 0x1229, 0x1044: 0x1231, 0x1045: 0x1239, -+ 0x1046: 0x1241, 0x1047: 0x0040, 0x1048: 0x1249, 0x1049: 0x1251, 0x104a: 0x1259, 0x104b: 0x1261, -+ 0x104c: 0x1269, 0x104d: 0x1271, 0x104e: 0x1199, 0x104f: 0x1279, 0x1050: 0x1281, 0x1051: 0x1289, -+ 0x1052: 0x43a5, 0x1053: 0x1291, 0x1054: 0x1121, 0x1055: 0x43c5, 0x1056: 0x43e5, 0x1057: 0x1299, -+ 0x1058: 0x0040, 0x1059: 0x4405, 0x105a: 0x12a1, 0x105b: 0x12a9, 0x105c: 0x12b1, 0x105d: 0x12b9, -+ 0x105e: 0x12c1, 0x105f: 0x12c9, 0x1060: 0x12d1, 0x1061: 0x12d9, 0x1062: 0x12e1, 0x1063: 0x12e9, -+ 0x1064: 0x12f1, 0x1065: 0x12f9, 0x1066: 0x1301, 0x1067: 0x1309, 0x1068: 0x1311, 0x1069: 0x1319, -+ 0x106a: 0x1321, 0x106b: 0x1329, 0x106c: 0x1331, 0x106d: 0x1339, 0x106e: 0x1341, 0x106f: 0x1349, -+ 0x1070: 0x1351, 0x1071: 0x1359, 0x1072: 0x1361, 0x1073: 0x1369, 0x1074: 0x1371, 0x1075: 0x1379, -+ 0x1076: 0x1381, 0x1077: 0x1389, 0x1078: 0x1391, 0x1079: 0x1399, 0x107a: 0x13a1, 0x107b: 0x13a9, -+ 0x107c: 0x13b1, 0x107d: 0x13b9, 0x107e: 0x13c1, 0x107f: 0x4425, - // Block 0x42, offset 0x1080 -- 0x1080: 0x6249, 0x1081: 0x6261, 0x1082: 0x40a5, 0x1083: 0x6279, 0x1084: 0x6291, 0x1085: 0x62a9, -- 0x1086: 0x62c1, 0x1087: 0x62d9, 0x1088: 0x40c5, 0x1089: 0x62f1, 0x108a: 0x6319, 0x108b: 0x6331, -- 0x108c: 0x40e5, 0x108d: 0x40e5, 0x108e: 0x6349, 0x108f: 0x6361, 0x1090: 0x6379, 0x1091: 0x4105, -- 0x1092: 0x4125, 0x1093: 0x4145, 0x1094: 0x4165, 0x1095: 0x4185, 0x1096: 0x6391, 0x1097: 0x63a9, -- 0x1098: 0x63c1, 0x1099: 0x63d9, 0x109a: 0x63f1, 0x109b: 0x41a5, 0x109c: 0x6409, 0x109d: 0x6421, -- 0x109e: 0x6439, 0x109f: 0x41c5, 0x10a0: 0x41e5, 0x10a1: 0x6451, 0x10a2: 0x4205, 0x10a3: 0x4225, -- 0x10a4: 0x4245, 0x10a5: 0x6469, 0x10a6: 0x4265, 0x10a7: 0x6481, 0x10a8: 0x64b1, 0x10a9: 0x6249, -- 0x10aa: 0x4285, 0x10ab: 0x42a5, 0x10ac: 0x42c5, 0x10ad: 0x42e5, 0x10ae: 0x64e9, 0x10af: 0x6529, -- 0x10b0: 0x6571, 0x10b1: 0x6589, 0x10b2: 0x4305, 0x10b3: 0x65a1, 0x10b4: 0x65b9, 0x10b5: 0x65d1, -- 0x10b6: 0x4325, 0x10b7: 0x65e9, 0x10b8: 0x6601, 0x10b9: 0x65e9, 0x10ba: 0x6619, 0x10bb: 0x6631, -- 0x10bc: 0x4345, 0x10bd: 0x6649, 0x10be: 0x6661, 0x10bf: 0x6649, -+ 0x1080: 0xe00d, 0x1081: 0x0008, 0x1082: 0xe00d, 0x1083: 0x0008, 0x1084: 0xe00d, 0x1085: 0x0008, -+ 0x1086: 0xe00d, 0x1087: 0x0008, 0x1088: 0xe00d, 0x1089: 0x0008, 0x108a: 0xe00d, 0x108b: 0x0008, -+ 0x108c: 0xe00d, 0x108d: 0x0008, 0x108e: 0xe00d, 0x108f: 0x0008, 0x1090: 0xe00d, 0x1091: 0x0008, -+ 0x1092: 0xe00d, 0x1093: 0x0008, 0x1094: 0xe00d, 0x1095: 0x0008, 0x1096: 0xe00d, 0x1097: 0x0008, -+ 0x1098: 0xe00d, 0x1099: 0x0008, 0x109a: 0xe00d, 0x109b: 0x0008, 0x109c: 0xe00d, 0x109d: 0x0008, -+ 0x109e: 0xe00d, 0x109f: 0x0008, 0x10a0: 0xe00d, 0x10a1: 0x0008, 0x10a2: 0xe00d, 0x10a3: 0x0008, -+ 0x10a4: 0xe00d, 0x10a5: 0x0008, 0x10a6: 0xe00d, 0x10a7: 0x0008, 0x10a8: 0xe00d, 0x10a9: 0x0008, -+ 0x10aa: 0xe00d, 0x10ab: 0x0008, 0x10ac: 0xe00d, 0x10ad: 0x0008, 0x10ae: 0x0008, 0x10af: 0x3308, -+ 0x10b0: 0x3318, 0x10b1: 0x3318, 0x10b2: 0x3318, 0x10b3: 0x0018, 0x10b4: 0x3308, 0x10b5: 0x3308, -+ 0x10b6: 0x3308, 0x10b7: 0x3308, 0x10b8: 0x3308, 0x10b9: 0x3308, 0x10ba: 0x3308, 0x10bb: 0x3308, -+ 0x10bc: 0x3308, 0x10bd: 0x3308, 0x10be: 0x0018, 0x10bf: 0x0008, - // Block 0x43, offset 0x10c0 -- 0x10c0: 0x4365, 0x10c1: 0x4385, 0x10c2: 0x0040, 0x10c3: 0x6679, 0x10c4: 0x6691, 0x10c5: 0x66a9, -- 0x10c6: 0x66c1, 0x10c7: 0x0040, 0x10c8: 0x66f9, 0x10c9: 0x6711, 0x10ca: 0x6729, 0x10cb: 0x6741, -- 0x10cc: 0x6759, 0x10cd: 0x6771, 0x10ce: 0x6439, 0x10cf: 0x6789, 0x10d0: 0x67a1, 0x10d1: 0x67b9, -- 0x10d2: 0x43a5, 0x10d3: 0x67d1, 0x10d4: 0x62c1, 0x10d5: 0x43c5, 0x10d6: 0x43e5, 0x10d7: 0x67e9, -- 0x10d8: 0x0040, 0x10d9: 0x4405, 0x10da: 0x6801, 0x10db: 0x6819, 0x10dc: 0x6831, 0x10dd: 0x6849, -- 0x10de: 0x6861, 0x10df: 0x6891, 0x10e0: 0x68c1, 0x10e1: 0x68e9, 0x10e2: 0x6911, 0x10e3: 0x6939, -- 0x10e4: 0x6961, 0x10e5: 0x6989, 0x10e6: 0x69b1, 0x10e7: 0x69d9, 0x10e8: 0x6a01, 0x10e9: 0x6a29, -- 0x10ea: 0x6a59, 0x10eb: 0x6a89, 0x10ec: 0x6ab9, 0x10ed: 0x6ae9, 0x10ee: 0x6b19, 0x10ef: 0x6b49, -- 0x10f0: 0x6b79, 0x10f1: 0x6ba9, 0x10f2: 0x6bd9, 0x10f3: 0x6c09, 0x10f4: 0x6c39, 0x10f5: 0x6c69, -- 0x10f6: 0x6c99, 0x10f7: 0x6cc9, 0x10f8: 0x6cf9, 0x10f9: 0x6d29, 0x10fa: 0x6d59, 0x10fb: 0x6d89, -- 0x10fc: 0x6db9, 0x10fd: 0x6de9, 0x10fe: 0x6e19, 0x10ff: 0x4425, -+ 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: 0x02d1, 0x10dd: 0x13c9, -+ 0x10de: 0x3308, 0x10df: 0x3308, 0x10e0: 0x0008, 0x10e1: 0x0008, 0x10e2: 0x0008, 0x10e3: 0x0008, -+ 0x10e4: 0x0008, 0x10e5: 0x0008, 0x10e6: 0x0008, 0x10e7: 0x0008, 0x10e8: 0x0008, 0x10e9: 0x0008, -+ 0x10ea: 0x0008, 0x10eb: 0x0008, 0x10ec: 0x0008, 0x10ed: 0x0008, 0x10ee: 0x0008, 0x10ef: 0x0008, -+ 0x10f0: 0x0008, 0x10f1: 0x0008, 0x10f2: 0x0008, 0x10f3: 0x0008, 0x10f4: 0x0008, 0x10f5: 0x0008, -+ 0x10f6: 0x0008, 0x10f7: 0x0008, 0x10f8: 0x0008, 0x10f9: 0x0008, 0x10fa: 0x0008, 0x10fb: 0x0008, -+ 0x10fc: 0x0008, 0x10fd: 0x0008, 0x10fe: 0x0008, 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: 0xe00d, 0x111d: 0x0008, -- 0x111e: 0xe00d, 0x111f: 0x0008, 0x1120: 0xe00d, 0x1121: 0x0008, 0x1122: 0xe00d, 0x1123: 0x0008, -+ 0x1100: 0x0018, 0x1101: 0x0018, 0x1102: 0x0018, 0x1103: 0x0018, 0x1104: 0x0018, 0x1105: 0x0018, -+ 0x1106: 0x0018, 0x1107: 0x0018, 0x1108: 0x0018, 0x1109: 0x0018, 0x110a: 0x0018, 0x110b: 0x0018, -+ 0x110c: 0x0018, 0x110d: 0x0018, 0x110e: 0x0018, 0x110f: 0x0018, 0x1110: 0x0018, 0x1111: 0x0018, -+ 0x1112: 0x0018, 0x1113: 0x0018, 0x1114: 0x0018, 0x1115: 0x0018, 0x1116: 0x0018, 0x1117: 0x0008, -+ 0x1118: 0x0008, 0x1119: 0x0008, 0x111a: 0x0008, 0x111b: 0x0008, 0x111c: 0x0008, 0x111d: 0x0008, -+ 0x111e: 0x0008, 0x111f: 0x0008, 0x1120: 0x0018, 0x1121: 0x0018, 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, -+ 0x112a: 0xe00d, 0x112b: 0x0008, 0x112c: 0xe00d, 0x112d: 0x0008, 0x112e: 0xe00d, 0x112f: 0x0008, -+ 0x1130: 0x0008, 0x1131: 0x0008, 0x1132: 0xe00d, 0x1133: 0x0008, 0x1134: 0xe00d, 0x1135: 0x0008, -+ 0x1136: 0xe00d, 0x1137: 0x0008, 0x1138: 0xe00d, 0x1139: 0x0008, 0x113a: 0xe00d, 0x113b: 0x0008, -+ 0x113c: 0xe00d, 0x113d: 0x0008, 0x113e: 0xe00d, 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: 0x6e49, -- 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, -+ 0x1158: 0xe00d, 0x1159: 0x0008, 0x115a: 0xe00d, 0x115b: 0x0008, 0x115c: 0xe00d, 0x115d: 0x0008, -+ 0x115e: 0xe00d, 0x115f: 0x0008, 0x1160: 0xe00d, 0x1161: 0x0008, 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: 0xe0fd, 0x1171: 0x0008, 0x1172: 0x0008, 0x1173: 0x0008, 0x1174: 0x0008, 0x1175: 0x0008, -+ 0x1176: 0x0008, 0x1177: 0x0008, 0x1178: 0x0008, 0x1179: 0xe01d, 0x117a: 0x0008, 0x117b: 0xe03d, -+ 0x117c: 0x0008, 0x117d: 0x4445, 0x117e: 0xe00d, 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, -+ 0x1180: 0xe00d, 0x1181: 0x0008, 0x1182: 0xe00d, 0x1183: 0x0008, 0x1184: 0xe00d, 0x1185: 0x0008, -+ 0x1186: 0xe00d, 0x1187: 0x0008, 0x1188: 0x0008, 0x1189: 0x0018, 0x118a: 0x0018, 0x118b: 0xe03d, -+ 0x118c: 0x0008, 0x118d: 0x0409, 0x118e: 0x0008, 0x118f: 0x0008, 0x1190: 0xe00d, 0x1191: 0x0008, -+ 0x1192: 0xe00d, 0x1193: 0x0008, 0x1194: 0x0008, 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: 0x0008, 0x11b1: 0x0008, 0x11b2: 0xe00d, 0x11b3: 0x0008, 0x11b4: 0xe00d, 0x11b5: 0x0008, -+ 0x11aa: 0x13d1, 0x11ab: 0x0371, 0x11ac: 0x0401, 0x11ad: 0x13d9, 0x11ae: 0x0421, 0x11af: 0x0008, -+ 0x11b0: 0x13e1, 0x11b1: 0x13e9, 0x11b2: 0x0429, 0x11b3: 0x4465, 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: 0x4445, 0x11fe: 0xe00d, 0x11ff: 0x0008, -+ 0x11c0: 0x650d, 0x11c1: 0x652d, 0x11c2: 0x654d, 0x11c3: 0x656d, 0x11c4: 0x658d, 0x11c5: 0x65ad, -+ 0x11c6: 0x65cd, 0x11c7: 0x65ed, 0x11c8: 0x660d, 0x11c9: 0x662d, 0x11ca: 0x664d, 0x11cb: 0x666d, -+ 0x11cc: 0x668d, 0x11cd: 0x66ad, 0x11ce: 0x0008, 0x11cf: 0x0008, 0x11d0: 0x66cd, 0x11d1: 0x0008, -+ 0x11d2: 0x66ed, 0x11d3: 0x0008, 0x11d4: 0x0008, 0x11d5: 0x670d, 0x11d6: 0x672d, 0x11d7: 0x674d, -+ 0x11d8: 0x676d, 0x11d9: 0x678d, 0x11da: 0x67ad, 0x11db: 0x67cd, 0x11dc: 0x67ed, 0x11dd: 0x680d, -+ 0x11de: 0x682d, 0x11df: 0x0008, 0x11e0: 0x684d, 0x11e1: 0x0008, 0x11e2: 0x686d, 0x11e3: 0x0008, -+ 0x11e4: 0x0008, 0x11e5: 0x688d, 0x11e6: 0x68ad, 0x11e7: 0x0008, 0x11e8: 0x0008, 0x11e9: 0x0008, -+ 0x11ea: 0x68cd, 0x11eb: 0x68ed, 0x11ec: 0x690d, 0x11ed: 0x692d, 0x11ee: 0x694d, 0x11ef: 0x696d, -+ 0x11f0: 0x698d, 0x11f1: 0x69ad, 0x11f2: 0x69cd, 0x11f3: 0x69ed, 0x11f4: 0x6a0d, 0x11f5: 0x6a2d, -+ 0x11f6: 0x6a4d, 0x11f7: 0x6a6d, 0x11f8: 0x6a8d, 0x11f9: 0x6aad, 0x11fa: 0x6acd, 0x11fb: 0x6aed, -+ 0x11fc: 0x6b0d, 0x11fd: 0x6b2d, 0x11fe: 0x6b4d, 0x11ff: 0x6b6d, - // 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: 0x6e61, 0x122b: 0x1029, 0x122c: 0x11c1, 0x122d: 0x6e79, 0x122e: 0x1221, 0x122f: 0x0008, -- 0x1230: 0x6e91, 0x1231: 0x6ea9, 0x1232: 0x1239, 0x1233: 0x4465, 0x1234: 0xe00d, 0x1235: 0x0008, -- 0x1236: 0xe00d, 0x1237: 0x0008, 0x1238: 0xe00d, 0x1239: 0x0008, 0x123a: 0xe00d, 0x123b: 0x0008, -- 0x123c: 0xe00d, 0x123d: 0x0008, 0x123e: 0xe00d, 0x123f: 0x0008, -+ 0x1200: 0x7acd, 0x1201: 0x7aed, 0x1202: 0x7b0d, 0x1203: 0x7b2d, 0x1204: 0x7b4d, 0x1205: 0x7b6d, -+ 0x1206: 0x7b8d, 0x1207: 0x7bad, 0x1208: 0x7bcd, 0x1209: 0x7bed, 0x120a: 0x7c0d, 0x120b: 0x7c2d, -+ 0x120c: 0x7c4d, 0x120d: 0x7c6d, 0x120e: 0x7c8d, 0x120f: 0x1409, 0x1210: 0x1411, 0x1211: 0x1419, -+ 0x1212: 0x7cad, 0x1213: 0x7ccd, 0x1214: 0x7ced, 0x1215: 0x1421, 0x1216: 0x1429, 0x1217: 0x1431, -+ 0x1218: 0x7d0d, 0x1219: 0x7d2d, 0x121a: 0x0040, 0x121b: 0x0040, 0x121c: 0x0040, 0x121d: 0x0040, -+ 0x121e: 0x0040, 0x121f: 0x0040, 0x1220: 0x0040, 0x1221: 0x0040, 0x1222: 0x0040, 0x1223: 0x0040, -+ 0x1224: 0x0040, 0x1225: 0x0040, 0x1226: 0x0040, 0x1227: 0x0040, 0x1228: 0x0040, 0x1229: 0x0040, -+ 0x122a: 0x0040, 0x122b: 0x0040, 0x122c: 0x0040, 0x122d: 0x0040, 0x122e: 0x0040, 0x122f: 0x0040, -+ 0x1230: 0x0040, 0x1231: 0x0040, 0x1232: 0x0040, 0x1233: 0x0040, 0x1234: 0x0040, 0x1235: 0x0040, -+ 0x1236: 0x0040, 0x1237: 0x0040, 0x1238: 0x0040, 0x1239: 0x0040, 0x123a: 0x0040, 0x123b: 0x0040, -+ 0x123c: 0x0040, 0x123d: 0x0040, 0x123e: 0x0040, 0x123f: 0x0040, - // Block 0x49, offset 0x1240 -- 0x1240: 0x650d, 0x1241: 0x652d, 0x1242: 0x654d, 0x1243: 0x656d, 0x1244: 0x658d, 0x1245: 0x65ad, -- 0x1246: 0x65cd, 0x1247: 0x65ed, 0x1248: 0x660d, 0x1249: 0x662d, 0x124a: 0x664d, 0x124b: 0x666d, -- 0x124c: 0x668d, 0x124d: 0x66ad, 0x124e: 0x0008, 0x124f: 0x0008, 0x1250: 0x66cd, 0x1251: 0x0008, -- 0x1252: 0x66ed, 0x1253: 0x0008, 0x1254: 0x0008, 0x1255: 0x670d, 0x1256: 0x672d, 0x1257: 0x674d, -- 0x1258: 0x676d, 0x1259: 0x678d, 0x125a: 0x67ad, 0x125b: 0x67cd, 0x125c: 0x67ed, 0x125d: 0x680d, -- 0x125e: 0x682d, 0x125f: 0x0008, 0x1260: 0x684d, 0x1261: 0x0008, 0x1262: 0x686d, 0x1263: 0x0008, -- 0x1264: 0x0008, 0x1265: 0x688d, 0x1266: 0x68ad, 0x1267: 0x0008, 0x1268: 0x0008, 0x1269: 0x0008, -- 0x126a: 0x68cd, 0x126b: 0x68ed, 0x126c: 0x690d, 0x126d: 0x692d, 0x126e: 0x694d, 0x126f: 0x696d, -- 0x1270: 0x698d, 0x1271: 0x69ad, 0x1272: 0x69cd, 0x1273: 0x69ed, 0x1274: 0x6a0d, 0x1275: 0x6a2d, -- 0x1276: 0x6a4d, 0x1277: 0x6a6d, 0x1278: 0x6a8d, 0x1279: 0x6aad, 0x127a: 0x6acd, 0x127b: 0x6aed, -- 0x127c: 0x6b0d, 0x127d: 0x6b2d, 0x127e: 0x6b4d, 0x127f: 0x6b6d, -+ 0x1240: 0x1439, 0x1241: 0x1441, 0x1242: 0x1449, 0x1243: 0x7d4d, 0x1244: 0x7d6d, 0x1245: 0x1451, -+ 0x1246: 0x1451, 0x1247: 0x0040, 0x1248: 0x0040, 0x1249: 0x0040, 0x124a: 0x0040, 0x124b: 0x0040, -+ 0x124c: 0x0040, 0x124d: 0x0040, 0x124e: 0x0040, 0x124f: 0x0040, 0x1250: 0x0040, 0x1251: 0x0040, -+ 0x1252: 0x0040, 0x1253: 0x1459, 0x1254: 0x1461, 0x1255: 0x1469, 0x1256: 0x1471, 0x1257: 0x1479, -+ 0x1258: 0x0040, 0x1259: 0x0040, 0x125a: 0x0040, 0x125b: 0x0040, 0x125c: 0x0040, 0x125d: 0x1481, -+ 0x125e: 0x3308, 0x125f: 0x1489, 0x1260: 0x1491, 0x1261: 0x0779, 0x1262: 0x0791, 0x1263: 0x1499, -+ 0x1264: 0x14a1, 0x1265: 0x14a9, 0x1266: 0x14b1, 0x1267: 0x14b9, 0x1268: 0x14c1, 0x1269: 0x071a, -+ 0x126a: 0x14c9, 0x126b: 0x14d1, 0x126c: 0x14d9, 0x126d: 0x14e1, 0x126e: 0x14e9, 0x126f: 0x14f1, -+ 0x1270: 0x14f9, 0x1271: 0x1501, 0x1272: 0x1509, 0x1273: 0x1511, 0x1274: 0x1519, 0x1275: 0x1521, -+ 0x1276: 0x1529, 0x1277: 0x0040, 0x1278: 0x1531, 0x1279: 0x1539, 0x127a: 0x1541, 0x127b: 0x1549, -+ 0x127c: 0x1551, 0x127d: 0x0040, 0x127e: 0x1559, 0x127f: 0x0040, - // Block 0x4a, offset 0x1280 -- 0x1280: 0x7acd, 0x1281: 0x7aed, 0x1282: 0x7b0d, 0x1283: 0x7b2d, 0x1284: 0x7b4d, 0x1285: 0x7b6d, -- 0x1286: 0x7b8d, 0x1287: 0x7bad, 0x1288: 0x7bcd, 0x1289: 0x7bed, 0x128a: 0x7c0d, 0x128b: 0x7c2d, -- 0x128c: 0x7c4d, 0x128d: 0x7c6d, 0x128e: 0x7c8d, 0x128f: 0x6f19, 0x1290: 0x6f41, 0x1291: 0x6f69, -- 0x1292: 0x7cad, 0x1293: 0x7ccd, 0x1294: 0x7ced, 0x1295: 0x6f91, 0x1296: 0x6fb9, 0x1297: 0x6fe1, -- 0x1298: 0x7d0d, 0x1299: 0x7d2d, 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, -+ 0x1280: 0x1561, 0x1281: 0x1569, 0x1282: 0x0040, 0x1283: 0x1571, 0x1284: 0x1579, 0x1285: 0x0040, -+ 0x1286: 0x1581, 0x1287: 0x1589, 0x1288: 0x1591, 0x1289: 0x1599, 0x128a: 0x15a1, 0x128b: 0x15a9, -+ 0x128c: 0x15b1, 0x128d: 0x15b9, 0x128e: 0x15c1, 0x128f: 0x15c9, 0x1290: 0x15d1, 0x1291: 0x15d1, -+ 0x1292: 0x15d9, 0x1293: 0x15d9, 0x1294: 0x15d9, 0x1295: 0x15d9, 0x1296: 0x15e1, 0x1297: 0x15e1, -+ 0x1298: 0x15e1, 0x1299: 0x15e1, 0x129a: 0x15e9, 0x129b: 0x15e9, 0x129c: 0x15e9, 0x129d: 0x15e9, -+ 0x129e: 0x15f1, 0x129f: 0x15f1, 0x12a0: 0x15f1, 0x12a1: 0x15f1, 0x12a2: 0x15f9, 0x12a3: 0x15f9, -+ 0x12a4: 0x15f9, 0x12a5: 0x15f9, 0x12a6: 0x1601, 0x12a7: 0x1601, 0x12a8: 0x1601, 0x12a9: 0x1601, -+ 0x12aa: 0x1609, 0x12ab: 0x1609, 0x12ac: 0x1609, 0x12ad: 0x1609, 0x12ae: 0x1611, 0x12af: 0x1611, -+ 0x12b0: 0x1611, 0x12b1: 0x1611, 0x12b2: 0x1619, 0x12b3: 0x1619, 0x12b4: 0x1619, 0x12b5: 0x1619, -+ 0x12b6: 0x1621, 0x12b7: 0x1621, 0x12b8: 0x1621, 0x12b9: 0x1621, 0x12ba: 0x1629, 0x12bb: 0x1629, -+ 0x12bc: 0x1629, 0x12bd: 0x1629, 0x12be: 0x1631, 0x12bf: 0x1631, - // Block 0x4b, offset 0x12c0 -- 0x12c0: 0x7009, 0x12c1: 0x7021, 0x12c2: 0x7039, 0x12c3: 0x7d4d, 0x12c4: 0x7d6d, 0x12c5: 0x7051, -- 0x12c6: 0x7051, 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: 0x7069, 0x12d4: 0x7091, 0x12d5: 0x70b9, 0x12d6: 0x70e1, 0x12d7: 0x7109, -- 0x12d8: 0x0040, 0x12d9: 0x0040, 0x12da: 0x0040, 0x12db: 0x0040, 0x12dc: 0x0040, 0x12dd: 0x7131, -- 0x12de: 0x3308, 0x12df: 0x7159, 0x12e0: 0x7181, 0x12e1: 0x20a9, 0x12e2: 0x20f1, 0x12e3: 0x7199, -- 0x12e4: 0x71b1, 0x12e5: 0x71c9, 0x12e6: 0x71e1, 0x12e7: 0x71f9, 0x12e8: 0x7211, 0x12e9: 0x1fb2, -- 0x12ea: 0x7229, 0x12eb: 0x7251, 0x12ec: 0x7279, 0x12ed: 0x72b1, 0x12ee: 0x72e9, 0x12ef: 0x7311, -- 0x12f0: 0x7339, 0x12f1: 0x7361, 0x12f2: 0x7389, 0x12f3: 0x73b1, 0x12f4: 0x73d9, 0x12f5: 0x7401, -- 0x12f6: 0x7429, 0x12f7: 0x0040, 0x12f8: 0x7451, 0x12f9: 0x7479, 0x12fa: 0x74a1, 0x12fb: 0x74c9, -- 0x12fc: 0x74f1, 0x12fd: 0x0040, 0x12fe: 0x7519, 0x12ff: 0x0040, -+ 0x12c0: 0x1631, 0x12c1: 0x1631, 0x12c2: 0x1639, 0x12c3: 0x1639, 0x12c4: 0x1641, 0x12c5: 0x1641, -+ 0x12c6: 0x1649, 0x12c7: 0x1649, 0x12c8: 0x1651, 0x12c9: 0x1651, 0x12ca: 0x1659, 0x12cb: 0x1659, -+ 0x12cc: 0x1661, 0x12cd: 0x1661, 0x12ce: 0x1669, 0x12cf: 0x1669, 0x12d0: 0x1669, 0x12d1: 0x1669, -+ 0x12d2: 0x1671, 0x12d3: 0x1671, 0x12d4: 0x1671, 0x12d5: 0x1671, 0x12d6: 0x1679, 0x12d7: 0x1679, -+ 0x12d8: 0x1679, 0x12d9: 0x1679, 0x12da: 0x1681, 0x12db: 0x1681, 0x12dc: 0x1681, 0x12dd: 0x1681, -+ 0x12de: 0x1689, 0x12df: 0x1689, 0x12e0: 0x1691, 0x12e1: 0x1691, 0x12e2: 0x1691, 0x12e3: 0x1691, -+ 0x12e4: 0x1699, 0x12e5: 0x1699, 0x12e6: 0x16a1, 0x12e7: 0x16a1, 0x12e8: 0x16a1, 0x12e9: 0x16a1, -+ 0x12ea: 0x16a9, 0x12eb: 0x16a9, 0x12ec: 0x16a9, 0x12ed: 0x16a9, 0x12ee: 0x16b1, 0x12ef: 0x16b1, -+ 0x12f0: 0x16b9, 0x12f1: 0x16b9, 0x12f2: 0x0818, 0x12f3: 0x0818, 0x12f4: 0x0818, 0x12f5: 0x0818, -+ 0x12f6: 0x0818, 0x12f7: 0x0818, 0x12f8: 0x0818, 0x12f9: 0x0818, 0x12fa: 0x0818, 0x12fb: 0x0818, -+ 0x12fc: 0x0818, 0x12fd: 0x0818, 0x12fe: 0x0818, 0x12ff: 0x0818, - // Block 0x4c, offset 0x1300 -- 0x1300: 0x7541, 0x1301: 0x7569, 0x1302: 0x0040, 0x1303: 0x7591, 0x1304: 0x75b9, 0x1305: 0x0040, -- 0x1306: 0x75e1, 0x1307: 0x7609, 0x1308: 0x7631, 0x1309: 0x7659, 0x130a: 0x7681, 0x130b: 0x76a9, -- 0x130c: 0x76d1, 0x130d: 0x76f9, 0x130e: 0x7721, 0x130f: 0x7749, 0x1310: 0x7771, 0x1311: 0x7771, -- 0x1312: 0x7789, 0x1313: 0x7789, 0x1314: 0x7789, 0x1315: 0x7789, 0x1316: 0x77a1, 0x1317: 0x77a1, -- 0x1318: 0x77a1, 0x1319: 0x77a1, 0x131a: 0x77b9, 0x131b: 0x77b9, 0x131c: 0x77b9, 0x131d: 0x77b9, -- 0x131e: 0x77d1, 0x131f: 0x77d1, 0x1320: 0x77d1, 0x1321: 0x77d1, 0x1322: 0x77e9, 0x1323: 0x77e9, -- 0x1324: 0x77e9, 0x1325: 0x77e9, 0x1326: 0x7801, 0x1327: 0x7801, 0x1328: 0x7801, 0x1329: 0x7801, -- 0x132a: 0x7819, 0x132b: 0x7819, 0x132c: 0x7819, 0x132d: 0x7819, 0x132e: 0x7831, 0x132f: 0x7831, -- 0x1330: 0x7831, 0x1331: 0x7831, 0x1332: 0x7849, 0x1333: 0x7849, 0x1334: 0x7849, 0x1335: 0x7849, -- 0x1336: 0x7861, 0x1337: 0x7861, 0x1338: 0x7861, 0x1339: 0x7861, 0x133a: 0x7879, 0x133b: 0x7879, -- 0x133c: 0x7879, 0x133d: 0x7879, 0x133e: 0x7891, 0x133f: 0x7891, -+ 0x1300: 0x0818, 0x1301: 0x0818, 0x1302: 0x0040, 0x1303: 0x0040, 0x1304: 0x0040, 0x1305: 0x0040, -+ 0x1306: 0x0040, 0x1307: 0x0040, 0x1308: 0x0040, 0x1309: 0x0040, 0x130a: 0x0040, 0x130b: 0x0040, -+ 0x130c: 0x0040, 0x130d: 0x0040, 0x130e: 0x0040, 0x130f: 0x0040, 0x1310: 0x0040, 0x1311: 0x0040, -+ 0x1312: 0x0040, 0x1313: 0x16c1, 0x1314: 0x16c1, 0x1315: 0x16c1, 0x1316: 0x16c1, 0x1317: 0x16c9, -+ 0x1318: 0x16c9, 0x1319: 0x16d1, 0x131a: 0x16d1, 0x131b: 0x16d9, 0x131c: 0x16d9, 0x131d: 0x0149, -+ 0x131e: 0x16e1, 0x131f: 0x16e1, 0x1320: 0x16e9, 0x1321: 0x16e9, 0x1322: 0x16f1, 0x1323: 0x16f1, -+ 0x1324: 0x16f9, 0x1325: 0x16f9, 0x1326: 0x16f9, 0x1327: 0x16f9, 0x1328: 0x1701, 0x1329: 0x1701, -+ 0x132a: 0x1709, 0x132b: 0x1709, 0x132c: 0x1711, 0x132d: 0x1711, 0x132e: 0x1719, 0x132f: 0x1719, -+ 0x1330: 0x1721, 0x1331: 0x1721, 0x1332: 0x1729, 0x1333: 0x1729, 0x1334: 0x1731, 0x1335: 0x1731, -+ 0x1336: 0x1739, 0x1337: 0x1739, 0x1338: 0x1739, 0x1339: 0x1741, 0x133a: 0x1741, 0x133b: 0x1741, -+ 0x133c: 0x1749, 0x133d: 0x1749, 0x133e: 0x1749, 0x133f: 0x1749, - // Block 0x4d, offset 0x1340 -- 0x1340: 0x7891, 0x1341: 0x7891, 0x1342: 0x78a9, 0x1343: 0x78a9, 0x1344: 0x78c1, 0x1345: 0x78c1, -- 0x1346: 0x78d9, 0x1347: 0x78d9, 0x1348: 0x78f1, 0x1349: 0x78f1, 0x134a: 0x7909, 0x134b: 0x7909, -- 0x134c: 0x7921, 0x134d: 0x7921, 0x134e: 0x7939, 0x134f: 0x7939, 0x1350: 0x7939, 0x1351: 0x7939, -- 0x1352: 0x7951, 0x1353: 0x7951, 0x1354: 0x7951, 0x1355: 0x7951, 0x1356: 0x7969, 0x1357: 0x7969, -- 0x1358: 0x7969, 0x1359: 0x7969, 0x135a: 0x7981, 0x135b: 0x7981, 0x135c: 0x7981, 0x135d: 0x7981, -- 0x135e: 0x7999, 0x135f: 0x7999, 0x1360: 0x79b1, 0x1361: 0x79b1, 0x1362: 0x79b1, 0x1363: 0x79b1, -- 0x1364: 0x79c9, 0x1365: 0x79c9, 0x1366: 0x79e1, 0x1367: 0x79e1, 0x1368: 0x79e1, 0x1369: 0x79e1, -- 0x136a: 0x79f9, 0x136b: 0x79f9, 0x136c: 0x79f9, 0x136d: 0x79f9, 0x136e: 0x7a11, 0x136f: 0x7a11, -- 0x1370: 0x7a29, 0x1371: 0x7a29, 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, -+ 0x1340: 0x1949, 0x1341: 0x1951, 0x1342: 0x1959, 0x1343: 0x1961, 0x1344: 0x1969, 0x1345: 0x1971, -+ 0x1346: 0x1979, 0x1347: 0x1981, 0x1348: 0x1989, 0x1349: 0x1991, 0x134a: 0x1999, 0x134b: 0x19a1, -+ 0x134c: 0x19a9, 0x134d: 0x19b1, 0x134e: 0x19b9, 0x134f: 0x19c1, 0x1350: 0x19c9, 0x1351: 0x19d1, -+ 0x1352: 0x19d9, 0x1353: 0x19e1, 0x1354: 0x19e9, 0x1355: 0x19f1, 0x1356: 0x19f9, 0x1357: 0x1a01, -+ 0x1358: 0x1a09, 0x1359: 0x1a11, 0x135a: 0x1a19, 0x135b: 0x1a21, 0x135c: 0x1a29, 0x135d: 0x1a31, -+ 0x135e: 0x1a3a, 0x135f: 0x1a42, 0x1360: 0x1a4a, 0x1361: 0x1a52, 0x1362: 0x1a5a, 0x1363: 0x1a62, -+ 0x1364: 0x1a69, 0x1365: 0x1a71, 0x1366: 0x1761, 0x1367: 0x1a79, 0x1368: 0x1741, 0x1369: 0x1769, -+ 0x136a: 0x1a81, 0x136b: 0x1a89, 0x136c: 0x1789, 0x136d: 0x1a91, 0x136e: 0x1791, 0x136f: 0x1799, -+ 0x1370: 0x1a99, 0x1371: 0x1aa1, 0x1372: 0x17b9, 0x1373: 0x1aa9, 0x1374: 0x17c1, 0x1375: 0x17c9, -+ 0x1376: 0x1ab1, 0x1377: 0x1ab9, 0x1378: 0x17d9, 0x1379: 0x1ac1, 0x137a: 0x17e1, 0x137b: 0x17e9, -+ 0x137c: 0x18d1, 0x137d: 0x18d9, 0x137e: 0x18f1, 0x137f: 0x18f9, - // 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: 0x7a41, 0x1394: 0x7a41, 0x1395: 0x7a41, 0x1396: 0x7a41, 0x1397: 0x7a59, -- 0x1398: 0x7a59, 0x1399: 0x7a71, 0x139a: 0x7a71, 0x139b: 0x7a89, 0x139c: 0x7a89, 0x139d: 0x0479, -- 0x139e: 0x7aa1, 0x139f: 0x7aa1, 0x13a0: 0x7ab9, 0x13a1: 0x7ab9, 0x13a2: 0x7ad1, 0x13a3: 0x7ad1, -- 0x13a4: 0x7ae9, 0x13a5: 0x7ae9, 0x13a6: 0x7ae9, 0x13a7: 0x7ae9, 0x13a8: 0x7b01, 0x13a9: 0x7b01, -- 0x13aa: 0x7b19, 0x13ab: 0x7b19, 0x13ac: 0x7b41, 0x13ad: 0x7b41, 0x13ae: 0x7b69, 0x13af: 0x7b69, -- 0x13b0: 0x7b91, 0x13b1: 0x7b91, 0x13b2: 0x7bb9, 0x13b3: 0x7bb9, 0x13b4: 0x7be1, 0x13b5: 0x7be1, -- 0x13b6: 0x7c09, 0x13b7: 0x7c09, 0x13b8: 0x7c09, 0x13b9: 0x7c31, 0x13ba: 0x7c31, 0x13bb: 0x7c31, -- 0x13bc: 0x7c59, 0x13bd: 0x7c59, 0x13be: 0x7c59, 0x13bf: 0x7c59, -+ 0x1380: 0x1901, 0x1381: 0x1921, 0x1382: 0x1929, 0x1383: 0x1931, 0x1384: 0x1939, 0x1385: 0x1959, -+ 0x1386: 0x1961, 0x1387: 0x1969, 0x1388: 0x1ac9, 0x1389: 0x1989, 0x138a: 0x1ad1, 0x138b: 0x1ad9, -+ 0x138c: 0x19b9, 0x138d: 0x1ae1, 0x138e: 0x19c1, 0x138f: 0x19c9, 0x1390: 0x1a31, 0x1391: 0x1ae9, -+ 0x1392: 0x1af1, 0x1393: 0x1a09, 0x1394: 0x1af9, 0x1395: 0x1a11, 0x1396: 0x1a19, 0x1397: 0x1751, -+ 0x1398: 0x1759, 0x1399: 0x1b01, 0x139a: 0x1761, 0x139b: 0x1b09, 0x139c: 0x1771, 0x139d: 0x1779, -+ 0x139e: 0x1781, 0x139f: 0x1789, 0x13a0: 0x1b11, 0x13a1: 0x17a1, 0x13a2: 0x17a9, 0x13a3: 0x17b1, -+ 0x13a4: 0x17b9, 0x13a5: 0x1b19, 0x13a6: 0x17d9, 0x13a7: 0x17f1, 0x13a8: 0x17f9, 0x13a9: 0x1801, -+ 0x13aa: 0x1809, 0x13ab: 0x1811, 0x13ac: 0x1821, 0x13ad: 0x1829, 0x13ae: 0x1831, 0x13af: 0x1839, -+ 0x13b0: 0x1841, 0x13b1: 0x1849, 0x13b2: 0x1b21, 0x13b3: 0x1851, 0x13b4: 0x1859, 0x13b5: 0x1861, -+ 0x13b6: 0x1869, 0x13b7: 0x1871, 0x13b8: 0x1879, 0x13b9: 0x1889, 0x13ba: 0x1891, 0x13bb: 0x1899, -+ 0x13bc: 0x18a1, 0x13bd: 0x18a9, 0x13be: 0x18b1, 0x13bf: 0x18b9, - // Block 0x4f, offset 0x13c0 -- 0x13c0: 0x8649, 0x13c1: 0x8671, 0x13c2: 0x8699, 0x13c3: 0x86c1, 0x13c4: 0x86e9, 0x13c5: 0x8711, -- 0x13c6: 0x8739, 0x13c7: 0x8761, 0x13c8: 0x8789, 0x13c9: 0x87b1, 0x13ca: 0x87d9, 0x13cb: 0x8801, -- 0x13cc: 0x8829, 0x13cd: 0x8851, 0x13ce: 0x8879, 0x13cf: 0x88a1, 0x13d0: 0x88c9, 0x13d1: 0x88f1, -- 0x13d2: 0x8919, 0x13d3: 0x8941, 0x13d4: 0x8969, 0x13d5: 0x8991, 0x13d6: 0x89b9, 0x13d7: 0x89e1, -- 0x13d8: 0x8a09, 0x13d9: 0x8a31, 0x13da: 0x8a59, 0x13db: 0x8a81, 0x13dc: 0x8aa9, 0x13dd: 0x8ad1, -- 0x13de: 0x8afa, 0x13df: 0x8b2a, 0x13e0: 0x8b5a, 0x13e1: 0x8b8a, 0x13e2: 0x8bba, 0x13e3: 0x8bea, -- 0x13e4: 0x8c19, 0x13e5: 0x8c41, 0x13e6: 0x7cc1, 0x13e7: 0x8c69, 0x13e8: 0x7c31, 0x13e9: 0x7ce9, -- 0x13ea: 0x8c91, 0x13eb: 0x8cb9, 0x13ec: 0x7d89, 0x13ed: 0x8ce1, 0x13ee: 0x7db1, 0x13ef: 0x7dd9, -- 0x13f0: 0x8d09, 0x13f1: 0x8d31, 0x13f2: 0x7e79, 0x13f3: 0x8d59, 0x13f4: 0x7ea1, 0x13f5: 0x7ec9, -- 0x13f6: 0x8d81, 0x13f7: 0x8da9, 0x13f8: 0x7f19, 0x13f9: 0x8dd1, 0x13fa: 0x7f41, 0x13fb: 0x7f69, -- 0x13fc: 0x83f1, 0x13fd: 0x8419, 0x13fe: 0x8491, 0x13ff: 0x84b9, -+ 0x13c0: 0x18c1, 0x13c1: 0x18c9, 0x13c2: 0x18e1, 0x13c3: 0x18e9, 0x13c4: 0x1909, 0x13c5: 0x1911, -+ 0x13c6: 0x1919, 0x13c7: 0x1921, 0x13c8: 0x1929, 0x13c9: 0x1941, 0x13ca: 0x1949, 0x13cb: 0x1951, -+ 0x13cc: 0x1959, 0x13cd: 0x1b29, 0x13ce: 0x1971, 0x13cf: 0x1979, 0x13d0: 0x1981, 0x13d1: 0x1989, -+ 0x13d2: 0x19a1, 0x13d3: 0x19a9, 0x13d4: 0x19b1, 0x13d5: 0x19b9, 0x13d6: 0x1b31, 0x13d7: 0x19d1, -+ 0x13d8: 0x19d9, 0x13d9: 0x1b39, 0x13da: 0x19f1, 0x13db: 0x19f9, 0x13dc: 0x1a01, 0x13dd: 0x1a09, -+ 0x13de: 0x1b41, 0x13df: 0x1761, 0x13e0: 0x1b09, 0x13e1: 0x1789, 0x13e2: 0x1b11, 0x13e3: 0x17b9, -+ 0x13e4: 0x1b19, 0x13e5: 0x17d9, 0x13e6: 0x1b49, 0x13e7: 0x1841, 0x13e8: 0x1b51, 0x13e9: 0x1b59, -+ 0x13ea: 0x1b61, 0x13eb: 0x1921, 0x13ec: 0x1929, 0x13ed: 0x1959, 0x13ee: 0x19b9, 0x13ef: 0x1b31, -+ 0x13f0: 0x1a09, 0x13f1: 0x1b41, 0x13f2: 0x1b69, 0x13f3: 0x1b71, 0x13f4: 0x1b79, 0x13f5: 0x1b81, -+ 0x13f6: 0x1b89, 0x13f7: 0x1b91, 0x13f8: 0x1b99, 0x13f9: 0x1ba1, 0x13fa: 0x1ba9, 0x13fb: 0x1bb1, -+ 0x13fc: 0x1bb9, 0x13fd: 0x1bc1, 0x13fe: 0x1bc9, 0x13ff: 0x1bd1, - // Block 0x50, offset 0x1400 -- 0x1400: 0x84e1, 0x1401: 0x8581, 0x1402: 0x85a9, 0x1403: 0x85d1, 0x1404: 0x85f9, 0x1405: 0x8699, -- 0x1406: 0x86c1, 0x1407: 0x86e9, 0x1408: 0x8df9, 0x1409: 0x8789, 0x140a: 0x8e21, 0x140b: 0x8e49, -- 0x140c: 0x8879, 0x140d: 0x8e71, 0x140e: 0x88a1, 0x140f: 0x88c9, 0x1410: 0x8ad1, 0x1411: 0x8e99, -- 0x1412: 0x8ec1, 0x1413: 0x8a09, 0x1414: 0x8ee9, 0x1415: 0x8a31, 0x1416: 0x8a59, 0x1417: 0x7c71, -- 0x1418: 0x7c99, 0x1419: 0x8f11, 0x141a: 0x7cc1, 0x141b: 0x8f39, 0x141c: 0x7d11, 0x141d: 0x7d39, -- 0x141e: 0x7d61, 0x141f: 0x7d89, 0x1420: 0x8f61, 0x1421: 0x7e01, 0x1422: 0x7e29, 0x1423: 0x7e51, -- 0x1424: 0x7e79, 0x1425: 0x8f89, 0x1426: 0x7f19, 0x1427: 0x7f91, 0x1428: 0x7fb9, 0x1429: 0x7fe1, -- 0x142a: 0x8009, 0x142b: 0x8031, 0x142c: 0x8081, 0x142d: 0x80a9, 0x142e: 0x80d1, 0x142f: 0x80f9, -- 0x1430: 0x8121, 0x1431: 0x8149, 0x1432: 0x8fb1, 0x1433: 0x8171, 0x1434: 0x8199, 0x1435: 0x81c1, -- 0x1436: 0x81e9, 0x1437: 0x8211, 0x1438: 0x8239, 0x1439: 0x8289, 0x143a: 0x82b1, 0x143b: 0x82d9, -- 0x143c: 0x8301, 0x143d: 0x8329, 0x143e: 0x8351, 0x143f: 0x8379, -+ 0x1400: 0x1bd9, 0x1401: 0x1be1, 0x1402: 0x1be9, 0x1403: 0x1bf1, 0x1404: 0x1bf9, 0x1405: 0x1c01, -+ 0x1406: 0x1c09, 0x1407: 0x1c11, 0x1408: 0x1c19, 0x1409: 0x1c21, 0x140a: 0x1c29, 0x140b: 0x1c31, -+ 0x140c: 0x1b59, 0x140d: 0x1c39, 0x140e: 0x1c41, 0x140f: 0x1c49, 0x1410: 0x1c51, 0x1411: 0x1b81, -+ 0x1412: 0x1b89, 0x1413: 0x1b91, 0x1414: 0x1b99, 0x1415: 0x1ba1, 0x1416: 0x1ba9, 0x1417: 0x1bb1, -+ 0x1418: 0x1bb9, 0x1419: 0x1bc1, 0x141a: 0x1bc9, 0x141b: 0x1bd1, 0x141c: 0x1bd9, 0x141d: 0x1be1, -+ 0x141e: 0x1be9, 0x141f: 0x1bf1, 0x1420: 0x1bf9, 0x1421: 0x1c01, 0x1422: 0x1c09, 0x1423: 0x1c11, -+ 0x1424: 0x1c19, 0x1425: 0x1c21, 0x1426: 0x1c29, 0x1427: 0x1c31, 0x1428: 0x1b59, 0x1429: 0x1c39, -+ 0x142a: 0x1c41, 0x142b: 0x1c49, 0x142c: 0x1c51, 0x142d: 0x1c21, 0x142e: 0x1c29, 0x142f: 0x1c31, -+ 0x1430: 0x1b59, 0x1431: 0x1b51, 0x1432: 0x1b61, 0x1433: 0x1881, 0x1434: 0x1829, 0x1435: 0x1831, -+ 0x1436: 0x1839, 0x1437: 0x1c21, 0x1438: 0x1c29, 0x1439: 0x1c31, 0x143a: 0x1881, 0x143b: 0x1889, -+ 0x143c: 0x1c59, 0x143d: 0x1c59, 0x143e: 0x0018, 0x143f: 0x0018, - // Block 0x51, offset 0x1440 -- 0x1440: 0x83a1, 0x1441: 0x83c9, 0x1442: 0x8441, 0x1443: 0x8469, 0x1444: 0x8509, 0x1445: 0x8531, -- 0x1446: 0x8559, 0x1447: 0x8581, 0x1448: 0x85a9, 0x1449: 0x8621, 0x144a: 0x8649, 0x144b: 0x8671, -- 0x144c: 0x8699, 0x144d: 0x8fd9, 0x144e: 0x8711, 0x144f: 0x8739, 0x1450: 0x8761, 0x1451: 0x8789, -- 0x1452: 0x8801, 0x1453: 0x8829, 0x1454: 0x8851, 0x1455: 0x8879, 0x1456: 0x9001, 0x1457: 0x88f1, -- 0x1458: 0x8919, 0x1459: 0x9029, 0x145a: 0x8991, 0x145b: 0x89b9, 0x145c: 0x89e1, 0x145d: 0x8a09, -- 0x145e: 0x9051, 0x145f: 0x7cc1, 0x1460: 0x8f39, 0x1461: 0x7d89, 0x1462: 0x8f61, 0x1463: 0x7e79, -- 0x1464: 0x8f89, 0x1465: 0x7f19, 0x1466: 0x9079, 0x1467: 0x8121, 0x1468: 0x90a1, 0x1469: 0x90c9, -- 0x146a: 0x90f1, 0x146b: 0x8581, 0x146c: 0x85a9, 0x146d: 0x8699, 0x146e: 0x8879, 0x146f: 0x9001, -- 0x1470: 0x8a09, 0x1471: 0x9051, 0x1472: 0x9119, 0x1473: 0x9151, 0x1474: 0x9189, 0x1475: 0x91c1, -- 0x1476: 0x91e9, 0x1477: 0x9211, 0x1478: 0x9239, 0x1479: 0x9261, 0x147a: 0x9289, 0x147b: 0x92b1, -- 0x147c: 0x92d9, 0x147d: 0x9301, 0x147e: 0x9329, 0x147f: 0x9351, -+ 0x1440: 0x0040, 0x1441: 0x0040, 0x1442: 0x0040, 0x1443: 0x0040, 0x1444: 0x0040, 0x1445: 0x0040, -+ 0x1446: 0x0040, 0x1447: 0x0040, 0x1448: 0x0040, 0x1449: 0x0040, 0x144a: 0x0040, 0x144b: 0x0040, -+ 0x144c: 0x0040, 0x144d: 0x0040, 0x144e: 0x0040, 0x144f: 0x0040, 0x1450: 0x1c61, 0x1451: 0x1c69, -+ 0x1452: 0x1c69, 0x1453: 0x1c71, 0x1454: 0x1c79, 0x1455: 0x1c81, 0x1456: 0x1c89, 0x1457: 0x1c91, -+ 0x1458: 0x1c99, 0x1459: 0x1c99, 0x145a: 0x1ca1, 0x145b: 0x1ca9, 0x145c: 0x1cb1, 0x145d: 0x1cb9, -+ 0x145e: 0x1cc1, 0x145f: 0x1cc9, 0x1460: 0x1cc9, 0x1461: 0x1cd1, 0x1462: 0x1cd9, 0x1463: 0x1cd9, -+ 0x1464: 0x1ce1, 0x1465: 0x1ce1, 0x1466: 0x1ce9, 0x1467: 0x1cf1, 0x1468: 0x1cf1, 0x1469: 0x1cf9, -+ 0x146a: 0x1d01, 0x146b: 0x1d01, 0x146c: 0x1d09, 0x146d: 0x1d09, 0x146e: 0x1d11, 0x146f: 0x1d19, -+ 0x1470: 0x1d19, 0x1471: 0x1d21, 0x1472: 0x1d21, 0x1473: 0x1d29, 0x1474: 0x1d31, 0x1475: 0x1d39, -+ 0x1476: 0x1d41, 0x1477: 0x1d41, 0x1478: 0x1d49, 0x1479: 0x1d51, 0x147a: 0x1d59, 0x147b: 0x1d61, -+ 0x147c: 0x1d69, 0x147d: 0x1d69, 0x147e: 0x1d71, 0x147f: 0x1d79, - // Block 0x52, offset 0x1480 -- 0x1480: 0x9379, 0x1481: 0x93a1, 0x1482: 0x93c9, 0x1483: 0x93f1, 0x1484: 0x9419, 0x1485: 0x9441, -- 0x1486: 0x9469, 0x1487: 0x9491, 0x1488: 0x94b9, 0x1489: 0x94e1, 0x148a: 0x9509, 0x148b: 0x9531, -- 0x148c: 0x90c9, 0x148d: 0x9559, 0x148e: 0x9581, 0x148f: 0x95a9, 0x1490: 0x95d1, 0x1491: 0x91c1, -- 0x1492: 0x91e9, 0x1493: 0x9211, 0x1494: 0x9239, 0x1495: 0x9261, 0x1496: 0x9289, 0x1497: 0x92b1, -- 0x1498: 0x92d9, 0x1499: 0x9301, 0x149a: 0x9329, 0x149b: 0x9351, 0x149c: 0x9379, 0x149d: 0x93a1, -- 0x149e: 0x93c9, 0x149f: 0x93f1, 0x14a0: 0x9419, 0x14a1: 0x9441, 0x14a2: 0x9469, 0x14a3: 0x9491, -- 0x14a4: 0x94b9, 0x14a5: 0x94e1, 0x14a6: 0x9509, 0x14a7: 0x9531, 0x14a8: 0x90c9, 0x14a9: 0x9559, -- 0x14aa: 0x9581, 0x14ab: 0x95a9, 0x14ac: 0x95d1, 0x14ad: 0x94e1, 0x14ae: 0x9509, 0x14af: 0x9531, -- 0x14b0: 0x90c9, 0x14b1: 0x90a1, 0x14b2: 0x90f1, 0x14b3: 0x8261, 0x14b4: 0x80a9, 0x14b5: 0x80d1, -- 0x14b6: 0x80f9, 0x14b7: 0x94e1, 0x14b8: 0x9509, 0x14b9: 0x9531, 0x14ba: 0x8261, 0x14bb: 0x8289, -- 0x14bc: 0x95f9, 0x14bd: 0x95f9, 0x14be: 0x0018, 0x14bf: 0x0018, -+ 0x1480: 0x1f29, 0x1481: 0x1f31, 0x1482: 0x1f39, 0x1483: 0x1f11, 0x1484: 0x1d39, 0x1485: 0x1ce9, -+ 0x1486: 0x1f41, 0x1487: 0x1f49, 0x1488: 0x0040, 0x1489: 0x0040, 0x148a: 0x0040, 0x148b: 0x0040, -+ 0x148c: 0x0040, 0x148d: 0x0040, 0x148e: 0x0040, 0x148f: 0x0040, 0x1490: 0x0040, 0x1491: 0x0040, -+ 0x1492: 0x0040, 0x1493: 0x0040, 0x1494: 0x0040, 0x1495: 0x0040, 0x1496: 0x0040, 0x1497: 0x0040, -+ 0x1498: 0x0040, 0x1499: 0x0040, 0x149a: 0x0040, 0x149b: 0x0040, 0x149c: 0x0040, 0x149d: 0x0040, -+ 0x149e: 0x0040, 0x149f: 0x0040, 0x14a0: 0x0040, 0x14a1: 0x0040, 0x14a2: 0x0040, 0x14a3: 0x0040, -+ 0x14a4: 0x0040, 0x14a5: 0x0040, 0x14a6: 0x0040, 0x14a7: 0x0040, 0x14a8: 0x0040, 0x14a9: 0x0040, -+ 0x14aa: 0x0040, 0x14ab: 0x0040, 0x14ac: 0x0040, 0x14ad: 0x0040, 0x14ae: 0x0040, 0x14af: 0x0040, -+ 0x14b0: 0x1f51, 0x14b1: 0x1f59, 0x14b2: 0x1f61, 0x14b3: 0x1f69, 0x14b4: 0x1f71, 0x14b5: 0x1f79, -+ 0x14b6: 0x1f81, 0x14b7: 0x1f89, 0x14b8: 0x1f91, 0x14b9: 0x1f99, 0x14ba: 0x1fa2, 0x14bb: 0x1faa, -+ 0x14bc: 0x1fb1, 0x14bd: 0x0018, 0x14be: 0x0040, 0x14bf: 0x0040, - // 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: 0x9621, 0x14d1: 0x9659, -- 0x14d2: 0x9659, 0x14d3: 0x9691, 0x14d4: 0x96c9, 0x14d5: 0x9701, 0x14d6: 0x9739, 0x14d7: 0x9771, -- 0x14d8: 0x97a9, 0x14d9: 0x97a9, 0x14da: 0x97e1, 0x14db: 0x9819, 0x14dc: 0x9851, 0x14dd: 0x9889, -- 0x14de: 0x98c1, 0x14df: 0x98f9, 0x14e0: 0x98f9, 0x14e1: 0x9931, 0x14e2: 0x9969, 0x14e3: 0x9969, -- 0x14e4: 0x99a1, 0x14e5: 0x99a1, 0x14e6: 0x99d9, 0x14e7: 0x9a11, 0x14e8: 0x9a11, 0x14e9: 0x9a49, -- 0x14ea: 0x9a81, 0x14eb: 0x9a81, 0x14ec: 0x9ab9, 0x14ed: 0x9ab9, 0x14ee: 0x9af1, 0x14ef: 0x9b29, -- 0x14f0: 0x9b29, 0x14f1: 0x9b61, 0x14f2: 0x9b61, 0x14f3: 0x9b99, 0x14f4: 0x9bd1, 0x14f5: 0x9c09, -- 0x14f6: 0x9c41, 0x14f7: 0x9c41, 0x14f8: 0x9c79, 0x14f9: 0x9cb1, 0x14fa: 0x9ce9, 0x14fb: 0x9d21, -- 0x14fc: 0x9d59, 0x14fd: 0x9d59, 0x14fe: 0x9d91, 0x14ff: 0x9dc9, -+ 0x14c0: 0x33c0, 0x14c1: 0x33c0, 0x14c2: 0x33c0, 0x14c3: 0x33c0, 0x14c4: 0x33c0, 0x14c5: 0x33c0, -+ 0x14c6: 0x33c0, 0x14c7: 0x33c0, 0x14c8: 0x33c0, 0x14c9: 0x33c0, 0x14ca: 0x33c0, 0x14cb: 0x33c0, -+ 0x14cc: 0x33c0, 0x14cd: 0x33c0, 0x14ce: 0x33c0, 0x14cf: 0x33c0, 0x14d0: 0x1fba, 0x14d1: 0x7d8d, -+ 0x14d2: 0x0040, 0x14d3: 0x1fc2, 0x14d4: 0x0122, 0x14d5: 0x1fca, 0x14d6: 0x1fd2, 0x14d7: 0x7dad, -+ 0x14d8: 0x7dcd, 0x14d9: 0x0040, 0x14da: 0x0040, 0x14db: 0x0040, 0x14dc: 0x0040, 0x14dd: 0x0040, -+ 0x14de: 0x0040, 0x14df: 0x0040, 0x14e0: 0x3308, 0x14e1: 0x3308, 0x14e2: 0x3308, 0x14e3: 0x3308, -+ 0x14e4: 0x3308, 0x14e5: 0x3308, 0x14e6: 0x3308, 0x14e7: 0x3308, 0x14e8: 0x3308, 0x14e9: 0x3308, -+ 0x14ea: 0x3308, 0x14eb: 0x3308, 0x14ec: 0x3308, 0x14ed: 0x3308, 0x14ee: 0x3308, 0x14ef: 0x3308, -+ 0x14f0: 0x0040, 0x14f1: 0x7ded, 0x14f2: 0x7e0d, 0x14f3: 0x1fda, 0x14f4: 0x1fda, 0x14f5: 0x072a, -+ 0x14f6: 0x0732, 0x14f7: 0x1fe2, 0x14f8: 0x1fea, 0x14f9: 0x7e2d, 0x14fa: 0x7e4d, 0x14fb: 0x7e6d, -+ 0x14fc: 0x7e2d, 0x14fd: 0x7e8d, 0x14fe: 0x7ead, 0x14ff: 0x7e8d, - // Block 0x54, offset 0x1500 -- 0x1500: 0xa999, 0x1501: 0xa9d1, 0x1502: 0xaa09, 0x1503: 0xa8f1, 0x1504: 0x9c09, 0x1505: 0x99d9, -- 0x1506: 0xaa41, 0x1507: 0xaa79, 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: 0xaab1, 0x1531: 0xaae9, 0x1532: 0xab21, 0x1533: 0xab69, 0x1534: 0xabb1, 0x1535: 0xabf9, -- 0x1536: 0xac41, 0x1537: 0xac89, 0x1538: 0xacd1, 0x1539: 0xad19, 0x153a: 0xad52, 0x153b: 0xae62, -- 0x153c: 0xaee1, 0x153d: 0x0018, 0x153e: 0x0040, 0x153f: 0x0040, -+ 0x1500: 0x7ecd, 0x1501: 0x7eed, 0x1502: 0x7f0d, 0x1503: 0x7eed, 0x1504: 0x7f2d, 0x1505: 0x0018, -+ 0x1506: 0x0018, 0x1507: 0x1ff2, 0x1508: 0x1ffa, 0x1509: 0x7f4e, 0x150a: 0x7f6e, 0x150b: 0x7f8e, -+ 0x150c: 0x7fae, 0x150d: 0x1fda, 0x150e: 0x1fda, 0x150f: 0x1fda, 0x1510: 0x1fba, 0x1511: 0x7fcd, -+ 0x1512: 0x0040, 0x1513: 0x0040, 0x1514: 0x0122, 0x1515: 0x1fc2, 0x1516: 0x1fd2, 0x1517: 0x1fca, -+ 0x1518: 0x7fed, 0x1519: 0x072a, 0x151a: 0x0732, 0x151b: 0x1fe2, 0x151c: 0x1fea, 0x151d: 0x7ecd, -+ 0x151e: 0x7f2d, 0x151f: 0x2002, 0x1520: 0x200a, 0x1521: 0x2012, 0x1522: 0x071a, 0x1523: 0x2019, -+ 0x1524: 0x2022, 0x1525: 0x202a, 0x1526: 0x0722, 0x1527: 0x0040, 0x1528: 0x2032, 0x1529: 0x203a, -+ 0x152a: 0x2042, 0x152b: 0x204a, 0x152c: 0x0040, 0x152d: 0x0040, 0x152e: 0x0040, 0x152f: 0x0040, -+ 0x1530: 0x800e, 0x1531: 0x2051, 0x1532: 0x802e, 0x1533: 0x0808, 0x1534: 0x804e, 0x1535: 0x0040, -+ 0x1536: 0x806e, 0x1537: 0x2059, 0x1538: 0x808e, 0x1539: 0x2061, 0x153a: 0x80ae, 0x153b: 0x2069, -+ 0x153c: 0x80ce, 0x153d: 0x2071, 0x153e: 0x80ee, 0x153f: 0x2079, - // 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: 0xaf2a, 0x1551: 0x7d8d, -- 0x1552: 0x0040, 0x1553: 0xaf3a, 0x1554: 0x03c2, 0x1555: 0xaf4a, 0x1556: 0xaf5a, 0x1557: 0x7dad, -- 0x1558: 0x7dcd, 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: 0x7ded, 0x1572: 0x7e0d, 0x1573: 0xaf6a, 0x1574: 0xaf6a, 0x1575: 0x1fd2, -- 0x1576: 0x1fe2, 0x1577: 0xaf7a, 0x1578: 0xaf8a, 0x1579: 0x7e2d, 0x157a: 0x7e4d, 0x157b: 0x7e6d, -- 0x157c: 0x7e2d, 0x157d: 0x7e8d, 0x157e: 0x7ead, 0x157f: 0x7e8d, -+ 0x1540: 0x2081, 0x1541: 0x2089, 0x1542: 0x2089, 0x1543: 0x2091, 0x1544: 0x2091, 0x1545: 0x2099, -+ 0x1546: 0x2099, 0x1547: 0x20a1, 0x1548: 0x20a1, 0x1549: 0x20a9, 0x154a: 0x20a9, 0x154b: 0x20a9, -+ 0x154c: 0x20a9, 0x154d: 0x20b1, 0x154e: 0x20b1, 0x154f: 0x20b9, 0x1550: 0x20b9, 0x1551: 0x20b9, -+ 0x1552: 0x20b9, 0x1553: 0x20c1, 0x1554: 0x20c1, 0x1555: 0x20c9, 0x1556: 0x20c9, 0x1557: 0x20c9, -+ 0x1558: 0x20c9, 0x1559: 0x20d1, 0x155a: 0x20d1, 0x155b: 0x20d1, 0x155c: 0x20d1, 0x155d: 0x20d9, -+ 0x155e: 0x20d9, 0x155f: 0x20d9, 0x1560: 0x20d9, 0x1561: 0x20e1, 0x1562: 0x20e1, 0x1563: 0x20e1, -+ 0x1564: 0x20e1, 0x1565: 0x20e9, 0x1566: 0x20e9, 0x1567: 0x20e9, 0x1568: 0x20e9, 0x1569: 0x20f1, -+ 0x156a: 0x20f1, 0x156b: 0x20f9, 0x156c: 0x20f9, 0x156d: 0x2101, 0x156e: 0x2101, 0x156f: 0x2109, -+ 0x1570: 0x2109, 0x1571: 0x2111, 0x1572: 0x2111, 0x1573: 0x2111, 0x1574: 0x2111, 0x1575: 0x2119, -+ 0x1576: 0x2119, 0x1577: 0x2119, 0x1578: 0x2119, 0x1579: 0x2121, 0x157a: 0x2121, 0x157b: 0x2121, -+ 0x157c: 0x2121, 0x157d: 0x2129, 0x157e: 0x2129, 0x157f: 0x2129, - // Block 0x56, offset 0x1580 -- 0x1580: 0x7ecd, 0x1581: 0x7eed, 0x1582: 0x7f0d, 0x1583: 0x7eed, 0x1584: 0x7f2d, 0x1585: 0x0018, -- 0x1586: 0x0018, 0x1587: 0xaf9a, 0x1588: 0xafaa, 0x1589: 0x7f4e, 0x158a: 0x7f6e, 0x158b: 0x7f8e, -- 0x158c: 0x7fae, 0x158d: 0xaf6a, 0x158e: 0xaf6a, 0x158f: 0xaf6a, 0x1590: 0xaf2a, 0x1591: 0x7fcd, -- 0x1592: 0x0040, 0x1593: 0x0040, 0x1594: 0x03c2, 0x1595: 0xaf3a, 0x1596: 0xaf5a, 0x1597: 0xaf4a, -- 0x1598: 0x7fed, 0x1599: 0x1fd2, 0x159a: 0x1fe2, 0x159b: 0xaf7a, 0x159c: 0xaf8a, 0x159d: 0x7ecd, -- 0x159e: 0x7f2d, 0x159f: 0xafba, 0x15a0: 0xafca, 0x15a1: 0xafda, 0x15a2: 0x1fb2, 0x15a3: 0xafe9, -- 0x15a4: 0xaffa, 0x15a5: 0xb00a, 0x15a6: 0x1fc2, 0x15a7: 0x0040, 0x15a8: 0xb01a, 0x15a9: 0xb02a, -- 0x15aa: 0xb03a, 0x15ab: 0xb04a, 0x15ac: 0x0040, 0x15ad: 0x0040, 0x15ae: 0x0040, 0x15af: 0x0040, -- 0x15b0: 0x800e, 0x15b1: 0xb059, 0x15b2: 0x802e, 0x15b3: 0x0808, 0x15b4: 0x804e, 0x15b5: 0x0040, -- 0x15b6: 0x806e, 0x15b7: 0xb081, 0x15b8: 0x808e, 0x15b9: 0xb0a9, 0x15ba: 0x80ae, 0x15bb: 0xb0d1, -- 0x15bc: 0x80ce, 0x15bd: 0xb0f9, 0x15be: 0x80ee, 0x15bf: 0xb121, -+ 0x1580: 0x2129, 0x1581: 0x2131, 0x1582: 0x2131, 0x1583: 0x2131, 0x1584: 0x2131, 0x1585: 0x2139, -+ 0x1586: 0x2139, 0x1587: 0x2139, 0x1588: 0x2139, 0x1589: 0x2141, 0x158a: 0x2141, 0x158b: 0x2141, -+ 0x158c: 0x2141, 0x158d: 0x2149, 0x158e: 0x2149, 0x158f: 0x2149, 0x1590: 0x2149, 0x1591: 0x2151, -+ 0x1592: 0x2151, 0x1593: 0x2151, 0x1594: 0x2151, 0x1595: 0x2159, 0x1596: 0x2159, 0x1597: 0x2159, -+ 0x1598: 0x2159, 0x1599: 0x2161, 0x159a: 0x2161, 0x159b: 0x2161, 0x159c: 0x2161, 0x159d: 0x2169, -+ 0x159e: 0x2169, 0x159f: 0x2169, 0x15a0: 0x2169, 0x15a1: 0x2171, 0x15a2: 0x2171, 0x15a3: 0x2171, -+ 0x15a4: 0x2171, 0x15a5: 0x2179, 0x15a6: 0x2179, 0x15a7: 0x2179, 0x15a8: 0x2179, 0x15a9: 0x2181, -+ 0x15aa: 0x2181, 0x15ab: 0x2181, 0x15ac: 0x2181, 0x15ad: 0x2189, 0x15ae: 0x2189, 0x15af: 0x1701, -+ 0x15b0: 0x1701, 0x15b1: 0x2191, 0x15b2: 0x2191, 0x15b3: 0x2191, 0x15b4: 0x2191, 0x15b5: 0x2199, -+ 0x15b6: 0x2199, 0x15b7: 0x21a1, 0x15b8: 0x21a1, 0x15b9: 0x21a9, 0x15ba: 0x21a9, 0x15bb: 0x21b1, -+ 0x15bc: 0x21b1, 0x15bd: 0x0040, 0x15be: 0x0040, 0x15bf: 0x03c0, - // Block 0x57, offset 0x15c0 -- 0x15c0: 0xb149, 0x15c1: 0xb161, 0x15c2: 0xb161, 0x15c3: 0xb179, 0x15c4: 0xb179, 0x15c5: 0xb191, -- 0x15c6: 0xb191, 0x15c7: 0xb1a9, 0x15c8: 0xb1a9, 0x15c9: 0xb1c1, 0x15ca: 0xb1c1, 0x15cb: 0xb1c1, -- 0x15cc: 0xb1c1, 0x15cd: 0xb1d9, 0x15ce: 0xb1d9, 0x15cf: 0xb1f1, 0x15d0: 0xb1f1, 0x15d1: 0xb1f1, -- 0x15d2: 0xb1f1, 0x15d3: 0xb209, 0x15d4: 0xb209, 0x15d5: 0xb221, 0x15d6: 0xb221, 0x15d7: 0xb221, -- 0x15d8: 0xb221, 0x15d9: 0xb239, 0x15da: 0xb239, 0x15db: 0xb239, 0x15dc: 0xb239, 0x15dd: 0xb251, -- 0x15de: 0xb251, 0x15df: 0xb251, 0x15e0: 0xb251, 0x15e1: 0xb269, 0x15e2: 0xb269, 0x15e3: 0xb269, -- 0x15e4: 0xb269, 0x15e5: 0xb281, 0x15e6: 0xb281, 0x15e7: 0xb281, 0x15e8: 0xb281, 0x15e9: 0xb299, -- 0x15ea: 0xb299, 0x15eb: 0xb2b1, 0x15ec: 0xb2b1, 0x15ed: 0xb2c9, 0x15ee: 0xb2c9, 0x15ef: 0xb2e1, -- 0x15f0: 0xb2e1, 0x15f1: 0xb2f9, 0x15f2: 0xb2f9, 0x15f3: 0xb2f9, 0x15f4: 0xb2f9, 0x15f5: 0xb311, -- 0x15f6: 0xb311, 0x15f7: 0xb311, 0x15f8: 0xb311, 0x15f9: 0xb329, 0x15fa: 0xb329, 0x15fb: 0xb329, -- 0x15fc: 0xb329, 0x15fd: 0xb341, 0x15fe: 0xb341, 0x15ff: 0xb341, -+ 0x15c0: 0x0040, 0x15c1: 0x1fca, 0x15c2: 0x21ba, 0x15c3: 0x2002, 0x15c4: 0x203a, 0x15c5: 0x2042, -+ 0x15c6: 0x200a, 0x15c7: 0x21c2, 0x15c8: 0x072a, 0x15c9: 0x0732, 0x15ca: 0x2012, 0x15cb: 0x071a, -+ 0x15cc: 0x1fba, 0x15cd: 0x2019, 0x15ce: 0x0961, 0x15cf: 0x21ca, 0x15d0: 0x06e1, 0x15d1: 0x0049, -+ 0x15d2: 0x0029, 0x15d3: 0x0031, 0x15d4: 0x06e9, 0x15d5: 0x06f1, 0x15d6: 0x06f9, 0x15d7: 0x0701, -+ 0x15d8: 0x0709, 0x15d9: 0x0711, 0x15da: 0x1fc2, 0x15db: 0x0122, 0x15dc: 0x2022, 0x15dd: 0x0722, -+ 0x15de: 0x202a, 0x15df: 0x1fd2, 0x15e0: 0x204a, 0x15e1: 0x0019, 0x15e2: 0x02e9, 0x15e3: 0x03d9, -+ 0x15e4: 0x02f1, 0x15e5: 0x02f9, 0x15e6: 0x03f1, 0x15e7: 0x0309, 0x15e8: 0x00a9, 0x15e9: 0x0311, -+ 0x15ea: 0x00b1, 0x15eb: 0x0319, 0x15ec: 0x0101, 0x15ed: 0x0321, 0x15ee: 0x0329, 0x15ef: 0x0051, -+ 0x15f0: 0x0339, 0x15f1: 0x0751, 0x15f2: 0x00b9, 0x15f3: 0x0089, 0x15f4: 0x0341, 0x15f5: 0x0349, -+ 0x15f6: 0x0391, 0x15f7: 0x00c1, 0x15f8: 0x0109, 0x15f9: 0x00c9, 0x15fa: 0x04b1, 0x15fb: 0x1ff2, -+ 0x15fc: 0x2032, 0x15fd: 0x1ffa, 0x15fe: 0x21d2, 0x15ff: 0x1fda, - // Block 0x58, offset 0x1600 -- 0x1600: 0xb341, 0x1601: 0xb359, 0x1602: 0xb359, 0x1603: 0xb359, 0x1604: 0xb359, 0x1605: 0xb371, -- 0x1606: 0xb371, 0x1607: 0xb371, 0x1608: 0xb371, 0x1609: 0xb389, 0x160a: 0xb389, 0x160b: 0xb389, -- 0x160c: 0xb389, 0x160d: 0xb3a1, 0x160e: 0xb3a1, 0x160f: 0xb3a1, 0x1610: 0xb3a1, 0x1611: 0xb3b9, -- 0x1612: 0xb3b9, 0x1613: 0xb3b9, 0x1614: 0xb3b9, 0x1615: 0xb3d1, 0x1616: 0xb3d1, 0x1617: 0xb3d1, -- 0x1618: 0xb3d1, 0x1619: 0xb3e9, 0x161a: 0xb3e9, 0x161b: 0xb3e9, 0x161c: 0xb3e9, 0x161d: 0xb401, -- 0x161e: 0xb401, 0x161f: 0xb401, 0x1620: 0xb401, 0x1621: 0xb419, 0x1622: 0xb419, 0x1623: 0xb419, -- 0x1624: 0xb419, 0x1625: 0xb431, 0x1626: 0xb431, 0x1627: 0xb431, 0x1628: 0xb431, 0x1629: 0xb449, -- 0x162a: 0xb449, 0x162b: 0xb449, 0x162c: 0xb449, 0x162d: 0xb461, 0x162e: 0xb461, 0x162f: 0x7b01, -- 0x1630: 0x7b01, 0x1631: 0xb479, 0x1632: 0xb479, 0x1633: 0xb479, 0x1634: 0xb479, 0x1635: 0xb491, -- 0x1636: 0xb491, 0x1637: 0xb4b9, 0x1638: 0xb4b9, 0x1639: 0xb4e1, 0x163a: 0xb4e1, 0x163b: 0xb509, -- 0x163c: 0xb509, 0x163d: 0x0040, 0x163e: 0x0040, 0x163f: 0x03c0, -+ 0x1600: 0x0672, 0x1601: 0x0019, 0x1602: 0x02e9, 0x1603: 0x03d9, 0x1604: 0x02f1, 0x1605: 0x02f9, -+ 0x1606: 0x03f1, 0x1607: 0x0309, 0x1608: 0x00a9, 0x1609: 0x0311, 0x160a: 0x00b1, 0x160b: 0x0319, -+ 0x160c: 0x0101, 0x160d: 0x0321, 0x160e: 0x0329, 0x160f: 0x0051, 0x1610: 0x0339, 0x1611: 0x0751, -+ 0x1612: 0x00b9, 0x1613: 0x0089, 0x1614: 0x0341, 0x1615: 0x0349, 0x1616: 0x0391, 0x1617: 0x00c1, -+ 0x1618: 0x0109, 0x1619: 0x00c9, 0x161a: 0x04b1, 0x161b: 0x1fe2, 0x161c: 0x21da, 0x161d: 0x1fea, -+ 0x161e: 0x21e2, 0x161f: 0x810d, 0x1620: 0x812d, 0x1621: 0x0961, 0x1622: 0x814d, 0x1623: 0x814d, -+ 0x1624: 0x816d, 0x1625: 0x818d, 0x1626: 0x81ad, 0x1627: 0x81cd, 0x1628: 0x81ed, 0x1629: 0x820d, -+ 0x162a: 0x822d, 0x162b: 0x824d, 0x162c: 0x826d, 0x162d: 0x828d, 0x162e: 0x82ad, 0x162f: 0x82cd, -+ 0x1630: 0x82ed, 0x1631: 0x830d, 0x1632: 0x832d, 0x1633: 0x834d, 0x1634: 0x836d, 0x1635: 0x838d, -+ 0x1636: 0x83ad, 0x1637: 0x83cd, 0x1638: 0x83ed, 0x1639: 0x840d, 0x163a: 0x842d, 0x163b: 0x844d, -+ 0x163c: 0x81ed, 0x163d: 0x846d, 0x163e: 0x848d, 0x163f: 0x824d, - // Block 0x59, offset 0x1640 -- 0x1640: 0x0040, 0x1641: 0xaf4a, 0x1642: 0xb532, 0x1643: 0xafba, 0x1644: 0xb02a, 0x1645: 0xb03a, -- 0x1646: 0xafca, 0x1647: 0xb542, 0x1648: 0x1fd2, 0x1649: 0x1fe2, 0x164a: 0xafda, 0x164b: 0x1fb2, -- 0x164c: 0xaf2a, 0x164d: 0xafe9, 0x164e: 0x29d1, 0x164f: 0xb552, 0x1650: 0x1f41, 0x1651: 0x00c9, -- 0x1652: 0x0069, 0x1653: 0x0079, 0x1654: 0x1f51, 0x1655: 0x1f61, 0x1656: 0x1f71, 0x1657: 0x1f81, -- 0x1658: 0x1f91, 0x1659: 0x1fa1, 0x165a: 0xaf3a, 0x165b: 0x03c2, 0x165c: 0xaffa, 0x165d: 0x1fc2, -- 0x165e: 0xb00a, 0x165f: 0xaf5a, 0x1660: 0xb04a, 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: 0xaf9a, -- 0x167c: 0xb01a, 0x167d: 0xafaa, 0x167e: 0xb562, 0x167f: 0xaf6a, -+ 0x1640: 0x84ad, 0x1641: 0x84cd, 0x1642: 0x84ed, 0x1643: 0x850d, 0x1644: 0x852d, 0x1645: 0x854d, -+ 0x1646: 0x856d, 0x1647: 0x858d, 0x1648: 0x850d, 0x1649: 0x85ad, 0x164a: 0x850d, 0x164b: 0x85cd, -+ 0x164c: 0x85cd, 0x164d: 0x85ed, 0x164e: 0x85ed, 0x164f: 0x860d, 0x1650: 0x854d, 0x1651: 0x862d, -+ 0x1652: 0x864d, 0x1653: 0x862d, 0x1654: 0x866d, 0x1655: 0x864d, 0x1656: 0x868d, 0x1657: 0x868d, -+ 0x1658: 0x86ad, 0x1659: 0x86ad, 0x165a: 0x86cd, 0x165b: 0x86cd, 0x165c: 0x864d, 0x165d: 0x814d, -+ 0x165e: 0x86ed, 0x165f: 0x870d, 0x1660: 0x0040, 0x1661: 0x872d, 0x1662: 0x874d, 0x1663: 0x876d, -+ 0x1664: 0x878d, 0x1665: 0x876d, 0x1666: 0x87ad, 0x1667: 0x87cd, 0x1668: 0x87ed, 0x1669: 0x87ed, -+ 0x166a: 0x880d, 0x166b: 0x880d, 0x166c: 0x882d, 0x166d: 0x882d, 0x166e: 0x880d, 0x166f: 0x880d, -+ 0x1670: 0x884d, 0x1671: 0x886d, 0x1672: 0x888d, 0x1673: 0x88ad, 0x1674: 0x88cd, 0x1675: 0x88ed, -+ 0x1676: 0x88ed, 0x1677: 0x88ed, 0x1678: 0x890d, 0x1679: 0x890d, 0x167a: 0x890d, 0x167b: 0x890d, -+ 0x167c: 0x87ed, 0x167d: 0x87ed, 0x167e: 0x87ed, 0x167f: 0x0040, - // 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: 0xaf7a, 0x169c: 0xb572, 0x169d: 0xaf8a, -- 0x169e: 0xb582, 0x169f: 0x810d, 0x16a0: 0x812d, 0x16a1: 0x29d1, 0x16a2: 0x814d, 0x16a3: 0x814d, -- 0x16a4: 0x816d, 0x16a5: 0x818d, 0x16a6: 0x81ad, 0x16a7: 0x81cd, 0x16a8: 0x81ed, 0x16a9: 0x820d, -- 0x16aa: 0x822d, 0x16ab: 0x824d, 0x16ac: 0x826d, 0x16ad: 0x828d, 0x16ae: 0x82ad, 0x16af: 0x82cd, -- 0x16b0: 0x82ed, 0x16b1: 0x830d, 0x16b2: 0x832d, 0x16b3: 0x834d, 0x16b4: 0x836d, 0x16b5: 0x838d, -- 0x16b6: 0x83ad, 0x16b7: 0x83cd, 0x16b8: 0x83ed, 0x16b9: 0x840d, 0x16ba: 0x842d, 0x16bb: 0x844d, -- 0x16bc: 0x81ed, 0x16bd: 0x846d, 0x16be: 0x848d, 0x16bf: 0x824d, -+ 0x1680: 0x0040, 0x1681: 0x0040, 0x1682: 0x874d, 0x1683: 0x872d, 0x1684: 0x892d, 0x1685: 0x872d, -+ 0x1686: 0x874d, 0x1687: 0x872d, 0x1688: 0x0040, 0x1689: 0x0040, 0x168a: 0x894d, 0x168b: 0x874d, -+ 0x168c: 0x896d, 0x168d: 0x892d, 0x168e: 0x896d, 0x168f: 0x874d, 0x1690: 0x0040, 0x1691: 0x0040, -+ 0x1692: 0x898d, 0x1693: 0x89ad, 0x1694: 0x88ad, 0x1695: 0x896d, 0x1696: 0x892d, 0x1697: 0x896d, -+ 0x1698: 0x0040, 0x1699: 0x0040, 0x169a: 0x89cd, 0x169b: 0x89ed, 0x169c: 0x89cd, 0x169d: 0x0040, -+ 0x169e: 0x0040, 0x169f: 0x0040, 0x16a0: 0x21e9, 0x16a1: 0x21f1, 0x16a2: 0x21f9, 0x16a3: 0x8a0e, -+ 0x16a4: 0x2201, 0x16a5: 0x2209, 0x16a6: 0x8a2d, 0x16a7: 0x0040, 0x16a8: 0x8a4d, 0x16a9: 0x8a6d, -+ 0x16aa: 0x8a8d, 0x16ab: 0x8a6d, 0x16ac: 0x8aad, 0x16ad: 0x8acd, 0x16ae: 0x8aed, 0x16af: 0x0040, -+ 0x16b0: 0x0040, 0x16b1: 0x0040, 0x16b2: 0x0040, 0x16b3: 0x0040, 0x16b4: 0x0040, 0x16b5: 0x0040, -+ 0x16b6: 0x0040, 0x16b7: 0x0040, 0x16b8: 0x0040, 0x16b9: 0x0340, 0x16ba: 0x0340, 0x16bb: 0x0340, -+ 0x16bc: 0x0040, 0x16bd: 0x0040, 0x16be: 0x0040, 0x16bf: 0x0040, - // Block 0x5b, offset 0x16c0 -- 0x16c0: 0x84ad, 0x16c1: 0x84cd, 0x16c2: 0x84ed, 0x16c3: 0x850d, 0x16c4: 0x852d, 0x16c5: 0x854d, -- 0x16c6: 0x856d, 0x16c7: 0x858d, 0x16c8: 0x850d, 0x16c9: 0x85ad, 0x16ca: 0x850d, 0x16cb: 0x85cd, -- 0x16cc: 0x85cd, 0x16cd: 0x85ed, 0x16ce: 0x85ed, 0x16cf: 0x860d, 0x16d0: 0x854d, 0x16d1: 0x862d, -- 0x16d2: 0x864d, 0x16d3: 0x862d, 0x16d4: 0x866d, 0x16d5: 0x864d, 0x16d6: 0x868d, 0x16d7: 0x868d, -- 0x16d8: 0x86ad, 0x16d9: 0x86ad, 0x16da: 0x86cd, 0x16db: 0x86cd, 0x16dc: 0x864d, 0x16dd: 0x814d, -- 0x16de: 0x86ed, 0x16df: 0x870d, 0x16e0: 0x0040, 0x16e1: 0x872d, 0x16e2: 0x874d, 0x16e3: 0x876d, -- 0x16e4: 0x878d, 0x16e5: 0x876d, 0x16e6: 0x87ad, 0x16e7: 0x87cd, 0x16e8: 0x87ed, 0x16e9: 0x87ed, -- 0x16ea: 0x880d, 0x16eb: 0x880d, 0x16ec: 0x882d, 0x16ed: 0x882d, 0x16ee: 0x880d, 0x16ef: 0x880d, -- 0x16f0: 0x884d, 0x16f1: 0x886d, 0x16f2: 0x888d, 0x16f3: 0x88ad, 0x16f4: 0x88cd, 0x16f5: 0x88ed, -- 0x16f6: 0x88ed, 0x16f7: 0x88ed, 0x16f8: 0x890d, 0x16f9: 0x890d, 0x16fa: 0x890d, 0x16fb: 0x890d, -- 0x16fc: 0x87ed, 0x16fd: 0x87ed, 0x16fe: 0x87ed, 0x16ff: 0x0040, -+ 0x16c0: 0x0a08, 0x16c1: 0x0a08, 0x16c2: 0x0a08, 0x16c3: 0x0a08, 0x16c4: 0x0a08, 0x16c5: 0x0c08, -+ 0x16c6: 0x0808, 0x16c7: 0x0c08, 0x16c8: 0x0818, 0x16c9: 0x0c08, 0x16ca: 0x0c08, 0x16cb: 0x0808, -+ 0x16cc: 0x0808, 0x16cd: 0x0908, 0x16ce: 0x0c08, 0x16cf: 0x0c08, 0x16d0: 0x0c08, 0x16d1: 0x0c08, -+ 0x16d2: 0x0c08, 0x16d3: 0x0a08, 0x16d4: 0x0a08, 0x16d5: 0x0a08, 0x16d6: 0x0a08, 0x16d7: 0x0908, -+ 0x16d8: 0x0a08, 0x16d9: 0x0a08, 0x16da: 0x0a08, 0x16db: 0x0a08, 0x16dc: 0x0a08, 0x16dd: 0x0c08, -+ 0x16de: 0x0a08, 0x16df: 0x0a08, 0x16e0: 0x0a08, 0x16e1: 0x0c08, 0x16e2: 0x0808, 0x16e3: 0x0808, -+ 0x16e4: 0x0c08, 0x16e5: 0x3308, 0x16e6: 0x3308, 0x16e7: 0x0040, 0x16e8: 0x0040, 0x16e9: 0x0040, -+ 0x16ea: 0x0040, 0x16eb: 0x0a18, 0x16ec: 0x0a18, 0x16ed: 0x0a18, 0x16ee: 0x0a18, 0x16ef: 0x0c18, -+ 0x16f0: 0x0818, 0x16f1: 0x0818, 0x16f2: 0x0818, 0x16f3: 0x0818, 0x16f4: 0x0818, 0x16f5: 0x0818, -+ 0x16f6: 0x0818, 0x16f7: 0x0040, 0x16f8: 0x0040, 0x16f9: 0x0040, 0x16fa: 0x0040, 0x16fb: 0x0040, -+ 0x16fc: 0x0040, 0x16fd: 0x0040, 0x16fe: 0x0040, 0x16ff: 0x0040, - // Block 0x5c, offset 0x1700 -- 0x1700: 0x0040, 0x1701: 0x0040, 0x1702: 0x874d, 0x1703: 0x872d, 0x1704: 0x892d, 0x1705: 0x872d, -- 0x1706: 0x874d, 0x1707: 0x872d, 0x1708: 0x0040, 0x1709: 0x0040, 0x170a: 0x894d, 0x170b: 0x874d, -- 0x170c: 0x896d, 0x170d: 0x892d, 0x170e: 0x896d, 0x170f: 0x874d, 0x1710: 0x0040, 0x1711: 0x0040, -- 0x1712: 0x898d, 0x1713: 0x89ad, 0x1714: 0x88ad, 0x1715: 0x896d, 0x1716: 0x892d, 0x1717: 0x896d, -- 0x1718: 0x0040, 0x1719: 0x0040, 0x171a: 0x89cd, 0x171b: 0x89ed, 0x171c: 0x89cd, 0x171d: 0x0040, -- 0x171e: 0x0040, 0x171f: 0x0040, 0x1720: 0xb591, 0x1721: 0xb5a9, 0x1722: 0xb5c1, 0x1723: 0x8a0e, -- 0x1724: 0xb5d9, 0x1725: 0xb5f1, 0x1726: 0x8a2d, 0x1727: 0x0040, 0x1728: 0x8a4d, 0x1729: 0x8a6d, -- 0x172a: 0x8a8d, 0x172b: 0x8a6d, 0x172c: 0x8aad, 0x172d: 0x8acd, 0x172e: 0x8aed, 0x172f: 0x0040, -+ 0x1700: 0x0a08, 0x1701: 0x0c08, 0x1702: 0x0a08, 0x1703: 0x0c08, 0x1704: 0x0c08, 0x1705: 0x0c08, -+ 0x1706: 0x0a08, 0x1707: 0x0a08, 0x1708: 0x0a08, 0x1709: 0x0c08, 0x170a: 0x0a08, 0x170b: 0x0a08, -+ 0x170c: 0x0c08, 0x170d: 0x0a08, 0x170e: 0x0c08, 0x170f: 0x0c08, 0x1710: 0x0a08, 0x1711: 0x0c08, -+ 0x1712: 0x0040, 0x1713: 0x0040, 0x1714: 0x0040, 0x1715: 0x0040, 0x1716: 0x0040, 0x1717: 0x0040, -+ 0x1718: 0x0040, 0x1719: 0x0818, 0x171a: 0x0818, 0x171b: 0x0818, 0x171c: 0x0818, 0x171d: 0x0040, -+ 0x171e: 0x0040, 0x171f: 0x0040, 0x1720: 0x0040, 0x1721: 0x0040, 0x1722: 0x0040, 0x1723: 0x0040, -+ 0x1724: 0x0040, 0x1725: 0x0040, 0x1726: 0x0040, 0x1727: 0x0040, 0x1728: 0x0040, 0x1729: 0x0c18, -+ 0x172a: 0x0c18, 0x172b: 0x0c18, 0x172c: 0x0c18, 0x172d: 0x0a18, 0x172e: 0x0a18, 0x172f: 0x0818, - 0x1730: 0x0040, 0x1731: 0x0040, 0x1732: 0x0040, 0x1733: 0x0040, 0x1734: 0x0040, 0x1735: 0x0040, -- 0x1736: 0x0040, 0x1737: 0x0040, 0x1738: 0x0040, 0x1739: 0x0340, 0x173a: 0x0340, 0x173b: 0x0340, -+ 0x1736: 0x0040, 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: 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, -+ 0x1740: 0x3308, 0x1741: 0x3308, 0x1742: 0x3008, 0x1743: 0x3008, 0x1744: 0x0040, 0x1745: 0x0008, -+ 0x1746: 0x0008, 0x1747: 0x0008, 0x1748: 0x0008, 0x1749: 0x0008, 0x174a: 0x0008, 0x174b: 0x0008, -+ 0x174c: 0x0008, 0x174d: 0x0040, 0x174e: 0x0040, 0x174f: 0x0008, 0x1750: 0x0008, 0x1751: 0x0040, -+ 0x1752: 0x0040, 0x1753: 0x0008, 0x1754: 0x0008, 0x1755: 0x0008, 0x1756: 0x0008, 0x1757: 0x0008, -+ 0x1758: 0x0008, 0x1759: 0x0008, 0x175a: 0x0008, 0x175b: 0x0008, 0x175c: 0x0008, 0x175d: 0x0008, -+ 0x175e: 0x0008, 0x175f: 0x0008, 0x1760: 0x0008, 0x1761: 0x0008, 0x1762: 0x0008, 0x1763: 0x0008, -+ 0x1764: 0x0008, 0x1765: 0x0008, 0x1766: 0x0008, 0x1767: 0x0008, 0x1768: 0x0008, 0x1769: 0x0040, -+ 0x176a: 0x0008, 0x176b: 0x0008, 0x176c: 0x0008, 0x176d: 0x0008, 0x176e: 0x0008, 0x176f: 0x0008, -+ 0x1770: 0x0008, 0x1771: 0x0040, 0x1772: 0x0008, 0x1773: 0x0008, 0x1774: 0x0040, 0x1775: 0x0008, -+ 0x1776: 0x0008, 0x1777: 0x0008, 0x1778: 0x0008, 0x1779: 0x0008, 0x177a: 0x0040, 0x177b: 0x3308, -+ 0x177c: 0x3308, 0x177d: 0x0008, 0x177e: 0x3008, 0x177f: 0x3008, - // 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, -+ 0x1780: 0x3308, 0x1781: 0x3008, 0x1782: 0x3008, 0x1783: 0x3008, 0x1784: 0x3008, 0x1785: 0x0040, -+ 0x1786: 0x0040, 0x1787: 0x3008, 0x1788: 0x3008, 0x1789: 0x0040, 0x178a: 0x0040, 0x178b: 0x3008, -+ 0x178c: 0x3008, 0x178d: 0x3808, 0x178e: 0x0040, 0x178f: 0x0040, 0x1790: 0x0008, 0x1791: 0x0040, -+ 0x1792: 0x0040, 0x1793: 0x0040, 0x1794: 0x0040, 0x1795: 0x0040, 0x1796: 0x0040, 0x1797: 0x3008, -+ 0x1798: 0x0040, 0x1799: 0x0040, 0x179a: 0x0040, 0x179b: 0x0040, 0x179c: 0x0040, 0x179d: 0x0008, -+ 0x179e: 0x0008, 0x179f: 0x0008, 0x17a0: 0x0008, 0x17a1: 0x0008, 0x17a2: 0x3008, 0x17a3: 0x3008, -+ 0x17a4: 0x0040, 0x17a5: 0x0040, 0x17a6: 0x3308, 0x17a7: 0x3308, 0x17a8: 0x3308, 0x17a9: 0x3308, -+ 0x17aa: 0x3308, 0x17ab: 0x3308, 0x17ac: 0x3308, 0x17ad: 0x0040, 0x17ae: 0x0040, 0x17af: 0x0040, -+ 0x17b0: 0x3308, 0x17b1: 0x3308, 0x17b2: 0x3308, 0x17b3: 0x3308, 0x17b4: 0x3308, 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, -+ 0x17c0: 0x0008, 0x17c1: 0x0008, 0x17c2: 0x0008, 0x17c3: 0x0008, 0x17c4: 0x0008, 0x17c5: 0x0008, -+ 0x17c6: 0x0008, 0x17c7: 0x0040, 0x17c8: 0x0040, 0x17c9: 0x0008, 0x17ca: 0x0040, 0x17cb: 0x0040, -+ 0x17cc: 0x0008, 0x17cd: 0x0008, 0x17ce: 0x0008, 0x17cf: 0x0008, 0x17d0: 0x0008, 0x17d1: 0x0008, -+ 0x17d2: 0x0008, 0x17d3: 0x0008, 0x17d4: 0x0040, 0x17d5: 0x0008, 0x17d6: 0x0008, 0x17d7: 0x0040, - 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, -+ 0x17e4: 0x0008, 0x17e5: 0x0008, 0x17e6: 0x0008, 0x17e7: 0x0008, 0x17e8: 0x0008, 0x17e9: 0x0008, - 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: 0x3308, -- 0x17fc: 0x3308, 0x17fd: 0x0008, 0x17fe: 0x3008, 0x17ff: 0x3008, -+ 0x17f0: 0x3008, 0x17f1: 0x3008, 0x17f2: 0x3008, 0x17f3: 0x3008, 0x17f4: 0x3008, 0x17f5: 0x3008, -+ 0x17f6: 0x0040, 0x17f7: 0x3008, 0x17f8: 0x3008, 0x17f9: 0x0040, 0x17fa: 0x0040, 0x17fb: 0x3308, -+ 0x17fc: 0x3308, 0x17fd: 0x3808, 0x17fe: 0x3b08, 0x17ff: 0x0008, - // 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, -+ 0x1800: 0x0019, 0x1801: 0x02e9, 0x1802: 0x03d9, 0x1803: 0x02f1, 0x1804: 0x02f9, 0x1805: 0x03f1, -+ 0x1806: 0x0309, 0x1807: 0x00a9, 0x1808: 0x0311, 0x1809: 0x00b1, 0x180a: 0x0319, 0x180b: 0x0101, -+ 0x180c: 0x0321, 0x180d: 0x0329, 0x180e: 0x0051, 0x180f: 0x0339, 0x1810: 0x0751, 0x1811: 0x00b9, -+ 0x1812: 0x0089, 0x1813: 0x0341, 0x1814: 0x0349, 0x1815: 0x0391, 0x1816: 0x00c1, 0x1817: 0x0109, -+ 0x1818: 0x00c9, 0x1819: 0x04b1, 0x181a: 0x0019, 0x181b: 0x02e9, 0x181c: 0x03d9, 0x181d: 0x02f1, -+ 0x181e: 0x02f9, 0x181f: 0x03f1, 0x1820: 0x0309, 0x1821: 0x00a9, 0x1822: 0x0311, 0x1823: 0x00b1, -+ 0x1824: 0x0319, 0x1825: 0x0101, 0x1826: 0x0321, 0x1827: 0x0329, 0x1828: 0x0051, 0x1829: 0x0339, -+ 0x182a: 0x0751, 0x182b: 0x00b9, 0x182c: 0x0089, 0x182d: 0x0341, 0x182e: 0x0349, 0x182f: 0x0391, -+ 0x1830: 0x00c1, 0x1831: 0x0109, 0x1832: 0x00c9, 0x1833: 0x04b1, 0x1834: 0x0019, 0x1835: 0x02e9, -+ 0x1836: 0x03d9, 0x1837: 0x02f1, 0x1838: 0x02f9, 0x1839: 0x03f1, 0x183a: 0x0309, 0x183b: 0x00a9, -+ 0x183c: 0x0311, 0x183d: 0x00b1, 0x183e: 0x0319, 0x183f: 0x0101, - // Block 0x61, offset 0x1840 -- 0x1840: 0x0008, 0x1841: 0x0008, 0x1842: 0x0008, 0x1843: 0x0008, 0x1844: 0x0008, 0x1845: 0x0008, -- 0x1846: 0x0008, 0x1847: 0x0040, 0x1848: 0x0040, 0x1849: 0x0008, 0x184a: 0x0040, 0x184b: 0x0040, -- 0x184c: 0x0008, 0x184d: 0x0008, 0x184e: 0x0008, 0x184f: 0x0008, 0x1850: 0x0008, 0x1851: 0x0008, -- 0x1852: 0x0008, 0x1853: 0x0008, 0x1854: 0x0040, 0x1855: 0x0008, 0x1856: 0x0008, 0x1857: 0x0040, -- 0x1858: 0x0008, 0x1859: 0x0008, 0x185a: 0x0008, 0x185b: 0x0008, 0x185c: 0x0008, 0x185d: 0x0008, -- 0x185e: 0x0008, 0x185f: 0x0008, 0x1860: 0x0008, 0x1861: 0x0008, 0x1862: 0x0008, 0x1863: 0x0008, -- 0x1864: 0x0008, 0x1865: 0x0008, 0x1866: 0x0008, 0x1867: 0x0008, 0x1868: 0x0008, 0x1869: 0x0008, -- 0x186a: 0x0008, 0x186b: 0x0008, 0x186c: 0x0008, 0x186d: 0x0008, 0x186e: 0x0008, 0x186f: 0x0008, -- 0x1870: 0x3008, 0x1871: 0x3008, 0x1872: 0x3008, 0x1873: 0x3008, 0x1874: 0x3008, 0x1875: 0x3008, -- 0x1876: 0x0040, 0x1877: 0x3008, 0x1878: 0x3008, 0x1879: 0x0040, 0x187a: 0x0040, 0x187b: 0x3308, -- 0x187c: 0x3308, 0x187d: 0x3808, 0x187e: 0x3b08, 0x187f: 0x0008, -+ 0x1840: 0x0321, 0x1841: 0x0329, 0x1842: 0x0051, 0x1843: 0x0339, 0x1844: 0x0751, 0x1845: 0x00b9, -+ 0x1846: 0x0089, 0x1847: 0x0341, 0x1848: 0x0349, 0x1849: 0x0391, 0x184a: 0x00c1, 0x184b: 0x0109, -+ 0x184c: 0x00c9, 0x184d: 0x04b1, 0x184e: 0x0019, 0x184f: 0x02e9, 0x1850: 0x03d9, 0x1851: 0x02f1, -+ 0x1852: 0x02f9, 0x1853: 0x03f1, 0x1854: 0x0309, 0x1855: 0x0040, 0x1856: 0x0311, 0x1857: 0x00b1, -+ 0x1858: 0x0319, 0x1859: 0x0101, 0x185a: 0x0321, 0x185b: 0x0329, 0x185c: 0x0051, 0x185d: 0x0339, -+ 0x185e: 0x0751, 0x185f: 0x00b9, 0x1860: 0x0089, 0x1861: 0x0341, 0x1862: 0x0349, 0x1863: 0x0391, -+ 0x1864: 0x00c1, 0x1865: 0x0109, 0x1866: 0x00c9, 0x1867: 0x04b1, 0x1868: 0x0019, 0x1869: 0x02e9, -+ 0x186a: 0x03d9, 0x186b: 0x02f1, 0x186c: 0x02f9, 0x186d: 0x03f1, 0x186e: 0x0309, 0x186f: 0x00a9, -+ 0x1870: 0x0311, 0x1871: 0x00b1, 0x1872: 0x0319, 0x1873: 0x0101, 0x1874: 0x0321, 0x1875: 0x0329, -+ 0x1876: 0x0051, 0x1877: 0x0339, 0x1878: 0x0751, 0x1879: 0x00b9, 0x187a: 0x0089, 0x187b: 0x0341, -+ 0x187c: 0x0349, 0x187d: 0x0391, 0x187e: 0x00c1, 0x187f: 0x0109, - // Block 0x62, offset 0x1880 -- 0x1880: 0x0039, 0x1881: 0x0ee9, 0x1882: 0x1159, 0x1883: 0x0ef9, 0x1884: 0x0f09, 0x1885: 0x1199, -- 0x1886: 0x0f31, 0x1887: 0x0249, 0x1888: 0x0f41, 0x1889: 0x0259, 0x188a: 0x0f51, 0x188b: 0x0359, -- 0x188c: 0x0f61, 0x188d: 0x0f71, 0x188e: 0x00d9, 0x188f: 0x0f99, 0x1890: 0x2039, 0x1891: 0x0269, -- 0x1892: 0x01d9, 0x1893: 0x0fa9, 0x1894: 0x0fb9, 0x1895: 0x1089, 0x1896: 0x0279, 0x1897: 0x0369, -- 0x1898: 0x0289, 0x1899: 0x13d1, 0x189a: 0x0039, 0x189b: 0x0ee9, 0x189c: 0x1159, 0x189d: 0x0ef9, -- 0x189e: 0x0f09, 0x189f: 0x1199, 0x18a0: 0x0f31, 0x18a1: 0x0249, 0x18a2: 0x0f41, 0x18a3: 0x0259, -- 0x18a4: 0x0f51, 0x18a5: 0x0359, 0x18a6: 0x0f61, 0x18a7: 0x0f71, 0x18a8: 0x00d9, 0x18a9: 0x0f99, -- 0x18aa: 0x2039, 0x18ab: 0x0269, 0x18ac: 0x01d9, 0x18ad: 0x0fa9, 0x18ae: 0x0fb9, 0x18af: 0x1089, -- 0x18b0: 0x0279, 0x18b1: 0x0369, 0x18b2: 0x0289, 0x18b3: 0x13d1, 0x18b4: 0x0039, 0x18b5: 0x0ee9, -- 0x18b6: 0x1159, 0x18b7: 0x0ef9, 0x18b8: 0x0f09, 0x18b9: 0x1199, 0x18ba: 0x0f31, 0x18bb: 0x0249, -- 0x18bc: 0x0f41, 0x18bd: 0x0259, 0x18be: 0x0f51, 0x18bf: 0x0359, -+ 0x1880: 0x00c9, 0x1881: 0x04b1, 0x1882: 0x0019, 0x1883: 0x02e9, 0x1884: 0x03d9, 0x1885: 0x02f1, -+ 0x1886: 0x02f9, 0x1887: 0x03f1, 0x1888: 0x0309, 0x1889: 0x00a9, 0x188a: 0x0311, 0x188b: 0x00b1, -+ 0x188c: 0x0319, 0x188d: 0x0101, 0x188e: 0x0321, 0x188f: 0x0329, 0x1890: 0x0051, 0x1891: 0x0339, -+ 0x1892: 0x0751, 0x1893: 0x00b9, 0x1894: 0x0089, 0x1895: 0x0341, 0x1896: 0x0349, 0x1897: 0x0391, -+ 0x1898: 0x00c1, 0x1899: 0x0109, 0x189a: 0x00c9, 0x189b: 0x04b1, 0x189c: 0x0019, 0x189d: 0x0040, -+ 0x189e: 0x03d9, 0x189f: 0x02f1, 0x18a0: 0x0040, 0x18a1: 0x0040, 0x18a2: 0x0309, 0x18a3: 0x0040, -+ 0x18a4: 0x0040, 0x18a5: 0x00b1, 0x18a6: 0x0319, 0x18a7: 0x0040, 0x18a8: 0x0040, 0x18a9: 0x0329, -+ 0x18aa: 0x0051, 0x18ab: 0x0339, 0x18ac: 0x0751, 0x18ad: 0x0040, 0x18ae: 0x0089, 0x18af: 0x0341, -+ 0x18b0: 0x0349, 0x18b1: 0x0391, 0x18b2: 0x00c1, 0x18b3: 0x0109, 0x18b4: 0x00c9, 0x18b5: 0x04b1, -+ 0x18b6: 0x0019, 0x18b7: 0x02e9, 0x18b8: 0x03d9, 0x18b9: 0x02f1, 0x18ba: 0x0040, 0x18bb: 0x03f1, -+ 0x18bc: 0x0040, 0x18bd: 0x00a9, 0x18be: 0x0311, 0x18bf: 0x00b1, - // Block 0x63, offset 0x18c0 -- 0x18c0: 0x0f61, 0x18c1: 0x0f71, 0x18c2: 0x00d9, 0x18c3: 0x0f99, 0x18c4: 0x2039, 0x18c5: 0x0269, -- 0x18c6: 0x01d9, 0x18c7: 0x0fa9, 0x18c8: 0x0fb9, 0x18c9: 0x1089, 0x18ca: 0x0279, 0x18cb: 0x0369, -- 0x18cc: 0x0289, 0x18cd: 0x13d1, 0x18ce: 0x0039, 0x18cf: 0x0ee9, 0x18d0: 0x1159, 0x18d1: 0x0ef9, -- 0x18d2: 0x0f09, 0x18d3: 0x1199, 0x18d4: 0x0f31, 0x18d5: 0x0040, 0x18d6: 0x0f41, 0x18d7: 0x0259, -- 0x18d8: 0x0f51, 0x18d9: 0x0359, 0x18da: 0x0f61, 0x18db: 0x0f71, 0x18dc: 0x00d9, 0x18dd: 0x0f99, -- 0x18de: 0x2039, 0x18df: 0x0269, 0x18e0: 0x01d9, 0x18e1: 0x0fa9, 0x18e2: 0x0fb9, 0x18e3: 0x1089, -- 0x18e4: 0x0279, 0x18e5: 0x0369, 0x18e6: 0x0289, 0x18e7: 0x13d1, 0x18e8: 0x0039, 0x18e9: 0x0ee9, -- 0x18ea: 0x1159, 0x18eb: 0x0ef9, 0x18ec: 0x0f09, 0x18ed: 0x1199, 0x18ee: 0x0f31, 0x18ef: 0x0249, -- 0x18f0: 0x0f41, 0x18f1: 0x0259, 0x18f2: 0x0f51, 0x18f3: 0x0359, 0x18f4: 0x0f61, 0x18f5: 0x0f71, -- 0x18f6: 0x00d9, 0x18f7: 0x0f99, 0x18f8: 0x2039, 0x18f9: 0x0269, 0x18fa: 0x01d9, 0x18fb: 0x0fa9, -- 0x18fc: 0x0fb9, 0x18fd: 0x1089, 0x18fe: 0x0279, 0x18ff: 0x0369, -+ 0x18c0: 0x0319, 0x18c1: 0x0101, 0x18c2: 0x0321, 0x18c3: 0x0329, 0x18c4: 0x0040, 0x18c5: 0x0339, -+ 0x18c6: 0x0751, 0x18c7: 0x00b9, 0x18c8: 0x0089, 0x18c9: 0x0341, 0x18ca: 0x0349, 0x18cb: 0x0391, -+ 0x18cc: 0x00c1, 0x18cd: 0x0109, 0x18ce: 0x00c9, 0x18cf: 0x04b1, 0x18d0: 0x0019, 0x18d1: 0x02e9, -+ 0x18d2: 0x03d9, 0x18d3: 0x02f1, 0x18d4: 0x02f9, 0x18d5: 0x03f1, 0x18d6: 0x0309, 0x18d7: 0x00a9, -+ 0x18d8: 0x0311, 0x18d9: 0x00b1, 0x18da: 0x0319, 0x18db: 0x0101, 0x18dc: 0x0321, 0x18dd: 0x0329, -+ 0x18de: 0x0051, 0x18df: 0x0339, 0x18e0: 0x0751, 0x18e1: 0x00b9, 0x18e2: 0x0089, 0x18e3: 0x0341, -+ 0x18e4: 0x0349, 0x18e5: 0x0391, 0x18e6: 0x00c1, 0x18e7: 0x0109, 0x18e8: 0x00c9, 0x18e9: 0x04b1, -+ 0x18ea: 0x0019, 0x18eb: 0x02e9, 0x18ec: 0x03d9, 0x18ed: 0x02f1, 0x18ee: 0x02f9, 0x18ef: 0x03f1, -+ 0x18f0: 0x0309, 0x18f1: 0x00a9, 0x18f2: 0x0311, 0x18f3: 0x00b1, 0x18f4: 0x0319, 0x18f5: 0x0101, -+ 0x18f6: 0x0321, 0x18f7: 0x0329, 0x18f8: 0x0051, 0x18f9: 0x0339, 0x18fa: 0x0751, 0x18fb: 0x00b9, -+ 0x18fc: 0x0089, 0x18fd: 0x0341, 0x18fe: 0x0349, 0x18ff: 0x0391, - // Block 0x64, offset 0x1900 -- 0x1900: 0x0289, 0x1901: 0x13d1, 0x1902: 0x0039, 0x1903: 0x0ee9, 0x1904: 0x1159, 0x1905: 0x0ef9, -- 0x1906: 0x0f09, 0x1907: 0x1199, 0x1908: 0x0f31, 0x1909: 0x0249, 0x190a: 0x0f41, 0x190b: 0x0259, -- 0x190c: 0x0f51, 0x190d: 0x0359, 0x190e: 0x0f61, 0x190f: 0x0f71, 0x1910: 0x00d9, 0x1911: 0x0f99, -- 0x1912: 0x2039, 0x1913: 0x0269, 0x1914: 0x01d9, 0x1915: 0x0fa9, 0x1916: 0x0fb9, 0x1917: 0x1089, -- 0x1918: 0x0279, 0x1919: 0x0369, 0x191a: 0x0289, 0x191b: 0x13d1, 0x191c: 0x0039, 0x191d: 0x0040, -- 0x191e: 0x1159, 0x191f: 0x0ef9, 0x1920: 0x0040, 0x1921: 0x0040, 0x1922: 0x0f31, 0x1923: 0x0040, -- 0x1924: 0x0040, 0x1925: 0x0259, 0x1926: 0x0f51, 0x1927: 0x0040, 0x1928: 0x0040, 0x1929: 0x0f71, -- 0x192a: 0x00d9, 0x192b: 0x0f99, 0x192c: 0x2039, 0x192d: 0x0040, 0x192e: 0x01d9, 0x192f: 0x0fa9, -- 0x1930: 0x0fb9, 0x1931: 0x1089, 0x1932: 0x0279, 0x1933: 0x0369, 0x1934: 0x0289, 0x1935: 0x13d1, -- 0x1936: 0x0039, 0x1937: 0x0ee9, 0x1938: 0x1159, 0x1939: 0x0ef9, 0x193a: 0x0040, 0x193b: 0x1199, -- 0x193c: 0x0040, 0x193d: 0x0249, 0x193e: 0x0f41, 0x193f: 0x0259, -+ 0x1900: 0x00c1, 0x1901: 0x0109, 0x1902: 0x00c9, 0x1903: 0x04b1, 0x1904: 0x0019, 0x1905: 0x02e9, -+ 0x1906: 0x0040, 0x1907: 0x02f1, 0x1908: 0x02f9, 0x1909: 0x03f1, 0x190a: 0x0309, 0x190b: 0x0040, -+ 0x190c: 0x0040, 0x190d: 0x00b1, 0x190e: 0x0319, 0x190f: 0x0101, 0x1910: 0x0321, 0x1911: 0x0329, -+ 0x1912: 0x0051, 0x1913: 0x0339, 0x1914: 0x0751, 0x1915: 0x0040, 0x1916: 0x0089, 0x1917: 0x0341, -+ 0x1918: 0x0349, 0x1919: 0x0391, 0x191a: 0x00c1, 0x191b: 0x0109, 0x191c: 0x00c9, 0x191d: 0x0040, -+ 0x191e: 0x0019, 0x191f: 0x02e9, 0x1920: 0x03d9, 0x1921: 0x02f1, 0x1922: 0x02f9, 0x1923: 0x03f1, -+ 0x1924: 0x0309, 0x1925: 0x00a9, 0x1926: 0x0311, 0x1927: 0x00b1, 0x1928: 0x0319, 0x1929: 0x0101, -+ 0x192a: 0x0321, 0x192b: 0x0329, 0x192c: 0x0051, 0x192d: 0x0339, 0x192e: 0x0751, 0x192f: 0x00b9, -+ 0x1930: 0x0089, 0x1931: 0x0341, 0x1932: 0x0349, 0x1933: 0x0391, 0x1934: 0x00c1, 0x1935: 0x0109, -+ 0x1936: 0x00c9, 0x1937: 0x04b1, 0x1938: 0x0019, 0x1939: 0x02e9, 0x193a: 0x0040, 0x193b: 0x02f1, -+ 0x193c: 0x02f9, 0x193d: 0x03f1, 0x193e: 0x0309, 0x193f: 0x0040, - // Block 0x65, offset 0x1940 -- 0x1940: 0x0f51, 0x1941: 0x0359, 0x1942: 0x0f61, 0x1943: 0x0f71, 0x1944: 0x0040, 0x1945: 0x0f99, -- 0x1946: 0x2039, 0x1947: 0x0269, 0x1948: 0x01d9, 0x1949: 0x0fa9, 0x194a: 0x0fb9, 0x194b: 0x1089, -- 0x194c: 0x0279, 0x194d: 0x0369, 0x194e: 0x0289, 0x194f: 0x13d1, 0x1950: 0x0039, 0x1951: 0x0ee9, -- 0x1952: 0x1159, 0x1953: 0x0ef9, 0x1954: 0x0f09, 0x1955: 0x1199, 0x1956: 0x0f31, 0x1957: 0x0249, -- 0x1958: 0x0f41, 0x1959: 0x0259, 0x195a: 0x0f51, 0x195b: 0x0359, 0x195c: 0x0f61, 0x195d: 0x0f71, -- 0x195e: 0x00d9, 0x195f: 0x0f99, 0x1960: 0x2039, 0x1961: 0x0269, 0x1962: 0x01d9, 0x1963: 0x0fa9, -- 0x1964: 0x0fb9, 0x1965: 0x1089, 0x1966: 0x0279, 0x1967: 0x0369, 0x1968: 0x0289, 0x1969: 0x13d1, -- 0x196a: 0x0039, 0x196b: 0x0ee9, 0x196c: 0x1159, 0x196d: 0x0ef9, 0x196e: 0x0f09, 0x196f: 0x1199, -- 0x1970: 0x0f31, 0x1971: 0x0249, 0x1972: 0x0f41, 0x1973: 0x0259, 0x1974: 0x0f51, 0x1975: 0x0359, -- 0x1976: 0x0f61, 0x1977: 0x0f71, 0x1978: 0x00d9, 0x1979: 0x0f99, 0x197a: 0x2039, 0x197b: 0x0269, -- 0x197c: 0x01d9, 0x197d: 0x0fa9, 0x197e: 0x0fb9, 0x197f: 0x1089, -+ 0x1940: 0x0311, 0x1941: 0x00b1, 0x1942: 0x0319, 0x1943: 0x0101, 0x1944: 0x0321, 0x1945: 0x0040, -+ 0x1946: 0x0051, 0x1947: 0x0040, 0x1948: 0x0040, 0x1949: 0x0040, 0x194a: 0x0089, 0x194b: 0x0341, -+ 0x194c: 0x0349, 0x194d: 0x0391, 0x194e: 0x00c1, 0x194f: 0x0109, 0x1950: 0x00c9, 0x1951: 0x0040, -+ 0x1952: 0x0019, 0x1953: 0x02e9, 0x1954: 0x03d9, 0x1955: 0x02f1, 0x1956: 0x02f9, 0x1957: 0x03f1, -+ 0x1958: 0x0309, 0x1959: 0x00a9, 0x195a: 0x0311, 0x195b: 0x00b1, 0x195c: 0x0319, 0x195d: 0x0101, -+ 0x195e: 0x0321, 0x195f: 0x0329, 0x1960: 0x0051, 0x1961: 0x0339, 0x1962: 0x0751, 0x1963: 0x00b9, -+ 0x1964: 0x0089, 0x1965: 0x0341, 0x1966: 0x0349, 0x1967: 0x0391, 0x1968: 0x00c1, 0x1969: 0x0109, -+ 0x196a: 0x00c9, 0x196b: 0x04b1, 0x196c: 0x0019, 0x196d: 0x02e9, 0x196e: 0x03d9, 0x196f: 0x02f1, -+ 0x1970: 0x02f9, 0x1971: 0x03f1, 0x1972: 0x0309, 0x1973: 0x00a9, 0x1974: 0x0311, 0x1975: 0x00b1, -+ 0x1976: 0x0319, 0x1977: 0x0101, 0x1978: 0x0321, 0x1979: 0x0329, 0x197a: 0x0051, 0x197b: 0x0339, -+ 0x197c: 0x0751, 0x197d: 0x00b9, 0x197e: 0x0089, 0x197f: 0x0341, - // Block 0x66, offset 0x1980 -- 0x1980: 0x0279, 0x1981: 0x0369, 0x1982: 0x0289, 0x1983: 0x13d1, 0x1984: 0x0039, 0x1985: 0x0ee9, -- 0x1986: 0x0040, 0x1987: 0x0ef9, 0x1988: 0x0f09, 0x1989: 0x1199, 0x198a: 0x0f31, 0x198b: 0x0040, -- 0x198c: 0x0040, 0x198d: 0x0259, 0x198e: 0x0f51, 0x198f: 0x0359, 0x1990: 0x0f61, 0x1991: 0x0f71, -- 0x1992: 0x00d9, 0x1993: 0x0f99, 0x1994: 0x2039, 0x1995: 0x0040, 0x1996: 0x01d9, 0x1997: 0x0fa9, -- 0x1998: 0x0fb9, 0x1999: 0x1089, 0x199a: 0x0279, 0x199b: 0x0369, 0x199c: 0x0289, 0x199d: 0x0040, -- 0x199e: 0x0039, 0x199f: 0x0ee9, 0x19a0: 0x1159, 0x19a1: 0x0ef9, 0x19a2: 0x0f09, 0x19a3: 0x1199, -- 0x19a4: 0x0f31, 0x19a5: 0x0249, 0x19a6: 0x0f41, 0x19a7: 0x0259, 0x19a8: 0x0f51, 0x19a9: 0x0359, -- 0x19aa: 0x0f61, 0x19ab: 0x0f71, 0x19ac: 0x00d9, 0x19ad: 0x0f99, 0x19ae: 0x2039, 0x19af: 0x0269, -- 0x19b0: 0x01d9, 0x19b1: 0x0fa9, 0x19b2: 0x0fb9, 0x19b3: 0x1089, 0x19b4: 0x0279, 0x19b5: 0x0369, -- 0x19b6: 0x0289, 0x19b7: 0x13d1, 0x19b8: 0x0039, 0x19b9: 0x0ee9, 0x19ba: 0x0040, 0x19bb: 0x0ef9, -- 0x19bc: 0x0f09, 0x19bd: 0x1199, 0x19be: 0x0f31, 0x19bf: 0x0040, -+ 0x1980: 0x0349, 0x1981: 0x0391, 0x1982: 0x00c1, 0x1983: 0x0109, 0x1984: 0x00c9, 0x1985: 0x04b1, -+ 0x1986: 0x0019, 0x1987: 0x02e9, 0x1988: 0x03d9, 0x1989: 0x02f1, 0x198a: 0x02f9, 0x198b: 0x03f1, -+ 0x198c: 0x0309, 0x198d: 0x00a9, 0x198e: 0x0311, 0x198f: 0x00b1, 0x1990: 0x0319, 0x1991: 0x0101, -+ 0x1992: 0x0321, 0x1993: 0x0329, 0x1994: 0x0051, 0x1995: 0x0339, 0x1996: 0x0751, 0x1997: 0x00b9, -+ 0x1998: 0x0089, 0x1999: 0x0341, 0x199a: 0x0349, 0x199b: 0x0391, 0x199c: 0x00c1, 0x199d: 0x0109, -+ 0x199e: 0x00c9, 0x199f: 0x04b1, 0x19a0: 0x0019, 0x19a1: 0x02e9, 0x19a2: 0x03d9, 0x19a3: 0x02f1, -+ 0x19a4: 0x02f9, 0x19a5: 0x03f1, 0x19a6: 0x0309, 0x19a7: 0x00a9, 0x19a8: 0x0311, 0x19a9: 0x00b1, -+ 0x19aa: 0x0319, 0x19ab: 0x0101, 0x19ac: 0x0321, 0x19ad: 0x0329, 0x19ae: 0x0051, 0x19af: 0x0339, -+ 0x19b0: 0x0751, 0x19b1: 0x00b9, 0x19b2: 0x0089, 0x19b3: 0x0341, 0x19b4: 0x0349, 0x19b5: 0x0391, -+ 0x19b6: 0x00c1, 0x19b7: 0x0109, 0x19b8: 0x00c9, 0x19b9: 0x04b1, 0x19ba: 0x0019, 0x19bb: 0x02e9, -+ 0x19bc: 0x03d9, 0x19bd: 0x02f1, 0x19be: 0x02f9, 0x19bf: 0x03f1, - // Block 0x67, offset 0x19c0 -- 0x19c0: 0x0f41, 0x19c1: 0x0259, 0x19c2: 0x0f51, 0x19c3: 0x0359, 0x19c4: 0x0f61, 0x19c5: 0x0040, -- 0x19c6: 0x00d9, 0x19c7: 0x0040, 0x19c8: 0x0040, 0x19c9: 0x0040, 0x19ca: 0x01d9, 0x19cb: 0x0fa9, -- 0x19cc: 0x0fb9, 0x19cd: 0x1089, 0x19ce: 0x0279, 0x19cf: 0x0369, 0x19d0: 0x0289, 0x19d1: 0x0040, -- 0x19d2: 0x0039, 0x19d3: 0x0ee9, 0x19d4: 0x1159, 0x19d5: 0x0ef9, 0x19d6: 0x0f09, 0x19d7: 0x1199, -- 0x19d8: 0x0f31, 0x19d9: 0x0249, 0x19da: 0x0f41, 0x19db: 0x0259, 0x19dc: 0x0f51, 0x19dd: 0x0359, -- 0x19de: 0x0f61, 0x19df: 0x0f71, 0x19e0: 0x00d9, 0x19e1: 0x0f99, 0x19e2: 0x2039, 0x19e3: 0x0269, -- 0x19e4: 0x01d9, 0x19e5: 0x0fa9, 0x19e6: 0x0fb9, 0x19e7: 0x1089, 0x19e8: 0x0279, 0x19e9: 0x0369, -- 0x19ea: 0x0289, 0x19eb: 0x13d1, 0x19ec: 0x0039, 0x19ed: 0x0ee9, 0x19ee: 0x1159, 0x19ef: 0x0ef9, -- 0x19f0: 0x0f09, 0x19f1: 0x1199, 0x19f2: 0x0f31, 0x19f3: 0x0249, 0x19f4: 0x0f41, 0x19f5: 0x0259, -- 0x19f6: 0x0f51, 0x19f7: 0x0359, 0x19f8: 0x0f61, 0x19f9: 0x0f71, 0x19fa: 0x00d9, 0x19fb: 0x0f99, -- 0x19fc: 0x2039, 0x19fd: 0x0269, 0x19fe: 0x01d9, 0x19ff: 0x0fa9, -+ 0x19c0: 0x0309, 0x19c1: 0x00a9, 0x19c2: 0x0311, 0x19c3: 0x00b1, 0x19c4: 0x0319, 0x19c5: 0x0101, -+ 0x19c6: 0x0321, 0x19c7: 0x0329, 0x19c8: 0x0051, 0x19c9: 0x0339, 0x19ca: 0x0751, 0x19cb: 0x00b9, -+ 0x19cc: 0x0089, 0x19cd: 0x0341, 0x19ce: 0x0349, 0x19cf: 0x0391, 0x19d0: 0x00c1, 0x19d1: 0x0109, -+ 0x19d2: 0x00c9, 0x19d3: 0x04b1, 0x19d4: 0x0019, 0x19d5: 0x02e9, 0x19d6: 0x03d9, 0x19d7: 0x02f1, -+ 0x19d8: 0x02f9, 0x19d9: 0x03f1, 0x19da: 0x0309, 0x19db: 0x00a9, 0x19dc: 0x0311, 0x19dd: 0x00b1, -+ 0x19de: 0x0319, 0x19df: 0x0101, 0x19e0: 0x0321, 0x19e1: 0x0329, 0x19e2: 0x0051, 0x19e3: 0x0339, -+ 0x19e4: 0x0751, 0x19e5: 0x00b9, 0x19e6: 0x0089, 0x19e7: 0x0341, 0x19e8: 0x0349, 0x19e9: 0x0391, -+ 0x19ea: 0x00c1, 0x19eb: 0x0109, 0x19ec: 0x00c9, 0x19ed: 0x04b1, 0x19ee: 0x0019, 0x19ef: 0x02e9, -+ 0x19f0: 0x03d9, 0x19f1: 0x02f1, 0x19f2: 0x02f9, 0x19f3: 0x03f1, 0x19f4: 0x0309, 0x19f5: 0x00a9, -+ 0x19f6: 0x0311, 0x19f7: 0x00b1, 0x19f8: 0x0319, 0x19f9: 0x0101, 0x19fa: 0x0321, 0x19fb: 0x0329, -+ 0x19fc: 0x0051, 0x19fd: 0x0339, 0x19fe: 0x0751, 0x19ff: 0x00b9, - // Block 0x68, offset 0x1a00 -- 0x1a00: 0x0fb9, 0x1a01: 0x1089, 0x1a02: 0x0279, 0x1a03: 0x0369, 0x1a04: 0x0289, 0x1a05: 0x13d1, -- 0x1a06: 0x0039, 0x1a07: 0x0ee9, 0x1a08: 0x1159, 0x1a09: 0x0ef9, 0x1a0a: 0x0f09, 0x1a0b: 0x1199, -- 0x1a0c: 0x0f31, 0x1a0d: 0x0249, 0x1a0e: 0x0f41, 0x1a0f: 0x0259, 0x1a10: 0x0f51, 0x1a11: 0x0359, -- 0x1a12: 0x0f61, 0x1a13: 0x0f71, 0x1a14: 0x00d9, 0x1a15: 0x0f99, 0x1a16: 0x2039, 0x1a17: 0x0269, -- 0x1a18: 0x01d9, 0x1a19: 0x0fa9, 0x1a1a: 0x0fb9, 0x1a1b: 0x1089, 0x1a1c: 0x0279, 0x1a1d: 0x0369, -- 0x1a1e: 0x0289, 0x1a1f: 0x13d1, 0x1a20: 0x0039, 0x1a21: 0x0ee9, 0x1a22: 0x1159, 0x1a23: 0x0ef9, -- 0x1a24: 0x0f09, 0x1a25: 0x1199, 0x1a26: 0x0f31, 0x1a27: 0x0249, 0x1a28: 0x0f41, 0x1a29: 0x0259, -- 0x1a2a: 0x0f51, 0x1a2b: 0x0359, 0x1a2c: 0x0f61, 0x1a2d: 0x0f71, 0x1a2e: 0x00d9, 0x1a2f: 0x0f99, -- 0x1a30: 0x2039, 0x1a31: 0x0269, 0x1a32: 0x01d9, 0x1a33: 0x0fa9, 0x1a34: 0x0fb9, 0x1a35: 0x1089, -- 0x1a36: 0x0279, 0x1a37: 0x0369, 0x1a38: 0x0289, 0x1a39: 0x13d1, 0x1a3a: 0x0039, 0x1a3b: 0x0ee9, -- 0x1a3c: 0x1159, 0x1a3d: 0x0ef9, 0x1a3e: 0x0f09, 0x1a3f: 0x1199, -+ 0x1a00: 0x0089, 0x1a01: 0x0341, 0x1a02: 0x0349, 0x1a03: 0x0391, 0x1a04: 0x00c1, 0x1a05: 0x0109, -+ 0x1a06: 0x00c9, 0x1a07: 0x04b1, 0x1a08: 0x0019, 0x1a09: 0x02e9, 0x1a0a: 0x03d9, 0x1a0b: 0x02f1, -+ 0x1a0c: 0x02f9, 0x1a0d: 0x03f1, 0x1a0e: 0x0309, 0x1a0f: 0x00a9, 0x1a10: 0x0311, 0x1a11: 0x00b1, -+ 0x1a12: 0x0319, 0x1a13: 0x0101, 0x1a14: 0x0321, 0x1a15: 0x0329, 0x1a16: 0x0051, 0x1a17: 0x0339, -+ 0x1a18: 0x0751, 0x1a19: 0x00b9, 0x1a1a: 0x0089, 0x1a1b: 0x0341, 0x1a1c: 0x0349, 0x1a1d: 0x0391, -+ 0x1a1e: 0x00c1, 0x1a1f: 0x0109, 0x1a20: 0x00c9, 0x1a21: 0x04b1, 0x1a22: 0x0019, 0x1a23: 0x02e9, -+ 0x1a24: 0x03d9, 0x1a25: 0x02f1, 0x1a26: 0x02f9, 0x1a27: 0x03f1, 0x1a28: 0x0309, 0x1a29: 0x00a9, -+ 0x1a2a: 0x0311, 0x1a2b: 0x00b1, 0x1a2c: 0x0319, 0x1a2d: 0x0101, 0x1a2e: 0x0321, 0x1a2f: 0x0329, -+ 0x1a30: 0x0051, 0x1a31: 0x0339, 0x1a32: 0x0751, 0x1a33: 0x00b9, 0x1a34: 0x0089, 0x1a35: 0x0341, -+ 0x1a36: 0x0349, 0x1a37: 0x0391, 0x1a38: 0x00c1, 0x1a39: 0x0109, 0x1a3a: 0x00c9, 0x1a3b: 0x04b1, -+ 0x1a3c: 0x0019, 0x1a3d: 0x02e9, 0x1a3e: 0x03d9, 0x1a3f: 0x02f1, - // Block 0x69, offset 0x1a40 -- 0x1a40: 0x0f31, 0x1a41: 0x0249, 0x1a42: 0x0f41, 0x1a43: 0x0259, 0x1a44: 0x0f51, 0x1a45: 0x0359, -- 0x1a46: 0x0f61, 0x1a47: 0x0f71, 0x1a48: 0x00d9, 0x1a49: 0x0f99, 0x1a4a: 0x2039, 0x1a4b: 0x0269, -- 0x1a4c: 0x01d9, 0x1a4d: 0x0fa9, 0x1a4e: 0x0fb9, 0x1a4f: 0x1089, 0x1a50: 0x0279, 0x1a51: 0x0369, -- 0x1a52: 0x0289, 0x1a53: 0x13d1, 0x1a54: 0x0039, 0x1a55: 0x0ee9, 0x1a56: 0x1159, 0x1a57: 0x0ef9, -- 0x1a58: 0x0f09, 0x1a59: 0x1199, 0x1a5a: 0x0f31, 0x1a5b: 0x0249, 0x1a5c: 0x0f41, 0x1a5d: 0x0259, -- 0x1a5e: 0x0f51, 0x1a5f: 0x0359, 0x1a60: 0x0f61, 0x1a61: 0x0f71, 0x1a62: 0x00d9, 0x1a63: 0x0f99, -- 0x1a64: 0x2039, 0x1a65: 0x0269, 0x1a66: 0x01d9, 0x1a67: 0x0fa9, 0x1a68: 0x0fb9, 0x1a69: 0x1089, -- 0x1a6a: 0x0279, 0x1a6b: 0x0369, 0x1a6c: 0x0289, 0x1a6d: 0x13d1, 0x1a6e: 0x0039, 0x1a6f: 0x0ee9, -- 0x1a70: 0x1159, 0x1a71: 0x0ef9, 0x1a72: 0x0f09, 0x1a73: 0x1199, 0x1a74: 0x0f31, 0x1a75: 0x0249, -- 0x1a76: 0x0f41, 0x1a77: 0x0259, 0x1a78: 0x0f51, 0x1a79: 0x0359, 0x1a7a: 0x0f61, 0x1a7b: 0x0f71, -- 0x1a7c: 0x00d9, 0x1a7d: 0x0f99, 0x1a7e: 0x2039, 0x1a7f: 0x0269, -+ 0x1a40: 0x02f9, 0x1a41: 0x03f1, 0x1a42: 0x0309, 0x1a43: 0x00a9, 0x1a44: 0x0311, 0x1a45: 0x00b1, -+ 0x1a46: 0x0319, 0x1a47: 0x0101, 0x1a48: 0x0321, 0x1a49: 0x0329, 0x1a4a: 0x0051, 0x1a4b: 0x0339, -+ 0x1a4c: 0x0751, 0x1a4d: 0x00b9, 0x1a4e: 0x0089, 0x1a4f: 0x0341, 0x1a50: 0x0349, 0x1a51: 0x0391, -+ 0x1a52: 0x00c1, 0x1a53: 0x0109, 0x1a54: 0x00c9, 0x1a55: 0x04b1, 0x1a56: 0x0019, 0x1a57: 0x02e9, -+ 0x1a58: 0x03d9, 0x1a59: 0x02f1, 0x1a5a: 0x02f9, 0x1a5b: 0x03f1, 0x1a5c: 0x0309, 0x1a5d: 0x00a9, -+ 0x1a5e: 0x0311, 0x1a5f: 0x00b1, 0x1a60: 0x0319, 0x1a61: 0x0101, 0x1a62: 0x0321, 0x1a63: 0x0329, -+ 0x1a64: 0x0051, 0x1a65: 0x0339, 0x1a66: 0x0751, 0x1a67: 0x00b9, 0x1a68: 0x0089, 0x1a69: 0x0341, -+ 0x1a6a: 0x0349, 0x1a6b: 0x0391, 0x1a6c: 0x00c1, 0x1a6d: 0x0109, 0x1a6e: 0x00c9, 0x1a6f: 0x04b1, -+ 0x1a70: 0x0019, 0x1a71: 0x02e9, 0x1a72: 0x03d9, 0x1a73: 0x02f1, 0x1a74: 0x02f9, 0x1a75: 0x03f1, -+ 0x1a76: 0x0309, 0x1a77: 0x00a9, 0x1a78: 0x0311, 0x1a79: 0x00b1, 0x1a7a: 0x0319, 0x1a7b: 0x0101, -+ 0x1a7c: 0x0321, 0x1a7d: 0x0329, 0x1a7e: 0x0051, 0x1a7f: 0x0339, - // Block 0x6a, offset 0x1a80 -- 0x1a80: 0x01d9, 0x1a81: 0x0fa9, 0x1a82: 0x0fb9, 0x1a83: 0x1089, 0x1a84: 0x0279, 0x1a85: 0x0369, -- 0x1a86: 0x0289, 0x1a87: 0x13d1, 0x1a88: 0x0039, 0x1a89: 0x0ee9, 0x1a8a: 0x1159, 0x1a8b: 0x0ef9, -- 0x1a8c: 0x0f09, 0x1a8d: 0x1199, 0x1a8e: 0x0f31, 0x1a8f: 0x0249, 0x1a90: 0x0f41, 0x1a91: 0x0259, -- 0x1a92: 0x0f51, 0x1a93: 0x0359, 0x1a94: 0x0f61, 0x1a95: 0x0f71, 0x1a96: 0x00d9, 0x1a97: 0x0f99, -- 0x1a98: 0x2039, 0x1a99: 0x0269, 0x1a9a: 0x01d9, 0x1a9b: 0x0fa9, 0x1a9c: 0x0fb9, 0x1a9d: 0x1089, -- 0x1a9e: 0x0279, 0x1a9f: 0x0369, 0x1aa0: 0x0289, 0x1aa1: 0x13d1, 0x1aa2: 0x0039, 0x1aa3: 0x0ee9, -- 0x1aa4: 0x1159, 0x1aa5: 0x0ef9, 0x1aa6: 0x0f09, 0x1aa7: 0x1199, 0x1aa8: 0x0f31, 0x1aa9: 0x0249, -- 0x1aaa: 0x0f41, 0x1aab: 0x0259, 0x1aac: 0x0f51, 0x1aad: 0x0359, 0x1aae: 0x0f61, 0x1aaf: 0x0f71, -- 0x1ab0: 0x00d9, 0x1ab1: 0x0f99, 0x1ab2: 0x2039, 0x1ab3: 0x0269, 0x1ab4: 0x01d9, 0x1ab5: 0x0fa9, -- 0x1ab6: 0x0fb9, 0x1ab7: 0x1089, 0x1ab8: 0x0279, 0x1ab9: 0x0369, 0x1aba: 0x0289, 0x1abb: 0x13d1, -- 0x1abc: 0x0039, 0x1abd: 0x0ee9, 0x1abe: 0x1159, 0x1abf: 0x0ef9, -+ 0x1a80: 0x0751, 0x1a81: 0x00b9, 0x1a82: 0x0089, 0x1a83: 0x0341, 0x1a84: 0x0349, 0x1a85: 0x0391, -+ 0x1a86: 0x00c1, 0x1a87: 0x0109, 0x1a88: 0x00c9, 0x1a89: 0x04b1, 0x1a8a: 0x0019, 0x1a8b: 0x02e9, -+ 0x1a8c: 0x03d9, 0x1a8d: 0x02f1, 0x1a8e: 0x02f9, 0x1a8f: 0x03f1, 0x1a90: 0x0309, 0x1a91: 0x00a9, -+ 0x1a92: 0x0311, 0x1a93: 0x00b1, 0x1a94: 0x0319, 0x1a95: 0x0101, 0x1a96: 0x0321, 0x1a97: 0x0329, -+ 0x1a98: 0x0051, 0x1a99: 0x0339, 0x1a9a: 0x0751, 0x1a9b: 0x00b9, 0x1a9c: 0x0089, 0x1a9d: 0x0341, -+ 0x1a9e: 0x0349, 0x1a9f: 0x0391, 0x1aa0: 0x00c1, 0x1aa1: 0x0109, 0x1aa2: 0x00c9, 0x1aa3: 0x04b1, -+ 0x1aa4: 0x2279, 0x1aa5: 0x2281, 0x1aa6: 0x0040, 0x1aa7: 0x0040, 0x1aa8: 0x2289, 0x1aa9: 0x0399, -+ 0x1aaa: 0x03a1, 0x1aab: 0x03a9, 0x1aac: 0x2291, 0x1aad: 0x2299, 0x1aae: 0x22a1, 0x1aaf: 0x04d1, -+ 0x1ab0: 0x05f9, 0x1ab1: 0x22a9, 0x1ab2: 0x22b1, 0x1ab3: 0x22b9, 0x1ab4: 0x22c1, 0x1ab5: 0x22c9, -+ 0x1ab6: 0x22d1, 0x1ab7: 0x0799, 0x1ab8: 0x03c1, 0x1ab9: 0x04d1, 0x1aba: 0x22d9, 0x1abb: 0x22e1, -+ 0x1abc: 0x22e9, 0x1abd: 0x03b1, 0x1abe: 0x03b9, 0x1abf: 0x22f1, - // Block 0x6b, offset 0x1ac0 -- 0x1ac0: 0x0f09, 0x1ac1: 0x1199, 0x1ac2: 0x0f31, 0x1ac3: 0x0249, 0x1ac4: 0x0f41, 0x1ac5: 0x0259, -- 0x1ac6: 0x0f51, 0x1ac7: 0x0359, 0x1ac8: 0x0f61, 0x1ac9: 0x0f71, 0x1aca: 0x00d9, 0x1acb: 0x0f99, -- 0x1acc: 0x2039, 0x1acd: 0x0269, 0x1ace: 0x01d9, 0x1acf: 0x0fa9, 0x1ad0: 0x0fb9, 0x1ad1: 0x1089, -- 0x1ad2: 0x0279, 0x1ad3: 0x0369, 0x1ad4: 0x0289, 0x1ad5: 0x13d1, 0x1ad6: 0x0039, 0x1ad7: 0x0ee9, -- 0x1ad8: 0x1159, 0x1ad9: 0x0ef9, 0x1ada: 0x0f09, 0x1adb: 0x1199, 0x1adc: 0x0f31, 0x1add: 0x0249, -- 0x1ade: 0x0f41, 0x1adf: 0x0259, 0x1ae0: 0x0f51, 0x1ae1: 0x0359, 0x1ae2: 0x0f61, 0x1ae3: 0x0f71, -- 0x1ae4: 0x00d9, 0x1ae5: 0x0f99, 0x1ae6: 0x2039, 0x1ae7: 0x0269, 0x1ae8: 0x01d9, 0x1ae9: 0x0fa9, -- 0x1aea: 0x0fb9, 0x1aeb: 0x1089, 0x1aec: 0x0279, 0x1aed: 0x0369, 0x1aee: 0x0289, 0x1aef: 0x13d1, -- 0x1af0: 0x0039, 0x1af1: 0x0ee9, 0x1af2: 0x1159, 0x1af3: 0x0ef9, 0x1af4: 0x0f09, 0x1af5: 0x1199, -- 0x1af6: 0x0f31, 0x1af7: 0x0249, 0x1af8: 0x0f41, 0x1af9: 0x0259, 0x1afa: 0x0f51, 0x1afb: 0x0359, -- 0x1afc: 0x0f61, 0x1afd: 0x0f71, 0x1afe: 0x00d9, 0x1aff: 0x0f99, -+ 0x1ac0: 0x0769, 0x1ac1: 0x22f9, 0x1ac2: 0x2289, 0x1ac3: 0x0399, 0x1ac4: 0x03a1, 0x1ac5: 0x03a9, -+ 0x1ac6: 0x2291, 0x1ac7: 0x2299, 0x1ac8: 0x22a1, 0x1ac9: 0x04d1, 0x1aca: 0x05f9, 0x1acb: 0x22a9, -+ 0x1acc: 0x22b1, 0x1acd: 0x22b9, 0x1ace: 0x22c1, 0x1acf: 0x22c9, 0x1ad0: 0x22d1, 0x1ad1: 0x0799, -+ 0x1ad2: 0x03c1, 0x1ad3: 0x22d9, 0x1ad4: 0x22d9, 0x1ad5: 0x22e1, 0x1ad6: 0x22e9, 0x1ad7: 0x03b1, -+ 0x1ad8: 0x03b9, 0x1ad9: 0x22f1, 0x1ada: 0x0769, 0x1adb: 0x2301, 0x1adc: 0x2291, 0x1add: 0x04d1, -+ 0x1ade: 0x22a9, 0x1adf: 0x03b1, 0x1ae0: 0x03c1, 0x1ae1: 0x0799, 0x1ae2: 0x2289, 0x1ae3: 0x0399, -+ 0x1ae4: 0x03a1, 0x1ae5: 0x03a9, 0x1ae6: 0x2291, 0x1ae7: 0x2299, 0x1ae8: 0x22a1, 0x1ae9: 0x04d1, -+ 0x1aea: 0x05f9, 0x1aeb: 0x22a9, 0x1aec: 0x22b1, 0x1aed: 0x22b9, 0x1aee: 0x22c1, 0x1aef: 0x22c9, -+ 0x1af0: 0x22d1, 0x1af1: 0x0799, 0x1af2: 0x03c1, 0x1af3: 0x04d1, 0x1af4: 0x22d9, 0x1af5: 0x22e1, -+ 0x1af6: 0x22e9, 0x1af7: 0x03b1, 0x1af8: 0x03b9, 0x1af9: 0x22f1, 0x1afa: 0x0769, 0x1afb: 0x22f9, -+ 0x1afc: 0x2289, 0x1afd: 0x0399, 0x1afe: 0x03a1, 0x1aff: 0x03a9, - // Block 0x6c, offset 0x1b00 -- 0x1b00: 0x2039, 0x1b01: 0x0269, 0x1b02: 0x01d9, 0x1b03: 0x0fa9, 0x1b04: 0x0fb9, 0x1b05: 0x1089, -- 0x1b06: 0x0279, 0x1b07: 0x0369, 0x1b08: 0x0289, 0x1b09: 0x13d1, 0x1b0a: 0x0039, 0x1b0b: 0x0ee9, -- 0x1b0c: 0x1159, 0x1b0d: 0x0ef9, 0x1b0e: 0x0f09, 0x1b0f: 0x1199, 0x1b10: 0x0f31, 0x1b11: 0x0249, -- 0x1b12: 0x0f41, 0x1b13: 0x0259, 0x1b14: 0x0f51, 0x1b15: 0x0359, 0x1b16: 0x0f61, 0x1b17: 0x0f71, -- 0x1b18: 0x00d9, 0x1b19: 0x0f99, 0x1b1a: 0x2039, 0x1b1b: 0x0269, 0x1b1c: 0x01d9, 0x1b1d: 0x0fa9, -- 0x1b1e: 0x0fb9, 0x1b1f: 0x1089, 0x1b20: 0x0279, 0x1b21: 0x0369, 0x1b22: 0x0289, 0x1b23: 0x13d1, -- 0x1b24: 0xbad1, 0x1b25: 0xbae9, 0x1b26: 0x0040, 0x1b27: 0x0040, 0x1b28: 0xbb01, 0x1b29: 0x1099, -- 0x1b2a: 0x10b1, 0x1b2b: 0x10c9, 0x1b2c: 0xbb19, 0x1b2d: 0xbb31, 0x1b2e: 0xbb49, 0x1b2f: 0x1429, -- 0x1b30: 0x1a31, 0x1b31: 0xbb61, 0x1b32: 0xbb79, 0x1b33: 0xbb91, 0x1b34: 0xbba9, 0x1b35: 0xbbc1, -- 0x1b36: 0xbbd9, 0x1b37: 0x2109, 0x1b38: 0x1111, 0x1b39: 0x1429, 0x1b3a: 0xbbf1, 0x1b3b: 0xbc09, -- 0x1b3c: 0xbc21, 0x1b3d: 0x10e1, 0x1b3e: 0x10f9, 0x1b3f: 0xbc39, -+ 0x1b00: 0x2291, 0x1b01: 0x2299, 0x1b02: 0x22a1, 0x1b03: 0x04d1, 0x1b04: 0x05f9, 0x1b05: 0x22a9, -+ 0x1b06: 0x22b1, 0x1b07: 0x22b9, 0x1b08: 0x22c1, 0x1b09: 0x22c9, 0x1b0a: 0x22d1, 0x1b0b: 0x0799, -+ 0x1b0c: 0x03c1, 0x1b0d: 0x22d9, 0x1b0e: 0x22d9, 0x1b0f: 0x22e1, 0x1b10: 0x22e9, 0x1b11: 0x03b1, -+ 0x1b12: 0x03b9, 0x1b13: 0x22f1, 0x1b14: 0x0769, 0x1b15: 0x2301, 0x1b16: 0x2291, 0x1b17: 0x04d1, -+ 0x1b18: 0x22a9, 0x1b19: 0x03b1, 0x1b1a: 0x03c1, 0x1b1b: 0x0799, 0x1b1c: 0x2289, 0x1b1d: 0x0399, -+ 0x1b1e: 0x03a1, 0x1b1f: 0x03a9, 0x1b20: 0x2291, 0x1b21: 0x2299, 0x1b22: 0x22a1, 0x1b23: 0x04d1, -+ 0x1b24: 0x05f9, 0x1b25: 0x22a9, 0x1b26: 0x22b1, 0x1b27: 0x22b9, 0x1b28: 0x22c1, 0x1b29: 0x22c9, -+ 0x1b2a: 0x22d1, 0x1b2b: 0x0799, 0x1b2c: 0x03c1, 0x1b2d: 0x04d1, 0x1b2e: 0x22d9, 0x1b2f: 0x22e1, -+ 0x1b30: 0x22e9, 0x1b31: 0x03b1, 0x1b32: 0x03b9, 0x1b33: 0x22f1, 0x1b34: 0x0769, 0x1b35: 0x22f9, -+ 0x1b36: 0x2289, 0x1b37: 0x0399, 0x1b38: 0x03a1, 0x1b39: 0x03a9, 0x1b3a: 0x2291, 0x1b3b: 0x2299, -+ 0x1b3c: 0x22a1, 0x1b3d: 0x04d1, 0x1b3e: 0x05f9, 0x1b3f: 0x22a9, - // Block 0x6d, offset 0x1b40 -- 0x1b40: 0x2079, 0x1b41: 0xbc51, 0x1b42: 0xbb01, 0x1b43: 0x1099, 0x1b44: 0x10b1, 0x1b45: 0x10c9, -- 0x1b46: 0xbb19, 0x1b47: 0xbb31, 0x1b48: 0xbb49, 0x1b49: 0x1429, 0x1b4a: 0x1a31, 0x1b4b: 0xbb61, -- 0x1b4c: 0xbb79, 0x1b4d: 0xbb91, 0x1b4e: 0xbba9, 0x1b4f: 0xbbc1, 0x1b50: 0xbbd9, 0x1b51: 0x2109, -- 0x1b52: 0x1111, 0x1b53: 0xbbf1, 0x1b54: 0xbbf1, 0x1b55: 0xbc09, 0x1b56: 0xbc21, 0x1b57: 0x10e1, -- 0x1b58: 0x10f9, 0x1b59: 0xbc39, 0x1b5a: 0x2079, 0x1b5b: 0xbc71, 0x1b5c: 0xbb19, 0x1b5d: 0x1429, -- 0x1b5e: 0xbb61, 0x1b5f: 0x10e1, 0x1b60: 0x1111, 0x1b61: 0x2109, 0x1b62: 0xbb01, 0x1b63: 0x1099, -- 0x1b64: 0x10b1, 0x1b65: 0x10c9, 0x1b66: 0xbb19, 0x1b67: 0xbb31, 0x1b68: 0xbb49, 0x1b69: 0x1429, -- 0x1b6a: 0x1a31, 0x1b6b: 0xbb61, 0x1b6c: 0xbb79, 0x1b6d: 0xbb91, 0x1b6e: 0xbba9, 0x1b6f: 0xbbc1, -- 0x1b70: 0xbbd9, 0x1b71: 0x2109, 0x1b72: 0x1111, 0x1b73: 0x1429, 0x1b74: 0xbbf1, 0x1b75: 0xbc09, -- 0x1b76: 0xbc21, 0x1b77: 0x10e1, 0x1b78: 0x10f9, 0x1b79: 0xbc39, 0x1b7a: 0x2079, 0x1b7b: 0xbc51, -- 0x1b7c: 0xbb01, 0x1b7d: 0x1099, 0x1b7e: 0x10b1, 0x1b7f: 0x10c9, -+ 0x1b40: 0x22b1, 0x1b41: 0x22b9, 0x1b42: 0x22c1, 0x1b43: 0x22c9, 0x1b44: 0x22d1, 0x1b45: 0x0799, -+ 0x1b46: 0x03c1, 0x1b47: 0x22d9, 0x1b48: 0x22d9, 0x1b49: 0x22e1, 0x1b4a: 0x22e9, 0x1b4b: 0x03b1, -+ 0x1b4c: 0x03b9, 0x1b4d: 0x22f1, 0x1b4e: 0x0769, 0x1b4f: 0x2301, 0x1b50: 0x2291, 0x1b51: 0x04d1, -+ 0x1b52: 0x22a9, 0x1b53: 0x03b1, 0x1b54: 0x03c1, 0x1b55: 0x0799, 0x1b56: 0x2289, 0x1b57: 0x0399, -+ 0x1b58: 0x03a1, 0x1b59: 0x03a9, 0x1b5a: 0x2291, 0x1b5b: 0x2299, 0x1b5c: 0x22a1, 0x1b5d: 0x04d1, -+ 0x1b5e: 0x05f9, 0x1b5f: 0x22a9, 0x1b60: 0x22b1, 0x1b61: 0x22b9, 0x1b62: 0x22c1, 0x1b63: 0x22c9, -+ 0x1b64: 0x22d1, 0x1b65: 0x0799, 0x1b66: 0x03c1, 0x1b67: 0x04d1, 0x1b68: 0x22d9, 0x1b69: 0x22e1, -+ 0x1b6a: 0x22e9, 0x1b6b: 0x03b1, 0x1b6c: 0x03b9, 0x1b6d: 0x22f1, 0x1b6e: 0x0769, 0x1b6f: 0x22f9, -+ 0x1b70: 0x2289, 0x1b71: 0x0399, 0x1b72: 0x03a1, 0x1b73: 0x03a9, 0x1b74: 0x2291, 0x1b75: 0x2299, -+ 0x1b76: 0x22a1, 0x1b77: 0x04d1, 0x1b78: 0x05f9, 0x1b79: 0x22a9, 0x1b7a: 0x22b1, 0x1b7b: 0x22b9, -+ 0x1b7c: 0x22c1, 0x1b7d: 0x22c9, 0x1b7e: 0x22d1, 0x1b7f: 0x0799, - // Block 0x6e, offset 0x1b80 -- 0x1b80: 0xbb19, 0x1b81: 0xbb31, 0x1b82: 0xbb49, 0x1b83: 0x1429, 0x1b84: 0x1a31, 0x1b85: 0xbb61, -- 0x1b86: 0xbb79, 0x1b87: 0xbb91, 0x1b88: 0xbba9, 0x1b89: 0xbbc1, 0x1b8a: 0xbbd9, 0x1b8b: 0x2109, -- 0x1b8c: 0x1111, 0x1b8d: 0xbbf1, 0x1b8e: 0xbbf1, 0x1b8f: 0xbc09, 0x1b90: 0xbc21, 0x1b91: 0x10e1, -- 0x1b92: 0x10f9, 0x1b93: 0xbc39, 0x1b94: 0x2079, 0x1b95: 0xbc71, 0x1b96: 0xbb19, 0x1b97: 0x1429, -- 0x1b98: 0xbb61, 0x1b99: 0x10e1, 0x1b9a: 0x1111, 0x1b9b: 0x2109, 0x1b9c: 0xbb01, 0x1b9d: 0x1099, -- 0x1b9e: 0x10b1, 0x1b9f: 0x10c9, 0x1ba0: 0xbb19, 0x1ba1: 0xbb31, 0x1ba2: 0xbb49, 0x1ba3: 0x1429, -- 0x1ba4: 0x1a31, 0x1ba5: 0xbb61, 0x1ba6: 0xbb79, 0x1ba7: 0xbb91, 0x1ba8: 0xbba9, 0x1ba9: 0xbbc1, -- 0x1baa: 0xbbd9, 0x1bab: 0x2109, 0x1bac: 0x1111, 0x1bad: 0x1429, 0x1bae: 0xbbf1, 0x1baf: 0xbc09, -- 0x1bb0: 0xbc21, 0x1bb1: 0x10e1, 0x1bb2: 0x10f9, 0x1bb3: 0xbc39, 0x1bb4: 0x2079, 0x1bb5: 0xbc51, -- 0x1bb6: 0xbb01, 0x1bb7: 0x1099, 0x1bb8: 0x10b1, 0x1bb9: 0x10c9, 0x1bba: 0xbb19, 0x1bbb: 0xbb31, -- 0x1bbc: 0xbb49, 0x1bbd: 0x1429, 0x1bbe: 0x1a31, 0x1bbf: 0xbb61, -+ 0x1b80: 0x03c1, 0x1b81: 0x22d9, 0x1b82: 0x22d9, 0x1b83: 0x22e1, 0x1b84: 0x22e9, 0x1b85: 0x03b1, -+ 0x1b86: 0x03b9, 0x1b87: 0x22f1, 0x1b88: 0x0769, 0x1b89: 0x2301, 0x1b8a: 0x2291, 0x1b8b: 0x04d1, -+ 0x1b8c: 0x22a9, 0x1b8d: 0x03b1, 0x1b8e: 0x03c1, 0x1b8f: 0x0799, 0x1b90: 0x2289, 0x1b91: 0x0399, -+ 0x1b92: 0x03a1, 0x1b93: 0x03a9, 0x1b94: 0x2291, 0x1b95: 0x2299, 0x1b96: 0x22a1, 0x1b97: 0x04d1, -+ 0x1b98: 0x05f9, 0x1b99: 0x22a9, 0x1b9a: 0x22b1, 0x1b9b: 0x22b9, 0x1b9c: 0x22c1, 0x1b9d: 0x22c9, -+ 0x1b9e: 0x22d1, 0x1b9f: 0x0799, 0x1ba0: 0x03c1, 0x1ba1: 0x04d1, 0x1ba2: 0x22d9, 0x1ba3: 0x22e1, -+ 0x1ba4: 0x22e9, 0x1ba5: 0x03b1, 0x1ba6: 0x03b9, 0x1ba7: 0x22f1, 0x1ba8: 0x0769, 0x1ba9: 0x22f9, -+ 0x1baa: 0x2289, 0x1bab: 0x0399, 0x1bac: 0x03a1, 0x1bad: 0x03a9, 0x1bae: 0x2291, 0x1baf: 0x2299, -+ 0x1bb0: 0x22a1, 0x1bb1: 0x04d1, 0x1bb2: 0x05f9, 0x1bb3: 0x22a9, 0x1bb4: 0x22b1, 0x1bb5: 0x22b9, -+ 0x1bb6: 0x22c1, 0x1bb7: 0x22c9, 0x1bb8: 0x22d1, 0x1bb9: 0x0799, 0x1bba: 0x03c1, 0x1bbb: 0x22d9, -+ 0x1bbc: 0x22d9, 0x1bbd: 0x22e1, 0x1bbe: 0x22e9, 0x1bbf: 0x03b1, - // Block 0x6f, offset 0x1bc0 -- 0x1bc0: 0xbb79, 0x1bc1: 0xbb91, 0x1bc2: 0xbba9, 0x1bc3: 0xbbc1, 0x1bc4: 0xbbd9, 0x1bc5: 0x2109, -- 0x1bc6: 0x1111, 0x1bc7: 0xbbf1, 0x1bc8: 0xbbf1, 0x1bc9: 0xbc09, 0x1bca: 0xbc21, 0x1bcb: 0x10e1, -- 0x1bcc: 0x10f9, 0x1bcd: 0xbc39, 0x1bce: 0x2079, 0x1bcf: 0xbc71, 0x1bd0: 0xbb19, 0x1bd1: 0x1429, -- 0x1bd2: 0xbb61, 0x1bd3: 0x10e1, 0x1bd4: 0x1111, 0x1bd5: 0x2109, 0x1bd6: 0xbb01, 0x1bd7: 0x1099, -- 0x1bd8: 0x10b1, 0x1bd9: 0x10c9, 0x1bda: 0xbb19, 0x1bdb: 0xbb31, 0x1bdc: 0xbb49, 0x1bdd: 0x1429, -- 0x1bde: 0x1a31, 0x1bdf: 0xbb61, 0x1be0: 0xbb79, 0x1be1: 0xbb91, 0x1be2: 0xbba9, 0x1be3: 0xbbc1, -- 0x1be4: 0xbbd9, 0x1be5: 0x2109, 0x1be6: 0x1111, 0x1be7: 0x1429, 0x1be8: 0xbbf1, 0x1be9: 0xbc09, -- 0x1bea: 0xbc21, 0x1beb: 0x10e1, 0x1bec: 0x10f9, 0x1bed: 0xbc39, 0x1bee: 0x2079, 0x1bef: 0xbc51, -- 0x1bf0: 0xbb01, 0x1bf1: 0x1099, 0x1bf2: 0x10b1, 0x1bf3: 0x10c9, 0x1bf4: 0xbb19, 0x1bf5: 0xbb31, -- 0x1bf6: 0xbb49, 0x1bf7: 0x1429, 0x1bf8: 0x1a31, 0x1bf9: 0xbb61, 0x1bfa: 0xbb79, 0x1bfb: 0xbb91, -- 0x1bfc: 0xbba9, 0x1bfd: 0xbbc1, 0x1bfe: 0xbbd9, 0x1bff: 0x2109, -+ 0x1bc0: 0x03b9, 0x1bc1: 0x22f1, 0x1bc2: 0x0769, 0x1bc3: 0x2301, 0x1bc4: 0x2291, 0x1bc5: 0x04d1, -+ 0x1bc6: 0x22a9, 0x1bc7: 0x03b1, 0x1bc8: 0x03c1, 0x1bc9: 0x0799, 0x1bca: 0x2309, 0x1bcb: 0x2309, -+ 0x1bcc: 0x0040, 0x1bcd: 0x0040, 0x1bce: 0x06e1, 0x1bcf: 0x0049, 0x1bd0: 0x0029, 0x1bd1: 0x0031, -+ 0x1bd2: 0x06e9, 0x1bd3: 0x06f1, 0x1bd4: 0x06f9, 0x1bd5: 0x0701, 0x1bd6: 0x0709, 0x1bd7: 0x0711, -+ 0x1bd8: 0x06e1, 0x1bd9: 0x0049, 0x1bda: 0x0029, 0x1bdb: 0x0031, 0x1bdc: 0x06e9, 0x1bdd: 0x06f1, -+ 0x1bde: 0x06f9, 0x1bdf: 0x0701, 0x1be0: 0x0709, 0x1be1: 0x0711, 0x1be2: 0x06e1, 0x1be3: 0x0049, -+ 0x1be4: 0x0029, 0x1be5: 0x0031, 0x1be6: 0x06e9, 0x1be7: 0x06f1, 0x1be8: 0x06f9, 0x1be9: 0x0701, -+ 0x1bea: 0x0709, 0x1beb: 0x0711, 0x1bec: 0x06e1, 0x1bed: 0x0049, 0x1bee: 0x0029, 0x1bef: 0x0031, -+ 0x1bf0: 0x06e9, 0x1bf1: 0x06f1, 0x1bf2: 0x06f9, 0x1bf3: 0x0701, 0x1bf4: 0x0709, 0x1bf5: 0x0711, -+ 0x1bf6: 0x06e1, 0x1bf7: 0x0049, 0x1bf8: 0x0029, 0x1bf9: 0x0031, 0x1bfa: 0x06e9, 0x1bfb: 0x06f1, -+ 0x1bfc: 0x06f9, 0x1bfd: 0x0701, 0x1bfe: 0x0709, 0x1bff: 0x0711, - // Block 0x70, offset 0x1c00 -- 0x1c00: 0x1111, 0x1c01: 0xbbf1, 0x1c02: 0xbbf1, 0x1c03: 0xbc09, 0x1c04: 0xbc21, 0x1c05: 0x10e1, -- 0x1c06: 0x10f9, 0x1c07: 0xbc39, 0x1c08: 0x2079, 0x1c09: 0xbc71, 0x1c0a: 0xbb19, 0x1c0b: 0x1429, -- 0x1c0c: 0xbb61, 0x1c0d: 0x10e1, 0x1c0e: 0x1111, 0x1c0f: 0x2109, 0x1c10: 0xbb01, 0x1c11: 0x1099, -- 0x1c12: 0x10b1, 0x1c13: 0x10c9, 0x1c14: 0xbb19, 0x1c15: 0xbb31, 0x1c16: 0xbb49, 0x1c17: 0x1429, -- 0x1c18: 0x1a31, 0x1c19: 0xbb61, 0x1c1a: 0xbb79, 0x1c1b: 0xbb91, 0x1c1c: 0xbba9, 0x1c1d: 0xbbc1, -- 0x1c1e: 0xbbd9, 0x1c1f: 0x2109, 0x1c20: 0x1111, 0x1c21: 0x1429, 0x1c22: 0xbbf1, 0x1c23: 0xbc09, -- 0x1c24: 0xbc21, 0x1c25: 0x10e1, 0x1c26: 0x10f9, 0x1c27: 0xbc39, 0x1c28: 0x2079, 0x1c29: 0xbc51, -- 0x1c2a: 0xbb01, 0x1c2b: 0x1099, 0x1c2c: 0x10b1, 0x1c2d: 0x10c9, 0x1c2e: 0xbb19, 0x1c2f: 0xbb31, -- 0x1c30: 0xbb49, 0x1c31: 0x1429, 0x1c32: 0x1a31, 0x1c33: 0xbb61, 0x1c34: 0xbb79, 0x1c35: 0xbb91, -- 0x1c36: 0xbba9, 0x1c37: 0xbbc1, 0x1c38: 0xbbd9, 0x1c39: 0x2109, 0x1c3a: 0x1111, 0x1c3b: 0xbbf1, -- 0x1c3c: 0xbbf1, 0x1c3d: 0xbc09, 0x1c3e: 0xbc21, 0x1c3f: 0x10e1, -+ 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: 0x8b3d, 0x1c1f: 0x8b3d, 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: 0x10f9, 0x1c41: 0xbc39, 0x1c42: 0x2079, 0x1c43: 0xbc71, 0x1c44: 0xbb19, 0x1c45: 0x1429, -- 0x1c46: 0xbb61, 0x1c47: 0x10e1, 0x1c48: 0x1111, 0x1c49: 0x2109, 0x1c4a: 0xbc91, 0x1c4b: 0xbc91, -- 0x1c4c: 0x0040, 0x1c4d: 0x0040, 0x1c4e: 0x1f41, 0x1c4f: 0x00c9, 0x1c50: 0x0069, 0x1c51: 0x0079, -- 0x1c52: 0x1f51, 0x1c53: 0x1f61, 0x1c54: 0x1f71, 0x1c55: 0x1f81, 0x1c56: 0x1f91, 0x1c57: 0x1fa1, -- 0x1c58: 0x1f41, 0x1c59: 0x00c9, 0x1c5a: 0x0069, 0x1c5b: 0x0079, 0x1c5c: 0x1f51, 0x1c5d: 0x1f61, -- 0x1c5e: 0x1f71, 0x1c5f: 0x1f81, 0x1c60: 0x1f91, 0x1c61: 0x1fa1, 0x1c62: 0x1f41, 0x1c63: 0x00c9, -- 0x1c64: 0x0069, 0x1c65: 0x0079, 0x1c66: 0x1f51, 0x1c67: 0x1f61, 0x1c68: 0x1f71, 0x1c69: 0x1f81, -- 0x1c6a: 0x1f91, 0x1c6b: 0x1fa1, 0x1c6c: 0x1f41, 0x1c6d: 0x00c9, 0x1c6e: 0x0069, 0x1c6f: 0x0079, -- 0x1c70: 0x1f51, 0x1c71: 0x1f61, 0x1c72: 0x1f71, 0x1c73: 0x1f81, 0x1c74: 0x1f91, 0x1c75: 0x1fa1, -- 0x1c76: 0x1f41, 0x1c77: 0x00c9, 0x1c78: 0x0069, 0x1c79: 0x0079, 0x1c7a: 0x1f51, 0x1c7b: 0x1f61, -- 0x1c7c: 0x1f71, 0x1c7d: 0x1f81, 0x1c7e: 0x1f91, 0x1c7f: 0x1fa1, -+ 0x1c40: 0x20b1, 0x1c41: 0x20b9, 0x1c42: 0x20d9, 0x1c43: 0x20f1, 0x1c44: 0x0040, 0x1c45: 0x2189, -+ 0x1c46: 0x2109, 0x1c47: 0x20e1, 0x1c48: 0x2131, 0x1c49: 0x2191, 0x1c4a: 0x2161, 0x1c4b: 0x2169, -+ 0x1c4c: 0x2171, 0x1c4d: 0x2179, 0x1c4e: 0x2111, 0x1c4f: 0x2141, 0x1c50: 0x2151, 0x1c51: 0x2121, -+ 0x1c52: 0x2159, 0x1c53: 0x2101, 0x1c54: 0x2119, 0x1c55: 0x20c9, 0x1c56: 0x20d1, 0x1c57: 0x20e9, -+ 0x1c58: 0x20f9, 0x1c59: 0x2129, 0x1c5a: 0x2139, 0x1c5b: 0x2149, 0x1c5c: 0x2311, 0x1c5d: 0x1689, -+ 0x1c5e: 0x2319, 0x1c5f: 0x2321, 0x1c60: 0x0040, 0x1c61: 0x20b9, 0x1c62: 0x20d9, 0x1c63: 0x0040, -+ 0x1c64: 0x2181, 0x1c65: 0x0040, 0x1c66: 0x0040, 0x1c67: 0x20e1, 0x1c68: 0x0040, 0x1c69: 0x2191, -+ 0x1c6a: 0x2161, 0x1c6b: 0x2169, 0x1c6c: 0x2171, 0x1c6d: 0x2179, 0x1c6e: 0x2111, 0x1c6f: 0x2141, -+ 0x1c70: 0x2151, 0x1c71: 0x2121, 0x1c72: 0x2159, 0x1c73: 0x0040, 0x1c74: 0x2119, 0x1c75: 0x20c9, -+ 0x1c76: 0x20d1, 0x1c77: 0x20e9, 0x1c78: 0x0040, 0x1c79: 0x2129, 0x1c7a: 0x0040, 0x1c7b: 0x2149, -+ 0x1c7c: 0x0040, 0x1c7d: 0x0040, 0x1c7e: 0x0040, 0x1c7f: 0x0040, - // Block 0x72, offset 0x1c80 -- 0x1c80: 0xe115, 0x1c81: 0xe115, 0x1c82: 0xe135, 0x1c83: 0xe135, 0x1c84: 0xe115, 0x1c85: 0xe115, -- 0x1c86: 0xe175, 0x1c87: 0xe175, 0x1c88: 0xe115, 0x1c89: 0xe115, 0x1c8a: 0xe135, 0x1c8b: 0xe135, -- 0x1c8c: 0xe115, 0x1c8d: 0xe115, 0x1c8e: 0xe1f5, 0x1c8f: 0xe1f5, 0x1c90: 0xe115, 0x1c91: 0xe115, -- 0x1c92: 0xe135, 0x1c93: 0xe135, 0x1c94: 0xe115, 0x1c95: 0xe115, 0x1c96: 0xe175, 0x1c97: 0xe175, -- 0x1c98: 0xe115, 0x1c99: 0xe115, 0x1c9a: 0xe135, 0x1c9b: 0xe135, 0x1c9c: 0xe115, 0x1c9d: 0xe115, -- 0x1c9e: 0x8b3d, 0x1c9f: 0x8b3d, 0x1ca0: 0x04b5, 0x1ca1: 0x04b5, 0x1ca2: 0x0a08, 0x1ca3: 0x0a08, -- 0x1ca4: 0x0a08, 0x1ca5: 0x0a08, 0x1ca6: 0x0a08, 0x1ca7: 0x0a08, 0x1ca8: 0x0a08, 0x1ca9: 0x0a08, -- 0x1caa: 0x0a08, 0x1cab: 0x0a08, 0x1cac: 0x0a08, 0x1cad: 0x0a08, 0x1cae: 0x0a08, 0x1caf: 0x0a08, -- 0x1cb0: 0x0a08, 0x1cb1: 0x0a08, 0x1cb2: 0x0a08, 0x1cb3: 0x0a08, 0x1cb4: 0x0a08, 0x1cb5: 0x0a08, -- 0x1cb6: 0x0a08, 0x1cb7: 0x0a08, 0x1cb8: 0x0a08, 0x1cb9: 0x0a08, 0x1cba: 0x0a08, 0x1cbb: 0x0a08, -- 0x1cbc: 0x0a08, 0x1cbd: 0x0a08, 0x1cbe: 0x0a08, 0x1cbf: 0x0a08, -+ 0x1c80: 0x0040, 0x1c81: 0x0040, 0x1c82: 0x20d9, 0x1c83: 0x0040, 0x1c84: 0x0040, 0x1c85: 0x0040, -+ 0x1c86: 0x0040, 0x1c87: 0x20e1, 0x1c88: 0x0040, 0x1c89: 0x2191, 0x1c8a: 0x0040, 0x1c8b: 0x2169, -+ 0x1c8c: 0x0040, 0x1c8d: 0x2179, 0x1c8e: 0x2111, 0x1c8f: 0x2141, 0x1c90: 0x0040, 0x1c91: 0x2121, -+ 0x1c92: 0x2159, 0x1c93: 0x0040, 0x1c94: 0x2119, 0x1c95: 0x0040, 0x1c96: 0x0040, 0x1c97: 0x20e9, -+ 0x1c98: 0x0040, 0x1c99: 0x2129, 0x1c9a: 0x0040, 0x1c9b: 0x2149, 0x1c9c: 0x0040, 0x1c9d: 0x1689, -+ 0x1c9e: 0x0040, 0x1c9f: 0x2321, 0x1ca0: 0x0040, 0x1ca1: 0x20b9, 0x1ca2: 0x20d9, 0x1ca3: 0x0040, -+ 0x1ca4: 0x2181, 0x1ca5: 0x0040, 0x1ca6: 0x0040, 0x1ca7: 0x20e1, 0x1ca8: 0x2131, 0x1ca9: 0x2191, -+ 0x1caa: 0x2161, 0x1cab: 0x0040, 0x1cac: 0x2171, 0x1cad: 0x2179, 0x1cae: 0x2111, 0x1caf: 0x2141, -+ 0x1cb0: 0x2151, 0x1cb1: 0x2121, 0x1cb2: 0x2159, 0x1cb3: 0x0040, 0x1cb4: 0x2119, 0x1cb5: 0x20c9, -+ 0x1cb6: 0x20d1, 0x1cb7: 0x20e9, 0x1cb8: 0x0040, 0x1cb9: 0x2129, 0x1cba: 0x2139, 0x1cbb: 0x2149, -+ 0x1cbc: 0x2311, 0x1cbd: 0x0040, 0x1cbe: 0x2319, 0x1cbf: 0x0040, - // Block 0x73, offset 0x1cc0 -- 0x1cc0: 0xb1d9, 0x1cc1: 0xb1f1, 0x1cc2: 0xb251, 0x1cc3: 0xb299, 0x1cc4: 0x0040, 0x1cc5: 0xb461, -- 0x1cc6: 0xb2e1, 0x1cc7: 0xb269, 0x1cc8: 0xb359, 0x1cc9: 0xb479, 0x1cca: 0xb3e9, 0x1ccb: 0xb401, -- 0x1ccc: 0xb419, 0x1ccd: 0xb431, 0x1cce: 0xb2f9, 0x1ccf: 0xb389, 0x1cd0: 0xb3b9, 0x1cd1: 0xb329, -- 0x1cd2: 0xb3d1, 0x1cd3: 0xb2c9, 0x1cd4: 0xb311, 0x1cd5: 0xb221, 0x1cd6: 0xb239, 0x1cd7: 0xb281, -- 0x1cd8: 0xb2b1, 0x1cd9: 0xb341, 0x1cda: 0xb371, 0x1cdb: 0xb3a1, 0x1cdc: 0xbca9, 0x1cdd: 0x7999, -- 0x1cde: 0xbcc1, 0x1cdf: 0xbcd9, 0x1ce0: 0x0040, 0x1ce1: 0xb1f1, 0x1ce2: 0xb251, 0x1ce3: 0x0040, -- 0x1ce4: 0xb449, 0x1ce5: 0x0040, 0x1ce6: 0x0040, 0x1ce7: 0xb269, 0x1ce8: 0x0040, 0x1ce9: 0xb479, -- 0x1cea: 0xb3e9, 0x1ceb: 0xb401, 0x1cec: 0xb419, 0x1ced: 0xb431, 0x1cee: 0xb2f9, 0x1cef: 0xb389, -- 0x1cf0: 0xb3b9, 0x1cf1: 0xb329, 0x1cf2: 0xb3d1, 0x1cf3: 0x0040, 0x1cf4: 0xb311, 0x1cf5: 0xb221, -- 0x1cf6: 0xb239, 0x1cf7: 0xb281, 0x1cf8: 0x0040, 0x1cf9: 0xb341, 0x1cfa: 0x0040, 0x1cfb: 0xb3a1, -+ 0x1cc0: 0x20b1, 0x1cc1: 0x20b9, 0x1cc2: 0x20d9, 0x1cc3: 0x20f1, 0x1cc4: 0x2181, 0x1cc5: 0x2189, -+ 0x1cc6: 0x2109, 0x1cc7: 0x20e1, 0x1cc8: 0x2131, 0x1cc9: 0x2191, 0x1cca: 0x0040, 0x1ccb: 0x2169, -+ 0x1ccc: 0x2171, 0x1ccd: 0x2179, 0x1cce: 0x2111, 0x1ccf: 0x2141, 0x1cd0: 0x2151, 0x1cd1: 0x2121, -+ 0x1cd2: 0x2159, 0x1cd3: 0x2101, 0x1cd4: 0x2119, 0x1cd5: 0x20c9, 0x1cd6: 0x20d1, 0x1cd7: 0x20e9, -+ 0x1cd8: 0x20f9, 0x1cd9: 0x2129, 0x1cda: 0x2139, 0x1cdb: 0x2149, 0x1cdc: 0x0040, 0x1cdd: 0x0040, -+ 0x1cde: 0x0040, 0x1cdf: 0x0040, 0x1ce0: 0x0040, 0x1ce1: 0x20b9, 0x1ce2: 0x20d9, 0x1ce3: 0x20f1, -+ 0x1ce4: 0x0040, 0x1ce5: 0x2189, 0x1ce6: 0x2109, 0x1ce7: 0x20e1, 0x1ce8: 0x2131, 0x1ce9: 0x2191, -+ 0x1cea: 0x0040, 0x1ceb: 0x2169, 0x1cec: 0x2171, 0x1ced: 0x2179, 0x1cee: 0x2111, 0x1cef: 0x2141, -+ 0x1cf0: 0x2151, 0x1cf1: 0x2121, 0x1cf2: 0x2159, 0x1cf3: 0x2101, 0x1cf4: 0x2119, 0x1cf5: 0x20c9, -+ 0x1cf6: 0x20d1, 0x1cf7: 0x20e9, 0x1cf8: 0x20f9, 0x1cf9: 0x2129, 0x1cfa: 0x2139, 0x1cfb: 0x2149, - 0x1cfc: 0x0040, 0x1cfd: 0x0040, 0x1cfe: 0x0040, 0x1cff: 0x0040, - // Block 0x74, offset 0x1d00 -- 0x1d00: 0x0040, 0x1d01: 0x0040, 0x1d02: 0xb251, 0x1d03: 0x0040, 0x1d04: 0x0040, 0x1d05: 0x0040, -- 0x1d06: 0x0040, 0x1d07: 0xb269, 0x1d08: 0x0040, 0x1d09: 0xb479, 0x1d0a: 0x0040, 0x1d0b: 0xb401, -- 0x1d0c: 0x0040, 0x1d0d: 0xb431, 0x1d0e: 0xb2f9, 0x1d0f: 0xb389, 0x1d10: 0x0040, 0x1d11: 0xb329, -- 0x1d12: 0xb3d1, 0x1d13: 0x0040, 0x1d14: 0xb311, 0x1d15: 0x0040, 0x1d16: 0x0040, 0x1d17: 0xb281, -- 0x1d18: 0x0040, 0x1d19: 0xb341, 0x1d1a: 0x0040, 0x1d1b: 0xb3a1, 0x1d1c: 0x0040, 0x1d1d: 0x7999, -- 0x1d1e: 0x0040, 0x1d1f: 0xbcd9, 0x1d20: 0x0040, 0x1d21: 0xb1f1, 0x1d22: 0xb251, 0x1d23: 0x0040, -- 0x1d24: 0xb449, 0x1d25: 0x0040, 0x1d26: 0x0040, 0x1d27: 0xb269, 0x1d28: 0xb359, 0x1d29: 0xb479, -- 0x1d2a: 0xb3e9, 0x1d2b: 0x0040, 0x1d2c: 0xb419, 0x1d2d: 0xb431, 0x1d2e: 0xb2f9, 0x1d2f: 0xb389, -- 0x1d30: 0xb3b9, 0x1d31: 0xb329, 0x1d32: 0xb3d1, 0x1d33: 0x0040, 0x1d34: 0xb311, 0x1d35: 0xb221, -- 0x1d36: 0xb239, 0x1d37: 0xb281, 0x1d38: 0x0040, 0x1d39: 0xb341, 0x1d3a: 0xb371, 0x1d3b: 0xb3a1, -- 0x1d3c: 0xbca9, 0x1d3d: 0x0040, 0x1d3e: 0xbcc1, 0x1d3f: 0x0040, -+ 0x1d00: 0x0040, 0x1d01: 0x232a, 0x1d02: 0x2332, 0x1d03: 0x233a, 0x1d04: 0x2342, 0x1d05: 0x234a, -+ 0x1d06: 0x2352, 0x1d07: 0x235a, 0x1d08: 0x2362, 0x1d09: 0x236a, 0x1d0a: 0x2372, 0x1d0b: 0x0018, -+ 0x1d0c: 0x0018, 0x1d0d: 0x0018, 0x1d0e: 0x0018, 0x1d0f: 0x0018, 0x1d10: 0x237a, 0x1d11: 0x2382, -+ 0x1d12: 0x238a, 0x1d13: 0x2392, 0x1d14: 0x239a, 0x1d15: 0x23a2, 0x1d16: 0x23aa, 0x1d17: 0x23b2, -+ 0x1d18: 0x23ba, 0x1d19: 0x23c2, 0x1d1a: 0x23ca, 0x1d1b: 0x23d2, 0x1d1c: 0x23da, 0x1d1d: 0x23e2, -+ 0x1d1e: 0x23ea, 0x1d1f: 0x23f2, 0x1d20: 0x23fa, 0x1d21: 0x2402, 0x1d22: 0x240a, 0x1d23: 0x2412, -+ 0x1d24: 0x241a, 0x1d25: 0x2422, 0x1d26: 0x242a, 0x1d27: 0x2432, 0x1d28: 0x243a, 0x1d29: 0x2442, -+ 0x1d2a: 0x2449, 0x1d2b: 0x03d9, 0x1d2c: 0x00b9, 0x1d2d: 0x1239, 0x1d2e: 0x2451, 0x1d2f: 0x0018, -+ 0x1d30: 0x0019, 0x1d31: 0x02e9, 0x1d32: 0x03d9, 0x1d33: 0x02f1, 0x1d34: 0x02f9, 0x1d35: 0x03f1, -+ 0x1d36: 0x0309, 0x1d37: 0x00a9, 0x1d38: 0x0311, 0x1d39: 0x00b1, 0x1d3a: 0x0319, 0x1d3b: 0x0101, -+ 0x1d3c: 0x0321, 0x1d3d: 0x0329, 0x1d3e: 0x0051, 0x1d3f: 0x0339, - // Block 0x75, offset 0x1d40 -- 0x1d40: 0xb1d9, 0x1d41: 0xb1f1, 0x1d42: 0xb251, 0x1d43: 0xb299, 0x1d44: 0xb449, 0x1d45: 0xb461, -- 0x1d46: 0xb2e1, 0x1d47: 0xb269, 0x1d48: 0xb359, 0x1d49: 0xb479, 0x1d4a: 0x0040, 0x1d4b: 0xb401, -- 0x1d4c: 0xb419, 0x1d4d: 0xb431, 0x1d4e: 0xb2f9, 0x1d4f: 0xb389, 0x1d50: 0xb3b9, 0x1d51: 0xb329, -- 0x1d52: 0xb3d1, 0x1d53: 0xb2c9, 0x1d54: 0xb311, 0x1d55: 0xb221, 0x1d56: 0xb239, 0x1d57: 0xb281, -- 0x1d58: 0xb2b1, 0x1d59: 0xb341, 0x1d5a: 0xb371, 0x1d5b: 0xb3a1, 0x1d5c: 0x0040, 0x1d5d: 0x0040, -- 0x1d5e: 0x0040, 0x1d5f: 0x0040, 0x1d60: 0x0040, 0x1d61: 0xb1f1, 0x1d62: 0xb251, 0x1d63: 0xb299, -- 0x1d64: 0x0040, 0x1d65: 0xb461, 0x1d66: 0xb2e1, 0x1d67: 0xb269, 0x1d68: 0xb359, 0x1d69: 0xb479, -- 0x1d6a: 0x0040, 0x1d6b: 0xb401, 0x1d6c: 0xb419, 0x1d6d: 0xb431, 0x1d6e: 0xb2f9, 0x1d6f: 0xb389, -- 0x1d70: 0xb3b9, 0x1d71: 0xb329, 0x1d72: 0xb3d1, 0x1d73: 0xb2c9, 0x1d74: 0xb311, 0x1d75: 0xb221, -- 0x1d76: 0xb239, 0x1d77: 0xb281, 0x1d78: 0xb2b1, 0x1d79: 0xb341, 0x1d7a: 0xb371, 0x1d7b: 0xb3a1, -- 0x1d7c: 0x0040, 0x1d7d: 0x0040, 0x1d7e: 0x0040, 0x1d7f: 0x0040, -+ 0x1d40: 0x0751, 0x1d41: 0x00b9, 0x1d42: 0x0089, 0x1d43: 0x0341, 0x1d44: 0x0349, 0x1d45: 0x0391, -+ 0x1d46: 0x00c1, 0x1d47: 0x0109, 0x1d48: 0x00c9, 0x1d49: 0x04b1, 0x1d4a: 0x2459, 0x1d4b: 0x11f9, -+ 0x1d4c: 0x2461, 0x1d4d: 0x04d9, 0x1d4e: 0x2469, 0x1d4f: 0x2471, 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: 0x2479, 0x1d6b: 0x2481, 0x1d6c: 0x2489, 0x1d6d: 0x0018, 0x1d6e: 0x0018, 0x1d6f: 0x0018, -+ 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: 0x0040, 0x1d81: 0xbcf2, 0x1d82: 0xbd0a, 0x1d83: 0xbd22, 0x1d84: 0xbd3a, 0x1d85: 0xbd52, -- 0x1d86: 0xbd6a, 0x1d87: 0xbd82, 0x1d88: 0xbd9a, 0x1d89: 0xbdb2, 0x1d8a: 0xbdca, 0x1d8b: 0x0018, -- 0x1d8c: 0x0018, 0x1d8d: 0x0018, 0x1d8e: 0x0018, 0x1d8f: 0x0018, 0x1d90: 0xbde2, 0x1d91: 0xbe02, -- 0x1d92: 0xbe22, 0x1d93: 0xbe42, 0x1d94: 0xbe62, 0x1d95: 0xbe82, 0x1d96: 0xbea2, 0x1d97: 0xbec2, -- 0x1d98: 0xbee2, 0x1d99: 0xbf02, 0x1d9a: 0xbf22, 0x1d9b: 0xbf42, 0x1d9c: 0xbf62, 0x1d9d: 0xbf82, -- 0x1d9e: 0xbfa2, 0x1d9f: 0xbfc2, 0x1da0: 0xbfe2, 0x1da1: 0xc002, 0x1da2: 0xc022, 0x1da3: 0xc042, -- 0x1da4: 0xc062, 0x1da5: 0xc082, 0x1da6: 0xc0a2, 0x1da7: 0xc0c2, 0x1da8: 0xc0e2, 0x1da9: 0xc102, -- 0x1daa: 0xc121, 0x1dab: 0x1159, 0x1dac: 0x0269, 0x1dad: 0x66a9, 0x1dae: 0xc161, 0x1daf: 0x0018, -- 0x1db0: 0x0039, 0x1db1: 0x0ee9, 0x1db2: 0x1159, 0x1db3: 0x0ef9, 0x1db4: 0x0f09, 0x1db5: 0x1199, -- 0x1db6: 0x0f31, 0x1db7: 0x0249, 0x1db8: 0x0f41, 0x1db9: 0x0259, 0x1dba: 0x0f51, 0x1dbb: 0x0359, -- 0x1dbc: 0x0f61, 0x1dbd: 0x0f71, 0x1dbe: 0x00d9, 0x1dbf: 0x0f99, -+ 0x1d80: 0x2499, 0x1d81: 0x24a1, 0x1d82: 0x24a9, 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: 0x24b1, 0x1d91: 0x24b9, -+ 0x1d92: 0x24c1, 0x1d93: 0x24c9, 0x1d94: 0x24d1, 0x1d95: 0x24d9, 0x1d96: 0x24e1, 0x1d97: 0x24e9, -+ 0x1d98: 0x24f1, 0x1d99: 0x24f9, 0x1d9a: 0x2501, 0x1d9b: 0x2509, 0x1d9c: 0x2511, 0x1d9d: 0x2519, -+ 0x1d9e: 0x2521, 0x1d9f: 0x2529, 0x1da0: 0x2531, 0x1da1: 0x2539, 0x1da2: 0x2541, 0x1da3: 0x2549, -+ 0x1da4: 0x2551, 0x1da5: 0x2559, 0x1da6: 0x2561, 0x1da7: 0x2569, 0x1da8: 0x2571, 0x1da9: 0x2579, -+ 0x1daa: 0x2581, 0x1dab: 0x2589, 0x1dac: 0x2591, 0x1dad: 0x2599, 0x1dae: 0x25a1, 0x1daf: 0x25a9, -+ 0x1db0: 0x25b1, 0x1db1: 0x25b9, 0x1db2: 0x25c1, 0x1db3: 0x25c9, 0x1db4: 0x25d1, 0x1db5: 0x25d9, -+ 0x1db6: 0x25e1, 0x1db7: 0x25e9, 0x1db8: 0x25f1, 0x1db9: 0x25f9, 0x1dba: 0x2601, 0x1dbb: 0x2609, -+ 0x1dbc: 0x0040, 0x1dbd: 0x0040, 0x1dbe: 0x0040, 0x1dbf: 0x0040, - // Block 0x77, offset 0x1dc0 -- 0x1dc0: 0x2039, 0x1dc1: 0x0269, 0x1dc2: 0x01d9, 0x1dc3: 0x0fa9, 0x1dc4: 0x0fb9, 0x1dc5: 0x1089, -- 0x1dc6: 0x0279, 0x1dc7: 0x0369, 0x1dc8: 0x0289, 0x1dc9: 0x13d1, 0x1dca: 0xc179, 0x1dcb: 0x65e9, -- 0x1dcc: 0xc191, 0x1dcd: 0x1441, 0x1dce: 0xc1a9, 0x1dcf: 0xc1c9, 0x1dd0: 0x0018, 0x1dd1: 0x0018, -- 0x1dd2: 0x0018, 0x1dd3: 0x0018, 0x1dd4: 0x0018, 0x1dd5: 0x0018, 0x1dd6: 0x0018, 0x1dd7: 0x0018, -- 0x1dd8: 0x0018, 0x1dd9: 0x0018, 0x1dda: 0x0018, 0x1ddb: 0x0018, 0x1ddc: 0x0018, 0x1ddd: 0x0018, -- 0x1dde: 0x0018, 0x1ddf: 0x0018, 0x1de0: 0x0018, 0x1de1: 0x0018, 0x1de2: 0x0018, 0x1de3: 0x0018, -- 0x1de4: 0x0018, 0x1de5: 0x0018, 0x1de6: 0x0018, 0x1de7: 0x0018, 0x1de8: 0x0018, 0x1de9: 0x0018, -- 0x1dea: 0xc1e1, 0x1deb: 0xc1f9, 0x1dec: 0xc211, 0x1ded: 0x0018, 0x1dee: 0x0018, 0x1def: 0x0018, -- 0x1df0: 0x0018, 0x1df1: 0x0018, 0x1df2: 0x0018, 0x1df3: 0x0018, 0x1df4: 0x0018, 0x1df5: 0x0018, -- 0x1df6: 0x0018, 0x1df7: 0x0018, 0x1df8: 0x0018, 0x1df9: 0x0018, 0x1dfa: 0x0018, 0x1dfb: 0x0018, -- 0x1dfc: 0x0018, 0x1dfd: 0x0018, 0x1dfe: 0x0018, 0x1dff: 0x0018, -+ 0x1dc0: 0x2669, 0x1dc1: 0x2671, 0x1dc2: 0x2679, 0x1dc3: 0x8b55, 0x1dc4: 0x2681, 0x1dc5: 0x2689, -+ 0x1dc6: 0x2691, 0x1dc7: 0x2699, 0x1dc8: 0x26a1, 0x1dc9: 0x26a9, 0x1dca: 0x26b1, 0x1dcb: 0x26b9, -+ 0x1dcc: 0x26c1, 0x1dcd: 0x8b75, 0x1dce: 0x26c9, 0x1dcf: 0x26d1, 0x1dd0: 0x26d9, 0x1dd1: 0x26e1, -+ 0x1dd2: 0x8b95, 0x1dd3: 0x26e9, 0x1dd4: 0x26f1, 0x1dd5: 0x2521, 0x1dd6: 0x8bb5, 0x1dd7: 0x26f9, -+ 0x1dd8: 0x2701, 0x1dd9: 0x2709, 0x1dda: 0x2711, 0x1ddb: 0x2719, 0x1ddc: 0x8bd5, 0x1ddd: 0x2721, -+ 0x1dde: 0x2729, 0x1ddf: 0x2731, 0x1de0: 0x2739, 0x1de1: 0x2741, 0x1de2: 0x25f9, 0x1de3: 0x2749, -+ 0x1de4: 0x2751, 0x1de5: 0x2759, 0x1de6: 0x2761, 0x1de7: 0x2769, 0x1de8: 0x2771, 0x1de9: 0x2779, -+ 0x1dea: 0x2781, 0x1deb: 0x2789, 0x1dec: 0x2791, 0x1ded: 0x2799, 0x1dee: 0x27a1, 0x1def: 0x27a9, -+ 0x1df0: 0x27b1, 0x1df1: 0x27b9, 0x1df2: 0x27b9, 0x1df3: 0x27b9, 0x1df4: 0x8bf5, 0x1df5: 0x27c1, -+ 0x1df6: 0x27c9, 0x1df7: 0x27d1, 0x1df8: 0x8c15, 0x1df9: 0x27d9, 0x1dfa: 0x27e1, 0x1dfb: 0x27e9, -+ 0x1dfc: 0x27f1, 0x1dfd: 0x27f9, 0x1dfe: 0x2801, 0x1dff: 0x2809, - // Block 0x78, offset 0x1e00 -- 0x1e00: 0xc241, 0x1e01: 0xc279, 0x1e02: 0xc2b1, 0x1e03: 0x0040, 0x1e04: 0x0040, 0x1e05: 0x0040, -- 0x1e06: 0x0040, 0x1e07: 0x0040, 0x1e08: 0x0040, 0x1e09: 0x0040, 0x1e0a: 0x0040, 0x1e0b: 0x0040, -- 0x1e0c: 0x0040, 0x1e0d: 0x0040, 0x1e0e: 0x0040, 0x1e0f: 0x0040, 0x1e10: 0xc2d1, 0x1e11: 0xc2f1, -- 0x1e12: 0xc311, 0x1e13: 0xc331, 0x1e14: 0xc351, 0x1e15: 0xc371, 0x1e16: 0xc391, 0x1e17: 0xc3b1, -- 0x1e18: 0xc3d1, 0x1e19: 0xc3f1, 0x1e1a: 0xc411, 0x1e1b: 0xc431, 0x1e1c: 0xc451, 0x1e1d: 0xc471, -- 0x1e1e: 0xc491, 0x1e1f: 0xc4b1, 0x1e20: 0xc4d1, 0x1e21: 0xc4f1, 0x1e22: 0xc511, 0x1e23: 0xc531, -- 0x1e24: 0xc551, 0x1e25: 0xc571, 0x1e26: 0xc591, 0x1e27: 0xc5b1, 0x1e28: 0xc5d1, 0x1e29: 0xc5f1, -- 0x1e2a: 0xc611, 0x1e2b: 0xc631, 0x1e2c: 0xc651, 0x1e2d: 0xc671, 0x1e2e: 0xc691, 0x1e2f: 0xc6b1, -- 0x1e30: 0xc6d1, 0x1e31: 0xc6f1, 0x1e32: 0xc711, 0x1e33: 0xc731, 0x1e34: 0xc751, 0x1e35: 0xc771, -- 0x1e36: 0xc791, 0x1e37: 0xc7b1, 0x1e38: 0xc7d1, 0x1e39: 0xc7f1, 0x1e3a: 0xc811, 0x1e3b: 0xc831, -- 0x1e3c: 0x0040, 0x1e3d: 0x0040, 0x1e3e: 0x0040, 0x1e3f: 0x0040, -+ 0x1e00: 0x2811, 0x1e01: 0x2819, 0x1e02: 0x2821, 0x1e03: 0x2829, 0x1e04: 0x2831, 0x1e05: 0x2839, -+ 0x1e06: 0x2839, 0x1e07: 0x2841, 0x1e08: 0x2849, 0x1e09: 0x2851, 0x1e0a: 0x2859, 0x1e0b: 0x2861, -+ 0x1e0c: 0x2869, 0x1e0d: 0x2871, 0x1e0e: 0x2879, 0x1e0f: 0x2881, 0x1e10: 0x2889, 0x1e11: 0x2891, -+ 0x1e12: 0x2899, 0x1e13: 0x28a1, 0x1e14: 0x28a9, 0x1e15: 0x28b1, 0x1e16: 0x28b9, 0x1e17: 0x28c1, -+ 0x1e18: 0x28c9, 0x1e19: 0x8c35, 0x1e1a: 0x28d1, 0x1e1b: 0x28d9, 0x1e1c: 0x28e1, 0x1e1d: 0x24d9, -+ 0x1e1e: 0x28e9, 0x1e1f: 0x28f1, 0x1e20: 0x8c55, 0x1e21: 0x8c75, 0x1e22: 0x28f9, 0x1e23: 0x2901, -+ 0x1e24: 0x2909, 0x1e25: 0x2911, 0x1e26: 0x2919, 0x1e27: 0x2921, 0x1e28: 0x2040, 0x1e29: 0x2929, -+ 0x1e2a: 0x2931, 0x1e2b: 0x2931, 0x1e2c: 0x8c95, 0x1e2d: 0x2939, 0x1e2e: 0x2941, 0x1e2f: 0x2949, -+ 0x1e30: 0x2951, 0x1e31: 0x8cb5, 0x1e32: 0x2959, 0x1e33: 0x2961, 0x1e34: 0x2040, 0x1e35: 0x2969, -+ 0x1e36: 0x2971, 0x1e37: 0x2979, 0x1e38: 0x2981, 0x1e39: 0x2989, 0x1e3a: 0x2991, 0x1e3b: 0x8cd5, -+ 0x1e3c: 0x2999, 0x1e3d: 0x8cf5, 0x1e3e: 0x29a1, 0x1e3f: 0x29a9, - // Block 0x79, offset 0x1e40 -- 0x1e40: 0xcb61, 0x1e41: 0xcb81, 0x1e42: 0xcba1, 0x1e43: 0x8b55, 0x1e44: 0xcbc1, 0x1e45: 0xcbe1, -- 0x1e46: 0xcc01, 0x1e47: 0xcc21, 0x1e48: 0xcc41, 0x1e49: 0xcc61, 0x1e4a: 0xcc81, 0x1e4b: 0xcca1, -- 0x1e4c: 0xccc1, 0x1e4d: 0x8b75, 0x1e4e: 0xcce1, 0x1e4f: 0xcd01, 0x1e50: 0xcd21, 0x1e51: 0xcd41, -- 0x1e52: 0x8b95, 0x1e53: 0xcd61, 0x1e54: 0xcd81, 0x1e55: 0xc491, 0x1e56: 0x8bb5, 0x1e57: 0xcda1, -- 0x1e58: 0xcdc1, 0x1e59: 0xcde1, 0x1e5a: 0xce01, 0x1e5b: 0xce21, 0x1e5c: 0x8bd5, 0x1e5d: 0xce41, -- 0x1e5e: 0xce61, 0x1e5f: 0xce81, 0x1e60: 0xcea1, 0x1e61: 0xcec1, 0x1e62: 0xc7f1, 0x1e63: 0xcee1, -- 0x1e64: 0xcf01, 0x1e65: 0xcf21, 0x1e66: 0xcf41, 0x1e67: 0xcf61, 0x1e68: 0xcf81, 0x1e69: 0xcfa1, -- 0x1e6a: 0xcfc1, 0x1e6b: 0xcfe1, 0x1e6c: 0xd001, 0x1e6d: 0xd021, 0x1e6e: 0xd041, 0x1e6f: 0xd061, -- 0x1e70: 0xd081, 0x1e71: 0xd0a1, 0x1e72: 0xd0a1, 0x1e73: 0xd0a1, 0x1e74: 0x8bf5, 0x1e75: 0xd0c1, -- 0x1e76: 0xd0e1, 0x1e77: 0xd101, 0x1e78: 0x8c15, 0x1e79: 0xd121, 0x1e7a: 0xd141, 0x1e7b: 0xd161, -- 0x1e7c: 0xd181, 0x1e7d: 0xd1a1, 0x1e7e: 0xd1c1, 0x1e7f: 0xd1e1, -+ 0x1e40: 0x29b1, 0x1e41: 0x29b9, 0x1e42: 0x29c1, 0x1e43: 0x29c9, 0x1e44: 0x29d1, 0x1e45: 0x29d9, -+ 0x1e46: 0x29e1, 0x1e47: 0x29e9, 0x1e48: 0x29f1, 0x1e49: 0x8d15, 0x1e4a: 0x29f9, 0x1e4b: 0x2a01, -+ 0x1e4c: 0x2a09, 0x1e4d: 0x2a11, 0x1e4e: 0x2a19, 0x1e4f: 0x8d35, 0x1e50: 0x2a21, 0x1e51: 0x8d55, -+ 0x1e52: 0x8d75, 0x1e53: 0x2a29, 0x1e54: 0x2a31, 0x1e55: 0x2a31, 0x1e56: 0x2a39, 0x1e57: 0x8d95, -+ 0x1e58: 0x8db5, 0x1e59: 0x2a41, 0x1e5a: 0x2a49, 0x1e5b: 0x2a51, 0x1e5c: 0x2a59, 0x1e5d: 0x2a61, -+ 0x1e5e: 0x2a69, 0x1e5f: 0x2a71, 0x1e60: 0x2a79, 0x1e61: 0x2a81, 0x1e62: 0x2a89, 0x1e63: 0x2a91, -+ 0x1e64: 0x8dd5, 0x1e65: 0x2a99, 0x1e66: 0x2aa1, 0x1e67: 0x2aa9, 0x1e68: 0x2ab1, 0x1e69: 0x2aa9, -+ 0x1e6a: 0x2ab9, 0x1e6b: 0x2ac1, 0x1e6c: 0x2ac9, 0x1e6d: 0x2ad1, 0x1e6e: 0x2ad9, 0x1e6f: 0x2ae1, -+ 0x1e70: 0x2ae9, 0x1e71: 0x2af1, 0x1e72: 0x2af9, 0x1e73: 0x2b01, 0x1e74: 0x2b09, 0x1e75: 0x2b11, -+ 0x1e76: 0x2b19, 0x1e77: 0x2b21, 0x1e78: 0x8df5, 0x1e79: 0x2b29, 0x1e7a: 0x2b31, 0x1e7b: 0x2b39, -+ 0x1e7c: 0x2b41, 0x1e7d: 0x2b49, 0x1e7e: 0x8e15, 0x1e7f: 0x2b51, - // Block 0x7a, offset 0x1e80 -- 0x1e80: 0xd201, 0x1e81: 0xd221, 0x1e82: 0xd241, 0x1e83: 0xd261, 0x1e84: 0xd281, 0x1e85: 0xd2a1, -- 0x1e86: 0xd2a1, 0x1e87: 0xd2c1, 0x1e88: 0xd2e1, 0x1e89: 0xd301, 0x1e8a: 0xd321, 0x1e8b: 0xd341, -- 0x1e8c: 0xd361, 0x1e8d: 0xd381, 0x1e8e: 0xd3a1, 0x1e8f: 0xd3c1, 0x1e90: 0xd3e1, 0x1e91: 0xd401, -- 0x1e92: 0xd421, 0x1e93: 0xd441, 0x1e94: 0xd461, 0x1e95: 0xd481, 0x1e96: 0xd4a1, 0x1e97: 0xd4c1, -- 0x1e98: 0xd4e1, 0x1e99: 0x8c35, 0x1e9a: 0xd501, 0x1e9b: 0xd521, 0x1e9c: 0xd541, 0x1e9d: 0xc371, -- 0x1e9e: 0xd561, 0x1e9f: 0xd581, 0x1ea0: 0x8c55, 0x1ea1: 0x8c75, 0x1ea2: 0xd5a1, 0x1ea3: 0xd5c1, -- 0x1ea4: 0xd5e1, 0x1ea5: 0xd601, 0x1ea6: 0xd621, 0x1ea7: 0xd641, 0x1ea8: 0x2040, 0x1ea9: 0xd661, -- 0x1eaa: 0xd681, 0x1eab: 0xd681, 0x1eac: 0x8c95, 0x1ead: 0xd6a1, 0x1eae: 0xd6c1, 0x1eaf: 0xd6e1, -- 0x1eb0: 0xd701, 0x1eb1: 0x8cb5, 0x1eb2: 0xd721, 0x1eb3: 0xd741, 0x1eb4: 0x2040, 0x1eb5: 0xd761, -- 0x1eb6: 0xd781, 0x1eb7: 0xd7a1, 0x1eb8: 0xd7c1, 0x1eb9: 0xd7e1, 0x1eba: 0xd801, 0x1ebb: 0x8cd5, -- 0x1ebc: 0xd821, 0x1ebd: 0x8cf5, 0x1ebe: 0xd841, 0x1ebf: 0xd861, -+ 0x1e80: 0x2b59, 0x1e81: 0x2b61, 0x1e82: 0x2b69, 0x1e83: 0x2b71, 0x1e84: 0x2b79, 0x1e85: 0x2b81, -+ 0x1e86: 0x2b89, 0x1e87: 0x2b91, 0x1e88: 0x2b99, 0x1e89: 0x2ba1, 0x1e8a: 0x8e35, 0x1e8b: 0x2ba9, -+ 0x1e8c: 0x2bb1, 0x1e8d: 0x2bb9, 0x1e8e: 0x2bc1, 0x1e8f: 0x2bc9, 0x1e90: 0x2bd1, 0x1e91: 0x2bd9, -+ 0x1e92: 0x2be1, 0x1e93: 0x2be9, 0x1e94: 0x2bf1, 0x1e95: 0x2bf9, 0x1e96: 0x2c01, 0x1e97: 0x2c09, -+ 0x1e98: 0x2c11, 0x1e99: 0x2c19, 0x1e9a: 0x2c21, 0x1e9b: 0x2c29, 0x1e9c: 0x2c31, 0x1e9d: 0x8e55, -+ 0x1e9e: 0x2c39, 0x1e9f: 0x2c41, 0x1ea0: 0x2c49, 0x1ea1: 0x2c51, 0x1ea2: 0x2c59, 0x1ea3: 0x8e75, -+ 0x1ea4: 0x2c61, 0x1ea5: 0x2c69, 0x1ea6: 0x2c71, 0x1ea7: 0x2c79, 0x1ea8: 0x2c81, 0x1ea9: 0x2c89, -+ 0x1eaa: 0x2c91, 0x1eab: 0x2c99, 0x1eac: 0x7f0d, 0x1ead: 0x2ca1, 0x1eae: 0x2ca9, 0x1eaf: 0x2cb1, -+ 0x1eb0: 0x8e95, 0x1eb1: 0x2cb9, 0x1eb2: 0x2cc1, 0x1eb3: 0x2cc9, 0x1eb4: 0x2cd1, 0x1eb5: 0x2cd9, -+ 0x1eb6: 0x2ce1, 0x1eb7: 0x8eb5, 0x1eb8: 0x8ed5, 0x1eb9: 0x8ef5, 0x1eba: 0x2ce9, 0x1ebb: 0x8f15, -+ 0x1ebc: 0x2cf1, 0x1ebd: 0x2cf9, 0x1ebe: 0x2d01, 0x1ebf: 0x2d09, - // Block 0x7b, offset 0x1ec0 -- 0x1ec0: 0xd881, 0x1ec1: 0xd8a1, 0x1ec2: 0xd8c1, 0x1ec3: 0xd8e1, 0x1ec4: 0xd901, 0x1ec5: 0xd921, -- 0x1ec6: 0xd941, 0x1ec7: 0xd961, 0x1ec8: 0xd981, 0x1ec9: 0x8d15, 0x1eca: 0xd9a1, 0x1ecb: 0xd9c1, -- 0x1ecc: 0xd9e1, 0x1ecd: 0xda01, 0x1ece: 0xda21, 0x1ecf: 0x8d35, 0x1ed0: 0xda41, 0x1ed1: 0x8d55, -- 0x1ed2: 0x8d75, 0x1ed3: 0xda61, 0x1ed4: 0xda81, 0x1ed5: 0xda81, 0x1ed6: 0xdaa1, 0x1ed7: 0x8d95, -- 0x1ed8: 0x8db5, 0x1ed9: 0xdac1, 0x1eda: 0xdae1, 0x1edb: 0xdb01, 0x1edc: 0xdb21, 0x1edd: 0xdb41, -- 0x1ede: 0xdb61, 0x1edf: 0xdb81, 0x1ee0: 0xdba1, 0x1ee1: 0xdbc1, 0x1ee2: 0xdbe1, 0x1ee3: 0xdc01, -- 0x1ee4: 0x8dd5, 0x1ee5: 0xdc21, 0x1ee6: 0xdc41, 0x1ee7: 0xdc61, 0x1ee8: 0xdc81, 0x1ee9: 0xdc61, -- 0x1eea: 0xdca1, 0x1eeb: 0xdcc1, 0x1eec: 0xdce1, 0x1eed: 0xdd01, 0x1eee: 0xdd21, 0x1eef: 0xdd41, -- 0x1ef0: 0xdd61, 0x1ef1: 0xdd81, 0x1ef2: 0xdda1, 0x1ef3: 0xddc1, 0x1ef4: 0xdde1, 0x1ef5: 0xde01, -- 0x1ef6: 0xde21, 0x1ef7: 0xde41, 0x1ef8: 0x8df5, 0x1ef9: 0xde61, 0x1efa: 0xde81, 0x1efb: 0xdea1, -- 0x1efc: 0xdec1, 0x1efd: 0xdee1, 0x1efe: 0x8e15, 0x1eff: 0xdf01, -+ 0x1ec0: 0x2d11, 0x1ec1: 0x2d19, 0x1ec2: 0x2d21, 0x1ec3: 0x2d29, 0x1ec4: 0x2d31, 0x1ec5: 0x2d39, -+ 0x1ec6: 0x8f35, 0x1ec7: 0x2d41, 0x1ec8: 0x2d49, 0x1ec9: 0x2d51, 0x1eca: 0x2d59, 0x1ecb: 0x2d61, -+ 0x1ecc: 0x2d69, 0x1ecd: 0x8f55, 0x1ece: 0x2d71, 0x1ecf: 0x2d79, 0x1ed0: 0x8f75, 0x1ed1: 0x8f95, -+ 0x1ed2: 0x2d81, 0x1ed3: 0x2d89, 0x1ed4: 0x2d91, 0x1ed5: 0x2d99, 0x1ed6: 0x2da1, 0x1ed7: 0x2da9, -+ 0x1ed8: 0x2db1, 0x1ed9: 0x2db9, 0x1eda: 0x2dc1, 0x1edb: 0x8fb5, 0x1edc: 0x2dc9, 0x1edd: 0x8fd5, -+ 0x1ede: 0x2dd1, 0x1edf: 0x2040, 0x1ee0: 0x2dd9, 0x1ee1: 0x2de1, 0x1ee2: 0x2de9, 0x1ee3: 0x8ff5, -+ 0x1ee4: 0x2df1, 0x1ee5: 0x2df9, 0x1ee6: 0x9015, 0x1ee7: 0x9035, 0x1ee8: 0x2e01, 0x1ee9: 0x2e09, -+ 0x1eea: 0x2e11, 0x1eeb: 0x2e19, 0x1eec: 0x2e21, 0x1eed: 0x2e21, 0x1eee: 0x2e29, 0x1eef: 0x2e31, -+ 0x1ef0: 0x2e39, 0x1ef1: 0x2e41, 0x1ef2: 0x2e49, 0x1ef3: 0x2e51, 0x1ef4: 0x2e59, 0x1ef5: 0x9055, -+ 0x1ef6: 0x2e61, 0x1ef7: 0x9075, 0x1ef8: 0x2e69, 0x1ef9: 0x9095, 0x1efa: 0x2e71, 0x1efb: 0x90b5, -+ 0x1efc: 0x90d5, 0x1efd: 0x90f5, 0x1efe: 0x2e79, 0x1eff: 0x2e81, - // Block 0x7c, offset 0x1f00 -- 0x1f00: 0xe601, 0x1f01: 0xe621, 0x1f02: 0xe641, 0x1f03: 0xe661, 0x1f04: 0xe681, 0x1f05: 0xe6a1, -- 0x1f06: 0x8f35, 0x1f07: 0xe6c1, 0x1f08: 0xe6e1, 0x1f09: 0xe701, 0x1f0a: 0xe721, 0x1f0b: 0xe741, -- 0x1f0c: 0xe761, 0x1f0d: 0x8f55, 0x1f0e: 0xe781, 0x1f0f: 0xe7a1, 0x1f10: 0x8f75, 0x1f11: 0x8f95, -- 0x1f12: 0xe7c1, 0x1f13: 0xe7e1, 0x1f14: 0xe801, 0x1f15: 0xe821, 0x1f16: 0xe841, 0x1f17: 0xe861, -- 0x1f18: 0xe881, 0x1f19: 0xe8a1, 0x1f1a: 0xe8c1, 0x1f1b: 0x8fb5, 0x1f1c: 0xe8e1, 0x1f1d: 0x8fd5, -- 0x1f1e: 0xe901, 0x1f1f: 0x2040, 0x1f20: 0xe921, 0x1f21: 0xe941, 0x1f22: 0xe961, 0x1f23: 0x8ff5, -- 0x1f24: 0xe981, 0x1f25: 0xe9a1, 0x1f26: 0x9015, 0x1f27: 0x9035, 0x1f28: 0xe9c1, 0x1f29: 0xe9e1, -- 0x1f2a: 0xea01, 0x1f2b: 0xea21, 0x1f2c: 0xea41, 0x1f2d: 0xea41, 0x1f2e: 0xea61, 0x1f2f: 0xea81, -- 0x1f30: 0xeaa1, 0x1f31: 0xeac1, 0x1f32: 0xeae1, 0x1f33: 0xeb01, 0x1f34: 0xeb21, 0x1f35: 0x9055, -- 0x1f36: 0xeb41, 0x1f37: 0x9075, 0x1f38: 0xeb61, 0x1f39: 0x9095, 0x1f3a: 0xeb81, 0x1f3b: 0x90b5, -- 0x1f3c: 0x90d5, 0x1f3d: 0x90f5, 0x1f3e: 0xeba1, 0x1f3f: 0xebc1, -+ 0x1f00: 0x2e89, 0x1f01: 0x9115, 0x1f02: 0x9135, 0x1f03: 0x9155, 0x1f04: 0x9175, 0x1f05: 0x2e91, -+ 0x1f06: 0x2e99, 0x1f07: 0x2e99, 0x1f08: 0x2ea1, 0x1f09: 0x2ea9, 0x1f0a: 0x2eb1, 0x1f0b: 0x2eb9, -+ 0x1f0c: 0x2ec1, 0x1f0d: 0x9195, 0x1f0e: 0x2ec9, 0x1f0f: 0x2ed1, 0x1f10: 0x2ed9, 0x1f11: 0x2ee1, -+ 0x1f12: 0x91b5, 0x1f13: 0x2ee9, 0x1f14: 0x91d5, 0x1f15: 0x91f5, 0x1f16: 0x2ef1, 0x1f17: 0x2ef9, -+ 0x1f18: 0x2f01, 0x1f19: 0x2f09, 0x1f1a: 0x2f11, 0x1f1b: 0x2f19, 0x1f1c: 0x9215, 0x1f1d: 0x9235, -+ 0x1f1e: 0x9255, 0x1f1f: 0x2040, 0x1f20: 0x2f21, 0x1f21: 0x9275, 0x1f22: 0x2f29, 0x1f23: 0x2f31, -+ 0x1f24: 0x2f39, 0x1f25: 0x9295, 0x1f26: 0x2f41, 0x1f27: 0x2f49, 0x1f28: 0x2f51, 0x1f29: 0x2f59, -+ 0x1f2a: 0x2f61, 0x1f2b: 0x92b5, 0x1f2c: 0x2f69, 0x1f2d: 0x2f71, 0x1f2e: 0x2f79, 0x1f2f: 0x2f81, -+ 0x1f30: 0x2f89, 0x1f31: 0x2f91, 0x1f32: 0x92d5, 0x1f33: 0x92f5, 0x1f34: 0x2f99, 0x1f35: 0x9315, -+ 0x1f36: 0x2fa1, 0x1f37: 0x9335, 0x1f38: 0x2fa9, 0x1f39: 0x2fb1, 0x1f3a: 0x2fb9, 0x1f3b: 0x9355, -+ 0x1f3c: 0x9375, 0x1f3d: 0x2fc1, 0x1f3e: 0x9395, 0x1f3f: 0x2fc9, - // Block 0x7d, offset 0x1f40 -- 0x1f40: 0xebe1, 0x1f41: 0x9115, 0x1f42: 0x9135, 0x1f43: 0x9155, 0x1f44: 0x9175, 0x1f45: 0xec01, -- 0x1f46: 0xec21, 0x1f47: 0xec21, 0x1f48: 0xec41, 0x1f49: 0xec61, 0x1f4a: 0xec81, 0x1f4b: 0xeca1, -- 0x1f4c: 0xecc1, 0x1f4d: 0x9195, 0x1f4e: 0xece1, 0x1f4f: 0xed01, 0x1f50: 0xed21, 0x1f51: 0xed41, -- 0x1f52: 0x91b5, 0x1f53: 0xed61, 0x1f54: 0x91d5, 0x1f55: 0x91f5, 0x1f56: 0xed81, 0x1f57: 0xeda1, -- 0x1f58: 0xedc1, 0x1f59: 0xede1, 0x1f5a: 0xee01, 0x1f5b: 0xee21, 0x1f5c: 0x9215, 0x1f5d: 0x9235, -- 0x1f5e: 0x9255, 0x1f5f: 0x2040, 0x1f60: 0xee41, 0x1f61: 0x9275, 0x1f62: 0xee61, 0x1f63: 0xee81, -- 0x1f64: 0xeea1, 0x1f65: 0x9295, 0x1f66: 0xeec1, 0x1f67: 0xeee1, 0x1f68: 0xef01, 0x1f69: 0xef21, -- 0x1f6a: 0xef41, 0x1f6b: 0x92b5, 0x1f6c: 0xef61, 0x1f6d: 0xef81, 0x1f6e: 0xefa1, 0x1f6f: 0xefc1, -- 0x1f70: 0xefe1, 0x1f71: 0xf001, 0x1f72: 0x92d5, 0x1f73: 0x92f5, 0x1f74: 0xf021, 0x1f75: 0x9315, -- 0x1f76: 0xf041, 0x1f77: 0x9335, 0x1f78: 0xf061, 0x1f79: 0xf081, 0x1f7a: 0xf0a1, 0x1f7b: 0x9355, -- 0x1f7c: 0x9375, 0x1f7d: 0xf0c1, 0x1f7e: 0x9395, 0x1f7f: 0xf0e1, -+ 0x1f40: 0x93b5, 0x1f41: 0x2fd1, 0x1f42: 0x2fd9, 0x1f43: 0x2fe1, 0x1f44: 0x2fe9, 0x1f45: 0x2ff1, -+ 0x1f46: 0x2ff9, 0x1f47: 0x93d5, 0x1f48: 0x93f5, 0x1f49: 0x9415, 0x1f4a: 0x9435, 0x1f4b: 0x2a29, -+ 0x1f4c: 0x3001, 0x1f4d: 0x3009, 0x1f4e: 0x3011, 0x1f4f: 0x3019, 0x1f50: 0x3021, 0x1f51: 0x3029, -+ 0x1f52: 0x3031, 0x1f53: 0x3039, 0x1f54: 0x3041, 0x1f55: 0x3049, 0x1f56: 0x3051, 0x1f57: 0x9455, -+ 0x1f58: 0x3059, 0x1f59: 0x3061, 0x1f5a: 0x3069, 0x1f5b: 0x3071, 0x1f5c: 0x3079, 0x1f5d: 0x3081, -+ 0x1f5e: 0x3089, 0x1f5f: 0x3091, 0x1f60: 0x3099, 0x1f61: 0x30a1, 0x1f62: 0x30a9, 0x1f63: 0x30b1, -+ 0x1f64: 0x9475, 0x1f65: 0x9495, 0x1f66: 0x94b5, 0x1f67: 0x30b9, 0x1f68: 0x30c1, 0x1f69: 0x30c9, -+ 0x1f6a: 0x30d1, 0x1f6b: 0x94d5, 0x1f6c: 0x30d9, 0x1f6d: 0x94f5, 0x1f6e: 0x30e1, 0x1f6f: 0x30e9, -+ 0x1f70: 0x9515, 0x1f71: 0x9535, 0x1f72: 0x30f1, 0x1f73: 0x30f9, 0x1f74: 0x3101, 0x1f75: 0x3109, -+ 0x1f76: 0x3111, 0x1f77: 0x3119, 0x1f78: 0x3121, 0x1f79: 0x3129, 0x1f7a: 0x3131, 0x1f7b: 0x3139, -+ 0x1f7c: 0x3141, 0x1f7d: 0x3149, 0x1f7e: 0x3151, 0x1f7f: 0x2040, - // Block 0x7e, offset 0x1f80 -- 0x1f80: 0xf721, 0x1f81: 0xf741, 0x1f82: 0xf761, 0x1f83: 0xf781, 0x1f84: 0xf7a1, 0x1f85: 0x9555, -- 0x1f86: 0xf7c1, 0x1f87: 0xf7e1, 0x1f88: 0xf801, 0x1f89: 0xf821, 0x1f8a: 0xf841, 0x1f8b: 0x9575, -- 0x1f8c: 0x9595, 0x1f8d: 0xf861, 0x1f8e: 0xf881, 0x1f8f: 0xf8a1, 0x1f90: 0xf8c1, 0x1f91: 0xf8e1, -- 0x1f92: 0xf901, 0x1f93: 0x95b5, 0x1f94: 0xf921, 0x1f95: 0xf941, 0x1f96: 0xf961, 0x1f97: 0xf981, -- 0x1f98: 0x95d5, 0x1f99: 0x95f5, 0x1f9a: 0xf9a1, 0x1f9b: 0xf9c1, 0x1f9c: 0xf9e1, 0x1f9d: 0x9615, -- 0x1f9e: 0xfa01, 0x1f9f: 0xfa21, 0x1fa0: 0x684d, 0x1fa1: 0x9635, 0x1fa2: 0xfa41, 0x1fa3: 0xfa61, -- 0x1fa4: 0xfa81, 0x1fa5: 0x9655, 0x1fa6: 0xfaa1, 0x1fa7: 0xfac1, 0x1fa8: 0xfae1, 0x1fa9: 0xfb01, -- 0x1faa: 0xfb21, 0x1fab: 0xfb41, 0x1fac: 0xfb61, 0x1fad: 0x9675, 0x1fae: 0xfb81, 0x1faf: 0xfba1, -- 0x1fb0: 0xfbc1, 0x1fb1: 0x9695, 0x1fb2: 0xfbe1, 0x1fb3: 0xfc01, 0x1fb4: 0xfc21, 0x1fb5: 0xfc41, -- 0x1fb6: 0x7b6d, 0x1fb7: 0x96b5, 0x1fb8: 0xfc61, 0x1fb9: 0xfc81, 0x1fba: 0xfca1, 0x1fbb: 0x96d5, -- 0x1fbc: 0xfcc1, 0x1fbd: 0x96f5, 0x1fbe: 0xfce1, 0x1fbf: 0xfce1, -+ 0x1f80: 0x3159, 0x1f81: 0x3161, 0x1f82: 0x3169, 0x1f83: 0x3171, 0x1f84: 0x3179, 0x1f85: 0x9555, -+ 0x1f86: 0x3181, 0x1f87: 0x3189, 0x1f88: 0x3191, 0x1f89: 0x3199, 0x1f8a: 0x31a1, 0x1f8b: 0x9575, -+ 0x1f8c: 0x9595, 0x1f8d: 0x31a9, 0x1f8e: 0x31b1, 0x1f8f: 0x31b9, 0x1f90: 0x31c1, 0x1f91: 0x31c9, -+ 0x1f92: 0x31d1, 0x1f93: 0x95b5, 0x1f94: 0x31d9, 0x1f95: 0x31e1, 0x1f96: 0x31e9, 0x1f97: 0x31f1, -+ 0x1f98: 0x95d5, 0x1f99: 0x95f5, 0x1f9a: 0x31f9, 0x1f9b: 0x3201, 0x1f9c: 0x3209, 0x1f9d: 0x9615, -+ 0x1f9e: 0x3211, 0x1f9f: 0x3219, 0x1fa0: 0x684d, 0x1fa1: 0x9635, 0x1fa2: 0x3221, 0x1fa3: 0x3229, -+ 0x1fa4: 0x3231, 0x1fa5: 0x9655, 0x1fa6: 0x3239, 0x1fa7: 0x3241, 0x1fa8: 0x3249, 0x1fa9: 0x3251, -+ 0x1faa: 0x3259, 0x1fab: 0x3261, 0x1fac: 0x3269, 0x1fad: 0x9675, 0x1fae: 0x3271, 0x1faf: 0x3279, -+ 0x1fb0: 0x3281, 0x1fb1: 0x9695, 0x1fb2: 0x3289, 0x1fb3: 0x3291, 0x1fb4: 0x3299, 0x1fb5: 0x32a1, -+ 0x1fb6: 0x7b6d, 0x1fb7: 0x96b5, 0x1fb8: 0x32a9, 0x1fb9: 0x32b1, 0x1fba: 0x32b9, 0x1fbb: 0x96d5, -+ 0x1fbc: 0x32c1, 0x1fbd: 0x96f5, 0x1fbe: 0x32c9, 0x1fbf: 0x32c9, - // Block 0x7f, offset 0x1fc0 -- 0x1fc0: 0xfd01, 0x1fc1: 0x9715, 0x1fc2: 0xfd21, 0x1fc3: 0xfd41, 0x1fc4: 0xfd61, 0x1fc5: 0xfd81, -- 0x1fc6: 0xfda1, 0x1fc7: 0xfdc1, 0x1fc8: 0xfde1, 0x1fc9: 0x9735, 0x1fca: 0xfe01, 0x1fcb: 0xfe21, -- 0x1fcc: 0xfe41, 0x1fcd: 0xfe61, 0x1fce: 0xfe81, 0x1fcf: 0xfea1, 0x1fd0: 0x9755, 0x1fd1: 0xfec1, -- 0x1fd2: 0x9775, 0x1fd3: 0x9795, 0x1fd4: 0x97b5, 0x1fd5: 0xfee1, 0x1fd6: 0xff01, 0x1fd7: 0xff21, -- 0x1fd8: 0xff41, 0x1fd9: 0xff61, 0x1fda: 0xff81, 0x1fdb: 0xffa1, 0x1fdc: 0xffc1, 0x1fdd: 0x97d5, -+ 0x1fc0: 0x32d1, 0x1fc1: 0x9715, 0x1fc2: 0x32d9, 0x1fc3: 0x32e1, 0x1fc4: 0x32e9, 0x1fc5: 0x32f1, -+ 0x1fc6: 0x32f9, 0x1fc7: 0x3301, 0x1fc8: 0x3309, 0x1fc9: 0x9735, 0x1fca: 0x3311, 0x1fcb: 0x3319, -+ 0x1fcc: 0x3321, 0x1fcd: 0x3329, 0x1fce: 0x3331, 0x1fcf: 0x3339, 0x1fd0: 0x9755, 0x1fd1: 0x3341, -+ 0x1fd2: 0x9775, 0x1fd3: 0x9795, 0x1fd4: 0x97b5, 0x1fd5: 0x3349, 0x1fd6: 0x3351, 0x1fd7: 0x3359, -+ 0x1fd8: 0x3361, 0x1fd9: 0x3369, 0x1fda: 0x3371, 0x1fdb: 0x3379, 0x1fdc: 0x3381, 0x1fdd: 0x97d5, - 0x1fde: 0x0040, 0x1fdf: 0x0040, 0x1fe0: 0x0040, 0x1fe1: 0x0040, 0x1fe2: 0x0040, 0x1fe3: 0x0040, - 0x1fe4: 0x0040, 0x1fe5: 0x0040, 0x1fe6: 0x0040, 0x1fe7: 0x0040, 0x1fe8: 0x0040, 0x1fe9: 0x0040, - 0x1fea: 0x0040, 0x1feb: 0x0040, 0x1fec: 0x0040, 0x1fed: 0x0040, 0x1fee: 0x0040, 0x1fef: 0x0040, -@@ -2134,7 +2277,7 @@ var idnaIndex = [2368]uint16{ - 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, -+ 0x1c8: 0xe2, 0x1c9: 0x3b, 0x1ca: 0x3c, 0x1cb: 0x3d, 0x1cc: 0xe3, 0x1cd: 0xe4, 0x1ce: 0x3e, 0x1cf: 0x3f, - 0x1d0: 0xa0, 0x1d1: 0xa0, 0x1d2: 0xa0, 0x1d3: 0xa0, 0x1d4: 0xa0, 0x1d5: 0xa0, 0x1d6: 0xa0, 0x1d7: 0xa0, - 0x1d8: 0xa0, 0x1d9: 0xa0, 0x1da: 0xa0, 0x1db: 0xa0, 0x1dc: 0xa0, 0x1dd: 0xa0, 0x1de: 0xa0, 0x1df: 0xa0, - 0x1e0: 0xa0, 0x1e1: 0xa0, 0x1e2: 0xa0, 0x1e3: 0xa0, 0x1e4: 0xa0, 0x1e5: 0xa0, 0x1e6: 0xa0, 0x1e7: 0xa0, -@@ -2167,143 +2310,143 @@ var idnaIndex = [2368]uint16{ - 0x2a0: 0xa0, 0x2a1: 0xa0, 0x2a2: 0xa0, 0x2a3: 0xa0, 0x2a4: 0xa0, 0x2a5: 0xa0, 0x2a6: 0xa0, 0x2a7: 0xa0, - 0x2a8: 0xa0, 0x2a9: 0xa0, 0x2aa: 0xa0, 0x2ab: 0xa0, 0x2ac: 0xa0, 0x2ad: 0xa0, 0x2ae: 0xa0, 0x2af: 0xa0, - 0x2b0: 0xa0, 0x2b1: 0xa0, 0x2b2: 0xa0, 0x2b3: 0xa0, 0x2b4: 0xa0, 0x2b5: 0xa0, 0x2b6: 0xa0, 0x2b7: 0xa0, -- 0x2b8: 0xa0, 0x2b9: 0xa0, 0x2ba: 0xa0, 0x2bb: 0xa0, 0x2bc: 0xa0, 0x2bd: 0xa0, 0x2be: 0xa0, 0x2bf: 0xe3, -+ 0x2b8: 0xa0, 0x2b9: 0xa0, 0x2ba: 0xa0, 0x2bb: 0xa0, 0x2bc: 0xa0, 0x2bd: 0xa0, 0x2be: 0xa0, 0x2bf: 0xe5, - // Block 0xb, offset 0x2c0 - 0x2c0: 0xa0, 0x2c1: 0xa0, 0x2c2: 0xa0, 0x2c3: 0xa0, 0x2c4: 0xa0, 0x2c5: 0xa0, 0x2c6: 0xa0, 0x2c7: 0xa0, - 0x2c8: 0xa0, 0x2c9: 0xa0, 0x2ca: 0xa0, 0x2cb: 0xa0, 0x2cc: 0xa0, 0x2cd: 0xa0, 0x2ce: 0xa0, 0x2cf: 0xa0, -- 0x2d0: 0xa0, 0x2d1: 0xa0, 0x2d2: 0xe4, 0x2d3: 0xe5, 0x2d4: 0xa0, 0x2d5: 0xa0, 0x2d6: 0xa0, 0x2d7: 0xa0, -- 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, -+ 0x2d0: 0xa0, 0x2d1: 0xa0, 0x2d2: 0xe6, 0x2d3: 0xe7, 0x2d4: 0xa0, 0x2d5: 0xa0, 0x2d6: 0xa0, 0x2d7: 0xa0, -+ 0x2d8: 0xe8, 0x2d9: 0x40, 0x2da: 0x41, 0x2db: 0xe9, 0x2dc: 0x42, 0x2dd: 0x43, 0x2de: 0x44, 0x2df: 0xea, -+ 0x2e0: 0xeb, 0x2e1: 0xec, 0x2e2: 0xed, 0x2e3: 0xee, 0x2e4: 0xef, 0x2e5: 0xf0, 0x2e6: 0xf1, 0x2e7: 0xf2, -+ 0x2e8: 0xf3, 0x2e9: 0xf4, 0x2ea: 0xf5, 0x2eb: 0xf6, 0x2ec: 0xf7, 0x2ed: 0xf8, 0x2ee: 0xf9, 0x2ef: 0xfa, - 0x2f0: 0xa0, 0x2f1: 0xa0, 0x2f2: 0xa0, 0x2f3: 0xa0, 0x2f4: 0xa0, 0x2f5: 0xa0, 0x2f6: 0xa0, 0x2f7: 0xa0, - 0x2f8: 0xa0, 0x2f9: 0xa0, 0x2fa: 0xa0, 0x2fb: 0xa0, 0x2fc: 0xa0, 0x2fd: 0xa0, 0x2fe: 0xa0, 0x2ff: 0xa0, - // Block 0xc, offset 0x300 - 0x300: 0xa0, 0x301: 0xa0, 0x302: 0xa0, 0x303: 0xa0, 0x304: 0xa0, 0x305: 0xa0, 0x306: 0xa0, 0x307: 0xa0, - 0x308: 0xa0, 0x309: 0xa0, 0x30a: 0xa0, 0x30b: 0xa0, 0x30c: 0xa0, 0x30d: 0xa0, 0x30e: 0xa0, 0x30f: 0xa0, - 0x310: 0xa0, 0x311: 0xa0, 0x312: 0xa0, 0x313: 0xa0, 0x314: 0xa0, 0x315: 0xa0, 0x316: 0xa0, 0x317: 0xa0, -- 0x318: 0xa0, 0x319: 0xa0, 0x31a: 0xa0, 0x31b: 0xa0, 0x31c: 0xa0, 0x31d: 0xa0, 0x31e: 0xf9, 0x31f: 0xfa, -+ 0x318: 0xa0, 0x319: 0xa0, 0x31a: 0xa0, 0x31b: 0xa0, 0x31c: 0xa0, 0x31d: 0xa0, 0x31e: 0xfb, 0x31f: 0xfc, - // Block 0xd, offset 0x340 -- 0x340: 0xfb, 0x341: 0xfb, 0x342: 0xfb, 0x343: 0xfb, 0x344: 0xfb, 0x345: 0xfb, 0x346: 0xfb, 0x347: 0xfb, -- 0x348: 0xfb, 0x349: 0xfb, 0x34a: 0xfb, 0x34b: 0xfb, 0x34c: 0xfb, 0x34d: 0xfb, 0x34e: 0xfb, 0x34f: 0xfb, -- 0x350: 0xfb, 0x351: 0xfb, 0x352: 0xfb, 0x353: 0xfb, 0x354: 0xfb, 0x355: 0xfb, 0x356: 0xfb, 0x357: 0xfb, -- 0x358: 0xfb, 0x359: 0xfb, 0x35a: 0xfb, 0x35b: 0xfb, 0x35c: 0xfb, 0x35d: 0xfb, 0x35e: 0xfb, 0x35f: 0xfb, -- 0x360: 0xfb, 0x361: 0xfb, 0x362: 0xfb, 0x363: 0xfb, 0x364: 0xfb, 0x365: 0xfb, 0x366: 0xfb, 0x367: 0xfb, -- 0x368: 0xfb, 0x369: 0xfb, 0x36a: 0xfb, 0x36b: 0xfb, 0x36c: 0xfb, 0x36d: 0xfb, 0x36e: 0xfb, 0x36f: 0xfb, -- 0x370: 0xfb, 0x371: 0xfb, 0x372: 0xfb, 0x373: 0xfb, 0x374: 0xfb, 0x375: 0xfb, 0x376: 0xfb, 0x377: 0xfb, -- 0x378: 0xfb, 0x379: 0xfb, 0x37a: 0xfb, 0x37b: 0xfb, 0x37c: 0xfb, 0x37d: 0xfb, 0x37e: 0xfb, 0x37f: 0xfb, -+ 0x340: 0xfd, 0x341: 0xfd, 0x342: 0xfd, 0x343: 0xfd, 0x344: 0xfd, 0x345: 0xfd, 0x346: 0xfd, 0x347: 0xfd, -+ 0x348: 0xfd, 0x349: 0xfd, 0x34a: 0xfd, 0x34b: 0xfd, 0x34c: 0xfd, 0x34d: 0xfd, 0x34e: 0xfd, 0x34f: 0xfd, -+ 0x350: 0xfd, 0x351: 0xfd, 0x352: 0xfd, 0x353: 0xfd, 0x354: 0xfd, 0x355: 0xfd, 0x356: 0xfd, 0x357: 0xfd, -+ 0x358: 0xfd, 0x359: 0xfd, 0x35a: 0xfd, 0x35b: 0xfd, 0x35c: 0xfd, 0x35d: 0xfd, 0x35e: 0xfd, 0x35f: 0xfd, -+ 0x360: 0xfd, 0x361: 0xfd, 0x362: 0xfd, 0x363: 0xfd, 0x364: 0xfd, 0x365: 0xfd, 0x366: 0xfd, 0x367: 0xfd, -+ 0x368: 0xfd, 0x369: 0xfd, 0x36a: 0xfd, 0x36b: 0xfd, 0x36c: 0xfd, 0x36d: 0xfd, 0x36e: 0xfd, 0x36f: 0xfd, -+ 0x370: 0xfd, 0x371: 0xfd, 0x372: 0xfd, 0x373: 0xfd, 0x374: 0xfd, 0x375: 0xfd, 0x376: 0xfd, 0x377: 0xfd, -+ 0x378: 0xfd, 0x379: 0xfd, 0x37a: 0xfd, 0x37b: 0xfd, 0x37c: 0xfd, 0x37d: 0xfd, 0x37e: 0xfd, 0x37f: 0xfd, - // Block 0xe, offset 0x380 -- 0x380: 0xfb, 0x381: 0xfb, 0x382: 0xfb, 0x383: 0xfb, 0x384: 0xfb, 0x385: 0xfb, 0x386: 0xfb, 0x387: 0xfb, -- 0x388: 0xfb, 0x389: 0xfb, 0x38a: 0xfb, 0x38b: 0xfb, 0x38c: 0xfb, 0x38d: 0xfb, 0x38e: 0xfb, 0x38f: 0xfb, -- 0x390: 0xfb, 0x391: 0xfb, 0x392: 0xfb, 0x393: 0xfb, 0x394: 0xfb, 0x395: 0xfb, 0x396: 0xfb, 0x397: 0xfb, -- 0x398: 0xfb, 0x399: 0xfb, 0x39a: 0xfb, 0x39b: 0xfb, 0x39c: 0xfb, 0x39d: 0xfb, 0x39e: 0xfb, 0x39f: 0xfb, -- 0x3a0: 0xfb, 0x3a1: 0xfb, 0x3a2: 0xfb, 0x3a3: 0xfb, 0x3a4: 0xfc, 0x3a5: 0xfd, 0x3a6: 0xfe, 0x3a7: 0xff, -- 0x3a8: 0x47, 0x3a9: 0x100, 0x3aa: 0x101, 0x3ab: 0x48, 0x3ac: 0x49, 0x3ad: 0x4a, 0x3ae: 0x4b, 0x3af: 0x4c, -- 0x3b0: 0x102, 0x3b1: 0x4d, 0x3b2: 0x4e, 0x3b3: 0x4f, 0x3b4: 0x50, 0x3b5: 0x51, 0x3b6: 0x103, 0x3b7: 0x52, -- 0x3b8: 0x53, 0x3b9: 0x54, 0x3ba: 0x55, 0x3bb: 0x56, 0x3bc: 0x57, 0x3bd: 0x58, 0x3be: 0x59, 0x3bf: 0x5a, -+ 0x380: 0xfd, 0x381: 0xfd, 0x382: 0xfd, 0x383: 0xfd, 0x384: 0xfd, 0x385: 0xfd, 0x386: 0xfd, 0x387: 0xfd, -+ 0x388: 0xfd, 0x389: 0xfd, 0x38a: 0xfd, 0x38b: 0xfd, 0x38c: 0xfd, 0x38d: 0xfd, 0x38e: 0xfd, 0x38f: 0xfd, -+ 0x390: 0xfd, 0x391: 0xfd, 0x392: 0xfd, 0x393: 0xfd, 0x394: 0xfd, 0x395: 0xfd, 0x396: 0xfd, 0x397: 0xfd, -+ 0x398: 0xfd, 0x399: 0xfd, 0x39a: 0xfd, 0x39b: 0xfd, 0x39c: 0xfd, 0x39d: 0xfd, 0x39e: 0xfd, 0x39f: 0xfd, -+ 0x3a0: 0xfd, 0x3a1: 0xfd, 0x3a2: 0xfd, 0x3a3: 0xfd, 0x3a4: 0xfe, 0x3a5: 0xff, 0x3a6: 0x100, 0x3a7: 0x101, -+ 0x3a8: 0x45, 0x3a9: 0x102, 0x3aa: 0x103, 0x3ab: 0x46, 0x3ac: 0x47, 0x3ad: 0x48, 0x3ae: 0x49, 0x3af: 0x4a, -+ 0x3b0: 0x104, 0x3b1: 0x4b, 0x3b2: 0x4c, 0x3b3: 0x4d, 0x3b4: 0x4e, 0x3b5: 0x4f, 0x3b6: 0x105, 0x3b7: 0x50, -+ 0x3b8: 0x51, 0x3b9: 0x52, 0x3ba: 0x53, 0x3bb: 0x54, 0x3bc: 0x55, 0x3bd: 0x56, 0x3be: 0x57, 0x3bf: 0x58, - // Block 0xf, offset 0x3c0 -- 0x3c0: 0x104, 0x3c1: 0x105, 0x3c2: 0xa0, 0x3c3: 0x106, 0x3c4: 0x107, 0x3c5: 0x9c, 0x3c6: 0x108, 0x3c7: 0x109, -- 0x3c8: 0xfb, 0x3c9: 0xfb, 0x3ca: 0x10a, 0x3cb: 0x10b, 0x3cc: 0x10c, 0x3cd: 0x10d, 0x3ce: 0x10e, 0x3cf: 0x10f, -- 0x3d0: 0x110, 0x3d1: 0xa0, 0x3d2: 0x111, 0x3d3: 0x112, 0x3d4: 0x113, 0x3d5: 0x114, 0x3d6: 0xfb, 0x3d7: 0xfb, -- 0x3d8: 0xa0, 0x3d9: 0xa0, 0x3da: 0xa0, 0x3db: 0xa0, 0x3dc: 0x115, 0x3dd: 0x116, 0x3de: 0xfb, 0x3df: 0xfb, -- 0x3e0: 0x117, 0x3e1: 0x118, 0x3e2: 0x119, 0x3e3: 0x11a, 0x3e4: 0x11b, 0x3e5: 0xfb, 0x3e6: 0x11c, 0x3e7: 0x11d, -- 0x3e8: 0x11e, 0x3e9: 0x11f, 0x3ea: 0x120, 0x3eb: 0x5b, 0x3ec: 0x121, 0x3ed: 0x122, 0x3ee: 0x5c, 0x3ef: 0xfb, -- 0x3f0: 0x123, 0x3f1: 0x124, 0x3f2: 0x125, 0x3f3: 0x126, 0x3f4: 0x127, 0x3f5: 0xfb, 0x3f6: 0xfb, 0x3f7: 0xfb, -- 0x3f8: 0xfb, 0x3f9: 0x128, 0x3fa: 0x129, 0x3fb: 0xfb, 0x3fc: 0x12a, 0x3fd: 0x12b, 0x3fe: 0x12c, 0x3ff: 0x12d, -+ 0x3c0: 0x106, 0x3c1: 0x107, 0x3c2: 0xa0, 0x3c3: 0x108, 0x3c4: 0x109, 0x3c5: 0x9c, 0x3c6: 0x10a, 0x3c7: 0x10b, -+ 0x3c8: 0xfd, 0x3c9: 0xfd, 0x3ca: 0x10c, 0x3cb: 0x10d, 0x3cc: 0x10e, 0x3cd: 0x10f, 0x3ce: 0x110, 0x3cf: 0x111, -+ 0x3d0: 0x112, 0x3d1: 0xa0, 0x3d2: 0x113, 0x3d3: 0x114, 0x3d4: 0x115, 0x3d5: 0x116, 0x3d6: 0xfd, 0x3d7: 0xfd, -+ 0x3d8: 0xa0, 0x3d9: 0xa0, 0x3da: 0xa0, 0x3db: 0xa0, 0x3dc: 0x117, 0x3dd: 0x118, 0x3de: 0xfd, 0x3df: 0xfd, -+ 0x3e0: 0x119, 0x3e1: 0x11a, 0x3e2: 0x11b, 0x3e3: 0x11c, 0x3e4: 0x11d, 0x3e5: 0xfd, 0x3e6: 0x11e, 0x3e7: 0x11f, -+ 0x3e8: 0x120, 0x3e9: 0x121, 0x3ea: 0x122, 0x3eb: 0x59, 0x3ec: 0x123, 0x3ed: 0x124, 0x3ee: 0x5a, 0x3ef: 0xfd, -+ 0x3f0: 0x125, 0x3f1: 0x126, 0x3f2: 0x127, 0x3f3: 0x128, 0x3f4: 0x129, 0x3f5: 0xfd, 0x3f6: 0xfd, 0x3f7: 0xfd, -+ 0x3f8: 0xfd, 0x3f9: 0x12a, 0x3fa: 0x12b, 0x3fb: 0xfd, 0x3fc: 0x12c, 0x3fd: 0x12d, 0x3fe: 0x12e, 0x3ff: 0x12f, - // Block 0x10, offset 0x400 -- 0x400: 0x12e, 0x401: 0x12f, 0x402: 0x130, 0x403: 0x131, 0x404: 0x132, 0x405: 0x133, 0x406: 0x134, 0x407: 0x135, -- 0x408: 0x136, 0x409: 0xfb, 0x40a: 0x137, 0x40b: 0x138, 0x40c: 0x5d, 0x40d: 0x5e, 0x40e: 0xfb, 0x40f: 0xfb, -- 0x410: 0x139, 0x411: 0x13a, 0x412: 0x13b, 0x413: 0x13c, 0x414: 0xfb, 0x415: 0xfb, 0x416: 0x13d, 0x417: 0x13e, -- 0x418: 0x13f, 0x419: 0x140, 0x41a: 0x141, 0x41b: 0x142, 0x41c: 0x143, 0x41d: 0xfb, 0x41e: 0xfb, 0x41f: 0xfb, -- 0x420: 0x144, 0x421: 0xfb, 0x422: 0x145, 0x423: 0x146, 0x424: 0x5f, 0x425: 0x147, 0x426: 0x148, 0x427: 0x149, -- 0x428: 0x14a, 0x429: 0x14b, 0x42a: 0x14c, 0x42b: 0x14d, 0x42c: 0xfb, 0x42d: 0xfb, 0x42e: 0xfb, 0x42f: 0xfb, -- 0x430: 0x14e, 0x431: 0x14f, 0x432: 0x150, 0x433: 0xfb, 0x434: 0x151, 0x435: 0x152, 0x436: 0x153, 0x437: 0xfb, -- 0x438: 0xfb, 0x439: 0xfb, 0x43a: 0xfb, 0x43b: 0x154, 0x43c: 0xfb, 0x43d: 0xfb, 0x43e: 0x155, 0x43f: 0x156, -+ 0x400: 0x130, 0x401: 0x131, 0x402: 0x132, 0x403: 0x133, 0x404: 0x134, 0x405: 0x135, 0x406: 0x136, 0x407: 0x137, -+ 0x408: 0x138, 0x409: 0xfd, 0x40a: 0x139, 0x40b: 0x13a, 0x40c: 0x5b, 0x40d: 0x5c, 0x40e: 0xfd, 0x40f: 0xfd, -+ 0x410: 0x13b, 0x411: 0x13c, 0x412: 0x13d, 0x413: 0x13e, 0x414: 0xfd, 0x415: 0xfd, 0x416: 0x13f, 0x417: 0x140, -+ 0x418: 0x141, 0x419: 0x142, 0x41a: 0x143, 0x41b: 0x144, 0x41c: 0x145, 0x41d: 0xfd, 0x41e: 0xfd, 0x41f: 0xfd, -+ 0x420: 0x146, 0x421: 0xfd, 0x422: 0x147, 0x423: 0x148, 0x424: 0x5d, 0x425: 0x149, 0x426: 0x14a, 0x427: 0x14b, -+ 0x428: 0x14c, 0x429: 0x14d, 0x42a: 0x14e, 0x42b: 0x14f, 0x42c: 0xfd, 0x42d: 0xfd, 0x42e: 0xfd, 0x42f: 0xfd, -+ 0x430: 0x150, 0x431: 0x151, 0x432: 0x152, 0x433: 0xfd, 0x434: 0x153, 0x435: 0x154, 0x436: 0x155, 0x437: 0xfd, -+ 0x438: 0xfd, 0x439: 0xfd, 0x43a: 0xfd, 0x43b: 0x156, 0x43c: 0xfd, 0x43d: 0xfd, 0x43e: 0x157, 0x43f: 0x158, - // Block 0x11, offset 0x440 - 0x440: 0xa0, 0x441: 0xa0, 0x442: 0xa0, 0x443: 0xa0, 0x444: 0xa0, 0x445: 0xa0, 0x446: 0xa0, 0x447: 0xa0, -- 0x448: 0xa0, 0x449: 0xa0, 0x44a: 0xa0, 0x44b: 0xa0, 0x44c: 0xa0, 0x44d: 0xa0, 0x44e: 0x157, 0x44f: 0xfb, -- 0x450: 0x9c, 0x451: 0x158, 0x452: 0xa0, 0x453: 0xa0, 0x454: 0xa0, 0x455: 0x159, 0x456: 0xfb, 0x457: 0xfb, -- 0x458: 0xfb, 0x459: 0xfb, 0x45a: 0xfb, 0x45b: 0xfb, 0x45c: 0xfb, 0x45d: 0xfb, 0x45e: 0xfb, 0x45f: 0xfb, -- 0x460: 0xfb, 0x461: 0xfb, 0x462: 0xfb, 0x463: 0xfb, 0x464: 0xfb, 0x465: 0xfb, 0x466: 0xfb, 0x467: 0xfb, -- 0x468: 0xfb, 0x469: 0xfb, 0x46a: 0xfb, 0x46b: 0xfb, 0x46c: 0xfb, 0x46d: 0xfb, 0x46e: 0xfb, 0x46f: 0xfb, -- 0x470: 0xfb, 0x471: 0xfb, 0x472: 0xfb, 0x473: 0xfb, 0x474: 0xfb, 0x475: 0xfb, 0x476: 0xfb, 0x477: 0xfb, -- 0x478: 0xfb, 0x479: 0xfb, 0x47a: 0xfb, 0x47b: 0xfb, 0x47c: 0xfb, 0x47d: 0xfb, 0x47e: 0xfb, 0x47f: 0xfb, -+ 0x448: 0xa0, 0x449: 0xa0, 0x44a: 0xa0, 0x44b: 0xa0, 0x44c: 0xa0, 0x44d: 0xa0, 0x44e: 0x159, 0x44f: 0xfd, -+ 0x450: 0x9c, 0x451: 0x15a, 0x452: 0xa0, 0x453: 0xa0, 0x454: 0xa0, 0x455: 0x15b, 0x456: 0xfd, 0x457: 0xfd, -+ 0x458: 0xfd, 0x459: 0xfd, 0x45a: 0xfd, 0x45b: 0xfd, 0x45c: 0xfd, 0x45d: 0xfd, 0x45e: 0xfd, 0x45f: 0xfd, -+ 0x460: 0xfd, 0x461: 0xfd, 0x462: 0xfd, 0x463: 0xfd, 0x464: 0xfd, 0x465: 0xfd, 0x466: 0xfd, 0x467: 0xfd, -+ 0x468: 0xfd, 0x469: 0xfd, 0x46a: 0xfd, 0x46b: 0xfd, 0x46c: 0xfd, 0x46d: 0xfd, 0x46e: 0xfd, 0x46f: 0xfd, -+ 0x470: 0xfd, 0x471: 0xfd, 0x472: 0xfd, 0x473: 0xfd, 0x474: 0xfd, 0x475: 0xfd, 0x476: 0xfd, 0x477: 0xfd, -+ 0x478: 0xfd, 0x479: 0xfd, 0x47a: 0xfd, 0x47b: 0xfd, 0x47c: 0xfd, 0x47d: 0xfd, 0x47e: 0xfd, 0x47f: 0xfd, - // Block 0x12, offset 0x480 - 0x480: 0xa0, 0x481: 0xa0, 0x482: 0xa0, 0x483: 0xa0, 0x484: 0xa0, 0x485: 0xa0, 0x486: 0xa0, 0x487: 0xa0, - 0x488: 0xa0, 0x489: 0xa0, 0x48a: 0xa0, 0x48b: 0xa0, 0x48c: 0xa0, 0x48d: 0xa0, 0x48e: 0xa0, 0x48f: 0xa0, -- 0x490: 0x15a, 0x491: 0xfb, 0x492: 0xfb, 0x493: 0xfb, 0x494: 0xfb, 0x495: 0xfb, 0x496: 0xfb, 0x497: 0xfb, -- 0x498: 0xfb, 0x499: 0xfb, 0x49a: 0xfb, 0x49b: 0xfb, 0x49c: 0xfb, 0x49d: 0xfb, 0x49e: 0xfb, 0x49f: 0xfb, -- 0x4a0: 0xfb, 0x4a1: 0xfb, 0x4a2: 0xfb, 0x4a3: 0xfb, 0x4a4: 0xfb, 0x4a5: 0xfb, 0x4a6: 0xfb, 0x4a7: 0xfb, -- 0x4a8: 0xfb, 0x4a9: 0xfb, 0x4aa: 0xfb, 0x4ab: 0xfb, 0x4ac: 0xfb, 0x4ad: 0xfb, 0x4ae: 0xfb, 0x4af: 0xfb, -- 0x4b0: 0xfb, 0x4b1: 0xfb, 0x4b2: 0xfb, 0x4b3: 0xfb, 0x4b4: 0xfb, 0x4b5: 0xfb, 0x4b6: 0xfb, 0x4b7: 0xfb, -- 0x4b8: 0xfb, 0x4b9: 0xfb, 0x4ba: 0xfb, 0x4bb: 0xfb, 0x4bc: 0xfb, 0x4bd: 0xfb, 0x4be: 0xfb, 0x4bf: 0xfb, -+ 0x490: 0x15c, 0x491: 0xfd, 0x492: 0xfd, 0x493: 0xfd, 0x494: 0xfd, 0x495: 0xfd, 0x496: 0xfd, 0x497: 0xfd, -+ 0x498: 0xfd, 0x499: 0xfd, 0x49a: 0xfd, 0x49b: 0xfd, 0x49c: 0xfd, 0x49d: 0xfd, 0x49e: 0xfd, 0x49f: 0xfd, -+ 0x4a0: 0xfd, 0x4a1: 0xfd, 0x4a2: 0xfd, 0x4a3: 0xfd, 0x4a4: 0xfd, 0x4a5: 0xfd, 0x4a6: 0xfd, 0x4a7: 0xfd, -+ 0x4a8: 0xfd, 0x4a9: 0xfd, 0x4aa: 0xfd, 0x4ab: 0xfd, 0x4ac: 0xfd, 0x4ad: 0xfd, 0x4ae: 0xfd, 0x4af: 0xfd, -+ 0x4b0: 0xfd, 0x4b1: 0xfd, 0x4b2: 0xfd, 0x4b3: 0xfd, 0x4b4: 0xfd, 0x4b5: 0xfd, 0x4b6: 0xfd, 0x4b7: 0xfd, -+ 0x4b8: 0xfd, 0x4b9: 0xfd, 0x4ba: 0xfd, 0x4bb: 0xfd, 0x4bc: 0xfd, 0x4bd: 0xfd, 0x4be: 0xfd, 0x4bf: 0xfd, - // Block 0x13, offset 0x4c0 -- 0x4c0: 0xfb, 0x4c1: 0xfb, 0x4c2: 0xfb, 0x4c3: 0xfb, 0x4c4: 0xfb, 0x4c5: 0xfb, 0x4c6: 0xfb, 0x4c7: 0xfb, -- 0x4c8: 0xfb, 0x4c9: 0xfb, 0x4ca: 0xfb, 0x4cb: 0xfb, 0x4cc: 0xfb, 0x4cd: 0xfb, 0x4ce: 0xfb, 0x4cf: 0xfb, -+ 0x4c0: 0xfd, 0x4c1: 0xfd, 0x4c2: 0xfd, 0x4c3: 0xfd, 0x4c4: 0xfd, 0x4c5: 0xfd, 0x4c6: 0xfd, 0x4c7: 0xfd, -+ 0x4c8: 0xfd, 0x4c9: 0xfd, 0x4ca: 0xfd, 0x4cb: 0xfd, 0x4cc: 0xfd, 0x4cd: 0xfd, 0x4ce: 0xfd, 0x4cf: 0xfd, - 0x4d0: 0xa0, 0x4d1: 0xa0, 0x4d2: 0xa0, 0x4d3: 0xa0, 0x4d4: 0xa0, 0x4d5: 0xa0, 0x4d6: 0xa0, 0x4d7: 0xa0, -- 0x4d8: 0xa0, 0x4d9: 0x15b, 0x4da: 0xfb, 0x4db: 0xfb, 0x4dc: 0xfb, 0x4dd: 0xfb, 0x4de: 0xfb, 0x4df: 0xfb, -- 0x4e0: 0xfb, 0x4e1: 0xfb, 0x4e2: 0xfb, 0x4e3: 0xfb, 0x4e4: 0xfb, 0x4e5: 0xfb, 0x4e6: 0xfb, 0x4e7: 0xfb, -- 0x4e8: 0xfb, 0x4e9: 0xfb, 0x4ea: 0xfb, 0x4eb: 0xfb, 0x4ec: 0xfb, 0x4ed: 0xfb, 0x4ee: 0xfb, 0x4ef: 0xfb, -- 0x4f0: 0xfb, 0x4f1: 0xfb, 0x4f2: 0xfb, 0x4f3: 0xfb, 0x4f4: 0xfb, 0x4f5: 0xfb, 0x4f6: 0xfb, 0x4f7: 0xfb, -- 0x4f8: 0xfb, 0x4f9: 0xfb, 0x4fa: 0xfb, 0x4fb: 0xfb, 0x4fc: 0xfb, 0x4fd: 0xfb, 0x4fe: 0xfb, 0x4ff: 0xfb, -+ 0x4d8: 0xa0, 0x4d9: 0x15d, 0x4da: 0xfd, 0x4db: 0xfd, 0x4dc: 0xfd, 0x4dd: 0xfd, 0x4de: 0xfd, 0x4df: 0xfd, -+ 0x4e0: 0xfd, 0x4e1: 0xfd, 0x4e2: 0xfd, 0x4e3: 0xfd, 0x4e4: 0xfd, 0x4e5: 0xfd, 0x4e6: 0xfd, 0x4e7: 0xfd, -+ 0x4e8: 0xfd, 0x4e9: 0xfd, 0x4ea: 0xfd, 0x4eb: 0xfd, 0x4ec: 0xfd, 0x4ed: 0xfd, 0x4ee: 0xfd, 0x4ef: 0xfd, -+ 0x4f0: 0xfd, 0x4f1: 0xfd, 0x4f2: 0xfd, 0x4f3: 0xfd, 0x4f4: 0xfd, 0x4f5: 0xfd, 0x4f6: 0xfd, 0x4f7: 0xfd, -+ 0x4f8: 0xfd, 0x4f9: 0xfd, 0x4fa: 0xfd, 0x4fb: 0xfd, 0x4fc: 0xfd, 0x4fd: 0xfd, 0x4fe: 0xfd, 0x4ff: 0xfd, - // Block 0x14, offset 0x500 -- 0x500: 0xfb, 0x501: 0xfb, 0x502: 0xfb, 0x503: 0xfb, 0x504: 0xfb, 0x505: 0xfb, 0x506: 0xfb, 0x507: 0xfb, -- 0x508: 0xfb, 0x509: 0xfb, 0x50a: 0xfb, 0x50b: 0xfb, 0x50c: 0xfb, 0x50d: 0xfb, 0x50e: 0xfb, 0x50f: 0xfb, -- 0x510: 0xfb, 0x511: 0xfb, 0x512: 0xfb, 0x513: 0xfb, 0x514: 0xfb, 0x515: 0xfb, 0x516: 0xfb, 0x517: 0xfb, -- 0x518: 0xfb, 0x519: 0xfb, 0x51a: 0xfb, 0x51b: 0xfb, 0x51c: 0xfb, 0x51d: 0xfb, 0x51e: 0xfb, 0x51f: 0xfb, -+ 0x500: 0xfd, 0x501: 0xfd, 0x502: 0xfd, 0x503: 0xfd, 0x504: 0xfd, 0x505: 0xfd, 0x506: 0xfd, 0x507: 0xfd, -+ 0x508: 0xfd, 0x509: 0xfd, 0x50a: 0xfd, 0x50b: 0xfd, 0x50c: 0xfd, 0x50d: 0xfd, 0x50e: 0xfd, 0x50f: 0xfd, -+ 0x510: 0xfd, 0x511: 0xfd, 0x512: 0xfd, 0x513: 0xfd, 0x514: 0xfd, 0x515: 0xfd, 0x516: 0xfd, 0x517: 0xfd, -+ 0x518: 0xfd, 0x519: 0xfd, 0x51a: 0xfd, 0x51b: 0xfd, 0x51c: 0xfd, 0x51d: 0xfd, 0x51e: 0xfd, 0x51f: 0xfd, - 0x520: 0xa0, 0x521: 0xa0, 0x522: 0xa0, 0x523: 0xa0, 0x524: 0xa0, 0x525: 0xa0, 0x526: 0xa0, 0x527: 0xa0, -- 0x528: 0x14d, 0x529: 0x15c, 0x52a: 0xfb, 0x52b: 0x15d, 0x52c: 0x15e, 0x52d: 0x15f, 0x52e: 0x160, 0x52f: 0xfb, -- 0x530: 0xfb, 0x531: 0xfb, 0x532: 0xfb, 0x533: 0xfb, 0x534: 0xfb, 0x535: 0xfb, 0x536: 0xfb, 0x537: 0xfb, -- 0x538: 0xfb, 0x539: 0x161, 0x53a: 0x162, 0x53b: 0xfb, 0x53c: 0xa0, 0x53d: 0x163, 0x53e: 0x164, 0x53f: 0x165, -+ 0x528: 0x14f, 0x529: 0x15e, 0x52a: 0xfd, 0x52b: 0x15f, 0x52c: 0x160, 0x52d: 0x161, 0x52e: 0x162, 0x52f: 0xfd, -+ 0x530: 0xfd, 0x531: 0xfd, 0x532: 0xfd, 0x533: 0xfd, 0x534: 0xfd, 0x535: 0xfd, 0x536: 0xfd, 0x537: 0xfd, -+ 0x538: 0xfd, 0x539: 0x163, 0x53a: 0x164, 0x53b: 0xfd, 0x53c: 0xa0, 0x53d: 0x165, 0x53e: 0x166, 0x53f: 0x167, - // Block 0x15, offset 0x540 - 0x540: 0xa0, 0x541: 0xa0, 0x542: 0xa0, 0x543: 0xa0, 0x544: 0xa0, 0x545: 0xa0, 0x546: 0xa0, 0x547: 0xa0, - 0x548: 0xa0, 0x549: 0xa0, 0x54a: 0xa0, 0x54b: 0xa0, 0x54c: 0xa0, 0x54d: 0xa0, 0x54e: 0xa0, 0x54f: 0xa0, - 0x550: 0xa0, 0x551: 0xa0, 0x552: 0xa0, 0x553: 0xa0, 0x554: 0xa0, 0x555: 0xa0, 0x556: 0xa0, 0x557: 0xa0, -- 0x558: 0xa0, 0x559: 0xa0, 0x55a: 0xa0, 0x55b: 0xa0, 0x55c: 0xa0, 0x55d: 0xa0, 0x55e: 0xa0, 0x55f: 0x166, -+ 0x558: 0xa0, 0x559: 0xa0, 0x55a: 0xa0, 0x55b: 0xa0, 0x55c: 0xa0, 0x55d: 0xa0, 0x55e: 0xa0, 0x55f: 0x168, - 0x560: 0xa0, 0x561: 0xa0, 0x562: 0xa0, 0x563: 0xa0, 0x564: 0xa0, 0x565: 0xa0, 0x566: 0xa0, 0x567: 0xa0, - 0x568: 0xa0, 0x569: 0xa0, 0x56a: 0xa0, 0x56b: 0xa0, 0x56c: 0xa0, 0x56d: 0xa0, 0x56e: 0xa0, 0x56f: 0xa0, -- 0x570: 0xa0, 0x571: 0xa0, 0x572: 0xa0, 0x573: 0x167, 0x574: 0x168, 0x575: 0xfb, 0x576: 0xfb, 0x577: 0xfb, -- 0x578: 0xfb, 0x579: 0xfb, 0x57a: 0xfb, 0x57b: 0xfb, 0x57c: 0xfb, 0x57d: 0xfb, 0x57e: 0xfb, 0x57f: 0xfb, -+ 0x570: 0xa0, 0x571: 0xa0, 0x572: 0xa0, 0x573: 0x169, 0x574: 0x16a, 0x575: 0xfd, 0x576: 0xfd, 0x577: 0xfd, -+ 0x578: 0xfd, 0x579: 0xfd, 0x57a: 0xfd, 0x57b: 0xfd, 0x57c: 0xfd, 0x57d: 0xfd, 0x57e: 0xfd, 0x57f: 0xfd, - // Block 0x16, offset 0x580 -- 0x580: 0xa0, 0x581: 0xa0, 0x582: 0xa0, 0x583: 0xa0, 0x584: 0x169, 0x585: 0x16a, 0x586: 0xa0, 0x587: 0xa0, -- 0x588: 0xa0, 0x589: 0xa0, 0x58a: 0xa0, 0x58b: 0x16b, 0x58c: 0xfb, 0x58d: 0xfb, 0x58e: 0xfb, 0x58f: 0xfb, -- 0x590: 0xfb, 0x591: 0xfb, 0x592: 0xfb, 0x593: 0xfb, 0x594: 0xfb, 0x595: 0xfb, 0x596: 0xfb, 0x597: 0xfb, -- 0x598: 0xfb, 0x599: 0xfb, 0x59a: 0xfb, 0x59b: 0xfb, 0x59c: 0xfb, 0x59d: 0xfb, 0x59e: 0xfb, 0x59f: 0xfb, -- 0x5a0: 0xfb, 0x5a1: 0xfb, 0x5a2: 0xfb, 0x5a3: 0xfb, 0x5a4: 0xfb, 0x5a5: 0xfb, 0x5a6: 0xfb, 0x5a7: 0xfb, -- 0x5a8: 0xfb, 0x5a9: 0xfb, 0x5aa: 0xfb, 0x5ab: 0xfb, 0x5ac: 0xfb, 0x5ad: 0xfb, 0x5ae: 0xfb, 0x5af: 0xfb, -- 0x5b0: 0xa0, 0x5b1: 0x16c, 0x5b2: 0x16d, 0x5b3: 0xfb, 0x5b4: 0xfb, 0x5b5: 0xfb, 0x5b6: 0xfb, 0x5b7: 0xfb, -- 0x5b8: 0xfb, 0x5b9: 0xfb, 0x5ba: 0xfb, 0x5bb: 0xfb, 0x5bc: 0xfb, 0x5bd: 0xfb, 0x5be: 0xfb, 0x5bf: 0xfb, -+ 0x580: 0xa0, 0x581: 0xa0, 0x582: 0xa0, 0x583: 0xa0, 0x584: 0x16b, 0x585: 0x16c, 0x586: 0xa0, 0x587: 0xa0, -+ 0x588: 0xa0, 0x589: 0xa0, 0x58a: 0xa0, 0x58b: 0x16d, 0x58c: 0xfd, 0x58d: 0xfd, 0x58e: 0xfd, 0x58f: 0xfd, -+ 0x590: 0xfd, 0x591: 0xfd, 0x592: 0xfd, 0x593: 0xfd, 0x594: 0xfd, 0x595: 0xfd, 0x596: 0xfd, 0x597: 0xfd, -+ 0x598: 0xfd, 0x599: 0xfd, 0x59a: 0xfd, 0x59b: 0xfd, 0x59c: 0xfd, 0x59d: 0xfd, 0x59e: 0xfd, 0x59f: 0xfd, -+ 0x5a0: 0xfd, 0x5a1: 0xfd, 0x5a2: 0xfd, 0x5a3: 0xfd, 0x5a4: 0xfd, 0x5a5: 0xfd, 0x5a6: 0xfd, 0x5a7: 0xfd, -+ 0x5a8: 0xfd, 0x5a9: 0xfd, 0x5aa: 0xfd, 0x5ab: 0xfd, 0x5ac: 0xfd, 0x5ad: 0xfd, 0x5ae: 0xfd, 0x5af: 0xfd, -+ 0x5b0: 0xa0, 0x5b1: 0x16e, 0x5b2: 0x16f, 0x5b3: 0xfd, 0x5b4: 0xfd, 0x5b5: 0xfd, 0x5b6: 0xfd, 0x5b7: 0xfd, -+ 0x5b8: 0xfd, 0x5b9: 0xfd, 0x5ba: 0xfd, 0x5bb: 0xfd, 0x5bc: 0xfd, 0x5bd: 0xfd, 0x5be: 0xfd, 0x5bf: 0xfd, - // Block 0x17, offset 0x5c0 -- 0x5c0: 0x9c, 0x5c1: 0x9c, 0x5c2: 0x9c, 0x5c3: 0x16e, 0x5c4: 0x16f, 0x5c5: 0x170, 0x5c6: 0x171, 0x5c7: 0x172, -- 0x5c8: 0x9c, 0x5c9: 0x173, 0x5ca: 0xfb, 0x5cb: 0x174, 0x5cc: 0x9c, 0x5cd: 0x175, 0x5ce: 0xfb, 0x5cf: 0xfb, -- 0x5d0: 0x60, 0x5d1: 0x61, 0x5d2: 0x62, 0x5d3: 0x63, 0x5d4: 0x64, 0x5d5: 0x65, 0x5d6: 0x66, 0x5d7: 0x67, -- 0x5d8: 0x68, 0x5d9: 0x69, 0x5da: 0x6a, 0x5db: 0x6b, 0x5dc: 0x6c, 0x5dd: 0x6d, 0x5de: 0x6e, 0x5df: 0x6f, -+ 0x5c0: 0x9c, 0x5c1: 0x9c, 0x5c2: 0x9c, 0x5c3: 0x170, 0x5c4: 0x171, 0x5c5: 0x172, 0x5c6: 0x173, 0x5c7: 0x174, -+ 0x5c8: 0x9c, 0x5c9: 0x175, 0x5ca: 0xfd, 0x5cb: 0x176, 0x5cc: 0x9c, 0x5cd: 0x177, 0x5ce: 0xfd, 0x5cf: 0xfd, -+ 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: 0x9c, 0x5e1: 0x9c, 0x5e2: 0x9c, 0x5e3: 0x9c, 0x5e4: 0x9c, 0x5e5: 0x9c, 0x5e6: 0x9c, 0x5e7: 0x9c, -- 0x5e8: 0x176, 0x5e9: 0x177, 0x5ea: 0x178, 0x5eb: 0xfb, 0x5ec: 0xfb, 0x5ed: 0xfb, 0x5ee: 0xfb, 0x5ef: 0xfb, -- 0x5f0: 0xfb, 0x5f1: 0xfb, 0x5f2: 0xfb, 0x5f3: 0xfb, 0x5f4: 0xfb, 0x5f5: 0xfb, 0x5f6: 0xfb, 0x5f7: 0xfb, -- 0x5f8: 0xfb, 0x5f9: 0xfb, 0x5fa: 0xfb, 0x5fb: 0xfb, 0x5fc: 0xfb, 0x5fd: 0xfb, 0x5fe: 0xfb, 0x5ff: 0xfb, -+ 0x5e8: 0x178, 0x5e9: 0x179, 0x5ea: 0x17a, 0x5eb: 0xfd, 0x5ec: 0xfd, 0x5ed: 0xfd, 0x5ee: 0xfd, 0x5ef: 0xfd, -+ 0x5f0: 0xfd, 0x5f1: 0xfd, 0x5f2: 0xfd, 0x5f3: 0xfd, 0x5f4: 0xfd, 0x5f5: 0xfd, 0x5f6: 0xfd, 0x5f7: 0xfd, -+ 0x5f8: 0xfd, 0x5f9: 0xfd, 0x5fa: 0xfd, 0x5fb: 0xfd, 0x5fc: 0xfd, 0x5fd: 0xfd, 0x5fe: 0xfd, 0x5ff: 0xfd, - // Block 0x18, offset 0x600 -- 0x600: 0x179, 0x601: 0xfb, 0x602: 0xfb, 0x603: 0xfb, 0x604: 0x17a, 0x605: 0x17b, 0x606: 0xfb, 0x607: 0xfb, -- 0x608: 0xfb, 0x609: 0xfb, 0x60a: 0xfb, 0x60b: 0x17c, 0x60c: 0xfb, 0x60d: 0xfb, 0x60e: 0xfb, 0x60f: 0xfb, -- 0x610: 0xfb, 0x611: 0xfb, 0x612: 0xfb, 0x613: 0xfb, 0x614: 0xfb, 0x615: 0xfb, 0x616: 0xfb, 0x617: 0xfb, -- 0x618: 0xfb, 0x619: 0xfb, 0x61a: 0xfb, 0x61b: 0xfb, 0x61c: 0xfb, 0x61d: 0xfb, 0x61e: 0xfb, 0x61f: 0xfb, -- 0x620: 0x123, 0x621: 0x123, 0x622: 0x123, 0x623: 0x17d, 0x624: 0x70, 0x625: 0x17e, 0x626: 0xfb, 0x627: 0xfb, -- 0x628: 0xfb, 0x629: 0xfb, 0x62a: 0xfb, 0x62b: 0xfb, 0x62c: 0xfb, 0x62d: 0xfb, 0x62e: 0xfb, 0x62f: 0xfb, -- 0x630: 0xfb, 0x631: 0x17f, 0x632: 0x180, 0x633: 0xfb, 0x634: 0x181, 0x635: 0xfb, 0x636: 0xfb, 0x637: 0xfb, -- 0x638: 0x71, 0x639: 0x72, 0x63a: 0x73, 0x63b: 0x182, 0x63c: 0xfb, 0x63d: 0xfb, 0x63e: 0xfb, 0x63f: 0xfb, -+ 0x600: 0x17b, 0x601: 0xfd, 0x602: 0xfd, 0x603: 0xfd, 0x604: 0x17c, 0x605: 0x17d, 0x606: 0xfd, 0x607: 0xfd, -+ 0x608: 0xfd, 0x609: 0xfd, 0x60a: 0xfd, 0x60b: 0x17e, 0x60c: 0xfd, 0x60d: 0xfd, 0x60e: 0xfd, 0x60f: 0xfd, -+ 0x610: 0xfd, 0x611: 0xfd, 0x612: 0xfd, 0x613: 0xfd, 0x614: 0xfd, 0x615: 0xfd, 0x616: 0xfd, 0x617: 0xfd, -+ 0x618: 0xfd, 0x619: 0xfd, 0x61a: 0xfd, 0x61b: 0xfd, 0x61c: 0xfd, 0x61d: 0xfd, 0x61e: 0xfd, 0x61f: 0xfd, -+ 0x620: 0x125, 0x621: 0x125, 0x622: 0x125, 0x623: 0x17f, 0x624: 0x6e, 0x625: 0x180, 0x626: 0xfd, 0x627: 0xfd, -+ 0x628: 0xfd, 0x629: 0xfd, 0x62a: 0xfd, 0x62b: 0xfd, 0x62c: 0xfd, 0x62d: 0xfd, 0x62e: 0xfd, 0x62f: 0xfd, -+ 0x630: 0xfd, 0x631: 0x181, 0x632: 0x182, 0x633: 0xfd, 0x634: 0x183, 0x635: 0xfd, 0x636: 0xfd, 0x637: 0xfd, -+ 0x638: 0x6f, 0x639: 0x70, 0x63a: 0x71, 0x63b: 0x184, 0x63c: 0xfd, 0x63d: 0xfd, 0x63e: 0xfd, 0x63f: 0xfd, - // Block 0x19, offset 0x640 -- 0x640: 0x183, 0x641: 0x9c, 0x642: 0x184, 0x643: 0x185, 0x644: 0x74, 0x645: 0x75, 0x646: 0x186, 0x647: 0x187, -- 0x648: 0x76, 0x649: 0x188, 0x64a: 0xfb, 0x64b: 0xfb, 0x64c: 0x9c, 0x64d: 0x9c, 0x64e: 0x9c, 0x64f: 0x9c, -+ 0x640: 0x185, 0x641: 0x9c, 0x642: 0x186, 0x643: 0x187, 0x644: 0x72, 0x645: 0x73, 0x646: 0x188, 0x647: 0x189, -+ 0x648: 0x74, 0x649: 0x18a, 0x64a: 0xfd, 0x64b: 0xfd, 0x64c: 0x9c, 0x64d: 0x9c, 0x64e: 0x9c, 0x64f: 0x9c, - 0x650: 0x9c, 0x651: 0x9c, 0x652: 0x9c, 0x653: 0x9c, 0x654: 0x9c, 0x655: 0x9c, 0x656: 0x9c, 0x657: 0x9c, -- 0x658: 0x9c, 0x659: 0x9c, 0x65a: 0x9c, 0x65b: 0x189, 0x65c: 0x9c, 0x65d: 0x18a, 0x65e: 0x9c, 0x65f: 0x18b, -- 0x660: 0x18c, 0x661: 0x18d, 0x662: 0x18e, 0x663: 0xfb, 0x664: 0x9c, 0x665: 0x18f, 0x666: 0x9c, 0x667: 0x190, -- 0x668: 0x9c, 0x669: 0x191, 0x66a: 0x192, 0x66b: 0x193, 0x66c: 0x9c, 0x66d: 0x9c, 0x66e: 0x194, 0x66f: 0x195, -- 0x670: 0xfb, 0x671: 0xfb, 0x672: 0xfb, 0x673: 0xfb, 0x674: 0xfb, 0x675: 0xfb, 0x676: 0xfb, 0x677: 0xfb, -- 0x678: 0xfb, 0x679: 0xfb, 0x67a: 0xfb, 0x67b: 0xfb, 0x67c: 0xfb, 0x67d: 0xfb, 0x67e: 0xfb, 0x67f: 0xfb, -+ 0x658: 0x9c, 0x659: 0x9c, 0x65a: 0x9c, 0x65b: 0x18b, 0x65c: 0x9c, 0x65d: 0x18c, 0x65e: 0x9c, 0x65f: 0x18d, -+ 0x660: 0x18e, 0x661: 0x18f, 0x662: 0x190, 0x663: 0xfd, 0x664: 0x9c, 0x665: 0x191, 0x666: 0x9c, 0x667: 0x192, -+ 0x668: 0x9c, 0x669: 0x193, 0x66a: 0x194, 0x66b: 0x195, 0x66c: 0x9c, 0x66d: 0x9c, 0x66e: 0x196, 0x66f: 0x197, -+ 0x670: 0xfd, 0x671: 0xfd, 0x672: 0xfd, 0x673: 0xfd, 0x674: 0xfd, 0x675: 0xfd, 0x676: 0xfd, 0x677: 0xfd, -+ 0x678: 0xfd, 0x679: 0xfd, 0x67a: 0xfd, 0x67b: 0xfd, 0x67c: 0xfd, 0x67d: 0xfd, 0x67e: 0xfd, 0x67f: 0xfd, - // Block 0x1a, offset 0x680 - 0x680: 0xa0, 0x681: 0xa0, 0x682: 0xa0, 0x683: 0xa0, 0x684: 0xa0, 0x685: 0xa0, 0x686: 0xa0, 0x687: 0xa0, - 0x688: 0xa0, 0x689: 0xa0, 0x68a: 0xa0, 0x68b: 0xa0, 0x68c: 0xa0, 0x68d: 0xa0, 0x68e: 0xa0, 0x68f: 0xa0, - 0x690: 0xa0, 0x691: 0xa0, 0x692: 0xa0, 0x693: 0xa0, 0x694: 0xa0, 0x695: 0xa0, 0x696: 0xa0, 0x697: 0xa0, -- 0x698: 0xa0, 0x699: 0xa0, 0x69a: 0xa0, 0x69b: 0x196, 0x69c: 0xa0, 0x69d: 0xa0, 0x69e: 0xa0, 0x69f: 0xa0, -+ 0x698: 0xa0, 0x699: 0xa0, 0x69a: 0xa0, 0x69b: 0x198, 0x69c: 0xa0, 0x69d: 0xa0, 0x69e: 0xa0, 0x69f: 0xa0, - 0x6a0: 0xa0, 0x6a1: 0xa0, 0x6a2: 0xa0, 0x6a3: 0xa0, 0x6a4: 0xa0, 0x6a5: 0xa0, 0x6a6: 0xa0, 0x6a7: 0xa0, - 0x6a8: 0xa0, 0x6a9: 0xa0, 0x6aa: 0xa0, 0x6ab: 0xa0, 0x6ac: 0xa0, 0x6ad: 0xa0, 0x6ae: 0xa0, 0x6af: 0xa0, - 0x6b0: 0xa0, 0x6b1: 0xa0, 0x6b2: 0xa0, 0x6b3: 0xa0, 0x6b4: 0xa0, 0x6b5: 0xa0, 0x6b6: 0xa0, 0x6b7: 0xa0, -@@ -2312,8 +2455,8 @@ var idnaIndex = [2368]uint16{ - 0x6c0: 0xa0, 0x6c1: 0xa0, 0x6c2: 0xa0, 0x6c3: 0xa0, 0x6c4: 0xa0, 0x6c5: 0xa0, 0x6c6: 0xa0, 0x6c7: 0xa0, - 0x6c8: 0xa0, 0x6c9: 0xa0, 0x6ca: 0xa0, 0x6cb: 0xa0, 0x6cc: 0xa0, 0x6cd: 0xa0, 0x6ce: 0xa0, 0x6cf: 0xa0, - 0x6d0: 0xa0, 0x6d1: 0xa0, 0x6d2: 0xa0, 0x6d3: 0xa0, 0x6d4: 0xa0, 0x6d5: 0xa0, 0x6d6: 0xa0, 0x6d7: 0xa0, -- 0x6d8: 0xa0, 0x6d9: 0xa0, 0x6da: 0xa0, 0x6db: 0xa0, 0x6dc: 0x197, 0x6dd: 0xa0, 0x6de: 0xa0, 0x6df: 0xa0, -- 0x6e0: 0x198, 0x6e1: 0xa0, 0x6e2: 0xa0, 0x6e3: 0xa0, 0x6e4: 0xa0, 0x6e5: 0xa0, 0x6e6: 0xa0, 0x6e7: 0xa0, -+ 0x6d8: 0xa0, 0x6d9: 0xa0, 0x6da: 0xa0, 0x6db: 0xa0, 0x6dc: 0x199, 0x6dd: 0xa0, 0x6de: 0xa0, 0x6df: 0xa0, -+ 0x6e0: 0x19a, 0x6e1: 0xa0, 0x6e2: 0xa0, 0x6e3: 0xa0, 0x6e4: 0xa0, 0x6e5: 0xa0, 0x6e6: 0xa0, 0x6e7: 0xa0, - 0x6e8: 0xa0, 0x6e9: 0xa0, 0x6ea: 0xa0, 0x6eb: 0xa0, 0x6ec: 0xa0, 0x6ed: 0xa0, 0x6ee: 0xa0, 0x6ef: 0xa0, - 0x6f0: 0xa0, 0x6f1: 0xa0, 0x6f2: 0xa0, 0x6f3: 0xa0, 0x6f4: 0xa0, 0x6f5: 0xa0, 0x6f6: 0xa0, 0x6f7: 0xa0, - 0x6f8: 0xa0, 0x6f9: 0xa0, 0x6fa: 0xa0, 0x6fb: 0xa0, 0x6fc: 0xa0, 0x6fd: 0xa0, 0x6fe: 0xa0, 0x6ff: 0xa0, -@@ -2325,34 +2468,34 @@ var idnaIndex = [2368]uint16{ - 0x720: 0xa0, 0x721: 0xa0, 0x722: 0xa0, 0x723: 0xa0, 0x724: 0xa0, 0x725: 0xa0, 0x726: 0xa0, 0x727: 0xa0, - 0x728: 0xa0, 0x729: 0xa0, 0x72a: 0xa0, 0x72b: 0xa0, 0x72c: 0xa0, 0x72d: 0xa0, 0x72e: 0xa0, 0x72f: 0xa0, - 0x730: 0xa0, 0x731: 0xa0, 0x732: 0xa0, 0x733: 0xa0, 0x734: 0xa0, 0x735: 0xa0, 0x736: 0xa0, 0x737: 0xa0, -- 0x738: 0xa0, 0x739: 0xa0, 0x73a: 0x199, 0x73b: 0xa0, 0x73c: 0xa0, 0x73d: 0xa0, 0x73e: 0xa0, 0x73f: 0xa0, -+ 0x738: 0xa0, 0x739: 0xa0, 0x73a: 0x19b, 0x73b: 0xa0, 0x73c: 0xa0, 0x73d: 0xa0, 0x73e: 0xa0, 0x73f: 0xa0, - // Block 0x1d, offset 0x740 - 0x740: 0xa0, 0x741: 0xa0, 0x742: 0xa0, 0x743: 0xa0, 0x744: 0xa0, 0x745: 0xa0, 0x746: 0xa0, 0x747: 0xa0, - 0x748: 0xa0, 0x749: 0xa0, 0x74a: 0xa0, 0x74b: 0xa0, 0x74c: 0xa0, 0x74d: 0xa0, 0x74e: 0xa0, 0x74f: 0xa0, - 0x750: 0xa0, 0x751: 0xa0, 0x752: 0xa0, 0x753: 0xa0, 0x754: 0xa0, 0x755: 0xa0, 0x756: 0xa0, 0x757: 0xa0, - 0x758: 0xa0, 0x759: 0xa0, 0x75a: 0xa0, 0x75b: 0xa0, 0x75c: 0xa0, 0x75d: 0xa0, 0x75e: 0xa0, 0x75f: 0xa0, - 0x760: 0xa0, 0x761: 0xa0, 0x762: 0xa0, 0x763: 0xa0, 0x764: 0xa0, 0x765: 0xa0, 0x766: 0xa0, 0x767: 0xa0, -- 0x768: 0xa0, 0x769: 0xa0, 0x76a: 0xa0, 0x76b: 0xa0, 0x76c: 0xa0, 0x76d: 0xa0, 0x76e: 0xa0, 0x76f: 0x19a, -- 0x770: 0xfb, 0x771: 0xfb, 0x772: 0xfb, 0x773: 0xfb, 0x774: 0xfb, 0x775: 0xfb, 0x776: 0xfb, 0x777: 0xfb, -- 0x778: 0xfb, 0x779: 0xfb, 0x77a: 0xfb, 0x77b: 0xfb, 0x77c: 0xfb, 0x77d: 0xfb, 0x77e: 0xfb, 0x77f: 0xfb, -+ 0x768: 0xa0, 0x769: 0xa0, 0x76a: 0xa0, 0x76b: 0xa0, 0x76c: 0xa0, 0x76d: 0xa0, 0x76e: 0xa0, 0x76f: 0x19c, -+ 0x770: 0xfd, 0x771: 0xfd, 0x772: 0xfd, 0x773: 0xfd, 0x774: 0xfd, 0x775: 0xfd, 0x776: 0xfd, 0x777: 0xfd, -+ 0x778: 0xfd, 0x779: 0xfd, 0x77a: 0xfd, 0x77b: 0xfd, 0x77c: 0xfd, 0x77d: 0xfd, 0x77e: 0xfd, 0x77f: 0xfd, - // Block 0x1e, offset 0x780 -- 0x780: 0xfb, 0x781: 0xfb, 0x782: 0xfb, 0x783: 0xfb, 0x784: 0xfb, 0x785: 0xfb, 0x786: 0xfb, 0x787: 0xfb, -- 0x788: 0xfb, 0x789: 0xfb, 0x78a: 0xfb, 0x78b: 0xfb, 0x78c: 0xfb, 0x78d: 0xfb, 0x78e: 0xfb, 0x78f: 0xfb, -- 0x790: 0xfb, 0x791: 0xfb, 0x792: 0xfb, 0x793: 0xfb, 0x794: 0xfb, 0x795: 0xfb, 0x796: 0xfb, 0x797: 0xfb, -- 0x798: 0xfb, 0x799: 0xfb, 0x79a: 0xfb, 0x79b: 0xfb, 0x79c: 0xfb, 0x79d: 0xfb, 0x79e: 0xfb, 0x79f: 0xfb, -- 0x7a0: 0x77, 0x7a1: 0x78, 0x7a2: 0x79, 0x7a3: 0x19b, 0x7a4: 0x7a, 0x7a5: 0x7b, 0x7a6: 0x19c, 0x7a7: 0x7c, -- 0x7a8: 0x7d, 0x7a9: 0xfb, 0x7aa: 0xfb, 0x7ab: 0xfb, 0x7ac: 0xfb, 0x7ad: 0xfb, 0x7ae: 0xfb, 0x7af: 0xfb, -- 0x7b0: 0xfb, 0x7b1: 0xfb, 0x7b2: 0xfb, 0x7b3: 0xfb, 0x7b4: 0xfb, 0x7b5: 0xfb, 0x7b6: 0xfb, 0x7b7: 0xfb, -- 0x7b8: 0xfb, 0x7b9: 0xfb, 0x7ba: 0xfb, 0x7bb: 0xfb, 0x7bc: 0xfb, 0x7bd: 0xfb, 0x7be: 0xfb, 0x7bf: 0xfb, -+ 0x780: 0xfd, 0x781: 0xfd, 0x782: 0xfd, 0x783: 0xfd, 0x784: 0xfd, 0x785: 0xfd, 0x786: 0xfd, 0x787: 0xfd, -+ 0x788: 0xfd, 0x789: 0xfd, 0x78a: 0xfd, 0x78b: 0xfd, 0x78c: 0xfd, 0x78d: 0xfd, 0x78e: 0xfd, 0x78f: 0xfd, -+ 0x790: 0xfd, 0x791: 0xfd, 0x792: 0xfd, 0x793: 0xfd, 0x794: 0xfd, 0x795: 0xfd, 0x796: 0xfd, 0x797: 0xfd, -+ 0x798: 0xfd, 0x799: 0xfd, 0x79a: 0xfd, 0x79b: 0xfd, 0x79c: 0xfd, 0x79d: 0xfd, 0x79e: 0xfd, 0x79f: 0xfd, -+ 0x7a0: 0x75, 0x7a1: 0x76, 0x7a2: 0x77, 0x7a3: 0x78, 0x7a4: 0x79, 0x7a5: 0x7a, 0x7a6: 0x7b, 0x7a7: 0x7c, -+ 0x7a8: 0x7d, 0x7a9: 0xfd, 0x7aa: 0xfd, 0x7ab: 0xfd, 0x7ac: 0xfd, 0x7ad: 0xfd, 0x7ae: 0xfd, 0x7af: 0xfd, -+ 0x7b0: 0xfd, 0x7b1: 0xfd, 0x7b2: 0xfd, 0x7b3: 0xfd, 0x7b4: 0xfd, 0x7b5: 0xfd, 0x7b6: 0xfd, 0x7b7: 0xfd, -+ 0x7b8: 0xfd, 0x7b9: 0xfd, 0x7ba: 0xfd, 0x7bb: 0xfd, 0x7bc: 0xfd, 0x7bd: 0xfd, 0x7be: 0xfd, 0x7bf: 0xfd, - // Block 0x1f, offset 0x7c0 - 0x7c0: 0xa0, 0x7c1: 0xa0, 0x7c2: 0xa0, 0x7c3: 0xa0, 0x7c4: 0xa0, 0x7c5: 0xa0, 0x7c6: 0xa0, 0x7c7: 0xa0, -- 0x7c8: 0xa0, 0x7c9: 0xa0, 0x7ca: 0xa0, 0x7cb: 0xa0, 0x7cc: 0xa0, 0x7cd: 0x19d, 0x7ce: 0xfb, 0x7cf: 0xfb, -- 0x7d0: 0xfb, 0x7d1: 0xfb, 0x7d2: 0xfb, 0x7d3: 0xfb, 0x7d4: 0xfb, 0x7d5: 0xfb, 0x7d6: 0xfb, 0x7d7: 0xfb, -- 0x7d8: 0xfb, 0x7d9: 0xfb, 0x7da: 0xfb, 0x7db: 0xfb, 0x7dc: 0xfb, 0x7dd: 0xfb, 0x7de: 0xfb, 0x7df: 0xfb, -- 0x7e0: 0xfb, 0x7e1: 0xfb, 0x7e2: 0xfb, 0x7e3: 0xfb, 0x7e4: 0xfb, 0x7e5: 0xfb, 0x7e6: 0xfb, 0x7e7: 0xfb, -- 0x7e8: 0xfb, 0x7e9: 0xfb, 0x7ea: 0xfb, 0x7eb: 0xfb, 0x7ec: 0xfb, 0x7ed: 0xfb, 0x7ee: 0xfb, 0x7ef: 0xfb, -- 0x7f0: 0xfb, 0x7f1: 0xfb, 0x7f2: 0xfb, 0x7f3: 0xfb, 0x7f4: 0xfb, 0x7f5: 0xfb, 0x7f6: 0xfb, 0x7f7: 0xfb, -- 0x7f8: 0xfb, 0x7f9: 0xfb, 0x7fa: 0xfb, 0x7fb: 0xfb, 0x7fc: 0xfb, 0x7fd: 0xfb, 0x7fe: 0xfb, 0x7ff: 0xfb, -+ 0x7c8: 0xa0, 0x7c9: 0xa0, 0x7ca: 0xa0, 0x7cb: 0xa0, 0x7cc: 0xa0, 0x7cd: 0x19d, 0x7ce: 0xfd, 0x7cf: 0xfd, -+ 0x7d0: 0xfd, 0x7d1: 0xfd, 0x7d2: 0xfd, 0x7d3: 0xfd, 0x7d4: 0xfd, 0x7d5: 0xfd, 0x7d6: 0xfd, 0x7d7: 0xfd, -+ 0x7d8: 0xfd, 0x7d9: 0xfd, 0x7da: 0xfd, 0x7db: 0xfd, 0x7dc: 0xfd, 0x7dd: 0xfd, 0x7de: 0xfd, 0x7df: 0xfd, -+ 0x7e0: 0xfd, 0x7e1: 0xfd, 0x7e2: 0xfd, 0x7e3: 0xfd, 0x7e4: 0xfd, 0x7e5: 0xfd, 0x7e6: 0xfd, 0x7e7: 0xfd, -+ 0x7e8: 0xfd, 0x7e9: 0xfd, 0x7ea: 0xfd, 0x7eb: 0xfd, 0x7ec: 0xfd, 0x7ed: 0xfd, 0x7ee: 0xfd, 0x7ef: 0xfd, -+ 0x7f0: 0xfd, 0x7f1: 0xfd, 0x7f2: 0xfd, 0x7f3: 0xfd, 0x7f4: 0xfd, 0x7f5: 0xfd, 0x7f6: 0xfd, 0x7f7: 0xfd, -+ 0x7f8: 0xfd, 0x7f9: 0xfd, 0x7fa: 0xfd, 0x7fb: 0xfd, 0x7fc: 0xfd, 0x7fd: 0xfd, 0x7fe: 0xfd, 0x7ff: 0xfd, - // Block 0x20, offset 0x800 - 0x810: 0x0d, 0x811: 0x0e, 0x812: 0x0f, 0x813: 0x10, 0x814: 0x11, 0x815: 0x0b, 0x816: 0x12, 0x817: 0x07, - 0x818: 0x13, 0x819: 0x0b, 0x81a: 0x0b, 0x81b: 0x14, 0x81c: 0x0b, 0x81d: 0x15, 0x81e: 0x16, 0x81f: 0x17, -@@ -2370,14 +2513,14 @@ var idnaIndex = [2368]uint16{ - 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: 0x19e, 0x881: 0x19f, 0x882: 0xfb, 0x883: 0xfb, 0x884: 0x1a0, 0x885: 0x1a0, 0x886: 0x1a0, 0x887: 0x1a1, -- 0x888: 0xfb, 0x889: 0xfb, 0x88a: 0xfb, 0x88b: 0xfb, 0x88c: 0xfb, 0x88d: 0xfb, 0x88e: 0xfb, 0x88f: 0xfb, -- 0x890: 0xfb, 0x891: 0xfb, 0x892: 0xfb, 0x893: 0xfb, 0x894: 0xfb, 0x895: 0xfb, 0x896: 0xfb, 0x897: 0xfb, -- 0x898: 0xfb, 0x899: 0xfb, 0x89a: 0xfb, 0x89b: 0xfb, 0x89c: 0xfb, 0x89d: 0xfb, 0x89e: 0xfb, 0x89f: 0xfb, -- 0x8a0: 0xfb, 0x8a1: 0xfb, 0x8a2: 0xfb, 0x8a3: 0xfb, 0x8a4: 0xfb, 0x8a5: 0xfb, 0x8a6: 0xfb, 0x8a7: 0xfb, -- 0x8a8: 0xfb, 0x8a9: 0xfb, 0x8aa: 0xfb, 0x8ab: 0xfb, 0x8ac: 0xfb, 0x8ad: 0xfb, 0x8ae: 0xfb, 0x8af: 0xfb, -- 0x8b0: 0xfb, 0x8b1: 0xfb, 0x8b2: 0xfb, 0x8b3: 0xfb, 0x8b4: 0xfb, 0x8b5: 0xfb, 0x8b6: 0xfb, 0x8b7: 0xfb, -- 0x8b8: 0xfb, 0x8b9: 0xfb, 0x8ba: 0xfb, 0x8bb: 0xfb, 0x8bc: 0xfb, 0x8bd: 0xfb, 0x8be: 0xfb, 0x8bf: 0xfb, -+ 0x880: 0x19e, 0x881: 0x19f, 0x882: 0xfd, 0x883: 0xfd, 0x884: 0x1a0, 0x885: 0x1a0, 0x886: 0x1a0, 0x887: 0x1a1, -+ 0x888: 0xfd, 0x889: 0xfd, 0x88a: 0xfd, 0x88b: 0xfd, 0x88c: 0xfd, 0x88d: 0xfd, 0x88e: 0xfd, 0x88f: 0xfd, -+ 0x890: 0xfd, 0x891: 0xfd, 0x892: 0xfd, 0x893: 0xfd, 0x894: 0xfd, 0x895: 0xfd, 0x896: 0xfd, 0x897: 0xfd, -+ 0x898: 0xfd, 0x899: 0xfd, 0x89a: 0xfd, 0x89b: 0xfd, 0x89c: 0xfd, 0x89d: 0xfd, 0x89e: 0xfd, 0x89f: 0xfd, -+ 0x8a0: 0xfd, 0x8a1: 0xfd, 0x8a2: 0xfd, 0x8a3: 0xfd, 0x8a4: 0xfd, 0x8a5: 0xfd, 0x8a6: 0xfd, 0x8a7: 0xfd, -+ 0x8a8: 0xfd, 0x8a9: 0xfd, 0x8aa: 0xfd, 0x8ab: 0xfd, 0x8ac: 0xfd, 0x8ad: 0xfd, 0x8ae: 0xfd, 0x8af: 0xfd, -+ 0x8b0: 0xfd, 0x8b1: 0xfd, 0x8b2: 0xfd, 0x8b3: 0xfd, 0x8b4: 0xfd, 0x8b5: 0xfd, 0x8b6: 0xfd, 0x8b7: 0xfd, -+ 0x8b8: 0xfd, 0x8b9: 0xfd, 0x8ba: 0xfd, 0x8bb: 0xfd, 0x8bc: 0xfd, 0x8bd: 0xfd, 0x8be: 0xfd, 0x8bf: 0xfd, - // 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, -@@ -2393,10 +2536,10 @@ var idnaIndex = [2368]uint16{ - } - - // idnaSparseOffset: 292 entries, 584 bytes --var idnaSparseOffset = []uint16{0x0, 0x8, 0x19, 0x25, 0x27, 0x2c, 0x33, 0x3e, 0x4a, 0x4e, 0x5d, 0x62, 0x6c, 0x78, 0x85, 0x8b, 0x94, 0xa4, 0xb2, 0xbd, 0xca, 0xdb, 0xe5, 0xec, 0xf9, 0x10a, 0x111, 0x11c, 0x12b, 0x139, 0x143, 0x145, 0x14a, 0x14d, 0x150, 0x152, 0x15e, 0x169, 0x171, 0x177, 0x17d, 0x182, 0x187, 0x18a, 0x18e, 0x194, 0x199, 0x1a5, 0x1af, 0x1b5, 0x1c6, 0x1d0, 0x1d3, 0x1db, 0x1de, 0x1eb, 0x1f3, 0x1f7, 0x1fe, 0x206, 0x216, 0x222, 0x225, 0x22f, 0x23b, 0x247, 0x253, 0x25b, 0x260, 0x26d, 0x27e, 0x282, 0x28d, 0x291, 0x29a, 0x2a2, 0x2a8, 0x2ad, 0x2b0, 0x2b4, 0x2ba, 0x2be, 0x2c2, 0x2c6, 0x2cc, 0x2d4, 0x2db, 0x2e6, 0x2f0, 0x2f4, 0x2f7, 0x2fd, 0x301, 0x303, 0x306, 0x308, 0x30b, 0x315, 0x318, 0x327, 0x32b, 0x330, 0x333, 0x337, 0x33c, 0x341, 0x347, 0x358, 0x368, 0x36e, 0x372, 0x381, 0x386, 0x38e, 0x398, 0x3a3, 0x3ab, 0x3bc, 0x3c5, 0x3d5, 0x3e2, 0x3ee, 0x3f3, 0x400, 0x404, 0x409, 0x40b, 0x40d, 0x411, 0x413, 0x417, 0x420, 0x426, 0x42a, 0x43a, 0x444, 0x449, 0x44c, 0x452, 0x459, 0x45e, 0x462, 0x468, 0x46d, 0x476, 0x47b, 0x481, 0x488, 0x48f, 0x496, 0x49a, 0x49f, 0x4a2, 0x4a7, 0x4b3, 0x4b9, 0x4be, 0x4c5, 0x4cd, 0x4d2, 0x4d6, 0x4e6, 0x4ed, 0x4f1, 0x4f5, 0x4fc, 0x4fe, 0x501, 0x504, 0x508, 0x511, 0x515, 0x51d, 0x525, 0x52d, 0x539, 0x545, 0x54b, 0x554, 0x560, 0x567, 0x570, 0x57b, 0x582, 0x591, 0x59e, 0x5ab, 0x5b4, 0x5b8, 0x5c7, 0x5cf, 0x5da, 0x5e3, 0x5e9, 0x5f1, 0x5fa, 0x605, 0x608, 0x614, 0x61d, 0x620, 0x625, 0x62e, 0x633, 0x640, 0x64b, 0x654, 0x65e, 0x661, 0x66b, 0x674, 0x680, 0x68d, 0x69a, 0x6a8, 0x6af, 0x6b3, 0x6b7, 0x6ba, 0x6bf, 0x6c2, 0x6c7, 0x6ca, 0x6d1, 0x6d8, 0x6dc, 0x6e7, 0x6ea, 0x6ed, 0x6f0, 0x6f6, 0x6fc, 0x705, 0x708, 0x70b, 0x70e, 0x711, 0x718, 0x71b, 0x720, 0x72a, 0x72d, 0x731, 0x740, 0x74c, 0x750, 0x755, 0x759, 0x75e, 0x762, 0x767, 0x770, 0x77b, 0x781, 0x787, 0x78d, 0x793, 0x79c, 0x79f, 0x7a2, 0x7a6, 0x7aa, 0x7ae, 0x7b4, 0x7ba, 0x7bf, 0x7c2, 0x7d2, 0x7d9, 0x7dc, 0x7e1, 0x7e5, 0x7eb, 0x7f2, 0x7f6, 0x7fa, 0x803, 0x80a, 0x80f, 0x813, 0x821, 0x824, 0x827, 0x82b, 0x82f, 0x832, 0x842, 0x853, 0x856, 0x85b, 0x85d, 0x85f} -+var idnaSparseOffset = []uint16{0x0, 0x8, 0x19, 0x25, 0x27, 0x2c, 0x33, 0x3e, 0x4a, 0x4e, 0x5d, 0x62, 0x6c, 0x78, 0x85, 0x8b, 0x94, 0xa4, 0xb2, 0xbd, 0xca, 0xdb, 0xe5, 0xec, 0xf9, 0x10a, 0x111, 0x11c, 0x12b, 0x139, 0x143, 0x145, 0x14a, 0x14d, 0x150, 0x152, 0x15e, 0x169, 0x171, 0x177, 0x17d, 0x182, 0x187, 0x18a, 0x18e, 0x194, 0x199, 0x1a5, 0x1af, 0x1b5, 0x1c6, 0x1d0, 0x1d3, 0x1db, 0x1de, 0x1eb, 0x1f3, 0x1f7, 0x1fe, 0x206, 0x216, 0x222, 0x225, 0x22f, 0x23b, 0x247, 0x253, 0x25b, 0x260, 0x26d, 0x27e, 0x282, 0x28d, 0x291, 0x29a, 0x2a2, 0x2a8, 0x2ad, 0x2b0, 0x2b4, 0x2ba, 0x2be, 0x2c2, 0x2c6, 0x2cc, 0x2d4, 0x2db, 0x2e6, 0x2f0, 0x2f4, 0x2f7, 0x2fd, 0x301, 0x303, 0x306, 0x308, 0x30b, 0x315, 0x318, 0x327, 0x32b, 0x32f, 0x331, 0x33a, 0x33d, 0x341, 0x346, 0x34b, 0x351, 0x362, 0x372, 0x378, 0x37c, 0x38b, 0x390, 0x398, 0x3a2, 0x3ad, 0x3b5, 0x3c6, 0x3cf, 0x3df, 0x3ec, 0x3f8, 0x3fd, 0x40a, 0x40e, 0x413, 0x415, 0x417, 0x41b, 0x41d, 0x421, 0x42a, 0x430, 0x434, 0x444, 0x44e, 0x453, 0x456, 0x45c, 0x463, 0x468, 0x46c, 0x472, 0x477, 0x480, 0x485, 0x48b, 0x492, 0x499, 0x4a0, 0x4a4, 0x4a9, 0x4ac, 0x4b1, 0x4bd, 0x4c3, 0x4c8, 0x4cf, 0x4d7, 0x4dc, 0x4e0, 0x4f0, 0x4f7, 0x4fb, 0x4ff, 0x506, 0x508, 0x50b, 0x50e, 0x512, 0x51b, 0x51f, 0x527, 0x52f, 0x537, 0x543, 0x54f, 0x555, 0x55e, 0x56a, 0x571, 0x57a, 0x585, 0x58c, 0x59b, 0x5a8, 0x5b5, 0x5be, 0x5c2, 0x5d1, 0x5d9, 0x5e4, 0x5ed, 0x5f3, 0x5fb, 0x604, 0x60f, 0x612, 0x61e, 0x627, 0x62a, 0x62f, 0x638, 0x63d, 0x64a, 0x655, 0x65e, 0x668, 0x66b, 0x675, 0x67e, 0x68a, 0x697, 0x6a4, 0x6b2, 0x6b9, 0x6bd, 0x6c1, 0x6c4, 0x6c9, 0x6cc, 0x6d1, 0x6d4, 0x6db, 0x6e2, 0x6e6, 0x6f1, 0x6f4, 0x6f7, 0x6fa, 0x700, 0x706, 0x70f, 0x712, 0x715, 0x718, 0x71b, 0x722, 0x725, 0x72a, 0x734, 0x737, 0x73b, 0x74a, 0x756, 0x75a, 0x75f, 0x763, 0x768, 0x76c, 0x771, 0x77a, 0x785, 0x78b, 0x791, 0x797, 0x79d, 0x7a6, 0x7a9, 0x7ac, 0x7b0, 0x7b4, 0x7b8, 0x7be, 0x7c4, 0x7c9, 0x7cc, 0x7dc, 0x7e3, 0x7e6, 0x7eb, 0x7ef, 0x7f5, 0x7fc, 0x800, 0x804, 0x80d, 0x814, 0x819, 0x81d, 0x82b, 0x82e, 0x831, 0x835, 0x839, 0x83c, 0x83f, 0x844, 0x846, 0x848} - --// idnaSparseValues: 2146 entries, 8584 bytes --var idnaSparseValues = [2146]valueRange{ -+// idnaSparseValues: 2123 entries, 8492 bytes -+var idnaSparseValues = [2123]valueRange{ - // Block 0x0, offset 0x0 - {value: 0x0000, lo: 0x07}, - {value: 0xe105, lo: 0x80, hi: 0x96}, -@@ -2427,15 +2570,15 @@ var idnaSparseValues = [2146]valueRange{ - // Block 0x2, offset 0x19 - {value: 0x0000, lo: 0x0b}, - {value: 0x0008, lo: 0x80, hi: 0xaf}, -- {value: 0x0249, lo: 0xb0, hi: 0xb0}, -+ {value: 0x00a9, lo: 0xb0, hi: 0xb0}, - {value: 0x037d, lo: 0xb1, hi: 0xb1}, -- {value: 0x0259, lo: 0xb2, hi: 0xb2}, -- {value: 0x0269, lo: 0xb3, hi: 0xb3}, -+ {value: 0x00b1, lo: 0xb2, hi: 0xb2}, -+ {value: 0x00b9, 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: 0x00c1, lo: 0xb7, hi: 0xb7}, -+ {value: 0x00c9, lo: 0xb8, hi: 0xb8}, - {value: 0x0008, lo: 0xb9, hi: 0xbf}, - // Block 0x3, offset 0x25 - {value: 0x0000, lo: 0x01}, -@@ -2457,7 +2600,7 @@ var idnaSparseValues = [2146]valueRange{ - // Block 0x6, offset 0x33 - {value: 0x0000, lo: 0x0a}, - {value: 0x0008, lo: 0x80, hi: 0x86}, -- {value: 0x0401, lo: 0x87, hi: 0x87}, -+ {value: 0x0131, lo: 0x87, hi: 0x87}, - {value: 0x0008, lo: 0x88, hi: 0x88}, - {value: 0x0018, lo: 0x89, hi: 0x8a}, - {value: 0x0040, lo: 0x8b, hi: 0x8c}, -@@ -2643,7 +2786,7 @@ var idnaSparseValues = [2146]valueRange{ - {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: 0x01f1, lo: 0xb3, hi: 0xb3}, - {value: 0x3308, lo: 0xb4, hi: 0xb9}, - {value: 0x3b08, lo: 0xba, hi: 0xba}, - {value: 0x0040, lo: 0xbb, hi: 0xbe}, -@@ -2666,8 +2809,8 @@ var idnaSparseValues = [2146]valueRange{ - {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: 0x0201, lo: 0x9c, hi: 0x9c}, -+ {value: 0x0209, lo: 0x9d, hi: 0x9d}, - {value: 0x0008, lo: 0x9e, hi: 0x9f}, - {value: 0x0040, lo: 0xa0, hi: 0xbf}, - // Block 0x18, offset 0xf9 -@@ -3075,13 +3218,13 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0018, lo: 0xbe, hi: 0xbf}, - // Block 0x44, offset 0x260 - {value: 0x0000, lo: 0x0c}, -- {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: 0x02a9, lo: 0x80, hi: 0x80}, -+ {value: 0x02b1, lo: 0x81, hi: 0x81}, -+ {value: 0x02b9, lo: 0x82, hi: 0x82}, -+ {value: 0x02c1, lo: 0x83, hi: 0x83}, -+ {value: 0x02c9, lo: 0x84, hi: 0x85}, -+ {value: 0x02d1, lo: 0x86, hi: 0x86}, -+ {value: 0x02d9, lo: 0x87, hi: 0x87}, - {value: 0x057d, lo: 0x88, hi: 0x88}, - {value: 0x0040, lo: 0x89, hi: 0x8f}, - {value: 0x059d, lo: 0x90, hi: 0xba}, -@@ -3133,18 +3276,18 @@ var idnaSparseValues = [2146]valueRange{ - {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: 0x0851, 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 0x29a - {value: 0x0000, lo: 0x07}, - {value: 0x0018, lo: 0x80, hi: 0xab}, -- {value: 0x24f1, lo: 0xac, hi: 0xac}, -- {value: 0x2529, lo: 0xad, hi: 0xad}, -+ {value: 0x0859, lo: 0xac, hi: 0xac}, -+ {value: 0x0861, lo: 0xad, hi: 0xad}, - {value: 0x0018, lo: 0xae, hi: 0xae}, -- {value: 0x2579, lo: 0xaf, hi: 0xaf}, -- {value: 0x25b1, lo: 0xb0, hi: 0xb0}, -+ {value: 0x0869, lo: 0xaf, hi: 0xaf}, -+ {value: 0x0871, lo: 0xb0, hi: 0xb0}, - {value: 0x0018, lo: 0xb1, hi: 0xbf}, - // Block 0x4b, offset 0x2a2 - {value: 0x0000, lo: 0x05}, -@@ -3166,19 +3309,19 @@ var idnaSparseValues = [2146]valueRange{ - // Block 0x4e, offset 0x2b0 - {value: 0x0000, lo: 0x03}, - {value: 0x0018, lo: 0x80, hi: 0x8b}, -- {value: 0x28c1, lo: 0x8c, hi: 0x8c}, -+ {value: 0x0929, lo: 0x8c, hi: 0x8c}, - {value: 0x0018, lo: 0x8d, hi: 0xbf}, - // Block 0x4f, offset 0x2b4 - {value: 0x0000, lo: 0x05}, - {value: 0x0018, lo: 0x80, hi: 0xb3}, - {value: 0x0e7e, lo: 0xb4, hi: 0xb4}, -- {value: 0x292a, lo: 0xb5, hi: 0xb5}, -+ {value: 0x0932, lo: 0xb5, hi: 0xb5}, - {value: 0x0e9e, lo: 0xb6, hi: 0xb6}, - {value: 0x0018, lo: 0xb7, hi: 0xbf}, - // Block 0x50, offset 0x2ba - {value: 0x0000, lo: 0x03}, - {value: 0x0018, lo: 0x80, hi: 0x9b}, -- {value: 0x2941, lo: 0x9c, hi: 0x9c}, -+ {value: 0x0939, lo: 0x9c, hi: 0x9c}, - {value: 0x0018, lo: 0x9d, hi: 0xbf}, - // Block 0x51, offset 0x2be - {value: 0x0000, lo: 0x03}, -@@ -3277,16 +3420,16 @@ var idnaSparseValues = [2146]valueRange{ - {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: 0x096a, lo: 0x9b, hi: 0x9b}, -+ {value: 0x0972, lo: 0x9c, hi: 0x9c}, - {value: 0x0008, lo: 0x9d, hi: 0x9e}, -- {value: 0x2a31, lo: 0x9f, hi: 0x9f}, -+ {value: 0x0979, lo: 0x9f, hi: 0x9f}, - {value: 0x0018, lo: 0xa0, hi: 0xa0}, - {value: 0x0008, lo: 0xa1, hi: 0xbf}, - // Block 0x61, offset 0x315 - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0xbe}, -- {value: 0x2a69, lo: 0xbf, hi: 0xbf}, -+ {value: 0x0981, lo: 0xbf, hi: 0xbf}, - // Block 0x62, offset 0x318 - {value: 0x0000, lo: 0x0e}, - {value: 0x0040, lo: 0x80, hi: 0x84}, -@@ -3309,46 +3452,58 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0040, lo: 0xa4, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0x64, offset 0x32b -- {value: 0x0030, lo: 0x04}, -- {value: 0x2aa2, lo: 0x80, hi: 0x9d}, -- {value: 0x305a, lo: 0x9e, hi: 0x9e}, -+ {value: 0x0008, lo: 0x03}, -+ {value: 0x098a, lo: 0x80, hi: 0x9e}, - {value: 0x0040, lo: 0x9f, hi: 0x9f}, -- {value: 0x30a2, lo: 0xa0, hi: 0xbf}, -- // Block 0x65, offset 0x330 -+ {value: 0x0a82, lo: 0xa0, hi: 0xbf}, -+ // Block 0x65, offset 0x32f -+ {value: 0x0008, lo: 0x01}, -+ {value: 0x0d19, lo: 0x80, hi: 0xbf}, -+ // Block 0x66, offset 0x331 -+ {value: 0x0008, lo: 0x08}, -+ {value: 0x0f19, lo: 0x80, hi: 0xb0}, -+ {value: 0x4045, lo: 0xb1, hi: 0xb1}, -+ {value: 0x10a1, lo: 0xb2, hi: 0xb3}, -+ {value: 0x4065, lo: 0xb4, hi: 0xb4}, -+ {value: 0x10b1, lo: 0xb5, hi: 0xb7}, -+ {value: 0x4085, lo: 0xb8, hi: 0xb8}, -+ {value: 0x4085, lo: 0xb9, hi: 0xb9}, -+ {value: 0x10c9, lo: 0xba, hi: 0xbf}, -+ // Block 0x67, offset 0x33a - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0xbc}, - {value: 0x0040, lo: 0xbd, hi: 0xbf}, -- // Block 0x66, offset 0x333 -+ // Block 0x68, offset 0x33d - {value: 0x0000, lo: 0x03}, - {value: 0x0008, lo: 0x80, hi: 0x8c}, - {value: 0x0040, lo: 0x8d, hi: 0x8f}, - {value: 0x0018, lo: 0x90, hi: 0xbf}, -- // Block 0x67, offset 0x337 -+ // Block 0x69, offset 0x341 - {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 0x68, offset 0x33c -+ // Block 0x6a, offset 0x346 - {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 0x69, offset 0x341 -+ // Block 0x6b, offset 0x34b - {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 0x6a, offset 0x347 -+ // Block 0x6c, offset 0x351 - {value: 0x0000, lo: 0x10}, - {value: 0x0040, lo: 0x80, hi: 0x81}, - {value: 0xe00d, lo: 0x82, hi: 0x82}, - {value: 0x0008, lo: 0x83, hi: 0x83}, - {value: 0x03f5, lo: 0x84, hi: 0x84}, -- {value: 0x1329, lo: 0x85, hi: 0x85}, -+ {value: 0x0479, lo: 0x85, hi: 0x85}, - {value: 0x447d, lo: 0x86, hi: 0x86}, - {value: 0xe07d, lo: 0x87, hi: 0x87}, - {value: 0x0008, lo: 0x88, hi: 0x88}, -@@ -3357,10 +3512,10 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0040, lo: 0x8b, hi: 0xb4}, - {value: 0xe01d, lo: 0xb5, hi: 0xb5}, - {value: 0x0008, lo: 0xb6, hi: 0xb7}, -- {value: 0x2009, lo: 0xb8, hi: 0xb8}, -- {value: 0x6ec1, lo: 0xb9, hi: 0xb9}, -+ {value: 0x0741, lo: 0xb8, hi: 0xb8}, -+ {value: 0x13f1, lo: 0xb9, hi: 0xb9}, - {value: 0x0008, lo: 0xba, hi: 0xbf}, -- // Block 0x6b, offset 0x358 -+ // Block 0x6d, offset 0x362 - {value: 0x0000, lo: 0x0f}, - {value: 0x0008, lo: 0x80, hi: 0x81}, - {value: 0x3308, lo: 0x82, hi: 0x82}, -@@ -3377,19 +3532,19 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0040, lo: 0xad, hi: 0xaf}, - {value: 0x0018, lo: 0xb0, hi: 0xb9}, - {value: 0x0040, lo: 0xba, hi: 0xbf}, -- // Block 0x6c, offset 0x368 -+ // Block 0x6e, 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 0x6d, offset 0x36e -+ // Block 0x6f, 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 0x6e, offset 0x372 -+ // Block 0x70, offset 0x37c - {value: 0x0000, lo: 0x0e}, - {value: 0x3008, lo: 0x80, hi: 0x83}, - {value: 0x3b08, lo: 0x84, hi: 0x84}, -@@ -3405,13 +3560,13 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0018, lo: 0xbc, hi: 0xbc}, - {value: 0x0008, lo: 0xbd, hi: 0xbe}, - {value: 0x3308, lo: 0xbf, hi: 0xbf}, -- // Block 0x6f, offset 0x381 -+ // Block 0x71, 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 0x70, offset 0x386 -+ // Block 0x72, offset 0x390 - {value: 0x0000, lo: 0x07}, - {value: 0x0008, lo: 0x80, hi: 0x86}, - {value: 0x3308, lo: 0x87, hi: 0x91}, -@@ -3420,7 +3575,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0040, lo: 0x94, hi: 0x9e}, - {value: 0x0018, lo: 0x9f, hi: 0xbc}, - {value: 0x0040, lo: 0xbd, hi: 0xbf}, -- // Block 0x71, offset 0x38e -+ // Block 0x73, offset 0x398 - {value: 0x0000, lo: 0x09}, - {value: 0x3308, lo: 0x80, hi: 0x82}, - {value: 0x3008, lo: 0x83, hi: 0x83}, -@@ -3431,7 +3586,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x3008, lo: 0xba, hi: 0xbb}, - {value: 0x3308, lo: 0xbc, hi: 0xbd}, - {value: 0x3008, lo: 0xbe, hi: 0xbf}, -- // Block 0x72, offset 0x398 -+ // Block 0x74, offset 0x3a2 - {value: 0x0000, lo: 0x0a}, - {value: 0x3808, lo: 0x80, hi: 0x80}, - {value: 0x0018, lo: 0x81, hi: 0x8d}, -@@ -3443,7 +3598,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x3308, lo: 0xa5, hi: 0xa5}, - {value: 0x0008, lo: 0xa6, hi: 0xbe}, - {value: 0x0040, lo: 0xbf, hi: 0xbf}, -- // Block 0x73, offset 0x3a3 -+ // Block 0x75, offset 0x3ad - {value: 0x0000, lo: 0x07}, - {value: 0x0008, lo: 0x80, hi: 0xa8}, - {value: 0x3308, lo: 0xa9, hi: 0xae}, -@@ -3452,7 +3607,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x3008, lo: 0xb3, hi: 0xb4}, - {value: 0x3308, lo: 0xb5, hi: 0xb6}, - {value: 0x0040, lo: 0xb7, hi: 0xbf}, -- // Block 0x74, offset 0x3ab -+ // Block 0x76, offset 0x3b5 - {value: 0x0000, lo: 0x10}, - {value: 0x0008, lo: 0x80, hi: 0x82}, - {value: 0x3308, lo: 0x83, hi: 0x83}, -@@ -3470,7 +3625,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x3308, lo: 0xbc, hi: 0xbc}, - {value: 0x3008, lo: 0xbd, hi: 0xbd}, - {value: 0x0008, lo: 0xbe, hi: 0xbf}, -- // Block 0x75, offset 0x3bc -+ // Block 0x77, offset 0x3c6 - {value: 0x0000, lo: 0x08}, - {value: 0x0008, lo: 0x80, hi: 0xaf}, - {value: 0x3308, lo: 0xb0, hi: 0xb0}, -@@ -3480,7 +3635,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x3308, lo: 0xb7, hi: 0xb8}, - {value: 0x0008, lo: 0xb9, hi: 0xbd}, - {value: 0x3308, lo: 0xbe, hi: 0xbf}, -- // Block 0x76, offset 0x3c5 -+ // Block 0x78, offset 0x3cf - {value: 0x0000, lo: 0x0f}, - {value: 0x0008, lo: 0x80, hi: 0x80}, - {value: 0x3308, lo: 0x81, hi: 0x81}, -@@ -3497,7 +3652,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x3008, lo: 0xb5, hi: 0xb5}, - {value: 0x3b08, lo: 0xb6, hi: 0xb6}, - {value: 0x0040, lo: 0xb7, hi: 0xbf}, -- // Block 0x77, offset 0x3d5 -+ // Block 0x79, offset 0x3df - {value: 0x0000, lo: 0x0c}, - {value: 0x0040, lo: 0x80, hi: 0x80}, - {value: 0x0008, lo: 0x81, hi: 0x86}, -@@ -3511,26 +3666,26 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0008, lo: 0xa8, hi: 0xae}, - {value: 0x0040, lo: 0xaf, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xbf}, -- // Block 0x78, offset 0x3e2 -+ // Block 0x7a, offset 0x3ec - {value: 0x0000, lo: 0x0b}, - {value: 0x0008, lo: 0x80, hi: 0x9a}, - {value: 0x0018, lo: 0x9b, hi: 0x9b}, - {value: 0x449d, lo: 0x9c, hi: 0x9c}, - {value: 0x44b5, lo: 0x9d, hi: 0x9d}, -- {value: 0x2971, lo: 0x9e, hi: 0x9e}, -+ {value: 0x0941, lo: 0x9e, hi: 0x9e}, - {value: 0xe06d, lo: 0x9f, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xa8}, -- {value: 0x6ed9, lo: 0xa9, hi: 0xa9}, -+ {value: 0x13f9, lo: 0xa9, hi: 0xa9}, - {value: 0x0018, lo: 0xaa, hi: 0xab}, - {value: 0x0040, lo: 0xac, hi: 0xaf}, - {value: 0x44cd, lo: 0xb0, hi: 0xbf}, -- // Block 0x79, offset 0x3ee -+ // Block 0x7b, offset 0x3f8 - {value: 0x0000, lo: 0x04}, - {value: 0x44ed, lo: 0x80, hi: 0x8f}, - {value: 0x450d, lo: 0x90, hi: 0x9f}, - {value: 0x452d, lo: 0xa0, hi: 0xaf}, - {value: 0x450d, lo: 0xb0, hi: 0xbf}, -- // Block 0x7a, offset 0x3f3 -+ // Block 0x7c, offset 0x3fd - {value: 0x0000, lo: 0x0c}, - {value: 0x0008, lo: 0x80, hi: 0xa2}, - {value: 0x3008, lo: 0xa3, hi: 0xa4}, -@@ -3544,76 +3699,76 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0040, lo: 0xae, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xb9}, - {value: 0x0040, lo: 0xba, hi: 0xbf}, -- // Block 0x7b, offset 0x400 -+ // Block 0x7d, offset 0x40a - {value: 0x0000, lo: 0x03}, - {value: 0x0008, lo: 0x80, hi: 0xa3}, - {value: 0x0040, lo: 0xa4, hi: 0xaf}, - {value: 0x0018, lo: 0xb0, hi: 0xbf}, -- // Block 0x7c, offset 0x404 -+ // Block 0x7e, offset 0x40e - {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 0x7d, offset 0x409 -+ // Block 0x7f, offset 0x413 - {value: 0x0000, lo: 0x01}, - {value: 0x0040, lo: 0x80, hi: 0xbf}, -- // Block 0x7e, offset 0x40b -+ // Block 0x80, offset 0x415 - {value: 0x0020, lo: 0x01}, - {value: 0x454d, lo: 0x80, hi: 0xbf}, -- // Block 0x7f, offset 0x40d -+ // Block 0x81, offset 0x417 - {value: 0x0020, lo: 0x03}, - {value: 0x4d4d, lo: 0x80, hi: 0x94}, - {value: 0x4b0d, lo: 0x95, hi: 0x95}, - {value: 0x4fed, lo: 0x96, hi: 0xbf}, -- // Block 0x80, offset 0x411 -+ // Block 0x82, offset 0x41b - {value: 0x0020, lo: 0x01}, - {value: 0x552d, lo: 0x80, hi: 0xbf}, -- // Block 0x81, offset 0x413 -+ // Block 0x83, offset 0x41d - {value: 0x0020, lo: 0x03}, - {value: 0x5d2d, lo: 0x80, hi: 0x84}, - {value: 0x568d, lo: 0x85, hi: 0x85}, - {value: 0x5dcd, lo: 0x86, hi: 0xbf}, -- // Block 0x82, offset 0x417 -+ // Block 0x84, offset 0x421 - {value: 0x0020, lo: 0x08}, - {value: 0x6b8d, lo: 0x80, hi: 0x8f}, - {value: 0x6d4d, lo: 0x90, hi: 0x90}, - {value: 0x6d8d, lo: 0x91, hi: 0xab}, -- {value: 0x6ef1, lo: 0xac, hi: 0xac}, -+ {value: 0x1401, lo: 0xac, hi: 0xac}, - {value: 0x70ed, lo: 0xad, hi: 0xad}, - {value: 0x0040, lo: 0xae, hi: 0xae}, - {value: 0x0040, lo: 0xaf, hi: 0xaf}, - {value: 0x710d, lo: 0xb0, hi: 0xbf}, -- // Block 0x83, offset 0x420 -+ // Block 0x85, offset 0x42a - {value: 0x0020, lo: 0x05}, - {value: 0x730d, lo: 0x80, hi: 0xad}, - {value: 0x656d, lo: 0xae, hi: 0xae}, - {value: 0x78cd, lo: 0xaf, hi: 0xb5}, - {value: 0x6f8d, lo: 0xb6, hi: 0xb6}, - {value: 0x79ad, lo: 0xb7, hi: 0xbf}, -- // Block 0x84, offset 0x426 -- {value: 0x0028, lo: 0x03}, -- {value: 0x7c71, lo: 0x80, hi: 0x82}, -- {value: 0x7c31, lo: 0x83, hi: 0x83}, -- {value: 0x7ce9, lo: 0x84, hi: 0xbf}, -- // Block 0x85, offset 0x42a -- {value: 0x0038, lo: 0x0f}, -- {value: 0x9e01, lo: 0x80, hi: 0x83}, -- {value: 0x9ea9, lo: 0x84, hi: 0x85}, -- {value: 0x9ee1, lo: 0x86, hi: 0x87}, -- {value: 0x9f19, lo: 0x88, hi: 0x8f}, -+ // Block 0x86, offset 0x430 -+ {value: 0x0008, lo: 0x03}, -+ {value: 0x1751, lo: 0x80, hi: 0x82}, -+ {value: 0x1741, lo: 0x83, hi: 0x83}, -+ {value: 0x1769, lo: 0x84, hi: 0xbf}, -+ // Block 0x87, offset 0x434 -+ {value: 0x0008, lo: 0x0f}, -+ {value: 0x1d81, lo: 0x80, hi: 0x83}, -+ {value: 0x1d99, lo: 0x84, hi: 0x85}, -+ {value: 0x1da1, lo: 0x86, hi: 0x87}, -+ {value: 0x1da9, lo: 0x88, hi: 0x8f}, - {value: 0x0040, lo: 0x90, hi: 0x90}, - {value: 0x0040, lo: 0x91, hi: 0x91}, -- {value: 0xa0d9, lo: 0x92, hi: 0x97}, -- {value: 0xa1f1, lo: 0x98, hi: 0x9c}, -- {value: 0xa2d1, lo: 0x9d, hi: 0xb3}, -- {value: 0x9d91, lo: 0xb4, hi: 0xb4}, -- {value: 0x9e01, lo: 0xb5, hi: 0xb5}, -- {value: 0xa7d9, lo: 0xb6, hi: 0xbb}, -- {value: 0xa8b9, lo: 0xbc, hi: 0xbc}, -- {value: 0xa849, lo: 0xbd, hi: 0xbd}, -- {value: 0xa929, lo: 0xbe, hi: 0xbf}, -- // Block 0x86, offset 0x43a -+ {value: 0x1de9, lo: 0x92, hi: 0x97}, -+ {value: 0x1e11, lo: 0x98, hi: 0x9c}, -+ {value: 0x1e31, lo: 0x9d, hi: 0xb3}, -+ {value: 0x1d71, lo: 0xb4, hi: 0xb4}, -+ {value: 0x1d81, lo: 0xb5, hi: 0xb5}, -+ {value: 0x1ee9, lo: 0xb6, hi: 0xbb}, -+ {value: 0x1f09, lo: 0xbc, hi: 0xbc}, -+ {value: 0x1ef9, lo: 0xbd, hi: 0xbd}, -+ {value: 0x1f19, lo: 0xbe, hi: 0xbf}, -+ // Block 0x88, offset 0x444 - {value: 0x0000, lo: 0x09}, - {value: 0x0008, lo: 0x80, hi: 0x8b}, - {value: 0x0040, lo: 0x8c, hi: 0x8c}, -@@ -3624,24 +3779,24 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0008, lo: 0xbc, hi: 0xbd}, - {value: 0x0040, lo: 0xbe, hi: 0xbe}, - {value: 0x0008, lo: 0xbf, hi: 0xbf}, -- // Block 0x87, offset 0x444 -+ // Block 0x89, offset 0x44e - {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 0x449 -+ // Block 0x8a, offset 0x453 - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0xba}, - {value: 0x0040, lo: 0xbb, hi: 0xbf}, -- // Block 0x89, offset 0x44c -+ // Block 0x8b, offset 0x456 - {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 0x452 -+ // Block 0x8c, offset 0x45c - {value: 0x0000, lo: 0x06}, - {value: 0x0018, lo: 0x80, hi: 0x8e}, - {value: 0x0040, lo: 0x8f, hi: 0x8f}, -@@ -3649,31 +3804,31 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0040, lo: 0x9d, hi: 0x9f}, - {value: 0x0018, lo: 0xa0, hi: 0xa0}, - {value: 0x0040, lo: 0xa1, hi: 0xbf}, -- // Block 0x8b, offset 0x459 -+ // Block 0x8d, offset 0x463 - {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 0x45e -+ // Block 0x8e, offset 0x468 - {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 0x462 -+ // Block 0x8f, offset 0x46c - {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 0x468 -+ // Block 0x90, offset 0x472 - {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 0x46d -+ // Block 0x91, offset 0x477 - {value: 0x0000, lo: 0x08}, - {value: 0x0008, lo: 0x80, hi: 0x80}, - {value: 0x0018, lo: 0x81, hi: 0x81}, -@@ -3683,20 +3838,20 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0008, lo: 0x90, hi: 0xb5}, - {value: 0x3308, lo: 0xb6, hi: 0xba}, - {value: 0x0040, lo: 0xbb, hi: 0xbf}, -- // Block 0x90, offset 0x476 -+ // Block 0x92, offset 0x480 - {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 0x47b -+ // Block 0x93, offset 0x485 - {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 0x481 -+ // Block 0x94, offset 0x48b - {value: 0x0000, lo: 0x06}, - {value: 0xe145, lo: 0x80, hi: 0x87}, - {value: 0xe1c5, lo: 0x88, hi: 0x8f}, -@@ -3704,7 +3859,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x8b0d, lo: 0x98, hi: 0x9f}, - {value: 0x8b25, lo: 0xa0, hi: 0xa7}, - {value: 0x0008, lo: 0xa8, hi: 0xbf}, -- // Block 0x93, offset 0x488 -+ // Block 0x95, offset 0x492 - {value: 0x0000, lo: 0x06}, - {value: 0x0008, lo: 0x80, hi: 0x9d}, - {value: 0x0040, lo: 0x9e, hi: 0x9f}, -@@ -3712,7 +3867,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0040, lo: 0xaa, hi: 0xaf}, - {value: 0x8b25, lo: 0xb0, hi: 0xb7}, - {value: 0x8b0d, lo: 0xb8, hi: 0xbf}, -- // Block 0x94, offset 0x48f -+ // Block 0x96, offset 0x499 - {value: 0x0000, lo: 0x06}, - {value: 0xe145, lo: 0x80, hi: 0x87}, - {value: 0xe1c5, lo: 0x88, hi: 0x8f}, -@@ -3720,28 +3875,28 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0040, lo: 0x94, hi: 0x97}, - {value: 0x0008, lo: 0x98, hi: 0xbb}, - {value: 0x0040, lo: 0xbc, hi: 0xbf}, -- // Block 0x95, offset 0x496 -+ // Block 0x97, offset 0x4a0 - {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 0x49a -+ // Block 0x98, offset 0x4a4 - {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 0x49f -+ // Block 0x99, offset 0x4a9 - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0xb6}, - {value: 0x0040, lo: 0xb7, hi: 0xbf}, -- // Block 0x98, offset 0x4a2 -+ // Block 0x9a, offset 0x4ac - {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 0x4a7 -+ // Block 0x9b, offset 0x4b1 - {value: 0x0000, lo: 0x0b}, - {value: 0x0808, lo: 0x80, hi: 0x85}, - {value: 0x0040, lo: 0x86, hi: 0x87}, -@@ -3754,20 +3909,20 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0808, lo: 0xbc, hi: 0xbc}, - {value: 0x0040, lo: 0xbd, hi: 0xbe}, - {value: 0x0808, lo: 0xbf, hi: 0xbf}, -- // Block 0x9a, offset 0x4b3 -+ // Block 0x9c, offset 0x4bd - {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 0x4b9 -+ // Block 0x9d, offset 0x4c3 - {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 0x4be -+ // Block 0x9e, offset 0x4c8 - {value: 0x0000, lo: 0x06}, - {value: 0x0040, lo: 0x80, hi: 0x9f}, - {value: 0x0808, lo: 0xa0, hi: 0xb2}, -@@ -3775,7 +3930,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0808, lo: 0xb4, hi: 0xb5}, - {value: 0x0040, lo: 0xb6, hi: 0xba}, - {value: 0x0818, lo: 0xbb, hi: 0xbf}, -- // Block 0x9d, offset 0x4c5 -+ // Block 0x9f, offset 0x4cf - {value: 0x0000, lo: 0x07}, - {value: 0x0808, lo: 0x80, hi: 0x95}, - {value: 0x0818, lo: 0x96, hi: 0x9b}, -@@ -3784,18 +3939,18 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0808, lo: 0xa0, hi: 0xb9}, - {value: 0x0040, lo: 0xba, hi: 0xbe}, - {value: 0x0818, lo: 0xbf, hi: 0xbf}, -- // Block 0x9e, offset 0x4cd -+ // Block 0xa0, offset 0x4d7 - {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 0x4d2 -+ // Block 0xa1, offset 0x4dc - {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 0x4d6 -+ // Block 0xa2, offset 0x4e0 - {value: 0x0000, lo: 0x0f}, - {value: 0x0808, lo: 0x80, hi: 0x80}, - {value: 0x3308, lo: 0x81, hi: 0x83}, -@@ -3812,7 +3967,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x3308, lo: 0xb8, hi: 0xba}, - {value: 0x0040, lo: 0xbb, hi: 0xbe}, - {value: 0x3b08, lo: 0xbf, hi: 0xbf}, -- // Block 0xa1, offset 0x4e6 -+ // Block 0xa3, offset 0x4f0 - {value: 0x0000, lo: 0x06}, - {value: 0x0818, lo: 0x80, hi: 0x88}, - {value: 0x0040, lo: 0x89, hi: 0x8f}, -@@ -3820,17 +3975,17 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0040, lo: 0x99, hi: 0x9f}, - {value: 0x0808, lo: 0xa0, hi: 0xbc}, - {value: 0x0818, lo: 0xbd, hi: 0xbf}, -- // Block 0xa2, offset 0x4ed -+ // Block 0xa4, offset 0x4f7 - {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 0x4f1 -+ // Block 0xa5, offset 0x4fb - {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 0x4f5 -+ // Block 0xa6, offset 0x4ff - {value: 0x0000, lo: 0x06}, - {value: 0x0808, lo: 0x80, hi: 0x95}, - {value: 0x0040, lo: 0x96, hi: 0x97}, -@@ -3838,23 +3993,23 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0808, lo: 0xa0, hi: 0xb2}, - {value: 0x0040, lo: 0xb3, hi: 0xb7}, - {value: 0x0818, lo: 0xb8, hi: 0xbf}, -- // Block 0xa5, offset 0x4fc -+ // Block 0xa7, offset 0x506 - {value: 0x0000, lo: 0x01}, - {value: 0x0808, lo: 0x80, hi: 0xbf}, -- // Block 0xa6, offset 0x4fe -+ // Block 0xa8, offset 0x508 - {value: 0x0000, lo: 0x02}, - {value: 0x0808, lo: 0x80, hi: 0x88}, - {value: 0x0040, lo: 0x89, hi: 0xbf}, -- // Block 0xa7, offset 0x501 -+ // Block 0xa9, offset 0x50b - {value: 0x0000, lo: 0x02}, - {value: 0x03dd, lo: 0x80, hi: 0xb2}, - {value: 0x0040, lo: 0xb3, hi: 0xbf}, -- // Block 0xa8, offset 0x504 -+ // Block 0xaa, offset 0x50e - {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 0x508 -+ // Block 0xab, offset 0x512 - {value: 0x0000, lo: 0x08}, - {value: 0x0908, lo: 0x80, hi: 0x80}, - {value: 0x0a08, lo: 0x81, hi: 0xa1}, -@@ -3864,12 +4019,12 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0040, lo: 0xa8, hi: 0xaf}, - {value: 0x0808, lo: 0xb0, hi: 0xb9}, - {value: 0x0040, lo: 0xba, hi: 0xbf}, -- // Block 0xaa, offset 0x511 -+ // Block 0xac, offset 0x51b - {value: 0x0000, lo: 0x03}, - {value: 0x0040, lo: 0x80, hi: 0x9f}, - {value: 0x0818, lo: 0xa0, hi: 0xbe}, - {value: 0x0040, lo: 0xbf, hi: 0xbf}, -- // Block 0xab, offset 0x515 -+ // Block 0xad, offset 0x51f - {value: 0x0000, lo: 0x07}, - {value: 0x0808, lo: 0x80, hi: 0xa9}, - {value: 0x0040, lo: 0xaa, hi: 0xaa}, -@@ -3878,7 +4033,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0040, lo: 0xae, hi: 0xaf}, - {value: 0x0808, lo: 0xb0, hi: 0xb1}, - {value: 0x0040, lo: 0xb2, hi: 0xbf}, -- // Block 0xac, offset 0x51d -+ // Block 0xae, offset 0x527 - {value: 0x0000, lo: 0x07}, - {value: 0x0808, lo: 0x80, hi: 0x9c}, - {value: 0x0818, lo: 0x9d, hi: 0xa6}, -@@ -3887,7 +4042,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0a08, lo: 0xb0, hi: 0xb2}, - {value: 0x0c08, lo: 0xb3, hi: 0xb3}, - {value: 0x0a08, lo: 0xb4, hi: 0xbf}, -- // Block 0xad, offset 0x525 -+ // Block 0xaf, offset 0x52f - {value: 0x0000, lo: 0x07}, - {value: 0x0a08, lo: 0x80, hi: 0x84}, - {value: 0x0808, lo: 0x85, hi: 0x85}, -@@ -3896,7 +4051,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0c18, lo: 0x94, hi: 0x94}, - {value: 0x0818, lo: 0x95, hi: 0x99}, - {value: 0x0040, lo: 0x9a, hi: 0xbf}, -- // Block 0xae, offset 0x52d -+ // Block 0xb0, offset 0x537 - {value: 0x0000, lo: 0x0b}, - {value: 0x0040, lo: 0x80, hi: 0xaf}, - {value: 0x0a08, lo: 0xb0, hi: 0xb0}, -@@ -3909,7 +4064,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0a08, lo: 0xbb, hi: 0xbc}, - {value: 0x0c08, lo: 0xbd, hi: 0xbd}, - {value: 0x0a08, lo: 0xbe, hi: 0xbf}, -- // Block 0xaf, offset 0x539 -+ // Block 0xb1, offset 0x543 - {value: 0x0000, lo: 0x0b}, - {value: 0x0808, lo: 0x80, hi: 0x80}, - {value: 0x0a08, lo: 0x81, hi: 0x81}, -@@ -3922,14 +4077,14 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0040, lo: 0x8c, hi: 0x9f}, - {value: 0x0808, lo: 0xa0, hi: 0xb6}, - {value: 0x0040, lo: 0xb7, hi: 0xbf}, -- // Block 0xb0, offset 0x545 -+ // Block 0xb2, offset 0x54f - {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 0xb1, offset 0x54b -+ // Block 0xb3, offset 0x555 - {value: 0x0000, lo: 0x08}, - {value: 0x3308, lo: 0x80, hi: 0x85}, - {value: 0x3b08, lo: 0x86, hi: 0x86}, -@@ -3939,7 +4094,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0008, lo: 0xa6, hi: 0xaf}, - {value: 0x0040, lo: 0xb0, hi: 0xbe}, - {value: 0x3b08, lo: 0xbf, hi: 0xbf}, -- // Block 0xb2, offset 0x554 -+ // Block 0xb4, offset 0x55e - {value: 0x0000, lo: 0x0b}, - {value: 0x3308, lo: 0x80, hi: 0x81}, - {value: 0x3008, lo: 0x82, hi: 0x82}, -@@ -3952,7 +4107,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0018, lo: 0xbb, hi: 0xbc}, - {value: 0x0040, lo: 0xbd, hi: 0xbd}, - {value: 0x0018, lo: 0xbe, hi: 0xbf}, -- // Block 0xb3, offset 0x560 -+ // Block 0xb5, offset 0x56a - {value: 0x0000, lo: 0x06}, - {value: 0x0018, lo: 0x80, hi: 0x81}, - {value: 0x0040, lo: 0x82, hi: 0x8f}, -@@ -3960,7 +4115,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0040, lo: 0xa9, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xb9}, - {value: 0x0040, lo: 0xba, hi: 0xbf}, -- // Block 0xb4, offset 0x567 -+ // Block 0xb6, offset 0x571 - {value: 0x0000, lo: 0x08}, - {value: 0x3308, lo: 0x80, hi: 0x82}, - {value: 0x0008, lo: 0x83, hi: 0xa6}, -@@ -3970,7 +4125,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x3b08, lo: 0xb3, hi: 0xb4}, - {value: 0x0040, lo: 0xb5, hi: 0xb5}, - {value: 0x0008, lo: 0xb6, hi: 0xbf}, -- // Block 0xb5, offset 0x570 -+ // Block 0xb7, offset 0x57a - {value: 0x0000, lo: 0x0a}, - {value: 0x0018, lo: 0x80, hi: 0x83}, - {value: 0x0008, lo: 0x84, hi: 0x84}, -@@ -3982,7 +4137,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0018, lo: 0xb4, hi: 0xb5}, - {value: 0x0008, lo: 0xb6, hi: 0xb6}, - {value: 0x0040, lo: 0xb7, hi: 0xbf}, -- // Block 0xb6, offset 0x57b -+ // Block 0xb8, offset 0x585 - {value: 0x0000, lo: 0x06}, - {value: 0x3308, lo: 0x80, hi: 0x81}, - {value: 0x3008, lo: 0x82, hi: 0x82}, -@@ -3990,7 +4145,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x3008, lo: 0xb3, hi: 0xb5}, - {value: 0x3308, lo: 0xb6, hi: 0xbe}, - {value: 0x3008, lo: 0xbf, hi: 0xbf}, -- // Block 0xb7, offset 0x582 -+ // Block 0xb9, offset 0x58c - {value: 0x0000, lo: 0x0e}, - {value: 0x3808, lo: 0x80, hi: 0x80}, - {value: 0x0008, lo: 0x81, hi: 0x84}, -@@ -4006,7 +4161,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0040, lo: 0xa0, hi: 0xa0}, - {value: 0x0018, lo: 0xa1, hi: 0xb4}, - {value: 0x0040, lo: 0xb5, hi: 0xbf}, -- // Block 0xb8, offset 0x591 -+ // Block 0xba, offset 0x59b - {value: 0x0000, lo: 0x0c}, - {value: 0x0008, lo: 0x80, hi: 0x91}, - {value: 0x0040, lo: 0x92, hi: 0x92}, -@@ -4020,7 +4175,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0018, lo: 0xb8, hi: 0xbd}, - {value: 0x3308, lo: 0xbe, hi: 0xbe}, - {value: 0x0040, lo: 0xbf, hi: 0xbf}, -- // Block 0xb9, offset 0x59e -+ // Block 0xbb, offset 0x5a8 - {value: 0x0000, lo: 0x0c}, - {value: 0x0008, lo: 0x80, hi: 0x86}, - {value: 0x0040, lo: 0x87, hi: 0x87}, -@@ -4034,7 +4189,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0018, lo: 0xa9, hi: 0xa9}, - {value: 0x0040, lo: 0xaa, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xbf}, -- // Block 0xba, offset 0x5ab -+ // Block 0xbc, offset 0x5b5 - {value: 0x0000, lo: 0x08}, - {value: 0x0008, lo: 0x80, hi: 0x9e}, - {value: 0x3308, lo: 0x9f, hi: 0x9f}, -@@ -4044,12 +4199,12 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0040, lo: 0xab, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xb9}, - {value: 0x0040, lo: 0xba, hi: 0xbf}, -- // Block 0xbb, offset 0x5b4 -+ // Block 0xbd, offset 0x5be - {value: 0x0000, lo: 0x03}, - {value: 0x0008, lo: 0x80, hi: 0xb4}, - {value: 0x3008, lo: 0xb5, hi: 0xb7}, - {value: 0x3308, lo: 0xb8, hi: 0xbf}, -- // Block 0xbc, offset 0x5b8 -+ // Block 0xbe, offset 0x5c2 - {value: 0x0000, lo: 0x0e}, - {value: 0x3008, lo: 0x80, hi: 0x81}, - {value: 0x3b08, lo: 0x82, hi: 0x82}, -@@ -4065,7 +4220,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x3308, lo: 0x9e, hi: 0x9e}, - {value: 0x0008, lo: 0x9f, hi: 0xa1}, - {value: 0x0040, lo: 0xa2, hi: 0xbf}, -- // Block 0xbd, offset 0x5c7 -+ // Block 0xbf, offset 0x5d1 - {value: 0x0000, lo: 0x07}, - {value: 0x0008, lo: 0x80, hi: 0xaf}, - {value: 0x3008, lo: 0xb0, hi: 0xb2}, -@@ -4074,7 +4229,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x3308, lo: 0xba, hi: 0xba}, - {value: 0x3008, lo: 0xbb, hi: 0xbe}, - {value: 0x3308, lo: 0xbf, hi: 0xbf}, -- // Block 0xbe, offset 0x5cf -+ // Block 0xc0, offset 0x5d9 - {value: 0x0000, lo: 0x0a}, - {value: 0x3308, lo: 0x80, hi: 0x80}, - {value: 0x3008, lo: 0x81, hi: 0x81}, -@@ -4086,7 +4241,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0040, lo: 0x88, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x99}, - {value: 0x0040, lo: 0x9a, hi: 0xbf}, -- // Block 0xbf, offset 0x5da -+ // Block 0xc1, offset 0x5e4 - {value: 0x0000, lo: 0x08}, - {value: 0x0008, lo: 0x80, hi: 0xae}, - {value: 0x3008, lo: 0xaf, hi: 0xb1}, -@@ -4096,14 +4251,14 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x3308, lo: 0xbc, hi: 0xbd}, - {value: 0x3008, lo: 0xbe, hi: 0xbe}, - {value: 0x3b08, lo: 0xbf, hi: 0xbf}, -- // Block 0xc0, offset 0x5e3 -+ // Block 0xc2, offset 0x5ed - {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 0xc1, offset 0x5e9 -+ // Block 0xc3, offset 0x5f3 - {value: 0x0000, lo: 0x07}, - {value: 0x0008, lo: 0x80, hi: 0xaf}, - {value: 0x3008, lo: 0xb0, hi: 0xb2}, -@@ -4112,7 +4267,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x3308, lo: 0xbd, hi: 0xbd}, - {value: 0x3008, lo: 0xbe, hi: 0xbe}, - {value: 0x3b08, lo: 0xbf, hi: 0xbf}, -- // Block 0xc2, offset 0x5f1 -+ // Block 0xc4, offset 0x5fb - {value: 0x0000, lo: 0x08}, - {value: 0x3308, lo: 0x80, hi: 0x80}, - {value: 0x0018, lo: 0x81, hi: 0x83}, -@@ -4122,7 +4277,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0040, lo: 0x9a, hi: 0x9f}, - {value: 0x0018, lo: 0xa0, hi: 0xac}, - {value: 0x0040, lo: 0xad, hi: 0xbf}, -- // Block 0xc3, offset 0x5fa -+ // Block 0xc5, offset 0x604 - {value: 0x0000, lo: 0x0a}, - {value: 0x0008, lo: 0x80, hi: 0xaa}, - {value: 0x3308, lo: 0xab, hi: 0xab}, -@@ -4134,11 +4289,11 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x3308, lo: 0xb7, hi: 0xb7}, - {value: 0x0008, lo: 0xb8, hi: 0xb8}, - {value: 0x0040, lo: 0xb9, hi: 0xbf}, -- // Block 0xc4, offset 0x605 -+ // Block 0xc6, offset 0x60f - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0x89}, - {value: 0x0040, lo: 0x8a, hi: 0xbf}, -- // Block 0xc5, offset 0x608 -+ // Block 0xc7, offset 0x612 - {value: 0x0000, lo: 0x0b}, - {value: 0x0008, lo: 0x80, hi: 0x9a}, - {value: 0x0040, lo: 0x9b, hi: 0x9c}, -@@ -4151,7 +4306,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0040, lo: 0xac, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xb9}, - {value: 0x0018, lo: 0xba, hi: 0xbf}, -- // Block 0xc6, offset 0x614 -+ // Block 0xc8, offset 0x61e - {value: 0x0000, lo: 0x08}, - {value: 0x0008, lo: 0x80, hi: 0xab}, - {value: 0x3008, lo: 0xac, hi: 0xae}, -@@ -4161,17 +4316,17 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x3308, lo: 0xba, hi: 0xba}, - {value: 0x0018, lo: 0xbb, hi: 0xbb}, - {value: 0x0040, lo: 0xbc, hi: 0xbf}, -- // Block 0xc7, offset 0x61d -+ // Block 0xc9, offset 0x627 - {value: 0x0000, lo: 0x02}, - {value: 0x0040, lo: 0x80, hi: 0x9f}, - {value: 0x049d, lo: 0xa0, hi: 0xbf}, -- // Block 0xc8, offset 0x620 -+ // Block 0xca, offset 0x62a - {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 0xc9, offset 0x625 -+ // Block 0xcb, offset 0x62f - {value: 0x0000, lo: 0x08}, - {value: 0x3008, lo: 0x80, hi: 0x80}, - {value: 0x0008, lo: 0x81, hi: 0x81}, -@@ -4181,13 +4336,13 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0040, lo: 0x87, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x99}, - {value: 0x0040, lo: 0x9a, hi: 0xbf}, -- // Block 0xca, offset 0x62e -+ // Block 0xcc, offset 0x638 - {value: 0x0000, lo: 0x04}, - {value: 0x0040, lo: 0x80, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xa7}, - {value: 0x0040, lo: 0xa8, hi: 0xa9}, - {value: 0x0008, lo: 0xaa, hi: 0xbf}, -- // Block 0xcb, offset 0x633 -+ // Block 0xcd, offset 0x63d - {value: 0x0000, lo: 0x0c}, - {value: 0x0008, lo: 0x80, hi: 0x90}, - {value: 0x3008, lo: 0x91, hi: 0x93}, -@@ -4201,7 +4356,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0008, lo: 0xa3, hi: 0xa3}, - {value: 0x3008, lo: 0xa4, hi: 0xa4}, - {value: 0x0040, lo: 0xa5, hi: 0xbf}, -- // Block 0xcc, offset 0x640 -+ // Block 0xce, offset 0x64a - {value: 0x0000, lo: 0x0a}, - {value: 0x0008, lo: 0x80, hi: 0x80}, - {value: 0x3308, lo: 0x81, hi: 0x8a}, -@@ -4213,7 +4368,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0008, lo: 0xba, hi: 0xba}, - {value: 0x3308, lo: 0xbb, hi: 0xbe}, - {value: 0x0018, lo: 0xbf, hi: 0xbf}, -- // Block 0xcd, offset 0x64b -+ // Block 0xcf, offset 0x655 - {value: 0x0000, lo: 0x08}, - {value: 0x0018, lo: 0x80, hi: 0x86}, - {value: 0x3b08, lo: 0x87, hi: 0x87}, -@@ -4223,7 +4378,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x3008, lo: 0x97, hi: 0x98}, - {value: 0x3308, lo: 0x99, hi: 0x9b}, - {value: 0x0008, lo: 0x9c, hi: 0xbf}, -- // Block 0xce, offset 0x654 -+ // Block 0xd0, offset 0x65e - {value: 0x0000, lo: 0x09}, - {value: 0x0008, lo: 0x80, hi: 0x89}, - {value: 0x3308, lo: 0x8a, hi: 0x96}, -@@ -4234,11 +4389,11 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0008, lo: 0x9d, hi: 0x9d}, - {value: 0x0018, lo: 0x9e, hi: 0xa2}, - {value: 0x0040, lo: 0xa3, hi: 0xbf}, -- // Block 0xcf, offset 0x65e -+ // Block 0xd1, offset 0x668 - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0xb8}, - {value: 0x0040, lo: 0xb9, hi: 0xbf}, -- // Block 0xd0, offset 0x661 -+ // Block 0xd2, offset 0x66b - {value: 0x0000, lo: 0x09}, - {value: 0x0008, lo: 0x80, hi: 0x88}, - {value: 0x0040, lo: 0x89, hi: 0x89}, -@@ -4249,7 +4404,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x3308, lo: 0xb8, hi: 0xbd}, - {value: 0x3008, lo: 0xbe, hi: 0xbe}, - {value: 0x3b08, lo: 0xbf, hi: 0xbf}, -- // Block 0xd1, offset 0x66b -+ // Block 0xd3, offset 0x675 - {value: 0x0000, lo: 0x08}, - {value: 0x0008, lo: 0x80, hi: 0x80}, - {value: 0x0018, lo: 0x81, hi: 0x85}, -@@ -4259,7 +4414,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0040, lo: 0xad, hi: 0xaf}, - {value: 0x0018, lo: 0xb0, hi: 0xb1}, - {value: 0x0008, lo: 0xb2, hi: 0xbf}, -- // Block 0xd2, offset 0x674 -+ // Block 0xd4, offset 0x67e - {value: 0x0000, lo: 0x0b}, - {value: 0x0008, lo: 0x80, hi: 0x8f}, - {value: 0x0040, lo: 0x90, hi: 0x91}, -@@ -4272,7 +4427,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x3008, lo: 0xb4, hi: 0xb4}, - {value: 0x3308, lo: 0xb5, hi: 0xb6}, - {value: 0x0040, lo: 0xb7, hi: 0xbf}, -- // Block 0xd3, offset 0x680 -+ // Block 0xd5, offset 0x68a - {value: 0x0000, lo: 0x0c}, - {value: 0x0008, lo: 0x80, hi: 0x86}, - {value: 0x0040, lo: 0x87, hi: 0x87}, -@@ -4286,7 +4441,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x3308, lo: 0xbc, hi: 0xbd}, - {value: 0x0040, lo: 0xbe, hi: 0xbe}, - {value: 0x3308, lo: 0xbf, hi: 0xbf}, -- // Block 0xd4, offset 0x68d -+ // Block 0xd6, offset 0x697 - {value: 0x0000, lo: 0x0c}, - {value: 0x3308, lo: 0x80, hi: 0x83}, - {value: 0x3b08, lo: 0x84, hi: 0x85}, -@@ -4300,7 +4455,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0008, lo: 0xa7, hi: 0xa8}, - {value: 0x0040, lo: 0xa9, hi: 0xa9}, - {value: 0x0008, lo: 0xaa, hi: 0xbf}, -- // Block 0xd5, offset 0x69a -+ // Block 0xd7, offset 0x6a4 - {value: 0x0000, lo: 0x0d}, - {value: 0x0008, lo: 0x80, hi: 0x89}, - {value: 0x3008, lo: 0x8a, hi: 0x8e}, -@@ -4315,7 +4470,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0040, lo: 0x99, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xa9}, - {value: 0x0040, lo: 0xaa, hi: 0xbf}, -- // Block 0xd6, offset 0x6a8 -+ // Block 0xd8, offset 0x6b2 - {value: 0x0000, lo: 0x06}, - {value: 0x0040, lo: 0x80, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xb2}, -@@ -4323,41 +4478,41 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x3008, lo: 0xb5, hi: 0xb6}, - {value: 0x0018, lo: 0xb7, hi: 0xb8}, - {value: 0x0040, lo: 0xb9, hi: 0xbf}, -- // Block 0xd7, offset 0x6af -+ // Block 0xd9, offset 0x6b9 - {value: 0x0000, lo: 0x03}, - {value: 0x0040, lo: 0x80, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xb0}, - {value: 0x0040, lo: 0xb1, hi: 0xbf}, -- // Block 0xd8, offset 0x6b3 -+ // Block 0xda, offset 0x6bd - {value: 0x0000, lo: 0x03}, - {value: 0x0018, lo: 0x80, hi: 0xb1}, - {value: 0x0040, lo: 0xb2, hi: 0xbe}, - {value: 0x0018, lo: 0xbf, hi: 0xbf}, -- // Block 0xd9, offset 0x6b7 -+ // Block 0xdb, offset 0x6c1 - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0x99}, - {value: 0x0040, lo: 0x9a, hi: 0xbf}, -- // Block 0xda, offset 0x6ba -+ // Block 0xdc, offset 0x6c4 - {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 0xdb, offset 0x6bf -+ // Block 0xdd, offset 0x6c9 - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0x83}, - {value: 0x0040, lo: 0x84, hi: 0xbf}, -- // Block 0xdc, offset 0x6c2 -+ // Block 0xde, offset 0x6cc - {value: 0x0000, lo: 0x04}, - {value: 0x0008, lo: 0x80, hi: 0xae}, - {value: 0x0040, lo: 0xaf, hi: 0xaf}, - {value: 0x0340, lo: 0xb0, hi: 0xb8}, - {value: 0x0040, lo: 0xb9, hi: 0xbf}, -- // Block 0xdd, offset 0x6c7 -+ // Block 0xdf, offset 0x6d1 - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0x86}, - {value: 0x0040, lo: 0x87, hi: 0xbf}, -- // Block 0xde, offset 0x6ca -+ // Block 0xe0, offset 0x6d4 - {value: 0x0000, lo: 0x06}, - {value: 0x0008, lo: 0x80, hi: 0x9e}, - {value: 0x0040, lo: 0x9f, hi: 0x9f}, -@@ -4365,7 +4520,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0040, lo: 0xaa, hi: 0xad}, - {value: 0x0018, lo: 0xae, hi: 0xaf}, - {value: 0x0040, lo: 0xb0, hi: 0xbf}, -- // Block 0xdf, offset 0x6d1 -+ // Block 0xe1, offset 0x6db - {value: 0x0000, lo: 0x06}, - {value: 0x0040, lo: 0x80, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0xad}, -@@ -4373,12 +4528,12 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x3308, lo: 0xb0, hi: 0xb4}, - {value: 0x0018, lo: 0xb5, hi: 0xb5}, - {value: 0x0040, lo: 0xb6, hi: 0xbf}, -- // Block 0xe0, offset 0x6d8 -+ // Block 0xe2, offset 0x6e2 - {value: 0x0000, lo: 0x03}, - {value: 0x0008, lo: 0x80, hi: 0xaf}, - {value: 0x3308, lo: 0xb0, hi: 0xb6}, - {value: 0x0018, lo: 0xb7, hi: 0xbf}, -- // Block 0xe1, offset 0x6dc -+ // Block 0xe3, offset 0x6e6 - {value: 0x0000, lo: 0x0a}, - {value: 0x0008, lo: 0x80, hi: 0x83}, - {value: 0x0018, lo: 0x84, hi: 0x85}, -@@ -4390,33 +4545,33 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0008, lo: 0xa3, hi: 0xb7}, - {value: 0x0040, lo: 0xb8, hi: 0xbc}, - {value: 0x0008, lo: 0xbd, hi: 0xbf}, -- // Block 0xe2, offset 0x6e7 -+ // Block 0xe4, offset 0x6f1 - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0x8f}, - {value: 0x0040, lo: 0x90, hi: 0xbf}, -- // Block 0xe3, offset 0x6ea -+ // Block 0xe5, offset 0x6f4 - {value: 0x0000, lo: 0x02}, - {value: 0xe105, lo: 0x80, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xbf}, -- // Block 0xe4, offset 0x6ed -+ // Block 0xe6, offset 0x6f7 - {value: 0x0000, lo: 0x02}, - {value: 0x0018, lo: 0x80, hi: 0x9a}, - {value: 0x0040, lo: 0x9b, hi: 0xbf}, -- // Block 0xe5, offset 0x6f0 -+ // Block 0xe7, offset 0x6fa - {value: 0x0000, lo: 0x05}, - {value: 0x0008, lo: 0x80, hi: 0x8a}, - {value: 0x0040, lo: 0x8b, hi: 0x8e}, - {value: 0x3308, lo: 0x8f, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x90}, - {value: 0x3008, lo: 0x91, hi: 0xbf}, -- // Block 0xe6, offset 0x6f6 -+ // Block 0xe8, offset 0x700 - {value: 0x0000, lo: 0x05}, - {value: 0x3008, lo: 0x80, hi: 0x87}, - {value: 0x0040, lo: 0x88, hi: 0x8e}, - {value: 0x3308, lo: 0x8f, hi: 0x92}, - {value: 0x0008, lo: 0x93, hi: 0x9f}, - {value: 0x0040, lo: 0xa0, hi: 0xbf}, -- // Block 0xe7, offset 0x6fc -+ // Block 0xe9, offset 0x706 - {value: 0x0000, lo: 0x08}, - {value: 0x0040, lo: 0x80, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xa1}, -@@ -4426,23 +4581,23 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0040, lo: 0xa5, hi: 0xaf}, - {value: 0x3008, lo: 0xb0, hi: 0xb1}, - {value: 0x0040, lo: 0xb2, hi: 0xbf}, -- // Block 0xe8, offset 0x705 -+ // Block 0xea, offset 0x70f - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0xb7}, - {value: 0x0040, lo: 0xb8, hi: 0xbf}, -- // Block 0xe9, offset 0x708 -+ // Block 0xeb, offset 0x712 - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0x95}, - {value: 0x0040, lo: 0x96, hi: 0xbf}, -- // Block 0xea, offset 0x70b -+ // Block 0xec, offset 0x715 - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0x88}, - {value: 0x0040, lo: 0x89, hi: 0xbf}, -- // Block 0xeb, offset 0x70e -+ // Block 0xed, offset 0x718 - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0x9e}, - {value: 0x0040, lo: 0x9f, hi: 0xbf}, -- // Block 0xec, offset 0x711 -+ // Block 0xee, offset 0x71b - {value: 0x0000, lo: 0x06}, - {value: 0x0040, lo: 0x80, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x92}, -@@ -4450,17 +4605,17 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0008, lo: 0xa4, hi: 0xa7}, - {value: 0x0040, lo: 0xa8, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xbf}, -- // Block 0xed, offset 0x718 -+ // Block 0xef, offset 0x722 - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0xbb}, - {value: 0x0040, lo: 0xbc, hi: 0xbf}, -- // Block 0xee, offset 0x71b -+ // Block 0xf0, offset 0x725 - {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 0xef, offset 0x720 -+ // Block 0xf1, offset 0x72a - {value: 0x0000, lo: 0x09}, - {value: 0x0008, lo: 0x80, hi: 0x88}, - {value: 0x0040, lo: 0x89, hi: 0x8f}, -@@ -4471,32 +4626,32 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0018, lo: 0x9f, hi: 0x9f}, - {value: 0x03c0, lo: 0xa0, hi: 0xa3}, - {value: 0x0040, lo: 0xa4, hi: 0xbf}, -- // Block 0xf0, offset 0x72a -+ // Block 0xf2, offset 0x734 - {value: 0x0000, lo: 0x02}, - {value: 0x0018, lo: 0x80, hi: 0xb5}, - {value: 0x0040, lo: 0xb6, hi: 0xbf}, -- // Block 0xf1, offset 0x72d -+ // Block 0xf3, offset 0x737 - {value: 0x0000, lo: 0x03}, - {value: 0x0018, lo: 0x80, hi: 0xa6}, - {value: 0x0040, lo: 0xa7, hi: 0xa8}, - {value: 0x0018, lo: 0xa9, hi: 0xbf}, -- // Block 0xf2, offset 0x731 -+ // Block 0xf4, offset 0x73b - {value: 0x0000, lo: 0x0e}, - {value: 0x0018, lo: 0x80, hi: 0x9d}, -- {value: 0xb609, lo: 0x9e, hi: 0x9e}, -- {value: 0xb651, lo: 0x9f, hi: 0x9f}, -- {value: 0xb699, lo: 0xa0, hi: 0xa0}, -- {value: 0xb701, lo: 0xa1, hi: 0xa1}, -- {value: 0xb769, lo: 0xa2, hi: 0xa2}, -- {value: 0xb7d1, lo: 0xa3, hi: 0xa3}, -- {value: 0xb839, lo: 0xa4, hi: 0xa4}, -+ {value: 0x2211, lo: 0x9e, hi: 0x9e}, -+ {value: 0x2219, lo: 0x9f, hi: 0x9f}, -+ {value: 0x2221, lo: 0xa0, hi: 0xa0}, -+ {value: 0x2229, lo: 0xa1, hi: 0xa1}, -+ {value: 0x2231, lo: 0xa2, hi: 0xa2}, -+ {value: 0x2239, lo: 0xa3, hi: 0xa3}, -+ {value: 0x2241, 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 0xf3, offset 0x740 -+ // Block 0xf5, offset 0x74a - {value: 0x0000, lo: 0x0b}, - {value: 0x3318, lo: 0x80, hi: 0x82}, - {value: 0x0018, lo: 0x83, hi: 0x84}, -@@ -4504,45 +4659,45 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0018, lo: 0x8c, hi: 0xa9}, - {value: 0x3318, lo: 0xaa, hi: 0xad}, - {value: 0x0018, lo: 0xae, hi: 0xba}, -- {value: 0xb8a1, lo: 0xbb, hi: 0xbb}, -- {value: 0xb8e9, lo: 0xbc, hi: 0xbc}, -- {value: 0xb931, lo: 0xbd, hi: 0xbd}, -- {value: 0xb999, lo: 0xbe, hi: 0xbe}, -- {value: 0xba01, lo: 0xbf, hi: 0xbf}, -- // Block 0xf4, offset 0x74c -+ {value: 0x2249, lo: 0xbb, hi: 0xbb}, -+ {value: 0x2251, lo: 0xbc, hi: 0xbc}, -+ {value: 0x2259, lo: 0xbd, hi: 0xbd}, -+ {value: 0x2261, lo: 0xbe, hi: 0xbe}, -+ {value: 0x2269, lo: 0xbf, hi: 0xbf}, -+ // Block 0xf6, offset 0x756 - {value: 0x0000, lo: 0x03}, -- {value: 0xba69, lo: 0x80, hi: 0x80}, -+ {value: 0x2271, lo: 0x80, hi: 0x80}, - {value: 0x0018, lo: 0x81, hi: 0xa8}, - {value: 0x0040, lo: 0xa9, hi: 0xbf}, -- // Block 0xf5, offset 0x750 -+ // Block 0xf7, offset 0x75a - {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 0xf6, offset 0x755 -+ // Block 0xf8, offset 0x75f - {value: 0x0000, lo: 0x03}, - {value: 0x0040, lo: 0x80, hi: 0x9f}, - {value: 0x0018, lo: 0xa0, hi: 0xb3}, - {value: 0x0040, lo: 0xb4, hi: 0xbf}, -- // Block 0xf7, offset 0x759 -+ // Block 0xf9, offset 0x763 - {value: 0x0000, lo: 0x04}, - {value: 0x0018, lo: 0x80, hi: 0x96}, - {value: 0x0040, lo: 0x97, hi: 0x9f}, - {value: 0x0018, lo: 0xa0, hi: 0xb8}, - {value: 0x0040, lo: 0xb9, hi: 0xbf}, -- // Block 0xf8, offset 0x75e -+ // Block 0xfa, offset 0x768 - {value: 0x0000, lo: 0x03}, - {value: 0x3308, lo: 0x80, hi: 0xb6}, - {value: 0x0018, lo: 0xb7, hi: 0xba}, - {value: 0x3308, lo: 0xbb, hi: 0xbf}, -- // Block 0xf9, offset 0x762 -+ // Block 0xfb, offset 0x76c - {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 0xfa, offset 0x767 -+ // Block 0xfc, offset 0x771 - {value: 0x0000, lo: 0x08}, - {value: 0x0018, lo: 0x80, hi: 0x83}, - {value: 0x3308, lo: 0x84, hi: 0x84}, -@@ -4552,7 +4707,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0040, lo: 0xa0, hi: 0xa0}, - {value: 0x3308, lo: 0xa1, hi: 0xaf}, - {value: 0x0040, lo: 0xb0, hi: 0xbf}, -- // Block 0xfb, offset 0x770 -+ // Block 0xfd, offset 0x77a - {value: 0x0000, lo: 0x0a}, - {value: 0x3308, lo: 0x80, hi: 0x86}, - {value: 0x0040, lo: 0x87, hi: 0x87}, -@@ -4564,35 +4719,35 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0040, lo: 0xa5, hi: 0xa5}, - {value: 0x3308, lo: 0xa6, hi: 0xaa}, - {value: 0x0040, lo: 0xab, hi: 0xbf}, -- // Block 0xfc, offset 0x77b -+ // Block 0xfe, offset 0x785 - {value: 0x0000, lo: 0x05}, - {value: 0x0008, lo: 0x80, hi: 0xac}, - {value: 0x0040, lo: 0xad, hi: 0xaf}, - {value: 0x3308, lo: 0xb0, hi: 0xb6}, - {value: 0x0008, lo: 0xb7, hi: 0xbd}, - {value: 0x0040, lo: 0xbe, hi: 0xbf}, -- // Block 0xfd, offset 0x781 -+ // Block 0xff, offset 0x78b - {value: 0x0000, lo: 0x05}, - {value: 0x0008, lo: 0x80, hi: 0x89}, - {value: 0x0040, lo: 0x8a, hi: 0x8d}, - {value: 0x0008, lo: 0x8e, hi: 0x8e}, - {value: 0x0018, lo: 0x8f, hi: 0x8f}, - {value: 0x0040, lo: 0x90, hi: 0xbf}, -- // Block 0xfe, offset 0x787 -+ // Block 0x100, offset 0x791 - {value: 0x0000, lo: 0x05}, - {value: 0x0008, lo: 0x80, hi: 0xab}, - {value: 0x3308, lo: 0xac, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xb9}, - {value: 0x0040, lo: 0xba, hi: 0xbe}, - {value: 0x0018, lo: 0xbf, hi: 0xbf}, -- // Block 0xff, offset 0x78d -+ // Block 0x101, offset 0x797 - {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 0x100, offset 0x793 -+ // Block 0x102, offset 0x79d - {value: 0x0000, lo: 0x08}, - {value: 0x0a08, lo: 0x80, hi: 0x83}, - {value: 0x3308, lo: 0x84, hi: 0x8a}, -@@ -4602,71 +4757,71 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0040, lo: 0x9a, hi: 0x9d}, - {value: 0x0818, lo: 0x9e, hi: 0x9f}, - {value: 0x0040, lo: 0xa0, hi: 0xbf}, -- // Block 0x101, offset 0x79c -+ // Block 0x103, offset 0x7a6 - {value: 0x0000, lo: 0x02}, - {value: 0x0040, lo: 0x80, hi: 0xb0}, - {value: 0x0818, lo: 0xb1, hi: 0xbf}, -- // Block 0x102, offset 0x79f -+ // Block 0x104, offset 0x7a9 - {value: 0x0000, lo: 0x02}, - {value: 0x0818, lo: 0x80, hi: 0xb4}, - {value: 0x0040, lo: 0xb5, hi: 0xbf}, -- // Block 0x103, offset 0x7a2 -+ // Block 0x105, offset 0x7ac - {value: 0x0000, lo: 0x03}, - {value: 0x0040, lo: 0x80, hi: 0x80}, - {value: 0x0818, lo: 0x81, hi: 0xbd}, - {value: 0x0040, lo: 0xbe, hi: 0xbf}, -- // Block 0x104, offset 0x7a6 -+ // Block 0x106, offset 0x7b0 - {value: 0x0000, lo: 0x03}, - {value: 0x0040, lo: 0x80, hi: 0xaf}, - {value: 0x0018, lo: 0xb0, hi: 0xb1}, - {value: 0x0040, lo: 0xb2, hi: 0xbf}, -- // Block 0x105, offset 0x7aa -+ // Block 0x107, offset 0x7b4 - {value: 0x0000, lo: 0x03}, - {value: 0x0018, lo: 0x80, hi: 0xab}, - {value: 0x0040, lo: 0xac, hi: 0xaf}, - {value: 0x0018, lo: 0xb0, hi: 0xbf}, -- // Block 0x106, offset 0x7ae -+ // Block 0x108, offset 0x7b8 - {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 0x107, offset 0x7b4 -+ // Block 0x109, offset 0x7be - {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 0x108, offset 0x7ba -+ // Block 0x10a, offset 0x7c4 - {value: 0x0000, lo: 0x04}, - {value: 0x0018, lo: 0x80, hi: 0x8f}, -- {value: 0xc229, lo: 0x90, hi: 0x90}, -+ {value: 0x2491, lo: 0x90, hi: 0x90}, - {value: 0x0018, lo: 0x91, hi: 0xad}, - {value: 0x0040, lo: 0xae, hi: 0xbf}, -- // Block 0x109, offset 0x7bf -+ // Block 0x10b, offset 0x7c9 - {value: 0x0000, lo: 0x02}, - {value: 0x0040, lo: 0x80, hi: 0xa5}, - {value: 0x0018, lo: 0xa6, hi: 0xbf}, -- // Block 0x10a, offset 0x7c2 -+ // Block 0x10c, offset 0x7cc - {value: 0x0000, lo: 0x0f}, -- {value: 0xc851, lo: 0x80, hi: 0x80}, -- {value: 0xc8a1, lo: 0x81, hi: 0x81}, -- {value: 0xc8f1, lo: 0x82, hi: 0x82}, -- {value: 0xc941, lo: 0x83, hi: 0x83}, -- {value: 0xc991, lo: 0x84, hi: 0x84}, -- {value: 0xc9e1, lo: 0x85, hi: 0x85}, -- {value: 0xca31, lo: 0x86, hi: 0x86}, -- {value: 0xca81, lo: 0x87, hi: 0x87}, -- {value: 0xcad1, lo: 0x88, hi: 0x88}, -+ {value: 0x2611, lo: 0x80, hi: 0x80}, -+ {value: 0x2619, lo: 0x81, hi: 0x81}, -+ {value: 0x2621, lo: 0x82, hi: 0x82}, -+ {value: 0x2629, lo: 0x83, hi: 0x83}, -+ {value: 0x2631, lo: 0x84, hi: 0x84}, -+ {value: 0x2639, lo: 0x85, hi: 0x85}, -+ {value: 0x2641, lo: 0x86, hi: 0x86}, -+ {value: 0x2649, lo: 0x87, hi: 0x87}, -+ {value: 0x2651, lo: 0x88, hi: 0x88}, - {value: 0x0040, lo: 0x89, hi: 0x8f}, -- {value: 0xcb21, lo: 0x90, hi: 0x90}, -- {value: 0xcb41, lo: 0x91, hi: 0x91}, -+ {value: 0x2659, lo: 0x90, hi: 0x90}, -+ {value: 0x2661, lo: 0x91, hi: 0x91}, - {value: 0x0040, lo: 0x92, hi: 0x9f}, - {value: 0x0018, lo: 0xa0, hi: 0xa5}, - {value: 0x0040, lo: 0xa6, hi: 0xbf}, -- // Block 0x10b, offset 0x7d2 -+ // Block 0x10d, offset 0x7dc - {value: 0x0000, lo: 0x06}, - {value: 0x0018, lo: 0x80, hi: 0x97}, - {value: 0x0040, lo: 0x98, hi: 0x9f}, -@@ -4674,29 +4829,29 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0040, lo: 0xad, hi: 0xaf}, - {value: 0x0018, lo: 0xb0, hi: 0xbc}, - {value: 0x0040, lo: 0xbd, hi: 0xbf}, -- // Block 0x10c, offset 0x7d9 -+ // Block 0x10e, offset 0x7e3 - {value: 0x0000, lo: 0x02}, - {value: 0x0018, lo: 0x80, hi: 0xb3}, - {value: 0x0040, lo: 0xb4, hi: 0xbf}, -- // Block 0x10d, offset 0x7dc -+ // Block 0x10f, offset 0x7e6 - {value: 0x0000, lo: 0x04}, - {value: 0x0018, lo: 0x80, hi: 0x98}, - {value: 0x0040, lo: 0x99, hi: 0x9f}, - {value: 0x0018, lo: 0xa0, hi: 0xab}, - {value: 0x0040, lo: 0xac, hi: 0xbf}, -- // Block 0x10e, offset 0x7e1 -+ // Block 0x110, offset 0x7eb - {value: 0x0000, lo: 0x03}, - {value: 0x0018, lo: 0x80, hi: 0x8b}, - {value: 0x0040, lo: 0x8c, hi: 0x8f}, - {value: 0x0018, lo: 0x90, hi: 0xbf}, -- // Block 0x10f, offset 0x7e5 -+ // Block 0x111, offset 0x7ef - {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 0x110, offset 0x7eb -+ // Block 0x112, offset 0x7f5 - {value: 0x0000, lo: 0x06}, - {value: 0x0018, lo: 0x80, hi: 0x87}, - {value: 0x0040, lo: 0x88, hi: 0x8f}, -@@ -4704,17 +4859,17 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0040, lo: 0xae, hi: 0xaf}, - {value: 0x0018, lo: 0xb0, hi: 0xb1}, - {value: 0x0040, lo: 0xb2, hi: 0xbf}, -- // Block 0x111, offset 0x7f2 -+ // Block 0x113, offset 0x7fc - {value: 0x0000, lo: 0x03}, - {value: 0x0018, lo: 0x80, hi: 0xb8}, - {value: 0x0040, lo: 0xb9, hi: 0xb9}, - {value: 0x0018, lo: 0xba, hi: 0xbf}, -- // Block 0x112, offset 0x7f6 -+ // Block 0x114, offset 0x800 - {value: 0x0000, lo: 0x03}, - {value: 0x0018, lo: 0x80, hi: 0x8b}, - {value: 0x0040, lo: 0x8c, hi: 0x8c}, - {value: 0x0018, lo: 0x8d, hi: 0xbf}, -- // Block 0x113, offset 0x7fa -+ // Block 0x115, offset 0x804 - {value: 0x0000, lo: 0x08}, - {value: 0x0018, lo: 0x80, hi: 0x93}, - {value: 0x0040, lo: 0x94, hi: 0x9f}, -@@ -4724,7 +4879,7 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0040, lo: 0xb5, hi: 0xb7}, - {value: 0x0018, lo: 0xb8, hi: 0xba}, - {value: 0x0040, lo: 0xbb, hi: 0xbf}, -- // Block 0x114, offset 0x803 -+ // Block 0x116, offset 0x80d - {value: 0x0000, lo: 0x06}, - {value: 0x0018, lo: 0x80, hi: 0x86}, - {value: 0x0040, lo: 0x87, hi: 0x8f}, -@@ -4732,109 +4887,74 @@ var idnaSparseValues = [2146]valueRange{ - {value: 0x0040, lo: 0xa9, hi: 0xaf}, - {value: 0x0018, lo: 0xb0, hi: 0xb6}, - {value: 0x0040, lo: 0xb7, hi: 0xbf}, -- // Block 0x115, offset 0x80a -+ // Block 0x117, offset 0x814 - {value: 0x0000, lo: 0x04}, - {value: 0x0018, lo: 0x80, hi: 0x82}, - {value: 0x0040, lo: 0x83, hi: 0x8f}, - {value: 0x0018, lo: 0x90, hi: 0x96}, - {value: 0x0040, lo: 0x97, hi: 0xbf}, -- // Block 0x116, offset 0x80f -+ // Block 0x118, offset 0x819 - {value: 0x0000, lo: 0x03}, - {value: 0x0018, lo: 0x80, hi: 0x92}, - {value: 0x0040, lo: 0x93, hi: 0x93}, - {value: 0x0018, lo: 0x94, hi: 0xbf}, -- // Block 0x117, offset 0x813 -+ // Block 0x119, offset 0x81d - {value: 0x0000, lo: 0x0d}, - {value: 0x0018, lo: 0x80, hi: 0x8a}, - {value: 0x0040, lo: 0x8b, hi: 0xaf}, -- {value: 0x1f41, lo: 0xb0, hi: 0xb0}, -- {value: 0x00c9, lo: 0xb1, hi: 0xb1}, -- {value: 0x0069, lo: 0xb2, hi: 0xb2}, -- {value: 0x0079, lo: 0xb3, hi: 0xb3}, -- {value: 0x1f51, lo: 0xb4, hi: 0xb4}, -- {value: 0x1f61, lo: 0xb5, hi: 0xb5}, -- {value: 0x1f71, lo: 0xb6, hi: 0xb6}, -- {value: 0x1f81, lo: 0xb7, hi: 0xb7}, -- {value: 0x1f91, lo: 0xb8, hi: 0xb8}, -- {value: 0x1fa1, lo: 0xb9, hi: 0xb9}, -+ {value: 0x06e1, lo: 0xb0, hi: 0xb0}, -+ {value: 0x0049, lo: 0xb1, hi: 0xb1}, -+ {value: 0x0029, lo: 0xb2, hi: 0xb2}, -+ {value: 0x0031, lo: 0xb3, hi: 0xb3}, -+ {value: 0x06e9, lo: 0xb4, hi: 0xb4}, -+ {value: 0x06f1, lo: 0xb5, hi: 0xb5}, -+ {value: 0x06f9, lo: 0xb6, hi: 0xb6}, -+ {value: 0x0701, lo: 0xb7, hi: 0xb7}, -+ {value: 0x0709, lo: 0xb8, hi: 0xb8}, -+ {value: 0x0711, lo: 0xb9, hi: 0xb9}, - {value: 0x0040, lo: 0xba, hi: 0xbf}, -- // Block 0x118, offset 0x821 -+ // Block 0x11a, offset 0x82b - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0x9d}, - {value: 0x0040, lo: 0x9e, hi: 0xbf}, -- // Block 0x119, offset 0x824 -+ // Block 0x11b, offset 0x82e - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0xb4}, - {value: 0x0040, lo: 0xb5, hi: 0xbf}, -- // Block 0x11a, offset 0x827 -+ // Block 0x11c, offset 0x831 - {value: 0x0000, lo: 0x03}, - {value: 0x0008, lo: 0x80, hi: 0x9d}, - {value: 0x0040, lo: 0x9e, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xbf}, -- // Block 0x11b, offset 0x82b -+ // Block 0x11d, offset 0x835 - {value: 0x0000, lo: 0x03}, - {value: 0x0008, lo: 0x80, hi: 0xa1}, - {value: 0x0040, lo: 0xa2, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xbf}, -- // Block 0x11c, offset 0x82f -+ // Block 0x11e, offset 0x839 - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0xa0}, - {value: 0x0040, lo: 0xa1, hi: 0xbf}, -- // Block 0x11d, offset 0x832 -- {value: 0x0020, lo: 0x0f}, -- {value: 0xdf21, lo: 0x80, hi: 0x89}, -- {value: 0x8e35, lo: 0x8a, hi: 0x8a}, -- {value: 0xe061, lo: 0x8b, hi: 0x9c}, -- {value: 0x8e55, lo: 0x9d, hi: 0x9d}, -- {value: 0xe2a1, lo: 0x9e, hi: 0xa2}, -- {value: 0x8e75, lo: 0xa3, hi: 0xa3}, -- {value: 0xe341, lo: 0xa4, hi: 0xab}, -- {value: 0x7f0d, lo: 0xac, hi: 0xac}, -- {value: 0xe441, lo: 0xad, hi: 0xaf}, -- {value: 0x8e95, lo: 0xb0, hi: 0xb0}, -- {value: 0xe4a1, lo: 0xb1, hi: 0xb6}, -- {value: 0x8eb5, lo: 0xb7, hi: 0xb9}, -- {value: 0xe561, lo: 0xba, hi: 0xba}, -- {value: 0x8f15, lo: 0xbb, hi: 0xbb}, -- {value: 0xe581, lo: 0xbc, hi: 0xbf}, -- // Block 0x11e, offset 0x842 -- {value: 0x0020, lo: 0x10}, -- {value: 0x93b5, lo: 0x80, hi: 0x80}, -- {value: 0xf101, lo: 0x81, hi: 0x86}, -- {value: 0x93d5, lo: 0x87, hi: 0x8a}, -- {value: 0xda61, lo: 0x8b, hi: 0x8b}, -- {value: 0xf1c1, lo: 0x8c, hi: 0x96}, -- {value: 0x9455, lo: 0x97, hi: 0x97}, -- {value: 0xf321, lo: 0x98, hi: 0xa3}, -- {value: 0x9475, lo: 0xa4, hi: 0xa6}, -- {value: 0xf4a1, lo: 0xa7, hi: 0xaa}, -- {value: 0x94d5, lo: 0xab, hi: 0xab}, -- {value: 0xf521, lo: 0xac, hi: 0xac}, -- {value: 0x94f5, lo: 0xad, hi: 0xad}, -- {value: 0xf541, lo: 0xae, hi: 0xaf}, -- {value: 0x9515, lo: 0xb0, hi: 0xb1}, -- {value: 0xf581, lo: 0xb2, hi: 0xbe}, -- {value: 0x2040, lo: 0xbf, hi: 0xbf}, -- // Block 0x11f, offset 0x853 -+ // Block 0x11f, offset 0x83c - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0x8a}, - {value: 0x0040, lo: 0x8b, hi: 0xbf}, -- // Block 0x120, offset 0x856 -+ // Block 0x120, offset 0x83f - {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 0x121, offset 0x85b -+ // Block 0x121, offset 0x844 - {value: 0x0000, lo: 0x01}, - {value: 0x0340, lo: 0x80, hi: 0xbf}, -- // Block 0x122, offset 0x85d -+ // Block 0x122, offset 0x846 - {value: 0x0000, lo: 0x01}, - {value: 0x33c0, lo: 0x80, hi: 0xbf}, -- // Block 0x123, offset 0x85f -+ // Block 0x123, offset 0x848 - {value: 0x0000, lo: 0x02}, - {value: 0x33c0, lo: 0x80, hi: 0xaf}, - {value: 0x0040, lo: 0xb0, hi: 0xbf}, - } - --// Total table size 43370 bytes (42KiB); checksum: EBD909C0 -+// Total table size 44953 bytes (43KiB); checksum: D51909DD -diff --git a/vendor/golang.org/x/net/idna/tables15.0.0.go b/vendor/golang.org/x/net/idna/tables15.0.0.go -new file mode 100755 -index 0000000..4003377 ---- /dev/null -+++ b/vendor/golang.org/x/net/idna/tables15.0.0.go -@@ -0,0 +1,5145 @@ -+// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. -+ -+//go:build go1.21 -+// +build go1.21 -+ -+package idna -+ -+// UnicodeVersion is the Unicode version from which the tables in this package are derived. -+const UnicodeVersion = "15.0.0" -+ -+var mappings string = "" + // Size: 6704 bytes -+ " ̈a ̄23 ́ ̧1o1⁄41⁄23⁄4i̇l·ʼnsdžⱥⱦhjrwy ̆ ̇ ̊ ̨ ̃ ̋lẍ́ ι; ̈́եւاٴوٴۇٴيٴक" + -+ "़ख़ग़ज़ड़ढ़फ़य़ড়ঢ়য়ਲ਼ਸ਼ਖ਼ਗ਼ਜ਼ਫ਼ଡ଼ଢ଼ําໍາຫນຫມགྷཌྷདྷབྷཛྷཀྵཱཱིུྲྀྲཱྀླྀླཱ" + -+ "ཱྀྀྒྷྜྷྡྷྦྷྫྷྐྵвдостъѣæbdeǝgikmnȣptuɐɑəɛɜŋɔɯvβγδφχρнɒcɕðfɟɡɥɨɩɪʝɭʟɱɰɲɳ" + -+ "ɴɵɸʂʃƫʉʊʋʌzʐʑʒθssάέήίόύώἀιἁιἂιἃιἄιἅιἆιἇιἠιἡιἢιἣιἤιἥιἦιἧιὠιὡιὢιὣιὤιὥιὦιὧ" + -+ "ιὰιαιάιᾶιι ̈͂ὴιηιήιῆι ̓̀ ̓́ ̓͂ΐ ̔̀ ̔́ ̔͂ΰ ̈̀`ὼιωιώιῶι′′′′′‵‵‵‵‵!!???!!?" + -+ "′′′′0456789+=()rsħnoqsmtmωåאבגדπ1⁄71⁄91⁄101⁄32⁄31⁄52⁄53⁄54⁄51⁄65⁄61⁄83" + -+ "⁄85⁄87⁄81⁄iiivviviiiixxi0⁄3∫∫∫∫∫∮∮∮∮∮1011121314151617181920(10)(11)(12" + -+ ")(13)(14)(15)(16)(17)(18)(19)(20)∫∫∫∫==⫝̸ɫɽȿɀ. ゙ ゚よりコト(ᄀ)(ᄂ)(ᄃ)(ᄅ)(ᄆ)(ᄇ)" + -+ "(ᄉ)(ᄋ)(ᄌ)(ᄎ)(ᄏ)(ᄐ)(ᄑ)(ᄒ)(가)(나)(다)(라)(마)(바)(사)(아)(자)(차)(카)(타)(파)(하)(주)(오전" + -+ ")(오후)(一)(二)(三)(四)(五)(六)(七)(八)(九)(十)(月)(火)(水)(木)(金)(土)(日)(株)(有)(社)(名)(特)(" + -+ "財)(祝)(労)(代)(呼)(学)(監)(企)(資)(協)(祭)(休)(自)(至)21222324252627282930313233343" + -+ "5참고주의3637383940414243444546474849501月2月3月4月5月6月7月8月9月10月11月12月hgev令和アパート" + -+ "アルファアンペアアールイニングインチウォンエスクードエーカーオンスオームカイリカラットカロリーガロンガンマギガギニーキュリーギルダーキロキロ" + -+ "グラムキロメートルキロワットグラムグラムトンクルゼイロクローネケースコルナコーポサイクルサンチームシリングセンチセントダースデシドルトンナノ" + -+ "ノットハイツパーセントパーツバーレルピアストルピクルピコビルファラッドフィートブッシェルフランヘクタールペソペニヒヘルツペンスページベータポ" + -+ "イントボルトホンポンドホールホーンマイクロマイルマッハマルクマンションミクロンミリミリバールメガメガトンメートルヤードヤールユアンリットルリ" + -+ "ラルピールーブルレムレントゲンワット0点1点2点3点4点5点6点7点8点9点10点11点12点13点14点15点16点17点18点19点20" + -+ "点21点22点23点24点daauovpcdmiu平成昭和大正明治株式会社panamakakbmbgbkcalpfnfmgkghzmldlk" + -+ "lfmnmmmcmkmm2m3m∕sm∕s2rad∕srad∕s2psnsmspvnvmvkvpwnwmwkwbqcccdc∕kgdbgyhah" + -+ "pinkkktlmlnlxphprsrsvwbv∕ma∕m1日2日3日4日5日6日7日8日9日10日11日12日13日14日15日16日17日1" + -+ "8日19日20日21日22日23日24日25日26日27日28日29日30日31日ьɦɬʞʇœʍ𤋮𢡊𢡄𣏕𥉉𥳐𧻓fffiflstմնմեմիվնմ" + -+ "խיִײַעהכלםרתשׁשׂשּׁשּׂאַאָאּבּגּדּהּוּזּטּיּךּכּלּמּנּסּףּפּצּקּרּשּתּו" + -+ "ֹבֿכֿפֿאלٱٻپڀٺٿٹڤڦڄڃچڇڍڌڎڈژڑکگڳڱںڻۀہھےۓڭۇۆۈۋۅۉېىئائەئوئۇئۆئۈئېئىیئجئحئم" + -+ "ئيبجبحبخبمبىبيتجتحتختمتىتيثجثمثىثيجحجمحجحمخجخحخمسجسحسخسمصحصمضجضحضخضمطحط" + -+ "مظمعجعمغجغمفجفحفخفمفىفيقحقمقىقيكاكجكحكخكلكمكىكيلجلحلخلملىليمجمحمخمممىمي" + -+ "نجنحنخنمنىنيهجهمهىهييجيحيخيميىييذٰرٰىٰ ٌّ ٍّ َّ ُّ ِّ ّٰئرئزئنبربزبنترت" + -+ "زتنثرثزثنمانرنزننيريزينئخئهبهتهصخلهنههٰيهثهسهشمشهـَّـُّـِّطىطيعىعيغىغيس" + -+ "ىسيشىشيحىحيجىجيخىخيصىصيضىضيشجشحشخشرسرصرضراًتجمتحجتحمتخمتمجتمحتمخجمححميح" + -+ "مىسحجسجحسجىسمحسمجسممصححصممشحمشجيشمخشممضحىضخمطمحطممطميعجمعممعمىغممغميغمى" + -+ "فخمقمحقمملحملحيلحىلججلخملمحمحجمحممحيمجحمجممخجمخممجخهمجهممنحمنحىنجمنجىنم" + -+ "ينمىيممبخيتجيتجىتخيتخىتميتمىجميجحىجمىسخىصحيشحيضحيلجيلمييحييجييميمميقمين" + -+ "حيعميكمينجحمخيلجمكممجحيحجيمجيفميبحيسخينجيصلےقلےاللهاكبرمحمدصلعمرسولعليه" + -+ "وسلمصلىصلى الله عليه وسلمجل جلالهریال,:!?_{}[]#&*-<>\\$%@ـًـَـُـِـّـْءآ" + -+ "أؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهويلآلألإلا\x22'/^|~¢£¬¦¥ːˑʙɓʣꭦʥʤɖɗᶑɘɞʩɤɢ" + -+ "ɠʛʜɧʄʪʫꞎɮʎøɶɷɺɾʀʨʦꭧʧʈⱱʏʡʢʘǀǁǂ𝅗𝅥𝅘𝅥𝅘𝅥𝅮𝅘𝅥𝅯𝅘𝅥𝅰𝅘𝅥𝅱𝅘𝅥𝅲𝆹𝅥𝆺𝅥𝆹𝅥𝅮𝆺𝅥𝅮𝆹𝅥𝅯𝆺𝅥𝅯ıȷαεζηκ" + -+ "λμνξοστυψ∇∂ϝабгежзиклмпруфхцчшыэюꚉәіјөүӏґѕџҫꙑұٮڡٯ0,1,2,3,4,5,6,7,8,9,(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)〔s〕wzhvsdppvwcmcmdmrdjほかココサ手字双デ二多解天交映無料前後再新初終生販声吹演投捕一三遊左中右指走打禁空合満有月申" + -+ "割営配〔本〕〔三〕〔二〕〔安〕〔点〕〔打〕〔盗〕〔勝〕〔敗〕得可丽丸乁你侮侻倂偺備僧像㒞免兔兤具㒹內冗冤仌冬况凵刃㓟刻剆剷㔕勇勉勤勺包匆北卉" + -+ "卑博即卽卿灰及叟叫叱吆咞吸呈周咢哶唐啓啣善喙喫喳嗂圖嘆圗噑噴切壮城埴堍型堲報墬売壷夆夢奢姬娛娧姘婦㛮嬈嬾寃寘寧寳寿将尢㞁屠屮峀岍嵃嵮嵫嵼巡巢" + -+ "㠯巽帨帽幩㡢㡼庰庳庶廊廾舁弢㣇形彫㣣徚忍志忹悁㤺㤜悔惇慈慌慎慺憎憲憤憯懞懲懶成戛扝抱拔捐挽拼捨掃揤搢揅掩㨮摩摾撝摷㩬敏敬旣書晉㬙暑㬈㫤冒冕最" + -+ "暜肭䏙朗望朡杞杓㭉柺枅桒梅梎栟椔㮝楂榣槪檨櫛㰘次歔㱎歲殟殺殻汎沿泍汧洖派海流浩浸涅洴港湮㴳滋滇淹潮濆瀹瀞瀛㶖灊災灷炭煅熜爨爵牐犀犕獺王㺬玥㺸" + -+ "瑇瑜瑱璅瓊㼛甤甾異瘐㿼䀈直眞真睊䀹瞋䁆䂖硎碌磌䃣祖福秫䄯穀穊穏䈂篆築䈧糒䊠糨糣紀絣䌁緇縂繅䌴䍙罺羕翺者聠聰䏕育脃䐋脾媵舄辞䑫芑芋芝劳花芳芽苦" + -+ "若茝荣莭茣莽菧著荓菊菌菜䔫蓱蓳蔖蕤䕝䕡䕫虐虜虧虩蚩蚈蜎蛢蝹蜨蝫螆蟡蠁䗹衠衣裗裞䘵裺㒻䚾䛇誠諭變豕貫賁贛起跋趼跰軔輸邔郱鄑鄛鈸鋗鋘鉼鏹鐕開䦕閷" + -+ "䧦雃嶲霣䩮䩶韠䪲頋頩飢䬳餩馧駂駾䯎鬒鱀鳽䳎䳭鵧䳸麻䵖黹黾鼅鼏鼖鼻" -+ -+var mappingIndex = []uint16{ // 1729 elements -+ // Entry 0 - 3F -+ 0x0000, 0x0000, 0x0001, 0x0004, 0x0005, 0x0008, 0x0009, 0x000a, -+ 0x000d, 0x0010, 0x0011, 0x0012, 0x0017, 0x001c, 0x0021, 0x0024, -+ 0x0027, 0x002a, 0x002b, 0x002e, 0x0031, 0x0034, 0x0035, 0x0036, -+ 0x0037, 0x0038, 0x0039, 0x003c, 0x003f, 0x0042, 0x0045, 0x0048, -+ 0x004b, 0x004c, 0x004d, 0x0051, 0x0054, 0x0055, 0x005a, 0x005e, -+ 0x0062, 0x0066, 0x006a, 0x006e, 0x0074, 0x007a, 0x0080, 0x0086, -+ 0x008c, 0x0092, 0x0098, 0x009e, 0x00a4, 0x00aa, 0x00b0, 0x00b6, -+ 0x00bc, 0x00c2, 0x00c8, 0x00ce, 0x00d4, 0x00da, 0x00e0, 0x00e6, -+ // Entry 40 - 7F -+ 0x00ec, 0x00f2, 0x00f8, 0x00fe, 0x0104, 0x010a, 0x0110, 0x0116, -+ 0x011c, 0x0122, 0x0128, 0x012e, 0x0137, 0x013d, 0x0146, 0x014c, -+ 0x0152, 0x0158, 0x015e, 0x0164, 0x016a, 0x0170, 0x0172, 0x0174, -+ 0x0176, 0x0178, 0x017a, 0x017c, 0x017e, 0x0180, 0x0181, 0x0182, -+ 0x0183, 0x0185, 0x0186, 0x0187, 0x0188, 0x0189, 0x018a, 0x018c, -+ 0x018d, 0x018e, 0x018f, 0x0191, 0x0193, 0x0195, 0x0197, 0x0199, -+ 0x019b, 0x019d, 0x019f, 0x01a0, 0x01a2, 0x01a4, 0x01a6, 0x01a8, -+ 0x01aa, 0x01ac, 0x01ae, 0x01b0, 0x01b1, 0x01b3, 0x01b5, 0x01b6, -+ // Entry 80 - BF -+ 0x01b8, 0x01ba, 0x01bc, 0x01be, 0x01c0, 0x01c2, 0x01c4, 0x01c6, -+ 0x01c8, 0x01ca, 0x01cc, 0x01ce, 0x01d0, 0x01d2, 0x01d4, 0x01d6, -+ 0x01d8, 0x01da, 0x01dc, 0x01de, 0x01e0, 0x01e2, 0x01e4, 0x01e5, -+ 0x01e7, 0x01e9, 0x01eb, 0x01ed, 0x01ef, 0x01f1, 0x01f3, 0x01f5, -+ 0x01f7, 0x01f9, 0x01fb, 0x01fd, 0x0202, 0x0207, 0x020c, 0x0211, -+ 0x0216, 0x021b, 0x0220, 0x0225, 0x022a, 0x022f, 0x0234, 0x0239, -+ 0x023e, 0x0243, 0x0248, 0x024d, 0x0252, 0x0257, 0x025c, 0x0261, -+ 0x0266, 0x026b, 0x0270, 0x0275, 0x027a, 0x027e, 0x0282, 0x0287, -+ // Entry C0 - FF -+ 0x0289, 0x028e, 0x0293, 0x0297, 0x029b, 0x02a0, 0x02a5, 0x02aa, -+ 0x02af, 0x02b1, 0x02b6, 0x02bb, 0x02c0, 0x02c2, 0x02c7, 0x02c8, -+ 0x02cd, 0x02d1, 0x02d5, 0x02da, 0x02e0, 0x02e9, 0x02ef, 0x02f8, -+ 0x02fa, 0x02fc, 0x02fe, 0x0300, 0x030c, 0x030d, 0x030e, 0x030f, -+ 0x0310, 0x0311, 0x0312, 0x0313, 0x0314, 0x0315, 0x0316, 0x0317, -+ 0x0319, 0x031b, 0x031d, 0x031e, 0x0320, 0x0322, 0x0324, 0x0326, -+ 0x0328, 0x032a, 0x032c, 0x032e, 0x0330, 0x0335, 0x033a, 0x0340, -+ 0x0345, 0x034a, 0x034f, 0x0354, 0x0359, 0x035e, 0x0363, 0x0368, -+ // Entry 100 - 13F -+ 0x036d, 0x0372, 0x0377, 0x037c, 0x0380, 0x0382, 0x0384, 0x0386, -+ 0x038a, 0x038c, 0x038e, 0x0393, 0x0399, 0x03a2, 0x03a8, 0x03b1, -+ 0x03b3, 0x03b5, 0x03b7, 0x03b9, 0x03bb, 0x03bd, 0x03bf, 0x03c1, -+ 0x03c3, 0x03c5, 0x03c7, 0x03cb, 0x03cf, 0x03d3, 0x03d7, 0x03db, -+ 0x03df, 0x03e3, 0x03e7, 0x03eb, 0x03ef, 0x03f3, 0x03ff, 0x0401, -+ 0x0406, 0x0408, 0x040a, 0x040c, 0x040e, 0x040f, 0x0413, 0x0417, -+ 0x041d, 0x0423, 0x0428, 0x042d, 0x0432, 0x0437, 0x043c, 0x0441, -+ 0x0446, 0x044b, 0x0450, 0x0455, 0x045a, 0x045f, 0x0464, 0x0469, -+ // Entry 140 - 17F -+ 0x046e, 0x0473, 0x0478, 0x047d, 0x0482, 0x0487, 0x048c, 0x0491, -+ 0x0496, 0x049b, 0x04a0, 0x04a5, 0x04aa, 0x04af, 0x04b4, 0x04bc, -+ 0x04c4, 0x04c9, 0x04ce, 0x04d3, 0x04d8, 0x04dd, 0x04e2, 0x04e7, -+ 0x04ec, 0x04f1, 0x04f6, 0x04fb, 0x0500, 0x0505, 0x050a, 0x050f, -+ 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, -+ 0x053c, 0x0541, 0x0546, 0x054b, 0x0550, 0x0555, 0x055a, 0x055f, -+ 0x0564, 0x0569, 0x056e, 0x0573, 0x0578, 0x057a, 0x057c, 0x057e, -+ 0x0580, 0x0582, 0x0584, 0x0586, 0x0588, 0x058a, 0x058c, 0x058e, -+ // Entry 180 - 1BF -+ 0x0590, 0x0592, 0x0594, 0x0596, 0x059c, 0x05a2, 0x05a4, 0x05a6, -+ 0x05a8, 0x05aa, 0x05ac, 0x05ae, 0x05b0, 0x05b2, 0x05b4, 0x05b6, -+ 0x05b8, 0x05ba, 0x05bc, 0x05be, 0x05c0, 0x05c4, 0x05c8, 0x05cc, -+ 0x05d0, 0x05d4, 0x05d8, 0x05dc, 0x05e0, 0x05e4, 0x05e9, 0x05ee, -+ 0x05f3, 0x05f5, 0x05f7, 0x05fd, 0x0609, 0x0615, 0x0621, 0x062a, -+ 0x0636, 0x063f, 0x0648, 0x0657, 0x0663, 0x066c, 0x0675, 0x067e, -+ 0x068a, 0x0696, 0x069f, 0x06a8, 0x06ae, 0x06b7, 0x06c3, 0x06cf, -+ 0x06d5, 0x06e4, 0x06f6, 0x0705, 0x070e, 0x071d, 0x072c, 0x0738, -+ // Entry 1C0 - 1FF -+ 0x0741, 0x074a, 0x0753, 0x075f, 0x076e, 0x077a, 0x0783, 0x078c, -+ 0x0795, 0x079b, 0x07a1, 0x07a7, 0x07ad, 0x07b6, 0x07bf, 0x07ce, -+ 0x07d7, 0x07e3, 0x07f2, 0x07fb, 0x0801, 0x0807, 0x0816, 0x0822, -+ 0x0831, 0x083a, 0x0849, 0x084f, 0x0858, 0x0861, 0x086a, 0x0873, -+ 0x087c, 0x0888, 0x0891, 0x0897, 0x08a0, 0x08a9, 0x08b2, 0x08be, -+ 0x08c7, 0x08d0, 0x08d9, 0x08e8, 0x08f4, 0x08fa, 0x0909, 0x090f, -+ 0x091b, 0x0927, 0x0930, 0x0939, 0x0942, 0x094e, 0x0954, 0x095d, -+ 0x0969, 0x096f, 0x097e, 0x0987, 0x098b, 0x098f, 0x0993, 0x0997, -+ // Entry 200 - 23F -+ 0x099b, 0x099f, 0x09a3, 0x09a7, 0x09ab, 0x09af, 0x09b4, 0x09b9, -+ 0x09be, 0x09c3, 0x09c8, 0x09cd, 0x09d2, 0x09d7, 0x09dc, 0x09e1, -+ 0x09e6, 0x09eb, 0x09f0, 0x09f5, 0x09fa, 0x09fc, 0x09fe, 0x0a00, -+ 0x0a02, 0x0a04, 0x0a06, 0x0a0c, 0x0a12, 0x0a18, 0x0a1e, 0x0a2a, -+ 0x0a2c, 0x0a2e, 0x0a30, 0x0a32, 0x0a34, 0x0a36, 0x0a38, 0x0a3c, -+ 0x0a3e, 0x0a40, 0x0a42, 0x0a44, 0x0a46, 0x0a48, 0x0a4a, 0x0a4c, -+ 0x0a4e, 0x0a50, 0x0a52, 0x0a54, 0x0a56, 0x0a58, 0x0a5a, 0x0a5f, -+ 0x0a65, 0x0a6c, 0x0a74, 0x0a76, 0x0a78, 0x0a7a, 0x0a7c, 0x0a7e, -+ // Entry 240 - 27F -+ 0x0a80, 0x0a82, 0x0a84, 0x0a86, 0x0a88, 0x0a8a, 0x0a8c, 0x0a8e, -+ 0x0a90, 0x0a96, 0x0a98, 0x0a9a, 0x0a9c, 0x0a9e, 0x0aa0, 0x0aa2, -+ 0x0aa4, 0x0aa6, 0x0aa8, 0x0aaa, 0x0aac, 0x0aae, 0x0ab0, 0x0ab2, -+ 0x0ab4, 0x0ab9, 0x0abe, 0x0ac2, 0x0ac6, 0x0aca, 0x0ace, 0x0ad2, -+ 0x0ad6, 0x0ada, 0x0ade, 0x0ae2, 0x0ae7, 0x0aec, 0x0af1, 0x0af6, -+ 0x0afb, 0x0b00, 0x0b05, 0x0b0a, 0x0b0f, 0x0b14, 0x0b19, 0x0b1e, -+ 0x0b23, 0x0b28, 0x0b2d, 0x0b32, 0x0b37, 0x0b3c, 0x0b41, 0x0b46, -+ 0x0b4b, 0x0b50, 0x0b52, 0x0b54, 0x0b56, 0x0b58, 0x0b5a, 0x0b5c, -+ // Entry 280 - 2BF -+ 0x0b5e, 0x0b62, 0x0b66, 0x0b6a, 0x0b6e, 0x0b72, 0x0b76, 0x0b7a, -+ 0x0b7c, 0x0b7e, 0x0b80, 0x0b82, 0x0b86, 0x0b8a, 0x0b8e, 0x0b92, -+ 0x0b96, 0x0b9a, 0x0b9e, 0x0ba0, 0x0ba2, 0x0ba4, 0x0ba6, 0x0ba8, -+ 0x0baa, 0x0bac, 0x0bb0, 0x0bb4, 0x0bba, 0x0bc0, 0x0bc4, 0x0bc8, -+ 0x0bcc, 0x0bd0, 0x0bd4, 0x0bd8, 0x0bdc, 0x0be0, 0x0be4, 0x0be8, -+ 0x0bec, 0x0bf0, 0x0bf4, 0x0bf8, 0x0bfc, 0x0c00, 0x0c04, 0x0c08, -+ 0x0c0c, 0x0c10, 0x0c14, 0x0c18, 0x0c1c, 0x0c20, 0x0c24, 0x0c28, -+ 0x0c2c, 0x0c30, 0x0c34, 0x0c36, 0x0c38, 0x0c3a, 0x0c3c, 0x0c3e, -+ // Entry 2C0 - 2FF -+ 0x0c40, 0x0c42, 0x0c44, 0x0c46, 0x0c48, 0x0c4a, 0x0c4c, 0x0c4e, -+ 0x0c50, 0x0c52, 0x0c54, 0x0c56, 0x0c58, 0x0c5a, 0x0c5c, 0x0c5e, -+ 0x0c60, 0x0c62, 0x0c64, 0x0c66, 0x0c68, 0x0c6a, 0x0c6c, 0x0c6e, -+ 0x0c70, 0x0c72, 0x0c74, 0x0c76, 0x0c78, 0x0c7a, 0x0c7c, 0x0c7e, -+ 0x0c80, 0x0c82, 0x0c86, 0x0c8a, 0x0c8e, 0x0c92, 0x0c96, 0x0c9a, -+ 0x0c9e, 0x0ca2, 0x0ca4, 0x0ca8, 0x0cac, 0x0cb0, 0x0cb4, 0x0cb8, -+ 0x0cbc, 0x0cc0, 0x0cc4, 0x0cc8, 0x0ccc, 0x0cd0, 0x0cd4, 0x0cd8, -+ 0x0cdc, 0x0ce0, 0x0ce4, 0x0ce8, 0x0cec, 0x0cf0, 0x0cf4, 0x0cf8, -+ // Entry 300 - 33F -+ 0x0cfc, 0x0d00, 0x0d04, 0x0d08, 0x0d0c, 0x0d10, 0x0d14, 0x0d18, -+ 0x0d1c, 0x0d20, 0x0d24, 0x0d28, 0x0d2c, 0x0d30, 0x0d34, 0x0d38, -+ 0x0d3c, 0x0d40, 0x0d44, 0x0d48, 0x0d4c, 0x0d50, 0x0d54, 0x0d58, -+ 0x0d5c, 0x0d60, 0x0d64, 0x0d68, 0x0d6c, 0x0d70, 0x0d74, 0x0d78, -+ 0x0d7c, 0x0d80, 0x0d84, 0x0d88, 0x0d8c, 0x0d90, 0x0d94, 0x0d98, -+ 0x0d9c, 0x0da0, 0x0da4, 0x0da8, 0x0dac, 0x0db0, 0x0db4, 0x0db8, -+ 0x0dbc, 0x0dc0, 0x0dc4, 0x0dc8, 0x0dcc, 0x0dd0, 0x0dd4, 0x0dd8, -+ 0x0ddc, 0x0de0, 0x0de4, 0x0de8, 0x0dec, 0x0df0, 0x0df4, 0x0df8, -+ // Entry 340 - 37F -+ 0x0dfc, 0x0e00, 0x0e04, 0x0e08, 0x0e0c, 0x0e10, 0x0e14, 0x0e18, -+ 0x0e1d, 0x0e22, 0x0e27, 0x0e2c, 0x0e31, 0x0e36, 0x0e3a, 0x0e3e, -+ 0x0e42, 0x0e46, 0x0e4a, 0x0e4e, 0x0e52, 0x0e56, 0x0e5a, 0x0e5e, -+ 0x0e62, 0x0e66, 0x0e6a, 0x0e6e, 0x0e72, 0x0e76, 0x0e7a, 0x0e7e, -+ 0x0e82, 0x0e86, 0x0e8a, 0x0e8e, 0x0e92, 0x0e96, 0x0e9a, 0x0e9e, -+ 0x0ea2, 0x0ea6, 0x0eaa, 0x0eae, 0x0eb2, 0x0eb6, 0x0ebc, 0x0ec2, -+ 0x0ec8, 0x0ecc, 0x0ed0, 0x0ed4, 0x0ed8, 0x0edc, 0x0ee0, 0x0ee4, -+ 0x0ee8, 0x0eec, 0x0ef0, 0x0ef4, 0x0ef8, 0x0efc, 0x0f00, 0x0f04, -+ // Entry 380 - 3BF -+ 0x0f08, 0x0f0c, 0x0f10, 0x0f14, 0x0f18, 0x0f1c, 0x0f20, 0x0f24, -+ 0x0f28, 0x0f2c, 0x0f30, 0x0f34, 0x0f38, 0x0f3e, 0x0f44, 0x0f4a, -+ 0x0f50, 0x0f56, 0x0f5c, 0x0f62, 0x0f68, 0x0f6e, 0x0f74, 0x0f7a, -+ 0x0f80, 0x0f86, 0x0f8c, 0x0f92, 0x0f98, 0x0f9e, 0x0fa4, 0x0faa, -+ 0x0fb0, 0x0fb6, 0x0fbc, 0x0fc2, 0x0fc8, 0x0fce, 0x0fd4, 0x0fda, -+ 0x0fe0, 0x0fe6, 0x0fec, 0x0ff2, 0x0ff8, 0x0ffe, 0x1004, 0x100a, -+ 0x1010, 0x1016, 0x101c, 0x1022, 0x1028, 0x102e, 0x1034, 0x103a, -+ 0x1040, 0x1046, 0x104c, 0x1052, 0x1058, 0x105e, 0x1064, 0x106a, -+ // Entry 3C0 - 3FF -+ 0x1070, 0x1076, 0x107c, 0x1082, 0x1088, 0x108e, 0x1094, 0x109a, -+ 0x10a0, 0x10a6, 0x10ac, 0x10b2, 0x10b8, 0x10be, 0x10c4, 0x10ca, -+ 0x10d0, 0x10d6, 0x10dc, 0x10e2, 0x10e8, 0x10ee, 0x10f4, 0x10fa, -+ 0x1100, 0x1106, 0x110c, 0x1112, 0x1118, 0x111e, 0x1124, 0x112a, -+ 0x1130, 0x1136, 0x113c, 0x1142, 0x1148, 0x114e, 0x1154, 0x115a, -+ 0x1160, 0x1166, 0x116c, 0x1172, 0x1178, 0x1180, 0x1188, 0x1190, -+ 0x1198, 0x11a0, 0x11a8, 0x11b0, 0x11b6, 0x11d7, 0x11e6, 0x11ee, -+ 0x11ef, 0x11f0, 0x11f1, 0x11f2, 0x11f3, 0x11f4, 0x11f5, 0x11f6, -+ // Entry 400 - 43F -+ 0x11f7, 0x11f8, 0x11f9, 0x11fa, 0x11fb, 0x11fc, 0x11fd, 0x11fe, -+ 0x11ff, 0x1200, 0x1201, 0x1205, 0x1209, 0x120d, 0x1211, 0x1215, -+ 0x1219, 0x121b, 0x121d, 0x121f, 0x1221, 0x1223, 0x1225, 0x1227, -+ 0x1229, 0x122b, 0x122d, 0x122f, 0x1231, 0x1233, 0x1235, 0x1237, -+ 0x1239, 0x123b, 0x123d, 0x123f, 0x1241, 0x1243, 0x1245, 0x1247, -+ 0x1249, 0x124b, 0x124d, 0x124f, 0x1251, 0x1253, 0x1255, 0x1257, -+ 0x1259, 0x125b, 0x125d, 0x125f, 0x1263, 0x1267, 0x126b, 0x126f, -+ 0x1270, 0x1271, 0x1272, 0x1273, 0x1274, 0x1275, 0x1277, 0x1279, -+ // Entry 440 - 47F -+ 0x127b, 0x127d, 0x127f, 0x1281, 0x1283, 0x1285, 0x1287, 0x1289, -+ 0x128c, 0x128e, 0x1290, 0x1292, 0x1294, 0x1297, 0x1299, 0x129b, -+ 0x129d, 0x129f, 0x12a1, 0x12a3, 0x12a5, 0x12a7, 0x12a9, 0x12ab, -+ 0x12ad, 0x12af, 0x12b2, 0x12b4, 0x12b6, 0x12b8, 0x12ba, 0x12bc, -+ 0x12be, 0x12c0, 0x12c2, 0x12c4, 0x12c6, 0x12c9, 0x12cb, 0x12cd, -+ 0x12d0, 0x12d2, 0x12d4, 0x12d6, 0x12d8, 0x12da, 0x12dc, 0x12de, -+ 0x12e6, 0x12ee, 0x12fa, 0x1306, 0x1312, 0x131e, 0x132a, 0x1332, -+ 0x133a, 0x1346, 0x1352, 0x135e, 0x136a, 0x136c, 0x136e, 0x1370, -+ // Entry 480 - 4BF -+ 0x1372, 0x1374, 0x1376, 0x1378, 0x137a, 0x137c, 0x137e, 0x1380, -+ 0x1382, 0x1384, 0x1386, 0x1388, 0x138a, 0x138d, 0x1390, 0x1392, -+ 0x1394, 0x1396, 0x1398, 0x139a, 0x139c, 0x139e, 0x13a0, 0x13a2, -+ 0x13a4, 0x13a6, 0x13a8, 0x13aa, 0x13ac, 0x13ae, 0x13b0, 0x13b2, -+ 0x13b4, 0x13b6, 0x13b8, 0x13ba, 0x13bc, 0x13bf, 0x13c1, 0x13c3, -+ 0x13c5, 0x13c7, 0x13c9, 0x13cb, 0x13cd, 0x13cf, 0x13d1, 0x13d3, -+ 0x13d6, 0x13d8, 0x13da, 0x13dc, 0x13de, 0x13e0, 0x13e2, 0x13e4, -+ 0x13e6, 0x13e8, 0x13ea, 0x13ec, 0x13ee, 0x13f0, 0x13f2, 0x13f5, -+ // Entry 4C0 - 4FF -+ 0x13f8, 0x13fb, 0x13fe, 0x1401, 0x1404, 0x1407, 0x140a, 0x140d, -+ 0x1410, 0x1413, 0x1416, 0x1419, 0x141c, 0x141f, 0x1422, 0x1425, -+ 0x1428, 0x142b, 0x142e, 0x1431, 0x1434, 0x1437, 0x143a, 0x143d, -+ 0x1440, 0x1447, 0x1449, 0x144b, 0x144d, 0x1450, 0x1452, 0x1454, -+ 0x1456, 0x1458, 0x145a, 0x1460, 0x1466, 0x1469, 0x146c, 0x146f, -+ 0x1472, 0x1475, 0x1478, 0x147b, 0x147e, 0x1481, 0x1484, 0x1487, -+ 0x148a, 0x148d, 0x1490, 0x1493, 0x1496, 0x1499, 0x149c, 0x149f, -+ 0x14a2, 0x14a5, 0x14a8, 0x14ab, 0x14ae, 0x14b1, 0x14b4, 0x14b7, -+ // Entry 500 - 53F -+ 0x14ba, 0x14bd, 0x14c0, 0x14c3, 0x14c6, 0x14c9, 0x14cc, 0x14cf, -+ 0x14d2, 0x14d5, 0x14d8, 0x14db, 0x14de, 0x14e1, 0x14e4, 0x14e7, -+ 0x14ea, 0x14ed, 0x14f6, 0x14ff, 0x1508, 0x1511, 0x151a, 0x1523, -+ 0x152c, 0x1535, 0x153e, 0x1541, 0x1544, 0x1547, 0x154a, 0x154d, -+ 0x1550, 0x1553, 0x1556, 0x1559, 0x155c, 0x155f, 0x1562, 0x1565, -+ 0x1568, 0x156b, 0x156e, 0x1571, 0x1574, 0x1577, 0x157a, 0x157d, -+ 0x1580, 0x1583, 0x1586, 0x1589, 0x158c, 0x158f, 0x1592, 0x1595, -+ 0x1598, 0x159b, 0x159e, 0x15a1, 0x15a4, 0x15a7, 0x15aa, 0x15ad, -+ // Entry 540 - 57F -+ 0x15b0, 0x15b3, 0x15b6, 0x15b9, 0x15bc, 0x15bf, 0x15c2, 0x15c5, -+ 0x15c8, 0x15cb, 0x15ce, 0x15d1, 0x15d4, 0x15d7, 0x15da, 0x15dd, -+ 0x15e0, 0x15e3, 0x15e6, 0x15e9, 0x15ec, 0x15ef, 0x15f2, 0x15f5, -+ 0x15f8, 0x15fb, 0x15fe, 0x1601, 0x1604, 0x1607, 0x160a, 0x160d, -+ 0x1610, 0x1613, 0x1616, 0x1619, 0x161c, 0x161f, 0x1622, 0x1625, -+ 0x1628, 0x162b, 0x162e, 0x1631, 0x1634, 0x1637, 0x163a, 0x163d, -+ 0x1640, 0x1643, 0x1646, 0x1649, 0x164c, 0x164f, 0x1652, 0x1655, -+ 0x1658, 0x165b, 0x165e, 0x1661, 0x1664, 0x1667, 0x166a, 0x166d, -+ // Entry 580 - 5BF -+ 0x1670, 0x1673, 0x1676, 0x1679, 0x167c, 0x167f, 0x1682, 0x1685, -+ 0x1688, 0x168b, 0x168e, 0x1691, 0x1694, 0x1697, 0x169a, 0x169d, -+ 0x16a0, 0x16a3, 0x16a6, 0x16a9, 0x16ac, 0x16af, 0x16b2, 0x16b5, -+ 0x16b8, 0x16bb, 0x16be, 0x16c1, 0x16c4, 0x16c7, 0x16ca, 0x16cd, -+ 0x16d0, 0x16d3, 0x16d6, 0x16d9, 0x16dc, 0x16df, 0x16e2, 0x16e5, -+ 0x16e8, 0x16eb, 0x16ee, 0x16f1, 0x16f4, 0x16f7, 0x16fa, 0x16fd, -+ 0x1700, 0x1703, 0x1706, 0x1709, 0x170c, 0x170f, 0x1712, 0x1715, -+ 0x1718, 0x171b, 0x171e, 0x1721, 0x1724, 0x1727, 0x172a, 0x172d, -+ // Entry 5C0 - 5FF -+ 0x1730, 0x1733, 0x1736, 0x1739, 0x173c, 0x173f, 0x1742, 0x1745, -+ 0x1748, 0x174b, 0x174e, 0x1751, 0x1754, 0x1757, 0x175a, 0x175d, -+ 0x1760, 0x1763, 0x1766, 0x1769, 0x176c, 0x176f, 0x1772, 0x1775, -+ 0x1778, 0x177b, 0x177e, 0x1781, 0x1784, 0x1787, 0x178a, 0x178d, -+ 0x1790, 0x1793, 0x1796, 0x1799, 0x179c, 0x179f, 0x17a2, 0x17a5, -+ 0x17a8, 0x17ab, 0x17ae, 0x17b1, 0x17b4, 0x17b7, 0x17ba, 0x17bd, -+ 0x17c0, 0x17c3, 0x17c6, 0x17c9, 0x17cc, 0x17cf, 0x17d2, 0x17d5, -+ 0x17d8, 0x17db, 0x17de, 0x17e1, 0x17e4, 0x17e7, 0x17ea, 0x17ed, -+ // Entry 600 - 63F -+ 0x17f0, 0x17f3, 0x17f6, 0x17f9, 0x17fc, 0x17ff, 0x1802, 0x1805, -+ 0x1808, 0x180b, 0x180e, 0x1811, 0x1814, 0x1817, 0x181a, 0x181d, -+ 0x1820, 0x1823, 0x1826, 0x1829, 0x182c, 0x182f, 0x1832, 0x1835, -+ 0x1838, 0x183b, 0x183e, 0x1841, 0x1844, 0x1847, 0x184a, 0x184d, -+ 0x1850, 0x1853, 0x1856, 0x1859, 0x185c, 0x185f, 0x1862, 0x1865, -+ 0x1868, 0x186b, 0x186e, 0x1871, 0x1874, 0x1877, 0x187a, 0x187d, -+ 0x1880, 0x1883, 0x1886, 0x1889, 0x188c, 0x188f, 0x1892, 0x1895, -+ 0x1898, 0x189b, 0x189e, 0x18a1, 0x18a4, 0x18a7, 0x18aa, 0x18ad, -+ // Entry 640 - 67F -+ 0x18b0, 0x18b3, 0x18b6, 0x18b9, 0x18bc, 0x18bf, 0x18c2, 0x18c5, -+ 0x18c8, 0x18cb, 0x18ce, 0x18d1, 0x18d4, 0x18d7, 0x18da, 0x18dd, -+ 0x18e0, 0x18e3, 0x18e6, 0x18e9, 0x18ec, 0x18ef, 0x18f2, 0x18f5, -+ 0x18f8, 0x18fb, 0x18fe, 0x1901, 0x1904, 0x1907, 0x190a, 0x190d, -+ 0x1910, 0x1913, 0x1916, 0x1919, 0x191c, 0x191f, 0x1922, 0x1925, -+ 0x1928, 0x192b, 0x192e, 0x1931, 0x1934, 0x1937, 0x193a, 0x193d, -+ 0x1940, 0x1943, 0x1946, 0x1949, 0x194c, 0x194f, 0x1952, 0x1955, -+ 0x1958, 0x195b, 0x195e, 0x1961, 0x1964, 0x1967, 0x196a, 0x196d, -+ // Entry 680 - 6BF -+ 0x1970, 0x1973, 0x1976, 0x1979, 0x197c, 0x197f, 0x1982, 0x1985, -+ 0x1988, 0x198b, 0x198e, 0x1991, 0x1994, 0x1997, 0x199a, 0x199d, -+ 0x19a0, 0x19a3, 0x19a6, 0x19a9, 0x19ac, 0x19af, 0x19b2, 0x19b5, -+ 0x19b8, 0x19bb, 0x19be, 0x19c1, 0x19c4, 0x19c7, 0x19ca, 0x19cd, -+ 0x19d0, 0x19d3, 0x19d6, 0x19d9, 0x19dc, 0x19df, 0x19e2, 0x19e5, -+ 0x19e8, 0x19eb, 0x19ee, 0x19f1, 0x19f4, 0x19f7, 0x19fa, 0x19fd, -+ 0x1a00, 0x1a03, 0x1a06, 0x1a09, 0x1a0c, 0x1a0f, 0x1a12, 0x1a15, -+ 0x1a18, 0x1a1b, 0x1a1e, 0x1a21, 0x1a24, 0x1a27, 0x1a2a, 0x1a2d, -+ // Entry 6C0 - 6FF -+ 0x1a30, -+} // Size: 3482 bytes -+ -+var xorData string = "" + // Size: 4907 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\x021\x00\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" + -+ "\x044\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 \x03\x0b)\x08\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\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=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\x03'\x02\x03)\x02\x03+" + -+ "\x02\x03/\x02\x03\x19\x02\x03\x1b\x02\x03\x1f\x03\x0d\x22\x18\x03\x0d" + -+ "\x22\x1a\x03\x0d\x22'\x03\x0d\x22/\x03\x0d\x223\x03\x0d\x22$\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\x06" + -+ "71\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: 31598 bytes (30.86 KiB). Checksum: d3118eda0d6b5360. -+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 < 133: -+ return uint16(idnaValues[n<<6+uint32(b)]) -+ default: -+ n -= 133 -+ return uint16(idnaSparse.lookup(n, b)) -+ } -+} -+ -+// idnaValues: 135 blocks, 8640 entries, 17280 bytes -+// The third block is the zero block. -+var idnaValues = [8640]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: 0x0012, 0xe9: 0x0018, -+ 0xea: 0x0019, 0xeb: 0x0018, 0xec: 0x0018, 0xed: 0x03c0, 0xee: 0x0018, 0xef: 0x0022, -+ 0xf0: 0x0018, 0xf1: 0x0018, 0xf2: 0x0029, 0xf3: 0x0031, 0xf4: 0x003a, 0xf5: 0x0005, -+ 0xf6: 0x0018, 0xf7: 0x0008, 0xf8: 0x0042, 0xf9: 0x0049, 0xfa: 0x0051, 0xfb: 0x0018, -+ 0xfc: 0x0059, 0xfd: 0x0061, 0xfe: 0x0069, 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: 0x0071, 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: 0x0079, -+ // Block 0x5, offset 0x140 -+ 0x140: 0x0079, 0x141: 0xe01d, 0x142: 0x0008, 0x143: 0xe03d, 0x144: 0x0008, 0x145: 0xe01d, -+ 0x146: 0x0008, 0x147: 0xe07d, 0x148: 0x0008, 0x149: 0x0081, 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: 0x0089, -+ // 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: 0x0091, 0x1c5: 0x0091, -+ 0x1c6: 0x0091, 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: 0x0099, 0x23b: 0xe03d, -+ 0x23c: 0x0008, 0x23d: 0x031d, 0x23e: 0x00a1, 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: 0x00d2, 0x259: 0x00da, 0x25a: 0x00e2, 0x25b: 0x00ea, 0x25c: 0x00f2, 0x25d: 0x00fa, -+ 0x25e: 0x0018, 0x25f: 0x0018, 0x260: 0x03ad, 0x261: 0x0101, 0x262: 0x0089, 0x263: 0x0109, -+ 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: 0x0111, 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: 0x011a, 0x2bb: 0x0008, -+ 0x2bc: 0x0008, 0x2bd: 0x0008, 0x2be: 0x0122, 0x2bf: 0x043d, -+ // Block 0xb, offset 0x2c0 -+ 0x2c0: 0x0040, 0x2c1: 0x0040, 0x2c2: 0x0040, 0x2c3: 0x0040, 0x2c4: 0x003a, 0x2c5: 0x012a, -+ 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: 0x0818, -+ 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: 0x0139, -+ 0x4b6: 0x0141, 0x4b7: 0x0149, 0x4b8: 0x0151, 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: 0x0c08, 0x557: 0x0c08, -+ 0x558: 0x0c08, 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: 0x0c08, 0x571: 0x0c08, 0x572: 0x0c08, 0x573: 0x0c08, 0x574: 0x0c08, 0x575: 0x0c08, -+ 0x576: 0x0c08, 0x577: 0x0c08, 0x578: 0x0c08, 0x579: 0x0c08, 0x57a: 0x0c08, 0x57b: 0x0c08, -+ 0x57c: 0x0c08, 0x57d: 0x0c08, 0x57e: 0x0c08, 0x57f: 0x0c08, -+ // Block 0x16, offset 0x580 -+ 0x580: 0x0c08, 0x581: 0x0c08, 0x582: 0x0c08, 0x583: 0x0808, 0x584: 0x0808, 0x585: 0x0808, -+ 0x586: 0x0a08, 0x587: 0x0808, 0x588: 0x0818, 0x589: 0x0a08, 0x58a: 0x0a08, 0x58b: 0x0a08, -+ 0x58c: 0x0a08, 0x58d: 0x0a08, 0x58e: 0x0c08, 0x58f: 0x0040, 0x590: 0x0840, 0x591: 0x0840, -+ 0x592: 0x0040, 0x593: 0x0040, 0x594: 0x0040, 0x595: 0x0040, 0x596: 0x0040, 0x597: 0x0040, -+ 0x598: 0x3308, 0x599: 0x3308, 0x59a: 0x3308, 0x59b: 0x3308, 0x59c: 0x3308, 0x59d: 0x3308, -+ 0x59e: 0x3308, 0x59f: 0x3308, 0x5a0: 0x0a08, 0x5a1: 0x0a08, 0x5a2: 0x0a08, 0x5a3: 0x0a08, -+ 0x5a4: 0x0a08, 0x5a5: 0x0a08, 0x5a6: 0x0a08, 0x5a7: 0x0a08, 0x5a8: 0x0a08, 0x5a9: 0x0a08, -+ 0x5aa: 0x0c08, 0x5ab: 0x0c08, 0x5ac: 0x0c08, 0x5ad: 0x0808, 0x5ae: 0x0c08, 0x5af: 0x0a08, -+ 0x5b0: 0x0a08, 0x5b1: 0x0c08, 0x5b2: 0x0c08, 0x5b3: 0x0a08, 0x5b4: 0x0a08, 0x5b5: 0x0a08, -+ 0x5b6: 0x0a08, 0x5b7: 0x0a08, 0x5b8: 0x0a08, 0x5b9: 0x0c08, 0x5ba: 0x0a08, 0x5bb: 0x0a08, -+ 0x5bc: 0x0a08, 0x5bd: 0x0a08, 0x5be: 0x0a08, 0x5bf: 0x0a08, -+ // Block 0x17, offset 0x5c0 -+ 0x5c0: 0x3008, 0x5c1: 0x3308, 0x5c2: 0x3308, 0x5c3: 0x3308, 0x5c4: 0x3308, 0x5c5: 0x3308, -+ 0x5c6: 0x3308, 0x5c7: 0x3308, 0x5c8: 0x3308, 0x5c9: 0x3008, 0x5ca: 0x3008, 0x5cb: 0x3008, -+ 0x5cc: 0x3008, 0x5cd: 0x3b08, 0x5ce: 0x3008, 0x5cf: 0x3008, 0x5d0: 0x0008, 0x5d1: 0x3308, -+ 0x5d2: 0x3308, 0x5d3: 0x3308, 0x5d4: 0x3308, 0x5d5: 0x3308, 0x5d6: 0x3308, 0x5d7: 0x3308, -+ 0x5d8: 0x0159, 0x5d9: 0x0161, 0x5da: 0x0169, 0x5db: 0x0171, 0x5dc: 0x0179, 0x5dd: 0x0181, -+ 0x5de: 0x0189, 0x5df: 0x0191, 0x5e0: 0x0008, 0x5e1: 0x0008, 0x5e2: 0x3308, 0x5e3: 0x3308, -+ 0x5e4: 0x0018, 0x5e5: 0x0018, 0x5e6: 0x0008, 0x5e7: 0x0008, 0x5e8: 0x0008, 0x5e9: 0x0008, -+ 0x5ea: 0x0008, 0x5eb: 0x0008, 0x5ec: 0x0008, 0x5ed: 0x0008, 0x5ee: 0x0008, 0x5ef: 0x0008, -+ 0x5f0: 0x0018, 0x5f1: 0x0008, 0x5f2: 0x0008, 0x5f3: 0x0008, 0x5f4: 0x0008, 0x5f5: 0x0008, -+ 0x5f6: 0x0008, 0x5f7: 0x0008, 0x5f8: 0x0008, 0x5f9: 0x0008, 0x5fa: 0x0008, 0x5fb: 0x0008, -+ 0x5fc: 0x0008, 0x5fd: 0x0008, 0x5fe: 0x0008, 0x5ff: 0x0008, -+ // Block 0x18, offset 0x600 -+ 0x600: 0x0008, 0x601: 0x3308, 0x602: 0x3008, 0x603: 0x3008, 0x604: 0x0040, 0x605: 0x0008, -+ 0x606: 0x0008, 0x607: 0x0008, 0x608: 0x0008, 0x609: 0x0008, 0x60a: 0x0008, 0x60b: 0x0008, -+ 0x60c: 0x0008, 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: 0x0040, 0x634: 0x0040, 0x635: 0x0040, -+ 0x636: 0x0008, 0x637: 0x0008, 0x638: 0x0008, 0x639: 0x0008, 0x63a: 0x0040, 0x63b: 0x0040, -+ 0x63c: 0x3308, 0x63d: 0x0008, 0x63e: 0x3008, 0x63f: 0x3008, -+ // Block 0x19, offset 0x640 -+ 0x640: 0x3008, 0x641: 0x3308, 0x642: 0x3308, 0x643: 0x3308, 0x644: 0x3308, 0x645: 0x0040, -+ 0x646: 0x0040, 0x647: 0x3008, 0x648: 0x3008, 0x649: 0x0040, 0x64a: 0x0040, 0x64b: 0x3008, -+ 0x64c: 0x3008, 0x64d: 0x3b08, 0x64e: 0x0008, 0x64f: 0x0040, 0x650: 0x0040, 0x651: 0x0040, -+ 0x652: 0x0040, 0x653: 0x0040, 0x654: 0x0040, 0x655: 0x0040, 0x656: 0x0040, 0x657: 0x3008, -+ 0x658: 0x0040, 0x659: 0x0040, 0x65a: 0x0040, 0x65b: 0x0040, 0x65c: 0x0199, 0x65d: 0x01a1, -+ 0x65e: 0x0040, 0x65f: 0x01a9, 0x660: 0x0008, 0x661: 0x0008, 0x662: 0x3308, 0x663: 0x3308, -+ 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: 0x0008, 0x671: 0x0008, 0x672: 0x0018, 0x673: 0x0018, 0x674: 0x0018, 0x675: 0x0018, -+ 0x676: 0x0018, 0x677: 0x0018, 0x678: 0x0018, 0x679: 0x0018, 0x67a: 0x0018, 0x67b: 0x0018, -+ 0x67c: 0x0008, 0x67d: 0x0018, 0x67e: 0x3308, 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: 0x0040, -+ 0x68c: 0x0040, 0x68d: 0x0040, 0x68e: 0x0040, 0x68f: 0x0008, 0x690: 0x0008, 0x691: 0x0040, -+ 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: 0x01b1, 0x6b4: 0x0040, 0x6b5: 0x0008, -+ 0x6b6: 0x01b9, 0x6b7: 0x0040, 0x6b8: 0x0008, 0x6b9: 0x0008, 0x6ba: 0x0040, 0x6bb: 0x0040, -+ 0x6bc: 0x3308, 0x6bd: 0x0040, 0x6be: 0x3008, 0x6bf: 0x3008, -+ // Block 0x1b, offset 0x6c0 -+ 0x6c0: 0x3008, 0x6c1: 0x3308, 0x6c2: 0x3308, 0x6c3: 0x0040, 0x6c4: 0x0040, 0x6c5: 0x0040, -+ 0x6c6: 0x0040, 0x6c7: 0x3308, 0x6c8: 0x3308, 0x6c9: 0x0040, 0x6ca: 0x0040, 0x6cb: 0x3308, -+ 0x6cc: 0x3308, 0x6cd: 0x3b08, 0x6ce: 0x0040, 0x6cf: 0x0040, 0x6d0: 0x0040, 0x6d1: 0x3308, -+ 0x6d2: 0x0040, 0x6d3: 0x0040, 0x6d4: 0x0040, 0x6d5: 0x0040, 0x6d6: 0x0040, 0x6d7: 0x0040, -+ 0x6d8: 0x0040, 0x6d9: 0x01c1, 0x6da: 0x01c9, 0x6db: 0x01d1, 0x6dc: 0x0008, 0x6dd: 0x0040, -+ 0x6de: 0x01d9, 0x6df: 0x0040, 0x6e0: 0x0040, 0x6e1: 0x0040, 0x6e2: 0x0040, 0x6e3: 0x0040, -+ 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: 0x3308, 0x6f1: 0x3308, 0x6f2: 0x0008, 0x6f3: 0x0008, 0x6f4: 0x0008, 0x6f5: 0x3308, -+ 0x6f6: 0x0018, 0x6f7: 0x0040, 0x6f8: 0x0040, 0x6f9: 0x0040, 0x6fa: 0x0040, 0x6fb: 0x0040, -+ 0x6fc: 0x0040, 0x6fd: 0x0040, 0x6fe: 0x0040, 0x6ff: 0x0040, -+ // Block 0x1c, offset 0x700 -+ 0x700: 0x0040, 0x701: 0x3308, 0x702: 0x3308, 0x703: 0x3008, 0x704: 0x0040, 0x705: 0x0008, -+ 0x706: 0x0008, 0x707: 0x0008, 0x708: 0x0008, 0x709: 0x0008, 0x70a: 0x0008, 0x70b: 0x0008, -+ 0x70c: 0x0008, 0x70d: 0x0008, 0x70e: 0x0040, 0x70f: 0x0008, 0x710: 0x0008, 0x711: 0x0008, -+ 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: 0x3008, -+ // Block 0x1d, offset 0x740 -+ 0x740: 0x3008, 0x741: 0x3308, 0x742: 0x3308, 0x743: 0x3308, 0x744: 0x3308, 0x745: 0x3308, -+ 0x746: 0x0040, 0x747: 0x3308, 0x748: 0x3308, 0x749: 0x3008, 0x74a: 0x0040, 0x74b: 0x3008, -+ 0x74c: 0x3008, 0x74d: 0x3b08, 0x74e: 0x0040, 0x74f: 0x0040, 0x750: 0x0008, 0x751: 0x0040, -+ 0x752: 0x0040, 0x753: 0x0040, 0x754: 0x0040, 0x755: 0x0040, 0x756: 0x0040, 0x757: 0x0040, -+ 0x758: 0x0040, 0x759: 0x0040, 0x75a: 0x0040, 0x75b: 0x0040, 0x75c: 0x0040, 0x75d: 0x0040, -+ 0x75e: 0x0040, 0x75f: 0x0040, 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: 0x0018, 0x772: 0x0040, 0x773: 0x0040, 0x774: 0x0040, 0x775: 0x0040, -+ 0x776: 0x0040, 0x777: 0x0040, 0x778: 0x0040, 0x779: 0x0008, 0x77a: 0x3308, 0x77b: 0x3308, -+ 0x77c: 0x3308, 0x77d: 0x3308, 0x77e: 0x3308, 0x77f: 0x3308, -+ // Block 0x1e, offset 0x780 -+ 0x780: 0x0040, 0x781: 0x3308, 0x782: 0x3008, 0x783: 0x3008, 0x784: 0x0040, 0x785: 0x0008, -+ 0x786: 0x0008, 0x787: 0x0008, 0x788: 0x0008, 0x789: 0x0008, 0x78a: 0x0008, 0x78b: 0x0008, -+ 0x78c: 0x0008, 0x78d: 0x0040, 0x78e: 0x0040, 0x78f: 0x0008, 0x790: 0x0008, 0x791: 0x0040, -+ 0x792: 0x0040, 0x793: 0x0008, 0x794: 0x0008, 0x795: 0x0008, 0x796: 0x0008, 0x797: 0x0008, -+ 0x798: 0x0008, 0x799: 0x0008, 0x79a: 0x0008, 0x79b: 0x0008, 0x79c: 0x0008, 0x79d: 0x0008, -+ 0x79e: 0x0008, 0x79f: 0x0008, 0x7a0: 0x0008, 0x7a1: 0x0008, 0x7a2: 0x0008, 0x7a3: 0x0008, -+ 0x7a4: 0x0008, 0x7a5: 0x0008, 0x7a6: 0x0008, 0x7a7: 0x0008, 0x7a8: 0x0008, 0x7a9: 0x0040, -+ 0x7aa: 0x0008, 0x7ab: 0x0008, 0x7ac: 0x0008, 0x7ad: 0x0008, 0x7ae: 0x0008, 0x7af: 0x0008, -+ 0x7b0: 0x0008, 0x7b1: 0x0040, 0x7b2: 0x0008, 0x7b3: 0x0008, 0x7b4: 0x0040, 0x7b5: 0x0008, -+ 0x7b6: 0x0008, 0x7b7: 0x0008, 0x7b8: 0x0008, 0x7b9: 0x0008, 0x7ba: 0x0040, 0x7bb: 0x0040, -+ 0x7bc: 0x3308, 0x7bd: 0x0008, 0x7be: 0x3008, 0x7bf: 0x3308, -+ // Block 0x1f, offset 0x7c0 -+ 0x7c0: 0x3008, 0x7c1: 0x3308, 0x7c2: 0x3308, 0x7c3: 0x3308, 0x7c4: 0x3308, 0x7c5: 0x0040, -+ 0x7c6: 0x0040, 0x7c7: 0x3008, 0x7c8: 0x3008, 0x7c9: 0x0040, 0x7ca: 0x0040, 0x7cb: 0x3008, -+ 0x7cc: 0x3008, 0x7cd: 0x3b08, 0x7ce: 0x0040, 0x7cf: 0x0040, 0x7d0: 0x0040, 0x7d1: 0x0040, -+ 0x7d2: 0x0040, 0x7d3: 0x0040, 0x7d4: 0x0040, 0x7d5: 0x3308, 0x7d6: 0x3308, 0x7d7: 0x3008, -+ 0x7d8: 0x0040, 0x7d9: 0x0040, 0x7da: 0x0040, 0x7db: 0x0040, 0x7dc: 0x01e1, 0x7dd: 0x01e9, -+ 0x7de: 0x0040, 0x7df: 0x0008, 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: 0x0018, 0x7f1: 0x0008, 0x7f2: 0x0018, 0x7f3: 0x0018, 0x7f4: 0x0018, 0x7f5: 0x0018, -+ 0x7f6: 0x0018, 0x7f7: 0x0018, 0x7f8: 0x0040, 0x7f9: 0x0040, 0x7fa: 0x0040, 0x7fb: 0x0040, -+ 0x7fc: 0x0040, 0x7fd: 0x0040, 0x7fe: 0x0040, 0x7ff: 0x0040, -+ // Block 0x20, offset 0x800 -+ 0x800: 0x0040, 0x801: 0x0040, 0x802: 0x3308, 0x803: 0x0008, 0x804: 0x0040, 0x805: 0x0008, -+ 0x806: 0x0008, 0x807: 0x0008, 0x808: 0x0008, 0x809: 0x0008, 0x80a: 0x0008, 0x80b: 0x0040, -+ 0x80c: 0x0040, 0x80d: 0x0040, 0x80e: 0x0008, 0x80f: 0x0008, 0x810: 0x0008, 0x811: 0x0040, -+ 0x812: 0x0008, 0x813: 0x0008, 0x814: 0x0008, 0x815: 0x0008, 0x816: 0x0040, 0x817: 0x0040, -+ 0x818: 0x0040, 0x819: 0x0008, 0x81a: 0x0008, 0x81b: 0x0040, 0x81c: 0x0008, 0x81d: 0x0040, -+ 0x81e: 0x0008, 0x81f: 0x0008, 0x820: 0x0040, 0x821: 0x0040, 0x822: 0x0040, 0x823: 0x0008, -+ 0x824: 0x0008, 0x825: 0x0040, 0x826: 0x0040, 0x827: 0x0040, 0x828: 0x0008, 0x829: 0x0008, -+ 0x82a: 0x0008, 0x82b: 0x0040, 0x82c: 0x0040, 0x82d: 0x0040, 0x82e: 0x0008, 0x82f: 0x0008, -+ 0x830: 0x0008, 0x831: 0x0008, 0x832: 0x0008, 0x833: 0x0008, 0x834: 0x0008, 0x835: 0x0008, -+ 0x836: 0x0008, 0x837: 0x0008, 0x838: 0x0008, 0x839: 0x0008, 0x83a: 0x0040, 0x83b: 0x0040, -+ 0x83c: 0x0040, 0x83d: 0x0040, 0x83e: 0x3008, 0x83f: 0x3008, -+ // Block 0x21, offset 0x840 -+ 0x840: 0x3308, 0x841: 0x3008, 0x842: 0x3008, 0x843: 0x3008, 0x844: 0x3008, 0x845: 0x0040, -+ 0x846: 0x3308, 0x847: 0x3308, 0x848: 0x3308, 0x849: 0x0040, 0x84a: 0x3308, 0x84b: 0x3308, -+ 0x84c: 0x3308, 0x84d: 0x3b08, 0x84e: 0x0040, 0x84f: 0x0040, 0x850: 0x0040, 0x851: 0x0040, -+ 0x852: 0x0040, 0x853: 0x0040, 0x854: 0x0040, 0x855: 0x3308, 0x856: 0x3308, 0x857: 0x0040, -+ 0x858: 0x0008, 0x859: 0x0008, 0x85a: 0x0008, 0x85b: 0x0040, 0x85c: 0x0040, 0x85d: 0x0008, -+ 0x85e: 0x0040, 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: 0x0040, 0x872: 0x0040, 0x873: 0x0040, 0x874: 0x0040, 0x875: 0x0040, -+ 0x876: 0x0040, 0x877: 0x0018, 0x878: 0x0018, 0x879: 0x0018, 0x87a: 0x0018, 0x87b: 0x0018, -+ 0x87c: 0x0018, 0x87d: 0x0018, 0x87e: 0x0018, 0x87f: 0x0018, -+ // Block 0x22, offset 0x880 -+ 0x880: 0x0008, 0x881: 0x3308, 0x882: 0x3008, 0x883: 0x3008, 0x884: 0x0018, 0x885: 0x0008, -+ 0x886: 0x0008, 0x887: 0x0008, 0x888: 0x0008, 0x889: 0x0008, 0x88a: 0x0008, 0x88b: 0x0008, -+ 0x88c: 0x0008, 0x88d: 0x0040, 0x88e: 0x0008, 0x88f: 0x0008, 0x890: 0x0008, 0x891: 0x0040, -+ 0x892: 0x0008, 0x893: 0x0008, 0x894: 0x0008, 0x895: 0x0008, 0x896: 0x0008, 0x897: 0x0008, -+ 0x898: 0x0008, 0x899: 0x0008, 0x89a: 0x0008, 0x89b: 0x0008, 0x89c: 0x0008, 0x89d: 0x0008, -+ 0x89e: 0x0008, 0x89f: 0x0008, 0x8a0: 0x0008, 0x8a1: 0x0008, 0x8a2: 0x0008, 0x8a3: 0x0008, -+ 0x8a4: 0x0008, 0x8a5: 0x0008, 0x8a6: 0x0008, 0x8a7: 0x0008, 0x8a8: 0x0008, 0x8a9: 0x0040, -+ 0x8aa: 0x0008, 0x8ab: 0x0008, 0x8ac: 0x0008, 0x8ad: 0x0008, 0x8ae: 0x0008, 0x8af: 0x0008, -+ 0x8b0: 0x0008, 0x8b1: 0x0008, 0x8b2: 0x0008, 0x8b3: 0x0008, 0x8b4: 0x0040, 0x8b5: 0x0008, -+ 0x8b6: 0x0008, 0x8b7: 0x0008, 0x8b8: 0x0008, 0x8b9: 0x0008, 0x8ba: 0x0040, 0x8bb: 0x0040, -+ 0x8bc: 0x3308, 0x8bd: 0x0008, 0x8be: 0x3008, 0x8bf: 0x3308, -+ // Block 0x23, offset 0x8c0 -+ 0x8c0: 0x3008, 0x8c1: 0x3008, 0x8c2: 0x3008, 0x8c3: 0x3008, 0x8c4: 0x3008, 0x8c5: 0x0040, -+ 0x8c6: 0x3308, 0x8c7: 0x3008, 0x8c8: 0x3008, 0x8c9: 0x0040, 0x8ca: 0x3008, 0x8cb: 0x3008, -+ 0x8cc: 0x3308, 0x8cd: 0x3b08, 0x8ce: 0x0040, 0x8cf: 0x0040, 0x8d0: 0x0040, 0x8d1: 0x0040, -+ 0x8d2: 0x0040, 0x8d3: 0x0040, 0x8d4: 0x0040, 0x8d5: 0x3008, 0x8d6: 0x3008, 0x8d7: 0x0040, -+ 0x8d8: 0x0040, 0x8d9: 0x0040, 0x8da: 0x0040, 0x8db: 0x0040, 0x8dc: 0x0040, 0x8dd: 0x0008, -+ 0x8de: 0x0008, 0x8df: 0x0040, 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: 0x0040, 0x8f1: 0x0008, 0x8f2: 0x0008, 0x8f3: 0x3008, 0x8f4: 0x0040, 0x8f5: 0x0040, -+ 0x8f6: 0x0040, 0x8f7: 0x0040, 0x8f8: 0x0040, 0x8f9: 0x0040, 0x8fa: 0x0040, 0x8fb: 0x0040, -+ 0x8fc: 0x0040, 0x8fd: 0x0040, 0x8fe: 0x0040, 0x8ff: 0x0040, -+ // Block 0x24, offset 0x900 -+ 0x900: 0x3008, 0x901: 0x3308, 0x902: 0x3308, 0x903: 0x3308, 0x904: 0x3308, 0x905: 0x0040, -+ 0x906: 0x3008, 0x907: 0x3008, 0x908: 0x3008, 0x909: 0x0040, 0x90a: 0x3008, 0x90b: 0x3008, -+ 0x90c: 0x3008, 0x90d: 0x3b08, 0x90e: 0x0008, 0x90f: 0x0018, 0x910: 0x0040, 0x911: 0x0040, -+ 0x912: 0x0040, 0x913: 0x0040, 0x914: 0x0008, 0x915: 0x0008, 0x916: 0x0008, 0x917: 0x3008, -+ 0x918: 0x0018, 0x919: 0x0018, 0x91a: 0x0018, 0x91b: 0x0018, 0x91c: 0x0018, 0x91d: 0x0018, -+ 0x91e: 0x0018, 0x91f: 0x0008, 0x920: 0x0008, 0x921: 0x0008, 0x922: 0x3308, 0x923: 0x3308, -+ 0x924: 0x0040, 0x925: 0x0040, 0x926: 0x0008, 0x927: 0x0008, 0x928: 0x0008, 0x929: 0x0008, -+ 0x92a: 0x0008, 0x92b: 0x0008, 0x92c: 0x0008, 0x92d: 0x0008, 0x92e: 0x0008, 0x92f: 0x0008, -+ 0x930: 0x0018, 0x931: 0x0018, 0x932: 0x0018, 0x933: 0x0018, 0x934: 0x0018, 0x935: 0x0018, -+ 0x936: 0x0018, 0x937: 0x0018, 0x938: 0x0018, 0x939: 0x0018, 0x93a: 0x0008, 0x93b: 0x0008, -+ 0x93c: 0x0008, 0x93d: 0x0008, 0x93e: 0x0008, 0x93f: 0x0008, -+ // Block 0x25, offset 0x940 -+ 0x940: 0x0040, 0x941: 0x0008, 0x942: 0x0008, 0x943: 0x0040, 0x944: 0x0008, 0x945: 0x0040, -+ 0x946: 0x0008, 0x947: 0x0008, 0x948: 0x0008, 0x949: 0x0008, 0x94a: 0x0008, 0x94b: 0x0040, -+ 0x94c: 0x0008, 0x94d: 0x0008, 0x94e: 0x0008, 0x94f: 0x0008, 0x950: 0x0008, 0x951: 0x0008, -+ 0x952: 0x0008, 0x953: 0x0008, 0x954: 0x0008, 0x955: 0x0008, 0x956: 0x0008, 0x957: 0x0008, -+ 0x958: 0x0008, 0x959: 0x0008, 0x95a: 0x0008, 0x95b: 0x0008, 0x95c: 0x0008, 0x95d: 0x0008, -+ 0x95e: 0x0008, 0x95f: 0x0008, 0x960: 0x0008, 0x961: 0x0008, 0x962: 0x0008, 0x963: 0x0008, -+ 0x964: 0x0040, 0x965: 0x0008, 0x966: 0x0040, 0x967: 0x0008, 0x968: 0x0008, 0x969: 0x0008, -+ 0x96a: 0x0008, 0x96b: 0x0008, 0x96c: 0x0008, 0x96d: 0x0008, 0x96e: 0x0008, 0x96f: 0x0008, -+ 0x970: 0x0008, 0x971: 0x3308, 0x972: 0x0008, 0x973: 0x01f9, 0x974: 0x3308, 0x975: 0x3308, -+ 0x976: 0x3308, 0x977: 0x3308, 0x978: 0x3308, 0x979: 0x3308, 0x97a: 0x3b08, 0x97b: 0x3308, -+ 0x97c: 0x3308, 0x97d: 0x0008, 0x97e: 0x0040, 0x97f: 0x0040, -+ // Block 0x26, offset 0x980 -+ 0x980: 0x0008, 0x981: 0x0008, 0x982: 0x0008, 0x983: 0x0211, 0x984: 0x0008, 0x985: 0x0008, -+ 0x986: 0x0008, 0x987: 0x0008, 0x988: 0x0040, 0x989: 0x0008, 0x98a: 0x0008, 0x98b: 0x0008, -+ 0x98c: 0x0008, 0x98d: 0x0219, 0x98e: 0x0008, 0x98f: 0x0008, 0x990: 0x0008, 0x991: 0x0008, -+ 0x992: 0x0221, 0x993: 0x0008, 0x994: 0x0008, 0x995: 0x0008, 0x996: 0x0008, 0x997: 0x0229, -+ 0x998: 0x0008, 0x999: 0x0008, 0x99a: 0x0008, 0x99b: 0x0008, 0x99c: 0x0231, 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: 0x0239, -+ 0x9aa: 0x0008, 0x9ab: 0x0008, 0x9ac: 0x0008, 0x9ad: 0x0040, 0x9ae: 0x0040, 0x9af: 0x0040, -+ 0x9b0: 0x0040, 0x9b1: 0x3308, 0x9b2: 0x3308, 0x9b3: 0x0241, 0x9b4: 0x3308, 0x9b5: 0x0249, -+ 0x9b6: 0x0251, 0x9b7: 0x0259, 0x9b8: 0x0261, 0x9b9: 0x0269, 0x9ba: 0x3308, 0x9bb: 0x3308, -+ 0x9bc: 0x3308, 0x9bd: 0x3308, 0x9be: 0x3308, 0x9bf: 0x3008, -+ // Block 0x27, offset 0x9c0 -+ 0x9c0: 0x3308, 0x9c1: 0x0271, 0x9c2: 0x3308, 0x9c3: 0x3308, 0x9c4: 0x3b08, 0x9c5: 0x0018, -+ 0x9c6: 0x3308, 0x9c7: 0x3308, 0x9c8: 0x0008, 0x9c9: 0x0008, 0x9ca: 0x0008, 0x9cb: 0x0008, -+ 0x9cc: 0x0008, 0x9cd: 0x3308, 0x9ce: 0x3308, 0x9cf: 0x3308, 0x9d0: 0x3308, 0x9d1: 0x3308, -+ 0x9d2: 0x3308, 0x9d3: 0x0279, 0x9d4: 0x3308, 0x9d5: 0x3308, 0x9d6: 0x3308, 0x9d7: 0x3308, -+ 0x9d8: 0x0040, 0x9d9: 0x3308, 0x9da: 0x3308, 0x9db: 0x3308, 0x9dc: 0x3308, 0x9dd: 0x0281, -+ 0x9de: 0x3308, 0x9df: 0x3308, 0x9e0: 0x3308, 0x9e1: 0x3308, 0x9e2: 0x0289, 0x9e3: 0x3308, -+ 0x9e4: 0x3308, 0x9e5: 0x3308, 0x9e6: 0x3308, 0x9e7: 0x0291, 0x9e8: 0x3308, 0x9e9: 0x3308, -+ 0x9ea: 0x3308, 0x9eb: 0x3308, 0x9ec: 0x0299, 0x9ed: 0x3308, 0x9ee: 0x3308, 0x9ef: 0x3308, -+ 0x9f0: 0x3308, 0x9f1: 0x3308, 0x9f2: 0x3308, 0x9f3: 0x3308, 0x9f4: 0x3308, 0x9f5: 0x3308, -+ 0x9f6: 0x3308, 0x9f7: 0x3308, 0x9f8: 0x3308, 0x9f9: 0x02a1, 0x9fa: 0x3308, 0x9fb: 0x3308, -+ 0x9fc: 0x3308, 0x9fd: 0x0040, 0x9fe: 0x0018, 0x9ff: 0x0018, -+ // 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: 0x0008, 0xa1c: 0x0008, 0xa1d: 0x0008, -+ 0xa1e: 0x0008, 0xa1f: 0x0008, 0xa20: 0x0008, 0xa21: 0x0008, 0xa22: 0x0008, 0xa23: 0x0008, -+ 0xa24: 0x0008, 0xa25: 0x0008, 0xa26: 0x0008, 0xa27: 0x0008, 0xa28: 0x0008, 0xa29: 0x0008, -+ 0xa2a: 0x0008, 0xa2b: 0x0008, 0xa2c: 0x0019, 0xa2d: 0x02e1, 0xa2e: 0x02e9, 0xa2f: 0x0008, -+ 0xa30: 0x02f1, 0xa31: 0x02f9, 0xa32: 0x0301, 0xa33: 0x0309, 0xa34: 0x00a9, 0xa35: 0x0311, -+ 0xa36: 0x00b1, 0xa37: 0x0319, 0xa38: 0x0101, 0xa39: 0x0321, 0xa3a: 0x0329, 0xa3b: 0x0008, -+ 0xa3c: 0x0051, 0xa3d: 0x0331, 0xa3e: 0x0339, 0xa3f: 0x00b9, -+ // Block 0x29, offset 0xa40 -+ 0xa40: 0x0341, 0xa41: 0x0349, 0xa42: 0x00c1, 0xa43: 0x0019, 0xa44: 0x0351, 0xa45: 0x0359, -+ 0xa46: 0x05b5, 0xa47: 0x02e9, 0xa48: 0x02f1, 0xa49: 0x02f9, 0xa4a: 0x0361, 0xa4b: 0x0369, -+ 0xa4c: 0x0371, 0xa4d: 0x0309, 0xa4e: 0x0008, 0xa4f: 0x0319, 0xa50: 0x0321, 0xa51: 0x0379, -+ 0xa52: 0x0051, 0xa53: 0x0381, 0xa54: 0x05cd, 0xa55: 0x05cd, 0xa56: 0x0339, 0xa57: 0x0341, -+ 0xa58: 0x0349, 0xa59: 0x05b5, 0xa5a: 0x0389, 0xa5b: 0x0391, 0xa5c: 0x05e5, 0xa5d: 0x0399, -+ 0xa5e: 0x03a1, 0xa5f: 0x03a9, 0xa60: 0x03b1, 0xa61: 0x03b9, 0xa62: 0x0311, 0xa63: 0x00b9, -+ 0xa64: 0x0349, 0xa65: 0x0391, 0xa66: 0x0399, 0xa67: 0x03a1, 0xa68: 0x03c1, 0xa69: 0x03b1, -+ 0xa6a: 0x03b9, 0xa6b: 0x0008, 0xa6c: 0x0008, 0xa6d: 0x0008, 0xa6e: 0x0008, 0xa6f: 0x0008, -+ 0xa70: 0x0008, 0xa71: 0x0008, 0xa72: 0x0008, 0xa73: 0x0008, 0xa74: 0x0008, 0xa75: 0x0008, -+ 0xa76: 0x0008, 0xa77: 0x0008, 0xa78: 0x03c9, 0xa79: 0x0008, 0xa7a: 0x0008, 0xa7b: 0x0008, -+ 0xa7c: 0x0008, 0xa7d: 0x0008, 0xa7e: 0x0008, 0xa7f: 0x0008, -+ // Block 0x2a, offset 0xa80 -+ 0xa80: 0x0008, 0xa81: 0x0008, 0xa82: 0x0008, 0xa83: 0x0008, 0xa84: 0x0008, 0xa85: 0x0008, -+ 0xa86: 0x0008, 0xa87: 0x0008, 0xa88: 0x0008, 0xa89: 0x0008, 0xa8a: 0x0008, 0xa8b: 0x0008, -+ 0xa8c: 0x0008, 0xa8d: 0x0008, 0xa8e: 0x0008, 0xa8f: 0x0008, 0xa90: 0x0008, 0xa91: 0x0008, -+ 0xa92: 0x0008, 0xa93: 0x0008, 0xa94: 0x0008, 0xa95: 0x0008, 0xa96: 0x0008, 0xa97: 0x0008, -+ 0xa98: 0x0008, 0xa99: 0x0008, 0xa9a: 0x0008, 0xa9b: 0x03d1, 0xa9c: 0x03d9, 0xa9d: 0x03e1, -+ 0xa9e: 0x03e9, 0xa9f: 0x0371, 0xaa0: 0x03f1, 0xaa1: 0x03f9, 0xaa2: 0x0401, 0xaa3: 0x0409, -+ 0xaa4: 0x0411, 0xaa5: 0x0419, 0xaa6: 0x0421, 0xaa7: 0x05fd, 0xaa8: 0x0429, 0xaa9: 0x0431, -+ 0xaaa: 0xe17d, 0xaab: 0x0439, 0xaac: 0x0441, 0xaad: 0x0449, 0xaae: 0x0451, 0xaaf: 0x0459, -+ 0xab0: 0x0461, 0xab1: 0x0469, 0xab2: 0x0471, 0xab3: 0x0479, 0xab4: 0x0481, 0xab5: 0x0489, -+ 0xab6: 0x0491, 0xab7: 0x0499, 0xab8: 0x0615, 0xab9: 0x04a1, 0xaba: 0x04a9, 0xabb: 0x04b1, -+ 0xabc: 0x04b9, 0xabd: 0x04c1, 0xabe: 0x04c9, 0xabf: 0x04d1, -+ // 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: 0xe00d, 0xad7: 0x0008, -+ 0xad8: 0xe00d, 0xad9: 0x0008, 0xada: 0xe00d, 0xadb: 0x0008, 0xadc: 0xe00d, 0xadd: 0x0008, -+ 0xade: 0xe00d, 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: 0xe00d, 0xb01: 0x0008, 0xb02: 0xe00d, 0xb03: 0x0008, 0xb04: 0xe00d, 0xb05: 0x0008, -+ 0xb06: 0xe00d, 0xb07: 0x0008, 0xb08: 0xe00d, 0xb09: 0x0008, 0xb0a: 0xe00d, 0xb0b: 0x0008, -+ 0xb0c: 0xe00d, 0xb0d: 0x0008, 0xb0e: 0xe00d, 0xb0f: 0x0008, 0xb10: 0xe00d, 0xb11: 0x0008, -+ 0xb12: 0xe00d, 0xb13: 0x0008, 0xb14: 0xe00d, 0xb15: 0x0008, 0xb16: 0x0008, 0xb17: 0x0008, -+ 0xb18: 0x0008, 0xb19: 0x0008, 0xb1a: 0x062d, 0xb1b: 0x064d, 0xb1c: 0x0008, 0xb1d: 0x0008, -+ 0xb1e: 0x04d9, 0xb1f: 0x0008, 0xb20: 0xe00d, 0xb21: 0x0008, 0xb22: 0xe00d, 0xb23: 0x0008, -+ 0xb24: 0xe00d, 0xb25: 0x0008, 0xb26: 0xe00d, 0xb27: 0x0008, 0xb28: 0xe00d, 0xb29: 0x0008, -+ 0xb2a: 0xe00d, 0xb2b: 0x0008, 0xb2c: 0xe00d, 0xb2d: 0x0008, 0xb2e: 0xe00d, 0xb2f: 0x0008, -+ 0xb30: 0xe00d, 0xb31: 0x0008, 0xb32: 0xe00d, 0xb33: 0x0008, 0xb34: 0xe00d, 0xb35: 0x0008, -+ 0xb36: 0xe00d, 0xb37: 0x0008, 0xb38: 0xe00d, 0xb39: 0x0008, 0xb3a: 0xe00d, 0xb3b: 0x0008, -+ 0xb3c: 0xe00d, 0xb3d: 0x0008, 0xb3e: 0xe00d, 0xb3f: 0x0008, -+ // Block 0x2d, offset 0xb40 -+ 0xb40: 0x0008, 0xb41: 0x0008, 0xb42: 0x0008, 0xb43: 0x0008, 0xb44: 0x0008, 0xb45: 0x0008, -+ 0xb46: 0x0040, 0xb47: 0x0040, 0xb48: 0xe045, 0xb49: 0xe045, 0xb4a: 0xe045, 0xb4b: 0xe045, -+ 0xb4c: 0xe045, 0xb4d: 0xe045, 0xb4e: 0x0040, 0xb4f: 0x0040, 0xb50: 0x0008, 0xb51: 0x0008, -+ 0xb52: 0x0008, 0xb53: 0x0008, 0xb54: 0x0008, 0xb55: 0x0008, 0xb56: 0x0008, 0xb57: 0x0008, -+ 0xb58: 0x0040, 0xb59: 0xe045, 0xb5a: 0x0040, 0xb5b: 0xe045, 0xb5c: 0x0040, 0xb5d: 0xe045, -+ 0xb5e: 0x0040, 0xb5f: 0xe045, 0xb60: 0x0008, 0xb61: 0x0008, 0xb62: 0x0008, 0xb63: 0x0008, -+ 0xb64: 0x0008, 0xb65: 0x0008, 0xb66: 0x0008, 0xb67: 0x0008, 0xb68: 0xe045, 0xb69: 0xe045, -+ 0xb6a: 0xe045, 0xb6b: 0xe045, 0xb6c: 0xe045, 0xb6d: 0xe045, 0xb6e: 0xe045, 0xb6f: 0xe045, -+ 0xb70: 0x0008, 0xb71: 0x04e1, 0xb72: 0x0008, 0xb73: 0x04e9, 0xb74: 0x0008, 0xb75: 0x04f1, -+ 0xb76: 0x0008, 0xb77: 0x04f9, 0xb78: 0x0008, 0xb79: 0x0501, 0xb7a: 0x0008, 0xb7b: 0x0509, -+ 0xb7c: 0x0008, 0xb7d: 0x0511, 0xb7e: 0x0040, 0xb7f: 0x0040, -+ // Block 0x2e, offset 0xb80 -+ 0xb80: 0x0519, 0xb81: 0x0521, 0xb82: 0x0529, 0xb83: 0x0531, 0xb84: 0x0539, 0xb85: 0x0541, -+ 0xb86: 0x0549, 0xb87: 0x0551, 0xb88: 0x0519, 0xb89: 0x0521, 0xb8a: 0x0529, 0xb8b: 0x0531, -+ 0xb8c: 0x0539, 0xb8d: 0x0541, 0xb8e: 0x0549, 0xb8f: 0x0551, 0xb90: 0x0559, 0xb91: 0x0561, -+ 0xb92: 0x0569, 0xb93: 0x0571, 0xb94: 0x0579, 0xb95: 0x0581, 0xb96: 0x0589, 0xb97: 0x0591, -+ 0xb98: 0x0559, 0xb99: 0x0561, 0xb9a: 0x0569, 0xb9b: 0x0571, 0xb9c: 0x0579, 0xb9d: 0x0581, -+ 0xb9e: 0x0589, 0xb9f: 0x0591, 0xba0: 0x0599, 0xba1: 0x05a1, 0xba2: 0x05a9, 0xba3: 0x05b1, -+ 0xba4: 0x05b9, 0xba5: 0x05c1, 0xba6: 0x05c9, 0xba7: 0x05d1, 0xba8: 0x0599, 0xba9: 0x05a1, -+ 0xbaa: 0x05a9, 0xbab: 0x05b1, 0xbac: 0x05b9, 0xbad: 0x05c1, 0xbae: 0x05c9, 0xbaf: 0x05d1, -+ 0xbb0: 0x0008, 0xbb1: 0x0008, 0xbb2: 0x05d9, 0xbb3: 0x05e1, 0xbb4: 0x05e9, 0xbb5: 0x0040, -+ 0xbb6: 0x0008, 0xbb7: 0x05f1, 0xbb8: 0xe045, 0xbb9: 0xe045, 0xbba: 0x0665, 0xbbb: 0x04e1, -+ 0xbbc: 0x05e1, 0xbbd: 0x067e, 0xbbe: 0x05f9, 0xbbf: 0x069e, -+ // Block 0x2f, offset 0xbc0 -+ 0xbc0: 0x06be, 0xbc1: 0x0602, 0xbc2: 0x0609, 0xbc3: 0x0611, 0xbc4: 0x0619, 0xbc5: 0x0040, -+ 0xbc6: 0x0008, 0xbc7: 0x0621, 0xbc8: 0x06dd, 0xbc9: 0x04e9, 0xbca: 0x06f5, 0xbcb: 0x04f1, -+ 0xbcc: 0x0611, 0xbcd: 0x062a, 0xbce: 0x0632, 0xbcf: 0x063a, 0xbd0: 0x0008, 0xbd1: 0x0008, -+ 0xbd2: 0x0008, 0xbd3: 0x0641, 0xbd4: 0x0040, 0xbd5: 0x0040, 0xbd6: 0x0008, 0xbd7: 0x0008, -+ 0xbd8: 0xe045, 0xbd9: 0xe045, 0xbda: 0x070d, 0xbdb: 0x04f9, 0xbdc: 0x0040, 0xbdd: 0x064a, -+ 0xbde: 0x0652, 0xbdf: 0x065a, 0xbe0: 0x0008, 0xbe1: 0x0008, 0xbe2: 0x0008, 0xbe3: 0x0661, -+ 0xbe4: 0x0008, 0xbe5: 0x0008, 0xbe6: 0x0008, 0xbe7: 0x0008, 0xbe8: 0xe045, 0xbe9: 0xe045, -+ 0xbea: 0x0725, 0xbeb: 0x0509, 0xbec: 0xe04d, 0xbed: 0x066a, 0xbee: 0x012a, 0xbef: 0x0672, -+ 0xbf0: 0x0040, 0xbf1: 0x0040, 0xbf2: 0x0679, 0xbf3: 0x0681, 0xbf4: 0x0689, 0xbf5: 0x0040, -+ 0xbf6: 0x0008, 0xbf7: 0x0691, 0xbf8: 0x073d, 0xbf9: 0x0501, 0xbfa: 0x0515, 0xbfb: 0x0511, -+ 0xbfc: 0x0681, 0xbfd: 0x0756, 0xbfe: 0x0776, 0xbff: 0x0040, -+ // Block 0x30, offset 0xc00 -+ 0xc00: 0x000a, 0xc01: 0x000a, 0xc02: 0x000a, 0xc03: 0x000a, 0xc04: 0x000a, 0xc05: 0x000a, -+ 0xc06: 0x000a, 0xc07: 0x000a, 0xc08: 0x000a, 0xc09: 0x000a, 0xc0a: 0x000a, 0xc0b: 0x03c0, -+ 0xc0c: 0x0003, 0xc0d: 0x0003, 0xc0e: 0x0340, 0xc0f: 0x0b40, 0xc10: 0x0018, 0xc11: 0xe00d, -+ 0xc12: 0x0018, 0xc13: 0x0018, 0xc14: 0x0018, 0xc15: 0x0018, 0xc16: 0x0018, 0xc17: 0x0796, -+ 0xc18: 0x0018, 0xc19: 0x0018, 0xc1a: 0x0018, 0xc1b: 0x0018, 0xc1c: 0x0018, 0xc1d: 0x0018, -+ 0xc1e: 0x0018, 0xc1f: 0x0018, 0xc20: 0x0018, 0xc21: 0x0018, 0xc22: 0x0018, 0xc23: 0x0018, -+ 0xc24: 0x0040, 0xc25: 0x0040, 0xc26: 0x0040, 0xc27: 0x0018, 0xc28: 0x0040, 0xc29: 0x0040, -+ 0xc2a: 0x0340, 0xc2b: 0x0340, 0xc2c: 0x0340, 0xc2d: 0x0340, 0xc2e: 0x0340, 0xc2f: 0x000a, -+ 0xc30: 0x0018, 0xc31: 0x0018, 0xc32: 0x0018, 0xc33: 0x0699, 0xc34: 0x06a1, 0xc35: 0x0018, -+ 0xc36: 0x06a9, 0xc37: 0x06b1, 0xc38: 0x0018, 0xc39: 0x0018, 0xc3a: 0x0018, 0xc3b: 0x0018, -+ 0xc3c: 0x06ba, 0xc3d: 0x0018, 0xc3e: 0x07b6, 0xc3f: 0x0018, -+ // Block 0x31, offset 0xc40 -+ 0xc40: 0x0018, 0xc41: 0x0018, 0xc42: 0x0018, 0xc43: 0x0018, 0xc44: 0x0018, 0xc45: 0x0018, -+ 0xc46: 0x0018, 0xc47: 0x06c2, 0xc48: 0x06ca, 0xc49: 0x06d2, 0xc4a: 0x0018, 0xc4b: 0x0018, -+ 0xc4c: 0x0018, 0xc4d: 0x0018, 0xc4e: 0x0018, 0xc4f: 0x0018, 0xc50: 0x0018, 0xc51: 0x0018, -+ 0xc52: 0x0018, 0xc53: 0x0018, 0xc54: 0x0018, 0xc55: 0x0018, 0xc56: 0x0018, 0xc57: 0x06d9, -+ 0xc58: 0x0018, 0xc59: 0x0018, 0xc5a: 0x0018, 0xc5b: 0x0018, 0xc5c: 0x0018, 0xc5d: 0x0018, -+ 0xc5e: 0x0018, 0xc5f: 0x000a, 0xc60: 0x03c0, 0xc61: 0x0340, 0xc62: 0x0340, 0xc63: 0x0340, -+ 0xc64: 0x03c0, 0xc65: 0x0040, 0xc66: 0x0040, 0xc67: 0x0040, 0xc68: 0x0040, 0xc69: 0x0040, -+ 0xc6a: 0x0340, 0xc6b: 0x0340, 0xc6c: 0x0340, 0xc6d: 0x0340, 0xc6e: 0x0340, 0xc6f: 0x0340, -+ 0xc70: 0x06e1, 0xc71: 0x0311, 0xc72: 0x0040, 0xc73: 0x0040, 0xc74: 0x06e9, 0xc75: 0x06f1, -+ 0xc76: 0x06f9, 0xc77: 0x0701, 0xc78: 0x0709, 0xc79: 0x0711, 0xc7a: 0x071a, 0xc7b: 0x07d5, -+ 0xc7c: 0x0722, 0xc7d: 0x072a, 0xc7e: 0x0732, 0xc7f: 0x0329, -+ // Block 0x32, offset 0xc80 -+ 0xc80: 0x06e1, 0xc81: 0x0049, 0xc82: 0x0029, 0xc83: 0x0031, 0xc84: 0x06e9, 0xc85: 0x06f1, -+ 0xc86: 0x06f9, 0xc87: 0x0701, 0xc88: 0x0709, 0xc89: 0x0711, 0xc8a: 0x071a, 0xc8b: 0x07ed, -+ 0xc8c: 0x0722, 0xc8d: 0x072a, 0xc8e: 0x0732, 0xc8f: 0x0040, 0xc90: 0x0019, 0xc91: 0x02f9, -+ 0xc92: 0x0051, 0xc93: 0x0109, 0xc94: 0x0361, 0xc95: 0x00a9, 0xc96: 0x0319, 0xc97: 0x0101, -+ 0xc98: 0x0321, 0xc99: 0x0329, 0xc9a: 0x0339, 0xc9b: 0x0089, 0xc9c: 0x0341, 0xc9d: 0x0040, -+ 0xc9e: 0x0040, 0xc9f: 0x0040, 0xca0: 0x0018, 0xca1: 0x0018, 0xca2: 0x0018, 0xca3: 0x0018, -+ 0xca4: 0x0018, 0xca5: 0x0018, 0xca6: 0x0018, 0xca7: 0x0018, 0xca8: 0x0739, 0xca9: 0x0018, -+ 0xcaa: 0x0018, 0xcab: 0x0018, 0xcac: 0x0018, 0xcad: 0x0018, 0xcae: 0x0018, 0xcaf: 0x0018, -+ 0xcb0: 0x0018, 0xcb1: 0x0018, 0xcb2: 0x0018, 0xcb3: 0x0018, 0xcb4: 0x0018, 0xcb5: 0x0018, -+ 0xcb6: 0x0018, 0xcb7: 0x0018, 0xcb8: 0x0018, 0xcb9: 0x0018, 0xcba: 0x0018, 0xcbb: 0x0018, -+ 0xcbc: 0x0018, 0xcbd: 0x0018, 0xcbe: 0x0018, 0xcbf: 0x0018, -+ // Block 0x33, offset 0xcc0 -+ 0xcc0: 0x0806, 0xcc1: 0x0826, 0xcc2: 0x03d9, 0xcc3: 0x0845, 0xcc4: 0x0018, 0xcc5: 0x0866, -+ 0xcc6: 0x0886, 0xcc7: 0x0369, 0xcc8: 0x0018, 0xcc9: 0x08a5, 0xcca: 0x0309, 0xccb: 0x00a9, -+ 0xccc: 0x00a9, 0xccd: 0x00a9, 0xcce: 0x00a9, 0xccf: 0x0741, 0xcd0: 0x0311, 0xcd1: 0x0311, -+ 0xcd2: 0x0101, 0xcd3: 0x0101, 0xcd4: 0x0018, 0xcd5: 0x0329, 0xcd6: 0x0749, 0xcd7: 0x0018, -+ 0xcd8: 0x0018, 0xcd9: 0x0339, 0xcda: 0x0751, 0xcdb: 0x00b9, 0xcdc: 0x00b9, 0xcdd: 0x00b9, -+ 0xcde: 0x0018, 0xcdf: 0x0018, 0xce0: 0x0759, 0xce1: 0x08c5, 0xce2: 0x0761, 0xce3: 0x0018, -+ 0xce4: 0x04b1, 0xce5: 0x0018, 0xce6: 0x0769, 0xce7: 0x0018, 0xce8: 0x04b1, 0xce9: 0x0018, -+ 0xcea: 0x0319, 0xceb: 0x0771, 0xcec: 0x02e9, 0xced: 0x03d9, 0xcee: 0x0018, 0xcef: 0x02f9, -+ 0xcf0: 0x02f9, 0xcf1: 0x03f1, 0xcf2: 0x0040, 0xcf3: 0x0321, 0xcf4: 0x0051, 0xcf5: 0x0779, -+ 0xcf6: 0x0781, 0xcf7: 0x0789, 0xcf8: 0x0791, 0xcf9: 0x0311, 0xcfa: 0x0018, 0xcfb: 0x08e5, -+ 0xcfc: 0x0799, 0xcfd: 0x03a1, 0xcfe: 0x03a1, 0xcff: 0x0799, -+ // Block 0x34, offset 0xd00 -+ 0xd00: 0x0905, 0xd01: 0x0018, 0xd02: 0x0018, 0xd03: 0x0018, 0xd04: 0x0018, 0xd05: 0x02f1, -+ 0xd06: 0x02f1, 0xd07: 0x02f9, 0xd08: 0x0311, 0xd09: 0x00b1, 0xd0a: 0x0018, 0xd0b: 0x0018, -+ 0xd0c: 0x0018, 0xd0d: 0x0018, 0xd0e: 0x0008, 0xd0f: 0x0018, 0xd10: 0x07a1, 0xd11: 0x07a9, -+ 0xd12: 0x07b1, 0xd13: 0x07b9, 0xd14: 0x07c1, 0xd15: 0x07c9, 0xd16: 0x07d1, 0xd17: 0x07d9, -+ 0xd18: 0x07e1, 0xd19: 0x07e9, 0xd1a: 0x07f1, 0xd1b: 0x07f9, 0xd1c: 0x0801, 0xd1d: 0x0809, -+ 0xd1e: 0x0811, 0xd1f: 0x0819, 0xd20: 0x0311, 0xd21: 0x0821, 0xd22: 0x091d, 0xd23: 0x0829, -+ 0xd24: 0x0391, 0xd25: 0x0831, 0xd26: 0x093d, 0xd27: 0x0839, 0xd28: 0x0841, 0xd29: 0x0109, -+ 0xd2a: 0x0849, 0xd2b: 0x095d, 0xd2c: 0x0101, 0xd2d: 0x03d9, 0xd2e: 0x02f1, 0xd2f: 0x0321, -+ 0xd30: 0x0311, 0xd31: 0x0821, 0xd32: 0x097d, 0xd33: 0x0829, 0xd34: 0x0391, 0xd35: 0x0831, -+ 0xd36: 0x099d, 0xd37: 0x0839, 0xd38: 0x0841, 0xd39: 0x0109, 0xd3a: 0x0849, 0xd3b: 0x09bd, -+ 0xd3c: 0x0101, 0xd3d: 0x03d9, 0xd3e: 0x02f1, 0xd3f: 0x0321, -+ // Block 0x35, offset 0xd40 -+ 0xd40: 0x0018, 0xd41: 0x0018, 0xd42: 0x0018, 0xd43: 0x0018, 0xd44: 0x0018, 0xd45: 0x0018, -+ 0xd46: 0x0018, 0xd47: 0x0018, 0xd48: 0x0018, 0xd49: 0x0018, 0xd4a: 0x0018, 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: 0x0040, 0xd5d: 0x0040, -+ 0xd5e: 0x0040, 0xd5f: 0x0040, 0xd60: 0x0049, 0xd61: 0x0029, 0xd62: 0x0031, 0xd63: 0x06e9, -+ 0xd64: 0x06f1, 0xd65: 0x06f9, 0xd66: 0x0701, 0xd67: 0x0709, 0xd68: 0x0711, 0xd69: 0x0879, -+ 0xd6a: 0x0881, 0xd6b: 0x0889, 0xd6c: 0x0891, 0xd6d: 0x0899, 0xd6e: 0x08a1, 0xd6f: 0x08a9, -+ 0xd70: 0x08b1, 0xd71: 0x08b9, 0xd72: 0x08c1, 0xd73: 0x08c9, 0xd74: 0x0a1e, 0xd75: 0x0a3e, -+ 0xd76: 0x0a5e, 0xd77: 0x0a7e, 0xd78: 0x0a9e, 0xd79: 0x0abe, 0xd7a: 0x0ade, 0xd7b: 0x0afe, -+ 0xd7c: 0x0b1e, 0xd7d: 0x08d2, 0xd7e: 0x08da, 0xd7f: 0x08e2, -+ // Block 0x36, offset 0xd80 -+ 0xd80: 0x08ea, 0xd81: 0x08f2, 0xd82: 0x08fa, 0xd83: 0x0902, 0xd84: 0x090a, 0xd85: 0x0912, -+ 0xd86: 0x091a, 0xd87: 0x0922, 0xd88: 0x0040, 0xd89: 0x0040, 0xd8a: 0x0040, 0xd8b: 0x0040, -+ 0xd8c: 0x0040, 0xd8d: 0x0040, 0xd8e: 0x0040, 0xd8f: 0x0040, 0xd90: 0x0040, 0xd91: 0x0040, -+ 0xd92: 0x0040, 0xd93: 0x0040, 0xd94: 0x0040, 0xd95: 0x0040, 0xd96: 0x0040, 0xd97: 0x0040, -+ 0xd98: 0x0040, 0xd99: 0x0040, 0xd9a: 0x0040, 0xd9b: 0x0040, 0xd9c: 0x0b3e, 0xd9d: 0x0b5e, -+ 0xd9e: 0x0b7e, 0xd9f: 0x0b9e, 0xda0: 0x0bbe, 0xda1: 0x0bde, 0xda2: 0x0bfe, 0xda3: 0x0c1e, -+ 0xda4: 0x0c3e, 0xda5: 0x0c5e, 0xda6: 0x0c7e, 0xda7: 0x0c9e, 0xda8: 0x0cbe, 0xda9: 0x0cde, -+ 0xdaa: 0x0cfe, 0xdab: 0x0d1e, 0xdac: 0x0d3e, 0xdad: 0x0d5e, 0xdae: 0x0d7e, 0xdaf: 0x0d9e, -+ 0xdb0: 0x0dbe, 0xdb1: 0x0dde, 0xdb2: 0x0dfe, 0xdb3: 0x0e1e, 0xdb4: 0x0e3e, 0xdb5: 0x0e5e, -+ 0xdb6: 0x0019, 0xdb7: 0x02e9, 0xdb8: 0x03d9, 0xdb9: 0x02f1, 0xdba: 0x02f9, 0xdbb: 0x03f1, -+ 0xdbc: 0x0309, 0xdbd: 0x00a9, 0xdbe: 0x0311, 0xdbf: 0x00b1, -+ // Block 0x37, offset 0xdc0 -+ 0xdc0: 0x0319, 0xdc1: 0x0101, 0xdc2: 0x0321, 0xdc3: 0x0329, 0xdc4: 0x0051, 0xdc5: 0x0339, -+ 0xdc6: 0x0751, 0xdc7: 0x00b9, 0xdc8: 0x0089, 0xdc9: 0x0341, 0xdca: 0x0349, 0xdcb: 0x0391, -+ 0xdcc: 0x00c1, 0xdcd: 0x0109, 0xdce: 0x00c9, 0xdcf: 0x04b1, 0xdd0: 0x0019, 0xdd1: 0x02e9, -+ 0xdd2: 0x03d9, 0xdd3: 0x02f1, 0xdd4: 0x02f9, 0xdd5: 0x03f1, 0xdd6: 0x0309, 0xdd7: 0x00a9, -+ 0xdd8: 0x0311, 0xdd9: 0x00b1, 0xdda: 0x0319, 0xddb: 0x0101, 0xddc: 0x0321, 0xddd: 0x0329, -+ 0xdde: 0x0051, 0xddf: 0x0339, 0xde0: 0x0751, 0xde1: 0x00b9, 0xde2: 0x0089, 0xde3: 0x0341, -+ 0xde4: 0x0349, 0xde5: 0x0391, 0xde6: 0x00c1, 0xde7: 0x0109, 0xde8: 0x00c9, 0xde9: 0x04b1, -+ 0xdea: 0x06e1, 0xdeb: 0x0018, 0xdec: 0x0018, 0xded: 0x0018, 0xdee: 0x0018, 0xdef: 0x0018, -+ 0xdf0: 0x0018, 0xdf1: 0x0018, 0xdf2: 0x0018, 0xdf3: 0x0018, 0xdf4: 0x0018, 0xdf5: 0x0018, -+ 0xdf6: 0x0018, 0xdf7: 0x0018, 0xdf8: 0x0018, 0xdf9: 0x0018, 0xdfa: 0x0018, 0xdfb: 0x0018, -+ 0xdfc: 0x0018, 0xdfd: 0x0018, 0xdfe: 0x0018, 0xdff: 0x0018, -+ // Block 0x38, offset 0xe00 -+ 0xe00: 0x0008, 0xe01: 0x0008, 0xe02: 0x0008, 0xe03: 0x0008, 0xe04: 0x0008, 0xe05: 0x0008, -+ 0xe06: 0x0008, 0xe07: 0x0008, 0xe08: 0x0008, 0xe09: 0x0008, 0xe0a: 0x0008, 0xe0b: 0x0008, -+ 0xe0c: 0x0008, 0xe0d: 0x0008, 0xe0e: 0x0008, 0xe0f: 0x0008, 0xe10: 0x0008, 0xe11: 0x0008, -+ 0xe12: 0x0008, 0xe13: 0x0008, 0xe14: 0x0008, 0xe15: 0x0008, 0xe16: 0x0008, 0xe17: 0x0008, -+ 0xe18: 0x0008, 0xe19: 0x0008, 0xe1a: 0x0008, 0xe1b: 0x0008, 0xe1c: 0x0008, 0xe1d: 0x0008, -+ 0xe1e: 0x0008, 0xe1f: 0x0008, 0xe20: 0xe00d, 0xe21: 0x0008, 0xe22: 0x0941, 0xe23: 0x0ed5, -+ 0xe24: 0x0949, 0xe25: 0x0008, 0xe26: 0x0008, 0xe27: 0xe07d, 0xe28: 0x0008, 0xe29: 0xe01d, -+ 0xe2a: 0x0008, 0xe2b: 0xe03d, 0xe2c: 0x0008, 0xe2d: 0x0359, 0xe2e: 0x0441, 0xe2f: 0x0351, -+ 0xe30: 0x03d1, 0xe31: 0x0008, 0xe32: 0xe00d, 0xe33: 0x0008, 0xe34: 0x0008, 0xe35: 0xe01d, -+ 0xe36: 0x0008, 0xe37: 0x0008, 0xe38: 0x0008, 0xe39: 0x0008, 0xe3a: 0x0008, 0xe3b: 0x0008, -+ 0xe3c: 0x00b1, 0xe3d: 0x0391, 0xe3e: 0x0951, 0xe3f: 0x0959, -+ // Block 0x39, offset 0xe40 -+ 0xe40: 0xe00d, 0xe41: 0x0008, 0xe42: 0xe00d, 0xe43: 0x0008, 0xe44: 0xe00d, 0xe45: 0x0008, -+ 0xe46: 0xe00d, 0xe47: 0x0008, 0xe48: 0xe00d, 0xe49: 0x0008, 0xe4a: 0xe00d, 0xe4b: 0x0008, -+ 0xe4c: 0xe00d, 0xe4d: 0x0008, 0xe4e: 0xe00d, 0xe4f: 0x0008, 0xe50: 0xe00d, 0xe51: 0x0008, -+ 0xe52: 0xe00d, 0xe53: 0x0008, 0xe54: 0xe00d, 0xe55: 0x0008, 0xe56: 0xe00d, 0xe57: 0x0008, -+ 0xe58: 0xe00d, 0xe59: 0x0008, 0xe5a: 0xe00d, 0xe5b: 0x0008, 0xe5c: 0xe00d, 0xe5d: 0x0008, -+ 0xe5e: 0xe00d, 0xe5f: 0x0008, 0xe60: 0xe00d, 0xe61: 0x0008, 0xe62: 0xe00d, 0xe63: 0x0008, -+ 0xe64: 0x0008, 0xe65: 0x0018, 0xe66: 0x0018, 0xe67: 0x0018, 0xe68: 0x0018, 0xe69: 0x0018, -+ 0xe6a: 0x0018, 0xe6b: 0xe03d, 0xe6c: 0x0008, 0xe6d: 0xe01d, 0xe6e: 0x0008, 0xe6f: 0x3308, -+ 0xe70: 0x3308, 0xe71: 0x3308, 0xe72: 0xe00d, 0xe73: 0x0008, 0xe74: 0x0040, 0xe75: 0x0040, -+ 0xe76: 0x0040, 0xe77: 0x0040, 0xe78: 0x0040, 0xe79: 0x0018, 0xe7a: 0x0018, 0xe7b: 0x0018, -+ 0xe7c: 0x0018, 0xe7d: 0x0018, 0xe7e: 0x0018, 0xe7f: 0x0018, -+ // Block 0x3a, offset 0xe80 -+ 0xe80: 0x2715, 0xe81: 0x2735, 0xe82: 0x2755, 0xe83: 0x2775, 0xe84: 0x2795, 0xe85: 0x27b5, -+ 0xe86: 0x27d5, 0xe87: 0x27f5, 0xe88: 0x2815, 0xe89: 0x2835, 0xe8a: 0x2855, 0xe8b: 0x2875, -+ 0xe8c: 0x2895, 0xe8d: 0x28b5, 0xe8e: 0x28d5, 0xe8f: 0x28f5, 0xe90: 0x2915, 0xe91: 0x2935, -+ 0xe92: 0x2955, 0xe93: 0x2975, 0xe94: 0x2995, 0xe95: 0x29b5, 0xe96: 0x0040, 0xe97: 0x0040, -+ 0xe98: 0x0040, 0xe99: 0x0040, 0xe9a: 0x0040, 0xe9b: 0x0040, 0xe9c: 0x0040, 0xe9d: 0x0040, -+ 0xe9e: 0x0040, 0xe9f: 0x0040, 0xea0: 0x0040, 0xea1: 0x0040, 0xea2: 0x0040, 0xea3: 0x0040, -+ 0xea4: 0x0040, 0xea5: 0x0040, 0xea6: 0x0040, 0xea7: 0x0040, 0xea8: 0x0040, 0xea9: 0x0040, -+ 0xeaa: 0x0040, 0xeab: 0x0040, 0xeac: 0x0040, 0xead: 0x0040, 0xeae: 0x0040, 0xeaf: 0x0040, -+ 0xeb0: 0x0040, 0xeb1: 0x0040, 0xeb2: 0x0040, 0xeb3: 0x0040, 0xeb4: 0x0040, 0xeb5: 0x0040, -+ 0xeb6: 0x0040, 0xeb7: 0x0040, 0xeb8: 0x0040, 0xeb9: 0x0040, 0xeba: 0x0040, 0xebb: 0x0040, -+ 0xebc: 0x0040, 0xebd: 0x0040, 0xebe: 0x0040, 0xebf: 0x0040, -+ // Block 0x3b, offset 0xec0 -+ 0xec0: 0x000a, 0xec1: 0x0018, 0xec2: 0x0961, 0xec3: 0x0018, 0xec4: 0x0018, 0xec5: 0x0008, -+ 0xec6: 0x0008, 0xec7: 0x0008, 0xec8: 0x0018, 0xec9: 0x0018, 0xeca: 0x0018, 0xecb: 0x0018, -+ 0xecc: 0x0018, 0xecd: 0x0018, 0xece: 0x0018, 0xecf: 0x0018, 0xed0: 0x0018, 0xed1: 0x0018, -+ 0xed2: 0x0018, 0xed3: 0x0018, 0xed4: 0x0018, 0xed5: 0x0018, 0xed6: 0x0018, 0xed7: 0x0018, -+ 0xed8: 0x0018, 0xed9: 0x0018, 0xeda: 0x0018, 0xedb: 0x0018, 0xedc: 0x0018, 0xedd: 0x0018, -+ 0xede: 0x0018, 0xedf: 0x0018, 0xee0: 0x0018, 0xee1: 0x0018, 0xee2: 0x0018, 0xee3: 0x0018, -+ 0xee4: 0x0018, 0xee5: 0x0018, 0xee6: 0x0018, 0xee7: 0x0018, 0xee8: 0x0018, 0xee9: 0x0018, -+ 0xeea: 0x3308, 0xeeb: 0x3308, 0xeec: 0x3308, 0xeed: 0x3308, 0xeee: 0x3018, 0xeef: 0x3018, -+ 0xef0: 0x0018, 0xef1: 0x0018, 0xef2: 0x0018, 0xef3: 0x0018, 0xef4: 0x0018, 0xef5: 0x0018, -+ 0xef6: 0xe125, 0xef7: 0x0018, 0xef8: 0x29d5, 0xef9: 0x29f5, 0xefa: 0x2a15, 0xefb: 0x0018, -+ 0xefc: 0x0008, 0xefd: 0x0018, 0xefe: 0x0018, 0xeff: 0x0018, -+ // Block 0x3c, offset 0xf00 -+ 0xf00: 0x2b55, 0xf01: 0x2b75, 0xf02: 0x2b95, 0xf03: 0x2bb5, 0xf04: 0x2bd5, 0xf05: 0x2bf5, -+ 0xf06: 0x2bf5, 0xf07: 0x2bf5, 0xf08: 0x2c15, 0xf09: 0x2c15, 0xf0a: 0x2c15, 0xf0b: 0x2c15, -+ 0xf0c: 0x2c35, 0xf0d: 0x2c35, 0xf0e: 0x2c35, 0xf0f: 0x2c55, 0xf10: 0x2c75, 0xf11: 0x2c75, -+ 0xf12: 0x2a95, 0xf13: 0x2a95, 0xf14: 0x2c75, 0xf15: 0x2c75, 0xf16: 0x2c95, 0xf17: 0x2c95, -+ 0xf18: 0x2c75, 0xf19: 0x2c75, 0xf1a: 0x2a95, 0xf1b: 0x2a95, 0xf1c: 0x2c75, 0xf1d: 0x2c75, -+ 0xf1e: 0x2c55, 0xf1f: 0x2c55, 0xf20: 0x2cb5, 0xf21: 0x2cb5, 0xf22: 0x2cd5, 0xf23: 0x2cd5, -+ 0xf24: 0x0040, 0xf25: 0x2cf5, 0xf26: 0x2d15, 0xf27: 0x2d35, 0xf28: 0x2d35, 0xf29: 0x2d55, -+ 0xf2a: 0x2d75, 0xf2b: 0x2d95, 0xf2c: 0x2db5, 0xf2d: 0x2dd5, 0xf2e: 0x2df5, 0xf2f: 0x2e15, -+ 0xf30: 0x2e35, 0xf31: 0x2e55, 0xf32: 0x2e55, 0xf33: 0x2e75, 0xf34: 0x2e95, 0xf35: 0x2e95, -+ 0xf36: 0x2eb5, 0xf37: 0x2ed5, 0xf38: 0x2e75, 0xf39: 0x2ef5, 0xf3a: 0x2f15, 0xf3b: 0x2ef5, -+ 0xf3c: 0x2e75, 0xf3d: 0x2f35, 0xf3e: 0x2f55, 0xf3f: 0x2f75, -+ // Block 0x3d, offset 0xf40 -+ 0xf40: 0x2f95, 0xf41: 0x2fb5, 0xf42: 0x2d15, 0xf43: 0x2cf5, 0xf44: 0x2fd5, 0xf45: 0x2ff5, -+ 0xf46: 0x3015, 0xf47: 0x3035, 0xf48: 0x3055, 0xf49: 0x3075, 0xf4a: 0x3095, 0xf4b: 0x30b5, -+ 0xf4c: 0x30d5, 0xf4d: 0x30f5, 0xf4e: 0x3115, 0xf4f: 0x0040, 0xf50: 0x0018, 0xf51: 0x0018, -+ 0xf52: 0x3135, 0xf53: 0x3155, 0xf54: 0x3175, 0xf55: 0x3195, 0xf56: 0x31b5, 0xf57: 0x31d5, -+ 0xf58: 0x31f5, 0xf59: 0x3215, 0xf5a: 0x3235, 0xf5b: 0x3255, 0xf5c: 0x3175, 0xf5d: 0x3275, -+ 0xf5e: 0x3295, 0xf5f: 0x32b5, 0xf60: 0x0008, 0xf61: 0x0008, 0xf62: 0x0008, 0xf63: 0x0008, -+ 0xf64: 0x0008, 0xf65: 0x0008, 0xf66: 0x0008, 0xf67: 0x0008, 0xf68: 0x0008, 0xf69: 0x0008, -+ 0xf6a: 0x0008, 0xf6b: 0x0008, 0xf6c: 0x0008, 0xf6d: 0x0008, 0xf6e: 0x0008, 0xf6f: 0x0008, -+ 0xf70: 0x0008, 0xf71: 0x0008, 0xf72: 0x0008, 0xf73: 0x0008, 0xf74: 0x0008, 0xf75: 0x0008, -+ 0xf76: 0x0008, 0xf77: 0x0008, 0xf78: 0x0008, 0xf79: 0x0008, 0xf7a: 0x0008, 0xf7b: 0x0008, -+ 0xf7c: 0x0008, 0xf7d: 0x0008, 0xf7e: 0x0008, 0xf7f: 0x0008, -+ // Block 0x3e, offset 0xf80 -+ 0xf80: 0x0b82, 0xf81: 0x0b8a, 0xf82: 0x0b92, 0xf83: 0x0b9a, 0xf84: 0x32d5, 0xf85: 0x32f5, -+ 0xf86: 0x3315, 0xf87: 0x3335, 0xf88: 0x0018, 0xf89: 0x0018, 0xf8a: 0x0018, 0xf8b: 0x0018, -+ 0xf8c: 0x0018, 0xf8d: 0x0018, 0xf8e: 0x0018, 0xf8f: 0x0018, 0xf90: 0x3355, 0xf91: 0x0ba1, -+ 0xf92: 0x0ba9, 0xf93: 0x0bb1, 0xf94: 0x0bb9, 0xf95: 0x0bc1, 0xf96: 0x0bc9, 0xf97: 0x0bd1, -+ 0xf98: 0x0bd9, 0xf99: 0x0be1, 0xf9a: 0x0be9, 0xf9b: 0x0bf1, 0xf9c: 0x0bf9, 0xf9d: 0x0c01, -+ 0xf9e: 0x0c09, 0xf9f: 0x0c11, 0xfa0: 0x3375, 0xfa1: 0x3395, 0xfa2: 0x33b5, 0xfa3: 0x33d5, -+ 0xfa4: 0x33f5, 0xfa5: 0x33f5, 0xfa6: 0x3415, 0xfa7: 0x3435, 0xfa8: 0x3455, 0xfa9: 0x3475, -+ 0xfaa: 0x3495, 0xfab: 0x34b5, 0xfac: 0x34d5, 0xfad: 0x34f5, 0xfae: 0x3515, 0xfaf: 0x3535, -+ 0xfb0: 0x3555, 0xfb1: 0x3575, 0xfb2: 0x3595, 0xfb3: 0x35b5, 0xfb4: 0x35d5, 0xfb5: 0x35f5, -+ 0xfb6: 0x3615, 0xfb7: 0x3635, 0xfb8: 0x3655, 0xfb9: 0x3675, 0xfba: 0x3695, 0xfbb: 0x36b5, -+ 0xfbc: 0x0c19, 0xfbd: 0x0c21, 0xfbe: 0x36d5, 0xfbf: 0x0018, -+ // Block 0x3f, offset 0xfc0 -+ 0xfc0: 0x36f5, 0xfc1: 0x3715, 0xfc2: 0x3735, 0xfc3: 0x3755, 0xfc4: 0x3775, 0xfc5: 0x3795, -+ 0xfc6: 0x37b5, 0xfc7: 0x37d5, 0xfc8: 0x37f5, 0xfc9: 0x3815, 0xfca: 0x3835, 0xfcb: 0x3855, -+ 0xfcc: 0x3875, 0xfcd: 0x3895, 0xfce: 0x38b5, 0xfcf: 0x38d5, 0xfd0: 0x38f5, 0xfd1: 0x3915, -+ 0xfd2: 0x3935, 0xfd3: 0x3955, 0xfd4: 0x3975, 0xfd5: 0x3995, 0xfd6: 0x39b5, 0xfd7: 0x39d5, -+ 0xfd8: 0x39f5, 0xfd9: 0x3a15, 0xfda: 0x3a35, 0xfdb: 0x3a55, 0xfdc: 0x3a75, 0xfdd: 0x3a95, -+ 0xfde: 0x3ab5, 0xfdf: 0x3ad5, 0xfe0: 0x3af5, 0xfe1: 0x3b15, 0xfe2: 0x3b35, 0xfe3: 0x3b55, -+ 0xfe4: 0x3b75, 0xfe5: 0x3b95, 0xfe6: 0x1295, 0xfe7: 0x3bb5, 0xfe8: 0x3bd5, 0xfe9: 0x3bf5, -+ 0xfea: 0x3c15, 0xfeb: 0x3c35, 0xfec: 0x3c55, 0xfed: 0x3c75, 0xfee: 0x23b5, 0xfef: 0x3c95, -+ 0xff0: 0x3cb5, 0xff1: 0x0c29, 0xff2: 0x0c31, 0xff3: 0x0c39, 0xff4: 0x0c41, 0xff5: 0x0c49, -+ 0xff6: 0x0c51, 0xff7: 0x0c59, 0xff8: 0x0c61, 0xff9: 0x0c69, 0xffa: 0x0c71, 0xffb: 0x0c79, -+ 0xffc: 0x0c81, 0xffd: 0x0c89, 0xffe: 0x0c91, 0xfff: 0x0c99, -+ // Block 0x40, offset 0x1000 -+ 0x1000: 0x0ca1, 0x1001: 0x0ca9, 0x1002: 0x0cb1, 0x1003: 0x0cb9, 0x1004: 0x0cc1, 0x1005: 0x0cc9, -+ 0x1006: 0x0cd1, 0x1007: 0x0cd9, 0x1008: 0x0ce1, 0x1009: 0x0ce9, 0x100a: 0x0cf1, 0x100b: 0x0cf9, -+ 0x100c: 0x0d01, 0x100d: 0x3cd5, 0x100e: 0x0d09, 0x100f: 0x3cf5, 0x1010: 0x3d15, 0x1011: 0x3d2d, -+ 0x1012: 0x3d45, 0x1013: 0x3d5d, 0x1014: 0x3d75, 0x1015: 0x3d75, 0x1016: 0x3d5d, 0x1017: 0x3d8d, -+ 0x1018: 0x07d5, 0x1019: 0x3da5, 0x101a: 0x3dbd, 0x101b: 0x3dd5, 0x101c: 0x3ded, 0x101d: 0x3e05, -+ 0x101e: 0x3e1d, 0x101f: 0x3e35, 0x1020: 0x3e4d, 0x1021: 0x3e65, 0x1022: 0x3e7d, 0x1023: 0x3e95, -+ 0x1024: 0x3ead, 0x1025: 0x3ead, 0x1026: 0x3ec5, 0x1027: 0x3ec5, 0x1028: 0x3edd, 0x1029: 0x3edd, -+ 0x102a: 0x3ef5, 0x102b: 0x3f0d, 0x102c: 0x3f25, 0x102d: 0x3f3d, 0x102e: 0x3f55, 0x102f: 0x3f55, -+ 0x1030: 0x3f6d, 0x1031: 0x3f6d, 0x1032: 0x3f6d, 0x1033: 0x3f85, 0x1034: 0x3f9d, 0x1035: 0x3fb5, -+ 0x1036: 0x3fcd, 0x1037: 0x3fb5, 0x1038: 0x3fe5, 0x1039: 0x3ffd, 0x103a: 0x3f85, 0x103b: 0x4015, -+ 0x103c: 0x402d, 0x103d: 0x402d, 0x103e: 0x402d, 0x103f: 0x0d11, -+ // Block 0x41, offset 0x1040 -+ 0x1040: 0x10f9, 0x1041: 0x1101, 0x1042: 0x40a5, 0x1043: 0x1109, 0x1044: 0x1111, 0x1045: 0x1119, -+ 0x1046: 0x1121, 0x1047: 0x1129, 0x1048: 0x40c5, 0x1049: 0x1131, 0x104a: 0x1139, 0x104b: 0x1141, -+ 0x104c: 0x40e5, 0x104d: 0x40e5, 0x104e: 0x1149, 0x104f: 0x1151, 0x1050: 0x1159, 0x1051: 0x4105, -+ 0x1052: 0x4125, 0x1053: 0x4145, 0x1054: 0x4165, 0x1055: 0x4185, 0x1056: 0x1161, 0x1057: 0x1169, -+ 0x1058: 0x1171, 0x1059: 0x1179, 0x105a: 0x1181, 0x105b: 0x41a5, 0x105c: 0x1189, 0x105d: 0x1191, -+ 0x105e: 0x1199, 0x105f: 0x41c5, 0x1060: 0x41e5, 0x1061: 0x11a1, 0x1062: 0x4205, 0x1063: 0x4225, -+ 0x1064: 0x4245, 0x1065: 0x11a9, 0x1066: 0x4265, 0x1067: 0x11b1, 0x1068: 0x11b9, 0x1069: 0x10f9, -+ 0x106a: 0x4285, 0x106b: 0x42a5, 0x106c: 0x42c5, 0x106d: 0x42e5, 0x106e: 0x11c1, 0x106f: 0x11c9, -+ 0x1070: 0x11d1, 0x1071: 0x11d9, 0x1072: 0x4305, 0x1073: 0x11e1, 0x1074: 0x11e9, 0x1075: 0x11f1, -+ 0x1076: 0x4325, 0x1077: 0x11f9, 0x1078: 0x1201, 0x1079: 0x11f9, 0x107a: 0x1209, 0x107b: 0x1211, -+ 0x107c: 0x4345, 0x107d: 0x1219, 0x107e: 0x1221, 0x107f: 0x1219, -+ // Block 0x42, offset 0x1080 -+ 0x1080: 0x4365, 0x1081: 0x4385, 0x1082: 0x0040, 0x1083: 0x1229, 0x1084: 0x1231, 0x1085: 0x1239, -+ 0x1086: 0x1241, 0x1087: 0x0040, 0x1088: 0x1249, 0x1089: 0x1251, 0x108a: 0x1259, 0x108b: 0x1261, -+ 0x108c: 0x1269, 0x108d: 0x1271, 0x108e: 0x1199, 0x108f: 0x1279, 0x1090: 0x1281, 0x1091: 0x1289, -+ 0x1092: 0x43a5, 0x1093: 0x1291, 0x1094: 0x1121, 0x1095: 0x43c5, 0x1096: 0x43e5, 0x1097: 0x1299, -+ 0x1098: 0x0040, 0x1099: 0x4405, 0x109a: 0x12a1, 0x109b: 0x12a9, 0x109c: 0x12b1, 0x109d: 0x12b9, -+ 0x109e: 0x12c1, 0x109f: 0x12c9, 0x10a0: 0x12d1, 0x10a1: 0x12d9, 0x10a2: 0x12e1, 0x10a3: 0x12e9, -+ 0x10a4: 0x12f1, 0x10a5: 0x12f9, 0x10a6: 0x1301, 0x10a7: 0x1309, 0x10a8: 0x1311, 0x10a9: 0x1319, -+ 0x10aa: 0x1321, 0x10ab: 0x1329, 0x10ac: 0x1331, 0x10ad: 0x1339, 0x10ae: 0x1341, 0x10af: 0x1349, -+ 0x10b0: 0x1351, 0x10b1: 0x1359, 0x10b2: 0x1361, 0x10b3: 0x1369, 0x10b4: 0x1371, 0x10b5: 0x1379, -+ 0x10b6: 0x1381, 0x10b7: 0x1389, 0x10b8: 0x1391, 0x10b9: 0x1399, 0x10ba: 0x13a1, 0x10bb: 0x13a9, -+ 0x10bc: 0x13b1, 0x10bd: 0x13b9, 0x10be: 0x13c1, 0x10bf: 0x4425, -+ // 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: 0x02d1, 0x111d: 0x13c9, -+ 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: 0x4445, 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: 0x0409, 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: 0x13d1, 0x11eb: 0x0371, 0x11ec: 0x0401, 0x11ed: 0x13d9, 0x11ee: 0x0421, 0x11ef: 0x0008, -+ 0x11f0: 0x13e1, 0x11f1: 0x13e9, 0x11f2: 0x0429, 0x11f3: 0x4465, 0x11f4: 0xe00d, 0x11f5: 0x0008, -+ 0x11f6: 0xe00d, 0x11f7: 0x0008, 0x11f8: 0xe00d, 0x11f9: 0x0008, 0x11fa: 0xe00d, 0x11fb: 0x0008, -+ 0x11fc: 0xe00d, 0x11fd: 0x0008, 0x11fe: 0xe00d, 0x11ff: 0x0008, -+ // Block 0x48, offset 0x1200 -+ 0x1200: 0xe00d, 0x1201: 0x0008, 0x1202: 0xe00d, 0x1203: 0x0008, 0x1204: 0x03f5, 0x1205: 0x0479, -+ 0x1206: 0x447d, 0x1207: 0xe07d, 0x1208: 0x0008, 0x1209: 0xe01d, 0x120a: 0x0008, 0x120b: 0x0040, -+ 0x120c: 0x0040, 0x120d: 0x0040, 0x120e: 0x0040, 0x120f: 0x0040, 0x1210: 0xe00d, 0x1211: 0x0008, -+ 0x1212: 0x0040, 0x1213: 0x0008, 0x1214: 0x0040, 0x1215: 0x0008, 0x1216: 0xe00d, 0x1217: 0x0008, -+ 0x1218: 0xe00d, 0x1219: 0x0008, 0x121a: 0x0040, 0x121b: 0x0040, 0x121c: 0x0040, 0x121d: 0x0040, -+ 0x121e: 0x0040, 0x121f: 0x0040, 0x1220: 0x0040, 0x1221: 0x0040, 0x1222: 0x0040, 0x1223: 0x0040, -+ 0x1224: 0x0040, 0x1225: 0x0040, 0x1226: 0x0040, 0x1227: 0x0040, 0x1228: 0x0040, 0x1229: 0x0040, -+ 0x122a: 0x0040, 0x122b: 0x0040, 0x122c: 0x0040, 0x122d: 0x0040, 0x122e: 0x0040, 0x122f: 0x0040, -+ 0x1230: 0x0040, 0x1231: 0x0040, 0x1232: 0x03d9, 0x1233: 0x03f1, 0x1234: 0x0751, 0x1235: 0xe01d, -+ 0x1236: 0x0008, 0x1237: 0x0008, 0x1238: 0x0741, 0x1239: 0x13f1, 0x123a: 0x0008, 0x123b: 0x0008, -+ 0x123c: 0x0008, 0x123d: 0x0008, 0x123e: 0x0008, 0x123f: 0x0008, -+ // Block 0x49, offset 0x1240 -+ 0x1240: 0x650d, 0x1241: 0x652d, 0x1242: 0x654d, 0x1243: 0x656d, 0x1244: 0x658d, 0x1245: 0x65ad, -+ 0x1246: 0x65cd, 0x1247: 0x65ed, 0x1248: 0x660d, 0x1249: 0x662d, 0x124a: 0x664d, 0x124b: 0x666d, -+ 0x124c: 0x668d, 0x124d: 0x66ad, 0x124e: 0x0008, 0x124f: 0x0008, 0x1250: 0x66cd, 0x1251: 0x0008, -+ 0x1252: 0x66ed, 0x1253: 0x0008, 0x1254: 0x0008, 0x1255: 0x670d, 0x1256: 0x672d, 0x1257: 0x674d, -+ 0x1258: 0x676d, 0x1259: 0x678d, 0x125a: 0x67ad, 0x125b: 0x67cd, 0x125c: 0x67ed, 0x125d: 0x680d, -+ 0x125e: 0x682d, 0x125f: 0x0008, 0x1260: 0x684d, 0x1261: 0x0008, 0x1262: 0x686d, 0x1263: 0x0008, -+ 0x1264: 0x0008, 0x1265: 0x688d, 0x1266: 0x68ad, 0x1267: 0x0008, 0x1268: 0x0008, 0x1269: 0x0008, -+ 0x126a: 0x68cd, 0x126b: 0x68ed, 0x126c: 0x690d, 0x126d: 0x692d, 0x126e: 0x694d, 0x126f: 0x696d, -+ 0x1270: 0x698d, 0x1271: 0x69ad, 0x1272: 0x69cd, 0x1273: 0x69ed, 0x1274: 0x6a0d, 0x1275: 0x6a2d, -+ 0x1276: 0x6a4d, 0x1277: 0x6a6d, 0x1278: 0x6a8d, 0x1279: 0x6aad, 0x127a: 0x6acd, 0x127b: 0x6aed, -+ 0x127c: 0x6b0d, 0x127d: 0x6b2d, 0x127e: 0x6b4d, 0x127f: 0x6b6d, -+ // Block 0x4a, offset 0x1280 -+ 0x1280: 0x7acd, 0x1281: 0x7aed, 0x1282: 0x7b0d, 0x1283: 0x7b2d, 0x1284: 0x7b4d, 0x1285: 0x7b6d, -+ 0x1286: 0x7b8d, 0x1287: 0x7bad, 0x1288: 0x7bcd, 0x1289: 0x7bed, 0x128a: 0x7c0d, 0x128b: 0x7c2d, -+ 0x128c: 0x7c4d, 0x128d: 0x7c6d, 0x128e: 0x7c8d, 0x128f: 0x1409, 0x1290: 0x1411, 0x1291: 0x1419, -+ 0x1292: 0x7cad, 0x1293: 0x7ccd, 0x1294: 0x7ced, 0x1295: 0x1421, 0x1296: 0x1429, 0x1297: 0x1431, -+ 0x1298: 0x7d0d, 0x1299: 0x7d2d, 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: 0x1439, 0x12c1: 0x1441, 0x12c2: 0x1449, 0x12c3: 0x7d4d, 0x12c4: 0x7d6d, 0x12c5: 0x1451, -+ 0x12c6: 0x1451, 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: 0x1459, 0x12d4: 0x1461, 0x12d5: 0x1469, 0x12d6: 0x1471, 0x12d7: 0x1479, -+ 0x12d8: 0x0040, 0x12d9: 0x0040, 0x12da: 0x0040, 0x12db: 0x0040, 0x12dc: 0x0040, 0x12dd: 0x1481, -+ 0x12de: 0x3308, 0x12df: 0x1489, 0x12e0: 0x1491, 0x12e1: 0x0779, 0x12e2: 0x0791, 0x12e3: 0x1499, -+ 0x12e4: 0x14a1, 0x12e5: 0x14a9, 0x12e6: 0x14b1, 0x12e7: 0x14b9, 0x12e8: 0x14c1, 0x12e9: 0x071a, -+ 0x12ea: 0x14c9, 0x12eb: 0x14d1, 0x12ec: 0x14d9, 0x12ed: 0x14e1, 0x12ee: 0x14e9, 0x12ef: 0x14f1, -+ 0x12f0: 0x14f9, 0x12f1: 0x1501, 0x12f2: 0x1509, 0x12f3: 0x1511, 0x12f4: 0x1519, 0x12f5: 0x1521, -+ 0x12f6: 0x1529, 0x12f7: 0x0040, 0x12f8: 0x1531, 0x12f9: 0x1539, 0x12fa: 0x1541, 0x12fb: 0x1549, -+ 0x12fc: 0x1551, 0x12fd: 0x0040, 0x12fe: 0x1559, 0x12ff: 0x0040, -+ // Block 0x4c, offset 0x1300 -+ 0x1300: 0x1561, 0x1301: 0x1569, 0x1302: 0x0040, 0x1303: 0x1571, 0x1304: 0x1579, 0x1305: 0x0040, -+ 0x1306: 0x1581, 0x1307: 0x1589, 0x1308: 0x1591, 0x1309: 0x1599, 0x130a: 0x15a1, 0x130b: 0x15a9, -+ 0x130c: 0x15b1, 0x130d: 0x15b9, 0x130e: 0x15c1, 0x130f: 0x15c9, 0x1310: 0x15d1, 0x1311: 0x15d1, -+ 0x1312: 0x15d9, 0x1313: 0x15d9, 0x1314: 0x15d9, 0x1315: 0x15d9, 0x1316: 0x15e1, 0x1317: 0x15e1, -+ 0x1318: 0x15e1, 0x1319: 0x15e1, 0x131a: 0x15e9, 0x131b: 0x15e9, 0x131c: 0x15e9, 0x131d: 0x15e9, -+ 0x131e: 0x15f1, 0x131f: 0x15f1, 0x1320: 0x15f1, 0x1321: 0x15f1, 0x1322: 0x15f9, 0x1323: 0x15f9, -+ 0x1324: 0x15f9, 0x1325: 0x15f9, 0x1326: 0x1601, 0x1327: 0x1601, 0x1328: 0x1601, 0x1329: 0x1601, -+ 0x132a: 0x1609, 0x132b: 0x1609, 0x132c: 0x1609, 0x132d: 0x1609, 0x132e: 0x1611, 0x132f: 0x1611, -+ 0x1330: 0x1611, 0x1331: 0x1611, 0x1332: 0x1619, 0x1333: 0x1619, 0x1334: 0x1619, 0x1335: 0x1619, -+ 0x1336: 0x1621, 0x1337: 0x1621, 0x1338: 0x1621, 0x1339: 0x1621, 0x133a: 0x1629, 0x133b: 0x1629, -+ 0x133c: 0x1629, 0x133d: 0x1629, 0x133e: 0x1631, 0x133f: 0x1631, -+ // Block 0x4d, offset 0x1340 -+ 0x1340: 0x1631, 0x1341: 0x1631, 0x1342: 0x1639, 0x1343: 0x1639, 0x1344: 0x1641, 0x1345: 0x1641, -+ 0x1346: 0x1649, 0x1347: 0x1649, 0x1348: 0x1651, 0x1349: 0x1651, 0x134a: 0x1659, 0x134b: 0x1659, -+ 0x134c: 0x1661, 0x134d: 0x1661, 0x134e: 0x1669, 0x134f: 0x1669, 0x1350: 0x1669, 0x1351: 0x1669, -+ 0x1352: 0x1671, 0x1353: 0x1671, 0x1354: 0x1671, 0x1355: 0x1671, 0x1356: 0x1679, 0x1357: 0x1679, -+ 0x1358: 0x1679, 0x1359: 0x1679, 0x135a: 0x1681, 0x135b: 0x1681, 0x135c: 0x1681, 0x135d: 0x1681, -+ 0x135e: 0x1689, 0x135f: 0x1689, 0x1360: 0x1691, 0x1361: 0x1691, 0x1362: 0x1691, 0x1363: 0x1691, -+ 0x1364: 0x1699, 0x1365: 0x1699, 0x1366: 0x16a1, 0x1367: 0x16a1, 0x1368: 0x16a1, 0x1369: 0x16a1, -+ 0x136a: 0x16a9, 0x136b: 0x16a9, 0x136c: 0x16a9, 0x136d: 0x16a9, 0x136e: 0x16b1, 0x136f: 0x16b1, -+ 0x1370: 0x16b9, 0x1371: 0x16b9, 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: 0x0818, 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: 0x16c1, 0x1394: 0x16c1, 0x1395: 0x16c1, 0x1396: 0x16c1, 0x1397: 0x16c9, -+ 0x1398: 0x16c9, 0x1399: 0x16d1, 0x139a: 0x16d1, 0x139b: 0x16d9, 0x139c: 0x16d9, 0x139d: 0x0149, -+ 0x139e: 0x16e1, 0x139f: 0x16e1, 0x13a0: 0x16e9, 0x13a1: 0x16e9, 0x13a2: 0x16f1, 0x13a3: 0x16f1, -+ 0x13a4: 0x16f9, 0x13a5: 0x16f9, 0x13a6: 0x16f9, 0x13a7: 0x16f9, 0x13a8: 0x1701, 0x13a9: 0x1701, -+ 0x13aa: 0x1709, 0x13ab: 0x1709, 0x13ac: 0x1711, 0x13ad: 0x1711, 0x13ae: 0x1719, 0x13af: 0x1719, -+ 0x13b0: 0x1721, 0x13b1: 0x1721, 0x13b2: 0x1729, 0x13b3: 0x1729, 0x13b4: 0x1731, 0x13b5: 0x1731, -+ 0x13b6: 0x1739, 0x13b7: 0x1739, 0x13b8: 0x1739, 0x13b9: 0x1741, 0x13ba: 0x1741, 0x13bb: 0x1741, -+ 0x13bc: 0x1749, 0x13bd: 0x1749, 0x13be: 0x1749, 0x13bf: 0x1749, -+ // Block 0x4f, offset 0x13c0 -+ 0x13c0: 0x1949, 0x13c1: 0x1951, 0x13c2: 0x1959, 0x13c3: 0x1961, 0x13c4: 0x1969, 0x13c5: 0x1971, -+ 0x13c6: 0x1979, 0x13c7: 0x1981, 0x13c8: 0x1989, 0x13c9: 0x1991, 0x13ca: 0x1999, 0x13cb: 0x19a1, -+ 0x13cc: 0x19a9, 0x13cd: 0x19b1, 0x13ce: 0x19b9, 0x13cf: 0x19c1, 0x13d0: 0x19c9, 0x13d1: 0x19d1, -+ 0x13d2: 0x19d9, 0x13d3: 0x19e1, 0x13d4: 0x19e9, 0x13d5: 0x19f1, 0x13d6: 0x19f9, 0x13d7: 0x1a01, -+ 0x13d8: 0x1a09, 0x13d9: 0x1a11, 0x13da: 0x1a19, 0x13db: 0x1a21, 0x13dc: 0x1a29, 0x13dd: 0x1a31, -+ 0x13de: 0x1a3a, 0x13df: 0x1a42, 0x13e0: 0x1a4a, 0x13e1: 0x1a52, 0x13e2: 0x1a5a, 0x13e3: 0x1a62, -+ 0x13e4: 0x1a69, 0x13e5: 0x1a71, 0x13e6: 0x1761, 0x13e7: 0x1a79, 0x13e8: 0x1741, 0x13e9: 0x1769, -+ 0x13ea: 0x1a81, 0x13eb: 0x1a89, 0x13ec: 0x1789, 0x13ed: 0x1a91, 0x13ee: 0x1791, 0x13ef: 0x1799, -+ 0x13f0: 0x1a99, 0x13f1: 0x1aa1, 0x13f2: 0x17b9, 0x13f3: 0x1aa9, 0x13f4: 0x17c1, 0x13f5: 0x17c9, -+ 0x13f6: 0x1ab1, 0x13f7: 0x1ab9, 0x13f8: 0x17d9, 0x13f9: 0x1ac1, 0x13fa: 0x17e1, 0x13fb: 0x17e9, -+ 0x13fc: 0x18d1, 0x13fd: 0x18d9, 0x13fe: 0x18f1, 0x13ff: 0x18f9, -+ // Block 0x50, offset 0x1400 -+ 0x1400: 0x1901, 0x1401: 0x1921, 0x1402: 0x1929, 0x1403: 0x1931, 0x1404: 0x1939, 0x1405: 0x1959, -+ 0x1406: 0x1961, 0x1407: 0x1969, 0x1408: 0x1ac9, 0x1409: 0x1989, 0x140a: 0x1ad1, 0x140b: 0x1ad9, -+ 0x140c: 0x19b9, 0x140d: 0x1ae1, 0x140e: 0x19c1, 0x140f: 0x19c9, 0x1410: 0x1a31, 0x1411: 0x1ae9, -+ 0x1412: 0x1af1, 0x1413: 0x1a09, 0x1414: 0x1af9, 0x1415: 0x1a11, 0x1416: 0x1a19, 0x1417: 0x1751, -+ 0x1418: 0x1759, 0x1419: 0x1b01, 0x141a: 0x1761, 0x141b: 0x1b09, 0x141c: 0x1771, 0x141d: 0x1779, -+ 0x141e: 0x1781, 0x141f: 0x1789, 0x1420: 0x1b11, 0x1421: 0x17a1, 0x1422: 0x17a9, 0x1423: 0x17b1, -+ 0x1424: 0x17b9, 0x1425: 0x1b19, 0x1426: 0x17d9, 0x1427: 0x17f1, 0x1428: 0x17f9, 0x1429: 0x1801, -+ 0x142a: 0x1809, 0x142b: 0x1811, 0x142c: 0x1821, 0x142d: 0x1829, 0x142e: 0x1831, 0x142f: 0x1839, -+ 0x1430: 0x1841, 0x1431: 0x1849, 0x1432: 0x1b21, 0x1433: 0x1851, 0x1434: 0x1859, 0x1435: 0x1861, -+ 0x1436: 0x1869, 0x1437: 0x1871, 0x1438: 0x1879, 0x1439: 0x1889, 0x143a: 0x1891, 0x143b: 0x1899, -+ 0x143c: 0x18a1, 0x143d: 0x18a9, 0x143e: 0x18b1, 0x143f: 0x18b9, -+ // Block 0x51, offset 0x1440 -+ 0x1440: 0x18c1, 0x1441: 0x18c9, 0x1442: 0x18e1, 0x1443: 0x18e9, 0x1444: 0x1909, 0x1445: 0x1911, -+ 0x1446: 0x1919, 0x1447: 0x1921, 0x1448: 0x1929, 0x1449: 0x1941, 0x144a: 0x1949, 0x144b: 0x1951, -+ 0x144c: 0x1959, 0x144d: 0x1b29, 0x144e: 0x1971, 0x144f: 0x1979, 0x1450: 0x1981, 0x1451: 0x1989, -+ 0x1452: 0x19a1, 0x1453: 0x19a9, 0x1454: 0x19b1, 0x1455: 0x19b9, 0x1456: 0x1b31, 0x1457: 0x19d1, -+ 0x1458: 0x19d9, 0x1459: 0x1b39, 0x145a: 0x19f1, 0x145b: 0x19f9, 0x145c: 0x1a01, 0x145d: 0x1a09, -+ 0x145e: 0x1b41, 0x145f: 0x1761, 0x1460: 0x1b09, 0x1461: 0x1789, 0x1462: 0x1b11, 0x1463: 0x17b9, -+ 0x1464: 0x1b19, 0x1465: 0x17d9, 0x1466: 0x1b49, 0x1467: 0x1841, 0x1468: 0x1b51, 0x1469: 0x1b59, -+ 0x146a: 0x1b61, 0x146b: 0x1921, 0x146c: 0x1929, 0x146d: 0x1959, 0x146e: 0x19b9, 0x146f: 0x1b31, -+ 0x1470: 0x1a09, 0x1471: 0x1b41, 0x1472: 0x1b69, 0x1473: 0x1b71, 0x1474: 0x1b79, 0x1475: 0x1b81, -+ 0x1476: 0x1b89, 0x1477: 0x1b91, 0x1478: 0x1b99, 0x1479: 0x1ba1, 0x147a: 0x1ba9, 0x147b: 0x1bb1, -+ 0x147c: 0x1bb9, 0x147d: 0x1bc1, 0x147e: 0x1bc9, 0x147f: 0x1bd1, -+ // Block 0x52, offset 0x1480 -+ 0x1480: 0x1bd9, 0x1481: 0x1be1, 0x1482: 0x1be9, 0x1483: 0x1bf1, 0x1484: 0x1bf9, 0x1485: 0x1c01, -+ 0x1486: 0x1c09, 0x1487: 0x1c11, 0x1488: 0x1c19, 0x1489: 0x1c21, 0x148a: 0x1c29, 0x148b: 0x1c31, -+ 0x148c: 0x1b59, 0x148d: 0x1c39, 0x148e: 0x1c41, 0x148f: 0x1c49, 0x1490: 0x1c51, 0x1491: 0x1b81, -+ 0x1492: 0x1b89, 0x1493: 0x1b91, 0x1494: 0x1b99, 0x1495: 0x1ba1, 0x1496: 0x1ba9, 0x1497: 0x1bb1, -+ 0x1498: 0x1bb9, 0x1499: 0x1bc1, 0x149a: 0x1bc9, 0x149b: 0x1bd1, 0x149c: 0x1bd9, 0x149d: 0x1be1, -+ 0x149e: 0x1be9, 0x149f: 0x1bf1, 0x14a0: 0x1bf9, 0x14a1: 0x1c01, 0x14a2: 0x1c09, 0x14a3: 0x1c11, -+ 0x14a4: 0x1c19, 0x14a5: 0x1c21, 0x14a6: 0x1c29, 0x14a7: 0x1c31, 0x14a8: 0x1b59, 0x14a9: 0x1c39, -+ 0x14aa: 0x1c41, 0x14ab: 0x1c49, 0x14ac: 0x1c51, 0x14ad: 0x1c21, 0x14ae: 0x1c29, 0x14af: 0x1c31, -+ 0x14b0: 0x1b59, 0x14b1: 0x1b51, 0x14b2: 0x1b61, 0x14b3: 0x1881, 0x14b4: 0x1829, 0x14b5: 0x1831, -+ 0x14b6: 0x1839, 0x14b7: 0x1c21, 0x14b8: 0x1c29, 0x14b9: 0x1c31, 0x14ba: 0x1881, 0x14bb: 0x1889, -+ 0x14bc: 0x1c59, 0x14bd: 0x1c59, 0x14be: 0x0018, 0x14bf: 0x0018, -+ // Block 0x53, offset 0x14c0 -+ 0x14c0: 0x0018, 0x14c1: 0x0018, 0x14c2: 0x0018, 0x14c3: 0x0018, 0x14c4: 0x0018, 0x14c5: 0x0018, -+ 0x14c6: 0x0018, 0x14c7: 0x0018, 0x14c8: 0x0018, 0x14c9: 0x0018, 0x14ca: 0x0018, 0x14cb: 0x0018, -+ 0x14cc: 0x0018, 0x14cd: 0x0018, 0x14ce: 0x0018, 0x14cf: 0x0018, 0x14d0: 0x1c61, 0x14d1: 0x1c69, -+ 0x14d2: 0x1c69, 0x14d3: 0x1c71, 0x14d4: 0x1c79, 0x14d5: 0x1c81, 0x14d6: 0x1c89, 0x14d7: 0x1c91, -+ 0x14d8: 0x1c99, 0x14d9: 0x1c99, 0x14da: 0x1ca1, 0x14db: 0x1ca9, 0x14dc: 0x1cb1, 0x14dd: 0x1cb9, -+ 0x14de: 0x1cc1, 0x14df: 0x1cc9, 0x14e0: 0x1cc9, 0x14e1: 0x1cd1, 0x14e2: 0x1cd9, 0x14e3: 0x1cd9, -+ 0x14e4: 0x1ce1, 0x14e5: 0x1ce1, 0x14e6: 0x1ce9, 0x14e7: 0x1cf1, 0x14e8: 0x1cf1, 0x14e9: 0x1cf9, -+ 0x14ea: 0x1d01, 0x14eb: 0x1d01, 0x14ec: 0x1d09, 0x14ed: 0x1d09, 0x14ee: 0x1d11, 0x14ef: 0x1d19, -+ 0x14f0: 0x1d19, 0x14f1: 0x1d21, 0x14f2: 0x1d21, 0x14f3: 0x1d29, 0x14f4: 0x1d31, 0x14f5: 0x1d39, -+ 0x14f6: 0x1d41, 0x14f7: 0x1d41, 0x14f8: 0x1d49, 0x14f9: 0x1d51, 0x14fa: 0x1d59, 0x14fb: 0x1d61, -+ 0x14fc: 0x1d69, 0x14fd: 0x1d69, 0x14fe: 0x1d71, 0x14ff: 0x1d79, -+ // Block 0x54, offset 0x1500 -+ 0x1500: 0x1f29, 0x1501: 0x1f31, 0x1502: 0x1f39, 0x1503: 0x1f11, 0x1504: 0x1d39, 0x1505: 0x1ce9, -+ 0x1506: 0x1f41, 0x1507: 0x1f49, 0x1508: 0x0040, 0x1509: 0x0040, 0x150a: 0x0040, 0x150b: 0x0040, -+ 0x150c: 0x0040, 0x150d: 0x0040, 0x150e: 0x0040, 0x150f: 0x0018, 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: 0x1f51, 0x1531: 0x1f59, 0x1532: 0x1f61, 0x1533: 0x1f69, 0x1534: 0x1f71, 0x1535: 0x1f79, -+ 0x1536: 0x1f81, 0x1537: 0x1f89, 0x1538: 0x1f91, 0x1539: 0x1f99, 0x153a: 0x1fa2, 0x153b: 0x1faa, -+ 0x153c: 0x1fb1, 0x153d: 0x0018, 0x153e: 0x0018, 0x153f: 0x0018, -+ // 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: 0x1fba, 0x1551: 0x7d8d, -+ 0x1552: 0x0040, 0x1553: 0x1fc2, 0x1554: 0x0122, 0x1555: 0x1fca, 0x1556: 0x1fd2, 0x1557: 0x7dad, -+ 0x1558: 0x7dcd, 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: 0x7ded, 0x1572: 0x7e0d, 0x1573: 0x1fda, 0x1574: 0x1fda, 0x1575: 0x072a, -+ 0x1576: 0x0732, 0x1577: 0x1fe2, 0x1578: 0x1fea, 0x1579: 0x7e2d, 0x157a: 0x7e4d, 0x157b: 0x7e6d, -+ 0x157c: 0x7e2d, 0x157d: 0x7e8d, 0x157e: 0x7ead, 0x157f: 0x7e8d, -+ // Block 0x56, offset 0x1580 -+ 0x1580: 0x7ecd, 0x1581: 0x7eed, 0x1582: 0x7f0d, 0x1583: 0x7eed, 0x1584: 0x7f2d, 0x1585: 0x0018, -+ 0x1586: 0x0018, 0x1587: 0x1ff2, 0x1588: 0x1ffa, 0x1589: 0x7f4e, 0x158a: 0x7f6e, 0x158b: 0x7f8e, -+ 0x158c: 0x7fae, 0x158d: 0x1fda, 0x158e: 0x1fda, 0x158f: 0x1fda, 0x1590: 0x1fba, 0x1591: 0x7fcd, -+ 0x1592: 0x0040, 0x1593: 0x0040, 0x1594: 0x0122, 0x1595: 0x1fc2, 0x1596: 0x1fd2, 0x1597: 0x1fca, -+ 0x1598: 0x7fed, 0x1599: 0x072a, 0x159a: 0x0732, 0x159b: 0x1fe2, 0x159c: 0x1fea, 0x159d: 0x7ecd, -+ 0x159e: 0x7f2d, 0x159f: 0x2002, 0x15a0: 0x200a, 0x15a1: 0x2012, 0x15a2: 0x071a, 0x15a3: 0x2019, -+ 0x15a4: 0x2022, 0x15a5: 0x202a, 0x15a6: 0x0722, 0x15a7: 0x0040, 0x15a8: 0x2032, 0x15a9: 0x203a, -+ 0x15aa: 0x2042, 0x15ab: 0x204a, 0x15ac: 0x0040, 0x15ad: 0x0040, 0x15ae: 0x0040, 0x15af: 0x0040, -+ 0x15b0: 0x800e, 0x15b1: 0x2051, 0x15b2: 0x802e, 0x15b3: 0x0808, 0x15b4: 0x804e, 0x15b5: 0x0040, -+ 0x15b6: 0x806e, 0x15b7: 0x2059, 0x15b8: 0x808e, 0x15b9: 0x2061, 0x15ba: 0x80ae, 0x15bb: 0x2069, -+ 0x15bc: 0x80ce, 0x15bd: 0x2071, 0x15be: 0x80ee, 0x15bf: 0x2079, -+ // Block 0x57, offset 0x15c0 -+ 0x15c0: 0x2081, 0x15c1: 0x2089, 0x15c2: 0x2089, 0x15c3: 0x2091, 0x15c4: 0x2091, 0x15c5: 0x2099, -+ 0x15c6: 0x2099, 0x15c7: 0x20a1, 0x15c8: 0x20a1, 0x15c9: 0x20a9, 0x15ca: 0x20a9, 0x15cb: 0x20a9, -+ 0x15cc: 0x20a9, 0x15cd: 0x20b1, 0x15ce: 0x20b1, 0x15cf: 0x20b9, 0x15d0: 0x20b9, 0x15d1: 0x20b9, -+ 0x15d2: 0x20b9, 0x15d3: 0x20c1, 0x15d4: 0x20c1, 0x15d5: 0x20c9, 0x15d6: 0x20c9, 0x15d7: 0x20c9, -+ 0x15d8: 0x20c9, 0x15d9: 0x20d1, 0x15da: 0x20d1, 0x15db: 0x20d1, 0x15dc: 0x20d1, 0x15dd: 0x20d9, -+ 0x15de: 0x20d9, 0x15df: 0x20d9, 0x15e0: 0x20d9, 0x15e1: 0x20e1, 0x15e2: 0x20e1, 0x15e3: 0x20e1, -+ 0x15e4: 0x20e1, 0x15e5: 0x20e9, 0x15e6: 0x20e9, 0x15e7: 0x20e9, 0x15e8: 0x20e9, 0x15e9: 0x20f1, -+ 0x15ea: 0x20f1, 0x15eb: 0x20f9, 0x15ec: 0x20f9, 0x15ed: 0x2101, 0x15ee: 0x2101, 0x15ef: 0x2109, -+ 0x15f0: 0x2109, 0x15f1: 0x2111, 0x15f2: 0x2111, 0x15f3: 0x2111, 0x15f4: 0x2111, 0x15f5: 0x2119, -+ 0x15f6: 0x2119, 0x15f7: 0x2119, 0x15f8: 0x2119, 0x15f9: 0x2121, 0x15fa: 0x2121, 0x15fb: 0x2121, -+ 0x15fc: 0x2121, 0x15fd: 0x2129, 0x15fe: 0x2129, 0x15ff: 0x2129, -+ // Block 0x58, offset 0x1600 -+ 0x1600: 0x2129, 0x1601: 0x2131, 0x1602: 0x2131, 0x1603: 0x2131, 0x1604: 0x2131, 0x1605: 0x2139, -+ 0x1606: 0x2139, 0x1607: 0x2139, 0x1608: 0x2139, 0x1609: 0x2141, 0x160a: 0x2141, 0x160b: 0x2141, -+ 0x160c: 0x2141, 0x160d: 0x2149, 0x160e: 0x2149, 0x160f: 0x2149, 0x1610: 0x2149, 0x1611: 0x2151, -+ 0x1612: 0x2151, 0x1613: 0x2151, 0x1614: 0x2151, 0x1615: 0x2159, 0x1616: 0x2159, 0x1617: 0x2159, -+ 0x1618: 0x2159, 0x1619: 0x2161, 0x161a: 0x2161, 0x161b: 0x2161, 0x161c: 0x2161, 0x161d: 0x2169, -+ 0x161e: 0x2169, 0x161f: 0x2169, 0x1620: 0x2169, 0x1621: 0x2171, 0x1622: 0x2171, 0x1623: 0x2171, -+ 0x1624: 0x2171, 0x1625: 0x2179, 0x1626: 0x2179, 0x1627: 0x2179, 0x1628: 0x2179, 0x1629: 0x2181, -+ 0x162a: 0x2181, 0x162b: 0x2181, 0x162c: 0x2181, 0x162d: 0x2189, 0x162e: 0x2189, 0x162f: 0x1701, -+ 0x1630: 0x1701, 0x1631: 0x2191, 0x1632: 0x2191, 0x1633: 0x2191, 0x1634: 0x2191, 0x1635: 0x2199, -+ 0x1636: 0x2199, 0x1637: 0x21a1, 0x1638: 0x21a1, 0x1639: 0x21a9, 0x163a: 0x21a9, 0x163b: 0x21b1, -+ 0x163c: 0x21b1, 0x163d: 0x0040, 0x163e: 0x0040, 0x163f: 0x03c0, -+ // Block 0x59, offset 0x1640 -+ 0x1640: 0x0040, 0x1641: 0x1fca, 0x1642: 0x21ba, 0x1643: 0x2002, 0x1644: 0x203a, 0x1645: 0x2042, -+ 0x1646: 0x200a, 0x1647: 0x21c2, 0x1648: 0x072a, 0x1649: 0x0732, 0x164a: 0x2012, 0x164b: 0x071a, -+ 0x164c: 0x1fba, 0x164d: 0x2019, 0x164e: 0x0961, 0x164f: 0x21ca, 0x1650: 0x06e1, 0x1651: 0x0049, -+ 0x1652: 0x0029, 0x1653: 0x0031, 0x1654: 0x06e9, 0x1655: 0x06f1, 0x1656: 0x06f9, 0x1657: 0x0701, -+ 0x1658: 0x0709, 0x1659: 0x0711, 0x165a: 0x1fc2, 0x165b: 0x0122, 0x165c: 0x2022, 0x165d: 0x0722, -+ 0x165e: 0x202a, 0x165f: 0x1fd2, 0x1660: 0x204a, 0x1661: 0x0019, 0x1662: 0x02e9, 0x1663: 0x03d9, -+ 0x1664: 0x02f1, 0x1665: 0x02f9, 0x1666: 0x03f1, 0x1667: 0x0309, 0x1668: 0x00a9, 0x1669: 0x0311, -+ 0x166a: 0x00b1, 0x166b: 0x0319, 0x166c: 0x0101, 0x166d: 0x0321, 0x166e: 0x0329, 0x166f: 0x0051, -+ 0x1670: 0x0339, 0x1671: 0x0751, 0x1672: 0x00b9, 0x1673: 0x0089, 0x1674: 0x0341, 0x1675: 0x0349, -+ 0x1676: 0x0391, 0x1677: 0x00c1, 0x1678: 0x0109, 0x1679: 0x00c9, 0x167a: 0x04b1, 0x167b: 0x1ff2, -+ 0x167c: 0x2032, 0x167d: 0x1ffa, 0x167e: 0x21d2, 0x167f: 0x1fda, -+ // Block 0x5a, offset 0x1680 -+ 0x1680: 0x0672, 0x1681: 0x0019, 0x1682: 0x02e9, 0x1683: 0x03d9, 0x1684: 0x02f1, 0x1685: 0x02f9, -+ 0x1686: 0x03f1, 0x1687: 0x0309, 0x1688: 0x00a9, 0x1689: 0x0311, 0x168a: 0x00b1, 0x168b: 0x0319, -+ 0x168c: 0x0101, 0x168d: 0x0321, 0x168e: 0x0329, 0x168f: 0x0051, 0x1690: 0x0339, 0x1691: 0x0751, -+ 0x1692: 0x00b9, 0x1693: 0x0089, 0x1694: 0x0341, 0x1695: 0x0349, 0x1696: 0x0391, 0x1697: 0x00c1, -+ 0x1698: 0x0109, 0x1699: 0x00c9, 0x169a: 0x04b1, 0x169b: 0x1fe2, 0x169c: 0x21da, 0x169d: 0x1fea, -+ 0x169e: 0x21e2, 0x169f: 0x810d, 0x16a0: 0x812d, 0x16a1: 0x0961, 0x16a2: 0x814d, 0x16a3: 0x814d, -+ 0x16a4: 0x816d, 0x16a5: 0x818d, 0x16a6: 0x81ad, 0x16a7: 0x81cd, 0x16a8: 0x81ed, 0x16a9: 0x820d, -+ 0x16aa: 0x822d, 0x16ab: 0x824d, 0x16ac: 0x826d, 0x16ad: 0x828d, 0x16ae: 0x82ad, 0x16af: 0x82cd, -+ 0x16b0: 0x82ed, 0x16b1: 0x830d, 0x16b2: 0x832d, 0x16b3: 0x834d, 0x16b4: 0x836d, 0x16b5: 0x838d, -+ 0x16b6: 0x83ad, 0x16b7: 0x83cd, 0x16b8: 0x83ed, 0x16b9: 0x840d, 0x16ba: 0x842d, 0x16bb: 0x844d, -+ 0x16bc: 0x81ed, 0x16bd: 0x846d, 0x16be: 0x848d, 0x16bf: 0x824d, -+ // Block 0x5b, offset 0x16c0 -+ 0x16c0: 0x84ad, 0x16c1: 0x84cd, 0x16c2: 0x84ed, 0x16c3: 0x850d, 0x16c4: 0x852d, 0x16c5: 0x854d, -+ 0x16c6: 0x856d, 0x16c7: 0x858d, 0x16c8: 0x850d, 0x16c9: 0x85ad, 0x16ca: 0x850d, 0x16cb: 0x85cd, -+ 0x16cc: 0x85cd, 0x16cd: 0x85ed, 0x16ce: 0x85ed, 0x16cf: 0x860d, 0x16d0: 0x854d, 0x16d1: 0x862d, -+ 0x16d2: 0x864d, 0x16d3: 0x862d, 0x16d4: 0x866d, 0x16d5: 0x864d, 0x16d6: 0x868d, 0x16d7: 0x868d, -+ 0x16d8: 0x86ad, 0x16d9: 0x86ad, 0x16da: 0x86cd, 0x16db: 0x86cd, 0x16dc: 0x864d, 0x16dd: 0x814d, -+ 0x16de: 0x86ed, 0x16df: 0x870d, 0x16e0: 0x0040, 0x16e1: 0x872d, 0x16e2: 0x874d, 0x16e3: 0x876d, -+ 0x16e4: 0x878d, 0x16e5: 0x876d, 0x16e6: 0x87ad, 0x16e7: 0x87cd, 0x16e8: 0x87ed, 0x16e9: 0x87ed, -+ 0x16ea: 0x880d, 0x16eb: 0x880d, 0x16ec: 0x882d, 0x16ed: 0x882d, 0x16ee: 0x880d, 0x16ef: 0x880d, -+ 0x16f0: 0x884d, 0x16f1: 0x886d, 0x16f2: 0x888d, 0x16f3: 0x88ad, 0x16f4: 0x88cd, 0x16f5: 0x88ed, -+ 0x16f6: 0x88ed, 0x16f7: 0x88ed, 0x16f8: 0x890d, 0x16f9: 0x890d, 0x16fa: 0x890d, 0x16fb: 0x890d, -+ 0x16fc: 0x87ed, 0x16fd: 0x87ed, 0x16fe: 0x87ed, 0x16ff: 0x0040, -+ // Block 0x5c, offset 0x1700 -+ 0x1700: 0x0040, 0x1701: 0x0040, 0x1702: 0x874d, 0x1703: 0x872d, 0x1704: 0x892d, 0x1705: 0x872d, -+ 0x1706: 0x874d, 0x1707: 0x872d, 0x1708: 0x0040, 0x1709: 0x0040, 0x170a: 0x894d, 0x170b: 0x874d, -+ 0x170c: 0x896d, 0x170d: 0x892d, 0x170e: 0x896d, 0x170f: 0x874d, 0x1710: 0x0040, 0x1711: 0x0040, -+ 0x1712: 0x898d, 0x1713: 0x89ad, 0x1714: 0x88ad, 0x1715: 0x896d, 0x1716: 0x892d, 0x1717: 0x896d, -+ 0x1718: 0x0040, 0x1719: 0x0040, 0x171a: 0x89cd, 0x171b: 0x89ed, 0x171c: 0x89cd, 0x171d: 0x0040, -+ 0x171e: 0x0040, 0x171f: 0x0040, 0x1720: 0x21e9, 0x1721: 0x21f1, 0x1722: 0x21f9, 0x1723: 0x8a0e, -+ 0x1724: 0x2201, 0x1725: 0x2209, 0x1726: 0x8a2d, 0x1727: 0x0040, 0x1728: 0x8a4d, 0x1729: 0x8a6d, -+ 0x172a: 0x8a8d, 0x172b: 0x8a6d, 0x172c: 0x8aad, 0x172d: 0x8acd, 0x172e: 0x8aed, 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: 0x0008, 0x1741: 0x0008, 0x1742: 0x0008, 0x1743: 0x0008, 0x1744: 0x0008, 0x1745: 0x0008, -+ 0x1746: 0x0008, 0x1747: 0x0008, 0x1748: 0x0008, 0x1749: 0x0008, 0x174a: 0x0008, 0x174b: 0x0008, -+ 0x174c: 0x0008, 0x174d: 0x0008, 0x174e: 0x0008, 0x174f: 0x0008, 0x1750: 0x0008, 0x1751: 0x0008, -+ 0x1752: 0x0008, 0x1753: 0x0008, 0x1754: 0x0008, 0x1755: 0x0008, 0x1756: 0x0008, 0x1757: 0x0008, -+ 0x1758: 0x0008, 0x1759: 0x0008, 0x175a: 0x0008, 0x175b: 0x0008, 0x175c: 0x0008, 0x175d: 0x0008, -+ 0x175e: 0x0008, 0x175f: 0x0008, 0x1760: 0x0008, 0x1761: 0x0008, 0x1762: 0x0008, 0x1763: 0x0008, -+ 0x1764: 0x0040, 0x1765: 0x0040, 0x1766: 0x0040, 0x1767: 0x0040, 0x1768: 0x0040, 0x1769: 0x0040, -+ 0x176a: 0x0040, 0x176b: 0x0040, 0x176c: 0x0040, 0x176d: 0x0040, 0x176e: 0x0040, 0x176f: 0x0018, -+ 0x1770: 0x8b3d, 0x1771: 0x8b55, 0x1772: 0x8b6d, 0x1773: 0x8b55, 0x1774: 0x8b85, 0x1775: 0x8b55, -+ 0x1776: 0x8b6d, 0x1777: 0x8b55, 0x1778: 0x8b3d, 0x1779: 0x8b9d, 0x177a: 0x8bb5, 0x177b: 0x0040, -+ 0x177c: 0x8bcd, 0x177d: 0x8b9d, 0x177e: 0x8bb5, 0x177f: 0x8b9d, -+ // Block 0x5e, offset 0x1780 -+ 0x1780: 0xe13d, 0x1781: 0xe14d, 0x1782: 0xe15d, 0x1783: 0xe14d, 0x1784: 0xe17d, 0x1785: 0xe14d, -+ 0x1786: 0xe15d, 0x1787: 0xe14d, 0x1788: 0xe13d, 0x1789: 0xe1cd, 0x178a: 0xe1dd, 0x178b: 0x0040, -+ 0x178c: 0xe1fd, 0x178d: 0xe1cd, 0x178e: 0xe1dd, 0x178f: 0xe1cd, 0x1790: 0xe13d, 0x1791: 0xe14d, -+ 0x1792: 0xe15d, 0x1793: 0x0040, 0x1794: 0xe17d, 0x1795: 0xe14d, 0x1796: 0x0040, 0x1797: 0x0008, -+ 0x1798: 0x0008, 0x1799: 0x0008, 0x179a: 0x0008, 0x179b: 0x0008, 0x179c: 0x0008, 0x179d: 0x0008, -+ 0x179e: 0x0008, 0x179f: 0x0008, 0x17a0: 0x0008, 0x17a1: 0x0008, 0x17a2: 0x0040, 0x17a3: 0x0008, -+ 0x17a4: 0x0008, 0x17a5: 0x0008, 0x17a6: 0x0008, 0x17a7: 0x0008, 0x17a8: 0x0008, 0x17a9: 0x0008, -+ 0x17aa: 0x0008, 0x17ab: 0x0008, 0x17ac: 0x0008, 0x17ad: 0x0008, 0x17ae: 0x0008, 0x17af: 0x0008, -+ 0x17b0: 0x0008, 0x17b1: 0x0008, 0x17b2: 0x0040, 0x17b3: 0x0008, 0x17b4: 0x0008, 0x17b5: 0x0008, -+ 0x17b6: 0x0008, 0x17b7: 0x0008, 0x17b8: 0x0008, 0x17b9: 0x0008, 0x17ba: 0x0040, 0x17bb: 0x0008, -+ 0x17bc: 0x0008, 0x17bd: 0x0040, 0x17be: 0x0040, 0x17bf: 0x0040, -+ // Block 0x5f, offset 0x17c0 -+ 0x17c0: 0x0008, 0x17c1: 0x2211, 0x17c2: 0x2219, 0x17c3: 0x02e1, 0x17c4: 0x2221, 0x17c5: 0x2229, -+ 0x17c6: 0x0040, 0x17c7: 0x2231, 0x17c8: 0x2239, 0x17c9: 0x2241, 0x17ca: 0x2249, 0x17cb: 0x2251, -+ 0x17cc: 0x2259, 0x17cd: 0x2261, 0x17ce: 0x2269, 0x17cf: 0x2271, 0x17d0: 0x2279, 0x17d1: 0x2281, -+ 0x17d2: 0x2289, 0x17d3: 0x2291, 0x17d4: 0x2299, 0x17d5: 0x0741, 0x17d6: 0x22a1, 0x17d7: 0x22a9, -+ 0x17d8: 0x22b1, 0x17d9: 0x22b9, 0x17da: 0x22c1, 0x17db: 0x13d9, 0x17dc: 0x8be5, 0x17dd: 0x22c9, -+ 0x17de: 0x22d1, 0x17df: 0x8c05, 0x17e0: 0x22d9, 0x17e1: 0x8c25, 0x17e2: 0x22e1, 0x17e3: 0x22e9, -+ 0x17e4: 0x22f1, 0x17e5: 0x0751, 0x17e6: 0x22f9, 0x17e7: 0x8c45, 0x17e8: 0x0949, 0x17e9: 0x2301, -+ 0x17ea: 0x2309, 0x17eb: 0x2311, 0x17ec: 0x2319, 0x17ed: 0x2321, 0x17ee: 0x2329, 0x17ef: 0x2331, -+ 0x17f0: 0x2339, 0x17f1: 0x0040, 0x17f2: 0x2341, 0x17f3: 0x2349, 0x17f4: 0x2351, 0x17f5: 0x2359, -+ 0x17f6: 0x2361, 0x17f7: 0x2369, 0x17f8: 0x2371, 0x17f9: 0x8c65, 0x17fa: 0x8c85, 0x17fb: 0x0040, -+ 0x17fc: 0x0040, 0x17fd: 0x0040, 0x17fe: 0x0040, 0x17ff: 0x0040, -+ // Block 0x60, offset 0x1800 -+ 0x1800: 0x0a08, 0x1801: 0x0a08, 0x1802: 0x0a08, 0x1803: 0x0a08, 0x1804: 0x0a08, 0x1805: 0x0c08, -+ 0x1806: 0x0808, 0x1807: 0x0c08, 0x1808: 0x0818, 0x1809: 0x0c08, 0x180a: 0x0c08, 0x180b: 0x0808, -+ 0x180c: 0x0808, 0x180d: 0x0908, 0x180e: 0x0c08, 0x180f: 0x0c08, 0x1810: 0x0c08, 0x1811: 0x0c08, -+ 0x1812: 0x0c08, 0x1813: 0x0a08, 0x1814: 0x0a08, 0x1815: 0x0a08, 0x1816: 0x0a08, 0x1817: 0x0908, -+ 0x1818: 0x0a08, 0x1819: 0x0a08, 0x181a: 0x0a08, 0x181b: 0x0a08, 0x181c: 0x0a08, 0x181d: 0x0c08, -+ 0x181e: 0x0a08, 0x181f: 0x0a08, 0x1820: 0x0a08, 0x1821: 0x0c08, 0x1822: 0x0808, 0x1823: 0x0808, -+ 0x1824: 0x0c08, 0x1825: 0x3308, 0x1826: 0x3308, 0x1827: 0x0040, 0x1828: 0x0040, 0x1829: 0x0040, -+ 0x182a: 0x0040, 0x182b: 0x0a18, 0x182c: 0x0a18, 0x182d: 0x0a18, 0x182e: 0x0a18, 0x182f: 0x0c18, -+ 0x1830: 0x0818, 0x1831: 0x0818, 0x1832: 0x0818, 0x1833: 0x0818, 0x1834: 0x0818, 0x1835: 0x0818, -+ 0x1836: 0x0818, 0x1837: 0x0040, 0x1838: 0x0040, 0x1839: 0x0040, 0x183a: 0x0040, 0x183b: 0x0040, -+ 0x183c: 0x0040, 0x183d: 0x0040, 0x183e: 0x0040, 0x183f: 0x0040, -+ // Block 0x61, offset 0x1840 -+ 0x1840: 0x0a08, 0x1841: 0x0c08, 0x1842: 0x0a08, 0x1843: 0x0c08, 0x1844: 0x0c08, 0x1845: 0x0c08, -+ 0x1846: 0x0a08, 0x1847: 0x0a08, 0x1848: 0x0a08, 0x1849: 0x0c08, 0x184a: 0x0a08, 0x184b: 0x0a08, -+ 0x184c: 0x0c08, 0x184d: 0x0a08, 0x184e: 0x0c08, 0x184f: 0x0c08, 0x1850: 0x0a08, 0x1851: 0x0c08, -+ 0x1852: 0x0040, 0x1853: 0x0040, 0x1854: 0x0040, 0x1855: 0x0040, 0x1856: 0x0040, 0x1857: 0x0040, -+ 0x1858: 0x0040, 0x1859: 0x0818, 0x185a: 0x0818, 0x185b: 0x0818, 0x185c: 0x0818, 0x185d: 0x0040, -+ 0x185e: 0x0040, 0x185f: 0x0040, 0x1860: 0x0040, 0x1861: 0x0040, 0x1862: 0x0040, 0x1863: 0x0040, -+ 0x1864: 0x0040, 0x1865: 0x0040, 0x1866: 0x0040, 0x1867: 0x0040, 0x1868: 0x0040, 0x1869: 0x0c18, -+ 0x186a: 0x0c18, 0x186b: 0x0c18, 0x186c: 0x0c18, 0x186d: 0x0a18, 0x186e: 0x0a18, 0x186f: 0x0818, -+ 0x1870: 0x0040, 0x1871: 0x0040, 0x1872: 0x0040, 0x1873: 0x0040, 0x1874: 0x0040, 0x1875: 0x0040, -+ 0x1876: 0x0040, 0x1877: 0x0040, 0x1878: 0x0040, 0x1879: 0x0040, 0x187a: 0x0040, 0x187b: 0x0040, -+ 0x187c: 0x0040, 0x187d: 0x0040, 0x187e: 0x0040, 0x187f: 0x0040, -+ // Block 0x62, offset 0x1880 -+ 0x1880: 0x3308, 0x1881: 0x3308, 0x1882: 0x3008, 0x1883: 0x3008, 0x1884: 0x0040, 0x1885: 0x0008, -+ 0x1886: 0x0008, 0x1887: 0x0008, 0x1888: 0x0008, 0x1889: 0x0008, 0x188a: 0x0008, 0x188b: 0x0008, -+ 0x188c: 0x0008, 0x188d: 0x0040, 0x188e: 0x0040, 0x188f: 0x0008, 0x1890: 0x0008, 0x1891: 0x0040, -+ 0x1892: 0x0040, 0x1893: 0x0008, 0x1894: 0x0008, 0x1895: 0x0008, 0x1896: 0x0008, 0x1897: 0x0008, -+ 0x1898: 0x0008, 0x1899: 0x0008, 0x189a: 0x0008, 0x189b: 0x0008, 0x189c: 0x0008, 0x189d: 0x0008, -+ 0x189e: 0x0008, 0x189f: 0x0008, 0x18a0: 0x0008, 0x18a1: 0x0008, 0x18a2: 0x0008, 0x18a3: 0x0008, -+ 0x18a4: 0x0008, 0x18a5: 0x0008, 0x18a6: 0x0008, 0x18a7: 0x0008, 0x18a8: 0x0008, 0x18a9: 0x0040, -+ 0x18aa: 0x0008, 0x18ab: 0x0008, 0x18ac: 0x0008, 0x18ad: 0x0008, 0x18ae: 0x0008, 0x18af: 0x0008, -+ 0x18b0: 0x0008, 0x18b1: 0x0040, 0x18b2: 0x0008, 0x18b3: 0x0008, 0x18b4: 0x0040, 0x18b5: 0x0008, -+ 0x18b6: 0x0008, 0x18b7: 0x0008, 0x18b8: 0x0008, 0x18b9: 0x0008, 0x18ba: 0x0040, 0x18bb: 0x3308, -+ 0x18bc: 0x3308, 0x18bd: 0x0008, 0x18be: 0x3008, 0x18bf: 0x3008, -+ // Block 0x63, offset 0x18c0 -+ 0x18c0: 0x3308, 0x18c1: 0x3008, 0x18c2: 0x3008, 0x18c3: 0x3008, 0x18c4: 0x3008, 0x18c5: 0x0040, -+ 0x18c6: 0x0040, 0x18c7: 0x3008, 0x18c8: 0x3008, 0x18c9: 0x0040, 0x18ca: 0x0040, 0x18cb: 0x3008, -+ 0x18cc: 0x3008, 0x18cd: 0x3808, 0x18ce: 0x0040, 0x18cf: 0x0040, 0x18d0: 0x0008, 0x18d1: 0x0040, -+ 0x18d2: 0x0040, 0x18d3: 0x0040, 0x18d4: 0x0040, 0x18d5: 0x0040, 0x18d6: 0x0040, 0x18d7: 0x3008, -+ 0x18d8: 0x0040, 0x18d9: 0x0040, 0x18da: 0x0040, 0x18db: 0x0040, 0x18dc: 0x0040, 0x18dd: 0x0008, -+ 0x18de: 0x0008, 0x18df: 0x0008, 0x18e0: 0x0008, 0x18e1: 0x0008, 0x18e2: 0x3008, 0x18e3: 0x3008, -+ 0x18e4: 0x0040, 0x18e5: 0x0040, 0x18e6: 0x3308, 0x18e7: 0x3308, 0x18e8: 0x3308, 0x18e9: 0x3308, -+ 0x18ea: 0x3308, 0x18eb: 0x3308, 0x18ec: 0x3308, 0x18ed: 0x0040, 0x18ee: 0x0040, 0x18ef: 0x0040, -+ 0x18f0: 0x3308, 0x18f1: 0x3308, 0x18f2: 0x3308, 0x18f3: 0x3308, 0x18f4: 0x3308, 0x18f5: 0x0040, -+ 0x18f6: 0x0040, 0x18f7: 0x0040, 0x18f8: 0x0040, 0x18f9: 0x0040, 0x18fa: 0x0040, 0x18fb: 0x0040, -+ 0x18fc: 0x0040, 0x18fd: 0x0040, 0x18fe: 0x0040, 0x18ff: 0x0040, -+ // Block 0x64, offset 0x1900 -+ 0x1900: 0x0008, 0x1901: 0x0008, 0x1902: 0x0008, 0x1903: 0x0008, 0x1904: 0x0008, 0x1905: 0x0008, -+ 0x1906: 0x0008, 0x1907: 0x0040, 0x1908: 0x0040, 0x1909: 0x0008, 0x190a: 0x0040, 0x190b: 0x0040, -+ 0x190c: 0x0008, 0x190d: 0x0008, 0x190e: 0x0008, 0x190f: 0x0008, 0x1910: 0x0008, 0x1911: 0x0008, -+ 0x1912: 0x0008, 0x1913: 0x0008, 0x1914: 0x0040, 0x1915: 0x0008, 0x1916: 0x0008, 0x1917: 0x0040, -+ 0x1918: 0x0008, 0x1919: 0x0008, 0x191a: 0x0008, 0x191b: 0x0008, 0x191c: 0x0008, 0x191d: 0x0008, -+ 0x191e: 0x0008, 0x191f: 0x0008, 0x1920: 0x0008, 0x1921: 0x0008, 0x1922: 0x0008, 0x1923: 0x0008, -+ 0x1924: 0x0008, 0x1925: 0x0008, 0x1926: 0x0008, 0x1927: 0x0008, 0x1928: 0x0008, 0x1929: 0x0008, -+ 0x192a: 0x0008, 0x192b: 0x0008, 0x192c: 0x0008, 0x192d: 0x0008, 0x192e: 0x0008, 0x192f: 0x0008, -+ 0x1930: 0x3008, 0x1931: 0x3008, 0x1932: 0x3008, 0x1933: 0x3008, 0x1934: 0x3008, 0x1935: 0x3008, -+ 0x1936: 0x0040, 0x1937: 0x3008, 0x1938: 0x3008, 0x1939: 0x0040, 0x193a: 0x0040, 0x193b: 0x3308, -+ 0x193c: 0x3308, 0x193d: 0x3808, 0x193e: 0x3b08, 0x193f: 0x0008, -+ // Block 0x65, offset 0x1940 -+ 0x1940: 0x0019, 0x1941: 0x02e9, 0x1942: 0x03d9, 0x1943: 0x02f1, 0x1944: 0x02f9, 0x1945: 0x03f1, -+ 0x1946: 0x0309, 0x1947: 0x00a9, 0x1948: 0x0311, 0x1949: 0x00b1, 0x194a: 0x0319, 0x194b: 0x0101, -+ 0x194c: 0x0321, 0x194d: 0x0329, 0x194e: 0x0051, 0x194f: 0x0339, 0x1950: 0x0751, 0x1951: 0x00b9, -+ 0x1952: 0x0089, 0x1953: 0x0341, 0x1954: 0x0349, 0x1955: 0x0391, 0x1956: 0x00c1, 0x1957: 0x0109, -+ 0x1958: 0x00c9, 0x1959: 0x04b1, 0x195a: 0x0019, 0x195b: 0x02e9, 0x195c: 0x03d9, 0x195d: 0x02f1, -+ 0x195e: 0x02f9, 0x195f: 0x03f1, 0x1960: 0x0309, 0x1961: 0x00a9, 0x1962: 0x0311, 0x1963: 0x00b1, -+ 0x1964: 0x0319, 0x1965: 0x0101, 0x1966: 0x0321, 0x1967: 0x0329, 0x1968: 0x0051, 0x1969: 0x0339, -+ 0x196a: 0x0751, 0x196b: 0x00b9, 0x196c: 0x0089, 0x196d: 0x0341, 0x196e: 0x0349, 0x196f: 0x0391, -+ 0x1970: 0x00c1, 0x1971: 0x0109, 0x1972: 0x00c9, 0x1973: 0x04b1, 0x1974: 0x0019, 0x1975: 0x02e9, -+ 0x1976: 0x03d9, 0x1977: 0x02f1, 0x1978: 0x02f9, 0x1979: 0x03f1, 0x197a: 0x0309, 0x197b: 0x00a9, -+ 0x197c: 0x0311, 0x197d: 0x00b1, 0x197e: 0x0319, 0x197f: 0x0101, -+ // Block 0x66, offset 0x1980 -+ 0x1980: 0x0321, 0x1981: 0x0329, 0x1982: 0x0051, 0x1983: 0x0339, 0x1984: 0x0751, 0x1985: 0x00b9, -+ 0x1986: 0x0089, 0x1987: 0x0341, 0x1988: 0x0349, 0x1989: 0x0391, 0x198a: 0x00c1, 0x198b: 0x0109, -+ 0x198c: 0x00c9, 0x198d: 0x04b1, 0x198e: 0x0019, 0x198f: 0x02e9, 0x1990: 0x03d9, 0x1991: 0x02f1, -+ 0x1992: 0x02f9, 0x1993: 0x03f1, 0x1994: 0x0309, 0x1995: 0x0040, 0x1996: 0x0311, 0x1997: 0x00b1, -+ 0x1998: 0x0319, 0x1999: 0x0101, 0x199a: 0x0321, 0x199b: 0x0329, 0x199c: 0x0051, 0x199d: 0x0339, -+ 0x199e: 0x0751, 0x199f: 0x00b9, 0x19a0: 0x0089, 0x19a1: 0x0341, 0x19a2: 0x0349, 0x19a3: 0x0391, -+ 0x19a4: 0x00c1, 0x19a5: 0x0109, 0x19a6: 0x00c9, 0x19a7: 0x04b1, 0x19a8: 0x0019, 0x19a9: 0x02e9, -+ 0x19aa: 0x03d9, 0x19ab: 0x02f1, 0x19ac: 0x02f9, 0x19ad: 0x03f1, 0x19ae: 0x0309, 0x19af: 0x00a9, -+ 0x19b0: 0x0311, 0x19b1: 0x00b1, 0x19b2: 0x0319, 0x19b3: 0x0101, 0x19b4: 0x0321, 0x19b5: 0x0329, -+ 0x19b6: 0x0051, 0x19b7: 0x0339, 0x19b8: 0x0751, 0x19b9: 0x00b9, 0x19ba: 0x0089, 0x19bb: 0x0341, -+ 0x19bc: 0x0349, 0x19bd: 0x0391, 0x19be: 0x00c1, 0x19bf: 0x0109, -+ // Block 0x67, offset 0x19c0 -+ 0x19c0: 0x00c9, 0x19c1: 0x04b1, 0x19c2: 0x0019, 0x19c3: 0x02e9, 0x19c4: 0x03d9, 0x19c5: 0x02f1, -+ 0x19c6: 0x02f9, 0x19c7: 0x03f1, 0x19c8: 0x0309, 0x19c9: 0x00a9, 0x19ca: 0x0311, 0x19cb: 0x00b1, -+ 0x19cc: 0x0319, 0x19cd: 0x0101, 0x19ce: 0x0321, 0x19cf: 0x0329, 0x19d0: 0x0051, 0x19d1: 0x0339, -+ 0x19d2: 0x0751, 0x19d3: 0x00b9, 0x19d4: 0x0089, 0x19d5: 0x0341, 0x19d6: 0x0349, 0x19d7: 0x0391, -+ 0x19d8: 0x00c1, 0x19d9: 0x0109, 0x19da: 0x00c9, 0x19db: 0x04b1, 0x19dc: 0x0019, 0x19dd: 0x0040, -+ 0x19de: 0x03d9, 0x19df: 0x02f1, 0x19e0: 0x0040, 0x19e1: 0x0040, 0x19e2: 0x0309, 0x19e3: 0x0040, -+ 0x19e4: 0x0040, 0x19e5: 0x00b1, 0x19e6: 0x0319, 0x19e7: 0x0040, 0x19e8: 0x0040, 0x19e9: 0x0329, -+ 0x19ea: 0x0051, 0x19eb: 0x0339, 0x19ec: 0x0751, 0x19ed: 0x0040, 0x19ee: 0x0089, 0x19ef: 0x0341, -+ 0x19f0: 0x0349, 0x19f1: 0x0391, 0x19f2: 0x00c1, 0x19f3: 0x0109, 0x19f4: 0x00c9, 0x19f5: 0x04b1, -+ 0x19f6: 0x0019, 0x19f7: 0x02e9, 0x19f8: 0x03d9, 0x19f9: 0x02f1, 0x19fa: 0x0040, 0x19fb: 0x03f1, -+ 0x19fc: 0x0040, 0x19fd: 0x00a9, 0x19fe: 0x0311, 0x19ff: 0x00b1, -+ // Block 0x68, offset 0x1a00 -+ 0x1a00: 0x0319, 0x1a01: 0x0101, 0x1a02: 0x0321, 0x1a03: 0x0329, 0x1a04: 0x0040, 0x1a05: 0x0339, -+ 0x1a06: 0x0751, 0x1a07: 0x00b9, 0x1a08: 0x0089, 0x1a09: 0x0341, 0x1a0a: 0x0349, 0x1a0b: 0x0391, -+ 0x1a0c: 0x00c1, 0x1a0d: 0x0109, 0x1a0e: 0x00c9, 0x1a0f: 0x04b1, 0x1a10: 0x0019, 0x1a11: 0x02e9, -+ 0x1a12: 0x03d9, 0x1a13: 0x02f1, 0x1a14: 0x02f9, 0x1a15: 0x03f1, 0x1a16: 0x0309, 0x1a17: 0x00a9, -+ 0x1a18: 0x0311, 0x1a19: 0x00b1, 0x1a1a: 0x0319, 0x1a1b: 0x0101, 0x1a1c: 0x0321, 0x1a1d: 0x0329, -+ 0x1a1e: 0x0051, 0x1a1f: 0x0339, 0x1a20: 0x0751, 0x1a21: 0x00b9, 0x1a22: 0x0089, 0x1a23: 0x0341, -+ 0x1a24: 0x0349, 0x1a25: 0x0391, 0x1a26: 0x00c1, 0x1a27: 0x0109, 0x1a28: 0x00c9, 0x1a29: 0x04b1, -+ 0x1a2a: 0x0019, 0x1a2b: 0x02e9, 0x1a2c: 0x03d9, 0x1a2d: 0x02f1, 0x1a2e: 0x02f9, 0x1a2f: 0x03f1, -+ 0x1a30: 0x0309, 0x1a31: 0x00a9, 0x1a32: 0x0311, 0x1a33: 0x00b1, 0x1a34: 0x0319, 0x1a35: 0x0101, -+ 0x1a36: 0x0321, 0x1a37: 0x0329, 0x1a38: 0x0051, 0x1a39: 0x0339, 0x1a3a: 0x0751, 0x1a3b: 0x00b9, -+ 0x1a3c: 0x0089, 0x1a3d: 0x0341, 0x1a3e: 0x0349, 0x1a3f: 0x0391, -+ // Block 0x69, offset 0x1a40 -+ 0x1a40: 0x00c1, 0x1a41: 0x0109, 0x1a42: 0x00c9, 0x1a43: 0x04b1, 0x1a44: 0x0019, 0x1a45: 0x02e9, -+ 0x1a46: 0x0040, 0x1a47: 0x02f1, 0x1a48: 0x02f9, 0x1a49: 0x03f1, 0x1a4a: 0x0309, 0x1a4b: 0x0040, -+ 0x1a4c: 0x0040, 0x1a4d: 0x00b1, 0x1a4e: 0x0319, 0x1a4f: 0x0101, 0x1a50: 0x0321, 0x1a51: 0x0329, -+ 0x1a52: 0x0051, 0x1a53: 0x0339, 0x1a54: 0x0751, 0x1a55: 0x0040, 0x1a56: 0x0089, 0x1a57: 0x0341, -+ 0x1a58: 0x0349, 0x1a59: 0x0391, 0x1a5a: 0x00c1, 0x1a5b: 0x0109, 0x1a5c: 0x00c9, 0x1a5d: 0x0040, -+ 0x1a5e: 0x0019, 0x1a5f: 0x02e9, 0x1a60: 0x03d9, 0x1a61: 0x02f1, 0x1a62: 0x02f9, 0x1a63: 0x03f1, -+ 0x1a64: 0x0309, 0x1a65: 0x00a9, 0x1a66: 0x0311, 0x1a67: 0x00b1, 0x1a68: 0x0319, 0x1a69: 0x0101, -+ 0x1a6a: 0x0321, 0x1a6b: 0x0329, 0x1a6c: 0x0051, 0x1a6d: 0x0339, 0x1a6e: 0x0751, 0x1a6f: 0x00b9, -+ 0x1a70: 0x0089, 0x1a71: 0x0341, 0x1a72: 0x0349, 0x1a73: 0x0391, 0x1a74: 0x00c1, 0x1a75: 0x0109, -+ 0x1a76: 0x00c9, 0x1a77: 0x04b1, 0x1a78: 0x0019, 0x1a79: 0x02e9, 0x1a7a: 0x0040, 0x1a7b: 0x02f1, -+ 0x1a7c: 0x02f9, 0x1a7d: 0x03f1, 0x1a7e: 0x0309, 0x1a7f: 0x0040, -+ // Block 0x6a, offset 0x1a80 -+ 0x1a80: 0x0311, 0x1a81: 0x00b1, 0x1a82: 0x0319, 0x1a83: 0x0101, 0x1a84: 0x0321, 0x1a85: 0x0040, -+ 0x1a86: 0x0051, 0x1a87: 0x0040, 0x1a88: 0x0040, 0x1a89: 0x0040, 0x1a8a: 0x0089, 0x1a8b: 0x0341, -+ 0x1a8c: 0x0349, 0x1a8d: 0x0391, 0x1a8e: 0x00c1, 0x1a8f: 0x0109, 0x1a90: 0x00c9, 0x1a91: 0x0040, -+ 0x1a92: 0x0019, 0x1a93: 0x02e9, 0x1a94: 0x03d9, 0x1a95: 0x02f1, 0x1a96: 0x02f9, 0x1a97: 0x03f1, -+ 0x1a98: 0x0309, 0x1a99: 0x00a9, 0x1a9a: 0x0311, 0x1a9b: 0x00b1, 0x1a9c: 0x0319, 0x1a9d: 0x0101, -+ 0x1a9e: 0x0321, 0x1a9f: 0x0329, 0x1aa0: 0x0051, 0x1aa1: 0x0339, 0x1aa2: 0x0751, 0x1aa3: 0x00b9, -+ 0x1aa4: 0x0089, 0x1aa5: 0x0341, 0x1aa6: 0x0349, 0x1aa7: 0x0391, 0x1aa8: 0x00c1, 0x1aa9: 0x0109, -+ 0x1aaa: 0x00c9, 0x1aab: 0x04b1, 0x1aac: 0x0019, 0x1aad: 0x02e9, 0x1aae: 0x03d9, 0x1aaf: 0x02f1, -+ 0x1ab0: 0x02f9, 0x1ab1: 0x03f1, 0x1ab2: 0x0309, 0x1ab3: 0x00a9, 0x1ab4: 0x0311, 0x1ab5: 0x00b1, -+ 0x1ab6: 0x0319, 0x1ab7: 0x0101, 0x1ab8: 0x0321, 0x1ab9: 0x0329, 0x1aba: 0x0051, 0x1abb: 0x0339, -+ 0x1abc: 0x0751, 0x1abd: 0x00b9, 0x1abe: 0x0089, 0x1abf: 0x0341, -+ // Block 0x6b, offset 0x1ac0 -+ 0x1ac0: 0x0349, 0x1ac1: 0x0391, 0x1ac2: 0x00c1, 0x1ac3: 0x0109, 0x1ac4: 0x00c9, 0x1ac5: 0x04b1, -+ 0x1ac6: 0x0019, 0x1ac7: 0x02e9, 0x1ac8: 0x03d9, 0x1ac9: 0x02f1, 0x1aca: 0x02f9, 0x1acb: 0x03f1, -+ 0x1acc: 0x0309, 0x1acd: 0x00a9, 0x1ace: 0x0311, 0x1acf: 0x00b1, 0x1ad0: 0x0319, 0x1ad1: 0x0101, -+ 0x1ad2: 0x0321, 0x1ad3: 0x0329, 0x1ad4: 0x0051, 0x1ad5: 0x0339, 0x1ad6: 0x0751, 0x1ad7: 0x00b9, -+ 0x1ad8: 0x0089, 0x1ad9: 0x0341, 0x1ada: 0x0349, 0x1adb: 0x0391, 0x1adc: 0x00c1, 0x1add: 0x0109, -+ 0x1ade: 0x00c9, 0x1adf: 0x04b1, 0x1ae0: 0x0019, 0x1ae1: 0x02e9, 0x1ae2: 0x03d9, 0x1ae3: 0x02f1, -+ 0x1ae4: 0x02f9, 0x1ae5: 0x03f1, 0x1ae6: 0x0309, 0x1ae7: 0x00a9, 0x1ae8: 0x0311, 0x1ae9: 0x00b1, -+ 0x1aea: 0x0319, 0x1aeb: 0x0101, 0x1aec: 0x0321, 0x1aed: 0x0329, 0x1aee: 0x0051, 0x1aef: 0x0339, -+ 0x1af0: 0x0751, 0x1af1: 0x00b9, 0x1af2: 0x0089, 0x1af3: 0x0341, 0x1af4: 0x0349, 0x1af5: 0x0391, -+ 0x1af6: 0x00c1, 0x1af7: 0x0109, 0x1af8: 0x00c9, 0x1af9: 0x04b1, 0x1afa: 0x0019, 0x1afb: 0x02e9, -+ 0x1afc: 0x03d9, 0x1afd: 0x02f1, 0x1afe: 0x02f9, 0x1aff: 0x03f1, -+ // Block 0x6c, offset 0x1b00 -+ 0x1b00: 0x0309, 0x1b01: 0x00a9, 0x1b02: 0x0311, 0x1b03: 0x00b1, 0x1b04: 0x0319, 0x1b05: 0x0101, -+ 0x1b06: 0x0321, 0x1b07: 0x0329, 0x1b08: 0x0051, 0x1b09: 0x0339, 0x1b0a: 0x0751, 0x1b0b: 0x00b9, -+ 0x1b0c: 0x0089, 0x1b0d: 0x0341, 0x1b0e: 0x0349, 0x1b0f: 0x0391, 0x1b10: 0x00c1, 0x1b11: 0x0109, -+ 0x1b12: 0x00c9, 0x1b13: 0x04b1, 0x1b14: 0x0019, 0x1b15: 0x02e9, 0x1b16: 0x03d9, 0x1b17: 0x02f1, -+ 0x1b18: 0x02f9, 0x1b19: 0x03f1, 0x1b1a: 0x0309, 0x1b1b: 0x00a9, 0x1b1c: 0x0311, 0x1b1d: 0x00b1, -+ 0x1b1e: 0x0319, 0x1b1f: 0x0101, 0x1b20: 0x0321, 0x1b21: 0x0329, 0x1b22: 0x0051, 0x1b23: 0x0339, -+ 0x1b24: 0x0751, 0x1b25: 0x00b9, 0x1b26: 0x0089, 0x1b27: 0x0341, 0x1b28: 0x0349, 0x1b29: 0x0391, -+ 0x1b2a: 0x00c1, 0x1b2b: 0x0109, 0x1b2c: 0x00c9, 0x1b2d: 0x04b1, 0x1b2e: 0x0019, 0x1b2f: 0x02e9, -+ 0x1b30: 0x03d9, 0x1b31: 0x02f1, 0x1b32: 0x02f9, 0x1b33: 0x03f1, 0x1b34: 0x0309, 0x1b35: 0x00a9, -+ 0x1b36: 0x0311, 0x1b37: 0x00b1, 0x1b38: 0x0319, 0x1b39: 0x0101, 0x1b3a: 0x0321, 0x1b3b: 0x0329, -+ 0x1b3c: 0x0051, 0x1b3d: 0x0339, 0x1b3e: 0x0751, 0x1b3f: 0x00b9, -+ // Block 0x6d, offset 0x1b40 -+ 0x1b40: 0x0089, 0x1b41: 0x0341, 0x1b42: 0x0349, 0x1b43: 0x0391, 0x1b44: 0x00c1, 0x1b45: 0x0109, -+ 0x1b46: 0x00c9, 0x1b47: 0x04b1, 0x1b48: 0x0019, 0x1b49: 0x02e9, 0x1b4a: 0x03d9, 0x1b4b: 0x02f1, -+ 0x1b4c: 0x02f9, 0x1b4d: 0x03f1, 0x1b4e: 0x0309, 0x1b4f: 0x00a9, 0x1b50: 0x0311, 0x1b51: 0x00b1, -+ 0x1b52: 0x0319, 0x1b53: 0x0101, 0x1b54: 0x0321, 0x1b55: 0x0329, 0x1b56: 0x0051, 0x1b57: 0x0339, -+ 0x1b58: 0x0751, 0x1b59: 0x00b9, 0x1b5a: 0x0089, 0x1b5b: 0x0341, 0x1b5c: 0x0349, 0x1b5d: 0x0391, -+ 0x1b5e: 0x00c1, 0x1b5f: 0x0109, 0x1b60: 0x00c9, 0x1b61: 0x04b1, 0x1b62: 0x0019, 0x1b63: 0x02e9, -+ 0x1b64: 0x03d9, 0x1b65: 0x02f1, 0x1b66: 0x02f9, 0x1b67: 0x03f1, 0x1b68: 0x0309, 0x1b69: 0x00a9, -+ 0x1b6a: 0x0311, 0x1b6b: 0x00b1, 0x1b6c: 0x0319, 0x1b6d: 0x0101, 0x1b6e: 0x0321, 0x1b6f: 0x0329, -+ 0x1b70: 0x0051, 0x1b71: 0x0339, 0x1b72: 0x0751, 0x1b73: 0x00b9, 0x1b74: 0x0089, 0x1b75: 0x0341, -+ 0x1b76: 0x0349, 0x1b77: 0x0391, 0x1b78: 0x00c1, 0x1b79: 0x0109, 0x1b7a: 0x00c9, 0x1b7b: 0x04b1, -+ 0x1b7c: 0x0019, 0x1b7d: 0x02e9, 0x1b7e: 0x03d9, 0x1b7f: 0x02f1, -+ // Block 0x6e, offset 0x1b80 -+ 0x1b80: 0x02f9, 0x1b81: 0x03f1, 0x1b82: 0x0309, 0x1b83: 0x00a9, 0x1b84: 0x0311, 0x1b85: 0x00b1, -+ 0x1b86: 0x0319, 0x1b87: 0x0101, 0x1b88: 0x0321, 0x1b89: 0x0329, 0x1b8a: 0x0051, 0x1b8b: 0x0339, -+ 0x1b8c: 0x0751, 0x1b8d: 0x00b9, 0x1b8e: 0x0089, 0x1b8f: 0x0341, 0x1b90: 0x0349, 0x1b91: 0x0391, -+ 0x1b92: 0x00c1, 0x1b93: 0x0109, 0x1b94: 0x00c9, 0x1b95: 0x04b1, 0x1b96: 0x0019, 0x1b97: 0x02e9, -+ 0x1b98: 0x03d9, 0x1b99: 0x02f1, 0x1b9a: 0x02f9, 0x1b9b: 0x03f1, 0x1b9c: 0x0309, 0x1b9d: 0x00a9, -+ 0x1b9e: 0x0311, 0x1b9f: 0x00b1, 0x1ba0: 0x0319, 0x1ba1: 0x0101, 0x1ba2: 0x0321, 0x1ba3: 0x0329, -+ 0x1ba4: 0x0051, 0x1ba5: 0x0339, 0x1ba6: 0x0751, 0x1ba7: 0x00b9, 0x1ba8: 0x0089, 0x1ba9: 0x0341, -+ 0x1baa: 0x0349, 0x1bab: 0x0391, 0x1bac: 0x00c1, 0x1bad: 0x0109, 0x1bae: 0x00c9, 0x1baf: 0x04b1, -+ 0x1bb0: 0x0019, 0x1bb1: 0x02e9, 0x1bb2: 0x03d9, 0x1bb3: 0x02f1, 0x1bb4: 0x02f9, 0x1bb5: 0x03f1, -+ 0x1bb6: 0x0309, 0x1bb7: 0x00a9, 0x1bb8: 0x0311, 0x1bb9: 0x00b1, 0x1bba: 0x0319, 0x1bbb: 0x0101, -+ 0x1bbc: 0x0321, 0x1bbd: 0x0329, 0x1bbe: 0x0051, 0x1bbf: 0x0339, -+ // Block 0x6f, offset 0x1bc0 -+ 0x1bc0: 0x0751, 0x1bc1: 0x00b9, 0x1bc2: 0x0089, 0x1bc3: 0x0341, 0x1bc4: 0x0349, 0x1bc5: 0x0391, -+ 0x1bc6: 0x00c1, 0x1bc7: 0x0109, 0x1bc8: 0x00c9, 0x1bc9: 0x04b1, 0x1bca: 0x0019, 0x1bcb: 0x02e9, -+ 0x1bcc: 0x03d9, 0x1bcd: 0x02f1, 0x1bce: 0x02f9, 0x1bcf: 0x03f1, 0x1bd0: 0x0309, 0x1bd1: 0x00a9, -+ 0x1bd2: 0x0311, 0x1bd3: 0x00b1, 0x1bd4: 0x0319, 0x1bd5: 0x0101, 0x1bd6: 0x0321, 0x1bd7: 0x0329, -+ 0x1bd8: 0x0051, 0x1bd9: 0x0339, 0x1bda: 0x0751, 0x1bdb: 0x00b9, 0x1bdc: 0x0089, 0x1bdd: 0x0341, -+ 0x1bde: 0x0349, 0x1bdf: 0x0391, 0x1be0: 0x00c1, 0x1be1: 0x0109, 0x1be2: 0x00c9, 0x1be3: 0x04b1, -+ 0x1be4: 0x23e1, 0x1be5: 0x23e9, 0x1be6: 0x0040, 0x1be7: 0x0040, 0x1be8: 0x23f1, 0x1be9: 0x0399, -+ 0x1bea: 0x03a1, 0x1beb: 0x03a9, 0x1bec: 0x23f9, 0x1bed: 0x2401, 0x1bee: 0x2409, 0x1bef: 0x04d1, -+ 0x1bf0: 0x05f9, 0x1bf1: 0x2411, 0x1bf2: 0x2419, 0x1bf3: 0x2421, 0x1bf4: 0x2429, 0x1bf5: 0x2431, -+ 0x1bf6: 0x2439, 0x1bf7: 0x0799, 0x1bf8: 0x03c1, 0x1bf9: 0x04d1, 0x1bfa: 0x2441, 0x1bfb: 0x2449, -+ 0x1bfc: 0x2451, 0x1bfd: 0x03b1, 0x1bfe: 0x03b9, 0x1bff: 0x2459, -+ // Block 0x70, offset 0x1c00 -+ 0x1c00: 0x0769, 0x1c01: 0x2461, 0x1c02: 0x23f1, 0x1c03: 0x0399, 0x1c04: 0x03a1, 0x1c05: 0x03a9, -+ 0x1c06: 0x23f9, 0x1c07: 0x2401, 0x1c08: 0x2409, 0x1c09: 0x04d1, 0x1c0a: 0x05f9, 0x1c0b: 0x2411, -+ 0x1c0c: 0x2419, 0x1c0d: 0x2421, 0x1c0e: 0x2429, 0x1c0f: 0x2431, 0x1c10: 0x2439, 0x1c11: 0x0799, -+ 0x1c12: 0x03c1, 0x1c13: 0x2441, 0x1c14: 0x2441, 0x1c15: 0x2449, 0x1c16: 0x2451, 0x1c17: 0x03b1, -+ 0x1c18: 0x03b9, 0x1c19: 0x2459, 0x1c1a: 0x0769, 0x1c1b: 0x2469, 0x1c1c: 0x23f9, 0x1c1d: 0x04d1, -+ 0x1c1e: 0x2411, 0x1c1f: 0x03b1, 0x1c20: 0x03c1, 0x1c21: 0x0799, 0x1c22: 0x23f1, 0x1c23: 0x0399, -+ 0x1c24: 0x03a1, 0x1c25: 0x03a9, 0x1c26: 0x23f9, 0x1c27: 0x2401, 0x1c28: 0x2409, 0x1c29: 0x04d1, -+ 0x1c2a: 0x05f9, 0x1c2b: 0x2411, 0x1c2c: 0x2419, 0x1c2d: 0x2421, 0x1c2e: 0x2429, 0x1c2f: 0x2431, -+ 0x1c30: 0x2439, 0x1c31: 0x0799, 0x1c32: 0x03c1, 0x1c33: 0x04d1, 0x1c34: 0x2441, 0x1c35: 0x2449, -+ 0x1c36: 0x2451, 0x1c37: 0x03b1, 0x1c38: 0x03b9, 0x1c39: 0x2459, 0x1c3a: 0x0769, 0x1c3b: 0x2461, -+ 0x1c3c: 0x23f1, 0x1c3d: 0x0399, 0x1c3e: 0x03a1, 0x1c3f: 0x03a9, -+ // Block 0x71, offset 0x1c40 -+ 0x1c40: 0x23f9, 0x1c41: 0x2401, 0x1c42: 0x2409, 0x1c43: 0x04d1, 0x1c44: 0x05f9, 0x1c45: 0x2411, -+ 0x1c46: 0x2419, 0x1c47: 0x2421, 0x1c48: 0x2429, 0x1c49: 0x2431, 0x1c4a: 0x2439, 0x1c4b: 0x0799, -+ 0x1c4c: 0x03c1, 0x1c4d: 0x2441, 0x1c4e: 0x2441, 0x1c4f: 0x2449, 0x1c50: 0x2451, 0x1c51: 0x03b1, -+ 0x1c52: 0x03b9, 0x1c53: 0x2459, 0x1c54: 0x0769, 0x1c55: 0x2469, 0x1c56: 0x23f9, 0x1c57: 0x04d1, -+ 0x1c58: 0x2411, 0x1c59: 0x03b1, 0x1c5a: 0x03c1, 0x1c5b: 0x0799, 0x1c5c: 0x23f1, 0x1c5d: 0x0399, -+ 0x1c5e: 0x03a1, 0x1c5f: 0x03a9, 0x1c60: 0x23f9, 0x1c61: 0x2401, 0x1c62: 0x2409, 0x1c63: 0x04d1, -+ 0x1c64: 0x05f9, 0x1c65: 0x2411, 0x1c66: 0x2419, 0x1c67: 0x2421, 0x1c68: 0x2429, 0x1c69: 0x2431, -+ 0x1c6a: 0x2439, 0x1c6b: 0x0799, 0x1c6c: 0x03c1, 0x1c6d: 0x04d1, 0x1c6e: 0x2441, 0x1c6f: 0x2449, -+ 0x1c70: 0x2451, 0x1c71: 0x03b1, 0x1c72: 0x03b9, 0x1c73: 0x2459, 0x1c74: 0x0769, 0x1c75: 0x2461, -+ 0x1c76: 0x23f1, 0x1c77: 0x0399, 0x1c78: 0x03a1, 0x1c79: 0x03a9, 0x1c7a: 0x23f9, 0x1c7b: 0x2401, -+ 0x1c7c: 0x2409, 0x1c7d: 0x04d1, 0x1c7e: 0x05f9, 0x1c7f: 0x2411, -+ // Block 0x72, offset 0x1c80 -+ 0x1c80: 0x2419, 0x1c81: 0x2421, 0x1c82: 0x2429, 0x1c83: 0x2431, 0x1c84: 0x2439, 0x1c85: 0x0799, -+ 0x1c86: 0x03c1, 0x1c87: 0x2441, 0x1c88: 0x2441, 0x1c89: 0x2449, 0x1c8a: 0x2451, 0x1c8b: 0x03b1, -+ 0x1c8c: 0x03b9, 0x1c8d: 0x2459, 0x1c8e: 0x0769, 0x1c8f: 0x2469, 0x1c90: 0x23f9, 0x1c91: 0x04d1, -+ 0x1c92: 0x2411, 0x1c93: 0x03b1, 0x1c94: 0x03c1, 0x1c95: 0x0799, 0x1c96: 0x23f1, 0x1c97: 0x0399, -+ 0x1c98: 0x03a1, 0x1c99: 0x03a9, 0x1c9a: 0x23f9, 0x1c9b: 0x2401, 0x1c9c: 0x2409, 0x1c9d: 0x04d1, -+ 0x1c9e: 0x05f9, 0x1c9f: 0x2411, 0x1ca0: 0x2419, 0x1ca1: 0x2421, 0x1ca2: 0x2429, 0x1ca3: 0x2431, -+ 0x1ca4: 0x2439, 0x1ca5: 0x0799, 0x1ca6: 0x03c1, 0x1ca7: 0x04d1, 0x1ca8: 0x2441, 0x1ca9: 0x2449, -+ 0x1caa: 0x2451, 0x1cab: 0x03b1, 0x1cac: 0x03b9, 0x1cad: 0x2459, 0x1cae: 0x0769, 0x1caf: 0x2461, -+ 0x1cb0: 0x23f1, 0x1cb1: 0x0399, 0x1cb2: 0x03a1, 0x1cb3: 0x03a9, 0x1cb4: 0x23f9, 0x1cb5: 0x2401, -+ 0x1cb6: 0x2409, 0x1cb7: 0x04d1, 0x1cb8: 0x05f9, 0x1cb9: 0x2411, 0x1cba: 0x2419, 0x1cbb: 0x2421, -+ 0x1cbc: 0x2429, 0x1cbd: 0x2431, 0x1cbe: 0x2439, 0x1cbf: 0x0799, -+ // Block 0x73, offset 0x1cc0 -+ 0x1cc0: 0x03c1, 0x1cc1: 0x2441, 0x1cc2: 0x2441, 0x1cc3: 0x2449, 0x1cc4: 0x2451, 0x1cc5: 0x03b1, -+ 0x1cc6: 0x03b9, 0x1cc7: 0x2459, 0x1cc8: 0x0769, 0x1cc9: 0x2469, 0x1cca: 0x23f9, 0x1ccb: 0x04d1, -+ 0x1ccc: 0x2411, 0x1ccd: 0x03b1, 0x1cce: 0x03c1, 0x1ccf: 0x0799, 0x1cd0: 0x23f1, 0x1cd1: 0x0399, -+ 0x1cd2: 0x03a1, 0x1cd3: 0x03a9, 0x1cd4: 0x23f9, 0x1cd5: 0x2401, 0x1cd6: 0x2409, 0x1cd7: 0x04d1, -+ 0x1cd8: 0x05f9, 0x1cd9: 0x2411, 0x1cda: 0x2419, 0x1cdb: 0x2421, 0x1cdc: 0x2429, 0x1cdd: 0x2431, -+ 0x1cde: 0x2439, 0x1cdf: 0x0799, 0x1ce0: 0x03c1, 0x1ce1: 0x04d1, 0x1ce2: 0x2441, 0x1ce3: 0x2449, -+ 0x1ce4: 0x2451, 0x1ce5: 0x03b1, 0x1ce6: 0x03b9, 0x1ce7: 0x2459, 0x1ce8: 0x0769, 0x1ce9: 0x2461, -+ 0x1cea: 0x23f1, 0x1ceb: 0x0399, 0x1cec: 0x03a1, 0x1ced: 0x03a9, 0x1cee: 0x23f9, 0x1cef: 0x2401, -+ 0x1cf0: 0x2409, 0x1cf1: 0x04d1, 0x1cf2: 0x05f9, 0x1cf3: 0x2411, 0x1cf4: 0x2419, 0x1cf5: 0x2421, -+ 0x1cf6: 0x2429, 0x1cf7: 0x2431, 0x1cf8: 0x2439, 0x1cf9: 0x0799, 0x1cfa: 0x03c1, 0x1cfb: 0x2441, -+ 0x1cfc: 0x2441, 0x1cfd: 0x2449, 0x1cfe: 0x2451, 0x1cff: 0x03b1, -+ // Block 0x74, offset 0x1d00 -+ 0x1d00: 0x03b9, 0x1d01: 0x2459, 0x1d02: 0x0769, 0x1d03: 0x2469, 0x1d04: 0x23f9, 0x1d05: 0x04d1, -+ 0x1d06: 0x2411, 0x1d07: 0x03b1, 0x1d08: 0x03c1, 0x1d09: 0x0799, 0x1d0a: 0x2471, 0x1d0b: 0x2471, -+ 0x1d0c: 0x0040, 0x1d0d: 0x0040, 0x1d0e: 0x06e1, 0x1d0f: 0x0049, 0x1d10: 0x0029, 0x1d11: 0x0031, -+ 0x1d12: 0x06e9, 0x1d13: 0x06f1, 0x1d14: 0x06f9, 0x1d15: 0x0701, 0x1d16: 0x0709, 0x1d17: 0x0711, -+ 0x1d18: 0x06e1, 0x1d19: 0x0049, 0x1d1a: 0x0029, 0x1d1b: 0x0031, 0x1d1c: 0x06e9, 0x1d1d: 0x06f1, -+ 0x1d1e: 0x06f9, 0x1d1f: 0x0701, 0x1d20: 0x0709, 0x1d21: 0x0711, 0x1d22: 0x06e1, 0x1d23: 0x0049, -+ 0x1d24: 0x0029, 0x1d25: 0x0031, 0x1d26: 0x06e9, 0x1d27: 0x06f1, 0x1d28: 0x06f9, 0x1d29: 0x0701, -+ 0x1d2a: 0x0709, 0x1d2b: 0x0711, 0x1d2c: 0x06e1, 0x1d2d: 0x0049, 0x1d2e: 0x0029, 0x1d2f: 0x0031, -+ 0x1d30: 0x06e9, 0x1d31: 0x06f1, 0x1d32: 0x06f9, 0x1d33: 0x0701, 0x1d34: 0x0709, 0x1d35: 0x0711, -+ 0x1d36: 0x06e1, 0x1d37: 0x0049, 0x1d38: 0x0029, 0x1d39: 0x0031, 0x1d3a: 0x06e9, 0x1d3b: 0x06f1, -+ 0x1d3c: 0x06f9, 0x1d3d: 0x0701, 0x1d3e: 0x0709, 0x1d3f: 0x0711, -+ // Block 0x75, offset 0x1d40 -+ 0x1d40: 0x3308, 0x1d41: 0x3308, 0x1d42: 0x3308, 0x1d43: 0x3308, 0x1d44: 0x3308, 0x1d45: 0x3308, -+ 0x1d46: 0x3308, 0x1d47: 0x0040, 0x1d48: 0x3308, 0x1d49: 0x3308, 0x1d4a: 0x3308, 0x1d4b: 0x3308, -+ 0x1d4c: 0x3308, 0x1d4d: 0x3308, 0x1d4e: 0x3308, 0x1d4f: 0x3308, 0x1d50: 0x3308, 0x1d51: 0x3308, -+ 0x1d52: 0x3308, 0x1d53: 0x3308, 0x1d54: 0x3308, 0x1d55: 0x3308, 0x1d56: 0x3308, 0x1d57: 0x3308, -+ 0x1d58: 0x3308, 0x1d59: 0x0040, 0x1d5a: 0x0040, 0x1d5b: 0x3308, 0x1d5c: 0x3308, 0x1d5d: 0x3308, -+ 0x1d5e: 0x3308, 0x1d5f: 0x3308, 0x1d60: 0x3308, 0x1d61: 0x3308, 0x1d62: 0x0040, 0x1d63: 0x3308, -+ 0x1d64: 0x3308, 0x1d65: 0x0040, 0x1d66: 0x3308, 0x1d67: 0x3308, 0x1d68: 0x3308, 0x1d69: 0x3308, -+ 0x1d6a: 0x3308, 0x1d6b: 0x0040, 0x1d6c: 0x0040, 0x1d6d: 0x0040, 0x1d6e: 0x0040, 0x1d6f: 0x0040, -+ 0x1d70: 0x2479, 0x1d71: 0x2481, 0x1d72: 0x02a9, 0x1d73: 0x2489, 0x1d74: 0x02b1, 0x1d75: 0x2491, -+ 0x1d76: 0x2499, 0x1d77: 0x24a1, 0x1d78: 0x24a9, 0x1d79: 0x24b1, 0x1d7a: 0x24b9, 0x1d7b: 0x24c1, -+ 0x1d7c: 0x02b9, 0x1d7d: 0x24c9, 0x1d7e: 0x24d1, 0x1d7f: 0x02c1, -+ // Block 0x76, offset 0x1d80 -+ 0x1d80: 0x02c9, 0x1d81: 0x24d9, 0x1d82: 0x24e1, 0x1d83: 0x24e9, 0x1d84: 0x24f1, 0x1d85: 0x24f9, -+ 0x1d86: 0x2501, 0x1d87: 0x2509, 0x1d88: 0x2511, 0x1d89: 0x2519, 0x1d8a: 0x2521, 0x1d8b: 0x2529, -+ 0x1d8c: 0x2531, 0x1d8d: 0x2539, 0x1d8e: 0x2541, 0x1d8f: 0x2549, 0x1d90: 0x2551, 0x1d91: 0x2479, -+ 0x1d92: 0x2481, 0x1d93: 0x02a9, 0x1d94: 0x2489, 0x1d95: 0x02b1, 0x1d96: 0x2491, 0x1d97: 0x2499, -+ 0x1d98: 0x24a1, 0x1d99: 0x24a9, 0x1d9a: 0x24b1, 0x1d9b: 0x24b9, 0x1d9c: 0x02b9, 0x1d9d: 0x24c9, -+ 0x1d9e: 0x02c1, 0x1d9f: 0x24d9, 0x1da0: 0x24e1, 0x1da1: 0x24e9, 0x1da2: 0x24f1, 0x1da3: 0x24f9, -+ 0x1da4: 0x2501, 0x1da5: 0x02d1, 0x1da6: 0x2509, 0x1da7: 0x2559, 0x1da8: 0x2531, 0x1da9: 0x2561, -+ 0x1daa: 0x2569, 0x1dab: 0x2571, 0x1dac: 0x2579, 0x1dad: 0x2581, 0x1dae: 0x0040, 0x1daf: 0x0040, -+ 0x1db0: 0x0040, 0x1db1: 0x0040, 0x1db2: 0x0040, 0x1db3: 0x0040, 0x1db4: 0x0040, 0x1db5: 0x0040, -+ 0x1db6: 0x0040, 0x1db7: 0x0040, 0x1db8: 0x0040, 0x1db9: 0x0040, 0x1dba: 0x0040, 0x1dbb: 0x0040, -+ 0x1dbc: 0x0040, 0x1dbd: 0x0040, 0x1dbe: 0x0040, 0x1dbf: 0x0040, -+ // Block 0x77, offset 0x1dc0 -+ 0x1dc0: 0xe115, 0x1dc1: 0xe115, 0x1dc2: 0xe135, 0x1dc3: 0xe135, 0x1dc4: 0xe115, 0x1dc5: 0xe115, -+ 0x1dc6: 0xe175, 0x1dc7: 0xe175, 0x1dc8: 0xe115, 0x1dc9: 0xe115, 0x1dca: 0xe135, 0x1dcb: 0xe135, -+ 0x1dcc: 0xe115, 0x1dcd: 0xe115, 0x1dce: 0xe1f5, 0x1dcf: 0xe1f5, 0x1dd0: 0xe115, 0x1dd1: 0xe115, -+ 0x1dd2: 0xe135, 0x1dd3: 0xe135, 0x1dd4: 0xe115, 0x1dd5: 0xe115, 0x1dd6: 0xe175, 0x1dd7: 0xe175, -+ 0x1dd8: 0xe115, 0x1dd9: 0xe115, 0x1dda: 0xe135, 0x1ddb: 0xe135, 0x1ddc: 0xe115, 0x1ddd: 0xe115, -+ 0x1dde: 0x8ca5, 0x1ddf: 0x8ca5, 0x1de0: 0x04b5, 0x1de1: 0x04b5, 0x1de2: 0x0a08, 0x1de3: 0x0a08, -+ 0x1de4: 0x0a08, 0x1de5: 0x0a08, 0x1de6: 0x0a08, 0x1de7: 0x0a08, 0x1de8: 0x0a08, 0x1de9: 0x0a08, -+ 0x1dea: 0x0a08, 0x1deb: 0x0a08, 0x1dec: 0x0a08, 0x1ded: 0x0a08, 0x1dee: 0x0a08, 0x1def: 0x0a08, -+ 0x1df0: 0x0a08, 0x1df1: 0x0a08, 0x1df2: 0x0a08, 0x1df3: 0x0a08, 0x1df4: 0x0a08, 0x1df5: 0x0a08, -+ 0x1df6: 0x0a08, 0x1df7: 0x0a08, 0x1df8: 0x0a08, 0x1df9: 0x0a08, 0x1dfa: 0x0a08, 0x1dfb: 0x0a08, -+ 0x1dfc: 0x0a08, 0x1dfd: 0x0a08, 0x1dfe: 0x0a08, 0x1dff: 0x0a08, -+ // Block 0x78, offset 0x1e00 -+ 0x1e00: 0x20b1, 0x1e01: 0x20b9, 0x1e02: 0x20d9, 0x1e03: 0x20f1, 0x1e04: 0x0040, 0x1e05: 0x2189, -+ 0x1e06: 0x2109, 0x1e07: 0x20e1, 0x1e08: 0x2131, 0x1e09: 0x2191, 0x1e0a: 0x2161, 0x1e0b: 0x2169, -+ 0x1e0c: 0x2171, 0x1e0d: 0x2179, 0x1e0e: 0x2111, 0x1e0f: 0x2141, 0x1e10: 0x2151, 0x1e11: 0x2121, -+ 0x1e12: 0x2159, 0x1e13: 0x2101, 0x1e14: 0x2119, 0x1e15: 0x20c9, 0x1e16: 0x20d1, 0x1e17: 0x20e9, -+ 0x1e18: 0x20f9, 0x1e19: 0x2129, 0x1e1a: 0x2139, 0x1e1b: 0x2149, 0x1e1c: 0x2589, 0x1e1d: 0x1689, -+ 0x1e1e: 0x2591, 0x1e1f: 0x2599, 0x1e20: 0x0040, 0x1e21: 0x20b9, 0x1e22: 0x20d9, 0x1e23: 0x0040, -+ 0x1e24: 0x2181, 0x1e25: 0x0040, 0x1e26: 0x0040, 0x1e27: 0x20e1, 0x1e28: 0x0040, 0x1e29: 0x2191, -+ 0x1e2a: 0x2161, 0x1e2b: 0x2169, 0x1e2c: 0x2171, 0x1e2d: 0x2179, 0x1e2e: 0x2111, 0x1e2f: 0x2141, -+ 0x1e30: 0x2151, 0x1e31: 0x2121, 0x1e32: 0x2159, 0x1e33: 0x0040, 0x1e34: 0x2119, 0x1e35: 0x20c9, -+ 0x1e36: 0x20d1, 0x1e37: 0x20e9, 0x1e38: 0x0040, 0x1e39: 0x2129, 0x1e3a: 0x0040, 0x1e3b: 0x2149, -+ 0x1e3c: 0x0040, 0x1e3d: 0x0040, 0x1e3e: 0x0040, 0x1e3f: 0x0040, -+ // Block 0x79, offset 0x1e40 -+ 0x1e40: 0x0040, 0x1e41: 0x0040, 0x1e42: 0x20d9, 0x1e43: 0x0040, 0x1e44: 0x0040, 0x1e45: 0x0040, -+ 0x1e46: 0x0040, 0x1e47: 0x20e1, 0x1e48: 0x0040, 0x1e49: 0x2191, 0x1e4a: 0x0040, 0x1e4b: 0x2169, -+ 0x1e4c: 0x0040, 0x1e4d: 0x2179, 0x1e4e: 0x2111, 0x1e4f: 0x2141, 0x1e50: 0x0040, 0x1e51: 0x2121, -+ 0x1e52: 0x2159, 0x1e53: 0x0040, 0x1e54: 0x2119, 0x1e55: 0x0040, 0x1e56: 0x0040, 0x1e57: 0x20e9, -+ 0x1e58: 0x0040, 0x1e59: 0x2129, 0x1e5a: 0x0040, 0x1e5b: 0x2149, 0x1e5c: 0x0040, 0x1e5d: 0x1689, -+ 0x1e5e: 0x0040, 0x1e5f: 0x2599, 0x1e60: 0x0040, 0x1e61: 0x20b9, 0x1e62: 0x20d9, 0x1e63: 0x0040, -+ 0x1e64: 0x2181, 0x1e65: 0x0040, 0x1e66: 0x0040, 0x1e67: 0x20e1, 0x1e68: 0x2131, 0x1e69: 0x2191, -+ 0x1e6a: 0x2161, 0x1e6b: 0x0040, 0x1e6c: 0x2171, 0x1e6d: 0x2179, 0x1e6e: 0x2111, 0x1e6f: 0x2141, -+ 0x1e70: 0x2151, 0x1e71: 0x2121, 0x1e72: 0x2159, 0x1e73: 0x0040, 0x1e74: 0x2119, 0x1e75: 0x20c9, -+ 0x1e76: 0x20d1, 0x1e77: 0x20e9, 0x1e78: 0x0040, 0x1e79: 0x2129, 0x1e7a: 0x2139, 0x1e7b: 0x2149, -+ 0x1e7c: 0x2589, 0x1e7d: 0x0040, 0x1e7e: 0x2591, 0x1e7f: 0x0040, -+ // Block 0x7a, offset 0x1e80 -+ 0x1e80: 0x20b1, 0x1e81: 0x20b9, 0x1e82: 0x20d9, 0x1e83: 0x20f1, 0x1e84: 0x2181, 0x1e85: 0x2189, -+ 0x1e86: 0x2109, 0x1e87: 0x20e1, 0x1e88: 0x2131, 0x1e89: 0x2191, 0x1e8a: 0x0040, 0x1e8b: 0x2169, -+ 0x1e8c: 0x2171, 0x1e8d: 0x2179, 0x1e8e: 0x2111, 0x1e8f: 0x2141, 0x1e90: 0x2151, 0x1e91: 0x2121, -+ 0x1e92: 0x2159, 0x1e93: 0x2101, 0x1e94: 0x2119, 0x1e95: 0x20c9, 0x1e96: 0x20d1, 0x1e97: 0x20e9, -+ 0x1e98: 0x20f9, 0x1e99: 0x2129, 0x1e9a: 0x2139, 0x1e9b: 0x2149, 0x1e9c: 0x0040, 0x1e9d: 0x0040, -+ 0x1e9e: 0x0040, 0x1e9f: 0x0040, 0x1ea0: 0x0040, 0x1ea1: 0x20b9, 0x1ea2: 0x20d9, 0x1ea3: 0x20f1, -+ 0x1ea4: 0x0040, 0x1ea5: 0x2189, 0x1ea6: 0x2109, 0x1ea7: 0x20e1, 0x1ea8: 0x2131, 0x1ea9: 0x2191, -+ 0x1eaa: 0x0040, 0x1eab: 0x2169, 0x1eac: 0x2171, 0x1ead: 0x2179, 0x1eae: 0x2111, 0x1eaf: 0x2141, -+ 0x1eb0: 0x2151, 0x1eb1: 0x2121, 0x1eb2: 0x2159, 0x1eb3: 0x2101, 0x1eb4: 0x2119, 0x1eb5: 0x20c9, -+ 0x1eb6: 0x20d1, 0x1eb7: 0x20e9, 0x1eb8: 0x20f9, 0x1eb9: 0x2129, 0x1eba: 0x2139, 0x1ebb: 0x2149, -+ 0x1ebc: 0x0040, 0x1ebd: 0x0040, 0x1ebe: 0x0040, 0x1ebf: 0x0040, -+ // Block 0x7b, offset 0x1ec0 -+ 0x1ec0: 0x0040, 0x1ec1: 0x25a2, 0x1ec2: 0x25aa, 0x1ec3: 0x25b2, 0x1ec4: 0x25ba, 0x1ec5: 0x25c2, -+ 0x1ec6: 0x25ca, 0x1ec7: 0x25d2, 0x1ec8: 0x25da, 0x1ec9: 0x25e2, 0x1eca: 0x25ea, 0x1ecb: 0x0018, -+ 0x1ecc: 0x0018, 0x1ecd: 0x0018, 0x1ece: 0x0018, 0x1ecf: 0x0018, 0x1ed0: 0x25f2, 0x1ed1: 0x25fa, -+ 0x1ed2: 0x2602, 0x1ed3: 0x260a, 0x1ed4: 0x2612, 0x1ed5: 0x261a, 0x1ed6: 0x2622, 0x1ed7: 0x262a, -+ 0x1ed8: 0x2632, 0x1ed9: 0x263a, 0x1eda: 0x2642, 0x1edb: 0x264a, 0x1edc: 0x2652, 0x1edd: 0x265a, -+ 0x1ede: 0x2662, 0x1edf: 0x266a, 0x1ee0: 0x2672, 0x1ee1: 0x267a, 0x1ee2: 0x2682, 0x1ee3: 0x268a, -+ 0x1ee4: 0x2692, 0x1ee5: 0x269a, 0x1ee6: 0x26a2, 0x1ee7: 0x26aa, 0x1ee8: 0x26b2, 0x1ee9: 0x26ba, -+ 0x1eea: 0x26c1, 0x1eeb: 0x03d9, 0x1eec: 0x00b9, 0x1eed: 0x1239, 0x1eee: 0x26c9, 0x1eef: 0x0018, -+ 0x1ef0: 0x0019, 0x1ef1: 0x02e9, 0x1ef2: 0x03d9, 0x1ef3: 0x02f1, 0x1ef4: 0x02f9, 0x1ef5: 0x03f1, -+ 0x1ef6: 0x0309, 0x1ef7: 0x00a9, 0x1ef8: 0x0311, 0x1ef9: 0x00b1, 0x1efa: 0x0319, 0x1efb: 0x0101, -+ 0x1efc: 0x0321, 0x1efd: 0x0329, 0x1efe: 0x0051, 0x1eff: 0x0339, -+ // Block 0x7c, offset 0x1f00 -+ 0x1f00: 0x0751, 0x1f01: 0x00b9, 0x1f02: 0x0089, 0x1f03: 0x0341, 0x1f04: 0x0349, 0x1f05: 0x0391, -+ 0x1f06: 0x00c1, 0x1f07: 0x0109, 0x1f08: 0x00c9, 0x1f09: 0x04b1, 0x1f0a: 0x26d1, 0x1f0b: 0x11f9, -+ 0x1f0c: 0x26d9, 0x1f0d: 0x04d9, 0x1f0e: 0x26e1, 0x1f0f: 0x26e9, 0x1f10: 0x0018, 0x1f11: 0x0018, -+ 0x1f12: 0x0018, 0x1f13: 0x0018, 0x1f14: 0x0018, 0x1f15: 0x0018, 0x1f16: 0x0018, 0x1f17: 0x0018, -+ 0x1f18: 0x0018, 0x1f19: 0x0018, 0x1f1a: 0x0018, 0x1f1b: 0x0018, 0x1f1c: 0x0018, 0x1f1d: 0x0018, -+ 0x1f1e: 0x0018, 0x1f1f: 0x0018, 0x1f20: 0x0018, 0x1f21: 0x0018, 0x1f22: 0x0018, 0x1f23: 0x0018, -+ 0x1f24: 0x0018, 0x1f25: 0x0018, 0x1f26: 0x0018, 0x1f27: 0x0018, 0x1f28: 0x0018, 0x1f29: 0x0018, -+ 0x1f2a: 0x26f1, 0x1f2b: 0x26f9, 0x1f2c: 0x2701, 0x1f2d: 0x0018, 0x1f2e: 0x0018, 0x1f2f: 0x0018, -+ 0x1f30: 0x0018, 0x1f31: 0x0018, 0x1f32: 0x0018, 0x1f33: 0x0018, 0x1f34: 0x0018, 0x1f35: 0x0018, -+ 0x1f36: 0x0018, 0x1f37: 0x0018, 0x1f38: 0x0018, 0x1f39: 0x0018, 0x1f3a: 0x0018, 0x1f3b: 0x0018, -+ 0x1f3c: 0x0018, 0x1f3d: 0x0018, 0x1f3e: 0x0018, 0x1f3f: 0x0018, -+ // Block 0x7d, offset 0x1f40 -+ 0x1f40: 0x2711, 0x1f41: 0x2719, 0x1f42: 0x2721, 0x1f43: 0x0040, 0x1f44: 0x0040, 0x1f45: 0x0040, -+ 0x1f46: 0x0040, 0x1f47: 0x0040, 0x1f48: 0x0040, 0x1f49: 0x0040, 0x1f4a: 0x0040, 0x1f4b: 0x0040, -+ 0x1f4c: 0x0040, 0x1f4d: 0x0040, 0x1f4e: 0x0040, 0x1f4f: 0x0040, 0x1f50: 0x2729, 0x1f51: 0x2731, -+ 0x1f52: 0x2739, 0x1f53: 0x2741, 0x1f54: 0x2749, 0x1f55: 0x2751, 0x1f56: 0x2759, 0x1f57: 0x2761, -+ 0x1f58: 0x2769, 0x1f59: 0x2771, 0x1f5a: 0x2779, 0x1f5b: 0x2781, 0x1f5c: 0x2789, 0x1f5d: 0x2791, -+ 0x1f5e: 0x2799, 0x1f5f: 0x27a1, 0x1f60: 0x27a9, 0x1f61: 0x27b1, 0x1f62: 0x27b9, 0x1f63: 0x27c1, -+ 0x1f64: 0x27c9, 0x1f65: 0x27d1, 0x1f66: 0x27d9, 0x1f67: 0x27e1, 0x1f68: 0x27e9, 0x1f69: 0x27f1, -+ 0x1f6a: 0x27f9, 0x1f6b: 0x2801, 0x1f6c: 0x2809, 0x1f6d: 0x2811, 0x1f6e: 0x2819, 0x1f6f: 0x2821, -+ 0x1f70: 0x2829, 0x1f71: 0x2831, 0x1f72: 0x2839, 0x1f73: 0x2841, 0x1f74: 0x2849, 0x1f75: 0x2851, -+ 0x1f76: 0x2859, 0x1f77: 0x2861, 0x1f78: 0x2869, 0x1f79: 0x2871, 0x1f7a: 0x2879, 0x1f7b: 0x2881, -+ 0x1f7c: 0x0040, 0x1f7d: 0x0040, 0x1f7e: 0x0040, 0x1f7f: 0x0040, -+ // Block 0x7e, offset 0x1f80 -+ 0x1f80: 0x28e1, 0x1f81: 0x28e9, 0x1f82: 0x28f1, 0x1f83: 0x8cbd, 0x1f84: 0x28f9, 0x1f85: 0x2901, -+ 0x1f86: 0x2909, 0x1f87: 0x2911, 0x1f88: 0x2919, 0x1f89: 0x2921, 0x1f8a: 0x2929, 0x1f8b: 0x2931, -+ 0x1f8c: 0x2939, 0x1f8d: 0x8cdd, 0x1f8e: 0x2941, 0x1f8f: 0x2949, 0x1f90: 0x2951, 0x1f91: 0x2959, -+ 0x1f92: 0x8cfd, 0x1f93: 0x2961, 0x1f94: 0x2969, 0x1f95: 0x2799, 0x1f96: 0x8d1d, 0x1f97: 0x2971, -+ 0x1f98: 0x2979, 0x1f99: 0x2981, 0x1f9a: 0x2989, 0x1f9b: 0x2991, 0x1f9c: 0x8d3d, 0x1f9d: 0x2999, -+ 0x1f9e: 0x29a1, 0x1f9f: 0x29a9, 0x1fa0: 0x29b1, 0x1fa1: 0x29b9, 0x1fa2: 0x2871, 0x1fa3: 0x29c1, -+ 0x1fa4: 0x29c9, 0x1fa5: 0x29d1, 0x1fa6: 0x29d9, 0x1fa7: 0x29e1, 0x1fa8: 0x29e9, 0x1fa9: 0x29f1, -+ 0x1faa: 0x29f9, 0x1fab: 0x2a01, 0x1fac: 0x2a09, 0x1fad: 0x2a11, 0x1fae: 0x2a19, 0x1faf: 0x2a21, -+ 0x1fb0: 0x2a29, 0x1fb1: 0x2a31, 0x1fb2: 0x2a31, 0x1fb3: 0x2a31, 0x1fb4: 0x8d5d, 0x1fb5: 0x2a39, -+ 0x1fb6: 0x2a41, 0x1fb7: 0x2a49, 0x1fb8: 0x8d7d, 0x1fb9: 0x2a51, 0x1fba: 0x2a59, 0x1fbb: 0x2a61, -+ 0x1fbc: 0x2a69, 0x1fbd: 0x2a71, 0x1fbe: 0x2a79, 0x1fbf: 0x2a81, -+ // Block 0x7f, offset 0x1fc0 -+ 0x1fc0: 0x2a89, 0x1fc1: 0x2a91, 0x1fc2: 0x2a99, 0x1fc3: 0x2aa1, 0x1fc4: 0x2aa9, 0x1fc5: 0x2ab1, -+ 0x1fc6: 0x2ab1, 0x1fc7: 0x2ab9, 0x1fc8: 0x2ac1, 0x1fc9: 0x2ac9, 0x1fca: 0x2ad1, 0x1fcb: 0x2ad9, -+ 0x1fcc: 0x2ae1, 0x1fcd: 0x2ae9, 0x1fce: 0x2af1, 0x1fcf: 0x2af9, 0x1fd0: 0x2b01, 0x1fd1: 0x2b09, -+ 0x1fd2: 0x2b11, 0x1fd3: 0x2b19, 0x1fd4: 0x2b21, 0x1fd5: 0x2b29, 0x1fd6: 0x2b31, 0x1fd7: 0x2b39, -+ 0x1fd8: 0x2b41, 0x1fd9: 0x8d9d, 0x1fda: 0x2b49, 0x1fdb: 0x2b51, 0x1fdc: 0x2b59, 0x1fdd: 0x2751, -+ 0x1fde: 0x2b61, 0x1fdf: 0x2b69, 0x1fe0: 0x8dbd, 0x1fe1: 0x8ddd, 0x1fe2: 0x2b71, 0x1fe3: 0x2b79, -+ 0x1fe4: 0x2b81, 0x1fe5: 0x2b89, 0x1fe6: 0x2b91, 0x1fe7: 0x2b99, 0x1fe8: 0x2040, 0x1fe9: 0x2ba1, -+ 0x1fea: 0x2ba9, 0x1feb: 0x2ba9, 0x1fec: 0x8dfd, 0x1fed: 0x2bb1, 0x1fee: 0x2bb9, 0x1fef: 0x2bc1, -+ 0x1ff0: 0x2bc9, 0x1ff1: 0x8e1d, 0x1ff2: 0x2bd1, 0x1ff3: 0x2bd9, 0x1ff4: 0x2040, 0x1ff5: 0x2be1, -+ 0x1ff6: 0x2be9, 0x1ff7: 0x2bf1, 0x1ff8: 0x2bf9, 0x1ff9: 0x2c01, 0x1ffa: 0x2c09, 0x1ffb: 0x8e3d, -+ 0x1ffc: 0x2c11, 0x1ffd: 0x8e5d, 0x1ffe: 0x2c19, 0x1fff: 0x2c21, -+ // Block 0x80, offset 0x2000 -+ 0x2000: 0x2c29, 0x2001: 0x2c31, 0x2002: 0x2c39, 0x2003: 0x2c41, 0x2004: 0x2c49, 0x2005: 0x2c51, -+ 0x2006: 0x2c59, 0x2007: 0x2c61, 0x2008: 0x2c69, 0x2009: 0x8e7d, 0x200a: 0x2c71, 0x200b: 0x2c79, -+ 0x200c: 0x2c81, 0x200d: 0x2c89, 0x200e: 0x2c91, 0x200f: 0x8e9d, 0x2010: 0x2c99, 0x2011: 0x8ebd, -+ 0x2012: 0x8edd, 0x2013: 0x2ca1, 0x2014: 0x2ca9, 0x2015: 0x2ca9, 0x2016: 0x2cb1, 0x2017: 0x8efd, -+ 0x2018: 0x8f1d, 0x2019: 0x2cb9, 0x201a: 0x2cc1, 0x201b: 0x2cc9, 0x201c: 0x2cd1, 0x201d: 0x2cd9, -+ 0x201e: 0x2ce1, 0x201f: 0x2ce9, 0x2020: 0x2cf1, 0x2021: 0x2cf9, 0x2022: 0x2d01, 0x2023: 0x2d09, -+ 0x2024: 0x8f3d, 0x2025: 0x2d11, 0x2026: 0x2d19, 0x2027: 0x2d21, 0x2028: 0x2d29, 0x2029: 0x2d21, -+ 0x202a: 0x2d31, 0x202b: 0x2d39, 0x202c: 0x2d41, 0x202d: 0x2d49, 0x202e: 0x2d51, 0x202f: 0x2d59, -+ 0x2030: 0x2d61, 0x2031: 0x2d69, 0x2032: 0x2d71, 0x2033: 0x2d79, 0x2034: 0x2d81, 0x2035: 0x2d89, -+ 0x2036: 0x2d91, 0x2037: 0x2d99, 0x2038: 0x8f5d, 0x2039: 0x2da1, 0x203a: 0x2da9, 0x203b: 0x2db1, -+ 0x203c: 0x2db9, 0x203d: 0x2dc1, 0x203e: 0x8f7d, 0x203f: 0x2dc9, -+ // Block 0x81, offset 0x2040 -+ 0x2040: 0x2dd1, 0x2041: 0x2dd9, 0x2042: 0x2de1, 0x2043: 0x2de9, 0x2044: 0x2df1, 0x2045: 0x2df9, -+ 0x2046: 0x2e01, 0x2047: 0x2e09, 0x2048: 0x2e11, 0x2049: 0x2e19, 0x204a: 0x8f9d, 0x204b: 0x2e21, -+ 0x204c: 0x2e29, 0x204d: 0x2e31, 0x204e: 0x2e39, 0x204f: 0x2e41, 0x2050: 0x2e49, 0x2051: 0x2e51, -+ 0x2052: 0x2e59, 0x2053: 0x2e61, 0x2054: 0x2e69, 0x2055: 0x2e71, 0x2056: 0x2e79, 0x2057: 0x2e81, -+ 0x2058: 0x2e89, 0x2059: 0x2e91, 0x205a: 0x2e99, 0x205b: 0x2ea1, 0x205c: 0x2ea9, 0x205d: 0x8fbd, -+ 0x205e: 0x2eb1, 0x205f: 0x2eb9, 0x2060: 0x2ec1, 0x2061: 0x2ec9, 0x2062: 0x2ed1, 0x2063: 0x8fdd, -+ 0x2064: 0x2ed9, 0x2065: 0x2ee1, 0x2066: 0x2ee9, 0x2067: 0x2ef1, 0x2068: 0x2ef9, 0x2069: 0x2f01, -+ 0x206a: 0x2f09, 0x206b: 0x2f11, 0x206c: 0x7f0d, 0x206d: 0x2f19, 0x206e: 0x2f21, 0x206f: 0x2f29, -+ 0x2070: 0x8ffd, 0x2071: 0x2f31, 0x2072: 0x2f39, 0x2073: 0x2f41, 0x2074: 0x2f49, 0x2075: 0x2f51, -+ 0x2076: 0x2f59, 0x2077: 0x901d, 0x2078: 0x903d, 0x2079: 0x905d, 0x207a: 0x2f61, 0x207b: 0x907d, -+ 0x207c: 0x2f69, 0x207d: 0x2f71, 0x207e: 0x2f79, 0x207f: 0x2f81, -+ // Block 0x82, offset 0x2080 -+ 0x2080: 0x2f89, 0x2081: 0x2f91, 0x2082: 0x2f99, 0x2083: 0x2fa1, 0x2084: 0x2fa9, 0x2085: 0x2fb1, -+ 0x2086: 0x909d, 0x2087: 0x2fb9, 0x2088: 0x2fc1, 0x2089: 0x2fc9, 0x208a: 0x2fd1, 0x208b: 0x2fd9, -+ 0x208c: 0x2fe1, 0x208d: 0x90bd, 0x208e: 0x2fe9, 0x208f: 0x2ff1, 0x2090: 0x90dd, 0x2091: 0x90fd, -+ 0x2092: 0x2ff9, 0x2093: 0x3001, 0x2094: 0x3009, 0x2095: 0x3011, 0x2096: 0x3019, 0x2097: 0x3021, -+ 0x2098: 0x3029, 0x2099: 0x3031, 0x209a: 0x3039, 0x209b: 0x911d, 0x209c: 0x3041, 0x209d: 0x913d, -+ 0x209e: 0x3049, 0x209f: 0x2040, 0x20a0: 0x3051, 0x20a1: 0x3059, 0x20a2: 0x3061, 0x20a3: 0x915d, -+ 0x20a4: 0x3069, 0x20a5: 0x3071, 0x20a6: 0x917d, 0x20a7: 0x919d, 0x20a8: 0x3079, 0x20a9: 0x3081, -+ 0x20aa: 0x3089, 0x20ab: 0x3091, 0x20ac: 0x3099, 0x20ad: 0x3099, 0x20ae: 0x30a1, 0x20af: 0x30a9, -+ 0x20b0: 0x30b1, 0x20b1: 0x30b9, 0x20b2: 0x30c1, 0x20b3: 0x30c9, 0x20b4: 0x30d1, 0x20b5: 0x91bd, -+ 0x20b6: 0x30d9, 0x20b7: 0x91dd, 0x20b8: 0x30e1, 0x20b9: 0x91fd, 0x20ba: 0x30e9, 0x20bb: 0x921d, -+ 0x20bc: 0x923d, 0x20bd: 0x925d, 0x20be: 0x30f1, 0x20bf: 0x30f9, -+ // Block 0x83, offset 0x20c0 -+ 0x20c0: 0x3101, 0x20c1: 0x927d, 0x20c2: 0x929d, 0x20c3: 0x92bd, 0x20c4: 0x92dd, 0x20c5: 0x3109, -+ 0x20c6: 0x3111, 0x20c7: 0x3111, 0x20c8: 0x3119, 0x20c9: 0x3121, 0x20ca: 0x3129, 0x20cb: 0x3131, -+ 0x20cc: 0x3139, 0x20cd: 0x92fd, 0x20ce: 0x3141, 0x20cf: 0x3149, 0x20d0: 0x3151, 0x20d1: 0x3159, -+ 0x20d2: 0x931d, 0x20d3: 0x3161, 0x20d4: 0x933d, 0x20d5: 0x935d, 0x20d6: 0x3169, 0x20d7: 0x3171, -+ 0x20d8: 0x3179, 0x20d9: 0x3181, 0x20da: 0x3189, 0x20db: 0x3191, 0x20dc: 0x937d, 0x20dd: 0x939d, -+ 0x20de: 0x93bd, 0x20df: 0x2040, 0x20e0: 0x3199, 0x20e1: 0x93dd, 0x20e2: 0x31a1, 0x20e3: 0x31a9, -+ 0x20e4: 0x31b1, 0x20e5: 0x93fd, 0x20e6: 0x31b9, 0x20e7: 0x31c1, 0x20e8: 0x31c9, 0x20e9: 0x31d1, -+ 0x20ea: 0x31d9, 0x20eb: 0x941d, 0x20ec: 0x31e1, 0x20ed: 0x31e9, 0x20ee: 0x31f1, 0x20ef: 0x31f9, -+ 0x20f0: 0x3201, 0x20f1: 0x3209, 0x20f2: 0x943d, 0x20f3: 0x945d, 0x20f4: 0x3211, 0x20f5: 0x947d, -+ 0x20f6: 0x3219, 0x20f7: 0x949d, 0x20f8: 0x3221, 0x20f9: 0x3229, 0x20fa: 0x3231, 0x20fb: 0x94bd, -+ 0x20fc: 0x94dd, 0x20fd: 0x3239, 0x20fe: 0x94fd, 0x20ff: 0x3241, -+ // Block 0x84, offset 0x2100 -+ 0x2100: 0x951d, 0x2101: 0x3249, 0x2102: 0x3251, 0x2103: 0x3259, 0x2104: 0x3261, 0x2105: 0x3269, -+ 0x2106: 0x3271, 0x2107: 0x953d, 0x2108: 0x955d, 0x2109: 0x957d, 0x210a: 0x959d, 0x210b: 0x2ca1, -+ 0x210c: 0x3279, 0x210d: 0x3281, 0x210e: 0x3289, 0x210f: 0x3291, 0x2110: 0x3299, 0x2111: 0x32a1, -+ 0x2112: 0x32a9, 0x2113: 0x32b1, 0x2114: 0x32b9, 0x2115: 0x32c1, 0x2116: 0x32c9, 0x2117: 0x95bd, -+ 0x2118: 0x32d1, 0x2119: 0x32d9, 0x211a: 0x32e1, 0x211b: 0x32e9, 0x211c: 0x32f1, 0x211d: 0x32f9, -+ 0x211e: 0x3301, 0x211f: 0x3309, 0x2120: 0x3311, 0x2121: 0x3319, 0x2122: 0x3321, 0x2123: 0x3329, -+ 0x2124: 0x95dd, 0x2125: 0x95fd, 0x2126: 0x961d, 0x2127: 0x3331, 0x2128: 0x3339, 0x2129: 0x3341, -+ 0x212a: 0x3349, 0x212b: 0x963d, 0x212c: 0x3351, 0x212d: 0x965d, 0x212e: 0x3359, 0x212f: 0x3361, -+ 0x2130: 0x967d, 0x2131: 0x969d, 0x2132: 0x3369, 0x2133: 0x3371, 0x2134: 0x3379, 0x2135: 0x3381, -+ 0x2136: 0x3389, 0x2137: 0x3391, 0x2138: 0x3399, 0x2139: 0x33a1, 0x213a: 0x33a9, 0x213b: 0x33b1, -+ 0x213c: 0x33b9, 0x213d: 0x33c1, 0x213e: 0x33c9, 0x213f: 0x2040, -+ // Block 0x85, offset 0x2140 -+ 0x2140: 0x33d1, 0x2141: 0x33d9, 0x2142: 0x33e1, 0x2143: 0x33e9, 0x2144: 0x33f1, 0x2145: 0x96bd, -+ 0x2146: 0x33f9, 0x2147: 0x3401, 0x2148: 0x3409, 0x2149: 0x3411, 0x214a: 0x3419, 0x214b: 0x96dd, -+ 0x214c: 0x96fd, 0x214d: 0x3421, 0x214e: 0x3429, 0x214f: 0x3431, 0x2150: 0x3439, 0x2151: 0x3441, -+ 0x2152: 0x3449, 0x2153: 0x971d, 0x2154: 0x3451, 0x2155: 0x3459, 0x2156: 0x3461, 0x2157: 0x3469, -+ 0x2158: 0x973d, 0x2159: 0x975d, 0x215a: 0x3471, 0x215b: 0x3479, 0x215c: 0x3481, 0x215d: 0x977d, -+ 0x215e: 0x3489, 0x215f: 0x3491, 0x2160: 0x684d, 0x2161: 0x979d, 0x2162: 0x3499, 0x2163: 0x34a1, -+ 0x2164: 0x34a9, 0x2165: 0x97bd, 0x2166: 0x34b1, 0x2167: 0x34b9, 0x2168: 0x34c1, 0x2169: 0x34c9, -+ 0x216a: 0x34d1, 0x216b: 0x34d9, 0x216c: 0x34e1, 0x216d: 0x97dd, 0x216e: 0x34e9, 0x216f: 0x34f1, -+ 0x2170: 0x34f9, 0x2171: 0x97fd, 0x2172: 0x3501, 0x2173: 0x3509, 0x2174: 0x3511, 0x2175: 0x3519, -+ 0x2176: 0x7b6d, 0x2177: 0x981d, 0x2178: 0x3521, 0x2179: 0x3529, 0x217a: 0x3531, 0x217b: 0x983d, -+ 0x217c: 0x3539, 0x217d: 0x985d, 0x217e: 0x3541, 0x217f: 0x3541, -+ // Block 0x86, offset 0x2180 -+ 0x2180: 0x3549, 0x2181: 0x987d, 0x2182: 0x3551, 0x2183: 0x3559, 0x2184: 0x3561, 0x2185: 0x3569, -+ 0x2186: 0x3571, 0x2187: 0x3579, 0x2188: 0x3581, 0x2189: 0x989d, 0x218a: 0x3589, 0x218b: 0x3591, -+ 0x218c: 0x3599, 0x218d: 0x35a1, 0x218e: 0x35a9, 0x218f: 0x35b1, 0x2190: 0x98bd, 0x2191: 0x35b9, -+ 0x2192: 0x98dd, 0x2193: 0x98fd, 0x2194: 0x991d, 0x2195: 0x35c1, 0x2196: 0x35c9, 0x2197: 0x35d1, -+ 0x2198: 0x35d9, 0x2199: 0x35e1, 0x219a: 0x35e9, 0x219b: 0x35f1, 0x219c: 0x35f9, 0x219d: 0x993d, -+ 0x219e: 0x0040, 0x219f: 0x0040, 0x21a0: 0x0040, 0x21a1: 0x0040, 0x21a2: 0x0040, 0x21a3: 0x0040, -+ 0x21a4: 0x0040, 0x21a5: 0x0040, 0x21a6: 0x0040, 0x21a7: 0x0040, 0x21a8: 0x0040, 0x21a9: 0x0040, -+ 0x21aa: 0x0040, 0x21ab: 0x0040, 0x21ac: 0x0040, 0x21ad: 0x0040, 0x21ae: 0x0040, 0x21af: 0x0040, -+ 0x21b0: 0x0040, 0x21b1: 0x0040, 0x21b2: 0x0040, 0x21b3: 0x0040, 0x21b4: 0x0040, 0x21b5: 0x0040, -+ 0x21b6: 0x0040, 0x21b7: 0x0040, 0x21b8: 0x0040, 0x21b9: 0x0040, 0x21ba: 0x0040, 0x21bb: 0x0040, -+ 0x21bc: 0x0040, 0x21bd: 0x0040, 0x21be: 0x0040, 0x21bf: 0x0040, -+} -+ -+// idnaIndex: 39 blocks, 2496 entries, 4992 bytes -+// Block 0 is the zero block. -+var idnaIndex = [2496]uint16{ -+ // Block 0x0, offset 0x0 -+ // Block 0x1, offset 0x40 -+ // Block 0x2, offset 0x80 -+ // Block 0x3, offset 0xc0 -+ 0xc2: 0x01, 0xc3: 0x85, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x04, 0xc7: 0x05, -+ 0xc8: 0x06, 0xc9: 0x86, 0xca: 0x87, 0xcb: 0x07, 0xcc: 0x88, 0xcd: 0x08, 0xce: 0x09, 0xcf: 0x0a, -+ 0xd0: 0x89, 0xd1: 0x0b, 0xd2: 0x0c, 0xd3: 0x0d, 0xd4: 0x0e, 0xd5: 0x8a, 0xd6: 0x8b, 0xd7: 0x8c, -+ 0xd8: 0x0f, 0xd9: 0x10, 0xda: 0x8d, 0xdb: 0x11, 0xdc: 0x12, 0xdd: 0x8e, 0xde: 0x8f, 0xdf: 0x90, -+ 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06, 0xe5: 0x07, 0xe6: 0x07, 0xe7: 0x07, -+ 0xe8: 0x07, 0xe9: 0x07, 0xea: 0x08, 0xeb: 0x07, 0xec: 0x07, 0xed: 0x09, 0xee: 0x0a, 0xef: 0x0b, -+ 0xf0: 0x20, 0xf1: 0x21, 0xf2: 0x21, 0xf3: 0x23, 0xf4: 0x24, -+ // Block 0x4, offset 0x100 -+ 0x120: 0x91, 0x121: 0x13, 0x122: 0x14, 0x123: 0x92, 0x124: 0x93, 0x125: 0x15, 0x126: 0x16, 0x127: 0x17, -+ 0x128: 0x18, 0x129: 0x19, 0x12a: 0x1a, 0x12b: 0x1b, 0x12c: 0x1c, 0x12d: 0x1d, 0x12e: 0x1e, 0x12f: 0x94, -+ 0x130: 0x95, 0x131: 0x1f, 0x132: 0x20, 0x133: 0x21, 0x134: 0x96, 0x135: 0x22, 0x136: 0x97, 0x137: 0x98, -+ 0x138: 0x99, 0x139: 0x9a, 0x13a: 0x23, 0x13b: 0x9b, 0x13c: 0x9c, 0x13d: 0x24, 0x13e: 0x25, 0x13f: 0x9d, -+ // Block 0x5, offset 0x140 -+ 0x140: 0x9e, 0x141: 0x9f, 0x142: 0xa0, 0x143: 0xa1, 0x144: 0xa2, 0x145: 0xa3, 0x146: 0xa4, 0x147: 0xa5, -+ 0x148: 0xa6, 0x149: 0xa7, 0x14a: 0xa8, 0x14b: 0xa9, 0x14c: 0xaa, 0x14d: 0xab, 0x14e: 0xac, 0x14f: 0xad, -+ 0x150: 0xae, 0x151: 0xa6, 0x152: 0xa6, 0x153: 0xa6, 0x154: 0xa6, 0x155: 0xa6, 0x156: 0xa6, 0x157: 0xa6, -+ 0x158: 0xa6, 0x159: 0xaf, 0x15a: 0xb0, 0x15b: 0xb1, 0x15c: 0xb2, 0x15d: 0xb3, 0x15e: 0xb4, 0x15f: 0xb5, -+ 0x160: 0xb6, 0x161: 0xb7, 0x162: 0xb8, 0x163: 0xb9, 0x164: 0xba, 0x165: 0xbb, 0x166: 0xbc, 0x167: 0xbd, -+ 0x168: 0xbe, 0x169: 0xbf, 0x16a: 0xc0, 0x16b: 0xc1, 0x16c: 0xc2, 0x16d: 0xc3, 0x16e: 0xc4, 0x16f: 0xc5, -+ 0x170: 0xc6, 0x171: 0xc7, 0x172: 0xc8, 0x173: 0xc9, 0x174: 0x26, 0x175: 0x27, 0x176: 0x28, 0x177: 0x88, -+ 0x178: 0x29, 0x179: 0x29, 0x17a: 0x2a, 0x17b: 0x29, 0x17c: 0xca, 0x17d: 0x2b, 0x17e: 0x2c, 0x17f: 0x2d, -+ // Block 0x6, offset 0x180 -+ 0x180: 0x2e, 0x181: 0x2f, 0x182: 0x30, 0x183: 0xcb, 0x184: 0x31, 0x185: 0x32, 0x186: 0xcc, 0x187: 0xa2, -+ 0x188: 0xcd, 0x189: 0xce, 0x18a: 0xa2, 0x18b: 0xa2, 0x18c: 0xcf, 0x18d: 0xa2, 0x18e: 0xa2, 0x18f: 0xa2, -+ 0x190: 0xd0, 0x191: 0x33, 0x192: 0x34, 0x193: 0x35, 0x194: 0xa2, 0x195: 0xa2, 0x196: 0xa2, 0x197: 0xa2, -+ 0x198: 0xa2, 0x199: 0xa2, 0x19a: 0xa2, 0x19b: 0xa2, 0x19c: 0xa2, 0x19d: 0xa2, 0x19e: 0xa2, 0x19f: 0xa2, -+ 0x1a0: 0xa2, 0x1a1: 0xa2, 0x1a2: 0xa2, 0x1a3: 0xa2, 0x1a4: 0xa2, 0x1a5: 0xa2, 0x1a6: 0xa2, 0x1a7: 0xa2, -+ 0x1a8: 0xd1, 0x1a9: 0xd2, 0x1aa: 0xa2, 0x1ab: 0xd3, 0x1ac: 0xa2, 0x1ad: 0xd4, 0x1ae: 0xd5, 0x1af: 0xa2, -+ 0x1b0: 0xd6, 0x1b1: 0x36, 0x1b2: 0x29, 0x1b3: 0x37, 0x1b4: 0xd7, 0x1b5: 0xd8, 0x1b6: 0xd9, 0x1b7: 0xda, -+ 0x1b8: 0xdb, 0x1b9: 0xdc, 0x1ba: 0xdd, 0x1bb: 0xde, 0x1bc: 0xdf, 0x1bd: 0xe0, 0x1be: 0xe1, 0x1bf: 0x38, -+ // Block 0x7, offset 0x1c0 -+ 0x1c0: 0x39, 0x1c1: 0xe2, 0x1c2: 0xe3, 0x1c3: 0xe4, 0x1c4: 0xe5, 0x1c5: 0x3a, 0x1c6: 0x3b, 0x1c7: 0xe6, -+ 0x1c8: 0xe7, 0x1c9: 0x3c, 0x1ca: 0x3d, 0x1cb: 0x3e, 0x1cc: 0xe8, 0x1cd: 0xe9, 0x1ce: 0x3f, 0x1cf: 0x40, -+ 0x1d0: 0xa6, 0x1d1: 0xa6, 0x1d2: 0xa6, 0x1d3: 0xa6, 0x1d4: 0xa6, 0x1d5: 0xa6, 0x1d6: 0xa6, 0x1d7: 0xa6, -+ 0x1d8: 0xa6, 0x1d9: 0xa6, 0x1da: 0xa6, 0x1db: 0xa6, 0x1dc: 0xa6, 0x1dd: 0xa6, 0x1de: 0xa6, 0x1df: 0xa6, -+ 0x1e0: 0xa6, 0x1e1: 0xa6, 0x1e2: 0xa6, 0x1e3: 0xa6, 0x1e4: 0xa6, 0x1e5: 0xa6, 0x1e6: 0xa6, 0x1e7: 0xa6, -+ 0x1e8: 0xa6, 0x1e9: 0xa6, 0x1ea: 0xa6, 0x1eb: 0xa6, 0x1ec: 0xa6, 0x1ed: 0xa6, 0x1ee: 0xa6, 0x1ef: 0xa6, -+ 0x1f0: 0xa6, 0x1f1: 0xa6, 0x1f2: 0xa6, 0x1f3: 0xa6, 0x1f4: 0xa6, 0x1f5: 0xa6, 0x1f6: 0xa6, 0x1f7: 0xa6, -+ 0x1f8: 0xa6, 0x1f9: 0xa6, 0x1fa: 0xa6, 0x1fb: 0xa6, 0x1fc: 0xa6, 0x1fd: 0xa6, 0x1fe: 0xa6, 0x1ff: 0xa6, -+ // Block 0x8, offset 0x200 -+ 0x200: 0xa6, 0x201: 0xa6, 0x202: 0xa6, 0x203: 0xa6, 0x204: 0xa6, 0x205: 0xa6, 0x206: 0xa6, 0x207: 0xa6, -+ 0x208: 0xa6, 0x209: 0xa6, 0x20a: 0xa6, 0x20b: 0xa6, 0x20c: 0xa6, 0x20d: 0xa6, 0x20e: 0xa6, 0x20f: 0xa6, -+ 0x210: 0xa6, 0x211: 0xa6, 0x212: 0xa6, 0x213: 0xa6, 0x214: 0xa6, 0x215: 0xa6, 0x216: 0xa6, 0x217: 0xa6, -+ 0x218: 0xa6, 0x219: 0xa6, 0x21a: 0xa6, 0x21b: 0xa6, 0x21c: 0xa6, 0x21d: 0xa6, 0x21e: 0xa6, 0x21f: 0xa6, -+ 0x220: 0xa6, 0x221: 0xa6, 0x222: 0xa6, 0x223: 0xa6, 0x224: 0xa6, 0x225: 0xa6, 0x226: 0xa6, 0x227: 0xa6, -+ 0x228: 0xa6, 0x229: 0xa6, 0x22a: 0xa6, 0x22b: 0xa6, 0x22c: 0xa6, 0x22d: 0xa6, 0x22e: 0xa6, 0x22f: 0xa6, -+ 0x230: 0xa6, 0x231: 0xa6, 0x232: 0xa6, 0x233: 0xa6, 0x234: 0xa6, 0x235: 0xa6, 0x236: 0xa6, 0x237: 0xa2, -+ 0x238: 0xa6, 0x239: 0xa6, 0x23a: 0xa6, 0x23b: 0xa6, 0x23c: 0xa6, 0x23d: 0xa6, 0x23e: 0xa6, 0x23f: 0xa6, -+ // Block 0x9, offset 0x240 -+ 0x240: 0xa6, 0x241: 0xa6, 0x242: 0xa6, 0x243: 0xa6, 0x244: 0xa6, 0x245: 0xa6, 0x246: 0xa6, 0x247: 0xa6, -+ 0x248: 0xa6, 0x249: 0xa6, 0x24a: 0xa6, 0x24b: 0xa6, 0x24c: 0xa6, 0x24d: 0xa6, 0x24e: 0xa6, 0x24f: 0xa6, -+ 0x250: 0xa6, 0x251: 0xa6, 0x252: 0xa6, 0x253: 0xa6, 0x254: 0xa6, 0x255: 0xa6, 0x256: 0xa6, 0x257: 0xa6, -+ 0x258: 0xa6, 0x259: 0xa6, 0x25a: 0xa6, 0x25b: 0xa6, 0x25c: 0xa6, 0x25d: 0xa6, 0x25e: 0xa6, 0x25f: 0xa6, -+ 0x260: 0xa6, 0x261: 0xa6, 0x262: 0xa6, 0x263: 0xa6, 0x264: 0xa6, 0x265: 0xa6, 0x266: 0xa6, 0x267: 0xa6, -+ 0x268: 0xa6, 0x269: 0xa6, 0x26a: 0xa6, 0x26b: 0xa6, 0x26c: 0xa6, 0x26d: 0xa6, 0x26e: 0xa6, 0x26f: 0xa6, -+ 0x270: 0xa6, 0x271: 0xa6, 0x272: 0xa6, 0x273: 0xa6, 0x274: 0xa6, 0x275: 0xa6, 0x276: 0xa6, 0x277: 0xa6, -+ 0x278: 0xa6, 0x279: 0xa6, 0x27a: 0xa6, 0x27b: 0xa6, 0x27c: 0xa6, 0x27d: 0xa6, 0x27e: 0xa6, 0x27f: 0xa6, -+ // Block 0xa, offset 0x280 -+ 0x280: 0xa6, 0x281: 0xa6, 0x282: 0xa6, 0x283: 0xa6, 0x284: 0xa6, 0x285: 0xa6, 0x286: 0xa6, 0x287: 0xa6, -+ 0x288: 0xa6, 0x289: 0xa6, 0x28a: 0xa6, 0x28b: 0xa6, 0x28c: 0xa6, 0x28d: 0xa6, 0x28e: 0xa6, 0x28f: 0xa6, -+ 0x290: 0xa6, 0x291: 0xa6, 0x292: 0xea, 0x293: 0xeb, 0x294: 0xa6, 0x295: 0xa6, 0x296: 0xa6, 0x297: 0xa6, -+ 0x298: 0xec, 0x299: 0x41, 0x29a: 0x42, 0x29b: 0xed, 0x29c: 0x43, 0x29d: 0x44, 0x29e: 0x45, 0x29f: 0x46, -+ 0x2a0: 0xee, 0x2a1: 0xef, 0x2a2: 0xf0, 0x2a3: 0xf1, 0x2a4: 0xf2, 0x2a5: 0xf3, 0x2a6: 0xf4, 0x2a7: 0xf5, -+ 0x2a8: 0xf6, 0x2a9: 0xf7, 0x2aa: 0xf8, 0x2ab: 0xf9, 0x2ac: 0xfa, 0x2ad: 0xfb, 0x2ae: 0xfc, 0x2af: 0xfd, -+ 0x2b0: 0xa6, 0x2b1: 0xa6, 0x2b2: 0xa6, 0x2b3: 0xa6, 0x2b4: 0xa6, 0x2b5: 0xa6, 0x2b6: 0xa6, 0x2b7: 0xa6, -+ 0x2b8: 0xa6, 0x2b9: 0xa6, 0x2ba: 0xa6, 0x2bb: 0xa6, 0x2bc: 0xa6, 0x2bd: 0xa6, 0x2be: 0xa6, 0x2bf: 0xa6, -+ // Block 0xb, offset 0x2c0 -+ 0x2c0: 0xa6, 0x2c1: 0xa6, 0x2c2: 0xa6, 0x2c3: 0xa6, 0x2c4: 0xa6, 0x2c5: 0xa6, 0x2c6: 0xa6, 0x2c7: 0xa6, -+ 0x2c8: 0xa6, 0x2c9: 0xa6, 0x2ca: 0xa6, 0x2cb: 0xa6, 0x2cc: 0xa6, 0x2cd: 0xa6, 0x2ce: 0xa6, 0x2cf: 0xa6, -+ 0x2d0: 0xa6, 0x2d1: 0xa6, 0x2d2: 0xa6, 0x2d3: 0xa6, 0x2d4: 0xa6, 0x2d5: 0xa6, 0x2d6: 0xa6, 0x2d7: 0xa6, -+ 0x2d8: 0xa6, 0x2d9: 0xa6, 0x2da: 0xa6, 0x2db: 0xa6, 0x2dc: 0xa6, 0x2dd: 0xa6, 0x2de: 0xfe, 0x2df: 0xff, -+ // Block 0xc, offset 0x300 -+ 0x300: 0x100, 0x301: 0x100, 0x302: 0x100, 0x303: 0x100, 0x304: 0x100, 0x305: 0x100, 0x306: 0x100, 0x307: 0x100, -+ 0x308: 0x100, 0x309: 0x100, 0x30a: 0x100, 0x30b: 0x100, 0x30c: 0x100, 0x30d: 0x100, 0x30e: 0x100, 0x30f: 0x100, -+ 0x310: 0x100, 0x311: 0x100, 0x312: 0x100, 0x313: 0x100, 0x314: 0x100, 0x315: 0x100, 0x316: 0x100, 0x317: 0x100, -+ 0x318: 0x100, 0x319: 0x100, 0x31a: 0x100, 0x31b: 0x100, 0x31c: 0x100, 0x31d: 0x100, 0x31e: 0x100, 0x31f: 0x100, -+ 0x320: 0x100, 0x321: 0x100, 0x322: 0x100, 0x323: 0x100, 0x324: 0x100, 0x325: 0x100, 0x326: 0x100, 0x327: 0x100, -+ 0x328: 0x100, 0x329: 0x100, 0x32a: 0x100, 0x32b: 0x100, 0x32c: 0x100, 0x32d: 0x100, 0x32e: 0x100, 0x32f: 0x100, -+ 0x330: 0x100, 0x331: 0x100, 0x332: 0x100, 0x333: 0x100, 0x334: 0x100, 0x335: 0x100, 0x336: 0x100, 0x337: 0x100, -+ 0x338: 0x100, 0x339: 0x100, 0x33a: 0x100, 0x33b: 0x100, 0x33c: 0x100, 0x33d: 0x100, 0x33e: 0x100, 0x33f: 0x100, -+ // Block 0xd, offset 0x340 -+ 0x340: 0x100, 0x341: 0x100, 0x342: 0x100, 0x343: 0x100, 0x344: 0x100, 0x345: 0x100, 0x346: 0x100, 0x347: 0x100, -+ 0x348: 0x100, 0x349: 0x100, 0x34a: 0x100, 0x34b: 0x100, 0x34c: 0x100, 0x34d: 0x100, 0x34e: 0x100, 0x34f: 0x100, -+ 0x350: 0x100, 0x351: 0x100, 0x352: 0x100, 0x353: 0x100, 0x354: 0x100, 0x355: 0x100, 0x356: 0x100, 0x357: 0x100, -+ 0x358: 0x100, 0x359: 0x100, 0x35a: 0x100, 0x35b: 0x100, 0x35c: 0x100, 0x35d: 0x100, 0x35e: 0x100, 0x35f: 0x100, -+ 0x360: 0x100, 0x361: 0x100, 0x362: 0x100, 0x363: 0x100, 0x364: 0x101, 0x365: 0x102, 0x366: 0x103, 0x367: 0x104, -+ 0x368: 0x47, 0x369: 0x105, 0x36a: 0x106, 0x36b: 0x48, 0x36c: 0x49, 0x36d: 0x4a, 0x36e: 0x4b, 0x36f: 0x4c, -+ 0x370: 0x107, 0x371: 0x4d, 0x372: 0x4e, 0x373: 0x4f, 0x374: 0x50, 0x375: 0x51, 0x376: 0x108, 0x377: 0x52, -+ 0x378: 0x53, 0x379: 0x54, 0x37a: 0x55, 0x37b: 0x56, 0x37c: 0x57, 0x37d: 0x58, 0x37e: 0x59, 0x37f: 0x5a, -+ // Block 0xe, offset 0x380 -+ 0x380: 0x109, 0x381: 0x10a, 0x382: 0xa6, 0x383: 0x10b, 0x384: 0x10c, 0x385: 0xa2, 0x386: 0x10d, 0x387: 0x10e, -+ 0x388: 0x100, 0x389: 0x100, 0x38a: 0x10f, 0x38b: 0x110, 0x38c: 0x111, 0x38d: 0x112, 0x38e: 0x113, 0x38f: 0x114, -+ 0x390: 0x115, 0x391: 0xa6, 0x392: 0x116, 0x393: 0x117, 0x394: 0x118, 0x395: 0x5b, 0x396: 0x5c, 0x397: 0x100, -+ 0x398: 0xa6, 0x399: 0xa6, 0x39a: 0xa6, 0x39b: 0xa6, 0x39c: 0x119, 0x39d: 0x11a, 0x39e: 0x5d, 0x39f: 0x100, -+ 0x3a0: 0x11b, 0x3a1: 0x11c, 0x3a2: 0x11d, 0x3a3: 0x11e, 0x3a4: 0x11f, 0x3a5: 0x100, 0x3a6: 0x120, 0x3a7: 0x121, -+ 0x3a8: 0x122, 0x3a9: 0x123, 0x3aa: 0x124, 0x3ab: 0x5e, 0x3ac: 0x125, 0x3ad: 0x126, 0x3ae: 0x5f, 0x3af: 0x100, -+ 0x3b0: 0x127, 0x3b1: 0x128, 0x3b2: 0x129, 0x3b3: 0x12a, 0x3b4: 0x12b, 0x3b5: 0x100, 0x3b6: 0x100, 0x3b7: 0x100, -+ 0x3b8: 0x100, 0x3b9: 0x12c, 0x3ba: 0x12d, 0x3bb: 0x12e, 0x3bc: 0x12f, 0x3bd: 0x130, 0x3be: 0x131, 0x3bf: 0x132, -+ // Block 0xf, offset 0x3c0 -+ 0x3c0: 0x133, 0x3c1: 0x134, 0x3c2: 0x135, 0x3c3: 0x136, 0x3c4: 0x137, 0x3c5: 0x138, 0x3c6: 0x139, 0x3c7: 0x13a, -+ 0x3c8: 0x13b, 0x3c9: 0x13c, 0x3ca: 0x13d, 0x3cb: 0x13e, 0x3cc: 0x60, 0x3cd: 0x61, 0x3ce: 0x100, 0x3cf: 0x100, -+ 0x3d0: 0x13f, 0x3d1: 0x140, 0x3d2: 0x141, 0x3d3: 0x142, 0x3d4: 0x100, 0x3d5: 0x100, 0x3d6: 0x143, 0x3d7: 0x144, -+ 0x3d8: 0x145, 0x3d9: 0x146, 0x3da: 0x147, 0x3db: 0x148, 0x3dc: 0x149, 0x3dd: 0x14a, 0x3de: 0x100, 0x3df: 0x100, -+ 0x3e0: 0x14b, 0x3e1: 0x100, 0x3e2: 0x14c, 0x3e3: 0x14d, 0x3e4: 0x62, 0x3e5: 0x14e, 0x3e6: 0x14f, 0x3e7: 0x150, -+ 0x3e8: 0x151, 0x3e9: 0x152, 0x3ea: 0x153, 0x3eb: 0x154, 0x3ec: 0x155, 0x3ed: 0x100, 0x3ee: 0x100, 0x3ef: 0x100, -+ 0x3f0: 0x156, 0x3f1: 0x157, 0x3f2: 0x158, 0x3f3: 0x100, 0x3f4: 0x159, 0x3f5: 0x15a, 0x3f6: 0x15b, 0x3f7: 0x100, -+ 0x3f8: 0x100, 0x3f9: 0x100, 0x3fa: 0x100, 0x3fb: 0x15c, 0x3fc: 0x15d, 0x3fd: 0x15e, 0x3fe: 0x15f, 0x3ff: 0x160, -+ // Block 0x10, offset 0x400 -+ 0x400: 0xa6, 0x401: 0xa6, 0x402: 0xa6, 0x403: 0xa6, 0x404: 0xa6, 0x405: 0xa6, 0x406: 0xa6, 0x407: 0xa6, -+ 0x408: 0xa6, 0x409: 0xa6, 0x40a: 0xa6, 0x40b: 0xa6, 0x40c: 0xa6, 0x40d: 0xa6, 0x40e: 0x161, 0x40f: 0x100, -+ 0x410: 0xa2, 0x411: 0x162, 0x412: 0xa6, 0x413: 0xa6, 0x414: 0xa6, 0x415: 0x163, 0x416: 0x100, 0x417: 0x100, -+ 0x418: 0x100, 0x419: 0x100, 0x41a: 0x100, 0x41b: 0x100, 0x41c: 0x100, 0x41d: 0x100, 0x41e: 0x100, 0x41f: 0x100, -+ 0x420: 0x100, 0x421: 0x100, 0x422: 0x100, 0x423: 0x100, 0x424: 0x100, 0x425: 0x100, 0x426: 0x100, 0x427: 0x100, -+ 0x428: 0x100, 0x429: 0x100, 0x42a: 0x100, 0x42b: 0x100, 0x42c: 0x100, 0x42d: 0x100, 0x42e: 0x100, 0x42f: 0x100, -+ 0x430: 0x100, 0x431: 0x100, 0x432: 0x100, 0x433: 0x100, 0x434: 0x100, 0x435: 0x100, 0x436: 0x100, 0x437: 0x100, -+ 0x438: 0x100, 0x439: 0x100, 0x43a: 0x100, 0x43b: 0x100, 0x43c: 0x100, 0x43d: 0x100, 0x43e: 0x164, 0x43f: 0x165, -+ // Block 0x11, offset 0x440 -+ 0x440: 0xa6, 0x441: 0xa6, 0x442: 0xa6, 0x443: 0xa6, 0x444: 0xa6, 0x445: 0xa6, 0x446: 0xa6, 0x447: 0xa6, -+ 0x448: 0xa6, 0x449: 0xa6, 0x44a: 0xa6, 0x44b: 0xa6, 0x44c: 0xa6, 0x44d: 0xa6, 0x44e: 0xa6, 0x44f: 0xa6, -+ 0x450: 0x166, 0x451: 0x167, 0x452: 0x100, 0x453: 0x100, 0x454: 0x100, 0x455: 0x100, 0x456: 0x100, 0x457: 0x100, -+ 0x458: 0x100, 0x459: 0x100, 0x45a: 0x100, 0x45b: 0x100, 0x45c: 0x100, 0x45d: 0x100, 0x45e: 0x100, 0x45f: 0x100, -+ 0x460: 0x100, 0x461: 0x100, 0x462: 0x100, 0x463: 0x100, 0x464: 0x100, 0x465: 0x100, 0x466: 0x100, 0x467: 0x100, -+ 0x468: 0x100, 0x469: 0x100, 0x46a: 0x100, 0x46b: 0x100, 0x46c: 0x100, 0x46d: 0x100, 0x46e: 0x100, 0x46f: 0x100, -+ 0x470: 0x100, 0x471: 0x100, 0x472: 0x100, 0x473: 0x100, 0x474: 0x100, 0x475: 0x100, 0x476: 0x100, 0x477: 0x100, -+ 0x478: 0x100, 0x479: 0x100, 0x47a: 0x100, 0x47b: 0x100, 0x47c: 0x100, 0x47d: 0x100, 0x47e: 0x100, 0x47f: 0x100, -+ // Block 0x12, offset 0x480 -+ 0x480: 0x100, 0x481: 0x100, 0x482: 0x100, 0x483: 0x100, 0x484: 0x100, 0x485: 0x100, 0x486: 0x100, 0x487: 0x100, -+ 0x488: 0x100, 0x489: 0x100, 0x48a: 0x100, 0x48b: 0x100, 0x48c: 0x100, 0x48d: 0x100, 0x48e: 0x100, 0x48f: 0x100, -+ 0x490: 0xa6, 0x491: 0xa6, 0x492: 0xa6, 0x493: 0xa6, 0x494: 0xa6, 0x495: 0xa6, 0x496: 0xa6, 0x497: 0xa6, -+ 0x498: 0xa6, 0x499: 0x14a, 0x49a: 0x100, 0x49b: 0x100, 0x49c: 0x100, 0x49d: 0x100, 0x49e: 0x100, 0x49f: 0x100, -+ 0x4a0: 0x100, 0x4a1: 0x100, 0x4a2: 0x100, 0x4a3: 0x100, 0x4a4: 0x100, 0x4a5: 0x100, 0x4a6: 0x100, 0x4a7: 0x100, -+ 0x4a8: 0x100, 0x4a9: 0x100, 0x4aa: 0x100, 0x4ab: 0x100, 0x4ac: 0x100, 0x4ad: 0x100, 0x4ae: 0x100, 0x4af: 0x100, -+ 0x4b0: 0x100, 0x4b1: 0x100, 0x4b2: 0x100, 0x4b3: 0x100, 0x4b4: 0x100, 0x4b5: 0x100, 0x4b6: 0x100, 0x4b7: 0x100, -+ 0x4b8: 0x100, 0x4b9: 0x100, 0x4ba: 0x100, 0x4bb: 0x100, 0x4bc: 0x100, 0x4bd: 0x100, 0x4be: 0x100, 0x4bf: 0x100, -+ // Block 0x13, offset 0x4c0 -+ 0x4c0: 0x100, 0x4c1: 0x100, 0x4c2: 0x100, 0x4c3: 0x100, 0x4c4: 0x100, 0x4c5: 0x100, 0x4c6: 0x100, 0x4c7: 0x100, -+ 0x4c8: 0x100, 0x4c9: 0x100, 0x4ca: 0x100, 0x4cb: 0x100, 0x4cc: 0x100, 0x4cd: 0x100, 0x4ce: 0x100, 0x4cf: 0x100, -+ 0x4d0: 0x100, 0x4d1: 0x100, 0x4d2: 0x100, 0x4d3: 0x100, 0x4d4: 0x100, 0x4d5: 0x100, 0x4d6: 0x100, 0x4d7: 0x100, -+ 0x4d8: 0x100, 0x4d9: 0x100, 0x4da: 0x100, 0x4db: 0x100, 0x4dc: 0x100, 0x4dd: 0x100, 0x4de: 0x100, 0x4df: 0x100, -+ 0x4e0: 0xa6, 0x4e1: 0xa6, 0x4e2: 0xa6, 0x4e3: 0xa6, 0x4e4: 0xa6, 0x4e5: 0xa6, 0x4e6: 0xa6, 0x4e7: 0xa6, -+ 0x4e8: 0x154, 0x4e9: 0x168, 0x4ea: 0x169, 0x4eb: 0x16a, 0x4ec: 0x16b, 0x4ed: 0x16c, 0x4ee: 0x16d, 0x4ef: 0x100, -+ 0x4f0: 0x100, 0x4f1: 0x100, 0x4f2: 0x100, 0x4f3: 0x100, 0x4f4: 0x100, 0x4f5: 0x100, 0x4f6: 0x100, 0x4f7: 0x100, -+ 0x4f8: 0x100, 0x4f9: 0x16e, 0x4fa: 0x16f, 0x4fb: 0x100, 0x4fc: 0xa6, 0x4fd: 0x170, 0x4fe: 0x171, 0x4ff: 0x172, -+ // Block 0x14, offset 0x500 -+ 0x500: 0xa6, 0x501: 0xa6, 0x502: 0xa6, 0x503: 0xa6, 0x504: 0xa6, 0x505: 0xa6, 0x506: 0xa6, 0x507: 0xa6, -+ 0x508: 0xa6, 0x509: 0xa6, 0x50a: 0xa6, 0x50b: 0xa6, 0x50c: 0xa6, 0x50d: 0xa6, 0x50e: 0xa6, 0x50f: 0xa6, -+ 0x510: 0xa6, 0x511: 0xa6, 0x512: 0xa6, 0x513: 0xa6, 0x514: 0xa6, 0x515: 0xa6, 0x516: 0xa6, 0x517: 0xa6, -+ 0x518: 0xa6, 0x519: 0xa6, 0x51a: 0xa6, 0x51b: 0xa6, 0x51c: 0xa6, 0x51d: 0xa6, 0x51e: 0xa6, 0x51f: 0x173, -+ 0x520: 0xa6, 0x521: 0xa6, 0x522: 0xa6, 0x523: 0xa6, 0x524: 0xa6, 0x525: 0xa6, 0x526: 0xa6, 0x527: 0xa6, -+ 0x528: 0xa6, 0x529: 0xa6, 0x52a: 0xa6, 0x52b: 0xa6, 0x52c: 0xa6, 0x52d: 0xa6, 0x52e: 0xa6, 0x52f: 0xa6, -+ 0x530: 0xa6, 0x531: 0xa6, 0x532: 0xa6, 0x533: 0x174, 0x534: 0x175, 0x535: 0x100, 0x536: 0x100, 0x537: 0x100, -+ 0x538: 0x100, 0x539: 0x100, 0x53a: 0x100, 0x53b: 0x100, 0x53c: 0x100, 0x53d: 0x100, 0x53e: 0x100, 0x53f: 0x100, -+ // Block 0x15, offset 0x540 -+ 0x540: 0x100, 0x541: 0x100, 0x542: 0x100, 0x543: 0x100, 0x544: 0x100, 0x545: 0x100, 0x546: 0x100, 0x547: 0x100, -+ 0x548: 0x100, 0x549: 0x100, 0x54a: 0x100, 0x54b: 0x100, 0x54c: 0x100, 0x54d: 0x100, 0x54e: 0x100, 0x54f: 0x100, -+ 0x550: 0x100, 0x551: 0x100, 0x552: 0x100, 0x553: 0x100, 0x554: 0x100, 0x555: 0x100, 0x556: 0x100, 0x557: 0x100, -+ 0x558: 0x100, 0x559: 0x100, 0x55a: 0x100, 0x55b: 0x100, 0x55c: 0x100, 0x55d: 0x100, 0x55e: 0x100, 0x55f: 0x100, -+ 0x560: 0x100, 0x561: 0x100, 0x562: 0x100, 0x563: 0x100, 0x564: 0x100, 0x565: 0x100, 0x566: 0x100, 0x567: 0x100, -+ 0x568: 0x100, 0x569: 0x100, 0x56a: 0x100, 0x56b: 0x100, 0x56c: 0x100, 0x56d: 0x100, 0x56e: 0x100, 0x56f: 0x100, -+ 0x570: 0x100, 0x571: 0x100, 0x572: 0x100, 0x573: 0x100, 0x574: 0x100, 0x575: 0x100, 0x576: 0x100, 0x577: 0x100, -+ 0x578: 0x100, 0x579: 0x100, 0x57a: 0x100, 0x57b: 0x100, 0x57c: 0x100, 0x57d: 0x100, 0x57e: 0x100, 0x57f: 0x176, -+ // Block 0x16, offset 0x580 -+ 0x580: 0xa6, 0x581: 0xa6, 0x582: 0xa6, 0x583: 0xa6, 0x584: 0x177, 0x585: 0x178, 0x586: 0xa6, 0x587: 0xa6, -+ 0x588: 0xa6, 0x589: 0xa6, 0x58a: 0xa6, 0x58b: 0x179, 0x58c: 0x100, 0x58d: 0x100, 0x58e: 0x100, 0x58f: 0x100, -+ 0x590: 0x100, 0x591: 0x100, 0x592: 0x100, 0x593: 0x100, 0x594: 0x100, 0x595: 0x100, 0x596: 0x100, 0x597: 0x100, -+ 0x598: 0x100, 0x599: 0x100, 0x59a: 0x100, 0x59b: 0x100, 0x59c: 0x100, 0x59d: 0x100, 0x59e: 0x100, 0x59f: 0x100, -+ 0x5a0: 0x100, 0x5a1: 0x100, 0x5a2: 0x100, 0x5a3: 0x100, 0x5a4: 0x100, 0x5a5: 0x100, 0x5a6: 0x100, 0x5a7: 0x100, -+ 0x5a8: 0x100, 0x5a9: 0x100, 0x5aa: 0x100, 0x5ab: 0x100, 0x5ac: 0x100, 0x5ad: 0x100, 0x5ae: 0x100, 0x5af: 0x100, -+ 0x5b0: 0xa6, 0x5b1: 0x17a, 0x5b2: 0x17b, 0x5b3: 0x100, 0x5b4: 0x100, 0x5b5: 0x100, 0x5b6: 0x100, 0x5b7: 0x100, -+ 0x5b8: 0x100, 0x5b9: 0x100, 0x5ba: 0x100, 0x5bb: 0x100, 0x5bc: 0x100, 0x5bd: 0x100, 0x5be: 0x100, 0x5bf: 0x100, -+ // Block 0x17, offset 0x5c0 -+ 0x5c0: 0x100, 0x5c1: 0x100, 0x5c2: 0x100, 0x5c3: 0x100, 0x5c4: 0x100, 0x5c5: 0x100, 0x5c6: 0x100, 0x5c7: 0x100, -+ 0x5c8: 0x100, 0x5c9: 0x100, 0x5ca: 0x100, 0x5cb: 0x100, 0x5cc: 0x100, 0x5cd: 0x100, 0x5ce: 0x100, 0x5cf: 0x100, -+ 0x5d0: 0x100, 0x5d1: 0x100, 0x5d2: 0x100, 0x5d3: 0x100, 0x5d4: 0x100, 0x5d5: 0x100, 0x5d6: 0x100, 0x5d7: 0x100, -+ 0x5d8: 0x100, 0x5d9: 0x100, 0x5da: 0x100, 0x5db: 0x100, 0x5dc: 0x100, 0x5dd: 0x100, 0x5de: 0x100, 0x5df: 0x100, -+ 0x5e0: 0x100, 0x5e1: 0x100, 0x5e2: 0x100, 0x5e3: 0x100, 0x5e4: 0x100, 0x5e5: 0x100, 0x5e6: 0x100, 0x5e7: 0x100, -+ 0x5e8: 0x100, 0x5e9: 0x100, 0x5ea: 0x100, 0x5eb: 0x100, 0x5ec: 0x100, 0x5ed: 0x100, 0x5ee: 0x100, 0x5ef: 0x100, -+ 0x5f0: 0x100, 0x5f1: 0x100, 0x5f2: 0x100, 0x5f3: 0x100, 0x5f4: 0x100, 0x5f5: 0x100, 0x5f6: 0x100, 0x5f7: 0x100, -+ 0x5f8: 0x100, 0x5f9: 0x100, 0x5fa: 0x100, 0x5fb: 0x100, 0x5fc: 0x17c, 0x5fd: 0x17d, 0x5fe: 0xa2, 0x5ff: 0x17e, -+ // Block 0x18, offset 0x600 -+ 0x600: 0xa2, 0x601: 0xa2, 0x602: 0xa2, 0x603: 0x17f, 0x604: 0x180, 0x605: 0x181, 0x606: 0x182, 0x607: 0x183, -+ 0x608: 0xa2, 0x609: 0x184, 0x60a: 0x100, 0x60b: 0x185, 0x60c: 0xa2, 0x60d: 0x186, 0x60e: 0x100, 0x60f: 0x100, -+ 0x610: 0x63, 0x611: 0x64, 0x612: 0x65, 0x613: 0x66, 0x614: 0x67, 0x615: 0x68, 0x616: 0x69, 0x617: 0x6a, -+ 0x618: 0x6b, 0x619: 0x6c, 0x61a: 0x6d, 0x61b: 0x6e, 0x61c: 0x6f, 0x61d: 0x70, 0x61e: 0x71, 0x61f: 0x72, -+ 0x620: 0xa2, 0x621: 0xa2, 0x622: 0xa2, 0x623: 0xa2, 0x624: 0xa2, 0x625: 0xa2, 0x626: 0xa2, 0x627: 0xa2, -+ 0x628: 0x187, 0x629: 0x188, 0x62a: 0x189, 0x62b: 0x100, 0x62c: 0x100, 0x62d: 0x100, 0x62e: 0x100, 0x62f: 0x100, -+ 0x630: 0x100, 0x631: 0x100, 0x632: 0x100, 0x633: 0x100, 0x634: 0x100, 0x635: 0x100, 0x636: 0x100, 0x637: 0x100, -+ 0x638: 0x100, 0x639: 0x100, 0x63a: 0x100, 0x63b: 0x100, 0x63c: 0x18a, 0x63d: 0x100, 0x63e: 0x100, 0x63f: 0x100, -+ // Block 0x19, offset 0x640 -+ 0x640: 0x73, 0x641: 0x74, 0x642: 0x18b, 0x643: 0x100, 0x644: 0x18c, 0x645: 0x18d, 0x646: 0x100, 0x647: 0x100, -+ 0x648: 0x100, 0x649: 0x100, 0x64a: 0x18e, 0x64b: 0x18f, 0x64c: 0x100, 0x64d: 0x100, 0x64e: 0x100, 0x64f: 0x100, -+ 0x650: 0x100, 0x651: 0x100, 0x652: 0x100, 0x653: 0x190, 0x654: 0x100, 0x655: 0x100, 0x656: 0x100, 0x657: 0x100, -+ 0x658: 0x100, 0x659: 0x100, 0x65a: 0x100, 0x65b: 0x100, 0x65c: 0x100, 0x65d: 0x100, 0x65e: 0x100, 0x65f: 0x191, -+ 0x660: 0x127, 0x661: 0x127, 0x662: 0x127, 0x663: 0x192, 0x664: 0x75, 0x665: 0x193, 0x666: 0x100, 0x667: 0x100, -+ 0x668: 0x100, 0x669: 0x100, 0x66a: 0x100, 0x66b: 0x100, 0x66c: 0x100, 0x66d: 0x100, 0x66e: 0x100, 0x66f: 0x100, -+ 0x670: 0x100, 0x671: 0x194, 0x672: 0x195, 0x673: 0x100, 0x674: 0x196, 0x675: 0x100, 0x676: 0x100, 0x677: 0x100, -+ 0x678: 0x76, 0x679: 0x77, 0x67a: 0x78, 0x67b: 0x197, 0x67c: 0x100, 0x67d: 0x100, 0x67e: 0x100, 0x67f: 0x100, -+ // Block 0x1a, offset 0x680 -+ 0x680: 0x198, 0x681: 0xa2, 0x682: 0x199, 0x683: 0x19a, 0x684: 0x79, 0x685: 0x7a, 0x686: 0x19b, 0x687: 0x19c, -+ 0x688: 0x7b, 0x689: 0x19d, 0x68a: 0x100, 0x68b: 0x100, 0x68c: 0xa2, 0x68d: 0xa2, 0x68e: 0xa2, 0x68f: 0xa2, -+ 0x690: 0xa2, 0x691: 0xa2, 0x692: 0xa2, 0x693: 0xa2, 0x694: 0xa2, 0x695: 0xa2, 0x696: 0xa2, 0x697: 0xa2, -+ 0x698: 0xa2, 0x699: 0xa2, 0x69a: 0xa2, 0x69b: 0x19e, 0x69c: 0xa2, 0x69d: 0x19f, 0x69e: 0xa2, 0x69f: 0x1a0, -+ 0x6a0: 0x1a1, 0x6a1: 0x1a2, 0x6a2: 0x1a3, 0x6a3: 0x100, 0x6a4: 0xa2, 0x6a5: 0xa2, 0x6a6: 0xa2, 0x6a7: 0xa2, -+ 0x6a8: 0xa2, 0x6a9: 0x1a4, 0x6aa: 0x1a5, 0x6ab: 0x1a6, 0x6ac: 0xa2, 0x6ad: 0xa2, 0x6ae: 0x1a7, 0x6af: 0x1a8, -+ 0x6b0: 0x100, 0x6b1: 0x100, 0x6b2: 0x100, 0x6b3: 0x100, 0x6b4: 0x100, 0x6b5: 0x100, 0x6b6: 0x100, 0x6b7: 0x100, -+ 0x6b8: 0x100, 0x6b9: 0x100, 0x6ba: 0x100, 0x6bb: 0x100, 0x6bc: 0x100, 0x6bd: 0x100, 0x6be: 0x100, 0x6bf: 0x100, -+ // Block 0x1b, offset 0x6c0 -+ 0x6c0: 0xa6, 0x6c1: 0xa6, 0x6c2: 0xa6, 0x6c3: 0xa6, 0x6c4: 0xa6, 0x6c5: 0xa6, 0x6c6: 0xa6, 0x6c7: 0xa6, -+ 0x6c8: 0xa6, 0x6c9: 0xa6, 0x6ca: 0xa6, 0x6cb: 0xa6, 0x6cc: 0xa6, 0x6cd: 0xa6, 0x6ce: 0xa6, 0x6cf: 0xa6, -+ 0x6d0: 0xa6, 0x6d1: 0xa6, 0x6d2: 0xa6, 0x6d3: 0xa6, 0x6d4: 0xa6, 0x6d5: 0xa6, 0x6d6: 0xa6, 0x6d7: 0xa6, -+ 0x6d8: 0xa6, 0x6d9: 0xa6, 0x6da: 0xa6, 0x6db: 0x1a9, 0x6dc: 0xa6, 0x6dd: 0xa6, 0x6de: 0xa6, 0x6df: 0xa6, -+ 0x6e0: 0xa6, 0x6e1: 0xa6, 0x6e2: 0xa6, 0x6e3: 0xa6, 0x6e4: 0xa6, 0x6e5: 0xa6, 0x6e6: 0xa6, 0x6e7: 0xa6, -+ 0x6e8: 0xa6, 0x6e9: 0xa6, 0x6ea: 0xa6, 0x6eb: 0xa6, 0x6ec: 0xa6, 0x6ed: 0xa6, 0x6ee: 0xa6, 0x6ef: 0xa6, -+ 0x6f0: 0xa6, 0x6f1: 0xa6, 0x6f2: 0xa6, 0x6f3: 0xa6, 0x6f4: 0xa6, 0x6f5: 0xa6, 0x6f6: 0xa6, 0x6f7: 0xa6, -+ 0x6f8: 0xa6, 0x6f9: 0xa6, 0x6fa: 0xa6, 0x6fb: 0xa6, 0x6fc: 0xa6, 0x6fd: 0xa6, 0x6fe: 0xa6, 0x6ff: 0xa6, -+ // Block 0x1c, offset 0x700 -+ 0x700: 0xa6, 0x701: 0xa6, 0x702: 0xa6, 0x703: 0xa6, 0x704: 0xa6, 0x705: 0xa6, 0x706: 0xa6, 0x707: 0xa6, -+ 0x708: 0xa6, 0x709: 0xa6, 0x70a: 0xa6, 0x70b: 0xa6, 0x70c: 0xa6, 0x70d: 0xa6, 0x70e: 0xa6, 0x70f: 0xa6, -+ 0x710: 0xa6, 0x711: 0xa6, 0x712: 0xa6, 0x713: 0xa6, 0x714: 0xa6, 0x715: 0xa6, 0x716: 0xa6, 0x717: 0xa6, -+ 0x718: 0xa6, 0x719: 0xa6, 0x71a: 0xa6, 0x71b: 0xa6, 0x71c: 0x1aa, 0x71d: 0xa6, 0x71e: 0xa6, 0x71f: 0xa6, -+ 0x720: 0x1ab, 0x721: 0xa6, 0x722: 0xa6, 0x723: 0xa6, 0x724: 0xa6, 0x725: 0xa6, 0x726: 0xa6, 0x727: 0xa6, -+ 0x728: 0xa6, 0x729: 0xa6, 0x72a: 0xa6, 0x72b: 0xa6, 0x72c: 0xa6, 0x72d: 0xa6, 0x72e: 0xa6, 0x72f: 0xa6, -+ 0x730: 0xa6, 0x731: 0xa6, 0x732: 0xa6, 0x733: 0xa6, 0x734: 0xa6, 0x735: 0xa6, 0x736: 0xa6, 0x737: 0xa6, -+ 0x738: 0xa6, 0x739: 0xa6, 0x73a: 0xa6, 0x73b: 0xa6, 0x73c: 0xa6, 0x73d: 0xa6, 0x73e: 0xa6, 0x73f: 0xa6, -+ // Block 0x1d, offset 0x740 -+ 0x740: 0xa6, 0x741: 0xa6, 0x742: 0xa6, 0x743: 0xa6, 0x744: 0xa6, 0x745: 0xa6, 0x746: 0xa6, 0x747: 0xa6, -+ 0x748: 0xa6, 0x749: 0xa6, 0x74a: 0xa6, 0x74b: 0xa6, 0x74c: 0xa6, 0x74d: 0xa6, 0x74e: 0xa6, 0x74f: 0xa6, -+ 0x750: 0xa6, 0x751: 0xa6, 0x752: 0xa6, 0x753: 0xa6, 0x754: 0xa6, 0x755: 0xa6, 0x756: 0xa6, 0x757: 0xa6, -+ 0x758: 0xa6, 0x759: 0xa6, 0x75a: 0xa6, 0x75b: 0xa6, 0x75c: 0xa6, 0x75d: 0xa6, 0x75e: 0xa6, 0x75f: 0xa6, -+ 0x760: 0xa6, 0x761: 0xa6, 0x762: 0xa6, 0x763: 0xa6, 0x764: 0xa6, 0x765: 0xa6, 0x766: 0xa6, 0x767: 0xa6, -+ 0x768: 0xa6, 0x769: 0xa6, 0x76a: 0xa6, 0x76b: 0xa6, 0x76c: 0xa6, 0x76d: 0xa6, 0x76e: 0xa6, 0x76f: 0xa6, -+ 0x770: 0xa6, 0x771: 0xa6, 0x772: 0xa6, 0x773: 0xa6, 0x774: 0xa6, 0x775: 0xa6, 0x776: 0xa6, 0x777: 0xa6, -+ 0x778: 0xa6, 0x779: 0xa6, 0x77a: 0x1ac, 0x77b: 0xa6, 0x77c: 0xa6, 0x77d: 0xa6, 0x77e: 0xa6, 0x77f: 0xa6, -+ // Block 0x1e, offset 0x780 -+ 0x780: 0xa6, 0x781: 0xa6, 0x782: 0xa6, 0x783: 0xa6, 0x784: 0xa6, 0x785: 0xa6, 0x786: 0xa6, 0x787: 0xa6, -+ 0x788: 0xa6, 0x789: 0xa6, 0x78a: 0xa6, 0x78b: 0xa6, 0x78c: 0xa6, 0x78d: 0xa6, 0x78e: 0xa6, 0x78f: 0xa6, -+ 0x790: 0xa6, 0x791: 0xa6, 0x792: 0xa6, 0x793: 0xa6, 0x794: 0xa6, 0x795: 0xa6, 0x796: 0xa6, 0x797: 0xa6, -+ 0x798: 0xa6, 0x799: 0xa6, 0x79a: 0xa6, 0x79b: 0xa6, 0x79c: 0xa6, 0x79d: 0xa6, 0x79e: 0xa6, 0x79f: 0xa6, -+ 0x7a0: 0xa6, 0x7a1: 0xa6, 0x7a2: 0xa6, 0x7a3: 0xa6, 0x7a4: 0xa6, 0x7a5: 0xa6, 0x7a6: 0xa6, 0x7a7: 0xa6, -+ 0x7a8: 0xa6, 0x7a9: 0xa6, 0x7aa: 0xa6, 0x7ab: 0xa6, 0x7ac: 0xa6, 0x7ad: 0xa6, 0x7ae: 0xa6, 0x7af: 0x1ad, -+ 0x7b0: 0x100, 0x7b1: 0x100, 0x7b2: 0x100, 0x7b3: 0x100, 0x7b4: 0x100, 0x7b5: 0x100, 0x7b6: 0x100, 0x7b7: 0x100, -+ 0x7b8: 0x100, 0x7b9: 0x100, 0x7ba: 0x100, 0x7bb: 0x100, 0x7bc: 0x100, 0x7bd: 0x100, 0x7be: 0x100, 0x7bf: 0x100, -+ // Block 0x1f, offset 0x7c0 -+ 0x7c0: 0x100, 0x7c1: 0x100, 0x7c2: 0x100, 0x7c3: 0x100, 0x7c4: 0x100, 0x7c5: 0x100, 0x7c6: 0x100, 0x7c7: 0x100, -+ 0x7c8: 0x100, 0x7c9: 0x100, 0x7ca: 0x100, 0x7cb: 0x100, 0x7cc: 0x100, 0x7cd: 0x100, 0x7ce: 0x100, 0x7cf: 0x100, -+ 0x7d0: 0x100, 0x7d1: 0x100, 0x7d2: 0x100, 0x7d3: 0x100, 0x7d4: 0x100, 0x7d5: 0x100, 0x7d6: 0x100, 0x7d7: 0x100, -+ 0x7d8: 0x100, 0x7d9: 0x100, 0x7da: 0x100, 0x7db: 0x100, 0x7dc: 0x100, 0x7dd: 0x100, 0x7de: 0x100, 0x7df: 0x100, -+ 0x7e0: 0x7c, 0x7e1: 0x7d, 0x7e2: 0x7e, 0x7e3: 0x7f, 0x7e4: 0x80, 0x7e5: 0x81, 0x7e6: 0x82, 0x7e7: 0x83, -+ 0x7e8: 0x84, 0x7e9: 0x100, 0x7ea: 0x100, 0x7eb: 0x100, 0x7ec: 0x100, 0x7ed: 0x100, 0x7ee: 0x100, 0x7ef: 0x100, -+ 0x7f0: 0x100, 0x7f1: 0x100, 0x7f2: 0x100, 0x7f3: 0x100, 0x7f4: 0x100, 0x7f5: 0x100, 0x7f6: 0x100, 0x7f7: 0x100, -+ 0x7f8: 0x100, 0x7f9: 0x100, 0x7fa: 0x100, 0x7fb: 0x100, 0x7fc: 0x100, 0x7fd: 0x100, 0x7fe: 0x100, 0x7ff: 0x100, -+ // Block 0x20, offset 0x800 -+ 0x800: 0xa6, 0x801: 0xa6, 0x802: 0xa6, 0x803: 0xa6, 0x804: 0xa6, 0x805: 0xa6, 0x806: 0xa6, 0x807: 0xa6, -+ 0x808: 0xa6, 0x809: 0xa6, 0x80a: 0xa6, 0x80b: 0xa6, 0x80c: 0xa6, 0x80d: 0x1ae, 0x80e: 0xa6, 0x80f: 0xa6, -+ 0x810: 0xa6, 0x811: 0xa6, 0x812: 0xa6, 0x813: 0xa6, 0x814: 0xa6, 0x815: 0xa6, 0x816: 0xa6, 0x817: 0xa6, -+ 0x818: 0xa6, 0x819: 0xa6, 0x81a: 0xa6, 0x81b: 0xa6, 0x81c: 0xa6, 0x81d: 0xa6, 0x81e: 0xa6, 0x81f: 0xa6, -+ 0x820: 0xa6, 0x821: 0xa6, 0x822: 0xa6, 0x823: 0xa6, 0x824: 0xa6, 0x825: 0xa6, 0x826: 0xa6, 0x827: 0xa6, -+ 0x828: 0xa6, 0x829: 0xa6, 0x82a: 0xa6, 0x82b: 0xa6, 0x82c: 0xa6, 0x82d: 0xa6, 0x82e: 0xa6, 0x82f: 0xa6, -+ 0x830: 0xa6, 0x831: 0xa6, 0x832: 0xa6, 0x833: 0xa6, 0x834: 0xa6, 0x835: 0xa6, 0x836: 0xa6, 0x837: 0xa6, -+ 0x838: 0xa6, 0x839: 0xa6, 0x83a: 0xa6, 0x83b: 0xa6, 0x83c: 0xa6, 0x83d: 0xa6, 0x83e: 0xa6, 0x83f: 0xa6, -+ // Block 0x21, offset 0x840 -+ 0x840: 0xa6, 0x841: 0xa6, 0x842: 0xa6, 0x843: 0xa6, 0x844: 0xa6, 0x845: 0xa6, 0x846: 0xa6, 0x847: 0xa6, -+ 0x848: 0xa6, 0x849: 0xa6, 0x84a: 0xa6, 0x84b: 0xa6, 0x84c: 0xa6, 0x84d: 0xa6, 0x84e: 0x1af, 0x84f: 0x100, -+ 0x850: 0x100, 0x851: 0x100, 0x852: 0x100, 0x853: 0x100, 0x854: 0x100, 0x855: 0x100, 0x856: 0x100, 0x857: 0x100, -+ 0x858: 0x100, 0x859: 0x100, 0x85a: 0x100, 0x85b: 0x100, 0x85c: 0x100, 0x85d: 0x100, 0x85e: 0x100, 0x85f: 0x100, -+ 0x860: 0x100, 0x861: 0x100, 0x862: 0x100, 0x863: 0x100, 0x864: 0x100, 0x865: 0x100, 0x866: 0x100, 0x867: 0x100, -+ 0x868: 0x100, 0x869: 0x100, 0x86a: 0x100, 0x86b: 0x100, 0x86c: 0x100, 0x86d: 0x100, 0x86e: 0x100, 0x86f: 0x100, -+ 0x870: 0x100, 0x871: 0x100, 0x872: 0x100, 0x873: 0x100, 0x874: 0x100, 0x875: 0x100, 0x876: 0x100, 0x877: 0x100, -+ 0x878: 0x100, 0x879: 0x100, 0x87a: 0x100, 0x87b: 0x100, 0x87c: 0x100, 0x87d: 0x100, 0x87e: 0x100, 0x87f: 0x100, -+ // Block 0x22, offset 0x880 -+ 0x890: 0x0c, 0x891: 0x0d, 0x892: 0x0e, 0x893: 0x0f, 0x894: 0x10, 0x895: 0x0a, 0x896: 0x11, 0x897: 0x07, -+ 0x898: 0x12, 0x899: 0x0a, 0x89a: 0x13, 0x89b: 0x14, 0x89c: 0x15, 0x89d: 0x16, 0x89e: 0x17, 0x89f: 0x18, -+ 0x8a0: 0x07, 0x8a1: 0x07, 0x8a2: 0x07, 0x8a3: 0x07, 0x8a4: 0x07, 0x8a5: 0x07, 0x8a6: 0x07, 0x8a7: 0x07, -+ 0x8a8: 0x07, 0x8a9: 0x07, 0x8aa: 0x19, 0x8ab: 0x1a, 0x8ac: 0x1b, 0x8ad: 0x07, 0x8ae: 0x1c, 0x8af: 0x1d, -+ 0x8b0: 0x07, 0x8b1: 0x1e, 0x8b2: 0x1f, 0x8b3: 0x0a, 0x8b4: 0x0a, 0x8b5: 0x0a, 0x8b6: 0x0a, 0x8b7: 0x0a, -+ 0x8b8: 0x0a, 0x8b9: 0x0a, 0x8ba: 0x0a, 0x8bb: 0x0a, 0x8bc: 0x0a, 0x8bd: 0x0a, 0x8be: 0x0a, 0x8bf: 0x0a, -+ // Block 0x23, offset 0x8c0 -+ 0x8c0: 0x0a, 0x8c1: 0x0a, 0x8c2: 0x0a, 0x8c3: 0x0a, 0x8c4: 0x0a, 0x8c5: 0x0a, 0x8c6: 0x0a, 0x8c7: 0x0a, -+ 0x8c8: 0x0a, 0x8c9: 0x0a, 0x8ca: 0x0a, 0x8cb: 0x0a, 0x8cc: 0x0a, 0x8cd: 0x0a, 0x8ce: 0x0a, 0x8cf: 0x0a, -+ 0x8d0: 0x0a, 0x8d1: 0x0a, 0x8d2: 0x0a, 0x8d3: 0x0a, 0x8d4: 0x0a, 0x8d5: 0x0a, 0x8d6: 0x0a, 0x8d7: 0x0a, -+ 0x8d8: 0x0a, 0x8d9: 0x0a, 0x8da: 0x0a, 0x8db: 0x0a, 0x8dc: 0x0a, 0x8dd: 0x0a, 0x8de: 0x0a, 0x8df: 0x0a, -+ 0x8e0: 0x0a, 0x8e1: 0x0a, 0x8e2: 0x0a, 0x8e3: 0x0a, 0x8e4: 0x0a, 0x8e5: 0x0a, 0x8e6: 0x0a, 0x8e7: 0x0a, -+ 0x8e8: 0x0a, 0x8e9: 0x0a, 0x8ea: 0x0a, 0x8eb: 0x0a, 0x8ec: 0x0a, 0x8ed: 0x0a, 0x8ee: 0x0a, 0x8ef: 0x0a, -+ 0x8f0: 0x0a, 0x8f1: 0x0a, 0x8f2: 0x0a, 0x8f3: 0x0a, 0x8f4: 0x0a, 0x8f5: 0x0a, 0x8f6: 0x0a, 0x8f7: 0x0a, -+ 0x8f8: 0x0a, 0x8f9: 0x0a, 0x8fa: 0x0a, 0x8fb: 0x0a, 0x8fc: 0x0a, 0x8fd: 0x0a, 0x8fe: 0x0a, 0x8ff: 0x0a, -+ // Block 0x24, offset 0x900 -+ 0x900: 0x1b0, 0x901: 0x1b1, 0x902: 0x100, 0x903: 0x100, 0x904: 0x1b2, 0x905: 0x1b2, 0x906: 0x1b2, 0x907: 0x1b3, -+ 0x908: 0x100, 0x909: 0x100, 0x90a: 0x100, 0x90b: 0x100, 0x90c: 0x100, 0x90d: 0x100, 0x90e: 0x100, 0x90f: 0x100, -+ 0x910: 0x100, 0x911: 0x100, 0x912: 0x100, 0x913: 0x100, 0x914: 0x100, 0x915: 0x100, 0x916: 0x100, 0x917: 0x100, -+ 0x918: 0x100, 0x919: 0x100, 0x91a: 0x100, 0x91b: 0x100, 0x91c: 0x100, 0x91d: 0x100, 0x91e: 0x100, 0x91f: 0x100, -+ 0x920: 0x100, 0x921: 0x100, 0x922: 0x100, 0x923: 0x100, 0x924: 0x100, 0x925: 0x100, 0x926: 0x100, 0x927: 0x100, -+ 0x928: 0x100, 0x929: 0x100, 0x92a: 0x100, 0x92b: 0x100, 0x92c: 0x100, 0x92d: 0x100, 0x92e: 0x100, 0x92f: 0x100, -+ 0x930: 0x100, 0x931: 0x100, 0x932: 0x100, 0x933: 0x100, 0x934: 0x100, 0x935: 0x100, 0x936: 0x100, 0x937: 0x100, -+ 0x938: 0x100, 0x939: 0x100, 0x93a: 0x100, 0x93b: 0x100, 0x93c: 0x100, 0x93d: 0x100, 0x93e: 0x100, 0x93f: 0x100, -+ // Block 0x25, offset 0x940 -+ 0x940: 0x0a, 0x941: 0x0a, 0x942: 0x0a, 0x943: 0x0a, 0x944: 0x0a, 0x945: 0x0a, 0x946: 0x0a, 0x947: 0x0a, -+ 0x948: 0x0a, 0x949: 0x0a, 0x94a: 0x0a, 0x94b: 0x0a, 0x94c: 0x0a, 0x94d: 0x0a, 0x94e: 0x0a, 0x94f: 0x0a, -+ 0x950: 0x0a, 0x951: 0x0a, 0x952: 0x0a, 0x953: 0x0a, 0x954: 0x0a, 0x955: 0x0a, 0x956: 0x0a, 0x957: 0x0a, -+ 0x958: 0x0a, 0x959: 0x0a, 0x95a: 0x0a, 0x95b: 0x0a, 0x95c: 0x0a, 0x95d: 0x0a, 0x95e: 0x0a, 0x95f: 0x0a, -+ 0x960: 0x22, 0x961: 0x0a, 0x962: 0x0a, 0x963: 0x0a, 0x964: 0x0a, 0x965: 0x0a, 0x966: 0x0a, 0x967: 0x0a, -+ 0x968: 0x0a, 0x969: 0x0a, 0x96a: 0x0a, 0x96b: 0x0a, 0x96c: 0x0a, 0x96d: 0x0a, 0x96e: 0x0a, 0x96f: 0x0a, -+ 0x970: 0x0a, 0x971: 0x0a, 0x972: 0x0a, 0x973: 0x0a, 0x974: 0x0a, 0x975: 0x0a, 0x976: 0x0a, 0x977: 0x0a, -+ 0x978: 0x0a, 0x979: 0x0a, 0x97a: 0x0a, 0x97b: 0x0a, 0x97c: 0x0a, 0x97d: 0x0a, 0x97e: 0x0a, 0x97f: 0x0a, -+ // Block 0x26, offset 0x980 -+ 0x980: 0x0a, 0x981: 0x0a, 0x982: 0x0a, 0x983: 0x0a, 0x984: 0x0a, 0x985: 0x0a, 0x986: 0x0a, 0x987: 0x0a, -+ 0x988: 0x0a, 0x989: 0x0a, 0x98a: 0x0a, 0x98b: 0x0a, 0x98c: 0x0a, 0x98d: 0x0a, 0x98e: 0x0a, 0x98f: 0x0a, -+} -+ -+// idnaSparseOffset: 303 entries, 606 bytes -+var idnaSparseOffset = []uint16{0x0, 0x8, 0x19, 0x25, 0x27, 0x2c, 0x33, 0x3e, 0x4a, 0x4e, 0x5d, 0x62, 0x6c, 0x78, 0x7e, 0x87, 0x97, 0xa6, 0xb1, 0xbe, 0xcf, 0xd9, 0xe0, 0xed, 0xfe, 0x105, 0x110, 0x11f, 0x12d, 0x137, 0x139, 0x13e, 0x141, 0x144, 0x146, 0x152, 0x15d, 0x165, 0x16b, 0x171, 0x176, 0x17b, 0x17e, 0x182, 0x188, 0x18d, 0x198, 0x1a2, 0x1a8, 0x1b9, 0x1c4, 0x1c7, 0x1cf, 0x1d2, 0x1df, 0x1e7, 0x1eb, 0x1f2, 0x1fa, 0x20a, 0x216, 0x219, 0x223, 0x22f, 0x23b, 0x247, 0x24f, 0x254, 0x261, 0x272, 0x27d, 0x282, 0x28b, 0x293, 0x299, 0x29e, 0x2a1, 0x2a5, 0x2ab, 0x2af, 0x2b3, 0x2b7, 0x2bc, 0x2c4, 0x2cb, 0x2d6, 0x2e0, 0x2e4, 0x2e7, 0x2ed, 0x2f1, 0x2f3, 0x2f6, 0x2f8, 0x2fb, 0x305, 0x308, 0x317, 0x31b, 0x31f, 0x321, 0x32a, 0x32e, 0x333, 0x338, 0x33e, 0x34e, 0x354, 0x358, 0x367, 0x36c, 0x374, 0x37e, 0x389, 0x391, 0x3a2, 0x3ab, 0x3bb, 0x3c8, 0x3d4, 0x3d9, 0x3e6, 0x3ea, 0x3ef, 0x3f1, 0x3f3, 0x3f7, 0x3f9, 0x3fd, 0x406, 0x40c, 0x410, 0x420, 0x42a, 0x42f, 0x432, 0x438, 0x43f, 0x444, 0x448, 0x44e, 0x453, 0x45c, 0x461, 0x467, 0x46e, 0x475, 0x47c, 0x480, 0x483, 0x488, 0x494, 0x49a, 0x49f, 0x4a6, 0x4ae, 0x4b3, 0x4b7, 0x4c7, 0x4ce, 0x4d2, 0x4d6, 0x4dd, 0x4df, 0x4e2, 0x4e5, 0x4e9, 0x4f2, 0x4f6, 0x4fe, 0x501, 0x509, 0x514, 0x523, 0x52f, 0x535, 0x542, 0x54e, 0x556, 0x55f, 0x56a, 0x571, 0x580, 0x58d, 0x591, 0x59e, 0x5a7, 0x5ab, 0x5ba, 0x5c2, 0x5cd, 0x5d6, 0x5dc, 0x5e4, 0x5ed, 0x5f9, 0x5fc, 0x608, 0x60b, 0x614, 0x617, 0x61c, 0x625, 0x62a, 0x637, 0x642, 0x64b, 0x656, 0x659, 0x65c, 0x666, 0x66f, 0x67b, 0x688, 0x695, 0x6a3, 0x6aa, 0x6b5, 0x6bc, 0x6c0, 0x6c4, 0x6c7, 0x6cc, 0x6cf, 0x6d2, 0x6d6, 0x6d9, 0x6de, 0x6e5, 0x6e8, 0x6f0, 0x6f4, 0x6ff, 0x702, 0x705, 0x708, 0x70e, 0x714, 0x71d, 0x720, 0x723, 0x726, 0x72e, 0x733, 0x73c, 0x73f, 0x744, 0x74e, 0x752, 0x756, 0x759, 0x75c, 0x760, 0x76f, 0x77b, 0x77f, 0x784, 0x789, 0x78e, 0x792, 0x797, 0x7a0, 0x7a5, 0x7a9, 0x7af, 0x7b5, 0x7ba, 0x7c0, 0x7c6, 0x7d0, 0x7d6, 0x7df, 0x7e2, 0x7e5, 0x7e9, 0x7ed, 0x7f1, 0x7f7, 0x7fd, 0x802, 0x805, 0x815, 0x81c, 0x820, 0x827, 0x82b, 0x831, 0x838, 0x83f, 0x845, 0x84e, 0x852, 0x860, 0x863, 0x866, 0x86a, 0x86e, 0x871, 0x875, 0x878, 0x87d, 0x87f, 0x881} -+ -+// idnaSparseValues: 2180 entries, 8720 bytes -+var idnaSparseValues = [2180]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: 0x00a9, lo: 0xb0, hi: 0xb0}, -+ {value: 0x037d, lo: 0xb1, hi: 0xb1}, -+ {value: 0x00b1, lo: 0xb2, hi: 0xb2}, -+ {value: 0x00b9, lo: 0xb3, hi: 0xb3}, -+ {value: 0x034d, lo: 0xb4, hi: 0xb4}, -+ {value: 0x0395, lo: 0xb5, hi: 0xb5}, -+ {value: 0xe1bd, lo: 0xb6, hi: 0xb6}, -+ {value: 0x00c1, lo: 0xb7, hi: 0xb7}, -+ {value: 0x00c9, 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: 0x06}, -+ {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: 0x0008, lo: 0xa0, hi: 0xbf}, -+ // Block 0x6, offset 0x33 -+ {value: 0x0000, lo: 0x0a}, -+ {value: 0x0008, lo: 0x80, hi: 0x86}, -+ {value: 0x0131, lo: 0x87, hi: 0x87}, -+ {value: 0x0008, 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 0x3e -+ {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: 0xae}, -+ {value: 0x0808, lo: 0xaf, hi: 0xb4}, -+ {value: 0x0040, lo: 0xb5, hi: 0xbf}, -+ // Block 0x8, offset 0x4a -+ {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 0x4e -+ {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 0x5d -+ {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 0x62 -+ {value: 0x0000, lo: 0x09}, -+ {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: 0xbc}, -+ {value: 0x3308, lo: 0xbd, hi: 0xbd}, -+ {value: 0x0818, lo: 0xbe, hi: 0xbf}, -+ // Block 0xc, offset 0x6c -+ {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 0x78 -+ {value: 0x0000, lo: 0x05}, -+ {value: 0x0a08, lo: 0x80, hi: 0x88}, -+ {value: 0x0808, lo: 0x89, hi: 0x89}, -+ {value: 0x3308, lo: 0x8a, hi: 0xa1}, -+ {value: 0x0840, lo: 0xa2, hi: 0xa2}, -+ {value: 0x3308, lo: 0xa3, hi: 0xbf}, -+ // Block 0xe, offset 0x7e -+ {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 0xf, offset 0x87 -+ {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 0x10, offset 0x97 -+ {value: 0x0000, lo: 0x0e}, -+ {value: 0x3308, lo: 0x80, hi: 0x80}, -+ {value: 0x3008, lo: 0x81, hi: 0x83}, -+ {value: 0x3308, 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: 0xbb}, -+ {value: 0x3308, lo: 0xbc, hi: 0xbc}, -+ {value: 0x0008, lo: 0xbd, hi: 0xbd}, -+ {value: 0x3308, lo: 0xbe, hi: 0xbf}, -+ // Block 0x11, offset 0xa6 -+ {value: 0x0000, lo: 0x0a}, -+ {value: 0x3308, lo: 0x80, hi: 0x81}, -+ {value: 0x3008, lo: 0x82, hi: 0x83}, -+ {value: 0x0008, lo: 0x84, 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 0x12, offset 0xb1 -+ {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: 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 0x13, offset 0xbe -+ {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 0x14, offset 0xcf -+ {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: 0x01f1, 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 0x15, offset 0xd9 -+ {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 0x16, offset 0xe0 -+ {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: 0x8e}, -+ {value: 0x0040, lo: 0x8f, hi: 0x8f}, -+ {value: 0x0008, lo: 0x90, hi: 0x99}, -+ {value: 0x0040, lo: 0x9a, hi: 0x9b}, -+ {value: 0x0201, lo: 0x9c, hi: 0x9c}, -+ {value: 0x0209, lo: 0x9d, hi: 0x9d}, -+ {value: 0x0008, lo: 0x9e, hi: 0x9f}, -+ {value: 0x0040, lo: 0xa0, hi: 0xbf}, -+ // Block 0x17, offset 0xed -+ {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 0x18, offset 0xfe -+ {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 0x19, offset 0x105 -+ {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 0x1a, offset 0x110 -+ {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 0x1b, offset 0x11f -+ {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 0x1c, offset 0x12d -+ {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 0x1d, offset 0x137 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x0018, lo: 0x80, hi: 0xbf}, -+ // Block 0x1e, offset 0x139 -+ {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 0x1f, offset 0x13e -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x0018, lo: 0x80, hi: 0xa7}, -+ {value: 0x2018, lo: 0xa8, hi: 0xbf}, -+ // Block 0x20, offset 0x141 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x2018, lo: 0x80, hi: 0x82}, -+ {value: 0x0018, lo: 0x83, hi: 0xbf}, -+ // Block 0x21, offset 0x144 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x0008, lo: 0x80, hi: 0xbf}, -+ // Block 0x22, offset 0x146 -+ {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 0x23, offset 0x152 -+ {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 0x24, offset 0x15d -+ {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 0x25, offset 0x165 -+ {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 0x26, offset 0x16b -+ {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 0x27, offset 0x171 -+ {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 0x28, offset 0x176 -+ {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 0x29, offset 0x17b -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x0018, lo: 0x80, hi: 0x80}, -+ {value: 0x0008, lo: 0x81, hi: 0xbf}, -+ // Block 0x2a, offset 0x17e -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x0008, lo: 0x80, hi: 0xac}, -+ {value: 0x0018, lo: 0xad, hi: 0xae}, -+ {value: 0x0008, lo: 0xaf, hi: 0xbf}, -+ // Block 0x2b, offset 0x182 -+ {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 0x2c, offset 0x188 -+ {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 0x2d, offset 0x18d -+ {value: 0x0000, lo: 0x0a}, -+ {value: 0x0008, lo: 0x80, hi: 0x91}, -+ {value: 0x3308, lo: 0x92, hi: 0x93}, -+ {value: 0x3b08, lo: 0x94, hi: 0x94}, -+ {value: 0x3808, lo: 0x95, hi: 0x95}, -+ {value: 0x0040, lo: 0x96, hi: 0x9e}, -+ {value: 0x0008, lo: 0x9f, hi: 0xb1}, -+ {value: 0x3308, lo: 0xb2, hi: 0xb3}, -+ {value: 0x3808, lo: 0xb4, hi: 0xb4}, -+ {value: 0x0018, lo: 0xb5, hi: 0xb6}, -+ {value: 0x0040, lo: 0xb7, hi: 0xbf}, -+ // Block 0x2e, offset 0x198 -+ {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 0x2f, offset 0x1a2 -+ {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 0x30, offset 0x1a8 -+ {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 0x31, offset 0x1b9 -+ {value: 0x0000, lo: 0x0a}, -+ {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: 0x8e}, -+ {value: 0x33c0, lo: 0x8f, hi: 0x8f}, -+ {value: 0x0008, lo: 0x90, hi: 0x99}, -+ {value: 0x0040, lo: 0x9a, hi: 0x9f}, -+ {value: 0x0208, lo: 0xa0, hi: 0xbf}, -+ // Block 0x32, offset 0x1c4 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x0208, lo: 0x80, hi: 0xb8}, -+ {value: 0x0040, lo: 0xb9, hi: 0xbf}, -+ // Block 0x33, offset 0x1c7 -+ {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 0x34, offset 0x1cf -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x0008, lo: 0x80, hi: 0xb5}, -+ {value: 0x0040, lo: 0xb6, hi: 0xbf}, -+ // Block 0x35, offset 0x1d2 -+ {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 0x36, offset 0x1df -+ {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 0x37, offset 0x1e7 -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x0008, lo: 0x80, hi: 0xab}, -+ {value: 0x0040, lo: 0xac, hi: 0xaf}, -+ {value: 0x0008, lo: 0xb0, hi: 0xbf}, -+ // Block 0x38, offset 0x1eb -+ {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 0x39, offset 0x1f2 -+ {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 0x3a, offset 0x1fa -+ {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 0x3b, offset 0x20a -+ {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: 0x3308, lo: 0xbf, hi: 0xbf}, -+ // Block 0x3c, offset 0x216 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x3308, lo: 0x80, hi: 0x8e}, -+ {value: 0x0040, lo: 0x8f, hi: 0xbf}, -+ // Block 0x3d, offset 0x219 -+ {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 0x3e, offset 0x223 -+ {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: 0x8c}, -+ {value: 0x0040, lo: 0x8d, 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: 0xbe}, -+ {value: 0x0040, lo: 0xbf, hi: 0xbf}, -+ // Block 0x3f, offset 0x22f -+ {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 0x40, offset 0x23b -+ {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 0x41, offset 0x247 -+ {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 0x42, offset 0x24f -+ {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 0x43, offset 0x254 -+ {value: 0x0000, lo: 0x0c}, -+ {value: 0x02a9, lo: 0x80, hi: 0x80}, -+ {value: 0x02b1, lo: 0x81, hi: 0x81}, -+ {value: 0x02b9, lo: 0x82, hi: 0x82}, -+ {value: 0x02c1, lo: 0x83, hi: 0x83}, -+ {value: 0x02c9, lo: 0x84, hi: 0x85}, -+ {value: 0x02d1, lo: 0x86, hi: 0x86}, -+ {value: 0x02d9, lo: 0x87, hi: 0x87}, -+ {value: 0x057d, lo: 0x88, hi: 0x88}, -+ {value: 0x0040, lo: 0x89, hi: 0x8f}, -+ {value: 0x059d, lo: 0x90, hi: 0xba}, -+ {value: 0x0040, lo: 0xbb, hi: 0xbc}, -+ {value: 0x059d, lo: 0xbd, hi: 0xbf}, -+ // Block 0x44, offset 0x261 -+ {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: 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: 0x0008, lo: 0xba, hi: 0xba}, -+ {value: 0x0040, lo: 0xbb, hi: 0xbf}, -+ // Block 0x45, offset 0x272 -+ {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 0x46, offset 0x27d -+ {value: 0x0000, lo: 0x04}, -+ {value: 0x0018, lo: 0x80, hi: 0x80}, -+ {value: 0x0040, lo: 0x81, hi: 0x8f}, -+ {value: 0x3318, lo: 0x90, hi: 0xb0}, -+ {value: 0x0040, lo: 0xb1, hi: 0xbf}, -+ // Block 0x47, offset 0x282 -+ {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: 0x0851, lo: 0x89, hi: 0x89}, -+ {value: 0x0018, lo: 0x8a, hi: 0x8b}, -+ {value: 0x0040, lo: 0x8c, hi: 0x8f}, -+ {value: 0x0018, lo: 0x90, hi: 0xbf}, -+ // Block 0x48, offset 0x28b -+ {value: 0x0000, lo: 0x07}, -+ {value: 0x0018, lo: 0x80, hi: 0xab}, -+ {value: 0x0859, lo: 0xac, hi: 0xac}, -+ {value: 0x0861, lo: 0xad, hi: 0xad}, -+ {value: 0x0018, lo: 0xae, hi: 0xae}, -+ {value: 0x0869, lo: 0xaf, hi: 0xaf}, -+ {value: 0x0871, lo: 0xb0, hi: 0xb0}, -+ {value: 0x0018, lo: 0xb1, hi: 0xbf}, -+ // Block 0x49, offset 0x293 -+ {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 0x4a, offset 0x299 -+ {value: 0x0000, lo: 0x04}, -+ {value: 0x0018, lo: 0x80, hi: 0xa8}, -+ {value: 0x09dd, lo: 0xa9, hi: 0xa9}, -+ {value: 0x09fd, lo: 0xaa, hi: 0xaa}, -+ {value: 0x0018, lo: 0xab, hi: 0xbf}, -+ // Block 0x4b, offset 0x29e -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x0018, lo: 0x80, hi: 0xa6}, -+ {value: 0x0040, lo: 0xa7, hi: 0xbf}, -+ // Block 0x4c, offset 0x2a1 -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x0018, lo: 0x80, hi: 0x8b}, -+ {value: 0x0929, lo: 0x8c, hi: 0x8c}, -+ {value: 0x0018, lo: 0x8d, hi: 0xbf}, -+ // Block 0x4d, offset 0x2a5 -+ {value: 0x0000, lo: 0x05}, -+ {value: 0x0018, lo: 0x80, hi: 0xb3}, -+ {value: 0x0e7e, lo: 0xb4, hi: 0xb4}, -+ {value: 0x0932, lo: 0xb5, hi: 0xb5}, -+ {value: 0x0e9e, lo: 0xb6, hi: 0xb6}, -+ {value: 0x0018, lo: 0xb7, hi: 0xbf}, -+ // Block 0x4e, offset 0x2ab -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x0018, lo: 0x80, hi: 0x9b}, -+ {value: 0x0939, lo: 0x9c, hi: 0x9c}, -+ {value: 0x0018, lo: 0x9d, hi: 0xbf}, -+ // Block 0x4f, offset 0x2af -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x0018, lo: 0x80, hi: 0xb3}, -+ {value: 0x0040, lo: 0xb4, hi: 0xb5}, -+ {value: 0x0018, lo: 0xb6, hi: 0xbf}, -+ // Block 0x50, offset 0x2b3 -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x0018, lo: 0x80, hi: 0x95}, -+ {value: 0x0040, lo: 0x96, hi: 0x96}, -+ {value: 0x0018, lo: 0x97, hi: 0xbf}, -+ // Block 0x51, offset 0x2b7 -+ {value: 0x0000, lo: 0x04}, -+ {value: 0xe185, lo: 0x80, hi: 0x8f}, -+ {value: 0x03f5, lo: 0x90, hi: 0x9f}, -+ {value: 0x0ebd, lo: 0xa0, hi: 0xaf}, -+ {value: 0x0008, lo: 0xb0, hi: 0xbf}, -+ // Block 0x52, offset 0x2bc -+ {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 0x53, offset 0x2c4 -+ {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 0x54, offset 0x2cb -+ {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 0x55, offset 0x2d6 -+ {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 0x56, offset 0x2e0 -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x0018, lo: 0x80, hi: 0xae}, -+ {value: 0x0008, lo: 0xaf, hi: 0xaf}, -+ {value: 0x0018, lo: 0xb0, hi: 0xbf}, -+ // Block 0x57, offset 0x2e4 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x0018, lo: 0x80, hi: 0x9d}, -+ {value: 0x0040, lo: 0x9e, hi: 0xbf}, -+ // Block 0x58, offset 0x2e7 -+ {value: 0x0000, lo: 0x05}, -+ {value: 0x0018, lo: 0x80, hi: 0x99}, -+ {value: 0x0040, lo: 0x9a, hi: 0x9a}, -+ {value: 0x0018, lo: 0x9b, hi: 0x9e}, -+ {value: 0x0ef5, lo: 0x9f, hi: 0x9f}, -+ {value: 0x0018, lo: 0xa0, hi: 0xbf}, -+ // Block 0x59, offset 0x2ed -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x0018, lo: 0x80, hi: 0xb2}, -+ {value: 0x0f15, lo: 0xb3, hi: 0xb3}, -+ {value: 0x0040, lo: 0xb4, hi: 0xbf}, -+ // Block 0x5a, offset 0x2f1 -+ {value: 0x0020, lo: 0x01}, -+ {value: 0x0f35, lo: 0x80, hi: 0xbf}, -+ // Block 0x5b, offset 0x2f3 -+ {value: 0x0020, lo: 0x02}, -+ {value: 0x1735, lo: 0x80, hi: 0x8f}, -+ {value: 0x1915, lo: 0x90, hi: 0xbf}, -+ // Block 0x5c, offset 0x2f6 -+ {value: 0x0020, lo: 0x01}, -+ {value: 0x1f15, lo: 0x80, hi: 0xbf}, -+ // Block 0x5d, offset 0x2f8 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x0040, lo: 0x80, hi: 0x80}, -+ {value: 0x0008, lo: 0x81, hi: 0xbf}, -+ // Block 0x5e, offset 0x2fb -+ {value: 0x0000, lo: 0x09}, -+ {value: 0x0008, lo: 0x80, hi: 0x96}, -+ {value: 0x0040, lo: 0x97, hi: 0x98}, -+ {value: 0x3308, lo: 0x99, hi: 0x9a}, -+ {value: 0x096a, lo: 0x9b, hi: 0x9b}, -+ {value: 0x0972, lo: 0x9c, hi: 0x9c}, -+ {value: 0x0008, lo: 0x9d, hi: 0x9e}, -+ {value: 0x0979, lo: 0x9f, hi: 0x9f}, -+ {value: 0x0018, lo: 0xa0, hi: 0xa0}, -+ {value: 0x0008, lo: 0xa1, hi: 0xbf}, -+ // Block 0x5f, offset 0x305 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x0008, lo: 0x80, hi: 0xbe}, -+ {value: 0x0981, lo: 0xbf, hi: 0xbf}, -+ // Block 0x60, offset 0x308 -+ {value: 0x0000, lo: 0x0e}, -+ {value: 0x0040, lo: 0x80, hi: 0x84}, -+ {value: 0x0008, lo: 0x85, hi: 0xaf}, -+ {value: 0x0040, lo: 0xb0, hi: 0xb0}, -+ {value: 0x2a35, lo: 0xb1, hi: 0xb1}, -+ {value: 0x2a55, lo: 0xb2, hi: 0xb2}, -+ {value: 0x2a75, lo: 0xb3, hi: 0xb3}, -+ {value: 0x2a95, lo: 0xb4, hi: 0xb4}, -+ {value: 0x2a75, lo: 0xb5, hi: 0xb5}, -+ {value: 0x2ab5, lo: 0xb6, hi: 0xb6}, -+ {value: 0x2ad5, lo: 0xb7, hi: 0xb7}, -+ {value: 0x2af5, lo: 0xb8, hi: 0xb9}, -+ {value: 0x2b15, lo: 0xba, hi: 0xbb}, -+ {value: 0x2b35, lo: 0xbc, hi: 0xbd}, -+ {value: 0x2b15, lo: 0xbe, hi: 0xbf}, -+ // Block 0x61, offset 0x317 -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x0018, lo: 0x80, hi: 0xa3}, -+ {value: 0x0040, lo: 0xa4, hi: 0xaf}, -+ {value: 0x0008, lo: 0xb0, hi: 0xbf}, -+ // Block 0x62, offset 0x31b -+ {value: 0x0008, lo: 0x03}, -+ {value: 0x098a, lo: 0x80, hi: 0x9e}, -+ {value: 0x0040, lo: 0x9f, hi: 0x9f}, -+ {value: 0x0a82, lo: 0xa0, hi: 0xbf}, -+ // Block 0x63, offset 0x31f -+ {value: 0x0008, lo: 0x01}, -+ {value: 0x0d19, lo: 0x80, hi: 0xbf}, -+ // Block 0x64, offset 0x321 -+ {value: 0x0008, lo: 0x08}, -+ {value: 0x0f19, lo: 0x80, hi: 0xb0}, -+ {value: 0x4045, lo: 0xb1, hi: 0xb1}, -+ {value: 0x10a1, lo: 0xb2, hi: 0xb3}, -+ {value: 0x4065, lo: 0xb4, hi: 0xb4}, -+ {value: 0x10b1, lo: 0xb5, hi: 0xb7}, -+ {value: 0x4085, lo: 0xb8, hi: 0xb8}, -+ {value: 0x4085, lo: 0xb9, hi: 0xb9}, -+ {value: 0x10c9, lo: 0xba, hi: 0xbf}, -+ // Block 0x65, offset 0x32a -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x0008, lo: 0x80, hi: 0x8c}, -+ {value: 0x0040, lo: 0x8d, hi: 0x8f}, -+ {value: 0x0018, lo: 0x90, hi: 0xbf}, -+ // Block 0x66, offset 0x32e -+ {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 0x67, offset 0x333 -+ {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 0x68, offset 0x338 -+ {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 0x69, offset 0x33e -+ {value: 0x0000, lo: 0x0f}, -+ {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: 0x3b08, lo: 0xac, hi: 0xac}, -+ {value: 0x0040, lo: 0xad, hi: 0xaf}, -+ {value: 0x0018, lo: 0xb0, hi: 0xb9}, -+ {value: 0x0040, lo: 0xba, hi: 0xbf}, -+ // Block 0x6a, offset 0x34e -+ {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 0x6b, offset 0x354 -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x3008, lo: 0x80, hi: 0x81}, -+ {value: 0x0008, lo: 0x82, hi: 0xb3}, -+ {value: 0x3008, lo: 0xb4, hi: 0xbf}, -+ // Block 0x6c, offset 0x358 -+ {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: 0xbe}, -+ {value: 0x3308, lo: 0xbf, hi: 0xbf}, -+ // Block 0x6d, offset 0x367 -+ {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 0x6e, offset 0x36c -+ {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 0x6f, offset 0x374 -+ {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: 0xbd}, -+ {value: 0x3008, lo: 0xbe, hi: 0xbf}, -+ // Block 0x70, offset 0x37e -+ {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 0x71, offset 0x389 -+ {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 0x72, offset 0x391 -+ {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 0x73, offset 0x3a2 -+ {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 0x74, offset 0x3ab -+ {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 0x75, offset 0x3bb -+ {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 0x76, offset 0x3c8 -+ {value: 0x0000, lo: 0x0b}, -+ {value: 0x0008, lo: 0x80, hi: 0x9a}, -+ {value: 0x0018, lo: 0x9b, hi: 0x9b}, -+ {value: 0x449d, lo: 0x9c, hi: 0x9c}, -+ {value: 0x44b5, lo: 0x9d, hi: 0x9d}, -+ {value: 0x0941, lo: 0x9e, hi: 0x9e}, -+ {value: 0xe06d, lo: 0x9f, hi: 0x9f}, -+ {value: 0x0008, lo: 0xa0, hi: 0xa8}, -+ {value: 0x13f9, lo: 0xa9, hi: 0xa9}, -+ {value: 0x0018, lo: 0xaa, hi: 0xab}, -+ {value: 0x0040, lo: 0xac, hi: 0xaf}, -+ {value: 0x44cd, lo: 0xb0, hi: 0xbf}, -+ // Block 0x77, offset 0x3d4 -+ {value: 0x0000, lo: 0x04}, -+ {value: 0x44ed, lo: 0x80, hi: 0x8f}, -+ {value: 0x450d, lo: 0x90, hi: 0x9f}, -+ {value: 0x452d, lo: 0xa0, hi: 0xaf}, -+ {value: 0x450d, lo: 0xb0, hi: 0xbf}, -+ // Block 0x78, offset 0x3d9 -+ {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 0x79, offset 0x3e6 -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x0008, lo: 0x80, hi: 0xa3}, -+ {value: 0x0040, lo: 0xa4, hi: 0xaf}, -+ {value: 0x0018, lo: 0xb0, hi: 0xbf}, -+ // Block 0x7a, offset 0x3ea -+ {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 0x7b, offset 0x3ef -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x0040, lo: 0x80, hi: 0xbf}, -+ // Block 0x7c, offset 0x3f1 -+ {value: 0x0020, lo: 0x01}, -+ {value: 0x454d, lo: 0x80, hi: 0xbf}, -+ // Block 0x7d, offset 0x3f3 -+ {value: 0x0020, lo: 0x03}, -+ {value: 0x4d4d, lo: 0x80, hi: 0x94}, -+ {value: 0x4b0d, lo: 0x95, hi: 0x95}, -+ {value: 0x4fed, lo: 0x96, hi: 0xbf}, -+ // Block 0x7e, offset 0x3f7 -+ {value: 0x0020, lo: 0x01}, -+ {value: 0x552d, lo: 0x80, hi: 0xbf}, -+ // Block 0x7f, offset 0x3f9 -+ {value: 0x0020, lo: 0x03}, -+ {value: 0x5d2d, lo: 0x80, hi: 0x84}, -+ {value: 0x568d, lo: 0x85, hi: 0x85}, -+ {value: 0x5dcd, lo: 0x86, hi: 0xbf}, -+ // Block 0x80, offset 0x3fd -+ {value: 0x0020, lo: 0x08}, -+ {value: 0x6b8d, lo: 0x80, hi: 0x8f}, -+ {value: 0x6d4d, lo: 0x90, hi: 0x90}, -+ {value: 0x6d8d, lo: 0x91, hi: 0xab}, -+ {value: 0x1401, lo: 0xac, hi: 0xac}, -+ {value: 0x70ed, lo: 0xad, hi: 0xad}, -+ {value: 0x0040, lo: 0xae, hi: 0xae}, -+ {value: 0x0040, lo: 0xaf, hi: 0xaf}, -+ {value: 0x710d, lo: 0xb0, hi: 0xbf}, -+ // Block 0x81, offset 0x406 -+ {value: 0x0020, lo: 0x05}, -+ {value: 0x730d, lo: 0x80, hi: 0xad}, -+ {value: 0x656d, lo: 0xae, hi: 0xae}, -+ {value: 0x78cd, lo: 0xaf, hi: 0xb5}, -+ {value: 0x6f8d, lo: 0xb6, hi: 0xb6}, -+ {value: 0x79ad, lo: 0xb7, hi: 0xbf}, -+ // Block 0x82, offset 0x40c -+ {value: 0x0008, lo: 0x03}, -+ {value: 0x1751, lo: 0x80, hi: 0x82}, -+ {value: 0x1741, lo: 0x83, hi: 0x83}, -+ {value: 0x1769, lo: 0x84, hi: 0xbf}, -+ // Block 0x83, offset 0x410 -+ {value: 0x0008, lo: 0x0f}, -+ {value: 0x1d81, lo: 0x80, hi: 0x83}, -+ {value: 0x1d99, lo: 0x84, hi: 0x85}, -+ {value: 0x1da1, lo: 0x86, hi: 0x87}, -+ {value: 0x1da9, lo: 0x88, hi: 0x8f}, -+ {value: 0x0040, lo: 0x90, hi: 0x90}, -+ {value: 0x0040, lo: 0x91, hi: 0x91}, -+ {value: 0x1de9, lo: 0x92, hi: 0x97}, -+ {value: 0x1e11, lo: 0x98, hi: 0x9c}, -+ {value: 0x1e31, lo: 0x9d, hi: 0xb3}, -+ {value: 0x1d71, lo: 0xb4, hi: 0xb4}, -+ {value: 0x1d81, lo: 0xb5, hi: 0xb5}, -+ {value: 0x1ee9, lo: 0xb6, hi: 0xbb}, -+ {value: 0x1f09, lo: 0xbc, hi: 0xbc}, -+ {value: 0x1ef9, lo: 0xbd, hi: 0xbd}, -+ {value: 0x1f19, lo: 0xbe, hi: 0xbf}, -+ // Block 0x84, offset 0x420 -+ {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 0x85, offset 0x42a -+ {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 0x86, offset 0x42f -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x0008, lo: 0x80, hi: 0xba}, -+ {value: 0x0040, lo: 0xbb, hi: 0xbf}, -+ // Block 0x87, offset 0x432 -+ {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 0x88, offset 0x438 -+ {value: 0x0000, lo: 0x06}, -+ {value: 0x0018, lo: 0x80, hi: 0x8e}, -+ {value: 0x0040, lo: 0x8f, hi: 0x8f}, -+ {value: 0x0018, lo: 0x90, hi: 0x9c}, -+ {value: 0x0040, lo: 0x9d, hi: 0x9f}, -+ {value: 0x0018, lo: 0xa0, hi: 0xa0}, -+ {value: 0x0040, lo: 0xa1, hi: 0xbf}, -+ // Block 0x89, offset 0x43f -+ {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 0x8a, offset 0x444 -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x0008, lo: 0x80, hi: 0x9c}, -+ {value: 0x0040, lo: 0x9d, hi: 0x9f}, -+ {value: 0x0008, lo: 0xa0, hi: 0xbf}, -+ // Block 0x8b, offset 0x448 -+ {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 0x8c, offset 0x44e -+ {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 0x8d, offset 0x453 -+ {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 0x8e, offset 0x45c -+ {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 0x8f, offset 0x461 -+ {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 0x90, offset 0x467 -+ {value: 0x0000, lo: 0x06}, -+ {value: 0xe145, lo: 0x80, hi: 0x87}, -+ {value: 0xe1c5, lo: 0x88, hi: 0x8f}, -+ {value: 0xe145, lo: 0x90, hi: 0x97}, -+ {value: 0x8b0d, lo: 0x98, hi: 0x9f}, -+ {value: 0x8b25, lo: 0xa0, hi: 0xa7}, -+ {value: 0x0008, lo: 0xa8, hi: 0xbf}, -+ // Block 0x91, offset 0x46e -+ {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: 0x8b25, lo: 0xb0, hi: 0xb7}, -+ {value: 0x8b0d, lo: 0xb8, 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: 0x93}, -+ {value: 0x0040, lo: 0x94, hi: 0x97}, -+ {value: 0x0008, lo: 0x98, hi: 0xbb}, -+ {value: 0x0040, lo: 0xbc, hi: 0xbf}, -+ // Block 0x93, offset 0x47c -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x0008, lo: 0x80, hi: 0xa7}, -+ {value: 0x0040, lo: 0xa8, hi: 0xaf}, -+ {value: 0x0008, lo: 0xb0, hi: 0xbf}, -+ // Block 0x94, offset 0x480 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x0008, lo: 0x80, hi: 0xb6}, -+ {value: 0x0040, lo: 0xb7, hi: 0xbf}, -+ // Block 0x95, offset 0x483 -+ {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 0x96, offset 0x488 -+ {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 0x97, offset 0x494 -+ {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 0x98, offset 0x49a -+ {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 0x99, offset 0x49f -+ {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 0x9a, offset 0x4a6 -+ {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 0x9b, offset 0x4ae -+ {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 0x9c, offset 0x4b3 -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x0818, lo: 0x80, hi: 0x8f}, -+ {value: 0x0040, lo: 0x90, hi: 0x91}, -+ {value: 0x0818, lo: 0x92, hi: 0xbf}, -+ // Block 0x9d, offset 0x4b7 -+ {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: 0xb5}, -+ {value: 0x0040, lo: 0xb6, hi: 0xb7}, -+ {value: 0x3308, lo: 0xb8, hi: 0xba}, -+ {value: 0x0040, lo: 0xbb, hi: 0xbe}, -+ {value: 0x3b08, lo: 0xbf, hi: 0xbf}, -+ // Block 0x9e, offset 0x4c7 -+ {value: 0x0000, lo: 0x06}, -+ {value: 0x0818, lo: 0x80, hi: 0x88}, -+ {value: 0x0040, lo: 0x89, 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 0x9f, offset 0x4ce -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x0808, lo: 0x80, hi: 0x9c}, -+ {value: 0x0818, lo: 0x9d, hi: 0x9f}, -+ {value: 0x0040, lo: 0xa0, hi: 0xbf}, -+ // Block 0xa0, offset 0x4d2 -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x0808, lo: 0x80, hi: 0xb5}, -+ {value: 0x0040, lo: 0xb6, hi: 0xb8}, -+ {value: 0x0018, lo: 0xb9, hi: 0xbf}, -+ // Block 0xa1, offset 0x4d6 -+ {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 0xa2, offset 0x4dd -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x0808, lo: 0x80, hi: 0xbf}, -+ // Block 0xa3, offset 0x4df -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x0808, lo: 0x80, hi: 0x88}, -+ {value: 0x0040, lo: 0x89, hi: 0xbf}, -+ // Block 0xa4, offset 0x4e2 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x03dd, lo: 0x80, hi: 0xb2}, -+ {value: 0x0040, lo: 0xb3, hi: 0xbf}, -+ // Block 0xa5, offset 0x4e5 -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x0808, lo: 0x80, hi: 0xb2}, -+ {value: 0x0040, lo: 0xb3, hi: 0xb9}, -+ {value: 0x0818, lo: 0xba, hi: 0xbf}, -+ // Block 0xa6, offset 0x4e9 -+ {value: 0x0000, lo: 0x08}, -+ {value: 0x0908, lo: 0x80, hi: 0x80}, -+ {value: 0x0a08, lo: 0x81, hi: 0xa1}, -+ {value: 0x0c08, lo: 0xa2, hi: 0xa2}, -+ {value: 0x0a08, lo: 0xa3, hi: 0xa3}, -+ {value: 0x3308, lo: 0xa4, hi: 0xa7}, -+ {value: 0x0040, lo: 0xa8, hi: 0xaf}, -+ {value: 0x0808, lo: 0xb0, hi: 0xb9}, -+ {value: 0x0040, lo: 0xba, hi: 0xbf}, -+ // Block 0xa7, offset 0x4f2 -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x0040, lo: 0x80, hi: 0x9f}, -+ {value: 0x0818, lo: 0xa0, hi: 0xbe}, -+ {value: 0x0040, lo: 0xbf, hi: 0xbf}, -+ // Block 0xa8, offset 0x4f6 -+ {value: 0x0000, lo: 0x07}, -+ {value: 0x0808, lo: 0x80, hi: 0xa9}, -+ {value: 0x0040, lo: 0xaa, hi: 0xaa}, -+ {value: 0x3308, lo: 0xab, hi: 0xac}, -+ {value: 0x0818, lo: 0xad, hi: 0xad}, -+ {value: 0x0040, lo: 0xae, hi: 0xaf}, -+ {value: 0x0808, lo: 0xb0, hi: 0xb1}, -+ {value: 0x0040, lo: 0xb2, hi: 0xbf}, -+ // Block 0xa9, offset 0x4fe -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x0040, lo: 0x80, hi: 0xbc}, -+ {value: 0x3308, lo: 0xbd, hi: 0xbf}, -+ // Block 0xaa, offset 0x501 -+ {value: 0x0000, lo: 0x07}, -+ {value: 0x0808, lo: 0x80, hi: 0x9c}, -+ {value: 0x0818, lo: 0x9d, hi: 0xa6}, -+ {value: 0x0808, lo: 0xa7, hi: 0xa7}, -+ {value: 0x0040, lo: 0xa8, hi: 0xaf}, -+ {value: 0x0a08, lo: 0xb0, hi: 0xb2}, -+ {value: 0x0c08, lo: 0xb3, hi: 0xb3}, -+ {value: 0x0a08, lo: 0xb4, hi: 0xbf}, -+ // Block 0xab, offset 0x509 -+ {value: 0x0000, lo: 0x0a}, -+ {value: 0x0a08, lo: 0x80, hi: 0x84}, -+ {value: 0x0808, lo: 0x85, hi: 0x85}, -+ {value: 0x3308, lo: 0x86, hi: 0x90}, -+ {value: 0x0a18, lo: 0x91, hi: 0x93}, -+ {value: 0x0c18, lo: 0x94, hi: 0x94}, -+ {value: 0x0818, lo: 0x95, hi: 0x99}, -+ {value: 0x0040, lo: 0x9a, hi: 0xaf}, -+ {value: 0x0a08, lo: 0xb0, hi: 0xb3}, -+ {value: 0x0c08, lo: 0xb4, hi: 0xb5}, -+ {value: 0x0a08, lo: 0xb6, hi: 0xbf}, -+ // Block 0xac, offset 0x514 -+ {value: 0x0000, lo: 0x0e}, -+ {value: 0x0a08, lo: 0x80, hi: 0x81}, -+ {value: 0x3308, lo: 0x82, hi: 0x85}, -+ {value: 0x0818, lo: 0x86, hi: 0x89}, -+ {value: 0x0040, lo: 0x8a, hi: 0xaf}, -+ {value: 0x0a08, lo: 0xb0, hi: 0xb0}, -+ {value: 0x0808, lo: 0xb1, hi: 0xb1}, -+ {value: 0x0a08, lo: 0xb2, hi: 0xb3}, -+ {value: 0x0c08, lo: 0xb4, hi: 0xb6}, -+ {value: 0x0808, lo: 0xb7, hi: 0xb7}, -+ {value: 0x0a08, lo: 0xb8, hi: 0xb8}, -+ {value: 0x0c08, lo: 0xb9, hi: 0xba}, -+ {value: 0x0a08, lo: 0xbb, hi: 0xbc}, -+ {value: 0x0c08, lo: 0xbd, hi: 0xbd}, -+ {value: 0x0a08, lo: 0xbe, hi: 0xbf}, -+ // Block 0xad, offset 0x523 -+ {value: 0x0000, lo: 0x0b}, -+ {value: 0x0808, lo: 0x80, hi: 0x80}, -+ {value: 0x0a08, lo: 0x81, hi: 0x81}, -+ {value: 0x0c08, lo: 0x82, hi: 0x83}, -+ {value: 0x0a08, lo: 0x84, hi: 0x84}, -+ {value: 0x0818, lo: 0x85, hi: 0x88}, -+ {value: 0x0c18, lo: 0x89, hi: 0x89}, -+ {value: 0x0a18, lo: 0x8a, hi: 0x8a}, -+ {value: 0x0918, lo: 0x8b, hi: 0x8b}, -+ {value: 0x0040, lo: 0x8c, hi: 0x9f}, -+ {value: 0x0808, lo: 0xa0, hi: 0xb6}, -+ {value: 0x0040, lo: 0xb7, hi: 0xbf}, -+ // Block 0xae, offset 0x52f -+ {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 0xaf, offset 0x535 -+ {value: 0x0000, lo: 0x0c}, -+ {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: 0x3b08, lo: 0xb0, hi: 0xb0}, -+ {value: 0x0008, lo: 0xb1, hi: 0xb2}, -+ {value: 0x3308, lo: 0xb3, hi: 0xb4}, -+ {value: 0x0008, lo: 0xb5, hi: 0xb5}, -+ {value: 0x0040, lo: 0xb6, hi: 0xbe}, -+ {value: 0x3b08, lo: 0xbf, hi: 0xbf}, -+ // Block 0xb0, offset 0x542 -+ {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: 0x0040, lo: 0xbd, hi: 0xbd}, -+ {value: 0x0018, lo: 0xbe, hi: 0xbf}, -+ // Block 0xb1, offset 0x54e -+ {value: 0x0000, lo: 0x07}, -+ {value: 0x0018, lo: 0x80, hi: 0x81}, -+ {value: 0x3308, lo: 0x82, hi: 0x82}, -+ {value: 0x0040, lo: 0x83, 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 0xb2, offset 0x556 -+ {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 0xb3, offset 0x55f -+ {value: 0x0000, lo: 0x0a}, -+ {value: 0x0018, lo: 0x80, hi: 0x83}, -+ {value: 0x0008, lo: 0x84, hi: 0x84}, -+ {value: 0x3008, lo: 0x85, hi: 0x86}, -+ {value: 0x0008, lo: 0x87, hi: 0x87}, -+ {value: 0x0040, lo: 0x88, 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 0xb4, offset 0x56a -+ {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 0xb5, offset 0x571 -+ {value: 0x0000, lo: 0x0e}, -+ {value: 0x3808, lo: 0x80, hi: 0x80}, -+ {value: 0x0008, lo: 0x81, hi: 0x84}, -+ {value: 0x0018, lo: 0x85, hi: 0x88}, -+ {value: 0x3308, lo: 0x89, hi: 0x8c}, -+ {value: 0x0018, lo: 0x8d, hi: 0x8d}, -+ {value: 0x3008, lo: 0x8e, hi: 0x8e}, -+ {value: 0x3308, lo: 0x8f, 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 0xb6, offset 0x580 -+ {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: 0x0008, lo: 0xbf, hi: 0xbf}, -+ // Block 0xb7, offset 0x58d -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x0008, lo: 0x80, hi: 0x80}, -+ {value: 0x3308, lo: 0x81, hi: 0x81}, -+ {value: 0x0040, lo: 0x82, hi: 0xbf}, -+ // Block 0xb8, offset 0x591 -+ {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 0xb9, offset 0x59e -+ {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 0xba, offset 0x5a7 -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x0008, lo: 0x80, hi: 0xb4}, -+ {value: 0x3008, lo: 0xb5, hi: 0xb7}, -+ {value: 0x3308, lo: 0xb8, hi: 0xbf}, -+ // Block 0xbb, offset 0x5ab -+ {value: 0x0000, lo: 0x0e}, -+ {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: 0x0018, lo: 0x9a, hi: 0x9b}, -+ {value: 0x0040, lo: 0x9c, hi: 0x9c}, -+ {value: 0x0018, lo: 0x9d, hi: 0x9d}, -+ {value: 0x3308, lo: 0x9e, hi: 0x9e}, -+ {value: 0x0008, lo: 0x9f, hi: 0xa1}, -+ {value: 0x0040, lo: 0xa2, hi: 0xbf}, -+ // Block 0xbc, offset 0x5ba -+ {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 0xbd, offset 0x5c2 -+ {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 0xbe, offset 0x5cd -+ {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 0xbf, offset 0x5d6 -+ {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 0xc0, offset 0x5dc -+ {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 0xc1, offset 0x5e4 -+ {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 0xc2, offset 0x5ed -+ {value: 0x0000, lo: 0x0b}, -+ {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: 0x0008, lo: 0xb8, hi: 0xb8}, -+ {value: 0x0018, lo: 0xb9, hi: 0xb9}, -+ {value: 0x0040, lo: 0xba, hi: 0xbf}, -+ // Block 0xc3, offset 0x5f9 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x0008, lo: 0x80, hi: 0x89}, -+ {value: 0x0040, lo: 0x8a, hi: 0xbf}, -+ // Block 0xc4, offset 0x5fc -+ {value: 0x0000, lo: 0x0b}, -+ {value: 0x0008, lo: 0x80, hi: 0x9a}, -+ {value: 0x0040, lo: 0x9b, 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 0xc5, offset 0x608 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x0008, lo: 0x80, hi: 0x86}, -+ {value: 0x0040, lo: 0x87, hi: 0xbf}, -+ // Block 0xc6, offset 0x60b -+ {value: 0x0000, lo: 0x08}, -+ {value: 0x0008, lo: 0x80, hi: 0xab}, -+ {value: 0x3008, lo: 0xac, hi: 0xae}, -+ {value: 0x3308, lo: 0xaf, hi: 0xb7}, -+ {value: 0x3008, lo: 0xb8, hi: 0xb8}, -+ {value: 0x3b08, lo: 0xb9, hi: 0xb9}, -+ {value: 0x3308, lo: 0xba, hi: 0xba}, -+ {value: 0x0018, lo: 0xbb, hi: 0xbb}, -+ {value: 0x0040, lo: 0xbc, hi: 0xbf}, -+ // Block 0xc7, offset 0x614 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x0040, lo: 0x80, hi: 0x9f}, -+ {value: 0x049d, lo: 0xa0, hi: 0xbf}, -+ // Block 0xc8, offset 0x617 -+ {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 0xc9, offset 0x61c -+ {value: 0x0000, lo: 0x08}, -+ {value: 0x3008, lo: 0x80, hi: 0x80}, -+ {value: 0x0008, lo: 0x81, hi: 0x81}, -+ {value: 0x3008, lo: 0x82, hi: 0x82}, -+ {value: 0x3308, lo: 0x83, hi: 0x83}, -+ {value: 0x0018, lo: 0x84, hi: 0x86}, -+ {value: 0x0040, lo: 0x87, hi: 0x8f}, -+ {value: 0x0008, lo: 0x90, hi: 0x99}, -+ {value: 0x0040, lo: 0x9a, hi: 0xbf}, -+ // Block 0xca, offset 0x625 -+ {value: 0x0000, lo: 0x04}, -+ {value: 0x0040, lo: 0x80, hi: 0x9f}, -+ {value: 0x0008, lo: 0xa0, hi: 0xa7}, -+ {value: 0x0040, lo: 0xa8, hi: 0xa9}, -+ {value: 0x0008, lo: 0xaa, hi: 0xbf}, -+ // Block 0xcb, offset 0x62a -+ {value: 0x0000, lo: 0x0c}, -+ {value: 0x0008, lo: 0x80, hi: 0x90}, -+ {value: 0x3008, lo: 0x91, hi: 0x93}, -+ {value: 0x3308, lo: 0x94, hi: 0x97}, -+ {value: 0x0040, lo: 0x98, hi: 0x99}, -+ {value: 0x3308, lo: 0x9a, hi: 0x9b}, -+ {value: 0x3008, lo: 0x9c, hi: 0x9f}, -+ {value: 0x3b08, lo: 0xa0, hi: 0xa0}, -+ {value: 0x0008, lo: 0xa1, hi: 0xa1}, -+ {value: 0x0018, lo: 0xa2, hi: 0xa2}, -+ {value: 0x0008, lo: 0xa3, hi: 0xa3}, -+ {value: 0x3008, lo: 0xa4, hi: 0xa4}, -+ {value: 0x0040, lo: 0xa5, hi: 0xbf}, -+ // Block 0xcc, offset 0x637 -+ {value: 0x0000, lo: 0x0a}, -+ {value: 0x0008, lo: 0x80, hi: 0x80}, -+ {value: 0x3308, lo: 0x81, 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 0xcd, offset 0x642 -+ {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 0xce, offset 0x64b -+ {value: 0x0000, lo: 0x0a}, -+ {value: 0x0008, lo: 0x80, 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: 0x0008, lo: 0x9d, hi: 0x9d}, -+ {value: 0x0018, lo: 0x9e, hi: 0xa2}, -+ {value: 0x0040, lo: 0xa3, hi: 0xaf}, -+ {value: 0x0008, lo: 0xb0, hi: 0xbf}, -+ // Block 0xcf, offset 0x656 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x0008, lo: 0x80, hi: 0xb8}, -+ {value: 0x0040, lo: 0xb9, hi: 0xbf}, -+ // Block 0xd0, offset 0x659 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x0018, lo: 0x80, hi: 0x89}, -+ {value: 0x0040, lo: 0x8a, hi: 0xbf}, -+ // Block 0xd1, offset 0x65c -+ {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 0xd2, offset 0x666 -+ {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 0xd3, offset 0x66f -+ {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 0xd4, offset 0x67b -+ {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 0xd5, offset 0x688 -+ {value: 0x0000, lo: 0x0c}, -+ {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: 0x9f}, -+ {value: 0x0008, lo: 0xa0, hi: 0xa5}, -+ {value: 0x0040, lo: 0xa6, hi: 0xa6}, -+ {value: 0x0008, lo: 0xa7, hi: 0xa8}, -+ {value: 0x0040, lo: 0xa9, hi: 0xa9}, -+ {value: 0x0008, lo: 0xaa, hi: 0xbf}, -+ // Block 0xd6, offset 0x695 -+ {value: 0x0000, lo: 0x0d}, -+ {value: 0x0008, lo: 0x80, hi: 0x89}, -+ {value: 0x3008, lo: 0x8a, hi: 0x8e}, -+ {value: 0x0040, lo: 0x8f, hi: 0x8f}, -+ {value: 0x3308, lo: 0x90, hi: 0x91}, -+ {value: 0x0040, lo: 0x92, hi: 0x92}, -+ {value: 0x3008, lo: 0x93, hi: 0x94}, -+ {value: 0x3308, lo: 0x95, hi: 0x95}, -+ {value: 0x3008, lo: 0x96, hi: 0x96}, -+ {value: 0x3b08, lo: 0x97, hi: 0x97}, -+ {value: 0x0008, lo: 0x98, hi: 0x98}, -+ {value: 0x0040, lo: 0x99, hi: 0x9f}, -+ {value: 0x0008, lo: 0xa0, hi: 0xa9}, -+ {value: 0x0040, lo: 0xaa, hi: 0xbf}, -+ // Block 0xd7, offset 0x6a3 -+ {value: 0x0000, lo: 0x06}, -+ {value: 0x0040, lo: 0x80, hi: 0x9f}, -+ {value: 0x0008, lo: 0xa0, hi: 0xb2}, -+ {value: 0x3308, lo: 0xb3, hi: 0xb4}, -+ {value: 0x3008, lo: 0xb5, hi: 0xb6}, -+ {value: 0x0018, lo: 0xb7, hi: 0xb8}, -+ {value: 0x0040, lo: 0xb9, hi: 0xbf}, -+ // Block 0xd8, offset 0x6aa -+ {value: 0x0000, lo: 0x0a}, -+ {value: 0x3308, lo: 0x80, hi: 0x81}, -+ {value: 0x0008, lo: 0x82, hi: 0x82}, -+ {value: 0x3008, lo: 0x83, hi: 0x83}, -+ {value: 0x0008, lo: 0x84, hi: 0x90}, -+ {value: 0x0040, lo: 0x91, hi: 0x91}, -+ {value: 0x0008, lo: 0x92, hi: 0xb3}, -+ {value: 0x3008, lo: 0xb4, hi: 0xb5}, -+ {value: 0x3308, lo: 0xb6, hi: 0xba}, -+ {value: 0x0040, lo: 0xbb, hi: 0xbd}, -+ {value: 0x3008, lo: 0xbe, hi: 0xbf}, -+ // Block 0xd9, offset 0x6b5 -+ {value: 0x0000, lo: 0x06}, -+ {value: 0x3308, lo: 0x80, hi: 0x80}, -+ {value: 0x3808, lo: 0x81, hi: 0x81}, -+ {value: 0x3b08, lo: 0x82, hi: 0x82}, -+ {value: 0x0018, lo: 0x83, hi: 0x8f}, -+ {value: 0x0008, lo: 0x90, hi: 0x99}, -+ {value: 0x0040, lo: 0x9a, hi: 0xbf}, -+ // Block 0xda, offset 0x6bc -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x0040, lo: 0x80, hi: 0xaf}, -+ {value: 0x0008, lo: 0xb0, hi: 0xb0}, -+ {value: 0x0040, lo: 0xb1, hi: 0xbf}, -+ // Block 0xdb, offset 0x6c0 -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x0018, lo: 0x80, hi: 0xb1}, -+ {value: 0x0040, lo: 0xb2, hi: 0xbe}, -+ {value: 0x0018, lo: 0xbf, hi: 0xbf}, -+ // Block 0xdc, offset 0x6c4 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x0008, lo: 0x80, hi: 0x99}, -+ {value: 0x0040, lo: 0x9a, hi: 0xbf}, -+ // Block 0xdd, offset 0x6c7 -+ {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 0xde, offset 0x6cc -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x0008, lo: 0x80, hi: 0x83}, -+ {value: 0x0040, lo: 0x84, hi: 0xbf}, -+ // Block 0xdf, offset 0x6cf -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x0040, lo: 0x80, hi: 0x8f}, -+ {value: 0x0008, lo: 0x90, hi: 0xbf}, -+ // Block 0xe0, offset 0x6d2 -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x0008, lo: 0x80, hi: 0xb0}, -+ {value: 0x0018, lo: 0xb1, hi: 0xb2}, -+ {value: 0x0040, lo: 0xb3, hi: 0xbf}, -+ // Block 0xe1, offset 0x6d6 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x0008, lo: 0x80, hi: 0xaf}, -+ {value: 0x0340, lo: 0xb0, hi: 0xbf}, -+ // Block 0xe2, offset 0x6d9 -+ {value: 0x0000, lo: 0x04}, -+ {value: 0x3308, lo: 0x80, hi: 0x80}, -+ {value: 0x0008, lo: 0x81, hi: 0x86}, -+ {value: 0x3308, lo: 0x87, hi: 0x95}, -+ {value: 0x0040, lo: 0x96, hi: 0xbf}, -+ // Block 0xe3, offset 0x6de -+ {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: 0x0008, lo: 0xb0, hi: 0xbf}, -+ // Block 0xe4, offset 0x6e5 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x0008, lo: 0x80, hi: 0xbe}, -+ {value: 0x0040, lo: 0xbf, hi: 0xbf}, -+ // Block 0xe5, offset 0x6e8 -+ {value: 0x0000, lo: 0x07}, -+ {value: 0x0008, lo: 0x80, hi: 0x89}, -+ {value: 0x0040, lo: 0x8a, 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 0xe6, offset 0x6f0 -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x0008, lo: 0x80, hi: 0xaf}, -+ {value: 0x3308, lo: 0xb0, hi: 0xb6}, -+ {value: 0x0018, lo: 0xb7, hi: 0xbf}, -+ // Block 0xe7, offset 0x6f4 -+ {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 0xe8, offset 0x6ff -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x0008, lo: 0x80, hi: 0x8f}, -+ {value: 0x0040, lo: 0x90, hi: 0xbf}, -+ // Block 0xe9, offset 0x702 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0xe105, lo: 0x80, hi: 0x9f}, -+ {value: 0x0008, lo: 0xa0, hi: 0xbf}, -+ // Block 0xea, offset 0x705 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x0018, lo: 0x80, hi: 0x9a}, -+ {value: 0x0040, lo: 0x9b, hi: 0xbf}, -+ // Block 0xeb, offset 0x708 -+ {value: 0x0000, lo: 0x05}, -+ {value: 0x0008, lo: 0x80, hi: 0x8a}, -+ {value: 0x0040, lo: 0x8b, hi: 0x8e}, -+ {value: 0x3308, lo: 0x8f, hi: 0x8f}, -+ {value: 0x0008, lo: 0x90, hi: 0x90}, -+ {value: 0x3008, lo: 0x91, hi: 0xbf}, -+ // Block 0xec, offset 0x70e -+ {value: 0x0000, lo: 0x05}, -+ {value: 0x3008, lo: 0x80, hi: 0x87}, -+ {value: 0x0040, lo: 0x88, hi: 0x8e}, -+ {value: 0x3308, lo: 0x8f, hi: 0x92}, -+ {value: 0x0008, lo: 0x93, hi: 0x9f}, -+ {value: 0x0040, lo: 0xa0, hi: 0xbf}, -+ // Block 0xed, offset 0x714 -+ {value: 0x0000, lo: 0x08}, -+ {value: 0x0040, lo: 0x80, hi: 0x9f}, -+ {value: 0x0008, lo: 0xa0, hi: 0xa1}, -+ {value: 0x0018, lo: 0xa2, hi: 0xa2}, -+ {value: 0x0008, lo: 0xa3, hi: 0xa3}, -+ {value: 0x3308, lo: 0xa4, hi: 0xa4}, -+ {value: 0x0040, lo: 0xa5, hi: 0xaf}, -+ {value: 0x3008, lo: 0xb0, hi: 0xb1}, -+ {value: 0x0040, lo: 0xb2, hi: 0xbf}, -+ // Block 0xee, offset 0x71d -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x0008, lo: 0x80, hi: 0xb7}, -+ {value: 0x0040, lo: 0xb8, hi: 0xbf}, -+ // Block 0xef, offset 0x720 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x0008, lo: 0x80, hi: 0x95}, -+ {value: 0x0040, lo: 0x96, hi: 0xbf}, -+ // Block 0xf0, offset 0x723 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x0008, lo: 0x80, hi: 0x88}, -+ {value: 0x0040, lo: 0x89, hi: 0xbf}, -+ // Block 0xf1, offset 0x726 -+ {value: 0x0000, lo: 0x07}, -+ {value: 0x0040, lo: 0x80, hi: 0xaf}, -+ {value: 0x0008, lo: 0xb0, hi: 0xb3}, -+ {value: 0x0040, lo: 0xb4, hi: 0xb4}, -+ {value: 0x0008, lo: 0xb5, hi: 0xbb}, -+ {value: 0x0040, lo: 0xbc, hi: 0xbc}, -+ {value: 0x0008, lo: 0xbd, hi: 0xbe}, -+ {value: 0x0040, lo: 0xbf, hi: 0xbf}, -+ // Block 0xf2, offset 0x72e -+ {value: 0x0000, lo: 0x04}, -+ {value: 0x0008, lo: 0x80, hi: 0xa2}, -+ {value: 0x0040, lo: 0xa3, hi: 0xb1}, -+ {value: 0x0008, lo: 0xb2, hi: 0xb2}, -+ {value: 0x0040, lo: 0xb3, hi: 0xbf}, -+ // Block 0xf3, offset 0x733 -+ {value: 0x0000, lo: 0x08}, -+ {value: 0x0040, lo: 0x80, hi: 0x8f}, -+ {value: 0x0008, lo: 0x90, hi: 0x92}, -+ {value: 0x0040, lo: 0x93, hi: 0x94}, -+ {value: 0x0008, lo: 0x95, hi: 0x95}, -+ {value: 0x0040, lo: 0x96, hi: 0xa3}, -+ {value: 0x0008, lo: 0xa4, hi: 0xa7}, -+ {value: 0x0040, lo: 0xa8, hi: 0xaf}, -+ {value: 0x0008, lo: 0xb0, hi: 0xbf}, -+ // Block 0xf4, offset 0x73c -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x0008, lo: 0x80, hi: 0xbb}, -+ {value: 0x0040, lo: 0xbc, hi: 0xbf}, -+ // Block 0xf5, offset 0x73f -+ {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 0xf6, offset 0x744 -+ {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 0xf7, offset 0x74e -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x3308, lo: 0x80, hi: 0xad}, -+ {value: 0x0040, lo: 0xae, hi: 0xaf}, -+ {value: 0x3308, lo: 0xb0, hi: 0xbf}, -+ // Block 0xf8, offset 0x752 -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x3308, lo: 0x80, hi: 0x86}, -+ {value: 0x0040, lo: 0x87, hi: 0x8f}, -+ {value: 0x0018, lo: 0x90, hi: 0xbf}, -+ // Block 0xf9, offset 0x756 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x0018, lo: 0x80, hi: 0x83}, -+ {value: 0x0040, lo: 0x84, hi: 0xbf}, -+ // Block 0xfa, offset 0x759 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x0018, lo: 0x80, hi: 0xb5}, -+ {value: 0x0040, lo: 0xb6, hi: 0xbf}, -+ // Block 0xfb, offset 0x75c -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x0018, lo: 0x80, hi: 0xa6}, -+ {value: 0x0040, lo: 0xa7, hi: 0xa8}, -+ {value: 0x0018, lo: 0xa9, hi: 0xbf}, -+ // Block 0xfc, offset 0x760 -+ {value: 0x0000, lo: 0x0e}, -+ {value: 0x0018, lo: 0x80, hi: 0x9d}, -+ {value: 0x2379, lo: 0x9e, hi: 0x9e}, -+ {value: 0x2381, lo: 0x9f, hi: 0x9f}, -+ {value: 0x2389, lo: 0xa0, hi: 0xa0}, -+ {value: 0x2391, lo: 0xa1, hi: 0xa1}, -+ {value: 0x2399, lo: 0xa2, hi: 0xa2}, -+ {value: 0x23a1, lo: 0xa3, hi: 0xa3}, -+ {value: 0x23a9, 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 0xfd, offset 0x76f -+ {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: 0x23b1, lo: 0xbb, hi: 0xbb}, -+ {value: 0x23b9, lo: 0xbc, hi: 0xbc}, -+ {value: 0x23c1, lo: 0xbd, hi: 0xbd}, -+ {value: 0x23c9, lo: 0xbe, hi: 0xbe}, -+ {value: 0x23d1, lo: 0xbf, hi: 0xbf}, -+ // Block 0xfe, offset 0x77b -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x23d9, lo: 0x80, hi: 0x80}, -+ {value: 0x0018, lo: 0x81, hi: 0xaa}, -+ {value: 0x0040, lo: 0xab, hi: 0xbf}, -+ // Block 0xff, offset 0x77f -+ {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 0x100, offset 0x784 -+ {value: 0x0000, lo: 0x04}, -+ {value: 0x0018, lo: 0x80, hi: 0x93}, -+ {value: 0x0040, lo: 0x94, hi: 0x9f}, -+ {value: 0x0018, lo: 0xa0, hi: 0xb3}, -+ {value: 0x0040, lo: 0xb4, hi: 0xbf}, -+ // Block 0x101, offset 0x789 -+ {value: 0x0000, lo: 0x04}, -+ {value: 0x0018, lo: 0x80, hi: 0x96}, -+ {value: 0x0040, lo: 0x97, hi: 0x9f}, -+ {value: 0x0018, lo: 0xa0, hi: 0xb8}, -+ {value: 0x0040, lo: 0xb9, hi: 0xbf}, -+ // Block 0x102, offset 0x78e -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x3308, lo: 0x80, hi: 0xb6}, -+ {value: 0x0018, lo: 0xb7, hi: 0xba}, -+ {value: 0x3308, lo: 0xbb, hi: 0xbf}, -+ // Block 0x103, offset 0x792 -+ {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 0x104, offset 0x797 -+ {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 0x105, offset 0x7a0 -+ {value: 0x0000, lo: 0x04}, -+ {value: 0x0008, lo: 0x80, hi: 0x9e}, -+ {value: 0x0040, lo: 0x9f, hi: 0xa4}, -+ {value: 0x0008, lo: 0xa5, hi: 0xaa}, -+ {value: 0x0040, lo: 0xab, hi: 0xbf}, -+ // Block 0x106, offset 0x7a5 -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x0040, lo: 0x80, hi: 0x8e}, -+ {value: 0x3308, lo: 0x8f, hi: 0x8f}, -+ {value: 0x0040, lo: 0x90, hi: 0xbf}, -+ // Block 0x107, offset 0x7a9 -+ {value: 0x0000, lo: 0x05}, -+ {value: 0x0008, lo: 0x80, hi: 0xac}, -+ {value: 0x0040, lo: 0xad, hi: 0xaf}, -+ {value: 0x3308, lo: 0xb0, hi: 0xb6}, -+ {value: 0x0008, lo: 0xb7, hi: 0xbd}, -+ {value: 0x0040, lo: 0xbe, hi: 0xbf}, -+ // Block 0x108, offset 0x7af -+ {value: 0x0000, lo: 0x05}, -+ {value: 0x0008, lo: 0x80, hi: 0x89}, -+ {value: 0x0040, lo: 0x8a, hi: 0x8d}, -+ {value: 0x0008, lo: 0x8e, hi: 0x8e}, -+ {value: 0x0018, lo: 0x8f, hi: 0x8f}, -+ {value: 0x0040, lo: 0x90, hi: 0xbf}, -+ // Block 0x109, offset 0x7b5 -+ {value: 0x0000, lo: 0x04}, -+ {value: 0x0040, lo: 0x80, hi: 0x8f}, -+ {value: 0x0008, lo: 0x90, hi: 0xad}, -+ {value: 0x3308, lo: 0xae, hi: 0xae}, -+ {value: 0x0040, lo: 0xaf, hi: 0xbf}, -+ // Block 0x10a, offset 0x7ba -+ {value: 0x0000, lo: 0x05}, -+ {value: 0x0008, lo: 0x80, hi: 0xab}, -+ {value: 0x3308, lo: 0xac, hi: 0xaf}, -+ {value: 0x0008, lo: 0xb0, hi: 0xb9}, -+ {value: 0x0040, lo: 0xba, hi: 0xbe}, -+ {value: 0x0018, lo: 0xbf, hi: 0xbf}, -+ // Block 0x10b, offset 0x7c0 -+ {value: 0x0000, lo: 0x05}, -+ {value: 0x0040, lo: 0x80, hi: 0x8f}, -+ {value: 0x0008, lo: 0x90, hi: 0xab}, -+ {value: 0x3308, lo: 0xac, hi: 0xaf}, -+ {value: 0x0008, lo: 0xb0, hi: 0xb9}, -+ {value: 0x0040, lo: 0xba, hi: 0xbf}, -+ // Block 0x10c, offset 0x7c6 -+ {value: 0x0000, lo: 0x09}, -+ {value: 0x0040, lo: 0x80, hi: 0x9f}, -+ {value: 0x0008, lo: 0xa0, hi: 0xa6}, -+ {value: 0x0040, lo: 0xa7, hi: 0xa7}, -+ {value: 0x0008, lo: 0xa8, hi: 0xab}, -+ {value: 0x0040, lo: 0xac, hi: 0xac}, -+ {value: 0x0008, lo: 0xad, hi: 0xae}, -+ {value: 0x0040, lo: 0xaf, hi: 0xaf}, -+ {value: 0x0008, lo: 0xb0, hi: 0xbe}, -+ {value: 0x0040, lo: 0xbf, hi: 0xbf}, -+ // Block 0x10d, offset 0x7d0 -+ {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 0x10e, offset 0x7d6 -+ {value: 0x0000, lo: 0x08}, -+ {value: 0x0a08, lo: 0x80, hi: 0x83}, -+ {value: 0x3308, lo: 0x84, hi: 0x8a}, -+ {value: 0x0b08, lo: 0x8b, hi: 0x8b}, -+ {value: 0x0040, lo: 0x8c, 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 0x10f, offset 0x7df -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x0040, lo: 0x80, hi: 0xb0}, -+ {value: 0x0818, lo: 0xb1, hi: 0xbf}, -+ // Block 0x110, offset 0x7e2 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x0818, lo: 0x80, hi: 0xb4}, -+ {value: 0x0040, lo: 0xb5, hi: 0xbf}, -+ // Block 0x111, offset 0x7e5 -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x0040, lo: 0x80, hi: 0x80}, -+ {value: 0x0818, lo: 0x81, hi: 0xbd}, -+ {value: 0x0040, lo: 0xbe, hi: 0xbf}, -+ // Block 0x112, offset 0x7e9 -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x0040, lo: 0x80, hi: 0xaf}, -+ {value: 0x0018, lo: 0xb0, hi: 0xb1}, -+ {value: 0x0040, lo: 0xb2, hi: 0xbf}, -+ // Block 0x113, offset 0x7ed -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x0018, lo: 0x80, hi: 0xab}, -+ {value: 0x0040, lo: 0xac, hi: 0xaf}, -+ {value: 0x0018, lo: 0xb0, hi: 0xbf}, -+ // Block 0x114, offset 0x7f1 -+ {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 0x115, offset 0x7f7 -+ {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 0x116, offset 0x7fd -+ {value: 0x0000, lo: 0x04}, -+ {value: 0x0018, lo: 0x80, hi: 0x8f}, -+ {value: 0x2709, lo: 0x90, hi: 0x90}, -+ {value: 0x0018, lo: 0x91, hi: 0xad}, -+ {value: 0x0040, lo: 0xae, hi: 0xbf}, -+ // Block 0x117, offset 0x802 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x0040, lo: 0x80, hi: 0xa5}, -+ {value: 0x0018, lo: 0xa6, hi: 0xbf}, -+ // Block 0x118, offset 0x805 -+ {value: 0x0000, lo: 0x0f}, -+ {value: 0x2889, lo: 0x80, hi: 0x80}, -+ {value: 0x2891, lo: 0x81, hi: 0x81}, -+ {value: 0x2899, lo: 0x82, hi: 0x82}, -+ {value: 0x28a1, lo: 0x83, hi: 0x83}, -+ {value: 0x28a9, lo: 0x84, hi: 0x84}, -+ {value: 0x28b1, lo: 0x85, hi: 0x85}, -+ {value: 0x28b9, lo: 0x86, hi: 0x86}, -+ {value: 0x28c1, lo: 0x87, hi: 0x87}, -+ {value: 0x28c9, lo: 0x88, hi: 0x88}, -+ {value: 0x0040, lo: 0x89, hi: 0x8f}, -+ {value: 0x28d1, lo: 0x90, hi: 0x90}, -+ {value: 0x28d9, lo: 0x91, hi: 0x91}, -+ {value: 0x0040, lo: 0x92, hi: 0x9f}, -+ {value: 0x0018, lo: 0xa0, hi: 0xa5}, -+ {value: 0x0040, lo: 0xa6, hi: 0xbf}, -+ // Block 0x119, offset 0x815 -+ {value: 0x0000, lo: 0x06}, -+ {value: 0x0018, lo: 0x80, hi: 0x97}, -+ {value: 0x0040, lo: 0x98, hi: 0x9b}, -+ {value: 0x0018, lo: 0x9c, hi: 0xac}, -+ {value: 0x0040, lo: 0xad, hi: 0xaf}, -+ {value: 0x0018, lo: 0xb0, hi: 0xbc}, -+ {value: 0x0040, lo: 0xbd, hi: 0xbf}, -+ // Block 0x11a, offset 0x81c -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x0018, lo: 0x80, hi: 0xb6}, -+ {value: 0x0040, lo: 0xb7, hi: 0xba}, -+ {value: 0x0018, lo: 0xbb, hi: 0xbf}, -+ // Block 0x11b, offset 0x820 -+ {value: 0x0000, lo: 0x06}, -+ {value: 0x0018, lo: 0x80, hi: 0x99}, -+ {value: 0x0040, lo: 0x9a, hi: 0x9f}, -+ {value: 0x0018, lo: 0xa0, hi: 0xab}, -+ {value: 0x0040, lo: 0xac, hi: 0xaf}, -+ {value: 0x0018, lo: 0xb0, hi: 0xb0}, -+ {value: 0x0040, lo: 0xb1, hi: 0xbf}, -+ // Block 0x11c, offset 0x827 -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x0018, lo: 0x80, hi: 0x8b}, -+ {value: 0x0040, lo: 0x8c, hi: 0x8f}, -+ {value: 0x0018, lo: 0x90, hi: 0xbf}, -+ // Block 0x11d, offset 0x82b -+ {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 0x11e, offset 0x831 -+ {value: 0x0000, lo: 0x06}, -+ {value: 0x0018, lo: 0x80, hi: 0x87}, -+ {value: 0x0040, lo: 0x88, hi: 0x8f}, -+ {value: 0x0018, lo: 0x90, hi: 0xad}, -+ {value: 0x0040, lo: 0xae, hi: 0xaf}, -+ {value: 0x0018, lo: 0xb0, hi: 0xb1}, -+ {value: 0x0040, lo: 0xb2, hi: 0xbf}, -+ // Block 0x11f, offset 0x838 -+ {value: 0x0000, lo: 0x06}, -+ {value: 0x0018, lo: 0x80, hi: 0x93}, -+ {value: 0x0040, lo: 0x94, hi: 0x9f}, -+ {value: 0x0018, lo: 0xa0, hi: 0xad}, -+ {value: 0x0040, lo: 0xae, hi: 0xaf}, -+ {value: 0x0018, lo: 0xb0, hi: 0xbc}, -+ {value: 0x0040, lo: 0xbd, hi: 0xbf}, -+ // Block 0x120, offset 0x83f -+ {value: 0x0000, lo: 0x05}, -+ {value: 0x0018, lo: 0x80, hi: 0x88}, -+ {value: 0x0040, lo: 0x89, hi: 0x8f}, -+ {value: 0x0018, lo: 0x90, hi: 0xbd}, -+ {value: 0x0040, lo: 0xbe, hi: 0xbe}, -+ {value: 0x0018, lo: 0xbf, hi: 0xbf}, -+ // Block 0x121, offset 0x845 -+ {value: 0x0000, lo: 0x08}, -+ {value: 0x0018, lo: 0x80, hi: 0x85}, -+ {value: 0x0040, lo: 0x86, hi: 0x8d}, -+ {value: 0x0018, lo: 0x8e, hi: 0x9b}, -+ {value: 0x0040, lo: 0x9c, hi: 0x9f}, -+ {value: 0x0018, lo: 0xa0, hi: 0xa8}, -+ {value: 0x0040, lo: 0xa9, hi: 0xaf}, -+ {value: 0x0018, lo: 0xb0, hi: 0xb8}, -+ {value: 0x0040, lo: 0xb9, hi: 0xbf}, -+ // Block 0x122, offset 0x84e -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x0018, lo: 0x80, hi: 0x92}, -+ {value: 0x0040, lo: 0x93, hi: 0x93}, -+ {value: 0x0018, lo: 0x94, hi: 0xbf}, -+ // Block 0x123, offset 0x852 -+ {value: 0x0000, lo: 0x0d}, -+ {value: 0x0018, lo: 0x80, hi: 0x8a}, -+ {value: 0x0040, lo: 0x8b, hi: 0xaf}, -+ {value: 0x06e1, lo: 0xb0, hi: 0xb0}, -+ {value: 0x0049, lo: 0xb1, hi: 0xb1}, -+ {value: 0x0029, lo: 0xb2, hi: 0xb2}, -+ {value: 0x0031, lo: 0xb3, hi: 0xb3}, -+ {value: 0x06e9, lo: 0xb4, hi: 0xb4}, -+ {value: 0x06f1, lo: 0xb5, hi: 0xb5}, -+ {value: 0x06f9, lo: 0xb6, hi: 0xb6}, -+ {value: 0x0701, lo: 0xb7, hi: 0xb7}, -+ {value: 0x0709, lo: 0xb8, hi: 0xb8}, -+ {value: 0x0711, lo: 0xb9, hi: 0xb9}, -+ {value: 0x0040, lo: 0xba, hi: 0xbf}, -+ // Block 0x124, offset 0x860 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x0008, lo: 0x80, hi: 0x9f}, -+ {value: 0x0040, lo: 0xa0, hi: 0xbf}, -+ // Block 0x125, offset 0x863 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x0008, lo: 0x80, hi: 0xb9}, -+ {value: 0x0040, lo: 0xba, hi: 0xbf}, -+ // Block 0x126, offset 0x866 -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x0008, lo: 0x80, hi: 0x9d}, -+ {value: 0x0040, lo: 0x9e, hi: 0x9f}, -+ {value: 0x0008, lo: 0xa0, hi: 0xbf}, -+ // Block 0x127, offset 0x86a -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x0008, lo: 0x80, hi: 0xa1}, -+ {value: 0x0040, lo: 0xa2, hi: 0xaf}, -+ {value: 0x0008, lo: 0xb0, hi: 0xbf}, -+ // Block 0x128, offset 0x86e -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x0008, lo: 0x80, hi: 0xa0}, -+ {value: 0x0040, lo: 0xa1, hi: 0xbf}, -+ // Block 0x129, offset 0x871 -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x0008, lo: 0x80, hi: 0x8a}, -+ {value: 0x0040, lo: 0x8b, hi: 0x8f}, -+ {value: 0x0008, lo: 0x90, hi: 0xbf}, -+ // Block 0x12a, offset 0x875 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x0008, lo: 0x80, hi: 0xaf}, -+ {value: 0x0040, lo: 0xb0, hi: 0xbf}, -+ // Block 0x12b, offset 0x878 -+ {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 0x12c, offset 0x87d -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x0340, lo: 0x80, hi: 0xbf}, -+ // Block 0x12d, offset 0x87f -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x33c0, lo: 0x80, hi: 0xbf}, -+ // Block 0x12e, offset 0x881 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x33c0, lo: 0x80, hi: 0xaf}, -+ {value: 0x0040, lo: 0xb0, hi: 0xbf}, -+} -+ -+// Total table size 46723 bytes (45KiB); checksum: 4CF3143A -diff --git a/vendor/golang.org/x/net/idna/tables9.0.0.go b/vendor/golang.org/x/net/idna/tables9.0.0.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/idna/trie.go b/vendor/golang.org/x/net/idna/trie.go -old mode 100644 -new mode 100755 -index c4ef847..4212741 ---- a/vendor/golang.org/x/net/idna/trie.go -+++ b/vendor/golang.org/x/net/idna/trie.go -@@ -6,27 +6,6 @@ - - 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 { -diff --git a/vendor/golang.org/x/net/idna/trie12.0.0.go b/vendor/golang.org/x/net/idna/trie12.0.0.go -new file mode 100755 -index 0000000..bb63f90 ---- /dev/null -+++ b/vendor/golang.org/x/net/idna/trie12.0.0.go -@@ -0,0 +1,31 @@ -+// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. -+ -+// 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:build !go1.16 -+// +build !go1.16 -+ -+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 -+} -diff --git a/vendor/golang.org/x/net/idna/trie13.0.0.go b/vendor/golang.org/x/net/idna/trie13.0.0.go -new file mode 100755 -index 0000000..7d68a8d ---- /dev/null -+++ b/vendor/golang.org/x/net/idna/trie13.0.0.go -@@ -0,0 +1,31 @@ -+// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. -+ -+// 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:build go1.16 -+// +build go1.16 -+ -+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 { -+ p := index -+ return append(b, mappings[mappingIndex[p]:mappingIndex[p+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 -+} -diff --git a/vendor/golang.org/x/net/idna/trieval.go b/vendor/golang.org/x/net/idna/trieval.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/net/internal/timeseries/timeseries.go b/vendor/golang.org/x/net/internal/timeseries/timeseries.go -new file mode 100755 -index 0000000..dc5225b ---- /dev/null -+++ b/vendor/golang.org/x/net/internal/timeseries/timeseries.go -@@ -0,0 +1,525 @@ -+// 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 implements a time series structure for stats collection. -+package timeseries // import "golang.org/x/net/internal/timeseries" -+ -+import ( -+ "fmt" -+ "log" -+ "time" -+) -+ -+const ( -+ timeSeriesNumBuckets = 64 -+ minuteHourSeriesNumBuckets = 60 -+) -+ -+var timeSeriesResolutions = []time.Duration{ -+ 1 * time.Second, -+ 10 * time.Second, -+ 1 * time.Minute, -+ 10 * time.Minute, -+ 1 * time.Hour, -+ 6 * time.Hour, -+ 24 * time.Hour, // 1 day -+ 7 * 24 * time.Hour, // 1 week -+ 4 * 7 * 24 * time.Hour, // 4 weeks -+ 16 * 7 * 24 * time.Hour, // 16 weeks -+} -+ -+var minuteHourSeriesResolutions = []time.Duration{ -+ 1 * time.Second, -+ 1 * time.Minute, -+} -+ -+// An Observable is a kind of data that can be aggregated in a time series. -+type Observable interface { -+ Multiply(ratio float64) // Multiplies the data in self by a given ratio -+ Add(other Observable) // Adds the data from a different observation to self -+ Clear() // Clears the observation so it can be reused. -+ CopyFrom(other Observable) // Copies the contents of a given observation to self -+} -+ -+// Float attaches the methods of Observable to a float64. -+type Float float64 -+ -+// NewFloat returns a Float. -+func NewFloat() Observable { -+ f := Float(0) -+ return &f -+} -+ -+// String returns the float as a string. -+func (f *Float) String() string { return fmt.Sprintf("%g", f.Value()) } -+ -+// Value returns the float's value. -+func (f *Float) Value() float64 { return float64(*f) } -+ -+func (f *Float) Multiply(ratio float64) { *f *= Float(ratio) } -+ -+func (f *Float) Add(other Observable) { -+ o := other.(*Float) -+ *f += *o -+} -+ -+func (f *Float) Clear() { *f = 0 } -+ -+func (f *Float) CopyFrom(other Observable) { -+ o := other.(*Float) -+ *f = *o -+} -+ -+// A Clock tells the current time. -+type Clock interface { -+ Time() time.Time -+} -+ -+type defaultClock int -+ -+var defaultClockInstance defaultClock -+ -+func (defaultClock) Time() time.Time { return time.Now() } -+ -+// Information kept per level. Each level consists of a circular list of -+// observations. The start of the level may be derived from end and the -+// len(buckets) * sizeInMillis. -+type tsLevel struct { -+ oldest int // index to oldest bucketed Observable -+ newest int // index to newest bucketed Observable -+ end time.Time // end timestamp for this level -+ size time.Duration // duration of the bucketed Observable -+ buckets []Observable // collections of observations -+ provider func() Observable // used for creating new Observable -+} -+ -+func (l *tsLevel) Clear() { -+ l.oldest = 0 -+ l.newest = len(l.buckets) - 1 -+ l.end = time.Time{} -+ for i := range l.buckets { -+ if l.buckets[i] != nil { -+ l.buckets[i].Clear() -+ l.buckets[i] = nil -+ } -+ } -+} -+ -+func (l *tsLevel) InitLevel(size time.Duration, numBuckets int, f func() Observable) { -+ l.size = size -+ l.provider = f -+ l.buckets = make([]Observable, numBuckets) -+} -+ -+// Keeps a sequence of levels. Each level is responsible for storing data at -+// a given resolution. For example, the first level stores data at a one -+// minute resolution while the second level stores data at a one hour -+// resolution. -+ -+// Each level is represented by a sequence of buckets. Each bucket spans an -+// interval equal to the resolution of the level. New observations are added -+// to the last bucket. -+type timeSeries struct { -+ provider func() Observable // make more Observable -+ numBuckets int // number of buckets in each level -+ levels []*tsLevel // levels of bucketed Observable -+ lastAdd time.Time // time of last Observable tracked -+ total Observable // convenient aggregation of all Observable -+ clock Clock // Clock for getting current time -+ pending Observable // observations not yet bucketed -+ pendingTime time.Time // what time are we keeping in pending -+ dirty bool // if there are pending observations -+} -+ -+// init initializes a level according to the supplied criteria. -+func (ts *timeSeries) init(resolutions []time.Duration, f func() Observable, numBuckets int, clock Clock) { -+ ts.provider = f -+ ts.numBuckets = numBuckets -+ ts.clock = clock -+ ts.levels = make([]*tsLevel, len(resolutions)) -+ -+ for i := range resolutions { -+ if i > 0 && resolutions[i-1] >= resolutions[i] { -+ log.Print("timeseries: resolutions must be monotonically increasing") -+ break -+ } -+ newLevel := new(tsLevel) -+ newLevel.InitLevel(resolutions[i], ts.numBuckets, ts.provider) -+ ts.levels[i] = newLevel -+ } -+ -+ ts.Clear() -+} -+ -+// Clear removes all observations from the time series. -+func (ts *timeSeries) Clear() { -+ ts.lastAdd = time.Time{} -+ ts.total = ts.resetObservation(ts.total) -+ ts.pending = ts.resetObservation(ts.pending) -+ ts.pendingTime = time.Time{} -+ ts.dirty = false -+ -+ for i := range ts.levels { -+ ts.levels[i].Clear() -+ } -+} -+ -+// Add records an observation at the current time. -+func (ts *timeSeries) Add(observation Observable) { -+ ts.AddWithTime(observation, ts.clock.Time()) -+} -+ -+// AddWithTime records an observation at the specified time. -+func (ts *timeSeries) AddWithTime(observation Observable, t time.Time) { -+ -+ smallBucketDuration := ts.levels[0].size -+ -+ if t.After(ts.lastAdd) { -+ ts.lastAdd = t -+ } -+ -+ if t.After(ts.pendingTime) { -+ ts.advance(t) -+ ts.mergePendingUpdates() -+ ts.pendingTime = ts.levels[0].end -+ ts.pending.CopyFrom(observation) -+ ts.dirty = true -+ } else if t.After(ts.pendingTime.Add(-1 * smallBucketDuration)) { -+ // The observation is close enough to go into the pending bucket. -+ // This compensates for clock skewing and small scheduling delays -+ // by letting the update stay in the fast path. -+ ts.pending.Add(observation) -+ ts.dirty = true -+ } else { -+ ts.mergeValue(observation, t) -+ } -+} -+ -+// mergeValue inserts the observation at the specified time in the past into all levels. -+func (ts *timeSeries) mergeValue(observation Observable, t time.Time) { -+ for _, level := range ts.levels { -+ index := (ts.numBuckets - 1) - int(level.end.Sub(t)/level.size) -+ if 0 <= index && index < ts.numBuckets { -+ bucketNumber := (level.oldest + index) % ts.numBuckets -+ if level.buckets[bucketNumber] == nil { -+ level.buckets[bucketNumber] = level.provider() -+ } -+ level.buckets[bucketNumber].Add(observation) -+ } -+ } -+ ts.total.Add(observation) -+} -+ -+// mergePendingUpdates applies the pending updates into all levels. -+func (ts *timeSeries) mergePendingUpdates() { -+ if ts.dirty { -+ ts.mergeValue(ts.pending, ts.pendingTime) -+ ts.pending = ts.resetObservation(ts.pending) -+ ts.dirty = false -+ } -+} -+ -+// advance cycles the buckets at each level until the latest bucket in -+// each level can hold the time specified. -+func (ts *timeSeries) advance(t time.Time) { -+ if !t.After(ts.levels[0].end) { -+ return -+ } -+ for i := 0; i < len(ts.levels); i++ { -+ level := ts.levels[i] -+ if !level.end.Before(t) { -+ break -+ } -+ -+ // If the time is sufficiently far, just clear the level and advance -+ // directly. -+ if !t.Before(level.end.Add(level.size * time.Duration(ts.numBuckets))) { -+ for _, b := range level.buckets { -+ ts.resetObservation(b) -+ } -+ level.end = time.Unix(0, (t.UnixNano()/level.size.Nanoseconds())*level.size.Nanoseconds()) -+ } -+ -+ for t.After(level.end) { -+ level.end = level.end.Add(level.size) -+ level.newest = level.oldest -+ level.oldest = (level.oldest + 1) % ts.numBuckets -+ ts.resetObservation(level.buckets[level.newest]) -+ } -+ -+ t = level.end -+ } -+} -+ -+// Latest returns the sum of the num latest buckets from the level. -+func (ts *timeSeries) Latest(level, num int) Observable { -+ now := ts.clock.Time() -+ if ts.levels[0].end.Before(now) { -+ ts.advance(now) -+ } -+ -+ ts.mergePendingUpdates() -+ -+ result := ts.provider() -+ l := ts.levels[level] -+ index := l.newest -+ -+ for i := 0; i < num; i++ { -+ if l.buckets[index] != nil { -+ result.Add(l.buckets[index]) -+ } -+ if index == 0 { -+ index = ts.numBuckets -+ } -+ index-- -+ } -+ -+ return result -+} -+ -+// LatestBuckets returns a copy of the num latest buckets from level. -+func (ts *timeSeries) LatestBuckets(level, num int) []Observable { -+ if level < 0 || level > len(ts.levels) { -+ log.Print("timeseries: bad level argument: ", level) -+ return nil -+ } -+ if num < 0 || num >= ts.numBuckets { -+ log.Print("timeseries: bad num argument: ", num) -+ return nil -+ } -+ -+ results := make([]Observable, num) -+ now := ts.clock.Time() -+ if ts.levels[0].end.Before(now) { -+ ts.advance(now) -+ } -+ -+ ts.mergePendingUpdates() -+ -+ l := ts.levels[level] -+ index := l.newest -+ -+ for i := 0; i < num; i++ { -+ result := ts.provider() -+ results[i] = result -+ if l.buckets[index] != nil { -+ result.CopyFrom(l.buckets[index]) -+ } -+ -+ if index == 0 { -+ index = ts.numBuckets -+ } -+ index -= 1 -+ } -+ return results -+} -+ -+// ScaleBy updates observations by scaling by factor. -+func (ts *timeSeries) ScaleBy(factor float64) { -+ for _, l := range ts.levels { -+ for i := 0; i < ts.numBuckets; i++ { -+ l.buckets[i].Multiply(factor) -+ } -+ } -+ -+ ts.total.Multiply(factor) -+ ts.pending.Multiply(factor) -+} -+ -+// Range returns the sum of observations added over the specified time range. -+// If start or finish times don't fall on bucket boundaries of the same -+// level, then return values are approximate answers. -+func (ts *timeSeries) Range(start, finish time.Time) Observable { -+ return ts.ComputeRange(start, finish, 1)[0] -+} -+ -+// Recent returns the sum of observations from the last delta. -+func (ts *timeSeries) Recent(delta time.Duration) Observable { -+ now := ts.clock.Time() -+ return ts.Range(now.Add(-delta), now) -+} -+ -+// Total returns the total of all observations. -+func (ts *timeSeries) Total() Observable { -+ ts.mergePendingUpdates() -+ return ts.total -+} -+ -+// ComputeRange computes a specified number of values into a slice using -+// the observations recorded over the specified time period. The return -+// values are approximate if the start or finish times don't fall on the -+// bucket boundaries at the same level or if the number of buckets spanning -+// the range is not an integral multiple of num. -+func (ts *timeSeries) ComputeRange(start, finish time.Time, num int) []Observable { -+ if start.After(finish) { -+ log.Printf("timeseries: start > finish, %v>%v", start, finish) -+ return nil -+ } -+ -+ if num < 0 { -+ log.Printf("timeseries: num < 0, %v", num) -+ return nil -+ } -+ -+ results := make([]Observable, num) -+ -+ for _, l := range ts.levels { -+ if !start.Before(l.end.Add(-l.size * time.Duration(ts.numBuckets))) { -+ ts.extract(l, start, finish, num, results) -+ return results -+ } -+ } -+ -+ // Failed to find a level that covers the desired range. So just -+ // extract from the last level, even if it doesn't cover the entire -+ // desired range. -+ ts.extract(ts.levels[len(ts.levels)-1], start, finish, num, results) -+ -+ return results -+} -+ -+// RecentList returns the specified number of values in slice over the most -+// recent time period of the specified range. -+func (ts *timeSeries) RecentList(delta time.Duration, num int) []Observable { -+ if delta < 0 { -+ return nil -+ } -+ now := ts.clock.Time() -+ return ts.ComputeRange(now.Add(-delta), now, num) -+} -+ -+// extract returns a slice of specified number of observations from a given -+// level over a given range. -+func (ts *timeSeries) extract(l *tsLevel, start, finish time.Time, num int, results []Observable) { -+ ts.mergePendingUpdates() -+ -+ srcInterval := l.size -+ dstInterval := finish.Sub(start) / time.Duration(num) -+ dstStart := start -+ srcStart := l.end.Add(-srcInterval * time.Duration(ts.numBuckets)) -+ -+ srcIndex := 0 -+ -+ // Where should scanning start? -+ if dstStart.After(srcStart) { -+ advance := int(dstStart.Sub(srcStart) / srcInterval) -+ srcIndex += advance -+ srcStart = srcStart.Add(time.Duration(advance) * srcInterval) -+ } -+ -+ // The i'th value is computed as show below. -+ // interval = (finish/start)/num -+ // i'th value = sum of observation in range -+ // [ start + i * interval, -+ // start + (i + 1) * interval ) -+ for i := 0; i < num; i++ { -+ results[i] = ts.resetObservation(results[i]) -+ dstEnd := dstStart.Add(dstInterval) -+ for srcIndex < ts.numBuckets && srcStart.Before(dstEnd) { -+ srcEnd := srcStart.Add(srcInterval) -+ if srcEnd.After(ts.lastAdd) { -+ srcEnd = ts.lastAdd -+ } -+ -+ if !srcEnd.Before(dstStart) { -+ srcValue := l.buckets[(srcIndex+l.oldest)%ts.numBuckets] -+ if !srcStart.Before(dstStart) && !srcEnd.After(dstEnd) { -+ // dst completely contains src. -+ if srcValue != nil { -+ results[i].Add(srcValue) -+ } -+ } else { -+ // dst partially overlaps src. -+ overlapStart := maxTime(srcStart, dstStart) -+ overlapEnd := minTime(srcEnd, dstEnd) -+ base := srcEnd.Sub(srcStart) -+ fraction := overlapEnd.Sub(overlapStart).Seconds() / base.Seconds() -+ -+ used := ts.provider() -+ if srcValue != nil { -+ used.CopyFrom(srcValue) -+ } -+ used.Multiply(fraction) -+ results[i].Add(used) -+ } -+ -+ if srcEnd.After(dstEnd) { -+ break -+ } -+ } -+ srcIndex++ -+ srcStart = srcStart.Add(srcInterval) -+ } -+ dstStart = dstStart.Add(dstInterval) -+ } -+} -+ -+// resetObservation clears the content so the struct may be reused. -+func (ts *timeSeries) resetObservation(observation Observable) Observable { -+ if observation == nil { -+ observation = ts.provider() -+ } else { -+ observation.Clear() -+ } -+ return observation -+} -+ -+// TimeSeries tracks data at granularities from 1 second to 16 weeks. -+type TimeSeries struct { -+ timeSeries -+} -+ -+// NewTimeSeries creates a new TimeSeries using the function provided for creating new Observable. -+func NewTimeSeries(f func() Observable) *TimeSeries { -+ return NewTimeSeriesWithClock(f, defaultClockInstance) -+} -+ -+// NewTimeSeriesWithClock creates a new TimeSeries using the function provided for creating new Observable and the clock for -+// assigning timestamps. -+func NewTimeSeriesWithClock(f func() Observable, clock Clock) *TimeSeries { -+ ts := new(TimeSeries) -+ ts.timeSeries.init(timeSeriesResolutions, f, timeSeriesNumBuckets, clock) -+ return ts -+} -+ -+// MinuteHourSeries tracks data at granularities of 1 minute and 1 hour. -+type MinuteHourSeries struct { -+ timeSeries -+} -+ -+// NewMinuteHourSeries creates a new MinuteHourSeries using the function provided for creating new Observable. -+func NewMinuteHourSeries(f func() Observable) *MinuteHourSeries { -+ return NewMinuteHourSeriesWithClock(f, defaultClockInstance) -+} -+ -+// NewMinuteHourSeriesWithClock creates a new MinuteHourSeries using the function provided for creating new Observable and the clock for -+// assigning timestamps. -+func NewMinuteHourSeriesWithClock(f func() Observable, clock Clock) *MinuteHourSeries { -+ ts := new(MinuteHourSeries) -+ ts.timeSeries.init(minuteHourSeriesResolutions, f, -+ minuteHourSeriesNumBuckets, clock) -+ return ts -+} -+ -+func (ts *MinuteHourSeries) Minute() Observable { -+ return ts.timeSeries.Latest(0, 60) -+} -+ -+func (ts *MinuteHourSeries) Hour() Observable { -+ return ts.timeSeries.Latest(1, 60) -+} -+ -+func minTime(a, b time.Time) time.Time { -+ if a.Before(b) { -+ return a -+ } -+ return b -+} -+ -+func maxTime(a, b time.Time) time.Time { -+ if a.After(b) { -+ return a -+ } -+ return b -+} -diff --git a/vendor/golang.org/x/net/trace/events.go b/vendor/golang.org/x/net/trace/events.go -new file mode 100755 -index 0000000..c646a69 ---- /dev/null -+++ b/vendor/golang.org/x/net/trace/events.go -@@ -0,0 +1,532 @@ -+// 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 ( -+ "bytes" -+ "fmt" -+ "html/template" -+ "io" -+ "log" -+ "net/http" -+ "runtime" -+ "sort" -+ "strconv" -+ "strings" -+ "sync" -+ "sync/atomic" -+ "text/tabwriter" -+ "time" -+) -+ -+const maxEventsPerLog = 100 -+ -+type bucket struct { -+ MaxErrAge time.Duration -+ String string -+} -+ -+var buckets = []bucket{ -+ {0, "total"}, -+ {10 * time.Second, "errs<10s"}, -+ {1 * time.Minute, "errs<1m"}, -+ {10 * time.Minute, "errs<10m"}, -+ {1 * time.Hour, "errs<1h"}, -+ {10 * time.Hour, "errs<10h"}, -+ {24000 * time.Hour, "errors"}, -+} -+ -+// RenderEvents renders the HTML page typically served at /debug/events. -+// It does not do any auth checking. The request may be nil. -+// -+// Most users will use the Events handler. -+func RenderEvents(w http.ResponseWriter, req *http.Request, sensitive bool) { -+ now := time.Now() -+ data := &struct { -+ Families []string // family names -+ Buckets []bucket -+ Counts [][]int // eventLog count per family/bucket -+ -+ // Set when a bucket has been selected. -+ Family string -+ Bucket int -+ EventLogs eventLogs -+ Expanded bool -+ }{ -+ Buckets: buckets, -+ } -+ -+ data.Families = make([]string, 0, len(families)) -+ famMu.RLock() -+ for name := range families { -+ data.Families = append(data.Families, name) -+ } -+ famMu.RUnlock() -+ sort.Strings(data.Families) -+ -+ // Count the number of eventLogs in each family for each error age. -+ data.Counts = make([][]int, len(data.Families)) -+ for i, name := range data.Families { -+ // TODO(sameer): move this loop under the family lock. -+ f := getEventFamily(name) -+ data.Counts[i] = make([]int, len(data.Buckets)) -+ for j, b := range data.Buckets { -+ data.Counts[i][j] = f.Count(now, b.MaxErrAge) -+ } -+ } -+ -+ if req != nil { -+ var ok bool -+ data.Family, data.Bucket, ok = parseEventsArgs(req) -+ if !ok { -+ // No-op -+ } else { -+ data.EventLogs = getEventFamily(data.Family).Copy(now, buckets[data.Bucket].MaxErrAge) -+ } -+ if data.EventLogs != nil { -+ defer data.EventLogs.Free() -+ sort.Sort(data.EventLogs) -+ } -+ if exp, err := strconv.ParseBool(req.FormValue("exp")); err == nil { -+ data.Expanded = exp -+ } -+ } -+ -+ famMu.RLock() -+ defer famMu.RUnlock() -+ if err := eventsTmpl().Execute(w, data); err != nil { -+ log.Printf("net/trace: Failed executing template: %v", err) -+ } -+} -+ -+func parseEventsArgs(req *http.Request) (fam string, b int, ok bool) { -+ fam, bStr := req.FormValue("fam"), req.FormValue("b") -+ if fam == "" || bStr == "" { -+ return "", 0, false -+ } -+ b, err := strconv.Atoi(bStr) -+ if err != nil || b < 0 || b >= len(buckets) { -+ return "", 0, false -+ } -+ return fam, b, true -+} -+ -+// An EventLog provides a log of events associated with a specific object. -+type EventLog interface { -+ // Printf formats its arguments with fmt.Sprintf and adds the -+ // result to the event log. -+ Printf(format string, a ...interface{}) -+ -+ // Errorf is like Printf, but it marks this event as an error. -+ Errorf(format string, a ...interface{}) -+ -+ // Finish declares that this event log is complete. -+ // The event log should not be used after calling this method. -+ Finish() -+} -+ -+// NewEventLog returns a new EventLog with the specified family name -+// and title. -+func NewEventLog(family, title string) EventLog { -+ el := newEventLog() -+ el.ref() -+ el.Family, el.Title = family, title -+ el.Start = time.Now() -+ el.events = make([]logEntry, 0, maxEventsPerLog) -+ el.stack = make([]uintptr, 32) -+ n := runtime.Callers(2, el.stack) -+ el.stack = el.stack[:n] -+ -+ getEventFamily(family).add(el) -+ return el -+} -+ -+func (el *eventLog) Finish() { -+ getEventFamily(el.Family).remove(el) -+ el.unref() // matches ref in New -+} -+ -+var ( -+ famMu sync.RWMutex -+ families = make(map[string]*eventFamily) // family name => family -+) -+ -+func getEventFamily(fam string) *eventFamily { -+ famMu.Lock() -+ defer famMu.Unlock() -+ f := families[fam] -+ if f == nil { -+ f = &eventFamily{} -+ families[fam] = f -+ } -+ return f -+} -+ -+type eventFamily struct { -+ mu sync.RWMutex -+ eventLogs eventLogs -+} -+ -+func (f *eventFamily) add(el *eventLog) { -+ f.mu.Lock() -+ f.eventLogs = append(f.eventLogs, el) -+ f.mu.Unlock() -+} -+ -+func (f *eventFamily) remove(el *eventLog) { -+ f.mu.Lock() -+ defer f.mu.Unlock() -+ for i, el0 := range f.eventLogs { -+ if el == el0 { -+ copy(f.eventLogs[i:], f.eventLogs[i+1:]) -+ f.eventLogs = f.eventLogs[:len(f.eventLogs)-1] -+ return -+ } -+ } -+} -+ -+func (f *eventFamily) Count(now time.Time, maxErrAge time.Duration) (n int) { -+ f.mu.RLock() -+ defer f.mu.RUnlock() -+ for _, el := range f.eventLogs { -+ if el.hasRecentError(now, maxErrAge) { -+ n++ -+ } -+ } -+ return -+} -+ -+func (f *eventFamily) Copy(now time.Time, maxErrAge time.Duration) (els eventLogs) { -+ f.mu.RLock() -+ defer f.mu.RUnlock() -+ els = make(eventLogs, 0, len(f.eventLogs)) -+ for _, el := range f.eventLogs { -+ if el.hasRecentError(now, maxErrAge) { -+ el.ref() -+ els = append(els, el) -+ } -+ } -+ return -+} -+ -+type eventLogs []*eventLog -+ -+// Free calls unref on each element of the list. -+func (els eventLogs) Free() { -+ for _, el := range els { -+ el.unref() -+ } -+} -+ -+// eventLogs may be sorted in reverse chronological order. -+func (els eventLogs) Len() int { return len(els) } -+func (els eventLogs) Less(i, j int) bool { return els[i].Start.After(els[j].Start) } -+func (els eventLogs) Swap(i, j int) { els[i], els[j] = els[j], els[i] } -+ -+// A logEntry is a timestamped log entry in an event log. -+type logEntry struct { -+ When time.Time -+ Elapsed time.Duration // since previous event in log -+ NewDay bool // whether this event is on a different day to the previous event -+ What string -+ IsErr bool -+} -+ -+// WhenString returns a string representation of the elapsed time of the event. -+// It will include the date if midnight was crossed. -+func (e logEntry) WhenString() string { -+ if e.NewDay { -+ return e.When.Format("2006/01/02 15:04:05.000000") -+ } -+ return e.When.Format("15:04:05.000000") -+} -+ -+// An eventLog represents an active event log. -+type eventLog struct { -+ // Family is the top-level grouping of event logs to which this belongs. -+ Family string -+ -+ // Title is the title of this event log. -+ Title string -+ -+ // Timing information. -+ Start time.Time -+ -+ // Call stack where this event log was created. -+ stack []uintptr -+ -+ // Append-only sequence of events. -+ // -+ // TODO(sameer): change this to a ring buffer to avoid the array copy -+ // when we hit maxEventsPerLog. -+ mu sync.RWMutex -+ events []logEntry -+ LastErrorTime time.Time -+ discarded int -+ -+ refs int32 // how many buckets this is in -+} -+ -+func (el *eventLog) reset() { -+ // Clear all but the mutex. Mutexes may not be copied, even when unlocked. -+ el.Family = "" -+ el.Title = "" -+ el.Start = time.Time{} -+ el.stack = nil -+ el.events = nil -+ el.LastErrorTime = time.Time{} -+ el.discarded = 0 -+ el.refs = 0 -+} -+ -+func (el *eventLog) hasRecentError(now time.Time, maxErrAge time.Duration) bool { -+ if maxErrAge == 0 { -+ return true -+ } -+ el.mu.RLock() -+ defer el.mu.RUnlock() -+ return now.Sub(el.LastErrorTime) < maxErrAge -+} -+ -+// delta returns the elapsed time since the last event or the log start, -+// and whether it spans midnight. -+// L >= el.mu -+func (el *eventLog) delta(t time.Time) (time.Duration, bool) { -+ if len(el.events) == 0 { -+ return t.Sub(el.Start), false -+ } -+ prev := el.events[len(el.events)-1].When -+ return t.Sub(prev), prev.Day() != t.Day() -+ -+} -+ -+func (el *eventLog) Printf(format string, a ...interface{}) { -+ el.printf(false, format, a...) -+} -+ -+func (el *eventLog) Errorf(format string, a ...interface{}) { -+ el.printf(true, format, a...) -+} -+ -+func (el *eventLog) printf(isErr bool, format string, a ...interface{}) { -+ e := logEntry{When: time.Now(), IsErr: isErr, What: fmt.Sprintf(format, a...)} -+ el.mu.Lock() -+ e.Elapsed, e.NewDay = el.delta(e.When) -+ if len(el.events) < maxEventsPerLog { -+ el.events = append(el.events, e) -+ } else { -+ // Discard the oldest event. -+ if el.discarded == 0 { -+ // el.discarded starts at two to count for the event it -+ // is replacing, plus the next one that we are about to -+ // drop. -+ el.discarded = 2 -+ } else { -+ el.discarded++ -+ } -+ // TODO(sameer): if this causes allocations on a critical path, -+ // change eventLog.What to be a fmt.Stringer, as in trace.go. -+ el.events[0].What = fmt.Sprintf("(%d events discarded)", el.discarded) -+ // The timestamp of the discarded meta-event should be -+ // the time of the last event it is representing. -+ el.events[0].When = el.events[1].When -+ copy(el.events[1:], el.events[2:]) -+ el.events[maxEventsPerLog-1] = e -+ } -+ if e.IsErr { -+ el.LastErrorTime = e.When -+ } -+ el.mu.Unlock() -+} -+ -+func (el *eventLog) ref() { -+ atomic.AddInt32(&el.refs, 1) -+} -+ -+func (el *eventLog) unref() { -+ if atomic.AddInt32(&el.refs, -1) == 0 { -+ freeEventLog(el) -+ } -+} -+ -+func (el *eventLog) When() string { -+ return el.Start.Format("2006/01/02 15:04:05.000000") -+} -+ -+func (el *eventLog) ElapsedTime() string { -+ elapsed := time.Since(el.Start) -+ return fmt.Sprintf("%.6f", elapsed.Seconds()) -+} -+ -+func (el *eventLog) Stack() string { -+ buf := new(bytes.Buffer) -+ tw := tabwriter.NewWriter(buf, 1, 8, 1, '\t', 0) -+ printStackRecord(tw, el.stack) -+ tw.Flush() -+ return buf.String() -+} -+ -+// printStackRecord prints the function + source line information -+// for a single stack trace. -+// Adapted from runtime/pprof/pprof.go. -+func printStackRecord(w io.Writer, stk []uintptr) { -+ for _, pc := range stk { -+ f := runtime.FuncForPC(pc) -+ if f == nil { -+ continue -+ } -+ file, line := f.FileLine(pc) -+ name := f.Name() -+ // Hide runtime.goexit and any runtime functions at the beginning. -+ if strings.HasPrefix(name, "runtime.") { -+ continue -+ } -+ fmt.Fprintf(w, "# %s\t%s:%d\n", name, file, line) -+ } -+} -+ -+func (el *eventLog) Events() []logEntry { -+ el.mu.RLock() -+ defer el.mu.RUnlock() -+ return el.events -+} -+ -+// freeEventLogs is a freelist of *eventLog -+var freeEventLogs = make(chan *eventLog, 1000) -+ -+// newEventLog returns a event log ready to use. -+func newEventLog() *eventLog { -+ select { -+ case el := <-freeEventLogs: -+ return el -+ default: -+ return new(eventLog) -+ } -+} -+ -+// freeEventLog adds el to freeEventLogs if there's room. -+// This is non-blocking. -+func freeEventLog(el *eventLog) { -+ el.reset() -+ select { -+ case freeEventLogs <- el: -+ default: -+ } -+} -+ -+var eventsTmplCache *template.Template -+var eventsTmplOnce sync.Once -+ -+func eventsTmpl() *template.Template { -+ eventsTmplOnce.Do(func() { -+ eventsTmplCache = template.Must(template.New("events").Funcs(template.FuncMap{ -+ "elapsed": elapsed, -+ "trimSpace": strings.TrimSpace, -+ }).Parse(eventsHTML)) -+ }) -+ return eventsTmplCache -+} -+ -+const eventsHTML = ` -+ -+ -+ events -+ -+ -+ -+ -+

/debug/events

-+ -+ -+ {{range $i, $fam := .Families}} -+ -+ -+ -+ {{range $j, $bucket := $.Buckets}} -+ {{$n := index $.Counts $i $j}} -+ -+ {{end}} -+ -+ {{end}} -+
{{$fam}} -+ {{if $n}}{{end}} -+ [{{$n}} {{$bucket.String}}] -+ {{if $n}}{{end}} -+
-+ -+{{if $.EventLogs}} -+
-+

Family: {{$.Family}}

-+ -+{{if $.Expanded}}{{end}} -+[Summary]{{if $.Expanded}}{{end}} -+ -+{{if not $.Expanded}}{{end}} -+[Expanded]{{if not $.Expanded}}{{end}} -+ -+ -+ -+ {{range $el := $.EventLogs}} -+ -+ -+ -+ -+ {{if $.Expanded}} -+ -+ -+ -+ -+ -+ {{range $el.Events}} -+ -+ -+ -+ -+ -+ {{end}} -+ {{end}} -+ {{end}} -+
WhenElapsed
{{$el.When}}{{$el.ElapsedTime}}{{$el.Title}} -+
{{$el.Stack|trimSpace}}
{{.WhenString}}{{elapsed .Elapsed}}.{{if .IsErr}}E{{else}}.{{end}}. {{.What}}
-+{{end}} -+ -+ -+` -diff --git a/vendor/golang.org/x/net/trace/histogram.go b/vendor/golang.org/x/net/trace/histogram.go -new file mode 100755 -index 0000000..d6c7110 ---- /dev/null -+++ b/vendor/golang.org/x/net/trace/histogram.go -@@ -0,0 +1,365 @@ -+// 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 -+ -+// This file implements histogramming for RPC statistics collection. -+ -+import ( -+ "bytes" -+ "fmt" -+ "html/template" -+ "log" -+ "math" -+ "sync" -+ -+ "golang.org/x/net/internal/timeseries" -+) -+ -+const ( -+ bucketCount = 38 -+) -+ -+// histogram keeps counts of values in buckets that are spaced -+// out in powers of 2: 0-1, 2-3, 4-7... -+// histogram implements timeseries.Observable -+type histogram struct { -+ sum int64 // running total of measurements -+ sumOfSquares float64 // square of running total -+ buckets []int64 // bucketed values for histogram -+ value int // holds a single value as an optimization -+ valueCount int64 // number of values recorded for single value -+} -+ -+// addMeasurement records a value measurement observation to the histogram. -+func (h *histogram) addMeasurement(value int64) { -+ // TODO: assert invariant -+ h.sum += value -+ h.sumOfSquares += float64(value) * float64(value) -+ -+ bucketIndex := getBucket(value) -+ -+ if h.valueCount == 0 || (h.valueCount > 0 && h.value == bucketIndex) { -+ h.value = bucketIndex -+ h.valueCount++ -+ } else { -+ h.allocateBuckets() -+ h.buckets[bucketIndex]++ -+ } -+} -+ -+func (h *histogram) allocateBuckets() { -+ if h.buckets == nil { -+ h.buckets = make([]int64, bucketCount) -+ h.buckets[h.value] = h.valueCount -+ h.value = 0 -+ h.valueCount = -1 -+ } -+} -+ -+func log2(i int64) int { -+ n := 0 -+ for ; i >= 0x100; i >>= 8 { -+ n += 8 -+ } -+ for ; i > 0; i >>= 1 { -+ n += 1 -+ } -+ return n -+} -+ -+func getBucket(i int64) (index int) { -+ index = log2(i) - 1 -+ if index < 0 { -+ index = 0 -+ } -+ if index >= bucketCount { -+ index = bucketCount - 1 -+ } -+ return -+} -+ -+// Total returns the number of recorded observations. -+func (h *histogram) total() (total int64) { -+ if h.valueCount >= 0 { -+ total = h.valueCount -+ } -+ for _, val := range h.buckets { -+ total += int64(val) -+ } -+ return -+} -+ -+// Average returns the average value of recorded observations. -+func (h *histogram) average() float64 { -+ t := h.total() -+ if t == 0 { -+ return 0 -+ } -+ return float64(h.sum) / float64(t) -+} -+ -+// Variance returns the variance of recorded observations. -+func (h *histogram) variance() float64 { -+ t := float64(h.total()) -+ if t == 0 { -+ return 0 -+ } -+ s := float64(h.sum) / t -+ return h.sumOfSquares/t - s*s -+} -+ -+// StandardDeviation returns the standard deviation of recorded observations. -+func (h *histogram) standardDeviation() float64 { -+ return math.Sqrt(h.variance()) -+} -+ -+// PercentileBoundary estimates the value that the given fraction of recorded -+// observations are less than. -+func (h *histogram) percentileBoundary(percentile float64) int64 { -+ total := h.total() -+ -+ // Corner cases (make sure result is strictly less than Total()) -+ if total == 0 { -+ return 0 -+ } else if total == 1 { -+ return int64(h.average()) -+ } -+ -+ percentOfTotal := round(float64(total) * percentile) -+ var runningTotal int64 -+ -+ for i := range h.buckets { -+ value := h.buckets[i] -+ runningTotal += value -+ if runningTotal == percentOfTotal { -+ // We hit an exact bucket boundary. If the next bucket has data, it is a -+ // good estimate of the value. If the bucket is empty, we interpolate the -+ // midpoint between the next bucket's boundary and the next non-zero -+ // bucket. If the remaining buckets are all empty, then we use the -+ // boundary for the next bucket as the estimate. -+ j := uint8(i + 1) -+ min := bucketBoundary(j) -+ if runningTotal < total { -+ for h.buckets[j] == 0 { -+ j++ -+ } -+ } -+ max := bucketBoundary(j) -+ return min + round(float64(max-min)/2) -+ } else if runningTotal > percentOfTotal { -+ // The value is in this bucket. Interpolate the value. -+ delta := runningTotal - percentOfTotal -+ percentBucket := float64(value-delta) / float64(value) -+ bucketMin := bucketBoundary(uint8(i)) -+ nextBucketMin := bucketBoundary(uint8(i + 1)) -+ bucketSize := nextBucketMin - bucketMin -+ return bucketMin + round(percentBucket*float64(bucketSize)) -+ } -+ } -+ return bucketBoundary(bucketCount - 1) -+} -+ -+// Median returns the estimated median of the observed values. -+func (h *histogram) median() int64 { -+ return h.percentileBoundary(0.5) -+} -+ -+// Add adds other to h. -+func (h *histogram) Add(other timeseries.Observable) { -+ o := other.(*histogram) -+ if o.valueCount == 0 { -+ // Other histogram is empty -+ } else if h.valueCount >= 0 && o.valueCount > 0 && h.value == o.value { -+ // Both have a single bucketed value, aggregate them -+ h.valueCount += o.valueCount -+ } else { -+ // Two different values necessitate buckets in this histogram -+ h.allocateBuckets() -+ if o.valueCount >= 0 { -+ h.buckets[o.value] += o.valueCount -+ } else { -+ for i := range h.buckets { -+ h.buckets[i] += o.buckets[i] -+ } -+ } -+ } -+ h.sumOfSquares += o.sumOfSquares -+ h.sum += o.sum -+} -+ -+// Clear resets the histogram to an empty state, removing all observed values. -+func (h *histogram) Clear() { -+ h.buckets = nil -+ h.value = 0 -+ h.valueCount = 0 -+ h.sum = 0 -+ h.sumOfSquares = 0 -+} -+ -+// CopyFrom copies from other, which must be a *histogram, into h. -+func (h *histogram) CopyFrom(other timeseries.Observable) { -+ o := other.(*histogram) -+ if o.valueCount == -1 { -+ h.allocateBuckets() -+ copy(h.buckets, o.buckets) -+ } -+ h.sum = o.sum -+ h.sumOfSquares = o.sumOfSquares -+ h.value = o.value -+ h.valueCount = o.valueCount -+} -+ -+// Multiply scales the histogram by the specified ratio. -+func (h *histogram) Multiply(ratio float64) { -+ if h.valueCount == -1 { -+ for i := range h.buckets { -+ h.buckets[i] = int64(float64(h.buckets[i]) * ratio) -+ } -+ } else { -+ h.valueCount = int64(float64(h.valueCount) * ratio) -+ } -+ h.sum = int64(float64(h.sum) * ratio) -+ h.sumOfSquares = h.sumOfSquares * ratio -+} -+ -+// New creates a new histogram. -+func (h *histogram) New() timeseries.Observable { -+ r := new(histogram) -+ r.Clear() -+ return r -+} -+ -+func (h *histogram) String() string { -+ return fmt.Sprintf("%d, %f, %d, %d, %v", -+ h.sum, h.sumOfSquares, h.value, h.valueCount, h.buckets) -+} -+ -+// round returns the closest int64 to the argument -+func round(in float64) int64 { -+ return int64(math.Floor(in + 0.5)) -+} -+ -+// bucketBoundary returns the first value in the bucket. -+func bucketBoundary(bucket uint8) int64 { -+ if bucket == 0 { -+ return 0 -+ } -+ return 1 << bucket -+} -+ -+// bucketData holds data about a specific bucket for use in distTmpl. -+type bucketData struct { -+ Lower, Upper int64 -+ N int64 -+ Pct, CumulativePct float64 -+ GraphWidth int -+} -+ -+// data holds data about a Distribution for use in distTmpl. -+type data struct { -+ Buckets []*bucketData -+ Count, Median int64 -+ Mean, StandardDeviation float64 -+} -+ -+// maxHTMLBarWidth is the maximum width of the HTML bar for visualizing buckets. -+const maxHTMLBarWidth = 350.0 -+ -+// newData returns data representing h for use in distTmpl. -+func (h *histogram) newData() *data { -+ // Force the allocation of buckets to simplify the rendering implementation -+ h.allocateBuckets() -+ // We scale the bars on the right so that the largest bar is -+ // maxHTMLBarWidth pixels in width. -+ maxBucket := int64(0) -+ for _, n := range h.buckets { -+ if n > maxBucket { -+ maxBucket = n -+ } -+ } -+ total := h.total() -+ barsizeMult := maxHTMLBarWidth / float64(maxBucket) -+ var pctMult float64 -+ if total == 0 { -+ pctMult = 1.0 -+ } else { -+ pctMult = 100.0 / float64(total) -+ } -+ -+ buckets := make([]*bucketData, len(h.buckets)) -+ runningTotal := int64(0) -+ for i, n := range h.buckets { -+ if n == 0 { -+ continue -+ } -+ runningTotal += n -+ var upperBound int64 -+ if i < bucketCount-1 { -+ upperBound = bucketBoundary(uint8(i + 1)) -+ } else { -+ upperBound = math.MaxInt64 -+ } -+ buckets[i] = &bucketData{ -+ Lower: bucketBoundary(uint8(i)), -+ Upper: upperBound, -+ N: n, -+ Pct: float64(n) * pctMult, -+ CumulativePct: float64(runningTotal) * pctMult, -+ GraphWidth: int(float64(n) * barsizeMult), -+ } -+ } -+ return &data{ -+ Buckets: buckets, -+ Count: total, -+ Median: h.median(), -+ Mean: h.average(), -+ StandardDeviation: h.standardDeviation(), -+ } -+} -+ -+func (h *histogram) html() template.HTML { -+ buf := new(bytes.Buffer) -+ if err := distTmpl().Execute(buf, h.newData()); err != nil { -+ buf.Reset() -+ log.Printf("net/trace: couldn't execute template: %v", err) -+ } -+ return template.HTML(buf.String()) -+} -+ -+var distTmplCache *template.Template -+var distTmplOnce sync.Once -+ -+func distTmpl() *template.Template { -+ distTmplOnce.Do(func() { -+ // Input: data -+ distTmplCache = template.Must(template.New("distTmpl").Parse(` -+ -+ -+ -+ -+ -+ -+ -+
Count: {{.Count}}Mean: {{printf "%.0f" .Mean}}StdDev: {{printf "%.0f" .StandardDeviation}}Median: {{.Median}}
-+
-+ -+{{range $b := .Buckets}} -+{{if $b}} -+ -+ -+ -+ -+ -+ -+ -+ -+ -+{{end}} -+{{end}} -+
[{{.Lower}},{{.Upper}}){{.N}}{{printf "%#.3f" .Pct}}%{{printf "%#.3f" .CumulativePct}}%
-+`)) -+ }) -+ return distTmplCache -+} -diff --git a/vendor/golang.org/x/net/trace/trace.go b/vendor/golang.org/x/net/trace/trace.go -new file mode 100755 -index 0000000..eae2a99 ---- /dev/null -+++ b/vendor/golang.org/x/net/trace/trace.go -@@ -0,0 +1,1130 @@ -+// 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 implements tracing of requests and long-lived objects. -+It exports HTTP interfaces on /debug/requests and /debug/events. -+ -+A trace.Trace provides tracing for short-lived objects, usually requests. -+A request handler might be implemented like this: -+ -+ func fooHandler(w http.ResponseWriter, req *http.Request) { -+ tr := trace.New("mypkg.Foo", req.URL.Path) -+ defer tr.Finish() -+ ... -+ tr.LazyPrintf("some event %q happened", str) -+ ... -+ if err := somethingImportant(); err != nil { -+ tr.LazyPrintf("somethingImportant failed: %v", err) -+ tr.SetError() -+ } -+ } -+ -+The /debug/requests HTTP endpoint organizes the traces by family, -+errors, and duration. It also provides histogram of request duration -+for each family. -+ -+A trace.EventLog provides tracing for long-lived objects, such as RPC -+connections. -+ -+ // A Fetcher fetches URL paths for a single domain. -+ type Fetcher struct { -+ domain string -+ events trace.EventLog -+ } -+ -+ func NewFetcher(domain string) *Fetcher { -+ return &Fetcher{ -+ domain, -+ trace.NewEventLog("mypkg.Fetcher", domain), -+ } -+ } -+ -+ func (f *Fetcher) Fetch(path string) (string, error) { -+ resp, err := http.Get("http://" + f.domain + "/" + path) -+ if err != nil { -+ f.events.Errorf("Get(%q) = %v", path, err) -+ return "", err -+ } -+ f.events.Printf("Get(%q) = %s", path, resp.Status) -+ ... -+ } -+ -+ func (f *Fetcher) Close() error { -+ f.events.Finish() -+ return nil -+ } -+ -+The /debug/events HTTP endpoint organizes the event logs by family and -+by time since the last error. The expanded view displays recent log -+entries and the log's call stack. -+*/ -+package trace // import "golang.org/x/net/trace" -+ -+import ( -+ "bytes" -+ "context" -+ "fmt" -+ "html/template" -+ "io" -+ "log" -+ "net" -+ "net/http" -+ "net/url" -+ "runtime" -+ "sort" -+ "strconv" -+ "sync" -+ "sync/atomic" -+ "time" -+ -+ "golang.org/x/net/internal/timeseries" -+) -+ -+// DebugUseAfterFinish controls whether to debug uses of Trace values after finishing. -+// FOR DEBUGGING ONLY. This will slow down the program. -+var DebugUseAfterFinish = false -+ -+// HTTP ServeMux paths. -+const ( -+ debugRequestsPath = "/debug/requests" -+ debugEventsPath = "/debug/events" -+) -+ -+// AuthRequest determines whether a specific request is permitted to load the -+// /debug/requests or /debug/events pages. -+// -+// It returns two bools; the first indicates whether the page may be viewed at all, -+// and the second indicates whether sensitive events will be shown. -+// -+// AuthRequest may be replaced by a program to customize its authorization requirements. -+// -+// The default AuthRequest function returns (true, true) if and only if the request -+// comes from localhost/127.0.0.1/[::1]. -+var AuthRequest = func(req *http.Request) (any, sensitive bool) { -+ // RemoteAddr is commonly in the form "IP" or "IP:port". -+ // If it is in the form "IP:port", split off the port. -+ host, _, err := net.SplitHostPort(req.RemoteAddr) -+ if err != nil { -+ host = req.RemoteAddr -+ } -+ switch host { -+ case "localhost", "127.0.0.1", "::1": -+ return true, true -+ default: -+ return false, false -+ } -+} -+ -+func init() { -+ _, pat := http.DefaultServeMux.Handler(&http.Request{URL: &url.URL{Path: debugRequestsPath}}) -+ if pat == debugRequestsPath { -+ panic("/debug/requests is already registered. You may have two independent copies of " + -+ "golang.org/x/net/trace in your binary, trying to maintain separate state. This may " + -+ "involve a vendored copy of golang.org/x/net/trace.") -+ } -+ -+ // TODO(jbd): Serve Traces from /debug/traces in the future? -+ // There is no requirement for a request to be present to have traces. -+ http.HandleFunc(debugRequestsPath, Traces) -+ http.HandleFunc(debugEventsPath, Events) -+} -+ -+// NewContext returns a copy of the parent context -+// and associates it with a Trace. -+func NewContext(ctx context.Context, tr Trace) context.Context { -+ return context.WithValue(ctx, contextKey, tr) -+} -+ -+// FromContext returns the Trace bound to the context, if any. -+func FromContext(ctx context.Context) (tr Trace, ok bool) { -+ tr, ok = ctx.Value(contextKey).(Trace) -+ return -+} -+ -+// Traces responds with traces from the program. -+// The package initialization registers it in http.DefaultServeMux -+// at /debug/requests. -+// -+// It performs authorization by running AuthRequest. -+func Traces(w http.ResponseWriter, req *http.Request) { -+ any, sensitive := AuthRequest(req) -+ if !any { -+ http.Error(w, "not allowed", http.StatusUnauthorized) -+ return -+ } -+ w.Header().Set("Content-Type", "text/html; charset=utf-8") -+ Render(w, req, sensitive) -+} -+ -+// Events responds with a page of events collected by EventLogs. -+// The package initialization registers it in http.DefaultServeMux -+// at /debug/events. -+// -+// It performs authorization by running AuthRequest. -+func Events(w http.ResponseWriter, req *http.Request) { -+ any, sensitive := AuthRequest(req) -+ if !any { -+ http.Error(w, "not allowed", http.StatusUnauthorized) -+ return -+ } -+ w.Header().Set("Content-Type", "text/html; charset=utf-8") -+ RenderEvents(w, req, sensitive) -+} -+ -+// Render renders the HTML page typically served at /debug/requests. -+// It does not do any auth checking. The request may be nil. -+// -+// Most users will use the Traces handler. -+func Render(w io.Writer, req *http.Request, sensitive bool) { -+ data := &struct { -+ Families []string -+ ActiveTraceCount map[string]int -+ CompletedTraces map[string]*family -+ -+ // Set when a bucket has been selected. -+ Traces traceList -+ Family string -+ Bucket int -+ Expanded bool -+ Traced bool -+ Active bool -+ ShowSensitive bool // whether to show sensitive events -+ -+ Histogram template.HTML -+ HistogramWindow string // e.g. "last minute", "last hour", "all time" -+ -+ // If non-zero, the set of traces is a partial set, -+ // and this is the total number. -+ Total int -+ }{ -+ CompletedTraces: completedTraces, -+ } -+ -+ data.ShowSensitive = sensitive -+ if req != nil { -+ // Allow show_sensitive=0 to force hiding of sensitive data for testing. -+ // This only goes one way; you can't use show_sensitive=1 to see things. -+ if req.FormValue("show_sensitive") == "0" { -+ data.ShowSensitive = false -+ } -+ -+ if exp, err := strconv.ParseBool(req.FormValue("exp")); err == nil { -+ data.Expanded = exp -+ } -+ if exp, err := strconv.ParseBool(req.FormValue("rtraced")); err == nil { -+ data.Traced = exp -+ } -+ } -+ -+ completedMu.RLock() -+ data.Families = make([]string, 0, len(completedTraces)) -+ for fam := range completedTraces { -+ data.Families = append(data.Families, fam) -+ } -+ completedMu.RUnlock() -+ sort.Strings(data.Families) -+ -+ // We are careful here to minimize the time spent locking activeMu, -+ // since that lock is required every time an RPC starts and finishes. -+ data.ActiveTraceCount = make(map[string]int, len(data.Families)) -+ activeMu.RLock() -+ for fam, s := range activeTraces { -+ data.ActiveTraceCount[fam] = s.Len() -+ } -+ activeMu.RUnlock() -+ -+ var ok bool -+ data.Family, data.Bucket, ok = parseArgs(req) -+ switch { -+ case !ok: -+ // No-op -+ case data.Bucket == -1: -+ data.Active = true -+ n := data.ActiveTraceCount[data.Family] -+ data.Traces = getActiveTraces(data.Family) -+ if len(data.Traces) < n { -+ data.Total = n -+ } -+ case data.Bucket < bucketsPerFamily: -+ if b := lookupBucket(data.Family, data.Bucket); b != nil { -+ data.Traces = b.Copy(data.Traced) -+ } -+ default: -+ if f := getFamily(data.Family, false); f != nil { -+ var obs timeseries.Observable -+ f.LatencyMu.RLock() -+ switch o := data.Bucket - bucketsPerFamily; o { -+ case 0: -+ obs = f.Latency.Minute() -+ data.HistogramWindow = "last minute" -+ case 1: -+ obs = f.Latency.Hour() -+ data.HistogramWindow = "last hour" -+ case 2: -+ obs = f.Latency.Total() -+ data.HistogramWindow = "all time" -+ } -+ f.LatencyMu.RUnlock() -+ if obs != nil { -+ data.Histogram = obs.(*histogram).html() -+ } -+ } -+ } -+ -+ if data.Traces != nil { -+ defer data.Traces.Free() -+ sort.Sort(data.Traces) -+ } -+ -+ completedMu.RLock() -+ defer completedMu.RUnlock() -+ if err := pageTmpl().ExecuteTemplate(w, "Page", data); err != nil { -+ log.Printf("net/trace: Failed executing template: %v", err) -+ } -+} -+ -+func parseArgs(req *http.Request) (fam string, b int, ok bool) { -+ if req == nil { -+ return "", 0, false -+ } -+ fam, bStr := req.FormValue("fam"), req.FormValue("b") -+ if fam == "" || bStr == "" { -+ return "", 0, false -+ } -+ b, err := strconv.Atoi(bStr) -+ if err != nil || b < -1 { -+ return "", 0, false -+ } -+ -+ return fam, b, true -+} -+ -+func lookupBucket(fam string, b int) *traceBucket { -+ f := getFamily(fam, false) -+ if f == nil || b < 0 || b >= len(f.Buckets) { -+ return nil -+ } -+ return f.Buckets[b] -+} -+ -+type contextKeyT string -+ -+var contextKey = contextKeyT("golang.org/x/net/trace.Trace") -+ -+// Trace represents an active request. -+type Trace interface { -+ // LazyLog adds x to the event log. It will be evaluated each time the -+ // /debug/requests page is rendered. Any memory referenced by x will be -+ // pinned until the trace is finished and later discarded. -+ LazyLog(x fmt.Stringer, sensitive bool) -+ -+ // LazyPrintf evaluates its arguments with fmt.Sprintf each time the -+ // /debug/requests page is rendered. Any memory referenced by a will be -+ // pinned until the trace is finished and later discarded. -+ LazyPrintf(format string, a ...interface{}) -+ -+ // SetError declares that this trace resulted in an error. -+ SetError() -+ -+ // SetRecycler sets a recycler for the trace. -+ // f will be called for each event passed to LazyLog at a time when -+ // it is no longer required, whether while the trace is still active -+ // and the event is discarded, or when a completed trace is discarded. -+ SetRecycler(f func(interface{})) -+ -+ // SetTraceInfo sets the trace info for the trace. -+ // This is currently unused. -+ SetTraceInfo(traceID, spanID uint64) -+ -+ // SetMaxEvents sets the maximum number of events that will be stored -+ // in the trace. This has no effect if any events have already been -+ // added to the trace. -+ SetMaxEvents(m int) -+ -+ // Finish declares that this trace is complete. -+ // The trace should not be used after calling this method. -+ Finish() -+} -+ -+type lazySprintf struct { -+ format string -+ a []interface{} -+} -+ -+func (l *lazySprintf) String() string { -+ return fmt.Sprintf(l.format, l.a...) -+} -+ -+// New returns a new Trace with the specified family and title. -+func New(family, title string) Trace { -+ tr := newTrace() -+ tr.ref() -+ tr.Family, tr.Title = family, title -+ tr.Start = time.Now() -+ tr.maxEvents = maxEventsPerTrace -+ tr.events = tr.eventsBuf[:0] -+ -+ activeMu.RLock() -+ s := activeTraces[tr.Family] -+ activeMu.RUnlock() -+ if s == nil { -+ activeMu.Lock() -+ s = activeTraces[tr.Family] // check again -+ if s == nil { -+ s = new(traceSet) -+ activeTraces[tr.Family] = s -+ } -+ activeMu.Unlock() -+ } -+ s.Add(tr) -+ -+ // Trigger allocation of the completed trace structure for this family. -+ // This will cause the family to be present in the request page during -+ // the first trace of this family. We don't care about the return value, -+ // nor is there any need for this to run inline, so we execute it in its -+ // own goroutine, but only if the family isn't allocated yet. -+ completedMu.RLock() -+ if _, ok := completedTraces[tr.Family]; !ok { -+ go allocFamily(tr.Family) -+ } -+ completedMu.RUnlock() -+ -+ return tr -+} -+ -+func (tr *trace) Finish() { -+ elapsed := time.Since(tr.Start) -+ tr.mu.Lock() -+ tr.Elapsed = elapsed -+ tr.mu.Unlock() -+ -+ if DebugUseAfterFinish { -+ buf := make([]byte, 4<<10) // 4 KB should be enough -+ n := runtime.Stack(buf, false) -+ tr.finishStack = buf[:n] -+ } -+ -+ activeMu.RLock() -+ m := activeTraces[tr.Family] -+ activeMu.RUnlock() -+ m.Remove(tr) -+ -+ f := getFamily(tr.Family, true) -+ tr.mu.RLock() // protects tr fields in Cond.match calls -+ for _, b := range f.Buckets { -+ if b.Cond.match(tr) { -+ b.Add(tr) -+ } -+ } -+ tr.mu.RUnlock() -+ -+ // Add a sample of elapsed time as microseconds to the family's timeseries -+ h := new(histogram) -+ h.addMeasurement(elapsed.Nanoseconds() / 1e3) -+ f.LatencyMu.Lock() -+ f.Latency.Add(h) -+ f.LatencyMu.Unlock() -+ -+ tr.unref() // matches ref in New -+} -+ -+const ( -+ bucketsPerFamily = 9 -+ tracesPerBucket = 10 -+ maxActiveTraces = 20 // Maximum number of active traces to show. -+ maxEventsPerTrace = 10 -+ numHistogramBuckets = 38 -+) -+ -+var ( -+ // The active traces. -+ activeMu sync.RWMutex -+ activeTraces = make(map[string]*traceSet) // family -> traces -+ -+ // Families of completed traces. -+ completedMu sync.RWMutex -+ completedTraces = make(map[string]*family) // family -> traces -+) -+ -+type traceSet struct { -+ mu sync.RWMutex -+ m map[*trace]bool -+ -+ // We could avoid the entire map scan in FirstN by having a slice of all the traces -+ // ordered by start time, and an index into that from the trace struct, with a periodic -+ // repack of the slice after enough traces finish; we could also use a skip list or similar. -+ // However, that would shift some of the expense from /debug/requests time to RPC time, -+ // which is probably the wrong trade-off. -+} -+ -+func (ts *traceSet) Len() int { -+ ts.mu.RLock() -+ defer ts.mu.RUnlock() -+ return len(ts.m) -+} -+ -+func (ts *traceSet) Add(tr *trace) { -+ ts.mu.Lock() -+ if ts.m == nil { -+ ts.m = make(map[*trace]bool) -+ } -+ ts.m[tr] = true -+ ts.mu.Unlock() -+} -+ -+func (ts *traceSet) Remove(tr *trace) { -+ ts.mu.Lock() -+ delete(ts.m, tr) -+ ts.mu.Unlock() -+} -+ -+// FirstN returns the first n traces ordered by time. -+func (ts *traceSet) FirstN(n int) traceList { -+ ts.mu.RLock() -+ defer ts.mu.RUnlock() -+ -+ if n > len(ts.m) { -+ n = len(ts.m) -+ } -+ trl := make(traceList, 0, n) -+ -+ // Fast path for when no selectivity is needed. -+ if n == len(ts.m) { -+ for tr := range ts.m { -+ tr.ref() -+ trl = append(trl, tr) -+ } -+ sort.Sort(trl) -+ return trl -+ } -+ -+ // Pick the oldest n traces. -+ // This is inefficient. See the comment in the traceSet struct. -+ for tr := range ts.m { -+ // Put the first n traces into trl in the order they occur. -+ // When we have n, sort trl, and thereafter maintain its order. -+ if len(trl) < n { -+ tr.ref() -+ trl = append(trl, tr) -+ if len(trl) == n { -+ // This is guaranteed to happen exactly once during this loop. -+ sort.Sort(trl) -+ } -+ continue -+ } -+ if tr.Start.After(trl[n-1].Start) { -+ continue -+ } -+ -+ // Find where to insert this one. -+ tr.ref() -+ i := sort.Search(n, func(i int) bool { return trl[i].Start.After(tr.Start) }) -+ trl[n-1].unref() -+ copy(trl[i+1:], trl[i:]) -+ trl[i] = tr -+ } -+ -+ return trl -+} -+ -+func getActiveTraces(fam string) traceList { -+ activeMu.RLock() -+ s := activeTraces[fam] -+ activeMu.RUnlock() -+ if s == nil { -+ return nil -+ } -+ return s.FirstN(maxActiveTraces) -+} -+ -+func getFamily(fam string, allocNew bool) *family { -+ completedMu.RLock() -+ f := completedTraces[fam] -+ completedMu.RUnlock() -+ if f == nil && allocNew { -+ f = allocFamily(fam) -+ } -+ return f -+} -+ -+func allocFamily(fam string) *family { -+ completedMu.Lock() -+ defer completedMu.Unlock() -+ f := completedTraces[fam] -+ if f == nil { -+ f = newFamily() -+ completedTraces[fam] = f -+ } -+ return f -+} -+ -+// family represents a set of trace buckets and associated latency information. -+type family struct { -+ // traces may occur in multiple buckets. -+ Buckets [bucketsPerFamily]*traceBucket -+ -+ // latency time series -+ LatencyMu sync.RWMutex -+ Latency *timeseries.MinuteHourSeries -+} -+ -+func newFamily() *family { -+ return &family{ -+ Buckets: [bucketsPerFamily]*traceBucket{ -+ {Cond: minCond(0)}, -+ {Cond: minCond(50 * time.Millisecond)}, -+ {Cond: minCond(100 * time.Millisecond)}, -+ {Cond: minCond(200 * time.Millisecond)}, -+ {Cond: minCond(500 * time.Millisecond)}, -+ {Cond: minCond(1 * time.Second)}, -+ {Cond: minCond(10 * time.Second)}, -+ {Cond: minCond(100 * time.Second)}, -+ {Cond: errorCond{}}, -+ }, -+ Latency: timeseries.NewMinuteHourSeries(func() timeseries.Observable { return new(histogram) }), -+ } -+} -+ -+// traceBucket represents a size-capped bucket of historic traces, -+// along with a condition for a trace to belong to the bucket. -+type traceBucket struct { -+ Cond cond -+ -+ // Ring buffer implementation of a fixed-size FIFO queue. -+ mu sync.RWMutex -+ buf [tracesPerBucket]*trace -+ start int // < tracesPerBucket -+ length int // <= tracesPerBucket -+} -+ -+func (b *traceBucket) Add(tr *trace) { -+ b.mu.Lock() -+ defer b.mu.Unlock() -+ -+ i := b.start + b.length -+ if i >= tracesPerBucket { -+ i -= tracesPerBucket -+ } -+ if b.length == tracesPerBucket { -+ // "Remove" an element from the bucket. -+ b.buf[i].unref() -+ b.start++ -+ if b.start == tracesPerBucket { -+ b.start = 0 -+ } -+ } -+ b.buf[i] = tr -+ if b.length < tracesPerBucket { -+ b.length++ -+ } -+ tr.ref() -+} -+ -+// Copy returns a copy of the traces in the bucket. -+// If tracedOnly is true, only the traces with trace information will be returned. -+// The logs will be ref'd before returning; the caller should call -+// the Free method when it is done with them. -+// TODO(dsymonds): keep track of traced requests in separate buckets. -+func (b *traceBucket) Copy(tracedOnly bool) traceList { -+ b.mu.RLock() -+ defer b.mu.RUnlock() -+ -+ trl := make(traceList, 0, b.length) -+ for i, x := 0, b.start; i < b.length; i++ { -+ tr := b.buf[x] -+ if !tracedOnly || tr.spanID != 0 { -+ tr.ref() -+ trl = append(trl, tr) -+ } -+ x++ -+ if x == b.length { -+ x = 0 -+ } -+ } -+ return trl -+} -+ -+func (b *traceBucket) Empty() bool { -+ b.mu.RLock() -+ defer b.mu.RUnlock() -+ return b.length == 0 -+} -+ -+// cond represents a condition on a trace. -+type cond interface { -+ match(t *trace) bool -+ String() string -+} -+ -+type minCond time.Duration -+ -+func (m minCond) match(t *trace) bool { return t.Elapsed >= time.Duration(m) } -+func (m minCond) String() string { return fmt.Sprintf("≥%gs", time.Duration(m).Seconds()) } -+ -+type errorCond struct{} -+ -+func (e errorCond) match(t *trace) bool { return t.IsError } -+func (e errorCond) String() string { return "errors" } -+ -+type traceList []*trace -+ -+// Free calls unref on each element of the list. -+func (trl traceList) Free() { -+ for _, t := range trl { -+ t.unref() -+ } -+} -+ -+// traceList may be sorted in reverse chronological order. -+func (trl traceList) Len() int { return len(trl) } -+func (trl traceList) Less(i, j int) bool { return trl[i].Start.After(trl[j].Start) } -+func (trl traceList) Swap(i, j int) { trl[i], trl[j] = trl[j], trl[i] } -+ -+// An event is a timestamped log entry in a trace. -+type event struct { -+ When time.Time -+ Elapsed time.Duration // since previous event in trace -+ NewDay bool // whether this event is on a different day to the previous event -+ Recyclable bool // whether this event was passed via LazyLog -+ Sensitive bool // whether this event contains sensitive information -+ What interface{} // string or fmt.Stringer -+} -+ -+// WhenString returns a string representation of the elapsed time of the event. -+// It will include the date if midnight was crossed. -+func (e event) WhenString() string { -+ if e.NewDay { -+ return e.When.Format("2006/01/02 15:04:05.000000") -+ } -+ return e.When.Format("15:04:05.000000") -+} -+ -+// discarded represents a number of discarded events. -+// It is stored as *discarded to make it easier to update in-place. -+type discarded int -+ -+func (d *discarded) String() string { -+ return fmt.Sprintf("(%d events discarded)", int(*d)) -+} -+ -+// trace represents an active or complete request, -+// either sent or received by this program. -+type trace struct { -+ // Family is the top-level grouping of traces to which this belongs. -+ Family string -+ -+ // Title is the title of this trace. -+ Title string -+ -+ // Start time of the this trace. -+ Start time.Time -+ -+ mu sync.RWMutex -+ events []event // Append-only sequence of events (modulo discards). -+ maxEvents int -+ recycler func(interface{}) -+ IsError bool // Whether this trace resulted in an error. -+ Elapsed time.Duration // Elapsed time for this trace, zero while active. -+ traceID uint64 // Trace information if non-zero. -+ spanID uint64 -+ -+ refs int32 // how many buckets this is in -+ disc discarded // scratch space to avoid allocation -+ -+ finishStack []byte // where finish was called, if DebugUseAfterFinish is set -+ -+ eventsBuf [4]event // preallocated buffer in case we only log a few events -+} -+ -+func (tr *trace) reset() { -+ // Clear all but the mutex. Mutexes may not be copied, even when unlocked. -+ tr.Family = "" -+ tr.Title = "" -+ tr.Start = time.Time{} -+ -+ tr.mu.Lock() -+ tr.Elapsed = 0 -+ tr.traceID = 0 -+ tr.spanID = 0 -+ tr.IsError = false -+ tr.maxEvents = 0 -+ tr.events = nil -+ tr.recycler = nil -+ tr.mu.Unlock() -+ -+ tr.refs = 0 -+ tr.disc = 0 -+ tr.finishStack = nil -+ for i := range tr.eventsBuf { -+ tr.eventsBuf[i] = event{} -+ } -+} -+ -+// delta returns the elapsed time since the last event or the trace start, -+// and whether it spans midnight. -+// L >= tr.mu -+func (tr *trace) delta(t time.Time) (time.Duration, bool) { -+ if len(tr.events) == 0 { -+ return t.Sub(tr.Start), false -+ } -+ prev := tr.events[len(tr.events)-1].When -+ return t.Sub(prev), prev.Day() != t.Day() -+} -+ -+func (tr *trace) addEvent(x interface{}, recyclable, sensitive bool) { -+ if DebugUseAfterFinish && tr.finishStack != nil { -+ buf := make([]byte, 4<<10) // 4 KB should be enough -+ n := runtime.Stack(buf, false) -+ log.Printf("net/trace: trace used after finish:\nFinished at:\n%s\nUsed at:\n%s", tr.finishStack, buf[:n]) -+ } -+ -+ /* -+ NOTE TO DEBUGGERS -+ -+ If you are here because your program panicked in this code, -+ it is almost definitely the fault of code using this package, -+ and very unlikely to be the fault of this code. -+ -+ The most likely scenario is that some code elsewhere is using -+ a trace.Trace after its Finish method is called. -+ You can temporarily set the DebugUseAfterFinish var -+ to help discover where that is; do not leave that var set, -+ since it makes this package much less efficient. -+ */ -+ -+ e := event{When: time.Now(), What: x, Recyclable: recyclable, Sensitive: sensitive} -+ tr.mu.Lock() -+ e.Elapsed, e.NewDay = tr.delta(e.When) -+ if len(tr.events) < tr.maxEvents { -+ tr.events = append(tr.events, e) -+ } else { -+ // Discard the middle events. -+ di := int((tr.maxEvents - 1) / 2) -+ if d, ok := tr.events[di].What.(*discarded); ok { -+ (*d)++ -+ } else { -+ // disc starts at two to count for the event it is replacing, -+ // plus the next one that we are about to drop. -+ tr.disc = 2 -+ if tr.recycler != nil && tr.events[di].Recyclable { -+ go tr.recycler(tr.events[di].What) -+ } -+ tr.events[di].What = &tr.disc -+ } -+ // The timestamp of the discarded meta-event should be -+ // the time of the last event it is representing. -+ tr.events[di].When = tr.events[di+1].When -+ -+ if tr.recycler != nil && tr.events[di+1].Recyclable { -+ go tr.recycler(tr.events[di+1].What) -+ } -+ copy(tr.events[di+1:], tr.events[di+2:]) -+ tr.events[tr.maxEvents-1] = e -+ } -+ tr.mu.Unlock() -+} -+ -+func (tr *trace) LazyLog(x fmt.Stringer, sensitive bool) { -+ tr.addEvent(x, true, sensitive) -+} -+ -+func (tr *trace) LazyPrintf(format string, a ...interface{}) { -+ tr.addEvent(&lazySprintf{format, a}, false, false) -+} -+ -+func (tr *trace) SetError() { -+ tr.mu.Lock() -+ tr.IsError = true -+ tr.mu.Unlock() -+} -+ -+func (tr *trace) SetRecycler(f func(interface{})) { -+ tr.mu.Lock() -+ tr.recycler = f -+ tr.mu.Unlock() -+} -+ -+func (tr *trace) SetTraceInfo(traceID, spanID uint64) { -+ tr.mu.Lock() -+ tr.traceID, tr.spanID = traceID, spanID -+ tr.mu.Unlock() -+} -+ -+func (tr *trace) SetMaxEvents(m int) { -+ tr.mu.Lock() -+ // Always keep at least three events: first, discarded count, last. -+ if len(tr.events) == 0 && m > 3 { -+ tr.maxEvents = m -+ } -+ tr.mu.Unlock() -+} -+ -+func (tr *trace) ref() { -+ atomic.AddInt32(&tr.refs, 1) -+} -+ -+func (tr *trace) unref() { -+ if atomic.AddInt32(&tr.refs, -1) == 0 { -+ tr.mu.RLock() -+ if tr.recycler != nil { -+ // freeTrace clears tr, so we hold tr.recycler and tr.events here. -+ go func(f func(interface{}), es []event) { -+ for _, e := range es { -+ if e.Recyclable { -+ f(e.What) -+ } -+ } -+ }(tr.recycler, tr.events) -+ } -+ tr.mu.RUnlock() -+ -+ freeTrace(tr) -+ } -+} -+ -+func (tr *trace) When() string { -+ return tr.Start.Format("2006/01/02 15:04:05.000000") -+} -+ -+func (tr *trace) ElapsedTime() string { -+ tr.mu.RLock() -+ t := tr.Elapsed -+ tr.mu.RUnlock() -+ -+ if t == 0 { -+ // Active trace. -+ t = time.Since(tr.Start) -+ } -+ return fmt.Sprintf("%.6f", t.Seconds()) -+} -+ -+func (tr *trace) Events() []event { -+ tr.mu.RLock() -+ defer tr.mu.RUnlock() -+ return tr.events -+} -+ -+var traceFreeList = make(chan *trace, 1000) // TODO(dsymonds): Use sync.Pool? -+ -+// newTrace returns a trace ready to use. -+func newTrace() *trace { -+ select { -+ case tr := <-traceFreeList: -+ return tr -+ default: -+ return new(trace) -+ } -+} -+ -+// freeTrace adds tr to traceFreeList if there's room. -+// This is non-blocking. -+func freeTrace(tr *trace) { -+ if DebugUseAfterFinish { -+ return // never reuse -+ } -+ tr.reset() -+ select { -+ case traceFreeList <- tr: -+ default: -+ } -+} -+ -+func elapsed(d time.Duration) string { -+ b := []byte(fmt.Sprintf("%.6f", d.Seconds())) -+ -+ // For subsecond durations, blank all zeros before decimal point, -+ // and all zeros between the decimal point and the first non-zero digit. -+ if d < time.Second { -+ dot := bytes.IndexByte(b, '.') -+ for i := 0; i < dot; i++ { -+ b[i] = ' ' -+ } -+ for i := dot + 1; i < len(b); i++ { -+ if b[i] == '0' { -+ b[i] = ' ' -+ } else { -+ break -+ } -+ } -+ } -+ -+ return string(b) -+} -+ -+var pageTmplCache *template.Template -+var pageTmplOnce sync.Once -+ -+func pageTmpl() *template.Template { -+ pageTmplOnce.Do(func() { -+ pageTmplCache = template.Must(template.New("Page").Funcs(template.FuncMap{ -+ "elapsed": elapsed, -+ "add": func(a, b int) int { return a + b }, -+ }).Parse(pageHTML)) -+ }) -+ return pageTmplCache -+} -+ -+const pageHTML = ` -+{{template "Prolog" .}} -+{{template "StatusTable" .}} -+{{template "Epilog" .}} -+ -+{{define "Prolog"}} -+ -+ -+ /debug/requests -+ -+ -+ -+ -+

/debug/requests

-+{{end}} {{/* end of Prolog */}} -+ -+{{define "StatusTable"}} -+ -+ {{range $fam := .Families}} -+ -+ -+ -+ {{$n := index $.ActiveTraceCount $fam}} -+ -+ -+ {{$f := index $.CompletedTraces $fam}} -+ {{range $i, $b := $f.Buckets}} -+ {{$empty := $b.Empty}} -+ -+ {{end}} -+ -+ {{$nb := len $f.Buckets}} -+ -+ -+ -+ -+ -+ {{end}} -+
{{$fam}} -+ {{if $n}}{{end}} -+ [{{$n}} active] -+ {{if $n}}{{end}} -+ -+ {{if not $empty}}{{end}} -+ [{{.Cond}}] -+ {{if not $empty}}{{end}} -+ -+ [minute] -+ -+ [hour] -+ -+ [total] -+
-+{{end}} {{/* end of StatusTable */}} -+ -+{{define "Epilog"}} -+{{if $.Traces}} -+
-+

Family: {{$.Family}}

-+ -+{{if or $.Expanded $.Traced}} -+ [Normal/Summary] -+{{else}} -+ [Normal/Summary] -+{{end}} -+ -+{{if or (not $.Expanded) $.Traced}} -+ [Normal/Expanded] -+{{else}} -+ [Normal/Expanded] -+{{end}} -+ -+{{if not $.Active}} -+ {{if or $.Expanded (not $.Traced)}} -+ [Traced/Summary] -+ {{else}} -+ [Traced/Summary] -+ {{end}} -+ {{if or (not $.Expanded) (not $.Traced)}} -+ [Traced/Expanded] -+ {{else}} -+ [Traced/Expanded] -+ {{end}} -+{{end}} -+ -+{{if $.Total}} -+

Showing {{len $.Traces}} of {{$.Total}} traces.

-+{{end}} -+ -+ -+ -+ -+ {{range $tr := $.Traces}} -+ -+ -+ -+ -+ {{/* TODO: include traceID/spanID */}} -+ -+ {{if $.Expanded}} -+ {{range $tr.Events}} -+ -+ -+ -+ -+ -+ {{end}} -+ {{end}} -+ {{end}} -+
-+ {{if $.Active}}Active{{else}}Completed{{end}} Requests -+
WhenElapsed (s)
{{$tr.When}}{{$tr.ElapsedTime}}{{$tr.Title}}
{{.WhenString}}{{elapsed .Elapsed}}{{if or $.ShowSensitive (not .Sensitive)}}... {{.What}}{{else}}[redacted]{{end}}
-+{{end}} {{/* if $.Traces */}} -+ -+{{if $.Histogram}} -+

Latency (µs) of {{$.Family}} over {{$.HistogramWindow}}

-+{{$.Histogram}} -+{{end}} {{/* if $.Histogram */}} -+ -+ -+ -+{{end}} {{/* end of Epilog */}} -+` -diff --git a/vendor/golang.org/x/oauth2/.travis.yml b/vendor/golang.org/x/oauth2/.travis.yml -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/oauth2/AUTHORS b/vendor/golang.org/x/oauth2/AUTHORS -deleted file mode 100644 -index 15167cd..0000000 ---- a/vendor/golang.org/x/oauth2/AUTHORS -+++ /dev/null -@@ -1,3 +0,0 @@ --# This source code refers to The Go Authors for copyright purposes. --# The master list of authors is in the main Go distribution, --# visible at http://tip.golang.org/AUTHORS. -diff --git a/vendor/golang.org/x/oauth2/CONTRIBUTING.md b/vendor/golang.org/x/oauth2/CONTRIBUTING.md -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/oauth2/CONTRIBUTORS b/vendor/golang.org/x/oauth2/CONTRIBUTORS -deleted file mode 100644 -index 1c4577e..0000000 ---- a/vendor/golang.org/x/oauth2/CONTRIBUTORS -+++ /dev/null -@@ -1,3 +0,0 @@ --# This source code was written by the Go contributors. --# The master list of contributors is in the main Go distribution, --# visible at http://tip.golang.org/CONTRIBUTORS. -diff --git a/vendor/golang.org/x/oauth2/LICENSE b/vendor/golang.org/x/oauth2/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/oauth2/README.md b/vendor/golang.org/x/oauth2/README.md -old mode 100644 -new mode 100755 -index 1473e12..781770c ---- a/vendor/golang.org/x/oauth2/README.md -+++ b/vendor/golang.org/x/oauth2/README.md -@@ -19,7 +19,7 @@ See pkg.go.dev for further documentation and examples. - * [pkg.go.dev/golang.org/x/oauth2](https://pkg.go.dev/golang.org/x/oauth2) - * [pkg.go.dev/golang.org/x/oauth2/google](https://pkg.go.dev/golang.org/x/oauth2/google) - --## Policy for new packages -+## Policy for new endpoints - - We no longer accept new provider-specific packages in this repo if all - they do is add a single endpoint variable. If you just want to add a -@@ -29,8 +29,12 @@ package. - - ## 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 oauth2 repository is located at - https://github.com/golang/oauth2/issues. -+ -+This repository uses Gerrit for code changes. To learn how to submit changes to -+this repository, see https://golang.org/doc/contribute.html. In particular: -+ -+* Excluding trivial changes, all contributions should be connected to an existing issue. -+* API changes must go through the [change proposal process](https://go.dev/s/proposal-process) before they can be accepted. -+* The code owners are listed at [dev.golang.org/owners](https://dev.golang.org/owners#:~:text=x/oauth2). -diff --git a/vendor/golang.org/x/oauth2/internal/client_appengine.go b/vendor/golang.org/x/oauth2/internal/client_appengine.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/oauth2/internal/doc.go b/vendor/golang.org/x/oauth2/internal/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/oauth2/internal/oauth2.go b/vendor/golang.org/x/oauth2/internal/oauth2.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/oauth2/internal/token.go b/vendor/golang.org/x/oauth2/internal/token.go -old mode 100644 -new mode 100755 -index 355c386..b4723fc ---- a/vendor/golang.org/x/oauth2/internal/token.go -+++ b/vendor/golang.org/x/oauth2/internal/token.go -@@ -19,8 +19,6 @@ import ( - "strings" - "sync" - "time" -- -- "golang.org/x/net/context/ctxhttp" - ) - - // Token represents the credentials used to authorize -@@ -229,7 +227,7 @@ func RetrieveToken(ctx context.Context, clientID, clientSecret, tokenURL string, - } - - func doTokenRoundTrip(ctx context.Context, req *http.Request) (*Token, error) { -- r, err := ctxhttp.Do(ctx, ContextClient(ctx), req) -+ r, err := ContextClient(ctx).Do(req.WithContext(ctx)) - if err != nil { - return nil, err - } -diff --git a/vendor/golang.org/x/oauth2/internal/transport.go b/vendor/golang.org/x/oauth2/internal/transport.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/oauth2/oauth2.go b/vendor/golang.org/x/oauth2/oauth2.go -old mode 100644 -new mode 100755 -index 291df5c..9085fab ---- a/vendor/golang.org/x/oauth2/oauth2.go -+++ b/vendor/golang.org/x/oauth2/oauth2.go -@@ -16,6 +16,7 @@ import ( - "net/url" - "strings" - "sync" -+ "time" - - "golang.org/x/oauth2/internal" - ) -@@ -140,7 +141,7 @@ func SetAuthURLParam(key, value string) AuthCodeOption { - // - // State is a token to protect the user from CSRF attacks. You must - // always provide a non-empty string and validate that it matches the --// the state query parameter on your redirect callback. -+// state query parameter on your redirect callback. - // See http://tools.ietf.org/html/rfc6749#section-10.12 for more info. - // - // Opts may include AccessTypeOnline or AccessTypeOffline, as well -@@ -290,6 +291,8 @@ type reuseTokenSource struct { - - mu sync.Mutex // guards t - t *Token -+ -+ expiryDelta time.Duration - } - - // Token returns the current token if it's still valid, else will -@@ -305,6 +308,7 @@ func (s *reuseTokenSource) Token() (*Token, error) { - if err != nil { - return nil, err - } -+ t.expiryDelta = s.expiryDelta - s.t = t - return t, nil - } -@@ -379,3 +383,30 @@ func ReuseTokenSource(t *Token, src TokenSource) TokenSource { - new: src, - } - } -+ -+// ReuseTokenSource returns a TokenSource that acts in the same manner as the -+// TokenSource returned by ReuseTokenSource, except the expiry buffer is -+// configurable. The expiration time of a token is calculated as -+// t.Expiry.Add(-earlyExpiry). -+func ReuseTokenSourceWithExpiry(t *Token, src TokenSource, earlyExpiry time.Duration) TokenSource { -+ // Don't wrap a reuseTokenSource in itself. That would work, -+ // but cause an unnecessary number of mutex operations. -+ // Just build the equivalent one. -+ if rt, ok := src.(*reuseTokenSource); ok { -+ if t == nil { -+ // Just use it directly, but set the expiryDelta to earlyExpiry, -+ // so the behavior matches what the user expects. -+ rt.expiryDelta = earlyExpiry -+ return rt -+ } -+ src = rt.new -+ } -+ if t != nil { -+ t.expiryDelta = earlyExpiry -+ } -+ return &reuseTokenSource{ -+ t: t, -+ new: src, -+ expiryDelta: earlyExpiry, -+ } -+} -diff --git a/vendor/golang.org/x/oauth2/token.go b/vendor/golang.org/x/oauth2/token.go -old mode 100644 -new mode 100755 -index 8227203..7c64006 ---- a/vendor/golang.org/x/oauth2/token.go -+++ b/vendor/golang.org/x/oauth2/token.go -@@ -16,10 +16,10 @@ import ( - "golang.org/x/oauth2/internal" - ) - --// expiryDelta determines how earlier a token should be considered -+// defaultExpiryDelta determines how earlier a token should be considered - // expired than its actual expiration time. It is used to avoid late - // expirations due to client-server time mismatches. --const expiryDelta = 10 * time.Second -+const defaultExpiryDelta = 10 * time.Second - - // Token represents the credentials used to authorize - // the requests to access protected resources on the OAuth 2.0 -@@ -52,6 +52,11 @@ type Token struct { - // raw optionally contains extra metadata from the server - // when updating a token. - raw interface{} -+ -+ // expiryDelta is used to calculate when a token is considered -+ // expired, by subtracting from Expiry. If zero, defaultExpiryDelta -+ // is used. -+ expiryDelta time.Duration - } - - // Type returns t.TokenType if non-empty, else "Bearer". -@@ -127,6 +132,11 @@ func (t *Token) expired() bool { - if t.Expiry.IsZero() { - return false - } -+ -+ expiryDelta := defaultExpiryDelta -+ if t.expiryDelta != 0 { -+ expiryDelta = t.expiryDelta -+ } - return t.Expiry.Round(0).Add(-expiryDelta).Before(timeNow()) - } - -diff --git a/vendor/golang.org/x/oauth2/transport.go b/vendor/golang.org/x/oauth2/transport.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/LICENSE b/vendor/golang.org/x/sys/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/PATENTS b/vendor/golang.org/x/sys/PATENTS -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/internal/unsafeheader/unsafeheader.go b/vendor/golang.org/x/sys/internal/unsafeheader/unsafeheader.go -deleted file mode 100644 -index e07899b..0000000 ---- a/vendor/golang.org/x/sys/internal/unsafeheader/unsafeheader.go -+++ /dev/null -@@ -1,30 +0,0 @@ --// Copyright 2020 The Go Authors. All rights reserved. --// Use of this source code is governed by a BSD-style --// license that can be found in the LICENSE file. -- --// Package unsafeheader contains header declarations for the Go runtime's --// slice and string implementations. --// --// This package allows x/sys to use types equivalent to --// reflect.SliceHeader and reflect.StringHeader without introducing --// a dependency on the (relatively heavy) "reflect" package. --package unsafeheader -- --import ( -- "unsafe" --) -- --// Slice is the runtime representation of a slice. --// It cannot be used safely or portably and its representation may change in a later release. --type Slice struct { -- Data unsafe.Pointer -- Len int -- Cap int --} -- --// String is the runtime representation of a string. --// It cannot be used safely or portably and its representation may change in a later release. --type String struct { -- Data unsafe.Pointer -- Len int --} -diff --git a/vendor/golang.org/x/sys/plan9/asm.s b/vendor/golang.org/x/sys/plan9/asm.s -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/plan9/asm_plan9_386.s b/vendor/golang.org/x/sys/plan9/asm_plan9_386.s -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/plan9/asm_plan9_amd64.s b/vendor/golang.org/x/sys/plan9/asm_plan9_amd64.s -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/plan9/asm_plan9_arm.s b/vendor/golang.org/x/sys/plan9/asm_plan9_arm.s -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/plan9/const_plan9.go b/vendor/golang.org/x/sys/plan9/const_plan9.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/plan9/dir_plan9.go b/vendor/golang.org/x/sys/plan9/dir_plan9.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/plan9/env_plan9.go b/vendor/golang.org/x/sys/plan9/env_plan9.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/plan9/errors_plan9.go b/vendor/golang.org/x/sys/plan9/errors_plan9.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/plan9/mkall.sh b/vendor/golang.org/x/sys/plan9/mkall.sh -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/plan9/mkerrors.sh b/vendor/golang.org/x/sys/plan9/mkerrors.sh -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/plan9/mksysnum_plan9.sh b/vendor/golang.org/x/sys/plan9/mksysnum_plan9.sh -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/plan9/pwd_go15_plan9.go b/vendor/golang.org/x/sys/plan9/pwd_go15_plan9.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/plan9/pwd_plan9.go b/vendor/golang.org/x/sys/plan9/pwd_plan9.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/plan9/race.go b/vendor/golang.org/x/sys/plan9/race.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/plan9/race0.go b/vendor/golang.org/x/sys/plan9/race0.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/plan9/str.go b/vendor/golang.org/x/sys/plan9/str.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/plan9/syscall.go b/vendor/golang.org/x/sys/plan9/syscall.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/plan9/syscall_plan9.go b/vendor/golang.org/x/sys/plan9/syscall_plan9.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/plan9/zsyscall_plan9_386.go b/vendor/golang.org/x/sys/plan9/zsyscall_plan9_386.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/plan9/zsyscall_plan9_amd64.go b/vendor/golang.org/x/sys/plan9/zsyscall_plan9_amd64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/plan9/zsyscall_plan9_arm.go b/vendor/golang.org/x/sys/plan9/zsyscall_plan9_arm.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/plan9/zsysnum_plan9.go b/vendor/golang.org/x/sys/plan9/zsysnum_plan9.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/.gitignore b/vendor/golang.org/x/sys/unix/.gitignore -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/README.md b/vendor/golang.org/x/sys/unix/README.md -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/affinity_linux.go b/vendor/golang.org/x/sys/unix/affinity_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/aliases.go b/vendor/golang.org/x/sys/unix/aliases.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/asm_aix_ppc64.s b/vendor/golang.org/x/sys/unix/asm_aix_ppc64.s -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/asm_bsd_386.s b/vendor/golang.org/x/sys/unix/asm_bsd_386.s -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/asm_bsd_amd64.s b/vendor/golang.org/x/sys/unix/asm_bsd_amd64.s -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/asm_bsd_arm.s b/vendor/golang.org/x/sys/unix/asm_bsd_arm.s -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/asm_bsd_arm64.s b/vendor/golang.org/x/sys/unix/asm_bsd_arm64.s -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/asm_bsd_ppc64.s b/vendor/golang.org/x/sys/unix/asm_bsd_ppc64.s -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/asm_bsd_riscv64.s b/vendor/golang.org/x/sys/unix/asm_bsd_riscv64.s -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/asm_linux_386.s b/vendor/golang.org/x/sys/unix/asm_linux_386.s -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/asm_linux_amd64.s b/vendor/golang.org/x/sys/unix/asm_linux_amd64.s -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/asm_linux_arm.s b/vendor/golang.org/x/sys/unix/asm_linux_arm.s -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/asm_linux_arm64.s b/vendor/golang.org/x/sys/unix/asm_linux_arm64.s -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/asm_linux_loong64.s b/vendor/golang.org/x/sys/unix/asm_linux_loong64.s -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s b/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s b/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s b/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/asm_linux_riscv64.s b/vendor/golang.org/x/sys/unix/asm_linux_riscv64.s -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/asm_linux_s390x.s b/vendor/golang.org/x/sys/unix/asm_linux_s390x.s -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/asm_openbsd_mips64.s b/vendor/golang.org/x/sys/unix/asm_openbsd_mips64.s -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/asm_solaris_amd64.s b/vendor/golang.org/x/sys/unix/asm_solaris_amd64.s -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/asm_zos_s390x.s b/vendor/golang.org/x/sys/unix/asm_zos_s390x.s -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/bluetooth_linux.go b/vendor/golang.org/x/sys/unix/bluetooth_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/cap_freebsd.go b/vendor/golang.org/x/sys/unix/cap_freebsd.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/constants.go b/vendor/golang.org/x/sys/unix/constants.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/dev_aix_ppc.go b/vendor/golang.org/x/sys/unix/dev_aix_ppc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go b/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/dev_darwin.go b/vendor/golang.org/x/sys/unix/dev_darwin.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/dev_dragonfly.go b/vendor/golang.org/x/sys/unix/dev_dragonfly.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/dev_freebsd.go b/vendor/golang.org/x/sys/unix/dev_freebsd.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/dev_linux.go b/vendor/golang.org/x/sys/unix/dev_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/dev_netbsd.go b/vendor/golang.org/x/sys/unix/dev_netbsd.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/dev_openbsd.go b/vendor/golang.org/x/sys/unix/dev_openbsd.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/dev_zos.go b/vendor/golang.org/x/sys/unix/dev_zos.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/dirent.go b/vendor/golang.org/x/sys/unix/dirent.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/endian_big.go b/vendor/golang.org/x/sys/unix/endian_big.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/endian_little.go b/vendor/golang.org/x/sys/unix/endian_little.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/env_unix.go b/vendor/golang.org/x/sys/unix/env_unix.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/epoll_zos.go b/vendor/golang.org/x/sys/unix/epoll_zos.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/fcntl.go b/vendor/golang.org/x/sys/unix/fcntl.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/fcntl_darwin.go b/vendor/golang.org/x/sys/unix/fcntl_darwin.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go b/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/fdset.go b/vendor/golang.org/x/sys/unix/fdset.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/fstatfs_zos.go b/vendor/golang.org/x/sys/unix/fstatfs_zos.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/gccgo.go b/vendor/golang.org/x/sys/unix/gccgo.go -old mode 100644 -new mode 100755 -index 0dee232..b06f52d ---- a/vendor/golang.org/x/sys/unix/gccgo.go -+++ b/vendor/golang.org/x/sys/unix/gccgo.go -@@ -2,8 +2,8 @@ - // Use of this source code is governed by a BSD-style - // license that can be found in the LICENSE file. - --//go:build gccgo && !aix --// +build gccgo,!aix -+//go:build gccgo && !aix && !hurd -+// +build gccgo,!aix,!hurd - - package unix - -diff --git a/vendor/golang.org/x/sys/unix/gccgo_c.c b/vendor/golang.org/x/sys/unix/gccgo_c.c -old mode 100644 -new mode 100755 -index 2cb1fef..f98a1c5 ---- a/vendor/golang.org/x/sys/unix/gccgo_c.c -+++ b/vendor/golang.org/x/sys/unix/gccgo_c.c -@@ -2,8 +2,8 @@ - // Use of this source code is governed by a BSD-style - // license that can be found in the LICENSE file. - --// +build gccgo --// +build !aix -+//go:build gccgo && !aix && !hurd -+// +build gccgo,!aix,!hurd - - #include - #include -diff --git a/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go b/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/ifreq_linux.go b/vendor/golang.org/x/sys/unix/ifreq_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/ioctl_linux.go b/vendor/golang.org/x/sys/unix/ioctl_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/ioctl_signed.go b/vendor/golang.org/x/sys/unix/ioctl_signed.go -new file mode 100755 -index 0000000..7def958 ---- /dev/null -+++ b/vendor/golang.org/x/sys/unix/ioctl_signed.go -@@ -0,0 +1,70 @@ -+// 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. -+ -+//go:build aix || solaris -+// +build aix solaris -+ -+package unix -+ -+import ( -+ "unsafe" -+) -+ -+// ioctl itself should not be exposed directly, but additional get/set -+// functions for specific types are permissible. -+ -+// IoctlSetInt performs an ioctl operation which sets an integer value -+// on fd, using the specified request number. -+func IoctlSetInt(fd int, req int, value int) error { -+ return ioctl(fd, req, uintptr(value)) -+} -+ -+// IoctlSetPointerInt performs an ioctl operation which sets an -+// integer value on fd, using the specified request number. The ioctl -+// argument is called with a pointer to the integer value, rather than -+// passing the integer value directly. -+func IoctlSetPointerInt(fd int, req int, value int) error { -+ v := int32(value) -+ return ioctlPtr(fd, req, unsafe.Pointer(&v)) -+} -+ -+// IoctlSetWinsize performs an ioctl on fd with a *Winsize argument. -+// -+// To change fd's window size, the req argument should be TIOCSWINSZ. -+func IoctlSetWinsize(fd int, req int, value *Winsize) error { -+ // TODO: if we get the chance, remove the req parameter and -+ // hardcode TIOCSWINSZ. -+ return ioctlPtr(fd, req, unsafe.Pointer(value)) -+} -+ -+// IoctlSetTermios performs an ioctl on fd with a *Termios. -+// -+// The req value will usually be TCSETA or TIOCSETA. -+func IoctlSetTermios(fd int, req int, value *Termios) error { -+ // TODO: if we get the chance, remove the req parameter. -+ return ioctlPtr(fd, req, unsafe.Pointer(value)) -+} -+ -+// IoctlGetInt performs an ioctl operation which gets an integer value -+// from fd, using the specified request number. -+// -+// A few ioctl requests use the return value as an output parameter; -+// for those, IoctlRetInt should be used instead of this function. -+func IoctlGetInt(fd int, req int) (int, error) { -+ var value int -+ err := ioctlPtr(fd, req, unsafe.Pointer(&value)) -+ return value, err -+} -+ -+func IoctlGetWinsize(fd int, req int) (*Winsize, error) { -+ var value Winsize -+ err := ioctlPtr(fd, req, unsafe.Pointer(&value)) -+ return &value, err -+} -+ -+func IoctlGetTermios(fd int, req int) (*Termios, error) { -+ var value Termios -+ err := ioctlPtr(fd, req, unsafe.Pointer(&value)) -+ return &value, err -+} -diff --git a/vendor/golang.org/x/sys/unix/ioctl.go b/vendor/golang.org/x/sys/unix/ioctl_unsigned.go -old mode 100644 -new mode 100755 -similarity index 77% -rename from vendor/golang.org/x/sys/unix/ioctl.go -rename to vendor/golang.org/x/sys/unix/ioctl_unsigned.go -index 6c7ad05..649913d ---- a/vendor/golang.org/x/sys/unix/ioctl.go -+++ b/vendor/golang.org/x/sys/unix/ioctl_unsigned.go -@@ -2,13 +2,12 @@ - // Use of this source code is governed by a BSD-style - // license that can be found in the LICENSE file. - --//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris --// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris -+//go:build darwin || dragonfly || freebsd || hurd || linux || netbsd || openbsd -+// +build darwin dragonfly freebsd hurd linux netbsd openbsd - - package unix - - import ( -- "runtime" - "unsafe" - ) - -@@ -27,7 +26,7 @@ func IoctlSetInt(fd int, req uint, value int) error { - // passing the integer value directly. - func IoctlSetPointerInt(fd int, req uint, value int) error { - v := int32(value) -- return ioctl(fd, req, uintptr(unsafe.Pointer(&v))) -+ return ioctlPtr(fd, req, unsafe.Pointer(&v)) - } - - // IoctlSetWinsize performs an ioctl on fd with a *Winsize argument. -@@ -36,9 +35,7 @@ func IoctlSetPointerInt(fd int, req uint, value int) error { - func IoctlSetWinsize(fd int, req uint, value *Winsize) error { - // TODO: if we get the chance, remove the req parameter and - // hardcode TIOCSWINSZ. -- err := ioctl(fd, req, uintptr(unsafe.Pointer(value))) -- runtime.KeepAlive(value) -- return err -+ return ioctlPtr(fd, req, unsafe.Pointer(value)) - } - - // IoctlSetTermios performs an ioctl on fd with a *Termios. -@@ -46,9 +43,7 @@ func IoctlSetWinsize(fd int, req uint, value *Winsize) error { - // The req value will usually be TCSETA or TIOCSETA. - func IoctlSetTermios(fd int, req uint, value *Termios) error { - // TODO: if we get the chance, remove the req parameter. -- err := ioctl(fd, req, uintptr(unsafe.Pointer(value))) -- runtime.KeepAlive(value) -- return err -+ return ioctlPtr(fd, req, unsafe.Pointer(value)) - } - - // IoctlGetInt performs an ioctl operation which gets an integer value -@@ -58,18 +53,18 @@ func IoctlSetTermios(fd int, req uint, value *Termios) error { - // for those, IoctlRetInt should be used instead of this function. - func IoctlGetInt(fd int, req uint) (int, error) { - var value int -- err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) -+ err := ioctlPtr(fd, req, unsafe.Pointer(&value)) - return value, err - } - - func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { - var value Winsize -- err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) -+ err := ioctlPtr(fd, req, unsafe.Pointer(&value)) - return &value, err - } - - func IoctlGetTermios(fd int, req uint) (*Termios, error) { - var value Termios -- err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) -+ err := ioctlPtr(fd, req, unsafe.Pointer(&value)) - return &value, err - } -diff --git a/vendor/golang.org/x/sys/unix/ioctl_zos.go b/vendor/golang.org/x/sys/unix/ioctl_zos.go -old mode 100644 -new mode 100755 -index 5384e7d..cdc21bf ---- a/vendor/golang.org/x/sys/unix/ioctl_zos.go -+++ b/vendor/golang.org/x/sys/unix/ioctl_zos.go -@@ -17,25 +17,23 @@ import ( - - // IoctlSetInt performs an ioctl operation which sets an integer value - // on fd, using the specified request number. --func IoctlSetInt(fd int, req uint, value int) error { -+func IoctlSetInt(fd int, req int, value int) error { - return ioctl(fd, req, uintptr(value)) - } - - // IoctlSetWinsize performs an ioctl on fd with a *Winsize argument. - // - // To change fd's window size, the req argument should be TIOCSWINSZ. --func IoctlSetWinsize(fd int, req uint, value *Winsize) error { -+func IoctlSetWinsize(fd int, req int, value *Winsize) error { - // TODO: if we get the chance, remove the req parameter and - // hardcode TIOCSWINSZ. -- err := ioctl(fd, req, uintptr(unsafe.Pointer(value))) -- runtime.KeepAlive(value) -- return err -+ return ioctlPtr(fd, req, unsafe.Pointer(value)) - } - - // IoctlSetTermios performs an ioctl on fd with a *Termios. - // - // The req value is expected to be TCSETS, TCSETSW, or TCSETSF --func IoctlSetTermios(fd int, req uint, value *Termios) error { -+func IoctlSetTermios(fd int, req int, value *Termios) error { - if (req != TCSETS) && (req != TCSETSW) && (req != TCSETSF) { - return ENOSYS - } -@@ -49,22 +47,22 @@ func IoctlSetTermios(fd int, req uint, value *Termios) error { - // - // A few ioctl requests use the return value as an output parameter; - // for those, IoctlRetInt should be used instead of this function. --func IoctlGetInt(fd int, req uint) (int, error) { -+func IoctlGetInt(fd int, req int) (int, error) { - var value int -- err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) -+ err := ioctlPtr(fd, req, unsafe.Pointer(&value)) - return value, err - } - --func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { -+func IoctlGetWinsize(fd int, req int) (*Winsize, error) { - var value Winsize -- err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) -+ err := ioctlPtr(fd, req, unsafe.Pointer(&value)) - return &value, err - } - - // IoctlGetTermios performs an ioctl on fd with a *Termios. - // - // The req value is expected to be TCGETS --func IoctlGetTermios(fd int, req uint) (*Termios, error) { -+func IoctlGetTermios(fd int, req int) (*Termios, error) { - var value Termios - if req != TCGETS { - return &value, ENOSYS -diff --git a/vendor/golang.org/x/sys/unix/mkall.sh b/vendor/golang.org/x/sys/unix/mkall.sh -old mode 100644 -new mode 100755 -index 727cba2..e6f31d3 ---- a/vendor/golang.org/x/sys/unix/mkall.sh -+++ b/vendor/golang.org/x/sys/unix/mkall.sh -@@ -50,7 +50,7 @@ if [[ "$GOOS" = "linux" ]]; then - # Use the Docker-based build system - # Files generated through docker (use $cmd so you can Ctl-C the build or run) - $cmd docker build --tag generate:$GOOS $GOOS -- $cmd docker run --interactive --tty --volume $(cd -- "$(dirname -- "$0")/.." && /bin/pwd):/build generate:$GOOS -+ $cmd docker run --interactive --tty --volume $(cd -- "$(dirname -- "$0")/.." && pwd):/build generate:$GOOS - exit - fi - -@@ -174,10 +174,10 @@ openbsd_arm64) - mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" - ;; - openbsd_mips64) -+ mkasm="go run mkasm.go" - mkerrors="$mkerrors -m64" -- mksyscall="go run mksyscall.go -openbsd" -+ mksyscall="go run mksyscall.go -openbsd -libc" - mksysctl="go run mksysctl_openbsd.go" -- mksysnum="go run mksysnum.go 'https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master'" - # Let the type of C char be signed for making the bare syscall - # API consistent across platforms. - mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" -diff --git a/vendor/golang.org/x/sys/unix/mkerrors.sh b/vendor/golang.org/x/sys/unix/mkerrors.sh -old mode 100644 -new mode 100755 -index 7456d9d..47fa6a7 ---- a/vendor/golang.org/x/sys/unix/mkerrors.sh -+++ b/vendor/golang.org/x/sys/unix/mkerrors.sh -@@ -66,6 +66,7 @@ includes_Darwin=' - #include - #include - #include -+#include - #include - #include - #include -@@ -203,6 +204,7 @@ struct ltchars { - #include - #include - #include -+#include - #include - #include - #include -@@ -517,10 +519,11 @@ ccflags="$@" - $2 ~ /^LOCK_(SH|EX|NB|UN)$/ || - $2 ~ /^LO_(KEY|NAME)_SIZE$/ || - $2 ~ /^LOOP_(CLR|CTL|GET|SET)_/ || -- $2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|TCP|MCAST|EVFILT|NOTE|SHUT|PROT|MAP|MFD|T?PACKET|MSG|SCM|MCL|DT|MADV|PR|LOCAL|TCPOPT)_/ || -+ $2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|TCP|MCAST|EVFILT|NOTE|SHUT|PROT|MAP|MREMAP|MFD|T?PACKET|MSG|SCM|MCL|DT|MADV|PR|LOCAL|TCPOPT|UDP)_/ || - $2 ~ /^NFC_(GENL|PROTO|COMM|RF|SE|DIRECTION|LLCP|SOCKPROTO)_/ || - $2 ~ /^NFC_.*_(MAX)?SIZE$/ || - $2 ~ /^RAW_PAYLOAD_/ || -+ $2 ~ /^[US]F_/ || - $2 ~ /^TP_STATUS_/ || - $2 ~ /^FALLOC_/ || - $2 ~ /^ICMPV?6?_(FILTER|SEC)/ || -@@ -580,6 +583,7 @@ ccflags="$@" - $2 ~ /^PERF_/ || - $2 ~ /^SECCOMP_MODE_/ || - $2 ~ /^SEEK_/ || -+ $2 ~ /^SCHED_/ || - $2 ~ /^SPLICE_/ || - $2 ~ /^SYNC_FILE_RANGE_/ || - $2 !~ /IOC_MAGIC/ && -@@ -621,7 +625,7 @@ ccflags="$@" - $2 ~ /^MEM/ || - $2 ~ /^WG/ || - $2 ~ /^FIB_RULE_/ || -- $2 ~ /^BLK[A-Z]*(GET$|SET$|BUF$|PART$|SIZE)/ {printf("\t%s = C.%s\n", $2, $2)} -+ $2 ~ /^BLK[A-Z]*(GET$|SET$|BUF$|PART$|SIZE|IOMIN$|IOOPT$|ALIGNOFF$|DISCARD|ROTATIONAL$|ZEROOUT$|GETDISKSEQ$)/ {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)} - -@@ -738,7 +742,8 @@ main(void) - e = errors[i].num; - if(i > 0 && errors[i-1].num == e) - continue; -- strcpy(buf, strerror(e)); -+ strncpy(buf, strerror(e), sizeof(buf) - 1); -+ buf[sizeof(buf) - 1] = '\0'; - // 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; -@@ -757,7 +762,8 @@ main(void) - e = signals[i].num; - if(i > 0 && signals[i-1].num == e) - continue; -- strcpy(buf, strsignal(e)); -+ strncpy(buf, strsignal(e), sizeof(buf) - 1); -+ buf[sizeof(buf) - 1] = '\0'; - // 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; -diff --git a/vendor/golang.org/x/sys/unix/mmap_nomremap.go b/vendor/golang.org/x/sys/unix/mmap_nomremap.go -new file mode 100755 -index 0000000..ca05136 ---- /dev/null -+++ b/vendor/golang.org/x/sys/unix/mmap_nomremap.go -@@ -0,0 +1,14 @@ -+// Copyright 2023 The Go 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:build aix || darwin || dragonfly || freebsd || openbsd || solaris -+// +build aix darwin dragonfly freebsd openbsd solaris -+ -+package unix -+ -+var mapper = &mmapper{ -+ active: make(map[*byte][]byte), -+ mmap: mmap, -+ munmap: munmap, -+} -diff --git a/vendor/golang.org/x/sys/unix/mremap.go b/vendor/golang.org/x/sys/unix/mremap.go -new file mode 100755 -index 0000000..fa93d0a ---- /dev/null -+++ b/vendor/golang.org/x/sys/unix/mremap.go -@@ -0,0 +1,53 @@ -+// Copyright 2023 The Go 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:build linux || netbsd -+// +build linux netbsd -+ -+package unix -+ -+import "unsafe" -+ -+type mremapMmapper struct { -+ mmapper -+ mremap func(oldaddr uintptr, oldlength uintptr, newlength uintptr, flags int, newaddr uintptr) (xaddr uintptr, err error) -+} -+ -+var mapper = &mremapMmapper{ -+ mmapper: mmapper{ -+ active: make(map[*byte][]byte), -+ mmap: mmap, -+ munmap: munmap, -+ }, -+ mremap: mremap, -+} -+ -+func (m *mremapMmapper) Mremap(oldData []byte, newLength int, flags int) (data []byte, err error) { -+ if newLength <= 0 || len(oldData) == 0 || len(oldData) != cap(oldData) || flags&mremapFixed != 0 { -+ return nil, EINVAL -+ } -+ -+ pOld := &oldData[cap(oldData)-1] -+ m.Lock() -+ defer m.Unlock() -+ bOld := m.active[pOld] -+ if bOld == nil || &bOld[0] != &oldData[0] { -+ return nil, EINVAL -+ } -+ newAddr, errno := m.mremap(uintptr(unsafe.Pointer(&bOld[0])), uintptr(len(bOld)), uintptr(newLength), flags, 0) -+ if errno != nil { -+ return nil, errno -+ } -+ bNew := unsafe.Slice((*byte)(unsafe.Pointer(newAddr)), newLength) -+ pNew := &bNew[cap(bNew)-1] -+ if flags&mremapDontunmap == 0 { -+ delete(m.active, pOld) -+ } -+ m.active[pNew] = bNew -+ return bNew, nil -+} -+ -+func Mremap(oldData []byte, newLength int, flags int) (data []byte, err error) { -+ return mapper.Mremap(oldData, newLength, flags) -+} -diff --git a/vendor/golang.org/x/sys/unix/pagesize_unix.go b/vendor/golang.org/x/sys/unix/pagesize_unix.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/pledge_openbsd.go b/vendor/golang.org/x/sys/unix/pledge_openbsd.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/ptrace_darwin.go b/vendor/golang.org/x/sys/unix/ptrace_darwin.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/ptrace_ios.go b/vendor/golang.org/x/sys/unix/ptrace_ios.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/race.go b/vendor/golang.org/x/sys/unix/race.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/race0.go b/vendor/golang.org/x/sys/unix/race0.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/readdirent_getdents.go b/vendor/golang.org/x/sys/unix/readdirent_getdents.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/readdirent_getdirentries.go b/vendor/golang.org/x/sys/unix/readdirent_getdirentries.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/sockcmsg_dragonfly.go b/vendor/golang.org/x/sys/unix/sockcmsg_dragonfly.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/sockcmsg_linux.go b/vendor/golang.org/x/sys/unix/sockcmsg_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/sockcmsg_unix.go b/vendor/golang.org/x/sys/unix/sockcmsg_unix.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go b/vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/syscall.go b/vendor/golang.org/x/sys/unix/syscall.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/syscall_aix.go b/vendor/golang.org/x/sys/unix/syscall_aix.go -old mode 100644 -new mode 100755 -index 2db1b51..e94e6cd ---- a/vendor/golang.org/x/sys/unix/syscall_aix.go -+++ b/vendor/golang.org/x/sys/unix/syscall_aix.go -@@ -292,9 +292,7 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { - break - } - } -- -- bytes := (*[len(pp.Path)]byte)(unsafe.Pointer(&pp.Path[0]))[0:n] -- sa.Name = string(bytes) -+ sa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n)) - return sa, nil - - case AF_INET: -@@ -410,7 +408,8 @@ func (w WaitStatus) CoreDump() bool { return w&0x80 == 0x80 } - - func (w WaitStatus) TrapCause() int { return -1 } - --//sys ioctl(fd int, req uint, arg uintptr) (err error) -+//sys ioctl(fd int, req int, arg uintptr) (err error) -+//sys ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) = ioctl - - // fcntl must never be called with cmd=F_DUP2FD because it doesn't work on AIX - // There is no way to create a custom fcntl and to keep //sys fcntl easily, -@@ -488,8 +487,6 @@ func Fsync(fd int) error { - //sys Unlinkat(dirfd int, path string, flags int) (err error) - //sys Ustat(dev int, ubuf *Ustat_t) (err error) - //sys write(fd int, p []byte) (n int, err error) --//sys readlen(fd int, p *byte, np int) (n int, err error) = read --//sys writelen(fd int, p *byte, np int) (n int, err error) = write - - //sys Dup2(oldfd int, newfd int) (err error) - //sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = posix_fadvise64 -@@ -536,21 +533,6 @@ func Fsync(fd int) error { - //sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) = nsendmsg - - //sys munmap(addr uintptr, length uintptr) (err error) -- --var mapper = &mmapper{ -- active: make(map[*byte][]byte), -- mmap: mmap, -- munmap: munmap, --} -- --func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) { -- return mapper.Mmap(fd, offset, length, prot, flags) --} -- --func Munmap(b []byte) (err error) { -- return mapper.Munmap(b) --} -- - //sys Madvise(b []byte, advice int) (err error) - //sys Mprotect(b []byte, prot int) (err error) - //sys Mlock(b []byte) (err error) -diff --git a/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go b/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go -old mode 100644 -new mode 100755 -index e92a0be..f2871fa ---- a/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go -+++ b/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go -@@ -8,7 +8,6 @@ - package unix - - //sysnb Getrlimit(resource int, rlim *Rlimit) (err error) = getrlimit64 --//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) = setrlimit64 - //sys Seek(fd int, offset int64, whence int) (off int64, err error) = lseek64 - - //sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) -diff --git a/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go b/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go -old mode 100644 -new mode 100755 -index 16eed17..75718ec ---- a/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go -+++ b/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go -@@ -8,7 +8,6 @@ - package unix - - //sysnb Getrlimit(resource int, rlim *Rlimit) (err error) --//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) - //sys Seek(fd int, offset int64, whence int) (off int64, err error) = lseek - - //sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) = mmap64 -diff --git a/vendor/golang.org/x/sys/unix/syscall_bsd.go b/vendor/golang.org/x/sys/unix/syscall_bsd.go -old mode 100644 -new mode 100755 -index eda4267..4217de5 ---- a/vendor/golang.org/x/sys/unix/syscall_bsd.go -+++ b/vendor/golang.org/x/sys/unix/syscall_bsd.go -@@ -245,8 +245,7 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { - break - } - } -- bytes := (*[len(pp.Path)]byte)(unsafe.Pointer(&pp.Path[0]))[0:n] -- sa.Name = string(bytes) -+ sa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n)) - return sa, nil - - case AF_INET: -@@ -602,20 +601,6 @@ func Poll(fds []PollFd, timeout int) (n int, err error) { - // Gethostuuid(uuid *byte, timeout *Timespec) (err error) - // Ptrace(req int, pid int, addr uintptr, data int) (ret uintptr, err error) - --var mapper = &mmapper{ -- active: make(map[*byte][]byte), -- mmap: mmap, -- munmap: munmap, --} -- --func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) { -- return mapper.Mmap(fd, offset, length, prot, flags) --} -- --func Munmap(b []byte) (err error) { -- return mapper.Munmap(b) --} -- - //sys Madvise(b []byte, behav int) (err error) - //sys Mlock(b []byte) (err error) - //sys Mlockall(flags int) (err error) -diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.go b/vendor/golang.org/x/sys/unix/syscall_darwin.go -old mode 100644 -new mode 100755 -index 1f63382..59542a8 ---- a/vendor/golang.org/x/sys/unix/syscall_darwin.go -+++ b/vendor/golang.org/x/sys/unix/syscall_darwin.go -@@ -14,7 +14,6 @@ package unix - - import ( - "fmt" -- "runtime" - "syscall" - "unsafe" - ) -@@ -230,6 +229,7 @@ func direntNamlen(buf []byte) (uint64, bool) { - - func PtraceAttach(pid int) (err error) { return ptrace(PT_ATTACH, pid, 0, 0) } - func PtraceDetach(pid int) (err error) { return ptrace(PT_DETACH, pid, 0, 0) } -+func PtraceDenyAttach() (err error) { return ptrace(PT_DENY_ATTACH, 0, 0, 0) } - - //sysnb pipe(p *[2]int32) (err error) - -@@ -375,11 +375,10 @@ func Flistxattr(fd int, dest []byte) (sz int, err error) { - func Kill(pid int, signum syscall.Signal) (err error) { return kill(pid, int(signum), 1) } - - //sys ioctl(fd int, req uint, arg uintptr) (err error) -+//sys ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL - - func IoctlCtlInfo(fd int, ctlInfo *CtlInfo) error { -- err := ioctl(fd, CTLIOCGINFO, uintptr(unsafe.Pointer(ctlInfo))) -- runtime.KeepAlive(ctlInfo) -- return err -+ return ioctlPtr(fd, CTLIOCGINFO, unsafe.Pointer(ctlInfo)) - } - - // IfreqMTU is struct ifreq used to get or set a network device's MTU. -@@ -393,16 +392,14 @@ type IfreqMTU struct { - func IoctlGetIfreqMTU(fd int, ifname string) (*IfreqMTU, error) { - var ifreq IfreqMTU - copy(ifreq.Name[:], ifname) -- err := ioctl(fd, SIOCGIFMTU, uintptr(unsafe.Pointer(&ifreq))) -+ err := ioctlPtr(fd, SIOCGIFMTU, unsafe.Pointer(&ifreq)) - return &ifreq, err - } - - // IoctlSetIfreqMTU performs the SIOCSIFMTU ioctl operation on fd to set the MTU - // of the network device specified by ifreq.Name. - func IoctlSetIfreqMTU(fd int, ifreq *IfreqMTU) error { -- err := ioctl(fd, SIOCSIFMTU, uintptr(unsafe.Pointer(ifreq))) -- runtime.KeepAlive(ifreq) -- return err -+ return ioctlPtr(fd, SIOCSIFMTU, unsafe.Pointer(ifreq)) - } - - //sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS_SYSCTL -@@ -513,30 +510,36 @@ func SysctlKinfoProcSlice(name string, args ...int) ([]KinfoProc, error) { - return nil, err - } - -- // Find size. -- n := uintptr(0) -- if err := sysctl(mib, nil, &n, nil, 0); err != nil { -- return nil, err -- } -- if n == 0 { -- return nil, nil -- } -- if n%SizeofKinfoProc != 0 { -- return nil, fmt.Errorf("sysctl() returned a size of %d, which is not a multiple of %d", n, SizeofKinfoProc) -- } -+ for { -+ // Find size. -+ n := uintptr(0) -+ if err := sysctl(mib, nil, &n, nil, 0); err != nil { -+ return nil, err -+ } -+ if n == 0 { -+ return nil, nil -+ } -+ if n%SizeofKinfoProc != 0 { -+ return nil, fmt.Errorf("sysctl() returned a size of %d, which is not a multiple of %d", n, SizeofKinfoProc) -+ } - -- // Read into buffer of that size. -- buf := make([]KinfoProc, n/SizeofKinfoProc) -- if err := sysctl(mib, (*byte)(unsafe.Pointer(&buf[0])), &n, nil, 0); err != nil { -- return nil, err -- } -- if n%SizeofKinfoProc != 0 { -- return nil, fmt.Errorf("sysctl() returned a size of %d, which is not a multiple of %d", n, SizeofKinfoProc) -- } -+ // Read into buffer of that size. -+ buf := make([]KinfoProc, n/SizeofKinfoProc) -+ if err := sysctl(mib, (*byte)(unsafe.Pointer(&buf[0])), &n, nil, 0); err != nil { -+ if err == ENOMEM { -+ // Process table grew. Try again. -+ continue -+ } -+ return nil, err -+ } -+ if n%SizeofKinfoProc != 0 { -+ return nil, fmt.Errorf("sysctl() returned a size of %d, which is not a multiple of %d", n, SizeofKinfoProc) -+ } - -- // The actual call may return less than the original reported required -- // size so ensure we deal with that. -- return buf[:n/SizeofKinfoProc], nil -+ // The actual call may return less than the original reported required -+ // size so ensure we deal with that. -+ return buf[:n/SizeofKinfoProc], nil -+ } - } - - //sys sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) -@@ -616,6 +619,7 @@ func SysctlKinfoProcSlice(name string, args ...int) ([]KinfoProc, error) { - //sys Rmdir(path string) (err error) - //sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK - //sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) -+//sys Setattrlist(path string, attrlist *Attrlist, attrBuf []byte, options int) (err error) - //sys Setegid(egid int) (err error) - //sysnb Seteuid(euid int) (err error) - //sysnb Setgid(gid int) (err error) -@@ -625,7 +629,6 @@ func SysctlKinfoProcSlice(name string, args ...int) ([]KinfoProc, error) { - //sys Setprivexec(flag int) (err error) - //sysnb Setregid(rgid int, egid int) (err error) - //sysnb Setreuid(ruid int, euid int) (err error) --//sysnb Setrlimit(which int, lim *Rlimit) (err error) - //sysnb Setsid() (pid int, err error) - //sysnb Settimeofday(tp *Timeval) (err error) - //sysnb Setuid(uid int) (err error) -@@ -641,190 +644,3 @@ func SysctlKinfoProcSlice(name string, args ...int) ([]KinfoProc, error) { - //sys write(fd int, p []byte) (n int, err error) - //sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) - //sys munmap(addr uintptr, length uintptr) (err error) --//sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ --//sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE -- --/* -- * Unimplemented -- */ --// Profil --// Sigaction --// Sigprocmask --// Getlogin --// Sigpending --// Sigaltstack --// Ioctl --// Reboot --// Execve --// Vfork --// Sbrk --// Sstk --// Ovadvise --// Mincore --// Setitimer --// Swapon --// Select --// Sigsuspend --// Readv --// Writev --// Nfssvc --// Getfh --// Quotactl --// Csops --// Waitid --// Add_profil --// Kdebug_trace --// Sigreturn --// Atsocket --// Kqueue_from_portset_np --// Kqueue_portset --// Getattrlist --// Setattrlist --// Getdirentriesattr --// Searchfs --// Delete --// Copyfile --// Watchevent --// Waitevent --// Modwatch --// Fsctl --// Initgroups --// Posix_spawn --// Nfsclnt --// Fhopen --// Minherit --// Semsys --// Msgsys --// Shmsys --// Semctl --// Semget --// Semop --// Msgctl --// Msgget --// Msgsnd --// Msgrcv --// Shm_open --// Shm_unlink --// Sem_open --// Sem_close --// Sem_unlink --// Sem_wait --// Sem_trywait --// Sem_post --// Sem_getvalue --// Sem_init --// Sem_destroy --// Open_extended --// Umask_extended --// Stat_extended --// Lstat_extended --// Fstat_extended --// Chmod_extended --// Fchmod_extended --// Access_extended --// Settid --// Gettid --// Setsgroups --// Getsgroups --// Setwgroups --// Getwgroups --// Mkfifo_extended --// Mkdir_extended --// Identitysvc --// Shared_region_check_np --// Shared_region_map_np --// __pthread_mutex_destroy --// __pthread_mutex_init --// __pthread_mutex_lock --// __pthread_mutex_trylock --// __pthread_mutex_unlock --// __pthread_cond_init --// __pthread_cond_destroy --// __pthread_cond_broadcast --// __pthread_cond_signal --// Setsid_with_pid --// __pthread_cond_timedwait --// Aio_fsync --// Aio_return --// Aio_suspend --// Aio_cancel --// Aio_error --// Aio_read --// Aio_write --// Lio_listio --// __pthread_cond_wait --// Iopolicysys --// __pthread_kill --// __pthread_sigmask --// __sigwait --// __disable_threadsignal --// __pthread_markcancel --// __pthread_canceled --// __semwait_signal --// Proc_info --// sendfile --// Stat64_extended --// Lstat64_extended --// Fstat64_extended --// __pthread_chdir --// __pthread_fchdir --// Audit --// Auditon --// Getauid --// Setauid --// Getaudit --// Setaudit --// Getaudit_addr --// Setaudit_addr --// Auditctl --// Bsdthread_create --// Bsdthread_terminate --// Stack_snapshot --// Bsdthread_register --// Workq_open --// Workq_ops --// __mac_execve --// __mac_syscall --// __mac_get_file --// __mac_set_file --// __mac_get_link --// __mac_set_link --// __mac_get_proc --// __mac_set_proc --// __mac_get_fd --// __mac_set_fd --// __mac_get_pid --// __mac_get_lcid --// __mac_get_lctx --// __mac_set_lctx --// Setlcid --// Read_nocancel --// Write_nocancel --// Open_nocancel --// Close_nocancel --// Wait4_nocancel --// Recvmsg_nocancel --// Sendmsg_nocancel --// Recvfrom_nocancel --// Accept_nocancel --// Fcntl_nocancel --// Select_nocancel --// Fsync_nocancel --// Connect_nocancel --// Sigsuspend_nocancel --// Readv_nocancel --// Writev_nocancel --// Sendto_nocancel --// Pread_nocancel --// Pwrite_nocancel --// Waitid_nocancel --// Poll_nocancel --// Msgsnd_nocancel --// Msgrcv_nocancel --// Sem_wait_nocancel --// Aio_suspend_nocancel --// __sigwait_nocancel --// __semwait_signal_nocancel --// __mac_mount --// __mac_get_mount --// __mac_getfsstat -diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go b/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/syscall_dragonfly.go b/vendor/golang.org/x/sys/unix/syscall_dragonfly.go -old mode 100644 -new mode 100755 -index 61c0d0d..97cb916 ---- a/vendor/golang.org/x/sys/unix/syscall_dragonfly.go -+++ b/vendor/golang.org/x/sys/unix/syscall_dragonfly.go -@@ -172,6 +172,7 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { - } - - //sys ioctl(fd int, req uint, arg uintptr) (err error) -+//sys ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL - - //sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL - -@@ -255,6 +256,7 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e - //sys Chmod(path string, mode uint32) (err error) - //sys Chown(path string, uid int, gid int) (err error) - //sys Chroot(path string) (err error) -+//sys ClockGettime(clockid int32, time *Timespec) (err error) - //sys Close(fd int) (err error) - //sys Dup(fd int) (nfd int, err error) - //sys Dup2(from int, to int) (err error) -@@ -324,7 +326,6 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e - //sysnb Setreuid(ruid int, euid int) (err error) - //sysnb Setresgid(rgid int, egid int, sgid int) (err error) - //sysnb Setresuid(ruid int, euid int, suid int) (err error) --//sysnb Setrlimit(which int, lim *Rlimit) (err error) - //sysnb Setsid() (pid int, err error) - //sysnb Settimeofday(tp *Timeval) (err error) - //sysnb Setuid(uid int) (err error) -@@ -342,203 +343,5 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e - //sys write(fd int, p []byte) (n int, err error) - //sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) - //sys munmap(addr uintptr, length uintptr) (err error) --//sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ --//sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE - //sys accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) - //sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) -- --/* -- * Unimplemented -- * TODO(jsing): Update this list for DragonFly. -- */ --// Profil --// Sigaction --// Sigprocmask --// Getlogin --// Sigpending --// Sigaltstack --// Reboot --// Execve --// Vfork --// Sbrk --// Sstk --// Ovadvise --// Mincore --// Setitimer --// Swapon --// Select --// Sigsuspend --// Readv --// Writev --// Nfssvc --// Getfh --// Quotactl --// Mount --// Csops --// Waitid --// Add_profil --// Kdebug_trace --// Sigreturn --// Atsocket --// Kqueue_from_portset_np --// Kqueue_portset --// Getattrlist --// Setattrlist --// Getdirentriesattr --// Searchfs --// Delete --// Copyfile --// Watchevent --// Waitevent --// Modwatch --// Getxattr --// Fgetxattr --// Setxattr --// Fsetxattr --// Removexattr --// Fremovexattr --// Listxattr --// Flistxattr --// Fsctl --// Initgroups --// Posix_spawn --// Nfsclnt --// Fhopen --// Minherit --// Semsys --// Msgsys --// Shmsys --// Semctl --// Semget --// Semop --// Msgctl --// Msgget --// Msgsnd --// Msgrcv --// Shmat --// Shmctl --// Shmdt --// Shmget --// Shm_open --// Shm_unlink --// Sem_open --// Sem_close --// Sem_unlink --// Sem_wait --// Sem_trywait --// Sem_post --// Sem_getvalue --// Sem_init --// Sem_destroy --// Open_extended --// Umask_extended --// Stat_extended --// Lstat_extended --// Fstat_extended --// Chmod_extended --// Fchmod_extended --// Access_extended --// Settid --// Gettid --// Setsgroups --// Getsgroups --// Setwgroups --// Getwgroups --// Mkfifo_extended --// Mkdir_extended --// Identitysvc --// Shared_region_check_np --// Shared_region_map_np --// __pthread_mutex_destroy --// __pthread_mutex_init --// __pthread_mutex_lock --// __pthread_mutex_trylock --// __pthread_mutex_unlock --// __pthread_cond_init --// __pthread_cond_destroy --// __pthread_cond_broadcast --// __pthread_cond_signal --// Setsid_with_pid --// __pthread_cond_timedwait --// Aio_fsync --// Aio_return --// Aio_suspend --// Aio_cancel --// Aio_error --// Aio_read --// Aio_write --// Lio_listio --// __pthread_cond_wait --// Iopolicysys --// __pthread_kill --// __pthread_sigmask --// __sigwait --// __disable_threadsignal --// __pthread_markcancel --// __pthread_canceled --// __semwait_signal --// Proc_info --// Stat64_extended --// Lstat64_extended --// Fstat64_extended --// __pthread_chdir --// __pthread_fchdir --// Audit --// Auditon --// Getauid --// Setauid --// Getaudit --// Setaudit --// Getaudit_addr --// Setaudit_addr --// Auditctl --// Bsdthread_create --// Bsdthread_terminate --// Stack_snapshot --// Bsdthread_register --// Workq_open --// Workq_ops --// __mac_execve --// __mac_syscall --// __mac_get_file --// __mac_set_file --// __mac_get_link --// __mac_set_link --// __mac_get_proc --// __mac_set_proc --// __mac_get_fd --// __mac_set_fd --// __mac_get_pid --// __mac_get_lcid --// __mac_get_lctx --// __mac_set_lctx --// Setlcid --// Read_nocancel --// Write_nocancel --// Open_nocancel --// Close_nocancel --// Wait4_nocancel --// Recvmsg_nocancel --// Sendmsg_nocancel --// Recvfrom_nocancel --// Accept_nocancel --// Fcntl_nocancel --// Select_nocancel --// Fsync_nocancel --// Connect_nocancel --// Sigsuspend_nocancel --// Readv_nocancel --// Writev_nocancel --// Sendto_nocancel --// Pread_nocancel --// Pwrite_nocancel --// Waitid_nocancel --// Msgsnd_nocancel --// Msgrcv_nocancel --// Sem_wait_nocancel --// Aio_suspend_nocancel --// __sigwait_nocancel --// __semwait_signal_nocancel --// __mac_mount --// __mac_get_mount --// __mac_getfsstat -diff --git a/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd.go b/vendor/golang.org/x/sys/unix/syscall_freebsd.go -old mode 100644 -new mode 100755 -index de7c23e..64d1bb4 ---- a/vendor/golang.org/x/sys/unix/syscall_freebsd.go -+++ b/vendor/golang.org/x/sys/unix/syscall_freebsd.go -@@ -161,7 +161,8 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { - return - } - --//sys ioctl(fd int, req uint, arg uintptr) (err error) -+//sys ioctl(fd int, req uint, arg uintptr) (err error) = SYS_IOCTL -+//sys ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL - - //sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL - -@@ -253,6 +254,7 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e - } - - //sys ptrace(request int, pid int, addr uintptr, data int) (err error) -+//sys ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) = SYS_PTRACE - - func PtraceAttach(pid int) (err error) { - return ptrace(PT_ATTACH, pid, 0, 0) -@@ -267,19 +269,36 @@ func PtraceDetach(pid int) (err error) { - } - - func PtraceGetFpRegs(pid int, fpregsout *FpReg) (err error) { -- return ptrace(PT_GETFPREGS, pid, uintptr(unsafe.Pointer(fpregsout)), 0) -+ return ptracePtr(PT_GETFPREGS, pid, unsafe.Pointer(fpregsout), 0) - } - - func PtraceGetRegs(pid int, regsout *Reg) (err error) { -- return ptrace(PT_GETREGS, pid, uintptr(unsafe.Pointer(regsout)), 0) -+ return ptracePtr(PT_GETREGS, pid, unsafe.Pointer(regsout), 0) -+} -+ -+func PtraceIO(req int, pid int, offs uintptr, out []byte, countin int) (count int, err error) { -+ ioDesc := PtraceIoDesc{ -+ Op: int32(req), -+ Offs: offs, -+ } -+ if countin > 0 { -+ _ = out[:countin] // check bounds -+ ioDesc.Addr = &out[0] -+ } else if out != nil { -+ ioDesc.Addr = (*byte)(unsafe.Pointer(&_zero)) -+ } -+ ioDesc.SetLen(countin) -+ -+ err = ptracePtr(PT_IO, pid, unsafe.Pointer(&ioDesc), 0) -+ return int(ioDesc.Len), err - } - - func PtraceLwpEvents(pid int, enable int) (err error) { - return ptrace(PT_LWP_EVENTS, pid, 0, enable) - } - --func PtraceLwpInfo(pid int, info uintptr) (err error) { -- return ptrace(PT_LWPINFO, pid, info, int(unsafe.Sizeof(PtraceLwpInfoStruct{}))) -+func PtraceLwpInfo(pid int, info *PtraceLwpInfoStruct) (err error) { -+ return ptracePtr(PT_LWPINFO, pid, unsafe.Pointer(info), int(unsafe.Sizeof(*info))) - } - - func PtracePeekData(pid int, addr uintptr, out []byte) (count int, err error) { -@@ -299,13 +318,25 @@ func PtracePokeText(pid int, addr uintptr, data []byte) (count int, err error) { - } - - func PtraceSetRegs(pid int, regs *Reg) (err error) { -- return ptrace(PT_SETREGS, pid, uintptr(unsafe.Pointer(regs)), 0) -+ return ptracePtr(PT_SETREGS, pid, unsafe.Pointer(regs), 0) - } - - func PtraceSingleStep(pid int) (err error) { - return ptrace(PT_STEP, pid, 1, 0) - } - -+func Dup3(oldfd, newfd, flags int) error { -+ if oldfd == newfd || flags&^O_CLOEXEC != 0 { -+ return EINVAL -+ } -+ how := F_DUP2FD -+ if flags&O_CLOEXEC != 0 { -+ how = F_DUP2FD_CLOEXEC -+ } -+ _, err := fcntl(oldfd, how, newfd) -+ return err -+} -+ - /* - * Exposed directly - */ -@@ -319,6 +350,7 @@ func PtraceSingleStep(pid int) (err error) { - //sys Chmod(path string, mode uint32) (err error) - //sys Chown(path string, uid int, gid int) (err error) - //sys Chroot(path string) (err error) -+//sys ClockGettime(clockid int32, time *Timespec) (err error) - //sys Close(fd int) (err error) - //sys Dup(fd int) (nfd int, err error) - //sys Dup2(from int, to int) (err error) -@@ -401,7 +433,6 @@ func PtraceSingleStep(pid int) (err error) { - //sysnb Setreuid(ruid int, euid int) (err error) - //sysnb Setresgid(rgid int, egid int, sgid int) (err error) - //sysnb Setresuid(ruid int, euid int, suid int) (err error) --//sysnb Setrlimit(which int, lim *Rlimit) (err error) - //sysnb Setsid() (pid int, err error) - //sysnb Settimeofday(tp *Timeval) (err error) - //sysnb Setuid(uid int) (err error) -@@ -418,197 +449,5 @@ func PtraceSingleStep(pid int) (err error) { - //sys write(fd int, p []byte) (n int, err error) - //sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) - //sys munmap(addr uintptr, length uintptr) (err error) --//sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ --//sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE - //sys accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) - //sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) -- --/* -- * Unimplemented -- */ --// Profil --// Sigaction --// Sigprocmask --// Getlogin --// Sigpending --// Sigaltstack --// Ioctl --// Reboot --// Execve --// Vfork --// Sbrk --// Sstk --// Ovadvise --// Mincore --// Setitimer --// Swapon --// Select --// Sigsuspend --// Readv --// Writev --// Nfssvc --// Getfh --// Quotactl --// Mount --// Csops --// Waitid --// Add_profil --// Kdebug_trace --// Sigreturn --// Atsocket --// Kqueue_from_portset_np --// Kqueue_portset --// Getattrlist --// Setattrlist --// Getdents --// Getdirentriesattr --// Searchfs --// Delete --// Copyfile --// Watchevent --// Waitevent --// Modwatch --// Fsctl --// Initgroups --// Posix_spawn --// Nfsclnt --// Fhopen --// Minherit --// Semsys --// Msgsys --// Shmsys --// Semctl --// Semget --// Semop --// Msgctl --// Msgget --// Msgsnd --// Msgrcv --// Shmat --// Shmctl --// Shmdt --// Shmget --// Shm_open --// Shm_unlink --// Sem_open --// Sem_close --// Sem_unlink --// Sem_wait --// Sem_trywait --// Sem_post --// Sem_getvalue --// Sem_init --// Sem_destroy --// Open_extended --// Umask_extended --// Stat_extended --// Lstat_extended --// Fstat_extended --// Chmod_extended --// Fchmod_extended --// Access_extended --// Settid --// Gettid --// Setsgroups --// Getsgroups --// Setwgroups --// Getwgroups --// Mkfifo_extended --// Mkdir_extended --// Identitysvc --// Shared_region_check_np --// Shared_region_map_np --// __pthread_mutex_destroy --// __pthread_mutex_init --// __pthread_mutex_lock --// __pthread_mutex_trylock --// __pthread_mutex_unlock --// __pthread_cond_init --// __pthread_cond_destroy --// __pthread_cond_broadcast --// __pthread_cond_signal --// Setsid_with_pid --// __pthread_cond_timedwait --// Aio_fsync --// Aio_return --// Aio_suspend --// Aio_cancel --// Aio_error --// Aio_read --// Aio_write --// Lio_listio --// __pthread_cond_wait --// Iopolicysys --// __pthread_kill --// __pthread_sigmask --// __sigwait --// __disable_threadsignal --// __pthread_markcancel --// __pthread_canceled --// __semwait_signal --// Proc_info --// Stat64_extended --// Lstat64_extended --// Fstat64_extended --// __pthread_chdir --// __pthread_fchdir --// Audit --// Auditon --// Getauid --// Setauid --// Getaudit --// Setaudit --// Getaudit_addr --// Setaudit_addr --// Auditctl --// Bsdthread_create --// Bsdthread_terminate --// Stack_snapshot --// Bsdthread_register --// Workq_open --// Workq_ops --// __mac_execve --// __mac_syscall --// __mac_get_file --// __mac_set_file --// __mac_get_link --// __mac_set_link --// __mac_get_proc --// __mac_set_proc --// __mac_get_fd --// __mac_set_fd --// __mac_get_pid --// __mac_get_lcid --// __mac_get_lctx --// __mac_set_lctx --// Setlcid --// Read_nocancel --// Write_nocancel --// Open_nocancel --// Close_nocancel --// Wait4_nocancel --// Recvmsg_nocancel --// Sendmsg_nocancel --// Recvfrom_nocancel --// Accept_nocancel --// Fcntl_nocancel --// Select_nocancel --// Fsync_nocancel --// Connect_nocancel --// Sigsuspend_nocancel --// Readv_nocancel --// Writev_nocancel --// Sendto_nocancel --// Pread_nocancel --// Pwrite_nocancel --// Waitid_nocancel --// Poll_nocancel --// Msgsnd_nocancel --// Msgrcv_nocancel --// Sem_wait_nocancel --// Aio_suspend_nocancel --// __sigwait_nocancel --// __semwait_signal_nocancel --// __mac_mount --// __mac_get_mount --// __mac_getfsstat -diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go -old mode 100644 -new mode 100755 -index b11ede8..b8da510 ---- a/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go -+++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go -@@ -42,6 +42,10 @@ func (cmsg *Cmsghdr) SetLen(length int) { - cmsg.Len = uint32(length) - } - -+func (d *PtraceIoDesc) SetLen(length int) { -+ d.Len = uint32(length) -+} -+ - func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { - var writtenOut uint64 = 0 - _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr((*offset)>>32), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0) -@@ -57,11 +61,5 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e - func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) - - func PtraceGetFsBase(pid int, fsbase *int64) (err error) { -- return ptrace(PT_GETFSBASE, pid, uintptr(unsafe.Pointer(fsbase)), 0) --} -- --func PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) { -- ioDesc := PtraceIoDesc{Op: int32(req), Offs: uintptr(unsafe.Pointer(addr)), Addr: uintptr(unsafe.Pointer(&out[0])), Len: uint32(countin)} -- err = ptrace(PT_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0) -- return int(ioDesc.Len), err -+ return ptracePtr(PT_GETFSBASE, pid, unsafe.Pointer(fsbase), 0) - } -diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go -old mode 100644 -new mode 100755 -index 9ed8eec..47155c4 ---- a/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go -+++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go -@@ -42,6 +42,10 @@ func (cmsg *Cmsghdr) SetLen(length int) { - cmsg.Len = uint32(length) - } - -+func (d *PtraceIoDesc) SetLen(length int) { -+ d.Len = uint64(length) -+} -+ - func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { - var writtenOut uint64 = 0 - _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0) -@@ -57,11 +61,5 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e - func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) - - func PtraceGetFsBase(pid int, fsbase *int64) (err error) { -- return ptrace(PT_GETFSBASE, pid, uintptr(unsafe.Pointer(fsbase)), 0) --} -- --func PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) { -- ioDesc := PtraceIoDesc{Op: int32(req), Offs: uintptr(unsafe.Pointer(addr)), Addr: uintptr(unsafe.Pointer(&out[0])), Len: uint64(countin)} -- err = ptrace(PT_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0) -- return int(ioDesc.Len), err -+ return ptracePtr(PT_GETFSBASE, pid, unsafe.Pointer(fsbase), 0) - } -diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go -old mode 100644 -new mode 100755 -index f8ac982..0893209 ---- a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go -+++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go -@@ -42,6 +42,10 @@ func (cmsg *Cmsghdr) SetLen(length int) { - cmsg.Len = uint32(length) - } - -+func (d *PtraceIoDesc) SetLen(length int) { -+ d.Len = uint32(length) -+} -+ - func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { - var writtenOut uint64 = 0 - _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr((*offset)>>32), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0) -@@ -55,9 +59,3 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e - } - - func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) -- --func PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) { -- ioDesc := PtraceIoDesc{Op: int32(req), Offs: uintptr(unsafe.Pointer(addr)), Addr: uintptr(unsafe.Pointer(&out[0])), Len: uint32(countin)} -- err = ptrace(PT_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0) -- return int(ioDesc.Len), err --} -diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go -old mode 100644 -new mode 100755 -index 8e93203..d151a0d ---- a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go -+++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go -@@ -42,6 +42,10 @@ func (cmsg *Cmsghdr) SetLen(length int) { - cmsg.Len = uint32(length) - } - -+func (d *PtraceIoDesc) SetLen(length int) { -+ d.Len = uint64(length) -+} -+ - func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { - var writtenOut uint64 = 0 - _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0) -@@ -55,9 +59,3 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e - } - - func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) -- --func PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) { -- ioDesc := PtraceIoDesc{Op: int32(req), Offs: uintptr(unsafe.Pointer(addr)), Addr: uintptr(unsafe.Pointer(&out[0])), Len: uint64(countin)} -- err = ptrace(PT_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0) -- return int(ioDesc.Len), err --} -diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go -old mode 100644 -new mode 100755 -index cbe1222..d5cd64b ---- a/vendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go -+++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go -@@ -42,6 +42,10 @@ func (cmsg *Cmsghdr) SetLen(length int) { - cmsg.Len = uint32(length) - } - -+func (d *PtraceIoDesc) SetLen(length int) { -+ d.Len = uint64(length) -+} -+ - func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { - var writtenOut uint64 = 0 - _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0) -@@ -55,9 +59,3 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e - } - - func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) -- --func PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) { -- ioDesc := PtraceIoDesc{Op: int32(req), Offs: uintptr(unsafe.Pointer(addr)), Addr: uintptr(unsafe.Pointer(&out[0])), Len: uint64(countin)} -- err = ptrace(PT_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0) -- return int(ioDesc.Len), err --} -diff --git a/vendor/golang.org/x/sys/unix/syscall_hurd.go b/vendor/golang.org/x/sys/unix/syscall_hurd.go -new file mode 100755 -index 0000000..381fd46 ---- /dev/null -+++ b/vendor/golang.org/x/sys/unix/syscall_hurd.go -@@ -0,0 +1,30 @@ -+// Copyright 2022 The Go 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:build hurd -+// +build hurd -+ -+package unix -+ -+/* -+#include -+int ioctl(int, unsigned long int, uintptr_t); -+*/ -+import "C" -+ -+func ioctl(fd int, req uint, arg uintptr) (err error) { -+ r0, er := C.ioctl(C.int(fd), C.ulong(req), C.uintptr_t(arg)) -+ if r0 == -1 && er != nil { -+ err = er -+ } -+ return -+} -+ -+func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { -+ r0, er := C.ioctl(C.int(fd), C.ulong(req), C.uintptr_t(uintptr(arg))) -+ if r0 == -1 && er != nil { -+ err = er -+ } -+ return -+} -diff --git a/vendor/golang.org/x/sys/unix/syscall_hurd_386.go b/vendor/golang.org/x/sys/unix/syscall_hurd_386.go -new file mode 100755 -index 0000000..7cf54a3 ---- /dev/null -+++ b/vendor/golang.org/x/sys/unix/syscall_hurd_386.go -@@ -0,0 +1,29 @@ -+// Copyright 2022 The Go 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:build 386 && hurd -+// +build 386,hurd -+ -+package unix -+ -+const ( -+ TIOCGETA = 0x62251713 -+) -+ -+type Winsize struct { -+ Row uint16 -+ Col uint16 -+ Xpixel uint16 -+ Ypixel uint16 -+} -+ -+type Termios struct { -+ Iflag uint32 -+ Oflag uint32 -+ Cflag uint32 -+ Lflag uint32 -+ Cc [20]uint8 -+ Ispeed int32 -+ Ospeed int32 -+} -diff --git a/vendor/golang.org/x/sys/unix/syscall_illumos.go b/vendor/golang.org/x/sys/unix/syscall_illumos.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/syscall_linux.go b/vendor/golang.org/x/sys/unix/syscall_linux.go -old mode 100644 -new mode 100755 -index c5a9844..fb4e502 ---- a/vendor/golang.org/x/sys/unix/syscall_linux.go -+++ b/vendor/golang.org/x/sys/unix/syscall_linux.go -@@ -693,10 +693,10 @@ type SockaddrALG struct { - - func (sa *SockaddrALG) sockaddr() (unsafe.Pointer, _Socklen, error) { - // Leave room for NUL byte terminator. -- if len(sa.Type) > 13 { -+ if len(sa.Type) > len(sa.raw.Type)-1 { - return nil, 0, EINVAL - } -- if len(sa.Name) > 63 { -+ if len(sa.Name) > len(sa.raw.Name)-1 { - return nil, 0, EINVAL - } - -@@ -704,17 +704,8 @@ func (sa *SockaddrALG) sockaddr() (unsafe.Pointer, _Socklen, error) { - sa.raw.Feat = sa.Feature - sa.raw.Mask = sa.Mask - -- typ, err := ByteSliceFromString(sa.Type) -- if err != nil { -- return nil, 0, err -- } -- name, err := ByteSliceFromString(sa.Name) -- if err != nil { -- return nil, 0, err -- } -- -- copy(sa.raw.Type[:], typ) -- copy(sa.raw.Name[:], name) -+ copy(sa.raw.Type[:], sa.Type) -+ copy(sa.raw.Name[:], sa.Name) - - return unsafe.Pointer(&sa.raw), SizeofSockaddrALG, nil - } -@@ -1015,8 +1006,7 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { - for n < len(pp.Path) && pp.Path[n] != 0 { - n++ - } -- bytes := (*[len(pp.Path)]byte)(unsafe.Pointer(&pp.Path[0]))[0:n] -- sa.Name = string(bytes) -+ sa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n)) - return sa, nil - - case AF_INET: -@@ -1365,6 +1355,10 @@ func SetsockoptTCPRepairOpt(fd, level, opt int, o []TCPRepairOpt) (err error) { - return setsockopt(fd, level, opt, unsafe.Pointer(&o[0]), uintptr(SizeofTCPRepairOpt*len(o))) - } - -+func SetsockoptTCPMD5Sig(fd, level, opt int, s *TCPMD5Sig) error { -+ return setsockopt(fd, level, opt, unsafe.Pointer(s), unsafe.Sizeof(*s)) -+} -+ - // Keyctl Commands (http://man7.org/linux/man-pages/man2/keyctl.2.html) - - // KeyctlInt calls keyctl commands in which each argument is an int. -@@ -1579,6 +1573,7 @@ func BindToDevice(fd int, device string) (err error) { - } - - //sys ptrace(request int, pid int, addr uintptr, data uintptr) (err error) -+//sys ptracePtr(request int, pid int, addr uintptr, data unsafe.Pointer) (err error) = SYS_PTRACE - - func ptracePeek(req int, pid int, addr uintptr, out []byte) (count int, err error) { - // The peek requests are machine-size oriented, so we wrap it -@@ -1596,7 +1591,7 @@ func ptracePeek(req int, pid int, addr uintptr, out []byte) (count int, err erro - // boundary. - n := 0 - if addr%SizeofPtr != 0 { -- err = ptrace(req, pid, addr-addr%SizeofPtr, uintptr(unsafe.Pointer(&buf[0]))) -+ err = ptracePtr(req, pid, addr-addr%SizeofPtr, unsafe.Pointer(&buf[0])) - if err != nil { - return 0, err - } -@@ -1608,7 +1603,7 @@ func ptracePeek(req int, pid int, addr uintptr, out []byte) (count int, err erro - for len(out) > 0 { - // We use an internal buffer to guarantee alignment. - // It's not documented if this is necessary, but we're paranoid. -- err = ptrace(req, pid, addr+uintptr(n), uintptr(unsafe.Pointer(&buf[0]))) -+ err = ptracePtr(req, pid, addr+uintptr(n), unsafe.Pointer(&buf[0])) - if err != nil { - return n, err - } -@@ -1640,7 +1635,7 @@ func ptracePoke(pokeReq int, peekReq int, pid int, addr uintptr, data []byte) (c - n := 0 - if addr%SizeofPtr != 0 { - var buf [SizeofPtr]byte -- err = ptrace(peekReq, pid, addr-addr%SizeofPtr, uintptr(unsafe.Pointer(&buf[0]))) -+ err = ptracePtr(peekReq, pid, addr-addr%SizeofPtr, unsafe.Pointer(&buf[0])) - if err != nil { - return 0, err - } -@@ -1667,7 +1662,7 @@ func ptracePoke(pokeReq int, peekReq int, pid int, addr uintptr, data []byte) (c - // Trailing edge. - if len(data) > 0 { - var buf [SizeofPtr]byte -- err = ptrace(peekReq, pid, addr+uintptr(n), uintptr(unsafe.Pointer(&buf[0]))) -+ err = ptracePtr(peekReq, pid, addr+uintptr(n), unsafe.Pointer(&buf[0])) - if err != nil { - return n, err - } -@@ -1695,12 +1690,23 @@ func PtracePokeUser(pid int, addr uintptr, data []byte) (count int, err error) { - return ptracePoke(PTRACE_POKEUSR, PTRACE_PEEKUSR, pid, addr, data) - } - -+// elfNT_PRSTATUS is a copy of the debug/elf.NT_PRSTATUS constant so -+// x/sys/unix doesn't need to depend on debug/elf and thus -+// compress/zlib, debug/dwarf, and other packages. -+const elfNT_PRSTATUS = 1 -+ - func PtraceGetRegs(pid int, regsout *PtraceRegs) (err error) { -- return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) -+ var iov Iovec -+ iov.Base = (*byte)(unsafe.Pointer(regsout)) -+ iov.SetLen(int(unsafe.Sizeof(*regsout))) -+ return ptracePtr(PTRACE_GETREGSET, pid, uintptr(elfNT_PRSTATUS), unsafe.Pointer(&iov)) - } - - func PtraceSetRegs(pid int, regs *PtraceRegs) (err error) { -- return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) -+ var iov Iovec -+ iov.Base = (*byte)(unsafe.Pointer(regs)) -+ iov.SetLen(int(unsafe.Sizeof(*regs))) -+ return ptracePtr(PTRACE_SETREGSET, pid, uintptr(elfNT_PRSTATUS), unsafe.Pointer(&iov)) - } - - func PtraceSetOptions(pid int, options int) (err error) { -@@ -1709,7 +1715,7 @@ func PtraceSetOptions(pid int, options int) (err error) { - - func PtraceGetEventMsg(pid int) (msg uint, err error) { - var data _C_long -- err = ptrace(PTRACE_GETEVENTMSG, pid, 0, uintptr(unsafe.Pointer(&data))) -+ err = ptracePtr(PTRACE_GETEVENTMSG, pid, 0, unsafe.Pointer(&data)) - msg = uint(data) - return - } -@@ -1800,6 +1806,7 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e - //sysnb Capset(hdr *CapUserHeader, data *CapUserData) (err error) - //sys Chdir(path string) (err error) - //sys Chroot(path string) (err error) -+//sys ClockAdjtime(clockid int32, buf *Timex) (state int, err error) - //sys ClockGetres(clockid int32, res *Timespec) (err error) - //sys ClockGettime(clockid int32, time *Timespec) (err error) - //sys ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) -@@ -1868,9 +1875,8 @@ func Getpgrp() (pid int) { - //sys OpenTree(dfd int, fileName string, flags uint) (r int, err error) - //sys PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) - //sys PivotRoot(newroot string, putold string) (err error) = SYS_PIVOT_ROOT --//sysnb Prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) = SYS_PRLIMIT64 - //sys Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) --//sys Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) = SYS_PSELECT6 -+//sys pselect6(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *sigset_argpack) (n int, err error) - //sys read(fd int, p []byte) (n int, err error) - //sys Removexattr(path string, attr string) (err error) - //sys Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) -@@ -1882,6 +1888,15 @@ func Getpgrp() (pid int) { - //sysnb Settimeofday(tv *Timeval) (err error) - //sys Setns(fd int, nstype int) (err error) - -+//go:linkname syscall_prlimit syscall.prlimit -+func syscall_prlimit(pid, resource int, newlimit, old *syscall.Rlimit) error -+ -+func Prlimit(pid, resource int, newlimit, old *Rlimit) error { -+ // Just call the syscall version, because as of Go 1.21 -+ // it will affect starting a new process. -+ return syscall_prlimit(pid, resource, (*syscall.Rlimit)(newlimit), (*syscall.Rlimit)(old)) -+} -+ - // PrctlRetInt performs a prctl operation specified by option and further - // optional arguments arg2 through arg5 depending on option. It returns a - // non-negative integer that is returned by the prctl syscall. -@@ -1964,8 +1979,6 @@ func Signalfd(fd int, sigmask *Sigset_t, flags int) (newfd int, err error) { - //sys Unshare(flags int) (err error) - //sys write(fd int, p []byte) (n int, err error) - //sys exitThread(code int) (err error) = SYS_EXIT --//sys readlen(fd int, p *byte, np int) (n int, err error) = SYS_READ --//sys writelen(fd int, p *byte, np int) (n int, err error) = SYS_WRITE - //sys readv(fd int, iovs []Iovec) (n int, err error) = SYS_READV - //sys writev(fd int, iovs []Iovec) (n int, err error) = SYS_WRITEV - //sys preadv(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr) (n int, err error) = SYS_PREADV -@@ -1973,36 +1986,46 @@ func Signalfd(fd int, sigmask *Sigset_t, flags int) (newfd int, err error) { - //sys preadv2(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr, flags int) (n int, err error) = SYS_PREADV2 - //sys pwritev2(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr, flags int) (n int, err error) = SYS_PWRITEV2 - --func bytes2iovec(bs [][]byte) []Iovec { -- iovecs := make([]Iovec, len(bs)) -- for i, b := range bs { -- iovecs[i].SetLen(len(b)) -+// minIovec is the size of the small initial allocation used by -+// Readv, Writev, etc. -+// -+// This small allocation gets stack allocated, which lets the -+// common use case of len(iovs) <= minIovs avoid more expensive -+// heap allocations. -+const minIovec = 8 -+ -+// appendBytes converts bs to Iovecs and appends them to vecs. -+func appendBytes(vecs []Iovec, bs [][]byte) []Iovec { -+ for _, b := range bs { -+ var v Iovec -+ v.SetLen(len(b)) - if len(b) > 0 { -- iovecs[i].Base = &b[0] -+ v.Base = &b[0] - } else { -- iovecs[i].Base = (*byte)(unsafe.Pointer(&_zero)) -+ v.Base = (*byte)(unsafe.Pointer(&_zero)) - } -+ vecs = append(vecs, v) - } -- return iovecs -+ return vecs - } - --// offs2lohi splits offs into its lower and upper unsigned long. On 64-bit --// systems, hi will always be 0. On 32-bit systems, offs will be split in half. --// preadv/pwritev chose this calling convention so they don't need to add a --// padding-register for alignment on ARM. -+// offs2lohi splits offs into its low and high order bits. - func offs2lohi(offs int64) (lo, hi uintptr) { -- return uintptr(offs), uintptr(uint64(offs) >> SizeofLong) -+ const longBits = SizeofLong * 8 -+ return uintptr(offs), uintptr(uint64(offs) >> (longBits - 1) >> 1) // two shifts to avoid false positive in vet - } - - func Readv(fd int, iovs [][]byte) (n int, err error) { -- iovecs := bytes2iovec(iovs) -+ iovecs := make([]Iovec, 0, minIovec) -+ iovecs = appendBytes(iovecs, iovs) - n, err = readv(fd, iovecs) - readvRacedetect(iovecs, n, err) - return n, err - } - - func Preadv(fd int, iovs [][]byte, offset int64) (n int, err error) { -- iovecs := bytes2iovec(iovs) -+ iovecs := make([]Iovec, 0, minIovec) -+ iovecs = appendBytes(iovecs, iovs) - lo, hi := offs2lohi(offset) - n, err = preadv(fd, iovecs, lo, hi) - readvRacedetect(iovecs, n, err) -@@ -2010,7 +2033,8 @@ func Preadv(fd int, iovs [][]byte, offset int64) (n int, err error) { - } - - func Preadv2(fd int, iovs [][]byte, offset int64, flags int) (n int, err error) { -- iovecs := bytes2iovec(iovs) -+ iovecs := make([]Iovec, 0, minIovec) -+ iovecs = appendBytes(iovecs, iovs) - lo, hi := offs2lohi(offset) - n, err = preadv2(fd, iovecs, lo, hi, flags) - readvRacedetect(iovecs, n, err) -@@ -2037,7 +2061,8 @@ func readvRacedetect(iovecs []Iovec, n int, err error) { - } - - func Writev(fd int, iovs [][]byte) (n int, err error) { -- iovecs := bytes2iovec(iovs) -+ iovecs := make([]Iovec, 0, minIovec) -+ iovecs = appendBytes(iovecs, iovs) - if raceenabled { - raceReleaseMerge(unsafe.Pointer(&ioSync)) - } -@@ -2047,7 +2072,8 @@ func Writev(fd int, iovs [][]byte) (n int, err error) { - } - - func Pwritev(fd int, iovs [][]byte, offset int64) (n int, err error) { -- iovecs := bytes2iovec(iovs) -+ iovecs := make([]Iovec, 0, minIovec) -+ iovecs = appendBytes(iovecs, iovs) - if raceenabled { - raceReleaseMerge(unsafe.Pointer(&ioSync)) - } -@@ -2058,7 +2084,8 @@ func Pwritev(fd int, iovs [][]byte, offset int64) (n int, err error) { - } - - func Pwritev2(fd int, iovs [][]byte, offset int64, flags int) (n int, err error) { -- iovecs := bytes2iovec(iovs) -+ iovecs := make([]Iovec, 0, minIovec) -+ iovecs = appendBytes(iovecs, iovs) - if raceenabled { - raceReleaseMerge(unsafe.Pointer(&ioSync)) - } -@@ -2086,21 +2113,7 @@ func writevRacedetect(iovecs []Iovec, n int) { - - // mmap varies by architecture; see syscall_linux_*.go. - //sys munmap(addr uintptr, length uintptr) (err error) -- --var mapper = &mmapper{ -- active: make(map[*byte][]byte), -- mmap: mmap, -- munmap: munmap, --} -- --func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) { -- return mapper.Mmap(fd, offset, length, prot, flags) --} -- --func Munmap(b []byte) (err error) { -- return mapper.Munmap(b) --} -- -+//sys mremap(oldaddr uintptr, oldlength uintptr, newlength uintptr, flags int, newaddr uintptr) (xaddr uintptr, err error) - //sys Madvise(b []byte, advice int) (err error) - //sys Mprotect(b []byte, prot int) (err error) - //sys Mlock(b []byte) (err error) -@@ -2109,6 +2122,12 @@ func Munmap(b []byte) (err error) { - //sys Munlock(b []byte) (err error) - //sys Munlockall() (err error) - -+const ( -+ mremapFixed = MREMAP_FIXED -+ mremapDontunmap = MREMAP_DONTUNMAP -+ mremapMaymove = MREMAP_MAYMOVE -+) -+ - // Vmsplice splices user pages from a slice of Iovecs into a pipe specified by fd, - // using the specified flags. - func Vmsplice(fd int, iovs []Iovec, flags int) (int, error) { -@@ -2139,6 +2158,14 @@ func isGroupMember(gid int) bool { - return false - } - -+func isCapDacOverrideSet() bool { -+ hdr := CapUserHeader{Version: LINUX_CAPABILITY_VERSION_3} -+ data := [2]CapUserData{} -+ err := Capget(&hdr, &data[0]) -+ -+ return err == nil && data[0].Effective&(1<> 63) // see math.intSize -+ -+ // A sigset stores one bit per signal, -+ // offset by 1 (because signal 0 does not exist). -+ // So the number of words needed is ⌈__C_NSIG - 1 / wordBits⌉. -+ sigsetWords := (_C__NSIG - 1 + wordBits - 1) / (wordBits) -+ -+ sigsetBytes := uintptr(sigsetWords * (wordBits / 8)) -+ kernelMask = &sigset_argpack{ -+ ss: sigmask, -+ ssLen: sigsetBytes, -+ } -+ } -+ -+ return pselect6(nfd, r, w, e, mutableTimeout, kernelMask) -+} -+ -+//sys schedSetattr(pid int, attr *SchedAttr, flags uint) (err error) -+//sys schedGetattr(pid int, attr *SchedAttr, size uint, flags uint) (err error) -+ -+// SchedSetAttr is a wrapper for sched_setattr(2) syscall. -+// https://man7.org/linux/man-pages/man2/sched_setattr.2.html -+func SchedSetAttr(pid int, attr *SchedAttr, flags uint) error { -+ if attr == nil { -+ return EINVAL -+ } -+ attr.Size = SizeofSchedAttr -+ return schedSetattr(pid, attr, flags) -+} -+ -+// SchedGetAttr is a wrapper for sched_getattr(2) syscall. -+// https://man7.org/linux/man-pages/man2/sched_getattr.2.html -+func SchedGetAttr(pid int, flags uint) (*SchedAttr, error) { -+ attr := &SchedAttr{} -+ if err := schedGetattr(pid, attr, SizeofSchedAttr, flags); err != nil { -+ return nil, err -+ } -+ return attr, nil -+} -diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_386.go b/vendor/golang.org/x/sys/unix/syscall_linux_386.go -old mode 100644 -new mode 100755 -index ff5b589..c7d9945 ---- a/vendor/golang.org/x/sys/unix/syscall_linux_386.go -+++ b/vendor/golang.org/x/sys/unix/syscall_linux_386.go -@@ -97,33 +97,6 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) { - return - } - --//sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT -- --func Setrlimit(resource int, rlim *Rlimit) (err error) { -- err = Prlimit(0, resource, rlim, nil) -- if err != ENOSYS { -- return err -- } -- -- rl := rlimit32{} -- if rlim.Cur == rlimInf64 { -- rl.Cur = rlimInf32 -- } else if rlim.Cur < uint64(rlimInf32) { -- rl.Cur = uint32(rlim.Cur) -- } else { -- return EINVAL -- } -- if rlim.Max == rlimInf64 { -- rl.Max = rlimInf32 -- } else if rlim.Max < uint64(rlimInf32) { -- rl.Max = uint32(rlim.Max) -- } else { -- return EINVAL -- } -- -- return setrlimit(resource, &rl) --} -- - func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { - newoffset, errno := seek(fd, offset, whence) - if errno != 0 { -diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_alarm.go b/vendor/golang.org/x/sys/unix/syscall_linux_alarm.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go b/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go -old mode 100644 -new mode 100755 -index 9b27035..70601ce ---- a/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go -+++ b/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go -@@ -40,13 +40,12 @@ func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err - if timeout != nil { - ts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000} - } -- return Pselect(nfd, r, w, e, ts, nil) -+ return pselect6(nfd, r, w, e, ts, nil) - } - - //sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) - //sys setfsgid(gid int) (prev int, err error) - //sys setfsuid(uid int) (prev int, err error) --//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) - //sys Shutdown(fd int, how int) (err error) - //sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) - -diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go b/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm.go b/vendor/golang.org/x/sys/unix/syscall_linux_arm.go -old mode 100644 -new mode 100755 -index 856ad1d..da29864 ---- a/vendor/golang.org/x/sys/unix/syscall_linux_arm.go -+++ b/vendor/golang.org/x/sys/unix/syscall_linux_arm.go -@@ -171,33 +171,6 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) { - return - } - --//sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT -- --func Setrlimit(resource int, rlim *Rlimit) (err error) { -- err = Prlimit(0, resource, rlim, nil) -- if err != ENOSYS { -- return err -- } -- -- rl := rlimit32{} -- if rlim.Cur == rlimInf64 { -- rl.Cur = rlimInf32 -- } else if rlim.Cur < uint64(rlimInf32) { -- rl.Cur = uint32(rlim.Cur) -- } else { -- return EINVAL -- } -- if rlim.Max == rlimInf64 { -- rl.Max = rlimInf32 -- } else if rlim.Max < uint64(rlimInf32) { -- rl.Max = uint32(rlim.Max) -- } else { -- return EINVAL -- } -- -- return setrlimit(resource, &rl) --} -- - func (r *PtraceRegs) PC() uint64 { return uint64(r.Uregs[15]) } - - func (r *PtraceRegs) SetPC(pc uint64) { r.Uregs[15] = uint32(pc) } -diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go -old mode 100644 -new mode 100755 -index 6422704..f526668 ---- a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go -+++ b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go -@@ -33,13 +33,12 @@ func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err - if timeout != nil { - ts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000} - } -- return Pselect(nfd, r, w, e, ts, nil) -+ return pselect6(nfd, r, w, e, ts, nil) - } - - //sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) - //sys setfsgid(gid int) (prev int, err error) - //sys setfsuid(uid int) (prev int, err error) --//sysnb setrlimit(resource int, rlim *Rlimit) (err error) - //sys Shutdown(fd int, how int) (err error) - //sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) - -@@ -143,15 +142,6 @@ func Getrlimit(resource int, rlim *Rlimit) error { - return getrlimit(resource, rlim) - } - --// Setrlimit prefers the prlimit64 system call. See issue 38604. --func Setrlimit(resource int, rlim *Rlimit) error { -- err := Prlimit(0, resource, rlim, nil) -- if err != ENOSYS { -- return err -- } -- return setrlimit(resource, rlim) --} -- - func (r *PtraceRegs) PC() uint64 { return r.Pc } - - func (r *PtraceRegs) SetPC(pc uint64) { r.Pc = pc } -diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gc.go b/vendor/golang.org/x/sys/unix/syscall_linux_gc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go b/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go b/vendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go b/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go b/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go b/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go -old mode 100644 -new mode 100755 -index 59dab51..f6ab02e ---- a/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go -+++ b/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go -@@ -28,7 +28,7 @@ func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err - if timeout != nil { - ts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000} - } -- return Pselect(nfd, r, w, e, ts, nil) -+ return pselect6(nfd, r, w, e, ts, nil) - } - - //sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) -@@ -126,11 +126,6 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) { - return - } - --func Setrlimit(resource int, rlim *Rlimit) (err error) { -- err = Prlimit(0, resource, rlim, nil) -- return --} -- - func futimesat(dirfd int, path string, tv *[2]Timeval) (err error) { - if tv == nil { - return utimensat(dirfd, path, nil, 0) -diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go b/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go -old mode 100644 -new mode 100755 -index bfef09a..93fe59d ---- a/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go -+++ b/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go -@@ -31,13 +31,12 @@ func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err - if timeout != nil { - ts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000} - } -- return Pselect(nfd, r, w, e, ts, nil) -+ return pselect6(nfd, r, w, e, ts, nil) - } - - //sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) - //sys setfsgid(gid int) (prev int, err error) - //sys setfsuid(uid int) (prev int, err error) --//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) - //sys Shutdown(fd int, how int) (err error) - //sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) - //sys Statfs(path string, buf *Statfs_t) (err error) -diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go b/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go -old mode 100644 -new mode 100755 -index ab30250..aae7f0f ---- a/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go -+++ b/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go -@@ -151,33 +151,6 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) { - return - } - --//sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT -- --func Setrlimit(resource int, rlim *Rlimit) (err error) { -- err = Prlimit(0, resource, rlim, nil) -- if err != ENOSYS { -- return err -- } -- -- rl := rlimit32{} -- if rlim.Cur == rlimInf64 { -- rl.Cur = rlimInf32 -- } else if rlim.Cur < uint64(rlimInf32) { -- rl.Cur = uint32(rlim.Cur) -- } else { -- return EINVAL -- } -- if rlim.Max == rlimInf64 { -- rl.Max = rlimInf32 -- } else if rlim.Max < uint64(rlimInf32) { -- rl.Max = uint32(rlim.Max) -- } else { -- return EINVAL -- } -- -- return setrlimit(resource, &rl) --} -- - func (r *PtraceRegs) PC() uint64 { return r.Epc } - - func (r *PtraceRegs) SetPC(pc uint64) { r.Epc = pc } -diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_ppc.go b/vendor/golang.org/x/sys/unix/syscall_linux_ppc.go -old mode 100644 -new mode 100755 -index eac1cf1..66eff19 ---- a/vendor/golang.org/x/sys/unix/syscall_linux_ppc.go -+++ b/vendor/golang.org/x/sys/unix/syscall_linux_ppc.go -@@ -159,33 +159,6 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) { - return - } - --//sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT -- --func Setrlimit(resource int, rlim *Rlimit) (err error) { -- err = Prlimit(0, resource, rlim, nil) -- if err != ENOSYS { -- return err -- } -- -- rl := rlimit32{} -- if rlim.Cur == rlimInf64 { -- rl.Cur = rlimInf32 -- } else if rlim.Cur < uint64(rlimInf32) { -- rl.Cur = uint32(rlim.Cur) -- } else { -- return EINVAL -- } -- if rlim.Max == rlimInf64 { -- rl.Max = rlimInf32 -- } else if rlim.Max < uint64(rlimInf32) { -- rl.Max = uint32(rlim.Max) -- } else { -- return EINVAL -- } -- -- return setrlimit(resource, &rl) --} -- - func (r *PtraceRegs) PC() uint32 { return r.Nip } - - func (r *PtraceRegs) SetPC(pc uint32) { r.Nip = pc } -diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go b/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go -old mode 100644 -new mode 100755 -index 4df5661..806aa25 ---- a/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go -+++ b/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go -@@ -34,7 +34,6 @@ package unix - //sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) - //sys setfsgid(gid int) (prev int, err error) - //sys setfsuid(uid int) (prev int, err error) --//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) - //sys Shutdown(fd int, how int) (err error) - //sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) - //sys Stat(path string, stat *Stat_t) (err error) -diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go b/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go -old mode 100644 -new mode 100755 -index 5f4243d..5e6ceee ---- a/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go -+++ b/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go -@@ -32,13 +32,12 @@ func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err - if timeout != nil { - ts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000} - } -- return Pselect(nfd, r, w, e, ts, nil) -+ return pselect6(nfd, r, w, e, ts, nil) - } - - //sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) - //sys setfsgid(gid int) (prev int, err error) - //sys setfsuid(uid int) (prev int, err error) --//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) - //sys Shutdown(fd int, how int) (err error) - //sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) - -@@ -178,3 +177,14 @@ func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error - } - return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) - } -+ -+//sys riscvHWProbe(pairs []RISCVHWProbePairs, cpuCount uintptr, cpus *CPUSet, flags uint) (err error) -+ -+func RISCVHWProbe(pairs []RISCVHWProbePairs, set *CPUSet, flags uint) (err error) { -+ var setSize uintptr -+ -+ if set != nil { -+ setSize = uintptr(unsafe.Sizeof(*set)) -+ } -+ return riscvHWProbe(pairs, setSize, set, flags) -+} -diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go b/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go -old mode 100644 -new mode 100755 -index d0a7d40..2f89e8f ---- a/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go -+++ b/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go -@@ -34,7 +34,6 @@ import ( - //sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) - //sys setfsgid(gid int) (prev int, err error) - //sys setfsuid(uid int) (prev int, err error) --//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) - //sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) - //sys Stat(path string, stat *Stat_t) (err error) - //sys Statfs(path string, buf *Statfs_t) (err error) -diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go b/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go -old mode 100644 -new mode 100755 -index f5c793b..7ca064a ---- a/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go -+++ b/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go -@@ -31,7 +31,6 @@ package unix - //sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) - //sys setfsgid(gid int) (prev int, err error) - //sys setfsuid(uid int) (prev int, err error) --//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) - //sys Shutdown(fd int, how int) (err error) - //sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) - //sys Stat(path string, stat *Stat_t) (err error) -diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd.go b/vendor/golang.org/x/sys/unix/syscall_netbsd.go -old mode 100644 -new mode 100755 -index 666f0a1..8816209 ---- a/vendor/golang.org/x/sys/unix/syscall_netbsd.go -+++ b/vendor/golang.org/x/sys/unix/syscall_netbsd.go -@@ -13,7 +13,6 @@ - package unix - - import ( -- "runtime" - "syscall" - "unsafe" - ) -@@ -110,6 +109,20 @@ func direntNamlen(buf []byte) (uint64, bool) { - return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen)) - } - -+func SysctlUvmexp(name string) (*Uvmexp, error) { -+ mib, err := sysctlmib(name) -+ if err != nil { -+ return nil, err -+ } -+ -+ n := uintptr(SizeofUvmexp) -+ var u Uvmexp -+ if err := sysctl(mib, (*byte)(unsafe.Pointer(&u)), &n, nil, 0); err != nil { -+ return nil, err -+ } -+ return &u, nil -+} -+ - func Pipe(p []int) (err error) { - return Pipe2(p, 0) - } -@@ -164,13 +177,13 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e - } - - //sys ioctl(fd int, req uint, arg uintptr) (err error) -+//sys ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL - - //sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL - - func IoctlGetPtmget(fd int, req uint) (*Ptmget, error) { - var value Ptmget -- err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) -- runtime.KeepAlive(value) -+ err := ioctlPtr(fd, req, unsafe.Pointer(&value)) - return &value, err - } - -@@ -245,6 +258,7 @@ func Statvfs(path string, buf *Statvfs_t) (err error) { - //sys Chmod(path string, mode uint32) (err error) - //sys Chown(path string, uid int, gid int) (err error) - //sys Chroot(path string) (err error) -+//sys ClockGettime(clockid int32, time *Timespec) (err error) - //sys Close(fd int) (err error) - //sys Dup(fd int) (nfd int, err error) - //sys Dup2(from int, to int) (err error) -@@ -326,7 +340,6 @@ func Statvfs(path string, buf *Statvfs_t) (err error) { - //sys Setpriority(which int, who int, prio int) (err error) - //sysnb Setregid(rgid int, egid int) (err error) - //sysnb Setreuid(ruid int, euid int) (err error) --//sysnb Setrlimit(which int, lim *Rlimit) (err error) - //sysnb Setsid() (pid int, err error) - //sysnb Settimeofday(tp *Timeval) (err error) - //sysnb Setuid(uid int) (err error) -@@ -343,267 +356,16 @@ func Statvfs(path string, buf *Statvfs_t) (err error) { - //sys write(fd int, p []byte) (n int, err error) - //sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) - //sys munmap(addr uintptr, length uintptr) (err error) --//sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ --//sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE - //sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) - --/* -- * Unimplemented -- */ --// ____semctl13 --// __clone --// __fhopen40 --// __fhstat40 --// __fhstatvfs140 --// __fstat30 --// __getcwd --// __getfh30 --// __getlogin --// __lstat30 --// __mount50 --// __msgctl13 --// __msync13 --// __ntp_gettime30 --// __posix_chown --// __posix_fchown --// __posix_lchown --// __posix_rename --// __setlogin --// __shmctl13 --// __sigaction_sigtramp --// __sigaltstack14 --// __sigpending14 --// __sigprocmask14 --// __sigsuspend14 --// __sigtimedwait --// __stat30 --// __syscall --// __vfork14 --// _ksem_close --// _ksem_destroy --// _ksem_getvalue --// _ksem_init --// _ksem_open --// _ksem_post --// _ksem_trywait --// _ksem_unlink --// _ksem_wait --// _lwp_continue --// _lwp_create --// _lwp_ctl --// _lwp_detach --// _lwp_exit --// _lwp_getname --// _lwp_getprivate --// _lwp_kill --// _lwp_park --// _lwp_self --// _lwp_setname --// _lwp_setprivate --// _lwp_suspend --// _lwp_unpark --// _lwp_unpark_all --// _lwp_wait --// _lwp_wakeup --// _pset_bind --// _sched_getaffinity --// _sched_getparam --// _sched_setaffinity --// _sched_setparam --// acct --// aio_cancel --// aio_error --// aio_fsync --// aio_read --// aio_return --// aio_suspend --// aio_write --// break --// clock_getres --// clock_gettime --// clock_settime --// compat_09_ogetdomainname --// compat_09_osetdomainname --// compat_09_ouname --// compat_10_omsgsys --// compat_10_osemsys --// compat_10_oshmsys --// compat_12_fstat12 --// compat_12_getdirentries --// compat_12_lstat12 --// compat_12_msync --// compat_12_oreboot --// compat_12_oswapon --// compat_12_stat12 --// compat_13_sigaction13 --// compat_13_sigaltstack13 --// compat_13_sigpending13 --// compat_13_sigprocmask13 --// compat_13_sigreturn13 --// compat_13_sigsuspend13 --// compat_14___semctl --// compat_14_msgctl --// compat_14_shmctl --// compat_16___sigaction14 --// compat_16___sigreturn14 --// compat_20_fhstatfs --// compat_20_fstatfs --// compat_20_getfsstat --// compat_20_statfs --// compat_30___fhstat30 --// compat_30___fstat13 --// compat_30___lstat13 --// compat_30___stat13 --// compat_30_fhopen --// compat_30_fhstat --// compat_30_fhstatvfs1 --// compat_30_getdents --// compat_30_getfh --// compat_30_ntp_gettime --// compat_30_socket --// compat_40_mount --// compat_43_fstat43 --// compat_43_lstat43 --// compat_43_oaccept --// compat_43_ocreat --// compat_43_oftruncate --// compat_43_ogetdirentries --// compat_43_ogetdtablesize --// compat_43_ogethostid --// compat_43_ogethostname --// compat_43_ogetkerninfo --// compat_43_ogetpagesize --// compat_43_ogetpeername --// compat_43_ogetrlimit --// compat_43_ogetsockname --// compat_43_okillpg --// compat_43_olseek --// compat_43_ommap --// compat_43_oquota --// compat_43_orecv --// compat_43_orecvfrom --// compat_43_orecvmsg --// compat_43_osend --// compat_43_osendmsg --// compat_43_osethostid --// compat_43_osethostname --// compat_43_osetrlimit --// compat_43_osigblock --// compat_43_osigsetmask --// compat_43_osigstack --// compat_43_osigvec --// compat_43_otruncate --// compat_43_owait --// compat_43_stat43 --// execve --// extattr_delete_fd --// extattr_delete_file --// extattr_delete_link --// extattr_get_fd --// extattr_get_file --// extattr_get_link --// extattr_list_fd --// extattr_list_file --// extattr_list_link --// extattr_set_fd --// extattr_set_file --// extattr_set_link --// extattrctl --// fchroot --// fdatasync --// fgetxattr --// fktrace --// flistxattr --// fork --// fremovexattr --// fsetxattr --// fstatvfs1 --// fsync_range --// getcontext --// getitimer --// getvfsstat --// getxattr --// ktrace --// lchflags --// lchmod --// lfs_bmapv --// lfs_markv --// lfs_segclean --// lfs_segwait --// lgetxattr --// lio_listio --// listxattr --// llistxattr --// lremovexattr --// lseek --// lsetxattr --// lutimes --// madvise --// mincore --// minherit --// modctl --// mq_close --// mq_getattr --// mq_notify --// mq_open --// mq_receive --// mq_send --// mq_setattr --// mq_timedreceive --// mq_timedsend --// mq_unlink --// mremap --// msgget --// msgrcv --// msgsnd --// nfssvc --// ntp_adjtime --// pmc_control --// pmc_get_info --// pollts --// preadv --// profil --// pselect --// pset_assign --// pset_create --// pset_destroy --// ptrace --// pwritev --// quotactl --// rasctl --// readv --// reboot --// removexattr --// sa_enable --// sa_preempt --// sa_register --// sa_setconcurrency --// sa_stacks --// sa_yield --// sbrk --// sched_yield --// semconfig --// semget --// semop --// setcontext --// setitimer --// setxattr --// shmat --// shmdt --// shmget --// sstk --// statvfs1 --// swapctl --// sysarch --// syscall --// timer_create --// timer_delete --// timer_getoverrun --// timer_gettime --// timer_settime --// undelete --// utrace --// uuidgen --// vadvise --// vfork --// writev -+const ( -+ mremapFixed = MAP_FIXED -+ mremapDontunmap = 0 -+ mremapMaymove = 0 -+) -+ -+//sys mremapNetBSD(oldp uintptr, oldsize uintptr, newp uintptr, newsize uintptr, flags int) (xaddr uintptr, err error) = SYS_MREMAP -+ -+func mremap(oldaddr uintptr, oldlength uintptr, newlength uintptr, flags int, newaddr uintptr) (uintptr, error) { -+ return mremapNetBSD(oldaddr, oldlength, newaddr, newlength, flags) -+} -diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd.go b/vendor/golang.org/x/sys/unix/syscall_openbsd.go -old mode 100644 -new mode 100755 -index 78daceb..6f34479 ---- a/vendor/golang.org/x/sys/unix/syscall_openbsd.go -+++ b/vendor/golang.org/x/sys/unix/syscall_openbsd.go -@@ -151,7 +151,23 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { - return - } - -+//sysnb getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) -+//sysnb getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) -+ -+func Getresuid() (ruid, euid, suid int) { -+ var r, e, s _C_int -+ getresuid(&r, &e, &s) -+ return int(r), int(e), int(s) -+} -+ -+func Getresgid() (rgid, egid, sgid int) { -+ var r, e, s _C_int -+ getresgid(&r, &e, &s) -+ return int(r), int(e), int(s) -+} -+ - //sys ioctl(fd int, req uint, arg uintptr) (err error) -+//sys ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL - - //sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL - -@@ -220,6 +236,7 @@ func Uname(uname *Utsname) error { - //sys Chmod(path string, mode uint32) (err error) - //sys Chown(path string, uid int, gid int) (err error) - //sys Chroot(path string) (err error) -+//sys ClockGettime(clockid int32, time *Timespec) (err error) - //sys Close(fd int) (err error) - //sys Dup(fd int) (nfd int, err error) - //sys Dup2(from int, to int) (err error) -@@ -292,7 +309,6 @@ func Uname(uname *Utsname) error { - //sysnb Setreuid(ruid int, euid int) (err error) - //sysnb Setresgid(rgid int, egid int, sgid int) (err error) - //sysnb Setresuid(ruid int, euid int, suid int) (err error) --//sysnb Setrlimit(which int, lim *Rlimit) (err error) - //sysnb Setrtable(rtable int) (err error) - //sysnb Setsid() (pid int, err error) - //sysnb Settimeofday(tp *Timeval) (err error) -@@ -310,80 +326,4 @@ func Uname(uname *Utsname) error { - //sys write(fd int, p []byte) (n int, err error) - //sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) - //sys munmap(addr uintptr, length uintptr) (err error) --//sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ --//sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE - //sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) -- --/* -- * Unimplemented -- */ --// __getcwd --// __semctl --// __syscall --// __sysctl --// adjfreq --// break --// clock_getres --// clock_gettime --// clock_settime --// closefrom --// execve --// fhopen --// fhstat --// fhstatfs --// fork --// futimens --// getfh --// getgid --// getitimer --// getlogin --// getresgid --// getresuid --// getthrid --// ktrace --// lfs_bmapv --// lfs_markv --// lfs_segclean --// lfs_segwait --// mincore --// minherit --// mount --// mquery --// msgctl --// msgget --// msgrcv --// msgsnd --// nfssvc --// nnpfspioctl --// preadv --// profil --// pwritev --// quotactl --// readv --// reboot --// renameat --// rfork --// sched_yield --// semget --// semop --// setgroups --// setitimer --// setsockopt --// shmat --// shmctl --// shmdt --// shmget --// sigaction --// sigaltstack --// sigpending --// sigprocmask --// sigreturn --// sigsuspend --// sysarch --// syscall --// threxit --// thrsigdivert --// thrsleep --// thrwakeup --// vfork --// writev -diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_libc.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_libc.go -old mode 100644 -new mode 100755 -index e23c539..04aa43f ---- a/vendor/golang.org/x/sys/unix/syscall_openbsd_libc.go -+++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_libc.go -@@ -2,8 +2,8 @@ - // Use of this source code is governed by a BSD-style - // license that can be found in the LICENSE file. - --//go:build openbsd && !mips64 --// +build openbsd,!mips64 -+//go:build openbsd -+// +build openbsd - - package unix - -diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_mips64.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_mips64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_ppc64.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_ppc64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_riscv64.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_riscv64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/syscall_solaris.go b/vendor/golang.org/x/sys/unix/syscall_solaris.go -old mode 100644 -new mode 100755 -index 2109e56..b99cfa1 ---- a/vendor/golang.org/x/sys/unix/syscall_solaris.go -+++ b/vendor/golang.org/x/sys/unix/syscall_solaris.go -@@ -408,8 +408,7 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { - for n < len(pp.Path) && pp.Path[n] != 0 { - n++ - } -- bytes := (*[len(pp.Path)]byte)(unsafe.Pointer(&pp.Path[0]))[0:n] -- sa.Name = string(bytes) -+ sa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n)) - return sa, nil - - case AF_INET: -@@ -546,22 +545,26 @@ func Minor(dev uint64) uint32 { - * Expose the ioctl function - */ - --//sys ioctlRet(fd int, req uint, arg uintptr) (ret int, err error) = libc.ioctl -+//sys ioctlRet(fd int, req int, arg uintptr) (ret int, err error) = libc.ioctl -+//sys ioctlPtrRet(fd int, req int, arg unsafe.Pointer) (ret int, err error) = libc.ioctl - --func ioctl(fd int, req uint, arg uintptr) (err error) { -+func ioctl(fd int, req int, arg uintptr) (err error) { - _, err = ioctlRet(fd, req, arg) - return err - } - --func IoctlSetTermio(fd int, req uint, value *Termio) error { -- err := ioctl(fd, req, uintptr(unsafe.Pointer(value))) -- runtime.KeepAlive(value) -+func ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) { -+ _, err = ioctlPtrRet(fd, req, arg) - return err - } - --func IoctlGetTermio(fd int, req uint) (*Termio, error) { -+func IoctlSetTermio(fd int, req int, value *Termio) error { -+ return ioctlPtr(fd, req, unsafe.Pointer(value)) -+} -+ -+func IoctlGetTermio(fd int, req int) (*Termio, error) { - var value Termio -- err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) -+ err := ioctlPtr(fd, req, unsafe.Pointer(&value)) - return &value, err - } - -@@ -590,6 +593,7 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e - //sys Chmod(path string, mode uint32) (err error) - //sys Chown(path string, uid int, gid int) (err error) - //sys Chroot(path string) (err error) -+//sys ClockGettime(clockid int32, time *Timespec) (err error) - //sys Close(fd int) (err error) - //sys Creat(path string, mode uint32) (fd int, err error) - //sys Dup(fd int) (nfd int, err error) -@@ -661,7 +665,6 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e - //sys Setpriority(which int, who int, prio int) (err error) - //sysnb Setregid(rgid int, egid int) (err error) - //sysnb Setreuid(ruid int, euid int) (err error) --//sysnb Setrlimit(which int, lim *Rlimit) (err error) - //sysnb Setsid() (pid int, err error) - //sysnb Setuid(uid int) (err error) - //sys Shutdown(s int, how int) (err error) = libsocket.shutdown -@@ -695,38 +698,6 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e - //sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) = libsocket.setsockopt - //sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) = libsocket.recvfrom - --func readlen(fd int, buf *byte, nbuf int) (n int, err error) { -- r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procread)), 3, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf), 0, 0, 0) -- n = int(r0) -- if e1 != 0 { -- err = e1 -- } -- return --} -- --func writelen(fd int, buf *byte, nbuf int) (n int, err error) { -- r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwrite)), 3, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf), 0, 0, 0) -- n = int(r0) -- if e1 != 0 { -- err = e1 -- } -- return --} -- --var mapper = &mmapper{ -- active: make(map[*byte][]byte), -- mmap: mmap, -- munmap: munmap, --} -- --func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) { -- return mapper.Mmap(fd, offset, length, prot, flags) --} -- --func Munmap(b []byte) (err error) { -- return mapper.Munmap(b) --} -- - // Event Ports - - type fileObjCookie struct { -@@ -1076,14 +1047,14 @@ func Getmsg(fd int, cl []byte, data []byte) (retCl []byte, retData []byte, flags - return retCl, retData, flags, nil - } - --func IoctlSetIntRetInt(fd int, req uint, arg int) (int, error) { -+func IoctlSetIntRetInt(fd int, req int, arg int) (int, error) { - return ioctlRet(fd, req, uintptr(arg)) - } - --func IoctlSetString(fd int, req uint, val string) error { -+func IoctlSetString(fd int, req int, val string) error { - bs := make([]byte, len(val)+1) - copy(bs[:len(bs)-1], val) -- err := ioctl(fd, req, uintptr(unsafe.Pointer(&bs[0]))) -+ err := ioctlPtr(fd, req, unsafe.Pointer(&bs[0])) - runtime.KeepAlive(&bs[0]) - return err - } -@@ -1116,8 +1087,8 @@ func (l *Lifreq) GetLifruUint() uint { - return *(*uint)(unsafe.Pointer(&l.Lifru[0])) - } - --func IoctlLifreq(fd int, req uint, l *Lifreq) error { -- return ioctl(fd, req, uintptr(unsafe.Pointer(l))) -+func IoctlLifreq(fd int, req int, l *Lifreq) error { -+ return ioctlPtr(fd, req, unsafe.Pointer(l)) - } - - // Strioctl Helpers -@@ -1127,6 +1098,6 @@ func (s *Strioctl) SetInt(i int) { - s.Dp = (*int8)(unsafe.Pointer(&i)) - } - --func IoctlSetStrioctlRetInt(fd int, req uint, s *Strioctl) (int, error) { -- return ioctlRet(fd, req, uintptr(unsafe.Pointer(s))) -+func IoctlSetStrioctlRetInt(fd int, req int, s *Strioctl) (int, error) { -+ return ioctlPtrRet(fd, req, unsafe.Pointer(s)) - } -diff --git a/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go b/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/syscall_unix.go b/vendor/golang.org/x/sys/unix/syscall_unix.go -old mode 100644 -new mode 100755 -index 00bafda..f6eda27 ---- a/vendor/golang.org/x/sys/unix/syscall_unix.go -+++ b/vendor/golang.org/x/sys/unix/syscall_unix.go -@@ -147,6 +147,14 @@ func (m *mmapper) Munmap(data []byte) (err error) { - return nil - } - -+func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) { -+ return mapper.Mmap(fd, offset, length, prot, flags) -+} -+ -+func Munmap(b []byte) (err error) { -+ return mapper.Munmap(b) -+} -+ - func Read(fd int, p []byte) (n int, err error) { - n, err = read(fd, p) - if raceenabled { -@@ -331,6 +339,19 @@ func Recvfrom(fd int, p []byte, flags int) (n int, from Sockaddr, err error) { - return - } - -+// Recvmsg receives a message from a socket using the recvmsg system call. The -+// received non-control data will be written to p, and any "out of band" -+// control data will be written to oob. The flags are passed to recvmsg. -+// -+// The results are: -+// - n is the number of non-control data bytes read into p -+// - oobn is the number of control data bytes read into oob; this may be interpreted using [ParseSocketControlMessage] -+// - recvflags is flags returned by recvmsg -+// - from is the address of the sender -+// -+// If the underlying socket type is not SOCK_DGRAM, a received message -+// containing oob data and a single '\0' of non-control data is treated as if -+// the message contained only control data, i.e. n will be zero on return. - func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) { - var iov [1]Iovec - if len(p) > 0 { -@@ -346,13 +367,9 @@ func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from - return - } - --// RecvmsgBuffers receives a message from a socket using the recvmsg --// system call. The flags are passed to recvmsg. Any non-control data --// read is scattered into the buffers slices. The results are: --// - n is the number of non-control data read into bufs --// - oobn is the number of control data read into oob; this may be interpreted using [ParseSocketControlMessage] --// - recvflags is flags returned by recvmsg --// - from is the address of the sender -+// RecvmsgBuffers receives a message from a socket using the recvmsg system -+// call. This function is equivalent to Recvmsg, but non-control data read is -+// scattered into the buffers slices. - func RecvmsgBuffers(fd int, buffers [][]byte, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) { - iov := make([]Iovec, len(buffers)) - for i := range buffers { -@@ -371,11 +388,38 @@ func RecvmsgBuffers(fd int, buffers [][]byte, oob []byte, flags int) (n, oobn in - return - } - -+// Sendmsg sends a message on a socket to an address using the sendmsg system -+// call. This function is equivalent to SendmsgN, but does not return the -+// number of bytes actually sent. - func Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) { - _, err = SendmsgN(fd, p, oob, to, flags) - return - } - -+// SendmsgN sends a message on a socket to an address using the sendmsg system -+// call. p contains the non-control data to send, and oob contains the "out of -+// band" control data. The flags are passed to sendmsg. The number of -+// non-control bytes actually written to the socket is returned. -+// -+// Some socket types do not support sending control data without accompanying -+// non-control data. If p is empty, and oob contains control data, and the -+// underlying socket type is not SOCK_DGRAM, p will be treated as containing a -+// single '\0' and the return value will indicate zero bytes sent. -+// -+// The Go function Recvmsg, if called with an empty p and a non-empty oob, -+// will read and ignore this additional '\0'. If the message is received by -+// code that does not use Recvmsg, or that does not use Go at all, that code -+// will need to be written to expect and ignore the additional '\0'. -+// -+// If you need to send non-empty oob with p actually empty, and if the -+// underlying socket type supports it, you can do so via a raw system call as -+// follows: -+// -+// msg := &unix.Msghdr{ -+// Control: &oob[0], -+// } -+// msg.SetControllen(len(oob)) -+// n, _, errno := unix.Syscall(unix.SYS_SENDMSG, uintptr(fd), uintptr(unsafe.Pointer(msg)), flags) - func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) { - var iov [1]Iovec - if len(p) > 0 { -@@ -394,9 +438,8 @@ func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) - } - - // SendmsgBuffers sends a message on a socket to an address using the sendmsg --// system call. The flags are passed to sendmsg. Any non-control data written --// is gathered from buffers. The function returns the number of bytes written --// to the socket. -+// system call. This function is equivalent to SendmsgN, but the non-control -+// data is gathered from buffers. - func SendmsgBuffers(fd int, buffers [][]byte, oob []byte, to Sockaddr, flags int) (n int, err error) { - iov := make([]Iovec, len(buffers)) - for i := range buffers { -@@ -506,6 +549,9 @@ func SetNonblock(fd int, nonblocking bool) (err error) { - if err != nil { - return err - } -+ if (flag&O_NONBLOCK != 0) == nonblocking { -+ return nil -+ } - if nonblocking { - flag |= O_NONBLOCK - } else { -@@ -543,7 +589,7 @@ func Lutimes(path string, tv []Timeval) error { - return UtimesNanoAt(AT_FDCWD, path, ts, AT_SYMLINK_NOFOLLOW) - } - --// emptyIovec reports whether there are no bytes in the slice of Iovec. -+// emptyIovecs reports whether there are no bytes in the slice of Iovec. - func emptyIovecs(iov []Iovec) bool { - for i := range iov { - if iov[i].Len > 0 { -@@ -552,3 +598,10 @@ func emptyIovecs(iov []Iovec) bool { - } - return true - } -+ -+// Setrlimit sets a resource limit. -+func Setrlimit(resource int, rlim *Rlimit) error { -+ // Just call the syscall version, because as of Go 1.21 -+ // it will affect starting a new process. -+ return syscall.Setrlimit(resource, (*syscall.Rlimit)(rlim)) -+} -diff --git a/vendor/golang.org/x/sys/unix/syscall_unix_gc.go b/vendor/golang.org/x/sys/unix/syscall_unix_gc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go b/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go b/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go -old mode 100644 -new mode 100755 -index 68b2f3e..4596d04 ---- a/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go -+++ b/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go -@@ -139,8 +139,7 @@ func anyToSockaddr(_ int, rsa *RawSockaddrAny) (Sockaddr, error) { - for n < int(pp.Len) && pp.Path[n] != 0 { - n++ - } -- bytes := (*[len(pp.Path)]byte)(unsafe.Pointer(&pp.Path[0]))[0:n] -- sa.Name = string(bytes) -+ sa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n)) - return sa, nil - - case AF_INET: -@@ -193,7 +192,6 @@ func (cmsg *Cmsghdr) SetLen(length int) { - - //sys fcntl(fd int, cmd int, arg int) (val int, err error) - //sys read(fd int, p []byte) (n int, err error) --//sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ - //sys write(fd int, p []byte) (n int, err error) - - //sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) = SYS___ACCEPT_A -@@ -213,7 +211,8 @@ func (cmsg *Cmsghdr) SetLen(length int) { - //sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) = SYS___SENDMSG_A - //sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) = SYS_MMAP - //sys munmap(addr uintptr, length uintptr) (err error) = SYS_MUNMAP --//sys ioctl(fd int, req uint, arg uintptr) (err error) = SYS_IOCTL -+//sys ioctl(fd int, req int, arg uintptr) (err error) = SYS_IOCTL -+//sys ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) = SYS_IOCTL - - //sys Access(path string, mode uint32) (err error) = SYS___ACCESS_A - //sys Chdir(path string) (err error) = SYS___CHDIR_A -@@ -285,25 +284,11 @@ func Close(fd int) (err error) { - return - } - --var mapper = &mmapper{ -- active: make(map[*byte][]byte), -- mmap: mmap, -- munmap: munmap, --} -- - // Dummy function: there are no semantics for Madvise on z/OS - func Madvise(b []byte, advice int) (err error) { - return - } - --func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) { -- return mapper.Mmap(fd, offset, length, prot, flags) --} -- --func Munmap(b []byte) (err error) { -- return mapper.Munmap(b) --} -- - //sys Gethostname(buf []byte) (err error) = SYS___GETHOSTNAME_A - //sysnb Getegid() (egid int) - //sysnb Geteuid() (uid int) -diff --git a/vendor/golang.org/x/sys/unix/sysvshm_linux.go b/vendor/golang.org/x/sys/unix/sysvshm_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/sysvshm_unix.go b/vendor/golang.org/x/sys/unix/sysvshm_unix.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/sysvshm_unix_other.go b/vendor/golang.org/x/sys/unix/sysvshm_unix_other.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/timestruct.go b/vendor/golang.org/x/sys/unix/timestruct.go -old mode 100644 -new mode 100755 -index 3d89304..616b1b2 ---- a/vendor/golang.org/x/sys/unix/timestruct.go -+++ b/vendor/golang.org/x/sys/unix/timestruct.go -@@ -9,7 +9,7 @@ package unix - - import "time" - --// TimespecToNSec returns the time stored in ts as nanoseconds. -+// TimespecToNsec returns the time stored in ts as nanoseconds. - func TimespecToNsec(ts Timespec) int64 { return ts.Nano() } - - // NsecToTimespec converts a number of nanoseconds into a Timespec. -diff --git a/vendor/golang.org/x/sys/unix/unveil_openbsd.go b/vendor/golang.org/x/sys/unix/unveil_openbsd.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/xattr_bsd.go b/vendor/golang.org/x/sys/unix/xattr_bsd.go -old mode 100644 -new mode 100755 -index 663b377..f5f8e9f ---- a/vendor/golang.org/x/sys/unix/xattr_bsd.go -+++ b/vendor/golang.org/x/sys/unix/xattr_bsd.go -@@ -36,9 +36,14 @@ func xattrnamespace(fullattr string) (ns int, attr string, err error) { - func initxattrdest(dest []byte, idx int) (d unsafe.Pointer) { - if len(dest) > idx { - return unsafe.Pointer(&dest[idx]) -- } else { -- return unsafe.Pointer(_zero) - } -+ if dest != nil { -+ // extattr_get_file and extattr_list_file treat NULL differently from -+ // a non-NULL pointer of length zero. Preserve the property of nilness, -+ // even if we can't use dest directly. -+ return unsafe.Pointer(&_zero) -+ } -+ return nil - } - - // FreeBSD and NetBSD implement their own syscalls to handle extended attributes -diff --git a/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go -old mode 100644 -new mode 100755 -index 476a1c7..1430076 ---- a/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go -+++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go -@@ -1270,6 +1270,16 @@ const ( - SEEK_END = 0x2 - SEEK_HOLE = 0x3 - SEEK_SET = 0x0 -+ SF_APPEND = 0x40000 -+ SF_ARCHIVED = 0x10000 -+ SF_DATALESS = 0x40000000 -+ SF_FIRMLINK = 0x800000 -+ SF_IMMUTABLE = 0x20000 -+ SF_NOUNLINK = 0x100000 -+ SF_RESTRICTED = 0x80000 -+ SF_SETTABLE = 0x3fff0000 -+ SF_SUPPORTED = 0x9f0000 -+ SF_SYNTHETIC = 0xc0000000 - SHUT_RD = 0x0 - SHUT_RDWR = 0x2 - SHUT_WR = 0x1 -@@ -1543,6 +1553,15 @@ const ( - TIOCTIMESTAMP = 0x40107459 - TIOCUCNTL = 0x80047466 - TOSTOP = 0x400000 -+ UF_APPEND = 0x4 -+ UF_COMPRESSED = 0x20 -+ UF_DATAVAULT = 0x80 -+ UF_HIDDEN = 0x8000 -+ UF_IMMUTABLE = 0x2 -+ UF_NODUMP = 0x1 -+ UF_OPAQUE = 0x8 -+ UF_SETTABLE = 0xffff -+ UF_TRACKED = 0x40 - VDISCARD = 0xf - VDSUSP = 0xb - VEOF = 0x0 -diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go -old mode 100644 -new mode 100755 -index e36f517..ab044a7 ---- a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go -+++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go -@@ -1270,6 +1270,16 @@ const ( - SEEK_END = 0x2 - SEEK_HOLE = 0x3 - SEEK_SET = 0x0 -+ SF_APPEND = 0x40000 -+ SF_ARCHIVED = 0x10000 -+ SF_DATALESS = 0x40000000 -+ SF_FIRMLINK = 0x800000 -+ SF_IMMUTABLE = 0x20000 -+ SF_NOUNLINK = 0x100000 -+ SF_RESTRICTED = 0x80000 -+ SF_SETTABLE = 0x3fff0000 -+ SF_SUPPORTED = 0x9f0000 -+ SF_SYNTHETIC = 0xc0000000 - SHUT_RD = 0x0 - SHUT_RDWR = 0x2 - SHUT_WR = 0x1 -@@ -1543,6 +1553,15 @@ const ( - TIOCTIMESTAMP = 0x40107459 - TIOCUCNTL = 0x80047466 - TOSTOP = 0x400000 -+ UF_APPEND = 0x4 -+ UF_COMPRESSED = 0x20 -+ UF_DATAVAULT = 0x80 -+ UF_HIDDEN = 0x8000 -+ UF_IMMUTABLE = 0x2 -+ UF_NODUMP = 0x1 -+ UF_OPAQUE = 0x8 -+ UF_SETTABLE = 0xffff -+ UF_TRACKED = 0x40 - VDISCARD = 0xf - VDSUSP = 0xb - VEOF = 0x0 -diff --git a/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_riscv64.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_riscv64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux.go b/vendor/golang.org/x/sys/unix/zerrors_linux.go -old mode 100644 -new mode 100755 -index 785d693..f9c7f47 ---- a/vendor/golang.org/x/sys/unix/zerrors_linux.go -+++ b/vendor/golang.org/x/sys/unix/zerrors_linux.go -@@ -70,6 +70,7 @@ const ( - ALG_SET_DRBG_ENTROPY = 0x6 - ALG_SET_IV = 0x2 - ALG_SET_KEY = 0x1 -+ ALG_SET_KEY_BY_KEY_SERIAL = 0x7 - ALG_SET_OP = 0x3 - ANON_INODE_FS_MAGIC = 0x9041934 - ARPHRD_6LOWPAN = 0x339 -@@ -457,7 +458,6 @@ const ( - B600 = 0x8 - B75 = 0x2 - B9600 = 0xd -- BALLOON_KVM_MAGIC = 0x13661366 - BDEVFS_MAGIC = 0x62646576 - BINDERFS_SUPER_MAGIC = 0x6c6f6f70 - BINFMTFS_MAGIC = 0x42494e4d -@@ -493,6 +493,7 @@ const ( - BPF_F_TEST_RUN_ON_CPU = 0x1 - BPF_F_TEST_STATE_FREQ = 0x8 - BPF_F_TEST_XDP_LIVE_FRAMES = 0x2 -+ BPF_F_XDP_DEV_BOUND_ONLY = 0x40 - BPF_F_XDP_HAS_FRAGS = 0x20 - BPF_H = 0x8 - BPF_IMM = 0x0 -@@ -563,6 +564,7 @@ const ( - BUS_USB = 0x3 - BUS_VIRTUAL = 0x6 - CAN_BCM = 0x2 -+ CAN_BUS_OFF_THRESHOLD = 0x100 - CAN_CTRLMODE_3_SAMPLES = 0x4 - CAN_CTRLMODE_BERR_REPORTING = 0x10 - CAN_CTRLMODE_CC_LEN8_DLC = 0x100 -@@ -577,9 +579,12 @@ const ( - CAN_EFF_FLAG = 0x80000000 - CAN_EFF_ID_BITS = 0x1d - CAN_EFF_MASK = 0x1fffffff -+ CAN_ERROR_PASSIVE_THRESHOLD = 0x80 -+ CAN_ERROR_WARNING_THRESHOLD = 0x60 - CAN_ERR_ACK = 0x20 - CAN_ERR_BUSERROR = 0x80 - CAN_ERR_BUSOFF = 0x40 -+ CAN_ERR_CNT = 0x200 - CAN_ERR_CRTL = 0x4 - CAN_ERR_CRTL_ACTIVE = 0x40 - CAN_ERR_CRTL_RX_OVERFLOW = 0x1 -@@ -771,6 +776,8 @@ const ( - DEVLINK_GENL_MCGRP_CONFIG_NAME = "config" - DEVLINK_GENL_NAME = "devlink" - DEVLINK_GENL_VERSION = 0x1 -+ DEVLINK_PORT_FN_CAP_MIGRATABLE = 0x2 -+ DEVLINK_PORT_FN_CAP_ROCE = 0x1 - DEVLINK_SB_THRESHOLD_TO_ALPHA_MAX = 0x14 - DEVLINK_SUPPORTED_FLASH_OVERWRITE_SECTIONS = 0x3 - DEVMEM_MAGIC = 0x454d444d -@@ -820,9 +827,9 @@ const ( - DM_UUID_FLAG = 0x4000 - DM_UUID_LEN = 0x81 - DM_VERSION = 0xc138fd00 -- DM_VERSION_EXTRA = "-ioctl (2022-02-22)" -+ DM_VERSION_EXTRA = "-ioctl (2023-03-01)" - DM_VERSION_MAJOR = 0x4 -- DM_VERSION_MINOR = 0x2e -+ DM_VERSION_MINOR = 0x30 - DM_VERSION_PATCHLEVEL = 0x0 - DT_BLK = 0x6 - DT_CHR = 0x2 -@@ -1049,6 +1056,7 @@ const ( - ETH_P_CAIF = 0xf7 - ETH_P_CAN = 0xc - ETH_P_CANFD = 0xd -+ ETH_P_CANXL = 0xe - ETH_P_CFM = 0x8902 - ETH_P_CONTROL = 0x16 - ETH_P_CUST = 0x6006 -@@ -1060,6 +1068,7 @@ const ( - ETH_P_DNA_RT = 0x6003 - ETH_P_DSA = 0x1b - ETH_P_DSA_8021Q = 0xdadb -+ ETH_P_DSA_A5PSW = 0xe001 - ETH_P_ECONET = 0x18 - ETH_P_EDSA = 0xdada - ETH_P_ERSPAN = 0x88be -@@ -1189,13 +1198,16 @@ const ( - FAN_EVENT_METADATA_LEN = 0x18 - FAN_EVENT_ON_CHILD = 0x8000000 - FAN_FS_ERROR = 0x8000 -+ FAN_INFO = 0x20 - FAN_MARK_ADD = 0x1 - FAN_MARK_DONT_FOLLOW = 0x4 - FAN_MARK_EVICTABLE = 0x200 - FAN_MARK_FILESYSTEM = 0x100 - FAN_MARK_FLUSH = 0x80 -+ FAN_MARK_IGNORE = 0x400 - FAN_MARK_IGNORED_MASK = 0x20 - FAN_MARK_IGNORED_SURV_MODIFY = 0x40 -+ FAN_MARK_IGNORE_SURV = 0x440 - FAN_MARK_INODE = 0x0 - FAN_MARK_MOUNT = 0x10 - FAN_MARK_ONLYDIR = 0x8 -@@ -1223,6 +1235,8 @@ const ( - FAN_REPORT_PIDFD = 0x80 - FAN_REPORT_TARGET_FID = 0x1000 - FAN_REPORT_TID = 0x100 -+ FAN_RESPONSE_INFO_AUDIT_RULE = 0x1 -+ FAN_RESPONSE_INFO_NONE = 0x0 - FAN_UNLIMITED_MARKS = 0x20 - FAN_UNLIMITED_QUEUE = 0x10 - FD_CLOEXEC = 0x1 -@@ -1253,7 +1267,10 @@ const ( - FSCRYPT_MODE_AES_128_CBC = 0x5 - FSCRYPT_MODE_AES_128_CTS = 0x6 - FSCRYPT_MODE_AES_256_CTS = 0x4 -+ FSCRYPT_MODE_AES_256_HCTR2 = 0xa - FSCRYPT_MODE_AES_256_XTS = 0x1 -+ FSCRYPT_MODE_SM4_CTS = 0x8 -+ FSCRYPT_MODE_SM4_XTS = 0x7 - FSCRYPT_POLICY_FLAGS_PAD_16 = 0x2 - FSCRYPT_POLICY_FLAGS_PAD_32 = 0x3 - FSCRYPT_POLICY_FLAGS_PAD_4 = 0x0 -@@ -1272,8 +1289,6 @@ const ( - FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 - FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 - FS_ENCRYPTION_MODE_INVALID = 0x0 -- FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 -- FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 - FS_IOC_ADD_ENCRYPTION_KEY = 0xc0506617 - FS_IOC_GET_ENCRYPTION_KEY_STATUS = 0xc080661a - FS_IOC_GET_ENCRYPTION_POLICY_EX = 0xc0096616 -@@ -1430,6 +1445,7 @@ const ( - IFF_NOARP = 0x80 - IFF_NOFILTER = 0x1000 - IFF_NOTRAILERS = 0x20 -+ IFF_NO_CARRIER = 0x40 - IFF_NO_PI = 0x1000 - IFF_ONE_QUEUE = 0x2000 - IFF_PERSIST = 0x800 -@@ -1761,6 +1777,7 @@ const ( - LANDLOCK_ACCESS_FS_REFER = 0x2000 - LANDLOCK_ACCESS_FS_REMOVE_DIR = 0x10 - LANDLOCK_ACCESS_FS_REMOVE_FILE = 0x20 -+ LANDLOCK_ACCESS_FS_TRUNCATE = 0x4000 - LANDLOCK_ACCESS_FS_WRITE_FILE = 0x2 - LANDLOCK_CREATE_RULESET_VERSION = 0x1 - LINUX_REBOOT_CMD_CAD_OFF = 0x0 -@@ -1800,11 +1817,13 @@ const ( - LWTUNNEL_IP_OPT_GENEVE_MAX = 0x3 - LWTUNNEL_IP_OPT_VXLAN_MAX = 0x1 - MADV_COLD = 0x14 -+ MADV_COLLAPSE = 0x19 - MADV_DODUMP = 0x11 - MADV_DOFORK = 0xb - MADV_DONTDUMP = 0x10 - MADV_DONTFORK = 0xa - MADV_DONTNEED = 0x4 -+ MADV_DONTNEED_LOCKED = 0x18 - MADV_FREE = 0x8 - MADV_HUGEPAGE = 0xe - MADV_HWPOISON = 0x64 -@@ -1845,8 +1864,9 @@ const ( - MEMWRITEOOB64 = 0xc0184d15 - MFD_ALLOW_SEALING = 0x2 - MFD_CLOEXEC = 0x1 -+ MFD_EXEC = 0x10 - MFD_HUGETLB = 0x4 -- MFD_HUGE_16GB = -0x78000000 -+ MFD_HUGE_16GB = 0x88000000 - MFD_HUGE_16MB = 0x60000000 - MFD_HUGE_1GB = 0x78000000 - MFD_HUGE_1MB = 0x50000000 -@@ -1860,6 +1880,7 @@ const ( - MFD_HUGE_8MB = 0x5c000000 - MFD_HUGE_MASK = 0x3f - MFD_HUGE_SHIFT = 0x1a -+ MFD_NOEXEC_SEAL = 0x8 - MINIX2_SUPER_MAGIC = 0x2468 - MINIX2_SUPER_MAGIC2 = 0x2478 - MINIX3_SUPER_MAGIC = 0x4d5a -@@ -1883,6 +1904,9 @@ const ( - MOUNT_ATTR_SIZE_VER0 = 0x20 - MOUNT_ATTR_STRICTATIME = 0x20 - MOUNT_ATTR__ATIME = 0x70 -+ MREMAP_DONTUNMAP = 0x4 -+ MREMAP_FIXED = 0x2 -+ MREMAP_MAYMOVE = 0x1 - MSDOS_SUPER_MAGIC = 0x4d44 - MSG_BATCH = 0x40000 - MSG_CMSG_CLOEXEC = 0x40000000 -@@ -2153,6 +2177,7 @@ const ( - PACKET_FANOUT_DATA = 0x16 - PACKET_FANOUT_EBPF = 0x7 - PACKET_FANOUT_FLAG_DEFRAG = 0x8000 -+ PACKET_FANOUT_FLAG_IGNORE_OUTGOING = 0x4000 - PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 - PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 - PACKET_FANOUT_HASH = 0x0 -@@ -2188,6 +2213,7 @@ const ( - PACKET_USER = 0x6 - PACKET_VERSION = 0xa - PACKET_VNET_HDR = 0xf -+ PACKET_VNET_HDR_SZ = 0x18 - PARITY_CRC16_PR0 = 0x2 - PARITY_CRC16_PR0_CCITT = 0x4 - PARITY_CRC16_PR1 = 0x3 -@@ -2205,6 +2231,7 @@ const ( - PERF_ATTR_SIZE_VER5 = 0x70 - PERF_ATTR_SIZE_VER6 = 0x78 - PERF_ATTR_SIZE_VER7 = 0x80 -+ PERF_ATTR_SIZE_VER8 = 0x88 - PERF_AUX_FLAG_COLLISION = 0x8 - PERF_AUX_FLAG_CORESIGHT_FORMAT_CORESIGHT = 0x0 - PERF_AUX_FLAG_CORESIGHT_FORMAT_RAW = 0x100 -@@ -2212,6 +2239,11 @@ const ( - PERF_AUX_FLAG_PARTIAL = 0x4 - PERF_AUX_FLAG_PMU_FORMAT_TYPE_MASK = 0xff00 - PERF_AUX_FLAG_TRUNCATED = 0x1 -+ PERF_BR_ARM64_DEBUG_DATA = 0x7 -+ PERF_BR_ARM64_DEBUG_EXIT = 0x5 -+ PERF_BR_ARM64_DEBUG_HALT = 0x4 -+ PERF_BR_ARM64_DEBUG_INST = 0x6 -+ PERF_BR_ARM64_FIQ = 0x3 - PERF_FLAG_FD_CLOEXEC = 0x8 - PERF_FLAG_FD_NO_GROUP = 0x1 - PERF_FLAG_FD_OUTPUT = 0x2 -@@ -2232,6 +2264,8 @@ const ( - PERF_MEM_LOCK_NA = 0x1 - PERF_MEM_LOCK_SHIFT = 0x18 - PERF_MEM_LVLNUM_ANY_CACHE = 0xb -+ PERF_MEM_LVLNUM_CXL = 0x9 -+ PERF_MEM_LVLNUM_IO = 0xa - PERF_MEM_LVLNUM_L1 = 0x1 - PERF_MEM_LVLNUM_L2 = 0x2 - PERF_MEM_LVLNUM_L3 = 0x3 -@@ -2265,6 +2299,7 @@ const ( - PERF_MEM_REMOTE_REMOTE = 0x1 - PERF_MEM_REMOTE_SHIFT = 0x25 - PERF_MEM_SNOOPX_FWD = 0x1 -+ PERF_MEM_SNOOPX_PEER = 0x2 - PERF_MEM_SNOOPX_SHIFT = 0x26 - PERF_MEM_SNOOP_HIT = 0x4 - PERF_MEM_SNOOP_HITM = 0x10 -@@ -2301,7 +2336,6 @@ const ( - PERF_SAMPLE_BRANCH_PLM_ALL = 0x7 - PERF_SAMPLE_WEIGHT_TYPE = 0x1004000 - PIPEFS_MAGIC = 0x50495045 -- PPC_CMM_MAGIC = 0xc7571590 - PPPIOCGNPMODE = 0xc008744c - PPPIOCNEWUNIT = 0xc004743e - PRIO_PGRP = 0x1 -@@ -2338,6 +2372,7 @@ const ( - PR_FP_EXC_UND = 0x40000 - PR_FP_MODE_FR = 0x1 - PR_FP_MODE_FRE = 0x2 -+ PR_GET_AUXV = 0x41555856 - PR_GET_CHILD_SUBREAPER = 0x25 - PR_GET_DUMPABLE = 0x3 - PR_GET_ENDIAN = 0x13 -@@ -2346,6 +2381,8 @@ const ( - PR_GET_FP_MODE = 0x2e - PR_GET_IO_FLUSHER = 0x3a - PR_GET_KEEPCAPS = 0x7 -+ PR_GET_MDWE = 0x42 -+ PR_GET_MEMORY_MERGE = 0x44 - PR_GET_NAME = 0x10 - PR_GET_NO_NEW_PRIVS = 0x27 - PR_GET_PDEATHSIG = 0x2 -@@ -2366,6 +2403,7 @@ const ( - PR_MCE_KILL_GET = 0x22 - PR_MCE_KILL_LATE = 0x0 - PR_MCE_KILL_SET = 0x1 -+ PR_MDWE_REFUSE_EXEC_GAIN = 0x1 - PR_MPX_DISABLE_MANAGEMENT = 0x2c - PR_MPX_ENABLE_MANAGEMENT = 0x2b - PR_MTE_TAG_MASK = 0x7fff8 -@@ -2383,6 +2421,15 @@ const ( - PR_PAC_GET_ENABLED_KEYS = 0x3d - PR_PAC_RESET_KEYS = 0x36 - PR_PAC_SET_ENABLED_KEYS = 0x3c -+ PR_RISCV_V_GET_CONTROL = 0x46 -+ PR_RISCV_V_SET_CONTROL = 0x45 -+ PR_RISCV_V_VSTATE_CTRL_CUR_MASK = 0x3 -+ PR_RISCV_V_VSTATE_CTRL_DEFAULT = 0x0 -+ PR_RISCV_V_VSTATE_CTRL_INHERIT = 0x10 -+ PR_RISCV_V_VSTATE_CTRL_MASK = 0x1f -+ PR_RISCV_V_VSTATE_CTRL_NEXT_MASK = 0xc -+ PR_RISCV_V_VSTATE_CTRL_OFF = 0x1 -+ PR_RISCV_V_VSTATE_CTRL_ON = 0x2 - PR_SCHED_CORE = 0x3e - PR_SCHED_CORE_CREATE = 0x1 - PR_SCHED_CORE_GET = 0x0 -@@ -2400,6 +2447,8 @@ const ( - PR_SET_FP_MODE = 0x2d - PR_SET_IO_FLUSHER = 0x39 - PR_SET_KEEPCAPS = 0x8 -+ PR_SET_MDWE = 0x41 -+ PR_SET_MEMORY_MERGE = 0x43 - PR_SET_MM = 0x23 - PR_SET_MM_ARG_END = 0x9 - PR_SET_MM_ARG_START = 0x8 -@@ -2483,6 +2532,7 @@ const ( - PTRACE_GETSIGMASK = 0x420a - PTRACE_GET_RSEQ_CONFIGURATION = 0x420f - PTRACE_GET_SYSCALL_INFO = 0x420e -+ PTRACE_GET_SYSCALL_USER_DISPATCH_CONFIG = 0x4211 - PTRACE_INTERRUPT = 0x4207 - PTRACE_KILL = 0x8 - PTRACE_LISTEN = 0x4208 -@@ -2513,6 +2563,7 @@ const ( - PTRACE_SETREGSET = 0x4205 - PTRACE_SETSIGINFO = 0x4203 - PTRACE_SETSIGMASK = 0x420b -+ PTRACE_SET_SYSCALL_USER_DISPATCH_CONFIG = 0x4210 - PTRACE_SINGLESTEP = 0x9 - PTRACE_SYSCALL = 0x18 - PTRACE_SYSCALL_INFO_ENTRY = 0x1 -@@ -2779,6 +2830,23 @@ const ( - RWF_SUPPORTED = 0x1f - RWF_SYNC = 0x4 - RWF_WRITE_LIFE_NOT_SET = 0x0 -+ SCHED_BATCH = 0x3 -+ SCHED_DEADLINE = 0x6 -+ SCHED_FIFO = 0x1 -+ SCHED_FLAG_ALL = 0x7f -+ SCHED_FLAG_DL_OVERRUN = 0x4 -+ SCHED_FLAG_KEEP_ALL = 0x18 -+ SCHED_FLAG_KEEP_PARAMS = 0x10 -+ SCHED_FLAG_KEEP_POLICY = 0x8 -+ SCHED_FLAG_RECLAIM = 0x2 -+ SCHED_FLAG_RESET_ON_FORK = 0x1 -+ SCHED_FLAG_UTIL_CLAMP = 0x60 -+ SCHED_FLAG_UTIL_CLAMP_MAX = 0x40 -+ SCHED_FLAG_UTIL_CLAMP_MIN = 0x20 -+ SCHED_IDLE = 0x5 -+ SCHED_NORMAL = 0x0 -+ SCHED_RESET_ON_FORK = 0x40000000 -+ SCHED_RR = 0x2 - SCM_CREDENTIALS = 0x2 - SCM_RIGHTS = 0x1 - SCM_TIMESTAMP = 0x1d -@@ -2944,6 +3012,7 @@ const ( - SOL_TCP = 0x6 - SOL_TIPC = 0x10f - SOL_TLS = 0x11a -+ SOL_UDP = 0x11 - SOL_X25 = 0x106 - SOL_XDP = 0x11b - SOMAXCONN = 0x1000 -@@ -2999,6 +3068,7 @@ const ( - STATX_BLOCKS = 0x400 - STATX_BTIME = 0x800 - STATX_CTIME = 0x80 -+ STATX_DIOALIGN = 0x2000 - STATX_GID = 0x10 - STATX_INO = 0x100 - STATX_MNT_ID = 0x1000 -@@ -3047,7 +3117,7 @@ const ( - TASKSTATS_GENL_NAME = "TASKSTATS" - TASKSTATS_GENL_VERSION = 0x1 - TASKSTATS_TYPE_MAX = 0x6 -- TASKSTATS_VERSION = 0xd -+ TASKSTATS_VERSION = 0xe - TCIFLUSH = 0x0 - TCIOFF = 0x2 - TCIOFLUSH = 0x2 -@@ -3213,6 +3283,7 @@ const ( - TP_STATUS_COPY = 0x2 - TP_STATUS_CSUMNOTREADY = 0x8 - TP_STATUS_CSUM_VALID = 0x80 -+ TP_STATUS_GSO_TCP = 0x100 - TP_STATUS_KERNEL = 0x0 - TP_STATUS_LOSING = 0x4 - TP_STATUS_SENDING = 0x2 -@@ -3227,6 +3298,19 @@ const ( - TRACEFS_MAGIC = 0x74726163 - TS_COMM_LEN = 0x20 - UDF_SUPER_MAGIC = 0x15013346 -+ UDP_CORK = 0x1 -+ UDP_ENCAP = 0x64 -+ UDP_ENCAP_ESPINUDP = 0x2 -+ UDP_ENCAP_ESPINUDP_NON_IKE = 0x1 -+ UDP_ENCAP_GTP0 = 0x4 -+ UDP_ENCAP_GTP1U = 0x5 -+ UDP_ENCAP_L2TPINUDP = 0x3 -+ UDP_GRO = 0x68 -+ UDP_NO_CHECK6_RX = 0x66 -+ UDP_NO_CHECK6_TX = 0x65 -+ UDP_SEGMENT = 0x67 -+ UDP_V4_FLOW = 0x2 -+ UDP_V6_FLOW = 0x6 - UMOUNT_NOFOLLOW = 0x8 - USBDEVICE_SUPER_MAGIC = 0x9fa2 - UTIME_NOW = 0x3fffffff -@@ -3392,9 +3476,7 @@ const ( - XDP_ZEROCOPY = 0x4 - XENFS_SUPER_MAGIC = 0xabba1974 - XFS_SUPER_MAGIC = 0x58465342 -- Z3FOLD_MAGIC = 0x33 - ZONEFS_MAGIC = 0x5a4f4653 -- ZSMALLOC_MAGIC = 0x58295829 - _HIDIOCGRAWNAME_LEN = 0x80 - _HIDIOCGRAWPHYS_LEN = 0x40 - _HIDIOCGRAWUNIQ_LEN = 0x40 -diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go -old mode 100644 -new mode 100755 -index 36c0dfc..30aee00 ---- a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go -+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go -@@ -27,22 +27,31 @@ const ( - B57600 = 0x1001 - B576000 = 0x1006 - B921600 = 0x1007 -+ BLKALIGNOFF = 0x127a - BLKBSZGET = 0x80041270 - BLKBSZSET = 0x40041271 -+ BLKDISCARD = 0x1277 -+ BLKDISCARDZEROES = 0x127c - BLKFLSBUF = 0x1261 - BLKFRAGET = 0x1265 - BLKFRASET = 0x1264 -+ BLKGETDISKSEQ = 0x80081280 - BLKGETSIZE = 0x1260 - BLKGETSIZE64 = 0x80041272 -+ BLKIOMIN = 0x1278 -+ BLKIOOPT = 0x1279 - BLKPBSZGET = 0x127b - BLKRAGET = 0x1263 - BLKRASET = 0x1262 - BLKROGET = 0x125e - BLKROSET = 0x125d -+ BLKROTATIONAL = 0x127e - BLKRRPART = 0x125f -+ BLKSECDISCARD = 0x127d - BLKSECTGET = 0x1267 - BLKSECTSET = 0x1266 - BLKSSZGET = 0x1268 -+ BLKZEROOUT = 0x127f - BOTHER = 0x1000 - BS1 = 0x2000 - BSDLY = 0x2000 -@@ -133,6 +142,7 @@ const ( - MEMGETREGIONCOUNT = 0x80044d07 - MEMISLOCKED = 0x80084d17 - MEMLOCK = 0x40084d05 -+ MEMREAD = 0xc03c4d1a - MEMREADOOB = 0xc00c4d04 - MEMSETBADBLOCK = 0x40084d0c - MEMUNLOCK = 0x40084d06 -@@ -316,10 +326,12 @@ const ( - SO_NOFCS = 0x2b - SO_OOBINLINE = 0xa - SO_PASSCRED = 0x10 -+ SO_PASSPIDFD = 0x4c - SO_PASSSEC = 0x22 - SO_PEEK_OFF = 0x2a - SO_PEERCRED = 0x11 - SO_PEERGROUPS = 0x3b -+ SO_PEERPIDFD = 0x4d - SO_PEERSEC = 0x1f - SO_PREFER_BUSY_POLL = 0x45 - SO_PROTOCOL = 0x26 -diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go -old mode 100644 -new mode 100755 -index 4ff9427..8ebfa51 ---- a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go -+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go -@@ -27,22 +27,31 @@ const ( - B57600 = 0x1001 - B576000 = 0x1006 - B921600 = 0x1007 -+ BLKALIGNOFF = 0x127a - BLKBSZGET = 0x80081270 - BLKBSZSET = 0x40081271 -+ BLKDISCARD = 0x1277 -+ BLKDISCARDZEROES = 0x127c - BLKFLSBUF = 0x1261 - BLKFRAGET = 0x1265 - BLKFRASET = 0x1264 -+ BLKGETDISKSEQ = 0x80081280 - BLKGETSIZE = 0x1260 - BLKGETSIZE64 = 0x80081272 -+ BLKIOMIN = 0x1278 -+ BLKIOOPT = 0x1279 - BLKPBSZGET = 0x127b - BLKRAGET = 0x1263 - BLKRASET = 0x1262 - BLKROGET = 0x125e - BLKROSET = 0x125d -+ BLKROTATIONAL = 0x127e - BLKRRPART = 0x125f -+ BLKSECDISCARD = 0x127d - BLKSECTGET = 0x1267 - BLKSECTSET = 0x1266 - BLKSSZGET = 0x1268 -+ BLKZEROOUT = 0x127f - BOTHER = 0x1000 - BS1 = 0x2000 - BSDLY = 0x2000 -@@ -133,6 +142,7 @@ const ( - MEMGETREGIONCOUNT = 0x80044d07 - MEMISLOCKED = 0x80084d17 - MEMLOCK = 0x40084d05 -+ MEMREAD = 0xc0404d1a - MEMREADOOB = 0xc0104d04 - MEMSETBADBLOCK = 0x40084d0c - MEMUNLOCK = 0x40084d06 -@@ -317,10 +327,12 @@ const ( - SO_NOFCS = 0x2b - SO_OOBINLINE = 0xa - SO_PASSCRED = 0x10 -+ SO_PASSPIDFD = 0x4c - SO_PASSSEC = 0x22 - SO_PEEK_OFF = 0x2a - SO_PEERCRED = 0x11 - SO_PEERGROUPS = 0x3b -+ SO_PEERPIDFD = 0x4d - SO_PEERSEC = 0x1f - SO_PREFER_BUSY_POLL = 0x45 - SO_PROTOCOL = 0x26 -diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go -old mode 100644 -new mode 100755 -index 3eaa0fb..271a21c ---- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go -+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go -@@ -27,22 +27,31 @@ const ( - B57600 = 0x1001 - B576000 = 0x1006 - B921600 = 0x1007 -+ BLKALIGNOFF = 0x127a - BLKBSZGET = 0x80041270 - BLKBSZSET = 0x40041271 -+ BLKDISCARD = 0x1277 -+ BLKDISCARDZEROES = 0x127c - BLKFLSBUF = 0x1261 - BLKFRAGET = 0x1265 - BLKFRASET = 0x1264 -+ BLKGETDISKSEQ = 0x80081280 - BLKGETSIZE = 0x1260 - BLKGETSIZE64 = 0x80041272 -+ BLKIOMIN = 0x1278 -+ BLKIOOPT = 0x1279 - BLKPBSZGET = 0x127b - BLKRAGET = 0x1263 - BLKRASET = 0x1262 - BLKROGET = 0x125e - BLKROSET = 0x125d -+ BLKROTATIONAL = 0x127e - BLKRRPART = 0x125f -+ BLKSECDISCARD = 0x127d - BLKSECTGET = 0x1267 - BLKSECTSET = 0x1266 - BLKSSZGET = 0x1268 -+ BLKZEROOUT = 0x127f - BOTHER = 0x1000 - BS1 = 0x2000 - BSDLY = 0x2000 -@@ -131,6 +140,7 @@ const ( - MEMGETREGIONCOUNT = 0x80044d07 - MEMISLOCKED = 0x80084d17 - MEMLOCK = 0x40084d05 -+ MEMREAD = 0xc0404d1a - MEMREADOOB = 0xc00c4d04 - MEMSETBADBLOCK = 0x40084d0c - MEMUNLOCK = 0x40084d06 -@@ -323,10 +333,12 @@ const ( - SO_NOFCS = 0x2b - SO_OOBINLINE = 0xa - SO_PASSCRED = 0x10 -+ SO_PASSPIDFD = 0x4c - SO_PASSSEC = 0x22 - SO_PEEK_OFF = 0x2a - SO_PEERCRED = 0x11 - SO_PEERGROUPS = 0x3b -+ SO_PEERPIDFD = 0x4d - SO_PEERSEC = 0x1f - SO_PREFER_BUSY_POLL = 0x45 - SO_PROTOCOL = 0x26 -diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go -old mode 100644 -new mode 100755 -index d7995bd..910c330 ---- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go -+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go -@@ -27,22 +27,31 @@ const ( - B57600 = 0x1001 - B576000 = 0x1006 - B921600 = 0x1007 -+ BLKALIGNOFF = 0x127a - BLKBSZGET = 0x80081270 - BLKBSZSET = 0x40081271 -+ BLKDISCARD = 0x1277 -+ BLKDISCARDZEROES = 0x127c - BLKFLSBUF = 0x1261 - BLKFRAGET = 0x1265 - BLKFRASET = 0x1264 -+ BLKGETDISKSEQ = 0x80081280 - BLKGETSIZE = 0x1260 - BLKGETSIZE64 = 0x80081272 -+ BLKIOMIN = 0x1278 -+ BLKIOOPT = 0x1279 - BLKPBSZGET = 0x127b - BLKRAGET = 0x1263 - BLKRASET = 0x1262 - BLKROGET = 0x125e - BLKROSET = 0x125d -+ BLKROTATIONAL = 0x127e - BLKRRPART = 0x125f -+ BLKSECDISCARD = 0x127d - BLKSECTGET = 0x1267 - BLKSECTSET = 0x1266 - BLKSSZGET = 0x1268 -+ BLKZEROOUT = 0x127f - BOTHER = 0x1000 - BS1 = 0x2000 - BSDLY = 0x2000 -@@ -134,6 +143,7 @@ const ( - MEMGETREGIONCOUNT = 0x80044d07 - MEMISLOCKED = 0x80084d17 - MEMLOCK = 0x40084d05 -+ MEMREAD = 0xc0404d1a - MEMREADOOB = 0xc0104d04 - MEMSETBADBLOCK = 0x40084d0c - MEMUNLOCK = 0x40084d06 -@@ -313,10 +323,12 @@ const ( - SO_NOFCS = 0x2b - SO_OOBINLINE = 0xa - SO_PASSCRED = 0x10 -+ SO_PASSPIDFD = 0x4c - SO_PASSSEC = 0x22 - SO_PEEK_OFF = 0x2a - SO_PEERCRED = 0x11 - SO_PEERGROUPS = 0x3b -+ SO_PEERPIDFD = 0x4d - SO_PEERSEC = 0x1f - SO_PREFER_BUSY_POLL = 0x45 - SO_PROTOCOL = 0x26 -@@ -442,6 +454,7 @@ const ( - TIOCSWINSZ = 0x5414 - TIOCVHANGUP = 0x5437 - TOSTOP = 0x100 -+ TPIDR2_MAGIC = 0x54504902 - TUNATTACHFILTER = 0x401054d5 - TUNDETACHFILTER = 0x401054d6 - TUNGETDEVNETNS = 0x54e3 -@@ -514,6 +527,7 @@ const ( - XCASE = 0x4 - XTABS = 0x1800 - ZA_MAGIC = 0x54366345 -+ ZT_MAGIC = 0x5a544e01 - _HIDIOCGRAWNAME = 0x80804804 - _HIDIOCGRAWPHYS = 0x80404805 - _HIDIOCGRAWUNIQ = 0x80404808 -diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go -old mode 100644 -new mode 100755 -index 928e24c..a640798 ---- a/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go -+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go -@@ -27,22 +27,31 @@ const ( - B57600 = 0x1001 - B576000 = 0x1006 - B921600 = 0x1007 -+ BLKALIGNOFF = 0x127a - BLKBSZGET = 0x80081270 - BLKBSZSET = 0x40081271 -+ BLKDISCARD = 0x1277 -+ BLKDISCARDZEROES = 0x127c - BLKFLSBUF = 0x1261 - BLKFRAGET = 0x1265 - BLKFRASET = 0x1264 -+ BLKGETDISKSEQ = 0x80081280 - BLKGETSIZE = 0x1260 - BLKGETSIZE64 = 0x80081272 -+ BLKIOMIN = 0x1278 -+ BLKIOOPT = 0x1279 - BLKPBSZGET = 0x127b - BLKRAGET = 0x1263 - BLKRASET = 0x1262 - BLKROGET = 0x125e - BLKROSET = 0x125d -+ BLKROTATIONAL = 0x127e - BLKRRPART = 0x125f -+ BLKSECDISCARD = 0x127d - BLKSECTGET = 0x1267 - BLKSECTSET = 0x1266 - BLKSSZGET = 0x1268 -+ BLKZEROOUT = 0x127f - BOTHER = 0x1000 - BS1 = 0x2000 - BSDLY = 0x2000 -@@ -109,6 +118,8 @@ const ( - IUCLC = 0x200 - IXOFF = 0x1000 - IXON = 0x400 -+ LASX_CTX_MAGIC = 0x41535801 -+ LSX_CTX_MAGIC = 0x53580001 - MAP_ANON = 0x20 - MAP_ANONYMOUS = 0x20 - MAP_DENYWRITE = 0x800 -@@ -132,6 +143,7 @@ const ( - MEMGETREGIONCOUNT = 0x80044d07 - MEMISLOCKED = 0x80084d17 - MEMLOCK = 0x40084d05 -+ MEMREAD = 0xc0404d1a - MEMREADOOB = 0xc0104d04 - MEMSETBADBLOCK = 0x40084d0c - MEMUNLOCK = 0x40084d06 -@@ -307,10 +319,12 @@ const ( - SO_NOFCS = 0x2b - SO_OOBINLINE = 0xa - SO_PASSCRED = 0x10 -+ SO_PASSPIDFD = 0x4c - SO_PASSSEC = 0x22 - SO_PEEK_OFF = 0x2a - SO_PEERCRED = 0x11 - SO_PEERGROUPS = 0x3b -+ SO_PEERPIDFD = 0x4d - SO_PEERSEC = 0x1f - SO_PREFER_BUSY_POLL = 0x45 - SO_PROTOCOL = 0x26 -diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go -old mode 100644 -new mode 100755 -index 179bffb..0d5925d ---- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go -+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go -@@ -27,22 +27,31 @@ const ( - B57600 = 0x1001 - B576000 = 0x1006 - B921600 = 0x1007 -+ BLKALIGNOFF = 0x2000127a - BLKBSZGET = 0x40041270 - BLKBSZSET = 0x80041271 -+ BLKDISCARD = 0x20001277 -+ BLKDISCARDZEROES = 0x2000127c - BLKFLSBUF = 0x20001261 - BLKFRAGET = 0x20001265 - BLKFRASET = 0x20001264 -+ BLKGETDISKSEQ = 0x40081280 - BLKGETSIZE = 0x20001260 - BLKGETSIZE64 = 0x40041272 -+ BLKIOMIN = 0x20001278 -+ BLKIOOPT = 0x20001279 - BLKPBSZGET = 0x2000127b - BLKRAGET = 0x20001263 - BLKRASET = 0x20001262 - BLKROGET = 0x2000125e - BLKROSET = 0x2000125d -+ BLKROTATIONAL = 0x2000127e - BLKRRPART = 0x2000125f -+ BLKSECDISCARD = 0x2000127d - BLKSECTGET = 0x20001267 - BLKSECTSET = 0x20001266 - BLKSSZGET = 0x20001268 -+ BLKZEROOUT = 0x2000127f - BOTHER = 0x1000 - BS1 = 0x2000 - BSDLY = 0x2000 -@@ -131,6 +140,7 @@ const ( - MEMGETREGIONCOUNT = 0x40044d07 - MEMISLOCKED = 0x40084d17 - MEMLOCK = 0x80084d05 -+ MEMREAD = 0xc0404d1a - MEMREADOOB = 0xc00c4d04 - MEMSETBADBLOCK = 0x80084d0c - MEMUNLOCK = 0x80084d06 -@@ -316,10 +326,12 @@ const ( - SO_NOFCS = 0x2b - SO_OOBINLINE = 0x100 - SO_PASSCRED = 0x11 -+ SO_PASSPIDFD = 0x4c - SO_PASSSEC = 0x22 - SO_PEEK_OFF = 0x2a - SO_PEERCRED = 0x12 - SO_PEERGROUPS = 0x3b -+ SO_PEERPIDFD = 0x4d - SO_PEERSEC = 0x1e - SO_PREFER_BUSY_POLL = 0x45 - SO_PROTOCOL = 0x1028 -diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go -old mode 100644 -new mode 100755 -index 1fba17b..d72a00e ---- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go -+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go -@@ -27,22 +27,31 @@ const ( - B57600 = 0x1001 - B576000 = 0x1006 - B921600 = 0x1007 -+ BLKALIGNOFF = 0x2000127a - BLKBSZGET = 0x40081270 - BLKBSZSET = 0x80081271 -+ BLKDISCARD = 0x20001277 -+ BLKDISCARDZEROES = 0x2000127c - BLKFLSBUF = 0x20001261 - BLKFRAGET = 0x20001265 - BLKFRASET = 0x20001264 -+ BLKGETDISKSEQ = 0x40081280 - BLKGETSIZE = 0x20001260 - BLKGETSIZE64 = 0x40081272 -+ BLKIOMIN = 0x20001278 -+ BLKIOOPT = 0x20001279 - BLKPBSZGET = 0x2000127b - BLKRAGET = 0x20001263 - BLKRASET = 0x20001262 - BLKROGET = 0x2000125e - BLKROSET = 0x2000125d -+ BLKROTATIONAL = 0x2000127e - BLKRRPART = 0x2000125f -+ BLKSECDISCARD = 0x2000127d - BLKSECTGET = 0x20001267 - BLKSECTSET = 0x20001266 - BLKSSZGET = 0x20001268 -+ BLKZEROOUT = 0x2000127f - BOTHER = 0x1000 - BS1 = 0x2000 - BSDLY = 0x2000 -@@ -131,6 +140,7 @@ const ( - MEMGETREGIONCOUNT = 0x40044d07 - MEMISLOCKED = 0x40084d17 - MEMLOCK = 0x80084d05 -+ MEMREAD = 0xc0404d1a - MEMREADOOB = 0xc0104d04 - MEMSETBADBLOCK = 0x80084d0c - MEMUNLOCK = 0x80084d06 -@@ -316,10 +326,12 @@ const ( - SO_NOFCS = 0x2b - SO_OOBINLINE = 0x100 - SO_PASSCRED = 0x11 -+ SO_PASSPIDFD = 0x4c - SO_PASSSEC = 0x22 - SO_PEEK_OFF = 0x2a - SO_PEERCRED = 0x12 - SO_PEERGROUPS = 0x3b -+ SO_PEERPIDFD = 0x4d - SO_PEERSEC = 0x1e - SO_PREFER_BUSY_POLL = 0x45 - SO_PROTOCOL = 0x1028 -diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go -old mode 100644 -new mode 100755 -index b77dde3..02ba129 ---- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go -+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go -@@ -27,22 +27,31 @@ const ( - B57600 = 0x1001 - B576000 = 0x1006 - B921600 = 0x1007 -+ BLKALIGNOFF = 0x2000127a - BLKBSZGET = 0x40081270 - BLKBSZSET = 0x80081271 -+ BLKDISCARD = 0x20001277 -+ BLKDISCARDZEROES = 0x2000127c - BLKFLSBUF = 0x20001261 - BLKFRAGET = 0x20001265 - BLKFRASET = 0x20001264 -+ BLKGETDISKSEQ = 0x40081280 - BLKGETSIZE = 0x20001260 - BLKGETSIZE64 = 0x40081272 -+ BLKIOMIN = 0x20001278 -+ BLKIOOPT = 0x20001279 - BLKPBSZGET = 0x2000127b - BLKRAGET = 0x20001263 - BLKRASET = 0x20001262 - BLKROGET = 0x2000125e - BLKROSET = 0x2000125d -+ BLKROTATIONAL = 0x2000127e - BLKRRPART = 0x2000125f -+ BLKSECDISCARD = 0x2000127d - BLKSECTGET = 0x20001267 - BLKSECTSET = 0x20001266 - BLKSSZGET = 0x20001268 -+ BLKZEROOUT = 0x2000127f - BOTHER = 0x1000 - BS1 = 0x2000 - BSDLY = 0x2000 -@@ -131,6 +140,7 @@ const ( - MEMGETREGIONCOUNT = 0x40044d07 - MEMISLOCKED = 0x40084d17 - MEMLOCK = 0x80084d05 -+ MEMREAD = 0xc0404d1a - MEMREADOOB = 0xc0104d04 - MEMSETBADBLOCK = 0x80084d0c - MEMUNLOCK = 0x80084d06 -@@ -316,10 +326,12 @@ const ( - SO_NOFCS = 0x2b - SO_OOBINLINE = 0x100 - SO_PASSCRED = 0x11 -+ SO_PASSPIDFD = 0x4c - SO_PASSSEC = 0x22 - SO_PEEK_OFF = 0x2a - SO_PEERCRED = 0x12 - SO_PEERGROUPS = 0x3b -+ SO_PEERPIDFD = 0x4d - SO_PEERSEC = 0x1e - SO_PREFER_BUSY_POLL = 0x45 - SO_PROTOCOL = 0x1028 -diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go -old mode 100644 -new mode 100755 -index 78c6c75..8daa6dd ---- a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go -+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go -@@ -27,22 +27,31 @@ const ( - B57600 = 0x1001 - B576000 = 0x1006 - B921600 = 0x1007 -+ BLKALIGNOFF = 0x2000127a - BLKBSZGET = 0x40041270 - BLKBSZSET = 0x80041271 -+ BLKDISCARD = 0x20001277 -+ BLKDISCARDZEROES = 0x2000127c - BLKFLSBUF = 0x20001261 - BLKFRAGET = 0x20001265 - BLKFRASET = 0x20001264 -+ BLKGETDISKSEQ = 0x40081280 - BLKGETSIZE = 0x20001260 - BLKGETSIZE64 = 0x40041272 -+ BLKIOMIN = 0x20001278 -+ BLKIOOPT = 0x20001279 - BLKPBSZGET = 0x2000127b - BLKRAGET = 0x20001263 - BLKRASET = 0x20001262 - BLKROGET = 0x2000125e - BLKROSET = 0x2000125d -+ BLKROTATIONAL = 0x2000127e - BLKRRPART = 0x2000125f -+ BLKSECDISCARD = 0x2000127d - BLKSECTGET = 0x20001267 - BLKSECTSET = 0x20001266 - BLKSSZGET = 0x20001268 -+ BLKZEROOUT = 0x2000127f - BOTHER = 0x1000 - BS1 = 0x2000 - BSDLY = 0x2000 -@@ -131,6 +140,7 @@ const ( - MEMGETREGIONCOUNT = 0x40044d07 - MEMISLOCKED = 0x40084d17 - MEMLOCK = 0x80084d05 -+ MEMREAD = 0xc0404d1a - MEMREADOOB = 0xc00c4d04 - MEMSETBADBLOCK = 0x80084d0c - MEMUNLOCK = 0x80084d06 -@@ -316,10 +326,12 @@ const ( - SO_NOFCS = 0x2b - SO_OOBINLINE = 0x100 - SO_PASSCRED = 0x11 -+ SO_PASSPIDFD = 0x4c - SO_PASSSEC = 0x22 - SO_PEEK_OFF = 0x2a - SO_PEERCRED = 0x12 - SO_PEERGROUPS = 0x3b -+ SO_PEERPIDFD = 0x4d - SO_PEERSEC = 0x1e - SO_PREFER_BUSY_POLL = 0x45 - SO_PROTOCOL = 0x1028 -diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go -old mode 100644 -new mode 100755 -index 1c0d31f..63c8fa2 ---- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go -+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go -@@ -27,22 +27,31 @@ const ( - B57600 = 0x10 - B576000 = 0x15 - B921600 = 0x16 -+ BLKALIGNOFF = 0x2000127a - BLKBSZGET = 0x40041270 - BLKBSZSET = 0x80041271 -+ BLKDISCARD = 0x20001277 -+ BLKDISCARDZEROES = 0x2000127c - BLKFLSBUF = 0x20001261 - BLKFRAGET = 0x20001265 - BLKFRASET = 0x20001264 -+ BLKGETDISKSEQ = 0x40081280 - BLKGETSIZE = 0x20001260 - BLKGETSIZE64 = 0x40041272 -+ BLKIOMIN = 0x20001278 -+ BLKIOOPT = 0x20001279 - BLKPBSZGET = 0x2000127b - BLKRAGET = 0x20001263 - BLKRASET = 0x20001262 - BLKROGET = 0x2000125e - BLKROSET = 0x2000125d -+ BLKROTATIONAL = 0x2000127e - BLKRRPART = 0x2000125f -+ BLKSECDISCARD = 0x2000127d - BLKSECTGET = 0x20001267 - BLKSECTSET = 0x20001266 - BLKSSZGET = 0x20001268 -+ BLKZEROOUT = 0x2000127f - BOTHER = 0x1f - BS1 = 0x8000 - BSDLY = 0x8000 -@@ -131,6 +140,7 @@ const ( - MEMGETREGIONCOUNT = 0x40044d07 - MEMISLOCKED = 0x40084d17 - MEMLOCK = 0x80084d05 -+ MEMREAD = 0xc0404d1a - MEMREADOOB = 0xc00c4d04 - MEMSETBADBLOCK = 0x80084d0c - MEMUNLOCK = 0x80084d06 -@@ -371,10 +381,12 @@ const ( - SO_NOFCS = 0x2b - SO_OOBINLINE = 0xa - SO_PASSCRED = 0x14 -+ SO_PASSPIDFD = 0x4c - SO_PASSSEC = 0x22 - SO_PEEK_OFF = 0x2a - SO_PEERCRED = 0x15 - SO_PEERGROUPS = 0x3b -+ SO_PEERPIDFD = 0x4d - SO_PEERSEC = 0x1f - SO_PREFER_BUSY_POLL = 0x45 - SO_PROTOCOL = 0x26 -diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go -old mode 100644 -new mode 100755 -index 959dd9b..930799e ---- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go -+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go -@@ -27,22 +27,31 @@ const ( - B57600 = 0x10 - B576000 = 0x15 - B921600 = 0x16 -+ BLKALIGNOFF = 0x2000127a - BLKBSZGET = 0x40081270 - BLKBSZSET = 0x80081271 -+ BLKDISCARD = 0x20001277 -+ BLKDISCARDZEROES = 0x2000127c - BLKFLSBUF = 0x20001261 - BLKFRAGET = 0x20001265 - BLKFRASET = 0x20001264 -+ BLKGETDISKSEQ = 0x40081280 - BLKGETSIZE = 0x20001260 - BLKGETSIZE64 = 0x40081272 -+ BLKIOMIN = 0x20001278 -+ BLKIOOPT = 0x20001279 - BLKPBSZGET = 0x2000127b - BLKRAGET = 0x20001263 - BLKRASET = 0x20001262 - BLKROGET = 0x2000125e - BLKROSET = 0x2000125d -+ BLKROTATIONAL = 0x2000127e - BLKRRPART = 0x2000125f -+ BLKSECDISCARD = 0x2000127d - BLKSECTGET = 0x20001267 - BLKSECTSET = 0x20001266 - BLKSSZGET = 0x20001268 -+ BLKZEROOUT = 0x2000127f - BOTHER = 0x1f - BS1 = 0x8000 - BSDLY = 0x8000 -@@ -131,6 +140,7 @@ const ( - MEMGETREGIONCOUNT = 0x40044d07 - MEMISLOCKED = 0x40084d17 - MEMLOCK = 0x80084d05 -+ MEMREAD = 0xc0404d1a - MEMREADOOB = 0xc0104d04 - MEMSETBADBLOCK = 0x80084d0c - MEMUNLOCK = 0x80084d06 -@@ -375,10 +385,12 @@ const ( - SO_NOFCS = 0x2b - SO_OOBINLINE = 0xa - SO_PASSCRED = 0x14 -+ SO_PASSPIDFD = 0x4c - SO_PASSSEC = 0x22 - SO_PEEK_OFF = 0x2a - SO_PEERCRED = 0x15 - SO_PEERGROUPS = 0x3b -+ SO_PEERPIDFD = 0x4d - SO_PEERSEC = 0x1f - SO_PREFER_BUSY_POLL = 0x45 - SO_PROTOCOL = 0x26 -diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go -old mode 100644 -new mode 100755 -index 5a873cd..8605a7d ---- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go -+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go -@@ -27,22 +27,31 @@ const ( - B57600 = 0x10 - B576000 = 0x15 - B921600 = 0x16 -+ BLKALIGNOFF = 0x2000127a - BLKBSZGET = 0x40081270 - BLKBSZSET = 0x80081271 -+ BLKDISCARD = 0x20001277 -+ BLKDISCARDZEROES = 0x2000127c - BLKFLSBUF = 0x20001261 - BLKFRAGET = 0x20001265 - BLKFRASET = 0x20001264 -+ BLKGETDISKSEQ = 0x40081280 - BLKGETSIZE = 0x20001260 - BLKGETSIZE64 = 0x40081272 -+ BLKIOMIN = 0x20001278 -+ BLKIOOPT = 0x20001279 - BLKPBSZGET = 0x2000127b - BLKRAGET = 0x20001263 - BLKRASET = 0x20001262 - BLKROGET = 0x2000125e - BLKROSET = 0x2000125d -+ BLKROTATIONAL = 0x2000127e - BLKRRPART = 0x2000125f -+ BLKSECDISCARD = 0x2000127d - BLKSECTGET = 0x20001267 - BLKSECTSET = 0x20001266 - BLKSSZGET = 0x20001268 -+ BLKZEROOUT = 0x2000127f - BOTHER = 0x1f - BS1 = 0x8000 - BSDLY = 0x8000 -@@ -131,6 +140,7 @@ const ( - MEMGETREGIONCOUNT = 0x40044d07 - MEMISLOCKED = 0x40084d17 - MEMLOCK = 0x80084d05 -+ MEMREAD = 0xc0404d1a - MEMREADOOB = 0xc0104d04 - MEMSETBADBLOCK = 0x80084d0c - MEMUNLOCK = 0x80084d06 -@@ -375,10 +385,12 @@ const ( - SO_NOFCS = 0x2b - SO_OOBINLINE = 0xa - SO_PASSCRED = 0x14 -+ SO_PASSPIDFD = 0x4c - SO_PASSSEC = 0x22 - SO_PEEK_OFF = 0x2a - SO_PEERCRED = 0x15 - SO_PEERGROUPS = 0x3b -+ SO_PEERPIDFD = 0x4d - SO_PEERSEC = 0x1f - SO_PREFER_BUSY_POLL = 0x45 - SO_PROTOCOL = 0x26 -diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go -old mode 100644 -new mode 100755 -index e336d14..95a016f ---- a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go -+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go -@@ -27,22 +27,31 @@ const ( - B57600 = 0x1001 - B576000 = 0x1006 - B921600 = 0x1007 -+ BLKALIGNOFF = 0x127a - BLKBSZGET = 0x80081270 - BLKBSZSET = 0x40081271 -+ BLKDISCARD = 0x1277 -+ BLKDISCARDZEROES = 0x127c - BLKFLSBUF = 0x1261 - BLKFRAGET = 0x1265 - BLKFRASET = 0x1264 -+ BLKGETDISKSEQ = 0x80081280 - BLKGETSIZE = 0x1260 - BLKGETSIZE64 = 0x80081272 -+ BLKIOMIN = 0x1278 -+ BLKIOOPT = 0x1279 - BLKPBSZGET = 0x127b - BLKRAGET = 0x1263 - BLKRASET = 0x1262 - BLKROGET = 0x125e - BLKROSET = 0x125d -+ BLKROTATIONAL = 0x127e - BLKRRPART = 0x125f -+ BLKSECDISCARD = 0x127d - BLKSECTGET = 0x1267 - BLKSECTSET = 0x1266 - BLKSSZGET = 0x1268 -+ BLKZEROOUT = 0x127f - BOTHER = 0x1000 - BS1 = 0x2000 - BSDLY = 0x2000 -@@ -131,6 +140,7 @@ const ( - MEMGETREGIONCOUNT = 0x80044d07 - MEMISLOCKED = 0x80084d17 - MEMLOCK = 0x40084d05 -+ MEMREAD = 0xc0404d1a - MEMREADOOB = 0xc0104d04 - MEMSETBADBLOCK = 0x40084d0c - MEMUNLOCK = 0x40084d06 -@@ -304,10 +314,12 @@ const ( - SO_NOFCS = 0x2b - SO_OOBINLINE = 0xa - SO_PASSCRED = 0x10 -+ SO_PASSPIDFD = 0x4c - SO_PASSSEC = 0x22 - SO_PEEK_OFF = 0x2a - SO_PEERCRED = 0x11 - SO_PEERGROUPS = 0x3b -+ SO_PEERPIDFD = 0x4d - SO_PEERSEC = 0x1f - SO_PREFER_BUSY_POLL = 0x45 - SO_PROTOCOL = 0x26 -diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go -old mode 100644 -new mode 100755 -index 390c01d..1ae0108 ---- a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go -+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go -@@ -27,22 +27,31 @@ const ( - B57600 = 0x1001 - B576000 = 0x1006 - B921600 = 0x1007 -+ BLKALIGNOFF = 0x127a - BLKBSZGET = 0x80081270 - BLKBSZSET = 0x40081271 -+ BLKDISCARD = 0x1277 -+ BLKDISCARDZEROES = 0x127c - BLKFLSBUF = 0x1261 - BLKFRAGET = 0x1265 - BLKFRASET = 0x1264 -+ BLKGETDISKSEQ = 0x80081280 - BLKGETSIZE = 0x1260 - BLKGETSIZE64 = 0x80081272 -+ BLKIOMIN = 0x1278 -+ BLKIOOPT = 0x1279 - BLKPBSZGET = 0x127b - BLKRAGET = 0x1263 - BLKRASET = 0x1262 - BLKROGET = 0x125e - BLKROSET = 0x125d -+ BLKROTATIONAL = 0x127e - BLKRRPART = 0x125f -+ BLKSECDISCARD = 0x127d - BLKSECTGET = 0x1267 - BLKSECTSET = 0x1266 - BLKSSZGET = 0x1268 -+ BLKZEROOUT = 0x127f - BOTHER = 0x1000 - BS1 = 0x2000 - BSDLY = 0x2000 -@@ -131,6 +140,7 @@ const ( - MEMGETREGIONCOUNT = 0x80044d07 - MEMISLOCKED = 0x80084d17 - MEMLOCK = 0x40084d05 -+ MEMREAD = 0xc0404d1a - MEMREADOOB = 0xc0104d04 - MEMSETBADBLOCK = 0x40084d0c - MEMUNLOCK = 0x40084d06 -@@ -379,10 +389,12 @@ const ( - SO_NOFCS = 0x2b - SO_OOBINLINE = 0xa - SO_PASSCRED = 0x10 -+ SO_PASSPIDFD = 0x4c - SO_PASSSEC = 0x22 - SO_PEEK_OFF = 0x2a - SO_PEERCRED = 0x11 - SO_PEERGROUPS = 0x3b -+ SO_PEERPIDFD = 0x4d - SO_PEERSEC = 0x1f - SO_PREFER_BUSY_POLL = 0x45 - SO_PROTOCOL = 0x26 -diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go -old mode 100644 -new mode 100755 -index 98a6e5f..1bb7c63 ---- a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go -+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go -@@ -30,22 +30,31 @@ const ( - B57600 = 0x1001 - B576000 = 0x1006 - B921600 = 0x1007 -+ BLKALIGNOFF = 0x2000127a - BLKBSZGET = 0x40081270 - BLKBSZSET = 0x80081271 -+ BLKDISCARD = 0x20001277 -+ BLKDISCARDZEROES = 0x2000127c - BLKFLSBUF = 0x20001261 - BLKFRAGET = 0x20001265 - BLKFRASET = 0x20001264 -+ BLKGETDISKSEQ = 0x40081280 - BLKGETSIZE = 0x20001260 - BLKGETSIZE64 = 0x40081272 -+ BLKIOMIN = 0x20001278 -+ BLKIOOPT = 0x20001279 - BLKPBSZGET = 0x2000127b - BLKRAGET = 0x20001263 - BLKRASET = 0x20001262 - BLKROGET = 0x2000125e - BLKROSET = 0x2000125d -+ BLKROTATIONAL = 0x2000127e - BLKRRPART = 0x2000125f -+ BLKSECDISCARD = 0x2000127d - BLKSECTGET = 0x20001267 - BLKSECTSET = 0x20001266 - BLKSSZGET = 0x20001268 -+ BLKZEROOUT = 0x2000127f - BOTHER = 0x1000 - BS1 = 0x2000 - BSDLY = 0x2000 -@@ -136,6 +145,7 @@ const ( - MEMGETREGIONCOUNT = 0x40044d07 - MEMISLOCKED = 0x40084d17 - MEMLOCK = 0x80084d05 -+ MEMREAD = 0xc0404d1a - MEMREADOOB = 0xc0104d04 - MEMSETBADBLOCK = 0x80084d0c - MEMUNLOCK = 0x80084d06 -@@ -328,6 +338,54 @@ const ( - SCM_WIFI_STATUS = 0x25 - SFD_CLOEXEC = 0x400000 - SFD_NONBLOCK = 0x4000 -+ SF_FP = 0x38 -+ SF_I0 = 0x20 -+ SF_I1 = 0x24 -+ SF_I2 = 0x28 -+ SF_I3 = 0x2c -+ SF_I4 = 0x30 -+ SF_I5 = 0x34 -+ SF_L0 = 0x0 -+ SF_L1 = 0x4 -+ SF_L2 = 0x8 -+ SF_L3 = 0xc -+ SF_L4 = 0x10 -+ SF_L5 = 0x14 -+ SF_L6 = 0x18 -+ SF_L7 = 0x1c -+ SF_PC = 0x3c -+ SF_RETP = 0x40 -+ SF_V9_FP = 0x70 -+ SF_V9_I0 = 0x40 -+ SF_V9_I1 = 0x48 -+ SF_V9_I2 = 0x50 -+ SF_V9_I3 = 0x58 -+ SF_V9_I4 = 0x60 -+ SF_V9_I5 = 0x68 -+ SF_V9_L0 = 0x0 -+ SF_V9_L1 = 0x8 -+ SF_V9_L2 = 0x10 -+ SF_V9_L3 = 0x18 -+ SF_V9_L4 = 0x20 -+ SF_V9_L5 = 0x28 -+ SF_V9_L6 = 0x30 -+ SF_V9_L7 = 0x38 -+ SF_V9_PC = 0x78 -+ SF_V9_RETP = 0x80 -+ SF_V9_XARG0 = 0x88 -+ SF_V9_XARG1 = 0x90 -+ SF_V9_XARG2 = 0x98 -+ SF_V9_XARG3 = 0xa0 -+ SF_V9_XARG4 = 0xa8 -+ SF_V9_XARG5 = 0xb0 -+ SF_V9_XXARG = 0xb8 -+ SF_XARG0 = 0x44 -+ SF_XARG1 = 0x48 -+ SF_XARG2 = 0x4c -+ SF_XARG3 = 0x50 -+ SF_XARG4 = 0x54 -+ SF_XARG5 = 0x58 -+ SF_XXARG = 0x5c - SIOCATMARK = 0x8905 - SIOCGPGRP = 0x8904 - SIOCGSTAMPNS_NEW = 0x40108907 -@@ -370,10 +428,12 @@ const ( - SO_NOFCS = 0x27 - SO_OOBINLINE = 0x100 - SO_PASSCRED = 0x2 -+ SO_PASSPIDFD = 0x55 - SO_PASSSEC = 0x1f - SO_PEEK_OFF = 0x26 - SO_PEERCRED = 0x40 - SO_PEERGROUPS = 0x3d -+ SO_PEERPIDFD = 0x56 - SO_PEERSEC = 0x1e - SO_PREFER_BUSY_POLL = 0x48 - SO_PROTOCOL = 0x1028 -diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go -old mode 100644 -new mode 100755 -index 6d56edc..af20e47 ---- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go -+++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go -@@ -46,6 +46,7 @@ const ( - AF_SNA = 0xb - AF_UNIX = 0x1 - AF_UNSPEC = 0x0 -+ ALTWERASE = 0x200 - ARPHRD_ETHER = 0x1 - ARPHRD_FRELAY = 0xf - ARPHRD_IEEE1394 = 0x18 -@@ -108,6 +109,15 @@ const ( - BPF_DIRECTION_IN = 0x1 - BPF_DIRECTION_OUT = 0x2 - BPF_DIV = 0x30 -+ BPF_FILDROP_CAPTURE = 0x1 -+ BPF_FILDROP_DROP = 0x2 -+ BPF_FILDROP_PASS = 0x0 -+ BPF_F_DIR_IN = 0x10 -+ BPF_F_DIR_MASK = 0x30 -+ BPF_F_DIR_OUT = 0x20 -+ BPF_F_DIR_SHIFT = 0x4 -+ BPF_F_FLOWID = 0x8 -+ BPF_F_PRI_MASK = 0x7 - BPF_H = 0x8 - BPF_IMM = 0x0 - BPF_IND = 0x40 -@@ -136,6 +146,7 @@ const ( - BPF_OR = 0x40 - BPF_RELEASE = 0x30bb6 - BPF_RET = 0x6 -+ BPF_RND = 0xc0 - BPF_RSH = 0x70 - BPF_ST = 0x2 - BPF_STX = 0x3 -@@ -147,6 +158,12 @@ const ( - BRKINT = 0x2 - CFLUSH = 0xf - CLOCAL = 0x8000 -+ CLOCK_BOOTTIME = 0x6 -+ CLOCK_MONOTONIC = 0x3 -+ CLOCK_PROCESS_CPUTIME_ID = 0x2 -+ CLOCK_REALTIME = 0x0 -+ CLOCK_THREAD_CPUTIME_ID = 0x4 -+ CLOCK_UPTIME = 0x5 - CPUSTATES = 0x6 - CP_IDLE = 0x5 - CP_INTR = 0x4 -@@ -170,7 +187,65 @@ const ( - CTL_KERN = 0x1 - CTL_MAXNAME = 0xc - CTL_NET = 0x4 -+ DIOCADDQUEUE = 0xc100445d -+ DIOCADDRULE = 0xccc84404 -+ DIOCADDSTATE = 0xc1084425 -+ DIOCCHANGERULE = 0xccc8441a -+ DIOCCLRIFFLAG = 0xc024445a -+ DIOCCLRSRCNODES = 0x20004455 -+ DIOCCLRSTATES = 0xc0d04412 -+ DIOCCLRSTATUS = 0xc0244416 -+ DIOCGETLIMIT = 0xc0084427 -+ DIOCGETQSTATS = 0xc1084460 -+ DIOCGETQUEUE = 0xc100445f -+ DIOCGETQUEUES = 0xc100445e -+ DIOCGETRULE = 0xccc84407 -+ DIOCGETRULES = 0xccc84406 -+ DIOCGETRULESET = 0xc444443b -+ DIOCGETRULESETS = 0xc444443a -+ DIOCGETSRCNODES = 0xc0084454 -+ DIOCGETSTATE = 0xc1084413 -+ DIOCGETSTATES = 0xc0084419 -+ DIOCGETSTATUS = 0xc1e84415 -+ DIOCGETSYNFLWATS = 0xc0084463 -+ DIOCGETTIMEOUT = 0xc008441e -+ DIOCIGETIFACES = 0xc0244457 -+ DIOCKILLSRCNODES = 0xc068445b -+ DIOCKILLSTATES = 0xc0d04429 -+ DIOCNATLOOK = 0xc0504417 -+ DIOCOSFPADD = 0xc084444f - DIOCOSFPFLUSH = 0x2000444e -+ DIOCOSFPGET = 0xc0844450 -+ DIOCRADDADDRS = 0xc44c4443 -+ DIOCRADDTABLES = 0xc44c443d -+ DIOCRCLRADDRS = 0xc44c4442 -+ DIOCRCLRASTATS = 0xc44c4448 -+ DIOCRCLRTABLES = 0xc44c443c -+ DIOCRCLRTSTATS = 0xc44c4441 -+ DIOCRDELADDRS = 0xc44c4444 -+ DIOCRDELTABLES = 0xc44c443e -+ DIOCRGETADDRS = 0xc44c4446 -+ DIOCRGETASTATS = 0xc44c4447 -+ DIOCRGETTABLES = 0xc44c443f -+ DIOCRGETTSTATS = 0xc44c4440 -+ DIOCRINADEFINE = 0xc44c444d -+ DIOCRSETADDRS = 0xc44c4445 -+ DIOCRSETTFLAGS = 0xc44c444a -+ DIOCRTSTADDRS = 0xc44c4449 -+ DIOCSETDEBUG = 0xc0044418 -+ DIOCSETHOSTID = 0xc0044456 -+ DIOCSETIFFLAG = 0xc0244459 -+ DIOCSETLIMIT = 0xc0084428 -+ DIOCSETREASS = 0xc004445c -+ DIOCSETSTATUSIF = 0xc0244414 -+ DIOCSETSYNCOOKIES = 0xc0014462 -+ DIOCSETSYNFLWATS = 0xc0084461 -+ DIOCSETTIMEOUT = 0xc008441d -+ DIOCSTART = 0x20004401 -+ DIOCSTOP = 0x20004402 -+ DIOCXBEGIN = 0xc00c4451 -+ DIOCXCOMMIT = 0xc00c4452 -+ DIOCXROLLBACK = 0xc00c4453 - DLT_ARCNET = 0x7 - DLT_ATM_RFC1483 = 0xb - DLT_AX25 = 0x3 -@@ -186,6 +261,7 @@ const ( - DLT_LOOP = 0xc - DLT_MPLS = 0xdb - DLT_NULL = 0x0 -+ DLT_OPENFLOW = 0x10b - DLT_PFLOG = 0x75 - DLT_PFSYNC = 0x12 - DLT_PPP = 0x9 -@@ -196,6 +272,23 @@ const ( - DLT_RAW = 0xe - DLT_SLIP = 0x8 - DLT_SLIP_BSDOS = 0xf -+ DLT_USBPCAP = 0xf9 -+ DLT_USER0 = 0x93 -+ DLT_USER1 = 0x94 -+ DLT_USER10 = 0x9d -+ DLT_USER11 = 0x9e -+ DLT_USER12 = 0x9f -+ DLT_USER13 = 0xa0 -+ DLT_USER14 = 0xa1 -+ DLT_USER15 = 0xa2 -+ DLT_USER2 = 0x95 -+ DLT_USER3 = 0x96 -+ DLT_USER4 = 0x97 -+ DLT_USER5 = 0x98 -+ DLT_USER6 = 0x99 -+ DLT_USER7 = 0x9a -+ DLT_USER8 = 0x9b -+ DLT_USER9 = 0x9c - DT_BLK = 0x6 - DT_CHR = 0x2 - DT_DIR = 0x4 -@@ -215,6 +308,8 @@ const ( - EMUL_ENABLED = 0x1 - EMUL_NATIVE = 0x2 - ENDRUNDISC = 0x9 -+ ETH64_8021_RSVD_MASK = 0xfffffffffff0 -+ ETH64_8021_RSVD_PREFIX = 0x180c2000000 - ETHERMIN = 0x2e - ETHERMTU = 0x5dc - ETHERTYPE_8023 = 0x4 -@@ -267,6 +362,7 @@ const ( - ETHERTYPE_DN = 0x6003 - ETHERTYPE_DOGFIGHT = 0x1989 - ETHERTYPE_DSMD = 0x8039 -+ ETHERTYPE_EAPOL = 0x888e - ETHERTYPE_ECMA = 0x803 - ETHERTYPE_ENCRYPT = 0x803d - ETHERTYPE_ES = 0x805d -@@ -298,6 +394,7 @@ const ( - ETHERTYPE_LLDP = 0x88cc - ETHERTYPE_LOGICRAFT = 0x8148 - ETHERTYPE_LOOPBACK = 0x9000 -+ ETHERTYPE_MACSEC = 0x88e5 - ETHERTYPE_MATRA = 0x807a - ETHERTYPE_MAX = 0xffff - ETHERTYPE_MERIT = 0x807c -@@ -326,15 +423,17 @@ const ( - ETHERTYPE_NCD = 0x8149 - ETHERTYPE_NESTAR = 0x8006 - ETHERTYPE_NETBEUI = 0x8191 -+ ETHERTYPE_NHRP = 0x2001 - ETHERTYPE_NOVELL = 0x8138 - ETHERTYPE_NS = 0x600 - ETHERTYPE_NSAT = 0x601 - ETHERTYPE_NSCOMPAT = 0x807 -+ ETHERTYPE_NSH = 0x984f - ETHERTYPE_NTRAILER = 0x10 - ETHERTYPE_OS9 = 0x7007 - ETHERTYPE_OS9NET = 0x7009 - ETHERTYPE_PACER = 0x80c6 -- ETHERTYPE_PAE = 0x888e -+ ETHERTYPE_PBB = 0x88e7 - ETHERTYPE_PCS = 0x4242 - ETHERTYPE_PLANNING = 0x8044 - ETHERTYPE_PPP = 0x880b -@@ -409,28 +508,40 @@ const ( - ETHER_CRC_POLY_LE = 0xedb88320 - ETHER_HDR_LEN = 0xe - ETHER_MAX_DIX_LEN = 0x600 -+ ETHER_MAX_HARDMTU_LEN = 0xff9b - ETHER_MAX_LEN = 0x5ee - ETHER_MIN_LEN = 0x40 - ETHER_TYPE_LEN = 0x2 - ETHER_VLAN_ENCAP_LEN = 0x4 - EVFILT_AIO = -0x3 -+ EVFILT_DEVICE = -0x8 -+ EVFILT_EXCEPT = -0x9 - EVFILT_PROC = -0x5 - EVFILT_READ = -0x1 - EVFILT_SIGNAL = -0x6 -- EVFILT_SYSCOUNT = 0x7 -+ EVFILT_SYSCOUNT = 0x9 - EVFILT_TIMER = -0x7 - EVFILT_VNODE = -0x4 - EVFILT_WRITE = -0x2 -+ EVL_ENCAPLEN = 0x4 -+ EVL_PRIO_BITS = 0xd -+ EVL_PRIO_MAX = 0x7 -+ EVL_VLID_MASK = 0xfff -+ EVL_VLID_MAX = 0xffe -+ EVL_VLID_MIN = 0x1 -+ EVL_VLID_NULL = 0x0 - EV_ADD = 0x1 - EV_CLEAR = 0x20 - EV_DELETE = 0x2 - EV_DISABLE = 0x8 -+ EV_DISPATCH = 0x80 - EV_ENABLE = 0x4 - EV_EOF = 0x8000 - EV_ERROR = 0x4000 - EV_FLAG1 = 0x2000 - EV_ONESHOT = 0x10 -- EV_SYSFLAGS = 0xf000 -+ EV_RECEIPT = 0x40 -+ EV_SYSFLAGS = 0xf800 - EXTA = 0x4b00 - EXTB = 0x9600 - EXTPROC = 0x800 -@@ -443,6 +554,7 @@ const ( - F_GETFL = 0x3 - F_GETLK = 0x7 - F_GETOWN = 0x5 -+ F_ISATTY = 0xb - F_OK = 0x0 - F_RDLCK = 0x1 - F_SETFD = 0x2 -@@ -460,7 +572,6 @@ const ( - IEXTEN = 0x400 - IFAN_ARRIVAL = 0x0 - IFAN_DEPARTURE = 0x1 -- IFA_ROUTE = 0x1 - IFF_ALLMULTI = 0x200 - IFF_BROADCAST = 0x2 - IFF_CANTCHANGE = 0x8e52 -@@ -471,12 +582,12 @@ const ( - IFF_LOOPBACK = 0x8 - IFF_MULTICAST = 0x8000 - IFF_NOARP = 0x80 -- IFF_NOTRAILERS = 0x20 - IFF_OACTIVE = 0x400 - IFF_POINTOPOINT = 0x10 - IFF_PROMISC = 0x100 - IFF_RUNNING = 0x40 - IFF_SIMPLEX = 0x800 -+ IFF_STATICARP = 0x20 - IFF_UP = 0x1 - IFNAMSIZ = 0x10 - IFT_1822 = 0x2 -@@ -605,6 +716,7 @@ const ( - IFT_LINEGROUP = 0xd2 - IFT_LOCALTALK = 0x2a - IFT_LOOP = 0x18 -+ IFT_MBIM = 0xfa - IFT_MEDIAMAILOVERIP = 0x8b - IFT_MFSIGLINK = 0xa7 - IFT_MIOX25 = 0x26 -@@ -695,6 +807,7 @@ const ( - IFT_VOICEOVERCABLE = 0xc6 - IFT_VOICEOVERFRAMERELAY = 0x99 - IFT_VOICEOVERIP = 0x68 -+ IFT_WIREGUARD = 0xfb - IFT_X213 = 0x5d - IFT_X25 = 0x5 - IFT_X25DDN = 0x4 -@@ -729,8 +842,6 @@ const ( - IPPROTO_AH = 0x33 - IPPROTO_CARP = 0x70 - IPPROTO_DIVERT = 0x102 -- IPPROTO_DIVERT_INIT = 0x2 -- IPPROTO_DIVERT_RESP = 0x1 - IPPROTO_DONE = 0x101 - IPPROTO_DSTOPTS = 0x3c - IPPROTO_EGP = 0x8 -@@ -762,9 +873,11 @@ const ( - IPPROTO_RAW = 0xff - IPPROTO_ROUTING = 0x2b - IPPROTO_RSVP = 0x2e -+ IPPROTO_SCTP = 0x84 - IPPROTO_TCP = 0x6 - IPPROTO_TP = 0x1d - IPPROTO_UDP = 0x11 -+ IPPROTO_UDPLITE = 0x88 - IPV6_AUTH_LEVEL = 0x35 - IPV6_AUTOFLOWLABEL = 0x3b - IPV6_CHECKSUM = 0x1a -@@ -787,6 +900,7 @@ const ( - IPV6_LEAVE_GROUP = 0xd - IPV6_MAXHLIM = 0xff - IPV6_MAXPACKET = 0xffff -+ IPV6_MINHOPCOUNT = 0x41 - IPV6_MMTU = 0x500 - IPV6_MULTICAST_HOPS = 0xa - IPV6_MULTICAST_IF = 0x9 -@@ -826,12 +940,12 @@ const ( - IP_DEFAULT_MULTICAST_LOOP = 0x1 - IP_DEFAULT_MULTICAST_TTL = 0x1 - IP_DF = 0x4000 -- IP_DIVERTFL = 0x1022 - IP_DROP_MEMBERSHIP = 0xd - IP_ESP_NETWORK_LEVEL = 0x16 - IP_ESP_TRANS_LEVEL = 0x15 - IP_HDRINCL = 0x2 - IP_IPCOMP_LEVEL = 0x1d -+ IP_IPDEFTTL = 0x25 - IP_IPSECFLOWINFO = 0x24 - IP_IPSEC_LOCAL_AUTH = 0x1b - IP_IPSEC_LOCAL_CRED = 0x19 -@@ -865,10 +979,15 @@ const ( - IP_RETOPTS = 0x8 - IP_RF = 0x8000 - IP_RTABLE = 0x1021 -+ IP_SENDSRCADDR = 0x7 - IP_TOS = 0x3 - IP_TTL = 0x4 - ISIG = 0x80 - ISTRIP = 0x20 -+ ITIMER_PROF = 0x2 -+ ITIMER_REAL = 0x0 -+ ITIMER_VIRTUAL = 0x1 -+ IUCLC = 0x1000 - IXANY = 0x800 - IXOFF = 0x400 - IXON = 0x200 -@@ -900,10 +1019,11 @@ const ( - MAP_INHERIT_COPY = 0x1 - MAP_INHERIT_NONE = 0x2 - MAP_INHERIT_SHARE = 0x0 -- MAP_NOEXTEND = 0x100 -- MAP_NORESERVE = 0x40 -+ MAP_INHERIT_ZERO = 0x3 -+ MAP_NOEXTEND = 0x0 -+ MAP_NORESERVE = 0x0 - MAP_PRIVATE = 0x2 -- MAP_RENAME = 0x20 -+ MAP_RENAME = 0x0 - MAP_SHARED = 0x1 - MAP_STACK = 0x4000 - MAP_TRYFIXED = 0x0 -@@ -922,6 +1042,7 @@ const ( - MNT_NOATIME = 0x8000 - MNT_NODEV = 0x10 - MNT_NOEXEC = 0x4 -+ MNT_NOPERM = 0x20 - MNT_NOSUID = 0x8 - MNT_NOWAIT = 0x2 - MNT_QUOTA = 0x2000 -@@ -929,13 +1050,29 @@ const ( - MNT_RELOAD = 0x40000 - MNT_ROOTFS = 0x4000 - MNT_SOFTDEP = 0x4000000 -+ MNT_STALLED = 0x100000 -+ MNT_SWAPPABLE = 0x200000 - MNT_SYNCHRONOUS = 0x2 - MNT_UPDATE = 0x10000 - MNT_VISFLAGMASK = 0x400ffff - MNT_WAIT = 0x1 - MNT_WANTRDWR = 0x2000000 - MNT_WXALLOWED = 0x800 -+ MOUNT_AFS = "afs" -+ MOUNT_CD9660 = "cd9660" -+ MOUNT_EXT2FS = "ext2fs" -+ MOUNT_FFS = "ffs" -+ MOUNT_FUSEFS = "fuse" -+ MOUNT_MFS = "mfs" -+ MOUNT_MSDOS = "msdos" -+ MOUNT_NCPFS = "ncpfs" -+ MOUNT_NFS = "nfs" -+ MOUNT_NTFS = "ntfs" -+ MOUNT_TMPFS = "tmpfs" -+ MOUNT_UDF = "udf" -+ MOUNT_UFS = "ffs" - MSG_BCAST = 0x100 -+ MSG_CMSG_CLOEXEC = 0x800 - MSG_CTRUNC = 0x20 - MSG_DONTROUTE = 0x4 - MSG_DONTWAIT = 0x80 -@@ -946,6 +1083,7 @@ const ( - MSG_PEEK = 0x2 - MSG_TRUNC = 0x10 - MSG_WAITALL = 0x40 -+ MSG_WAITFORONE = 0x1000 - MS_ASYNC = 0x1 - MS_INVALIDATE = 0x4 - MS_SYNC = 0x2 -@@ -953,12 +1091,16 @@ const ( - NET_RT_DUMP = 0x1 - NET_RT_FLAGS = 0x2 - NET_RT_IFLIST = 0x3 -- NET_RT_MAXID = 0x6 -+ NET_RT_IFNAMES = 0x6 -+ NET_RT_MAXID = 0x8 -+ NET_RT_SOURCE = 0x7 - NET_RT_STATS = 0x4 - NET_RT_TABLE = 0x5 - NFDBITS = 0x20 - NOFLSH = 0x80000000 -+ NOKERNINFO = 0x2000000 - NOTE_ATTRIB = 0x8 -+ NOTE_CHANGE = 0x1 - NOTE_CHILD = 0x4 - NOTE_DELETE = 0x1 - NOTE_EOF = 0x2 -@@ -968,6 +1110,7 @@ const ( - NOTE_FORK = 0x40000000 - NOTE_LINK = 0x10 - NOTE_LOWAT = 0x1 -+ NOTE_OOB = 0x4 - NOTE_PCTRLMASK = 0xf0000000 - NOTE_PDATAMASK = 0xfffff - NOTE_RENAME = 0x20 -@@ -977,11 +1120,13 @@ const ( - NOTE_TRUNCATE = 0x80 - NOTE_WRITE = 0x2 - OCRNL = 0x10 -+ OLCUC = 0x20 - ONLCR = 0x2 - ONLRET = 0x80 - ONOCR = 0x40 - ONOEOT = 0x8 - OPOST = 0x1 -+ OXTABS = 0x4 - O_ACCMODE = 0x3 - O_APPEND = 0x8 - O_ASYNC = 0x40 -@@ -1015,7 +1160,6 @@ const ( - PROT_NONE = 0x0 - PROT_READ = 0x1 - PROT_WRITE = 0x2 -- PT_MASK = 0x3ff000 - RLIMIT_CORE = 0x4 - RLIMIT_CPU = 0x0 - RLIMIT_DATA = 0x2 -@@ -1027,19 +1171,25 @@ const ( - RLIMIT_STACK = 0x3 - RLIM_INFINITY = 0x7fffffffffffffff - RTAX_AUTHOR = 0x6 -+ RTAX_BFD = 0xb - RTAX_BRD = 0x7 -+ RTAX_DNS = 0xc - RTAX_DST = 0x0 - RTAX_GATEWAY = 0x1 - RTAX_GENMASK = 0x3 - RTAX_IFA = 0x5 - RTAX_IFP = 0x4 - RTAX_LABEL = 0xa -- RTAX_MAX = 0xb -+ RTAX_MAX = 0xf - RTAX_NETMASK = 0x2 -+ RTAX_SEARCH = 0xe - RTAX_SRC = 0x8 - RTAX_SRCMASK = 0x9 -+ RTAX_STATIC = 0xd - RTA_AUTHOR = 0x40 -+ RTA_BFD = 0x800 - RTA_BRD = 0x80 -+ RTA_DNS = 0x1000 - RTA_DST = 0x1 - RTA_GATEWAY = 0x2 - RTA_GENMASK = 0x8 -@@ -1047,49 +1197,57 @@ const ( - RTA_IFP = 0x10 - RTA_LABEL = 0x400 - RTA_NETMASK = 0x4 -+ RTA_SEARCH = 0x4000 - RTA_SRC = 0x100 - RTA_SRCMASK = 0x200 -+ RTA_STATIC = 0x2000 - RTF_ANNOUNCE = 0x4000 -+ RTF_BFD = 0x1000000 - RTF_BLACKHOLE = 0x1000 -+ RTF_BROADCAST = 0x400000 -+ RTF_CACHED = 0x20000 - RTF_CLONED = 0x10000 - RTF_CLONING = 0x100 -+ RTF_CONNECTED = 0x800000 - RTF_DONE = 0x40 - RTF_DYNAMIC = 0x10 -- RTF_FMASK = 0x10f808 -+ RTF_FMASK = 0x110fc08 - RTF_GATEWAY = 0x2 - RTF_HOST = 0x4 - RTF_LLINFO = 0x400 -- RTF_MASK = 0x80 -+ RTF_LOCAL = 0x200000 - RTF_MODIFIED = 0x20 - RTF_MPATH = 0x40000 - RTF_MPLS = 0x100000 -+ RTF_MULTICAST = 0x200 - RTF_PERMANENT_ARP = 0x2000 - RTF_PROTO1 = 0x8000 - RTF_PROTO2 = 0x4000 - RTF_PROTO3 = 0x2000 - RTF_REJECT = 0x8 -- RTF_SOURCE = 0x20000 - RTF_STATIC = 0x800 -- RTF_TUNNEL = 0x100000 - RTF_UP = 0x1 - RTF_USETRAILERS = 0x8000 -- RTF_XRESOLVE = 0x200 -+ RTM_80211INFO = 0x15 - RTM_ADD = 0x1 -+ RTM_BFD = 0x12 - RTM_CHANGE = 0x3 -+ RTM_CHGADDRATTR = 0x14 - RTM_DELADDR = 0xd - RTM_DELETE = 0x2 - RTM_DESYNC = 0x10 - RTM_GET = 0x4 - RTM_IFANNOUNCE = 0xf - RTM_IFINFO = 0xe -- RTM_LOCK = 0x8 -+ RTM_INVALIDATE = 0x11 - RTM_LOSING = 0x5 - RTM_MAXSIZE = 0x800 - RTM_MISS = 0x7 - RTM_NEWADDR = 0xc -+ RTM_PROPOSAL = 0x13 - RTM_REDIRECT = 0x6 - RTM_RESOLVE = 0xb -- RTM_RTTUNIT = 0xf4240 -+ RTM_SOURCE = 0x16 - RTM_VERSION = 0x5 - RTV_EXPIRE = 0x4 - RTV_HOPCOUNT = 0x2 -@@ -1099,67 +1257,74 @@ const ( - RTV_RTTVAR = 0x80 - RTV_SPIPE = 0x10 - RTV_SSTHRESH = 0x20 -+ RT_TABLEID_BITS = 0x8 -+ RT_TABLEID_MASK = 0xff - RT_TABLEID_MAX = 0xff - RUSAGE_CHILDREN = -0x1 - RUSAGE_SELF = 0x0 - RUSAGE_THREAD = 0x1 - SCM_RIGHTS = 0x1 - SCM_TIMESTAMP = 0x4 -+ SEEK_CUR = 0x1 -+ SEEK_END = 0x2 -+ SEEK_SET = 0x0 - SHUT_RD = 0x0 - SHUT_RDWR = 0x2 - SHUT_WR = 0x1 - SIOCADDMULTI = 0x80206931 - SIOCAIFADDR = 0x8040691a - SIOCAIFGROUP = 0x80246987 -- SIOCALIFADDR = 0x8218691c - SIOCATMARK = 0x40047307 -- SIOCBRDGADD = 0x8054693c -- SIOCBRDGADDS = 0x80546941 -- SIOCBRDGARL = 0x806e694d -+ SIOCBRDGADD = 0x805c693c -+ SIOCBRDGADDL = 0x805c6949 -+ SIOCBRDGADDS = 0x805c6941 -+ SIOCBRDGARL = 0x808c694d - SIOCBRDGDADDR = 0x81286947 -- SIOCBRDGDEL = 0x8054693d -- SIOCBRDGDELS = 0x80546942 -- SIOCBRDGFLUSH = 0x80546948 -- SIOCBRDGFRL = 0x806e694e -+ SIOCBRDGDEL = 0x805c693d -+ SIOCBRDGDELS = 0x805c6942 -+ SIOCBRDGFLUSH = 0x805c6948 -+ SIOCBRDGFRL = 0x808c694e - SIOCBRDGGCACHE = 0xc0146941 - SIOCBRDGGFD = 0xc0146952 - SIOCBRDGGHT = 0xc0146951 -- SIOCBRDGGIFFLGS = 0xc054693e -+ SIOCBRDGGIFFLGS = 0xc05c693e - SIOCBRDGGMA = 0xc0146953 - SIOCBRDGGPARAM = 0xc03c6958 - SIOCBRDGGPRI = 0xc0146950 - SIOCBRDGGRL = 0xc028694f -- SIOCBRDGGSIFS = 0xc054693c - SIOCBRDGGTO = 0xc0146946 -- SIOCBRDGIFS = 0xc0546942 -+ SIOCBRDGIFS = 0xc05c6942 - SIOCBRDGRTS = 0xc0186943 - SIOCBRDGSADDR = 0xc1286944 - SIOCBRDGSCACHE = 0x80146940 - SIOCBRDGSFD = 0x80146952 - SIOCBRDGSHT = 0x80146951 -- SIOCBRDGSIFCOST = 0x80546955 -- SIOCBRDGSIFFLGS = 0x8054693f -- SIOCBRDGSIFPRIO = 0x80546954 -+ SIOCBRDGSIFCOST = 0x805c6955 -+ SIOCBRDGSIFFLGS = 0x805c693f -+ SIOCBRDGSIFPRIO = 0x805c6954 -+ SIOCBRDGSIFPROT = 0x805c694a - SIOCBRDGSMA = 0x80146953 - SIOCBRDGSPRI = 0x80146950 - SIOCBRDGSPROTO = 0x8014695a - SIOCBRDGSTO = 0x80146945 - SIOCBRDGSTXHC = 0x80146959 -+ SIOCDELLABEL = 0x80206997 - SIOCDELMULTI = 0x80206932 - SIOCDIFADDR = 0x80206919 - SIOCDIFGROUP = 0x80246989 -+ SIOCDIFPARENT = 0x802069b4 - SIOCDIFPHYADDR = 0x80206949 -- SIOCDLIFADDR = 0x8218691e -+ SIOCDPWE3NEIGHBOR = 0x802069de -+ SIOCDVNETID = 0x802069af - SIOCGETKALIVE = 0xc01869a4 - SIOCGETLABEL = 0x8020699a -+ SIOCGETMPWCFG = 0xc02069ae - SIOCGETPFLOW = 0xc02069fe - SIOCGETPFSYNC = 0xc02069f8 - SIOCGETSGCNT = 0xc0147534 - SIOCGETVIFCNT = 0xc0147533 - SIOCGETVLAN = 0xc0206990 -- SIOCGHIWAT = 0x40047301 - SIOCGIFADDR = 0xc0206921 -- SIOCGIFASYNCMAP = 0xc020697c - SIOCGIFBRDADDR = 0xc0206923 - SIOCGIFCONF = 0xc0086924 - SIOCGIFDATA = 0xc020691b -@@ -1168,40 +1333,53 @@ const ( - SIOCGIFFLAGS = 0xc0206911 - SIOCGIFGATTR = 0xc024698b - SIOCGIFGENERIC = 0xc020693a -+ SIOCGIFGLIST = 0xc024698d - SIOCGIFGMEMB = 0xc024698a - SIOCGIFGROUP = 0xc0246988 - SIOCGIFHARDMTU = 0xc02069a5 -- SIOCGIFMEDIA = 0xc0286936 -+ SIOCGIFLLPRIO = 0xc02069b6 -+ SIOCGIFMEDIA = 0xc0386938 - SIOCGIFMETRIC = 0xc0206917 - SIOCGIFMTU = 0xc020697e - SIOCGIFNETMASK = 0xc0206925 -- SIOCGIFPDSTADDR = 0xc0206948 -+ SIOCGIFPAIR = 0xc02069b1 -+ SIOCGIFPARENT = 0xc02069b3 - SIOCGIFPRIORITY = 0xc020699c -- SIOCGIFPSRCADDR = 0xc0206947 - SIOCGIFRDOMAIN = 0xc02069a0 - SIOCGIFRTLABEL = 0xc0206983 -- SIOCGIFTIMESLOT = 0xc0206986 -+ SIOCGIFRXR = 0x802069aa -+ SIOCGIFSFFPAGE = 0xc1126939 - SIOCGIFXFLAGS = 0xc020699e -- SIOCGLIFADDR = 0xc218691d - SIOCGLIFPHYADDR = 0xc218694b -+ SIOCGLIFPHYDF = 0xc02069c2 -+ SIOCGLIFPHYECN = 0xc02069c8 - SIOCGLIFPHYRTABLE = 0xc02069a2 - SIOCGLIFPHYTTL = 0xc02069a9 -- SIOCGLOWAT = 0x40047303 - SIOCGPGRP = 0x40047309 -+ SIOCGPWE3 = 0xc0206998 -+ SIOCGPWE3CTRLWORD = 0xc02069dc -+ SIOCGPWE3FAT = 0xc02069dd -+ SIOCGPWE3NEIGHBOR = 0xc21869de -+ SIOCGRXHPRIO = 0xc02069db - SIOCGSPPPPARAMS = 0xc0206994 -+ SIOCGTXHPRIO = 0xc02069c6 -+ SIOCGUMBINFO = 0xc02069be -+ SIOCGUMBPARAM = 0xc02069c0 - SIOCGVH = 0xc02069f6 -+ SIOCGVNETFLOWID = 0xc02069c4 - SIOCGVNETID = 0xc02069a7 -+ SIOCIFAFATTACH = 0x801169ab -+ SIOCIFAFDETACH = 0x801169ac - SIOCIFCREATE = 0x8020697a - SIOCIFDESTROY = 0x80206979 - SIOCIFGCLONERS = 0xc00c6978 - SIOCSETKALIVE = 0x801869a3 - SIOCSETLABEL = 0x80206999 -+ SIOCSETMPWCFG = 0x802069ad - SIOCSETPFLOW = 0x802069fd - SIOCSETPFSYNC = 0x802069f7 - SIOCSETVLAN = 0x8020698f -- SIOCSHIWAT = 0x80047300 - SIOCSIFADDR = 0x8020690c -- SIOCSIFASYNCMAP = 0x8020697d - SIOCSIFBRDADDR = 0x80206913 - SIOCSIFDESCR = 0x80206980 - SIOCSIFDSTADDR = 0x8020690e -@@ -1209,25 +1387,37 @@ const ( - SIOCSIFGATTR = 0x8024698c - SIOCSIFGENERIC = 0x80206939 - SIOCSIFLLADDR = 0x8020691f -- SIOCSIFMEDIA = 0xc0206935 -+ SIOCSIFLLPRIO = 0x802069b5 -+ SIOCSIFMEDIA = 0xc0206937 - SIOCSIFMETRIC = 0x80206918 - SIOCSIFMTU = 0x8020697f - SIOCSIFNETMASK = 0x80206916 -- SIOCSIFPHYADDR = 0x80406946 -+ SIOCSIFPAIR = 0x802069b0 -+ SIOCSIFPARENT = 0x802069b2 - SIOCSIFPRIORITY = 0x8020699b - SIOCSIFRDOMAIN = 0x8020699f - SIOCSIFRTLABEL = 0x80206982 -- SIOCSIFTIMESLOT = 0x80206985 - SIOCSIFXFLAGS = 0x8020699d - SIOCSLIFPHYADDR = 0x8218694a -+ SIOCSLIFPHYDF = 0x802069c1 -+ SIOCSLIFPHYECN = 0x802069c7 - SIOCSLIFPHYRTABLE = 0x802069a1 - SIOCSLIFPHYTTL = 0x802069a8 -- SIOCSLOWAT = 0x80047302 - SIOCSPGRP = 0x80047308 -+ SIOCSPWE3CTRLWORD = 0x802069dc -+ SIOCSPWE3FAT = 0x802069dd -+ SIOCSPWE3NEIGHBOR = 0x821869de -+ SIOCSRXHPRIO = 0x802069db - SIOCSSPPPPARAMS = 0x80206993 -+ SIOCSTXHPRIO = 0x802069c5 -+ SIOCSUMBPARAM = 0x802069bf - SIOCSVH = 0xc02069f5 -+ SIOCSVNETFLOWID = 0x802069c3 - SIOCSVNETID = 0x802069a6 -+ SOCK_CLOEXEC = 0x8000 - SOCK_DGRAM = 0x2 -+ SOCK_DNS = 0x1000 -+ SOCK_NONBLOCK = 0x4000 - SOCK_RAW = 0x3 - SOCK_RDM = 0x4 - SOCK_SEQPACKET = 0x5 -@@ -1238,6 +1428,7 @@ const ( - SO_BINDANY = 0x1000 - SO_BROADCAST = 0x20 - SO_DEBUG = 0x1 -+ SO_DOMAIN = 0x1024 - SO_DONTROUTE = 0x10 - SO_ERROR = 0x1007 - SO_KEEPALIVE = 0x8 -@@ -1245,6 +1436,7 @@ const ( - SO_NETPROC = 0x1020 - SO_OOBINLINE = 0x100 - SO_PEERCRED = 0x1022 -+ SO_PROTOCOL = 0x1025 - SO_RCVBUF = 0x1002 - SO_RCVLOWAT = 0x1004 - SO_RCVTIMEO = 0x1006 -@@ -1258,6 +1450,7 @@ const ( - SO_TIMESTAMP = 0x800 - SO_TYPE = 0x1008 - SO_USELOOPBACK = 0x40 -+ SO_ZEROIZE = 0x2000 - S_BLKSIZE = 0x200 - S_IEXEC = 0x40 - S_IFBLK = 0x6000 -@@ -1287,9 +1480,24 @@ const ( - S_IXOTH = 0x1 - S_IXUSR = 0x40 - TCIFLUSH = 0x1 -+ TCIOFF = 0x3 - TCIOFLUSH = 0x3 -+ TCION = 0x4 - TCOFLUSH = 0x2 -- TCP_MAXBURST = 0x4 -+ TCOOFF = 0x1 -+ TCOON = 0x2 -+ TCPOPT_EOL = 0x0 -+ TCPOPT_MAXSEG = 0x2 -+ TCPOPT_NOP = 0x1 -+ TCPOPT_SACK = 0x5 -+ TCPOPT_SACK_HDR = 0x1010500 -+ TCPOPT_SACK_PERMITTED = 0x4 -+ TCPOPT_SACK_PERMIT_HDR = 0x1010402 -+ TCPOPT_SIGNATURE = 0x13 -+ TCPOPT_TIMESTAMP = 0x8 -+ TCPOPT_TSTAMP_HDR = 0x101080a -+ TCPOPT_WINDOW = 0x3 -+ TCP_INFO = 0x9 - TCP_MAXSEG = 0x2 - TCP_MAXWIN = 0xffff - TCP_MAX_SACK = 0x3 -@@ -1298,11 +1506,15 @@ const ( - TCP_MSS = 0x200 - TCP_NODELAY = 0x1 - TCP_NOPUSH = 0x10 -- TCP_NSTATES = 0xb -+ TCP_SACKHOLE_LIMIT = 0x80 - TCP_SACK_ENABLE = 0x8 - TCSAFLUSH = 0x2 -+ TIMER_ABSTIME = 0x1 -+ TIMER_RELTIME = 0x0 - TIOCCBRK = 0x2000747a - TIOCCDTR = 0x20007478 -+ TIOCCHKVERAUTH = 0x2000741e -+ TIOCCLRVERAUTH = 0x2000741d - TIOCCONS = 0x80047462 - TIOCDRAIN = 0x2000745e - TIOCEXCL = 0x2000740d -@@ -1357,17 +1569,21 @@ const ( - TIOCSETAF = 0x802c7416 - TIOCSETAW = 0x802c7415 - TIOCSETD = 0x8004741b -+ TIOCSETVERAUTH = 0x8004741c - TIOCSFLAGS = 0x8004745c - TIOCSIG = 0x8004745f - TIOCSPGRP = 0x80047476 - TIOCSTART = 0x2000746e -- TIOCSTAT = 0x80047465 -- TIOCSTI = 0x80017472 -+ TIOCSTAT = 0x20007465 - TIOCSTOP = 0x2000746f - TIOCSTSTAMP = 0x8008745a - TIOCSWINSZ = 0x80087467 - TIOCUCNTL = 0x80047466 -+ TIOCUCNTL_CBRK = 0x7a -+ TIOCUCNTL_SBRK = 0x7b - TOSTOP = 0x400000 -+ UTIME_NOW = -0x2 -+ UTIME_OMIT = -0x1 - VDISCARD = 0xf - VDSUSP = 0xb - VEOF = 0x0 -@@ -1378,6 +1594,19 @@ const ( - VKILL = 0x5 - VLNEXT = 0xe - VMIN = 0x10 -+ VM_ANONMIN = 0x7 -+ VM_LOADAVG = 0x2 -+ VM_MALLOC_CONF = 0xc -+ VM_MAXID = 0xd -+ VM_MAXSLP = 0xa -+ VM_METER = 0x1 -+ VM_NKMEMPAGES = 0x6 -+ VM_PSSTRINGS = 0x3 -+ VM_SWAPENCRYPT = 0x5 -+ VM_USPACE = 0xb -+ VM_UVMEXP = 0x4 -+ VM_VNODEMIN = 0x9 -+ VM_VTEXTMIN = 0x8 - VQUIT = 0x9 - VREPRINT = 0x6 - VSTART = 0xc -@@ -1390,8 +1619,8 @@ const ( - WCONTINUED = 0x8 - WCOREFLAG = 0x80 - WNOHANG = 0x1 -- WSTOPPED = 0x7f - WUNTRACED = 0x2 -+ XCASE = 0x1000000 - ) - - // Errors -@@ -1405,6 +1634,7 @@ const ( - EALREADY = syscall.Errno(0x25) - EAUTH = syscall.Errno(0x50) - EBADF = syscall.Errno(0x9) -+ EBADMSG = syscall.Errno(0x5c) - EBADRPC = syscall.Errno(0x48) - EBUSY = syscall.Errno(0x10) - ECANCELED = syscall.Errno(0x58) -@@ -1431,7 +1661,7 @@ const ( - EIPSEC = syscall.Errno(0x52) - EISCONN = syscall.Errno(0x38) - EISDIR = syscall.Errno(0x15) -- ELAST = syscall.Errno(0x5b) -+ ELAST = syscall.Errno(0x5f) - ELOOP = syscall.Errno(0x3e) - EMEDIUMTYPE = syscall.Errno(0x56) - EMFILE = syscall.Errno(0x18) -@@ -1459,12 +1689,14 @@ const ( - ENOTCONN = syscall.Errno(0x39) - ENOTDIR = syscall.Errno(0x14) - ENOTEMPTY = syscall.Errno(0x42) -+ ENOTRECOVERABLE = syscall.Errno(0x5d) - ENOTSOCK = syscall.Errno(0x26) - ENOTSUP = syscall.Errno(0x5b) - ENOTTY = syscall.Errno(0x19) - ENXIO = syscall.Errno(0x6) - EOPNOTSUPP = syscall.Errno(0x2d) - EOVERFLOW = syscall.Errno(0x57) -+ EOWNERDEAD = syscall.Errno(0x5e) - EPERM = syscall.Errno(0x1) - EPFNOSUPPORT = syscall.Errno(0x2e) - EPIPE = syscall.Errno(0x20) -@@ -1472,6 +1704,7 @@ const ( - EPROCUNAVAIL = syscall.Errno(0x4c) - EPROGMISMATCH = syscall.Errno(0x4b) - EPROGUNAVAIL = syscall.Errno(0x4a) -+ EPROTO = syscall.Errno(0x5f) - EPROTONOSUPPORT = syscall.Errno(0x2b) - EPROTOTYPE = syscall.Errno(0x29) - ERANGE = syscall.Errno(0x22) -@@ -1568,7 +1801,7 @@ var errorList = [...]struct { - {32, "EPIPE", "broken pipe"}, - {33, "EDOM", "numerical argument out of domain"}, - {34, "ERANGE", "result too large"}, -- {35, "EWOULDBLOCK", "resource temporarily unavailable"}, -+ {35, "EAGAIN", "resource temporarily unavailable"}, - {36, "EINPROGRESS", "operation now in progress"}, - {37, "EALREADY", "operation already in progress"}, - {38, "ENOTSOCK", "socket operation on non-socket"}, -@@ -1624,7 +1857,11 @@ var errorList = [...]struct { - {88, "ECANCELED", "operation canceled"}, - {89, "EIDRM", "identifier removed"}, - {90, "ENOMSG", "no message of desired type"}, -- {91, "ELAST", "not supported"}, -+ {91, "ENOTSUP", "not supported"}, -+ {92, "EBADMSG", "bad message"}, -+ {93, "ENOTRECOVERABLE", "state not recoverable"}, -+ {94, "EOWNERDEAD", "previous owner died"}, -+ {95, "ELAST", "protocol error"}, - } - - // Signal table -@@ -1638,7 +1875,7 @@ var signalList = [...]struct { - {3, "SIGQUIT", "quit"}, - {4, "SIGILL", "illegal instruction"}, - {5, "SIGTRAP", "trace/BPT trap"}, -- {6, "SIGABRT", "abort trap"}, -+ {6, "SIGIOT", "abort trap"}, - {7, "SIGEMT", "EMT trap"}, - {8, "SIGFPE", "floating point exception"}, - {9, "SIGKILL", "killed"}, -@@ -1665,4 +1902,5 @@ var signalList = [...]struct { - {30, "SIGUSR1", "user defined signal 1"}, - {31, "SIGUSR2", "user defined signal 2"}, - {32, "SIGTHR", "thread AST"}, -+ {28672, "SIGSTKSZ", "unknown signal"}, - } -diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go -old mode 100644 -new mode 100755 -index 25cb609..6015fcb ---- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go -+++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go -@@ -109,6 +109,15 @@ const ( - BPF_DIRECTION_IN = 0x1 - BPF_DIRECTION_OUT = 0x2 - BPF_DIV = 0x30 -+ BPF_FILDROP_CAPTURE = 0x1 -+ BPF_FILDROP_DROP = 0x2 -+ BPF_FILDROP_PASS = 0x0 -+ BPF_F_DIR_IN = 0x10 -+ BPF_F_DIR_MASK = 0x30 -+ BPF_F_DIR_OUT = 0x20 -+ BPF_F_DIR_SHIFT = 0x4 -+ BPF_F_FLOWID = 0x8 -+ BPF_F_PRI_MASK = 0x7 - BPF_H = 0x8 - BPF_IMM = 0x0 - BPF_IND = 0x40 -@@ -137,6 +146,7 @@ const ( - BPF_OR = 0x40 - BPF_RELEASE = 0x30bb6 - BPF_RET = 0x6 -+ BPF_RND = 0xc0 - BPF_RSH = 0x70 - BPF_ST = 0x2 - BPF_STX = 0x3 -@@ -177,7 +187,65 @@ const ( - CTL_KERN = 0x1 - CTL_MAXNAME = 0xc - CTL_NET = 0x4 -+ DIOCADDQUEUE = 0xc110445d -+ DIOCADDRULE = 0xcd604404 -+ DIOCADDSTATE = 0xc1084425 -+ DIOCCHANGERULE = 0xcd60441a -+ DIOCCLRIFFLAG = 0xc028445a -+ DIOCCLRSRCNODES = 0x20004455 -+ DIOCCLRSTATES = 0xc0e04412 -+ DIOCCLRSTATUS = 0xc0284416 -+ DIOCGETLIMIT = 0xc0084427 -+ DIOCGETQSTATS = 0xc1204460 -+ DIOCGETQUEUE = 0xc110445f -+ DIOCGETQUEUES = 0xc110445e -+ DIOCGETRULE = 0xcd604407 -+ DIOCGETRULES = 0xcd604406 -+ DIOCGETRULESET = 0xc444443b -+ DIOCGETRULESETS = 0xc444443a -+ DIOCGETSRCNODES = 0xc0104454 -+ DIOCGETSTATE = 0xc1084413 -+ DIOCGETSTATES = 0xc0104419 -+ DIOCGETSTATUS = 0xc1e84415 -+ DIOCGETSYNFLWATS = 0xc0084463 -+ DIOCGETTIMEOUT = 0xc008441e -+ DIOCIGETIFACES = 0xc0284457 -+ DIOCKILLSRCNODES = 0xc080445b -+ DIOCKILLSTATES = 0xc0e04429 -+ DIOCNATLOOK = 0xc0504417 -+ DIOCOSFPADD = 0xc088444f - DIOCOSFPFLUSH = 0x2000444e -+ DIOCOSFPGET = 0xc0884450 -+ DIOCRADDADDRS = 0xc4504443 -+ DIOCRADDTABLES = 0xc450443d -+ DIOCRCLRADDRS = 0xc4504442 -+ DIOCRCLRASTATS = 0xc4504448 -+ DIOCRCLRTABLES = 0xc450443c -+ DIOCRCLRTSTATS = 0xc4504441 -+ DIOCRDELADDRS = 0xc4504444 -+ DIOCRDELTABLES = 0xc450443e -+ DIOCRGETADDRS = 0xc4504446 -+ DIOCRGETASTATS = 0xc4504447 -+ DIOCRGETTABLES = 0xc450443f -+ DIOCRGETTSTATS = 0xc4504440 -+ DIOCRINADEFINE = 0xc450444d -+ DIOCRSETADDRS = 0xc4504445 -+ DIOCRSETTFLAGS = 0xc450444a -+ DIOCRTSTADDRS = 0xc4504449 -+ DIOCSETDEBUG = 0xc0044418 -+ DIOCSETHOSTID = 0xc0044456 -+ DIOCSETIFFLAG = 0xc0284459 -+ DIOCSETLIMIT = 0xc0084428 -+ DIOCSETREASS = 0xc004445c -+ DIOCSETSTATUSIF = 0xc0284414 -+ DIOCSETSYNCOOKIES = 0xc0014462 -+ DIOCSETSYNFLWATS = 0xc0084461 -+ DIOCSETTIMEOUT = 0xc008441d -+ DIOCSTART = 0x20004401 -+ DIOCSTOP = 0x20004402 -+ DIOCXBEGIN = 0xc0104451 -+ DIOCXCOMMIT = 0xc0104452 -+ DIOCXROLLBACK = 0xc0104453 - DLT_ARCNET = 0x7 - DLT_ATM_RFC1483 = 0xb - DLT_AX25 = 0x3 -@@ -240,6 +308,8 @@ const ( - EMUL_ENABLED = 0x1 - EMUL_NATIVE = 0x2 - ENDRUNDISC = 0x9 -+ ETH64_8021_RSVD_MASK = 0xfffffffffff0 -+ ETH64_8021_RSVD_PREFIX = 0x180c2000000 - ETHERMIN = 0x2e - ETHERMTU = 0x5dc - ETHERTYPE_8023 = 0x4 -@@ -292,6 +362,7 @@ const ( - ETHERTYPE_DN = 0x6003 - ETHERTYPE_DOGFIGHT = 0x1989 - ETHERTYPE_DSMD = 0x8039 -+ ETHERTYPE_EAPOL = 0x888e - ETHERTYPE_ECMA = 0x803 - ETHERTYPE_ENCRYPT = 0x803d - ETHERTYPE_ES = 0x805d -@@ -323,6 +394,7 @@ const ( - ETHERTYPE_LLDP = 0x88cc - ETHERTYPE_LOGICRAFT = 0x8148 - ETHERTYPE_LOOPBACK = 0x9000 -+ ETHERTYPE_MACSEC = 0x88e5 - ETHERTYPE_MATRA = 0x807a - ETHERTYPE_MAX = 0xffff - ETHERTYPE_MERIT = 0x807c -@@ -351,15 +423,17 @@ const ( - ETHERTYPE_NCD = 0x8149 - ETHERTYPE_NESTAR = 0x8006 - ETHERTYPE_NETBEUI = 0x8191 -+ ETHERTYPE_NHRP = 0x2001 - ETHERTYPE_NOVELL = 0x8138 - ETHERTYPE_NS = 0x600 - ETHERTYPE_NSAT = 0x601 - ETHERTYPE_NSCOMPAT = 0x807 -+ ETHERTYPE_NSH = 0x984f - ETHERTYPE_NTRAILER = 0x10 - ETHERTYPE_OS9 = 0x7007 - ETHERTYPE_OS9NET = 0x7009 - ETHERTYPE_PACER = 0x80c6 -- ETHERTYPE_PAE = 0x888e -+ ETHERTYPE_PBB = 0x88e7 - ETHERTYPE_PCS = 0x4242 - ETHERTYPE_PLANNING = 0x8044 - ETHERTYPE_PPP = 0x880b -@@ -441,10 +515,11 @@ const ( - ETHER_VLAN_ENCAP_LEN = 0x4 - EVFILT_AIO = -0x3 - EVFILT_DEVICE = -0x8 -+ EVFILT_EXCEPT = -0x9 - EVFILT_PROC = -0x5 - EVFILT_READ = -0x1 - EVFILT_SIGNAL = -0x6 -- EVFILT_SYSCOUNT = 0x8 -+ EVFILT_SYSCOUNT = 0x9 - EVFILT_TIMER = -0x7 - EVFILT_VNODE = -0x4 - EVFILT_WRITE = -0x2 -@@ -466,7 +541,7 @@ const ( - EV_FLAG1 = 0x2000 - EV_ONESHOT = 0x10 - EV_RECEIPT = 0x40 -- EV_SYSFLAGS = 0xf000 -+ EV_SYSFLAGS = 0xf800 - EXTA = 0x4b00 - EXTB = 0x9600 - EXTPROC = 0x800 -@@ -732,6 +807,7 @@ const ( - IFT_VOICEOVERCABLE = 0xc6 - IFT_VOICEOVERFRAMERELAY = 0x99 - IFT_VOICEOVERIP = 0x68 -+ IFT_WIREGUARD = 0xfb - IFT_X213 = 0x5d - IFT_X25 = 0x5 - IFT_X25DDN = 0x4 -@@ -797,9 +873,11 @@ const ( - IPPROTO_RAW = 0xff - IPPROTO_ROUTING = 0x2b - IPPROTO_RSVP = 0x2e -+ IPPROTO_SCTP = 0x84 - IPPROTO_TCP = 0x6 - IPPROTO_TP = 0x1d - IPPROTO_UDP = 0x11 -+ IPPROTO_UDPLITE = 0x88 - IPV6_AUTH_LEVEL = 0x35 - IPV6_AUTOFLOWLABEL = 0x3b - IPV6_CHECKSUM = 0x1a -@@ -906,6 +984,9 @@ const ( - IP_TTL = 0x4 - ISIG = 0x80 - ISTRIP = 0x20 -+ ITIMER_PROF = 0x2 -+ ITIMER_REAL = 0x0 -+ ITIMER_VIRTUAL = 0x1 - IUCLC = 0x1000 - IXANY = 0x800 - IXOFF = 0x400 -@@ -970,12 +1051,26 @@ const ( - MNT_ROOTFS = 0x4000 - MNT_SOFTDEP = 0x4000000 - MNT_STALLED = 0x100000 -+ MNT_SWAPPABLE = 0x200000 - MNT_SYNCHRONOUS = 0x2 - MNT_UPDATE = 0x10000 - MNT_VISFLAGMASK = 0x400ffff - MNT_WAIT = 0x1 - MNT_WANTRDWR = 0x2000000 - MNT_WXALLOWED = 0x800 -+ MOUNT_AFS = "afs" -+ MOUNT_CD9660 = "cd9660" -+ MOUNT_EXT2FS = "ext2fs" -+ MOUNT_FFS = "ffs" -+ MOUNT_FUSEFS = "fuse" -+ MOUNT_MFS = "mfs" -+ MOUNT_MSDOS = "msdos" -+ MOUNT_NCPFS = "ncpfs" -+ MOUNT_NFS = "nfs" -+ MOUNT_NTFS = "ntfs" -+ MOUNT_TMPFS = "tmpfs" -+ MOUNT_UDF = "udf" -+ MOUNT_UFS = "ffs" - MSG_BCAST = 0x100 - MSG_CMSG_CLOEXEC = 0x800 - MSG_CTRUNC = 0x20 -@@ -988,6 +1083,7 @@ const ( - MSG_PEEK = 0x2 - MSG_TRUNC = 0x10 - MSG_WAITALL = 0x40 -+ MSG_WAITFORONE = 0x1000 - MS_ASYNC = 0x1 - MS_INVALIDATE = 0x4 - MS_SYNC = 0x2 -@@ -996,7 +1092,8 @@ const ( - NET_RT_FLAGS = 0x2 - NET_RT_IFLIST = 0x3 - NET_RT_IFNAMES = 0x6 -- NET_RT_MAXID = 0x7 -+ NET_RT_MAXID = 0x8 -+ NET_RT_SOURCE = 0x7 - NET_RT_STATS = 0x4 - NET_RT_TABLE = 0x5 - NFDBITS = 0x20 -@@ -1013,6 +1110,7 @@ const ( - NOTE_FORK = 0x40000000 - NOTE_LINK = 0x10 - NOTE_LOWAT = 0x1 -+ NOTE_OOB = 0x4 - NOTE_PCTRLMASK = 0xf0000000 - NOTE_PDATAMASK = 0xfffff - NOTE_RENAME = 0x20 -@@ -1130,9 +1228,11 @@ const ( - RTF_STATIC = 0x800 - RTF_UP = 0x1 - RTF_USETRAILERS = 0x8000 -+ RTM_80211INFO = 0x15 - RTM_ADD = 0x1 - RTM_BFD = 0x12 - RTM_CHANGE = 0x3 -+ RTM_CHGADDRATTR = 0x14 - RTM_DELADDR = 0xd - RTM_DELETE = 0x2 - RTM_DESYNC = 0x10 -@@ -1140,7 +1240,6 @@ const ( - RTM_IFANNOUNCE = 0xf - RTM_IFINFO = 0xe - RTM_INVALIDATE = 0x11 -- RTM_LOCK = 0x8 - RTM_LOSING = 0x5 - RTM_MAXSIZE = 0x800 - RTM_MISS = 0x7 -@@ -1148,7 +1247,7 @@ const ( - RTM_PROPOSAL = 0x13 - RTM_REDIRECT = 0x6 - RTM_RESOLVE = 0xb -- RTM_RTTUNIT = 0xf4240 -+ RTM_SOURCE = 0x16 - RTM_VERSION = 0x5 - RTV_EXPIRE = 0x4 - RTV_HOPCOUNT = 0x2 -@@ -1166,6 +1265,9 @@ const ( - RUSAGE_THREAD = 0x1 - SCM_RIGHTS = 0x1 - SCM_TIMESTAMP = 0x4 -+ SEEK_CUR = 0x1 -+ SEEK_END = 0x2 -+ SEEK_SET = 0x0 - SHUT_RD = 0x0 - SHUT_RDWR = 0x2 - SHUT_WR = 0x1 -@@ -1182,35 +1284,37 @@ const ( - SIOCBRDGDELS = 0x80606942 - SIOCBRDGFLUSH = 0x80606948 - SIOCBRDGFRL = 0x808c694e -- SIOCBRDGGCACHE = 0xc0186941 -- SIOCBRDGGFD = 0xc0186952 -- SIOCBRDGGHT = 0xc0186951 -+ SIOCBRDGGCACHE = 0xc0146941 -+ SIOCBRDGGFD = 0xc0146952 -+ SIOCBRDGGHT = 0xc0146951 - SIOCBRDGGIFFLGS = 0xc060693e -- SIOCBRDGGMA = 0xc0186953 -+ SIOCBRDGGMA = 0xc0146953 - SIOCBRDGGPARAM = 0xc0406958 -- SIOCBRDGGPRI = 0xc0186950 -+ SIOCBRDGGPRI = 0xc0146950 - SIOCBRDGGRL = 0xc030694f -- SIOCBRDGGTO = 0xc0186946 -+ SIOCBRDGGTO = 0xc0146946 - SIOCBRDGIFS = 0xc0606942 - SIOCBRDGRTS = 0xc0206943 - SIOCBRDGSADDR = 0xc1286944 -- SIOCBRDGSCACHE = 0x80186940 -- SIOCBRDGSFD = 0x80186952 -- SIOCBRDGSHT = 0x80186951 -+ SIOCBRDGSCACHE = 0x80146940 -+ SIOCBRDGSFD = 0x80146952 -+ SIOCBRDGSHT = 0x80146951 - SIOCBRDGSIFCOST = 0x80606955 - SIOCBRDGSIFFLGS = 0x8060693f - SIOCBRDGSIFPRIO = 0x80606954 - SIOCBRDGSIFPROT = 0x8060694a -- SIOCBRDGSMA = 0x80186953 -- SIOCBRDGSPRI = 0x80186950 -- SIOCBRDGSPROTO = 0x8018695a -- SIOCBRDGSTO = 0x80186945 -- SIOCBRDGSTXHC = 0x80186959 -+ SIOCBRDGSMA = 0x80146953 -+ SIOCBRDGSPRI = 0x80146950 -+ SIOCBRDGSPROTO = 0x8014695a -+ SIOCBRDGSTO = 0x80146945 -+ SIOCBRDGSTXHC = 0x80146959 -+ SIOCDELLABEL = 0x80206997 - SIOCDELMULTI = 0x80206932 - SIOCDIFADDR = 0x80206919 - SIOCDIFGROUP = 0x80286989 - SIOCDIFPARENT = 0x802069b4 - SIOCDIFPHYADDR = 0x80206949 -+ SIOCDPWE3NEIGHBOR = 0x802069de - SIOCDVNETID = 0x802069af - SIOCGETKALIVE = 0xc01869a4 - SIOCGETLABEL = 0x8020699a -@@ -1229,6 +1333,7 @@ const ( - SIOCGIFFLAGS = 0xc0206911 - SIOCGIFGATTR = 0xc028698b - SIOCGIFGENERIC = 0xc020693a -+ SIOCGIFGLIST = 0xc028698d - SIOCGIFGMEMB = 0xc028698a - SIOCGIFGROUP = 0xc0286988 - SIOCGIFHARDMTU = 0xc02069a5 -@@ -1243,13 +1348,21 @@ const ( - SIOCGIFRDOMAIN = 0xc02069a0 - SIOCGIFRTLABEL = 0xc0206983 - SIOCGIFRXR = 0x802069aa -+ SIOCGIFSFFPAGE = 0xc1126939 - SIOCGIFXFLAGS = 0xc020699e - SIOCGLIFPHYADDR = 0xc218694b - SIOCGLIFPHYDF = 0xc02069c2 -+ SIOCGLIFPHYECN = 0xc02069c8 - SIOCGLIFPHYRTABLE = 0xc02069a2 - SIOCGLIFPHYTTL = 0xc02069a9 - SIOCGPGRP = 0x40047309 -+ SIOCGPWE3 = 0xc0206998 -+ SIOCGPWE3CTRLWORD = 0xc02069dc -+ SIOCGPWE3FAT = 0xc02069dd -+ SIOCGPWE3NEIGHBOR = 0xc21869de -+ SIOCGRXHPRIO = 0xc02069db - SIOCGSPPPPARAMS = 0xc0206994 -+ SIOCGTXHPRIO = 0xc02069c6 - SIOCGUMBINFO = 0xc02069be - SIOCGUMBPARAM = 0xc02069c0 - SIOCGVH = 0xc02069f6 -@@ -1287,19 +1400,20 @@ const ( - SIOCSIFXFLAGS = 0x8020699d - SIOCSLIFPHYADDR = 0x8218694a - SIOCSLIFPHYDF = 0x802069c1 -+ SIOCSLIFPHYECN = 0x802069c7 - SIOCSLIFPHYRTABLE = 0x802069a1 - SIOCSLIFPHYTTL = 0x802069a8 - SIOCSPGRP = 0x80047308 -+ SIOCSPWE3CTRLWORD = 0x802069dc -+ SIOCSPWE3FAT = 0x802069dd -+ SIOCSPWE3NEIGHBOR = 0x821869de -+ SIOCSRXHPRIO = 0x802069db - SIOCSSPPPPARAMS = 0x80206993 -+ SIOCSTXHPRIO = 0x802069c5 - SIOCSUMBPARAM = 0x802069bf - SIOCSVH = 0xc02069f5 - SIOCSVNETFLOWID = 0x802069c3 - SIOCSVNETID = 0x802069a6 -- SIOCSWGDPID = 0xc018695b -- SIOCSWGMAXFLOW = 0xc0186960 -- SIOCSWGMAXGROUP = 0xc018695d -- SIOCSWSDPID = 0x8018695c -- SIOCSWSPORTNO = 0xc060695f - SOCK_CLOEXEC = 0x8000 - SOCK_DGRAM = 0x2 - SOCK_DNS = 0x1000 -@@ -1314,6 +1428,7 @@ const ( - SO_BINDANY = 0x1000 - SO_BROADCAST = 0x20 - SO_DEBUG = 0x1 -+ SO_DOMAIN = 0x1024 - SO_DONTROUTE = 0x10 - SO_ERROR = 0x1007 - SO_KEEPALIVE = 0x8 -@@ -1321,6 +1436,7 @@ const ( - SO_NETPROC = 0x1020 - SO_OOBINLINE = 0x100 - SO_PEERCRED = 0x1022 -+ SO_PROTOCOL = 0x1025 - SO_RCVBUF = 0x1002 - SO_RCVLOWAT = 0x1004 - SO_RCVTIMEO = 0x1006 -@@ -1370,7 +1486,18 @@ const ( - TCOFLUSH = 0x2 - TCOOFF = 0x1 - TCOON = 0x2 -- TCP_MAXBURST = 0x4 -+ TCPOPT_EOL = 0x0 -+ TCPOPT_MAXSEG = 0x2 -+ TCPOPT_NOP = 0x1 -+ TCPOPT_SACK = 0x5 -+ TCPOPT_SACK_HDR = 0x1010500 -+ TCPOPT_SACK_PERMITTED = 0x4 -+ TCPOPT_SACK_PERMIT_HDR = 0x1010402 -+ TCPOPT_SIGNATURE = 0x13 -+ TCPOPT_TIMESTAMP = 0x8 -+ TCPOPT_TSTAMP_HDR = 0x101080a -+ TCPOPT_WINDOW = 0x3 -+ TCP_INFO = 0x9 - TCP_MAXSEG = 0x2 - TCP_MAXWIN = 0xffff - TCP_MAX_SACK = 0x3 -@@ -1379,8 +1506,11 @@ const ( - TCP_MSS = 0x200 - TCP_NODELAY = 0x1 - TCP_NOPUSH = 0x10 -+ TCP_SACKHOLE_LIMIT = 0x80 - TCP_SACK_ENABLE = 0x8 - TCSAFLUSH = 0x2 -+ TIMER_ABSTIME = 0x1 -+ TIMER_RELTIME = 0x0 - TIOCCBRK = 0x2000747a - TIOCCDTR = 0x20007478 - TIOCCHKVERAUTH = 0x2000741e -@@ -1445,7 +1575,6 @@ const ( - TIOCSPGRP = 0x80047476 - TIOCSTART = 0x2000746e - TIOCSTAT = 0x20007465 -- TIOCSTI = 0x80017472 - TIOCSTOP = 0x2000746f - TIOCSTSTAMP = 0x8008745a - TIOCSWINSZ = 0x80087467 -@@ -1467,7 +1596,8 @@ const ( - VMIN = 0x10 - VM_ANONMIN = 0x7 - VM_LOADAVG = 0x2 -- VM_MAXID = 0xc -+ VM_MALLOC_CONF = 0xc -+ VM_MAXID = 0xd - VM_MAXSLP = 0xa - VM_METER = 0x1 - VM_NKMEMPAGES = 0x6 -@@ -1745,7 +1875,7 @@ var signalList = [...]struct { - {3, "SIGQUIT", "quit"}, - {4, "SIGILL", "illegal instruction"}, - {5, "SIGTRAP", "trace/BPT trap"}, -- {6, "SIGABRT", "abort trap"}, -+ {6, "SIGIOT", "abort trap"}, - {7, "SIGEMT", "EMT trap"}, - {8, "SIGFPE", "floating point exception"}, - {9, "SIGKILL", "killed"}, -@@ -1772,4 +1902,5 @@ var signalList = [...]struct { - {30, "SIGUSR1", "user defined signal 1"}, - {31, "SIGUSR2", "user defined signal 2"}, - {32, "SIGTHR", "thread AST"}, -+ {28672, "SIGSTKSZ", "unknown signal"}, - } -diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go -old mode 100644 -new mode 100755 -index aef6c08..8d44955 ---- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go -+++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go -@@ -46,6 +46,7 @@ const ( - AF_SNA = 0xb - AF_UNIX = 0x1 - AF_UNSPEC = 0x0 -+ ALTWERASE = 0x200 - ARPHRD_ETHER = 0x1 - ARPHRD_FRELAY = 0xf - ARPHRD_IEEE1394 = 0x18 -@@ -82,7 +83,7 @@ const ( - BIOCGFILDROP = 0x40044278 - BIOCGHDRCMPLT = 0x40044274 - BIOCGRSIG = 0x40044273 -- BIOCGRTIMEOUT = 0x400c426e -+ BIOCGRTIMEOUT = 0x4010426e - BIOCGSTATS = 0x4008426f - BIOCIMMEDIATE = 0x80044270 - BIOCLOCK = 0x20004276 -@@ -96,7 +97,7 @@ const ( - BIOCSFILDROP = 0x80044279 - BIOCSHDRCMPLT = 0x80044275 - BIOCSRSIG = 0x80044272 -- BIOCSRTIMEOUT = 0x800c426d -+ BIOCSRTIMEOUT = 0x8010426d - BIOCVERSION = 0x40044271 - BPF_A = 0x10 - BPF_ABS = 0x20 -@@ -108,6 +109,15 @@ const ( - BPF_DIRECTION_IN = 0x1 - BPF_DIRECTION_OUT = 0x2 - BPF_DIV = 0x30 -+ BPF_FILDROP_CAPTURE = 0x1 -+ BPF_FILDROP_DROP = 0x2 -+ BPF_FILDROP_PASS = 0x0 -+ BPF_F_DIR_IN = 0x10 -+ BPF_F_DIR_MASK = 0x30 -+ BPF_F_DIR_OUT = 0x20 -+ BPF_F_DIR_SHIFT = 0x4 -+ BPF_F_FLOWID = 0x8 -+ BPF_F_PRI_MASK = 0x7 - BPF_H = 0x8 - BPF_IMM = 0x0 - BPF_IND = 0x40 -@@ -136,6 +146,7 @@ const ( - BPF_OR = 0x40 - BPF_RELEASE = 0x30bb6 - BPF_RET = 0x6 -+ BPF_RND = 0xc0 - BPF_RSH = 0x70 - BPF_ST = 0x2 - BPF_STX = 0x3 -@@ -147,6 +158,12 @@ const ( - BRKINT = 0x2 - CFLUSH = 0xf - CLOCAL = 0x8000 -+ CLOCK_BOOTTIME = 0x6 -+ CLOCK_MONOTONIC = 0x3 -+ CLOCK_PROCESS_CPUTIME_ID = 0x2 -+ CLOCK_REALTIME = 0x0 -+ CLOCK_THREAD_CPUTIME_ID = 0x4 -+ CLOCK_UPTIME = 0x5 - CPUSTATES = 0x6 - CP_IDLE = 0x5 - CP_INTR = 0x4 -@@ -170,7 +187,65 @@ const ( - CTL_KERN = 0x1 - CTL_MAXNAME = 0xc - CTL_NET = 0x4 -+ DIOCADDQUEUE = 0xc100445d -+ DIOCADDRULE = 0xcce04404 -+ DIOCADDSTATE = 0xc1084425 -+ DIOCCHANGERULE = 0xcce0441a -+ DIOCCLRIFFLAG = 0xc024445a -+ DIOCCLRSRCNODES = 0x20004455 -+ DIOCCLRSTATES = 0xc0d04412 -+ DIOCCLRSTATUS = 0xc0244416 -+ DIOCGETLIMIT = 0xc0084427 -+ DIOCGETQSTATS = 0xc1084460 -+ DIOCGETQUEUE = 0xc100445f -+ DIOCGETQUEUES = 0xc100445e -+ DIOCGETRULE = 0xcce04407 -+ DIOCGETRULES = 0xcce04406 -+ DIOCGETRULESET = 0xc444443b -+ DIOCGETRULESETS = 0xc444443a -+ DIOCGETSRCNODES = 0xc0084454 -+ DIOCGETSTATE = 0xc1084413 -+ DIOCGETSTATES = 0xc0084419 -+ DIOCGETSTATUS = 0xc1e84415 -+ DIOCGETSYNFLWATS = 0xc0084463 -+ DIOCGETTIMEOUT = 0xc008441e -+ DIOCIGETIFACES = 0xc0244457 -+ DIOCKILLSRCNODES = 0xc068445b -+ DIOCKILLSTATES = 0xc0d04429 -+ DIOCNATLOOK = 0xc0504417 -+ DIOCOSFPADD = 0xc088444f - DIOCOSFPFLUSH = 0x2000444e -+ DIOCOSFPGET = 0xc0884450 -+ DIOCRADDADDRS = 0xc44c4443 -+ DIOCRADDTABLES = 0xc44c443d -+ DIOCRCLRADDRS = 0xc44c4442 -+ DIOCRCLRASTATS = 0xc44c4448 -+ DIOCRCLRTABLES = 0xc44c443c -+ DIOCRCLRTSTATS = 0xc44c4441 -+ DIOCRDELADDRS = 0xc44c4444 -+ DIOCRDELTABLES = 0xc44c443e -+ DIOCRGETADDRS = 0xc44c4446 -+ DIOCRGETASTATS = 0xc44c4447 -+ DIOCRGETTABLES = 0xc44c443f -+ DIOCRGETTSTATS = 0xc44c4440 -+ DIOCRINADEFINE = 0xc44c444d -+ DIOCRSETADDRS = 0xc44c4445 -+ DIOCRSETTFLAGS = 0xc44c444a -+ DIOCRTSTADDRS = 0xc44c4449 -+ DIOCSETDEBUG = 0xc0044418 -+ DIOCSETHOSTID = 0xc0044456 -+ DIOCSETIFFLAG = 0xc0244459 -+ DIOCSETLIMIT = 0xc0084428 -+ DIOCSETREASS = 0xc004445c -+ DIOCSETSTATUSIF = 0xc0244414 -+ DIOCSETSYNCOOKIES = 0xc0014462 -+ DIOCSETSYNFLWATS = 0xc0084461 -+ DIOCSETTIMEOUT = 0xc008441d -+ DIOCSTART = 0x20004401 -+ DIOCSTOP = 0x20004402 -+ DIOCXBEGIN = 0xc00c4451 -+ DIOCXCOMMIT = 0xc00c4452 -+ DIOCXROLLBACK = 0xc00c4453 - DLT_ARCNET = 0x7 - DLT_ATM_RFC1483 = 0xb - DLT_AX25 = 0x3 -@@ -186,6 +261,7 @@ const ( - DLT_LOOP = 0xc - DLT_MPLS = 0xdb - DLT_NULL = 0x0 -+ DLT_OPENFLOW = 0x10b - DLT_PFLOG = 0x75 - DLT_PFSYNC = 0x12 - DLT_PPP = 0x9 -@@ -196,6 +272,23 @@ const ( - DLT_RAW = 0xe - DLT_SLIP = 0x8 - DLT_SLIP_BSDOS = 0xf -+ DLT_USBPCAP = 0xf9 -+ DLT_USER0 = 0x93 -+ DLT_USER1 = 0x94 -+ DLT_USER10 = 0x9d -+ DLT_USER11 = 0x9e -+ DLT_USER12 = 0x9f -+ DLT_USER13 = 0xa0 -+ DLT_USER14 = 0xa1 -+ DLT_USER15 = 0xa2 -+ DLT_USER2 = 0x95 -+ DLT_USER3 = 0x96 -+ DLT_USER4 = 0x97 -+ DLT_USER5 = 0x98 -+ DLT_USER6 = 0x99 -+ DLT_USER7 = 0x9a -+ DLT_USER8 = 0x9b -+ DLT_USER9 = 0x9c - DT_BLK = 0x6 - DT_CHR = 0x2 - DT_DIR = 0x4 -@@ -215,6 +308,8 @@ const ( - EMUL_ENABLED = 0x1 - EMUL_NATIVE = 0x2 - ENDRUNDISC = 0x9 -+ ETH64_8021_RSVD_MASK = 0xfffffffffff0 -+ ETH64_8021_RSVD_PREFIX = 0x180c2000000 - ETHERMIN = 0x2e - ETHERMTU = 0x5dc - ETHERTYPE_8023 = 0x4 -@@ -267,6 +362,7 @@ const ( - ETHERTYPE_DN = 0x6003 - ETHERTYPE_DOGFIGHT = 0x1989 - ETHERTYPE_DSMD = 0x8039 -+ ETHERTYPE_EAPOL = 0x888e - ETHERTYPE_ECMA = 0x803 - ETHERTYPE_ENCRYPT = 0x803d - ETHERTYPE_ES = 0x805d -@@ -298,6 +394,7 @@ const ( - ETHERTYPE_LLDP = 0x88cc - ETHERTYPE_LOGICRAFT = 0x8148 - ETHERTYPE_LOOPBACK = 0x9000 -+ ETHERTYPE_MACSEC = 0x88e5 - ETHERTYPE_MATRA = 0x807a - ETHERTYPE_MAX = 0xffff - ETHERTYPE_MERIT = 0x807c -@@ -326,15 +423,17 @@ const ( - ETHERTYPE_NCD = 0x8149 - ETHERTYPE_NESTAR = 0x8006 - ETHERTYPE_NETBEUI = 0x8191 -+ ETHERTYPE_NHRP = 0x2001 - ETHERTYPE_NOVELL = 0x8138 - ETHERTYPE_NS = 0x600 - ETHERTYPE_NSAT = 0x601 - ETHERTYPE_NSCOMPAT = 0x807 -+ ETHERTYPE_NSH = 0x984f - ETHERTYPE_NTRAILER = 0x10 - ETHERTYPE_OS9 = 0x7007 - ETHERTYPE_OS9NET = 0x7009 - ETHERTYPE_PACER = 0x80c6 -- ETHERTYPE_PAE = 0x888e -+ ETHERTYPE_PBB = 0x88e7 - ETHERTYPE_PCS = 0x4242 - ETHERTYPE_PLANNING = 0x8044 - ETHERTYPE_PPP = 0x880b -@@ -409,28 +508,40 @@ const ( - ETHER_CRC_POLY_LE = 0xedb88320 - ETHER_HDR_LEN = 0xe - ETHER_MAX_DIX_LEN = 0x600 -+ ETHER_MAX_HARDMTU_LEN = 0xff9b - ETHER_MAX_LEN = 0x5ee - ETHER_MIN_LEN = 0x40 - ETHER_TYPE_LEN = 0x2 - ETHER_VLAN_ENCAP_LEN = 0x4 - EVFILT_AIO = -0x3 -+ EVFILT_DEVICE = -0x8 -+ EVFILT_EXCEPT = -0x9 - EVFILT_PROC = -0x5 - EVFILT_READ = -0x1 - EVFILT_SIGNAL = -0x6 -- EVFILT_SYSCOUNT = 0x7 -+ EVFILT_SYSCOUNT = 0x9 - EVFILT_TIMER = -0x7 - EVFILT_VNODE = -0x4 - EVFILT_WRITE = -0x2 -+ EVL_ENCAPLEN = 0x4 -+ EVL_PRIO_BITS = 0xd -+ EVL_PRIO_MAX = 0x7 -+ EVL_VLID_MASK = 0xfff -+ EVL_VLID_MAX = 0xffe -+ EVL_VLID_MIN = 0x1 -+ EVL_VLID_NULL = 0x0 - EV_ADD = 0x1 - EV_CLEAR = 0x20 - EV_DELETE = 0x2 - EV_DISABLE = 0x8 -+ EV_DISPATCH = 0x80 - EV_ENABLE = 0x4 - EV_EOF = 0x8000 - EV_ERROR = 0x4000 - EV_FLAG1 = 0x2000 - EV_ONESHOT = 0x10 -- EV_SYSFLAGS = 0xf000 -+ EV_RECEIPT = 0x40 -+ EV_SYSFLAGS = 0xf800 - EXTA = 0x4b00 - EXTB = 0x9600 - EXTPROC = 0x800 -@@ -443,6 +554,8 @@ const ( - F_GETFL = 0x3 - F_GETLK = 0x7 - F_GETOWN = 0x5 -+ F_ISATTY = 0xb -+ F_OK = 0x0 - F_RDLCK = 0x1 - F_SETFD = 0x2 - F_SETFL = 0x4 -@@ -459,7 +572,6 @@ const ( - IEXTEN = 0x400 - IFAN_ARRIVAL = 0x0 - IFAN_DEPARTURE = 0x1 -- IFA_ROUTE = 0x1 - IFF_ALLMULTI = 0x200 - IFF_BROADCAST = 0x2 - IFF_CANTCHANGE = 0x8e52 -@@ -470,12 +582,12 @@ const ( - IFF_LOOPBACK = 0x8 - IFF_MULTICAST = 0x8000 - IFF_NOARP = 0x80 -- IFF_NOTRAILERS = 0x20 - IFF_OACTIVE = 0x400 - IFF_POINTOPOINT = 0x10 - IFF_PROMISC = 0x100 - IFF_RUNNING = 0x40 - IFF_SIMPLEX = 0x800 -+ IFF_STATICARP = 0x20 - IFF_UP = 0x1 - IFNAMSIZ = 0x10 - IFT_1822 = 0x2 -@@ -604,6 +716,7 @@ const ( - IFT_LINEGROUP = 0xd2 - IFT_LOCALTALK = 0x2a - IFT_LOOP = 0x18 -+ IFT_MBIM = 0xfa - IFT_MEDIAMAILOVERIP = 0x8b - IFT_MFSIGLINK = 0xa7 - IFT_MIOX25 = 0x26 -@@ -694,6 +807,7 @@ const ( - IFT_VOICEOVERCABLE = 0xc6 - IFT_VOICEOVERFRAMERELAY = 0x99 - IFT_VOICEOVERIP = 0x68 -+ IFT_WIREGUARD = 0xfb - IFT_X213 = 0x5d - IFT_X25 = 0x5 - IFT_X25DDN = 0x4 -@@ -728,8 +842,6 @@ const ( - IPPROTO_AH = 0x33 - IPPROTO_CARP = 0x70 - IPPROTO_DIVERT = 0x102 -- IPPROTO_DIVERT_INIT = 0x2 -- IPPROTO_DIVERT_RESP = 0x1 - IPPROTO_DONE = 0x101 - IPPROTO_DSTOPTS = 0x3c - IPPROTO_EGP = 0x8 -@@ -761,9 +873,11 @@ const ( - IPPROTO_RAW = 0xff - IPPROTO_ROUTING = 0x2b - IPPROTO_RSVP = 0x2e -+ IPPROTO_SCTP = 0x84 - IPPROTO_TCP = 0x6 - IPPROTO_TP = 0x1d - IPPROTO_UDP = 0x11 -+ IPPROTO_UDPLITE = 0x88 - IPV6_AUTH_LEVEL = 0x35 - IPV6_AUTOFLOWLABEL = 0x3b - IPV6_CHECKSUM = 0x1a -@@ -786,6 +900,7 @@ const ( - IPV6_LEAVE_GROUP = 0xd - IPV6_MAXHLIM = 0xff - IPV6_MAXPACKET = 0xffff -+ IPV6_MINHOPCOUNT = 0x41 - IPV6_MMTU = 0x500 - IPV6_MULTICAST_HOPS = 0xa - IPV6_MULTICAST_IF = 0x9 -@@ -825,12 +940,12 @@ const ( - IP_DEFAULT_MULTICAST_LOOP = 0x1 - IP_DEFAULT_MULTICAST_TTL = 0x1 - IP_DF = 0x4000 -- IP_DIVERTFL = 0x1022 - IP_DROP_MEMBERSHIP = 0xd - IP_ESP_NETWORK_LEVEL = 0x16 - IP_ESP_TRANS_LEVEL = 0x15 - IP_HDRINCL = 0x2 - IP_IPCOMP_LEVEL = 0x1d -+ IP_IPDEFTTL = 0x25 - IP_IPSECFLOWINFO = 0x24 - IP_IPSEC_LOCAL_AUTH = 0x1b - IP_IPSEC_LOCAL_CRED = 0x19 -@@ -864,10 +979,15 @@ const ( - IP_RETOPTS = 0x8 - IP_RF = 0x8000 - IP_RTABLE = 0x1021 -+ IP_SENDSRCADDR = 0x7 - IP_TOS = 0x3 - IP_TTL = 0x4 - ISIG = 0x80 - ISTRIP = 0x20 -+ ITIMER_PROF = 0x2 -+ ITIMER_REAL = 0x0 -+ ITIMER_VIRTUAL = 0x1 -+ IUCLC = 0x1000 - IXANY = 0x800 - IXOFF = 0x400 - IXON = 0x200 -@@ -922,6 +1042,7 @@ const ( - MNT_NOATIME = 0x8000 - MNT_NODEV = 0x10 - MNT_NOEXEC = 0x4 -+ MNT_NOPERM = 0x20 - MNT_NOSUID = 0x8 - MNT_NOWAIT = 0x2 - MNT_QUOTA = 0x2000 -@@ -929,12 +1050,27 @@ const ( - MNT_RELOAD = 0x40000 - MNT_ROOTFS = 0x4000 - MNT_SOFTDEP = 0x4000000 -+ MNT_STALLED = 0x100000 -+ MNT_SWAPPABLE = 0x200000 - MNT_SYNCHRONOUS = 0x2 - MNT_UPDATE = 0x10000 - MNT_VISFLAGMASK = 0x400ffff - MNT_WAIT = 0x1 - MNT_WANTRDWR = 0x2000000 - MNT_WXALLOWED = 0x800 -+ MOUNT_AFS = "afs" -+ MOUNT_CD9660 = "cd9660" -+ MOUNT_EXT2FS = "ext2fs" -+ MOUNT_FFS = "ffs" -+ MOUNT_FUSEFS = "fuse" -+ MOUNT_MFS = "mfs" -+ MOUNT_MSDOS = "msdos" -+ MOUNT_NCPFS = "ncpfs" -+ MOUNT_NFS = "nfs" -+ MOUNT_NTFS = "ntfs" -+ MOUNT_TMPFS = "tmpfs" -+ MOUNT_UDF = "udf" -+ MOUNT_UFS = "ffs" - MSG_BCAST = 0x100 - MSG_CMSG_CLOEXEC = 0x800 - MSG_CTRUNC = 0x20 -@@ -947,6 +1083,7 @@ const ( - MSG_PEEK = 0x2 - MSG_TRUNC = 0x10 - MSG_WAITALL = 0x40 -+ MSG_WAITFORONE = 0x1000 - MS_ASYNC = 0x1 - MS_INVALIDATE = 0x4 - MS_SYNC = 0x2 -@@ -954,12 +1091,16 @@ const ( - NET_RT_DUMP = 0x1 - NET_RT_FLAGS = 0x2 - NET_RT_IFLIST = 0x3 -- NET_RT_MAXID = 0x6 -+ NET_RT_IFNAMES = 0x6 -+ NET_RT_MAXID = 0x8 -+ NET_RT_SOURCE = 0x7 - NET_RT_STATS = 0x4 - NET_RT_TABLE = 0x5 - NFDBITS = 0x20 - NOFLSH = 0x80000000 -+ NOKERNINFO = 0x2000000 - NOTE_ATTRIB = 0x8 -+ NOTE_CHANGE = 0x1 - NOTE_CHILD = 0x4 - NOTE_DELETE = 0x1 - NOTE_EOF = 0x2 -@@ -969,6 +1110,7 @@ const ( - NOTE_FORK = 0x40000000 - NOTE_LINK = 0x10 - NOTE_LOWAT = 0x1 -+ NOTE_OOB = 0x4 - NOTE_PCTRLMASK = 0xf0000000 - NOTE_PDATAMASK = 0xfffff - NOTE_RENAME = 0x20 -@@ -978,11 +1120,13 @@ const ( - NOTE_TRUNCATE = 0x80 - NOTE_WRITE = 0x2 - OCRNL = 0x10 -+ OLCUC = 0x20 - ONLCR = 0x2 - ONLRET = 0x80 - ONOCR = 0x40 - ONOEOT = 0x8 - OPOST = 0x1 -+ OXTABS = 0x4 - O_ACCMODE = 0x3 - O_APPEND = 0x8 - O_ASYNC = 0x40 -@@ -1027,19 +1171,25 @@ const ( - RLIMIT_STACK = 0x3 - RLIM_INFINITY = 0x7fffffffffffffff - RTAX_AUTHOR = 0x6 -+ RTAX_BFD = 0xb - RTAX_BRD = 0x7 -+ RTAX_DNS = 0xc - RTAX_DST = 0x0 - RTAX_GATEWAY = 0x1 - RTAX_GENMASK = 0x3 - RTAX_IFA = 0x5 - RTAX_IFP = 0x4 - RTAX_LABEL = 0xa -- RTAX_MAX = 0xb -+ RTAX_MAX = 0xf - RTAX_NETMASK = 0x2 -+ RTAX_SEARCH = 0xe - RTAX_SRC = 0x8 - RTAX_SRCMASK = 0x9 -+ RTAX_STATIC = 0xd - RTA_AUTHOR = 0x40 -+ RTA_BFD = 0x800 - RTA_BRD = 0x80 -+ RTA_DNS = 0x1000 - RTA_DST = 0x1 - RTA_GATEWAY = 0x2 - RTA_GENMASK = 0x8 -@@ -1047,24 +1197,29 @@ const ( - RTA_IFP = 0x10 - RTA_LABEL = 0x400 - RTA_NETMASK = 0x4 -+ RTA_SEARCH = 0x4000 - RTA_SRC = 0x100 - RTA_SRCMASK = 0x200 -+ RTA_STATIC = 0x2000 - RTF_ANNOUNCE = 0x4000 -+ RTF_BFD = 0x1000000 - RTF_BLACKHOLE = 0x1000 - RTF_BROADCAST = 0x400000 -+ RTF_CACHED = 0x20000 - RTF_CLONED = 0x10000 - RTF_CLONING = 0x100 -+ RTF_CONNECTED = 0x800000 - RTF_DONE = 0x40 - RTF_DYNAMIC = 0x10 -- RTF_FMASK = 0x70f808 -+ RTF_FMASK = 0x110fc08 - RTF_GATEWAY = 0x2 - RTF_HOST = 0x4 - RTF_LLINFO = 0x400 - RTF_LOCAL = 0x200000 -- RTF_MASK = 0x80 - RTF_MODIFIED = 0x20 - RTF_MPATH = 0x40000 - RTF_MPLS = 0x100000 -+ RTF_MULTICAST = 0x200 - RTF_PERMANENT_ARP = 0x2000 - RTF_PROTO1 = 0x8000 - RTF_PROTO2 = 0x4000 -@@ -1073,23 +1228,26 @@ const ( - RTF_STATIC = 0x800 - RTF_UP = 0x1 - RTF_USETRAILERS = 0x8000 -- RTF_XRESOLVE = 0x200 -+ RTM_80211INFO = 0x15 - RTM_ADD = 0x1 -+ RTM_BFD = 0x12 - RTM_CHANGE = 0x3 -+ RTM_CHGADDRATTR = 0x14 - RTM_DELADDR = 0xd - RTM_DELETE = 0x2 - RTM_DESYNC = 0x10 - RTM_GET = 0x4 - RTM_IFANNOUNCE = 0xf - RTM_IFINFO = 0xe -- RTM_LOCK = 0x8 -+ RTM_INVALIDATE = 0x11 - RTM_LOSING = 0x5 - RTM_MAXSIZE = 0x800 - RTM_MISS = 0x7 - RTM_NEWADDR = 0xc -+ RTM_PROPOSAL = 0x13 - RTM_REDIRECT = 0x6 - RTM_RESOLVE = 0xb -- RTM_RTTUNIT = 0xf4240 -+ RTM_SOURCE = 0x16 - RTM_VERSION = 0x5 - RTV_EXPIRE = 0x4 - RTV_HOPCOUNT = 0x2 -@@ -1099,67 +1257,74 @@ const ( - RTV_RTTVAR = 0x80 - RTV_SPIPE = 0x10 - RTV_SSTHRESH = 0x20 -+ RT_TABLEID_BITS = 0x8 -+ RT_TABLEID_MASK = 0xff - RT_TABLEID_MAX = 0xff - RUSAGE_CHILDREN = -0x1 - RUSAGE_SELF = 0x0 - RUSAGE_THREAD = 0x1 - SCM_RIGHTS = 0x1 - SCM_TIMESTAMP = 0x4 -+ SEEK_CUR = 0x1 -+ SEEK_END = 0x2 -+ SEEK_SET = 0x0 - SHUT_RD = 0x0 - SHUT_RDWR = 0x2 - SHUT_WR = 0x1 - SIOCADDMULTI = 0x80206931 - SIOCAIFADDR = 0x8040691a - SIOCAIFGROUP = 0x80246987 -- SIOCALIFADDR = 0x8218691c - SIOCATMARK = 0x40047307 -- SIOCBRDGADD = 0x8054693c -- SIOCBRDGADDS = 0x80546941 -- SIOCBRDGARL = 0x806e694d -+ SIOCBRDGADD = 0x8060693c -+ SIOCBRDGADDL = 0x80606949 -+ SIOCBRDGADDS = 0x80606941 -+ SIOCBRDGARL = 0x808c694d - SIOCBRDGDADDR = 0x81286947 -- SIOCBRDGDEL = 0x8054693d -- SIOCBRDGDELS = 0x80546942 -- SIOCBRDGFLUSH = 0x80546948 -- SIOCBRDGFRL = 0x806e694e -+ SIOCBRDGDEL = 0x8060693d -+ SIOCBRDGDELS = 0x80606942 -+ SIOCBRDGFLUSH = 0x80606948 -+ SIOCBRDGFRL = 0x808c694e - SIOCBRDGGCACHE = 0xc0146941 - SIOCBRDGGFD = 0xc0146952 - SIOCBRDGGHT = 0xc0146951 -- SIOCBRDGGIFFLGS = 0xc054693e -+ SIOCBRDGGIFFLGS = 0xc060693e - SIOCBRDGGMA = 0xc0146953 -- SIOCBRDGGPARAM = 0xc03c6958 -+ SIOCBRDGGPARAM = 0xc0406958 - SIOCBRDGGPRI = 0xc0146950 - SIOCBRDGGRL = 0xc028694f -- SIOCBRDGGSIFS = 0xc054693c - SIOCBRDGGTO = 0xc0146946 -- SIOCBRDGIFS = 0xc0546942 -+ SIOCBRDGIFS = 0xc0606942 - SIOCBRDGRTS = 0xc0186943 - SIOCBRDGSADDR = 0xc1286944 - SIOCBRDGSCACHE = 0x80146940 - SIOCBRDGSFD = 0x80146952 - SIOCBRDGSHT = 0x80146951 -- SIOCBRDGSIFCOST = 0x80546955 -- SIOCBRDGSIFFLGS = 0x8054693f -- SIOCBRDGSIFPRIO = 0x80546954 -+ SIOCBRDGSIFCOST = 0x80606955 -+ SIOCBRDGSIFFLGS = 0x8060693f -+ SIOCBRDGSIFPRIO = 0x80606954 -+ SIOCBRDGSIFPROT = 0x8060694a - SIOCBRDGSMA = 0x80146953 - SIOCBRDGSPRI = 0x80146950 - SIOCBRDGSPROTO = 0x8014695a - SIOCBRDGSTO = 0x80146945 - SIOCBRDGSTXHC = 0x80146959 -+ SIOCDELLABEL = 0x80206997 - SIOCDELMULTI = 0x80206932 - SIOCDIFADDR = 0x80206919 - SIOCDIFGROUP = 0x80246989 -+ SIOCDIFPARENT = 0x802069b4 - SIOCDIFPHYADDR = 0x80206949 -- SIOCDLIFADDR = 0x8218691e -+ SIOCDPWE3NEIGHBOR = 0x802069de -+ SIOCDVNETID = 0x802069af - SIOCGETKALIVE = 0xc01869a4 - SIOCGETLABEL = 0x8020699a -+ SIOCGETMPWCFG = 0xc02069ae - SIOCGETPFLOW = 0xc02069fe - SIOCGETPFSYNC = 0xc02069f8 - SIOCGETSGCNT = 0xc0147534 - SIOCGETVIFCNT = 0xc0147533 - SIOCGETVLAN = 0xc0206990 -- SIOCGHIWAT = 0x40047301 - SIOCGIFADDR = 0xc0206921 -- SIOCGIFASYNCMAP = 0xc020697c - SIOCGIFBRDADDR = 0xc0206923 - SIOCGIFCONF = 0xc0086924 - SIOCGIFDATA = 0xc020691b -@@ -1168,41 +1333,53 @@ const ( - SIOCGIFFLAGS = 0xc0206911 - SIOCGIFGATTR = 0xc024698b - SIOCGIFGENERIC = 0xc020693a -+ SIOCGIFGLIST = 0xc024698d - SIOCGIFGMEMB = 0xc024698a - SIOCGIFGROUP = 0xc0246988 - SIOCGIFHARDMTU = 0xc02069a5 -- SIOCGIFMEDIA = 0xc0286936 -+ SIOCGIFLLPRIO = 0xc02069b6 -+ SIOCGIFMEDIA = 0xc0386938 - SIOCGIFMETRIC = 0xc0206917 - SIOCGIFMTU = 0xc020697e - SIOCGIFNETMASK = 0xc0206925 -- SIOCGIFPDSTADDR = 0xc0206948 -+ SIOCGIFPAIR = 0xc02069b1 -+ SIOCGIFPARENT = 0xc02069b3 - SIOCGIFPRIORITY = 0xc020699c -- SIOCGIFPSRCADDR = 0xc0206947 - SIOCGIFRDOMAIN = 0xc02069a0 - SIOCGIFRTLABEL = 0xc0206983 - SIOCGIFRXR = 0x802069aa -- SIOCGIFTIMESLOT = 0xc0206986 -+ SIOCGIFSFFPAGE = 0xc1126939 - SIOCGIFXFLAGS = 0xc020699e -- SIOCGLIFADDR = 0xc218691d - SIOCGLIFPHYADDR = 0xc218694b -+ SIOCGLIFPHYDF = 0xc02069c2 -+ SIOCGLIFPHYECN = 0xc02069c8 - SIOCGLIFPHYRTABLE = 0xc02069a2 - SIOCGLIFPHYTTL = 0xc02069a9 -- SIOCGLOWAT = 0x40047303 - SIOCGPGRP = 0x40047309 -+ SIOCGPWE3 = 0xc0206998 -+ SIOCGPWE3CTRLWORD = 0xc02069dc -+ SIOCGPWE3FAT = 0xc02069dd -+ SIOCGPWE3NEIGHBOR = 0xc21869de -+ SIOCGRXHPRIO = 0xc02069db - SIOCGSPPPPARAMS = 0xc0206994 -+ SIOCGTXHPRIO = 0xc02069c6 -+ SIOCGUMBINFO = 0xc02069be -+ SIOCGUMBPARAM = 0xc02069c0 - SIOCGVH = 0xc02069f6 -+ SIOCGVNETFLOWID = 0xc02069c4 - SIOCGVNETID = 0xc02069a7 -+ SIOCIFAFATTACH = 0x801169ab -+ SIOCIFAFDETACH = 0x801169ac - SIOCIFCREATE = 0x8020697a - SIOCIFDESTROY = 0x80206979 - SIOCIFGCLONERS = 0xc00c6978 - SIOCSETKALIVE = 0x801869a3 - SIOCSETLABEL = 0x80206999 -+ SIOCSETMPWCFG = 0x802069ad - SIOCSETPFLOW = 0x802069fd - SIOCSETPFSYNC = 0x802069f7 - SIOCSETVLAN = 0x8020698f -- SIOCSHIWAT = 0x80047300 - SIOCSIFADDR = 0x8020690c -- SIOCSIFASYNCMAP = 0x8020697d - SIOCSIFBRDADDR = 0x80206913 - SIOCSIFDESCR = 0x80206980 - SIOCSIFDSTADDR = 0x8020690e -@@ -1210,26 +1387,36 @@ const ( - SIOCSIFGATTR = 0x8024698c - SIOCSIFGENERIC = 0x80206939 - SIOCSIFLLADDR = 0x8020691f -- SIOCSIFMEDIA = 0xc0206935 -+ SIOCSIFLLPRIO = 0x802069b5 -+ SIOCSIFMEDIA = 0xc0206937 - SIOCSIFMETRIC = 0x80206918 - SIOCSIFMTU = 0x8020697f - SIOCSIFNETMASK = 0x80206916 -- SIOCSIFPHYADDR = 0x80406946 -+ SIOCSIFPAIR = 0x802069b0 -+ SIOCSIFPARENT = 0x802069b2 - SIOCSIFPRIORITY = 0x8020699b - SIOCSIFRDOMAIN = 0x8020699f - SIOCSIFRTLABEL = 0x80206982 -- SIOCSIFTIMESLOT = 0x80206985 - SIOCSIFXFLAGS = 0x8020699d - SIOCSLIFPHYADDR = 0x8218694a -+ SIOCSLIFPHYDF = 0x802069c1 -+ SIOCSLIFPHYECN = 0x802069c7 - SIOCSLIFPHYRTABLE = 0x802069a1 - SIOCSLIFPHYTTL = 0x802069a8 -- SIOCSLOWAT = 0x80047302 - SIOCSPGRP = 0x80047308 -+ SIOCSPWE3CTRLWORD = 0x802069dc -+ SIOCSPWE3FAT = 0x802069dd -+ SIOCSPWE3NEIGHBOR = 0x821869de -+ SIOCSRXHPRIO = 0x802069db - SIOCSSPPPPARAMS = 0x80206993 -+ SIOCSTXHPRIO = 0x802069c5 -+ SIOCSUMBPARAM = 0x802069bf - SIOCSVH = 0xc02069f5 -+ SIOCSVNETFLOWID = 0x802069c3 - SIOCSVNETID = 0x802069a6 - SOCK_CLOEXEC = 0x8000 - SOCK_DGRAM = 0x2 -+ SOCK_DNS = 0x1000 - SOCK_NONBLOCK = 0x4000 - SOCK_RAW = 0x3 - SOCK_RDM = 0x4 -@@ -1241,6 +1428,7 @@ const ( - SO_BINDANY = 0x1000 - SO_BROADCAST = 0x20 - SO_DEBUG = 0x1 -+ SO_DOMAIN = 0x1024 - SO_DONTROUTE = 0x10 - SO_ERROR = 0x1007 - SO_KEEPALIVE = 0x8 -@@ -1248,6 +1436,7 @@ const ( - SO_NETPROC = 0x1020 - SO_OOBINLINE = 0x100 - SO_PEERCRED = 0x1022 -+ SO_PROTOCOL = 0x1025 - SO_RCVBUF = 0x1002 - SO_RCVLOWAT = 0x1004 - SO_RCVTIMEO = 0x1006 -@@ -1261,6 +1450,7 @@ const ( - SO_TIMESTAMP = 0x800 - SO_TYPE = 0x1008 - SO_USELOOPBACK = 0x40 -+ SO_ZEROIZE = 0x2000 - S_BLKSIZE = 0x200 - S_IEXEC = 0x40 - S_IFBLK = 0x6000 -@@ -1290,9 +1480,24 @@ const ( - S_IXOTH = 0x1 - S_IXUSR = 0x40 - TCIFLUSH = 0x1 -+ TCIOFF = 0x3 - TCIOFLUSH = 0x3 -+ TCION = 0x4 - TCOFLUSH = 0x2 -- TCP_MAXBURST = 0x4 -+ TCOOFF = 0x1 -+ TCOON = 0x2 -+ TCPOPT_EOL = 0x0 -+ TCPOPT_MAXSEG = 0x2 -+ TCPOPT_NOP = 0x1 -+ TCPOPT_SACK = 0x5 -+ TCPOPT_SACK_HDR = 0x1010500 -+ TCPOPT_SACK_PERMITTED = 0x4 -+ TCPOPT_SACK_PERMIT_HDR = 0x1010402 -+ TCPOPT_SIGNATURE = 0x13 -+ TCPOPT_TIMESTAMP = 0x8 -+ TCPOPT_TSTAMP_HDR = 0x101080a -+ TCPOPT_WINDOW = 0x3 -+ TCP_INFO = 0x9 - TCP_MAXSEG = 0x2 - TCP_MAXWIN = 0xffff - TCP_MAX_SACK = 0x3 -@@ -1301,11 +1506,15 @@ const ( - TCP_MSS = 0x200 - TCP_NODELAY = 0x1 - TCP_NOPUSH = 0x10 -- TCP_NSTATES = 0xb -+ TCP_SACKHOLE_LIMIT = 0x80 - TCP_SACK_ENABLE = 0x8 - TCSAFLUSH = 0x2 -+ TIMER_ABSTIME = 0x1 -+ TIMER_RELTIME = 0x0 - TIOCCBRK = 0x2000747a - TIOCCDTR = 0x20007478 -+ TIOCCHKVERAUTH = 0x2000741e -+ TIOCCLRVERAUTH = 0x2000741d - TIOCCONS = 0x80047462 - TIOCDRAIN = 0x2000745e - TIOCEXCL = 0x2000740d -@@ -1321,7 +1530,7 @@ const ( - TIOCGFLAGS = 0x4004745d - TIOCGPGRP = 0x40047477 - TIOCGSID = 0x40047463 -- TIOCGTSTAMP = 0x400c745b -+ TIOCGTSTAMP = 0x4010745b - TIOCGWINSZ = 0x40087468 - TIOCMBIC = 0x8004746b - TIOCMBIS = 0x8004746c -@@ -1360,17 +1569,21 @@ const ( - TIOCSETAF = 0x802c7416 - TIOCSETAW = 0x802c7415 - TIOCSETD = 0x8004741b -+ TIOCSETVERAUTH = 0x8004741c - TIOCSFLAGS = 0x8004745c - TIOCSIG = 0x8004745f - TIOCSPGRP = 0x80047476 - TIOCSTART = 0x2000746e -- TIOCSTAT = 0x80047465 -- TIOCSTI = 0x80017472 -+ TIOCSTAT = 0x20007465 - TIOCSTOP = 0x2000746f - TIOCSTSTAMP = 0x8008745a - TIOCSWINSZ = 0x80087467 - TIOCUCNTL = 0x80047466 -+ TIOCUCNTL_CBRK = 0x7a -+ TIOCUCNTL_SBRK = 0x7b - TOSTOP = 0x400000 -+ UTIME_NOW = -0x2 -+ UTIME_OMIT = -0x1 - VDISCARD = 0xf - VDSUSP = 0xb - VEOF = 0x0 -@@ -1381,6 +1594,19 @@ const ( - VKILL = 0x5 - VLNEXT = 0xe - VMIN = 0x10 -+ VM_ANONMIN = 0x7 -+ VM_LOADAVG = 0x2 -+ VM_MALLOC_CONF = 0xc -+ VM_MAXID = 0xd -+ VM_MAXSLP = 0xa -+ VM_METER = 0x1 -+ VM_NKMEMPAGES = 0x6 -+ VM_PSSTRINGS = 0x3 -+ VM_SWAPENCRYPT = 0x5 -+ VM_USPACE = 0xb -+ VM_UVMEXP = 0x4 -+ VM_VNODEMIN = 0x9 -+ VM_VTEXTMIN = 0x8 - VQUIT = 0x9 - VREPRINT = 0x6 - VSTART = 0xc -@@ -1394,6 +1620,7 @@ const ( - WCOREFLAG = 0x80 - WNOHANG = 0x1 - WUNTRACED = 0x2 -+ XCASE = 0x1000000 - ) - - // Errors -@@ -1407,6 +1634,7 @@ const ( - EALREADY = syscall.Errno(0x25) - EAUTH = syscall.Errno(0x50) - EBADF = syscall.Errno(0x9) -+ EBADMSG = syscall.Errno(0x5c) - EBADRPC = syscall.Errno(0x48) - EBUSY = syscall.Errno(0x10) - ECANCELED = syscall.Errno(0x58) -@@ -1433,7 +1661,7 @@ const ( - EIPSEC = syscall.Errno(0x52) - EISCONN = syscall.Errno(0x38) - EISDIR = syscall.Errno(0x15) -- ELAST = syscall.Errno(0x5b) -+ ELAST = syscall.Errno(0x5f) - ELOOP = syscall.Errno(0x3e) - EMEDIUMTYPE = syscall.Errno(0x56) - EMFILE = syscall.Errno(0x18) -@@ -1461,12 +1689,14 @@ const ( - ENOTCONN = syscall.Errno(0x39) - ENOTDIR = syscall.Errno(0x14) - ENOTEMPTY = syscall.Errno(0x42) -+ ENOTRECOVERABLE = syscall.Errno(0x5d) - ENOTSOCK = syscall.Errno(0x26) - ENOTSUP = syscall.Errno(0x5b) - ENOTTY = syscall.Errno(0x19) - ENXIO = syscall.Errno(0x6) - EOPNOTSUPP = syscall.Errno(0x2d) - EOVERFLOW = syscall.Errno(0x57) -+ EOWNERDEAD = syscall.Errno(0x5e) - EPERM = syscall.Errno(0x1) - EPFNOSUPPORT = syscall.Errno(0x2e) - EPIPE = syscall.Errno(0x20) -@@ -1474,6 +1704,7 @@ const ( - EPROCUNAVAIL = syscall.Errno(0x4c) - EPROGMISMATCH = syscall.Errno(0x4b) - EPROGUNAVAIL = syscall.Errno(0x4a) -+ EPROTO = syscall.Errno(0x5f) - EPROTONOSUPPORT = syscall.Errno(0x2b) - EPROTOTYPE = syscall.Errno(0x29) - ERANGE = syscall.Errno(0x22) -@@ -1570,7 +1801,7 @@ var errorList = [...]struct { - {32, "EPIPE", "broken pipe"}, - {33, "EDOM", "numerical argument out of domain"}, - {34, "ERANGE", "result too large"}, -- {35, "EWOULDBLOCK", "resource temporarily unavailable"}, -+ {35, "EAGAIN", "resource temporarily unavailable"}, - {36, "EINPROGRESS", "operation now in progress"}, - {37, "EALREADY", "operation already in progress"}, - {38, "ENOTSOCK", "socket operation on non-socket"}, -@@ -1626,7 +1857,11 @@ var errorList = [...]struct { - {88, "ECANCELED", "operation canceled"}, - {89, "EIDRM", "identifier removed"}, - {90, "ENOMSG", "no message of desired type"}, -- {91, "ELAST", "not supported"}, -+ {91, "ENOTSUP", "not supported"}, -+ {92, "EBADMSG", "bad message"}, -+ {93, "ENOTRECOVERABLE", "state not recoverable"}, -+ {94, "EOWNERDEAD", "previous owner died"}, -+ {95, "ELAST", "protocol error"}, - } - - // Signal table -@@ -1640,7 +1875,7 @@ var signalList = [...]struct { - {3, "SIGQUIT", "quit"}, - {4, "SIGILL", "illegal instruction"}, - {5, "SIGTRAP", "trace/BPT trap"}, -- {6, "SIGABRT", "abort trap"}, -+ {6, "SIGIOT", "abort trap"}, - {7, "SIGEMT", "EMT trap"}, - {8, "SIGFPE", "floating point exception"}, - {9, "SIGKILL", "killed"}, -@@ -1667,4 +1902,5 @@ var signalList = [...]struct { - {30, "SIGUSR1", "user defined signal 1"}, - {31, "SIGUSR2", "user defined signal 2"}, - {32, "SIGTHR", "thread AST"}, -+ {28672, "SIGSTKSZ", "unknown signal"}, - } -diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go -old mode 100644 -new mode 100755 -index 90de7df..ae16fe7 ---- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go -+++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go -@@ -112,6 +112,12 @@ const ( - BPF_FILDROP_CAPTURE = 0x1 - BPF_FILDROP_DROP = 0x2 - BPF_FILDROP_PASS = 0x0 -+ BPF_F_DIR_IN = 0x10 -+ BPF_F_DIR_MASK = 0x30 -+ BPF_F_DIR_OUT = 0x20 -+ BPF_F_DIR_SHIFT = 0x4 -+ BPF_F_FLOWID = 0x8 -+ BPF_F_PRI_MASK = 0x7 - BPF_H = 0x8 - BPF_IMM = 0x0 - BPF_IND = 0x40 -@@ -140,6 +146,7 @@ const ( - BPF_OR = 0x40 - BPF_RELEASE = 0x30bb6 - BPF_RET = 0x6 -+ BPF_RND = 0xc0 - BPF_RSH = 0x70 - BPF_ST = 0x2 - BPF_STX = 0x3 -@@ -180,7 +187,65 @@ const ( - CTL_KERN = 0x1 - CTL_MAXNAME = 0xc - CTL_NET = 0x4 -+ DIOCADDQUEUE = 0xc110445d -+ DIOCADDRULE = 0xcd604404 -+ DIOCADDSTATE = 0xc1084425 -+ DIOCCHANGERULE = 0xcd60441a -+ DIOCCLRIFFLAG = 0xc028445a -+ DIOCCLRSRCNODES = 0x20004455 -+ DIOCCLRSTATES = 0xc0e04412 -+ DIOCCLRSTATUS = 0xc0284416 -+ DIOCGETLIMIT = 0xc0084427 -+ DIOCGETQSTATS = 0xc1204460 -+ DIOCGETQUEUE = 0xc110445f -+ DIOCGETQUEUES = 0xc110445e -+ DIOCGETRULE = 0xcd604407 -+ DIOCGETRULES = 0xcd604406 -+ DIOCGETRULESET = 0xc444443b -+ DIOCGETRULESETS = 0xc444443a -+ DIOCGETSRCNODES = 0xc0104454 -+ DIOCGETSTATE = 0xc1084413 -+ DIOCGETSTATES = 0xc0104419 -+ DIOCGETSTATUS = 0xc1e84415 -+ DIOCGETSYNFLWATS = 0xc0084463 -+ DIOCGETTIMEOUT = 0xc008441e -+ DIOCIGETIFACES = 0xc0284457 -+ DIOCKILLSRCNODES = 0xc080445b -+ DIOCKILLSTATES = 0xc0e04429 -+ DIOCNATLOOK = 0xc0504417 -+ DIOCOSFPADD = 0xc088444f - DIOCOSFPFLUSH = 0x2000444e -+ DIOCOSFPGET = 0xc0884450 -+ DIOCRADDADDRS = 0xc4504443 -+ DIOCRADDTABLES = 0xc450443d -+ DIOCRCLRADDRS = 0xc4504442 -+ DIOCRCLRASTATS = 0xc4504448 -+ DIOCRCLRTABLES = 0xc450443c -+ DIOCRCLRTSTATS = 0xc4504441 -+ DIOCRDELADDRS = 0xc4504444 -+ DIOCRDELTABLES = 0xc450443e -+ DIOCRGETADDRS = 0xc4504446 -+ DIOCRGETASTATS = 0xc4504447 -+ DIOCRGETTABLES = 0xc450443f -+ DIOCRGETTSTATS = 0xc4504440 -+ DIOCRINADEFINE = 0xc450444d -+ DIOCRSETADDRS = 0xc4504445 -+ DIOCRSETTFLAGS = 0xc450444a -+ DIOCRTSTADDRS = 0xc4504449 -+ DIOCSETDEBUG = 0xc0044418 -+ DIOCSETHOSTID = 0xc0044456 -+ DIOCSETIFFLAG = 0xc0284459 -+ DIOCSETLIMIT = 0xc0084428 -+ DIOCSETREASS = 0xc004445c -+ DIOCSETSTATUSIF = 0xc0284414 -+ DIOCSETSYNCOOKIES = 0xc0014462 -+ DIOCSETSYNFLWATS = 0xc0084461 -+ DIOCSETTIMEOUT = 0xc008441d -+ DIOCSTART = 0x20004401 -+ DIOCSTOP = 0x20004402 -+ DIOCXBEGIN = 0xc0104451 -+ DIOCXCOMMIT = 0xc0104452 -+ DIOCXROLLBACK = 0xc0104453 - DLT_ARCNET = 0x7 - DLT_ATM_RFC1483 = 0xb - DLT_AX25 = 0x3 -@@ -243,6 +308,8 @@ const ( - EMUL_ENABLED = 0x1 - EMUL_NATIVE = 0x2 - ENDRUNDISC = 0x9 -+ ETH64_8021_RSVD_MASK = 0xfffffffffff0 -+ ETH64_8021_RSVD_PREFIX = 0x180c2000000 - ETHERMIN = 0x2e - ETHERMTU = 0x5dc - ETHERTYPE_8023 = 0x4 -@@ -295,6 +362,7 @@ const ( - ETHERTYPE_DN = 0x6003 - ETHERTYPE_DOGFIGHT = 0x1989 - ETHERTYPE_DSMD = 0x8039 -+ ETHERTYPE_EAPOL = 0x888e - ETHERTYPE_ECMA = 0x803 - ETHERTYPE_ENCRYPT = 0x803d - ETHERTYPE_ES = 0x805d -@@ -326,6 +394,7 @@ const ( - ETHERTYPE_LLDP = 0x88cc - ETHERTYPE_LOGICRAFT = 0x8148 - ETHERTYPE_LOOPBACK = 0x9000 -+ ETHERTYPE_MACSEC = 0x88e5 - ETHERTYPE_MATRA = 0x807a - ETHERTYPE_MAX = 0xffff - ETHERTYPE_MERIT = 0x807c -@@ -354,15 +423,16 @@ const ( - ETHERTYPE_NCD = 0x8149 - ETHERTYPE_NESTAR = 0x8006 - ETHERTYPE_NETBEUI = 0x8191 -+ ETHERTYPE_NHRP = 0x2001 - ETHERTYPE_NOVELL = 0x8138 - ETHERTYPE_NS = 0x600 - ETHERTYPE_NSAT = 0x601 - ETHERTYPE_NSCOMPAT = 0x807 -+ ETHERTYPE_NSH = 0x984f - ETHERTYPE_NTRAILER = 0x10 - ETHERTYPE_OS9 = 0x7007 - ETHERTYPE_OS9NET = 0x7009 - ETHERTYPE_PACER = 0x80c6 -- ETHERTYPE_PAE = 0x888e - ETHERTYPE_PBB = 0x88e7 - ETHERTYPE_PCS = 0x4242 - ETHERTYPE_PLANNING = 0x8044 -@@ -445,10 +515,11 @@ const ( - ETHER_VLAN_ENCAP_LEN = 0x4 - EVFILT_AIO = -0x3 - EVFILT_DEVICE = -0x8 -+ EVFILT_EXCEPT = -0x9 - EVFILT_PROC = -0x5 - EVFILT_READ = -0x1 - EVFILT_SIGNAL = -0x6 -- EVFILT_SYSCOUNT = 0x8 -+ EVFILT_SYSCOUNT = 0x9 - EVFILT_TIMER = -0x7 - EVFILT_VNODE = -0x4 - EVFILT_WRITE = -0x2 -@@ -470,7 +541,7 @@ const ( - EV_FLAG1 = 0x2000 - EV_ONESHOT = 0x10 - EV_RECEIPT = 0x40 -- EV_SYSFLAGS = 0xf000 -+ EV_SYSFLAGS = 0xf800 - EXTA = 0x4b00 - EXTB = 0x9600 - EXTPROC = 0x800 -@@ -736,6 +807,7 @@ const ( - IFT_VOICEOVERCABLE = 0xc6 - IFT_VOICEOVERFRAMERELAY = 0x99 - IFT_VOICEOVERIP = 0x68 -+ IFT_WIREGUARD = 0xfb - IFT_X213 = 0x5d - IFT_X25 = 0x5 - IFT_X25DDN = 0x4 -@@ -801,9 +873,11 @@ const ( - IPPROTO_RAW = 0xff - IPPROTO_ROUTING = 0x2b - IPPROTO_RSVP = 0x2e -+ IPPROTO_SCTP = 0x84 - IPPROTO_TCP = 0x6 - IPPROTO_TP = 0x1d - IPPROTO_UDP = 0x11 -+ IPPROTO_UDPLITE = 0x88 - IPV6_AUTH_LEVEL = 0x35 - IPV6_AUTOFLOWLABEL = 0x3b - IPV6_CHECKSUM = 0x1a -@@ -910,6 +984,9 @@ const ( - IP_TTL = 0x4 - ISIG = 0x80 - ISTRIP = 0x20 -+ ITIMER_PROF = 0x2 -+ ITIMER_REAL = 0x0 -+ ITIMER_VIRTUAL = 0x1 - IUCLC = 0x1000 - IXANY = 0x800 - IXOFF = 0x400 -@@ -981,6 +1058,19 @@ const ( - MNT_WAIT = 0x1 - MNT_WANTRDWR = 0x2000000 - MNT_WXALLOWED = 0x800 -+ MOUNT_AFS = "afs" -+ MOUNT_CD9660 = "cd9660" -+ MOUNT_EXT2FS = "ext2fs" -+ MOUNT_FFS = "ffs" -+ MOUNT_FUSEFS = "fuse" -+ MOUNT_MFS = "mfs" -+ MOUNT_MSDOS = "msdos" -+ MOUNT_NCPFS = "ncpfs" -+ MOUNT_NFS = "nfs" -+ MOUNT_NTFS = "ntfs" -+ MOUNT_TMPFS = "tmpfs" -+ MOUNT_UDF = "udf" -+ MOUNT_UFS = "ffs" - MSG_BCAST = 0x100 - MSG_CMSG_CLOEXEC = 0x800 - MSG_CTRUNC = 0x20 -@@ -993,6 +1083,7 @@ const ( - MSG_PEEK = 0x2 - MSG_TRUNC = 0x10 - MSG_WAITALL = 0x40 -+ MSG_WAITFORONE = 0x1000 - MS_ASYNC = 0x1 - MS_INVALIDATE = 0x4 - MS_SYNC = 0x2 -@@ -1001,7 +1092,8 @@ const ( - NET_RT_FLAGS = 0x2 - NET_RT_IFLIST = 0x3 - NET_RT_IFNAMES = 0x6 -- NET_RT_MAXID = 0x7 -+ NET_RT_MAXID = 0x8 -+ NET_RT_SOURCE = 0x7 - NET_RT_STATS = 0x4 - NET_RT_TABLE = 0x5 - NFDBITS = 0x20 -@@ -1018,6 +1110,7 @@ const ( - NOTE_FORK = 0x40000000 - NOTE_LINK = 0x10 - NOTE_LOWAT = 0x1 -+ NOTE_OOB = 0x4 - NOTE_PCTRLMASK = 0xf0000000 - NOTE_PDATAMASK = 0xfffff - NOTE_RENAME = 0x20 -@@ -1154,7 +1247,7 @@ const ( - RTM_PROPOSAL = 0x13 - RTM_REDIRECT = 0x6 - RTM_RESOLVE = 0xb -- RTM_RTTUNIT = 0xf4240 -+ RTM_SOURCE = 0x16 - RTM_VERSION = 0x5 - RTV_EXPIRE = 0x4 - RTV_HOPCOUNT = 0x2 -@@ -1172,6 +1265,9 @@ const ( - RUSAGE_THREAD = 0x1 - SCM_RIGHTS = 0x1 - SCM_TIMESTAMP = 0x4 -+ SEEK_CUR = 0x1 -+ SEEK_END = 0x2 -+ SEEK_SET = 0x0 - SHUT_RD = 0x0 - SHUT_RDWR = 0x2 - SHUT_WR = 0x1 -@@ -1188,30 +1284,30 @@ const ( - SIOCBRDGDELS = 0x80606942 - SIOCBRDGFLUSH = 0x80606948 - SIOCBRDGFRL = 0x808c694e -- SIOCBRDGGCACHE = 0xc0186941 -- SIOCBRDGGFD = 0xc0186952 -- SIOCBRDGGHT = 0xc0186951 -+ SIOCBRDGGCACHE = 0xc0146941 -+ SIOCBRDGGFD = 0xc0146952 -+ SIOCBRDGGHT = 0xc0146951 - SIOCBRDGGIFFLGS = 0xc060693e -- SIOCBRDGGMA = 0xc0186953 -+ SIOCBRDGGMA = 0xc0146953 - SIOCBRDGGPARAM = 0xc0406958 -- SIOCBRDGGPRI = 0xc0186950 -+ SIOCBRDGGPRI = 0xc0146950 - SIOCBRDGGRL = 0xc030694f -- SIOCBRDGGTO = 0xc0186946 -+ SIOCBRDGGTO = 0xc0146946 - SIOCBRDGIFS = 0xc0606942 - SIOCBRDGRTS = 0xc0206943 - SIOCBRDGSADDR = 0xc1286944 -- SIOCBRDGSCACHE = 0x80186940 -- SIOCBRDGSFD = 0x80186952 -- SIOCBRDGSHT = 0x80186951 -+ SIOCBRDGSCACHE = 0x80146940 -+ SIOCBRDGSFD = 0x80146952 -+ SIOCBRDGSHT = 0x80146951 - SIOCBRDGSIFCOST = 0x80606955 - SIOCBRDGSIFFLGS = 0x8060693f - SIOCBRDGSIFPRIO = 0x80606954 - SIOCBRDGSIFPROT = 0x8060694a -- SIOCBRDGSMA = 0x80186953 -- SIOCBRDGSPRI = 0x80186950 -- SIOCBRDGSPROTO = 0x8018695a -- SIOCBRDGSTO = 0x80186945 -- SIOCBRDGSTXHC = 0x80186959 -+ SIOCBRDGSMA = 0x80146953 -+ SIOCBRDGSPRI = 0x80146950 -+ SIOCBRDGSPROTO = 0x8014695a -+ SIOCBRDGSTO = 0x80146945 -+ SIOCBRDGSTXHC = 0x80146959 - SIOCDELLABEL = 0x80206997 - SIOCDELMULTI = 0x80206932 - SIOCDIFADDR = 0x80206919 -@@ -1264,6 +1360,7 @@ const ( - SIOCGPWE3CTRLWORD = 0xc02069dc - SIOCGPWE3FAT = 0xc02069dd - SIOCGPWE3NEIGHBOR = 0xc21869de -+ SIOCGRXHPRIO = 0xc02069db - SIOCGSPPPPARAMS = 0xc0206994 - SIOCGTXHPRIO = 0xc02069c6 - SIOCGUMBINFO = 0xc02069be -@@ -1310,17 +1407,13 @@ const ( - SIOCSPWE3CTRLWORD = 0x802069dc - SIOCSPWE3FAT = 0x802069dd - SIOCSPWE3NEIGHBOR = 0x821869de -+ SIOCSRXHPRIO = 0x802069db - SIOCSSPPPPARAMS = 0x80206993 - SIOCSTXHPRIO = 0x802069c5 - SIOCSUMBPARAM = 0x802069bf - SIOCSVH = 0xc02069f5 - SIOCSVNETFLOWID = 0x802069c3 - SIOCSVNETID = 0x802069a6 -- SIOCSWGDPID = 0xc018695b -- SIOCSWGMAXFLOW = 0xc0186960 -- SIOCSWGMAXGROUP = 0xc018695d -- SIOCSWSDPID = 0x8018695c -- SIOCSWSPORTNO = 0xc060695f - SOCK_CLOEXEC = 0x8000 - SOCK_DGRAM = 0x2 - SOCK_DNS = 0x1000 -@@ -1335,6 +1428,7 @@ const ( - SO_BINDANY = 0x1000 - SO_BROADCAST = 0x20 - SO_DEBUG = 0x1 -+ SO_DOMAIN = 0x1024 - SO_DONTROUTE = 0x10 - SO_ERROR = 0x1007 - SO_KEEPALIVE = 0x8 -@@ -1342,6 +1436,7 @@ const ( - SO_NETPROC = 0x1020 - SO_OOBINLINE = 0x100 - SO_PEERCRED = 0x1022 -+ SO_PROTOCOL = 0x1025 - SO_RCVBUF = 0x1002 - SO_RCVLOWAT = 0x1004 - SO_RCVTIMEO = 0x1006 -@@ -1391,7 +1486,18 @@ const ( - TCOFLUSH = 0x2 - TCOOFF = 0x1 - TCOON = 0x2 -- TCP_MAXBURST = 0x4 -+ TCPOPT_EOL = 0x0 -+ TCPOPT_MAXSEG = 0x2 -+ TCPOPT_NOP = 0x1 -+ TCPOPT_SACK = 0x5 -+ TCPOPT_SACK_HDR = 0x1010500 -+ TCPOPT_SACK_PERMITTED = 0x4 -+ TCPOPT_SACK_PERMIT_HDR = 0x1010402 -+ TCPOPT_SIGNATURE = 0x13 -+ TCPOPT_TIMESTAMP = 0x8 -+ TCPOPT_TSTAMP_HDR = 0x101080a -+ TCPOPT_WINDOW = 0x3 -+ TCP_INFO = 0x9 - TCP_MAXSEG = 0x2 - TCP_MAXWIN = 0xffff - TCP_MAX_SACK = 0x3 -@@ -1400,6 +1506,7 @@ const ( - TCP_MSS = 0x200 - TCP_NODELAY = 0x1 - TCP_NOPUSH = 0x10 -+ TCP_SACKHOLE_LIMIT = 0x80 - TCP_SACK_ENABLE = 0x8 - TCSAFLUSH = 0x2 - TIMER_ABSTIME = 0x1 -@@ -1768,7 +1875,7 @@ var signalList = [...]struct { - {3, "SIGQUIT", "quit"}, - {4, "SIGILL", "illegal instruction"}, - {5, "SIGTRAP", "trace/BPT trap"}, -- {6, "SIGABRT", "abort trap"}, -+ {6, "SIGIOT", "abort trap"}, - {7, "SIGEMT", "EMT trap"}, - {8, "SIGFPE", "floating point exception"}, - {9, "SIGKILL", "killed"}, -@@ -1795,4 +1902,5 @@ var signalList = [...]struct { - {30, "SIGUSR1", "user defined signal 1"}, - {31, "SIGUSR2", "user defined signal 2"}, - {32, "SIGTHR", "thread AST"}, -+ {28672, "SIGSTKSZ", "unknown signal"}, - } -diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go -old mode 100644 -new mode 100755 -index f1154ff..03d90fe ---- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go -+++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go -@@ -112,6 +112,12 @@ const ( - BPF_FILDROP_CAPTURE = 0x1 - BPF_FILDROP_DROP = 0x2 - BPF_FILDROP_PASS = 0x0 -+ BPF_F_DIR_IN = 0x10 -+ BPF_F_DIR_MASK = 0x30 -+ BPF_F_DIR_OUT = 0x20 -+ BPF_F_DIR_SHIFT = 0x4 -+ BPF_F_FLOWID = 0x8 -+ BPF_F_PRI_MASK = 0x7 - BPF_H = 0x8 - BPF_IMM = 0x0 - BPF_IND = 0x40 -@@ -140,6 +146,7 @@ const ( - BPF_OR = 0x40 - BPF_RELEASE = 0x30bb6 - BPF_RET = 0x6 -+ BPF_RND = 0xc0 - BPF_RSH = 0x70 - BPF_ST = 0x2 - BPF_STX = 0x3 -@@ -301,6 +308,8 @@ const ( - EMUL_ENABLED = 0x1 - EMUL_NATIVE = 0x2 - ENDRUNDISC = 0x9 -+ ETH64_8021_RSVD_MASK = 0xfffffffffff0 -+ ETH64_8021_RSVD_PREFIX = 0x180c2000000 - ETHERMIN = 0x2e - ETHERMTU = 0x5dc - ETHERTYPE_8023 = 0x4 -@@ -353,6 +362,7 @@ const ( - ETHERTYPE_DN = 0x6003 - ETHERTYPE_DOGFIGHT = 0x1989 - ETHERTYPE_DSMD = 0x8039 -+ ETHERTYPE_EAPOL = 0x888e - ETHERTYPE_ECMA = 0x803 - ETHERTYPE_ENCRYPT = 0x803d - ETHERTYPE_ES = 0x805d -@@ -413,15 +423,16 @@ const ( - ETHERTYPE_NCD = 0x8149 - ETHERTYPE_NESTAR = 0x8006 - ETHERTYPE_NETBEUI = 0x8191 -+ ETHERTYPE_NHRP = 0x2001 - ETHERTYPE_NOVELL = 0x8138 - ETHERTYPE_NS = 0x600 - ETHERTYPE_NSAT = 0x601 - ETHERTYPE_NSCOMPAT = 0x807 -+ ETHERTYPE_NSH = 0x984f - ETHERTYPE_NTRAILER = 0x10 - ETHERTYPE_OS9 = 0x7007 - ETHERTYPE_OS9NET = 0x7009 - ETHERTYPE_PACER = 0x80c6 -- ETHERTYPE_PAE = 0x888e - ETHERTYPE_PBB = 0x88e7 - ETHERTYPE_PCS = 0x4242 - ETHERTYPE_PLANNING = 0x8044 -@@ -504,10 +515,11 @@ const ( - ETHER_VLAN_ENCAP_LEN = 0x4 - EVFILT_AIO = -0x3 - EVFILT_DEVICE = -0x8 -+ EVFILT_EXCEPT = -0x9 - EVFILT_PROC = -0x5 - EVFILT_READ = -0x1 - EVFILT_SIGNAL = -0x6 -- EVFILT_SYSCOUNT = 0x8 -+ EVFILT_SYSCOUNT = 0x9 - EVFILT_TIMER = -0x7 - EVFILT_VNODE = -0x4 - EVFILT_WRITE = -0x2 -@@ -529,7 +541,7 @@ const ( - EV_FLAG1 = 0x2000 - EV_ONESHOT = 0x10 - EV_RECEIPT = 0x40 -- EV_SYSFLAGS = 0xf000 -+ EV_SYSFLAGS = 0xf800 - EXTA = 0x4b00 - EXTB = 0x9600 - EXTPROC = 0x800 -@@ -795,6 +807,7 @@ const ( - IFT_VOICEOVERCABLE = 0xc6 - IFT_VOICEOVERFRAMERELAY = 0x99 - IFT_VOICEOVERIP = 0x68 -+ IFT_WIREGUARD = 0xfb - IFT_X213 = 0x5d - IFT_X25 = 0x5 - IFT_X25DDN = 0x4 -@@ -860,6 +873,7 @@ const ( - IPPROTO_RAW = 0xff - IPPROTO_ROUTING = 0x2b - IPPROTO_RSVP = 0x2e -+ IPPROTO_SCTP = 0x84 - IPPROTO_TCP = 0x6 - IPPROTO_TP = 0x1d - IPPROTO_UDP = 0x11 -@@ -970,6 +984,9 @@ const ( - IP_TTL = 0x4 - ISIG = 0x80 - ISTRIP = 0x20 -+ ITIMER_PROF = 0x2 -+ ITIMER_REAL = 0x0 -+ ITIMER_VIRTUAL = 0x1 - IUCLC = 0x1000 - IXANY = 0x800 - IXOFF = 0x400 -@@ -1041,6 +1058,19 @@ const ( - MNT_WAIT = 0x1 - MNT_WANTRDWR = 0x2000000 - MNT_WXALLOWED = 0x800 -+ MOUNT_AFS = "afs" -+ MOUNT_CD9660 = "cd9660" -+ MOUNT_EXT2FS = "ext2fs" -+ MOUNT_FFS = "ffs" -+ MOUNT_FUSEFS = "fuse" -+ MOUNT_MFS = "mfs" -+ MOUNT_MSDOS = "msdos" -+ MOUNT_NCPFS = "ncpfs" -+ MOUNT_NFS = "nfs" -+ MOUNT_NTFS = "ntfs" -+ MOUNT_TMPFS = "tmpfs" -+ MOUNT_UDF = "udf" -+ MOUNT_UFS = "ffs" - MSG_BCAST = 0x100 - MSG_CMSG_CLOEXEC = 0x800 - MSG_CTRUNC = 0x20 -@@ -1053,6 +1083,7 @@ const ( - MSG_PEEK = 0x2 - MSG_TRUNC = 0x10 - MSG_WAITALL = 0x40 -+ MSG_WAITFORONE = 0x1000 - MS_ASYNC = 0x1 - MS_INVALIDATE = 0x4 - MS_SYNC = 0x2 -@@ -1061,7 +1092,8 @@ const ( - NET_RT_FLAGS = 0x2 - NET_RT_IFLIST = 0x3 - NET_RT_IFNAMES = 0x6 -- NET_RT_MAXID = 0x7 -+ NET_RT_MAXID = 0x8 -+ NET_RT_SOURCE = 0x7 - NET_RT_STATS = 0x4 - NET_RT_TABLE = 0x5 - NFDBITS = 0x20 -@@ -1078,6 +1110,7 @@ const ( - NOTE_FORK = 0x40000000 - NOTE_LINK = 0x10 - NOTE_LOWAT = 0x1 -+ NOTE_OOB = 0x4 - NOTE_PCTRLMASK = 0xf0000000 - NOTE_PDATAMASK = 0xfffff - NOTE_RENAME = 0x20 -@@ -1214,7 +1247,7 @@ const ( - RTM_PROPOSAL = 0x13 - RTM_REDIRECT = 0x6 - RTM_RESOLVE = 0xb -- RTM_RTTUNIT = 0xf4240 -+ RTM_SOURCE = 0x16 - RTM_VERSION = 0x5 - RTV_EXPIRE = 0x4 - RTV_HOPCOUNT = 0x2 -@@ -1232,6 +1265,9 @@ const ( - RUSAGE_THREAD = 0x1 - SCM_RIGHTS = 0x1 - SCM_TIMESTAMP = 0x4 -+ SEEK_CUR = 0x1 -+ SEEK_END = 0x2 -+ SEEK_SET = 0x0 - SHUT_RD = 0x0 - SHUT_RDWR = 0x2 - SHUT_WR = 0x1 -@@ -1248,30 +1284,30 @@ const ( - SIOCBRDGDELS = 0x80606942 - SIOCBRDGFLUSH = 0x80606948 - SIOCBRDGFRL = 0x808c694e -- SIOCBRDGGCACHE = 0xc0186941 -- SIOCBRDGGFD = 0xc0186952 -- SIOCBRDGGHT = 0xc0186951 -+ SIOCBRDGGCACHE = 0xc0146941 -+ SIOCBRDGGFD = 0xc0146952 -+ SIOCBRDGGHT = 0xc0146951 - SIOCBRDGGIFFLGS = 0xc060693e -- SIOCBRDGGMA = 0xc0186953 -+ SIOCBRDGGMA = 0xc0146953 - SIOCBRDGGPARAM = 0xc0406958 -- SIOCBRDGGPRI = 0xc0186950 -+ SIOCBRDGGPRI = 0xc0146950 - SIOCBRDGGRL = 0xc030694f -- SIOCBRDGGTO = 0xc0186946 -+ SIOCBRDGGTO = 0xc0146946 - SIOCBRDGIFS = 0xc0606942 - SIOCBRDGRTS = 0xc0206943 - SIOCBRDGSADDR = 0xc1286944 -- SIOCBRDGSCACHE = 0x80186940 -- SIOCBRDGSFD = 0x80186952 -- SIOCBRDGSHT = 0x80186951 -+ SIOCBRDGSCACHE = 0x80146940 -+ SIOCBRDGSFD = 0x80146952 -+ SIOCBRDGSHT = 0x80146951 - SIOCBRDGSIFCOST = 0x80606955 - SIOCBRDGSIFFLGS = 0x8060693f - SIOCBRDGSIFPRIO = 0x80606954 - SIOCBRDGSIFPROT = 0x8060694a -- SIOCBRDGSMA = 0x80186953 -- SIOCBRDGSPRI = 0x80186950 -- SIOCBRDGSPROTO = 0x8018695a -- SIOCBRDGSTO = 0x80186945 -- SIOCBRDGSTXHC = 0x80186959 -+ SIOCBRDGSMA = 0x80146953 -+ SIOCBRDGSPRI = 0x80146950 -+ SIOCBRDGSPROTO = 0x8014695a -+ SIOCBRDGSTO = 0x80146945 -+ SIOCBRDGSTXHC = 0x80146959 - SIOCDELLABEL = 0x80206997 - SIOCDELMULTI = 0x80206932 - SIOCDIFADDR = 0x80206919 -@@ -1378,11 +1414,6 @@ const ( - SIOCSVH = 0xc02069f5 - SIOCSVNETFLOWID = 0x802069c3 - SIOCSVNETID = 0x802069a6 -- SIOCSWGDPID = 0xc018695b -- SIOCSWGMAXFLOW = 0xc0186960 -- SIOCSWGMAXGROUP = 0xc018695d -- SIOCSWSDPID = 0x8018695c -- SIOCSWSPORTNO = 0xc060695f - SOCK_CLOEXEC = 0x8000 - SOCK_DGRAM = 0x2 - SOCK_DNS = 0x1000 -@@ -1455,7 +1486,18 @@ const ( - TCOFLUSH = 0x2 - TCOOFF = 0x1 - TCOON = 0x2 -- TCP_MAXBURST = 0x4 -+ TCPOPT_EOL = 0x0 -+ TCPOPT_MAXSEG = 0x2 -+ TCPOPT_NOP = 0x1 -+ TCPOPT_SACK = 0x5 -+ TCPOPT_SACK_HDR = 0x1010500 -+ TCPOPT_SACK_PERMITTED = 0x4 -+ TCPOPT_SACK_PERMIT_HDR = 0x1010402 -+ TCPOPT_SIGNATURE = 0x13 -+ TCPOPT_TIMESTAMP = 0x8 -+ TCPOPT_TSTAMP_HDR = 0x101080a -+ TCPOPT_WINDOW = 0x3 -+ TCP_INFO = 0x9 - TCP_MAXSEG = 0x2 - TCP_MAXWIN = 0xffff - TCP_MAX_SACK = 0x3 -@@ -1833,7 +1875,7 @@ var signalList = [...]struct { - {3, "SIGQUIT", "quit"}, - {4, "SIGILL", "illegal instruction"}, - {5, "SIGTRAP", "trace/BPT trap"}, -- {6, "SIGABRT", "abort trap"}, -+ {6, "SIGIOT", "abort trap"}, - {7, "SIGEMT", "EMT trap"}, - {8, "SIGFPE", "floating point exception"}, - {9, "SIGKILL", "killed"}, -@@ -1860,4 +1902,5 @@ var signalList = [...]struct { - {30, "SIGUSR1", "user defined signal 1"}, - {31, "SIGUSR2", "user defined signal 2"}, - {32, "SIGTHR", "thread AST"}, -+ {81920, "SIGSTKSZ", "unknown signal"}, - } -diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_ppc64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_riscv64.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_riscv64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go b/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/zptrace_armnn_linux.go b/vendor/golang.org/x/sys/unix/zptrace_armnn_linux.go -old mode 100644 -new mode 100755 -index bd001a6..97f20ca ---- a/vendor/golang.org/x/sys/unix/zptrace_armnn_linux.go -+++ b/vendor/golang.org/x/sys/unix/zptrace_armnn_linux.go -@@ -15,12 +15,12 @@ type PtraceRegsArm struct { - - // PtraceGetRegsArm fetches the registers used by arm binaries. - func PtraceGetRegsArm(pid int, regsout *PtraceRegsArm) error { -- return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) -+ return ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout)) - } - - // PtraceSetRegsArm sets the registers used by arm binaries. - func PtraceSetRegsArm(pid int, regs *PtraceRegsArm) error { -- return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) -+ return ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs)) - } - - // PtraceRegsArm64 is the registers used by arm64 binaries. -@@ -33,10 +33,10 @@ type PtraceRegsArm64 struct { - - // PtraceGetRegsArm64 fetches the registers used by arm64 binaries. - func PtraceGetRegsArm64(pid int, regsout *PtraceRegsArm64) error { -- return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) -+ return ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout)) - } - - // PtraceSetRegsArm64 sets the registers used by arm64 binaries. - func PtraceSetRegsArm64(pid int, regs *PtraceRegsArm64) error { -- return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) -+ return ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs)) - } -diff --git a/vendor/golang.org/x/sys/unix/zptrace_linux_arm64.go b/vendor/golang.org/x/sys/unix/zptrace_linux_arm64.go -old mode 100644 -new mode 100755 -index 6cb6d68..834d285 ---- a/vendor/golang.org/x/sys/unix/zptrace_linux_arm64.go -+++ b/vendor/golang.org/x/sys/unix/zptrace_linux_arm64.go -@@ -7,11 +7,11 @@ import "unsafe" - // PtraceGetRegSetArm64 fetches the registers used by arm64 binaries. - func PtraceGetRegSetArm64(pid, addr int, regsout *PtraceRegsArm64) error { - iovec := Iovec{(*byte)(unsafe.Pointer(regsout)), uint64(unsafe.Sizeof(*regsout))} -- return ptrace(PTRACE_GETREGSET, pid, uintptr(addr), uintptr(unsafe.Pointer(&iovec))) -+ return ptracePtr(PTRACE_GETREGSET, pid, uintptr(addr), unsafe.Pointer(&iovec)) - } - - // PtraceSetRegSetArm64 sets the registers used by arm64 binaries. - func PtraceSetRegSetArm64(pid, addr int, regs *PtraceRegsArm64) error { - iovec := Iovec{(*byte)(unsafe.Pointer(regs)), uint64(unsafe.Sizeof(*regs))} -- return ptrace(PTRACE_SETREGSET, pid, uintptr(addr), uintptr(unsafe.Pointer(&iovec))) -+ return ptracePtr(PTRACE_SETREGSET, pid, uintptr(addr), unsafe.Pointer(&iovec)) - } -diff --git a/vendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go b/vendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go -old mode 100644 -new mode 100755 -index c34d063..0b5f794 ---- a/vendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go -+++ b/vendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go -@@ -21,12 +21,12 @@ type PtraceRegsMips struct { - - // PtraceGetRegsMips fetches the registers used by mips binaries. - func PtraceGetRegsMips(pid int, regsout *PtraceRegsMips) error { -- return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) -+ return ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout)) - } - - // PtraceSetRegsMips sets the registers used by mips binaries. - func PtraceSetRegsMips(pid int, regs *PtraceRegsMips) error { -- return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) -+ return ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs)) - } - - // PtraceRegsMips64 is the registers used by mips64 binaries. -@@ -42,10 +42,10 @@ type PtraceRegsMips64 struct { - - // PtraceGetRegsMips64 fetches the registers used by mips64 binaries. - func PtraceGetRegsMips64(pid int, regsout *PtraceRegsMips64) error { -- return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) -+ return ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout)) - } - - // PtraceSetRegsMips64 sets the registers used by mips64 binaries. - func PtraceSetRegsMips64(pid int, regs *PtraceRegsMips64) error { -- return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) -+ return ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs)) - } -diff --git a/vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go b/vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go -old mode 100644 -new mode 100755 -index 3ccf0c0..2807f7e ---- a/vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go -+++ b/vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go -@@ -21,12 +21,12 @@ type PtraceRegsMipsle struct { - - // PtraceGetRegsMipsle fetches the registers used by mipsle binaries. - func PtraceGetRegsMipsle(pid int, regsout *PtraceRegsMipsle) error { -- return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) -+ return ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout)) - } - - // PtraceSetRegsMipsle sets the registers used by mipsle binaries. - func PtraceSetRegsMipsle(pid int, regs *PtraceRegsMipsle) error { -- return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) -+ return ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs)) - } - - // PtraceRegsMips64le is the registers used by mips64le binaries. -@@ -42,10 +42,10 @@ type PtraceRegsMips64le struct { - - // PtraceGetRegsMips64le fetches the registers used by mips64le binaries. - func PtraceGetRegsMips64le(pid int, regsout *PtraceRegsMips64le) error { -- return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) -+ return ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout)) - } - - // PtraceSetRegsMips64le sets the registers used by mips64le binaries. - func PtraceSetRegsMips64le(pid int, regs *PtraceRegsMips64le) error { -- return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) -+ return ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs)) - } -diff --git a/vendor/golang.org/x/sys/unix/zptrace_x86_linux.go b/vendor/golang.org/x/sys/unix/zptrace_x86_linux.go -old mode 100644 -new mode 100755 -index 7d65857..281ea64 ---- a/vendor/golang.org/x/sys/unix/zptrace_x86_linux.go -+++ b/vendor/golang.org/x/sys/unix/zptrace_x86_linux.go -@@ -31,12 +31,12 @@ type PtraceRegs386 struct { - - // PtraceGetRegs386 fetches the registers used by 386 binaries. - func PtraceGetRegs386(pid int, regsout *PtraceRegs386) error { -- return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) -+ return ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout)) - } - - // PtraceSetRegs386 sets the registers used by 386 binaries. - func PtraceSetRegs386(pid int, regs *PtraceRegs386) error { -- return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) -+ return ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs)) - } - - // PtraceRegsAmd64 is the registers used by amd64 binaries. -@@ -72,10 +72,10 @@ type PtraceRegsAmd64 struct { - - // PtraceGetRegsAmd64 fetches the registers used by amd64 binaries. - func PtraceGetRegsAmd64(pid int, regsout *PtraceRegsAmd64) error { -- return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) -+ return ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout)) - } - - // PtraceSetRegsAmd64 sets the registers used by amd64 binaries. - func PtraceSetRegsAmd64(pid int, regs *PtraceRegsAmd64) error { -- return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) -+ return ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs)) - } -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go -old mode 100644 -new mode 100755 -index 870215d..d1d1d23 ---- a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go -+++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go -@@ -124,7 +124,6 @@ int utime(uintptr_t, uintptr_t); - unsigned long long getsystemcfg(int); - int umount(uintptr_t); - int getrlimit64(int, uintptr_t); --int setrlimit64(int, uintptr_t); - long long lseek64(int, long long, int); - uintptr_t mmap(uintptr_t, uintptr_t, int, int, int, long long); - -@@ -213,7 +212,7 @@ func wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func ioctl(fd int, req uint, arg uintptr) (err error) { -+func ioctl(fd int, req int, arg uintptr) (err error) { - r0, er := C.ioctl(C.int(fd), C.int(req), C.uintptr_t(arg)) - if r0 == -1 && er != nil { - err = er -@@ -223,6 +222,16 @@ func ioctl(fd int, req uint, arg uintptr) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) { -+ r0, er := C.ioctl(C.int(fd), C.int(req), C.uintptr_t(uintptr(arg))) -+ if r0 == -1 && er != nil { -+ err = er -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func FcntlInt(fd uintptr, cmd int, arg int) (r int, err error) { - r0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg)) - r = int(r0) -@@ -808,28 +817,6 @@ func write(fd int, p []byte) (n int, err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func readlen(fd int, p *byte, np int) (n int, err error) { -- r0, er := C.read(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(p))), C.size_t(np)) -- n = int(r0) -- if r0 == -1 && er != nil { -- err = er -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- --func writelen(fd int, p *byte, np int) (n int, err error) { -- r0, er := C.write(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(p))), C.size_t(np)) -- n = int(r0) -- if r0 == -1 && er != nil { -- err = er -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func Dup2(oldfd int, newfd int) (err error) { - r0, er := C.dup2(C.int(oldfd), C.int(newfd)) - if r0 == -1 && er != nil { -@@ -1454,16 +1441,6 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func Setrlimit(resource int, rlim *Rlimit) (err error) { -- r0, er := C.setrlimit64(C.int(resource), C.uintptr_t(uintptr(unsafe.Pointer(rlim)))) -- if r0 == -1 && er != nil { -- err = er -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func Seek(fd int, offset int64, whence int) (off int64, err error) { - r0, er := C.lseek64(C.int(fd), C.longlong(offset), C.int(whence)) - off = int64(r0) -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go -old mode 100644 -new mode 100755 -index a89b0bf..f99a18a ---- a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go -+++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go -@@ -93,8 +93,18 @@ func wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func ioctl(fd int, req uint, arg uintptr) (err error) { -- _, e1 := callioctl(fd, int(req), arg) -+func ioctl(fd int, req int, arg uintptr) (err error) { -+ _, e1 := callioctl(fd, req, arg) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ -+func ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) { -+ _, e1 := callioctl_ptr(fd, req, arg) - if e1 != 0 { - err = errnoErr(e1) - } -@@ -752,28 +762,6 @@ func write(fd int, p []byte) (n int, err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func readlen(fd int, p *byte, np int) (n int, err error) { -- r0, e1 := callread(fd, uintptr(unsafe.Pointer(p)), np) -- n = int(r0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- --func writelen(fd int, p *byte, np int) (n int, err error) { -- r0, e1 := callwrite(fd, uintptr(unsafe.Pointer(p)), np) -- n = int(r0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func Dup2(oldfd int, newfd int) (err error) { - _, e1 := calldup2(oldfd, newfd) - if e1 != 0 { -@@ -1412,16 +1400,6 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func Setrlimit(resource int, rlim *Rlimit) (err error) { -- _, e1 := callsetrlimit(resource, uintptr(unsafe.Pointer(rlim))) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func Seek(fd int, offset int64, whence int) (off int64, err error) { - r0, e1 := calllseek(fd, offset, whence) - off = int64(r0) -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go -old mode 100644 -new mode 100755 -index 2caa5ad..c4d50ae ---- a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go -+++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go -@@ -124,7 +124,6 @@ import ( - //go:cgo_import_dynamic libc_getsystemcfg getsystemcfg "libc.a/shr_64.o" - //go:cgo_import_dynamic libc_umount umount "libc.a/shr_64.o" - //go:cgo_import_dynamic libc_getrlimit getrlimit "libc.a/shr_64.o" --//go:cgo_import_dynamic libc_setrlimit setrlimit "libc.a/shr_64.o" - //go:cgo_import_dynamic libc_lseek lseek "libc.a/shr_64.o" - //go:cgo_import_dynamic libc_mmap64 mmap64 "libc.a/shr_64.o" - -@@ -242,7 +241,6 @@ import ( - //go:linkname libc_getsystemcfg libc_getsystemcfg - //go:linkname libc_umount libc_umount - //go:linkname libc_getrlimit libc_getrlimit --//go:linkname libc_setrlimit libc_setrlimit - //go:linkname libc_lseek libc_lseek - //go:linkname libc_mmap64 libc_mmap64 - -@@ -363,7 +361,6 @@ var ( - libc_getsystemcfg, - libc_umount, - libc_getrlimit, -- libc_setrlimit, - libc_lseek, - libc_mmap64 syscallFunc - ) -@@ -423,6 +420,13 @@ func callioctl(fd int, req int, arg uintptr) (r1 uintptr, e1 Errno) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func callioctl_ptr(fd int, req int, arg unsafe.Pointer) (r1 uintptr, e1 Errno) { -+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ioctl)), 3, uintptr(fd), uintptr(req), uintptr(arg), 0, 0, 0) -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func callfcntl(fd uintptr, cmd int, arg uintptr) (r1 uintptr, e1 Errno) { - r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fcntl)), 3, fd, uintptr(cmd), arg, 0, 0, 0) - return -@@ -1172,13 +1176,6 @@ func callgetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func callsetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) { -- r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setrlimit)), 2, uintptr(resource), rlim, 0, 0, 0, 0) -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func calllseek(fd int, offset int64, whence int) (r1 uintptr, e1 Errno) { - r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_lseek)), 3, uintptr(fd), uintptr(offset), uintptr(whence), 0, 0, 0) - return -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go -old mode 100644 -new mode 100755 -index 944a714..6903d3b ---- a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go -+++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go -@@ -123,7 +123,6 @@ int utime(uintptr_t, uintptr_t); - unsigned long long getsystemcfg(int); - int umount(uintptr_t); - int getrlimit(int, uintptr_t); --int setrlimit(int, uintptr_t); - long long lseek(int, long long, int); - uintptr_t mmap64(uintptr_t, uintptr_t, int, int, int, long long); - -@@ -131,6 +130,7 @@ uintptr_t mmap64(uintptr_t, uintptr_t, int, int, int, long long); - import "C" - import ( - "syscall" -+ "unsafe" - ) - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -@@ -191,6 +191,14 @@ func callioctl(fd int, req int, arg uintptr) (r1 uintptr, e1 Errno) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func callioctl_ptr(fd int, req int, arg unsafe.Pointer) (r1 uintptr, e1 Errno) { -+ r1 = uintptr(C.ioctl(C.int(fd), C.int(req), C.uintptr_t(uintptr(arg)))) -+ e1 = syscall.GetErrno() -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func callfcntl(fd uintptr, cmd int, arg uintptr) (r1 uintptr, e1 Errno) { - r1 = uintptr(C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg))) - e1 = syscall.GetErrno() -@@ -1047,14 +1055,6 @@ func callgetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func callsetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) { -- r1 = uintptr(C.setrlimit(C.int(resource), C.uintptr_t(rlim))) -- e1 = syscall.GetErrno() -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func calllseek(fd int, offset int64, whence int) (r1 uintptr, e1 Errno) { - r1 = uintptr(C.lseek(C.int(fd), C.longlong(offset), C.int(whence))) - e1 = syscall.GetErrno() -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go -old mode 100644 -new mode 100755 -index c2461c4..1cad561 ---- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go -+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go -@@ -731,6 +731,16 @@ var libc_ioctl_trampoline_addr uintptr - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { -+ _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { -@@ -1984,6 +1994,31 @@ var libc_select_trampoline_addr uintptr - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func Setattrlist(path string, attrlist *Attrlist, attrBuf []byte, options int) (err error) { -+ var _p0 *byte -+ _p0, err = BytePtrFromString(path) -+ if err != nil { -+ return -+ } -+ var _p1 unsafe.Pointer -+ if len(attrBuf) > 0 { -+ _p1 = unsafe.Pointer(&attrBuf[0]) -+ } else { -+ _p1 = unsafe.Pointer(&_zero) -+ } -+ _, _, e1 := syscall_syscall6(libc_setattrlist_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(attrlist)), uintptr(_p1), uintptr(len(attrBuf)), uintptr(options), 0) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+var libc_setattrlist_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_setattrlist setattrlist "/usr/lib/libSystem.B.dylib" -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func Setegid(egid int) (err error) { - _, _, e1 := syscall_syscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0) - if e1 != 0 { -@@ -2115,20 +2150,6 @@ var libc_setreuid_trampoline_addr uintptr - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func Setrlimit(which int, lim *Rlimit) (err error) { -- _, _, e1 := syscall_rawSyscall(libc_setrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --var libc_setrlimit_trampoline_addr uintptr -- --//go:cgo_import_dynamic libc_setrlimit setrlimit "/usr/lib/libSystem.B.dylib" -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func Setsid() (pid int, err error) { - r0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0) - pid = int(r0) -@@ -2391,28 +2412,6 @@ var libc_munmap_trampoline_addr uintptr - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func readlen(fd int, buf *byte, nbuf int) (n int, err error) { -- r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) -- n = int(r0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- --func writelen(fd int, buf *byte, nbuf int) (n int, err error) { -- r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) -- n = int(r0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func Fstat(fd int, stat *Stat_t) (err error) { - _, _, e1 := syscall_syscall(libc_fstat64_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s -old mode 100644 -new mode 100755 -index 95fe4c0..8b8bb28 ---- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s -+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s -@@ -5,900 +5,750 @@ - - TEXT libc_fdopendir_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fdopendir(SB) -- - GLOBL ·libc_fdopendir_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fdopendir_trampoline_addr(SB)/8, $libc_fdopendir_trampoline<>(SB) - - TEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getgroups(SB) -- - GLOBL ·libc_getgroups_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB) - - TEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setgroups(SB) -- - GLOBL ·libc_setgroups_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB) - - TEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_wait4(SB) -- - GLOBL ·libc_wait4_trampoline_addr(SB), RODATA, $8 - DATA ·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB) - - TEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_accept(SB) -- - GLOBL ·libc_accept_trampoline_addr(SB), RODATA, $8 - DATA ·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB) - - TEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_bind(SB) -- - GLOBL ·libc_bind_trampoline_addr(SB), RODATA, $8 - DATA ·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB) - - TEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_connect(SB) -- - GLOBL ·libc_connect_trampoline_addr(SB), RODATA, $8 - DATA ·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB) - - TEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_socket(SB) -- - GLOBL ·libc_socket_trampoline_addr(SB), RODATA, $8 - DATA ·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB) - - TEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getsockopt(SB) -- - GLOBL ·libc_getsockopt_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB) - - TEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setsockopt(SB) -- - GLOBL ·libc_setsockopt_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB) - - TEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getpeername(SB) -- - GLOBL ·libc_getpeername_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB) - - TEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getsockname(SB) -- - GLOBL ·libc_getsockname_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB) - - TEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_shutdown(SB) -- - GLOBL ·libc_shutdown_trampoline_addr(SB), RODATA, $8 - DATA ·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB) - - TEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_socketpair(SB) -- - GLOBL ·libc_socketpair_trampoline_addr(SB), RODATA, $8 - DATA ·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB) - - TEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_recvfrom(SB) -- - GLOBL ·libc_recvfrom_trampoline_addr(SB), RODATA, $8 - DATA ·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB) - - TEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_sendto(SB) -- - GLOBL ·libc_sendto_trampoline_addr(SB), RODATA, $8 - DATA ·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB) - - TEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_recvmsg(SB) -- - GLOBL ·libc_recvmsg_trampoline_addr(SB), RODATA, $8 - DATA ·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB) - - TEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_sendmsg(SB) -- - GLOBL ·libc_sendmsg_trampoline_addr(SB), RODATA, $8 - DATA ·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB) - - TEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_kevent(SB) -- - GLOBL ·libc_kevent_trampoline_addr(SB), RODATA, $8 - DATA ·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB) - - TEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_utimes(SB) -- - GLOBL ·libc_utimes_trampoline_addr(SB), RODATA, $8 - DATA ·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB) - - TEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_futimes(SB) -- - GLOBL ·libc_futimes_trampoline_addr(SB), RODATA, $8 - DATA ·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB) - - TEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_poll(SB) -- - GLOBL ·libc_poll_trampoline_addr(SB), RODATA, $8 - DATA ·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB) - - TEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_madvise(SB) -- - GLOBL ·libc_madvise_trampoline_addr(SB), RODATA, $8 - DATA ·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB) - - TEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mlock(SB) -- - GLOBL ·libc_mlock_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB) - - TEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mlockall(SB) -- - GLOBL ·libc_mlockall_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB) - - TEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mprotect(SB) -- - GLOBL ·libc_mprotect_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB) - - TEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_msync(SB) -- - GLOBL ·libc_msync_trampoline_addr(SB), RODATA, $8 - DATA ·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB) - - TEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_munlock(SB) -- - GLOBL ·libc_munlock_trampoline_addr(SB), RODATA, $8 - DATA ·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB) - - TEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_munlockall(SB) -- - GLOBL ·libc_munlockall_trampoline_addr(SB), RODATA, $8 - DATA ·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB) - - TEXT libc_closedir_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_closedir(SB) -- - GLOBL ·libc_closedir_trampoline_addr(SB), RODATA, $8 - DATA ·libc_closedir_trampoline_addr(SB)/8, $libc_closedir_trampoline<>(SB) - - TEXT libc_readdir_r_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_readdir_r(SB) -- - GLOBL ·libc_readdir_r_trampoline_addr(SB), RODATA, $8 - DATA ·libc_readdir_r_trampoline_addr(SB)/8, $libc_readdir_r_trampoline<>(SB) - - TEXT libc_pipe_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_pipe(SB) -- - GLOBL ·libc_pipe_trampoline_addr(SB), RODATA, $8 - DATA ·libc_pipe_trampoline_addr(SB)/8, $libc_pipe_trampoline<>(SB) - - TEXT libc_getxattr_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getxattr(SB) -- - GLOBL ·libc_getxattr_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getxattr_trampoline_addr(SB)/8, $libc_getxattr_trampoline<>(SB) - - TEXT libc_fgetxattr_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fgetxattr(SB) -- - GLOBL ·libc_fgetxattr_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fgetxattr_trampoline_addr(SB)/8, $libc_fgetxattr_trampoline<>(SB) - - TEXT libc_setxattr_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setxattr(SB) -- - GLOBL ·libc_setxattr_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setxattr_trampoline_addr(SB)/8, $libc_setxattr_trampoline<>(SB) - - TEXT libc_fsetxattr_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fsetxattr(SB) -- - GLOBL ·libc_fsetxattr_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fsetxattr_trampoline_addr(SB)/8, $libc_fsetxattr_trampoline<>(SB) - - TEXT libc_removexattr_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_removexattr(SB) -- - GLOBL ·libc_removexattr_trampoline_addr(SB), RODATA, $8 - DATA ·libc_removexattr_trampoline_addr(SB)/8, $libc_removexattr_trampoline<>(SB) - - TEXT libc_fremovexattr_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fremovexattr(SB) -- - GLOBL ·libc_fremovexattr_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fremovexattr_trampoline_addr(SB)/8, $libc_fremovexattr_trampoline<>(SB) - - TEXT libc_listxattr_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_listxattr(SB) -- - GLOBL ·libc_listxattr_trampoline_addr(SB), RODATA, $8 - DATA ·libc_listxattr_trampoline_addr(SB)/8, $libc_listxattr_trampoline<>(SB) - - TEXT libc_flistxattr_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_flistxattr(SB) -- - GLOBL ·libc_flistxattr_trampoline_addr(SB), RODATA, $8 - DATA ·libc_flistxattr_trampoline_addr(SB)/8, $libc_flistxattr_trampoline<>(SB) - - TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_utimensat(SB) -- - GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB) - - TEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fcntl(SB) -- - GLOBL ·libc_fcntl_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB) - - TEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_kill(SB) -- - GLOBL ·libc_kill_trampoline_addr(SB), RODATA, $8 - DATA ·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB) - - TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_ioctl(SB) -- - GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $8 - DATA ·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB) - - TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_sysctl(SB) -- - GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 - DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB) - - TEXT libc_sendfile_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_sendfile(SB) -- - GLOBL ·libc_sendfile_trampoline_addr(SB), RODATA, $8 - DATA ·libc_sendfile_trampoline_addr(SB)/8, $libc_sendfile_trampoline<>(SB) - - TEXT libc_shmat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_shmat(SB) -- - GLOBL ·libc_shmat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_shmat_trampoline_addr(SB)/8, $libc_shmat_trampoline<>(SB) - - TEXT libc_shmctl_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_shmctl(SB) -- - GLOBL ·libc_shmctl_trampoline_addr(SB), RODATA, $8 - DATA ·libc_shmctl_trampoline_addr(SB)/8, $libc_shmctl_trampoline<>(SB) - - TEXT libc_shmdt_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_shmdt(SB) -- - GLOBL ·libc_shmdt_trampoline_addr(SB), RODATA, $8 - DATA ·libc_shmdt_trampoline_addr(SB)/8, $libc_shmdt_trampoline<>(SB) - - TEXT libc_shmget_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_shmget(SB) -- - GLOBL ·libc_shmget_trampoline_addr(SB), RODATA, $8 - DATA ·libc_shmget_trampoline_addr(SB)/8, $libc_shmget_trampoline<>(SB) - - TEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_access(SB) -- - GLOBL ·libc_access_trampoline_addr(SB), RODATA, $8 - DATA ·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB) - - TEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_adjtime(SB) -- - GLOBL ·libc_adjtime_trampoline_addr(SB), RODATA, $8 - DATA ·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB) - - TEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_chdir(SB) -- - GLOBL ·libc_chdir_trampoline_addr(SB), RODATA, $8 - DATA ·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB) - - TEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_chflags(SB) -- - GLOBL ·libc_chflags_trampoline_addr(SB), RODATA, $8 - DATA ·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB) - - TEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_chmod(SB) -- - GLOBL ·libc_chmod_trampoline_addr(SB), RODATA, $8 - DATA ·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB) - - TEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_chown(SB) -- - GLOBL ·libc_chown_trampoline_addr(SB), RODATA, $8 - DATA ·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB) - - TEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_chroot(SB) -- - GLOBL ·libc_chroot_trampoline_addr(SB), RODATA, $8 - DATA ·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB) - - TEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_clock_gettime(SB) -- - GLOBL ·libc_clock_gettime_trampoline_addr(SB), RODATA, $8 - DATA ·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB) - - TEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_close(SB) -- - GLOBL ·libc_close_trampoline_addr(SB), RODATA, $8 - DATA ·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB) - - TEXT libc_clonefile_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_clonefile(SB) -- - GLOBL ·libc_clonefile_trampoline_addr(SB), RODATA, $8 - DATA ·libc_clonefile_trampoline_addr(SB)/8, $libc_clonefile_trampoline<>(SB) - - TEXT libc_clonefileat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_clonefileat(SB) -- - GLOBL ·libc_clonefileat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_clonefileat_trampoline_addr(SB)/8, $libc_clonefileat_trampoline<>(SB) - - TEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_dup(SB) -- - GLOBL ·libc_dup_trampoline_addr(SB), RODATA, $8 - DATA ·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB) - - TEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_dup2(SB) -- - GLOBL ·libc_dup2_trampoline_addr(SB), RODATA, $8 - DATA ·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB) - - TEXT libc_exchangedata_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_exchangedata(SB) -- - GLOBL ·libc_exchangedata_trampoline_addr(SB), RODATA, $8 - DATA ·libc_exchangedata_trampoline_addr(SB)/8, $libc_exchangedata_trampoline<>(SB) - - TEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_exit(SB) -- - GLOBL ·libc_exit_trampoline_addr(SB), RODATA, $8 - DATA ·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB) - - TEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_faccessat(SB) -- - GLOBL ·libc_faccessat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB) - - TEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchdir(SB) -- - GLOBL ·libc_fchdir_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB) - - TEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchflags(SB) -- - GLOBL ·libc_fchflags_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB) - - TEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchmod(SB) -- - GLOBL ·libc_fchmod_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB) - - TEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchmodat(SB) -- - GLOBL ·libc_fchmodat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB) - - TEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchown(SB) -- - GLOBL ·libc_fchown_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB) - - TEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchownat(SB) -- - GLOBL ·libc_fchownat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB) - - TEXT libc_fclonefileat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fclonefileat(SB) -- - GLOBL ·libc_fclonefileat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fclonefileat_trampoline_addr(SB)/8, $libc_fclonefileat_trampoline<>(SB) - - TEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_flock(SB) -- - GLOBL ·libc_flock_trampoline_addr(SB), RODATA, $8 - DATA ·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB) - - TEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fpathconf(SB) -- - GLOBL ·libc_fpathconf_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB) - - TEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fsync(SB) -- - GLOBL ·libc_fsync_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB) - - TEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_ftruncate(SB) -- - GLOBL ·libc_ftruncate_trampoline_addr(SB), RODATA, $8 - DATA ·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB) - - TEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getcwd(SB) -- - GLOBL ·libc_getcwd_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB) - - TEXT libc_getdtablesize_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getdtablesize(SB) -- - GLOBL ·libc_getdtablesize_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getdtablesize_trampoline_addr(SB)/8, $libc_getdtablesize_trampoline<>(SB) - - TEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getegid(SB) -- - GLOBL ·libc_getegid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB) - - TEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_geteuid(SB) -- - GLOBL ·libc_geteuid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB) - - TEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getgid(SB) -- - GLOBL ·libc_getgid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB) - - TEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getpgid(SB) -- - GLOBL ·libc_getpgid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB) - - TEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getpgrp(SB) -- - GLOBL ·libc_getpgrp_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB) - - TEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getpid(SB) -- - GLOBL ·libc_getpid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB) - - TEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getppid(SB) -- - GLOBL ·libc_getppid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB) - - TEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getpriority(SB) -- - GLOBL ·libc_getpriority_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB) - - TEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getrlimit(SB) -- - GLOBL ·libc_getrlimit_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB) - - TEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getrusage(SB) -- - GLOBL ·libc_getrusage_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB) - - TEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getsid(SB) -- - GLOBL ·libc_getsid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB) - - TEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_gettimeofday(SB) -- - GLOBL ·libc_gettimeofday_trampoline_addr(SB), RODATA, $8 - DATA ·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB) - - TEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getuid(SB) -- - GLOBL ·libc_getuid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB) - - TEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_issetugid(SB) -- - GLOBL ·libc_issetugid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB) - - TEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_kqueue(SB) -- - GLOBL ·libc_kqueue_trampoline_addr(SB), RODATA, $8 - DATA ·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB) - - TEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_lchown(SB) -- - GLOBL ·libc_lchown_trampoline_addr(SB), RODATA, $8 - DATA ·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB) - - TEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_link(SB) -- - GLOBL ·libc_link_trampoline_addr(SB), RODATA, $8 - DATA ·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB) - - TEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_linkat(SB) -- - GLOBL ·libc_linkat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB) - - TEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_listen(SB) -- - GLOBL ·libc_listen_trampoline_addr(SB), RODATA, $8 - DATA ·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB) - - TEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mkdir(SB) -- - GLOBL ·libc_mkdir_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB) - - TEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mkdirat(SB) -- - GLOBL ·libc_mkdirat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB) - - TEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mkfifo(SB) -- - GLOBL ·libc_mkfifo_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB) - - TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mknod(SB) -- - GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB) - - TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mount(SB) -- - GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB) - - TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_open(SB) -- - GLOBL ·libc_open_trampoline_addr(SB), RODATA, $8 - DATA ·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB) - - TEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_openat(SB) -- - GLOBL ·libc_openat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB) - - TEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_pathconf(SB) -- - GLOBL ·libc_pathconf_trampoline_addr(SB), RODATA, $8 - DATA ·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB) - - TEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_pread(SB) -- - GLOBL ·libc_pread_trampoline_addr(SB), RODATA, $8 - DATA ·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB) - - TEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_pwrite(SB) -- - GLOBL ·libc_pwrite_trampoline_addr(SB), RODATA, $8 - DATA ·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB) - - TEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_read(SB) -- - GLOBL ·libc_read_trampoline_addr(SB), RODATA, $8 - DATA ·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB) - - TEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_readlink(SB) -- - GLOBL ·libc_readlink_trampoline_addr(SB), RODATA, $8 - DATA ·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB) - - TEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_readlinkat(SB) -- - GLOBL ·libc_readlinkat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB) - - TEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_rename(SB) -- - GLOBL ·libc_rename_trampoline_addr(SB), RODATA, $8 - DATA ·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB) - - TEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_renameat(SB) -- - GLOBL ·libc_renameat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB) - - TEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_revoke(SB) -- - GLOBL ·libc_revoke_trampoline_addr(SB), RODATA, $8 - DATA ·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB) - - TEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_rmdir(SB) -- - GLOBL ·libc_rmdir_trampoline_addr(SB), RODATA, $8 - DATA ·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB) - - TEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_lseek(SB) -- - GLOBL ·libc_lseek_trampoline_addr(SB), RODATA, $8 - DATA ·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB) - - TEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_select(SB) -- - GLOBL ·libc_select_trampoline_addr(SB), RODATA, $8 - DATA ·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB) - -+TEXT libc_setattrlist_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_setattrlist(SB) -+GLOBL ·libc_setattrlist_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_setattrlist_trampoline_addr(SB)/8, $libc_setattrlist_trampoline<>(SB) -+ - TEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setegid(SB) -- - GLOBL ·libc_setegid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB) - - TEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_seteuid(SB) -- - GLOBL ·libc_seteuid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB) - - TEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setgid(SB) -- - GLOBL ·libc_setgid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB) - - TEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setlogin(SB) -- - GLOBL ·libc_setlogin_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB) - - TEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setpgid(SB) -- - GLOBL ·libc_setpgid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB) - - TEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setpriority(SB) -- - GLOBL ·libc_setpriority_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB) - - TEXT libc_setprivexec_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setprivexec(SB) -- - GLOBL ·libc_setprivexec_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setprivexec_trampoline_addr(SB)/8, $libc_setprivexec_trampoline<>(SB) - - TEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setregid(SB) -- - GLOBL ·libc_setregid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB) - - TEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setreuid(SB) -- - GLOBL ·libc_setreuid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB) - --TEXT libc_setrlimit_trampoline<>(SB),NOSPLIT,$0-0 -- JMP libc_setrlimit(SB) -- --GLOBL ·libc_setrlimit_trampoline_addr(SB), RODATA, $8 --DATA ·libc_setrlimit_trampoline_addr(SB)/8, $libc_setrlimit_trampoline<>(SB) -- - TEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setsid(SB) -- - GLOBL ·libc_setsid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB) - - TEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_settimeofday(SB) -- - GLOBL ·libc_settimeofday_trampoline_addr(SB), RODATA, $8 - DATA ·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB) - - TEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setuid(SB) -- - GLOBL ·libc_setuid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB) - - TEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_symlink(SB) -- - GLOBL ·libc_symlink_trampoline_addr(SB), RODATA, $8 - DATA ·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB) - - TEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_symlinkat(SB) -- - GLOBL ·libc_symlinkat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB) - - TEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_sync(SB) -- - GLOBL ·libc_sync_trampoline_addr(SB), RODATA, $8 - DATA ·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB) - - TEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_truncate(SB) -- - GLOBL ·libc_truncate_trampoline_addr(SB), RODATA, $8 - DATA ·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB) - - TEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_umask(SB) -- - GLOBL ·libc_umask_trampoline_addr(SB), RODATA, $8 - DATA ·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB) - - TEXT libc_undelete_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_undelete(SB) -- - GLOBL ·libc_undelete_trampoline_addr(SB), RODATA, $8 - DATA ·libc_undelete_trampoline_addr(SB)/8, $libc_undelete_trampoline<>(SB) - - TEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_unlink(SB) -- - GLOBL ·libc_unlink_trampoline_addr(SB), RODATA, $8 - DATA ·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB) - - TEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_unlinkat(SB) -- - GLOBL ·libc_unlinkat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB) - - TEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_unmount(SB) -- - GLOBL ·libc_unmount_trampoline_addr(SB), RODATA, $8 - DATA ·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB) - - TEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_write(SB) -- - GLOBL ·libc_write_trampoline_addr(SB), RODATA, $8 - DATA ·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB) - - TEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mmap(SB) -- - GLOBL ·libc_mmap_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB) - - TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_munmap(SB) -- - GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8 - DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB) - - TEXT libc_fstat64_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fstat64(SB) -- - GLOBL ·libc_fstat64_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fstat64_trampoline_addr(SB)/8, $libc_fstat64_trampoline<>(SB) - - TEXT libc_fstatat64_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fstatat64(SB) -- - GLOBL ·libc_fstatat64_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fstatat64_trampoline_addr(SB)/8, $libc_fstatat64_trampoline<>(SB) - - TEXT libc_fstatfs64_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fstatfs64(SB) -- - GLOBL ·libc_fstatfs64_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fstatfs64_trampoline_addr(SB)/8, $libc_fstatfs64_trampoline<>(SB) - - TEXT libc_getfsstat64_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getfsstat64(SB) -- - GLOBL ·libc_getfsstat64_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getfsstat64_trampoline_addr(SB)/8, $libc_getfsstat64_trampoline<>(SB) - - TEXT libc_lstat64_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_lstat64(SB) -- - GLOBL ·libc_lstat64_trampoline_addr(SB), RODATA, $8 - DATA ·libc_lstat64_trampoline_addr(SB)/8, $libc_lstat64_trampoline<>(SB) - - TEXT libc_ptrace_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_ptrace(SB) -- - GLOBL ·libc_ptrace_trampoline_addr(SB), RODATA, $8 - DATA ·libc_ptrace_trampoline_addr(SB)/8, $libc_ptrace_trampoline<>(SB) - - TEXT libc_stat64_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_stat64(SB) -- - GLOBL ·libc_stat64_trampoline_addr(SB), RODATA, $8 - DATA ·libc_stat64_trampoline_addr(SB)/8, $libc_stat64_trampoline<>(SB) - - TEXT libc_statfs64_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_statfs64(SB) -- - GLOBL ·libc_statfs64_trampoline_addr(SB), RODATA, $8 - DATA ·libc_statfs64_trampoline_addr(SB)/8, $libc_statfs64_trampoline<>(SB) -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go -old mode 100644 -new mode 100755 -index 26a0fdc..b18edbd ---- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go -+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go -@@ -731,6 +731,16 @@ var libc_ioctl_trampoline_addr uintptr - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { -+ _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { -@@ -1984,6 +1994,31 @@ var libc_select_trampoline_addr uintptr - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func Setattrlist(path string, attrlist *Attrlist, attrBuf []byte, options int) (err error) { -+ var _p0 *byte -+ _p0, err = BytePtrFromString(path) -+ if err != nil { -+ return -+ } -+ var _p1 unsafe.Pointer -+ if len(attrBuf) > 0 { -+ _p1 = unsafe.Pointer(&attrBuf[0]) -+ } else { -+ _p1 = unsafe.Pointer(&_zero) -+ } -+ _, _, e1 := syscall_syscall6(libc_setattrlist_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(attrlist)), uintptr(_p1), uintptr(len(attrBuf)), uintptr(options), 0) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+var libc_setattrlist_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_setattrlist setattrlist "/usr/lib/libSystem.B.dylib" -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func Setegid(egid int) (err error) { - _, _, e1 := syscall_syscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0) - if e1 != 0 { -@@ -2115,20 +2150,6 @@ var libc_setreuid_trampoline_addr uintptr - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func Setrlimit(which int, lim *Rlimit) (err error) { -- _, _, e1 := syscall_rawSyscall(libc_setrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --var libc_setrlimit_trampoline_addr uintptr -- --//go:cgo_import_dynamic libc_setrlimit setrlimit "/usr/lib/libSystem.B.dylib" -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func Setsid() (pid int, err error) { - r0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0) - pid = int(r0) -@@ -2391,28 +2412,6 @@ var libc_munmap_trampoline_addr uintptr - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func readlen(fd int, buf *byte, nbuf int) (n int, err error) { -- r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) -- n = int(r0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- --func writelen(fd int, buf *byte, nbuf int) (n int, err error) { -- r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) -- n = int(r0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func Fstat(fd int, stat *Stat_t) (err error) { - _, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s -old mode 100644 -new mode 100755 -index efa5b4c..08362c1 ---- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s -+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s -@@ -5,900 +5,750 @@ - - TEXT libc_fdopendir_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fdopendir(SB) -- - GLOBL ·libc_fdopendir_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fdopendir_trampoline_addr(SB)/8, $libc_fdopendir_trampoline<>(SB) - - TEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getgroups(SB) -- - GLOBL ·libc_getgroups_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB) - - TEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setgroups(SB) -- - GLOBL ·libc_setgroups_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB) - - TEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_wait4(SB) -- - GLOBL ·libc_wait4_trampoline_addr(SB), RODATA, $8 - DATA ·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB) - - TEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_accept(SB) -- - GLOBL ·libc_accept_trampoline_addr(SB), RODATA, $8 - DATA ·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB) - - TEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_bind(SB) -- - GLOBL ·libc_bind_trampoline_addr(SB), RODATA, $8 - DATA ·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB) - - TEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_connect(SB) -- - GLOBL ·libc_connect_trampoline_addr(SB), RODATA, $8 - DATA ·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB) - - TEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_socket(SB) -- - GLOBL ·libc_socket_trampoline_addr(SB), RODATA, $8 - DATA ·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB) - - TEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getsockopt(SB) -- - GLOBL ·libc_getsockopt_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB) - - TEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setsockopt(SB) -- - GLOBL ·libc_setsockopt_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB) - - TEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getpeername(SB) -- - GLOBL ·libc_getpeername_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB) - - TEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getsockname(SB) -- - GLOBL ·libc_getsockname_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB) - - TEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_shutdown(SB) -- - GLOBL ·libc_shutdown_trampoline_addr(SB), RODATA, $8 - DATA ·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB) - - TEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_socketpair(SB) -- - GLOBL ·libc_socketpair_trampoline_addr(SB), RODATA, $8 - DATA ·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB) - - TEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_recvfrom(SB) -- - GLOBL ·libc_recvfrom_trampoline_addr(SB), RODATA, $8 - DATA ·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB) - - TEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_sendto(SB) -- - GLOBL ·libc_sendto_trampoline_addr(SB), RODATA, $8 - DATA ·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB) - - TEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_recvmsg(SB) -- - GLOBL ·libc_recvmsg_trampoline_addr(SB), RODATA, $8 - DATA ·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB) - - TEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_sendmsg(SB) -- - GLOBL ·libc_sendmsg_trampoline_addr(SB), RODATA, $8 - DATA ·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB) - - TEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_kevent(SB) -- - GLOBL ·libc_kevent_trampoline_addr(SB), RODATA, $8 - DATA ·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB) - - TEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_utimes(SB) -- - GLOBL ·libc_utimes_trampoline_addr(SB), RODATA, $8 - DATA ·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB) - - TEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_futimes(SB) -- - GLOBL ·libc_futimes_trampoline_addr(SB), RODATA, $8 - DATA ·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB) - - TEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_poll(SB) -- - GLOBL ·libc_poll_trampoline_addr(SB), RODATA, $8 - DATA ·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB) - - TEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_madvise(SB) -- - GLOBL ·libc_madvise_trampoline_addr(SB), RODATA, $8 - DATA ·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB) - - TEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mlock(SB) -- - GLOBL ·libc_mlock_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB) - - TEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mlockall(SB) -- - GLOBL ·libc_mlockall_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB) - - TEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mprotect(SB) -- - GLOBL ·libc_mprotect_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB) - - TEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_msync(SB) -- - GLOBL ·libc_msync_trampoline_addr(SB), RODATA, $8 - DATA ·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB) - - TEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_munlock(SB) -- - GLOBL ·libc_munlock_trampoline_addr(SB), RODATA, $8 - DATA ·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB) - - TEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_munlockall(SB) -- - GLOBL ·libc_munlockall_trampoline_addr(SB), RODATA, $8 - DATA ·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB) - - TEXT libc_closedir_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_closedir(SB) -- - GLOBL ·libc_closedir_trampoline_addr(SB), RODATA, $8 - DATA ·libc_closedir_trampoline_addr(SB)/8, $libc_closedir_trampoline<>(SB) - - TEXT libc_readdir_r_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_readdir_r(SB) -- - GLOBL ·libc_readdir_r_trampoline_addr(SB), RODATA, $8 - DATA ·libc_readdir_r_trampoline_addr(SB)/8, $libc_readdir_r_trampoline<>(SB) - - TEXT libc_pipe_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_pipe(SB) -- - GLOBL ·libc_pipe_trampoline_addr(SB), RODATA, $8 - DATA ·libc_pipe_trampoline_addr(SB)/8, $libc_pipe_trampoline<>(SB) - - TEXT libc_getxattr_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getxattr(SB) -- - GLOBL ·libc_getxattr_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getxattr_trampoline_addr(SB)/8, $libc_getxattr_trampoline<>(SB) - - TEXT libc_fgetxattr_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fgetxattr(SB) -- - GLOBL ·libc_fgetxattr_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fgetxattr_trampoline_addr(SB)/8, $libc_fgetxattr_trampoline<>(SB) - - TEXT libc_setxattr_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setxattr(SB) -- - GLOBL ·libc_setxattr_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setxattr_trampoline_addr(SB)/8, $libc_setxattr_trampoline<>(SB) - - TEXT libc_fsetxattr_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fsetxattr(SB) -- - GLOBL ·libc_fsetxattr_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fsetxattr_trampoline_addr(SB)/8, $libc_fsetxattr_trampoline<>(SB) - - TEXT libc_removexattr_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_removexattr(SB) -- - GLOBL ·libc_removexattr_trampoline_addr(SB), RODATA, $8 - DATA ·libc_removexattr_trampoline_addr(SB)/8, $libc_removexattr_trampoline<>(SB) - - TEXT libc_fremovexattr_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fremovexattr(SB) -- - GLOBL ·libc_fremovexattr_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fremovexattr_trampoline_addr(SB)/8, $libc_fremovexattr_trampoline<>(SB) - - TEXT libc_listxattr_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_listxattr(SB) -- - GLOBL ·libc_listxattr_trampoline_addr(SB), RODATA, $8 - DATA ·libc_listxattr_trampoline_addr(SB)/8, $libc_listxattr_trampoline<>(SB) - - TEXT libc_flistxattr_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_flistxattr(SB) -- - GLOBL ·libc_flistxattr_trampoline_addr(SB), RODATA, $8 - DATA ·libc_flistxattr_trampoline_addr(SB)/8, $libc_flistxattr_trampoline<>(SB) - - TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_utimensat(SB) -- - GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB) - - TEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fcntl(SB) -- - GLOBL ·libc_fcntl_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB) - - TEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_kill(SB) -- - GLOBL ·libc_kill_trampoline_addr(SB), RODATA, $8 - DATA ·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB) - - TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_ioctl(SB) -- - GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $8 - DATA ·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB) - - TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_sysctl(SB) -- - GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 - DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB) - - TEXT libc_sendfile_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_sendfile(SB) -- - GLOBL ·libc_sendfile_trampoline_addr(SB), RODATA, $8 - DATA ·libc_sendfile_trampoline_addr(SB)/8, $libc_sendfile_trampoline<>(SB) - - TEXT libc_shmat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_shmat(SB) -- - GLOBL ·libc_shmat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_shmat_trampoline_addr(SB)/8, $libc_shmat_trampoline<>(SB) - - TEXT libc_shmctl_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_shmctl(SB) -- - GLOBL ·libc_shmctl_trampoline_addr(SB), RODATA, $8 - DATA ·libc_shmctl_trampoline_addr(SB)/8, $libc_shmctl_trampoline<>(SB) - - TEXT libc_shmdt_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_shmdt(SB) -- - GLOBL ·libc_shmdt_trampoline_addr(SB), RODATA, $8 - DATA ·libc_shmdt_trampoline_addr(SB)/8, $libc_shmdt_trampoline<>(SB) - - TEXT libc_shmget_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_shmget(SB) -- - GLOBL ·libc_shmget_trampoline_addr(SB), RODATA, $8 - DATA ·libc_shmget_trampoline_addr(SB)/8, $libc_shmget_trampoline<>(SB) - - TEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_access(SB) -- - GLOBL ·libc_access_trampoline_addr(SB), RODATA, $8 - DATA ·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB) - - TEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_adjtime(SB) -- - GLOBL ·libc_adjtime_trampoline_addr(SB), RODATA, $8 - DATA ·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB) - - TEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_chdir(SB) -- - GLOBL ·libc_chdir_trampoline_addr(SB), RODATA, $8 - DATA ·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB) - - TEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_chflags(SB) -- - GLOBL ·libc_chflags_trampoline_addr(SB), RODATA, $8 - DATA ·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB) - - TEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_chmod(SB) -- - GLOBL ·libc_chmod_trampoline_addr(SB), RODATA, $8 - DATA ·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB) - - TEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_chown(SB) -- - GLOBL ·libc_chown_trampoline_addr(SB), RODATA, $8 - DATA ·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB) - - TEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_chroot(SB) -- - GLOBL ·libc_chroot_trampoline_addr(SB), RODATA, $8 - DATA ·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB) - - TEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_clock_gettime(SB) -- - GLOBL ·libc_clock_gettime_trampoline_addr(SB), RODATA, $8 - DATA ·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB) - - TEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_close(SB) -- - GLOBL ·libc_close_trampoline_addr(SB), RODATA, $8 - DATA ·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB) - - TEXT libc_clonefile_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_clonefile(SB) -- - GLOBL ·libc_clonefile_trampoline_addr(SB), RODATA, $8 - DATA ·libc_clonefile_trampoline_addr(SB)/8, $libc_clonefile_trampoline<>(SB) - - TEXT libc_clonefileat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_clonefileat(SB) -- - GLOBL ·libc_clonefileat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_clonefileat_trampoline_addr(SB)/8, $libc_clonefileat_trampoline<>(SB) - - TEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_dup(SB) -- - GLOBL ·libc_dup_trampoline_addr(SB), RODATA, $8 - DATA ·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB) - - TEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_dup2(SB) -- - GLOBL ·libc_dup2_trampoline_addr(SB), RODATA, $8 - DATA ·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB) - - TEXT libc_exchangedata_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_exchangedata(SB) -- - GLOBL ·libc_exchangedata_trampoline_addr(SB), RODATA, $8 - DATA ·libc_exchangedata_trampoline_addr(SB)/8, $libc_exchangedata_trampoline<>(SB) - - TEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_exit(SB) -- - GLOBL ·libc_exit_trampoline_addr(SB), RODATA, $8 - DATA ·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB) - - TEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_faccessat(SB) -- - GLOBL ·libc_faccessat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB) - - TEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchdir(SB) -- - GLOBL ·libc_fchdir_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB) - - TEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchflags(SB) -- - GLOBL ·libc_fchflags_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB) - - TEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchmod(SB) -- - GLOBL ·libc_fchmod_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB) - - TEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchmodat(SB) -- - GLOBL ·libc_fchmodat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB) - - TEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchown(SB) -- - GLOBL ·libc_fchown_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB) - - TEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchownat(SB) -- - GLOBL ·libc_fchownat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB) - - TEXT libc_fclonefileat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fclonefileat(SB) -- - GLOBL ·libc_fclonefileat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fclonefileat_trampoline_addr(SB)/8, $libc_fclonefileat_trampoline<>(SB) - - TEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_flock(SB) -- - GLOBL ·libc_flock_trampoline_addr(SB), RODATA, $8 - DATA ·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB) - - TEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fpathconf(SB) -- - GLOBL ·libc_fpathconf_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB) - - TEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fsync(SB) -- - GLOBL ·libc_fsync_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB) - - TEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_ftruncate(SB) -- - GLOBL ·libc_ftruncate_trampoline_addr(SB), RODATA, $8 - DATA ·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB) - - TEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getcwd(SB) -- - GLOBL ·libc_getcwd_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB) - - TEXT libc_getdtablesize_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getdtablesize(SB) -- - GLOBL ·libc_getdtablesize_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getdtablesize_trampoline_addr(SB)/8, $libc_getdtablesize_trampoline<>(SB) - - TEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getegid(SB) -- - GLOBL ·libc_getegid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB) - - TEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_geteuid(SB) -- - GLOBL ·libc_geteuid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB) - - TEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getgid(SB) -- - GLOBL ·libc_getgid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB) - - TEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getpgid(SB) -- - GLOBL ·libc_getpgid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB) - - TEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getpgrp(SB) -- - GLOBL ·libc_getpgrp_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB) - - TEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getpid(SB) -- - GLOBL ·libc_getpid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB) - - TEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getppid(SB) -- - GLOBL ·libc_getppid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB) - - TEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getpriority(SB) -- - GLOBL ·libc_getpriority_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB) - - TEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getrlimit(SB) -- - GLOBL ·libc_getrlimit_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB) - - TEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getrusage(SB) -- - GLOBL ·libc_getrusage_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB) - - TEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getsid(SB) -- - GLOBL ·libc_getsid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB) - - TEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_gettimeofday(SB) -- - GLOBL ·libc_gettimeofday_trampoline_addr(SB), RODATA, $8 - DATA ·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB) - - TEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getuid(SB) -- - GLOBL ·libc_getuid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB) - - TEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_issetugid(SB) -- - GLOBL ·libc_issetugid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB) - - TEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_kqueue(SB) -- - GLOBL ·libc_kqueue_trampoline_addr(SB), RODATA, $8 - DATA ·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB) - - TEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_lchown(SB) -- - GLOBL ·libc_lchown_trampoline_addr(SB), RODATA, $8 - DATA ·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB) - - TEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_link(SB) -- - GLOBL ·libc_link_trampoline_addr(SB), RODATA, $8 - DATA ·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB) - - TEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_linkat(SB) -- - GLOBL ·libc_linkat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB) - - TEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_listen(SB) -- - GLOBL ·libc_listen_trampoline_addr(SB), RODATA, $8 - DATA ·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB) - - TEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mkdir(SB) -- - GLOBL ·libc_mkdir_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB) - - TEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mkdirat(SB) -- - GLOBL ·libc_mkdirat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB) - - TEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mkfifo(SB) -- - GLOBL ·libc_mkfifo_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB) - - TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mknod(SB) -- - GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB) - - TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mount(SB) -- - GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB) - - TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_open(SB) -- - GLOBL ·libc_open_trampoline_addr(SB), RODATA, $8 - DATA ·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB) - - TEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_openat(SB) -- - GLOBL ·libc_openat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB) - - TEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_pathconf(SB) -- - GLOBL ·libc_pathconf_trampoline_addr(SB), RODATA, $8 - DATA ·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB) - - TEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_pread(SB) -- - GLOBL ·libc_pread_trampoline_addr(SB), RODATA, $8 - DATA ·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB) - - TEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_pwrite(SB) -- - GLOBL ·libc_pwrite_trampoline_addr(SB), RODATA, $8 - DATA ·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB) - - TEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_read(SB) -- - GLOBL ·libc_read_trampoline_addr(SB), RODATA, $8 - DATA ·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB) - - TEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_readlink(SB) -- - GLOBL ·libc_readlink_trampoline_addr(SB), RODATA, $8 - DATA ·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB) - - TEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_readlinkat(SB) -- - GLOBL ·libc_readlinkat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB) - - TEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_rename(SB) -- - GLOBL ·libc_rename_trampoline_addr(SB), RODATA, $8 - DATA ·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB) - - TEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_renameat(SB) -- - GLOBL ·libc_renameat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB) - - TEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_revoke(SB) -- - GLOBL ·libc_revoke_trampoline_addr(SB), RODATA, $8 - DATA ·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB) - - TEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_rmdir(SB) -- - GLOBL ·libc_rmdir_trampoline_addr(SB), RODATA, $8 - DATA ·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB) - - TEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_lseek(SB) -- - GLOBL ·libc_lseek_trampoline_addr(SB), RODATA, $8 - DATA ·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB) - - TEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_select(SB) -- - GLOBL ·libc_select_trampoline_addr(SB), RODATA, $8 - DATA ·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB) - -+TEXT libc_setattrlist_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_setattrlist(SB) -+GLOBL ·libc_setattrlist_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_setattrlist_trampoline_addr(SB)/8, $libc_setattrlist_trampoline<>(SB) -+ - TEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setegid(SB) -- - GLOBL ·libc_setegid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB) - - TEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_seteuid(SB) -- - GLOBL ·libc_seteuid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB) - - TEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setgid(SB) -- - GLOBL ·libc_setgid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB) - - TEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setlogin(SB) -- - GLOBL ·libc_setlogin_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB) - - TEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setpgid(SB) -- - GLOBL ·libc_setpgid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB) - - TEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setpriority(SB) -- - GLOBL ·libc_setpriority_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB) - - TEXT libc_setprivexec_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setprivexec(SB) -- - GLOBL ·libc_setprivexec_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setprivexec_trampoline_addr(SB)/8, $libc_setprivexec_trampoline<>(SB) - - TEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setregid(SB) -- - GLOBL ·libc_setregid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB) - - TEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setreuid(SB) -- - GLOBL ·libc_setreuid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB) - --TEXT libc_setrlimit_trampoline<>(SB),NOSPLIT,$0-0 -- JMP libc_setrlimit(SB) -- --GLOBL ·libc_setrlimit_trampoline_addr(SB), RODATA, $8 --DATA ·libc_setrlimit_trampoline_addr(SB)/8, $libc_setrlimit_trampoline<>(SB) -- - TEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setsid(SB) -- - GLOBL ·libc_setsid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB) - - TEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_settimeofday(SB) -- - GLOBL ·libc_settimeofday_trampoline_addr(SB), RODATA, $8 - DATA ·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB) - - TEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setuid(SB) -- - GLOBL ·libc_setuid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB) - - TEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_symlink(SB) -- - GLOBL ·libc_symlink_trampoline_addr(SB), RODATA, $8 - DATA ·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB) - - TEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_symlinkat(SB) -- - GLOBL ·libc_symlinkat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB) - - TEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_sync(SB) -- - GLOBL ·libc_sync_trampoline_addr(SB), RODATA, $8 - DATA ·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB) - - TEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_truncate(SB) -- - GLOBL ·libc_truncate_trampoline_addr(SB), RODATA, $8 - DATA ·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB) - - TEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_umask(SB) -- - GLOBL ·libc_umask_trampoline_addr(SB), RODATA, $8 - DATA ·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB) - - TEXT libc_undelete_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_undelete(SB) -- - GLOBL ·libc_undelete_trampoline_addr(SB), RODATA, $8 - DATA ·libc_undelete_trampoline_addr(SB)/8, $libc_undelete_trampoline<>(SB) - - TEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_unlink(SB) -- - GLOBL ·libc_unlink_trampoline_addr(SB), RODATA, $8 - DATA ·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB) - - TEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_unlinkat(SB) -- - GLOBL ·libc_unlinkat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB) - - TEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_unmount(SB) -- - GLOBL ·libc_unmount_trampoline_addr(SB), RODATA, $8 - DATA ·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB) - - TEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_write(SB) -- - GLOBL ·libc_write_trampoline_addr(SB), RODATA, $8 - DATA ·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB) - - TEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mmap(SB) -- - GLOBL ·libc_mmap_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB) - - TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_munmap(SB) -- - GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8 - DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB) - - TEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fstat(SB) -- - GLOBL ·libc_fstat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB) - - TEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fstatat(SB) -- - GLOBL ·libc_fstatat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB) - - TEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fstatfs(SB) -- - GLOBL ·libc_fstatfs_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB) - - TEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getfsstat(SB) -- - GLOBL ·libc_getfsstat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB) - - TEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_lstat(SB) -- - GLOBL ·libc_lstat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB) - - TEXT libc_ptrace_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_ptrace(SB) -- - GLOBL ·libc_ptrace_trampoline_addr(SB), RODATA, $8 - DATA ·libc_ptrace_trampoline_addr(SB)/8, $libc_ptrace_trampoline<>(SB) - - TEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_stat(SB) -- - GLOBL ·libc_stat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB) - - TEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_statfs(SB) -- - GLOBL ·libc_statfs_trampoline_addr(SB), RODATA, $8 - DATA ·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB) -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go -old mode 100644 -new mode 100755 -index 1b6eedf..0c67df6 ---- a/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go -+++ b/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go -@@ -436,6 +436,16 @@ func ioctl(fd int, req uint, arg uintptr) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { -+ _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { -@@ -552,6 +562,16 @@ func Chroot(path string) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ClockGettime(clockid int32, time *Timespec) (err error) { -+ _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func Close(fd int) (err error) { - _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) - if e1 != 0 { -@@ -1390,16 +1410,6 @@ func Setresuid(ruid int, euid int, suid int) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func Setrlimit(which int, lim *Rlimit) (err error) { -- _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func Setsid() (pid int, err error) { - r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) - pid = int(r0) -@@ -1632,28 +1642,6 @@ func munmap(addr uintptr, length uintptr) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func readlen(fd int, buf *byte, nbuf int) (n int, err error) { -- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) -- n = int(r0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- --func writelen(fd int, buf *byte, nbuf int) (n int, err error) { -- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) -- n = int(r0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { - r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) - nfd = int(r0) -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go -old mode 100644 -new mode 100755 -index 039c4aa..e6e05d1 ---- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go -+++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go -@@ -388,6 +388,16 @@ func ioctl(fd int, req uint, arg uintptr) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { -+ _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { -@@ -414,6 +424,16 @@ func ptrace(request int, pid int, addr uintptr, data int) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) { -+ _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func Access(path string, mode uint32) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) -@@ -544,6 +564,16 @@ func Chroot(path string) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ClockGettime(clockid int32, time *Timespec) (err error) { -+ _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func Close(fd int) (err error) { - _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) - if e1 != 0 { -@@ -1615,16 +1645,6 @@ func Setresuid(ruid int, euid int, suid int) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func Setrlimit(which int, lim *Rlimit) (err error) { -- _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func Setsid() (pid int, err error) { - r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) - pid = int(r0) -@@ -1842,28 +1862,6 @@ func munmap(addr uintptr, length uintptr) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func readlen(fd int, buf *byte, nbuf int) (n int, err error) { -- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) -- n = int(r0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- --func writelen(fd int, buf *byte, nbuf int) (n int, err error) { -- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) -- n = int(r0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { - r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) - nfd = int(r0) -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go -old mode 100644 -new mode 100755 -index 0535d3c..7508acc ---- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go -+++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go -@@ -388,6 +388,16 @@ func ioctl(fd int, req uint, arg uintptr) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { -+ _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { -@@ -414,6 +424,16 @@ func ptrace(request int, pid int, addr uintptr, data int) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) { -+ _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func Access(path string, mode uint32) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) -@@ -544,6 +564,16 @@ func Chroot(path string) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ClockGettime(clockid int32, time *Timespec) (err error) { -+ _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func Close(fd int) (err error) { - _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) - if e1 != 0 { -@@ -1615,16 +1645,6 @@ func Setresuid(ruid int, euid int, suid int) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func Setrlimit(which int, lim *Rlimit) (err error) { -- _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func Setsid() (pid int, err error) { - r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) - pid = int(r0) -@@ -1842,28 +1862,6 @@ func munmap(addr uintptr, length uintptr) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func readlen(fd int, buf *byte, nbuf int) (n int, err error) { -- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) -- n = int(r0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- --func writelen(fd int, buf *byte, nbuf int) (n int, err error) { -- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) -- n = int(r0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { - r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) - nfd = int(r0) -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go -old mode 100644 -new mode 100755 -index 1018b52..7b56aea ---- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go -+++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go -@@ -388,6 +388,16 @@ func ioctl(fd int, req uint, arg uintptr) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { -+ _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { -@@ -414,6 +424,16 @@ func ptrace(request int, pid int, addr uintptr, data int) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) { -+ _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func Access(path string, mode uint32) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) -@@ -544,6 +564,16 @@ func Chroot(path string) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ClockGettime(clockid int32, time *Timespec) (err error) { -+ _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func Close(fd int) (err error) { - _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) - if e1 != 0 { -@@ -1615,16 +1645,6 @@ func Setresuid(ruid int, euid int, suid int) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func Setrlimit(which int, lim *Rlimit) (err error) { -- _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func Setsid() (pid int, err error) { - r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) - pid = int(r0) -@@ -1842,28 +1862,6 @@ func munmap(addr uintptr, length uintptr) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func readlen(fd int, buf *byte, nbuf int) (n int, err error) { -- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) -- n = int(r0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- --func writelen(fd int, buf *byte, nbuf int) (n int, err error) { -- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) -- n = int(r0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { - r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) - nfd = int(r0) -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go -old mode 100644 -new mode 100755 -index 3802f4b..cc623dc ---- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go -+++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go -@@ -388,6 +388,16 @@ func ioctl(fd int, req uint, arg uintptr) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { -+ _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { -@@ -414,6 +424,16 @@ func ptrace(request int, pid int, addr uintptr, data int) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) { -+ _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func Access(path string, mode uint32) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) -@@ -544,6 +564,16 @@ func Chroot(path string) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ClockGettime(clockid int32, time *Timespec) (err error) { -+ _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func Close(fd int) (err error) { - _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) - if e1 != 0 { -@@ -1615,16 +1645,6 @@ func Setresuid(ruid int, euid int, suid int) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func Setrlimit(which int, lim *Rlimit) (err error) { -- _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func Setsid() (pid int, err error) { - r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) - pid = int(r0) -@@ -1842,28 +1862,6 @@ func munmap(addr uintptr, length uintptr) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func readlen(fd int, buf *byte, nbuf int) (n int, err error) { -- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) -- n = int(r0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- --func writelen(fd int, buf *byte, nbuf int) (n int, err error) { -- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) -- n = int(r0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { - r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) - nfd = int(r0) -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go -old mode 100644 -new mode 100755 -index 8a2db7d..5818491 ---- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go -+++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go -@@ -388,6 +388,16 @@ func ioctl(fd int, req uint, arg uintptr) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { -+ _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { -@@ -414,6 +424,16 @@ func ptrace(request int, pid int, addr uintptr, data int) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) { -+ _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func Access(path string, mode uint32) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) -@@ -544,6 +564,16 @@ func Chroot(path string) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ClockGettime(clockid int32, time *Timespec) (err error) { -+ _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func Close(fd int) (err error) { - _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) - if e1 != 0 { -@@ -1615,16 +1645,6 @@ func Setresuid(ruid int, euid int, suid int) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func Setrlimit(which int, lim *Rlimit) (err error) { -- _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func Setsid() (pid int, err error) { - r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) - pid = int(r0) -@@ -1842,28 +1862,6 @@ func munmap(addr uintptr, length uintptr) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func readlen(fd int, buf *byte, nbuf int) (n int, err error) { -- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) -- n = int(r0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- --func writelen(fd int, buf *byte, nbuf int) (n int, err error) { -- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) -- n = int(r0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { - r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) - nfd = int(r0) -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go -old mode 100644 -new mode 100755 -index b57c705..6be25cd ---- a/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go -+++ b/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go -@@ -40,7 +40,7 @@ func readv(fd int, iovs []Iovec) (n int, err error) { - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procreadv)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), 0, 0, 0) - n = int(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -55,7 +55,7 @@ func preadv(fd int, iovs []Iovec, off int64) (n int, err error) { - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpreadv)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), uintptr(off), 0, 0) - n = int(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -70,7 +70,7 @@ func writev(fd int, iovs []Iovec) (n int, err error) { - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwritev)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), 0, 0, 0) - n = int(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -85,7 +85,7 @@ func pwritev(fd int, iovs []Iovec, off int64) (n int, err error) { - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpwritev)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), uintptr(off), 0, 0) - n = int(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -96,7 +96,7 @@ func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procaccept4)), 4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) - fd = int(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux.go b/vendor/golang.org/x/sys/unix/zsyscall_linux.go -old mode 100644 -new mode 100755 -index 293cf36..1ff3aec ---- a/vendor/golang.org/x/sys/unix/zsyscall_linux.go -+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux.go -@@ -379,6 +379,16 @@ func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ptracePtr(request int, pid int, addr uintptr, data unsafe.Pointer) (err error) { -+ _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(arg) -@@ -537,6 +547,17 @@ func Chroot(path string) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ClockAdjtime(clockid int32, buf *Timex) (state int, err error) { -+ r0, _, e1 := Syscall(SYS_CLOCK_ADJTIME, uintptr(clockid), uintptr(unsafe.Pointer(buf)), 0) -+ state = int(r0) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func ClockGetres(clockid int32, res *Timespec) (err error) { - _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) - if e1 != 0 { -@@ -1325,16 +1346,6 @@ func PivotRoot(newroot string, putold string) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func Prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { -- _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { - _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) - if e1 != 0 { -@@ -1345,7 +1356,7 @@ func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) ( - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { -+func pselect6(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *sigset_argpack) (n int, err error) { - r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) - n = int(r0) - if e1 != 0 { -@@ -1723,28 +1734,6 @@ func exitThread(code int) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func readlen(fd int, p *byte, np int) (n int, err error) { -- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) -- n = int(r0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- --func writelen(fd int, p *byte, np int) (n int, err error) { -- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) -- n = int(r0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func readv(fd int, iovs []Iovec) (n int, err error) { - var _p0 unsafe.Pointer - if len(iovs) > 0 { -@@ -1857,6 +1846,17 @@ func munmap(addr uintptr, length uintptr) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func mremap(oldaddr uintptr, oldlength uintptr, newlength uintptr, flags int, newaddr uintptr) (xaddr uintptr, err error) { -+ r0, _, e1 := Syscall6(SYS_MREMAP, uintptr(oldaddr), uintptr(oldlength), uintptr(newlength), uintptr(flags), uintptr(newaddr), 0) -+ xaddr = uintptr(r0) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func Madvise(b []byte, advice int) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { -@@ -2161,3 +2161,37 @@ func rtSigprocmask(how int, set *Sigset_t, oldset *Sigset_t, sigsetsize uintptr) - } - return - } -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ -+func getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) { -+ RawSyscallNoError(SYS_GETRESUID, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid))) -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ -+func getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) { -+ RawSyscallNoError(SYS_GETRESGID, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid))) -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ -+func schedSetattr(pid int, attr *SchedAttr, flags uint) (err error) { -+ _, _, e1 := Syscall(SYS_SCHED_SETATTR, uintptr(pid), uintptr(unsafe.Pointer(attr)), uintptr(flags)) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ -+func schedGetattr(pid int, attr *SchedAttr, size uint, flags uint) (err error) { -+ _, _, e1 := Syscall6(SYS_SCHED_GETATTR, uintptr(pid), uintptr(unsafe.Pointer(attr)), uintptr(size), uintptr(flags), 0, 0) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go -old mode 100644 -new mode 100755 -index c81b0ad..07b549c ---- a/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go -+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go -@@ -411,16 +411,6 @@ func getrlimit(resource int, rlim *rlimit32) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func setrlimit(resource int, rlim *rlimit32) (err error) { -- _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go -old mode 100644 -new mode 100755 -index 2206bce..5f481bf ---- a/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go -+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go -@@ -334,16 +334,6 @@ func setfsuid(uid int) (prev int, err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func Setrlimit(resource int, rlim *Rlimit) (err error) { -- _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func Shutdown(fd int, how int) (err error) { - _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) - if e1 != 0 { -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go -old mode 100644 -new mode 100755 -index edf6b39..824cd52 ---- a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go -+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go -@@ -578,16 +578,6 @@ func getrlimit(resource int, rlim *rlimit32) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func setrlimit(resource int, rlim *rlimit32) (err error) { -- _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func armSyncFileRange(fd int, flags int, off int64, n int64) (err error) { - _, _, e1 := Syscall6(SYS_ARM_SYNC_FILE_RANGE, uintptr(fd), uintptr(flags), uintptr(off), uintptr(off>>32), uintptr(n), uintptr(n>>32)) - if e1 != 0 { -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go -old mode 100644 -new mode 100755 -index 190609f..e77aecf ---- a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go -+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go -@@ -289,16 +289,6 @@ func setfsuid(uid int) (prev int, err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func setrlimit(resource int, rlim *Rlimit) (err error) { -- _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func Shutdown(fd int, how int) (err error) { - _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) - if e1 != 0 { -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_loong64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_loong64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go -old mode 100644 -new mode 100755 -index 5f984cb..961a3af ---- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go -+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go -@@ -644,16 +644,6 @@ func getrlimit(resource int, rlim *rlimit32) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func setrlimit(resource int, rlim *rlimit32) (err error) { -- _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func Alarm(seconds uint) (remaining uint, err error) { - r0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0) - remaining = uint(r0) -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go -old mode 100644 -new mode 100755 -index 46fc380..ed05005 ---- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go -+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go -@@ -278,16 +278,6 @@ func setfsuid(uid int) (prev int, err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func Setrlimit(resource int, rlim *Rlimit) (err error) { -- _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func Shutdown(fd int, how int) (err error) { - _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) - if e1 != 0 { -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go -old mode 100644 -new mode 100755 -index cbd0d4d..d365b71 ---- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go -+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go -@@ -278,16 +278,6 @@ func setfsuid(uid int) (prev int, err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func Setrlimit(resource int, rlim *Rlimit) (err error) { -- _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func Shutdown(fd int, how int) (err error) { - _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) - if e1 != 0 { -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go -old mode 100644 -new mode 100755 -index 0c13d15..c3f1b8b ---- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go -+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go -@@ -644,16 +644,6 @@ func getrlimit(resource int, rlim *rlimit32) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func setrlimit(resource int, rlim *rlimit32) (err error) { -- _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func Alarm(seconds uint) (remaining uint, err error) { - r0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0) - remaining = uint(r0) -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go -old mode 100644 -new mode 100755 -index e01432a..a6574cf ---- a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go -+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go -@@ -624,16 +624,6 @@ func getrlimit(resource int, rlim *rlimit32) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func setrlimit(resource int, rlim *rlimit32) (err error) { -- _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func syncFileRange2(fd int, flags int, off int64, n int64) (err error) { - _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(flags), uintptr(off>>32), uintptr(off), uintptr(n>>32), uintptr(n)) - if e1 != 0 { -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go -old mode 100644 -new mode 100755 -index 13c7ee7..f409902 ---- a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go -+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go -@@ -349,16 +349,6 @@ func setfsuid(uid int) (prev int, err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func Setrlimit(resource int, rlim *Rlimit) (err error) { -- _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func Shutdown(fd int, how int) (err error) { - _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) - if e1 != 0 { -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go -old mode 100644 -new mode 100755 -index 02d0c0f..9dfcc29 ---- a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go -+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go -@@ -349,16 +349,6 @@ func setfsuid(uid int) (prev int, err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func Setrlimit(resource int, rlim *Rlimit) (err error) { -- _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func Shutdown(fd int, how int) (err error) { - _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) - if e1 != 0 { -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go -old mode 100644 -new mode 100755 -index 9fee3b1..0ab4f2e ---- a/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go -+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go -@@ -269,16 +269,6 @@ func setfsuid(uid int) (prev int, err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func Setrlimit(resource int, rlim *Rlimit) (err error) { -- _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func Shutdown(fd int, how int) (err error) { - _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) - if e1 != 0 { -@@ -541,3 +531,19 @@ func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, f - } - return - } -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ -+func riscvHWProbe(pairs []RISCVHWProbePairs, cpuCount uintptr, cpus *CPUSet, flags uint) (err error) { -+ var _p0 unsafe.Pointer -+ if len(pairs) > 0 { -+ _p0 = unsafe.Pointer(&pairs[0]) -+ } else { -+ _p0 = unsafe.Pointer(&_zero) -+ } -+ _, _, e1 := Syscall6(SYS_RISCV_HWPROBE, uintptr(_p0), uintptr(len(pairs)), uintptr(cpuCount), uintptr(unsafe.Pointer(cpus)), uintptr(flags), 0) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go -old mode 100644 -new mode 100755 -index 647bbfe..6cde322 ---- a/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go -+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go -@@ -319,16 +319,6 @@ func setfsuid(uid int) (prev int, err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func Setrlimit(resource int, rlim *Rlimit) (err error) { -- _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { - r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) - n = int64(r0) -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go -old mode 100644 -new mode 100755 -index ada057f..5253d65 ---- a/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go -+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go -@@ -329,16 +329,6 @@ func setfsuid(uid int) (prev int, err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func Setrlimit(resource int, rlim *Rlimit) (err error) { -- _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func Shutdown(fd int, how int) (err error) { - _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) - if e1 != 0 { -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go -old mode 100644 -new mode 100755 -index 4af561a..2df3c5b ---- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go -+++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go -@@ -405,6 +405,16 @@ func ioctl(fd int, req uint, arg uintptr) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { -+ _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { -@@ -521,6 +531,16 @@ func Chroot(path string) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ClockGettime(clockid int32, time *Timespec) (err error) { -+ _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func Close(fd int) (err error) { - _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) - if e1 != 0 { -@@ -1587,16 +1607,6 @@ func Setreuid(ruid int, euid int) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func Setrlimit(which int, lim *Rlimit) (err error) { -- _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func Setsid() (pid int, err error) { - r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) - pid = int(r0) -@@ -1814,20 +1824,13 @@ func munmap(addr uintptr, length uintptr) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func readlen(fd int, buf *byte, nbuf int) (n int, err error) { -- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) -- n = int(r0) -- if e1 != 0 { -- err = errnoErr(e1) -+func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { -+ var _p0 *byte -+ _p0, err = BytePtrFromString(path) -+ if err != nil { -+ return - } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- --func writelen(fd int, buf *byte, nbuf int) (n int, err error) { -- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) -- n = int(r0) -+ _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } -@@ -1836,13 +1839,9 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { -- var _p0 *byte -- _p0, err = BytePtrFromString(path) -- if err != nil { -- return -- } -- _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) -+func mremapNetBSD(oldp uintptr, oldsize uintptr, newp uintptr, newsize uintptr, flags int) (xaddr uintptr, err error) { -+ r0, _, e1 := Syscall6(SYS_MREMAP, uintptr(oldp), uintptr(oldsize), uintptr(newp), uintptr(newsize), uintptr(flags), 0) -+ xaddr = uintptr(r0) - if e1 != 0 { - err = errnoErr(e1) - } -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go -old mode 100644 -new mode 100755 -index 3b90e94..a60556b ---- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go -+++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go -@@ -405,6 +405,16 @@ func ioctl(fd int, req uint, arg uintptr) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { -+ _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { -@@ -521,6 +531,16 @@ func Chroot(path string) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ClockGettime(clockid int32, time *Timespec) (err error) { -+ _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func Close(fd int) (err error) { - _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) - if e1 != 0 { -@@ -1587,16 +1607,6 @@ func Setreuid(ruid int, euid int) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func Setrlimit(which int, lim *Rlimit) (err error) { -- _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func Setsid() (pid int, err error) { - r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) - pid = int(r0) -@@ -1814,20 +1824,13 @@ func munmap(addr uintptr, length uintptr) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func readlen(fd int, buf *byte, nbuf int) (n int, err error) { -- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) -- n = int(r0) -- if e1 != 0 { -- err = errnoErr(e1) -+func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { -+ var _p0 *byte -+ _p0, err = BytePtrFromString(path) -+ if err != nil { -+ return - } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- --func writelen(fd int, buf *byte, nbuf int) (n int, err error) { -- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) -- n = int(r0) -+ _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } -@@ -1836,13 +1839,9 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { -- var _p0 *byte -- _p0, err = BytePtrFromString(path) -- if err != nil { -- return -- } -- _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) -+func mremapNetBSD(oldp uintptr, oldsize uintptr, newp uintptr, newsize uintptr, flags int) (xaddr uintptr, err error) { -+ r0, _, e1 := Syscall6(SYS_MREMAP, uintptr(oldp), uintptr(oldsize), uintptr(newp), uintptr(newsize), uintptr(flags), 0) -+ xaddr = uintptr(r0) - if e1 != 0 { - err = errnoErr(e1) - } -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go -old mode 100644 -new mode 100755 -index 890f4cc..9f78891 ---- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go -+++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go -@@ -405,6 +405,16 @@ func ioctl(fd int, req uint, arg uintptr) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { -+ _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { -@@ -521,6 +531,16 @@ func Chroot(path string) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ClockGettime(clockid int32, time *Timespec) (err error) { -+ _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func Close(fd int) (err error) { - _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) - if e1 != 0 { -@@ -1587,16 +1607,6 @@ func Setreuid(ruid int, euid int) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func Setrlimit(which int, lim *Rlimit) (err error) { -- _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func Setsid() (pid int, err error) { - r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) - pid = int(r0) -@@ -1814,20 +1824,13 @@ func munmap(addr uintptr, length uintptr) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func readlen(fd int, buf *byte, nbuf int) (n int, err error) { -- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) -- n = int(r0) -- if e1 != 0 { -- err = errnoErr(e1) -+func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { -+ var _p0 *byte -+ _p0, err = BytePtrFromString(path) -+ if err != nil { -+ return - } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- --func writelen(fd int, buf *byte, nbuf int) (n int, err error) { -- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) -- n = int(r0) -+ _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } -@@ -1836,13 +1839,9 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { -- var _p0 *byte -- _p0, err = BytePtrFromString(path) -- if err != nil { -- return -- } -- _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) -+func mremapNetBSD(oldp uintptr, oldsize uintptr, newp uintptr, newsize uintptr, flags int) (xaddr uintptr, err error) { -+ r0, _, e1 := Syscall6(SYS_MREMAP, uintptr(oldp), uintptr(oldsize), uintptr(newp), uintptr(newsize), uintptr(flags), 0) -+ xaddr = uintptr(r0) - if e1 != 0 { - err = errnoErr(e1) - } -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go -old mode 100644 -new mode 100755 -index c79f071..82a4cb2 ---- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go -+++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go -@@ -405,6 +405,16 @@ func ioctl(fd int, req uint, arg uintptr) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { -+ _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { -@@ -521,6 +531,16 @@ func Chroot(path string) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ClockGettime(clockid int32, time *Timespec) (err error) { -+ _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func Close(fd int) (err error) { - _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) - if e1 != 0 { -@@ -1587,16 +1607,6 @@ func Setreuid(ruid int, euid int) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func Setrlimit(which int, lim *Rlimit) (err error) { -- _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func Setsid() (pid int, err error) { - r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) - pid = int(r0) -@@ -1814,20 +1824,13 @@ func munmap(addr uintptr, length uintptr) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func readlen(fd int, buf *byte, nbuf int) (n int, err error) { -- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) -- n = int(r0) -- if e1 != 0 { -- err = errnoErr(e1) -+func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { -+ var _p0 *byte -+ _p0, err = BytePtrFromString(path) -+ if err != nil { -+ return - } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- --func writelen(fd int, buf *byte, nbuf int) (n int, err error) { -- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) -- n = int(r0) -+ _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } -@@ -1836,13 +1839,9 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { -- var _p0 *byte -- _p0, err = BytePtrFromString(path) -- if err != nil { -- return -- } -- _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) -+func mremapNetBSD(oldp uintptr, oldsize uintptr, newp uintptr, newsize uintptr, flags int) (xaddr uintptr, err error) { -+ r0, _, e1 := Syscall6(SYS_MREMAP, uintptr(oldp), uintptr(oldsize), uintptr(newp), uintptr(newsize), uintptr(flags), 0) -+ xaddr = uintptr(r0) - if e1 != 0 { - err = errnoErr(e1) - } -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go -old mode 100644 -new mode 100755 -index 2925fe0..66b3b64 ---- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go -+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go -@@ -519,6 +519,28 @@ var libc_getcwd_trampoline_addr uintptr - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) { -+ syscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid))) -+ return -+} -+ -+var libc_getresuid_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_getresuid getresuid "libc.so" -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ -+func getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) { -+ syscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid))) -+ return -+} -+ -+var libc_getresgid_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_getresgid getresgid "libc.so" -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func ioctl(fd int, req uint, arg uintptr) (err error) { - _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) - if e1 != 0 { -@@ -533,6 +555,16 @@ var libc_ioctl_trampoline_addr uintptr - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { -+ _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { -@@ -696,6 +728,20 @@ var libc_chroot_trampoline_addr uintptr - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ClockGettime(clockid int32, time *Timespec) (err error) { -+ _, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+var libc_clock_gettime_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_clock_gettime clock_gettime "libc.so" -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func Close(fd int) (err error) { - _, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0) - if e1 != 0 { -@@ -1872,20 +1918,6 @@ var libc_setresuid_trampoline_addr uintptr - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func Setrlimit(which int, lim *Rlimit) (err error) { -- _, _, e1 := syscall_rawSyscall(libc_setrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --var libc_setrlimit_trampoline_addr uintptr -- --//go:cgo_import_dynamic libc_setrlimit setrlimit "libc.so" -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func Setrtable(rtable int) (err error) { - _, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0) - if e1 != 0 { -@@ -2181,28 +2213,6 @@ var libc_munmap_trampoline_addr uintptr - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func readlen(fd int, buf *byte, nbuf int) (n int, err error) { -- r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) -- n = int(r0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- --func writelen(fd int, buf *byte, nbuf int) (n int, err error) { -- r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) -- n = int(r0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s -old mode 100644 -new mode 100755 -index 75eb2f5..3dcacd3 ---- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s -+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s -@@ -5,792 +5,670 @@ - - TEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getgroups(SB) -- - GLOBL ·libc_getgroups_trampoline_addr(SB), RODATA, $4 - DATA ·libc_getgroups_trampoline_addr(SB)/4, $libc_getgroups_trampoline<>(SB) - - TEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setgroups(SB) -- - GLOBL ·libc_setgroups_trampoline_addr(SB), RODATA, $4 - DATA ·libc_setgroups_trampoline_addr(SB)/4, $libc_setgroups_trampoline<>(SB) - - TEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_wait4(SB) -- - GLOBL ·libc_wait4_trampoline_addr(SB), RODATA, $4 - DATA ·libc_wait4_trampoline_addr(SB)/4, $libc_wait4_trampoline<>(SB) - - TEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_accept(SB) -- - GLOBL ·libc_accept_trampoline_addr(SB), RODATA, $4 - DATA ·libc_accept_trampoline_addr(SB)/4, $libc_accept_trampoline<>(SB) - - TEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_bind(SB) -- - GLOBL ·libc_bind_trampoline_addr(SB), RODATA, $4 - DATA ·libc_bind_trampoline_addr(SB)/4, $libc_bind_trampoline<>(SB) - - TEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_connect(SB) -- - GLOBL ·libc_connect_trampoline_addr(SB), RODATA, $4 - DATA ·libc_connect_trampoline_addr(SB)/4, $libc_connect_trampoline<>(SB) - - TEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_socket(SB) -- - GLOBL ·libc_socket_trampoline_addr(SB), RODATA, $4 - DATA ·libc_socket_trampoline_addr(SB)/4, $libc_socket_trampoline<>(SB) - - TEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getsockopt(SB) -- - GLOBL ·libc_getsockopt_trampoline_addr(SB), RODATA, $4 - DATA ·libc_getsockopt_trampoline_addr(SB)/4, $libc_getsockopt_trampoline<>(SB) - - TEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setsockopt(SB) -- - GLOBL ·libc_setsockopt_trampoline_addr(SB), RODATA, $4 - DATA ·libc_setsockopt_trampoline_addr(SB)/4, $libc_setsockopt_trampoline<>(SB) - - TEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getpeername(SB) -- - GLOBL ·libc_getpeername_trampoline_addr(SB), RODATA, $4 - DATA ·libc_getpeername_trampoline_addr(SB)/4, $libc_getpeername_trampoline<>(SB) - - TEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getsockname(SB) -- - GLOBL ·libc_getsockname_trampoline_addr(SB), RODATA, $4 - DATA ·libc_getsockname_trampoline_addr(SB)/4, $libc_getsockname_trampoline<>(SB) - - TEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_shutdown(SB) -- - GLOBL ·libc_shutdown_trampoline_addr(SB), RODATA, $4 - DATA ·libc_shutdown_trampoline_addr(SB)/4, $libc_shutdown_trampoline<>(SB) - - TEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_socketpair(SB) -- - GLOBL ·libc_socketpair_trampoline_addr(SB), RODATA, $4 - DATA ·libc_socketpair_trampoline_addr(SB)/4, $libc_socketpair_trampoline<>(SB) - - TEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_recvfrom(SB) -- - GLOBL ·libc_recvfrom_trampoline_addr(SB), RODATA, $4 - DATA ·libc_recvfrom_trampoline_addr(SB)/4, $libc_recvfrom_trampoline<>(SB) - - TEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_sendto(SB) -- - GLOBL ·libc_sendto_trampoline_addr(SB), RODATA, $4 - DATA ·libc_sendto_trampoline_addr(SB)/4, $libc_sendto_trampoline<>(SB) - - TEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_recvmsg(SB) -- - GLOBL ·libc_recvmsg_trampoline_addr(SB), RODATA, $4 - DATA ·libc_recvmsg_trampoline_addr(SB)/4, $libc_recvmsg_trampoline<>(SB) - - TEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_sendmsg(SB) -- - GLOBL ·libc_sendmsg_trampoline_addr(SB), RODATA, $4 - DATA ·libc_sendmsg_trampoline_addr(SB)/4, $libc_sendmsg_trampoline<>(SB) - - TEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_kevent(SB) -- - GLOBL ·libc_kevent_trampoline_addr(SB), RODATA, $4 - DATA ·libc_kevent_trampoline_addr(SB)/4, $libc_kevent_trampoline<>(SB) - - TEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_utimes(SB) -- - GLOBL ·libc_utimes_trampoline_addr(SB), RODATA, $4 - DATA ·libc_utimes_trampoline_addr(SB)/4, $libc_utimes_trampoline<>(SB) - - TEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_futimes(SB) -- - GLOBL ·libc_futimes_trampoline_addr(SB), RODATA, $4 - DATA ·libc_futimes_trampoline_addr(SB)/4, $libc_futimes_trampoline<>(SB) - - TEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_poll(SB) -- - GLOBL ·libc_poll_trampoline_addr(SB), RODATA, $4 - DATA ·libc_poll_trampoline_addr(SB)/4, $libc_poll_trampoline<>(SB) - - TEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_madvise(SB) -- - GLOBL ·libc_madvise_trampoline_addr(SB), RODATA, $4 - DATA ·libc_madvise_trampoline_addr(SB)/4, $libc_madvise_trampoline<>(SB) - - TEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mlock(SB) -- - GLOBL ·libc_mlock_trampoline_addr(SB), RODATA, $4 - DATA ·libc_mlock_trampoline_addr(SB)/4, $libc_mlock_trampoline<>(SB) - - TEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mlockall(SB) -- - GLOBL ·libc_mlockall_trampoline_addr(SB), RODATA, $4 - DATA ·libc_mlockall_trampoline_addr(SB)/4, $libc_mlockall_trampoline<>(SB) - - TEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mprotect(SB) -- - GLOBL ·libc_mprotect_trampoline_addr(SB), RODATA, $4 - DATA ·libc_mprotect_trampoline_addr(SB)/4, $libc_mprotect_trampoline<>(SB) - - TEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_msync(SB) -- - GLOBL ·libc_msync_trampoline_addr(SB), RODATA, $4 - DATA ·libc_msync_trampoline_addr(SB)/4, $libc_msync_trampoline<>(SB) - - TEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_munlock(SB) -- - GLOBL ·libc_munlock_trampoline_addr(SB), RODATA, $4 - DATA ·libc_munlock_trampoline_addr(SB)/4, $libc_munlock_trampoline<>(SB) - - TEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_munlockall(SB) -- - GLOBL ·libc_munlockall_trampoline_addr(SB), RODATA, $4 - DATA ·libc_munlockall_trampoline_addr(SB)/4, $libc_munlockall_trampoline<>(SB) - - TEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_pipe2(SB) -- - GLOBL ·libc_pipe2_trampoline_addr(SB), RODATA, $4 - DATA ·libc_pipe2_trampoline_addr(SB)/4, $libc_pipe2_trampoline<>(SB) - - TEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getdents(SB) -- - GLOBL ·libc_getdents_trampoline_addr(SB), RODATA, $4 - DATA ·libc_getdents_trampoline_addr(SB)/4, $libc_getdents_trampoline<>(SB) - - TEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getcwd(SB) -- - GLOBL ·libc_getcwd_trampoline_addr(SB), RODATA, $4 - DATA ·libc_getcwd_trampoline_addr(SB)/4, $libc_getcwd_trampoline<>(SB) - -+TEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_getresuid(SB) -+GLOBL ·libc_getresuid_trampoline_addr(SB), RODATA, $4 -+DATA ·libc_getresuid_trampoline_addr(SB)/4, $libc_getresuid_trampoline<>(SB) -+ -+TEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_getresgid(SB) -+GLOBL ·libc_getresgid_trampoline_addr(SB), RODATA, $4 -+DATA ·libc_getresgid_trampoline_addr(SB)/4, $libc_getresgid_trampoline<>(SB) -+ - TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_ioctl(SB) -- - GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $4 - DATA ·libc_ioctl_trampoline_addr(SB)/4, $libc_ioctl_trampoline<>(SB) - - TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_sysctl(SB) -- - GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $4 - DATA ·libc_sysctl_trampoline_addr(SB)/4, $libc_sysctl_trampoline<>(SB) - - TEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_ppoll(SB) -- - GLOBL ·libc_ppoll_trampoline_addr(SB), RODATA, $4 - DATA ·libc_ppoll_trampoline_addr(SB)/4, $libc_ppoll_trampoline<>(SB) - - TEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_access(SB) -- - GLOBL ·libc_access_trampoline_addr(SB), RODATA, $4 - DATA ·libc_access_trampoline_addr(SB)/4, $libc_access_trampoline<>(SB) - - TEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_adjtime(SB) -- - GLOBL ·libc_adjtime_trampoline_addr(SB), RODATA, $4 - DATA ·libc_adjtime_trampoline_addr(SB)/4, $libc_adjtime_trampoline<>(SB) - - TEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_chdir(SB) -- - GLOBL ·libc_chdir_trampoline_addr(SB), RODATA, $4 - DATA ·libc_chdir_trampoline_addr(SB)/4, $libc_chdir_trampoline<>(SB) - - TEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_chflags(SB) -- - GLOBL ·libc_chflags_trampoline_addr(SB), RODATA, $4 - DATA ·libc_chflags_trampoline_addr(SB)/4, $libc_chflags_trampoline<>(SB) - - TEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_chmod(SB) -- - GLOBL ·libc_chmod_trampoline_addr(SB), RODATA, $4 - DATA ·libc_chmod_trampoline_addr(SB)/4, $libc_chmod_trampoline<>(SB) - - TEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_chown(SB) -- - GLOBL ·libc_chown_trampoline_addr(SB), RODATA, $4 - DATA ·libc_chown_trampoline_addr(SB)/4, $libc_chown_trampoline<>(SB) - - TEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_chroot(SB) -- - GLOBL ·libc_chroot_trampoline_addr(SB), RODATA, $4 - DATA ·libc_chroot_trampoline_addr(SB)/4, $libc_chroot_trampoline<>(SB) - -+TEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_clock_gettime(SB) -+GLOBL ·libc_clock_gettime_trampoline_addr(SB), RODATA, $4 -+DATA ·libc_clock_gettime_trampoline_addr(SB)/4, $libc_clock_gettime_trampoline<>(SB) -+ - TEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_close(SB) -- - GLOBL ·libc_close_trampoline_addr(SB), RODATA, $4 - DATA ·libc_close_trampoline_addr(SB)/4, $libc_close_trampoline<>(SB) - - TEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_dup(SB) -- - GLOBL ·libc_dup_trampoline_addr(SB), RODATA, $4 - DATA ·libc_dup_trampoline_addr(SB)/4, $libc_dup_trampoline<>(SB) - - TEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_dup2(SB) -- - GLOBL ·libc_dup2_trampoline_addr(SB), RODATA, $4 - DATA ·libc_dup2_trampoline_addr(SB)/4, $libc_dup2_trampoline<>(SB) - - TEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_dup3(SB) -- - GLOBL ·libc_dup3_trampoline_addr(SB), RODATA, $4 - DATA ·libc_dup3_trampoline_addr(SB)/4, $libc_dup3_trampoline<>(SB) - - TEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_exit(SB) -- - GLOBL ·libc_exit_trampoline_addr(SB), RODATA, $4 - DATA ·libc_exit_trampoline_addr(SB)/4, $libc_exit_trampoline<>(SB) - - TEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_faccessat(SB) -- - GLOBL ·libc_faccessat_trampoline_addr(SB), RODATA, $4 - DATA ·libc_faccessat_trampoline_addr(SB)/4, $libc_faccessat_trampoline<>(SB) - - TEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchdir(SB) -- - GLOBL ·libc_fchdir_trampoline_addr(SB), RODATA, $4 - DATA ·libc_fchdir_trampoline_addr(SB)/4, $libc_fchdir_trampoline<>(SB) - - TEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchflags(SB) -- - GLOBL ·libc_fchflags_trampoline_addr(SB), RODATA, $4 - DATA ·libc_fchflags_trampoline_addr(SB)/4, $libc_fchflags_trampoline<>(SB) - - TEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchmod(SB) -- - GLOBL ·libc_fchmod_trampoline_addr(SB), RODATA, $4 - DATA ·libc_fchmod_trampoline_addr(SB)/4, $libc_fchmod_trampoline<>(SB) - - TEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchmodat(SB) -- - GLOBL ·libc_fchmodat_trampoline_addr(SB), RODATA, $4 - DATA ·libc_fchmodat_trampoline_addr(SB)/4, $libc_fchmodat_trampoline<>(SB) - - TEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchown(SB) -- - GLOBL ·libc_fchown_trampoline_addr(SB), RODATA, $4 - DATA ·libc_fchown_trampoline_addr(SB)/4, $libc_fchown_trampoline<>(SB) - - TEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchownat(SB) -- - GLOBL ·libc_fchownat_trampoline_addr(SB), RODATA, $4 - DATA ·libc_fchownat_trampoline_addr(SB)/4, $libc_fchownat_trampoline<>(SB) - - TEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_flock(SB) -- - GLOBL ·libc_flock_trampoline_addr(SB), RODATA, $4 - DATA ·libc_flock_trampoline_addr(SB)/4, $libc_flock_trampoline<>(SB) - - TEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fpathconf(SB) -- - GLOBL ·libc_fpathconf_trampoline_addr(SB), RODATA, $4 - DATA ·libc_fpathconf_trampoline_addr(SB)/4, $libc_fpathconf_trampoline<>(SB) - - TEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fstat(SB) -- - GLOBL ·libc_fstat_trampoline_addr(SB), RODATA, $4 - DATA ·libc_fstat_trampoline_addr(SB)/4, $libc_fstat_trampoline<>(SB) - - TEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fstatat(SB) -- - GLOBL ·libc_fstatat_trampoline_addr(SB), RODATA, $4 - DATA ·libc_fstatat_trampoline_addr(SB)/4, $libc_fstatat_trampoline<>(SB) - - TEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fstatfs(SB) -- - GLOBL ·libc_fstatfs_trampoline_addr(SB), RODATA, $4 - DATA ·libc_fstatfs_trampoline_addr(SB)/4, $libc_fstatfs_trampoline<>(SB) - - TEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fsync(SB) -- - GLOBL ·libc_fsync_trampoline_addr(SB), RODATA, $4 - DATA ·libc_fsync_trampoline_addr(SB)/4, $libc_fsync_trampoline<>(SB) - - TEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_ftruncate(SB) -- - GLOBL ·libc_ftruncate_trampoline_addr(SB), RODATA, $4 - DATA ·libc_ftruncate_trampoline_addr(SB)/4, $libc_ftruncate_trampoline<>(SB) - - TEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getegid(SB) -- - GLOBL ·libc_getegid_trampoline_addr(SB), RODATA, $4 - DATA ·libc_getegid_trampoline_addr(SB)/4, $libc_getegid_trampoline<>(SB) - - TEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_geteuid(SB) -- - GLOBL ·libc_geteuid_trampoline_addr(SB), RODATA, $4 - DATA ·libc_geteuid_trampoline_addr(SB)/4, $libc_geteuid_trampoline<>(SB) - - TEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getgid(SB) -- - GLOBL ·libc_getgid_trampoline_addr(SB), RODATA, $4 - DATA ·libc_getgid_trampoline_addr(SB)/4, $libc_getgid_trampoline<>(SB) - - TEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getpgid(SB) -- - GLOBL ·libc_getpgid_trampoline_addr(SB), RODATA, $4 - DATA ·libc_getpgid_trampoline_addr(SB)/4, $libc_getpgid_trampoline<>(SB) - - TEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getpgrp(SB) -- - GLOBL ·libc_getpgrp_trampoline_addr(SB), RODATA, $4 - DATA ·libc_getpgrp_trampoline_addr(SB)/4, $libc_getpgrp_trampoline<>(SB) - - TEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getpid(SB) -- - GLOBL ·libc_getpid_trampoline_addr(SB), RODATA, $4 - DATA ·libc_getpid_trampoline_addr(SB)/4, $libc_getpid_trampoline<>(SB) - - TEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getppid(SB) -- - GLOBL ·libc_getppid_trampoline_addr(SB), RODATA, $4 - DATA ·libc_getppid_trampoline_addr(SB)/4, $libc_getppid_trampoline<>(SB) - - TEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getpriority(SB) -- - GLOBL ·libc_getpriority_trampoline_addr(SB), RODATA, $4 - DATA ·libc_getpriority_trampoline_addr(SB)/4, $libc_getpriority_trampoline<>(SB) - - TEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getrlimit(SB) -- - GLOBL ·libc_getrlimit_trampoline_addr(SB), RODATA, $4 - DATA ·libc_getrlimit_trampoline_addr(SB)/4, $libc_getrlimit_trampoline<>(SB) - - TEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getrtable(SB) -- - GLOBL ·libc_getrtable_trampoline_addr(SB), RODATA, $4 - DATA ·libc_getrtable_trampoline_addr(SB)/4, $libc_getrtable_trampoline<>(SB) - - TEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getrusage(SB) -- - GLOBL ·libc_getrusage_trampoline_addr(SB), RODATA, $4 - DATA ·libc_getrusage_trampoline_addr(SB)/4, $libc_getrusage_trampoline<>(SB) - - TEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getsid(SB) -- - GLOBL ·libc_getsid_trampoline_addr(SB), RODATA, $4 - DATA ·libc_getsid_trampoline_addr(SB)/4, $libc_getsid_trampoline<>(SB) - - TEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_gettimeofday(SB) -- - GLOBL ·libc_gettimeofday_trampoline_addr(SB), RODATA, $4 - DATA ·libc_gettimeofday_trampoline_addr(SB)/4, $libc_gettimeofday_trampoline<>(SB) - - TEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getuid(SB) -- - GLOBL ·libc_getuid_trampoline_addr(SB), RODATA, $4 - DATA ·libc_getuid_trampoline_addr(SB)/4, $libc_getuid_trampoline<>(SB) - - TEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_issetugid(SB) -- - GLOBL ·libc_issetugid_trampoline_addr(SB), RODATA, $4 - DATA ·libc_issetugid_trampoline_addr(SB)/4, $libc_issetugid_trampoline<>(SB) - - TEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_kill(SB) -- - GLOBL ·libc_kill_trampoline_addr(SB), RODATA, $4 - DATA ·libc_kill_trampoline_addr(SB)/4, $libc_kill_trampoline<>(SB) - - TEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_kqueue(SB) -- - GLOBL ·libc_kqueue_trampoline_addr(SB), RODATA, $4 - DATA ·libc_kqueue_trampoline_addr(SB)/4, $libc_kqueue_trampoline<>(SB) - - TEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_lchown(SB) -- - GLOBL ·libc_lchown_trampoline_addr(SB), RODATA, $4 - DATA ·libc_lchown_trampoline_addr(SB)/4, $libc_lchown_trampoline<>(SB) - - TEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_link(SB) -- - GLOBL ·libc_link_trampoline_addr(SB), RODATA, $4 - DATA ·libc_link_trampoline_addr(SB)/4, $libc_link_trampoline<>(SB) - - TEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_linkat(SB) -- - GLOBL ·libc_linkat_trampoline_addr(SB), RODATA, $4 - DATA ·libc_linkat_trampoline_addr(SB)/4, $libc_linkat_trampoline<>(SB) - - TEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_listen(SB) -- - GLOBL ·libc_listen_trampoline_addr(SB), RODATA, $4 - DATA ·libc_listen_trampoline_addr(SB)/4, $libc_listen_trampoline<>(SB) - - TEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_lstat(SB) -- - GLOBL ·libc_lstat_trampoline_addr(SB), RODATA, $4 - DATA ·libc_lstat_trampoline_addr(SB)/4, $libc_lstat_trampoline<>(SB) - - TEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mkdir(SB) -- - GLOBL ·libc_mkdir_trampoline_addr(SB), RODATA, $4 - DATA ·libc_mkdir_trampoline_addr(SB)/4, $libc_mkdir_trampoline<>(SB) - - TEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mkdirat(SB) -- - GLOBL ·libc_mkdirat_trampoline_addr(SB), RODATA, $4 - DATA ·libc_mkdirat_trampoline_addr(SB)/4, $libc_mkdirat_trampoline<>(SB) - - TEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mkfifo(SB) -- - GLOBL ·libc_mkfifo_trampoline_addr(SB), RODATA, $4 - DATA ·libc_mkfifo_trampoline_addr(SB)/4, $libc_mkfifo_trampoline<>(SB) - - TEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mkfifoat(SB) -- - GLOBL ·libc_mkfifoat_trampoline_addr(SB), RODATA, $4 - DATA ·libc_mkfifoat_trampoline_addr(SB)/4, $libc_mkfifoat_trampoline<>(SB) - - TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mknod(SB) -- - GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $4 - DATA ·libc_mknod_trampoline_addr(SB)/4, $libc_mknod_trampoline<>(SB) - - TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mknodat(SB) -- - GLOBL ·libc_mknodat_trampoline_addr(SB), RODATA, $4 - DATA ·libc_mknodat_trampoline_addr(SB)/4, $libc_mknodat_trampoline<>(SB) - - TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_nanosleep(SB) -- - GLOBL ·libc_nanosleep_trampoline_addr(SB), RODATA, $4 - DATA ·libc_nanosleep_trampoline_addr(SB)/4, $libc_nanosleep_trampoline<>(SB) - - TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_open(SB) -- - GLOBL ·libc_open_trampoline_addr(SB), RODATA, $4 - DATA ·libc_open_trampoline_addr(SB)/4, $libc_open_trampoline<>(SB) - - TEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_openat(SB) -- - GLOBL ·libc_openat_trampoline_addr(SB), RODATA, $4 - DATA ·libc_openat_trampoline_addr(SB)/4, $libc_openat_trampoline<>(SB) - - TEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_pathconf(SB) -- - GLOBL ·libc_pathconf_trampoline_addr(SB), RODATA, $4 - DATA ·libc_pathconf_trampoline_addr(SB)/4, $libc_pathconf_trampoline<>(SB) - - TEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_pread(SB) -- - GLOBL ·libc_pread_trampoline_addr(SB), RODATA, $4 - DATA ·libc_pread_trampoline_addr(SB)/4, $libc_pread_trampoline<>(SB) - - TEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_pwrite(SB) -- - GLOBL ·libc_pwrite_trampoline_addr(SB), RODATA, $4 - DATA ·libc_pwrite_trampoline_addr(SB)/4, $libc_pwrite_trampoline<>(SB) - - TEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_read(SB) -- - GLOBL ·libc_read_trampoline_addr(SB), RODATA, $4 - DATA ·libc_read_trampoline_addr(SB)/4, $libc_read_trampoline<>(SB) - - TEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_readlink(SB) -- - GLOBL ·libc_readlink_trampoline_addr(SB), RODATA, $4 - DATA ·libc_readlink_trampoline_addr(SB)/4, $libc_readlink_trampoline<>(SB) - - TEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_readlinkat(SB) -- - GLOBL ·libc_readlinkat_trampoline_addr(SB), RODATA, $4 - DATA ·libc_readlinkat_trampoline_addr(SB)/4, $libc_readlinkat_trampoline<>(SB) - - TEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_rename(SB) -- - GLOBL ·libc_rename_trampoline_addr(SB), RODATA, $4 - DATA ·libc_rename_trampoline_addr(SB)/4, $libc_rename_trampoline<>(SB) - - TEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_renameat(SB) -- - GLOBL ·libc_renameat_trampoline_addr(SB), RODATA, $4 - DATA ·libc_renameat_trampoline_addr(SB)/4, $libc_renameat_trampoline<>(SB) - - TEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_revoke(SB) -- - GLOBL ·libc_revoke_trampoline_addr(SB), RODATA, $4 - DATA ·libc_revoke_trampoline_addr(SB)/4, $libc_revoke_trampoline<>(SB) - - TEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_rmdir(SB) -- - GLOBL ·libc_rmdir_trampoline_addr(SB), RODATA, $4 - DATA ·libc_rmdir_trampoline_addr(SB)/4, $libc_rmdir_trampoline<>(SB) - - TEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_lseek(SB) -- - GLOBL ·libc_lseek_trampoline_addr(SB), RODATA, $4 - DATA ·libc_lseek_trampoline_addr(SB)/4, $libc_lseek_trampoline<>(SB) - - TEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_select(SB) -- - GLOBL ·libc_select_trampoline_addr(SB), RODATA, $4 - DATA ·libc_select_trampoline_addr(SB)/4, $libc_select_trampoline<>(SB) - - TEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setegid(SB) -- - GLOBL ·libc_setegid_trampoline_addr(SB), RODATA, $4 - DATA ·libc_setegid_trampoline_addr(SB)/4, $libc_setegid_trampoline<>(SB) - - TEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_seteuid(SB) -- - GLOBL ·libc_seteuid_trampoline_addr(SB), RODATA, $4 - DATA ·libc_seteuid_trampoline_addr(SB)/4, $libc_seteuid_trampoline<>(SB) - - TEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setgid(SB) -- - GLOBL ·libc_setgid_trampoline_addr(SB), RODATA, $4 - DATA ·libc_setgid_trampoline_addr(SB)/4, $libc_setgid_trampoline<>(SB) - - TEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setlogin(SB) -- - GLOBL ·libc_setlogin_trampoline_addr(SB), RODATA, $4 - DATA ·libc_setlogin_trampoline_addr(SB)/4, $libc_setlogin_trampoline<>(SB) - - TEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setpgid(SB) -- - GLOBL ·libc_setpgid_trampoline_addr(SB), RODATA, $4 - DATA ·libc_setpgid_trampoline_addr(SB)/4, $libc_setpgid_trampoline<>(SB) - - TEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setpriority(SB) -- - GLOBL ·libc_setpriority_trampoline_addr(SB), RODATA, $4 - DATA ·libc_setpriority_trampoline_addr(SB)/4, $libc_setpriority_trampoline<>(SB) - - TEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setregid(SB) -- - GLOBL ·libc_setregid_trampoline_addr(SB), RODATA, $4 - DATA ·libc_setregid_trampoline_addr(SB)/4, $libc_setregid_trampoline<>(SB) - - TEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setreuid(SB) -- - GLOBL ·libc_setreuid_trampoline_addr(SB), RODATA, $4 - DATA ·libc_setreuid_trampoline_addr(SB)/4, $libc_setreuid_trampoline<>(SB) - - TEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setresgid(SB) -- - GLOBL ·libc_setresgid_trampoline_addr(SB), RODATA, $4 - DATA ·libc_setresgid_trampoline_addr(SB)/4, $libc_setresgid_trampoline<>(SB) - - TEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setresuid(SB) -- - GLOBL ·libc_setresuid_trampoline_addr(SB), RODATA, $4 - DATA ·libc_setresuid_trampoline_addr(SB)/4, $libc_setresuid_trampoline<>(SB) - --TEXT libc_setrlimit_trampoline<>(SB),NOSPLIT,$0-0 -- JMP libc_setrlimit(SB) -- --GLOBL ·libc_setrlimit_trampoline_addr(SB), RODATA, $4 --DATA ·libc_setrlimit_trampoline_addr(SB)/4, $libc_setrlimit_trampoline<>(SB) -- - TEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setrtable(SB) -- - GLOBL ·libc_setrtable_trampoline_addr(SB), RODATA, $4 - DATA ·libc_setrtable_trampoline_addr(SB)/4, $libc_setrtable_trampoline<>(SB) - - TEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setsid(SB) -- - GLOBL ·libc_setsid_trampoline_addr(SB), RODATA, $4 - DATA ·libc_setsid_trampoline_addr(SB)/4, $libc_setsid_trampoline<>(SB) - - TEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_settimeofday(SB) -- - GLOBL ·libc_settimeofday_trampoline_addr(SB), RODATA, $4 - DATA ·libc_settimeofday_trampoline_addr(SB)/4, $libc_settimeofday_trampoline<>(SB) - - TEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setuid(SB) -- - GLOBL ·libc_setuid_trampoline_addr(SB), RODATA, $4 - DATA ·libc_setuid_trampoline_addr(SB)/4, $libc_setuid_trampoline<>(SB) - - TEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_stat(SB) -- - GLOBL ·libc_stat_trampoline_addr(SB), RODATA, $4 - DATA ·libc_stat_trampoline_addr(SB)/4, $libc_stat_trampoline<>(SB) - - TEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_statfs(SB) -- - GLOBL ·libc_statfs_trampoline_addr(SB), RODATA, $4 - DATA ·libc_statfs_trampoline_addr(SB)/4, $libc_statfs_trampoline<>(SB) - - TEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_symlink(SB) -- - GLOBL ·libc_symlink_trampoline_addr(SB), RODATA, $4 - DATA ·libc_symlink_trampoline_addr(SB)/4, $libc_symlink_trampoline<>(SB) - - TEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_symlinkat(SB) -- - GLOBL ·libc_symlinkat_trampoline_addr(SB), RODATA, $4 - DATA ·libc_symlinkat_trampoline_addr(SB)/4, $libc_symlinkat_trampoline<>(SB) - - TEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_sync(SB) -- - GLOBL ·libc_sync_trampoline_addr(SB), RODATA, $4 - DATA ·libc_sync_trampoline_addr(SB)/4, $libc_sync_trampoline<>(SB) - - TEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_truncate(SB) -- - GLOBL ·libc_truncate_trampoline_addr(SB), RODATA, $4 - DATA ·libc_truncate_trampoline_addr(SB)/4, $libc_truncate_trampoline<>(SB) - - TEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_umask(SB) -- - GLOBL ·libc_umask_trampoline_addr(SB), RODATA, $4 - DATA ·libc_umask_trampoline_addr(SB)/4, $libc_umask_trampoline<>(SB) - - TEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_unlink(SB) -- - GLOBL ·libc_unlink_trampoline_addr(SB), RODATA, $4 - DATA ·libc_unlink_trampoline_addr(SB)/4, $libc_unlink_trampoline<>(SB) - - TEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_unlinkat(SB) -- - GLOBL ·libc_unlinkat_trampoline_addr(SB), RODATA, $4 - DATA ·libc_unlinkat_trampoline_addr(SB)/4, $libc_unlinkat_trampoline<>(SB) - - TEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_unmount(SB) -- - GLOBL ·libc_unmount_trampoline_addr(SB), RODATA, $4 - DATA ·libc_unmount_trampoline_addr(SB)/4, $libc_unmount_trampoline<>(SB) - - TEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_write(SB) -- - GLOBL ·libc_write_trampoline_addr(SB), RODATA, $4 - DATA ·libc_write_trampoline_addr(SB)/4, $libc_write_trampoline<>(SB) - - TEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mmap(SB) -- - GLOBL ·libc_mmap_trampoline_addr(SB), RODATA, $4 - DATA ·libc_mmap_trampoline_addr(SB)/4, $libc_mmap_trampoline<>(SB) - - TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_munmap(SB) -- - GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $4 - DATA ·libc_munmap_trampoline_addr(SB)/4, $libc_munmap_trampoline<>(SB) - - TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_utimensat(SB) -- - GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $4 - DATA ·libc_utimensat_trampoline_addr(SB)/4, $libc_utimensat_trampoline<>(SB) -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go -old mode 100644 -new mode 100755 -index 98446d2..c5c4cc1 ---- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go -+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go -@@ -519,6 +519,28 @@ var libc_getcwd_trampoline_addr uintptr - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) { -+ syscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid))) -+ return -+} -+ -+var libc_getresuid_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_getresuid getresuid "libc.so" -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ -+func getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) { -+ syscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid))) -+ return -+} -+ -+var libc_getresgid_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_getresgid getresgid "libc.so" -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func ioctl(fd int, req uint, arg uintptr) (err error) { - _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) - if e1 != 0 { -@@ -533,6 +555,16 @@ var libc_ioctl_trampoline_addr uintptr - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { -+ _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { -@@ -696,6 +728,20 @@ var libc_chroot_trampoline_addr uintptr - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ClockGettime(clockid int32, time *Timespec) (err error) { -+ _, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+var libc_clock_gettime_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_clock_gettime clock_gettime "libc.so" -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func Close(fd int) (err error) { - _, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0) - if e1 != 0 { -@@ -1872,20 +1918,6 @@ var libc_setresuid_trampoline_addr uintptr - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func Setrlimit(which int, lim *Rlimit) (err error) { -- _, _, e1 := syscall_rawSyscall(libc_setrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --var libc_setrlimit_trampoline_addr uintptr -- --//go:cgo_import_dynamic libc_setrlimit setrlimit "libc.so" -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func Setrtable(rtable int) (err error) { - _, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0) - if e1 != 0 { -@@ -2181,28 +2213,6 @@ var libc_munmap_trampoline_addr uintptr - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func readlen(fd int, buf *byte, nbuf int) (n int, err error) { -- r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) -- n = int(r0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- --func writelen(fd int, buf *byte, nbuf int) (n int, err error) { -- r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) -- n = int(r0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s -old mode 100644 -new mode 100755 -index 243a666..2763620 ---- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s -+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s -@@ -5,792 +5,670 @@ - - TEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getgroups(SB) -- - GLOBL ·libc_getgroups_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB) - - TEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setgroups(SB) -- - GLOBL ·libc_setgroups_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB) - - TEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_wait4(SB) -- - GLOBL ·libc_wait4_trampoline_addr(SB), RODATA, $8 - DATA ·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB) - - TEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_accept(SB) -- - GLOBL ·libc_accept_trampoline_addr(SB), RODATA, $8 - DATA ·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB) - - TEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_bind(SB) -- - GLOBL ·libc_bind_trampoline_addr(SB), RODATA, $8 - DATA ·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB) - - TEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_connect(SB) -- - GLOBL ·libc_connect_trampoline_addr(SB), RODATA, $8 - DATA ·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB) - - TEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_socket(SB) -- - GLOBL ·libc_socket_trampoline_addr(SB), RODATA, $8 - DATA ·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB) - - TEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getsockopt(SB) -- - GLOBL ·libc_getsockopt_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB) - - TEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setsockopt(SB) -- - GLOBL ·libc_setsockopt_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB) - - TEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getpeername(SB) -- - GLOBL ·libc_getpeername_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB) - - TEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getsockname(SB) -- - GLOBL ·libc_getsockname_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB) - - TEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_shutdown(SB) -- - GLOBL ·libc_shutdown_trampoline_addr(SB), RODATA, $8 - DATA ·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB) - - TEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_socketpair(SB) -- - GLOBL ·libc_socketpair_trampoline_addr(SB), RODATA, $8 - DATA ·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB) - - TEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_recvfrom(SB) -- - GLOBL ·libc_recvfrom_trampoline_addr(SB), RODATA, $8 - DATA ·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB) - - TEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_sendto(SB) -- - GLOBL ·libc_sendto_trampoline_addr(SB), RODATA, $8 - DATA ·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB) - - TEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_recvmsg(SB) -- - GLOBL ·libc_recvmsg_trampoline_addr(SB), RODATA, $8 - DATA ·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB) - - TEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_sendmsg(SB) -- - GLOBL ·libc_sendmsg_trampoline_addr(SB), RODATA, $8 - DATA ·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB) - - TEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_kevent(SB) -- - GLOBL ·libc_kevent_trampoline_addr(SB), RODATA, $8 - DATA ·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB) - - TEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_utimes(SB) -- - GLOBL ·libc_utimes_trampoline_addr(SB), RODATA, $8 - DATA ·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB) - - TEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_futimes(SB) -- - GLOBL ·libc_futimes_trampoline_addr(SB), RODATA, $8 - DATA ·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB) - - TEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_poll(SB) -- - GLOBL ·libc_poll_trampoline_addr(SB), RODATA, $8 - DATA ·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB) - - TEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_madvise(SB) -- - GLOBL ·libc_madvise_trampoline_addr(SB), RODATA, $8 - DATA ·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB) - - TEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mlock(SB) -- - GLOBL ·libc_mlock_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB) - - TEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mlockall(SB) -- - GLOBL ·libc_mlockall_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB) - - TEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mprotect(SB) -- - GLOBL ·libc_mprotect_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB) - - TEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_msync(SB) -- - GLOBL ·libc_msync_trampoline_addr(SB), RODATA, $8 - DATA ·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB) - - TEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_munlock(SB) -- - GLOBL ·libc_munlock_trampoline_addr(SB), RODATA, $8 - DATA ·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB) - - TEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_munlockall(SB) -- - GLOBL ·libc_munlockall_trampoline_addr(SB), RODATA, $8 - DATA ·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB) - - TEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_pipe2(SB) -- - GLOBL ·libc_pipe2_trampoline_addr(SB), RODATA, $8 - DATA ·libc_pipe2_trampoline_addr(SB)/8, $libc_pipe2_trampoline<>(SB) - - TEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getdents(SB) -- - GLOBL ·libc_getdents_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getdents_trampoline_addr(SB)/8, $libc_getdents_trampoline<>(SB) - - TEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getcwd(SB) -- - GLOBL ·libc_getcwd_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB) - -+TEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_getresuid(SB) -+GLOBL ·libc_getresuid_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_getresuid_trampoline_addr(SB)/8, $libc_getresuid_trampoline<>(SB) -+ -+TEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_getresgid(SB) -+GLOBL ·libc_getresgid_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_getresgid_trampoline_addr(SB)/8, $libc_getresgid_trampoline<>(SB) -+ - TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_ioctl(SB) -- - GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $8 - DATA ·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB) - - TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_sysctl(SB) -- - GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 - DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB) - - TEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_ppoll(SB) -- - GLOBL ·libc_ppoll_trampoline_addr(SB), RODATA, $8 - DATA ·libc_ppoll_trampoline_addr(SB)/8, $libc_ppoll_trampoline<>(SB) - - TEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_access(SB) -- - GLOBL ·libc_access_trampoline_addr(SB), RODATA, $8 - DATA ·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB) - - TEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_adjtime(SB) -- - GLOBL ·libc_adjtime_trampoline_addr(SB), RODATA, $8 - DATA ·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB) - - TEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_chdir(SB) -- - GLOBL ·libc_chdir_trampoline_addr(SB), RODATA, $8 - DATA ·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB) - - TEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_chflags(SB) -- - GLOBL ·libc_chflags_trampoline_addr(SB), RODATA, $8 - DATA ·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB) - - TEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_chmod(SB) -- - GLOBL ·libc_chmod_trampoline_addr(SB), RODATA, $8 - DATA ·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB) - - TEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_chown(SB) -- - GLOBL ·libc_chown_trampoline_addr(SB), RODATA, $8 - DATA ·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB) - - TEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_chroot(SB) -- - GLOBL ·libc_chroot_trampoline_addr(SB), RODATA, $8 - DATA ·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB) - -+TEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_clock_gettime(SB) -+GLOBL ·libc_clock_gettime_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB) -+ - TEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_close(SB) -- - GLOBL ·libc_close_trampoline_addr(SB), RODATA, $8 - DATA ·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB) - - TEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_dup(SB) -- - GLOBL ·libc_dup_trampoline_addr(SB), RODATA, $8 - DATA ·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB) - - TEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_dup2(SB) -- - GLOBL ·libc_dup2_trampoline_addr(SB), RODATA, $8 - DATA ·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB) - - TEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_dup3(SB) -- - GLOBL ·libc_dup3_trampoline_addr(SB), RODATA, $8 - DATA ·libc_dup3_trampoline_addr(SB)/8, $libc_dup3_trampoline<>(SB) - - TEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_exit(SB) -- - GLOBL ·libc_exit_trampoline_addr(SB), RODATA, $8 - DATA ·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB) - - TEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_faccessat(SB) -- - GLOBL ·libc_faccessat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB) - - TEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchdir(SB) -- - GLOBL ·libc_fchdir_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB) - - TEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchflags(SB) -- - GLOBL ·libc_fchflags_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB) - - TEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchmod(SB) -- - GLOBL ·libc_fchmod_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB) - - TEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchmodat(SB) -- - GLOBL ·libc_fchmodat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB) - - TEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchown(SB) -- - GLOBL ·libc_fchown_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB) - - TEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchownat(SB) -- - GLOBL ·libc_fchownat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB) - - TEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_flock(SB) -- - GLOBL ·libc_flock_trampoline_addr(SB), RODATA, $8 - DATA ·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB) - - TEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fpathconf(SB) -- - GLOBL ·libc_fpathconf_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB) - - TEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fstat(SB) -- - GLOBL ·libc_fstat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB) - - TEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fstatat(SB) -- - GLOBL ·libc_fstatat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB) - - TEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fstatfs(SB) -- - GLOBL ·libc_fstatfs_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB) - - TEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fsync(SB) -- - GLOBL ·libc_fsync_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB) - - TEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_ftruncate(SB) -- - GLOBL ·libc_ftruncate_trampoline_addr(SB), RODATA, $8 - DATA ·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB) - - TEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getegid(SB) -- - GLOBL ·libc_getegid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB) - - TEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_geteuid(SB) -- - GLOBL ·libc_geteuid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB) - - TEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getgid(SB) -- - GLOBL ·libc_getgid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB) - - TEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getpgid(SB) -- - GLOBL ·libc_getpgid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB) - - TEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getpgrp(SB) -- - GLOBL ·libc_getpgrp_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB) - - TEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getpid(SB) -- - GLOBL ·libc_getpid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB) - - TEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getppid(SB) -- - GLOBL ·libc_getppid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB) - - TEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getpriority(SB) -- - GLOBL ·libc_getpriority_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB) - - TEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getrlimit(SB) -- - GLOBL ·libc_getrlimit_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB) - - TEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getrtable(SB) -- - GLOBL ·libc_getrtable_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getrtable_trampoline_addr(SB)/8, $libc_getrtable_trampoline<>(SB) - - TEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getrusage(SB) -- - GLOBL ·libc_getrusage_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB) - - TEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getsid(SB) -- - GLOBL ·libc_getsid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB) - - TEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_gettimeofday(SB) -- - GLOBL ·libc_gettimeofday_trampoline_addr(SB), RODATA, $8 - DATA ·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB) - - TEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getuid(SB) -- - GLOBL ·libc_getuid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB) - - TEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_issetugid(SB) -- - GLOBL ·libc_issetugid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB) - - TEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_kill(SB) -- - GLOBL ·libc_kill_trampoline_addr(SB), RODATA, $8 - DATA ·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB) - - TEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_kqueue(SB) -- - GLOBL ·libc_kqueue_trampoline_addr(SB), RODATA, $8 - DATA ·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB) - - TEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_lchown(SB) -- - GLOBL ·libc_lchown_trampoline_addr(SB), RODATA, $8 - DATA ·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB) - - TEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_link(SB) -- - GLOBL ·libc_link_trampoline_addr(SB), RODATA, $8 - DATA ·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB) - - TEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_linkat(SB) -- - GLOBL ·libc_linkat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB) - - TEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_listen(SB) -- - GLOBL ·libc_listen_trampoline_addr(SB), RODATA, $8 - DATA ·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB) - - TEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_lstat(SB) -- - GLOBL ·libc_lstat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB) - - TEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mkdir(SB) -- - GLOBL ·libc_mkdir_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB) - - TEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mkdirat(SB) -- - GLOBL ·libc_mkdirat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB) - - TEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mkfifo(SB) -- - GLOBL ·libc_mkfifo_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB) - - TEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mkfifoat(SB) -- - GLOBL ·libc_mkfifoat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mkfifoat_trampoline_addr(SB)/8, $libc_mkfifoat_trampoline<>(SB) - - TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mknod(SB) -- - GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB) - - TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mknodat(SB) -- - GLOBL ·libc_mknodat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB) - - TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_nanosleep(SB) -- - GLOBL ·libc_nanosleep_trampoline_addr(SB), RODATA, $8 - DATA ·libc_nanosleep_trampoline_addr(SB)/8, $libc_nanosleep_trampoline<>(SB) - - TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_open(SB) -- - GLOBL ·libc_open_trampoline_addr(SB), RODATA, $8 - DATA ·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB) - - TEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_openat(SB) -- - GLOBL ·libc_openat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB) - - TEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_pathconf(SB) -- - GLOBL ·libc_pathconf_trampoline_addr(SB), RODATA, $8 - DATA ·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB) - - TEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_pread(SB) -- - GLOBL ·libc_pread_trampoline_addr(SB), RODATA, $8 - DATA ·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB) - - TEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_pwrite(SB) -- - GLOBL ·libc_pwrite_trampoline_addr(SB), RODATA, $8 - DATA ·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB) - - TEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_read(SB) -- - GLOBL ·libc_read_trampoline_addr(SB), RODATA, $8 - DATA ·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB) - - TEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_readlink(SB) -- - GLOBL ·libc_readlink_trampoline_addr(SB), RODATA, $8 - DATA ·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB) - - TEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_readlinkat(SB) -- - GLOBL ·libc_readlinkat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB) - - TEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_rename(SB) -- - GLOBL ·libc_rename_trampoline_addr(SB), RODATA, $8 - DATA ·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB) - - TEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_renameat(SB) -- - GLOBL ·libc_renameat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB) - - TEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_revoke(SB) -- - GLOBL ·libc_revoke_trampoline_addr(SB), RODATA, $8 - DATA ·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB) - - TEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_rmdir(SB) -- - GLOBL ·libc_rmdir_trampoline_addr(SB), RODATA, $8 - DATA ·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB) - - TEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_lseek(SB) -- - GLOBL ·libc_lseek_trampoline_addr(SB), RODATA, $8 - DATA ·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB) - - TEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_select(SB) -- - GLOBL ·libc_select_trampoline_addr(SB), RODATA, $8 - DATA ·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB) - - TEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setegid(SB) -- - GLOBL ·libc_setegid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB) - - TEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_seteuid(SB) -- - GLOBL ·libc_seteuid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB) - - TEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setgid(SB) -- - GLOBL ·libc_setgid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB) - - TEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setlogin(SB) -- - GLOBL ·libc_setlogin_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB) - - TEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setpgid(SB) -- - GLOBL ·libc_setpgid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB) - - TEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setpriority(SB) -- - GLOBL ·libc_setpriority_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB) - - TEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setregid(SB) -- - GLOBL ·libc_setregid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB) - - TEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setreuid(SB) -- - GLOBL ·libc_setreuid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB) - - TEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setresgid(SB) -- - GLOBL ·libc_setresgid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setresgid_trampoline_addr(SB)/8, $libc_setresgid_trampoline<>(SB) - - TEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setresuid(SB) -- - GLOBL ·libc_setresuid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB) - --TEXT libc_setrlimit_trampoline<>(SB),NOSPLIT,$0-0 -- JMP libc_setrlimit(SB) -- --GLOBL ·libc_setrlimit_trampoline_addr(SB), RODATA, $8 --DATA ·libc_setrlimit_trampoline_addr(SB)/8, $libc_setrlimit_trampoline<>(SB) -- - TEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setrtable(SB) -- - GLOBL ·libc_setrtable_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setrtable_trampoline_addr(SB)/8, $libc_setrtable_trampoline<>(SB) - - TEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setsid(SB) -- - GLOBL ·libc_setsid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB) - - TEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_settimeofday(SB) -- - GLOBL ·libc_settimeofday_trampoline_addr(SB), RODATA, $8 - DATA ·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB) - - TEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setuid(SB) -- - GLOBL ·libc_setuid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB) - - TEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_stat(SB) -- - GLOBL ·libc_stat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB) - - TEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_statfs(SB) -- - GLOBL ·libc_statfs_trampoline_addr(SB), RODATA, $8 - DATA ·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB) - - TEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_symlink(SB) -- - GLOBL ·libc_symlink_trampoline_addr(SB), RODATA, $8 - DATA ·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB) - - TEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_symlinkat(SB) -- - GLOBL ·libc_symlinkat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB) - - TEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_sync(SB) -- - GLOBL ·libc_sync_trampoline_addr(SB), RODATA, $8 - DATA ·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB) - - TEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_truncate(SB) -- - GLOBL ·libc_truncate_trampoline_addr(SB), RODATA, $8 - DATA ·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB) - - TEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_umask(SB) -- - GLOBL ·libc_umask_trampoline_addr(SB), RODATA, $8 - DATA ·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB) - - TEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_unlink(SB) -- - GLOBL ·libc_unlink_trampoline_addr(SB), RODATA, $8 - DATA ·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB) - - TEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_unlinkat(SB) -- - GLOBL ·libc_unlinkat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB) - - TEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_unmount(SB) -- - GLOBL ·libc_unmount_trampoline_addr(SB), RODATA, $8 - DATA ·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB) - - TEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_write(SB) -- - GLOBL ·libc_write_trampoline_addr(SB), RODATA, $8 - DATA ·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB) - - TEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mmap(SB) -- - GLOBL ·libc_mmap_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB) - - TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_munmap(SB) -- - GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8 - DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB) - - TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_utimensat(SB) -- - GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB) -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go -old mode 100644 -new mode 100755 -index 8da6791..93bfbb3 ---- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go -+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go -@@ -519,6 +519,28 @@ var libc_getcwd_trampoline_addr uintptr - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) { -+ syscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid))) -+ return -+} -+ -+var libc_getresuid_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_getresuid getresuid "libc.so" -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ -+func getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) { -+ syscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid))) -+ return -+} -+ -+var libc_getresgid_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_getresgid getresgid "libc.so" -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func ioctl(fd int, req uint, arg uintptr) (err error) { - _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) - if e1 != 0 { -@@ -533,6 +555,16 @@ var libc_ioctl_trampoline_addr uintptr - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { -+ _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { -@@ -696,6 +728,20 @@ var libc_chroot_trampoline_addr uintptr - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ClockGettime(clockid int32, time *Timespec) (err error) { -+ _, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+var libc_clock_gettime_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_clock_gettime clock_gettime "libc.so" -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func Close(fd int) (err error) { - _, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0) - if e1 != 0 { -@@ -1872,20 +1918,6 @@ var libc_setresuid_trampoline_addr uintptr - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func Setrlimit(which int, lim *Rlimit) (err error) { -- _, _, e1 := syscall_rawSyscall(libc_setrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --var libc_setrlimit_trampoline_addr uintptr -- --//go:cgo_import_dynamic libc_setrlimit setrlimit "libc.so" -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func Setrtable(rtable int) (err error) { - _, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0) - if e1 != 0 { -@@ -2181,28 +2213,6 @@ var libc_munmap_trampoline_addr uintptr - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func readlen(fd int, buf *byte, nbuf int) (n int, err error) { -- r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) -- n = int(r0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- --func writelen(fd int, buf *byte, nbuf int) (n int, err error) { -- r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) -- n = int(r0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s -old mode 100644 -new mode 100755 -index 9ad116d..c922314 ---- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s -+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s -@@ -5,792 +5,670 @@ - - TEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getgroups(SB) -- - GLOBL ·libc_getgroups_trampoline_addr(SB), RODATA, $4 - DATA ·libc_getgroups_trampoline_addr(SB)/4, $libc_getgroups_trampoline<>(SB) - - TEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setgroups(SB) -- - GLOBL ·libc_setgroups_trampoline_addr(SB), RODATA, $4 - DATA ·libc_setgroups_trampoline_addr(SB)/4, $libc_setgroups_trampoline<>(SB) - - TEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_wait4(SB) -- - GLOBL ·libc_wait4_trampoline_addr(SB), RODATA, $4 - DATA ·libc_wait4_trampoline_addr(SB)/4, $libc_wait4_trampoline<>(SB) - - TEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_accept(SB) -- - GLOBL ·libc_accept_trampoline_addr(SB), RODATA, $4 - DATA ·libc_accept_trampoline_addr(SB)/4, $libc_accept_trampoline<>(SB) - - TEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_bind(SB) -- - GLOBL ·libc_bind_trampoline_addr(SB), RODATA, $4 - DATA ·libc_bind_trampoline_addr(SB)/4, $libc_bind_trampoline<>(SB) - - TEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_connect(SB) -- - GLOBL ·libc_connect_trampoline_addr(SB), RODATA, $4 - DATA ·libc_connect_trampoline_addr(SB)/4, $libc_connect_trampoline<>(SB) - - TEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_socket(SB) -- - GLOBL ·libc_socket_trampoline_addr(SB), RODATA, $4 - DATA ·libc_socket_trampoline_addr(SB)/4, $libc_socket_trampoline<>(SB) - - TEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getsockopt(SB) -- - GLOBL ·libc_getsockopt_trampoline_addr(SB), RODATA, $4 - DATA ·libc_getsockopt_trampoline_addr(SB)/4, $libc_getsockopt_trampoline<>(SB) - - TEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setsockopt(SB) -- - GLOBL ·libc_setsockopt_trampoline_addr(SB), RODATA, $4 - DATA ·libc_setsockopt_trampoline_addr(SB)/4, $libc_setsockopt_trampoline<>(SB) - - TEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getpeername(SB) -- - GLOBL ·libc_getpeername_trampoline_addr(SB), RODATA, $4 - DATA ·libc_getpeername_trampoline_addr(SB)/4, $libc_getpeername_trampoline<>(SB) - - TEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getsockname(SB) -- - GLOBL ·libc_getsockname_trampoline_addr(SB), RODATA, $4 - DATA ·libc_getsockname_trampoline_addr(SB)/4, $libc_getsockname_trampoline<>(SB) - - TEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_shutdown(SB) -- - GLOBL ·libc_shutdown_trampoline_addr(SB), RODATA, $4 - DATA ·libc_shutdown_trampoline_addr(SB)/4, $libc_shutdown_trampoline<>(SB) - - TEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_socketpair(SB) -- - GLOBL ·libc_socketpair_trampoline_addr(SB), RODATA, $4 - DATA ·libc_socketpair_trampoline_addr(SB)/4, $libc_socketpair_trampoline<>(SB) - - TEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_recvfrom(SB) -- - GLOBL ·libc_recvfrom_trampoline_addr(SB), RODATA, $4 - DATA ·libc_recvfrom_trampoline_addr(SB)/4, $libc_recvfrom_trampoline<>(SB) - - TEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_sendto(SB) -- - GLOBL ·libc_sendto_trampoline_addr(SB), RODATA, $4 - DATA ·libc_sendto_trampoline_addr(SB)/4, $libc_sendto_trampoline<>(SB) - - TEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_recvmsg(SB) -- - GLOBL ·libc_recvmsg_trampoline_addr(SB), RODATA, $4 - DATA ·libc_recvmsg_trampoline_addr(SB)/4, $libc_recvmsg_trampoline<>(SB) - - TEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_sendmsg(SB) -- - GLOBL ·libc_sendmsg_trampoline_addr(SB), RODATA, $4 - DATA ·libc_sendmsg_trampoline_addr(SB)/4, $libc_sendmsg_trampoline<>(SB) - - TEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_kevent(SB) -- - GLOBL ·libc_kevent_trampoline_addr(SB), RODATA, $4 - DATA ·libc_kevent_trampoline_addr(SB)/4, $libc_kevent_trampoline<>(SB) - - TEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_utimes(SB) -- - GLOBL ·libc_utimes_trampoline_addr(SB), RODATA, $4 - DATA ·libc_utimes_trampoline_addr(SB)/4, $libc_utimes_trampoline<>(SB) - - TEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_futimes(SB) -- - GLOBL ·libc_futimes_trampoline_addr(SB), RODATA, $4 - DATA ·libc_futimes_trampoline_addr(SB)/4, $libc_futimes_trampoline<>(SB) - - TEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_poll(SB) -- - GLOBL ·libc_poll_trampoline_addr(SB), RODATA, $4 - DATA ·libc_poll_trampoline_addr(SB)/4, $libc_poll_trampoline<>(SB) - - TEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_madvise(SB) -- - GLOBL ·libc_madvise_trampoline_addr(SB), RODATA, $4 - DATA ·libc_madvise_trampoline_addr(SB)/4, $libc_madvise_trampoline<>(SB) - - TEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mlock(SB) -- - GLOBL ·libc_mlock_trampoline_addr(SB), RODATA, $4 - DATA ·libc_mlock_trampoline_addr(SB)/4, $libc_mlock_trampoline<>(SB) - - TEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mlockall(SB) -- - GLOBL ·libc_mlockall_trampoline_addr(SB), RODATA, $4 - DATA ·libc_mlockall_trampoline_addr(SB)/4, $libc_mlockall_trampoline<>(SB) - - TEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mprotect(SB) -- - GLOBL ·libc_mprotect_trampoline_addr(SB), RODATA, $4 - DATA ·libc_mprotect_trampoline_addr(SB)/4, $libc_mprotect_trampoline<>(SB) - - TEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_msync(SB) -- - GLOBL ·libc_msync_trampoline_addr(SB), RODATA, $4 - DATA ·libc_msync_trampoline_addr(SB)/4, $libc_msync_trampoline<>(SB) - - TEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_munlock(SB) -- - GLOBL ·libc_munlock_trampoline_addr(SB), RODATA, $4 - DATA ·libc_munlock_trampoline_addr(SB)/4, $libc_munlock_trampoline<>(SB) - - TEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_munlockall(SB) -- - GLOBL ·libc_munlockall_trampoline_addr(SB), RODATA, $4 - DATA ·libc_munlockall_trampoline_addr(SB)/4, $libc_munlockall_trampoline<>(SB) - - TEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_pipe2(SB) -- - GLOBL ·libc_pipe2_trampoline_addr(SB), RODATA, $4 - DATA ·libc_pipe2_trampoline_addr(SB)/4, $libc_pipe2_trampoline<>(SB) - - TEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getdents(SB) -- - GLOBL ·libc_getdents_trampoline_addr(SB), RODATA, $4 - DATA ·libc_getdents_trampoline_addr(SB)/4, $libc_getdents_trampoline<>(SB) - - TEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getcwd(SB) -- - GLOBL ·libc_getcwd_trampoline_addr(SB), RODATA, $4 - DATA ·libc_getcwd_trampoline_addr(SB)/4, $libc_getcwd_trampoline<>(SB) - -+TEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_getresuid(SB) -+GLOBL ·libc_getresuid_trampoline_addr(SB), RODATA, $4 -+DATA ·libc_getresuid_trampoline_addr(SB)/4, $libc_getresuid_trampoline<>(SB) -+ -+TEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_getresgid(SB) -+GLOBL ·libc_getresgid_trampoline_addr(SB), RODATA, $4 -+DATA ·libc_getresgid_trampoline_addr(SB)/4, $libc_getresgid_trampoline<>(SB) -+ - TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_ioctl(SB) -- - GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $4 - DATA ·libc_ioctl_trampoline_addr(SB)/4, $libc_ioctl_trampoline<>(SB) - - TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_sysctl(SB) -- - GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $4 - DATA ·libc_sysctl_trampoline_addr(SB)/4, $libc_sysctl_trampoline<>(SB) - - TEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_ppoll(SB) -- - GLOBL ·libc_ppoll_trampoline_addr(SB), RODATA, $4 - DATA ·libc_ppoll_trampoline_addr(SB)/4, $libc_ppoll_trampoline<>(SB) - - TEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_access(SB) -- - GLOBL ·libc_access_trampoline_addr(SB), RODATA, $4 - DATA ·libc_access_trampoline_addr(SB)/4, $libc_access_trampoline<>(SB) - - TEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_adjtime(SB) -- - GLOBL ·libc_adjtime_trampoline_addr(SB), RODATA, $4 - DATA ·libc_adjtime_trampoline_addr(SB)/4, $libc_adjtime_trampoline<>(SB) - - TEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_chdir(SB) -- - GLOBL ·libc_chdir_trampoline_addr(SB), RODATA, $4 - DATA ·libc_chdir_trampoline_addr(SB)/4, $libc_chdir_trampoline<>(SB) - - TEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_chflags(SB) -- - GLOBL ·libc_chflags_trampoline_addr(SB), RODATA, $4 - DATA ·libc_chflags_trampoline_addr(SB)/4, $libc_chflags_trampoline<>(SB) - - TEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_chmod(SB) -- - GLOBL ·libc_chmod_trampoline_addr(SB), RODATA, $4 - DATA ·libc_chmod_trampoline_addr(SB)/4, $libc_chmod_trampoline<>(SB) - - TEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_chown(SB) -- - GLOBL ·libc_chown_trampoline_addr(SB), RODATA, $4 - DATA ·libc_chown_trampoline_addr(SB)/4, $libc_chown_trampoline<>(SB) - - TEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_chroot(SB) -- - GLOBL ·libc_chroot_trampoline_addr(SB), RODATA, $4 - DATA ·libc_chroot_trampoline_addr(SB)/4, $libc_chroot_trampoline<>(SB) - -+TEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_clock_gettime(SB) -+GLOBL ·libc_clock_gettime_trampoline_addr(SB), RODATA, $4 -+DATA ·libc_clock_gettime_trampoline_addr(SB)/4, $libc_clock_gettime_trampoline<>(SB) -+ - TEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_close(SB) -- - GLOBL ·libc_close_trampoline_addr(SB), RODATA, $4 - DATA ·libc_close_trampoline_addr(SB)/4, $libc_close_trampoline<>(SB) - - TEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_dup(SB) -- - GLOBL ·libc_dup_trampoline_addr(SB), RODATA, $4 - DATA ·libc_dup_trampoline_addr(SB)/4, $libc_dup_trampoline<>(SB) - - TEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_dup2(SB) -- - GLOBL ·libc_dup2_trampoline_addr(SB), RODATA, $4 - DATA ·libc_dup2_trampoline_addr(SB)/4, $libc_dup2_trampoline<>(SB) - - TEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_dup3(SB) -- - GLOBL ·libc_dup3_trampoline_addr(SB), RODATA, $4 - DATA ·libc_dup3_trampoline_addr(SB)/4, $libc_dup3_trampoline<>(SB) - - TEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_exit(SB) -- - GLOBL ·libc_exit_trampoline_addr(SB), RODATA, $4 - DATA ·libc_exit_trampoline_addr(SB)/4, $libc_exit_trampoline<>(SB) - - TEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_faccessat(SB) -- - GLOBL ·libc_faccessat_trampoline_addr(SB), RODATA, $4 - DATA ·libc_faccessat_trampoline_addr(SB)/4, $libc_faccessat_trampoline<>(SB) - - TEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchdir(SB) -- - GLOBL ·libc_fchdir_trampoline_addr(SB), RODATA, $4 - DATA ·libc_fchdir_trampoline_addr(SB)/4, $libc_fchdir_trampoline<>(SB) - - TEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchflags(SB) -- - GLOBL ·libc_fchflags_trampoline_addr(SB), RODATA, $4 - DATA ·libc_fchflags_trampoline_addr(SB)/4, $libc_fchflags_trampoline<>(SB) - - TEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchmod(SB) -- - GLOBL ·libc_fchmod_trampoline_addr(SB), RODATA, $4 - DATA ·libc_fchmod_trampoline_addr(SB)/4, $libc_fchmod_trampoline<>(SB) - - TEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchmodat(SB) -- - GLOBL ·libc_fchmodat_trampoline_addr(SB), RODATA, $4 - DATA ·libc_fchmodat_trampoline_addr(SB)/4, $libc_fchmodat_trampoline<>(SB) - - TEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchown(SB) -- - GLOBL ·libc_fchown_trampoline_addr(SB), RODATA, $4 - DATA ·libc_fchown_trampoline_addr(SB)/4, $libc_fchown_trampoline<>(SB) - - TEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchownat(SB) -- - GLOBL ·libc_fchownat_trampoline_addr(SB), RODATA, $4 - DATA ·libc_fchownat_trampoline_addr(SB)/4, $libc_fchownat_trampoline<>(SB) - - TEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_flock(SB) -- - GLOBL ·libc_flock_trampoline_addr(SB), RODATA, $4 - DATA ·libc_flock_trampoline_addr(SB)/4, $libc_flock_trampoline<>(SB) - - TEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fpathconf(SB) -- - GLOBL ·libc_fpathconf_trampoline_addr(SB), RODATA, $4 - DATA ·libc_fpathconf_trampoline_addr(SB)/4, $libc_fpathconf_trampoline<>(SB) - - TEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fstat(SB) -- - GLOBL ·libc_fstat_trampoline_addr(SB), RODATA, $4 - DATA ·libc_fstat_trampoline_addr(SB)/4, $libc_fstat_trampoline<>(SB) - - TEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fstatat(SB) -- - GLOBL ·libc_fstatat_trampoline_addr(SB), RODATA, $4 - DATA ·libc_fstatat_trampoline_addr(SB)/4, $libc_fstatat_trampoline<>(SB) - - TEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fstatfs(SB) -- - GLOBL ·libc_fstatfs_trampoline_addr(SB), RODATA, $4 - DATA ·libc_fstatfs_trampoline_addr(SB)/4, $libc_fstatfs_trampoline<>(SB) - - TEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fsync(SB) -- - GLOBL ·libc_fsync_trampoline_addr(SB), RODATA, $4 - DATA ·libc_fsync_trampoline_addr(SB)/4, $libc_fsync_trampoline<>(SB) - - TEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_ftruncate(SB) -- - GLOBL ·libc_ftruncate_trampoline_addr(SB), RODATA, $4 - DATA ·libc_ftruncate_trampoline_addr(SB)/4, $libc_ftruncate_trampoline<>(SB) - - TEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getegid(SB) -- - GLOBL ·libc_getegid_trampoline_addr(SB), RODATA, $4 - DATA ·libc_getegid_trampoline_addr(SB)/4, $libc_getegid_trampoline<>(SB) - - TEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_geteuid(SB) -- - GLOBL ·libc_geteuid_trampoline_addr(SB), RODATA, $4 - DATA ·libc_geteuid_trampoline_addr(SB)/4, $libc_geteuid_trampoline<>(SB) - - TEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getgid(SB) -- - GLOBL ·libc_getgid_trampoline_addr(SB), RODATA, $4 - DATA ·libc_getgid_trampoline_addr(SB)/4, $libc_getgid_trampoline<>(SB) - - TEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getpgid(SB) -- - GLOBL ·libc_getpgid_trampoline_addr(SB), RODATA, $4 - DATA ·libc_getpgid_trampoline_addr(SB)/4, $libc_getpgid_trampoline<>(SB) - - TEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getpgrp(SB) -- - GLOBL ·libc_getpgrp_trampoline_addr(SB), RODATA, $4 - DATA ·libc_getpgrp_trampoline_addr(SB)/4, $libc_getpgrp_trampoline<>(SB) - - TEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getpid(SB) -- - GLOBL ·libc_getpid_trampoline_addr(SB), RODATA, $4 - DATA ·libc_getpid_trampoline_addr(SB)/4, $libc_getpid_trampoline<>(SB) - - TEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getppid(SB) -- - GLOBL ·libc_getppid_trampoline_addr(SB), RODATA, $4 - DATA ·libc_getppid_trampoline_addr(SB)/4, $libc_getppid_trampoline<>(SB) - - TEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getpriority(SB) -- - GLOBL ·libc_getpriority_trampoline_addr(SB), RODATA, $4 - DATA ·libc_getpriority_trampoline_addr(SB)/4, $libc_getpriority_trampoline<>(SB) - - TEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getrlimit(SB) -- - GLOBL ·libc_getrlimit_trampoline_addr(SB), RODATA, $4 - DATA ·libc_getrlimit_trampoline_addr(SB)/4, $libc_getrlimit_trampoline<>(SB) - - TEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getrtable(SB) -- - GLOBL ·libc_getrtable_trampoline_addr(SB), RODATA, $4 - DATA ·libc_getrtable_trampoline_addr(SB)/4, $libc_getrtable_trampoline<>(SB) - - TEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getrusage(SB) -- - GLOBL ·libc_getrusage_trampoline_addr(SB), RODATA, $4 - DATA ·libc_getrusage_trampoline_addr(SB)/4, $libc_getrusage_trampoline<>(SB) - - TEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getsid(SB) -- - GLOBL ·libc_getsid_trampoline_addr(SB), RODATA, $4 - DATA ·libc_getsid_trampoline_addr(SB)/4, $libc_getsid_trampoline<>(SB) - - TEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_gettimeofday(SB) -- - GLOBL ·libc_gettimeofday_trampoline_addr(SB), RODATA, $4 - DATA ·libc_gettimeofday_trampoline_addr(SB)/4, $libc_gettimeofday_trampoline<>(SB) - - TEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getuid(SB) -- - GLOBL ·libc_getuid_trampoline_addr(SB), RODATA, $4 - DATA ·libc_getuid_trampoline_addr(SB)/4, $libc_getuid_trampoline<>(SB) - - TEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_issetugid(SB) -- - GLOBL ·libc_issetugid_trampoline_addr(SB), RODATA, $4 - DATA ·libc_issetugid_trampoline_addr(SB)/4, $libc_issetugid_trampoline<>(SB) - - TEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_kill(SB) -- - GLOBL ·libc_kill_trampoline_addr(SB), RODATA, $4 - DATA ·libc_kill_trampoline_addr(SB)/4, $libc_kill_trampoline<>(SB) - - TEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_kqueue(SB) -- - GLOBL ·libc_kqueue_trampoline_addr(SB), RODATA, $4 - DATA ·libc_kqueue_trampoline_addr(SB)/4, $libc_kqueue_trampoline<>(SB) - - TEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_lchown(SB) -- - GLOBL ·libc_lchown_trampoline_addr(SB), RODATA, $4 - DATA ·libc_lchown_trampoline_addr(SB)/4, $libc_lchown_trampoline<>(SB) - - TEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_link(SB) -- - GLOBL ·libc_link_trampoline_addr(SB), RODATA, $4 - DATA ·libc_link_trampoline_addr(SB)/4, $libc_link_trampoline<>(SB) - - TEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_linkat(SB) -- - GLOBL ·libc_linkat_trampoline_addr(SB), RODATA, $4 - DATA ·libc_linkat_trampoline_addr(SB)/4, $libc_linkat_trampoline<>(SB) - - TEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_listen(SB) -- - GLOBL ·libc_listen_trampoline_addr(SB), RODATA, $4 - DATA ·libc_listen_trampoline_addr(SB)/4, $libc_listen_trampoline<>(SB) - - TEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_lstat(SB) -- - GLOBL ·libc_lstat_trampoline_addr(SB), RODATA, $4 - DATA ·libc_lstat_trampoline_addr(SB)/4, $libc_lstat_trampoline<>(SB) - - TEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mkdir(SB) -- - GLOBL ·libc_mkdir_trampoline_addr(SB), RODATA, $4 - DATA ·libc_mkdir_trampoline_addr(SB)/4, $libc_mkdir_trampoline<>(SB) - - TEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mkdirat(SB) -- - GLOBL ·libc_mkdirat_trampoline_addr(SB), RODATA, $4 - DATA ·libc_mkdirat_trampoline_addr(SB)/4, $libc_mkdirat_trampoline<>(SB) - - TEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mkfifo(SB) -- - GLOBL ·libc_mkfifo_trampoline_addr(SB), RODATA, $4 - DATA ·libc_mkfifo_trampoline_addr(SB)/4, $libc_mkfifo_trampoline<>(SB) - - TEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mkfifoat(SB) -- - GLOBL ·libc_mkfifoat_trampoline_addr(SB), RODATA, $4 - DATA ·libc_mkfifoat_trampoline_addr(SB)/4, $libc_mkfifoat_trampoline<>(SB) - - TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mknod(SB) -- - GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $4 - DATA ·libc_mknod_trampoline_addr(SB)/4, $libc_mknod_trampoline<>(SB) - - TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mknodat(SB) -- - GLOBL ·libc_mknodat_trampoline_addr(SB), RODATA, $4 - DATA ·libc_mknodat_trampoline_addr(SB)/4, $libc_mknodat_trampoline<>(SB) - - TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_nanosleep(SB) -- - GLOBL ·libc_nanosleep_trampoline_addr(SB), RODATA, $4 - DATA ·libc_nanosleep_trampoline_addr(SB)/4, $libc_nanosleep_trampoline<>(SB) - - TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_open(SB) -- - GLOBL ·libc_open_trampoline_addr(SB), RODATA, $4 - DATA ·libc_open_trampoline_addr(SB)/4, $libc_open_trampoline<>(SB) - - TEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_openat(SB) -- - GLOBL ·libc_openat_trampoline_addr(SB), RODATA, $4 - DATA ·libc_openat_trampoline_addr(SB)/4, $libc_openat_trampoline<>(SB) - - TEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_pathconf(SB) -- - GLOBL ·libc_pathconf_trampoline_addr(SB), RODATA, $4 - DATA ·libc_pathconf_trampoline_addr(SB)/4, $libc_pathconf_trampoline<>(SB) - - TEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_pread(SB) -- - GLOBL ·libc_pread_trampoline_addr(SB), RODATA, $4 - DATA ·libc_pread_trampoline_addr(SB)/4, $libc_pread_trampoline<>(SB) - - TEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_pwrite(SB) -- - GLOBL ·libc_pwrite_trampoline_addr(SB), RODATA, $4 - DATA ·libc_pwrite_trampoline_addr(SB)/4, $libc_pwrite_trampoline<>(SB) - - TEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_read(SB) -- - GLOBL ·libc_read_trampoline_addr(SB), RODATA, $4 - DATA ·libc_read_trampoline_addr(SB)/4, $libc_read_trampoline<>(SB) - - TEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_readlink(SB) -- - GLOBL ·libc_readlink_trampoline_addr(SB), RODATA, $4 - DATA ·libc_readlink_trampoline_addr(SB)/4, $libc_readlink_trampoline<>(SB) - - TEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_readlinkat(SB) -- - GLOBL ·libc_readlinkat_trampoline_addr(SB), RODATA, $4 - DATA ·libc_readlinkat_trampoline_addr(SB)/4, $libc_readlinkat_trampoline<>(SB) - - TEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_rename(SB) -- - GLOBL ·libc_rename_trampoline_addr(SB), RODATA, $4 - DATA ·libc_rename_trampoline_addr(SB)/4, $libc_rename_trampoline<>(SB) - - TEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_renameat(SB) -- - GLOBL ·libc_renameat_trampoline_addr(SB), RODATA, $4 - DATA ·libc_renameat_trampoline_addr(SB)/4, $libc_renameat_trampoline<>(SB) - - TEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_revoke(SB) -- - GLOBL ·libc_revoke_trampoline_addr(SB), RODATA, $4 - DATA ·libc_revoke_trampoline_addr(SB)/4, $libc_revoke_trampoline<>(SB) - - TEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_rmdir(SB) -- - GLOBL ·libc_rmdir_trampoline_addr(SB), RODATA, $4 - DATA ·libc_rmdir_trampoline_addr(SB)/4, $libc_rmdir_trampoline<>(SB) - - TEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_lseek(SB) -- - GLOBL ·libc_lseek_trampoline_addr(SB), RODATA, $4 - DATA ·libc_lseek_trampoline_addr(SB)/4, $libc_lseek_trampoline<>(SB) - - TEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_select(SB) -- - GLOBL ·libc_select_trampoline_addr(SB), RODATA, $4 - DATA ·libc_select_trampoline_addr(SB)/4, $libc_select_trampoline<>(SB) - - TEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setegid(SB) -- - GLOBL ·libc_setegid_trampoline_addr(SB), RODATA, $4 - DATA ·libc_setegid_trampoline_addr(SB)/4, $libc_setegid_trampoline<>(SB) - - TEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_seteuid(SB) -- - GLOBL ·libc_seteuid_trampoline_addr(SB), RODATA, $4 - DATA ·libc_seteuid_trampoline_addr(SB)/4, $libc_seteuid_trampoline<>(SB) - - TEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setgid(SB) -- - GLOBL ·libc_setgid_trampoline_addr(SB), RODATA, $4 - DATA ·libc_setgid_trampoline_addr(SB)/4, $libc_setgid_trampoline<>(SB) - - TEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setlogin(SB) -- - GLOBL ·libc_setlogin_trampoline_addr(SB), RODATA, $4 - DATA ·libc_setlogin_trampoline_addr(SB)/4, $libc_setlogin_trampoline<>(SB) - - TEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setpgid(SB) -- - GLOBL ·libc_setpgid_trampoline_addr(SB), RODATA, $4 - DATA ·libc_setpgid_trampoline_addr(SB)/4, $libc_setpgid_trampoline<>(SB) - - TEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setpriority(SB) -- - GLOBL ·libc_setpriority_trampoline_addr(SB), RODATA, $4 - DATA ·libc_setpriority_trampoline_addr(SB)/4, $libc_setpriority_trampoline<>(SB) - - TEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setregid(SB) -- - GLOBL ·libc_setregid_trampoline_addr(SB), RODATA, $4 - DATA ·libc_setregid_trampoline_addr(SB)/4, $libc_setregid_trampoline<>(SB) - - TEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setreuid(SB) -- - GLOBL ·libc_setreuid_trampoline_addr(SB), RODATA, $4 - DATA ·libc_setreuid_trampoline_addr(SB)/4, $libc_setreuid_trampoline<>(SB) - - TEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setresgid(SB) -- - GLOBL ·libc_setresgid_trampoline_addr(SB), RODATA, $4 - DATA ·libc_setresgid_trampoline_addr(SB)/4, $libc_setresgid_trampoline<>(SB) - - TEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setresuid(SB) -- - GLOBL ·libc_setresuid_trampoline_addr(SB), RODATA, $4 - DATA ·libc_setresuid_trampoline_addr(SB)/4, $libc_setresuid_trampoline<>(SB) - --TEXT libc_setrlimit_trampoline<>(SB),NOSPLIT,$0-0 -- JMP libc_setrlimit(SB) -- --GLOBL ·libc_setrlimit_trampoline_addr(SB), RODATA, $4 --DATA ·libc_setrlimit_trampoline_addr(SB)/4, $libc_setrlimit_trampoline<>(SB) -- - TEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setrtable(SB) -- - GLOBL ·libc_setrtable_trampoline_addr(SB), RODATA, $4 - DATA ·libc_setrtable_trampoline_addr(SB)/4, $libc_setrtable_trampoline<>(SB) - - TEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setsid(SB) -- - GLOBL ·libc_setsid_trampoline_addr(SB), RODATA, $4 - DATA ·libc_setsid_trampoline_addr(SB)/4, $libc_setsid_trampoline<>(SB) - - TEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_settimeofday(SB) -- - GLOBL ·libc_settimeofday_trampoline_addr(SB), RODATA, $4 - DATA ·libc_settimeofday_trampoline_addr(SB)/4, $libc_settimeofday_trampoline<>(SB) - - TEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setuid(SB) -- - GLOBL ·libc_setuid_trampoline_addr(SB), RODATA, $4 - DATA ·libc_setuid_trampoline_addr(SB)/4, $libc_setuid_trampoline<>(SB) - - TEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_stat(SB) -- - GLOBL ·libc_stat_trampoline_addr(SB), RODATA, $4 - DATA ·libc_stat_trampoline_addr(SB)/4, $libc_stat_trampoline<>(SB) - - TEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_statfs(SB) -- - GLOBL ·libc_statfs_trampoline_addr(SB), RODATA, $4 - DATA ·libc_statfs_trampoline_addr(SB)/4, $libc_statfs_trampoline<>(SB) - - TEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_symlink(SB) -- - GLOBL ·libc_symlink_trampoline_addr(SB), RODATA, $4 - DATA ·libc_symlink_trampoline_addr(SB)/4, $libc_symlink_trampoline<>(SB) - - TEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_symlinkat(SB) -- - GLOBL ·libc_symlinkat_trampoline_addr(SB), RODATA, $4 - DATA ·libc_symlinkat_trampoline_addr(SB)/4, $libc_symlinkat_trampoline<>(SB) - - TEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_sync(SB) -- - GLOBL ·libc_sync_trampoline_addr(SB), RODATA, $4 - DATA ·libc_sync_trampoline_addr(SB)/4, $libc_sync_trampoline<>(SB) - - TEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_truncate(SB) -- - GLOBL ·libc_truncate_trampoline_addr(SB), RODATA, $4 - DATA ·libc_truncate_trampoline_addr(SB)/4, $libc_truncate_trampoline<>(SB) - - TEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_umask(SB) -- - GLOBL ·libc_umask_trampoline_addr(SB), RODATA, $4 - DATA ·libc_umask_trampoline_addr(SB)/4, $libc_umask_trampoline<>(SB) - - TEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_unlink(SB) -- - GLOBL ·libc_unlink_trampoline_addr(SB), RODATA, $4 - DATA ·libc_unlink_trampoline_addr(SB)/4, $libc_unlink_trampoline<>(SB) - - TEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_unlinkat(SB) -- - GLOBL ·libc_unlinkat_trampoline_addr(SB), RODATA, $4 - DATA ·libc_unlinkat_trampoline_addr(SB)/4, $libc_unlinkat_trampoline<>(SB) - - TEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_unmount(SB) -- - GLOBL ·libc_unmount_trampoline_addr(SB), RODATA, $4 - DATA ·libc_unmount_trampoline_addr(SB)/4, $libc_unmount_trampoline<>(SB) - - TEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_write(SB) -- - GLOBL ·libc_write_trampoline_addr(SB), RODATA, $4 - DATA ·libc_write_trampoline_addr(SB)/4, $libc_write_trampoline<>(SB) - - TEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mmap(SB) -- - GLOBL ·libc_mmap_trampoline_addr(SB), RODATA, $4 - DATA ·libc_mmap_trampoline_addr(SB)/4, $libc_mmap_trampoline<>(SB) - - TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_munmap(SB) -- - GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $4 - DATA ·libc_munmap_trampoline_addr(SB)/4, $libc_munmap_trampoline<>(SB) - - TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_utimensat(SB) -- - GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $4 - DATA ·libc_utimensat_trampoline_addr(SB)/4, $libc_utimensat_trampoline<>(SB) -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go -old mode 100644 -new mode 100755 -index 800aab6..a107b8f ---- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go -+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go -@@ -519,6 +519,28 @@ var libc_getcwd_trampoline_addr uintptr - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) { -+ syscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid))) -+ return -+} -+ -+var libc_getresuid_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_getresuid getresuid "libc.so" -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ -+func getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) { -+ syscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid))) -+ return -+} -+ -+var libc_getresgid_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_getresgid getresgid "libc.so" -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func ioctl(fd int, req uint, arg uintptr) (err error) { - _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) - if e1 != 0 { -@@ -533,6 +555,16 @@ var libc_ioctl_trampoline_addr uintptr - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { -+ _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { -@@ -696,6 +728,20 @@ var libc_chroot_trampoline_addr uintptr - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ClockGettime(clockid int32, time *Timespec) (err error) { -+ _, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+var libc_clock_gettime_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_clock_gettime clock_gettime "libc.so" -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func Close(fd int) (err error) { - _, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0) - if e1 != 0 { -@@ -1872,20 +1918,6 @@ var libc_setresuid_trampoline_addr uintptr - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func Setrlimit(which int, lim *Rlimit) (err error) { -- _, _, e1 := syscall_rawSyscall(libc_setrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --var libc_setrlimit_trampoline_addr uintptr -- --//go:cgo_import_dynamic libc_setrlimit setrlimit "libc.so" -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func Setrtable(rtable int) (err error) { - _, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0) - if e1 != 0 { -@@ -2181,28 +2213,6 @@ var libc_munmap_trampoline_addr uintptr - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func readlen(fd int, buf *byte, nbuf int) (n int, err error) { -- r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) -- n = int(r0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- --func writelen(fd int, buf *byte, nbuf int) (n int, err error) { -- r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) -- n = int(r0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s -old mode 100644 -new mode 100755 -index 4efeff9..a6bc32c ---- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s -+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s -@@ -5,792 +5,670 @@ - - TEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getgroups(SB) -- - GLOBL ·libc_getgroups_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB) - - TEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setgroups(SB) -- - GLOBL ·libc_setgroups_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB) - - TEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_wait4(SB) -- - GLOBL ·libc_wait4_trampoline_addr(SB), RODATA, $8 - DATA ·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB) - - TEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_accept(SB) -- - GLOBL ·libc_accept_trampoline_addr(SB), RODATA, $8 - DATA ·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB) - - TEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_bind(SB) -- - GLOBL ·libc_bind_trampoline_addr(SB), RODATA, $8 - DATA ·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB) - - TEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_connect(SB) -- - GLOBL ·libc_connect_trampoline_addr(SB), RODATA, $8 - DATA ·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB) - - TEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_socket(SB) -- - GLOBL ·libc_socket_trampoline_addr(SB), RODATA, $8 - DATA ·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB) - - TEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getsockopt(SB) -- - GLOBL ·libc_getsockopt_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB) - - TEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setsockopt(SB) -- - GLOBL ·libc_setsockopt_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB) - - TEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getpeername(SB) -- - GLOBL ·libc_getpeername_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB) - - TEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getsockname(SB) -- - GLOBL ·libc_getsockname_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB) - - TEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_shutdown(SB) -- - GLOBL ·libc_shutdown_trampoline_addr(SB), RODATA, $8 - DATA ·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB) - - TEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_socketpair(SB) -- - GLOBL ·libc_socketpair_trampoline_addr(SB), RODATA, $8 - DATA ·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB) - - TEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_recvfrom(SB) -- - GLOBL ·libc_recvfrom_trampoline_addr(SB), RODATA, $8 - DATA ·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB) - - TEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_sendto(SB) -- - GLOBL ·libc_sendto_trampoline_addr(SB), RODATA, $8 - DATA ·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB) - - TEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_recvmsg(SB) -- - GLOBL ·libc_recvmsg_trampoline_addr(SB), RODATA, $8 - DATA ·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB) - - TEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_sendmsg(SB) -- - GLOBL ·libc_sendmsg_trampoline_addr(SB), RODATA, $8 - DATA ·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB) - - TEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_kevent(SB) -- - GLOBL ·libc_kevent_trampoline_addr(SB), RODATA, $8 - DATA ·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB) - - TEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_utimes(SB) -- - GLOBL ·libc_utimes_trampoline_addr(SB), RODATA, $8 - DATA ·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB) - - TEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_futimes(SB) -- - GLOBL ·libc_futimes_trampoline_addr(SB), RODATA, $8 - DATA ·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB) - - TEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_poll(SB) -- - GLOBL ·libc_poll_trampoline_addr(SB), RODATA, $8 - DATA ·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB) - - TEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_madvise(SB) -- - GLOBL ·libc_madvise_trampoline_addr(SB), RODATA, $8 - DATA ·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB) - - TEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mlock(SB) -- - GLOBL ·libc_mlock_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB) - - TEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mlockall(SB) -- - GLOBL ·libc_mlockall_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB) - - TEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mprotect(SB) -- - GLOBL ·libc_mprotect_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB) - - TEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_msync(SB) -- - GLOBL ·libc_msync_trampoline_addr(SB), RODATA, $8 - DATA ·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB) - - TEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_munlock(SB) -- - GLOBL ·libc_munlock_trampoline_addr(SB), RODATA, $8 - DATA ·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB) - - TEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_munlockall(SB) -- - GLOBL ·libc_munlockall_trampoline_addr(SB), RODATA, $8 - DATA ·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB) - - TEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_pipe2(SB) -- - GLOBL ·libc_pipe2_trampoline_addr(SB), RODATA, $8 - DATA ·libc_pipe2_trampoline_addr(SB)/8, $libc_pipe2_trampoline<>(SB) - - TEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getdents(SB) -- - GLOBL ·libc_getdents_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getdents_trampoline_addr(SB)/8, $libc_getdents_trampoline<>(SB) - - TEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getcwd(SB) -- - GLOBL ·libc_getcwd_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB) - -+TEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_getresuid(SB) -+GLOBL ·libc_getresuid_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_getresuid_trampoline_addr(SB)/8, $libc_getresuid_trampoline<>(SB) -+ -+TEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_getresgid(SB) -+GLOBL ·libc_getresgid_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_getresgid_trampoline_addr(SB)/8, $libc_getresgid_trampoline<>(SB) -+ - TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_ioctl(SB) -- - GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $8 - DATA ·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB) - - TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_sysctl(SB) -- - GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 - DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB) - - TEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_ppoll(SB) -- - GLOBL ·libc_ppoll_trampoline_addr(SB), RODATA, $8 - DATA ·libc_ppoll_trampoline_addr(SB)/8, $libc_ppoll_trampoline<>(SB) - - TEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_access(SB) -- - GLOBL ·libc_access_trampoline_addr(SB), RODATA, $8 - DATA ·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB) - - TEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_adjtime(SB) -- - GLOBL ·libc_adjtime_trampoline_addr(SB), RODATA, $8 - DATA ·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB) - - TEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_chdir(SB) -- - GLOBL ·libc_chdir_trampoline_addr(SB), RODATA, $8 - DATA ·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB) - - TEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_chflags(SB) -- - GLOBL ·libc_chflags_trampoline_addr(SB), RODATA, $8 - DATA ·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB) - - TEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_chmod(SB) -- - GLOBL ·libc_chmod_trampoline_addr(SB), RODATA, $8 - DATA ·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB) - - TEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_chown(SB) -- - GLOBL ·libc_chown_trampoline_addr(SB), RODATA, $8 - DATA ·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB) - - TEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_chroot(SB) -- - GLOBL ·libc_chroot_trampoline_addr(SB), RODATA, $8 - DATA ·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB) - -+TEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_clock_gettime(SB) -+GLOBL ·libc_clock_gettime_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB) -+ - TEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_close(SB) -- - GLOBL ·libc_close_trampoline_addr(SB), RODATA, $8 - DATA ·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB) - - TEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_dup(SB) -- - GLOBL ·libc_dup_trampoline_addr(SB), RODATA, $8 - DATA ·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB) - - TEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_dup2(SB) -- - GLOBL ·libc_dup2_trampoline_addr(SB), RODATA, $8 - DATA ·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB) - - TEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_dup3(SB) -- - GLOBL ·libc_dup3_trampoline_addr(SB), RODATA, $8 - DATA ·libc_dup3_trampoline_addr(SB)/8, $libc_dup3_trampoline<>(SB) - - TEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_exit(SB) -- - GLOBL ·libc_exit_trampoline_addr(SB), RODATA, $8 - DATA ·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB) - - TEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_faccessat(SB) -- - GLOBL ·libc_faccessat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB) - - TEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchdir(SB) -- - GLOBL ·libc_fchdir_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB) - - TEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchflags(SB) -- - GLOBL ·libc_fchflags_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB) - - TEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchmod(SB) -- - GLOBL ·libc_fchmod_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB) - - TEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchmodat(SB) -- - GLOBL ·libc_fchmodat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB) - - TEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchown(SB) -- - GLOBL ·libc_fchown_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB) - - TEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchownat(SB) -- - GLOBL ·libc_fchownat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB) - - TEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_flock(SB) -- - GLOBL ·libc_flock_trampoline_addr(SB), RODATA, $8 - DATA ·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB) - - TEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fpathconf(SB) -- - GLOBL ·libc_fpathconf_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB) - - TEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fstat(SB) -- - GLOBL ·libc_fstat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB) - - TEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fstatat(SB) -- - GLOBL ·libc_fstatat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB) - - TEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fstatfs(SB) -- - GLOBL ·libc_fstatfs_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB) - - TEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fsync(SB) -- - GLOBL ·libc_fsync_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB) - - TEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_ftruncate(SB) -- - GLOBL ·libc_ftruncate_trampoline_addr(SB), RODATA, $8 - DATA ·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB) - - TEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getegid(SB) -- - GLOBL ·libc_getegid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB) - - TEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_geteuid(SB) -- - GLOBL ·libc_geteuid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB) - - TEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getgid(SB) -- - GLOBL ·libc_getgid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB) - - TEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getpgid(SB) -- - GLOBL ·libc_getpgid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB) - - TEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getpgrp(SB) -- - GLOBL ·libc_getpgrp_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB) - - TEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getpid(SB) -- - GLOBL ·libc_getpid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB) - - TEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getppid(SB) -- - GLOBL ·libc_getppid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB) - - TEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getpriority(SB) -- - GLOBL ·libc_getpriority_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB) - - TEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getrlimit(SB) -- - GLOBL ·libc_getrlimit_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB) - - TEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getrtable(SB) -- - GLOBL ·libc_getrtable_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getrtable_trampoline_addr(SB)/8, $libc_getrtable_trampoline<>(SB) - - TEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getrusage(SB) -- - GLOBL ·libc_getrusage_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB) - - TEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getsid(SB) -- - GLOBL ·libc_getsid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB) - - TEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_gettimeofday(SB) -- - GLOBL ·libc_gettimeofday_trampoline_addr(SB), RODATA, $8 - DATA ·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB) - - TEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getuid(SB) -- - GLOBL ·libc_getuid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB) - - TEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_issetugid(SB) -- - GLOBL ·libc_issetugid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB) - - TEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_kill(SB) -- - GLOBL ·libc_kill_trampoline_addr(SB), RODATA, $8 - DATA ·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB) - - TEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_kqueue(SB) -- - GLOBL ·libc_kqueue_trampoline_addr(SB), RODATA, $8 - DATA ·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB) - - TEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_lchown(SB) -- - GLOBL ·libc_lchown_trampoline_addr(SB), RODATA, $8 - DATA ·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB) - - TEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_link(SB) -- - GLOBL ·libc_link_trampoline_addr(SB), RODATA, $8 - DATA ·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB) - - TEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_linkat(SB) -- - GLOBL ·libc_linkat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB) - - TEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_listen(SB) -- - GLOBL ·libc_listen_trampoline_addr(SB), RODATA, $8 - DATA ·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB) - - TEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_lstat(SB) -- - GLOBL ·libc_lstat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB) - - TEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mkdir(SB) -- - GLOBL ·libc_mkdir_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB) - - TEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mkdirat(SB) -- - GLOBL ·libc_mkdirat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB) - - TEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mkfifo(SB) -- - GLOBL ·libc_mkfifo_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB) - - TEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mkfifoat(SB) -- - GLOBL ·libc_mkfifoat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mkfifoat_trampoline_addr(SB)/8, $libc_mkfifoat_trampoline<>(SB) - - TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mknod(SB) -- - GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB) - - TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mknodat(SB) -- - GLOBL ·libc_mknodat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB) - - TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_nanosleep(SB) -- - GLOBL ·libc_nanosleep_trampoline_addr(SB), RODATA, $8 - DATA ·libc_nanosleep_trampoline_addr(SB)/8, $libc_nanosleep_trampoline<>(SB) - - TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_open(SB) -- - GLOBL ·libc_open_trampoline_addr(SB), RODATA, $8 - DATA ·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB) - - TEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_openat(SB) -- - GLOBL ·libc_openat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB) - - TEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_pathconf(SB) -- - GLOBL ·libc_pathconf_trampoline_addr(SB), RODATA, $8 - DATA ·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB) - - TEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_pread(SB) -- - GLOBL ·libc_pread_trampoline_addr(SB), RODATA, $8 - DATA ·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB) - - TEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_pwrite(SB) -- - GLOBL ·libc_pwrite_trampoline_addr(SB), RODATA, $8 - DATA ·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB) - - TEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_read(SB) -- - GLOBL ·libc_read_trampoline_addr(SB), RODATA, $8 - DATA ·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB) - - TEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_readlink(SB) -- - GLOBL ·libc_readlink_trampoline_addr(SB), RODATA, $8 - DATA ·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB) - - TEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_readlinkat(SB) -- - GLOBL ·libc_readlinkat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB) - - TEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_rename(SB) -- - GLOBL ·libc_rename_trampoline_addr(SB), RODATA, $8 - DATA ·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB) - - TEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_renameat(SB) -- - GLOBL ·libc_renameat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB) - - TEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_revoke(SB) -- - GLOBL ·libc_revoke_trampoline_addr(SB), RODATA, $8 - DATA ·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB) - - TEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_rmdir(SB) -- - GLOBL ·libc_rmdir_trampoline_addr(SB), RODATA, $8 - DATA ·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB) - - TEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_lseek(SB) -- - GLOBL ·libc_lseek_trampoline_addr(SB), RODATA, $8 - DATA ·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB) - - TEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_select(SB) -- - GLOBL ·libc_select_trampoline_addr(SB), RODATA, $8 - DATA ·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB) - - TEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setegid(SB) -- - GLOBL ·libc_setegid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB) - - TEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_seteuid(SB) -- - GLOBL ·libc_seteuid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB) - - TEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setgid(SB) -- - GLOBL ·libc_setgid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB) - - TEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setlogin(SB) -- - GLOBL ·libc_setlogin_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB) - - TEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setpgid(SB) -- - GLOBL ·libc_setpgid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB) - - TEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setpriority(SB) -- - GLOBL ·libc_setpriority_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB) - - TEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setregid(SB) -- - GLOBL ·libc_setregid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB) - - TEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setreuid(SB) -- - GLOBL ·libc_setreuid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB) - - TEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setresgid(SB) -- - GLOBL ·libc_setresgid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setresgid_trampoline_addr(SB)/8, $libc_setresgid_trampoline<>(SB) - - TEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setresuid(SB) -- - GLOBL ·libc_setresuid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB) - --TEXT libc_setrlimit_trampoline<>(SB),NOSPLIT,$0-0 -- JMP libc_setrlimit(SB) -- --GLOBL ·libc_setrlimit_trampoline_addr(SB), RODATA, $8 --DATA ·libc_setrlimit_trampoline_addr(SB)/8, $libc_setrlimit_trampoline<>(SB) -- - TEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setrtable(SB) -- - GLOBL ·libc_setrtable_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setrtable_trampoline_addr(SB)/8, $libc_setrtable_trampoline<>(SB) - - TEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setsid(SB) -- - GLOBL ·libc_setsid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB) - - TEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_settimeofday(SB) -- - GLOBL ·libc_settimeofday_trampoline_addr(SB), RODATA, $8 - DATA ·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB) - - TEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setuid(SB) -- - GLOBL ·libc_setuid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB) - - TEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_stat(SB) -- - GLOBL ·libc_stat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB) - - TEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_statfs(SB) -- - GLOBL ·libc_statfs_trampoline_addr(SB), RODATA, $8 - DATA ·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB) - - TEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_symlink(SB) -- - GLOBL ·libc_symlink_trampoline_addr(SB), RODATA, $8 - DATA ·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB) - - TEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_symlinkat(SB) -- - GLOBL ·libc_symlinkat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB) - - TEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_sync(SB) -- - GLOBL ·libc_sync_trampoline_addr(SB), RODATA, $8 - DATA ·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB) - - TEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_truncate(SB) -- - GLOBL ·libc_truncate_trampoline_addr(SB), RODATA, $8 - DATA ·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB) - - TEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_umask(SB) -- - GLOBL ·libc_umask_trampoline_addr(SB), RODATA, $8 - DATA ·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB) - - TEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_unlink(SB) -- - GLOBL ·libc_unlink_trampoline_addr(SB), RODATA, $8 - DATA ·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB) - - TEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_unlinkat(SB) -- - GLOBL ·libc_unlinkat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB) - - TEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_unmount(SB) -- - GLOBL ·libc_unmount_trampoline_addr(SB), RODATA, $8 - DATA ·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB) - - TEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_write(SB) -- - GLOBL ·libc_write_trampoline_addr(SB), RODATA, $8 - DATA ·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB) - - TEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mmap(SB) -- - GLOBL ·libc_mmap_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB) - - TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_munmap(SB) -- - GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8 - DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB) - - TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_utimensat(SB) -- - GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB) -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go -old mode 100644 -new mode 100755 -index 016d959..c427de5 ---- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go -+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go -@@ -1,4 +1,4 @@ --// go run mksyscall.go -openbsd -tags openbsd,mips64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_mips64.go -+// go run mksyscall.go -openbsd -libc -tags openbsd,mips64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_mips64.go - // Code generated by the command above; see README.md. DO NOT EDIT. - - //go:build openbsd && mips64 -@@ -16,7 +16,7 @@ var _ syscall.Errno - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func getgroups(ngid int, gid *_Gid_t) (n int, err error) { -- r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) -+ r0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) -@@ -24,20 +24,28 @@ func getgroups(ngid int, gid *_Gid_t) (n int, err error) { - return - } - -+var libc_getgroups_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_getgroups getgroups "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func setgroups(ngid int, gid *_Gid_t) (err error) { -- _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) -+ _, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_setgroups_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_setgroups setgroups "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { -- r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) -+ r0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) - wpid = int(r0) - if e1 != 0 { - err = errnoErr(e1) -@@ -45,10 +53,14 @@ func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err - return - } - -+var libc_wait4_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_wait4 wait4 "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { -- r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) -+ r0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) - fd = int(r0) - if e1 != 0 { - err = errnoErr(e1) -@@ -56,30 +68,42 @@ func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { - return - } - -+var libc_accept_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_accept accept "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { -- _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) -+ _, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_bind_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_bind bind "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { -- _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) -+ _, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_connect_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_connect connect "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func socket(domain int, typ int, proto int) (fd int, err error) { -- r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) -+ r0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto)) - fd = int(r0) - if e1 != 0 { - err = errnoErr(e1) -@@ -87,66 +111,94 @@ func socket(domain int, typ int, proto int) (fd int, err error) { - return - } - -+var libc_socket_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_socket socket "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { -- _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) -+ _, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_getsockopt_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_getsockopt getsockopt "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { -- _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) -+ _, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_setsockopt_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_setsockopt setsockopt "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { -- _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) -+ _, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_getpeername_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_getpeername getpeername "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { -- _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) -+ _, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_getsockname_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_getsockname getsockname "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Shutdown(s int, how int) (err error) { -- _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) -+ _, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_shutdown_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_shutdown shutdown "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { -- _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) -+ _, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_socketpair_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_socketpair socketpair "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { -@@ -156,7 +208,7 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl - } else { - _p0 = unsafe.Pointer(&_zero) - } -- r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) -+ r0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) -@@ -164,6 +216,10 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl - return - } - -+var libc_recvfrom_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_recvfrom recvfrom "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { -@@ -173,17 +229,21 @@ func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) ( - } else { - _p0 = unsafe.Pointer(&_zero) - } -- _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) -+ _, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_sendto_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_sendto sendto "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { -- r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) -+ r0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) -@@ -191,10 +251,14 @@ func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { - return - } - -+var libc_recvmsg_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_recvmsg recvmsg "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { -- r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) -+ r0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) -@@ -202,10 +266,14 @@ func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { - return - } - -+var libc_sendmsg_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_sendmsg sendmsg "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { -- r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) -+ r0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) -@@ -213,6 +281,10 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne - return - } - -+var libc_kevent_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_kevent kevent "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func utimes(path string, timeval *[2]Timeval) (err error) { -@@ -221,27 +293,35 @@ func utimes(path string, timeval *[2]Timeval) (err error) { - if err != nil { - return - } -- _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) -+ _, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_utimes_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_utimes utimes "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func futimes(fd int, timeval *[2]Timeval) (err error) { -- _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) -+ _, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_futimes_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_futimes futimes "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { -- r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) -+ r0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) -@@ -249,6 +329,10 @@ func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { - return - } - -+var libc_poll_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_poll poll "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Madvise(b []byte, behav int) (err error) { -@@ -258,13 +342,17 @@ func Madvise(b []byte, behav int) (err error) { - } else { - _p0 = unsafe.Pointer(&_zero) - } -- _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) -+ _, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav)) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_madvise_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_madvise madvise "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Mlock(b []byte) (err error) { -@@ -274,23 +362,31 @@ func Mlock(b []byte) (err error) { - } else { - _p0 = unsafe.Pointer(&_zero) - } -- _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) -+ _, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_mlock_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_mlock mlock "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Mlockall(flags int) (err error) { -- _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) -+ _, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_mlockall_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_mlockall mlockall "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Mprotect(b []byte, prot int) (err error) { -@@ -300,13 +396,17 @@ func Mprotect(b []byte, prot int) (err error) { - } else { - _p0 = unsafe.Pointer(&_zero) - } -- _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) -+ _, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot)) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_mprotect_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_mprotect mprotect "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Msync(b []byte, flags int) (err error) { -@@ -316,13 +416,17 @@ func Msync(b []byte, flags int) (err error) { - } else { - _p0 = unsafe.Pointer(&_zero) - } -- _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) -+ _, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags)) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_msync_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_msync msync "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Munlock(b []byte) (err error) { -@@ -332,33 +436,45 @@ func Munlock(b []byte) (err error) { - } else { - _p0 = unsafe.Pointer(&_zero) - } -- _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) -+ _, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_munlock_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_munlock munlock "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Munlockall() (err error) { -- _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) -+ _, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_munlockall_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_munlockall munlockall "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func pipe2(p *[2]_C_int, flags int) (err error) { -- _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) -+ _, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_pipe2_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_pipe2 pipe2 "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Getdents(fd int, buf []byte) (n int, err error) { -@@ -368,7 +484,7 @@ func Getdents(fd int, buf []byte) (n int, err error) { - } else { - _p0 = unsafe.Pointer(&_zero) - } -- r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) -+ r0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf))) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) -@@ -376,6 +492,10 @@ func Getdents(fd int, buf []byte) (n int, err error) { - return - } - -+var libc_getdents_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_getdents getdents "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Getcwd(buf []byte) (n int, err error) { -@@ -385,7 +505,7 @@ func Getcwd(buf []byte) (n int, err error) { - } else { - _p0 = unsafe.Pointer(&_zero) - } -- r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) -+ r0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) -@@ -393,10 +513,50 @@ func Getcwd(buf []byte) (n int, err error) { - return - } - -+var libc_getcwd_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_getcwd getcwd "libc.so" -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ -+func getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) { -+ syscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid))) -+ return -+} -+ -+var libc_getresuid_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_getresuid getresuid "libc.so" -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ -+func getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) { -+ syscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid))) -+ return -+} -+ -+var libc_getresgid_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_getresgid getresgid "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func ioctl(fd int, req uint, arg uintptr) (err error) { -- _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) -+ _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+var libc_ioctl_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_ioctl ioctl "libc.so" -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ -+func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { -+ _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) - if e1 != 0 { - err = errnoErr(e1) - } -@@ -412,17 +572,21 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) - } else { - _p0 = unsafe.Pointer(&_zero) - } -- _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) -+ _, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_sysctl_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_sysctl sysctl "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { -- r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) -+ r0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) -@@ -430,6 +594,10 @@ func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, - return - } - -+var libc_ppoll_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_ppoll ppoll "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Access(path string, mode uint32) (err error) { -@@ -438,23 +606,31 @@ func Access(path string, mode uint32) (err error) { - if err != nil { - return - } -- _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) -+ _, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_access_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_access access "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { -- _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) -+ _, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_adjtime_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_adjtime adjtime "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Chdir(path string) (err error) { -@@ -463,13 +639,17 @@ func Chdir(path string) (err error) { - if err != nil { - return - } -- _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) -+ _, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_chdir_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_chdir chdir "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Chflags(path string, flags int) (err error) { -@@ -478,13 +658,17 @@ func Chflags(path string, flags int) (err error) { - if err != nil { - return - } -- _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) -+ _, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_chflags_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_chflags chflags "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Chmod(path string, mode uint32) (err error) { -@@ -493,13 +677,17 @@ func Chmod(path string, mode uint32) (err error) { - if err != nil { - return - } -- _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) -+ _, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_chmod_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_chmod chmod "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Chown(path string, uid int, gid int) (err error) { -@@ -508,13 +696,17 @@ func Chown(path string, uid int, gid int) (err error) { - if err != nil { - return - } -- _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) -+ _, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_chown_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_chown chown "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Chroot(path string) (err error) { -@@ -523,27 +715,49 @@ func Chroot(path string) (err error) { - if err != nil { - return - } -- _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) -+ _, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_chroot_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_chroot chroot "libc.so" -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ -+func ClockGettime(clockid int32, time *Timespec) (err error) { -+ _, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+var libc_clock_gettime_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_clock_gettime clock_gettime "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Close(fd int) (err error) { -- _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) -+ _, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_close_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_close close "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Dup(fd int) (nfd int, err error) { -- r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) -+ r0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0) - nfd = int(r0) - if e1 != 0 { - err = errnoErr(e1) -@@ -551,33 +765,49 @@ func Dup(fd int) (nfd int, err error) { - return - } - -+var libc_dup_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_dup dup "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Dup2(from int, to int) (err error) { -- _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) -+ _, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_dup2_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_dup2 dup2 "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Dup3(from int, to int, flags int) (err error) { -- _, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags)) -+ _, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags)) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_dup3_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_dup3 dup3 "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Exit(code int) { -- Syscall(SYS_EXIT, uintptr(code), 0, 0) -+ syscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0) - return - } - -+var libc_exit_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_exit exit "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { -@@ -586,43 +816,59 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { - if err != nil { - return - } -- _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) -+ _, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_faccessat_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_faccessat faccessat "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Fchdir(fd int) (err error) { -- _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) -+ _, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_fchdir_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_fchdir fchdir "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Fchflags(fd int, flags int) (err error) { -- _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) -+ _, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_fchflags_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_fchflags fchflags "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Fchmod(fd int, mode uint32) (err error) { -- _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) -+ _, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_fchmod_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_fchmod fchmod "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { -@@ -631,23 +877,31 @@ func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { - if err != nil { - return - } -- _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) -+ _, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_fchmodat_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_fchmodat fchmodat "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Fchown(fd int, uid int, gid int) (err error) { -- _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) -+ _, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid)) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_fchown_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_fchown fchown "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { -@@ -656,27 +910,35 @@ func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { - if err != nil { - return - } -- _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) -+ _, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_fchownat_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_fchownat fchownat "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Flock(fd int, how int) (err error) { -- _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) -+ _, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_flock_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_flock flock "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Fpathconf(fd int, name int) (val int, err error) { -- r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) -+ r0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0) - val = int(r0) - if e1 != 0 { - err = errnoErr(e1) -@@ -684,16 +946,24 @@ func Fpathconf(fd int, name int) (val int, err error) { - return - } - -+var libc_fpathconf_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_fpathconf fpathconf "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Fstat(fd int, stat *Stat_t) (err error) { -- _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) -+ _, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_fstat_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_fstat fstat "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { -@@ -702,71 +972,99 @@ func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { - if err != nil { - return - } -- _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) -+ _, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_fstatat_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_fstatat fstatat "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Fstatfs(fd int, stat *Statfs_t) (err error) { -- _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) -+ _, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_fstatfs_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_fstatfs fstatfs "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Fsync(fd int) (err error) { -- _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) -+ _, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_fsync_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_fsync fsync "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Ftruncate(fd int, length int64) (err error) { -- _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length)) -+ _, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_ftruncate_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_ftruncate ftruncate "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Getegid() (egid int) { -- r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) -+ r0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0) - egid = int(r0) - return - } - -+var libc_getegid_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_getegid getegid "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Geteuid() (uid int) { -- r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) -+ r0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0) - uid = int(r0) - return - } - -+var libc_geteuid_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_geteuid geteuid "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Getgid() (gid int) { -- r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) -+ r0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0) - gid = int(r0) - return - } - -+var libc_getgid_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_getgid getgid "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Getpgid(pid int) (pgid int, err error) { -- r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) -+ r0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0) - pgid = int(r0) - if e1 != 0 { - err = errnoErr(e1) -@@ -774,34 +1072,50 @@ func Getpgid(pid int) (pgid int, err error) { - return - } - -+var libc_getpgid_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_getpgid getpgid "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Getpgrp() (pgrp int) { -- r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) -+ r0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0) - pgrp = int(r0) - return - } - -+var libc_getpgrp_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_getpgrp getpgrp "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Getpid() (pid int) { -- r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) -+ r0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0) - pid = int(r0) - return - } - -+var libc_getpid_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_getpid getpid "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Getppid() (ppid int) { -- r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) -+ r0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0) - ppid = int(r0) - return - } - -+var libc_getppid_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_getppid getppid "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Getpriority(which int, who int) (prio int, err error) { -- r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) -+ r0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0) - prio = int(r0) - if e1 != 0 { - err = errnoErr(e1) -@@ -809,20 +1123,28 @@ func Getpriority(which int, who int) (prio int, err error) { - return - } - -+var libc_getpriority_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_getpriority getpriority "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Getrlimit(which int, lim *Rlimit) (err error) { -- _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) -+ _, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_getrlimit_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_getrlimit getrlimit "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Getrtable() (rtable int, err error) { -- r0, _, e1 := RawSyscall(SYS_GETRTABLE, 0, 0, 0) -+ r0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0) - rtable = int(r0) - if e1 != 0 { - err = errnoErr(e1) -@@ -830,20 +1152,28 @@ func Getrtable() (rtable int, err error) { - return - } - -+var libc_getrtable_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_getrtable getrtable "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Getrusage(who int, rusage *Rusage) (err error) { -- _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) -+ _, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_getrusage_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_getrusage getrusage "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Getsid(pid int) (sid int, err error) { -- r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) -+ r0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0) - sid = int(r0) - if e1 != 0 { - err = errnoErr(e1) -@@ -851,46 +1181,66 @@ func Getsid(pid int) (sid int, err error) { - return - } - -+var libc_getsid_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_getsid getsid "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Gettimeofday(tv *Timeval) (err error) { -- _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) -+ _, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_gettimeofday_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_gettimeofday gettimeofday "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Getuid() (uid int) { -- r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) -+ r0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0) - uid = int(r0) - return - } - -+var libc_getuid_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_getuid getuid "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Issetugid() (tainted bool) { -- r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) -+ r0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0) - tainted = bool(r0 != 0) - return - } - -+var libc_issetugid_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_issetugid issetugid "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Kill(pid int, signum syscall.Signal) (err error) { -- _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) -+ _, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_kill_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_kill kill "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Kqueue() (fd int, err error) { -- r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) -+ r0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0) - fd = int(r0) - if e1 != 0 { - err = errnoErr(e1) -@@ -898,6 +1248,10 @@ func Kqueue() (fd int, err error) { - return - } - -+var libc_kqueue_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_kqueue kqueue "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Lchown(path string, uid int, gid int) (err error) { -@@ -906,13 +1260,17 @@ func Lchown(path string, uid int, gid int) (err error) { - if err != nil { - return - } -- _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) -+ _, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_lchown_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_lchown lchown "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Link(path string, link string) (err error) { -@@ -926,13 +1284,17 @@ func Link(path string, link string) (err error) { - if err != nil { - return - } -- _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) -+ _, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_link_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_link link "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { -@@ -946,23 +1308,31 @@ func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err er - if err != nil { - return - } -- _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) -+ _, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_linkat_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_linkat linkat "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Listen(s int, backlog int) (err error) { -- _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) -+ _, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_listen_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_listen listen "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Lstat(path string, stat *Stat_t) (err error) { -@@ -971,13 +1341,17 @@ func Lstat(path string, stat *Stat_t) (err error) { - if err != nil { - return - } -- _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) -+ _, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_lstat_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_lstat lstat "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Mkdir(path string, mode uint32) (err error) { -@@ -986,13 +1360,17 @@ func Mkdir(path string, mode uint32) (err error) { - if err != nil { - return - } -- _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) -+ _, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_mkdir_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_mkdir mkdir "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Mkdirat(dirfd int, path string, mode uint32) (err error) { -@@ -1001,13 +1379,17 @@ func Mkdirat(dirfd int, path string, mode uint32) (err error) { - if err != nil { - return - } -- _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) -+ _, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_mkdirat_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_mkdirat mkdirat "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Mkfifo(path string, mode uint32) (err error) { -@@ -1016,13 +1398,17 @@ func Mkfifo(path string, mode uint32) (err error) { - if err != nil { - return - } -- _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) -+ _, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_mkfifo_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_mkfifo mkfifo "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Mkfifoat(dirfd int, path string, mode uint32) (err error) { -@@ -1031,13 +1417,17 @@ func Mkfifoat(dirfd int, path string, mode uint32) (err error) { - if err != nil { - return - } -- _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) -+ _, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_mkfifoat_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_mkfifoat mkfifoat "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Mknod(path string, mode uint32, dev int) (err error) { -@@ -1046,13 +1436,17 @@ func Mknod(path string, mode uint32, dev int) (err error) { - if err != nil { - return - } -- _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) -+ _, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_mknod_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_mknod mknod "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { -@@ -1061,23 +1455,31 @@ func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { - if err != nil { - return - } -- _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) -+ _, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_mknodat_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_mknodat mknodat "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Nanosleep(time *Timespec, leftover *Timespec) (err error) { -- _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) -+ _, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_nanosleep_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_nanosleep nanosleep "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Open(path string, mode int, perm uint32) (fd int, err error) { -@@ -1086,7 +1488,7 @@ func Open(path string, mode int, perm uint32) (fd int, err error) { - if err != nil { - return - } -- r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) -+ r0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) - fd = int(r0) - if e1 != 0 { - err = errnoErr(e1) -@@ -1094,6 +1496,10 @@ func Open(path string, mode int, perm uint32) (fd int, err error) { - return - } - -+var libc_open_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_open open "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { -@@ -1102,7 +1508,7 @@ func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { - if err != nil { - return - } -- r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) -+ r0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) - fd = int(r0) - if e1 != 0 { - err = errnoErr(e1) -@@ -1110,6 +1516,10 @@ func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { - return - } - -+var libc_openat_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_openat openat "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Pathconf(path string, name int) (val int, err error) { -@@ -1118,7 +1528,7 @@ func Pathconf(path string, name int) (val int, err error) { - if err != nil { - return - } -- r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) -+ r0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) - val = int(r0) - if e1 != 0 { - err = errnoErr(e1) -@@ -1126,6 +1536,10 @@ func Pathconf(path string, name int) (val int, err error) { - return - } - -+var libc_pathconf_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_pathconf pathconf "libc.so" -+ - // 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) { -@@ -1135,7 +1549,7 @@ func pread(fd int, p []byte, offset int64) (n int, err error) { - } else { - _p0 = unsafe.Pointer(&_zero) - } -- r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0) -+ r0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) -@@ -1143,6 +1557,10 @@ func pread(fd int, p []byte, offset int64) (n int, err error) { - return - } - -+var libc_pread_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_pread pread "libc.so" -+ - // 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) { -@@ -1152,7 +1570,7 @@ func pwrite(fd int, p []byte, offset int64) (n int, err error) { - } else { - _p0 = unsafe.Pointer(&_zero) - } -- r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0) -+ r0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) -@@ -1160,6 +1578,10 @@ func pwrite(fd int, p []byte, offset int64) (n int, err error) { - return - } - -+var libc_pwrite_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_pwrite pwrite "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func read(fd int, p []byte) (n int, err error) { -@@ -1169,7 +1591,7 @@ func read(fd int, p []byte) (n int, err error) { - } else { - _p0 = unsafe.Pointer(&_zero) - } -- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) -+ r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) -@@ -1177,6 +1599,10 @@ func read(fd int, p []byte) (n int, err error) { - return - } - -+var libc_read_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_read read "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Readlink(path string, buf []byte) (n int, err error) { -@@ -1191,7 +1617,7 @@ func Readlink(path string, buf []byte) (n int, err error) { - } else { - _p1 = unsafe.Pointer(&_zero) - } -- r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) -+ r0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) -@@ -1199,6 +1625,10 @@ func Readlink(path string, buf []byte) (n int, err error) { - return - } - -+var libc_readlink_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_readlink readlink "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { -@@ -1213,7 +1643,7 @@ func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { - } else { - _p1 = unsafe.Pointer(&_zero) - } -- r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) -+ r0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) -@@ -1221,6 +1651,10 @@ func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { - return - } - -+var libc_readlinkat_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_readlinkat readlinkat "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Rename(from string, to string) (err error) { -@@ -1234,13 +1668,17 @@ func Rename(from string, to string) (err error) { - if err != nil { - return - } -- _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) -+ _, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_rename_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_rename rename "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Renameat(fromfd int, from string, tofd int, to string) (err error) { -@@ -1254,13 +1692,17 @@ func Renameat(fromfd int, from string, tofd int, to string) (err error) { - if err != nil { - return - } -- _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) -+ _, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_renameat_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_renameat renameat "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Revoke(path string) (err error) { -@@ -1269,13 +1711,17 @@ func Revoke(path string) (err error) { - if err != nil { - return - } -- _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) -+ _, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_revoke_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_revoke revoke "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Rmdir(path string) (err error) { -@@ -1284,17 +1730,21 @@ func Rmdir(path string) (err error) { - if err != nil { - return - } -- _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) -+ _, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_rmdir_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_rmdir rmdir "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { -- r0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0) -+ r0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence)) - newoffset = int64(r0) - if e1 != 0 { - err = errnoErr(e1) -@@ -1302,10 +1752,14 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { - return - } - -+var libc_lseek_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_lseek lseek "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { -- r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) -+ r0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) -@@ -1313,36 +1767,52 @@ func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err - return - } - -+var libc_select_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_select select "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Setegid(egid int) (err error) { -- _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) -+ _, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_setegid_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_setegid setegid "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Seteuid(euid int) (err error) { -- _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) -+ _, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_seteuid_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_seteuid seteuid "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Setgid(gid int) (err error) { -- _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) -+ _, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_setgid_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_setgid setgid "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Setlogin(name string) (err error) { -@@ -1351,97 +1821,119 @@ func Setlogin(name string) (err error) { - if err != nil { - return - } -- _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) -+ _, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_setlogin_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_setlogin setlogin "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Setpgid(pid int, pgid int) (err error) { -- _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) -+ _, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_setpgid_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_setpgid setpgid "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Setpriority(which int, who int, prio int) (err error) { -- _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) -+ _, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio)) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_setpriority_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_setpriority setpriority "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Setregid(rgid int, egid int) (err error) { -- _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) -+ _, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_setregid_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_setregid setregid "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Setreuid(ruid int, euid int) (err error) { -- _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) -+ _, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_setreuid_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_setreuid setreuid "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Setresgid(rgid int, egid int, sgid int) (err error) { -- _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) -+ _, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid)) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_setresgid_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_setresgid setresgid "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Setresuid(ruid int, euid int, suid int) (err error) { -- _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) -+ _, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid)) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+var libc_setresuid_trampoline_addr uintptr - --func Setrlimit(which int, lim *Rlimit) (err error) { -- _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -+//go:cgo_import_dynamic libc_setresuid setresuid "libc.so" - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Setrtable(rtable int) (err error) { -- _, _, e1 := RawSyscall(SYS_SETRTABLE, uintptr(rtable), 0, 0) -+ _, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_setrtable_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_setrtable setrtable "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Setsid() (pid int, err error) { -- r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) -+ r0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0) - pid = int(r0) - if e1 != 0 { - err = errnoErr(e1) -@@ -1449,26 +1941,38 @@ func Setsid() (pid int, err error) { - return - } - -+var libc_setsid_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_setsid setsid "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Settimeofday(tp *Timeval) (err error) { -- _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) -+ _, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_settimeofday_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_settimeofday settimeofday "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Setuid(uid int) (err error) { -- _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) -+ _, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_setuid_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_setuid setuid "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Stat(path string, stat *Stat_t) (err error) { -@@ -1477,13 +1981,17 @@ func Stat(path string, stat *Stat_t) (err error) { - if err != nil { - return - } -- _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) -+ _, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_stat_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_stat stat "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Statfs(path string, stat *Statfs_t) (err error) { -@@ -1492,13 +2000,17 @@ func Statfs(path string, stat *Statfs_t) (err error) { - if err != nil { - return - } -- _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) -+ _, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_statfs_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_statfs statfs "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Symlink(path string, link string) (err error) { -@@ -1512,13 +2024,17 @@ func Symlink(path string, link string) (err error) { - if err != nil { - return - } -- _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) -+ _, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_symlink_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_symlink symlink "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { -@@ -1532,23 +2048,31 @@ func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { - if err != nil { - return - } -- _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) -+ _, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_symlinkat_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_symlinkat symlinkat "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Sync() (err error) { -- _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) -+ _, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_sync_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_sync sync "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Truncate(path string, length int64) (err error) { -@@ -1557,21 +2081,29 @@ func Truncate(path string, length int64) (err error) { - if err != nil { - return - } -- _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length)) -+ _, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_truncate_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_truncate truncate "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Umask(newmask int) (oldmask int) { -- r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) -+ r0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0) - oldmask = int(r0) - return - } - -+var libc_umask_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_umask umask "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Unlink(path string) (err error) { -@@ -1580,13 +2112,17 @@ func Unlink(path string) (err error) { - if err != nil { - return - } -- _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) -+ _, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_unlink_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_unlink unlink "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Unlinkat(dirfd int, path string, flags int) (err error) { -@@ -1595,13 +2131,17 @@ func Unlinkat(dirfd int, path string, flags int) (err error) { - if err != nil { - return - } -- _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) -+ _, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_unlinkat_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_unlinkat unlinkat "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func Unmount(path string, flags int) (err error) { -@@ -1610,13 +2150,17 @@ func Unmount(path string, flags int) (err error) { - if err != nil { - return - } -- _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) -+ _, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - -+var libc_unmount_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_unmount unmount "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func write(fd int, p []byte) (n int, err error) { -@@ -1626,7 +2170,7 @@ func write(fd int, p []byte) (n int, err error) { - } else { - _p0 = unsafe.Pointer(&_zero) - } -- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) -+ r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) -@@ -1634,10 +2178,14 @@ func write(fd int, p []byte) (n int, err error) { - return - } - -+var libc_write_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_write write "libc.so" -+ - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - - func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { -- r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0) -+ r0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) - ret = uintptr(r0) - if e1 != 0 { - err = errnoErr(e1) -@@ -1645,37 +2193,23 @@ func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) ( - return - } - --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+var libc_mmap_trampoline_addr uintptr - --func munmap(addr uintptr, length uintptr) (err error) { -- _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -+//go:cgo_import_dynamic libc_mmap mmap "libc.so" - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func readlen(fd int, buf *byte, nbuf int) (n int, err error) { -- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) -- n = int(r0) -+func munmap(addr uintptr, length uintptr) (err error) { -+ _, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } - --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+var libc_munmap_trampoline_addr uintptr - --func writelen(fd int, buf *byte, nbuf int) (n int, err error) { -- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) -- n = int(r0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -+//go:cgo_import_dynamic libc_munmap munmap "libc.so" - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -@@ -1685,9 +2219,13 @@ func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error - if err != nil { - return - } -- _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) -+ _, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return - } -+ -+var libc_utimensat_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_utimensat utimensat "libc.so" -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s -new file mode 100755 -index 0000000..b4e7bce ---- /dev/null -+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s -@@ -0,0 +1,674 @@ -+// go run mkasm.go openbsd mips64 -+// Code generated by the command above; DO NOT EDIT. -+ -+#include "textflag.h" -+ -+TEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_getgroups(SB) -+GLOBL ·libc_getgroups_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB) -+ -+TEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_setgroups(SB) -+GLOBL ·libc_setgroups_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB) -+ -+TEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_wait4(SB) -+GLOBL ·libc_wait4_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB) -+ -+TEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_accept(SB) -+GLOBL ·libc_accept_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB) -+ -+TEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_bind(SB) -+GLOBL ·libc_bind_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB) -+ -+TEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_connect(SB) -+GLOBL ·libc_connect_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB) -+ -+TEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_socket(SB) -+GLOBL ·libc_socket_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB) -+ -+TEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_getsockopt(SB) -+GLOBL ·libc_getsockopt_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB) -+ -+TEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_setsockopt(SB) -+GLOBL ·libc_setsockopt_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB) -+ -+TEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_getpeername(SB) -+GLOBL ·libc_getpeername_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB) -+ -+TEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_getsockname(SB) -+GLOBL ·libc_getsockname_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB) -+ -+TEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_shutdown(SB) -+GLOBL ·libc_shutdown_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB) -+ -+TEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_socketpair(SB) -+GLOBL ·libc_socketpair_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB) -+ -+TEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_recvfrom(SB) -+GLOBL ·libc_recvfrom_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB) -+ -+TEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_sendto(SB) -+GLOBL ·libc_sendto_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB) -+ -+TEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_recvmsg(SB) -+GLOBL ·libc_recvmsg_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB) -+ -+TEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_sendmsg(SB) -+GLOBL ·libc_sendmsg_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB) -+ -+TEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_kevent(SB) -+GLOBL ·libc_kevent_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB) -+ -+TEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_utimes(SB) -+GLOBL ·libc_utimes_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB) -+ -+TEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_futimes(SB) -+GLOBL ·libc_futimes_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB) -+ -+TEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_poll(SB) -+GLOBL ·libc_poll_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB) -+ -+TEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_madvise(SB) -+GLOBL ·libc_madvise_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB) -+ -+TEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_mlock(SB) -+GLOBL ·libc_mlock_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB) -+ -+TEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_mlockall(SB) -+GLOBL ·libc_mlockall_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB) -+ -+TEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_mprotect(SB) -+GLOBL ·libc_mprotect_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB) -+ -+TEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_msync(SB) -+GLOBL ·libc_msync_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB) -+ -+TEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_munlock(SB) -+GLOBL ·libc_munlock_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB) -+ -+TEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_munlockall(SB) -+GLOBL ·libc_munlockall_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB) -+ -+TEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_pipe2(SB) -+GLOBL ·libc_pipe2_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_pipe2_trampoline_addr(SB)/8, $libc_pipe2_trampoline<>(SB) -+ -+TEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_getdents(SB) -+GLOBL ·libc_getdents_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_getdents_trampoline_addr(SB)/8, $libc_getdents_trampoline<>(SB) -+ -+TEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_getcwd(SB) -+GLOBL ·libc_getcwd_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB) -+ -+TEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_getresuid(SB) -+GLOBL ·libc_getresuid_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_getresuid_trampoline_addr(SB)/8, $libc_getresuid_trampoline<>(SB) -+ -+TEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_getresgid(SB) -+GLOBL ·libc_getresgid_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_getresgid_trampoline_addr(SB)/8, $libc_getresgid_trampoline<>(SB) -+ -+TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_ioctl(SB) -+GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB) -+ -+TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_sysctl(SB) -+GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB) -+ -+TEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_ppoll(SB) -+GLOBL ·libc_ppoll_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_ppoll_trampoline_addr(SB)/8, $libc_ppoll_trampoline<>(SB) -+ -+TEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_access(SB) -+GLOBL ·libc_access_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB) -+ -+TEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_adjtime(SB) -+GLOBL ·libc_adjtime_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB) -+ -+TEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_chdir(SB) -+GLOBL ·libc_chdir_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB) -+ -+TEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_chflags(SB) -+GLOBL ·libc_chflags_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB) -+ -+TEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_chmod(SB) -+GLOBL ·libc_chmod_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB) -+ -+TEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_chown(SB) -+GLOBL ·libc_chown_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB) -+ -+TEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_chroot(SB) -+GLOBL ·libc_chroot_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB) -+ -+TEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_clock_gettime(SB) -+GLOBL ·libc_clock_gettime_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB) -+ -+TEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_close(SB) -+GLOBL ·libc_close_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB) -+ -+TEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_dup(SB) -+GLOBL ·libc_dup_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB) -+ -+TEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_dup2(SB) -+GLOBL ·libc_dup2_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB) -+ -+TEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_dup3(SB) -+GLOBL ·libc_dup3_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_dup3_trampoline_addr(SB)/8, $libc_dup3_trampoline<>(SB) -+ -+TEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_exit(SB) -+GLOBL ·libc_exit_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB) -+ -+TEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_faccessat(SB) -+GLOBL ·libc_faccessat_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB) -+ -+TEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_fchdir(SB) -+GLOBL ·libc_fchdir_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB) -+ -+TEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_fchflags(SB) -+GLOBL ·libc_fchflags_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB) -+ -+TEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_fchmod(SB) -+GLOBL ·libc_fchmod_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB) -+ -+TEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_fchmodat(SB) -+GLOBL ·libc_fchmodat_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB) -+ -+TEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_fchown(SB) -+GLOBL ·libc_fchown_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB) -+ -+TEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_fchownat(SB) -+GLOBL ·libc_fchownat_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB) -+ -+TEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_flock(SB) -+GLOBL ·libc_flock_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB) -+ -+TEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_fpathconf(SB) -+GLOBL ·libc_fpathconf_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB) -+ -+TEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_fstat(SB) -+GLOBL ·libc_fstat_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB) -+ -+TEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_fstatat(SB) -+GLOBL ·libc_fstatat_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB) -+ -+TEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_fstatfs(SB) -+GLOBL ·libc_fstatfs_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB) -+ -+TEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_fsync(SB) -+GLOBL ·libc_fsync_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB) -+ -+TEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_ftruncate(SB) -+GLOBL ·libc_ftruncate_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB) -+ -+TEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_getegid(SB) -+GLOBL ·libc_getegid_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB) -+ -+TEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_geteuid(SB) -+GLOBL ·libc_geteuid_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB) -+ -+TEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_getgid(SB) -+GLOBL ·libc_getgid_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB) -+ -+TEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_getpgid(SB) -+GLOBL ·libc_getpgid_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB) -+ -+TEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_getpgrp(SB) -+GLOBL ·libc_getpgrp_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB) -+ -+TEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_getpid(SB) -+GLOBL ·libc_getpid_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB) -+ -+TEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_getppid(SB) -+GLOBL ·libc_getppid_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB) -+ -+TEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_getpriority(SB) -+GLOBL ·libc_getpriority_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB) -+ -+TEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_getrlimit(SB) -+GLOBL ·libc_getrlimit_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB) -+ -+TEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_getrtable(SB) -+GLOBL ·libc_getrtable_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_getrtable_trampoline_addr(SB)/8, $libc_getrtable_trampoline<>(SB) -+ -+TEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_getrusage(SB) -+GLOBL ·libc_getrusage_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB) -+ -+TEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_getsid(SB) -+GLOBL ·libc_getsid_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB) -+ -+TEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_gettimeofday(SB) -+GLOBL ·libc_gettimeofday_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB) -+ -+TEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_getuid(SB) -+GLOBL ·libc_getuid_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB) -+ -+TEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_issetugid(SB) -+GLOBL ·libc_issetugid_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB) -+ -+TEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_kill(SB) -+GLOBL ·libc_kill_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB) -+ -+TEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_kqueue(SB) -+GLOBL ·libc_kqueue_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB) -+ -+TEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_lchown(SB) -+GLOBL ·libc_lchown_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB) -+ -+TEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_link(SB) -+GLOBL ·libc_link_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB) -+ -+TEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_linkat(SB) -+GLOBL ·libc_linkat_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB) -+ -+TEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_listen(SB) -+GLOBL ·libc_listen_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB) -+ -+TEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_lstat(SB) -+GLOBL ·libc_lstat_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB) -+ -+TEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_mkdir(SB) -+GLOBL ·libc_mkdir_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB) -+ -+TEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_mkdirat(SB) -+GLOBL ·libc_mkdirat_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB) -+ -+TEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_mkfifo(SB) -+GLOBL ·libc_mkfifo_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB) -+ -+TEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_mkfifoat(SB) -+GLOBL ·libc_mkfifoat_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_mkfifoat_trampoline_addr(SB)/8, $libc_mkfifoat_trampoline<>(SB) -+ -+TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_mknod(SB) -+GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB) -+ -+TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_mknodat(SB) -+GLOBL ·libc_mknodat_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB) -+ -+TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_nanosleep(SB) -+GLOBL ·libc_nanosleep_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_nanosleep_trampoline_addr(SB)/8, $libc_nanosleep_trampoline<>(SB) -+ -+TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_open(SB) -+GLOBL ·libc_open_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB) -+ -+TEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_openat(SB) -+GLOBL ·libc_openat_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB) -+ -+TEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_pathconf(SB) -+GLOBL ·libc_pathconf_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB) -+ -+TEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_pread(SB) -+GLOBL ·libc_pread_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB) -+ -+TEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_pwrite(SB) -+GLOBL ·libc_pwrite_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB) -+ -+TEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_read(SB) -+GLOBL ·libc_read_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB) -+ -+TEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_readlink(SB) -+GLOBL ·libc_readlink_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB) -+ -+TEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_readlinkat(SB) -+GLOBL ·libc_readlinkat_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB) -+ -+TEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_rename(SB) -+GLOBL ·libc_rename_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB) -+ -+TEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_renameat(SB) -+GLOBL ·libc_renameat_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB) -+ -+TEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_revoke(SB) -+GLOBL ·libc_revoke_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB) -+ -+TEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_rmdir(SB) -+GLOBL ·libc_rmdir_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB) -+ -+TEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_lseek(SB) -+GLOBL ·libc_lseek_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB) -+ -+TEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_select(SB) -+GLOBL ·libc_select_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB) -+ -+TEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_setegid(SB) -+GLOBL ·libc_setegid_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB) -+ -+TEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_seteuid(SB) -+GLOBL ·libc_seteuid_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB) -+ -+TEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_setgid(SB) -+GLOBL ·libc_setgid_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB) -+ -+TEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_setlogin(SB) -+GLOBL ·libc_setlogin_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB) -+ -+TEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_setpgid(SB) -+GLOBL ·libc_setpgid_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB) -+ -+TEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_setpriority(SB) -+GLOBL ·libc_setpriority_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB) -+ -+TEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_setregid(SB) -+GLOBL ·libc_setregid_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB) -+ -+TEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_setreuid(SB) -+GLOBL ·libc_setreuid_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB) -+ -+TEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_setresgid(SB) -+GLOBL ·libc_setresgid_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_setresgid_trampoline_addr(SB)/8, $libc_setresgid_trampoline<>(SB) -+ -+TEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_setresuid(SB) -+GLOBL ·libc_setresuid_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB) -+ -+TEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_setrtable(SB) -+GLOBL ·libc_setrtable_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_setrtable_trampoline_addr(SB)/8, $libc_setrtable_trampoline<>(SB) -+ -+TEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_setsid(SB) -+GLOBL ·libc_setsid_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB) -+ -+TEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_settimeofday(SB) -+GLOBL ·libc_settimeofday_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB) -+ -+TEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_setuid(SB) -+GLOBL ·libc_setuid_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB) -+ -+TEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_stat(SB) -+GLOBL ·libc_stat_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB) -+ -+TEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_statfs(SB) -+GLOBL ·libc_statfs_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB) -+ -+TEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_symlink(SB) -+GLOBL ·libc_symlink_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB) -+ -+TEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_symlinkat(SB) -+GLOBL ·libc_symlinkat_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB) -+ -+TEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_sync(SB) -+GLOBL ·libc_sync_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB) -+ -+TEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_truncate(SB) -+GLOBL ·libc_truncate_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB) -+ -+TEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_umask(SB) -+GLOBL ·libc_umask_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB) -+ -+TEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_unlink(SB) -+GLOBL ·libc_unlink_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB) -+ -+TEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_unlinkat(SB) -+GLOBL ·libc_unlinkat_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB) -+ -+TEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_unmount(SB) -+GLOBL ·libc_unmount_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB) -+ -+TEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_write(SB) -+GLOBL ·libc_write_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB) -+ -+TEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_mmap(SB) -+GLOBL ·libc_mmap_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB) -+ -+TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_munmap(SB) -+GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB) -+ -+TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_utimensat(SB) -+GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB) -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go -old mode 100644 -new mode 100755 -index c85de2d..60c1a99 ---- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go -+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go -@@ -519,6 +519,28 @@ var libc_getcwd_trampoline_addr uintptr - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) { -+ syscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid))) -+ return -+} -+ -+var libc_getresuid_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_getresuid getresuid "libc.so" -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ -+func getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) { -+ syscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid))) -+ return -+} -+ -+var libc_getresgid_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_getresgid getresgid "libc.so" -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func ioctl(fd int, req uint, arg uintptr) (err error) { - _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) - if e1 != 0 { -@@ -533,6 +555,16 @@ var libc_ioctl_trampoline_addr uintptr - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { -+ _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { -@@ -696,6 +728,20 @@ var libc_chroot_trampoline_addr uintptr - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ClockGettime(clockid int32, time *Timespec) (err error) { -+ _, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+var libc_clock_gettime_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_clock_gettime clock_gettime "libc.so" -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func Close(fd int) (err error) { - _, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0) - if e1 != 0 { -@@ -1872,20 +1918,6 @@ var libc_setresuid_trampoline_addr uintptr - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func Setrlimit(which int, lim *Rlimit) (err error) { -- _, _, e1 := syscall_rawSyscall(libc_setrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --var libc_setrlimit_trampoline_addr uintptr -- --//go:cgo_import_dynamic libc_setrlimit setrlimit "libc.so" -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func Setrtable(rtable int) (err error) { - _, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0) - if e1 != 0 { -@@ -2181,28 +2213,6 @@ var libc_munmap_trampoline_addr uintptr - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func readlen(fd int, buf *byte, nbuf int) (n int, err error) { -- r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) -- n = int(r0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- --func writelen(fd int, buf *byte, nbuf int) (n int, err error) { -- r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) -- n = int(r0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s -old mode 100644 -new mode 100755 -index 7c9223b..ca3f766 ---- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s -+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s -@@ -189,6 +189,18 @@ TEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0 - GLOBL ·libc_getcwd_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB) - -+TEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0 -+ CALL libc_getresuid(SB) -+ RET -+GLOBL ·libc_getresuid_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_getresuid_trampoline_addr(SB)/8, $libc_getresuid_trampoline<>(SB) -+ -+TEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0 -+ CALL libc_getresgid(SB) -+ RET -+GLOBL ·libc_getresgid_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_getresgid_trampoline_addr(SB)/8, $libc_getresgid_trampoline<>(SB) -+ - TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0 - CALL libc_ioctl(SB) - RET -@@ -249,6 +261,12 @@ TEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0 - GLOBL ·libc_chroot_trampoline_addr(SB), RODATA, $8 - DATA ·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB) - -+TEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0 -+ CALL libc_clock_gettime(SB) -+ RET -+GLOBL ·libc_clock_gettime_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB) -+ - TEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0 - CALL libc_close(SB) - RET -@@ -681,12 +699,6 @@ TEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0 - GLOBL ·libc_setresuid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB) - --TEXT libc_setrlimit_trampoline<>(SB),NOSPLIT,$0-0 -- CALL libc_setrlimit(SB) -- RET --GLOBL ·libc_setrlimit_trampoline_addr(SB), RODATA, $8 --DATA ·libc_setrlimit_trampoline_addr(SB)/8, $libc_setrlimit_trampoline<>(SB) -- - TEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0 - CALL libc_setrtable(SB) - RET -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go -old mode 100644 -new mode 100755 -index 8e3e787..52eba36 ---- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go -+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go -@@ -519,6 +519,28 @@ var libc_getcwd_trampoline_addr uintptr - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) { -+ syscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid))) -+ return -+} -+ -+var libc_getresuid_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_getresuid getresuid "libc.so" -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ -+func getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) { -+ syscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid))) -+ return -+} -+ -+var libc_getresgid_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_getresgid getresgid "libc.so" -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func ioctl(fd int, req uint, arg uintptr) (err error) { - _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) - if e1 != 0 { -@@ -533,6 +555,16 @@ var libc_ioctl_trampoline_addr uintptr - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { -+ _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { -@@ -696,6 +728,20 @@ var libc_chroot_trampoline_addr uintptr - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -+func ClockGettime(clockid int32, time *Timespec) (err error) { -+ _, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+var libc_clock_gettime_trampoline_addr uintptr -+ -+//go:cgo_import_dynamic libc_clock_gettime clock_gettime "libc.so" -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ - func Close(fd int) (err error) { - _, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0) - if e1 != 0 { -@@ -1872,20 +1918,6 @@ var libc_setresuid_trampoline_addr uintptr - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func Setrlimit(which int, lim *Rlimit) (err error) { -- _, _, e1 := syscall_rawSyscall(libc_setrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --var libc_setrlimit_trampoline_addr uintptr -- --//go:cgo_import_dynamic libc_setrlimit setrlimit "libc.so" -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func Setrtable(rtable int) (err error) { - _, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0) - if e1 != 0 { -@@ -2181,28 +2213,6 @@ var libc_munmap_trampoline_addr uintptr - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func readlen(fd int, buf *byte, nbuf int) (n int, err error) { -- r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) -- n = int(r0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- --func writelen(fd int, buf *byte, nbuf int) (n int, err error) { -- r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) -- n = int(r0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s -old mode 100644 -new mode 100755 -index 7dba789..477a7d5 ---- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s -+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s -@@ -5,792 +5,670 @@ - - TEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getgroups(SB) -- - GLOBL ·libc_getgroups_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB) - - TEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setgroups(SB) -- - GLOBL ·libc_setgroups_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB) - - TEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_wait4(SB) -- - GLOBL ·libc_wait4_trampoline_addr(SB), RODATA, $8 - DATA ·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB) - - TEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_accept(SB) -- - GLOBL ·libc_accept_trampoline_addr(SB), RODATA, $8 - DATA ·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB) - - TEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_bind(SB) -- - GLOBL ·libc_bind_trampoline_addr(SB), RODATA, $8 - DATA ·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB) - - TEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_connect(SB) -- - GLOBL ·libc_connect_trampoline_addr(SB), RODATA, $8 - DATA ·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB) - - TEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_socket(SB) -- - GLOBL ·libc_socket_trampoline_addr(SB), RODATA, $8 - DATA ·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB) - - TEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getsockopt(SB) -- - GLOBL ·libc_getsockopt_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB) - - TEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setsockopt(SB) -- - GLOBL ·libc_setsockopt_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB) - - TEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getpeername(SB) -- - GLOBL ·libc_getpeername_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB) - - TEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getsockname(SB) -- - GLOBL ·libc_getsockname_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB) - - TEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_shutdown(SB) -- - GLOBL ·libc_shutdown_trampoline_addr(SB), RODATA, $8 - DATA ·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB) - - TEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_socketpair(SB) -- - GLOBL ·libc_socketpair_trampoline_addr(SB), RODATA, $8 - DATA ·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB) - - TEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_recvfrom(SB) -- - GLOBL ·libc_recvfrom_trampoline_addr(SB), RODATA, $8 - DATA ·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB) - - TEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_sendto(SB) -- - GLOBL ·libc_sendto_trampoline_addr(SB), RODATA, $8 - DATA ·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB) - - TEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_recvmsg(SB) -- - GLOBL ·libc_recvmsg_trampoline_addr(SB), RODATA, $8 - DATA ·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB) - - TEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_sendmsg(SB) -- - GLOBL ·libc_sendmsg_trampoline_addr(SB), RODATA, $8 - DATA ·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB) - - TEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_kevent(SB) -- - GLOBL ·libc_kevent_trampoline_addr(SB), RODATA, $8 - DATA ·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB) - - TEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_utimes(SB) -- - GLOBL ·libc_utimes_trampoline_addr(SB), RODATA, $8 - DATA ·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB) - - TEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_futimes(SB) -- - GLOBL ·libc_futimes_trampoline_addr(SB), RODATA, $8 - DATA ·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB) - - TEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_poll(SB) -- - GLOBL ·libc_poll_trampoline_addr(SB), RODATA, $8 - DATA ·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB) - - TEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_madvise(SB) -- - GLOBL ·libc_madvise_trampoline_addr(SB), RODATA, $8 - DATA ·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB) - - TEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mlock(SB) -- - GLOBL ·libc_mlock_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB) - - TEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mlockall(SB) -- - GLOBL ·libc_mlockall_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB) - - TEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mprotect(SB) -- - GLOBL ·libc_mprotect_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB) - - TEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_msync(SB) -- - GLOBL ·libc_msync_trampoline_addr(SB), RODATA, $8 - DATA ·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB) - - TEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_munlock(SB) -- - GLOBL ·libc_munlock_trampoline_addr(SB), RODATA, $8 - DATA ·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB) - - TEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_munlockall(SB) -- - GLOBL ·libc_munlockall_trampoline_addr(SB), RODATA, $8 - DATA ·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB) - - TEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_pipe2(SB) -- - GLOBL ·libc_pipe2_trampoline_addr(SB), RODATA, $8 - DATA ·libc_pipe2_trampoline_addr(SB)/8, $libc_pipe2_trampoline<>(SB) - - TEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getdents(SB) -- - GLOBL ·libc_getdents_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getdents_trampoline_addr(SB)/8, $libc_getdents_trampoline<>(SB) - - TEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getcwd(SB) -- - GLOBL ·libc_getcwd_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB) - -+TEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_getresuid(SB) -+GLOBL ·libc_getresuid_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_getresuid_trampoline_addr(SB)/8, $libc_getresuid_trampoline<>(SB) -+ -+TEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_getresgid(SB) -+GLOBL ·libc_getresgid_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_getresgid_trampoline_addr(SB)/8, $libc_getresgid_trampoline<>(SB) -+ - TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_ioctl(SB) -- - GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $8 - DATA ·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB) - - TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_sysctl(SB) -- - GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 - DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB) - - TEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_ppoll(SB) -- - GLOBL ·libc_ppoll_trampoline_addr(SB), RODATA, $8 - DATA ·libc_ppoll_trampoline_addr(SB)/8, $libc_ppoll_trampoline<>(SB) - - TEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_access(SB) -- - GLOBL ·libc_access_trampoline_addr(SB), RODATA, $8 - DATA ·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB) - - TEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_adjtime(SB) -- - GLOBL ·libc_adjtime_trampoline_addr(SB), RODATA, $8 - DATA ·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB) - - TEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_chdir(SB) -- - GLOBL ·libc_chdir_trampoline_addr(SB), RODATA, $8 - DATA ·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB) - - TEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_chflags(SB) -- - GLOBL ·libc_chflags_trampoline_addr(SB), RODATA, $8 - DATA ·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB) - - TEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_chmod(SB) -- - GLOBL ·libc_chmod_trampoline_addr(SB), RODATA, $8 - DATA ·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB) - - TEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_chown(SB) -- - GLOBL ·libc_chown_trampoline_addr(SB), RODATA, $8 - DATA ·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB) - - TEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_chroot(SB) -- - GLOBL ·libc_chroot_trampoline_addr(SB), RODATA, $8 - DATA ·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB) - -+TEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0 -+ JMP libc_clock_gettime(SB) -+GLOBL ·libc_clock_gettime_trampoline_addr(SB), RODATA, $8 -+DATA ·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB) -+ - TEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_close(SB) -- - GLOBL ·libc_close_trampoline_addr(SB), RODATA, $8 - DATA ·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB) - - TEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_dup(SB) -- - GLOBL ·libc_dup_trampoline_addr(SB), RODATA, $8 - DATA ·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB) - - TEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_dup2(SB) -- - GLOBL ·libc_dup2_trampoline_addr(SB), RODATA, $8 - DATA ·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB) - - TEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_dup3(SB) -- - GLOBL ·libc_dup3_trampoline_addr(SB), RODATA, $8 - DATA ·libc_dup3_trampoline_addr(SB)/8, $libc_dup3_trampoline<>(SB) - - TEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_exit(SB) -- - GLOBL ·libc_exit_trampoline_addr(SB), RODATA, $8 - DATA ·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB) - - TEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_faccessat(SB) -- - GLOBL ·libc_faccessat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB) - - TEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchdir(SB) -- - GLOBL ·libc_fchdir_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB) - - TEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchflags(SB) -- - GLOBL ·libc_fchflags_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB) - - TEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchmod(SB) -- - GLOBL ·libc_fchmod_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB) - - TEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchmodat(SB) -- - GLOBL ·libc_fchmodat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB) - - TEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchown(SB) -- - GLOBL ·libc_fchown_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB) - - TEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fchownat(SB) -- - GLOBL ·libc_fchownat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB) - - TEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_flock(SB) -- - GLOBL ·libc_flock_trampoline_addr(SB), RODATA, $8 - DATA ·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB) - - TEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fpathconf(SB) -- - GLOBL ·libc_fpathconf_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB) - - TEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fstat(SB) -- - GLOBL ·libc_fstat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB) - - TEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fstatat(SB) -- - GLOBL ·libc_fstatat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB) - - TEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fstatfs(SB) -- - GLOBL ·libc_fstatfs_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB) - - TEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fsync(SB) -- - GLOBL ·libc_fsync_trampoline_addr(SB), RODATA, $8 - DATA ·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB) - - TEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_ftruncate(SB) -- - GLOBL ·libc_ftruncate_trampoline_addr(SB), RODATA, $8 - DATA ·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB) - - TEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getegid(SB) -- - GLOBL ·libc_getegid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB) - - TEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_geteuid(SB) -- - GLOBL ·libc_geteuid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB) - - TEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getgid(SB) -- - GLOBL ·libc_getgid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB) - - TEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getpgid(SB) -- - GLOBL ·libc_getpgid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB) - - TEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getpgrp(SB) -- - GLOBL ·libc_getpgrp_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB) - - TEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getpid(SB) -- - GLOBL ·libc_getpid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB) - - TEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getppid(SB) -- - GLOBL ·libc_getppid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB) - - TEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getpriority(SB) -- - GLOBL ·libc_getpriority_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB) - - TEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getrlimit(SB) -- - GLOBL ·libc_getrlimit_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB) - - TEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getrtable(SB) -- - GLOBL ·libc_getrtable_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getrtable_trampoline_addr(SB)/8, $libc_getrtable_trampoline<>(SB) - - TEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getrusage(SB) -- - GLOBL ·libc_getrusage_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB) - - TEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getsid(SB) -- - GLOBL ·libc_getsid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB) - - TEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_gettimeofday(SB) -- - GLOBL ·libc_gettimeofday_trampoline_addr(SB), RODATA, $8 - DATA ·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB) - - TEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_getuid(SB) -- - GLOBL ·libc_getuid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB) - - TEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_issetugid(SB) -- - GLOBL ·libc_issetugid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB) - - TEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_kill(SB) -- - GLOBL ·libc_kill_trampoline_addr(SB), RODATA, $8 - DATA ·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB) - - TEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_kqueue(SB) -- - GLOBL ·libc_kqueue_trampoline_addr(SB), RODATA, $8 - DATA ·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB) - - TEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_lchown(SB) -- - GLOBL ·libc_lchown_trampoline_addr(SB), RODATA, $8 - DATA ·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB) - - TEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_link(SB) -- - GLOBL ·libc_link_trampoline_addr(SB), RODATA, $8 - DATA ·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB) - - TEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_linkat(SB) -- - GLOBL ·libc_linkat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB) - - TEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_listen(SB) -- - GLOBL ·libc_listen_trampoline_addr(SB), RODATA, $8 - DATA ·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB) - - TEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_lstat(SB) -- - GLOBL ·libc_lstat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB) - - TEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mkdir(SB) -- - GLOBL ·libc_mkdir_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB) - - TEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mkdirat(SB) -- - GLOBL ·libc_mkdirat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB) - - TEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mkfifo(SB) -- - GLOBL ·libc_mkfifo_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB) - - TEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mkfifoat(SB) -- - GLOBL ·libc_mkfifoat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mkfifoat_trampoline_addr(SB)/8, $libc_mkfifoat_trampoline<>(SB) - - TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mknod(SB) -- - GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB) - - TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mknodat(SB) -- - GLOBL ·libc_mknodat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB) - - TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_nanosleep(SB) -- - GLOBL ·libc_nanosleep_trampoline_addr(SB), RODATA, $8 - DATA ·libc_nanosleep_trampoline_addr(SB)/8, $libc_nanosleep_trampoline<>(SB) - - TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_open(SB) -- - GLOBL ·libc_open_trampoline_addr(SB), RODATA, $8 - DATA ·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB) - - TEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_openat(SB) -- - GLOBL ·libc_openat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB) - - TEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_pathconf(SB) -- - GLOBL ·libc_pathconf_trampoline_addr(SB), RODATA, $8 - DATA ·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB) - - TEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_pread(SB) -- - GLOBL ·libc_pread_trampoline_addr(SB), RODATA, $8 - DATA ·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB) - - TEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_pwrite(SB) -- - GLOBL ·libc_pwrite_trampoline_addr(SB), RODATA, $8 - DATA ·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB) - - TEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_read(SB) -- - GLOBL ·libc_read_trampoline_addr(SB), RODATA, $8 - DATA ·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB) - - TEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_readlink(SB) -- - GLOBL ·libc_readlink_trampoline_addr(SB), RODATA, $8 - DATA ·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB) - - TEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_readlinkat(SB) -- - GLOBL ·libc_readlinkat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB) - - TEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_rename(SB) -- - GLOBL ·libc_rename_trampoline_addr(SB), RODATA, $8 - DATA ·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB) - - TEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_renameat(SB) -- - GLOBL ·libc_renameat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB) - - TEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_revoke(SB) -- - GLOBL ·libc_revoke_trampoline_addr(SB), RODATA, $8 - DATA ·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB) - - TEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_rmdir(SB) -- - GLOBL ·libc_rmdir_trampoline_addr(SB), RODATA, $8 - DATA ·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB) - - TEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_lseek(SB) -- - GLOBL ·libc_lseek_trampoline_addr(SB), RODATA, $8 - DATA ·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB) - - TEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_select(SB) -- - GLOBL ·libc_select_trampoline_addr(SB), RODATA, $8 - DATA ·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB) - - TEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setegid(SB) -- - GLOBL ·libc_setegid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB) - - TEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_seteuid(SB) -- - GLOBL ·libc_seteuid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB) - - TEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setgid(SB) -- - GLOBL ·libc_setgid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB) - - TEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setlogin(SB) -- - GLOBL ·libc_setlogin_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB) - - TEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setpgid(SB) -- - GLOBL ·libc_setpgid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB) - - TEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setpriority(SB) -- - GLOBL ·libc_setpriority_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB) - - TEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setregid(SB) -- - GLOBL ·libc_setregid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB) - - TEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setreuid(SB) -- - GLOBL ·libc_setreuid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB) - - TEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setresgid(SB) -- - GLOBL ·libc_setresgid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setresgid_trampoline_addr(SB)/8, $libc_setresgid_trampoline<>(SB) - - TEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setresuid(SB) -- - GLOBL ·libc_setresuid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB) - --TEXT libc_setrlimit_trampoline<>(SB),NOSPLIT,$0-0 -- JMP libc_setrlimit(SB) -- --GLOBL ·libc_setrlimit_trampoline_addr(SB), RODATA, $8 --DATA ·libc_setrlimit_trampoline_addr(SB)/8, $libc_setrlimit_trampoline<>(SB) -- - TEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setrtable(SB) -- - GLOBL ·libc_setrtable_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setrtable_trampoline_addr(SB)/8, $libc_setrtable_trampoline<>(SB) - - TEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setsid(SB) -- - GLOBL ·libc_setsid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB) - - TEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_settimeofday(SB) -- - GLOBL ·libc_settimeofday_trampoline_addr(SB), RODATA, $8 - DATA ·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB) - - TEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_setuid(SB) -- - GLOBL ·libc_setuid_trampoline_addr(SB), RODATA, $8 - DATA ·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB) - - TEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_stat(SB) -- - GLOBL ·libc_stat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB) - - TEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_statfs(SB) -- - GLOBL ·libc_statfs_trampoline_addr(SB), RODATA, $8 - DATA ·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB) - - TEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_symlink(SB) -- - GLOBL ·libc_symlink_trampoline_addr(SB), RODATA, $8 - DATA ·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB) - - TEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_symlinkat(SB) -- - GLOBL ·libc_symlinkat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB) - - TEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_sync(SB) -- - GLOBL ·libc_sync_trampoline_addr(SB), RODATA, $8 - DATA ·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB) - - TEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_truncate(SB) -- - GLOBL ·libc_truncate_trampoline_addr(SB), RODATA, $8 - DATA ·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB) - - TEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_umask(SB) -- - GLOBL ·libc_umask_trampoline_addr(SB), RODATA, $8 - DATA ·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB) - - TEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_unlink(SB) -- - GLOBL ·libc_unlink_trampoline_addr(SB), RODATA, $8 - DATA ·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB) - - TEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_unlinkat(SB) -- - GLOBL ·libc_unlinkat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB) - - TEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_unmount(SB) -- - GLOBL ·libc_unmount_trampoline_addr(SB), RODATA, $8 - DATA ·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB) - - TEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_write(SB) -- - GLOBL ·libc_write_trampoline_addr(SB), RODATA, $8 - DATA ·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB) - - TEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_mmap(SB) -- - GLOBL ·libc_mmap_trampoline_addr(SB), RODATA, $8 - DATA ·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB) - - TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_munmap(SB) -- - GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8 - DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB) - - TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_utimensat(SB) -- - GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $8 - DATA ·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB) -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go -old mode 100644 -new mode 100755 -index 91f5a2b..b401894 ---- a/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go -+++ b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go -@@ -38,6 +38,7 @@ import ( - //go:cgo_import_dynamic libc_chmod chmod "libc.so" - //go:cgo_import_dynamic libc_chown chown "libc.so" - //go:cgo_import_dynamic libc_chroot chroot "libc.so" -+//go:cgo_import_dynamic libc_clockgettime clockgettime "libc.so" - //go:cgo_import_dynamic libc_close close "libc.so" - //go:cgo_import_dynamic libc_creat creat "libc.so" - //go:cgo_import_dynamic libc_dup dup "libc.so" -@@ -109,7 +110,6 @@ import ( - //go:cgo_import_dynamic libc_setpriority setpriority "libc.so" - //go:cgo_import_dynamic libc_setregid setregid "libc.so" - //go:cgo_import_dynamic libc_setreuid setreuid "libc.so" --//go:cgo_import_dynamic libc_setrlimit setrlimit "libc.so" - //go:cgo_import_dynamic libc_setsid setsid "libc.so" - //go:cgo_import_dynamic libc_setuid setuid "libc.so" - //go:cgo_import_dynamic libc_shutdown shutdown "libsocket.so" -@@ -177,6 +177,7 @@ import ( - //go:linkname procChmod libc_chmod - //go:linkname procChown libc_chown - //go:linkname procChroot libc_chroot -+//go:linkname procClockGettime libc_clockgettime - //go:linkname procClose libc_close - //go:linkname procCreat libc_creat - //go:linkname procDup libc_dup -@@ -248,7 +249,6 @@ import ( - //go:linkname procSetpriority libc_setpriority - //go:linkname procSetregid libc_setregid - //go:linkname procSetreuid libc_setreuid --//go:linkname procSetrlimit libc_setrlimit - //go:linkname procSetsid libc_setsid - //go:linkname procSetuid libc_setuid - //go:linkname procshutdown libc_shutdown -@@ -317,6 +317,7 @@ var ( - procChmod, - procChown, - procChroot, -+ procClockGettime, - procClose, - procCreat, - procDup, -@@ -388,7 +389,6 @@ var ( - procSetpriority, - procSetregid, - procSetreuid, -- procSetrlimit, - procSetsid, - procSetuid, - procshutdown, -@@ -436,7 +436,7 @@ func pipe(p *[2]_C_int) (n int, err error) { - r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procpipe)), 1, uintptr(unsafe.Pointer(p)), 0, 0, 0, 0, 0) - n = int(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -446,7 +446,7 @@ func pipe(p *[2]_C_int) (n int, err error) { - func pipe2(p *[2]_C_int, flags int) (err error) { - _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procpipe2)), 2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -456,7 +456,7 @@ func pipe2(p *[2]_C_int, flags int) (err error) { - func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgetsockname)), 3, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -471,7 +471,7 @@ func Getcwd(buf []byte) (n int, err error) { - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetcwd)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), 0, 0, 0, 0) - n = int(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -482,7 +482,7 @@ func getgroups(ngid int, gid *_Gid_t) (n int, err error) { - r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procgetgroups)), 2, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0, 0, 0, 0) - n = int(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -492,7 +492,7 @@ func getgroups(ngid int, gid *_Gid_t) (n int, err error) { - func setgroups(ngid int, gid *_Gid_t) (err error) { - _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procsetgroups)), 2, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -503,7 +503,7 @@ func wait4(pid int32, statusp *_C_int, options int, rusage *Rusage) (wpid int32, - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwait4)), 4, uintptr(pid), uintptr(unsafe.Pointer(statusp)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) - wpid = int32(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -518,7 +518,7 @@ func gethostname(buf []byte) (n int, err error) { - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgethostname)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), 0, 0, 0, 0) - n = int(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -533,7 +533,7 @@ func utimes(path string, times *[2]Timeval) (err error) { - } - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procutimes)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -548,7 +548,7 @@ func utimensat(fd int, path string, times *[2]Timespec, flag int) (err error) { - } - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procutimensat)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flag), 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -559,7 +559,7 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) { - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(arg), 0, 0, 0) - val = int(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -569,7 +569,7 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) { - func futimesat(fildes int, path *byte, times *[2]Timeval) (err error) { - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfutimesat)), 3, uintptr(fildes), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)), 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -580,7 +580,7 @@ func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procaccept)), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0) - fd = int(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -591,7 +591,7 @@ func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_recvmsg)), 3, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0) - n = int(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -602,7 +602,7 @@ func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_sendmsg)), 3, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0) - n = int(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -612,7 +612,7 @@ func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { - func acct(path *byte) (err error) { - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procacct)), 1, uintptr(unsafe.Pointer(path)), 0, 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -643,11 +643,22 @@ func __minor(version int, dev uint64) (val uint) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func ioctlRet(fd int, req uint, arg uintptr) (ret int, err error) { -+func ioctlRet(fd int, req int, arg uintptr) (ret int, err error) { - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procioctl)), 3, uintptr(fd), uintptr(req), uintptr(arg), 0, 0, 0) - ret = int(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ -+func ioctlPtrRet(fd int, req int, arg unsafe.Pointer) (ret int, err error) { -+ r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procioctl)), 3, uintptr(fd), uintptr(req), uintptr(arg), 0, 0, 0) -+ ret = int(r0) -+ if e1 != 0 { -+ err = errnoErr(e1) - } - return - } -@@ -658,7 +669,7 @@ func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpoll)), 3, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout), 0, 0, 0) - n = int(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -673,7 +684,7 @@ func Access(path string, mode uint32) (err error) { - } - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procAccess)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -683,7 +694,7 @@ func Access(path string, mode uint32) (err error) { - func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procAdjtime)), 2, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -698,7 +709,7 @@ func Chdir(path string) (err error) { - } - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChdir)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -713,7 +724,7 @@ func Chmod(path string, mode uint32) (err error) { - } - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChmod)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -728,7 +739,7 @@ func Chown(path string, uid int, gid int) (err error) { - } - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChown)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -743,7 +754,17 @@ func Chroot(path string) (err error) { - } - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChroot)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ -+func ClockGettime(clockid int32, time *Timespec) (err error) { -+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procClockGettime)), 2, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0, 0, 0, 0) -+ if e1 != 0 { -+ err = errnoErr(e1) - } - return - } -@@ -753,7 +774,7 @@ func Chroot(path string) (err error) { - func Close(fd int) (err error) { - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procClose)), 1, uintptr(fd), 0, 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -769,7 +790,7 @@ func Creat(path string, mode uint32) (fd int, err error) { - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procCreat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0) - fd = int(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -780,7 +801,7 @@ func Dup(fd int) (nfd int, err error) { - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procDup)), 1, uintptr(fd), 0, 0, 0, 0, 0) - nfd = int(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -790,7 +811,7 @@ func Dup(fd int) (nfd int, err error) { - func Dup2(oldfd int, newfd int) (err error) { - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procDup2)), 2, uintptr(oldfd), uintptr(newfd), 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -812,7 +833,7 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { - } - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFaccessat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -822,7 +843,7 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { - func Fchdir(fd int) (err error) { - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchdir)), 1, uintptr(fd), 0, 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -832,7 +853,7 @@ func Fchdir(fd int) (err error) { - func Fchmod(fd int, mode uint32) (err error) { - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchmod)), 2, uintptr(fd), uintptr(mode), 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -847,7 +868,7 @@ func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { - } - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchmodat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -857,7 +878,7 @@ func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { - func Fchown(fd int, uid int, gid int) (err error) { - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchown)), 3, uintptr(fd), uintptr(uid), uintptr(gid), 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -872,7 +893,7 @@ func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { - } - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchownat)), 5, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -882,7 +903,7 @@ func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { - func Fdatasync(fd int) (err error) { - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFdatasync)), 1, uintptr(fd), 0, 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -892,7 +913,7 @@ func Fdatasync(fd int) (err error) { - func Flock(fd int, how int) (err error) { - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFlock)), 2, uintptr(fd), uintptr(how), 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -903,7 +924,7 @@ func Fpathconf(fd int, name int) (val int, err error) { - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFpathconf)), 2, uintptr(fd), uintptr(name), 0, 0, 0, 0) - val = int(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -913,7 +934,7 @@ func Fpathconf(fd int, name int) (val int, err error) { - func Fstat(fd int, stat *Stat_t) (err error) { - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstat)), 2, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -928,7 +949,7 @@ func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { - } - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstatat)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -938,7 +959,7 @@ func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { - func Fstatvfs(fd int, vfsstat *Statvfs_t) (err error) { - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstatvfs)), 2, uintptr(fd), uintptr(unsafe.Pointer(vfsstat)), 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -953,7 +974,7 @@ func Getdents(fd int, buf []byte, basep *uintptr) (n int, err error) { - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetdents)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) - n = int(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -980,7 +1001,7 @@ func Getpgid(pid int) (pgid int, err error) { - r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpgid)), 1, uintptr(pid), 0, 0, 0, 0, 0) - pgid = int(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -991,7 +1012,7 @@ func Getpgrp() (pgid int, err error) { - r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpgrp)), 0, 0, 0, 0, 0, 0, 0) - pgid = int(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1026,7 +1047,7 @@ func Getpriority(which int, who int) (n int, err error) { - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetpriority)), 2, uintptr(which), uintptr(who), 0, 0, 0, 0) - n = int(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1036,7 +1057,7 @@ func Getpriority(which int, who int) (n int, err error) { - func Getrlimit(which int, lim *Rlimit) (err error) { - _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetrlimit)), 2, uintptr(which), uintptr(unsafe.Pointer(lim)), 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1046,7 +1067,7 @@ func Getrlimit(which int, lim *Rlimit) (err error) { - func Getrusage(who int, rusage *Rusage) (err error) { - _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetrusage)), 2, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1057,7 +1078,7 @@ func Getsid(pid int) (sid int, err error) { - r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetsid)), 1, uintptr(pid), 0, 0, 0, 0, 0) - sid = int(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1067,7 +1088,7 @@ func Getsid(pid int) (sid int, err error) { - func Gettimeofday(tv *Timeval) (err error) { - _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGettimeofday)), 1, uintptr(unsafe.Pointer(tv)), 0, 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1085,7 +1106,7 @@ func Getuid() (uid int) { - func Kill(pid int, signum syscall.Signal) (err error) { - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procKill)), 2, uintptr(pid), uintptr(signum), 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1100,7 +1121,7 @@ func Lchown(path string, uid int, gid int) (err error) { - } - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLchown)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1120,7 +1141,7 @@ func Link(path string, link string) (err error) { - } - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLink)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1130,7 +1151,7 @@ func Link(path string, link string) (err error) { - func Listen(s int, backlog int) (err error) { - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_llisten)), 2, uintptr(s), uintptr(backlog), 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1145,7 +1166,7 @@ func Lstat(path string, stat *Stat_t) (err error) { - } - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLstat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1159,7 +1180,7 @@ func Madvise(b []byte, advice int) (err error) { - } - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMadvise)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(advice), 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1174,7 +1195,7 @@ func Mkdir(path string, mode uint32) (err error) { - } - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkdir)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1189,7 +1210,7 @@ func Mkdirat(dirfd int, path string, mode uint32) (err error) { - } - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkdirat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1204,7 +1225,7 @@ func Mkfifo(path string, mode uint32) (err error) { - } - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkfifo)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1219,7 +1240,7 @@ func Mkfifoat(dirfd int, path string, mode uint32) (err error) { - } - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkfifoat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1234,7 +1255,7 @@ func Mknod(path string, mode uint32, dev int) (err error) { - } - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMknod)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1249,7 +1270,7 @@ func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { - } - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMknodat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1263,7 +1284,7 @@ func Mlock(b []byte) (err error) { - } - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMlock)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1273,7 +1294,7 @@ func Mlock(b []byte) (err error) { - func Mlockall(flags int) (err error) { - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMlockall)), 1, uintptr(flags), 0, 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1287,7 +1308,7 @@ func Mprotect(b []byte, prot int) (err error) { - } - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMprotect)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(prot), 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1301,7 +1322,7 @@ func Msync(b []byte, flags int) (err error) { - } - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMsync)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(flags), 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1315,7 +1336,7 @@ func Munlock(b []byte) (err error) { - } - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMunlock)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1325,7 +1346,7 @@ func Munlock(b []byte) (err error) { - func Munlockall() (err error) { - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMunlockall)), 0, 0, 0, 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1335,7 +1356,7 @@ func Munlockall() (err error) { - func Nanosleep(time *Timespec, leftover *Timespec) (err error) { - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procNanosleep)), 2, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1351,7 +1372,7 @@ func Open(path string, mode int, perm uint32) (fd int, err error) { - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procOpen)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0, 0) - fd = int(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1367,7 +1388,7 @@ func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procOpenat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) - fd = int(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1383,7 +1404,7 @@ func Pathconf(path string, name int) (val int, err error) { - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPathconf)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0, 0, 0, 0) - val = int(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1393,7 +1414,7 @@ func Pathconf(path string, name int) (val int, err error) { - func Pause() (err error) { - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPause)), 0, 0, 0, 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1408,7 +1429,7 @@ func pread(fd int, p []byte, offset int64) (n int, err error) { - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpread)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), 0, 0) - n = int(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1423,7 +1444,7 @@ func pwrite(fd int, p []byte, offset int64) (n int, err error) { - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpwrite)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), 0, 0) - n = int(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1438,7 +1459,7 @@ func read(fd int, p []byte) (n int, err error) { - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procread)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0) - n = int(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1458,7 +1479,7 @@ func Readlink(path string, buf []byte) (n int, err error) { - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procReadlink)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(len(buf)), 0, 0, 0) - n = int(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1478,7 +1499,7 @@ func Rename(from string, to string) (err error) { - } - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRename)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1498,7 +1519,7 @@ func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err e - } - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRenameat)), 4, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1513,7 +1534,7 @@ func Rmdir(path string) (err error) { - } - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRmdir)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1524,7 +1545,7 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proclseek)), 3, uintptr(fd), uintptr(offset), uintptr(whence), 0, 0, 0) - newoffset = int64(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1535,7 +1556,7 @@ func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSelect)), 5, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) - n = int(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1545,7 +1566,7 @@ func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err - func Setegid(egid int) (err error) { - _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetegid)), 1, uintptr(egid), 0, 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1555,7 +1576,7 @@ func Setegid(egid int) (err error) { - func Seteuid(euid int) (err error) { - _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSeteuid)), 1, uintptr(euid), 0, 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1565,7 +1586,7 @@ func Seteuid(euid int) (err error) { - func Setgid(gid int) (err error) { - _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetgid)), 1, uintptr(gid), 0, 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1579,7 +1600,7 @@ func Sethostname(p []byte) (err error) { - } - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSethostname)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1589,7 +1610,7 @@ func Sethostname(p []byte) (err error) { - func Setpgid(pid int, pgid int) (err error) { - _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetpgid)), 2, uintptr(pid), uintptr(pgid), 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1599,7 +1620,7 @@ func Setpgid(pid int, pgid int) (err error) { - func Setpriority(which int, who int, prio int) (err error) { - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSetpriority)), 3, uintptr(which), uintptr(who), uintptr(prio), 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1609,7 +1630,7 @@ func Setpriority(which int, who int, prio int) (err error) { - func Setregid(rgid int, egid int) (err error) { - _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetregid)), 2, uintptr(rgid), uintptr(egid), 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1619,17 +1640,7 @@ func Setregid(rgid int, egid int) (err error) { - func Setreuid(ruid int, euid int) (err error) { - _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetreuid)), 2, uintptr(ruid), uintptr(euid), 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- --func Setrlimit(which int, lim *Rlimit) (err error) { -- _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetrlimit)), 2, uintptr(which), uintptr(unsafe.Pointer(lim)), 0, 0, 0, 0) -- if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1640,7 +1651,7 @@ func Setsid() (pid int, err error) { - r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetsid)), 0, 0, 0, 0, 0, 0, 0) - pid = int(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1650,7 +1661,7 @@ func Setsid() (pid int, err error) { - func Setuid(uid int) (err error) { - _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetuid)), 1, uintptr(uid), 0, 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1660,7 +1671,7 @@ func Setuid(uid int) (err error) { - func Shutdown(s int, how int) (err error) { - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procshutdown)), 2, uintptr(s), uintptr(how), 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1675,7 +1686,7 @@ func Stat(path string, stat *Stat_t) (err error) { - } - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procStat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1690,7 +1701,7 @@ func Statvfs(path string, vfsstat *Statvfs_t) (err error) { - } - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procStatvfs)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(vfsstat)), 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1710,7 +1721,7 @@ func Symlink(path string, link string) (err error) { - } - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSymlink)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1720,7 +1731,7 @@ func Symlink(path string, link string) (err error) { - func Sync() (err error) { - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSync)), 0, 0, 0, 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1731,7 +1742,7 @@ func Sysconf(which int) (n int64, err error) { - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSysconf)), 1, uintptr(which), 0, 0, 0, 0, 0) - n = int64(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1742,7 +1753,7 @@ func Times(tms *Tms) (ticks uintptr, err error) { - r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procTimes)), 1, uintptr(unsafe.Pointer(tms)), 0, 0, 0, 0, 0) - ticks = uintptr(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1757,7 +1768,7 @@ func Truncate(path string, length int64) (err error) { - } - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procTruncate)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1767,7 +1778,7 @@ func Truncate(path string, length int64) (err error) { - func Fsync(fd int) (err error) { - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFsync)), 1, uintptr(fd), 0, 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1777,7 +1788,7 @@ func Fsync(fd int) (err error) { - func Ftruncate(fd int, length int64) (err error) { - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFtruncate)), 2, uintptr(fd), uintptr(length), 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1795,7 +1806,7 @@ func Umask(mask int) (oldmask int) { - func Uname(buf *Utsname) (err error) { - _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procUname)), 1, uintptr(unsafe.Pointer(buf)), 0, 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1810,7 +1821,7 @@ func Unmount(target string, flags int) (err error) { - } - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procumount)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1825,7 +1836,7 @@ func Unlink(path string) (err error) { - } - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUnlink)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1840,7 +1851,7 @@ func Unlinkat(dirfd int, path string, flags int) (err error) { - } - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUnlinkat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1850,7 +1861,7 @@ func Unlinkat(dirfd int, path string, flags int) (err error) { - func Ustat(dev int, ubuf *Ustat_t) (err error) { - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUstat)), 2, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1865,7 +1876,7 @@ func Utime(path string, buf *Utimbuf) (err error) { - } - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUtime)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1875,7 +1886,7 @@ func Utime(path string, buf *Utimbuf) (err error) { - func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_bind)), 3, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1885,7 +1896,7 @@ func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { - func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_connect)), 3, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1896,7 +1907,7 @@ func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) ( - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procmmap)), 6, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) - ret = uintptr(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1906,7 +1917,7 @@ func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) ( - func munmap(addr uintptr, length uintptr) (err error) { - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procmunmap)), 2, uintptr(addr), uintptr(length), 0, 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1917,7 +1928,7 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsendfile)), 4, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) - written = int(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1931,7 +1942,7 @@ func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) ( - } - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_sendto)), 6, uintptr(s), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1942,7 +1953,7 @@ func socket(domain int, typ int, proto int) (fd int, err error) { - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_socket)), 3, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0) - fd = int(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1952,7 +1963,7 @@ func socket(domain int, typ int, proto int) (fd int, err error) { - func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { - _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&proc__xnet_socketpair)), 4, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1967,7 +1978,7 @@ func write(fd int, p []byte) (n int, err error) { - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwrite)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0) - n = int(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1977,7 +1988,7 @@ func write(fd int, p []byte) (n int, err error) { - func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_getsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1987,7 +1998,7 @@ func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen - func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { - _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procgetpeername)), 3, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -1997,7 +2008,7 @@ func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { - func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsetsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -2012,7 +2023,7 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procrecvfrom)), 6, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) - n = int(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -2023,7 +2034,7 @@ func port_create() (n int, err error) { - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_create)), 0, 0, 0, 0, 0, 0, 0) - n = int(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -2034,7 +2045,7 @@ func port_associate(port int, source int, object uintptr, events int, user *byte - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_associate)), 5, uintptr(port), uintptr(source), uintptr(object), uintptr(events), uintptr(unsafe.Pointer(user)), 0) - n = int(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -2045,7 +2056,7 @@ func port_dissociate(port int, source int, object uintptr) (n int, err error) { - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_dissociate)), 3, uintptr(port), uintptr(source), uintptr(object), 0, 0, 0) - n = int(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -2056,7 +2067,7 @@ func port_get(port int, pe *portEvent, timeout *Timespec) (n int, err error) { - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_get)), 3, uintptr(port), uintptr(unsafe.Pointer(pe)), uintptr(unsafe.Pointer(timeout)), 0, 0, 0) - n = int(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -2067,7 +2078,7 @@ func port_getn(port int, pe *portEvent, max uint32, nget *uint32, timeout *Times - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_getn)), 5, uintptr(port), uintptr(unsafe.Pointer(pe)), uintptr(max), uintptr(unsafe.Pointer(nget)), uintptr(unsafe.Pointer(timeout)), 0) - n = int(r0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -2077,7 +2088,7 @@ func port_getn(port int, pe *portEvent, max uint32, nget *uint32, timeout *Times - func putmsg(fd int, clptr *strbuf, dataptr *strbuf, flags int) (err error) { - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procputmsg)), 4, uintptr(fd), uintptr(unsafe.Pointer(clptr)), uintptr(unsafe.Pointer(dataptr)), uintptr(flags), 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -@@ -2087,7 +2098,7 @@ func putmsg(fd int, clptr *strbuf, dataptr *strbuf, flags int) (err error) { - func getmsg(fd int, clptr *strbuf, dataptr *strbuf, flags *int) (err error) { - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgetmsg)), 4, uintptr(fd), uintptr(unsafe.Pointer(clptr)), uintptr(unsafe.Pointer(dataptr)), uintptr(unsafe.Pointer(flags)), 0, 0) - if e1 != 0 { -- err = e1 -+ err = errnoErr(e1) - } - return - } -diff --git a/vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go b/vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go -old mode 100644 -new mode 100755 -index f207945..1d8fe1d ---- a/vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go -+++ b/vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go -@@ -40,17 +40,6 @@ func read(fd int, p []byte) (n int, err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func readlen(fd int, buf *byte, nbuf int) (n int, err error) { -- r0, _, e1 := syscall_syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) -- n = int(r0) -- if e1 != 0 { -- err = errnoErr(e1) -- } -- return --} -- --// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -- - func write(fd int, p []byte) (n int, err error) { - var _p0 unsafe.Pointer - if len(p) > 0 { -@@ -257,7 +246,17 @@ func munmap(addr uintptr, length uintptr) (err error) { - - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - --func ioctl(fd int, req uint, arg uintptr) (err error) { -+func ioctl(fd int, req int, arg uintptr) (err error) { -+ _, _, e1 := syscall_syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) -+ if e1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -+ -+func ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) { - _, _, e1 := syscall_syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) - if e1 != 0 { - err = errnoErr(e1) -diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go -old mode 100644 -new mode 100755 -index 9e9d0b2..55e0484 ---- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go -+++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go -@@ -17,6 +17,7 @@ var sysctlMib = []mibentry{ - {"ddb.max_line", []_C_int{9, 3}}, - {"ddb.max_width", []_C_int{9, 2}}, - {"ddb.panic", []_C_int{9, 5}}, -+ {"ddb.profile", []_C_int{9, 9}}, - {"ddb.radix", []_C_int{9, 1}}, - {"ddb.tab_stop_width", []_C_int{9, 4}}, - {"ddb.trigger", []_C_int{9, 8}}, -@@ -33,29 +34,37 @@ var sysctlMib = []mibentry{ - {"hw.ncpufound", []_C_int{6, 21}}, - {"hw.ncpuonline", []_C_int{6, 25}}, - {"hw.pagesize", []_C_int{6, 7}}, -+ {"hw.perfpolicy", []_C_int{6, 23}}, - {"hw.physmem", []_C_int{6, 19}}, -+ {"hw.power", []_C_int{6, 26}}, - {"hw.product", []_C_int{6, 15}}, - {"hw.serialno", []_C_int{6, 17}}, - {"hw.setperf", []_C_int{6, 13}}, -+ {"hw.smt", []_C_int{6, 24}}, - {"hw.usermem", []_C_int{6, 20}}, - {"hw.uuid", []_C_int{6, 18}}, - {"hw.vendor", []_C_int{6, 14}}, - {"hw.version", []_C_int{6, 16}}, -- {"kern.arandom", []_C_int{1, 37}}, -+ {"kern.allowdt", []_C_int{1, 65}}, -+ {"kern.allowkmem", []_C_int{1, 52}}, - {"kern.argmax", []_C_int{1, 8}}, -+ {"kern.audio", []_C_int{1, 84}}, - {"kern.boottime", []_C_int{1, 21}}, - {"kern.bufcachepercent", []_C_int{1, 72}}, - {"kern.ccpu", []_C_int{1, 45}}, - {"kern.clockrate", []_C_int{1, 12}}, -+ {"kern.consbuf", []_C_int{1, 83}}, -+ {"kern.consbufsize", []_C_int{1, 82}}, - {"kern.consdev", []_C_int{1, 75}}, - {"kern.cp_time", []_C_int{1, 40}}, - {"kern.cp_time2", []_C_int{1, 71}}, -- {"kern.cryptodevallowsoft", []_C_int{1, 53}}, -+ {"kern.cpustats", []_C_int{1, 85}}, - {"kern.domainname", []_C_int{1, 22}}, - {"kern.file", []_C_int{1, 73}}, - {"kern.forkstat", []_C_int{1, 42}}, - {"kern.fscale", []_C_int{1, 46}}, - {"kern.fsync", []_C_int{1, 33}}, -+ {"kern.global_ptrace", []_C_int{1, 81}}, - {"kern.hostid", []_C_int{1, 11}}, - {"kern.hostname", []_C_int{1, 10}}, - {"kern.intrcnt.nintrcnt", []_C_int{1, 63, 1}}, -@@ -78,17 +87,16 @@ var sysctlMib = []mibentry{ - {"kern.ngroups", []_C_int{1, 18}}, - {"kern.nosuidcoredump", []_C_int{1, 32}}, - {"kern.nprocs", []_C_int{1, 47}}, -- {"kern.nselcoll", []_C_int{1, 43}}, - {"kern.nthreads", []_C_int{1, 26}}, - {"kern.numvnodes", []_C_int{1, 58}}, - {"kern.osrelease", []_C_int{1, 2}}, - {"kern.osrevision", []_C_int{1, 3}}, - {"kern.ostype", []_C_int{1, 1}}, - {"kern.osversion", []_C_int{1, 27}}, -+ {"kern.pfstatus", []_C_int{1, 86}}, - {"kern.pool_debug", []_C_int{1, 77}}, - {"kern.posix1version", []_C_int{1, 17}}, - {"kern.proc", []_C_int{1, 66}}, -- {"kern.random", []_C_int{1, 31}}, - {"kern.rawpartition", []_C_int{1, 24}}, - {"kern.saved_ids", []_C_int{1, 20}}, - {"kern.securelevel", []_C_int{1, 9}}, -@@ -106,21 +114,20 @@ var sysctlMib = []mibentry{ - {"kern.timecounter.hardware", []_C_int{1, 69, 3}}, - {"kern.timecounter.tick", []_C_int{1, 69, 1}}, - {"kern.timecounter.timestepwarnings", []_C_int{1, 69, 2}}, -- {"kern.tty.maxptys", []_C_int{1, 44, 6}}, -- {"kern.tty.nptys", []_C_int{1, 44, 7}}, -+ {"kern.timeout_stats", []_C_int{1, 87}}, - {"kern.tty.tk_cancc", []_C_int{1, 44, 4}}, - {"kern.tty.tk_nin", []_C_int{1, 44, 1}}, - {"kern.tty.tk_nout", []_C_int{1, 44, 2}}, - {"kern.tty.tk_rawcc", []_C_int{1, 44, 3}}, - {"kern.tty.ttyinfo", []_C_int{1, 44, 5}}, - {"kern.ttycount", []_C_int{1, 57}}, -- {"kern.userasymcrypto", []_C_int{1, 60}}, -- {"kern.usercrypto", []_C_int{1, 52}}, -- {"kern.usermount", []_C_int{1, 30}}, -+ {"kern.utc_offset", []_C_int{1, 88}}, - {"kern.version", []_C_int{1, 4}}, -- {"kern.vnode", []_C_int{1, 13}}, -+ {"kern.video", []_C_int{1, 89}}, - {"kern.watchdog.auto", []_C_int{1, 64, 2}}, - {"kern.watchdog.period", []_C_int{1, 64, 1}}, -+ {"kern.witnesswatch", []_C_int{1, 53}}, -+ {"kern.wxabort", []_C_int{1, 74}}, - {"net.bpf.bufsize", []_C_int{4, 31, 1}}, - {"net.bpf.maxbufsize", []_C_int{4, 31, 2}}, - {"net.inet.ah.enable", []_C_int{4, 2, 51, 1}}, -@@ -148,7 +155,9 @@ var sysctlMib = []mibentry{ - {"net.inet.icmp.stats", []_C_int{4, 2, 1, 7}}, - {"net.inet.icmp.tstamprepl", []_C_int{4, 2, 1, 6}}, - {"net.inet.igmp.stats", []_C_int{4, 2, 2, 1}}, -+ {"net.inet.ip.arpdown", []_C_int{4, 2, 0, 40}}, - {"net.inet.ip.arpqueued", []_C_int{4, 2, 0, 36}}, -+ {"net.inet.ip.arptimeout", []_C_int{4, 2, 0, 39}}, - {"net.inet.ip.encdebug", []_C_int{4, 2, 0, 12}}, - {"net.inet.ip.forwarding", []_C_int{4, 2, 0, 1}}, - {"net.inet.ip.ifq.congestion", []_C_int{4, 2, 0, 30, 4}}, -@@ -157,8 +166,10 @@ var sysctlMib = []mibentry{ - {"net.inet.ip.ifq.maxlen", []_C_int{4, 2, 0, 30, 2}}, - {"net.inet.ip.maxqueue", []_C_int{4, 2, 0, 11}}, - {"net.inet.ip.mforwarding", []_C_int{4, 2, 0, 31}}, -+ {"net.inet.ip.mrtmfc", []_C_int{4, 2, 0, 37}}, - {"net.inet.ip.mrtproto", []_C_int{4, 2, 0, 34}}, - {"net.inet.ip.mrtstats", []_C_int{4, 2, 0, 35}}, -+ {"net.inet.ip.mrtvif", []_C_int{4, 2, 0, 38}}, - {"net.inet.ip.mtu", []_C_int{4, 2, 0, 4}}, - {"net.inet.ip.mtudisc", []_C_int{4, 2, 0, 27}}, - {"net.inet.ip.mtudisctimeout", []_C_int{4, 2, 0, 28}}, -@@ -175,9 +186,7 @@ var sysctlMib = []mibentry{ - {"net.inet.ipcomp.stats", []_C_int{4, 2, 108, 2}}, - {"net.inet.ipip.allow", []_C_int{4, 2, 4, 1}}, - {"net.inet.ipip.stats", []_C_int{4, 2, 4, 2}}, -- {"net.inet.mobileip.allow", []_C_int{4, 2, 55, 1}}, - {"net.inet.pfsync.stats", []_C_int{4, 2, 240, 1}}, -- {"net.inet.pim.stats", []_C_int{4, 2, 103, 1}}, - {"net.inet.tcp.ackonpush", []_C_int{4, 2, 6, 13}}, - {"net.inet.tcp.always_keepalive", []_C_int{4, 2, 6, 22}}, - {"net.inet.tcp.baddynamic", []_C_int{4, 2, 6, 6}}, -@@ -191,6 +200,7 @@ var sysctlMib = []mibentry{ - {"net.inet.tcp.reasslimit", []_C_int{4, 2, 6, 18}}, - {"net.inet.tcp.rfc1323", []_C_int{4, 2, 6, 1}}, - {"net.inet.tcp.rfc3390", []_C_int{4, 2, 6, 17}}, -+ {"net.inet.tcp.rootonly", []_C_int{4, 2, 6, 24}}, - {"net.inet.tcp.rstppslimit", []_C_int{4, 2, 6, 12}}, - {"net.inet.tcp.sack", []_C_int{4, 2, 6, 10}}, - {"net.inet.tcp.sackholelimit", []_C_int{4, 2, 6, 20}}, -@@ -198,9 +208,12 @@ var sysctlMib = []mibentry{ - {"net.inet.tcp.stats", []_C_int{4, 2, 6, 21}}, - {"net.inet.tcp.synbucketlimit", []_C_int{4, 2, 6, 16}}, - {"net.inet.tcp.syncachelimit", []_C_int{4, 2, 6, 15}}, -+ {"net.inet.tcp.synhashsize", []_C_int{4, 2, 6, 25}}, -+ {"net.inet.tcp.synuselimit", []_C_int{4, 2, 6, 23}}, - {"net.inet.udp.baddynamic", []_C_int{4, 2, 17, 2}}, - {"net.inet.udp.checksum", []_C_int{4, 2, 17, 1}}, - {"net.inet.udp.recvspace", []_C_int{4, 2, 17, 3}}, -+ {"net.inet.udp.rootonly", []_C_int{4, 2, 17, 6}}, - {"net.inet.udp.sendspace", []_C_int{4, 2, 17, 4}}, - {"net.inet.udp.stats", []_C_int{4, 2, 17, 5}}, - {"net.inet6.divert.recvspace", []_C_int{4, 24, 86, 1}}, -@@ -213,13 +226,8 @@ var sysctlMib = []mibentry{ - {"net.inet6.icmp6.nd6_delay", []_C_int{4, 24, 30, 8}}, - {"net.inet6.icmp6.nd6_maxnudhint", []_C_int{4, 24, 30, 15}}, - {"net.inet6.icmp6.nd6_mmaxtries", []_C_int{4, 24, 30, 10}}, -- {"net.inet6.icmp6.nd6_prune", []_C_int{4, 24, 30, 6}}, - {"net.inet6.icmp6.nd6_umaxtries", []_C_int{4, 24, 30, 9}}, -- {"net.inet6.icmp6.nd6_useloopback", []_C_int{4, 24, 30, 11}}, -- {"net.inet6.icmp6.nodeinfo", []_C_int{4, 24, 30, 13}}, -- {"net.inet6.icmp6.rediraccept", []_C_int{4, 24, 30, 2}}, - {"net.inet6.icmp6.redirtimeout", []_C_int{4, 24, 30, 3}}, -- {"net.inet6.ip6.accept_rtadv", []_C_int{4, 24, 17, 12}}, - {"net.inet6.ip6.auto_flowlabel", []_C_int{4, 24, 17, 17}}, - {"net.inet6.ip6.dad_count", []_C_int{4, 24, 17, 16}}, - {"net.inet6.ip6.dad_pending", []_C_int{4, 24, 17, 49}}, -@@ -232,20 +240,19 @@ var sysctlMib = []mibentry{ - {"net.inet6.ip6.maxdynroutes", []_C_int{4, 24, 17, 48}}, - {"net.inet6.ip6.maxfragpackets", []_C_int{4, 24, 17, 9}}, - {"net.inet6.ip6.maxfrags", []_C_int{4, 24, 17, 41}}, -- {"net.inet6.ip6.maxifdefrouters", []_C_int{4, 24, 17, 47}}, -- {"net.inet6.ip6.maxifprefixes", []_C_int{4, 24, 17, 46}}, - {"net.inet6.ip6.mforwarding", []_C_int{4, 24, 17, 42}}, -+ {"net.inet6.ip6.mrtmfc", []_C_int{4, 24, 17, 53}}, -+ {"net.inet6.ip6.mrtmif", []_C_int{4, 24, 17, 52}}, - {"net.inet6.ip6.mrtproto", []_C_int{4, 24, 17, 8}}, - {"net.inet6.ip6.mtudisctimeout", []_C_int{4, 24, 17, 50}}, - {"net.inet6.ip6.multicast_mtudisc", []_C_int{4, 24, 17, 44}}, - {"net.inet6.ip6.multipath", []_C_int{4, 24, 17, 43}}, - {"net.inet6.ip6.neighborgcthresh", []_C_int{4, 24, 17, 45}}, - {"net.inet6.ip6.redirect", []_C_int{4, 24, 17, 2}}, -- {"net.inet6.ip6.rr_prune", []_C_int{4, 24, 17, 22}}, -+ {"net.inet6.ip6.soiikey", []_C_int{4, 24, 17, 54}}, - {"net.inet6.ip6.sourcecheck", []_C_int{4, 24, 17, 10}}, - {"net.inet6.ip6.sourcecheck_logint", []_C_int{4, 24, 17, 11}}, - {"net.inet6.ip6.use_deprecated", []_C_int{4, 24, 17, 21}}, -- {"net.inet6.ip6.v6only", []_C_int{4, 24, 17, 24}}, - {"net.key.sadb_dump", []_C_int{4, 30, 1}}, - {"net.key.spd_dump", []_C_int{4, 30, 2}}, - {"net.mpls.ifq.congestion", []_C_int{4, 33, 3, 4}}, -@@ -254,12 +261,12 @@ var sysctlMib = []mibentry{ - {"net.mpls.ifq.maxlen", []_C_int{4, 33, 3, 2}}, - {"net.mpls.mapttl_ip", []_C_int{4, 33, 5}}, - {"net.mpls.mapttl_ip6", []_C_int{4, 33, 6}}, -- {"net.mpls.maxloop_inkernel", []_C_int{4, 33, 4}}, - {"net.mpls.ttl", []_C_int{4, 33, 2}}, - {"net.pflow.stats", []_C_int{4, 34, 1}}, - {"net.pipex.enable", []_C_int{4, 35, 1}}, - {"vm.anonmin", []_C_int{2, 7}}, - {"vm.loadavg", []_C_int{2, 2}}, -+ {"vm.malloc_conf", []_C_int{2, 12}}, - {"vm.maxslp", []_C_int{2, 10}}, - {"vm.nkmempages", []_C_int{2, 6}}, - {"vm.psstrings", []_C_int{2, 3}}, -diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go -old mode 100644 -new mode 100755 -index adecd09..d2243cf ---- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go -+++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go -@@ -36,23 +36,29 @@ var sysctlMib = []mibentry{ - {"hw.pagesize", []_C_int{6, 7}}, - {"hw.perfpolicy", []_C_int{6, 23}}, - {"hw.physmem", []_C_int{6, 19}}, -+ {"hw.power", []_C_int{6, 26}}, - {"hw.product", []_C_int{6, 15}}, - {"hw.serialno", []_C_int{6, 17}}, - {"hw.setperf", []_C_int{6, 13}}, -+ {"hw.smt", []_C_int{6, 24}}, - {"hw.usermem", []_C_int{6, 20}}, - {"hw.uuid", []_C_int{6, 18}}, - {"hw.vendor", []_C_int{6, 14}}, - {"hw.version", []_C_int{6, 16}}, -+ {"kern.allowdt", []_C_int{1, 65}}, - {"kern.allowkmem", []_C_int{1, 52}}, - {"kern.argmax", []_C_int{1, 8}}, -+ {"kern.audio", []_C_int{1, 84}}, - {"kern.boottime", []_C_int{1, 21}}, - {"kern.bufcachepercent", []_C_int{1, 72}}, - {"kern.ccpu", []_C_int{1, 45}}, - {"kern.clockrate", []_C_int{1, 12}}, -+ {"kern.consbuf", []_C_int{1, 83}}, -+ {"kern.consbufsize", []_C_int{1, 82}}, - {"kern.consdev", []_C_int{1, 75}}, - {"kern.cp_time", []_C_int{1, 40}}, - {"kern.cp_time2", []_C_int{1, 71}}, -- {"kern.dnsjackport", []_C_int{1, 13}}, -+ {"kern.cpustats", []_C_int{1, 85}}, - {"kern.domainname", []_C_int{1, 22}}, - {"kern.file", []_C_int{1, 73}}, - {"kern.forkstat", []_C_int{1, 42}}, -@@ -81,13 +87,13 @@ var sysctlMib = []mibentry{ - {"kern.ngroups", []_C_int{1, 18}}, - {"kern.nosuidcoredump", []_C_int{1, 32}}, - {"kern.nprocs", []_C_int{1, 47}}, -- {"kern.nselcoll", []_C_int{1, 43}}, - {"kern.nthreads", []_C_int{1, 26}}, - {"kern.numvnodes", []_C_int{1, 58}}, - {"kern.osrelease", []_C_int{1, 2}}, - {"kern.osrevision", []_C_int{1, 3}}, - {"kern.ostype", []_C_int{1, 1}}, - {"kern.osversion", []_C_int{1, 27}}, -+ {"kern.pfstatus", []_C_int{1, 86}}, - {"kern.pool_debug", []_C_int{1, 77}}, - {"kern.posix1version", []_C_int{1, 17}}, - {"kern.proc", []_C_int{1, 66}}, -@@ -108,15 +114,19 @@ var sysctlMib = []mibentry{ - {"kern.timecounter.hardware", []_C_int{1, 69, 3}}, - {"kern.timecounter.tick", []_C_int{1, 69, 1}}, - {"kern.timecounter.timestepwarnings", []_C_int{1, 69, 2}}, -+ {"kern.timeout_stats", []_C_int{1, 87}}, - {"kern.tty.tk_cancc", []_C_int{1, 44, 4}}, - {"kern.tty.tk_nin", []_C_int{1, 44, 1}}, - {"kern.tty.tk_nout", []_C_int{1, 44, 2}}, - {"kern.tty.tk_rawcc", []_C_int{1, 44, 3}}, - {"kern.tty.ttyinfo", []_C_int{1, 44, 5}}, - {"kern.ttycount", []_C_int{1, 57}}, -+ {"kern.utc_offset", []_C_int{1, 88}}, - {"kern.version", []_C_int{1, 4}}, -+ {"kern.video", []_C_int{1, 89}}, - {"kern.watchdog.auto", []_C_int{1, 64, 2}}, - {"kern.watchdog.period", []_C_int{1, 64, 1}}, -+ {"kern.witnesswatch", []_C_int{1, 53}}, - {"kern.wxabort", []_C_int{1, 74}}, - {"net.bpf.bufsize", []_C_int{4, 31, 1}}, - {"net.bpf.maxbufsize", []_C_int{4, 31, 2}}, -@@ -176,7 +186,6 @@ var sysctlMib = []mibentry{ - {"net.inet.ipcomp.stats", []_C_int{4, 2, 108, 2}}, - {"net.inet.ipip.allow", []_C_int{4, 2, 4, 1}}, - {"net.inet.ipip.stats", []_C_int{4, 2, 4, 2}}, -- {"net.inet.mobileip.allow", []_C_int{4, 2, 55, 1}}, - {"net.inet.pfsync.stats", []_C_int{4, 2, 240, 1}}, - {"net.inet.tcp.ackonpush", []_C_int{4, 2, 6, 13}}, - {"net.inet.tcp.always_keepalive", []_C_int{4, 2, 6, 22}}, -@@ -252,12 +261,12 @@ var sysctlMib = []mibentry{ - {"net.mpls.ifq.maxlen", []_C_int{4, 33, 3, 2}}, - {"net.mpls.mapttl_ip", []_C_int{4, 33, 5}}, - {"net.mpls.mapttl_ip6", []_C_int{4, 33, 6}}, -- {"net.mpls.maxloop_inkernel", []_C_int{4, 33, 4}}, - {"net.mpls.ttl", []_C_int{4, 33, 2}}, - {"net.pflow.stats", []_C_int{4, 34, 1}}, - {"net.pipex.enable", []_C_int{4, 35, 1}}, - {"vm.anonmin", []_C_int{2, 7}}, - {"vm.loadavg", []_C_int{2, 2}}, -+ {"vm.malloc_conf", []_C_int{2, 12}}, - {"vm.maxslp", []_C_int{2, 10}}, - {"vm.nkmempages", []_C_int{2, 6}}, - {"vm.psstrings", []_C_int{2, 3}}, -diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go -old mode 100644 -new mode 100755 -index 8ea52a4..82dc51b ---- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go -+++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go -@@ -17,6 +17,7 @@ var sysctlMib = []mibentry{ - {"ddb.max_line", []_C_int{9, 3}}, - {"ddb.max_width", []_C_int{9, 2}}, - {"ddb.panic", []_C_int{9, 5}}, -+ {"ddb.profile", []_C_int{9, 9}}, - {"ddb.radix", []_C_int{9, 1}}, - {"ddb.tab_stop_width", []_C_int{9, 4}}, - {"ddb.trigger", []_C_int{9, 8}}, -@@ -33,29 +34,37 @@ var sysctlMib = []mibentry{ - {"hw.ncpufound", []_C_int{6, 21}}, - {"hw.ncpuonline", []_C_int{6, 25}}, - {"hw.pagesize", []_C_int{6, 7}}, -+ {"hw.perfpolicy", []_C_int{6, 23}}, - {"hw.physmem", []_C_int{6, 19}}, -+ {"hw.power", []_C_int{6, 26}}, - {"hw.product", []_C_int{6, 15}}, - {"hw.serialno", []_C_int{6, 17}}, - {"hw.setperf", []_C_int{6, 13}}, -+ {"hw.smt", []_C_int{6, 24}}, - {"hw.usermem", []_C_int{6, 20}}, - {"hw.uuid", []_C_int{6, 18}}, - {"hw.vendor", []_C_int{6, 14}}, - {"hw.version", []_C_int{6, 16}}, -- {"kern.arandom", []_C_int{1, 37}}, -+ {"kern.allowdt", []_C_int{1, 65}}, -+ {"kern.allowkmem", []_C_int{1, 52}}, - {"kern.argmax", []_C_int{1, 8}}, -+ {"kern.audio", []_C_int{1, 84}}, - {"kern.boottime", []_C_int{1, 21}}, - {"kern.bufcachepercent", []_C_int{1, 72}}, - {"kern.ccpu", []_C_int{1, 45}}, - {"kern.clockrate", []_C_int{1, 12}}, -+ {"kern.consbuf", []_C_int{1, 83}}, -+ {"kern.consbufsize", []_C_int{1, 82}}, - {"kern.consdev", []_C_int{1, 75}}, - {"kern.cp_time", []_C_int{1, 40}}, - {"kern.cp_time2", []_C_int{1, 71}}, -- {"kern.cryptodevallowsoft", []_C_int{1, 53}}, -+ {"kern.cpustats", []_C_int{1, 85}}, - {"kern.domainname", []_C_int{1, 22}}, - {"kern.file", []_C_int{1, 73}}, - {"kern.forkstat", []_C_int{1, 42}}, - {"kern.fscale", []_C_int{1, 46}}, - {"kern.fsync", []_C_int{1, 33}}, -+ {"kern.global_ptrace", []_C_int{1, 81}}, - {"kern.hostid", []_C_int{1, 11}}, - {"kern.hostname", []_C_int{1, 10}}, - {"kern.intrcnt.nintrcnt", []_C_int{1, 63, 1}}, -@@ -78,17 +87,16 @@ var sysctlMib = []mibentry{ - {"kern.ngroups", []_C_int{1, 18}}, - {"kern.nosuidcoredump", []_C_int{1, 32}}, - {"kern.nprocs", []_C_int{1, 47}}, -- {"kern.nselcoll", []_C_int{1, 43}}, - {"kern.nthreads", []_C_int{1, 26}}, - {"kern.numvnodes", []_C_int{1, 58}}, - {"kern.osrelease", []_C_int{1, 2}}, - {"kern.osrevision", []_C_int{1, 3}}, - {"kern.ostype", []_C_int{1, 1}}, - {"kern.osversion", []_C_int{1, 27}}, -+ {"kern.pfstatus", []_C_int{1, 86}}, - {"kern.pool_debug", []_C_int{1, 77}}, - {"kern.posix1version", []_C_int{1, 17}}, - {"kern.proc", []_C_int{1, 66}}, -- {"kern.random", []_C_int{1, 31}}, - {"kern.rawpartition", []_C_int{1, 24}}, - {"kern.saved_ids", []_C_int{1, 20}}, - {"kern.securelevel", []_C_int{1, 9}}, -@@ -106,21 +114,20 @@ var sysctlMib = []mibentry{ - {"kern.timecounter.hardware", []_C_int{1, 69, 3}}, - {"kern.timecounter.tick", []_C_int{1, 69, 1}}, - {"kern.timecounter.timestepwarnings", []_C_int{1, 69, 2}}, -- {"kern.tty.maxptys", []_C_int{1, 44, 6}}, -- {"kern.tty.nptys", []_C_int{1, 44, 7}}, -+ {"kern.timeout_stats", []_C_int{1, 87}}, - {"kern.tty.tk_cancc", []_C_int{1, 44, 4}}, - {"kern.tty.tk_nin", []_C_int{1, 44, 1}}, - {"kern.tty.tk_nout", []_C_int{1, 44, 2}}, - {"kern.tty.tk_rawcc", []_C_int{1, 44, 3}}, - {"kern.tty.ttyinfo", []_C_int{1, 44, 5}}, - {"kern.ttycount", []_C_int{1, 57}}, -- {"kern.userasymcrypto", []_C_int{1, 60}}, -- {"kern.usercrypto", []_C_int{1, 52}}, -- {"kern.usermount", []_C_int{1, 30}}, -+ {"kern.utc_offset", []_C_int{1, 88}}, - {"kern.version", []_C_int{1, 4}}, -- {"kern.vnode", []_C_int{1, 13}}, -+ {"kern.video", []_C_int{1, 89}}, - {"kern.watchdog.auto", []_C_int{1, 64, 2}}, - {"kern.watchdog.period", []_C_int{1, 64, 1}}, -+ {"kern.witnesswatch", []_C_int{1, 53}}, -+ {"kern.wxabort", []_C_int{1, 74}}, - {"net.bpf.bufsize", []_C_int{4, 31, 1}}, - {"net.bpf.maxbufsize", []_C_int{4, 31, 2}}, - {"net.inet.ah.enable", []_C_int{4, 2, 51, 1}}, -@@ -148,7 +155,9 @@ var sysctlMib = []mibentry{ - {"net.inet.icmp.stats", []_C_int{4, 2, 1, 7}}, - {"net.inet.icmp.tstamprepl", []_C_int{4, 2, 1, 6}}, - {"net.inet.igmp.stats", []_C_int{4, 2, 2, 1}}, -+ {"net.inet.ip.arpdown", []_C_int{4, 2, 0, 40}}, - {"net.inet.ip.arpqueued", []_C_int{4, 2, 0, 36}}, -+ {"net.inet.ip.arptimeout", []_C_int{4, 2, 0, 39}}, - {"net.inet.ip.encdebug", []_C_int{4, 2, 0, 12}}, - {"net.inet.ip.forwarding", []_C_int{4, 2, 0, 1}}, - {"net.inet.ip.ifq.congestion", []_C_int{4, 2, 0, 30, 4}}, -@@ -157,8 +166,10 @@ var sysctlMib = []mibentry{ - {"net.inet.ip.ifq.maxlen", []_C_int{4, 2, 0, 30, 2}}, - {"net.inet.ip.maxqueue", []_C_int{4, 2, 0, 11}}, - {"net.inet.ip.mforwarding", []_C_int{4, 2, 0, 31}}, -+ {"net.inet.ip.mrtmfc", []_C_int{4, 2, 0, 37}}, - {"net.inet.ip.mrtproto", []_C_int{4, 2, 0, 34}}, - {"net.inet.ip.mrtstats", []_C_int{4, 2, 0, 35}}, -+ {"net.inet.ip.mrtvif", []_C_int{4, 2, 0, 38}}, - {"net.inet.ip.mtu", []_C_int{4, 2, 0, 4}}, - {"net.inet.ip.mtudisc", []_C_int{4, 2, 0, 27}}, - {"net.inet.ip.mtudisctimeout", []_C_int{4, 2, 0, 28}}, -@@ -175,9 +186,7 @@ var sysctlMib = []mibentry{ - {"net.inet.ipcomp.stats", []_C_int{4, 2, 108, 2}}, - {"net.inet.ipip.allow", []_C_int{4, 2, 4, 1}}, - {"net.inet.ipip.stats", []_C_int{4, 2, 4, 2}}, -- {"net.inet.mobileip.allow", []_C_int{4, 2, 55, 1}}, - {"net.inet.pfsync.stats", []_C_int{4, 2, 240, 1}}, -- {"net.inet.pim.stats", []_C_int{4, 2, 103, 1}}, - {"net.inet.tcp.ackonpush", []_C_int{4, 2, 6, 13}}, - {"net.inet.tcp.always_keepalive", []_C_int{4, 2, 6, 22}}, - {"net.inet.tcp.baddynamic", []_C_int{4, 2, 6, 6}}, -@@ -191,6 +200,7 @@ var sysctlMib = []mibentry{ - {"net.inet.tcp.reasslimit", []_C_int{4, 2, 6, 18}}, - {"net.inet.tcp.rfc1323", []_C_int{4, 2, 6, 1}}, - {"net.inet.tcp.rfc3390", []_C_int{4, 2, 6, 17}}, -+ {"net.inet.tcp.rootonly", []_C_int{4, 2, 6, 24}}, - {"net.inet.tcp.rstppslimit", []_C_int{4, 2, 6, 12}}, - {"net.inet.tcp.sack", []_C_int{4, 2, 6, 10}}, - {"net.inet.tcp.sackholelimit", []_C_int{4, 2, 6, 20}}, -@@ -198,9 +208,12 @@ var sysctlMib = []mibentry{ - {"net.inet.tcp.stats", []_C_int{4, 2, 6, 21}}, - {"net.inet.tcp.synbucketlimit", []_C_int{4, 2, 6, 16}}, - {"net.inet.tcp.syncachelimit", []_C_int{4, 2, 6, 15}}, -+ {"net.inet.tcp.synhashsize", []_C_int{4, 2, 6, 25}}, -+ {"net.inet.tcp.synuselimit", []_C_int{4, 2, 6, 23}}, - {"net.inet.udp.baddynamic", []_C_int{4, 2, 17, 2}}, - {"net.inet.udp.checksum", []_C_int{4, 2, 17, 1}}, - {"net.inet.udp.recvspace", []_C_int{4, 2, 17, 3}}, -+ {"net.inet.udp.rootonly", []_C_int{4, 2, 17, 6}}, - {"net.inet.udp.sendspace", []_C_int{4, 2, 17, 4}}, - {"net.inet.udp.stats", []_C_int{4, 2, 17, 5}}, - {"net.inet6.divert.recvspace", []_C_int{4, 24, 86, 1}}, -@@ -213,13 +226,8 @@ var sysctlMib = []mibentry{ - {"net.inet6.icmp6.nd6_delay", []_C_int{4, 24, 30, 8}}, - {"net.inet6.icmp6.nd6_maxnudhint", []_C_int{4, 24, 30, 15}}, - {"net.inet6.icmp6.nd6_mmaxtries", []_C_int{4, 24, 30, 10}}, -- {"net.inet6.icmp6.nd6_prune", []_C_int{4, 24, 30, 6}}, - {"net.inet6.icmp6.nd6_umaxtries", []_C_int{4, 24, 30, 9}}, -- {"net.inet6.icmp6.nd6_useloopback", []_C_int{4, 24, 30, 11}}, -- {"net.inet6.icmp6.nodeinfo", []_C_int{4, 24, 30, 13}}, -- {"net.inet6.icmp6.rediraccept", []_C_int{4, 24, 30, 2}}, - {"net.inet6.icmp6.redirtimeout", []_C_int{4, 24, 30, 3}}, -- {"net.inet6.ip6.accept_rtadv", []_C_int{4, 24, 17, 12}}, - {"net.inet6.ip6.auto_flowlabel", []_C_int{4, 24, 17, 17}}, - {"net.inet6.ip6.dad_count", []_C_int{4, 24, 17, 16}}, - {"net.inet6.ip6.dad_pending", []_C_int{4, 24, 17, 49}}, -@@ -232,20 +240,19 @@ var sysctlMib = []mibentry{ - {"net.inet6.ip6.maxdynroutes", []_C_int{4, 24, 17, 48}}, - {"net.inet6.ip6.maxfragpackets", []_C_int{4, 24, 17, 9}}, - {"net.inet6.ip6.maxfrags", []_C_int{4, 24, 17, 41}}, -- {"net.inet6.ip6.maxifdefrouters", []_C_int{4, 24, 17, 47}}, -- {"net.inet6.ip6.maxifprefixes", []_C_int{4, 24, 17, 46}}, - {"net.inet6.ip6.mforwarding", []_C_int{4, 24, 17, 42}}, -+ {"net.inet6.ip6.mrtmfc", []_C_int{4, 24, 17, 53}}, -+ {"net.inet6.ip6.mrtmif", []_C_int{4, 24, 17, 52}}, - {"net.inet6.ip6.mrtproto", []_C_int{4, 24, 17, 8}}, - {"net.inet6.ip6.mtudisctimeout", []_C_int{4, 24, 17, 50}}, - {"net.inet6.ip6.multicast_mtudisc", []_C_int{4, 24, 17, 44}}, - {"net.inet6.ip6.multipath", []_C_int{4, 24, 17, 43}}, - {"net.inet6.ip6.neighborgcthresh", []_C_int{4, 24, 17, 45}}, - {"net.inet6.ip6.redirect", []_C_int{4, 24, 17, 2}}, -- {"net.inet6.ip6.rr_prune", []_C_int{4, 24, 17, 22}}, -+ {"net.inet6.ip6.soiikey", []_C_int{4, 24, 17, 54}}, - {"net.inet6.ip6.sourcecheck", []_C_int{4, 24, 17, 10}}, - {"net.inet6.ip6.sourcecheck_logint", []_C_int{4, 24, 17, 11}}, - {"net.inet6.ip6.use_deprecated", []_C_int{4, 24, 17, 21}}, -- {"net.inet6.ip6.v6only", []_C_int{4, 24, 17, 24}}, - {"net.key.sadb_dump", []_C_int{4, 30, 1}}, - {"net.key.spd_dump", []_C_int{4, 30, 2}}, - {"net.mpls.ifq.congestion", []_C_int{4, 33, 3, 4}}, -@@ -254,12 +261,12 @@ var sysctlMib = []mibentry{ - {"net.mpls.ifq.maxlen", []_C_int{4, 33, 3, 2}}, - {"net.mpls.mapttl_ip", []_C_int{4, 33, 5}}, - {"net.mpls.mapttl_ip6", []_C_int{4, 33, 6}}, -- {"net.mpls.maxloop_inkernel", []_C_int{4, 33, 4}}, - {"net.mpls.ttl", []_C_int{4, 33, 2}}, - {"net.pflow.stats", []_C_int{4, 34, 1}}, - {"net.pipex.enable", []_C_int{4, 35, 1}}, - {"vm.anonmin", []_C_int{2, 7}}, - {"vm.loadavg", []_C_int{2, 2}}, -+ {"vm.malloc_conf", []_C_int{2, 12}}, - {"vm.maxslp", []_C_int{2, 10}}, - {"vm.nkmempages", []_C_int{2, 6}}, - {"vm.psstrings", []_C_int{2, 3}}, -diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go -old mode 100644 -new mode 100755 -index 154b57a..cbdda1a ---- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go -+++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go -@@ -36,6 +36,7 @@ var sysctlMib = []mibentry{ - {"hw.pagesize", []_C_int{6, 7}}, - {"hw.perfpolicy", []_C_int{6, 23}}, - {"hw.physmem", []_C_int{6, 19}}, -+ {"hw.power", []_C_int{6, 26}}, - {"hw.product", []_C_int{6, 15}}, - {"hw.serialno", []_C_int{6, 17}}, - {"hw.setperf", []_C_int{6, 13}}, -@@ -44,6 +45,7 @@ var sysctlMib = []mibentry{ - {"hw.uuid", []_C_int{6, 18}}, - {"hw.vendor", []_C_int{6, 14}}, - {"hw.version", []_C_int{6, 16}}, -+ {"kern.allowdt", []_C_int{1, 65}}, - {"kern.allowkmem", []_C_int{1, 52}}, - {"kern.argmax", []_C_int{1, 8}}, - {"kern.audio", []_C_int{1, 84}}, -@@ -51,6 +53,8 @@ var sysctlMib = []mibentry{ - {"kern.bufcachepercent", []_C_int{1, 72}}, - {"kern.ccpu", []_C_int{1, 45}}, - {"kern.clockrate", []_C_int{1, 12}}, -+ {"kern.consbuf", []_C_int{1, 83}}, -+ {"kern.consbufsize", []_C_int{1, 82}}, - {"kern.consdev", []_C_int{1, 75}}, - {"kern.cp_time", []_C_int{1, 40}}, - {"kern.cp_time2", []_C_int{1, 71}}, -@@ -83,13 +87,13 @@ var sysctlMib = []mibentry{ - {"kern.ngroups", []_C_int{1, 18}}, - {"kern.nosuidcoredump", []_C_int{1, 32}}, - {"kern.nprocs", []_C_int{1, 47}}, -- {"kern.nselcoll", []_C_int{1, 43}}, - {"kern.nthreads", []_C_int{1, 26}}, - {"kern.numvnodes", []_C_int{1, 58}}, - {"kern.osrelease", []_C_int{1, 2}}, - {"kern.osrevision", []_C_int{1, 3}}, - {"kern.ostype", []_C_int{1, 1}}, - {"kern.osversion", []_C_int{1, 27}}, -+ {"kern.pfstatus", []_C_int{1, 86}}, - {"kern.pool_debug", []_C_int{1, 77}}, - {"kern.posix1version", []_C_int{1, 17}}, - {"kern.proc", []_C_int{1, 66}}, -@@ -110,13 +114,16 @@ var sysctlMib = []mibentry{ - {"kern.timecounter.hardware", []_C_int{1, 69, 3}}, - {"kern.timecounter.tick", []_C_int{1, 69, 1}}, - {"kern.timecounter.timestepwarnings", []_C_int{1, 69, 2}}, -+ {"kern.timeout_stats", []_C_int{1, 87}}, - {"kern.tty.tk_cancc", []_C_int{1, 44, 4}}, - {"kern.tty.tk_nin", []_C_int{1, 44, 1}}, - {"kern.tty.tk_nout", []_C_int{1, 44, 2}}, - {"kern.tty.tk_rawcc", []_C_int{1, 44, 3}}, - {"kern.tty.ttyinfo", []_C_int{1, 44, 5}}, - {"kern.ttycount", []_C_int{1, 57}}, -+ {"kern.utc_offset", []_C_int{1, 88}}, - {"kern.version", []_C_int{1, 4}}, -+ {"kern.video", []_C_int{1, 89}}, - {"kern.watchdog.auto", []_C_int{1, 64, 2}}, - {"kern.watchdog.period", []_C_int{1, 64, 1}}, - {"kern.witnesswatch", []_C_int{1, 53}}, -@@ -179,7 +186,6 @@ var sysctlMib = []mibentry{ - {"net.inet.ipcomp.stats", []_C_int{4, 2, 108, 2}}, - {"net.inet.ipip.allow", []_C_int{4, 2, 4, 1}}, - {"net.inet.ipip.stats", []_C_int{4, 2, 4, 2}}, -- {"net.inet.mobileip.allow", []_C_int{4, 2, 55, 1}}, - {"net.inet.pfsync.stats", []_C_int{4, 2, 240, 1}}, - {"net.inet.tcp.ackonpush", []_C_int{4, 2, 6, 13}}, - {"net.inet.tcp.always_keepalive", []_C_int{4, 2, 6, 22}}, -@@ -255,7 +261,6 @@ var sysctlMib = []mibentry{ - {"net.mpls.ifq.maxlen", []_C_int{4, 33, 3, 2}}, - {"net.mpls.mapttl_ip", []_C_int{4, 33, 5}}, - {"net.mpls.mapttl_ip6", []_C_int{4, 33, 6}}, -- {"net.mpls.maxloop_inkernel", []_C_int{4, 33, 4}}, - {"net.mpls.ttl", []_C_int{4, 33, 2}}, - {"net.pflow.stats", []_C_int{4, 34, 1}}, - {"net.pipex.enable", []_C_int{4, 35, 1}}, -diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go -old mode 100644 -new mode 100755 -index d96bb2b..f55eae1 ---- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go -+++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go -@@ -36,6 +36,7 @@ var sysctlMib = []mibentry{ - {"hw.pagesize", []_C_int{6, 7}}, - {"hw.perfpolicy", []_C_int{6, 23}}, - {"hw.physmem", []_C_int{6, 19}}, -+ {"hw.power", []_C_int{6, 26}}, - {"hw.product", []_C_int{6, 15}}, - {"hw.serialno", []_C_int{6, 17}}, - {"hw.setperf", []_C_int{6, 13}}, -@@ -86,7 +87,6 @@ var sysctlMib = []mibentry{ - {"kern.ngroups", []_C_int{1, 18}}, - {"kern.nosuidcoredump", []_C_int{1, 32}}, - {"kern.nprocs", []_C_int{1, 47}}, -- {"kern.nselcoll", []_C_int{1, 43}}, - {"kern.nthreads", []_C_int{1, 26}}, - {"kern.numvnodes", []_C_int{1, 58}}, - {"kern.osrelease", []_C_int{1, 2}}, -@@ -123,6 +123,7 @@ var sysctlMib = []mibentry{ - {"kern.ttycount", []_C_int{1, 57}}, - {"kern.utc_offset", []_C_int{1, 88}}, - {"kern.version", []_C_int{1, 4}}, -+ {"kern.video", []_C_int{1, 89}}, - {"kern.watchdog.auto", []_C_int{1, 64, 2}}, - {"kern.watchdog.period", []_C_int{1, 64, 1}}, - {"kern.witnesswatch", []_C_int{1, 53}}, -diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_ppc64.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_ppc64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_riscv64.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_riscv64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_riscv64.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_riscv64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go -old mode 100644 -new mode 100755 -index c9c4ad0..9862853 ---- a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go -+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go -@@ -447,4 +447,5 @@ const ( - SYS_PROCESS_MRELEASE = 448 - SYS_FUTEX_WAITV = 449 - SYS_SET_MEMPOLICY_HOME_NODE = 450 -+ SYS_CACHESTAT = 451 - ) -diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go -old mode 100644 -new mode 100755 -index 12ff341..8901f0f ---- a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go -+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go -@@ -369,4 +369,5 @@ const ( - SYS_PROCESS_MRELEASE = 448 - SYS_FUTEX_WAITV = 449 - SYS_SET_MEMPOLICY_HOME_NODE = 450 -+ SYS_CACHESTAT = 451 - ) -diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go -old mode 100644 -new mode 100755 -index c3fb5e7..6902c37 ---- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go -+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go -@@ -411,4 +411,5 @@ const ( - SYS_PROCESS_MRELEASE = 448 - SYS_FUTEX_WAITV = 449 - SYS_SET_MEMPOLICY_HOME_NODE = 450 -+ SYS_CACHESTAT = 451 - ) -diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go -old mode 100644 -new mode 100755 -index 358c847..a6d3dff ---- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go -+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go -@@ -314,4 +314,5 @@ const ( - SYS_PROCESS_MRELEASE = 448 - SYS_FUTEX_WAITV = 449 - SYS_SET_MEMPOLICY_HOME_NODE = 450 -+ SYS_CACHESTAT = 451 - ) -diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go -old mode 100644 -new mode 100755 -index 81c4849..b18f3f7 ---- a/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go -+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go -@@ -308,4 +308,5 @@ const ( - SYS_PROCESS_MRELEASE = 448 - SYS_FUTEX_WAITV = 449 - SYS_SET_MEMPOLICY_HOME_NODE = 450 -+ SYS_CACHESTAT = 451 - ) -diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go -old mode 100644 -new mode 100755 -index 202a57e..0302e5e ---- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go -+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go -@@ -431,4 +431,5 @@ const ( - SYS_PROCESS_MRELEASE = 4448 - SYS_FUTEX_WAITV = 4449 - SYS_SET_MEMPOLICY_HOME_NODE = 4450 -+ SYS_CACHESTAT = 4451 - ) -diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go -old mode 100644 -new mode 100755 -index 1fbceb5..6693ba4 ---- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go -+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go -@@ -361,4 +361,5 @@ const ( - SYS_PROCESS_MRELEASE = 5448 - SYS_FUTEX_WAITV = 5449 - SYS_SET_MEMPOLICY_HOME_NODE = 5450 -+ SYS_CACHESTAT = 5451 - ) -diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go -old mode 100644 -new mode 100755 -index b4ffb7a..fd93f49 ---- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go -+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go -@@ -361,4 +361,5 @@ const ( - SYS_PROCESS_MRELEASE = 5448 - SYS_FUTEX_WAITV = 5449 - SYS_SET_MEMPOLICY_HOME_NODE = 5450 -+ SYS_CACHESTAT = 5451 - ) -diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go -old mode 100644 -new mode 100755 -index 867985f..760ddca ---- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go -+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go -@@ -431,4 +431,5 @@ const ( - SYS_PROCESS_MRELEASE = 4448 - SYS_FUTEX_WAITV = 4449 - SYS_SET_MEMPOLICY_HOME_NODE = 4450 -+ SYS_CACHESTAT = 4451 - ) -diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go -old mode 100644 -new mode 100755 -index a8cce69..cff2b25 ---- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go -+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go -@@ -438,4 +438,5 @@ const ( - SYS_PROCESS_MRELEASE = 448 - SYS_FUTEX_WAITV = 449 - SYS_SET_MEMPOLICY_HOME_NODE = 450 -+ SYS_CACHESTAT = 451 - ) -diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go -old mode 100644 -new mode 100755 -index d44c5b3..a4b2405 ---- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go -+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go -@@ -410,4 +410,5 @@ const ( - SYS_PROCESS_MRELEASE = 448 - SYS_FUTEX_WAITV = 449 - SYS_SET_MEMPOLICY_HOME_NODE = 450 -+ SYS_CACHESTAT = 451 - ) -diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go -old mode 100644 -new mode 100755 -index 4214dd9..aca54b4 ---- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go -+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go -@@ -410,4 +410,5 @@ const ( - SYS_PROCESS_MRELEASE = 448 - SYS_FUTEX_WAITV = 449 - SYS_SET_MEMPOLICY_HOME_NODE = 450 -+ SYS_CACHESTAT = 451 - ) -diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go -old mode 100644 -new mode 100755 -index 3e594a8..9d1738d ---- a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go -+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go -@@ -251,6 +251,8 @@ const ( - SYS_ACCEPT4 = 242 - SYS_RECVMMSG = 243 - SYS_ARCH_SPECIFIC_SYSCALL = 244 -+ SYS_RISCV_HWPROBE = 258 -+ SYS_RISCV_FLUSH_ICACHE = 259 - SYS_WAIT4 = 260 - SYS_PRLIMIT64 = 261 - SYS_FANOTIFY_INIT = 262 -@@ -313,4 +315,5 @@ const ( - SYS_PROCESS_MRELEASE = 448 - SYS_FUTEX_WAITV = 449 - SYS_SET_MEMPOLICY_HOME_NODE = 450 -+ SYS_CACHESTAT = 451 - ) -diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go -old mode 100644 -new mode 100755 -index 7ea4652..022878d ---- a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go -+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go -@@ -372,7 +372,9 @@ const ( - SYS_LANDLOCK_CREATE_RULESET = 444 - SYS_LANDLOCK_ADD_RULE = 445 - SYS_LANDLOCK_RESTRICT_SELF = 446 -+ SYS_MEMFD_SECRET = 447 - SYS_PROCESS_MRELEASE = 448 - SYS_FUTEX_WAITV = 449 - SYS_SET_MEMPOLICY_HOME_NODE = 450 -+ SYS_CACHESTAT = 451 - ) -diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go -old mode 100644 -new mode 100755 -index 92f628e..4100a76 ---- a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go -+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go -@@ -389,4 +389,5 @@ const ( - SYS_PROCESS_MRELEASE = 448 - SYS_FUTEX_WAITV = 449 - SYS_SET_MEMPOLICY_HOME_NODE = 450 -+ SYS_CACHESTAT = 451 - ) -diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go -old mode 100644 -new mode 100755 -index a37f773..01c43a0 ---- a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go -+++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go -@@ -6,6 +6,7 @@ - - package unix - -+// Deprecated: Use libc wrappers instead of direct syscalls. - const ( - SYS_EXIT = 1 // { void sys_exit(int rval); } - SYS_FORK = 2 // { int sys_fork(void); } -diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_ppc64.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_ppc64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_riscv64.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_riscv64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/zsysnum_zos_s390x.go b/vendor/golang.org/x/sys/unix/zsysnum_zos_s390x.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go -old mode 100644 -new mode 100755 -index e2a64f0..690cefc ---- a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go -+++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go -@@ -151,6 +151,16 @@ type Dirent struct { - _ [3]byte - } - -+type Attrlist struct { -+ Bitmapcount uint16 -+ Reserved uint16 -+ Commonattr uint32 -+ Volattr uint32 -+ Dirattr uint32 -+ Fileattr uint32 -+ Forkattr uint32 -+} -+ - const ( - PathMax = 0x400 - ) -@@ -610,6 +620,7 @@ const ( - AT_REMOVEDIR = 0x80 - AT_SYMLINK_FOLLOW = 0x40 - AT_SYMLINK_NOFOLLOW = 0x20 -+ AT_EACCESS = 0x10 - ) - - type PollFd struct { -diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go -old mode 100644 -new mode 100755 -index 34aa775..5bffc10 ---- a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go -+++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go -@@ -151,6 +151,16 @@ type Dirent struct { - _ [3]byte - } - -+type Attrlist struct { -+ Bitmapcount uint16 -+ Reserved uint16 -+ Commonattr uint32 -+ Volattr uint32 -+ Dirattr uint32 -+ Fileattr uint32 -+ Forkattr uint32 -+} -+ - const ( - PathMax = 0x400 - ) -@@ -610,6 +620,7 @@ const ( - AT_REMOVEDIR = 0x80 - AT_SYMLINK_FOLLOW = 0x40 - AT_SYMLINK_NOFOLLOW = 0x20 -+ AT_EACCESS = 0x10 - ) - - type PollFd struct { -diff --git a/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go -old mode 100644 -new mode 100755 -index d9c78cd..29dc483 ---- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go -+++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go -@@ -362,7 +362,7 @@ type FpExtendedPrecision struct{} - type PtraceIoDesc struct { - Op int32 - Offs uintptr -- Addr uintptr -+ Addr *byte - Len uint32 - } - -diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go -old mode 100644 -new mode 100755 -index 26991b1..0a89b28 ---- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go -+++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go -@@ -367,7 +367,7 @@ type FpExtendedPrecision struct{} - type PtraceIoDesc struct { - Op int32 - Offs uintptr -- Addr uintptr -+ Addr *byte - Len uint64 - } - -diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go -old mode 100644 -new mode 100755 -index f8324e7..c8666bb ---- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go -+++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go -@@ -350,7 +350,7 @@ type FpExtendedPrecision struct { - type PtraceIoDesc struct { - Op int32 - Offs uintptr -- Addr uintptr -+ Addr *byte - Len uint32 - } - -diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go -old mode 100644 -new mode 100755 -index 4220411..88fb48a ---- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go -+++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go -@@ -347,7 +347,7 @@ type FpExtendedPrecision struct{} - type PtraceIoDesc struct { - Op int32 - Offs uintptr -- Addr uintptr -+ Addr *byte - Len uint64 - } - -diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go -old mode 100644 -new mode 100755 -index 0660fd4..698dc97 ---- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go -+++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go -@@ -348,7 +348,7 @@ type FpExtendedPrecision struct{} - type PtraceIoDesc struct { - Op int32 - Offs uintptr -- Addr uintptr -+ Addr *byte - Len uint64 - } - -diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux.go b/vendor/golang.org/x/sys/unix/ztypes_linux.go -old mode 100644 -new mode 100755 -index ff68811..18aa70b ---- a/vendor/golang.org/x/sys/unix/ztypes_linux.go -+++ b/vendor/golang.org/x/sys/unix/ztypes_linux.go -@@ -29,6 +29,41 @@ type Itimerval struct { - Value Timeval - } - -+const ( -+ ADJ_OFFSET = 0x1 -+ ADJ_FREQUENCY = 0x2 -+ ADJ_MAXERROR = 0x4 -+ ADJ_ESTERROR = 0x8 -+ ADJ_STATUS = 0x10 -+ ADJ_TIMECONST = 0x20 -+ ADJ_TAI = 0x80 -+ ADJ_SETOFFSET = 0x100 -+ ADJ_MICRO = 0x1000 -+ ADJ_NANO = 0x2000 -+ ADJ_TICK = 0x4000 -+ ADJ_OFFSET_SINGLESHOT = 0x8001 -+ ADJ_OFFSET_SS_READ = 0xa001 -+) -+ -+const ( -+ STA_PLL = 0x1 -+ STA_PPSFREQ = 0x2 -+ STA_PPSTIME = 0x4 -+ STA_FLL = 0x8 -+ STA_INS = 0x10 -+ STA_DEL = 0x20 -+ STA_UNSYNC = 0x40 -+ STA_FREQHOLD = 0x80 -+ STA_PPSSIGNAL = 0x100 -+ STA_PPSJITTER = 0x200 -+ STA_PPSWANDER = 0x400 -+ STA_PPSERROR = 0x800 -+ STA_CLOCKERR = 0x1000 -+ STA_NANO = 0x2000 -+ STA_MODE = 0x4000 -+ STA_CLK = 0x8000 -+) -+ - const ( - TIME_OK = 0x0 - TIME_INS = 0x1 -@@ -53,29 +88,30 @@ type StatxTimestamp struct { - } - - type Statx_t struct { -- Mask uint32 -- Blksize uint32 -- Attributes uint64 -- Nlink uint32 -- Uid uint32 -- Gid uint32 -- Mode uint16 -- _ [1]uint16 -- Ino uint64 -- Size uint64 -- Blocks uint64 -- Attributes_mask uint64 -- Atime StatxTimestamp -- Btime StatxTimestamp -- Ctime StatxTimestamp -- Mtime StatxTimestamp -- Rdev_major uint32 -- Rdev_minor uint32 -- Dev_major uint32 -- Dev_minor uint32 -- Mnt_id uint64 -- _ uint64 -- _ [12]uint64 -+ Mask uint32 -+ Blksize uint32 -+ Attributes uint64 -+ Nlink uint32 -+ Uid uint32 -+ Gid uint32 -+ Mode uint16 -+ _ [1]uint16 -+ Ino uint64 -+ Size uint64 -+ Blocks uint64 -+ Attributes_mask uint64 -+ Atime StatxTimestamp -+ Btime StatxTimestamp -+ Ctime StatxTimestamp -+ Mtime StatxTimestamp -+ Rdev_major uint32 -+ Rdev_minor uint32 -+ Dev_major uint32 -+ Dev_minor uint32 -+ Mnt_id uint64 -+ Dio_mem_align uint32 -+ Dio_offset_align uint32 -+ _ [12]uint64 - } - - type Fsid struct { -@@ -420,36 +456,60 @@ type Ucred struct { - } - - type TCPInfo struct { -- State uint8 -- Ca_state uint8 -- Retransmits uint8 -- Probes uint8 -- Backoff uint8 -- Options uint8 -- Rto uint32 -- Ato uint32 -- Snd_mss uint32 -- Rcv_mss uint32 -- Unacked uint32 -- Sacked uint32 -- Lost uint32 -- Retrans uint32 -- Fackets uint32 -- Last_data_sent uint32 -- Last_ack_sent uint32 -- Last_data_recv uint32 -- Last_ack_recv uint32 -- Pmtu uint32 -- Rcv_ssthresh uint32 -- Rtt uint32 -- Rttvar uint32 -- Snd_ssthresh uint32 -- Snd_cwnd uint32 -- Advmss uint32 -- Reordering uint32 -- Rcv_rtt uint32 -- Rcv_space uint32 -- Total_retrans uint32 -+ State uint8 -+ Ca_state uint8 -+ Retransmits uint8 -+ Probes uint8 -+ Backoff uint8 -+ Options uint8 -+ Rto uint32 -+ Ato uint32 -+ Snd_mss uint32 -+ Rcv_mss uint32 -+ Unacked uint32 -+ Sacked uint32 -+ Lost uint32 -+ Retrans uint32 -+ Fackets uint32 -+ Last_data_sent uint32 -+ Last_ack_sent uint32 -+ Last_data_recv uint32 -+ Last_ack_recv uint32 -+ Pmtu uint32 -+ Rcv_ssthresh uint32 -+ Rtt uint32 -+ Rttvar uint32 -+ Snd_ssthresh uint32 -+ Snd_cwnd uint32 -+ Advmss uint32 -+ Reordering uint32 -+ Rcv_rtt uint32 -+ Rcv_space uint32 -+ Total_retrans uint32 -+ Pacing_rate uint64 -+ Max_pacing_rate uint64 -+ Bytes_acked uint64 -+ Bytes_received uint64 -+ Segs_out uint32 -+ Segs_in uint32 -+ Notsent_bytes uint32 -+ Min_rtt uint32 -+ Data_segs_in uint32 -+ Data_segs_out uint32 -+ Delivery_rate uint64 -+ Busy_time uint64 -+ Rwnd_limited uint64 -+ Sndbuf_limited uint64 -+ Delivered uint32 -+ Delivered_ce uint32 -+ Bytes_sent uint64 -+ Bytes_retrans uint64 -+ Dsack_dups uint32 -+ Reord_seen uint32 -+ Rcv_ooopack uint32 -+ Snd_wnd uint32 -+ Rcv_wnd uint32 -+ Rehash uint32 - } - - type CanFilter struct { -@@ -492,7 +552,7 @@ const ( - SizeofIPv6MTUInfo = 0x20 - SizeofICMPv6Filter = 0x20 - SizeofUcred = 0xc -- SizeofTCPInfo = 0x68 -+ SizeofTCPInfo = 0xf0 - SizeofCanFilter = 0x8 - SizeofTCPRepairOpt = 0x8 - ) -@@ -806,6 +866,11 @@ const ( - POLLNVAL = 0x20 - ) - -+type sigset_argpack struct { -+ ss *Sigset_t -+ ssLen uintptr -+} -+ - type SignalfdSiginfo struct { - Signo uint32 - Errno int32 -@@ -1007,6 +1072,7 @@ const ( - PerfBitCommExec = CBitFieldMaskBit24 - PerfBitUseClockID = CBitFieldMaskBit25 - PerfBitContextSwitch = CBitFieldMaskBit26 -+ PerfBitWriteBackward = CBitFieldMaskBit27 - ) - - const ( -@@ -1099,7 +1165,8 @@ const ( - PERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT = 0xf - PERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT = 0x10 - PERF_SAMPLE_BRANCH_HW_INDEX_SHIFT = 0x11 -- PERF_SAMPLE_BRANCH_MAX_SHIFT = 0x12 -+ PERF_SAMPLE_BRANCH_PRIV_SAVE_SHIFT = 0x12 -+ PERF_SAMPLE_BRANCH_MAX_SHIFT = 0x13 - PERF_SAMPLE_BRANCH_USER = 0x1 - PERF_SAMPLE_BRANCH_KERNEL = 0x2 - PERF_SAMPLE_BRANCH_HV = 0x4 -@@ -1118,7 +1185,8 @@ const ( - PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 - PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 - PERF_SAMPLE_BRANCH_HW_INDEX = 0x20000 -- PERF_SAMPLE_BRANCH_MAX = 0x40000 -+ PERF_SAMPLE_BRANCH_PRIV_SAVE = 0x40000 -+ PERF_SAMPLE_BRANCH_MAX = 0x80000 - PERF_BR_UNKNOWN = 0x0 - PERF_BR_COND = 0x1 - PERF_BR_UNCOND = 0x2 -@@ -1132,7 +1200,10 @@ const ( - PERF_BR_COND_RET = 0xa - PERF_BR_ERET = 0xb - PERF_BR_IRQ = 0xc -- PERF_BR_MAX = 0xd -+ PERF_BR_SERROR = 0xd -+ PERF_BR_NO_TX = 0xe -+ PERF_BR_EXTEND_ABI = 0xf -+ PERF_BR_MAX = 0x10 - PERF_SAMPLE_REGS_ABI_NONE = 0x0 - PERF_SAMPLE_REGS_ABI_32 = 0x1 - PERF_SAMPLE_REGS_ABI_64 = 0x2 -@@ -1151,7 +1222,8 @@ const ( - PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 - PERF_FORMAT_ID = 0x4 - PERF_FORMAT_GROUP = 0x8 -- PERF_FORMAT_MAX = 0x10 -+ PERF_FORMAT_LOST = 0x10 -+ PERF_FORMAT_MAX = 0x20 - PERF_IOC_FLAG_GROUP = 0x1 - PERF_RECORD_MMAP = 0x1 - PERF_RECORD_LOST = 0x2 -@@ -1197,7 +1269,7 @@ type TCPMD5Sig struct { - Flags uint8 - Prefixlen uint8 - Keylen uint16 -- _ uint32 -+ Ifindex int32 - Key [80]uint8 - } - -@@ -1471,6 +1543,10 @@ const ( - IFLA_GRO_MAX_SIZE = 0x3a - IFLA_TSO_MAX_SIZE = 0x3b - IFLA_TSO_MAX_SEGS = 0x3c -+ IFLA_ALLMULTI = 0x3d -+ IFLA_DEVLINK_PORT = 0x3e -+ IFLA_GSO_IPV4_MAX_SIZE = 0x3f -+ IFLA_GRO_IPV4_MAX_SIZE = 0x40 - IFLA_PROTO_DOWN_REASON_UNSPEC = 0x0 - IFLA_PROTO_DOWN_REASON_MASK = 0x1 - IFLA_PROTO_DOWN_REASON_VALUE = 0x2 -@@ -1897,7 +1973,11 @@ const ( - NFT_MSG_GETOBJ = 0x13 - NFT_MSG_DELOBJ = 0x14 - NFT_MSG_GETOBJ_RESET = 0x15 -- NFT_MSG_MAX = 0x19 -+ NFT_MSG_NEWFLOWTABLE = 0x16 -+ NFT_MSG_GETFLOWTABLE = 0x17 -+ NFT_MSG_DELFLOWTABLE = 0x18 -+ NFT_MSG_GETRULE_RESET = 0x19 -+ NFT_MSG_MAX = 0x22 - NFTA_LIST_UNSPEC = 0x0 - NFTA_LIST_ELEM = 0x1 - NFTA_HOOK_UNSPEC = 0x0 -@@ -2401,9 +2481,11 @@ const ( - SOF_TIMESTAMPING_OPT_STATS = 0x1000 - SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 - SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 -+ SOF_TIMESTAMPING_BIND_PHC = 0x8000 -+ SOF_TIMESTAMPING_OPT_ID_TCP = 0x10000 - -- SOF_TIMESTAMPING_LAST = 0x8000 -- SOF_TIMESTAMPING_MASK = 0xffff -+ SOF_TIMESTAMPING_LAST = 0x10000 -+ SOF_TIMESTAMPING_MASK = 0x1ffff - - SCM_TSTAMP_SND = 0x0 - SCM_TSTAMP_SCHED = 0x1 -@@ -2482,6 +2564,11 @@ const ( - BPF_REG_8 = 0x8 - BPF_REG_9 = 0x9 - BPF_REG_10 = 0xa -+ BPF_CGROUP_ITER_ORDER_UNSPEC = 0x0 -+ BPF_CGROUP_ITER_SELF_ONLY = 0x1 -+ BPF_CGROUP_ITER_DESCENDANTS_PRE = 0x2 -+ BPF_CGROUP_ITER_DESCENDANTS_POST = 0x3 -+ BPF_CGROUP_ITER_ANCESTORS_UP = 0x4 - BPF_MAP_CREATE = 0x0 - BPF_MAP_LOOKUP_ELEM = 0x1 - BPF_MAP_UPDATE_ELEM = 0x2 -@@ -2493,6 +2580,7 @@ const ( - BPF_PROG_ATTACH = 0x8 - BPF_PROG_DETACH = 0x9 - BPF_PROG_TEST_RUN = 0xa -+ BPF_PROG_RUN = 0xa - BPF_PROG_GET_NEXT_ID = 0xb - BPF_MAP_GET_NEXT_ID = 0xc - BPF_PROG_GET_FD_BY_ID = 0xd -@@ -2537,6 +2625,7 @@ const ( - BPF_MAP_TYPE_CPUMAP = 0x10 - BPF_MAP_TYPE_XSKMAP = 0x11 - BPF_MAP_TYPE_SOCKHASH = 0x12 -+ BPF_MAP_TYPE_CGROUP_STORAGE_DEPRECATED = 0x13 - BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 - BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 - BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 -@@ -2547,6 +2636,10 @@ const ( - BPF_MAP_TYPE_STRUCT_OPS = 0x1a - BPF_MAP_TYPE_RINGBUF = 0x1b - BPF_MAP_TYPE_INODE_STORAGE = 0x1c -+ BPF_MAP_TYPE_TASK_STORAGE = 0x1d -+ BPF_MAP_TYPE_BLOOM_FILTER = 0x1e -+ BPF_MAP_TYPE_USER_RINGBUF = 0x1f -+ BPF_MAP_TYPE_CGRP_STORAGE = 0x20 - BPF_PROG_TYPE_UNSPEC = 0x0 - BPF_PROG_TYPE_SOCKET_FILTER = 0x1 - BPF_PROG_TYPE_KPROBE = 0x2 -@@ -2578,6 +2671,7 @@ const ( - BPF_PROG_TYPE_EXT = 0x1c - BPF_PROG_TYPE_LSM = 0x1d - BPF_PROG_TYPE_SK_LOOKUP = 0x1e -+ BPF_PROG_TYPE_SYSCALL = 0x1f - BPF_CGROUP_INET_INGRESS = 0x0 - BPF_CGROUP_INET_EGRESS = 0x1 - BPF_CGROUP_INET_SOCK_CREATE = 0x2 -@@ -2616,6 +2710,12 @@ const ( - BPF_XDP_CPUMAP = 0x23 - BPF_SK_LOOKUP = 0x24 - BPF_XDP = 0x25 -+ BPF_SK_SKB_VERDICT = 0x26 -+ BPF_SK_REUSEPORT_SELECT = 0x27 -+ BPF_SK_REUSEPORT_SELECT_OR_MIGRATE = 0x28 -+ BPF_PERF_EVENT = 0x29 -+ BPF_TRACE_KPROBE_MULTI = 0x2a -+ BPF_LSM_CGROUP = 0x2b - BPF_LINK_TYPE_UNSPEC = 0x0 - BPF_LINK_TYPE_RAW_TRACEPOINT = 0x1 - BPF_LINK_TYPE_TRACING = 0x2 -@@ -2623,6 +2723,9 @@ const ( - BPF_LINK_TYPE_ITER = 0x4 - BPF_LINK_TYPE_NETNS = 0x5 - BPF_LINK_TYPE_XDP = 0x6 -+ BPF_LINK_TYPE_PERF_EVENT = 0x7 -+ BPF_LINK_TYPE_KPROBE_MULTI = 0x8 -+ BPF_LINK_TYPE_STRUCT_OPS = 0x9 - BPF_ANY = 0x0 - BPF_NOEXIST = 0x1 - BPF_EXIST = 0x2 -@@ -2660,6 +2763,7 @@ const ( - BPF_F_ZERO_CSUM_TX = 0x2 - BPF_F_DONT_FRAGMENT = 0x4 - BPF_F_SEQ_NUMBER = 0x8 -+ BPF_F_TUNINFO_FLAGS = 0x10 - BPF_F_INDEX_MASK = 0xffffffff - BPF_F_CURRENT_CPU = 0xffffffff - BPF_F_CTXLEN_MASK = 0xfffff00000000 -@@ -2674,6 +2778,7 @@ const ( - BPF_F_ADJ_ROOM_ENCAP_L4_GRE = 0x8 - BPF_F_ADJ_ROOM_ENCAP_L4_UDP = 0x10 - BPF_F_ADJ_ROOM_NO_CSUM_RESET = 0x20 -+ BPF_F_ADJ_ROOM_ENCAP_L2_ETH = 0x40 - BPF_ADJ_ROOM_ENCAP_L2_MASK = 0xff - BPF_ADJ_ROOM_ENCAP_L2_SHIFT = 0x38 - BPF_F_SYSCTL_BASE_NAME = 0x1 -@@ -2698,10 +2803,16 @@ const ( - BPF_LWT_ENCAP_SEG6 = 0x0 - BPF_LWT_ENCAP_SEG6_INLINE = 0x1 - BPF_LWT_ENCAP_IP = 0x2 -+ BPF_F_BPRM_SECUREEXEC = 0x1 -+ BPF_F_BROADCAST = 0x8 -+ BPF_F_EXCLUDE_INGRESS = 0x10 -+ BPF_SKB_TSTAMP_UNSPEC = 0x0 -+ BPF_SKB_TSTAMP_DELIVERY_MONO = 0x1 - BPF_OK = 0x0 - BPF_DROP = 0x2 - BPF_REDIRECT = 0x7 - BPF_LWT_REROUTE = 0x80 -+ BPF_FLOW_DISSECTOR_CONTINUE = 0x81 - BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 - BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 - BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 -@@ -2765,6 +2876,10 @@ const ( - BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 - BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 - BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 -+ BPF_MTU_CHK_SEGS = 0x1 -+ BPF_MTU_CHK_RET_SUCCESS = 0x0 -+ BPF_MTU_CHK_RET_FRAG_NEEDED = 0x1 -+ BPF_MTU_CHK_RET_SEGS_TOOBIG = 0x2 - BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 - BPF_FD_TYPE_TRACEPOINT = 0x1 - BPF_FD_TYPE_KPROBE = 0x2 -@@ -2774,6 +2889,19 @@ const ( - BPF_FLOW_DISSECTOR_F_PARSE_1ST_FRAG = 0x1 - BPF_FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL = 0x2 - BPF_FLOW_DISSECTOR_F_STOP_AT_ENCAP = 0x4 -+ BPF_CORE_FIELD_BYTE_OFFSET = 0x0 -+ BPF_CORE_FIELD_BYTE_SIZE = 0x1 -+ BPF_CORE_FIELD_EXISTS = 0x2 -+ BPF_CORE_FIELD_SIGNED = 0x3 -+ BPF_CORE_FIELD_LSHIFT_U64 = 0x4 -+ BPF_CORE_FIELD_RSHIFT_U64 = 0x5 -+ BPF_CORE_TYPE_ID_LOCAL = 0x6 -+ BPF_CORE_TYPE_ID_TARGET = 0x7 -+ BPF_CORE_TYPE_EXISTS = 0x8 -+ BPF_CORE_TYPE_SIZE = 0x9 -+ BPF_CORE_ENUMVAL_EXISTS = 0xa -+ BPF_CORE_ENUMVAL_VALUE = 0xb -+ BPF_CORE_TYPE_MATCHES = 0xc - ) - - const ( -@@ -2979,7 +3107,16 @@ const ( - DEVLINK_CMD_TRAP_POLICER_NEW = 0x47 - DEVLINK_CMD_TRAP_POLICER_DEL = 0x48 - DEVLINK_CMD_HEALTH_REPORTER_TEST = 0x49 -- DEVLINK_CMD_MAX = 0x51 -+ DEVLINK_CMD_RATE_GET = 0x4a -+ DEVLINK_CMD_RATE_SET = 0x4b -+ DEVLINK_CMD_RATE_NEW = 0x4c -+ DEVLINK_CMD_RATE_DEL = 0x4d -+ DEVLINK_CMD_LINECARD_GET = 0x4e -+ DEVLINK_CMD_LINECARD_SET = 0x4f -+ DEVLINK_CMD_LINECARD_NEW = 0x50 -+ DEVLINK_CMD_LINECARD_DEL = 0x51 -+ DEVLINK_CMD_SELFTESTS_GET = 0x52 -+ DEVLINK_CMD_MAX = 0x53 - DEVLINK_PORT_TYPE_NOTSET = 0x0 - DEVLINK_PORT_TYPE_AUTO = 0x1 - DEVLINK_PORT_TYPE_ETH = 0x2 -@@ -3208,7 +3345,13 @@ const ( - DEVLINK_ATTR_RATE_NODE_NAME = 0xa8 - DEVLINK_ATTR_RATE_PARENT_NODE_NAME = 0xa9 - DEVLINK_ATTR_REGION_MAX_SNAPSHOTS = 0xaa -- DEVLINK_ATTR_MAX = 0xae -+ DEVLINK_ATTR_LINECARD_INDEX = 0xab -+ DEVLINK_ATTR_LINECARD_STATE = 0xac -+ DEVLINK_ATTR_LINECARD_TYPE = 0xad -+ DEVLINK_ATTR_LINECARD_SUPPORTED_TYPES = 0xae -+ DEVLINK_ATTR_NESTED_DEVLINK = 0xaf -+ DEVLINK_ATTR_SELFTESTS = 0xb0 -+ DEVLINK_ATTR_MAX = 0xb3 - DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE = 0x0 - DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX = 0x1 - DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT = 0x0 -@@ -3224,7 +3367,8 @@ const ( - DEVLINK_PORT_FUNCTION_ATTR_HW_ADDR = 0x1 - DEVLINK_PORT_FN_ATTR_STATE = 0x2 - DEVLINK_PORT_FN_ATTR_OPSTATE = 0x3 -- DEVLINK_PORT_FUNCTION_ATTR_MAX = 0x3 -+ DEVLINK_PORT_FN_ATTR_CAPS = 0x4 -+ DEVLINK_PORT_FUNCTION_ATTR_MAX = 0x4 - ) - - type FsverityDigest struct { -@@ -3317,7 +3461,8 @@ const ( - LWTUNNEL_ENCAP_SEG6_LOCAL = 0x7 - LWTUNNEL_ENCAP_RPL = 0x8 - LWTUNNEL_ENCAP_IOAM6 = 0x9 -- LWTUNNEL_ENCAP_MAX = 0x9 -+ LWTUNNEL_ENCAP_XFRM = 0xa -+ LWTUNNEL_ENCAP_MAX = 0xa - - MPLS_IPTUNNEL_UNSPEC = 0x0 - MPLS_IPTUNNEL_DST = 0x1 -@@ -3512,7 +3657,10 @@ const ( - ETHTOOL_MSG_PHC_VCLOCKS_GET = 0x21 - ETHTOOL_MSG_MODULE_GET = 0x22 - ETHTOOL_MSG_MODULE_SET = 0x23 -- ETHTOOL_MSG_USER_MAX = 0x23 -+ ETHTOOL_MSG_PSE_GET = 0x24 -+ ETHTOOL_MSG_PSE_SET = 0x25 -+ ETHTOOL_MSG_RSS_GET = 0x26 -+ ETHTOOL_MSG_USER_MAX = 0x2b - ETHTOOL_MSG_KERNEL_NONE = 0x0 - ETHTOOL_MSG_STRSET_GET_REPLY = 0x1 - ETHTOOL_MSG_LINKINFO_GET_REPLY = 0x2 -@@ -3550,7 +3698,9 @@ const ( - ETHTOOL_MSG_PHC_VCLOCKS_GET_REPLY = 0x22 - ETHTOOL_MSG_MODULE_GET_REPLY = 0x23 - ETHTOOL_MSG_MODULE_NTF = 0x24 -- ETHTOOL_MSG_KERNEL_MAX = 0x24 -+ ETHTOOL_MSG_PSE_GET_REPLY = 0x25 -+ ETHTOOL_MSG_RSS_GET_REPLY = 0x26 -+ ETHTOOL_MSG_KERNEL_MAX = 0x2b - ETHTOOL_A_HEADER_UNSPEC = 0x0 - ETHTOOL_A_HEADER_DEV_INDEX = 0x1 - ETHTOOL_A_HEADER_DEV_NAME = 0x2 -@@ -3609,7 +3759,8 @@ const ( - ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG = 0x7 - ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE = 0x8 - ETHTOOL_A_LINKMODES_LANES = 0x9 -- ETHTOOL_A_LINKMODES_MAX = 0x9 -+ ETHTOOL_A_LINKMODES_RATE_MATCHING = 0xa -+ ETHTOOL_A_LINKMODES_MAX = 0xa - ETHTOOL_A_LINKSTATE_UNSPEC = 0x0 - ETHTOOL_A_LINKSTATE_HEADER = 0x1 - ETHTOOL_A_LINKSTATE_LINK = 0x2 -@@ -3617,7 +3768,8 @@ const ( - ETHTOOL_A_LINKSTATE_SQI_MAX = 0x4 - ETHTOOL_A_LINKSTATE_EXT_STATE = 0x5 - ETHTOOL_A_LINKSTATE_EXT_SUBSTATE = 0x6 -- ETHTOOL_A_LINKSTATE_MAX = 0x6 -+ ETHTOOL_A_LINKSTATE_EXT_DOWN_CNT = 0x7 -+ ETHTOOL_A_LINKSTATE_MAX = 0x7 - ETHTOOL_A_DEBUG_UNSPEC = 0x0 - ETHTOOL_A_DEBUG_HEADER = 0x1 - ETHTOOL_A_DEBUG_MSGMASK = 0x2 -@@ -3652,7 +3804,7 @@ const ( - ETHTOOL_A_RINGS_TCP_DATA_SPLIT = 0xb - ETHTOOL_A_RINGS_CQE_SIZE = 0xc - ETHTOOL_A_RINGS_TX_PUSH = 0xd -- ETHTOOL_A_RINGS_MAX = 0xd -+ ETHTOOL_A_RINGS_MAX = 0x10 - ETHTOOL_A_CHANNELS_UNSPEC = 0x0 - ETHTOOL_A_CHANNELS_HEADER = 0x1 - ETHTOOL_A_CHANNELS_RX_MAX = 0x2 -@@ -3690,14 +3842,14 @@ const ( - ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL = 0x17 - ETHTOOL_A_COALESCE_USE_CQE_MODE_TX = 0x18 - ETHTOOL_A_COALESCE_USE_CQE_MODE_RX = 0x19 -- ETHTOOL_A_COALESCE_MAX = 0x19 -+ ETHTOOL_A_COALESCE_MAX = 0x1c - ETHTOOL_A_PAUSE_UNSPEC = 0x0 - ETHTOOL_A_PAUSE_HEADER = 0x1 - ETHTOOL_A_PAUSE_AUTONEG = 0x2 - ETHTOOL_A_PAUSE_RX = 0x3 - ETHTOOL_A_PAUSE_TX = 0x4 - ETHTOOL_A_PAUSE_STATS = 0x5 -- ETHTOOL_A_PAUSE_MAX = 0x5 -+ ETHTOOL_A_PAUSE_MAX = 0x6 - ETHTOOL_A_PAUSE_STAT_UNSPEC = 0x0 - ETHTOOL_A_PAUSE_STAT_PAD = 0x1 - ETHTOOL_A_PAUSE_STAT_TX_FRAMES = 0x2 -@@ -4201,6 +4353,9 @@ const ( - NL80211_ACL_POLICY_DENY_UNLESS_LISTED = 0x1 - NL80211_AC_VI = 0x1 - NL80211_AC_VO = 0x0 -+ NL80211_AP_SETTINGS_EXTERNAL_AUTH_SUPPORT = 0x1 -+ NL80211_AP_SETTINGS_SA_QUERY_OFFLOAD_SUPPORT = 0x2 -+ NL80211_AP_SME_SA_QUERY_OFFLOAD = 0x1 - NL80211_ATTR_4ADDR = 0x53 - NL80211_ATTR_ACK = 0x5c - NL80211_ATTR_ACK_SIGNAL = 0x107 -@@ -4209,6 +4364,7 @@ const ( - NL80211_ATTR_AIRTIME_WEIGHT = 0x112 - NL80211_ATTR_AKM_SUITES = 0x4c - NL80211_ATTR_AP_ISOLATE = 0x60 -+ NL80211_ATTR_AP_SETTINGS_FLAGS = 0x135 - NL80211_ATTR_AUTH_DATA = 0x9c - NL80211_ATTR_AUTH_TYPE = 0x35 - NL80211_ATTR_BANDS = 0xef -@@ -4240,6 +4396,9 @@ const ( - NL80211_ATTR_COALESCE_RULE_DELAY = 0x1 - NL80211_ATTR_COALESCE_RULE_MAX = 0x3 - NL80211_ATTR_COALESCE_RULE_PKT_PATTERN = 0x3 -+ NL80211_ATTR_COLOR_CHANGE_COLOR = 0x130 -+ NL80211_ATTR_COLOR_CHANGE_COUNT = 0x12f -+ NL80211_ATTR_COLOR_CHANGE_ELEMS = 0x131 - NL80211_ATTR_CONN_FAILED_REASON = 0x9b - NL80211_ATTR_CONTROL_PORT = 0x44 - NL80211_ATTR_CONTROL_PORT_ETHERTYPE = 0x66 -@@ -4266,6 +4425,7 @@ const ( - NL80211_ATTR_DEVICE_AP_SME = 0x8d - NL80211_ATTR_DFS_CAC_TIME = 0x7 - NL80211_ATTR_DFS_REGION = 0x92 -+ NL80211_ATTR_DISABLE_EHT = 0x137 - NL80211_ATTR_DISABLE_HE = 0x12d - NL80211_ATTR_DISABLE_HT = 0x93 - NL80211_ATTR_DISABLE_VHT = 0xaf -@@ -4273,6 +4433,8 @@ const ( - NL80211_ATTR_DONT_WAIT_FOR_ACK = 0x8e - NL80211_ATTR_DTIM_PERIOD = 0xd - NL80211_ATTR_DURATION = 0x57 -+ NL80211_ATTR_EHT_CAPABILITY = 0x136 -+ NL80211_ATTR_EML_CAPABILITY = 0x13d - NL80211_ATTR_EXT_CAPA = 0xa9 - NL80211_ATTR_EXT_CAPA_MASK = 0xaa - NL80211_ATTR_EXTERNAL_AUTH_ACTION = 0x104 -@@ -4337,10 +4499,11 @@ const ( - NL80211_ATTR_MAC_HINT = 0xc8 - NL80211_ATTR_MAC_MASK = 0xd7 - NL80211_ATTR_MAX_AP_ASSOC_STA = 0xca -- NL80211_ATTR_MAX = 0x137 -+ NL80211_ATTR_MAX = 0x146 - NL80211_ATTR_MAX_CRIT_PROT_DURATION = 0xb4 - NL80211_ATTR_MAX_CSA_COUNTERS = 0xce - NL80211_ATTR_MAX_MATCH_SETS = 0x85 -+ NL80211_ATTR_MAX_NUM_AKM_SUITES = 0x13c - NL80211_ATTR_MAX_NUM_PMKIDS = 0x56 - NL80211_ATTR_MAX_NUM_SCAN_SSIDS = 0x2b - NL80211_ATTR_MAX_NUM_SCHED_SCAN_PLANS = 0xde -@@ -4350,6 +4513,8 @@ const ( - NL80211_ATTR_MAX_SCAN_PLAN_INTERVAL = 0xdf - NL80211_ATTR_MAX_SCAN_PLAN_ITERATIONS = 0xe0 - NL80211_ATTR_MAX_SCHED_SCAN_IE_LEN = 0x7c -+ NL80211_ATTR_MBSSID_CONFIG = 0x132 -+ NL80211_ATTR_MBSSID_ELEMS = 0x133 - NL80211_ATTR_MCAST_RATE = 0x6b - NL80211_ATTR_MDID = 0xb1 - NL80211_ATTR_MEASUREMENT_DURATION = 0xeb -@@ -4359,6 +4524,11 @@ const ( - NL80211_ATTR_MESH_PEER_AID = 0xed - NL80211_ATTR_MESH_SETUP = 0x70 - NL80211_ATTR_MGMT_SUBTYPE = 0x29 -+ NL80211_ATTR_MLD_ADDR = 0x13a -+ NL80211_ATTR_MLD_CAPA_AND_OPS = 0x13e -+ NL80211_ATTR_MLO_LINK_ID = 0x139 -+ NL80211_ATTR_MLO_LINKS = 0x138 -+ NL80211_ATTR_MLO_SUPPORT = 0x13b - NL80211_ATTR_MNTR_FLAGS = 0x17 - NL80211_ATTR_MPATH_INFO = 0x1b - NL80211_ATTR_MPATH_NEXT_HOP = 0x1a -@@ -4371,6 +4541,7 @@ const ( - NL80211_ATTR_NETNS_FD = 0xdb - NL80211_ATTR_NOACK_MAP = 0x95 - NL80211_ATTR_NSS = 0x106 -+ NL80211_ATTR_OBSS_COLOR_BITMAP = 0x12e - NL80211_ATTR_OFFCHANNEL_TX_OK = 0x6c - NL80211_ATTR_OPER_CLASS = 0xd6 - NL80211_ATTR_OPMODE_NOTIF = 0xc2 -@@ -4397,6 +4568,7 @@ const ( - NL80211_ATTR_PROTOCOL_FEATURES = 0xad - NL80211_ATTR_PS_STATE = 0x5d - NL80211_ATTR_QOS_MAP = 0xc7 -+ NL80211_ATTR_RADAR_BACKGROUND = 0x134 - NL80211_ATTR_RADAR_EVENT = 0xa8 - NL80211_ATTR_REASON_CODE = 0x36 - NL80211_ATTR_RECEIVE_MULTICAST = 0x121 -@@ -4412,6 +4584,7 @@ const ( - NL80211_ATTR_RESP_IE = 0x4e - NL80211_ATTR_ROAM_SUPPORT = 0x83 - NL80211_ATTR_RX_FRAME_TYPES = 0x64 -+ NL80211_ATTR_RX_HW_TIMESTAMP = 0x140 - NL80211_ATTR_RXMGMT_FLAGS = 0xbc - NL80211_ATTR_RX_SIGNAL_DBM = 0x97 - NL80211_ATTR_S1G_CAPABILITY = 0x128 -@@ -4469,6 +4642,7 @@ const ( - NL80211_ATTR_SUPPORT_MESH_AUTH = 0x73 - NL80211_ATTR_SURVEY_INFO = 0x54 - NL80211_ATTR_SURVEY_RADIO_STATS = 0xda -+ NL80211_ATTR_TD_BITMAP = 0x141 - NL80211_ATTR_TDLS_ACTION = 0x88 - NL80211_ATTR_TDLS_DIALOG_TOKEN = 0x89 - NL80211_ATTR_TDLS_EXTERNAL_SETUP = 0x8c -@@ -4484,6 +4658,7 @@ const ( - NL80211_ATTR_TSID = 0xd2 - NL80211_ATTR_TWT_RESPONDER = 0x116 - NL80211_ATTR_TX_FRAME_TYPES = 0x63 -+ NL80211_ATTR_TX_HW_TIMESTAMP = 0x13f - NL80211_ATTR_TX_NO_CCK_RATE = 0x87 - NL80211_ATTR_TXQ_LIMIT = 0x10a - NL80211_ATTR_TXQ_MEMORY_LIMIT = 0x10b -@@ -4553,10 +4728,14 @@ const ( - NL80211_BAND_ATTR_HT_CAPA = 0x4 - NL80211_BAND_ATTR_HT_MCS_SET = 0x3 - NL80211_BAND_ATTR_IFTYPE_DATA = 0x9 -- NL80211_BAND_ATTR_MAX = 0xb -+ NL80211_BAND_ATTR_MAX = 0xd - NL80211_BAND_ATTR_RATES = 0x2 - NL80211_BAND_ATTR_VHT_CAPA = 0x8 - NL80211_BAND_ATTR_VHT_MCS_SET = 0x7 -+ NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MAC = 0x8 -+ NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MCS_SET = 0xa -+ NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PHY = 0x9 -+ NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PPE = 0xb - NL80211_BAND_IFTYPE_ATTR_HE_6GHZ_CAPA = 0x6 - NL80211_BAND_IFTYPE_ATTR_HE_CAP_MAC = 0x2 - NL80211_BAND_IFTYPE_ATTR_HE_CAP_MCS_SET = 0x4 -@@ -4564,6 +4743,8 @@ const ( - NL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE = 0x5 - NL80211_BAND_IFTYPE_ATTR_IFTYPES = 0x1 - NL80211_BAND_IFTYPE_ATTR_MAX = 0xb -+ NL80211_BAND_IFTYPE_ATTR_VENDOR_ELEMS = 0x7 -+ NL80211_BAND_LC = 0x5 - NL80211_BAND_S1GHZ = 0x4 - NL80211_BITRATE_ATTR_2GHZ_SHORTPREAMBLE = 0x2 - NL80211_BITRATE_ATTR_MAX = 0x2 -@@ -4584,7 +4765,9 @@ const ( - NL80211_BSS_FREQUENCY_OFFSET = 0x14 - NL80211_BSS_INFORMATION_ELEMENTS = 0x6 - NL80211_BSS_LAST_SEEN_BOOTTIME = 0xf -- NL80211_BSS_MAX = 0x14 -+ NL80211_BSS_MAX = 0x16 -+ NL80211_BSS_MLD_ADDR = 0x16 -+ NL80211_BSS_MLO_LINK_ID = 0x15 - NL80211_BSS_PAD = 0x10 - NL80211_BSS_PARENT_BSSID = 0x12 - NL80211_BSS_PARENT_TSF = 0x11 -@@ -4612,6 +4795,7 @@ const ( - NL80211_CHAN_WIDTH_20 = 0x1 - NL80211_CHAN_WIDTH_20_NOHT = 0x0 - NL80211_CHAN_WIDTH_2 = 0x9 -+ NL80211_CHAN_WIDTH_320 = 0xd - NL80211_CHAN_WIDTH_40 = 0x2 - NL80211_CHAN_WIDTH_4 = 0xa - NL80211_CHAN_WIDTH_5 = 0x6 -@@ -4621,8 +4805,11 @@ const ( - NL80211_CMD_ABORT_SCAN = 0x72 - NL80211_CMD_ACTION = 0x3b - NL80211_CMD_ACTION_TX_STATUS = 0x3c -+ NL80211_CMD_ADD_LINK = 0x94 -+ NL80211_CMD_ADD_LINK_STA = 0x96 - NL80211_CMD_ADD_NAN_FUNCTION = 0x75 - NL80211_CMD_ADD_TX_TS = 0x69 -+ NL80211_CMD_ASSOC_COMEBACK = 0x93 - NL80211_CMD_ASSOCIATE = 0x26 - NL80211_CMD_AUTHENTICATE = 0x25 - NL80211_CMD_CANCEL_REMAIN_ON_CHANNEL = 0x38 -@@ -4630,6 +4817,10 @@ const ( - NL80211_CMD_CHANNEL_SWITCH = 0x66 - NL80211_CMD_CH_SWITCH_NOTIFY = 0x58 - NL80211_CMD_CH_SWITCH_STARTED_NOTIFY = 0x6e -+ NL80211_CMD_COLOR_CHANGE_ABORTED = 0x90 -+ NL80211_CMD_COLOR_CHANGE_COMPLETED = 0x91 -+ NL80211_CMD_COLOR_CHANGE_REQUEST = 0x8e -+ NL80211_CMD_COLOR_CHANGE_STARTED = 0x8f - NL80211_CMD_CONNECT = 0x2e - NL80211_CMD_CONN_FAILED = 0x5b - NL80211_CMD_CONTROL_PORT_FRAME = 0x81 -@@ -4678,8 +4869,9 @@ const ( - NL80211_CMD_LEAVE_IBSS = 0x2c - NL80211_CMD_LEAVE_MESH = 0x45 - NL80211_CMD_LEAVE_OCB = 0x6d -- NL80211_CMD_MAX = 0x93 -+ NL80211_CMD_MAX = 0x9a - NL80211_CMD_MICHAEL_MIC_FAILURE = 0x29 -+ NL80211_CMD_MODIFY_LINK_STA = 0x97 - NL80211_CMD_NAN_MATCH = 0x78 - NL80211_CMD_NEW_BEACON = 0xf - NL80211_CMD_NEW_INTERFACE = 0x7 -@@ -4692,6 +4884,7 @@ const ( - NL80211_CMD_NEW_WIPHY = 0x3 - NL80211_CMD_NOTIFY_CQM = 0x40 - NL80211_CMD_NOTIFY_RADAR = 0x86 -+ NL80211_CMD_OBSS_COLOR_COLLISION = 0x8d - NL80211_CMD_PEER_MEASUREMENT_COMPLETE = 0x85 - NL80211_CMD_PEER_MEASUREMENT_RESULT = 0x84 - NL80211_CMD_PEER_MEASUREMENT_START = 0x83 -@@ -4707,6 +4900,8 @@ const ( - NL80211_CMD_REGISTER_FRAME = 0x3a - NL80211_CMD_RELOAD_REGDB = 0x7e - NL80211_CMD_REMAIN_ON_CHANNEL = 0x37 -+ NL80211_CMD_REMOVE_LINK = 0x95 -+ NL80211_CMD_REMOVE_LINK_STA = 0x98 - NL80211_CMD_REQ_SET_REG = 0x1b - NL80211_CMD_ROAM = 0x2f - NL80211_CMD_SCAN_ABORTED = 0x23 -@@ -4717,6 +4912,7 @@ const ( - NL80211_CMD_SET_CHANNEL = 0x41 - NL80211_CMD_SET_COALESCE = 0x65 - NL80211_CMD_SET_CQM = 0x3f -+ NL80211_CMD_SET_FILS_AAD = 0x92 - NL80211_CMD_SET_INTERFACE = 0x6 - NL80211_CMD_SET_KEY = 0xa - NL80211_CMD_SET_MAC_ACL = 0x5d -@@ -4791,6 +4987,8 @@ const ( - NL80211_EDMG_BW_CONFIG_MIN = 0x4 - NL80211_EDMG_CHANNELS_MAX = 0x3c - NL80211_EDMG_CHANNELS_MIN = 0x1 -+ NL80211_EHT_MAX_CAPABILITY_LEN = 0x33 -+ NL80211_EHT_MIN_CAPABILITY_LEN = 0xd - NL80211_EXTERNAL_AUTH_ABORT = 0x1 - NL80211_EXTERNAL_AUTH_START = 0x0 - NL80211_EXT_FEATURE_4WAY_HANDSHAKE_AP_PSK = 0x32 -@@ -4807,6 +5005,7 @@ const ( - NL80211_EXT_FEATURE_BEACON_RATE_HT = 0x7 - NL80211_EXT_FEATURE_BEACON_RATE_LEGACY = 0x6 - NL80211_EXT_FEATURE_BEACON_RATE_VHT = 0x8 -+ NL80211_EXT_FEATURE_BSS_COLOR = 0x3a - NL80211_EXT_FEATURE_BSS_PARENT_TSF = 0x4 - NL80211_EXT_FEATURE_CAN_REPLACE_PTK0 = 0x1f - NL80211_EXT_FEATURE_CONTROL_PORT_NO_PREAUTH = 0x2a -@@ -4818,6 +5017,7 @@ const ( - NL80211_EXT_FEATURE_DFS_OFFLOAD = 0x19 - NL80211_EXT_FEATURE_ENABLE_FTM_RESPONDER = 0x20 - NL80211_EXT_FEATURE_EXT_KEY_ID = 0x24 -+ NL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD = 0x3b - NL80211_EXT_FEATURE_FILS_DISCOVERY = 0x34 - NL80211_EXT_FEATURE_FILS_MAX_CHANNEL_TIME = 0x11 - NL80211_EXT_FEATURE_FILS_SK_OFFLOAD = 0xe -@@ -4833,8 +5033,10 @@ const ( - NL80211_EXT_FEATURE_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION = 0x14 - NL80211_EXT_FEATURE_OCE_PROBE_REQ_HIGH_TX_RATE = 0x13 - NL80211_EXT_FEATURE_OPERATING_CHANNEL_VALIDATION = 0x31 -+ NL80211_EXT_FEATURE_POWERED_ADDR_CHANGE = 0x3d - NL80211_EXT_FEATURE_PROTECTED_TWT = 0x2b - NL80211_EXT_FEATURE_PROT_RANGE_NEGO_AND_MEASURE = 0x39 -+ NL80211_EXT_FEATURE_RADAR_BACKGROUND = 0x3c - NL80211_EXT_FEATURE_RRM = 0x1 - NL80211_EXT_FEATURE_SAE_OFFLOAD_AP = 0x33 - NL80211_EXT_FEATURE_SAE_OFFLOAD = 0x26 -@@ -4906,7 +5108,9 @@ const ( - NL80211_FREQUENCY_ATTR_NO_10MHZ = 0x11 - NL80211_FREQUENCY_ATTR_NO_160MHZ = 0xc - NL80211_FREQUENCY_ATTR_NO_20MHZ = 0x10 -+ NL80211_FREQUENCY_ATTR_NO_320MHZ = 0x1a - NL80211_FREQUENCY_ATTR_NO_80MHZ = 0xb -+ NL80211_FREQUENCY_ATTR_NO_EHT = 0x1b - NL80211_FREQUENCY_ATTR_NO_HE = 0x13 - NL80211_FREQUENCY_ATTR_NO_HT40_MINUS = 0x9 - NL80211_FREQUENCY_ATTR_NO_HT40_PLUS = 0xa -@@ -5006,6 +5210,12 @@ const ( - NL80211_MAX_SUPP_HT_RATES = 0x4d - NL80211_MAX_SUPP_RATES = 0x20 - NL80211_MAX_SUPP_REG_RULES = 0x80 -+ NL80211_MBSSID_CONFIG_ATTR_EMA = 0x5 -+ NL80211_MBSSID_CONFIG_ATTR_INDEX = 0x3 -+ NL80211_MBSSID_CONFIG_ATTR_MAX = 0x5 -+ NL80211_MBSSID_CONFIG_ATTR_MAX_EMA_PROFILE_PERIODICITY = 0x2 -+ NL80211_MBSSID_CONFIG_ATTR_MAX_INTERFACES = 0x1 -+ NL80211_MBSSID_CONFIG_ATTR_TX_IFINDEX = 0x4 - NL80211_MESHCONF_ATTR_MAX = 0x1f - NL80211_MESHCONF_AUTO_OPEN_PLINKS = 0x7 - NL80211_MESHCONF_AWAKE_WINDOW = 0x1b -@@ -5168,6 +5378,7 @@ const ( - NL80211_PMSR_FTM_FAILURE_UNSPECIFIED = 0x0 - NL80211_PMSR_FTM_FAILURE_WRONG_CHANNEL = 0x3 - NL80211_PMSR_FTM_REQ_ATTR_ASAP = 0x1 -+ NL80211_PMSR_FTM_REQ_ATTR_BSS_COLOR = 0xd - NL80211_PMSR_FTM_REQ_ATTR_BURST_DURATION = 0x5 - NL80211_PMSR_FTM_REQ_ATTR_BURST_PERIOD = 0x4 - NL80211_PMSR_FTM_REQ_ATTR_FTMS_PER_BURST = 0x6 -@@ -5244,12 +5455,36 @@ const ( - NL80211_RADAR_PRE_CAC_EXPIRED = 0x4 - NL80211_RATE_INFO_10_MHZ_WIDTH = 0xb - NL80211_RATE_INFO_160_MHZ_WIDTH = 0xa -+ NL80211_RATE_INFO_320_MHZ_WIDTH = 0x12 - NL80211_RATE_INFO_40_MHZ_WIDTH = 0x3 - NL80211_RATE_INFO_5_MHZ_WIDTH = 0xc - NL80211_RATE_INFO_80_MHZ_WIDTH = 0x8 - NL80211_RATE_INFO_80P80_MHZ_WIDTH = 0x9 - NL80211_RATE_INFO_BITRATE32 = 0x5 - NL80211_RATE_INFO_BITRATE = 0x1 -+ NL80211_RATE_INFO_EHT_GI_0_8 = 0x0 -+ NL80211_RATE_INFO_EHT_GI_1_6 = 0x1 -+ NL80211_RATE_INFO_EHT_GI_3_2 = 0x2 -+ NL80211_RATE_INFO_EHT_GI = 0x15 -+ NL80211_RATE_INFO_EHT_MCS = 0x13 -+ NL80211_RATE_INFO_EHT_NSS = 0x14 -+ NL80211_RATE_INFO_EHT_RU_ALLOC_106 = 0x3 -+ NL80211_RATE_INFO_EHT_RU_ALLOC_106P26 = 0x4 -+ NL80211_RATE_INFO_EHT_RU_ALLOC_242 = 0x5 -+ NL80211_RATE_INFO_EHT_RU_ALLOC_26 = 0x0 -+ NL80211_RATE_INFO_EHT_RU_ALLOC_2x996 = 0xb -+ NL80211_RATE_INFO_EHT_RU_ALLOC_2x996P484 = 0xc -+ NL80211_RATE_INFO_EHT_RU_ALLOC_3x996 = 0xd -+ NL80211_RATE_INFO_EHT_RU_ALLOC_3x996P484 = 0xe -+ NL80211_RATE_INFO_EHT_RU_ALLOC_484 = 0x6 -+ NL80211_RATE_INFO_EHT_RU_ALLOC_484P242 = 0x7 -+ NL80211_RATE_INFO_EHT_RU_ALLOC_4x996 = 0xf -+ NL80211_RATE_INFO_EHT_RU_ALLOC_52 = 0x1 -+ NL80211_RATE_INFO_EHT_RU_ALLOC_52P26 = 0x2 -+ NL80211_RATE_INFO_EHT_RU_ALLOC_996 = 0x8 -+ NL80211_RATE_INFO_EHT_RU_ALLOC_996P484 = 0x9 -+ NL80211_RATE_INFO_EHT_RU_ALLOC_996P484P242 = 0xa -+ NL80211_RATE_INFO_EHT_RU_ALLOC = 0x16 - NL80211_RATE_INFO_HE_1XLTF = 0x0 - NL80211_RATE_INFO_HE_2XLTF = 0x1 - NL80211_RATE_INFO_HE_4XLTF = 0x2 -@@ -5268,7 +5503,7 @@ const ( - NL80211_RATE_INFO_HE_RU_ALLOC_52 = 0x1 - NL80211_RATE_INFO_HE_RU_ALLOC_996 = 0x5 - NL80211_RATE_INFO_HE_RU_ALLOC = 0x11 -- NL80211_RATE_INFO_MAX = 0x16 -+ NL80211_RATE_INFO_MAX = 0x1d - NL80211_RATE_INFO_MCS = 0x2 - NL80211_RATE_INFO_SHORT_GI = 0x4 - NL80211_RATE_INFO_VHT_MCS = 0x6 -@@ -5292,6 +5527,7 @@ const ( - NL80211_RRF_GO_CONCURRENT = 0x1000 - NL80211_RRF_IR_CONCURRENT = 0x1000 - NL80211_RRF_NO_160MHZ = 0x10000 -+ NL80211_RRF_NO_320MHZ = 0x40000 - NL80211_RRF_NO_80MHZ = 0x8000 - NL80211_RRF_NO_CCK = 0x2 - NL80211_RRF_NO_HE = 0x20000 -@@ -5607,3 +5843,43 @@ const ( - AUDIT_NLGRP_NONE = 0x0 - AUDIT_NLGRP_READLOG = 0x1 - ) -+ -+const ( -+ TUN_F_CSUM = 0x1 -+ TUN_F_TSO4 = 0x2 -+ TUN_F_TSO6 = 0x4 -+ TUN_F_TSO_ECN = 0x8 -+ TUN_F_UFO = 0x10 -+ TUN_F_USO4 = 0x20 -+ TUN_F_USO6 = 0x40 -+) -+ -+const ( -+ VIRTIO_NET_HDR_F_NEEDS_CSUM = 0x1 -+ VIRTIO_NET_HDR_F_DATA_VALID = 0x2 -+ VIRTIO_NET_HDR_F_RSC_INFO = 0x4 -+) -+ -+const ( -+ VIRTIO_NET_HDR_GSO_NONE = 0x0 -+ VIRTIO_NET_HDR_GSO_TCPV4 = 0x1 -+ VIRTIO_NET_HDR_GSO_UDP = 0x3 -+ VIRTIO_NET_HDR_GSO_TCPV6 = 0x4 -+ VIRTIO_NET_HDR_GSO_UDP_L4 = 0x5 -+ VIRTIO_NET_HDR_GSO_ECN = 0x80 -+) -+ -+type SchedAttr struct { -+ Size uint32 -+ Policy uint32 -+ Flags uint64 -+ Nice int32 -+ Priority uint32 -+ Runtime uint64 -+ Deadline uint64 -+ Period uint64 -+ Util_min uint32 -+ Util_max uint32 -+} -+ -+const SizeofSchedAttr = 0x38 -diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go -old mode 100644 -new mode 100755 -index 89c516a..6d8acbc ---- a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go -+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go -@@ -337,6 +337,8 @@ type Taskstats struct { - Ac_exe_inode uint64 - Wpcopy_count uint64 - Wpcopy_delay_total uint64 -+ Irq_count uint64 -+ Irq_delay_total uint64 - } - - type cpuMask uint32 -@@ -414,7 +416,7 @@ const ( - - type SockaddrStorage struct { - Family uint16 -- _ [122]int8 -+ Data [122]byte - _ uint32 - } - -diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go -old mode 100644 -new mode 100755 -index 62b4fb2..59293c6 ---- a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go -+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go -@@ -350,6 +350,8 @@ type Taskstats struct { - Ac_exe_inode uint64 - Wpcopy_count uint64 - Wpcopy_delay_total uint64 -+ Irq_count uint64 -+ Irq_delay_total uint64 - } - - type cpuMask uint64 -@@ -427,7 +429,7 @@ const ( - - type SockaddrStorage struct { - Family uint16 -- _ [118]int8 -+ Data [118]byte - _ uint64 - } - -diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go -old mode 100644 -new mode 100755 -index e86b358..40cfa38 ---- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go -+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go -@@ -328,6 +328,8 @@ type Taskstats struct { - Ac_exe_inode uint64 - Wpcopy_count uint64 - Wpcopy_delay_total uint64 -+ Irq_count uint64 -+ Irq_delay_total uint64 - } - - type cpuMask uint32 -@@ -405,7 +407,7 @@ const ( - - type SockaddrStorage struct { - Family uint16 -- _ [122]uint8 -+ Data [122]byte - _ uint32 - } - -diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go -old mode 100644 -new mode 100755 -index 6c6be4c..055bc42 ---- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go -+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go -@@ -329,6 +329,8 @@ type Taskstats struct { - Ac_exe_inode uint64 - Wpcopy_count uint64 - Wpcopy_delay_total uint64 -+ Irq_count uint64 -+ Irq_delay_total uint64 - } - - type cpuMask uint64 -@@ -406,7 +408,7 @@ const ( - - type SockaddrStorage struct { - Family uint16 -- _ [118]int8 -+ Data [118]byte - _ uint64 - } - -diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go -old mode 100644 -new mode 100755 -index 4982ea3..f28affb ---- a/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go -+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go -@@ -330,6 +330,8 @@ type Taskstats struct { - Ac_exe_inode uint64 - Wpcopy_count uint64 - Wpcopy_delay_total uint64 -+ Irq_count uint64 -+ Irq_delay_total uint64 - } - - type cpuMask uint64 -@@ -407,7 +409,7 @@ const ( - - type SockaddrStorage struct { - Family uint16 -- _ [118]int8 -+ Data [118]byte - _ uint64 - } - -diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go -old mode 100644 -new mode 100755 -index 173141a..9d71e7c ---- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go -+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go -@@ -333,6 +333,8 @@ type Taskstats struct { - Ac_exe_inode uint64 - Wpcopy_count uint64 - Wpcopy_delay_total uint64 -+ Irq_count uint64 -+ Irq_delay_total uint64 - } - - type cpuMask uint32 -@@ -410,7 +412,7 @@ const ( - - type SockaddrStorage struct { - Family uint16 -- _ [122]int8 -+ Data [122]byte - _ uint32 - } - -diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go -old mode 100644 -new mode 100755 -index 93ae4c5..fd5ccd3 ---- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go -+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go -@@ -332,6 +332,8 @@ type Taskstats struct { - Ac_exe_inode uint64 - Wpcopy_count uint64 - Wpcopy_delay_total uint64 -+ Irq_count uint64 -+ Irq_delay_total uint64 - } - - type cpuMask uint64 -@@ -409,7 +411,7 @@ const ( - - type SockaddrStorage struct { - Family uint16 -- _ [118]int8 -+ Data [118]byte - _ uint64 - } - -diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go -old mode 100644 -new mode 100755 -index 4e4e510..7704de7 ---- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go -+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go -@@ -332,6 +332,8 @@ type Taskstats struct { - Ac_exe_inode uint64 - Wpcopy_count uint64 - Wpcopy_delay_total uint64 -+ Irq_count uint64 -+ Irq_delay_total uint64 - } - - type cpuMask uint64 -@@ -409,7 +411,7 @@ const ( - - type SockaddrStorage struct { - Family uint16 -- _ [118]int8 -+ Data [118]byte - _ uint64 - } - -diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go -old mode 100644 -new mode 100755 -index 3f5ba01..df00b87 ---- a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go -+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go -@@ -333,6 +333,8 @@ type Taskstats struct { - Ac_exe_inode uint64 - Wpcopy_count uint64 - Wpcopy_delay_total uint64 -+ Irq_count uint64 -+ Irq_delay_total uint64 - } - - type cpuMask uint32 -@@ -410,7 +412,7 @@ const ( - - type SockaddrStorage struct { - Family uint16 -- _ [122]int8 -+ Data [122]byte - _ uint32 - } - -diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go -old mode 100644 -new mode 100755 -index 71dfe7c..0942840 ---- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go -+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go -@@ -340,6 +340,8 @@ type Taskstats struct { - Ac_exe_inode uint64 - Wpcopy_count uint64 - Wpcopy_delay_total uint64 -+ Irq_count uint64 -+ Irq_delay_total uint64 - } - - type cpuMask uint32 -@@ -417,7 +419,7 @@ const ( - - type SockaddrStorage struct { - Family uint16 -- _ [122]uint8 -+ Data [122]byte - _ uint32 - } - -diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go -old mode 100644 -new mode 100755 -index 3a2b7f0..0348743 ---- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go -+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go -@@ -339,6 +339,8 @@ type Taskstats struct { - Ac_exe_inode uint64 - Wpcopy_count uint64 - Wpcopy_delay_total uint64 -+ Irq_count uint64 -+ Irq_delay_total uint64 - } - - type cpuMask uint64 -@@ -416,7 +418,7 @@ const ( - - type SockaddrStorage struct { - Family uint16 -- _ [118]uint8 -+ Data [118]byte - _ uint64 - } - -diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go -old mode 100644 -new mode 100755 -index a52d627..bad0670 ---- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go -+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go -@@ -339,6 +339,8 @@ type Taskstats struct { - Ac_exe_inode uint64 - Wpcopy_count uint64 - Wpcopy_delay_total uint64 -+ Irq_count uint64 -+ Irq_delay_total uint64 - } - - type cpuMask uint64 -@@ -416,7 +418,7 @@ const ( - - type SockaddrStorage struct { - Family uint16 -- _ [118]uint8 -+ Data [118]byte - _ uint64 - } - -diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go -old mode 100644 -new mode 100755 -index dfc007d..1b4c97c ---- a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go -+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go -@@ -357,6 +357,8 @@ type Taskstats struct { - Ac_exe_inode uint64 - Wpcopy_count uint64 - Wpcopy_delay_total uint64 -+ Irq_count uint64 -+ Irq_delay_total uint64 - } - - type cpuMask uint64 -@@ -434,7 +436,7 @@ const ( - - type SockaddrStorage struct { - Family uint16 -- _ [118]uint8 -+ Data [118]byte - _ uint64 - } - -@@ -716,3 +718,30 @@ type SysvShmDesc struct { - _ uint64 - _ uint64 - } -+ -+type RISCVHWProbePairs struct { -+ Key int64 -+ Value uint64 -+} -+ -+const ( -+ RISCV_HWPROBE_KEY_MVENDORID = 0x0 -+ RISCV_HWPROBE_KEY_MARCHID = 0x1 -+ RISCV_HWPROBE_KEY_MIMPID = 0x2 -+ RISCV_HWPROBE_KEY_BASE_BEHAVIOR = 0x3 -+ RISCV_HWPROBE_BASE_BEHAVIOR_IMA = 0x1 -+ RISCV_HWPROBE_KEY_IMA_EXT_0 = 0x4 -+ RISCV_HWPROBE_IMA_FD = 0x1 -+ RISCV_HWPROBE_IMA_C = 0x2 -+ RISCV_HWPROBE_IMA_V = 0x4 -+ RISCV_HWPROBE_EXT_ZBA = 0x8 -+ RISCV_HWPROBE_EXT_ZBB = 0x10 -+ RISCV_HWPROBE_EXT_ZBS = 0x20 -+ RISCV_HWPROBE_KEY_CPUPERF_0 = 0x5 -+ RISCV_HWPROBE_MISALIGNED_UNKNOWN = 0x0 -+ RISCV_HWPROBE_MISALIGNED_EMULATED = 0x1 -+ RISCV_HWPROBE_MISALIGNED_SLOW = 0x2 -+ RISCV_HWPROBE_MISALIGNED_FAST = 0x3 -+ RISCV_HWPROBE_MISALIGNED_UNSUPPORTED = 0x4 -+ RISCV_HWPROBE_MISALIGNED_MASK = 0x7 -+) -diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go -old mode 100644 -new mode 100755 -index b53cb91..aa268d0 ---- a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go -+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go -@@ -352,6 +352,8 @@ type Taskstats struct { - Ac_exe_inode uint64 - Wpcopy_count uint64 - Wpcopy_delay_total uint64 -+ Irq_count uint64 -+ Irq_delay_total uint64 - } - - type cpuMask uint64 -@@ -429,7 +431,7 @@ const ( - - type SockaddrStorage struct { - Family uint16 -- _ [118]int8 -+ Data [118]byte - _ uint64 - } - -diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go -old mode 100644 -new mode 100755 -index fe0aa35..444045b ---- a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go -+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go -@@ -334,6 +334,8 @@ type Taskstats struct { - Ac_exe_inode uint64 - Wpcopy_count uint64 - Wpcopy_delay_total uint64 -+ Irq_count uint64 -+ Irq_delay_total uint64 - } - - type cpuMask uint64 -@@ -411,7 +413,7 @@ const ( - - type SockaddrStorage struct { - Family uint16 -- _ [118]int8 -+ Data [118]byte - _ uint64 - } - -diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go -old mode 100644 -new mode 100755 -index 2fd2060..9bc4c8f ---- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go -+++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go -@@ -491,6 +491,90 @@ type Utsname struct { - Machine [256]byte - } - -+const SizeofUvmexp = 0x278 -+ -+type Uvmexp struct { -+ Pagesize int64 -+ Pagemask int64 -+ Pageshift int64 -+ Npages int64 -+ Free int64 -+ Active int64 -+ Inactive int64 -+ Paging int64 -+ Wired int64 -+ Zeropages int64 -+ Reserve_pagedaemon int64 -+ Reserve_kernel int64 -+ Freemin int64 -+ Freetarg int64 -+ Inactarg int64 -+ Wiredmax int64 -+ Nswapdev int64 -+ Swpages int64 -+ Swpginuse int64 -+ Swpgonly int64 -+ Nswget int64 -+ Unused1 int64 -+ Cpuhit int64 -+ Cpumiss int64 -+ Faults int64 -+ Traps int64 -+ Intrs int64 -+ Swtch int64 -+ Softs int64 -+ Syscalls int64 -+ Pageins int64 -+ Swapins int64 -+ Swapouts int64 -+ Pgswapin int64 -+ Pgswapout int64 -+ Forks int64 -+ Forks_ppwait int64 -+ Forks_sharevm int64 -+ Pga_zerohit int64 -+ Pga_zeromiss int64 -+ Zeroaborts int64 -+ Fltnoram int64 -+ Fltnoanon int64 -+ Fltpgwait int64 -+ Fltpgrele int64 -+ Fltrelck int64 -+ Fltrelckok int64 -+ Fltanget int64 -+ Fltanretry int64 -+ Fltamcopy int64 -+ Fltnamap int64 -+ Fltnomap int64 -+ Fltlget int64 -+ Fltget int64 -+ Flt_anon int64 -+ Flt_acow int64 -+ Flt_obj int64 -+ Flt_prcopy int64 -+ Flt_przero int64 -+ Pdwoke int64 -+ Pdrevs int64 -+ Unused4 int64 -+ Pdfreed int64 -+ Pdscans int64 -+ Pdanscan int64 -+ Pdobscan int64 -+ Pdreact int64 -+ Pdbusy int64 -+ Pdpageouts int64 -+ Pdpending int64 -+ Pddeact int64 -+ Anonpages int64 -+ Filepages int64 -+ Execpages int64 -+ Colorhit int64 -+ Colormiss int64 -+ Ncolors int64 -+ Bootpages int64 -+ Poolpages int64 -+} -+ - const SizeofClockinfo = 0x14 - - type Clockinfo struct { -diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go -old mode 100644 -new mode 100755 -index 6a5a1a8..bb05f65 ---- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go -+++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go -@@ -499,6 +499,90 @@ type Utsname struct { - Machine [256]byte - } - -+const SizeofUvmexp = 0x278 -+ -+type Uvmexp struct { -+ Pagesize int64 -+ Pagemask int64 -+ Pageshift int64 -+ Npages int64 -+ Free int64 -+ Active int64 -+ Inactive int64 -+ Paging int64 -+ Wired int64 -+ Zeropages int64 -+ Reserve_pagedaemon int64 -+ Reserve_kernel int64 -+ Freemin int64 -+ Freetarg int64 -+ Inactarg int64 -+ Wiredmax int64 -+ Nswapdev int64 -+ Swpages int64 -+ Swpginuse int64 -+ Swpgonly int64 -+ Nswget int64 -+ Unused1 int64 -+ Cpuhit int64 -+ Cpumiss int64 -+ Faults int64 -+ Traps int64 -+ Intrs int64 -+ Swtch int64 -+ Softs int64 -+ Syscalls int64 -+ Pageins int64 -+ Swapins int64 -+ Swapouts int64 -+ Pgswapin int64 -+ Pgswapout int64 -+ Forks int64 -+ Forks_ppwait int64 -+ Forks_sharevm int64 -+ Pga_zerohit int64 -+ Pga_zeromiss int64 -+ Zeroaborts int64 -+ Fltnoram int64 -+ Fltnoanon int64 -+ Fltpgwait int64 -+ Fltpgrele int64 -+ Fltrelck int64 -+ Fltrelckok int64 -+ Fltanget int64 -+ Fltanretry int64 -+ Fltamcopy int64 -+ Fltnamap int64 -+ Fltnomap int64 -+ Fltlget int64 -+ Fltget int64 -+ Flt_anon int64 -+ Flt_acow int64 -+ Flt_obj int64 -+ Flt_prcopy int64 -+ Flt_przero int64 -+ Pdwoke int64 -+ Pdrevs int64 -+ Unused4 int64 -+ Pdfreed int64 -+ Pdscans int64 -+ Pdanscan int64 -+ Pdobscan int64 -+ Pdreact int64 -+ Pdbusy int64 -+ Pdpageouts int64 -+ Pdpending int64 -+ Pddeact int64 -+ Anonpages int64 -+ Filepages int64 -+ Execpages int64 -+ Colorhit int64 -+ Colormiss int64 -+ Ncolors int64 -+ Bootpages int64 -+ Poolpages int64 -+} -+ - const SizeofClockinfo = 0x14 - - type Clockinfo struct { -diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go -old mode 100644 -new mode 100755 -index 84cc8d0..db40e3a ---- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go -+++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go -@@ -496,6 +496,90 @@ type Utsname struct { - Machine [256]byte - } - -+const SizeofUvmexp = 0x278 -+ -+type Uvmexp struct { -+ Pagesize int64 -+ Pagemask int64 -+ Pageshift int64 -+ Npages int64 -+ Free int64 -+ Active int64 -+ Inactive int64 -+ Paging int64 -+ Wired int64 -+ Zeropages int64 -+ Reserve_pagedaemon int64 -+ Reserve_kernel int64 -+ Freemin int64 -+ Freetarg int64 -+ Inactarg int64 -+ Wiredmax int64 -+ Nswapdev int64 -+ Swpages int64 -+ Swpginuse int64 -+ Swpgonly int64 -+ Nswget int64 -+ Unused1 int64 -+ Cpuhit int64 -+ Cpumiss int64 -+ Faults int64 -+ Traps int64 -+ Intrs int64 -+ Swtch int64 -+ Softs int64 -+ Syscalls int64 -+ Pageins int64 -+ Swapins int64 -+ Swapouts int64 -+ Pgswapin int64 -+ Pgswapout int64 -+ Forks int64 -+ Forks_ppwait int64 -+ Forks_sharevm int64 -+ Pga_zerohit int64 -+ Pga_zeromiss int64 -+ Zeroaborts int64 -+ Fltnoram int64 -+ Fltnoanon int64 -+ Fltpgwait int64 -+ Fltpgrele int64 -+ Fltrelck int64 -+ Fltrelckok int64 -+ Fltanget int64 -+ Fltanretry int64 -+ Fltamcopy int64 -+ Fltnamap int64 -+ Fltnomap int64 -+ Fltlget int64 -+ Fltget int64 -+ Flt_anon int64 -+ Flt_acow int64 -+ Flt_obj int64 -+ Flt_prcopy int64 -+ Flt_przero int64 -+ Pdwoke int64 -+ Pdrevs int64 -+ Unused4 int64 -+ Pdfreed int64 -+ Pdscans int64 -+ Pdanscan int64 -+ Pdobscan int64 -+ Pdreact int64 -+ Pdbusy int64 -+ Pdpageouts int64 -+ Pdpending int64 -+ Pddeact int64 -+ Anonpages int64 -+ Filepages int64 -+ Execpages int64 -+ Colorhit int64 -+ Colormiss int64 -+ Ncolors int64 -+ Bootpages int64 -+ Poolpages int64 -+} -+ - const SizeofClockinfo = 0x14 - - type Clockinfo struct { -diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go -old mode 100644 -new mode 100755 -index c844e70..1112115 ---- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go -+++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go -@@ -499,6 +499,90 @@ type Utsname struct { - Machine [256]byte - } - -+const SizeofUvmexp = 0x278 -+ -+type Uvmexp struct { -+ Pagesize int64 -+ Pagemask int64 -+ Pageshift int64 -+ Npages int64 -+ Free int64 -+ Active int64 -+ Inactive int64 -+ Paging int64 -+ Wired int64 -+ Zeropages int64 -+ Reserve_pagedaemon int64 -+ Reserve_kernel int64 -+ Freemin int64 -+ Freetarg int64 -+ Inactarg int64 -+ Wiredmax int64 -+ Nswapdev int64 -+ Swpages int64 -+ Swpginuse int64 -+ Swpgonly int64 -+ Nswget int64 -+ Unused1 int64 -+ Cpuhit int64 -+ Cpumiss int64 -+ Faults int64 -+ Traps int64 -+ Intrs int64 -+ Swtch int64 -+ Softs int64 -+ Syscalls int64 -+ Pageins int64 -+ Swapins int64 -+ Swapouts int64 -+ Pgswapin int64 -+ Pgswapout int64 -+ Forks int64 -+ Forks_ppwait int64 -+ Forks_sharevm int64 -+ Pga_zerohit int64 -+ Pga_zeromiss int64 -+ Zeroaborts int64 -+ Fltnoram int64 -+ Fltnoanon int64 -+ Fltpgwait int64 -+ Fltpgrele int64 -+ Fltrelck int64 -+ Fltrelckok int64 -+ Fltanget int64 -+ Fltanretry int64 -+ Fltamcopy int64 -+ Fltnamap int64 -+ Fltnomap int64 -+ Fltlget int64 -+ Fltget int64 -+ Flt_anon int64 -+ Flt_acow int64 -+ Flt_obj int64 -+ Flt_prcopy int64 -+ Flt_przero int64 -+ Pdwoke int64 -+ Pdrevs int64 -+ Unused4 int64 -+ Pdfreed int64 -+ Pdscans int64 -+ Pdanscan int64 -+ Pdobscan int64 -+ Pdreact int64 -+ Pdbusy int64 -+ Pdpageouts int64 -+ Pdpending int64 -+ Pddeact int64 -+ Anonpages int64 -+ Filepages int64 -+ Execpages int64 -+ Colorhit int64 -+ Colormiss int64 -+ Ncolors int64 -+ Bootpages int64 -+ Poolpages int64 -+} -+ - const SizeofClockinfo = 0x14 - - type Clockinfo struct { -diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go -old mode 100644 -new mode 100755 -index 2ed718c..26eba23 ---- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go -+++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go -@@ -58,22 +58,22 @@ type Rlimit struct { - type _Gid_t uint32 - - type Stat_t struct { -- Mode uint32 -- Dev int32 -- Ino uint64 -- Nlink uint32 -- Uid uint32 -- Gid uint32 -- Rdev int32 -- Atim Timespec -- Mtim Timespec -- Ctim Timespec -- Size int64 -- Blocks int64 -- Blksize uint32 -- Flags uint32 -- Gen uint32 -- X__st_birthtim Timespec -+ Mode uint32 -+ Dev int32 -+ Ino uint64 -+ Nlink uint32 -+ Uid uint32 -+ Gid uint32 -+ Rdev int32 -+ Atim Timespec -+ Mtim Timespec -+ Ctim Timespec -+ Size int64 -+ Blocks int64 -+ Blksize int32 -+ Flags uint32 -+ Gen uint32 -+ _ Timespec - } - - type Statfs_t struct { -@@ -98,7 +98,7 @@ type Statfs_t struct { - F_mntonname [90]byte - F_mntfromname [90]byte - F_mntfromspec [90]byte -- Pad_cgo_0 [2]byte -+ _ [2]byte - Mount_info [160]byte - } - -@@ -111,13 +111,13 @@ type Flock_t struct { - } - - type Dirent struct { -- Fileno uint64 -- Off int64 -- Reclen uint16 -- Type uint8 -- Namlen uint8 -- X__d_padding [4]uint8 -- Name [256]int8 -+ Fileno uint64 -+ Off int64 -+ Reclen uint16 -+ Type uint8 -+ Namlen uint8 -+ _ [4]uint8 -+ Name [256]int8 - } - - type Fsid struct { -@@ -262,8 +262,8 @@ type FdSet struct { - } - - const ( -- SizeofIfMsghdr = 0xec -- SizeofIfData = 0xd4 -+ SizeofIfMsghdr = 0xa0 -+ SizeofIfData = 0x88 - SizeofIfaMsghdr = 0x18 - SizeofIfAnnounceMsghdr = 0x1a - SizeofRtMsghdr = 0x60 -@@ -292,7 +292,7 @@ type IfData struct { - Link_state uint8 - Mtu uint32 - Metric uint32 -- Pad uint32 -+ Rdomain uint32 - Baudrate uint64 - Ipackets uint64 - Ierrors uint64 -@@ -304,10 +304,10 @@ type IfData struct { - Imcasts uint64 - Omcasts uint64 - Iqdrops uint64 -+ Oqdrops uint64 - Noproto uint64 - Capabilities uint32 - Lastchange Timeval -- Mclpool [7]Mclpool - } - - type IfaMsghdr struct { -@@ -368,20 +368,12 @@ type RtMetrics struct { - Pad uint32 - } - --type Mclpool struct { -- Grown int32 -- Alive uint16 -- Hwm uint16 -- Cwm uint16 -- Lwm uint16 --} -- - const ( - SizeofBpfVersion = 0x4 - SizeofBpfStat = 0x8 - SizeofBpfProgram = 0x8 - SizeofBpfInsn = 0x8 -- SizeofBpfHdr = 0x14 -+ SizeofBpfHdr = 0x18 - ) - - type BpfVersion struct { -@@ -407,11 +399,14 @@ type BpfInsn struct { - } - - type BpfHdr struct { -- Tstamp BpfTimeval -- Caplen uint32 -- Datalen uint32 -- Hdrlen uint16 -- Pad_cgo_0 [2]byte -+ Tstamp BpfTimeval -+ Caplen uint32 -+ Datalen uint32 -+ Hdrlen uint16 -+ Ifidx uint16 -+ Flowid uint16 -+ Flags uint8 -+ Drops uint8 - } - - type BpfTimeval struct { -@@ -488,7 +483,7 @@ type Uvmexp struct { - Zeropages int32 - Reserve_pagedaemon int32 - Reserve_kernel int32 -- Anonpages int32 -+ Unused01 int32 - Vnodepages int32 - Vtextpages int32 - Freemin int32 -@@ -507,8 +502,8 @@ type Uvmexp struct { - Swpgonly int32 - Nswget int32 - Nanon int32 -- Nanonneeded int32 -- Nfreeanon int32 -+ Unused05 int32 -+ Unused06 int32 - Faults int32 - Traps int32 - Intrs int32 -@@ -516,8 +511,8 @@ type Uvmexp struct { - Softs int32 - Syscalls int32 - Pageins int32 -- Obsolete_swapins int32 -- Obsolete_swapouts int32 -+ Unused07 int32 -+ Unused08 int32 - Pgswapin int32 - Pgswapout int32 - Forks int32 -@@ -525,7 +520,7 @@ type Uvmexp struct { - Forks_sharevm int32 - Pga_zerohit int32 - Pga_zeromiss int32 -- Zeroaborts int32 -+ Unused09 int32 - Fltnoram int32 - Fltnoanon int32 - Fltnoamap int32 -@@ -557,9 +552,9 @@ type Uvmexp struct { - Pdpageouts int32 - Pdpending int32 - Pddeact int32 -- Pdreanon int32 -- Pdrevnode int32 -- Pdrevtext int32 -+ Unused11 int32 -+ Unused12 int32 -+ Unused13 int32 - Fpswtch int32 - Kmapent int32 - } -diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go -old mode 100644 -new mode 100755 -index b4fb97e..5a54798 ---- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go -+++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go -@@ -73,7 +73,6 @@ type Stat_t struct { - Blksize int32 - Flags uint32 - Gen uint32 -- _ [4]byte - _ Timespec - } - -@@ -81,7 +80,6 @@ type Statfs_t struct { - F_flags uint32 - F_bsize uint32 - F_iosize uint32 -- _ [4]byte - F_blocks uint64 - F_bfree uint64 - F_bavail int64 -@@ -200,10 +198,8 @@ type IPv6Mreq struct { - type Msghdr struct { - Name *byte - Namelen uint32 -- _ [4]byte - Iov *Iovec - Iovlen uint32 -- _ [4]byte - Control *byte - Controllen uint32 - Flags int32 -@@ -311,7 +307,6 @@ type IfData struct { - Oqdrops uint64 - Noproto uint64 - Capabilities uint32 -- _ [4]byte - Lastchange Timeval - } - -@@ -373,14 +368,12 @@ type RtMetrics struct { - Pad uint32 - } - --type Mclpool struct{} -- - const ( - SizeofBpfVersion = 0x4 - SizeofBpfStat = 0x8 - SizeofBpfProgram = 0x10 - SizeofBpfInsn = 0x8 -- SizeofBpfHdr = 0x14 -+ SizeofBpfHdr = 0x18 - ) - - type BpfVersion struct { -@@ -395,7 +388,6 @@ type BpfStat struct { - - type BpfProgram struct { - Len uint32 -- _ [4]byte - Insns *BpfInsn - } - -@@ -411,7 +403,10 @@ type BpfHdr struct { - Caplen uint32 - Datalen uint32 - Hdrlen uint16 -- _ [2]byte -+ Ifidx uint16 -+ Flowid uint16 -+ Flags uint8 -+ Drops uint8 - } - - type BpfTimeval struct { -@@ -488,7 +483,7 @@ type Uvmexp struct { - Zeropages int32 - Reserve_pagedaemon int32 - Reserve_kernel int32 -- Anonpages int32 -+ Unused01 int32 - Vnodepages int32 - Vtextpages int32 - Freemin int32 -@@ -507,8 +502,8 @@ type Uvmexp struct { - Swpgonly int32 - Nswget int32 - Nanon int32 -- Nanonneeded int32 -- Nfreeanon int32 -+ Unused05 int32 -+ Unused06 int32 - Faults int32 - Traps int32 - Intrs int32 -@@ -516,8 +511,8 @@ type Uvmexp struct { - Softs int32 - Syscalls int32 - Pageins int32 -- Obsolete_swapins int32 -- Obsolete_swapouts int32 -+ Unused07 int32 -+ Unused08 int32 - Pgswapin int32 - Pgswapout int32 - Forks int32 -@@ -525,7 +520,7 @@ type Uvmexp struct { - Forks_sharevm int32 - Pga_zerohit int32 - Pga_zeromiss int32 -- Zeroaborts int32 -+ Unused09 int32 - Fltnoram int32 - Fltnoanon int32 - Fltnoamap int32 -@@ -557,9 +552,9 @@ type Uvmexp struct { - Pdpageouts int32 - Pdpending int32 - Pddeact int32 -- Pdreanon int32 -- Pdrevnode int32 -- Pdrevtext int32 -+ Unused11 int32 -+ Unused12 int32 -+ Unused13 int32 - Fpswtch int32 - Kmapent int32 - } -diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go -old mode 100644 -new mode 100755 -index 2c46750..be58c4e ---- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go -+++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go -@@ -375,14 +375,12 @@ type RtMetrics struct { - Pad uint32 - } - --type Mclpool struct{} -- - const ( - SizeofBpfVersion = 0x4 - SizeofBpfStat = 0x8 - SizeofBpfProgram = 0x8 - SizeofBpfInsn = 0x8 -- SizeofBpfHdr = 0x14 -+ SizeofBpfHdr = 0x18 - ) - - type BpfVersion struct { -@@ -412,7 +410,10 @@ type BpfHdr struct { - Caplen uint32 - Datalen uint32 - Hdrlen uint16 -- _ [2]byte -+ Ifidx uint16 -+ Flowid uint16 -+ Flags uint8 -+ Drops uint8 - } - - type BpfTimeval struct { -diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go -old mode 100644 -new mode 100755 -index ddee045..5233826 ---- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go -+++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go -@@ -368,14 +368,12 @@ type RtMetrics struct { - Pad uint32 - } - --type Mclpool struct{} -- - const ( - SizeofBpfVersion = 0x4 - SizeofBpfStat = 0x8 - SizeofBpfProgram = 0x10 - SizeofBpfInsn = 0x8 -- SizeofBpfHdr = 0x14 -+ SizeofBpfHdr = 0x18 - ) - - type BpfVersion struct { -@@ -405,7 +403,10 @@ type BpfHdr struct { - Caplen uint32 - Datalen uint32 - Hdrlen uint16 -- _ [2]byte -+ Ifidx uint16 -+ Flowid uint16 -+ Flags uint8 -+ Drops uint8 - } - - type BpfTimeval struct { -diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go -old mode 100644 -new mode 100755 -index eb13d4e..605cfdb ---- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go -+++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go -@@ -368,14 +368,12 @@ type RtMetrics struct { - Pad uint32 - } - --type Mclpool struct{} -- - const ( - SizeofBpfVersion = 0x4 - SizeofBpfStat = 0x8 - SizeofBpfProgram = 0x10 - SizeofBpfInsn = 0x8 -- SizeofBpfHdr = 0x14 -+ SizeofBpfHdr = 0x18 - ) - - type BpfVersion struct { -@@ -405,7 +403,10 @@ type BpfHdr struct { - Caplen uint32 - Datalen uint32 - Hdrlen uint16 -- _ [2]byte -+ Ifidx uint16 -+ Flowid uint16 -+ Flags uint8 -+ Drops uint8 - } - - type BpfTimeval struct { -diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_ppc64.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_ppc64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_riscv64.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_riscv64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go b/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/windows/aliases.go b/vendor/golang.org/x/sys/windows/aliases.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/windows/dll_windows.go b/vendor/golang.org/x/sys/windows/dll_windows.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/windows/empty.s b/vendor/golang.org/x/sys/windows/empty.s -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/windows/env_windows.go b/vendor/golang.org/x/sys/windows/env_windows.go -old mode 100644 -new mode 100755 -index 92ac05f..b8ad192 ---- a/vendor/golang.org/x/sys/windows/env_windows.go -+++ b/vendor/golang.org/x/sys/windows/env_windows.go -@@ -37,14 +37,14 @@ func (token Token) Environ(inheritExisting bool) (env []string, err error) { - return nil, err - } - defer DestroyEnvironmentBlock(block) -- blockp := uintptr(unsafe.Pointer(block)) -+ blockp := unsafe.Pointer(block) - for { -- entry := UTF16PtrToString((*uint16)(unsafe.Pointer(blockp))) -+ entry := UTF16PtrToString((*uint16)(blockp)) - if len(entry) == 0 { - break - } - env = append(env, entry) -- blockp += 2 * (uintptr(len(entry)) + 1) -+ blockp = unsafe.Add(blockp, 2*(len(entry)+1)) - } - return env, nil - } -diff --git a/vendor/golang.org/x/sys/windows/eventlog.go b/vendor/golang.org/x/sys/windows/eventlog.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/windows/exec_windows.go b/vendor/golang.org/x/sys/windows/exec_windows.go -old mode 100644 -new mode 100755 -index 75980fd..9cabbb6 ---- a/vendor/golang.org/x/sys/windows/exec_windows.go -+++ b/vendor/golang.org/x/sys/windows/exec_windows.go -@@ -22,7 +22,7 @@ import ( - // but only if there is space or tab inside s. - func EscapeArg(s string) string { - if len(s) == 0 { -- return "\"\"" -+ return `""` - } - n := len(s) - hasSpace := false -@@ -35,7 +35,7 @@ func EscapeArg(s string) string { - } - } - if hasSpace { -- n += 2 -+ n += 2 // Reserve space for quotes. - } - if n == len(s) { - return s -@@ -82,36 +82,106 @@ func EscapeArg(s string) string { - // in CreateProcess's CommandLine argument, CreateService/ChangeServiceConfig's BinaryPathName argument, - // or any program that uses CommandLineToArgv. - func ComposeCommandLine(args []string) string { -- var commandLine string -- for i := range args { -- if i > 0 { -- commandLine += " " -+ if len(args) == 0 { -+ return "" -+ } -+ -+ // Per https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-commandlinetoargvw: -+ // “This function accepts command lines that contain a program name; the -+ // program name can be enclosed in quotation marks or not.” -+ // -+ // Unfortunately, it provides no means of escaping interior quotation marks -+ // within that program name, and we have no way to report them here. -+ prog := args[0] -+ mustQuote := len(prog) == 0 -+ for i := 0; i < len(prog); i++ { -+ c := prog[i] -+ if c <= ' ' || (c == '"' && i == 0) { -+ // Force quotes for not only the ASCII space and tab as described in the -+ // MSDN article, but also ASCII control characters. -+ // The documentation for CommandLineToArgvW doesn't say what happens when -+ // the first argument is not a valid program name, but it empirically -+ // seems to drop unquoted control characters. -+ mustQuote = true -+ break -+ } -+ } -+ var commandLine []byte -+ if mustQuote { -+ commandLine = make([]byte, 0, len(prog)+2) -+ commandLine = append(commandLine, '"') -+ for i := 0; i < len(prog); i++ { -+ c := prog[i] -+ if c == '"' { -+ // This quote would interfere with our surrounding quotes. -+ // We have no way to report an error, so just strip out -+ // the offending character instead. -+ continue -+ } -+ commandLine = append(commandLine, c) -+ } -+ commandLine = append(commandLine, '"') -+ } else { -+ if len(args) == 1 { -+ // args[0] is a valid command line representing itself. -+ // No need to allocate a new slice or string for it. -+ return prog - } -- commandLine += EscapeArg(args[i]) -+ commandLine = []byte(prog) - } -- return commandLine -+ -+ for _, arg := range args[1:] { -+ commandLine = append(commandLine, ' ') -+ // TODO(bcmills): since we're already appending to a slice, it would be nice -+ // to avoid the intermediate allocations of EscapeArg. -+ // Perhaps we can factor out an appendEscapedArg function. -+ commandLine = append(commandLine, EscapeArg(arg)...) -+ } -+ return string(commandLine) - } - - // DecomposeCommandLine breaks apart its argument command line into unescaped parts using CommandLineToArgv, - // as gathered from GetCommandLine, QUERY_SERVICE_CONFIG's BinaryPathName argument, or elsewhere that - // command lines are passed around. -+// DecomposeCommandLine returns an error if commandLine contains NUL. - func DecomposeCommandLine(commandLine string) ([]string, error) { - if len(commandLine) == 0 { - return []string{}, nil - } -+ utf16CommandLine, err := UTF16FromString(commandLine) -+ if err != nil { -+ return nil, errorspkg.New("string with NUL passed to DecomposeCommandLine") -+ } - var argc int32 -- argv, err := CommandLineToArgv(StringToUTF16Ptr(commandLine), &argc) -+ argv, err := commandLineToArgv(&utf16CommandLine[0], &argc) - if err != nil { - return nil, err - } - defer LocalFree(Handle(unsafe.Pointer(argv))) -+ - var args []string -- for _, v := range (*argv)[:argc] { -- args = append(args, UTF16ToString((*v)[:])) -+ for _, p := range unsafe.Slice(argv, argc) { -+ args = append(args, UTF16PtrToString(p)) - } - return args, nil - } - -+// CommandLineToArgv parses a Unicode command line string and sets -+// argc to the number of parsed arguments. -+// -+// The returned memory should be freed using a single call to LocalFree. -+// -+// Note that although the return type of CommandLineToArgv indicates 8192 -+// entries of up to 8192 characters each, the actual count of parsed arguments -+// may exceed 8192, and the documentation for CommandLineToArgvW does not mention -+// any bound on the lengths of the individual argument strings. -+// (See https://go.dev/issue/63236.) -+func CommandLineToArgv(cmd *uint16, argc *int32) (argv *[8192]*[8192]uint16, err error) { -+ argp, err := commandLineToArgv(cmd, argc) -+ argv = (*[8192]*[8192]uint16)(unsafe.Pointer(argp)) -+ return argv, err -+} -+ - func CloseOnExec(fd Handle) { - SetHandleInformation(Handle(fd), HANDLE_FLAG_INHERIT, 0) - } -diff --git a/vendor/golang.org/x/sys/windows/memory_windows.go b/vendor/golang.org/x/sys/windows/memory_windows.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/windows/mkerrors.bash b/vendor/golang.org/x/sys/windows/mkerrors.bash -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/windows/mkknownfolderids.bash b/vendor/golang.org/x/sys/windows/mkknownfolderids.bash -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/windows/mksyscall.go b/vendor/golang.org/x/sys/windows/mksyscall.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/windows/race.go b/vendor/golang.org/x/sys/windows/race.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/windows/race0.go b/vendor/golang.org/x/sys/windows/race0.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/windows/registry/key.go b/vendor/golang.org/x/sys/windows/registry/key.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/windows/registry/mksyscall.go b/vendor/golang.org/x/sys/windows/registry/mksyscall.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/windows/registry/syscall.go b/vendor/golang.org/x/sys/windows/registry/syscall.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/windows/registry/value.go b/vendor/golang.org/x/sys/windows/registry/value.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/windows/registry/zsyscall_windows.go b/vendor/golang.org/x/sys/windows/registry/zsyscall_windows.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/windows/security_windows.go b/vendor/golang.org/x/sys/windows/security_windows.go -old mode 100644 -new mode 100755 -index d414ef1..26be94a ---- a/vendor/golang.org/x/sys/windows/security_windows.go -+++ b/vendor/golang.org/x/sys/windows/security_windows.go -@@ -7,8 +7,6 @@ package windows - import ( - "syscall" - "unsafe" -- -- "golang.org/x/sys/internal/unsafeheader" - ) - - const ( -@@ -1341,21 +1339,14 @@ func (selfRelativeSD *SECURITY_DESCRIPTOR) copySelfRelativeSecurityDescriptor() - sdLen = min - } - -- var src []byte -- h := (*unsafeheader.Slice)(unsafe.Pointer(&src)) -- h.Data = unsafe.Pointer(selfRelativeSD) -- h.Len = sdLen -- h.Cap = sdLen -- -+ src := unsafe.Slice((*byte)(unsafe.Pointer(selfRelativeSD)), sdLen) -+ // SECURITY_DESCRIPTOR has pointers in it, which means checkptr expects for it to -+ // be aligned properly. When we're copying a Windows-allocated struct to a -+ // Go-allocated one, make sure that the Go allocation is aligned to the -+ // pointer size. - const psize = int(unsafe.Sizeof(uintptr(0))) -- -- var dst []byte -- h = (*unsafeheader.Slice)(unsafe.Pointer(&dst)) - alloc := make([]uintptr, (sdLen+psize-1)/psize) -- h.Data = (*unsafeheader.Slice)(unsafe.Pointer(&alloc)).Data -- h.Len = sdLen -- h.Cap = sdLen -- -+ dst := unsafe.Slice((*byte)(unsafe.Pointer(&alloc[0])), sdLen) - copy(dst, src) - return (*SECURITY_DESCRIPTOR)(unsafe.Pointer(&dst[0])) - } -diff --git a/vendor/golang.org/x/sys/windows/service.go b/vendor/golang.org/x/sys/windows/service.go -old mode 100644 -new mode 100755 -index f8deca8..c44a1b9 ---- a/vendor/golang.org/x/sys/windows/service.go -+++ b/vendor/golang.org/x/sys/windows/service.go -@@ -141,6 +141,12 @@ const ( - SERVICE_DYNAMIC_INFORMATION_LEVEL_START_REASON = 1 - ) - -+type ENUM_SERVICE_STATUS struct { -+ ServiceName *uint16 -+ DisplayName *uint16 -+ ServiceStatus SERVICE_STATUS -+} -+ - type SERVICE_STATUS struct { - ServiceType uint32 - CurrentState uint32 -@@ -212,6 +218,10 @@ type SERVICE_FAILURE_ACTIONS struct { - Actions *SC_ACTION - } - -+type SERVICE_FAILURE_ACTIONS_FLAG struct { -+ FailureActionsOnNonCrashFailures int32 -+} -+ - type SC_ACTION struct { - Type uint32 - Delay uint32 -@@ -245,3 +255,4 @@ type QUERY_SERVICE_LOCK_STATUS struct { - //sys UnsubscribeServiceChangeNotifications(subscription uintptr) = sechost.UnsubscribeServiceChangeNotifications? - //sys RegisterServiceCtrlHandlerEx(serviceName *uint16, handlerProc uintptr, context uintptr) (handle Handle, err error) = advapi32.RegisterServiceCtrlHandlerExW - //sys QueryServiceDynamicInformation(service Handle, infoLevel uint32, dynamicInfo unsafe.Pointer) (err error) = advapi32.QueryServiceDynamicInformation? -+//sys EnumDependentServices(service Handle, activityState uint32, services *ENUM_SERVICE_STATUS, buffSize uint32, bytesNeeded *uint32, servicesReturned *uint32) (err error) = advapi32.EnumDependentServicesW -diff --git a/vendor/golang.org/x/sys/windows/setupapi_windows.go b/vendor/golang.org/x/sys/windows/setupapi_windows.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/windows/str.go b/vendor/golang.org/x/sys/windows/str.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/windows/syscall.go b/vendor/golang.org/x/sys/windows/syscall.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/windows/syscall_windows.go b/vendor/golang.org/x/sys/windows/syscall_windows.go -old mode 100644 -new mode 100755 -index a49853e..35cfc57 ---- a/vendor/golang.org/x/sys/windows/syscall_windows.go -+++ b/vendor/golang.org/x/sys/windows/syscall_windows.go -@@ -10,14 +10,11 @@ import ( - errorspkg "errors" - "fmt" - "runtime" -- "strings" - "sync" - "syscall" - "time" - "unicode/utf16" - "unsafe" -- -- "golang.org/x/sys/internal/unsafeheader" - ) - - type Handle uintptr -@@ -87,22 +84,13 @@ func StringToUTF16(s string) []uint16 { - // s, with a terminating NUL added. If s contains a NUL byte at any - // location, it returns (nil, syscall.EINVAL). - func UTF16FromString(s string) ([]uint16, error) { -- if strings.IndexByte(s, 0) != -1 { -- return nil, syscall.EINVAL -- } -- return utf16.Encode([]rune(s + "\x00")), nil -+ return syscall.UTF16FromString(s) - } - - // UTF16ToString returns the UTF-8 encoding of the UTF-16 sequence s, - // with a terminating NUL and any bytes after the NUL removed. - func UTF16ToString(s []uint16) string { -- for i, v := range s { -- if v == 0 { -- s = s[:i] -- break -- } -- } -- return string(utf16.Decode(s)) -+ return syscall.UTF16ToString(s) - } - - // StringToUTF16Ptr is deprecated. Use UTF16PtrFromString instead. -@@ -145,14 +133,14 @@ func Getpagesize() int { return 4096 } - - // NewCallback converts a Go function to a function pointer conforming to the stdcall calling convention. - // This is useful when interoperating with Windows code requiring callbacks. --// The argument is expected to be a function with with one uintptr-sized result. The function must not have arguments with size larger than the size of uintptr. -+// The argument is expected to be a function with one uintptr-sized result. The function must not have arguments with size larger than the size of uintptr. - func NewCallback(fn interface{}) uintptr { - return syscall.NewCallback(fn) - } - - // NewCallbackCDecl converts a Go function to a function pointer conforming to the cdecl calling convention. - // This is useful when interoperating with Windows code requiring callbacks. --// The argument is expected to be a function with with one uintptr-sized result. The function must not have arguments with size larger than the size of uintptr. -+// The argument is expected to be a function with one uintptr-sized result. The function must not have arguments with size larger than the size of uintptr. - func NewCallbackCDecl(fn interface{}) uintptr { - return syscall.NewCallbackCDecl(fn) - } -@@ -226,7 +214,7 @@ func NewCallbackCDecl(fn interface{}) uintptr { - //sys shGetKnownFolderPath(id *KNOWNFOLDERID, flags uint32, token Token, path **uint16) (ret error) = shell32.SHGetKnownFolderPath - //sys TerminateProcess(handle Handle, exitcode uint32) (err error) - //sys GetExitCodeProcess(handle Handle, exitcode *uint32) (err error) --//sys GetStartupInfo(startupInfo *StartupInfo) (err error) = GetStartupInfoW -+//sys getStartupInfo(startupInfo *StartupInfo) = GetStartupInfoW - //sys GetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error) - //sys DuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetProcessHandle Handle, lpTargetHandle *Handle, dwDesiredAccess uint32, bInheritHandle bool, dwOptions uint32) (err error) - //sys WaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, err error) [failretval==0xffffffff] -@@ -250,7 +238,7 @@ func NewCallbackCDecl(fn interface{}) uintptr { - //sys SetFileAttributes(name *uint16, attrs uint32) (err error) = kernel32.SetFileAttributesW - //sys GetFileAttributesEx(name *uint16, level uint32, info *byte) (err error) = kernel32.GetFileAttributesExW - //sys GetCommandLine() (cmd *uint16) = kernel32.GetCommandLineW --//sys CommandLineToArgv(cmd *uint16, argc *int32) (argv *[8192]*[8192]uint16, err error) [failretval==nil] = shell32.CommandLineToArgvW -+//sys commandLineToArgv(cmd *uint16, argc *int32) (argv **uint16, err error) [failretval==nil] = shell32.CommandLineToArgvW - //sys LocalFree(hmem Handle) (handle Handle, err error) [failretval!=0] - //sys LocalAlloc(flags uint32, length uint32) (ptr uintptr, err error) - //sys SetHandleInformation(handle Handle, mask uint32, flags uint32) (err error) -@@ -309,12 +297,15 @@ func NewCallbackCDecl(fn interface{}) uintptr { - //sys RegNotifyChangeKeyValue(key Handle, watchSubtree bool, notifyFilter uint32, event Handle, asynchronous bool) (regerrno error) = advapi32.RegNotifyChangeKeyValue - //sys GetCurrentProcessId() (pid uint32) = kernel32.GetCurrentProcessId - //sys ProcessIdToSessionId(pid uint32, sessionid *uint32) (err error) = kernel32.ProcessIdToSessionId -+//sys ClosePseudoConsole(console Handle) = kernel32.ClosePseudoConsole -+//sys createPseudoConsole(size uint32, in Handle, out Handle, flags uint32, pconsole *Handle) (hr error) = kernel32.CreatePseudoConsole - //sys GetConsoleMode(console Handle, mode *uint32) (err error) = kernel32.GetConsoleMode - //sys SetConsoleMode(console Handle, mode uint32) (err error) = kernel32.SetConsoleMode - //sys GetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) = kernel32.GetConsoleScreenBufferInfo - //sys setConsoleCursorPosition(console Handle, position uint32) (err error) = kernel32.SetConsoleCursorPosition - //sys WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) = kernel32.WriteConsoleW - //sys ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) = kernel32.ReadConsoleW -+//sys resizePseudoConsole(pconsole Handle, size uint32) (hr error) = kernel32.ResizePseudoConsole - //sys CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.CreateToolhelp32Snapshot - //sys Module32First(snapshot Handle, moduleEntry *ModuleEntry32) (err error) = kernel32.Module32FirstW - //sys Module32Next(snapshot Handle, moduleEntry *ModuleEntry32) (err error) = kernel32.Module32NextW -@@ -415,7 +406,7 @@ func NewCallbackCDecl(fn interface{}) uintptr { - //sys VerQueryValue(block unsafe.Pointer, subBlock string, pointerToBufferPointer unsafe.Pointer, bufSize *uint32) (err error) = version.VerQueryValueW - - // Process Status API (PSAPI) --//sys EnumProcesses(processIds []uint32, bytesReturned *uint32) (err error) = psapi.EnumProcesses -+//sys enumProcesses(processIds *uint32, nSize uint32, bytesReturned *uint32) (err error) = psapi.EnumProcesses - //sys EnumProcessModules(process Handle, module *Handle, cb uint32, cbNeeded *uint32) (err error) = psapi.EnumProcessModules - //sys EnumProcessModulesEx(process Handle, module *Handle, cb uint32, cbNeeded *uint32, filterFlag uint32) (err error) = psapi.EnumProcessModulesEx - //sys GetModuleInformation(process Handle, module Handle, modinfo *ModuleInfo, cb uint32) (err error) = psapi.GetModuleInformation -@@ -447,6 +438,10 @@ func NewCallbackCDecl(fn interface{}) uintptr { - //sys DwmGetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, size uint32) (ret error) = dwmapi.DwmGetWindowAttribute - //sys DwmSetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, size uint32) (ret error) = dwmapi.DwmSetWindowAttribute - -+// Windows Multimedia API -+//sys TimeBeginPeriod (period uint32) (err error) [failretval != 0] = winmm.timeBeginPeriod -+//sys TimeEndPeriod (period uint32) (err error) [failretval != 0] = winmm.timeEndPeriod -+ - // syscall interface implementation for other packages - - // GetCurrentProcess returns the handle for the current process. -@@ -834,6 +829,9 @@ const socket_error = uintptr(^uint32(0)) - //sys WSAStartup(verreq uint32, data *WSAData) (sockerr error) = ws2_32.WSAStartup - //sys WSACleanup() (err error) [failretval==socket_error] = ws2_32.WSACleanup - //sys WSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbob uint32, cbbr *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) [failretval==socket_error] = ws2_32.WSAIoctl -+//sys WSALookupServiceBegin(querySet *WSAQUERYSET, flags uint32, handle *Handle) (err error) [failretval==socket_error] = ws2_32.WSALookupServiceBeginW -+//sys WSALookupServiceNext(handle Handle, flags uint32, size *int32, querySet *WSAQUERYSET) (err error) [failretval==socket_error] = ws2_32.WSALookupServiceNextW -+//sys WSALookupServiceEnd(handle Handle) (err error) [failretval==socket_error] = ws2_32.WSALookupServiceEnd - //sys socket(af int32, typ int32, protocol int32) (handle Handle, err error) [failretval==InvalidHandle] = ws2_32.socket - //sys sendto(s Handle, buf []byte, flags int32, to unsafe.Pointer, tolen int32) (err error) [failretval==socket_error] = ws2_32.sendto - //sys recvfrom(s Handle, buf []byte, flags int32, from *RawSockaddrAny, fromlen *int32) (n int32, err error) [failretval==-1] = ws2_32.recvfrom -@@ -1029,8 +1027,7 @@ func (rsa *RawSockaddrAny) Sockaddr() (Sockaddr, error) { - for n < len(pp.Path) && pp.Path[n] != 0 { - n++ - } -- bytes := (*[len(pp.Path)]byte)(unsafe.Pointer(&pp.Path[0]))[0:n] -- sa.Name = string(bytes) -+ sa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n)) - return sa, nil - - case AF_INET: -@@ -1362,6 +1359,17 @@ func SetsockoptIPv6Mreq(fd Handle, level, opt int, mreq *IPv6Mreq) (err error) { - return syscall.EWINDOWS - } - -+func EnumProcesses(processIds []uint32, bytesReturned *uint32) error { -+ // EnumProcesses syscall expects the size parameter to be in bytes, but the code generated with mksyscall uses -+ // the length of the processIds slice instead. Hence, this wrapper function is added to fix the discrepancy. -+ var p *uint32 -+ if len(processIds) > 0 { -+ p = &processIds[0] -+ } -+ size := uint32(len(processIds) * 4) -+ return enumProcesses(p, size, bytesReturned) -+} -+ - func Getpid() (pid int) { return int(GetCurrentProcessId()) } - - func FindFirstFile(name *uint16, data *Win32finddata) (handle Handle, err error) { -@@ -1621,6 +1629,11 @@ func SetConsoleCursorPosition(console Handle, position Coord) error { - return setConsoleCursorPosition(console, *((*uint32)(unsafe.Pointer(&position)))) - } - -+func GetStartupInfo(startupInfo *StartupInfo) error { -+ getStartupInfo(startupInfo) -+ return nil -+} -+ - func (s NTStatus) Errno() syscall.Errno { - return rtlNtStatusToDosErrorNoTeb(s) - } -@@ -1655,12 +1668,8 @@ func NewNTUnicodeString(s string) (*NTUnicodeString, error) { - - // Slice returns a uint16 slice that aliases the data in the NTUnicodeString. - func (s *NTUnicodeString) Slice() []uint16 { -- var slice []uint16 -- hdr := (*unsafeheader.Slice)(unsafe.Pointer(&slice)) -- hdr.Data = unsafe.Pointer(s.Buffer) -- hdr.Len = int(s.Length) -- hdr.Cap = int(s.MaximumLength) -- return slice -+ slice := unsafe.Slice(s.Buffer, s.MaximumLength) -+ return slice[:s.Length] - } - - func (s *NTUnicodeString) String() string { -@@ -1683,12 +1692,8 @@ func NewNTString(s string) (*NTString, error) { - - // Slice returns a byte slice that aliases the data in the NTString. - func (s *NTString) Slice() []byte { -- var slice []byte -- hdr := (*unsafeheader.Slice)(unsafe.Pointer(&slice)) -- hdr.Data = unsafe.Pointer(s.Buffer) -- hdr.Len = int(s.Length) -- hdr.Cap = int(s.MaximumLength) -- return slice -+ slice := unsafe.Slice(s.Buffer, s.MaximumLength) -+ return slice[:s.Length] - } - - func (s *NTString) String() string { -@@ -1740,10 +1745,7 @@ func LoadResourceData(module, resInfo Handle) (data []byte, err error) { - if err != nil { - return - } -- h := (*unsafeheader.Slice)(unsafe.Pointer(&data)) -- h.Data = unsafe.Pointer(ptr) -- h.Len = int(size) -- h.Cap = int(size) -+ data = unsafe.Slice((*byte)(unsafe.Pointer(ptr)), size) - return - } - -@@ -1814,3 +1816,17 @@ type PSAPI_WORKING_SET_EX_INFORMATION struct { - // A PSAPI_WORKING_SET_EX_BLOCK union that indicates the attributes of the page at VirtualAddress. - VirtualAttributes PSAPI_WORKING_SET_EX_BLOCK - } -+ -+// CreatePseudoConsole creates a windows pseudo console. -+func CreatePseudoConsole(size Coord, in Handle, out Handle, flags uint32, pconsole *Handle) error { -+ // We need this wrapper to manually cast Coord to uint32. The autogenerated wrappers only -+ // accept arguments that can be casted to uintptr, and Coord can't. -+ return createPseudoConsole(*((*uint32)(unsafe.Pointer(&size))), in, out, flags, pconsole) -+} -+ -+// ResizePseudoConsole resizes the internal buffers of the pseudo console to the width and height specified in `size`. -+func ResizePseudoConsole(pconsole Handle, size Coord) error { -+ // We need this wrapper to manually cast Coord to uint32. The autogenerated wrappers only -+ // accept arguments that can be casted to uintptr, and Coord can't. -+ return resizePseudoConsole(pconsole, *((*uint32)(unsafe.Pointer(&size)))) -+} -diff --git a/vendor/golang.org/x/sys/windows/types_windows.go b/vendor/golang.org/x/sys/windows/types_windows.go -old mode 100644 -new mode 100755 -index 0c4add9..b88dc7c ---- a/vendor/golang.org/x/sys/windows/types_windows.go -+++ b/vendor/golang.org/x/sys/windows/types_windows.go -@@ -247,6 +247,7 @@ const ( - PROC_THREAD_ATTRIBUTE_MITIGATION_POLICY = 0x00020007 - PROC_THREAD_ATTRIBUTE_UMS_THREAD = 0x00030006 - PROC_THREAD_ATTRIBUTE_PROTECTION_LEVEL = 0x0002000b -+ PROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE = 0x00020016 - ) - - const ( -@@ -1243,6 +1244,51 @@ const ( - DnsSectionAdditional = 0x0003 - ) - -+const ( -+ // flags of WSALookupService -+ LUP_DEEP = 0x0001 -+ LUP_CONTAINERS = 0x0002 -+ LUP_NOCONTAINERS = 0x0004 -+ LUP_NEAREST = 0x0008 -+ LUP_RETURN_NAME = 0x0010 -+ LUP_RETURN_TYPE = 0x0020 -+ LUP_RETURN_VERSION = 0x0040 -+ LUP_RETURN_COMMENT = 0x0080 -+ LUP_RETURN_ADDR = 0x0100 -+ LUP_RETURN_BLOB = 0x0200 -+ LUP_RETURN_ALIASES = 0x0400 -+ LUP_RETURN_QUERY_STRING = 0x0800 -+ LUP_RETURN_ALL = 0x0FF0 -+ LUP_RES_SERVICE = 0x8000 -+ -+ LUP_FLUSHCACHE = 0x1000 -+ LUP_FLUSHPREVIOUS = 0x2000 -+ -+ LUP_NON_AUTHORITATIVE = 0x4000 -+ LUP_SECURE = 0x8000 -+ LUP_RETURN_PREFERRED_NAMES = 0x10000 -+ LUP_DNS_ONLY = 0x20000 -+ -+ LUP_ADDRCONFIG = 0x100000 -+ LUP_DUAL_ADDR = 0x200000 -+ LUP_FILESERVER = 0x400000 -+ LUP_DISABLE_IDN_ENCODING = 0x00800000 -+ LUP_API_ANSI = 0x01000000 -+ -+ LUP_RESOLUTION_HANDLE = 0x80000000 -+) -+ -+const ( -+ // values of WSAQUERYSET's namespace -+ NS_ALL = 0 -+ NS_DNS = 12 -+ NS_NLA = 15 -+ NS_BTH = 16 -+ NS_EMAIL = 37 -+ NS_PNRPNAME = 38 -+ NS_PNRPCLOUD = 39 -+) -+ - type DNSSRVData struct { - Target *uint16 - Priority uint16 -@@ -2094,6 +2140,12 @@ const ( - ENABLE_LVB_GRID_WORLDWIDE = 0x10 - ) - -+// Pseudo console related constants used for the flags parameter to -+// CreatePseudoConsole. See: https://learn.microsoft.com/en-us/windows/console/createpseudoconsole -+const ( -+ PSEUDOCONSOLE_INHERIT_CURSOR = 0x1 -+) -+ - type Coord struct { - X int16 - Y int16 -@@ -2175,19 +2227,23 @@ type JOBOBJECT_BASIC_UI_RESTRICTIONS struct { - } - - const ( -- // JobObjectInformationClass -+ // JobObjectInformationClass for QueryInformationJobObject and SetInformationJobObject - JobObjectAssociateCompletionPortInformation = 7 -+ JobObjectBasicAccountingInformation = 1 -+ JobObjectBasicAndIoAccountingInformation = 8 - JobObjectBasicLimitInformation = 2 -+ JobObjectBasicProcessIdList = 3 - JobObjectBasicUIRestrictions = 4 - JobObjectCpuRateControlInformation = 15 - JobObjectEndOfJobTimeInformation = 6 - JobObjectExtendedLimitInformation = 9 - JobObjectGroupInformation = 11 - JobObjectGroupInformationEx = 14 -- JobObjectLimitViolationInformation2 = 35 -+ JobObjectLimitViolationInformation = 13 -+ JobObjectLimitViolationInformation2 = 34 - JobObjectNetRateControlInformation = 32 - JobObjectNotificationLimitInformation = 12 -- JobObjectNotificationLimitInformation2 = 34 -+ JobObjectNotificationLimitInformation2 = 33 - JobObjectSecurityLimitInformation = 5 - ) - -@@ -3258,3 +3314,43 @@ const ( - DWMWA_TEXT_COLOR = 36 - DWMWA_VISIBLE_FRAME_BORDER_THICKNESS = 37 - ) -+ -+type WSAQUERYSET struct { -+ Size uint32 -+ ServiceInstanceName *uint16 -+ ServiceClassId *GUID -+ Version *WSAVersion -+ Comment *uint16 -+ NameSpace uint32 -+ NSProviderId *GUID -+ Context *uint16 -+ NumberOfProtocols uint32 -+ AfpProtocols *AFProtocols -+ QueryString *uint16 -+ NumberOfCsAddrs uint32 -+ SaBuffer *CSAddrInfo -+ OutputFlags uint32 -+ Blob *BLOB -+} -+ -+type WSAVersion struct { -+ Version uint32 -+ EnumerationOfComparison int32 -+} -+ -+type AFProtocols struct { -+ AddressFamily int32 -+ Protocol int32 -+} -+ -+type CSAddrInfo struct { -+ LocalAddr SocketAddress -+ RemoteAddr SocketAddress -+ SocketType int32 -+ Protocol int32 -+} -+ -+type BLOB struct { -+ Size uint32 -+ BlobData *byte -+} -diff --git a/vendor/golang.org/x/sys/windows/types_windows_386.go b/vendor/golang.org/x/sys/windows/types_windows_386.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/windows/types_windows_amd64.go b/vendor/golang.org/x/sys/windows/types_windows_amd64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/windows/types_windows_arm.go b/vendor/golang.org/x/sys/windows/types_windows_arm.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/windows/types_windows_arm64.go b/vendor/golang.org/x/sys/windows/types_windows_arm64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/windows/zerrors_windows.go b/vendor/golang.org/x/sys/windows/zerrors_windows.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/windows/zknownfolderids_windows.go b/vendor/golang.org/x/sys/windows/zknownfolderids_windows.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/sys/windows/zsyscall_windows.go b/vendor/golang.org/x/sys/windows/zsyscall_windows.go -old mode 100644 -new mode 100755 -index ac60052..8b1688d ---- a/vendor/golang.org/x/sys/windows/zsyscall_windows.go -+++ b/vendor/golang.org/x/sys/windows/zsyscall_windows.go -@@ -55,6 +55,7 @@ var ( - moduser32 = NewLazySystemDLL("user32.dll") - moduserenv = NewLazySystemDLL("userenv.dll") - modversion = NewLazySystemDLL("version.dll") -+ modwinmm = NewLazySystemDLL("winmm.dll") - modwintrust = NewLazySystemDLL("wintrust.dll") - modws2_32 = NewLazySystemDLL("ws2_32.dll") - modwtsapi32 = NewLazySystemDLL("wtsapi32.dll") -@@ -86,6 +87,7 @@ var ( - procDeleteService = modadvapi32.NewProc("DeleteService") - procDeregisterEventSource = modadvapi32.NewProc("DeregisterEventSource") - procDuplicateTokenEx = modadvapi32.NewProc("DuplicateTokenEx") -+ procEnumDependentServicesW = modadvapi32.NewProc("EnumDependentServicesW") - procEnumServicesStatusExW = modadvapi32.NewProc("EnumServicesStatusExW") - procEqualSid = modadvapi32.NewProc("EqualSid") - procFreeSid = modadvapi32.NewProc("FreeSid") -@@ -186,6 +188,7 @@ var ( - procCancelIo = modkernel32.NewProc("CancelIo") - procCancelIoEx = modkernel32.NewProc("CancelIoEx") - procCloseHandle = modkernel32.NewProc("CloseHandle") -+ procClosePseudoConsole = modkernel32.NewProc("ClosePseudoConsole") - procConnectNamedPipe = modkernel32.NewProc("ConnectNamedPipe") - procCreateDirectoryW = modkernel32.NewProc("CreateDirectoryW") - procCreateEventExW = modkernel32.NewProc("CreateEventExW") -@@ -200,6 +203,7 @@ var ( - procCreateNamedPipeW = modkernel32.NewProc("CreateNamedPipeW") - procCreatePipe = modkernel32.NewProc("CreatePipe") - procCreateProcessW = modkernel32.NewProc("CreateProcessW") -+ procCreatePseudoConsole = modkernel32.NewProc("CreatePseudoConsole") - procCreateSymbolicLinkW = modkernel32.NewProc("CreateSymbolicLinkW") - procCreateToolhelp32Snapshot = modkernel32.NewProc("CreateToolhelp32Snapshot") - procDefineDosDeviceW = modkernel32.NewProc("DefineDosDeviceW") -@@ -326,6 +330,7 @@ var ( - procReleaseMutex = modkernel32.NewProc("ReleaseMutex") - procRemoveDirectoryW = modkernel32.NewProc("RemoveDirectoryW") - procResetEvent = modkernel32.NewProc("ResetEvent") -+ procResizePseudoConsole = modkernel32.NewProc("ResizePseudoConsole") - procResumeThread = modkernel32.NewProc("ResumeThread") - procSetCommTimeouts = modkernel32.NewProc("SetCommTimeouts") - procSetConsoleCursorPosition = modkernel32.NewProc("SetConsoleCursorPosition") -@@ -467,6 +472,8 @@ var ( - procGetFileVersionInfoSizeW = modversion.NewProc("GetFileVersionInfoSizeW") - procGetFileVersionInfoW = modversion.NewProc("GetFileVersionInfoW") - procVerQueryValueW = modversion.NewProc("VerQueryValueW") -+ proctimeBeginPeriod = modwinmm.NewProc("timeBeginPeriod") -+ proctimeEndPeriod = modwinmm.NewProc("timeEndPeriod") - procWinVerifyTrustEx = modwintrust.NewProc("WinVerifyTrustEx") - procFreeAddrInfoW = modws2_32.NewProc("FreeAddrInfoW") - procGetAddrInfoW = modws2_32.NewProc("GetAddrInfoW") -@@ -474,6 +481,9 @@ var ( - procWSAEnumProtocolsW = modws2_32.NewProc("WSAEnumProtocolsW") - procWSAGetOverlappedResult = modws2_32.NewProc("WSAGetOverlappedResult") - procWSAIoctl = modws2_32.NewProc("WSAIoctl") -+ procWSALookupServiceBeginW = modws2_32.NewProc("WSALookupServiceBeginW") -+ procWSALookupServiceEnd = modws2_32.NewProc("WSALookupServiceEnd") -+ procWSALookupServiceNextW = modws2_32.NewProc("WSALookupServiceNextW") - procWSARecv = modws2_32.NewProc("WSARecv") - procWSARecvFrom = modws2_32.NewProc("WSARecvFrom") - procWSASend = modws2_32.NewProc("WSASend") -@@ -731,6 +741,14 @@ func DuplicateTokenEx(existingToken Token, desiredAccess uint32, tokenAttributes - return - } - -+func EnumDependentServices(service Handle, activityState uint32, services *ENUM_SERVICE_STATUS, buffSize uint32, bytesNeeded *uint32, servicesReturned *uint32) (err error) { -+ r1, _, e1 := syscall.Syscall6(procEnumDependentServicesW.Addr(), 6, uintptr(service), uintptr(activityState), uintptr(unsafe.Pointer(services)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded)), uintptr(unsafe.Pointer(servicesReturned))) -+ if r1 == 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ - func EnumServicesStatusEx(mgr Handle, infoLevel uint32, serviceType uint32, serviceState uint32, services *byte, bufSize uint32, bytesNeeded *uint32, servicesReturned *uint32, resumeHandle *uint32, groupName *uint16) (err error) { - r1, _, e1 := syscall.Syscall12(procEnumServicesStatusExW.Addr(), 10, uintptr(mgr), uintptr(infoLevel), uintptr(serviceType), uintptr(serviceState), uintptr(unsafe.Pointer(services)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), uintptr(unsafe.Pointer(servicesReturned)), uintptr(unsafe.Pointer(resumeHandle)), uintptr(unsafe.Pointer(groupName)), 0, 0) - if r1 == 0 { -@@ -1618,6 +1636,11 @@ func CloseHandle(handle Handle) (err error) { - return - } - -+func ClosePseudoConsole(console Handle) { -+ syscall.Syscall(procClosePseudoConsole.Addr(), 1, uintptr(console), 0, 0) -+ return -+} -+ - func ConnectNamedPipe(pipe Handle, overlapped *Overlapped) (err error) { - r1, _, e1 := syscall.Syscall(procConnectNamedPipe.Addr(), 2, uintptr(pipe), uintptr(unsafe.Pointer(overlapped)), 0) - if r1 == 0 { -@@ -1747,6 +1770,14 @@ func CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityA - return - } - -+func createPseudoConsole(size uint32, in Handle, out Handle, flags uint32, pconsole *Handle) (hr error) { -+ r0, _, _ := syscall.Syscall6(procCreatePseudoConsole.Addr(), 5, uintptr(size), uintptr(in), uintptr(out), uintptr(flags), uintptr(unsafe.Pointer(pconsole)), 0) -+ if r0 != 0 { -+ hr = syscall.Errno(r0) -+ } -+ return -+} -+ - func CreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags uint32) (err error) { - r1, _, e1 := syscall.Syscall(procCreateSymbolicLinkW.Addr(), 3, uintptr(unsafe.Pointer(symlinkfilename)), uintptr(unsafe.Pointer(targetfilename)), uintptr(flags)) - if r1&0xff == 0 { -@@ -2355,11 +2386,8 @@ func GetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uin - return - } - --func GetStartupInfo(startupInfo *StartupInfo) (err error) { -- r1, _, e1 := syscall.Syscall(procGetStartupInfoW.Addr(), 1, uintptr(unsafe.Pointer(startupInfo)), 0, 0) -- if r1 == 0 { -- err = errnoErr(e1) -- } -+func getStartupInfo(startupInfo *StartupInfo) { -+ syscall.Syscall(procGetStartupInfoW.Addr(), 1, uintptr(unsafe.Pointer(startupInfo)), 0, 0) - return - } - -@@ -2850,6 +2878,14 @@ func ResetEvent(event Handle) (err error) { - return - } - -+func resizePseudoConsole(pconsole Handle, size uint32) (hr error) { -+ r0, _, _ := syscall.Syscall(procResizePseudoConsole.Addr(), 2, uintptr(pconsole), uintptr(size), 0) -+ if r0 != 0 { -+ hr = syscall.Errno(r0) -+ } -+ return -+} -+ - func ResumeThread(thread Handle) (ret uint32, err error) { - r0, _, e1 := syscall.Syscall(procResumeThread.Addr(), 1, uintptr(thread), 0, 0) - ret = uint32(r0) -@@ -3504,12 +3540,8 @@ func EnumProcessModulesEx(process Handle, module *Handle, cb uint32, cbNeeded *u - return - } - --func EnumProcesses(processIds []uint32, bytesReturned *uint32) (err error) { -- var _p0 *uint32 -- if len(processIds) > 0 { -- _p0 = &processIds[0] -- } -- r1, _, e1 := syscall.Syscall(procEnumProcesses.Addr(), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(processIds)), uintptr(unsafe.Pointer(bytesReturned))) -+func enumProcesses(processIds *uint32, nSize uint32, bytesReturned *uint32) (err error) { -+ r1, _, e1 := syscall.Syscall(procEnumProcesses.Addr(), 3, uintptr(unsafe.Pointer(processIds)), uintptr(nSize), uintptr(unsafe.Pointer(bytesReturned))) - if r1 == 0 { - err = errnoErr(e1) - } -@@ -3812,9 +3844,9 @@ func setupUninstallOEMInf(infFileName *uint16, flags SUOI, reserved uintptr) (er - return - } - --func CommandLineToArgv(cmd *uint16, argc *int32) (argv *[8192]*[8192]uint16, err error) { -+func commandLineToArgv(cmd *uint16, argc *int32) (argv **uint16, err error) { - r0, _, e1 := syscall.Syscall(procCommandLineToArgvW.Addr(), 2, uintptr(unsafe.Pointer(cmd)), uintptr(unsafe.Pointer(argc)), 0) -- argv = (*[8192]*[8192]uint16)(unsafe.Pointer(r0)) -+ argv = (**uint16)(unsafe.Pointer(r0)) - if argv == nil { - err = errnoErr(e1) - } -@@ -4009,6 +4041,22 @@ func _VerQueryValue(block unsafe.Pointer, subBlock *uint16, pointerToBufferPoint - return - } - -+func TimeBeginPeriod(period uint32) (err error) { -+ r1, _, e1 := syscall.Syscall(proctimeBeginPeriod.Addr(), 1, uintptr(period), 0, 0) -+ if r1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+func TimeEndPeriod(period uint32) (err error) { -+ r1, _, e1 := syscall.Syscall(proctimeEndPeriod.Addr(), 1, uintptr(period), 0, 0) -+ if r1 != 0 { -+ err = errnoErr(e1) -+ } -+ return -+} -+ - func WinVerifyTrustEx(hwnd HWND, actionId *GUID, data *WinTrustData) (ret error) { - r0, _, _ := syscall.Syscall(procWinVerifyTrustEx.Addr(), 3, uintptr(hwnd), uintptr(unsafe.Pointer(actionId)), uintptr(unsafe.Pointer(data))) - if r0 != 0 { -@@ -4067,6 +4115,30 @@ func WSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbo - return - } - -+func WSALookupServiceBegin(querySet *WSAQUERYSET, flags uint32, handle *Handle) (err error) { -+ r1, _, e1 := syscall.Syscall(procWSALookupServiceBeginW.Addr(), 3, uintptr(unsafe.Pointer(querySet)), uintptr(flags), uintptr(unsafe.Pointer(handle))) -+ if r1 == socket_error { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+func WSALookupServiceEnd(handle Handle) (err error) { -+ r1, _, e1 := syscall.Syscall(procWSALookupServiceEnd.Addr(), 1, uintptr(handle), 0, 0) -+ if r1 == socket_error { -+ err = errnoErr(e1) -+ } -+ return -+} -+ -+func WSALookupServiceNext(handle Handle, flags uint32, size *int32, querySet *WSAQUERYSET) (err error) { -+ r1, _, e1 := syscall.Syscall6(procWSALookupServiceNextW.Addr(), 4, uintptr(handle), uintptr(flags), uintptr(unsafe.Pointer(size)), uintptr(unsafe.Pointer(querySet)), 0, 0) -+ if r1 == socket_error { -+ err = errnoErr(e1) -+ } -+ return -+} -+ - func WSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, overlapped *Overlapped, croutine *byte) (err error) { - r1, _, e1 := syscall.Syscall9(procWSARecv.Addr(), 7, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0, 0) - if r1 == socket_error { -diff --git a/vendor/golang.org/x/term/CONTRIBUTING.md b/vendor/golang.org/x/term/CONTRIBUTING.md -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/term/LICENSE b/vendor/golang.org/x/term/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/term/PATENTS b/vendor/golang.org/x/term/PATENTS -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/term/README.md b/vendor/golang.org/x/term/README.md -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/term/codereview.cfg b/vendor/golang.org/x/term/codereview.cfg -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/term/term.go b/vendor/golang.org/x/term/term.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/term/term_plan9.go b/vendor/golang.org/x/term/term_plan9.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/term/term_unix.go b/vendor/golang.org/x/term/term_unix.go -old mode 100644 -new mode 100755 -index a4e31ab..62c2b3f ---- a/vendor/golang.org/x/term/term_unix.go -+++ b/vendor/golang.org/x/term/term_unix.go -@@ -60,7 +60,7 @@ func restore(fd int, state *State) error { - func getSize(fd int) (width, height int, err error) { - ws, err := unix.IoctlGetWinsize(fd, unix.TIOCGWINSZ) - if err != nil { -- return -1, -1, err -+ return 0, 0, err - } - return int(ws.Col), int(ws.Row), nil - } -diff --git a/vendor/golang.org/x/term/term_unix_bsd.go b/vendor/golang.org/x/term/term_unix_bsd.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/term/term_unix_other.go b/vendor/golang.org/x/term/term_unix_other.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/term/term_unsupported.go b/vendor/golang.org/x/term/term_unsupported.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/term/term_windows.go b/vendor/golang.org/x/term/term_windows.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/term/terminal.go b/vendor/golang.org/x/term/terminal.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/text/LICENSE b/vendor/golang.org/x/text/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/text/PATENTS b/vendor/golang.org/x/text/PATENTS -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/text/secure/bidirule/bidirule.go b/vendor/golang.org/x/text/secure/bidirule/bidirule.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0.go b/vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0.go b/vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/text/transform/transform.go b/vendor/golang.org/x/text/transform/transform.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/text/unicode/bidi/bidi.go b/vendor/golang.org/x/text/unicode/bidi/bidi.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/text/unicode/bidi/bracket.go b/vendor/golang.org/x/text/unicode/bidi/bracket.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/text/unicode/bidi/core.go b/vendor/golang.org/x/text/unicode/bidi/core.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/text/unicode/bidi/prop.go b/vendor/golang.org/x/text/unicode/bidi/prop.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go b/vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/text/unicode/bidi/tables11.0.0.go b/vendor/golang.org/x/text/unicode/bidi/tables11.0.0.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go b/vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go b/vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go -old mode 100644 -new mode 100755 -index f248eff..ffadb7b ---- a/vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go -+++ b/vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go -@@ -1,7 +1,7 @@ - // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - --//go:build go1.16 --// +build go1.16 -+//go:build go1.16 && !go1.21 -+// +build go1.16,!go1.21 - - package bidi - -diff --git a/vendor/golang.org/x/text/unicode/bidi/tables15.0.0.go b/vendor/golang.org/x/text/unicode/bidi/tables15.0.0.go -new file mode 100755 -index 0000000..92cce58 ---- /dev/null -+++ b/vendor/golang.org/x/text/unicode/bidi/tables15.0.0.go -@@ -0,0 +1,2043 @@ -+// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. -+ -+//go:build go1.21 -+// +build go1.21 -+ -+package bidi -+ -+// UnicodeVersion is the Unicode version from which the tables in this package are derived. -+const UnicodeVersion = "15.0.0" -+ -+// xorMasks contains masks to be xor-ed with brackets to get the reverse -+// version. -+var xorMasks = []int32{ // 8 elements -+ 0, 1, 6, 7, 3, 15, 29, 63, -+} // Size: 56 bytes -+ -+// 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 *bidiTrie) lookup(s []byte) (v uint8, sz int) { -+ c0 := s[0] -+ switch { -+ case c0 < 0x80: // is ASCII -+ return bidiValues[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 := bidiIndex[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 := bidiIndex[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 = bidiIndex[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 := bidiIndex[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 = bidiIndex[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 = bidiIndex[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 *bidiTrie) lookupUnsafe(s []byte) uint8 { -+ c0 := s[0] -+ if c0 < 0x80 { // is ASCII -+ return bidiValues[c0] -+ } -+ i := bidiIndex[c0] -+ if c0 < 0xE0 { // 2-byte UTF-8 -+ return t.lookupValue(uint32(i), s[1]) -+ } -+ i = bidiIndex[uint32(i)<<6+uint32(s[1])] -+ if c0 < 0xF0 { // 3-byte UTF-8 -+ return t.lookupValue(uint32(i), s[2]) -+ } -+ i = bidiIndex[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 *bidiTrie) lookupString(s string) (v uint8, sz int) { -+ c0 := s[0] -+ switch { -+ case c0 < 0x80: // is ASCII -+ return bidiValues[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 := bidiIndex[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 := bidiIndex[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 = bidiIndex[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 := bidiIndex[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 = bidiIndex[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 = bidiIndex[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 *bidiTrie) lookupStringUnsafe(s string) uint8 { -+ c0 := s[0] -+ if c0 < 0x80 { // is ASCII -+ return bidiValues[c0] -+ } -+ i := bidiIndex[c0] -+ if c0 < 0xE0 { // 2-byte UTF-8 -+ return t.lookupValue(uint32(i), s[1]) -+ } -+ i = bidiIndex[uint32(i)<<6+uint32(s[1])] -+ if c0 < 0xF0 { // 3-byte UTF-8 -+ return t.lookupValue(uint32(i), s[2]) -+ } -+ i = bidiIndex[uint32(i)<<6+uint32(s[2])] -+ if c0 < 0xF8 { // 4-byte UTF-8 -+ return t.lookupValue(uint32(i), s[3]) -+ } -+ return 0 -+} -+ -+// bidiTrie. Total size: 19904 bytes (19.44 KiB). Checksum: b1f201ed2debb6c8. -+type bidiTrie struct{} -+ -+func newBidiTrie(i int) *bidiTrie { -+ return &bidiTrie{} -+} -+ -+// lookupValue determines the type of block n and looks up the value for b. -+func (t *bidiTrie) lookupValue(n uint32, b byte) uint8 { -+ switch { -+ default: -+ return uint8(bidiValues[n<<6+uint32(b)]) -+ } -+} -+ -+// bidiValues: 259 blocks, 16576 entries, 16576 bytes -+// The third block is the zero block. -+var bidiValues = [16576]uint8{ -+ // Block 0x0, offset 0x0 -+ 0x00: 0x000b, 0x01: 0x000b, 0x02: 0x000b, 0x03: 0x000b, 0x04: 0x000b, 0x05: 0x000b, -+ 0x06: 0x000b, 0x07: 0x000b, 0x08: 0x000b, 0x09: 0x0008, 0x0a: 0x0007, 0x0b: 0x0008, -+ 0x0c: 0x0009, 0x0d: 0x0007, 0x0e: 0x000b, 0x0f: 0x000b, 0x10: 0x000b, 0x11: 0x000b, -+ 0x12: 0x000b, 0x13: 0x000b, 0x14: 0x000b, 0x15: 0x000b, 0x16: 0x000b, 0x17: 0x000b, -+ 0x18: 0x000b, 0x19: 0x000b, 0x1a: 0x000b, 0x1b: 0x000b, 0x1c: 0x0007, 0x1d: 0x0007, -+ 0x1e: 0x0007, 0x1f: 0x0008, 0x20: 0x0009, 0x21: 0x000a, 0x22: 0x000a, 0x23: 0x0004, -+ 0x24: 0x0004, 0x25: 0x0004, 0x26: 0x000a, 0x27: 0x000a, 0x28: 0x003a, 0x29: 0x002a, -+ 0x2a: 0x000a, 0x2b: 0x0003, 0x2c: 0x0006, 0x2d: 0x0003, 0x2e: 0x0006, 0x2f: 0x0006, -+ 0x30: 0x0002, 0x31: 0x0002, 0x32: 0x0002, 0x33: 0x0002, 0x34: 0x0002, 0x35: 0x0002, -+ 0x36: 0x0002, 0x37: 0x0002, 0x38: 0x0002, 0x39: 0x0002, 0x3a: 0x0006, 0x3b: 0x000a, -+ 0x3c: 0x000a, 0x3d: 0x000a, 0x3e: 0x000a, 0x3f: 0x000a, -+ // Block 0x1, offset 0x40 -+ 0x40: 0x000a, -+ 0x5b: 0x005a, 0x5c: 0x000a, 0x5d: 0x004a, -+ 0x5e: 0x000a, 0x5f: 0x000a, 0x60: 0x000a, -+ 0x7b: 0x005a, -+ 0x7c: 0x000a, 0x7d: 0x004a, 0x7e: 0x000a, 0x7f: 0x000b, -+ // Block 0x2, offset 0x80 -+ // Block 0x3, offset 0xc0 -+ 0xc0: 0x000b, 0xc1: 0x000b, 0xc2: 0x000b, 0xc3: 0x000b, 0xc4: 0x000b, 0xc5: 0x0007, -+ 0xc6: 0x000b, 0xc7: 0x000b, 0xc8: 0x000b, 0xc9: 0x000b, 0xca: 0x000b, 0xcb: 0x000b, -+ 0xcc: 0x000b, 0xcd: 0x000b, 0xce: 0x000b, 0xcf: 0x000b, 0xd0: 0x000b, 0xd1: 0x000b, -+ 0xd2: 0x000b, 0xd3: 0x000b, 0xd4: 0x000b, 0xd5: 0x000b, 0xd6: 0x000b, 0xd7: 0x000b, -+ 0xd8: 0x000b, 0xd9: 0x000b, 0xda: 0x000b, 0xdb: 0x000b, 0xdc: 0x000b, 0xdd: 0x000b, -+ 0xde: 0x000b, 0xdf: 0x000b, 0xe0: 0x0006, 0xe1: 0x000a, 0xe2: 0x0004, 0xe3: 0x0004, -+ 0xe4: 0x0004, 0xe5: 0x0004, 0xe6: 0x000a, 0xe7: 0x000a, 0xe8: 0x000a, 0xe9: 0x000a, -+ 0xeb: 0x000a, 0xec: 0x000a, 0xed: 0x000b, 0xee: 0x000a, 0xef: 0x000a, -+ 0xf0: 0x0004, 0xf1: 0x0004, 0xf2: 0x0002, 0xf3: 0x0002, 0xf4: 0x000a, -+ 0xf6: 0x000a, 0xf7: 0x000a, 0xf8: 0x000a, 0xf9: 0x0002, 0xfb: 0x000a, -+ 0xfc: 0x000a, 0xfd: 0x000a, 0xfe: 0x000a, 0xff: 0x000a, -+ // Block 0x4, offset 0x100 -+ 0x117: 0x000a, -+ 0x137: 0x000a, -+ // Block 0x5, offset 0x140 -+ 0x179: 0x000a, 0x17a: 0x000a, -+ // Block 0x6, offset 0x180 -+ 0x182: 0x000a, 0x183: 0x000a, 0x184: 0x000a, 0x185: 0x000a, -+ 0x186: 0x000a, 0x187: 0x000a, 0x188: 0x000a, 0x189: 0x000a, 0x18a: 0x000a, 0x18b: 0x000a, -+ 0x18c: 0x000a, 0x18d: 0x000a, 0x18e: 0x000a, 0x18f: 0x000a, -+ 0x192: 0x000a, 0x193: 0x000a, 0x194: 0x000a, 0x195: 0x000a, 0x196: 0x000a, 0x197: 0x000a, -+ 0x198: 0x000a, 0x199: 0x000a, 0x19a: 0x000a, 0x19b: 0x000a, 0x19c: 0x000a, 0x19d: 0x000a, -+ 0x19e: 0x000a, 0x19f: 0x000a, -+ 0x1a5: 0x000a, 0x1a6: 0x000a, 0x1a7: 0x000a, 0x1a8: 0x000a, 0x1a9: 0x000a, -+ 0x1aa: 0x000a, 0x1ab: 0x000a, 0x1ac: 0x000a, 0x1ad: 0x000a, 0x1af: 0x000a, -+ 0x1b0: 0x000a, 0x1b1: 0x000a, 0x1b2: 0x000a, 0x1b3: 0x000a, 0x1b4: 0x000a, 0x1b5: 0x000a, -+ 0x1b6: 0x000a, 0x1b7: 0x000a, 0x1b8: 0x000a, 0x1b9: 0x000a, 0x1ba: 0x000a, 0x1bb: 0x000a, -+ 0x1bc: 0x000a, 0x1bd: 0x000a, 0x1be: 0x000a, 0x1bf: 0x000a, -+ // Block 0x7, offset 0x1c0 -+ 0x1c0: 0x000c, 0x1c1: 0x000c, 0x1c2: 0x000c, 0x1c3: 0x000c, 0x1c4: 0x000c, 0x1c5: 0x000c, -+ 0x1c6: 0x000c, 0x1c7: 0x000c, 0x1c8: 0x000c, 0x1c9: 0x000c, 0x1ca: 0x000c, 0x1cb: 0x000c, -+ 0x1cc: 0x000c, 0x1cd: 0x000c, 0x1ce: 0x000c, 0x1cf: 0x000c, 0x1d0: 0x000c, 0x1d1: 0x000c, -+ 0x1d2: 0x000c, 0x1d3: 0x000c, 0x1d4: 0x000c, 0x1d5: 0x000c, 0x1d6: 0x000c, 0x1d7: 0x000c, -+ 0x1d8: 0x000c, 0x1d9: 0x000c, 0x1da: 0x000c, 0x1db: 0x000c, 0x1dc: 0x000c, 0x1dd: 0x000c, -+ 0x1de: 0x000c, 0x1df: 0x000c, 0x1e0: 0x000c, 0x1e1: 0x000c, 0x1e2: 0x000c, 0x1e3: 0x000c, -+ 0x1e4: 0x000c, 0x1e5: 0x000c, 0x1e6: 0x000c, 0x1e7: 0x000c, 0x1e8: 0x000c, 0x1e9: 0x000c, -+ 0x1ea: 0x000c, 0x1eb: 0x000c, 0x1ec: 0x000c, 0x1ed: 0x000c, 0x1ee: 0x000c, 0x1ef: 0x000c, -+ 0x1f0: 0x000c, 0x1f1: 0x000c, 0x1f2: 0x000c, 0x1f3: 0x000c, 0x1f4: 0x000c, 0x1f5: 0x000c, -+ 0x1f6: 0x000c, 0x1f7: 0x000c, 0x1f8: 0x000c, 0x1f9: 0x000c, 0x1fa: 0x000c, 0x1fb: 0x000c, -+ 0x1fc: 0x000c, 0x1fd: 0x000c, 0x1fe: 0x000c, 0x1ff: 0x000c, -+ // Block 0x8, offset 0x200 -+ 0x200: 0x000c, 0x201: 0x000c, 0x202: 0x000c, 0x203: 0x000c, 0x204: 0x000c, 0x205: 0x000c, -+ 0x206: 0x000c, 0x207: 0x000c, 0x208: 0x000c, 0x209: 0x000c, 0x20a: 0x000c, 0x20b: 0x000c, -+ 0x20c: 0x000c, 0x20d: 0x000c, 0x20e: 0x000c, 0x20f: 0x000c, 0x210: 0x000c, 0x211: 0x000c, -+ 0x212: 0x000c, 0x213: 0x000c, 0x214: 0x000c, 0x215: 0x000c, 0x216: 0x000c, 0x217: 0x000c, -+ 0x218: 0x000c, 0x219: 0x000c, 0x21a: 0x000c, 0x21b: 0x000c, 0x21c: 0x000c, 0x21d: 0x000c, -+ 0x21e: 0x000c, 0x21f: 0x000c, 0x220: 0x000c, 0x221: 0x000c, 0x222: 0x000c, 0x223: 0x000c, -+ 0x224: 0x000c, 0x225: 0x000c, 0x226: 0x000c, 0x227: 0x000c, 0x228: 0x000c, 0x229: 0x000c, -+ 0x22a: 0x000c, 0x22b: 0x000c, 0x22c: 0x000c, 0x22d: 0x000c, 0x22e: 0x000c, 0x22f: 0x000c, -+ 0x234: 0x000a, 0x235: 0x000a, -+ 0x23e: 0x000a, -+ // Block 0x9, offset 0x240 -+ 0x244: 0x000a, 0x245: 0x000a, -+ 0x247: 0x000a, -+ // Block 0xa, offset 0x280 -+ 0x2b6: 0x000a, -+ // Block 0xb, offset 0x2c0 -+ 0x2c3: 0x000c, 0x2c4: 0x000c, 0x2c5: 0x000c, -+ 0x2c6: 0x000c, 0x2c7: 0x000c, 0x2c8: 0x000c, 0x2c9: 0x000c, -+ // Block 0xc, offset 0x300 -+ 0x30a: 0x000a, -+ 0x30d: 0x000a, 0x30e: 0x000a, 0x30f: 0x0004, 0x310: 0x0001, 0x311: 0x000c, -+ 0x312: 0x000c, 0x313: 0x000c, 0x314: 0x000c, 0x315: 0x000c, 0x316: 0x000c, 0x317: 0x000c, -+ 0x318: 0x000c, 0x319: 0x000c, 0x31a: 0x000c, 0x31b: 0x000c, 0x31c: 0x000c, 0x31d: 0x000c, -+ 0x31e: 0x000c, 0x31f: 0x000c, 0x320: 0x000c, 0x321: 0x000c, 0x322: 0x000c, 0x323: 0x000c, -+ 0x324: 0x000c, 0x325: 0x000c, 0x326: 0x000c, 0x327: 0x000c, 0x328: 0x000c, 0x329: 0x000c, -+ 0x32a: 0x000c, 0x32b: 0x000c, 0x32c: 0x000c, 0x32d: 0x000c, 0x32e: 0x000c, 0x32f: 0x000c, -+ 0x330: 0x000c, 0x331: 0x000c, 0x332: 0x000c, 0x333: 0x000c, 0x334: 0x000c, 0x335: 0x000c, -+ 0x336: 0x000c, 0x337: 0x000c, 0x338: 0x000c, 0x339: 0x000c, 0x33a: 0x000c, 0x33b: 0x000c, -+ 0x33c: 0x000c, 0x33d: 0x000c, 0x33e: 0x0001, 0x33f: 0x000c, -+ // Block 0xd, offset 0x340 -+ 0x340: 0x0001, 0x341: 0x000c, 0x342: 0x000c, 0x343: 0x0001, 0x344: 0x000c, 0x345: 0x000c, -+ 0x346: 0x0001, 0x347: 0x000c, 0x348: 0x0001, 0x349: 0x0001, 0x34a: 0x0001, 0x34b: 0x0001, -+ 0x34c: 0x0001, 0x34d: 0x0001, 0x34e: 0x0001, 0x34f: 0x0001, 0x350: 0x0001, 0x351: 0x0001, -+ 0x352: 0x0001, 0x353: 0x0001, 0x354: 0x0001, 0x355: 0x0001, 0x356: 0x0001, 0x357: 0x0001, -+ 0x358: 0x0001, 0x359: 0x0001, 0x35a: 0x0001, 0x35b: 0x0001, 0x35c: 0x0001, 0x35d: 0x0001, -+ 0x35e: 0x0001, 0x35f: 0x0001, 0x360: 0x0001, 0x361: 0x0001, 0x362: 0x0001, 0x363: 0x0001, -+ 0x364: 0x0001, 0x365: 0x0001, 0x366: 0x0001, 0x367: 0x0001, 0x368: 0x0001, 0x369: 0x0001, -+ 0x36a: 0x0001, 0x36b: 0x0001, 0x36c: 0x0001, 0x36d: 0x0001, 0x36e: 0x0001, 0x36f: 0x0001, -+ 0x370: 0x0001, 0x371: 0x0001, 0x372: 0x0001, 0x373: 0x0001, 0x374: 0x0001, 0x375: 0x0001, -+ 0x376: 0x0001, 0x377: 0x0001, 0x378: 0x0001, 0x379: 0x0001, 0x37a: 0x0001, 0x37b: 0x0001, -+ 0x37c: 0x0001, 0x37d: 0x0001, 0x37e: 0x0001, 0x37f: 0x0001, -+ // Block 0xe, offset 0x380 -+ 0x380: 0x0005, 0x381: 0x0005, 0x382: 0x0005, 0x383: 0x0005, 0x384: 0x0005, 0x385: 0x0005, -+ 0x386: 0x000a, 0x387: 0x000a, 0x388: 0x000d, 0x389: 0x0004, 0x38a: 0x0004, 0x38b: 0x000d, -+ 0x38c: 0x0006, 0x38d: 0x000d, 0x38e: 0x000a, 0x38f: 0x000a, 0x390: 0x000c, 0x391: 0x000c, -+ 0x392: 0x000c, 0x393: 0x000c, 0x394: 0x000c, 0x395: 0x000c, 0x396: 0x000c, 0x397: 0x000c, -+ 0x398: 0x000c, 0x399: 0x000c, 0x39a: 0x000c, 0x39b: 0x000d, 0x39c: 0x000d, 0x39d: 0x000d, -+ 0x39e: 0x000d, 0x39f: 0x000d, 0x3a0: 0x000d, 0x3a1: 0x000d, 0x3a2: 0x000d, 0x3a3: 0x000d, -+ 0x3a4: 0x000d, 0x3a5: 0x000d, 0x3a6: 0x000d, 0x3a7: 0x000d, 0x3a8: 0x000d, 0x3a9: 0x000d, -+ 0x3aa: 0x000d, 0x3ab: 0x000d, 0x3ac: 0x000d, 0x3ad: 0x000d, 0x3ae: 0x000d, 0x3af: 0x000d, -+ 0x3b0: 0x000d, 0x3b1: 0x000d, 0x3b2: 0x000d, 0x3b3: 0x000d, 0x3b4: 0x000d, 0x3b5: 0x000d, -+ 0x3b6: 0x000d, 0x3b7: 0x000d, 0x3b8: 0x000d, 0x3b9: 0x000d, 0x3ba: 0x000d, 0x3bb: 0x000d, -+ 0x3bc: 0x000d, 0x3bd: 0x000d, 0x3be: 0x000d, 0x3bf: 0x000d, -+ // Block 0xf, offset 0x3c0 -+ 0x3c0: 0x000d, 0x3c1: 0x000d, 0x3c2: 0x000d, 0x3c3: 0x000d, 0x3c4: 0x000d, 0x3c5: 0x000d, -+ 0x3c6: 0x000d, 0x3c7: 0x000d, 0x3c8: 0x000d, 0x3c9: 0x000d, 0x3ca: 0x000d, 0x3cb: 0x000c, -+ 0x3cc: 0x000c, 0x3cd: 0x000c, 0x3ce: 0x000c, 0x3cf: 0x000c, 0x3d0: 0x000c, 0x3d1: 0x000c, -+ 0x3d2: 0x000c, 0x3d3: 0x000c, 0x3d4: 0x000c, 0x3d5: 0x000c, 0x3d6: 0x000c, 0x3d7: 0x000c, -+ 0x3d8: 0x000c, 0x3d9: 0x000c, 0x3da: 0x000c, 0x3db: 0x000c, 0x3dc: 0x000c, 0x3dd: 0x000c, -+ 0x3de: 0x000c, 0x3df: 0x000c, 0x3e0: 0x0005, 0x3e1: 0x0005, 0x3e2: 0x0005, 0x3e3: 0x0005, -+ 0x3e4: 0x0005, 0x3e5: 0x0005, 0x3e6: 0x0005, 0x3e7: 0x0005, 0x3e8: 0x0005, 0x3e9: 0x0005, -+ 0x3ea: 0x0004, 0x3eb: 0x0005, 0x3ec: 0x0005, 0x3ed: 0x000d, 0x3ee: 0x000d, 0x3ef: 0x000d, -+ 0x3f0: 0x000c, 0x3f1: 0x000d, 0x3f2: 0x000d, 0x3f3: 0x000d, 0x3f4: 0x000d, 0x3f5: 0x000d, -+ 0x3f6: 0x000d, 0x3f7: 0x000d, 0x3f8: 0x000d, 0x3f9: 0x000d, 0x3fa: 0x000d, 0x3fb: 0x000d, -+ 0x3fc: 0x000d, 0x3fd: 0x000d, 0x3fe: 0x000d, 0x3ff: 0x000d, -+ // Block 0x10, offset 0x400 -+ 0x400: 0x000d, 0x401: 0x000d, 0x402: 0x000d, 0x403: 0x000d, 0x404: 0x000d, 0x405: 0x000d, -+ 0x406: 0x000d, 0x407: 0x000d, 0x408: 0x000d, 0x409: 0x000d, 0x40a: 0x000d, 0x40b: 0x000d, -+ 0x40c: 0x000d, 0x40d: 0x000d, 0x40e: 0x000d, 0x40f: 0x000d, 0x410: 0x000d, 0x411: 0x000d, -+ 0x412: 0x000d, 0x413: 0x000d, 0x414: 0x000d, 0x415: 0x000d, 0x416: 0x000d, 0x417: 0x000d, -+ 0x418: 0x000d, 0x419: 0x000d, 0x41a: 0x000d, 0x41b: 0x000d, 0x41c: 0x000d, 0x41d: 0x000d, -+ 0x41e: 0x000d, 0x41f: 0x000d, 0x420: 0x000d, 0x421: 0x000d, 0x422: 0x000d, 0x423: 0x000d, -+ 0x424: 0x000d, 0x425: 0x000d, 0x426: 0x000d, 0x427: 0x000d, 0x428: 0x000d, 0x429: 0x000d, -+ 0x42a: 0x000d, 0x42b: 0x000d, 0x42c: 0x000d, 0x42d: 0x000d, 0x42e: 0x000d, 0x42f: 0x000d, -+ 0x430: 0x000d, 0x431: 0x000d, 0x432: 0x000d, 0x433: 0x000d, 0x434: 0x000d, 0x435: 0x000d, -+ 0x436: 0x000d, 0x437: 0x000d, 0x438: 0x000d, 0x439: 0x000d, 0x43a: 0x000d, 0x43b: 0x000d, -+ 0x43c: 0x000d, 0x43d: 0x000d, 0x43e: 0x000d, 0x43f: 0x000d, -+ // Block 0x11, offset 0x440 -+ 0x440: 0x000d, 0x441: 0x000d, 0x442: 0x000d, 0x443: 0x000d, 0x444: 0x000d, 0x445: 0x000d, -+ 0x446: 0x000d, 0x447: 0x000d, 0x448: 0x000d, 0x449: 0x000d, 0x44a: 0x000d, 0x44b: 0x000d, -+ 0x44c: 0x000d, 0x44d: 0x000d, 0x44e: 0x000d, 0x44f: 0x000d, 0x450: 0x000d, 0x451: 0x000d, -+ 0x452: 0x000d, 0x453: 0x000d, 0x454: 0x000d, 0x455: 0x000d, 0x456: 0x000c, 0x457: 0x000c, -+ 0x458: 0x000c, 0x459: 0x000c, 0x45a: 0x000c, 0x45b: 0x000c, 0x45c: 0x000c, 0x45d: 0x0005, -+ 0x45e: 0x000a, 0x45f: 0x000c, 0x460: 0x000c, 0x461: 0x000c, 0x462: 0x000c, 0x463: 0x000c, -+ 0x464: 0x000c, 0x465: 0x000d, 0x466: 0x000d, 0x467: 0x000c, 0x468: 0x000c, 0x469: 0x000a, -+ 0x46a: 0x000c, 0x46b: 0x000c, 0x46c: 0x000c, 0x46d: 0x000c, 0x46e: 0x000d, 0x46f: 0x000d, -+ 0x470: 0x0002, 0x471: 0x0002, 0x472: 0x0002, 0x473: 0x0002, 0x474: 0x0002, 0x475: 0x0002, -+ 0x476: 0x0002, 0x477: 0x0002, 0x478: 0x0002, 0x479: 0x0002, 0x47a: 0x000d, 0x47b: 0x000d, -+ 0x47c: 0x000d, 0x47d: 0x000d, 0x47e: 0x000d, 0x47f: 0x000d, -+ // Block 0x12, offset 0x480 -+ 0x480: 0x000d, 0x481: 0x000d, 0x482: 0x000d, 0x483: 0x000d, 0x484: 0x000d, 0x485: 0x000d, -+ 0x486: 0x000d, 0x487: 0x000d, 0x488: 0x000d, 0x489: 0x000d, 0x48a: 0x000d, 0x48b: 0x000d, -+ 0x48c: 0x000d, 0x48d: 0x000d, 0x48e: 0x000d, 0x48f: 0x000d, 0x490: 0x000d, 0x491: 0x000c, -+ 0x492: 0x000d, 0x493: 0x000d, 0x494: 0x000d, 0x495: 0x000d, 0x496: 0x000d, 0x497: 0x000d, -+ 0x498: 0x000d, 0x499: 0x000d, 0x49a: 0x000d, 0x49b: 0x000d, 0x49c: 0x000d, 0x49d: 0x000d, -+ 0x49e: 0x000d, 0x49f: 0x000d, 0x4a0: 0x000d, 0x4a1: 0x000d, 0x4a2: 0x000d, 0x4a3: 0x000d, -+ 0x4a4: 0x000d, 0x4a5: 0x000d, 0x4a6: 0x000d, 0x4a7: 0x000d, 0x4a8: 0x000d, 0x4a9: 0x000d, -+ 0x4aa: 0x000d, 0x4ab: 0x000d, 0x4ac: 0x000d, 0x4ad: 0x000d, 0x4ae: 0x000d, 0x4af: 0x000d, -+ 0x4b0: 0x000c, 0x4b1: 0x000c, 0x4b2: 0x000c, 0x4b3: 0x000c, 0x4b4: 0x000c, 0x4b5: 0x000c, -+ 0x4b6: 0x000c, 0x4b7: 0x000c, 0x4b8: 0x000c, 0x4b9: 0x000c, 0x4ba: 0x000c, 0x4bb: 0x000c, -+ 0x4bc: 0x000c, 0x4bd: 0x000c, 0x4be: 0x000c, 0x4bf: 0x000c, -+ // Block 0x13, offset 0x4c0 -+ 0x4c0: 0x000c, 0x4c1: 0x000c, 0x4c2: 0x000c, 0x4c3: 0x000c, 0x4c4: 0x000c, 0x4c5: 0x000c, -+ 0x4c6: 0x000c, 0x4c7: 0x000c, 0x4c8: 0x000c, 0x4c9: 0x000c, 0x4ca: 0x000c, 0x4cb: 0x000d, -+ 0x4cc: 0x000d, 0x4cd: 0x000d, 0x4ce: 0x000d, 0x4cf: 0x000d, 0x4d0: 0x000d, 0x4d1: 0x000d, -+ 0x4d2: 0x000d, 0x4d3: 0x000d, 0x4d4: 0x000d, 0x4d5: 0x000d, 0x4d6: 0x000d, 0x4d7: 0x000d, -+ 0x4d8: 0x000d, 0x4d9: 0x000d, 0x4da: 0x000d, 0x4db: 0x000d, 0x4dc: 0x000d, 0x4dd: 0x000d, -+ 0x4de: 0x000d, 0x4df: 0x000d, 0x4e0: 0x000d, 0x4e1: 0x000d, 0x4e2: 0x000d, 0x4e3: 0x000d, -+ 0x4e4: 0x000d, 0x4e5: 0x000d, 0x4e6: 0x000d, 0x4e7: 0x000d, 0x4e8: 0x000d, 0x4e9: 0x000d, -+ 0x4ea: 0x000d, 0x4eb: 0x000d, 0x4ec: 0x000d, 0x4ed: 0x000d, 0x4ee: 0x000d, 0x4ef: 0x000d, -+ 0x4f0: 0x000d, 0x4f1: 0x000d, 0x4f2: 0x000d, 0x4f3: 0x000d, 0x4f4: 0x000d, 0x4f5: 0x000d, -+ 0x4f6: 0x000d, 0x4f7: 0x000d, 0x4f8: 0x000d, 0x4f9: 0x000d, 0x4fa: 0x000d, 0x4fb: 0x000d, -+ 0x4fc: 0x000d, 0x4fd: 0x000d, 0x4fe: 0x000d, 0x4ff: 0x000d, -+ // Block 0x14, offset 0x500 -+ 0x500: 0x000d, 0x501: 0x000d, 0x502: 0x000d, 0x503: 0x000d, 0x504: 0x000d, 0x505: 0x000d, -+ 0x506: 0x000d, 0x507: 0x000d, 0x508: 0x000d, 0x509: 0x000d, 0x50a: 0x000d, 0x50b: 0x000d, -+ 0x50c: 0x000d, 0x50d: 0x000d, 0x50e: 0x000d, 0x50f: 0x000d, 0x510: 0x000d, 0x511: 0x000d, -+ 0x512: 0x000d, 0x513: 0x000d, 0x514: 0x000d, 0x515: 0x000d, 0x516: 0x000d, 0x517: 0x000d, -+ 0x518: 0x000d, 0x519: 0x000d, 0x51a: 0x000d, 0x51b: 0x000d, 0x51c: 0x000d, 0x51d: 0x000d, -+ 0x51e: 0x000d, 0x51f: 0x000d, 0x520: 0x000d, 0x521: 0x000d, 0x522: 0x000d, 0x523: 0x000d, -+ 0x524: 0x000d, 0x525: 0x000d, 0x526: 0x000c, 0x527: 0x000c, 0x528: 0x000c, 0x529: 0x000c, -+ 0x52a: 0x000c, 0x52b: 0x000c, 0x52c: 0x000c, 0x52d: 0x000c, 0x52e: 0x000c, 0x52f: 0x000c, -+ 0x530: 0x000c, 0x531: 0x000d, 0x532: 0x000d, 0x533: 0x000d, 0x534: 0x000d, 0x535: 0x000d, -+ 0x536: 0x000d, 0x537: 0x000d, 0x538: 0x000d, 0x539: 0x000d, 0x53a: 0x000d, 0x53b: 0x000d, -+ 0x53c: 0x000d, 0x53d: 0x000d, 0x53e: 0x000d, 0x53f: 0x000d, -+ // Block 0x15, offset 0x540 -+ 0x540: 0x0001, 0x541: 0x0001, 0x542: 0x0001, 0x543: 0x0001, 0x544: 0x0001, 0x545: 0x0001, -+ 0x546: 0x0001, 0x547: 0x0001, 0x548: 0x0001, 0x549: 0x0001, 0x54a: 0x0001, 0x54b: 0x0001, -+ 0x54c: 0x0001, 0x54d: 0x0001, 0x54e: 0x0001, 0x54f: 0x0001, 0x550: 0x0001, 0x551: 0x0001, -+ 0x552: 0x0001, 0x553: 0x0001, 0x554: 0x0001, 0x555: 0x0001, 0x556: 0x0001, 0x557: 0x0001, -+ 0x558: 0x0001, 0x559: 0x0001, 0x55a: 0x0001, 0x55b: 0x0001, 0x55c: 0x0001, 0x55d: 0x0001, -+ 0x55e: 0x0001, 0x55f: 0x0001, 0x560: 0x0001, 0x561: 0x0001, 0x562: 0x0001, 0x563: 0x0001, -+ 0x564: 0x0001, 0x565: 0x0001, 0x566: 0x0001, 0x567: 0x0001, 0x568: 0x0001, 0x569: 0x0001, -+ 0x56a: 0x0001, 0x56b: 0x000c, 0x56c: 0x000c, 0x56d: 0x000c, 0x56e: 0x000c, 0x56f: 0x000c, -+ 0x570: 0x000c, 0x571: 0x000c, 0x572: 0x000c, 0x573: 0x000c, 0x574: 0x0001, 0x575: 0x0001, -+ 0x576: 0x000a, 0x577: 0x000a, 0x578: 0x000a, 0x579: 0x000a, 0x57a: 0x0001, 0x57b: 0x0001, -+ 0x57c: 0x0001, 0x57d: 0x000c, 0x57e: 0x0001, 0x57f: 0x0001, -+ // Block 0x16, offset 0x580 -+ 0x580: 0x0001, 0x581: 0x0001, 0x582: 0x0001, 0x583: 0x0001, 0x584: 0x0001, 0x585: 0x0001, -+ 0x586: 0x0001, 0x587: 0x0001, 0x588: 0x0001, 0x589: 0x0001, 0x58a: 0x0001, 0x58b: 0x0001, -+ 0x58c: 0x0001, 0x58d: 0x0001, 0x58e: 0x0001, 0x58f: 0x0001, 0x590: 0x0001, 0x591: 0x0001, -+ 0x592: 0x0001, 0x593: 0x0001, 0x594: 0x0001, 0x595: 0x0001, 0x596: 0x000c, 0x597: 0x000c, -+ 0x598: 0x000c, 0x599: 0x000c, 0x59a: 0x0001, 0x59b: 0x000c, 0x59c: 0x000c, 0x59d: 0x000c, -+ 0x59e: 0x000c, 0x59f: 0x000c, 0x5a0: 0x000c, 0x5a1: 0x000c, 0x5a2: 0x000c, 0x5a3: 0x000c, -+ 0x5a4: 0x0001, 0x5a5: 0x000c, 0x5a6: 0x000c, 0x5a7: 0x000c, 0x5a8: 0x0001, 0x5a9: 0x000c, -+ 0x5aa: 0x000c, 0x5ab: 0x000c, 0x5ac: 0x000c, 0x5ad: 0x000c, 0x5ae: 0x0001, 0x5af: 0x0001, -+ 0x5b0: 0x0001, 0x5b1: 0x0001, 0x5b2: 0x0001, 0x5b3: 0x0001, 0x5b4: 0x0001, 0x5b5: 0x0001, -+ 0x5b6: 0x0001, 0x5b7: 0x0001, 0x5b8: 0x0001, 0x5b9: 0x0001, 0x5ba: 0x0001, 0x5bb: 0x0001, -+ 0x5bc: 0x0001, 0x5bd: 0x0001, 0x5be: 0x0001, 0x5bf: 0x0001, -+ // Block 0x17, offset 0x5c0 -+ 0x5c0: 0x0001, 0x5c1: 0x0001, 0x5c2: 0x0001, 0x5c3: 0x0001, 0x5c4: 0x0001, 0x5c5: 0x0001, -+ 0x5c6: 0x0001, 0x5c7: 0x0001, 0x5c8: 0x0001, 0x5c9: 0x0001, 0x5ca: 0x0001, 0x5cb: 0x0001, -+ 0x5cc: 0x0001, 0x5cd: 0x0001, 0x5ce: 0x0001, 0x5cf: 0x0001, 0x5d0: 0x0001, 0x5d1: 0x0001, -+ 0x5d2: 0x0001, 0x5d3: 0x0001, 0x5d4: 0x0001, 0x5d5: 0x0001, 0x5d6: 0x0001, 0x5d7: 0x0001, -+ 0x5d8: 0x0001, 0x5d9: 0x000c, 0x5da: 0x000c, 0x5db: 0x000c, 0x5dc: 0x0001, 0x5dd: 0x0001, -+ 0x5de: 0x0001, 0x5df: 0x0001, 0x5e0: 0x000d, 0x5e1: 0x000d, 0x5e2: 0x000d, 0x5e3: 0x000d, -+ 0x5e4: 0x000d, 0x5e5: 0x000d, 0x5e6: 0x000d, 0x5e7: 0x000d, 0x5e8: 0x000d, 0x5e9: 0x000d, -+ 0x5ea: 0x000d, 0x5eb: 0x0001, 0x5ec: 0x0001, 0x5ed: 0x0001, 0x5ee: 0x0001, 0x5ef: 0x0001, -+ 0x5f0: 0x000d, 0x5f1: 0x000d, 0x5f2: 0x000d, 0x5f3: 0x000d, 0x5f4: 0x000d, 0x5f5: 0x000d, -+ 0x5f6: 0x000d, 0x5f7: 0x000d, 0x5f8: 0x000d, 0x5f9: 0x000d, 0x5fa: 0x000d, 0x5fb: 0x000d, -+ 0x5fc: 0x000d, 0x5fd: 0x000d, 0x5fe: 0x000d, 0x5ff: 0x000d, -+ // Block 0x18, offset 0x600 -+ 0x600: 0x000d, 0x601: 0x000d, 0x602: 0x000d, 0x603: 0x000d, 0x604: 0x000d, 0x605: 0x000d, -+ 0x606: 0x000d, 0x607: 0x000d, 0x608: 0x000d, 0x609: 0x000d, 0x60a: 0x000d, 0x60b: 0x000d, -+ 0x60c: 0x000d, 0x60d: 0x000d, 0x60e: 0x000d, 0x60f: 0x0001, 0x610: 0x0005, 0x611: 0x0005, -+ 0x612: 0x0001, 0x613: 0x0001, 0x614: 0x0001, 0x615: 0x0001, 0x616: 0x0001, 0x617: 0x0001, -+ 0x618: 0x000c, 0x619: 0x000c, 0x61a: 0x000c, 0x61b: 0x000c, 0x61c: 0x000c, 0x61d: 0x000c, -+ 0x61e: 0x000c, 0x61f: 0x000c, 0x620: 0x000d, 0x621: 0x000d, 0x622: 0x000d, 0x623: 0x000d, -+ 0x624: 0x000d, 0x625: 0x000d, 0x626: 0x000d, 0x627: 0x000d, 0x628: 0x000d, 0x629: 0x000d, -+ 0x62a: 0x000d, 0x62b: 0x000d, 0x62c: 0x000d, 0x62d: 0x000d, 0x62e: 0x000d, 0x62f: 0x000d, -+ 0x630: 0x000d, 0x631: 0x000d, 0x632: 0x000d, 0x633: 0x000d, 0x634: 0x000d, 0x635: 0x000d, -+ 0x636: 0x000d, 0x637: 0x000d, 0x638: 0x000d, 0x639: 0x000d, 0x63a: 0x000d, 0x63b: 0x000d, -+ 0x63c: 0x000d, 0x63d: 0x000d, 0x63e: 0x000d, 0x63f: 0x000d, -+ // Block 0x19, offset 0x640 -+ 0x640: 0x000d, 0x641: 0x000d, 0x642: 0x000d, 0x643: 0x000d, 0x644: 0x000d, 0x645: 0x000d, -+ 0x646: 0x000d, 0x647: 0x000d, 0x648: 0x000d, 0x649: 0x000d, 0x64a: 0x000c, 0x64b: 0x000c, -+ 0x64c: 0x000c, 0x64d: 0x000c, 0x64e: 0x000c, 0x64f: 0x000c, 0x650: 0x000c, 0x651: 0x000c, -+ 0x652: 0x000c, 0x653: 0x000c, 0x654: 0x000c, 0x655: 0x000c, 0x656: 0x000c, 0x657: 0x000c, -+ 0x658: 0x000c, 0x659: 0x000c, 0x65a: 0x000c, 0x65b: 0x000c, 0x65c: 0x000c, 0x65d: 0x000c, -+ 0x65e: 0x000c, 0x65f: 0x000c, 0x660: 0x000c, 0x661: 0x000c, 0x662: 0x0005, 0x663: 0x000c, -+ 0x664: 0x000c, 0x665: 0x000c, 0x666: 0x000c, 0x667: 0x000c, 0x668: 0x000c, 0x669: 0x000c, -+ 0x66a: 0x000c, 0x66b: 0x000c, 0x66c: 0x000c, 0x66d: 0x000c, 0x66e: 0x000c, 0x66f: 0x000c, -+ 0x670: 0x000c, 0x671: 0x000c, 0x672: 0x000c, 0x673: 0x000c, 0x674: 0x000c, 0x675: 0x000c, -+ 0x676: 0x000c, 0x677: 0x000c, 0x678: 0x000c, 0x679: 0x000c, 0x67a: 0x000c, 0x67b: 0x000c, -+ 0x67c: 0x000c, 0x67d: 0x000c, 0x67e: 0x000c, 0x67f: 0x000c, -+ // Block 0x1a, offset 0x680 -+ 0x680: 0x000c, 0x681: 0x000c, 0x682: 0x000c, -+ 0x6ba: 0x000c, -+ 0x6bc: 0x000c, -+ // Block 0x1b, offset 0x6c0 -+ 0x6c1: 0x000c, 0x6c2: 0x000c, 0x6c3: 0x000c, 0x6c4: 0x000c, 0x6c5: 0x000c, -+ 0x6c6: 0x000c, 0x6c7: 0x000c, 0x6c8: 0x000c, -+ 0x6cd: 0x000c, 0x6d1: 0x000c, -+ 0x6d2: 0x000c, 0x6d3: 0x000c, 0x6d4: 0x000c, 0x6d5: 0x000c, 0x6d6: 0x000c, 0x6d7: 0x000c, -+ 0x6e2: 0x000c, 0x6e3: 0x000c, -+ // Block 0x1c, offset 0x700 -+ 0x701: 0x000c, -+ 0x73c: 0x000c, -+ // Block 0x1d, offset 0x740 -+ 0x741: 0x000c, 0x742: 0x000c, 0x743: 0x000c, 0x744: 0x000c, -+ 0x74d: 0x000c, -+ 0x762: 0x000c, 0x763: 0x000c, -+ 0x772: 0x0004, 0x773: 0x0004, -+ 0x77b: 0x0004, -+ 0x77e: 0x000c, -+ // Block 0x1e, offset 0x780 -+ 0x781: 0x000c, 0x782: 0x000c, -+ 0x7bc: 0x000c, -+ // Block 0x1f, offset 0x7c0 -+ 0x7c1: 0x000c, 0x7c2: 0x000c, -+ 0x7c7: 0x000c, 0x7c8: 0x000c, 0x7cb: 0x000c, -+ 0x7cc: 0x000c, 0x7cd: 0x000c, 0x7d1: 0x000c, -+ 0x7f0: 0x000c, 0x7f1: 0x000c, 0x7f5: 0x000c, -+ // Block 0x20, offset 0x800 -+ 0x801: 0x000c, 0x802: 0x000c, 0x803: 0x000c, 0x804: 0x000c, 0x805: 0x000c, -+ 0x807: 0x000c, 0x808: 0x000c, -+ 0x80d: 0x000c, -+ 0x822: 0x000c, 0x823: 0x000c, -+ 0x831: 0x0004, -+ 0x83a: 0x000c, 0x83b: 0x000c, -+ 0x83c: 0x000c, 0x83d: 0x000c, 0x83e: 0x000c, 0x83f: 0x000c, -+ // Block 0x21, offset 0x840 -+ 0x841: 0x000c, -+ 0x87c: 0x000c, 0x87f: 0x000c, -+ // Block 0x22, offset 0x880 -+ 0x881: 0x000c, 0x882: 0x000c, 0x883: 0x000c, 0x884: 0x000c, -+ 0x88d: 0x000c, -+ 0x895: 0x000c, 0x896: 0x000c, -+ 0x8a2: 0x000c, 0x8a3: 0x000c, -+ // Block 0x23, offset 0x8c0 -+ 0x8c2: 0x000c, -+ // Block 0x24, offset 0x900 -+ 0x900: 0x000c, -+ 0x90d: 0x000c, -+ 0x933: 0x000a, 0x934: 0x000a, 0x935: 0x000a, -+ 0x936: 0x000a, 0x937: 0x000a, 0x938: 0x000a, 0x939: 0x0004, 0x93a: 0x000a, -+ // Block 0x25, offset 0x940 -+ 0x940: 0x000c, 0x944: 0x000c, -+ 0x97c: 0x000c, 0x97e: 0x000c, 0x97f: 0x000c, -+ // Block 0x26, offset 0x980 -+ 0x980: 0x000c, -+ 0x986: 0x000c, 0x987: 0x000c, 0x988: 0x000c, 0x98a: 0x000c, 0x98b: 0x000c, -+ 0x98c: 0x000c, 0x98d: 0x000c, -+ 0x995: 0x000c, 0x996: 0x000c, -+ 0x9a2: 0x000c, 0x9a3: 0x000c, -+ 0x9b8: 0x000a, 0x9b9: 0x000a, 0x9ba: 0x000a, 0x9bb: 0x000a, -+ 0x9bc: 0x000a, 0x9bd: 0x000a, 0x9be: 0x000a, -+ // Block 0x27, offset 0x9c0 -+ 0x9cc: 0x000c, 0x9cd: 0x000c, -+ 0x9e2: 0x000c, 0x9e3: 0x000c, -+ // Block 0x28, offset 0xa00 -+ 0xa00: 0x000c, 0xa01: 0x000c, -+ 0xa3b: 0x000c, -+ 0xa3c: 0x000c, -+ // Block 0x29, offset 0xa40 -+ 0xa41: 0x000c, 0xa42: 0x000c, 0xa43: 0x000c, 0xa44: 0x000c, -+ 0xa4d: 0x000c, -+ 0xa62: 0x000c, 0xa63: 0x000c, -+ // Block 0x2a, offset 0xa80 -+ 0xa81: 0x000c, -+ // Block 0x2b, offset 0xac0 -+ 0xaca: 0x000c, -+ 0xad2: 0x000c, 0xad3: 0x000c, 0xad4: 0x000c, 0xad6: 0x000c, -+ // Block 0x2c, offset 0xb00 -+ 0xb31: 0x000c, 0xb34: 0x000c, 0xb35: 0x000c, -+ 0xb36: 0x000c, 0xb37: 0x000c, 0xb38: 0x000c, 0xb39: 0x000c, 0xb3a: 0x000c, -+ 0xb3f: 0x0004, -+ // Block 0x2d, offset 0xb40 -+ 0xb47: 0x000c, 0xb48: 0x000c, 0xb49: 0x000c, 0xb4a: 0x000c, 0xb4b: 0x000c, -+ 0xb4c: 0x000c, 0xb4d: 0x000c, 0xb4e: 0x000c, -+ // Block 0x2e, offset 0xb80 -+ 0xbb1: 0x000c, 0xbb4: 0x000c, 0xbb5: 0x000c, -+ 0xbb6: 0x000c, 0xbb7: 0x000c, 0xbb8: 0x000c, 0xbb9: 0x000c, 0xbba: 0x000c, 0xbbb: 0x000c, -+ 0xbbc: 0x000c, -+ // Block 0x2f, offset 0xbc0 -+ 0xbc8: 0x000c, 0xbc9: 0x000c, 0xbca: 0x000c, 0xbcb: 0x000c, -+ 0xbcc: 0x000c, 0xbcd: 0x000c, 0xbce: 0x000c, -+ // Block 0x30, offset 0xc00 -+ 0xc18: 0x000c, 0xc19: 0x000c, -+ 0xc35: 0x000c, -+ 0xc37: 0x000c, 0xc39: 0x000c, 0xc3a: 0x003a, 0xc3b: 0x002a, -+ 0xc3c: 0x003a, 0xc3d: 0x002a, -+ // Block 0x31, offset 0xc40 -+ 0xc71: 0x000c, 0xc72: 0x000c, 0xc73: 0x000c, 0xc74: 0x000c, 0xc75: 0x000c, -+ 0xc76: 0x000c, 0xc77: 0x000c, 0xc78: 0x000c, 0xc79: 0x000c, 0xc7a: 0x000c, 0xc7b: 0x000c, -+ 0xc7c: 0x000c, 0xc7d: 0x000c, 0xc7e: 0x000c, -+ // Block 0x32, offset 0xc80 -+ 0xc80: 0x000c, 0xc81: 0x000c, 0xc82: 0x000c, 0xc83: 0x000c, 0xc84: 0x000c, -+ 0xc86: 0x000c, 0xc87: 0x000c, -+ 0xc8d: 0x000c, 0xc8e: 0x000c, 0xc8f: 0x000c, 0xc90: 0x000c, 0xc91: 0x000c, -+ 0xc92: 0x000c, 0xc93: 0x000c, 0xc94: 0x000c, 0xc95: 0x000c, 0xc96: 0x000c, 0xc97: 0x000c, -+ 0xc99: 0x000c, 0xc9a: 0x000c, 0xc9b: 0x000c, 0xc9c: 0x000c, 0xc9d: 0x000c, -+ 0xc9e: 0x000c, 0xc9f: 0x000c, 0xca0: 0x000c, 0xca1: 0x000c, 0xca2: 0x000c, 0xca3: 0x000c, -+ 0xca4: 0x000c, 0xca5: 0x000c, 0xca6: 0x000c, 0xca7: 0x000c, 0xca8: 0x000c, 0xca9: 0x000c, -+ 0xcaa: 0x000c, 0xcab: 0x000c, 0xcac: 0x000c, 0xcad: 0x000c, 0xcae: 0x000c, 0xcaf: 0x000c, -+ 0xcb0: 0x000c, 0xcb1: 0x000c, 0xcb2: 0x000c, 0xcb3: 0x000c, 0xcb4: 0x000c, 0xcb5: 0x000c, -+ 0xcb6: 0x000c, 0xcb7: 0x000c, 0xcb8: 0x000c, 0xcb9: 0x000c, 0xcba: 0x000c, 0xcbb: 0x000c, -+ 0xcbc: 0x000c, -+ // Block 0x33, offset 0xcc0 -+ 0xcc6: 0x000c, -+ // Block 0x34, offset 0xd00 -+ 0xd2d: 0x000c, 0xd2e: 0x000c, 0xd2f: 0x000c, -+ 0xd30: 0x000c, 0xd32: 0x000c, 0xd33: 0x000c, 0xd34: 0x000c, 0xd35: 0x000c, -+ 0xd36: 0x000c, 0xd37: 0x000c, 0xd39: 0x000c, 0xd3a: 0x000c, -+ 0xd3d: 0x000c, 0xd3e: 0x000c, -+ // Block 0x35, offset 0xd40 -+ 0xd58: 0x000c, 0xd59: 0x000c, -+ 0xd5e: 0x000c, 0xd5f: 0x000c, 0xd60: 0x000c, -+ 0xd71: 0x000c, 0xd72: 0x000c, 0xd73: 0x000c, 0xd74: 0x000c, -+ // Block 0x36, offset 0xd80 -+ 0xd82: 0x000c, 0xd85: 0x000c, -+ 0xd86: 0x000c, -+ 0xd8d: 0x000c, -+ 0xd9d: 0x000c, -+ // Block 0x37, offset 0xdc0 -+ 0xddd: 0x000c, -+ 0xdde: 0x000c, 0xddf: 0x000c, -+ // Block 0x38, offset 0xe00 -+ 0xe10: 0x000a, 0xe11: 0x000a, -+ 0xe12: 0x000a, 0xe13: 0x000a, 0xe14: 0x000a, 0xe15: 0x000a, 0xe16: 0x000a, 0xe17: 0x000a, -+ 0xe18: 0x000a, 0xe19: 0x000a, -+ // Block 0x39, offset 0xe40 -+ 0xe40: 0x000a, -+ // Block 0x3a, offset 0xe80 -+ 0xe80: 0x0009, -+ 0xe9b: 0x007a, 0xe9c: 0x006a, -+ // Block 0x3b, offset 0xec0 -+ 0xed2: 0x000c, 0xed3: 0x000c, 0xed4: 0x000c, -+ 0xef2: 0x000c, 0xef3: 0x000c, -+ // Block 0x3c, offset 0xf00 -+ 0xf12: 0x000c, 0xf13: 0x000c, -+ 0xf32: 0x000c, 0xf33: 0x000c, -+ // Block 0x3d, offset 0xf40 -+ 0xf74: 0x000c, 0xf75: 0x000c, -+ 0xf77: 0x000c, 0xf78: 0x000c, 0xf79: 0x000c, 0xf7a: 0x000c, 0xf7b: 0x000c, -+ 0xf7c: 0x000c, 0xf7d: 0x000c, -+ // Block 0x3e, offset 0xf80 -+ 0xf86: 0x000c, 0xf89: 0x000c, 0xf8a: 0x000c, 0xf8b: 0x000c, -+ 0xf8c: 0x000c, 0xf8d: 0x000c, 0xf8e: 0x000c, 0xf8f: 0x000c, 0xf90: 0x000c, 0xf91: 0x000c, -+ 0xf92: 0x000c, 0xf93: 0x000c, -+ 0xf9b: 0x0004, 0xf9d: 0x000c, -+ 0xfb0: 0x000a, 0xfb1: 0x000a, 0xfb2: 0x000a, 0xfb3: 0x000a, 0xfb4: 0x000a, 0xfb5: 0x000a, -+ 0xfb6: 0x000a, 0xfb7: 0x000a, 0xfb8: 0x000a, 0xfb9: 0x000a, -+ // Block 0x3f, offset 0xfc0 -+ 0xfc0: 0x000a, 0xfc1: 0x000a, 0xfc2: 0x000a, 0xfc3: 0x000a, 0xfc4: 0x000a, 0xfc5: 0x000a, -+ 0xfc6: 0x000a, 0xfc7: 0x000a, 0xfc8: 0x000a, 0xfc9: 0x000a, 0xfca: 0x000a, 0xfcb: 0x000c, -+ 0xfcc: 0x000c, 0xfcd: 0x000c, 0xfce: 0x000b, 0xfcf: 0x000c, -+ // Block 0x40, offset 0x1000 -+ 0x1005: 0x000c, -+ 0x1006: 0x000c, -+ 0x1029: 0x000c, -+ // Block 0x41, offset 0x1040 -+ 0x1060: 0x000c, 0x1061: 0x000c, 0x1062: 0x000c, -+ 0x1067: 0x000c, 0x1068: 0x000c, -+ 0x1072: 0x000c, -+ 0x1079: 0x000c, 0x107a: 0x000c, 0x107b: 0x000c, -+ // Block 0x42, offset 0x1080 -+ 0x1080: 0x000a, 0x1084: 0x000a, 0x1085: 0x000a, -+ // Block 0x43, offset 0x10c0 -+ 0x10de: 0x000a, 0x10df: 0x000a, 0x10e0: 0x000a, 0x10e1: 0x000a, 0x10e2: 0x000a, 0x10e3: 0x000a, -+ 0x10e4: 0x000a, 0x10e5: 0x000a, 0x10e6: 0x000a, 0x10e7: 0x000a, 0x10e8: 0x000a, 0x10e9: 0x000a, -+ 0x10ea: 0x000a, 0x10eb: 0x000a, 0x10ec: 0x000a, 0x10ed: 0x000a, 0x10ee: 0x000a, 0x10ef: 0x000a, -+ 0x10f0: 0x000a, 0x10f1: 0x000a, 0x10f2: 0x000a, 0x10f3: 0x000a, 0x10f4: 0x000a, 0x10f5: 0x000a, -+ 0x10f6: 0x000a, 0x10f7: 0x000a, 0x10f8: 0x000a, 0x10f9: 0x000a, 0x10fa: 0x000a, 0x10fb: 0x000a, -+ 0x10fc: 0x000a, 0x10fd: 0x000a, 0x10fe: 0x000a, 0x10ff: 0x000a, -+ // Block 0x44, offset 0x1100 -+ 0x1117: 0x000c, -+ 0x1118: 0x000c, 0x111b: 0x000c, -+ // Block 0x45, offset 0x1140 -+ 0x1156: 0x000c, -+ 0x1158: 0x000c, 0x1159: 0x000c, 0x115a: 0x000c, 0x115b: 0x000c, 0x115c: 0x000c, 0x115d: 0x000c, -+ 0x115e: 0x000c, 0x1160: 0x000c, 0x1162: 0x000c, -+ 0x1165: 0x000c, 0x1166: 0x000c, 0x1167: 0x000c, 0x1168: 0x000c, 0x1169: 0x000c, -+ 0x116a: 0x000c, 0x116b: 0x000c, 0x116c: 0x000c, -+ 0x1173: 0x000c, 0x1174: 0x000c, 0x1175: 0x000c, -+ 0x1176: 0x000c, 0x1177: 0x000c, 0x1178: 0x000c, 0x1179: 0x000c, 0x117a: 0x000c, 0x117b: 0x000c, -+ 0x117c: 0x000c, 0x117f: 0x000c, -+ // Block 0x46, offset 0x1180 -+ 0x11b0: 0x000c, 0x11b1: 0x000c, 0x11b2: 0x000c, 0x11b3: 0x000c, 0x11b4: 0x000c, 0x11b5: 0x000c, -+ 0x11b6: 0x000c, 0x11b7: 0x000c, 0x11b8: 0x000c, 0x11b9: 0x000c, 0x11ba: 0x000c, 0x11bb: 0x000c, -+ 0x11bc: 0x000c, 0x11bd: 0x000c, 0x11be: 0x000c, 0x11bf: 0x000c, -+ // Block 0x47, offset 0x11c0 -+ 0x11c0: 0x000c, 0x11c1: 0x000c, 0x11c2: 0x000c, 0x11c3: 0x000c, 0x11c4: 0x000c, 0x11c5: 0x000c, -+ 0x11c6: 0x000c, 0x11c7: 0x000c, 0x11c8: 0x000c, 0x11c9: 0x000c, 0x11ca: 0x000c, 0x11cb: 0x000c, -+ 0x11cc: 0x000c, 0x11cd: 0x000c, 0x11ce: 0x000c, -+ // Block 0x48, offset 0x1200 -+ 0x1200: 0x000c, 0x1201: 0x000c, 0x1202: 0x000c, 0x1203: 0x000c, -+ 0x1234: 0x000c, -+ 0x1236: 0x000c, 0x1237: 0x000c, 0x1238: 0x000c, 0x1239: 0x000c, 0x123a: 0x000c, -+ 0x123c: 0x000c, -+ // Block 0x49, offset 0x1240 -+ 0x1242: 0x000c, -+ 0x126b: 0x000c, 0x126c: 0x000c, 0x126d: 0x000c, 0x126e: 0x000c, 0x126f: 0x000c, -+ 0x1270: 0x000c, 0x1271: 0x000c, 0x1272: 0x000c, 0x1273: 0x000c, -+ // Block 0x4a, offset 0x1280 -+ 0x1280: 0x000c, 0x1281: 0x000c, -+ 0x12a2: 0x000c, 0x12a3: 0x000c, -+ 0x12a4: 0x000c, 0x12a5: 0x000c, 0x12a8: 0x000c, 0x12a9: 0x000c, -+ 0x12ab: 0x000c, 0x12ac: 0x000c, 0x12ad: 0x000c, -+ // Block 0x4b, offset 0x12c0 -+ 0x12e6: 0x000c, 0x12e8: 0x000c, 0x12e9: 0x000c, -+ 0x12ed: 0x000c, 0x12ef: 0x000c, -+ 0x12f0: 0x000c, 0x12f1: 0x000c, -+ // Block 0x4c, offset 0x1300 -+ 0x132c: 0x000c, 0x132d: 0x000c, 0x132e: 0x000c, 0x132f: 0x000c, -+ 0x1330: 0x000c, 0x1331: 0x000c, 0x1332: 0x000c, 0x1333: 0x000c, -+ 0x1336: 0x000c, 0x1337: 0x000c, -+ // Block 0x4d, offset 0x1340 -+ 0x1350: 0x000c, 0x1351: 0x000c, -+ 0x1352: 0x000c, 0x1354: 0x000c, 0x1355: 0x000c, 0x1356: 0x000c, 0x1357: 0x000c, -+ 0x1358: 0x000c, 0x1359: 0x000c, 0x135a: 0x000c, 0x135b: 0x000c, 0x135c: 0x000c, 0x135d: 0x000c, -+ 0x135e: 0x000c, 0x135f: 0x000c, 0x1360: 0x000c, 0x1362: 0x000c, 0x1363: 0x000c, -+ 0x1364: 0x000c, 0x1365: 0x000c, 0x1366: 0x000c, 0x1367: 0x000c, 0x1368: 0x000c, -+ 0x136d: 0x000c, -+ 0x1374: 0x000c, -+ 0x1378: 0x000c, 0x1379: 0x000c, -+ // Block 0x4e, offset 0x1380 -+ 0x13bd: 0x000a, 0x13bf: 0x000a, -+ // Block 0x4f, offset 0x13c0 -+ 0x13c0: 0x000a, 0x13c1: 0x000a, -+ 0x13cd: 0x000a, 0x13ce: 0x000a, 0x13cf: 0x000a, -+ 0x13dd: 0x000a, -+ 0x13de: 0x000a, 0x13df: 0x000a, -+ 0x13ed: 0x000a, 0x13ee: 0x000a, 0x13ef: 0x000a, -+ 0x13fd: 0x000a, 0x13fe: 0x000a, -+ // Block 0x50, offset 0x1400 -+ 0x1400: 0x0009, 0x1401: 0x0009, 0x1402: 0x0009, 0x1403: 0x0009, 0x1404: 0x0009, 0x1405: 0x0009, -+ 0x1406: 0x0009, 0x1407: 0x0009, 0x1408: 0x0009, 0x1409: 0x0009, 0x140a: 0x0009, 0x140b: 0x000b, -+ 0x140c: 0x000b, 0x140d: 0x000b, 0x140f: 0x0001, 0x1410: 0x000a, 0x1411: 0x000a, -+ 0x1412: 0x000a, 0x1413: 0x000a, 0x1414: 0x000a, 0x1415: 0x000a, 0x1416: 0x000a, 0x1417: 0x000a, -+ 0x1418: 0x000a, 0x1419: 0x000a, 0x141a: 0x000a, 0x141b: 0x000a, 0x141c: 0x000a, 0x141d: 0x000a, -+ 0x141e: 0x000a, 0x141f: 0x000a, 0x1420: 0x000a, 0x1421: 0x000a, 0x1422: 0x000a, 0x1423: 0x000a, -+ 0x1424: 0x000a, 0x1425: 0x000a, 0x1426: 0x000a, 0x1427: 0x000a, 0x1428: 0x0009, 0x1429: 0x0007, -+ 0x142a: 0x000e, 0x142b: 0x000e, 0x142c: 0x000e, 0x142d: 0x000e, 0x142e: 0x000e, 0x142f: 0x0006, -+ 0x1430: 0x0004, 0x1431: 0x0004, 0x1432: 0x0004, 0x1433: 0x0004, 0x1434: 0x0004, 0x1435: 0x000a, -+ 0x1436: 0x000a, 0x1437: 0x000a, 0x1438: 0x000a, 0x1439: 0x000a, 0x143a: 0x000a, 0x143b: 0x000a, -+ 0x143c: 0x000a, 0x143d: 0x000a, 0x143e: 0x000a, 0x143f: 0x000a, -+ // Block 0x51, offset 0x1440 -+ 0x1440: 0x000a, 0x1441: 0x000a, 0x1442: 0x000a, 0x1443: 0x000a, 0x1444: 0x0006, 0x1445: 0x009a, -+ 0x1446: 0x008a, 0x1447: 0x000a, 0x1448: 0x000a, 0x1449: 0x000a, 0x144a: 0x000a, 0x144b: 0x000a, -+ 0x144c: 0x000a, 0x144d: 0x000a, 0x144e: 0x000a, 0x144f: 0x000a, 0x1450: 0x000a, 0x1451: 0x000a, -+ 0x1452: 0x000a, 0x1453: 0x000a, 0x1454: 0x000a, 0x1455: 0x000a, 0x1456: 0x000a, 0x1457: 0x000a, -+ 0x1458: 0x000a, 0x1459: 0x000a, 0x145a: 0x000a, 0x145b: 0x000a, 0x145c: 0x000a, 0x145d: 0x000a, -+ 0x145e: 0x000a, 0x145f: 0x0009, 0x1460: 0x000b, 0x1461: 0x000b, 0x1462: 0x000b, 0x1463: 0x000b, -+ 0x1464: 0x000b, 0x1465: 0x000b, 0x1466: 0x000e, 0x1467: 0x000e, 0x1468: 0x000e, 0x1469: 0x000e, -+ 0x146a: 0x000b, 0x146b: 0x000b, 0x146c: 0x000b, 0x146d: 0x000b, 0x146e: 0x000b, 0x146f: 0x000b, -+ 0x1470: 0x0002, 0x1474: 0x0002, 0x1475: 0x0002, -+ 0x1476: 0x0002, 0x1477: 0x0002, 0x1478: 0x0002, 0x1479: 0x0002, 0x147a: 0x0003, 0x147b: 0x0003, -+ 0x147c: 0x000a, 0x147d: 0x009a, 0x147e: 0x008a, -+ // Block 0x52, offset 0x1480 -+ 0x1480: 0x0002, 0x1481: 0x0002, 0x1482: 0x0002, 0x1483: 0x0002, 0x1484: 0x0002, 0x1485: 0x0002, -+ 0x1486: 0x0002, 0x1487: 0x0002, 0x1488: 0x0002, 0x1489: 0x0002, 0x148a: 0x0003, 0x148b: 0x0003, -+ 0x148c: 0x000a, 0x148d: 0x009a, 0x148e: 0x008a, -+ 0x14a0: 0x0004, 0x14a1: 0x0004, 0x14a2: 0x0004, 0x14a3: 0x0004, -+ 0x14a4: 0x0004, 0x14a5: 0x0004, 0x14a6: 0x0004, 0x14a7: 0x0004, 0x14a8: 0x0004, 0x14a9: 0x0004, -+ 0x14aa: 0x0004, 0x14ab: 0x0004, 0x14ac: 0x0004, 0x14ad: 0x0004, 0x14ae: 0x0004, 0x14af: 0x0004, -+ 0x14b0: 0x0004, 0x14b1: 0x0004, 0x14b2: 0x0004, 0x14b3: 0x0004, 0x14b4: 0x0004, 0x14b5: 0x0004, -+ 0x14b6: 0x0004, 0x14b7: 0x0004, 0x14b8: 0x0004, 0x14b9: 0x0004, 0x14ba: 0x0004, 0x14bb: 0x0004, -+ 0x14bc: 0x0004, 0x14bd: 0x0004, 0x14be: 0x0004, 0x14bf: 0x0004, -+ // Block 0x53, offset 0x14c0 -+ 0x14c0: 0x0004, 0x14c1: 0x0004, 0x14c2: 0x0004, 0x14c3: 0x0004, 0x14c4: 0x0004, 0x14c5: 0x0004, -+ 0x14c6: 0x0004, 0x14c7: 0x0004, 0x14c8: 0x0004, 0x14c9: 0x0004, 0x14ca: 0x0004, 0x14cb: 0x0004, -+ 0x14cc: 0x0004, 0x14cd: 0x0004, 0x14ce: 0x0004, 0x14cf: 0x0004, 0x14d0: 0x000c, 0x14d1: 0x000c, -+ 0x14d2: 0x000c, 0x14d3: 0x000c, 0x14d4: 0x000c, 0x14d5: 0x000c, 0x14d6: 0x000c, 0x14d7: 0x000c, -+ 0x14d8: 0x000c, 0x14d9: 0x000c, 0x14da: 0x000c, 0x14db: 0x000c, 0x14dc: 0x000c, 0x14dd: 0x000c, -+ 0x14de: 0x000c, 0x14df: 0x000c, 0x14e0: 0x000c, 0x14e1: 0x000c, 0x14e2: 0x000c, 0x14e3: 0x000c, -+ 0x14e4: 0x000c, 0x14e5: 0x000c, 0x14e6: 0x000c, 0x14e7: 0x000c, 0x14e8: 0x000c, 0x14e9: 0x000c, -+ 0x14ea: 0x000c, 0x14eb: 0x000c, 0x14ec: 0x000c, 0x14ed: 0x000c, 0x14ee: 0x000c, 0x14ef: 0x000c, -+ 0x14f0: 0x000c, -+ // Block 0x54, offset 0x1500 -+ 0x1500: 0x000a, 0x1501: 0x000a, 0x1503: 0x000a, 0x1504: 0x000a, 0x1505: 0x000a, -+ 0x1506: 0x000a, 0x1508: 0x000a, 0x1509: 0x000a, -+ 0x1514: 0x000a, 0x1516: 0x000a, 0x1517: 0x000a, -+ 0x1518: 0x000a, -+ 0x151e: 0x000a, 0x151f: 0x000a, 0x1520: 0x000a, 0x1521: 0x000a, 0x1522: 0x000a, 0x1523: 0x000a, -+ 0x1525: 0x000a, 0x1527: 0x000a, 0x1529: 0x000a, -+ 0x152e: 0x0004, -+ 0x153a: 0x000a, 0x153b: 0x000a, -+ // Block 0x55, offset 0x1540 -+ 0x1540: 0x000a, 0x1541: 0x000a, 0x1542: 0x000a, 0x1543: 0x000a, 0x1544: 0x000a, -+ 0x154a: 0x000a, 0x154b: 0x000a, -+ 0x154c: 0x000a, 0x154d: 0x000a, 0x1550: 0x000a, 0x1551: 0x000a, -+ 0x1552: 0x000a, 0x1553: 0x000a, 0x1554: 0x000a, 0x1555: 0x000a, 0x1556: 0x000a, 0x1557: 0x000a, -+ 0x1558: 0x000a, 0x1559: 0x000a, 0x155a: 0x000a, 0x155b: 0x000a, 0x155c: 0x000a, 0x155d: 0x000a, -+ 0x155e: 0x000a, 0x155f: 0x000a, -+ // Block 0x56, offset 0x1580 -+ 0x1589: 0x000a, 0x158a: 0x000a, 0x158b: 0x000a, -+ 0x1590: 0x000a, 0x1591: 0x000a, -+ 0x1592: 0x000a, 0x1593: 0x000a, 0x1594: 0x000a, 0x1595: 0x000a, 0x1596: 0x000a, 0x1597: 0x000a, -+ 0x1598: 0x000a, 0x1599: 0x000a, 0x159a: 0x000a, 0x159b: 0x000a, 0x159c: 0x000a, 0x159d: 0x000a, -+ 0x159e: 0x000a, 0x159f: 0x000a, 0x15a0: 0x000a, 0x15a1: 0x000a, 0x15a2: 0x000a, 0x15a3: 0x000a, -+ 0x15a4: 0x000a, 0x15a5: 0x000a, 0x15a6: 0x000a, 0x15a7: 0x000a, 0x15a8: 0x000a, 0x15a9: 0x000a, -+ 0x15aa: 0x000a, 0x15ab: 0x000a, 0x15ac: 0x000a, 0x15ad: 0x000a, 0x15ae: 0x000a, 0x15af: 0x000a, -+ 0x15b0: 0x000a, 0x15b1: 0x000a, 0x15b2: 0x000a, 0x15b3: 0x000a, 0x15b4: 0x000a, 0x15b5: 0x000a, -+ 0x15b6: 0x000a, 0x15b7: 0x000a, 0x15b8: 0x000a, 0x15b9: 0x000a, 0x15ba: 0x000a, 0x15bb: 0x000a, -+ 0x15bc: 0x000a, 0x15bd: 0x000a, 0x15be: 0x000a, 0x15bf: 0x000a, -+ // Block 0x57, offset 0x15c0 -+ 0x15c0: 0x000a, 0x15c1: 0x000a, 0x15c2: 0x000a, 0x15c3: 0x000a, 0x15c4: 0x000a, 0x15c5: 0x000a, -+ 0x15c6: 0x000a, 0x15c7: 0x000a, 0x15c8: 0x000a, 0x15c9: 0x000a, 0x15ca: 0x000a, 0x15cb: 0x000a, -+ 0x15cc: 0x000a, 0x15cd: 0x000a, 0x15ce: 0x000a, 0x15cf: 0x000a, 0x15d0: 0x000a, 0x15d1: 0x000a, -+ 0x15d2: 0x000a, 0x15d3: 0x000a, 0x15d4: 0x000a, 0x15d5: 0x000a, 0x15d6: 0x000a, 0x15d7: 0x000a, -+ 0x15d8: 0x000a, 0x15d9: 0x000a, 0x15da: 0x000a, 0x15db: 0x000a, 0x15dc: 0x000a, 0x15dd: 0x000a, -+ 0x15de: 0x000a, 0x15df: 0x000a, 0x15e0: 0x000a, 0x15e1: 0x000a, 0x15e2: 0x000a, 0x15e3: 0x000a, -+ 0x15e4: 0x000a, 0x15e5: 0x000a, 0x15e6: 0x000a, 0x15e7: 0x000a, 0x15e8: 0x000a, 0x15e9: 0x000a, -+ 0x15ea: 0x000a, 0x15eb: 0x000a, 0x15ec: 0x000a, 0x15ed: 0x000a, 0x15ee: 0x000a, 0x15ef: 0x000a, -+ 0x15f0: 0x000a, 0x15f1: 0x000a, 0x15f2: 0x000a, 0x15f3: 0x000a, 0x15f4: 0x000a, 0x15f5: 0x000a, -+ 0x15f6: 0x000a, 0x15f7: 0x000a, 0x15f8: 0x000a, 0x15f9: 0x000a, 0x15fa: 0x000a, 0x15fb: 0x000a, -+ 0x15fc: 0x000a, 0x15fd: 0x000a, 0x15fe: 0x000a, 0x15ff: 0x000a, -+ // Block 0x58, offset 0x1600 -+ 0x1600: 0x000a, 0x1601: 0x000a, 0x1602: 0x000a, 0x1603: 0x000a, 0x1604: 0x000a, 0x1605: 0x000a, -+ 0x1606: 0x000a, 0x1607: 0x000a, 0x1608: 0x000a, 0x1609: 0x000a, 0x160a: 0x000a, 0x160b: 0x000a, -+ 0x160c: 0x000a, 0x160d: 0x000a, 0x160e: 0x000a, 0x160f: 0x000a, 0x1610: 0x000a, 0x1611: 0x000a, -+ 0x1612: 0x0003, 0x1613: 0x0004, 0x1614: 0x000a, 0x1615: 0x000a, 0x1616: 0x000a, 0x1617: 0x000a, -+ 0x1618: 0x000a, 0x1619: 0x000a, 0x161a: 0x000a, 0x161b: 0x000a, 0x161c: 0x000a, 0x161d: 0x000a, -+ 0x161e: 0x000a, 0x161f: 0x000a, 0x1620: 0x000a, 0x1621: 0x000a, 0x1622: 0x000a, 0x1623: 0x000a, -+ 0x1624: 0x000a, 0x1625: 0x000a, 0x1626: 0x000a, 0x1627: 0x000a, 0x1628: 0x000a, 0x1629: 0x000a, -+ 0x162a: 0x000a, 0x162b: 0x000a, 0x162c: 0x000a, 0x162d: 0x000a, 0x162e: 0x000a, 0x162f: 0x000a, -+ 0x1630: 0x000a, 0x1631: 0x000a, 0x1632: 0x000a, 0x1633: 0x000a, 0x1634: 0x000a, 0x1635: 0x000a, -+ 0x1636: 0x000a, 0x1637: 0x000a, 0x1638: 0x000a, 0x1639: 0x000a, 0x163a: 0x000a, 0x163b: 0x000a, -+ 0x163c: 0x000a, 0x163d: 0x000a, 0x163e: 0x000a, 0x163f: 0x000a, -+ // Block 0x59, offset 0x1640 -+ 0x1640: 0x000a, 0x1641: 0x000a, 0x1642: 0x000a, 0x1643: 0x000a, 0x1644: 0x000a, 0x1645: 0x000a, -+ 0x1646: 0x000a, 0x1647: 0x000a, 0x1648: 0x003a, 0x1649: 0x002a, 0x164a: 0x003a, 0x164b: 0x002a, -+ 0x164c: 0x000a, 0x164d: 0x000a, 0x164e: 0x000a, 0x164f: 0x000a, 0x1650: 0x000a, 0x1651: 0x000a, -+ 0x1652: 0x000a, 0x1653: 0x000a, 0x1654: 0x000a, 0x1655: 0x000a, 0x1656: 0x000a, 0x1657: 0x000a, -+ 0x1658: 0x000a, 0x1659: 0x000a, 0x165a: 0x000a, 0x165b: 0x000a, 0x165c: 0x000a, 0x165d: 0x000a, -+ 0x165e: 0x000a, 0x165f: 0x000a, 0x1660: 0x000a, 0x1661: 0x000a, 0x1662: 0x000a, 0x1663: 0x000a, -+ 0x1664: 0x000a, 0x1665: 0x000a, 0x1666: 0x000a, 0x1667: 0x000a, 0x1668: 0x000a, 0x1669: 0x009a, -+ 0x166a: 0x008a, 0x166b: 0x000a, 0x166c: 0x000a, 0x166d: 0x000a, 0x166e: 0x000a, 0x166f: 0x000a, -+ 0x1670: 0x000a, 0x1671: 0x000a, 0x1672: 0x000a, 0x1673: 0x000a, 0x1674: 0x000a, 0x1675: 0x000a, -+ // Block 0x5a, offset 0x1680 -+ 0x16bb: 0x000a, -+ 0x16bc: 0x000a, 0x16bd: 0x000a, 0x16be: 0x000a, 0x16bf: 0x000a, -+ // Block 0x5b, offset 0x16c0 -+ 0x16c0: 0x000a, 0x16c1: 0x000a, 0x16c2: 0x000a, 0x16c3: 0x000a, 0x16c4: 0x000a, 0x16c5: 0x000a, -+ 0x16c6: 0x000a, 0x16c7: 0x000a, 0x16c8: 0x000a, 0x16c9: 0x000a, 0x16ca: 0x000a, 0x16cb: 0x000a, -+ 0x16cc: 0x000a, 0x16cd: 0x000a, 0x16ce: 0x000a, 0x16cf: 0x000a, 0x16d0: 0x000a, 0x16d1: 0x000a, -+ 0x16d2: 0x000a, 0x16d3: 0x000a, 0x16d4: 0x000a, 0x16d6: 0x000a, 0x16d7: 0x000a, -+ 0x16d8: 0x000a, 0x16d9: 0x000a, 0x16da: 0x000a, 0x16db: 0x000a, 0x16dc: 0x000a, 0x16dd: 0x000a, -+ 0x16de: 0x000a, 0x16df: 0x000a, 0x16e0: 0x000a, 0x16e1: 0x000a, 0x16e2: 0x000a, 0x16e3: 0x000a, -+ 0x16e4: 0x000a, 0x16e5: 0x000a, 0x16e6: 0x000a, 0x16e7: 0x000a, 0x16e8: 0x000a, 0x16e9: 0x000a, -+ 0x16ea: 0x000a, 0x16eb: 0x000a, 0x16ec: 0x000a, 0x16ed: 0x000a, 0x16ee: 0x000a, 0x16ef: 0x000a, -+ 0x16f0: 0x000a, 0x16f1: 0x000a, 0x16f2: 0x000a, 0x16f3: 0x000a, 0x16f4: 0x000a, 0x16f5: 0x000a, -+ 0x16f6: 0x000a, 0x16f7: 0x000a, 0x16f8: 0x000a, 0x16f9: 0x000a, 0x16fa: 0x000a, 0x16fb: 0x000a, -+ 0x16fc: 0x000a, 0x16fd: 0x000a, 0x16fe: 0x000a, 0x16ff: 0x000a, -+ // Block 0x5c, offset 0x1700 -+ 0x1700: 0x000a, 0x1701: 0x000a, 0x1702: 0x000a, 0x1703: 0x000a, 0x1704: 0x000a, 0x1705: 0x000a, -+ 0x1706: 0x000a, 0x1707: 0x000a, 0x1708: 0x000a, 0x1709: 0x000a, 0x170a: 0x000a, 0x170b: 0x000a, -+ 0x170c: 0x000a, 0x170d: 0x000a, 0x170e: 0x000a, 0x170f: 0x000a, 0x1710: 0x000a, 0x1711: 0x000a, -+ 0x1712: 0x000a, 0x1713: 0x000a, 0x1714: 0x000a, 0x1715: 0x000a, 0x1716: 0x000a, 0x1717: 0x000a, -+ 0x1718: 0x000a, 0x1719: 0x000a, 0x171a: 0x000a, 0x171b: 0x000a, 0x171c: 0x000a, 0x171d: 0x000a, -+ 0x171e: 0x000a, 0x171f: 0x000a, 0x1720: 0x000a, 0x1721: 0x000a, 0x1722: 0x000a, 0x1723: 0x000a, -+ 0x1724: 0x000a, 0x1725: 0x000a, 0x1726: 0x000a, -+ // Block 0x5d, offset 0x1740 -+ 0x1740: 0x000a, 0x1741: 0x000a, 0x1742: 0x000a, 0x1743: 0x000a, 0x1744: 0x000a, 0x1745: 0x000a, -+ 0x1746: 0x000a, 0x1747: 0x000a, 0x1748: 0x000a, 0x1749: 0x000a, 0x174a: 0x000a, -+ 0x1760: 0x000a, 0x1761: 0x000a, 0x1762: 0x000a, 0x1763: 0x000a, -+ 0x1764: 0x000a, 0x1765: 0x000a, 0x1766: 0x000a, 0x1767: 0x000a, 0x1768: 0x000a, 0x1769: 0x000a, -+ 0x176a: 0x000a, 0x176b: 0x000a, 0x176c: 0x000a, 0x176d: 0x000a, 0x176e: 0x000a, 0x176f: 0x000a, -+ 0x1770: 0x000a, 0x1771: 0x000a, 0x1772: 0x000a, 0x1773: 0x000a, 0x1774: 0x000a, 0x1775: 0x000a, -+ 0x1776: 0x000a, 0x1777: 0x000a, 0x1778: 0x000a, 0x1779: 0x000a, 0x177a: 0x000a, 0x177b: 0x000a, -+ 0x177c: 0x000a, 0x177d: 0x000a, 0x177e: 0x000a, 0x177f: 0x000a, -+ // Block 0x5e, offset 0x1780 -+ 0x1780: 0x000a, 0x1781: 0x000a, 0x1782: 0x000a, 0x1783: 0x000a, 0x1784: 0x000a, 0x1785: 0x000a, -+ 0x1786: 0x000a, 0x1787: 0x000a, 0x1788: 0x0002, 0x1789: 0x0002, 0x178a: 0x0002, 0x178b: 0x0002, -+ 0x178c: 0x0002, 0x178d: 0x0002, 0x178e: 0x0002, 0x178f: 0x0002, 0x1790: 0x0002, 0x1791: 0x0002, -+ 0x1792: 0x0002, 0x1793: 0x0002, 0x1794: 0x0002, 0x1795: 0x0002, 0x1796: 0x0002, 0x1797: 0x0002, -+ 0x1798: 0x0002, 0x1799: 0x0002, 0x179a: 0x0002, 0x179b: 0x0002, -+ // Block 0x5f, offset 0x17c0 -+ 0x17ea: 0x000a, 0x17eb: 0x000a, 0x17ec: 0x000a, 0x17ed: 0x000a, 0x17ee: 0x000a, 0x17ef: 0x000a, -+ 0x17f0: 0x000a, 0x17f1: 0x000a, 0x17f2: 0x000a, 0x17f3: 0x000a, 0x17f4: 0x000a, 0x17f5: 0x000a, -+ 0x17f6: 0x000a, 0x17f7: 0x000a, 0x17f8: 0x000a, 0x17f9: 0x000a, 0x17fa: 0x000a, 0x17fb: 0x000a, -+ 0x17fc: 0x000a, 0x17fd: 0x000a, 0x17fe: 0x000a, 0x17ff: 0x000a, -+ // Block 0x60, offset 0x1800 -+ 0x1800: 0x000a, 0x1801: 0x000a, 0x1802: 0x000a, 0x1803: 0x000a, 0x1804: 0x000a, 0x1805: 0x000a, -+ 0x1806: 0x000a, 0x1807: 0x000a, 0x1808: 0x000a, 0x1809: 0x000a, 0x180a: 0x000a, 0x180b: 0x000a, -+ 0x180c: 0x000a, 0x180d: 0x000a, 0x180e: 0x000a, 0x180f: 0x000a, 0x1810: 0x000a, 0x1811: 0x000a, -+ 0x1812: 0x000a, 0x1813: 0x000a, 0x1814: 0x000a, 0x1815: 0x000a, 0x1816: 0x000a, 0x1817: 0x000a, -+ 0x1818: 0x000a, 0x1819: 0x000a, 0x181a: 0x000a, 0x181b: 0x000a, 0x181c: 0x000a, 0x181d: 0x000a, -+ 0x181e: 0x000a, 0x181f: 0x000a, 0x1820: 0x000a, 0x1821: 0x000a, 0x1822: 0x000a, 0x1823: 0x000a, -+ 0x1824: 0x000a, 0x1825: 0x000a, 0x1826: 0x000a, 0x1827: 0x000a, 0x1828: 0x000a, 0x1829: 0x000a, -+ 0x182a: 0x000a, 0x182b: 0x000a, 0x182d: 0x000a, 0x182e: 0x000a, 0x182f: 0x000a, -+ 0x1830: 0x000a, 0x1831: 0x000a, 0x1832: 0x000a, 0x1833: 0x000a, 0x1834: 0x000a, 0x1835: 0x000a, -+ 0x1836: 0x000a, 0x1837: 0x000a, 0x1838: 0x000a, 0x1839: 0x000a, 0x183a: 0x000a, 0x183b: 0x000a, -+ 0x183c: 0x000a, 0x183d: 0x000a, 0x183e: 0x000a, 0x183f: 0x000a, -+ // Block 0x61, offset 0x1840 -+ 0x1840: 0x000a, 0x1841: 0x000a, 0x1842: 0x000a, 0x1843: 0x000a, 0x1844: 0x000a, 0x1845: 0x000a, -+ 0x1846: 0x000a, 0x1847: 0x000a, 0x1848: 0x000a, 0x1849: 0x000a, 0x184a: 0x000a, 0x184b: 0x000a, -+ 0x184c: 0x000a, 0x184d: 0x000a, 0x184e: 0x000a, 0x184f: 0x000a, 0x1850: 0x000a, 0x1851: 0x000a, -+ 0x1852: 0x000a, 0x1853: 0x000a, 0x1854: 0x000a, 0x1855: 0x000a, 0x1856: 0x000a, 0x1857: 0x000a, -+ 0x1858: 0x000a, 0x1859: 0x000a, 0x185a: 0x000a, 0x185b: 0x000a, 0x185c: 0x000a, 0x185d: 0x000a, -+ 0x185e: 0x000a, 0x185f: 0x000a, 0x1860: 0x000a, 0x1861: 0x000a, 0x1862: 0x000a, 0x1863: 0x000a, -+ 0x1864: 0x000a, 0x1865: 0x000a, 0x1866: 0x000a, 0x1867: 0x000a, 0x1868: 0x003a, 0x1869: 0x002a, -+ 0x186a: 0x003a, 0x186b: 0x002a, 0x186c: 0x003a, 0x186d: 0x002a, 0x186e: 0x003a, 0x186f: 0x002a, -+ 0x1870: 0x003a, 0x1871: 0x002a, 0x1872: 0x003a, 0x1873: 0x002a, 0x1874: 0x003a, 0x1875: 0x002a, -+ 0x1876: 0x000a, 0x1877: 0x000a, 0x1878: 0x000a, 0x1879: 0x000a, 0x187a: 0x000a, 0x187b: 0x000a, -+ 0x187c: 0x000a, 0x187d: 0x000a, 0x187e: 0x000a, 0x187f: 0x000a, -+ // Block 0x62, offset 0x1880 -+ 0x1880: 0x000a, 0x1881: 0x000a, 0x1882: 0x000a, 0x1883: 0x000a, 0x1884: 0x000a, 0x1885: 0x009a, -+ 0x1886: 0x008a, 0x1887: 0x000a, 0x1888: 0x000a, 0x1889: 0x000a, 0x188a: 0x000a, 0x188b: 0x000a, -+ 0x188c: 0x000a, 0x188d: 0x000a, 0x188e: 0x000a, 0x188f: 0x000a, 0x1890: 0x000a, 0x1891: 0x000a, -+ 0x1892: 0x000a, 0x1893: 0x000a, 0x1894: 0x000a, 0x1895: 0x000a, 0x1896: 0x000a, 0x1897: 0x000a, -+ 0x1898: 0x000a, 0x1899: 0x000a, 0x189a: 0x000a, 0x189b: 0x000a, 0x189c: 0x000a, 0x189d: 0x000a, -+ 0x189e: 0x000a, 0x189f: 0x000a, 0x18a0: 0x000a, 0x18a1: 0x000a, 0x18a2: 0x000a, 0x18a3: 0x000a, -+ 0x18a4: 0x000a, 0x18a5: 0x000a, 0x18a6: 0x003a, 0x18a7: 0x002a, 0x18a8: 0x003a, 0x18a9: 0x002a, -+ 0x18aa: 0x003a, 0x18ab: 0x002a, 0x18ac: 0x003a, 0x18ad: 0x002a, 0x18ae: 0x003a, 0x18af: 0x002a, -+ 0x18b0: 0x000a, 0x18b1: 0x000a, 0x18b2: 0x000a, 0x18b3: 0x000a, 0x18b4: 0x000a, 0x18b5: 0x000a, -+ 0x18b6: 0x000a, 0x18b7: 0x000a, 0x18b8: 0x000a, 0x18b9: 0x000a, 0x18ba: 0x000a, 0x18bb: 0x000a, -+ 0x18bc: 0x000a, 0x18bd: 0x000a, 0x18be: 0x000a, 0x18bf: 0x000a, -+ // Block 0x63, offset 0x18c0 -+ 0x18c0: 0x000a, 0x18c1: 0x000a, 0x18c2: 0x000a, 0x18c3: 0x007a, 0x18c4: 0x006a, 0x18c5: 0x009a, -+ 0x18c6: 0x008a, 0x18c7: 0x00ba, 0x18c8: 0x00aa, 0x18c9: 0x009a, 0x18ca: 0x008a, 0x18cb: 0x007a, -+ 0x18cc: 0x006a, 0x18cd: 0x00da, 0x18ce: 0x002a, 0x18cf: 0x003a, 0x18d0: 0x00ca, 0x18d1: 0x009a, -+ 0x18d2: 0x008a, 0x18d3: 0x007a, 0x18d4: 0x006a, 0x18d5: 0x009a, 0x18d6: 0x008a, 0x18d7: 0x00ba, -+ 0x18d8: 0x00aa, 0x18d9: 0x000a, 0x18da: 0x000a, 0x18db: 0x000a, 0x18dc: 0x000a, 0x18dd: 0x000a, -+ 0x18de: 0x000a, 0x18df: 0x000a, 0x18e0: 0x000a, 0x18e1: 0x000a, 0x18e2: 0x000a, 0x18e3: 0x000a, -+ 0x18e4: 0x000a, 0x18e5: 0x000a, 0x18e6: 0x000a, 0x18e7: 0x000a, 0x18e8: 0x000a, 0x18e9: 0x000a, -+ 0x18ea: 0x000a, 0x18eb: 0x000a, 0x18ec: 0x000a, 0x18ed: 0x000a, 0x18ee: 0x000a, 0x18ef: 0x000a, -+ 0x18f0: 0x000a, 0x18f1: 0x000a, 0x18f2: 0x000a, 0x18f3: 0x000a, 0x18f4: 0x000a, 0x18f5: 0x000a, -+ 0x18f6: 0x000a, 0x18f7: 0x000a, 0x18f8: 0x000a, 0x18f9: 0x000a, 0x18fa: 0x000a, 0x18fb: 0x000a, -+ 0x18fc: 0x000a, 0x18fd: 0x000a, 0x18fe: 0x000a, 0x18ff: 0x000a, -+ // Block 0x64, offset 0x1900 -+ 0x1900: 0x000a, 0x1901: 0x000a, 0x1902: 0x000a, 0x1903: 0x000a, 0x1904: 0x000a, 0x1905: 0x000a, -+ 0x1906: 0x000a, 0x1907: 0x000a, 0x1908: 0x000a, 0x1909: 0x000a, 0x190a: 0x000a, 0x190b: 0x000a, -+ 0x190c: 0x000a, 0x190d: 0x000a, 0x190e: 0x000a, 0x190f: 0x000a, 0x1910: 0x000a, 0x1911: 0x000a, -+ 0x1912: 0x000a, 0x1913: 0x000a, 0x1914: 0x000a, 0x1915: 0x000a, 0x1916: 0x000a, 0x1917: 0x000a, -+ 0x1918: 0x003a, 0x1919: 0x002a, 0x191a: 0x003a, 0x191b: 0x002a, 0x191c: 0x000a, 0x191d: 0x000a, -+ 0x191e: 0x000a, 0x191f: 0x000a, 0x1920: 0x000a, 0x1921: 0x000a, 0x1922: 0x000a, 0x1923: 0x000a, -+ 0x1924: 0x000a, 0x1925: 0x000a, 0x1926: 0x000a, 0x1927: 0x000a, 0x1928: 0x000a, 0x1929: 0x000a, -+ 0x192a: 0x000a, 0x192b: 0x000a, 0x192c: 0x000a, 0x192d: 0x000a, 0x192e: 0x000a, 0x192f: 0x000a, -+ 0x1930: 0x000a, 0x1931: 0x000a, 0x1932: 0x000a, 0x1933: 0x000a, 0x1934: 0x000a, 0x1935: 0x000a, -+ 0x1936: 0x000a, 0x1937: 0x000a, 0x1938: 0x000a, 0x1939: 0x000a, 0x193a: 0x000a, 0x193b: 0x000a, -+ 0x193c: 0x003a, 0x193d: 0x002a, 0x193e: 0x000a, 0x193f: 0x000a, -+ // Block 0x65, offset 0x1940 -+ 0x1940: 0x000a, 0x1941: 0x000a, 0x1942: 0x000a, 0x1943: 0x000a, 0x1944: 0x000a, 0x1945: 0x000a, -+ 0x1946: 0x000a, 0x1947: 0x000a, 0x1948: 0x000a, 0x1949: 0x000a, 0x194a: 0x000a, 0x194b: 0x000a, -+ 0x194c: 0x000a, 0x194d: 0x000a, 0x194e: 0x000a, 0x194f: 0x000a, 0x1950: 0x000a, 0x1951: 0x000a, -+ 0x1952: 0x000a, 0x1953: 0x000a, 0x1954: 0x000a, 0x1955: 0x000a, 0x1956: 0x000a, 0x1957: 0x000a, -+ 0x1958: 0x000a, 0x1959: 0x000a, 0x195a: 0x000a, 0x195b: 0x000a, 0x195c: 0x000a, 0x195d: 0x000a, -+ 0x195e: 0x000a, 0x195f: 0x000a, 0x1960: 0x000a, 0x1961: 0x000a, 0x1962: 0x000a, 0x1963: 0x000a, -+ 0x1964: 0x000a, 0x1965: 0x000a, 0x1966: 0x000a, 0x1967: 0x000a, 0x1968: 0x000a, 0x1969: 0x000a, -+ 0x196a: 0x000a, 0x196b: 0x000a, 0x196c: 0x000a, 0x196d: 0x000a, 0x196e: 0x000a, 0x196f: 0x000a, -+ 0x1970: 0x000a, 0x1971: 0x000a, 0x1972: 0x000a, 0x1973: 0x000a, -+ 0x1976: 0x000a, 0x1977: 0x000a, 0x1978: 0x000a, 0x1979: 0x000a, 0x197a: 0x000a, 0x197b: 0x000a, -+ 0x197c: 0x000a, 0x197d: 0x000a, 0x197e: 0x000a, 0x197f: 0x000a, -+ // Block 0x66, offset 0x1980 -+ 0x1980: 0x000a, 0x1981: 0x000a, 0x1982: 0x000a, 0x1983: 0x000a, 0x1984: 0x000a, 0x1985: 0x000a, -+ 0x1986: 0x000a, 0x1987: 0x000a, 0x1988: 0x000a, 0x1989: 0x000a, 0x198a: 0x000a, 0x198b: 0x000a, -+ 0x198c: 0x000a, 0x198d: 0x000a, 0x198e: 0x000a, 0x198f: 0x000a, 0x1990: 0x000a, 0x1991: 0x000a, -+ 0x1992: 0x000a, 0x1993: 0x000a, 0x1994: 0x000a, 0x1995: 0x000a, 0x1997: 0x000a, -+ 0x1998: 0x000a, 0x1999: 0x000a, 0x199a: 0x000a, 0x199b: 0x000a, 0x199c: 0x000a, 0x199d: 0x000a, -+ 0x199e: 0x000a, 0x199f: 0x000a, 0x19a0: 0x000a, 0x19a1: 0x000a, 0x19a2: 0x000a, 0x19a3: 0x000a, -+ 0x19a4: 0x000a, 0x19a5: 0x000a, 0x19a6: 0x000a, 0x19a7: 0x000a, 0x19a8: 0x000a, 0x19a9: 0x000a, -+ 0x19aa: 0x000a, 0x19ab: 0x000a, 0x19ac: 0x000a, 0x19ad: 0x000a, 0x19ae: 0x000a, 0x19af: 0x000a, -+ 0x19b0: 0x000a, 0x19b1: 0x000a, 0x19b2: 0x000a, 0x19b3: 0x000a, 0x19b4: 0x000a, 0x19b5: 0x000a, -+ 0x19b6: 0x000a, 0x19b7: 0x000a, 0x19b8: 0x000a, 0x19b9: 0x000a, 0x19ba: 0x000a, 0x19bb: 0x000a, -+ 0x19bc: 0x000a, 0x19bd: 0x000a, 0x19be: 0x000a, 0x19bf: 0x000a, -+ // Block 0x67, offset 0x19c0 -+ 0x19e5: 0x000a, 0x19e6: 0x000a, 0x19e7: 0x000a, 0x19e8: 0x000a, 0x19e9: 0x000a, -+ 0x19ea: 0x000a, 0x19ef: 0x000c, -+ 0x19f0: 0x000c, 0x19f1: 0x000c, -+ 0x19f9: 0x000a, 0x19fa: 0x000a, 0x19fb: 0x000a, -+ 0x19fc: 0x000a, 0x19fd: 0x000a, 0x19fe: 0x000a, 0x19ff: 0x000a, -+ // Block 0x68, offset 0x1a00 -+ 0x1a3f: 0x000c, -+ // Block 0x69, offset 0x1a40 -+ 0x1a60: 0x000c, 0x1a61: 0x000c, 0x1a62: 0x000c, 0x1a63: 0x000c, -+ 0x1a64: 0x000c, 0x1a65: 0x000c, 0x1a66: 0x000c, 0x1a67: 0x000c, 0x1a68: 0x000c, 0x1a69: 0x000c, -+ 0x1a6a: 0x000c, 0x1a6b: 0x000c, 0x1a6c: 0x000c, 0x1a6d: 0x000c, 0x1a6e: 0x000c, 0x1a6f: 0x000c, -+ 0x1a70: 0x000c, 0x1a71: 0x000c, 0x1a72: 0x000c, 0x1a73: 0x000c, 0x1a74: 0x000c, 0x1a75: 0x000c, -+ 0x1a76: 0x000c, 0x1a77: 0x000c, 0x1a78: 0x000c, 0x1a79: 0x000c, 0x1a7a: 0x000c, 0x1a7b: 0x000c, -+ 0x1a7c: 0x000c, 0x1a7d: 0x000c, 0x1a7e: 0x000c, 0x1a7f: 0x000c, -+ // Block 0x6a, offset 0x1a80 -+ 0x1a80: 0x000a, 0x1a81: 0x000a, 0x1a82: 0x000a, 0x1a83: 0x000a, 0x1a84: 0x000a, 0x1a85: 0x000a, -+ 0x1a86: 0x000a, 0x1a87: 0x000a, 0x1a88: 0x000a, 0x1a89: 0x000a, 0x1a8a: 0x000a, 0x1a8b: 0x000a, -+ 0x1a8c: 0x000a, 0x1a8d: 0x000a, 0x1a8e: 0x000a, 0x1a8f: 0x000a, 0x1a90: 0x000a, 0x1a91: 0x000a, -+ 0x1a92: 0x000a, 0x1a93: 0x000a, 0x1a94: 0x000a, 0x1a95: 0x000a, 0x1a96: 0x000a, 0x1a97: 0x000a, -+ 0x1a98: 0x000a, 0x1a99: 0x000a, 0x1a9a: 0x000a, 0x1a9b: 0x000a, 0x1a9c: 0x000a, 0x1a9d: 0x000a, -+ 0x1a9e: 0x000a, 0x1a9f: 0x000a, 0x1aa0: 0x000a, 0x1aa1: 0x000a, 0x1aa2: 0x003a, 0x1aa3: 0x002a, -+ 0x1aa4: 0x003a, 0x1aa5: 0x002a, 0x1aa6: 0x003a, 0x1aa7: 0x002a, 0x1aa8: 0x003a, 0x1aa9: 0x002a, -+ 0x1aaa: 0x000a, 0x1aab: 0x000a, 0x1aac: 0x000a, 0x1aad: 0x000a, 0x1aae: 0x000a, 0x1aaf: 0x000a, -+ 0x1ab0: 0x000a, 0x1ab1: 0x000a, 0x1ab2: 0x000a, 0x1ab3: 0x000a, 0x1ab4: 0x000a, 0x1ab5: 0x000a, -+ 0x1ab6: 0x000a, 0x1ab7: 0x000a, 0x1ab8: 0x000a, 0x1ab9: 0x000a, 0x1aba: 0x000a, 0x1abb: 0x000a, -+ 0x1abc: 0x000a, 0x1abd: 0x000a, 0x1abe: 0x000a, 0x1abf: 0x000a, -+ // Block 0x6b, offset 0x1ac0 -+ 0x1ac0: 0x000a, 0x1ac1: 0x000a, 0x1ac2: 0x000a, 0x1ac3: 0x000a, 0x1ac4: 0x000a, 0x1ac5: 0x000a, -+ 0x1ac6: 0x000a, 0x1ac7: 0x000a, 0x1ac8: 0x000a, 0x1ac9: 0x000a, 0x1aca: 0x000a, 0x1acb: 0x000a, -+ 0x1acc: 0x000a, 0x1acd: 0x000a, 0x1ace: 0x000a, 0x1acf: 0x000a, 0x1ad0: 0x000a, 0x1ad1: 0x000a, -+ 0x1ad2: 0x000a, 0x1ad3: 0x000a, 0x1ad4: 0x000a, 0x1ad5: 0x009a, 0x1ad6: 0x008a, 0x1ad7: 0x00ba, -+ 0x1ad8: 0x00aa, 0x1ad9: 0x009a, 0x1ada: 0x008a, 0x1adb: 0x007a, 0x1adc: 0x006a, 0x1add: 0x000a, -+ // Block 0x6c, offset 0x1b00 -+ 0x1b00: 0x000a, 0x1b01: 0x000a, 0x1b02: 0x000a, 0x1b03: 0x000a, 0x1b04: 0x000a, 0x1b05: 0x000a, -+ 0x1b06: 0x000a, 0x1b07: 0x000a, 0x1b08: 0x000a, 0x1b09: 0x000a, 0x1b0a: 0x000a, 0x1b0b: 0x000a, -+ 0x1b0c: 0x000a, 0x1b0d: 0x000a, 0x1b0e: 0x000a, 0x1b0f: 0x000a, 0x1b10: 0x000a, 0x1b11: 0x000a, -+ 0x1b12: 0x000a, 0x1b13: 0x000a, 0x1b14: 0x000a, 0x1b15: 0x000a, 0x1b16: 0x000a, 0x1b17: 0x000a, -+ 0x1b18: 0x000a, 0x1b19: 0x000a, 0x1b1b: 0x000a, 0x1b1c: 0x000a, 0x1b1d: 0x000a, -+ 0x1b1e: 0x000a, 0x1b1f: 0x000a, 0x1b20: 0x000a, 0x1b21: 0x000a, 0x1b22: 0x000a, 0x1b23: 0x000a, -+ 0x1b24: 0x000a, 0x1b25: 0x000a, 0x1b26: 0x000a, 0x1b27: 0x000a, 0x1b28: 0x000a, 0x1b29: 0x000a, -+ 0x1b2a: 0x000a, 0x1b2b: 0x000a, 0x1b2c: 0x000a, 0x1b2d: 0x000a, 0x1b2e: 0x000a, 0x1b2f: 0x000a, -+ 0x1b30: 0x000a, 0x1b31: 0x000a, 0x1b32: 0x000a, 0x1b33: 0x000a, 0x1b34: 0x000a, 0x1b35: 0x000a, -+ 0x1b36: 0x000a, 0x1b37: 0x000a, 0x1b38: 0x000a, 0x1b39: 0x000a, 0x1b3a: 0x000a, 0x1b3b: 0x000a, -+ 0x1b3c: 0x000a, 0x1b3d: 0x000a, 0x1b3e: 0x000a, 0x1b3f: 0x000a, -+ // Block 0x6d, offset 0x1b40 -+ 0x1b40: 0x000a, 0x1b41: 0x000a, 0x1b42: 0x000a, 0x1b43: 0x000a, 0x1b44: 0x000a, 0x1b45: 0x000a, -+ 0x1b46: 0x000a, 0x1b47: 0x000a, 0x1b48: 0x000a, 0x1b49: 0x000a, 0x1b4a: 0x000a, 0x1b4b: 0x000a, -+ 0x1b4c: 0x000a, 0x1b4d: 0x000a, 0x1b4e: 0x000a, 0x1b4f: 0x000a, 0x1b50: 0x000a, 0x1b51: 0x000a, -+ 0x1b52: 0x000a, 0x1b53: 0x000a, 0x1b54: 0x000a, 0x1b55: 0x000a, 0x1b56: 0x000a, 0x1b57: 0x000a, -+ 0x1b58: 0x000a, 0x1b59: 0x000a, 0x1b5a: 0x000a, 0x1b5b: 0x000a, 0x1b5c: 0x000a, 0x1b5d: 0x000a, -+ 0x1b5e: 0x000a, 0x1b5f: 0x000a, 0x1b60: 0x000a, 0x1b61: 0x000a, 0x1b62: 0x000a, 0x1b63: 0x000a, -+ 0x1b64: 0x000a, 0x1b65: 0x000a, 0x1b66: 0x000a, 0x1b67: 0x000a, 0x1b68: 0x000a, 0x1b69: 0x000a, -+ 0x1b6a: 0x000a, 0x1b6b: 0x000a, 0x1b6c: 0x000a, 0x1b6d: 0x000a, 0x1b6e: 0x000a, 0x1b6f: 0x000a, -+ 0x1b70: 0x000a, 0x1b71: 0x000a, 0x1b72: 0x000a, 0x1b73: 0x000a, -+ // Block 0x6e, offset 0x1b80 -+ 0x1b80: 0x000a, 0x1b81: 0x000a, 0x1b82: 0x000a, 0x1b83: 0x000a, 0x1b84: 0x000a, 0x1b85: 0x000a, -+ 0x1b86: 0x000a, 0x1b87: 0x000a, 0x1b88: 0x000a, 0x1b89: 0x000a, 0x1b8a: 0x000a, 0x1b8b: 0x000a, -+ 0x1b8c: 0x000a, 0x1b8d: 0x000a, 0x1b8e: 0x000a, 0x1b8f: 0x000a, 0x1b90: 0x000a, 0x1b91: 0x000a, -+ 0x1b92: 0x000a, 0x1b93: 0x000a, 0x1b94: 0x000a, 0x1b95: 0x000a, -+ 0x1bb0: 0x000a, 0x1bb1: 0x000a, 0x1bb2: 0x000a, 0x1bb3: 0x000a, 0x1bb4: 0x000a, 0x1bb5: 0x000a, -+ 0x1bb6: 0x000a, 0x1bb7: 0x000a, 0x1bb8: 0x000a, 0x1bb9: 0x000a, 0x1bba: 0x000a, 0x1bbb: 0x000a, -+ // Block 0x6f, offset 0x1bc0 -+ 0x1bc0: 0x0009, 0x1bc1: 0x000a, 0x1bc2: 0x000a, 0x1bc3: 0x000a, 0x1bc4: 0x000a, -+ 0x1bc8: 0x003a, 0x1bc9: 0x002a, 0x1bca: 0x003a, 0x1bcb: 0x002a, -+ 0x1bcc: 0x003a, 0x1bcd: 0x002a, 0x1bce: 0x003a, 0x1bcf: 0x002a, 0x1bd0: 0x003a, 0x1bd1: 0x002a, -+ 0x1bd2: 0x000a, 0x1bd3: 0x000a, 0x1bd4: 0x003a, 0x1bd5: 0x002a, 0x1bd6: 0x003a, 0x1bd7: 0x002a, -+ 0x1bd8: 0x003a, 0x1bd9: 0x002a, 0x1bda: 0x003a, 0x1bdb: 0x002a, 0x1bdc: 0x000a, 0x1bdd: 0x000a, -+ 0x1bde: 0x000a, 0x1bdf: 0x000a, 0x1be0: 0x000a, -+ 0x1bea: 0x000c, 0x1beb: 0x000c, 0x1bec: 0x000c, 0x1bed: 0x000c, -+ 0x1bf0: 0x000a, -+ 0x1bf6: 0x000a, 0x1bf7: 0x000a, -+ 0x1bfd: 0x000a, 0x1bfe: 0x000a, 0x1bff: 0x000a, -+ // Block 0x70, offset 0x1c00 -+ 0x1c19: 0x000c, 0x1c1a: 0x000c, 0x1c1b: 0x000a, 0x1c1c: 0x000a, -+ 0x1c20: 0x000a, -+ // Block 0x71, offset 0x1c40 -+ 0x1c7b: 0x000a, -+ // Block 0x72, offset 0x1c80 -+ 0x1c80: 0x000a, 0x1c81: 0x000a, 0x1c82: 0x000a, 0x1c83: 0x000a, 0x1c84: 0x000a, 0x1c85: 0x000a, -+ 0x1c86: 0x000a, 0x1c87: 0x000a, 0x1c88: 0x000a, 0x1c89: 0x000a, 0x1c8a: 0x000a, 0x1c8b: 0x000a, -+ 0x1c8c: 0x000a, 0x1c8d: 0x000a, 0x1c8e: 0x000a, 0x1c8f: 0x000a, 0x1c90: 0x000a, 0x1c91: 0x000a, -+ 0x1c92: 0x000a, 0x1c93: 0x000a, 0x1c94: 0x000a, 0x1c95: 0x000a, 0x1c96: 0x000a, 0x1c97: 0x000a, -+ 0x1c98: 0x000a, 0x1c99: 0x000a, 0x1c9a: 0x000a, 0x1c9b: 0x000a, 0x1c9c: 0x000a, 0x1c9d: 0x000a, -+ 0x1c9e: 0x000a, 0x1c9f: 0x000a, 0x1ca0: 0x000a, 0x1ca1: 0x000a, 0x1ca2: 0x000a, 0x1ca3: 0x000a, -+ // Block 0x73, offset 0x1cc0 -+ 0x1cdd: 0x000a, -+ 0x1cde: 0x000a, -+ // Block 0x74, offset 0x1d00 -+ 0x1d10: 0x000a, 0x1d11: 0x000a, -+ 0x1d12: 0x000a, 0x1d13: 0x000a, 0x1d14: 0x000a, 0x1d15: 0x000a, 0x1d16: 0x000a, 0x1d17: 0x000a, -+ 0x1d18: 0x000a, 0x1d19: 0x000a, 0x1d1a: 0x000a, 0x1d1b: 0x000a, 0x1d1c: 0x000a, 0x1d1d: 0x000a, -+ 0x1d1e: 0x000a, 0x1d1f: 0x000a, -+ 0x1d3c: 0x000a, 0x1d3d: 0x000a, 0x1d3e: 0x000a, -+ // Block 0x75, offset 0x1d40 -+ 0x1d71: 0x000a, 0x1d72: 0x000a, 0x1d73: 0x000a, 0x1d74: 0x000a, 0x1d75: 0x000a, -+ 0x1d76: 0x000a, 0x1d77: 0x000a, 0x1d78: 0x000a, 0x1d79: 0x000a, 0x1d7a: 0x000a, 0x1d7b: 0x000a, -+ 0x1d7c: 0x000a, 0x1d7d: 0x000a, 0x1d7e: 0x000a, 0x1d7f: 0x000a, -+ // Block 0x76, offset 0x1d80 -+ 0x1d8c: 0x000a, 0x1d8d: 0x000a, 0x1d8e: 0x000a, 0x1d8f: 0x000a, -+ // Block 0x77, offset 0x1dc0 -+ 0x1df7: 0x000a, 0x1df8: 0x000a, 0x1df9: 0x000a, 0x1dfa: 0x000a, -+ // Block 0x78, offset 0x1e00 -+ 0x1e1e: 0x000a, 0x1e1f: 0x000a, -+ 0x1e3f: 0x000a, -+ // Block 0x79, offset 0x1e40 -+ 0x1e50: 0x000a, 0x1e51: 0x000a, -+ 0x1e52: 0x000a, 0x1e53: 0x000a, 0x1e54: 0x000a, 0x1e55: 0x000a, 0x1e56: 0x000a, 0x1e57: 0x000a, -+ 0x1e58: 0x000a, 0x1e59: 0x000a, 0x1e5a: 0x000a, 0x1e5b: 0x000a, 0x1e5c: 0x000a, 0x1e5d: 0x000a, -+ 0x1e5e: 0x000a, 0x1e5f: 0x000a, 0x1e60: 0x000a, 0x1e61: 0x000a, 0x1e62: 0x000a, 0x1e63: 0x000a, -+ 0x1e64: 0x000a, 0x1e65: 0x000a, 0x1e66: 0x000a, 0x1e67: 0x000a, 0x1e68: 0x000a, 0x1e69: 0x000a, -+ 0x1e6a: 0x000a, 0x1e6b: 0x000a, 0x1e6c: 0x000a, 0x1e6d: 0x000a, 0x1e6e: 0x000a, 0x1e6f: 0x000a, -+ 0x1e70: 0x000a, 0x1e71: 0x000a, 0x1e72: 0x000a, 0x1e73: 0x000a, 0x1e74: 0x000a, 0x1e75: 0x000a, -+ 0x1e76: 0x000a, 0x1e77: 0x000a, 0x1e78: 0x000a, 0x1e79: 0x000a, 0x1e7a: 0x000a, 0x1e7b: 0x000a, -+ 0x1e7c: 0x000a, 0x1e7d: 0x000a, 0x1e7e: 0x000a, 0x1e7f: 0x000a, -+ // Block 0x7a, offset 0x1e80 -+ 0x1e80: 0x000a, 0x1e81: 0x000a, 0x1e82: 0x000a, 0x1e83: 0x000a, 0x1e84: 0x000a, 0x1e85: 0x000a, -+ 0x1e86: 0x000a, -+ // Block 0x7b, offset 0x1ec0 -+ 0x1ecd: 0x000a, 0x1ece: 0x000a, 0x1ecf: 0x000a, -+ // Block 0x7c, offset 0x1f00 -+ 0x1f2f: 0x000c, -+ 0x1f30: 0x000c, 0x1f31: 0x000c, 0x1f32: 0x000c, 0x1f33: 0x000a, 0x1f34: 0x000c, 0x1f35: 0x000c, -+ 0x1f36: 0x000c, 0x1f37: 0x000c, 0x1f38: 0x000c, 0x1f39: 0x000c, 0x1f3a: 0x000c, 0x1f3b: 0x000c, -+ 0x1f3c: 0x000c, 0x1f3d: 0x000c, 0x1f3e: 0x000a, 0x1f3f: 0x000a, -+ // Block 0x7d, offset 0x1f40 -+ 0x1f5e: 0x000c, 0x1f5f: 0x000c, -+ // Block 0x7e, offset 0x1f80 -+ 0x1fb0: 0x000c, 0x1fb1: 0x000c, -+ // Block 0x7f, offset 0x1fc0 -+ 0x1fc0: 0x000a, 0x1fc1: 0x000a, 0x1fc2: 0x000a, 0x1fc3: 0x000a, 0x1fc4: 0x000a, 0x1fc5: 0x000a, -+ 0x1fc6: 0x000a, 0x1fc7: 0x000a, 0x1fc8: 0x000a, 0x1fc9: 0x000a, 0x1fca: 0x000a, 0x1fcb: 0x000a, -+ 0x1fcc: 0x000a, 0x1fcd: 0x000a, 0x1fce: 0x000a, 0x1fcf: 0x000a, 0x1fd0: 0x000a, 0x1fd1: 0x000a, -+ 0x1fd2: 0x000a, 0x1fd3: 0x000a, 0x1fd4: 0x000a, 0x1fd5: 0x000a, 0x1fd6: 0x000a, 0x1fd7: 0x000a, -+ 0x1fd8: 0x000a, 0x1fd9: 0x000a, 0x1fda: 0x000a, 0x1fdb: 0x000a, 0x1fdc: 0x000a, 0x1fdd: 0x000a, -+ 0x1fde: 0x000a, 0x1fdf: 0x000a, 0x1fe0: 0x000a, 0x1fe1: 0x000a, -+ // Block 0x80, offset 0x2000 -+ 0x2008: 0x000a, -+ // Block 0x81, offset 0x2040 -+ 0x2042: 0x000c, -+ 0x2046: 0x000c, 0x204b: 0x000c, -+ 0x2065: 0x000c, 0x2066: 0x000c, 0x2068: 0x000a, 0x2069: 0x000a, -+ 0x206a: 0x000a, 0x206b: 0x000a, 0x206c: 0x000c, -+ 0x2078: 0x0004, 0x2079: 0x0004, -+ // Block 0x82, offset 0x2080 -+ 0x20b4: 0x000a, 0x20b5: 0x000a, -+ 0x20b6: 0x000a, 0x20b7: 0x000a, -+ // Block 0x83, offset 0x20c0 -+ 0x20c4: 0x000c, 0x20c5: 0x000c, -+ 0x20e0: 0x000c, 0x20e1: 0x000c, 0x20e2: 0x000c, 0x20e3: 0x000c, -+ 0x20e4: 0x000c, 0x20e5: 0x000c, 0x20e6: 0x000c, 0x20e7: 0x000c, 0x20e8: 0x000c, 0x20e9: 0x000c, -+ 0x20ea: 0x000c, 0x20eb: 0x000c, 0x20ec: 0x000c, 0x20ed: 0x000c, 0x20ee: 0x000c, 0x20ef: 0x000c, -+ 0x20f0: 0x000c, 0x20f1: 0x000c, -+ 0x20ff: 0x000c, -+ // Block 0x84, offset 0x2100 -+ 0x2126: 0x000c, 0x2127: 0x000c, 0x2128: 0x000c, 0x2129: 0x000c, -+ 0x212a: 0x000c, 0x212b: 0x000c, 0x212c: 0x000c, 0x212d: 0x000c, -+ // Block 0x85, offset 0x2140 -+ 0x2147: 0x000c, 0x2148: 0x000c, 0x2149: 0x000c, 0x214a: 0x000c, 0x214b: 0x000c, -+ 0x214c: 0x000c, 0x214d: 0x000c, 0x214e: 0x000c, 0x214f: 0x000c, 0x2150: 0x000c, 0x2151: 0x000c, -+ // Block 0x86, offset 0x2180 -+ 0x2180: 0x000c, 0x2181: 0x000c, 0x2182: 0x000c, -+ 0x21b3: 0x000c, -+ 0x21b6: 0x000c, 0x21b7: 0x000c, 0x21b8: 0x000c, 0x21b9: 0x000c, -+ 0x21bc: 0x000c, 0x21bd: 0x000c, -+ // Block 0x87, offset 0x21c0 -+ 0x21e5: 0x000c, -+ // Block 0x88, offset 0x2200 -+ 0x2229: 0x000c, -+ 0x222a: 0x000c, 0x222b: 0x000c, 0x222c: 0x000c, 0x222d: 0x000c, 0x222e: 0x000c, -+ 0x2231: 0x000c, 0x2232: 0x000c, 0x2235: 0x000c, -+ 0x2236: 0x000c, -+ // Block 0x89, offset 0x2240 -+ 0x2243: 0x000c, -+ 0x224c: 0x000c, -+ 0x227c: 0x000c, -+ // Block 0x8a, offset 0x2280 -+ 0x22b0: 0x000c, 0x22b2: 0x000c, 0x22b3: 0x000c, 0x22b4: 0x000c, -+ 0x22b7: 0x000c, 0x22b8: 0x000c, -+ 0x22be: 0x000c, 0x22bf: 0x000c, -+ // Block 0x8b, offset 0x22c0 -+ 0x22c1: 0x000c, -+ 0x22ec: 0x000c, 0x22ed: 0x000c, -+ 0x22f6: 0x000c, -+ // Block 0x8c, offset 0x2300 -+ 0x232a: 0x000a, 0x232b: 0x000a, -+ // Block 0x8d, offset 0x2340 -+ 0x2365: 0x000c, 0x2368: 0x000c, -+ 0x236d: 0x000c, -+ // Block 0x8e, offset 0x2380 -+ 0x239d: 0x0001, -+ 0x239e: 0x000c, 0x239f: 0x0001, 0x23a0: 0x0001, 0x23a1: 0x0001, 0x23a2: 0x0001, 0x23a3: 0x0001, -+ 0x23a4: 0x0001, 0x23a5: 0x0001, 0x23a6: 0x0001, 0x23a7: 0x0001, 0x23a8: 0x0001, 0x23a9: 0x0003, -+ 0x23aa: 0x0001, 0x23ab: 0x0001, 0x23ac: 0x0001, 0x23ad: 0x0001, 0x23ae: 0x0001, 0x23af: 0x0001, -+ 0x23b0: 0x0001, 0x23b1: 0x0001, 0x23b2: 0x0001, 0x23b3: 0x0001, 0x23b4: 0x0001, 0x23b5: 0x0001, -+ 0x23b6: 0x0001, 0x23b7: 0x0001, 0x23b8: 0x0001, 0x23b9: 0x0001, 0x23ba: 0x0001, 0x23bb: 0x0001, -+ 0x23bc: 0x0001, 0x23bd: 0x0001, 0x23be: 0x0001, 0x23bf: 0x0001, -+ // Block 0x8f, offset 0x23c0 -+ 0x23c0: 0x0001, 0x23c1: 0x0001, 0x23c2: 0x0001, 0x23c3: 0x0001, 0x23c4: 0x0001, 0x23c5: 0x0001, -+ 0x23c6: 0x0001, 0x23c7: 0x0001, 0x23c8: 0x0001, 0x23c9: 0x0001, 0x23ca: 0x0001, 0x23cb: 0x0001, -+ 0x23cc: 0x0001, 0x23cd: 0x0001, 0x23ce: 0x0001, 0x23cf: 0x0001, 0x23d0: 0x000d, 0x23d1: 0x000d, -+ 0x23d2: 0x000d, 0x23d3: 0x000d, 0x23d4: 0x000d, 0x23d5: 0x000d, 0x23d6: 0x000d, 0x23d7: 0x000d, -+ 0x23d8: 0x000d, 0x23d9: 0x000d, 0x23da: 0x000d, 0x23db: 0x000d, 0x23dc: 0x000d, 0x23dd: 0x000d, -+ 0x23de: 0x000d, 0x23df: 0x000d, 0x23e0: 0x000d, 0x23e1: 0x000d, 0x23e2: 0x000d, 0x23e3: 0x000d, -+ 0x23e4: 0x000d, 0x23e5: 0x000d, 0x23e6: 0x000d, 0x23e7: 0x000d, 0x23e8: 0x000d, 0x23e9: 0x000d, -+ 0x23ea: 0x000d, 0x23eb: 0x000d, 0x23ec: 0x000d, 0x23ed: 0x000d, 0x23ee: 0x000d, 0x23ef: 0x000d, -+ 0x23f0: 0x000d, 0x23f1: 0x000d, 0x23f2: 0x000d, 0x23f3: 0x000d, 0x23f4: 0x000d, 0x23f5: 0x000d, -+ 0x23f6: 0x000d, 0x23f7: 0x000d, 0x23f8: 0x000d, 0x23f9: 0x000d, 0x23fa: 0x000d, 0x23fb: 0x000d, -+ 0x23fc: 0x000d, 0x23fd: 0x000d, 0x23fe: 0x000d, 0x23ff: 0x000d, -+ // Block 0x90, offset 0x2400 -+ 0x2400: 0x000d, 0x2401: 0x000d, 0x2402: 0x000d, 0x2403: 0x000d, 0x2404: 0x000d, 0x2405: 0x000d, -+ 0x2406: 0x000d, 0x2407: 0x000d, 0x2408: 0x000d, 0x2409: 0x000d, 0x240a: 0x000d, 0x240b: 0x000d, -+ 0x240c: 0x000d, 0x240d: 0x000d, 0x240e: 0x000d, 0x240f: 0x000d, 0x2410: 0x000d, 0x2411: 0x000d, -+ 0x2412: 0x000d, 0x2413: 0x000d, 0x2414: 0x000d, 0x2415: 0x000d, 0x2416: 0x000d, 0x2417: 0x000d, -+ 0x2418: 0x000d, 0x2419: 0x000d, 0x241a: 0x000d, 0x241b: 0x000d, 0x241c: 0x000d, 0x241d: 0x000d, -+ 0x241e: 0x000d, 0x241f: 0x000d, 0x2420: 0x000d, 0x2421: 0x000d, 0x2422: 0x000d, 0x2423: 0x000d, -+ 0x2424: 0x000d, 0x2425: 0x000d, 0x2426: 0x000d, 0x2427: 0x000d, 0x2428: 0x000d, 0x2429: 0x000d, -+ 0x242a: 0x000d, 0x242b: 0x000d, 0x242c: 0x000d, 0x242d: 0x000d, 0x242e: 0x000d, 0x242f: 0x000d, -+ 0x2430: 0x000d, 0x2431: 0x000d, 0x2432: 0x000d, 0x2433: 0x000d, 0x2434: 0x000d, 0x2435: 0x000d, -+ 0x2436: 0x000d, 0x2437: 0x000d, 0x2438: 0x000d, 0x2439: 0x000d, 0x243a: 0x000d, 0x243b: 0x000d, -+ 0x243c: 0x000d, 0x243d: 0x000d, 0x243e: 0x000a, 0x243f: 0x000a, -+ // Block 0x91, offset 0x2440 -+ 0x2440: 0x000a, 0x2441: 0x000a, 0x2442: 0x000a, 0x2443: 0x000a, 0x2444: 0x000a, 0x2445: 0x000a, -+ 0x2446: 0x000a, 0x2447: 0x000a, 0x2448: 0x000a, 0x2449: 0x000a, 0x244a: 0x000a, 0x244b: 0x000a, -+ 0x244c: 0x000a, 0x244d: 0x000a, 0x244e: 0x000a, 0x244f: 0x000a, 0x2450: 0x000d, 0x2451: 0x000d, -+ 0x2452: 0x000d, 0x2453: 0x000d, 0x2454: 0x000d, 0x2455: 0x000d, 0x2456: 0x000d, 0x2457: 0x000d, -+ 0x2458: 0x000d, 0x2459: 0x000d, 0x245a: 0x000d, 0x245b: 0x000d, 0x245c: 0x000d, 0x245d: 0x000d, -+ 0x245e: 0x000d, 0x245f: 0x000d, 0x2460: 0x000d, 0x2461: 0x000d, 0x2462: 0x000d, 0x2463: 0x000d, -+ 0x2464: 0x000d, 0x2465: 0x000d, 0x2466: 0x000d, 0x2467: 0x000d, 0x2468: 0x000d, 0x2469: 0x000d, -+ 0x246a: 0x000d, 0x246b: 0x000d, 0x246c: 0x000d, 0x246d: 0x000d, 0x246e: 0x000d, 0x246f: 0x000d, -+ 0x2470: 0x000d, 0x2471: 0x000d, 0x2472: 0x000d, 0x2473: 0x000d, 0x2474: 0x000d, 0x2475: 0x000d, -+ 0x2476: 0x000d, 0x2477: 0x000d, 0x2478: 0x000d, 0x2479: 0x000d, 0x247a: 0x000d, 0x247b: 0x000d, -+ 0x247c: 0x000d, 0x247d: 0x000d, 0x247e: 0x000d, 0x247f: 0x000d, -+ // Block 0x92, offset 0x2480 -+ 0x2480: 0x000d, 0x2481: 0x000d, 0x2482: 0x000d, 0x2483: 0x000d, 0x2484: 0x000d, 0x2485: 0x000d, -+ 0x2486: 0x000d, 0x2487: 0x000d, 0x2488: 0x000d, 0x2489: 0x000d, 0x248a: 0x000d, 0x248b: 0x000d, -+ 0x248c: 0x000d, 0x248d: 0x000d, 0x248e: 0x000d, 0x248f: 0x000a, 0x2490: 0x000b, 0x2491: 0x000b, -+ 0x2492: 0x000b, 0x2493: 0x000b, 0x2494: 0x000b, 0x2495: 0x000b, 0x2496: 0x000b, 0x2497: 0x000b, -+ 0x2498: 0x000b, 0x2499: 0x000b, 0x249a: 0x000b, 0x249b: 0x000b, 0x249c: 0x000b, 0x249d: 0x000b, -+ 0x249e: 0x000b, 0x249f: 0x000b, 0x24a0: 0x000b, 0x24a1: 0x000b, 0x24a2: 0x000b, 0x24a3: 0x000b, -+ 0x24a4: 0x000b, 0x24a5: 0x000b, 0x24a6: 0x000b, 0x24a7: 0x000b, 0x24a8: 0x000b, 0x24a9: 0x000b, -+ 0x24aa: 0x000b, 0x24ab: 0x000b, 0x24ac: 0x000b, 0x24ad: 0x000b, 0x24ae: 0x000b, 0x24af: 0x000b, -+ 0x24b0: 0x000d, 0x24b1: 0x000d, 0x24b2: 0x000d, 0x24b3: 0x000d, 0x24b4: 0x000d, 0x24b5: 0x000d, -+ 0x24b6: 0x000d, 0x24b7: 0x000d, 0x24b8: 0x000d, 0x24b9: 0x000d, 0x24ba: 0x000d, 0x24bb: 0x000d, -+ 0x24bc: 0x000d, 0x24bd: 0x000a, 0x24be: 0x000a, 0x24bf: 0x000a, -+ // Block 0x93, offset 0x24c0 -+ 0x24c0: 0x000c, 0x24c1: 0x000c, 0x24c2: 0x000c, 0x24c3: 0x000c, 0x24c4: 0x000c, 0x24c5: 0x000c, -+ 0x24c6: 0x000c, 0x24c7: 0x000c, 0x24c8: 0x000c, 0x24c9: 0x000c, 0x24ca: 0x000c, 0x24cb: 0x000c, -+ 0x24cc: 0x000c, 0x24cd: 0x000c, 0x24ce: 0x000c, 0x24cf: 0x000c, 0x24d0: 0x000a, 0x24d1: 0x000a, -+ 0x24d2: 0x000a, 0x24d3: 0x000a, 0x24d4: 0x000a, 0x24d5: 0x000a, 0x24d6: 0x000a, 0x24d7: 0x000a, -+ 0x24d8: 0x000a, 0x24d9: 0x000a, -+ 0x24e0: 0x000c, 0x24e1: 0x000c, 0x24e2: 0x000c, 0x24e3: 0x000c, -+ 0x24e4: 0x000c, 0x24e5: 0x000c, 0x24e6: 0x000c, 0x24e7: 0x000c, 0x24e8: 0x000c, 0x24e9: 0x000c, -+ 0x24ea: 0x000c, 0x24eb: 0x000c, 0x24ec: 0x000c, 0x24ed: 0x000c, 0x24ee: 0x000c, 0x24ef: 0x000c, -+ 0x24f0: 0x000a, 0x24f1: 0x000a, 0x24f2: 0x000a, 0x24f3: 0x000a, 0x24f4: 0x000a, 0x24f5: 0x000a, -+ 0x24f6: 0x000a, 0x24f7: 0x000a, 0x24f8: 0x000a, 0x24f9: 0x000a, 0x24fa: 0x000a, 0x24fb: 0x000a, -+ 0x24fc: 0x000a, 0x24fd: 0x000a, 0x24fe: 0x000a, 0x24ff: 0x000a, -+ // Block 0x94, offset 0x2500 -+ 0x2500: 0x000a, 0x2501: 0x000a, 0x2502: 0x000a, 0x2503: 0x000a, 0x2504: 0x000a, 0x2505: 0x000a, -+ 0x2506: 0x000a, 0x2507: 0x000a, 0x2508: 0x000a, 0x2509: 0x000a, 0x250a: 0x000a, 0x250b: 0x000a, -+ 0x250c: 0x000a, 0x250d: 0x000a, 0x250e: 0x000a, 0x250f: 0x000a, 0x2510: 0x0006, 0x2511: 0x000a, -+ 0x2512: 0x0006, 0x2514: 0x000a, 0x2515: 0x0006, 0x2516: 0x000a, 0x2517: 0x000a, -+ 0x2518: 0x000a, 0x2519: 0x009a, 0x251a: 0x008a, 0x251b: 0x007a, 0x251c: 0x006a, 0x251d: 0x009a, -+ 0x251e: 0x008a, 0x251f: 0x0004, 0x2520: 0x000a, 0x2521: 0x000a, 0x2522: 0x0003, 0x2523: 0x0003, -+ 0x2524: 0x000a, 0x2525: 0x000a, 0x2526: 0x000a, 0x2528: 0x000a, 0x2529: 0x0004, -+ 0x252a: 0x0004, 0x252b: 0x000a, -+ 0x2530: 0x000d, 0x2531: 0x000d, 0x2532: 0x000d, 0x2533: 0x000d, 0x2534: 0x000d, 0x2535: 0x000d, -+ 0x2536: 0x000d, 0x2537: 0x000d, 0x2538: 0x000d, 0x2539: 0x000d, 0x253a: 0x000d, 0x253b: 0x000d, -+ 0x253c: 0x000d, 0x253d: 0x000d, 0x253e: 0x000d, 0x253f: 0x000d, -+ // Block 0x95, offset 0x2540 -+ 0x2540: 0x000d, 0x2541: 0x000d, 0x2542: 0x000d, 0x2543: 0x000d, 0x2544: 0x000d, 0x2545: 0x000d, -+ 0x2546: 0x000d, 0x2547: 0x000d, 0x2548: 0x000d, 0x2549: 0x000d, 0x254a: 0x000d, 0x254b: 0x000d, -+ 0x254c: 0x000d, 0x254d: 0x000d, 0x254e: 0x000d, 0x254f: 0x000d, 0x2550: 0x000d, 0x2551: 0x000d, -+ 0x2552: 0x000d, 0x2553: 0x000d, 0x2554: 0x000d, 0x2555: 0x000d, 0x2556: 0x000d, 0x2557: 0x000d, -+ 0x2558: 0x000d, 0x2559: 0x000d, 0x255a: 0x000d, 0x255b: 0x000d, 0x255c: 0x000d, 0x255d: 0x000d, -+ 0x255e: 0x000d, 0x255f: 0x000d, 0x2560: 0x000d, 0x2561: 0x000d, 0x2562: 0x000d, 0x2563: 0x000d, -+ 0x2564: 0x000d, 0x2565: 0x000d, 0x2566: 0x000d, 0x2567: 0x000d, 0x2568: 0x000d, 0x2569: 0x000d, -+ 0x256a: 0x000d, 0x256b: 0x000d, 0x256c: 0x000d, 0x256d: 0x000d, 0x256e: 0x000d, 0x256f: 0x000d, -+ 0x2570: 0x000d, 0x2571: 0x000d, 0x2572: 0x000d, 0x2573: 0x000d, 0x2574: 0x000d, 0x2575: 0x000d, -+ 0x2576: 0x000d, 0x2577: 0x000d, 0x2578: 0x000d, 0x2579: 0x000d, 0x257a: 0x000d, 0x257b: 0x000d, -+ 0x257c: 0x000d, 0x257d: 0x000d, 0x257e: 0x000d, 0x257f: 0x000b, -+ // Block 0x96, offset 0x2580 -+ 0x2581: 0x000a, 0x2582: 0x000a, 0x2583: 0x0004, 0x2584: 0x0004, 0x2585: 0x0004, -+ 0x2586: 0x000a, 0x2587: 0x000a, 0x2588: 0x003a, 0x2589: 0x002a, 0x258a: 0x000a, 0x258b: 0x0003, -+ 0x258c: 0x0006, 0x258d: 0x0003, 0x258e: 0x0006, 0x258f: 0x0006, 0x2590: 0x0002, 0x2591: 0x0002, -+ 0x2592: 0x0002, 0x2593: 0x0002, 0x2594: 0x0002, 0x2595: 0x0002, 0x2596: 0x0002, 0x2597: 0x0002, -+ 0x2598: 0x0002, 0x2599: 0x0002, 0x259a: 0x0006, 0x259b: 0x000a, 0x259c: 0x000a, 0x259d: 0x000a, -+ 0x259e: 0x000a, 0x259f: 0x000a, 0x25a0: 0x000a, -+ 0x25bb: 0x005a, -+ 0x25bc: 0x000a, 0x25bd: 0x004a, 0x25be: 0x000a, 0x25bf: 0x000a, -+ // Block 0x97, offset 0x25c0 -+ 0x25c0: 0x000a, -+ 0x25db: 0x005a, 0x25dc: 0x000a, 0x25dd: 0x004a, -+ 0x25de: 0x000a, 0x25df: 0x00fa, 0x25e0: 0x00ea, 0x25e1: 0x000a, 0x25e2: 0x003a, 0x25e3: 0x002a, -+ 0x25e4: 0x000a, 0x25e5: 0x000a, -+ // Block 0x98, offset 0x2600 -+ 0x2620: 0x0004, 0x2621: 0x0004, 0x2622: 0x000a, 0x2623: 0x000a, -+ 0x2624: 0x000a, 0x2625: 0x0004, 0x2626: 0x0004, 0x2628: 0x000a, 0x2629: 0x000a, -+ 0x262a: 0x000a, 0x262b: 0x000a, 0x262c: 0x000a, 0x262d: 0x000a, 0x262e: 0x000a, -+ 0x2630: 0x000b, 0x2631: 0x000b, 0x2632: 0x000b, 0x2633: 0x000b, 0x2634: 0x000b, 0x2635: 0x000b, -+ 0x2636: 0x000b, 0x2637: 0x000b, 0x2638: 0x000b, 0x2639: 0x000a, 0x263a: 0x000a, 0x263b: 0x000a, -+ 0x263c: 0x000a, 0x263d: 0x000a, 0x263e: 0x000b, 0x263f: 0x000b, -+ // Block 0x99, offset 0x2640 -+ 0x2641: 0x000a, -+ // Block 0x9a, offset 0x2680 -+ 0x2680: 0x000a, 0x2681: 0x000a, 0x2682: 0x000a, 0x2683: 0x000a, 0x2684: 0x000a, 0x2685: 0x000a, -+ 0x2686: 0x000a, 0x2687: 0x000a, 0x2688: 0x000a, 0x2689: 0x000a, 0x268a: 0x000a, 0x268b: 0x000a, -+ 0x268c: 0x000a, 0x2690: 0x000a, 0x2691: 0x000a, -+ 0x2692: 0x000a, 0x2693: 0x000a, 0x2694: 0x000a, 0x2695: 0x000a, 0x2696: 0x000a, 0x2697: 0x000a, -+ 0x2698: 0x000a, 0x2699: 0x000a, 0x269a: 0x000a, 0x269b: 0x000a, 0x269c: 0x000a, -+ 0x26a0: 0x000a, -+ // Block 0x9b, offset 0x26c0 -+ 0x26fd: 0x000c, -+ // Block 0x9c, offset 0x2700 -+ 0x2720: 0x000c, 0x2721: 0x0002, 0x2722: 0x0002, 0x2723: 0x0002, -+ 0x2724: 0x0002, 0x2725: 0x0002, 0x2726: 0x0002, 0x2727: 0x0002, 0x2728: 0x0002, 0x2729: 0x0002, -+ 0x272a: 0x0002, 0x272b: 0x0002, 0x272c: 0x0002, 0x272d: 0x0002, 0x272e: 0x0002, 0x272f: 0x0002, -+ 0x2730: 0x0002, 0x2731: 0x0002, 0x2732: 0x0002, 0x2733: 0x0002, 0x2734: 0x0002, 0x2735: 0x0002, -+ 0x2736: 0x0002, 0x2737: 0x0002, 0x2738: 0x0002, 0x2739: 0x0002, 0x273a: 0x0002, 0x273b: 0x0002, -+ // Block 0x9d, offset 0x2740 -+ 0x2776: 0x000c, 0x2777: 0x000c, 0x2778: 0x000c, 0x2779: 0x000c, 0x277a: 0x000c, -+ // Block 0x9e, offset 0x2780 -+ 0x2780: 0x0001, 0x2781: 0x0001, 0x2782: 0x0001, 0x2783: 0x0001, 0x2784: 0x0001, 0x2785: 0x0001, -+ 0x2786: 0x0001, 0x2787: 0x0001, 0x2788: 0x0001, 0x2789: 0x0001, 0x278a: 0x0001, 0x278b: 0x0001, -+ 0x278c: 0x0001, 0x278d: 0x0001, 0x278e: 0x0001, 0x278f: 0x0001, 0x2790: 0x0001, 0x2791: 0x0001, -+ 0x2792: 0x0001, 0x2793: 0x0001, 0x2794: 0x0001, 0x2795: 0x0001, 0x2796: 0x0001, 0x2797: 0x0001, -+ 0x2798: 0x0001, 0x2799: 0x0001, 0x279a: 0x0001, 0x279b: 0x0001, 0x279c: 0x0001, 0x279d: 0x0001, -+ 0x279e: 0x0001, 0x279f: 0x0001, 0x27a0: 0x0001, 0x27a1: 0x0001, 0x27a2: 0x0001, 0x27a3: 0x0001, -+ 0x27a4: 0x0001, 0x27a5: 0x0001, 0x27a6: 0x0001, 0x27a7: 0x0001, 0x27a8: 0x0001, 0x27a9: 0x0001, -+ 0x27aa: 0x0001, 0x27ab: 0x0001, 0x27ac: 0x0001, 0x27ad: 0x0001, 0x27ae: 0x0001, 0x27af: 0x0001, -+ 0x27b0: 0x0001, 0x27b1: 0x0001, 0x27b2: 0x0001, 0x27b3: 0x0001, 0x27b4: 0x0001, 0x27b5: 0x0001, -+ 0x27b6: 0x0001, 0x27b7: 0x0001, 0x27b8: 0x0001, 0x27b9: 0x0001, 0x27ba: 0x0001, 0x27bb: 0x0001, -+ 0x27bc: 0x0001, 0x27bd: 0x0001, 0x27be: 0x0001, 0x27bf: 0x0001, -+ // Block 0x9f, offset 0x27c0 -+ 0x27c0: 0x0001, 0x27c1: 0x0001, 0x27c2: 0x0001, 0x27c3: 0x0001, 0x27c4: 0x0001, 0x27c5: 0x0001, -+ 0x27c6: 0x0001, 0x27c7: 0x0001, 0x27c8: 0x0001, 0x27c9: 0x0001, 0x27ca: 0x0001, 0x27cb: 0x0001, -+ 0x27cc: 0x0001, 0x27cd: 0x0001, 0x27ce: 0x0001, 0x27cf: 0x0001, 0x27d0: 0x0001, 0x27d1: 0x0001, -+ 0x27d2: 0x0001, 0x27d3: 0x0001, 0x27d4: 0x0001, 0x27d5: 0x0001, 0x27d6: 0x0001, 0x27d7: 0x0001, -+ 0x27d8: 0x0001, 0x27d9: 0x0001, 0x27da: 0x0001, 0x27db: 0x0001, 0x27dc: 0x0001, 0x27dd: 0x0001, -+ 0x27de: 0x0001, 0x27df: 0x000a, 0x27e0: 0x0001, 0x27e1: 0x0001, 0x27e2: 0x0001, 0x27e3: 0x0001, -+ 0x27e4: 0x0001, 0x27e5: 0x0001, 0x27e6: 0x0001, 0x27e7: 0x0001, 0x27e8: 0x0001, 0x27e9: 0x0001, -+ 0x27ea: 0x0001, 0x27eb: 0x0001, 0x27ec: 0x0001, 0x27ed: 0x0001, 0x27ee: 0x0001, 0x27ef: 0x0001, -+ 0x27f0: 0x0001, 0x27f1: 0x0001, 0x27f2: 0x0001, 0x27f3: 0x0001, 0x27f4: 0x0001, 0x27f5: 0x0001, -+ 0x27f6: 0x0001, 0x27f7: 0x0001, 0x27f8: 0x0001, 0x27f9: 0x0001, 0x27fa: 0x0001, 0x27fb: 0x0001, -+ 0x27fc: 0x0001, 0x27fd: 0x0001, 0x27fe: 0x0001, 0x27ff: 0x0001, -+ // Block 0xa0, offset 0x2800 -+ 0x2800: 0x0001, 0x2801: 0x000c, 0x2802: 0x000c, 0x2803: 0x000c, 0x2804: 0x0001, 0x2805: 0x000c, -+ 0x2806: 0x000c, 0x2807: 0x0001, 0x2808: 0x0001, 0x2809: 0x0001, 0x280a: 0x0001, 0x280b: 0x0001, -+ 0x280c: 0x000c, 0x280d: 0x000c, 0x280e: 0x000c, 0x280f: 0x000c, 0x2810: 0x0001, 0x2811: 0x0001, -+ 0x2812: 0x0001, 0x2813: 0x0001, 0x2814: 0x0001, 0x2815: 0x0001, 0x2816: 0x0001, 0x2817: 0x0001, -+ 0x2818: 0x0001, 0x2819: 0x0001, 0x281a: 0x0001, 0x281b: 0x0001, 0x281c: 0x0001, 0x281d: 0x0001, -+ 0x281e: 0x0001, 0x281f: 0x0001, 0x2820: 0x0001, 0x2821: 0x0001, 0x2822: 0x0001, 0x2823: 0x0001, -+ 0x2824: 0x0001, 0x2825: 0x0001, 0x2826: 0x0001, 0x2827: 0x0001, 0x2828: 0x0001, 0x2829: 0x0001, -+ 0x282a: 0x0001, 0x282b: 0x0001, 0x282c: 0x0001, 0x282d: 0x0001, 0x282e: 0x0001, 0x282f: 0x0001, -+ 0x2830: 0x0001, 0x2831: 0x0001, 0x2832: 0x0001, 0x2833: 0x0001, 0x2834: 0x0001, 0x2835: 0x0001, -+ 0x2836: 0x0001, 0x2837: 0x0001, 0x2838: 0x000c, 0x2839: 0x000c, 0x283a: 0x000c, 0x283b: 0x0001, -+ 0x283c: 0x0001, 0x283d: 0x0001, 0x283e: 0x0001, 0x283f: 0x000c, -+ // Block 0xa1, offset 0x2840 -+ 0x2840: 0x0001, 0x2841: 0x0001, 0x2842: 0x0001, 0x2843: 0x0001, 0x2844: 0x0001, 0x2845: 0x0001, -+ 0x2846: 0x0001, 0x2847: 0x0001, 0x2848: 0x0001, 0x2849: 0x0001, 0x284a: 0x0001, 0x284b: 0x0001, -+ 0x284c: 0x0001, 0x284d: 0x0001, 0x284e: 0x0001, 0x284f: 0x0001, 0x2850: 0x0001, 0x2851: 0x0001, -+ 0x2852: 0x0001, 0x2853: 0x0001, 0x2854: 0x0001, 0x2855: 0x0001, 0x2856: 0x0001, 0x2857: 0x0001, -+ 0x2858: 0x0001, 0x2859: 0x0001, 0x285a: 0x0001, 0x285b: 0x0001, 0x285c: 0x0001, 0x285d: 0x0001, -+ 0x285e: 0x0001, 0x285f: 0x0001, 0x2860: 0x0001, 0x2861: 0x0001, 0x2862: 0x0001, 0x2863: 0x0001, -+ 0x2864: 0x0001, 0x2865: 0x000c, 0x2866: 0x000c, 0x2867: 0x0001, 0x2868: 0x0001, 0x2869: 0x0001, -+ 0x286a: 0x0001, 0x286b: 0x0001, 0x286c: 0x0001, 0x286d: 0x0001, 0x286e: 0x0001, 0x286f: 0x0001, -+ 0x2870: 0x0001, 0x2871: 0x0001, 0x2872: 0x0001, 0x2873: 0x0001, 0x2874: 0x0001, 0x2875: 0x0001, -+ 0x2876: 0x0001, 0x2877: 0x0001, 0x2878: 0x0001, 0x2879: 0x0001, 0x287a: 0x0001, 0x287b: 0x0001, -+ 0x287c: 0x0001, 0x287d: 0x0001, 0x287e: 0x0001, 0x287f: 0x0001, -+ // Block 0xa2, offset 0x2880 -+ 0x2880: 0x0001, 0x2881: 0x0001, 0x2882: 0x0001, 0x2883: 0x0001, 0x2884: 0x0001, 0x2885: 0x0001, -+ 0x2886: 0x0001, 0x2887: 0x0001, 0x2888: 0x0001, 0x2889: 0x0001, 0x288a: 0x0001, 0x288b: 0x0001, -+ 0x288c: 0x0001, 0x288d: 0x0001, 0x288e: 0x0001, 0x288f: 0x0001, 0x2890: 0x0001, 0x2891: 0x0001, -+ 0x2892: 0x0001, 0x2893: 0x0001, 0x2894: 0x0001, 0x2895: 0x0001, 0x2896: 0x0001, 0x2897: 0x0001, -+ 0x2898: 0x0001, 0x2899: 0x0001, 0x289a: 0x0001, 0x289b: 0x0001, 0x289c: 0x0001, 0x289d: 0x0001, -+ 0x289e: 0x0001, 0x289f: 0x0001, 0x28a0: 0x0001, 0x28a1: 0x0001, 0x28a2: 0x0001, 0x28a3: 0x0001, -+ 0x28a4: 0x0001, 0x28a5: 0x0001, 0x28a6: 0x0001, 0x28a7: 0x0001, 0x28a8: 0x0001, 0x28a9: 0x0001, -+ 0x28aa: 0x0001, 0x28ab: 0x0001, 0x28ac: 0x0001, 0x28ad: 0x0001, 0x28ae: 0x0001, 0x28af: 0x0001, -+ 0x28b0: 0x0001, 0x28b1: 0x0001, 0x28b2: 0x0001, 0x28b3: 0x0001, 0x28b4: 0x0001, 0x28b5: 0x0001, -+ 0x28b6: 0x0001, 0x28b7: 0x0001, 0x28b8: 0x0001, 0x28b9: 0x000a, 0x28ba: 0x000a, 0x28bb: 0x000a, -+ 0x28bc: 0x000a, 0x28bd: 0x000a, 0x28be: 0x000a, 0x28bf: 0x000a, -+ // Block 0xa3, offset 0x28c0 -+ 0x28c0: 0x000d, 0x28c1: 0x000d, 0x28c2: 0x000d, 0x28c3: 0x000d, 0x28c4: 0x000d, 0x28c5: 0x000d, -+ 0x28c6: 0x000d, 0x28c7: 0x000d, 0x28c8: 0x000d, 0x28c9: 0x000d, 0x28ca: 0x000d, 0x28cb: 0x000d, -+ 0x28cc: 0x000d, 0x28cd: 0x000d, 0x28ce: 0x000d, 0x28cf: 0x000d, 0x28d0: 0x000d, 0x28d1: 0x000d, -+ 0x28d2: 0x000d, 0x28d3: 0x000d, 0x28d4: 0x000d, 0x28d5: 0x000d, 0x28d6: 0x000d, 0x28d7: 0x000d, -+ 0x28d8: 0x000d, 0x28d9: 0x000d, 0x28da: 0x000d, 0x28db: 0x000d, 0x28dc: 0x000d, 0x28dd: 0x000d, -+ 0x28de: 0x000d, 0x28df: 0x000d, 0x28e0: 0x000d, 0x28e1: 0x000d, 0x28e2: 0x000d, 0x28e3: 0x000d, -+ 0x28e4: 0x000c, 0x28e5: 0x000c, 0x28e6: 0x000c, 0x28e7: 0x000c, 0x28e8: 0x0001, 0x28e9: 0x0001, -+ 0x28ea: 0x0001, 0x28eb: 0x0001, 0x28ec: 0x0001, 0x28ed: 0x0001, 0x28ee: 0x0001, 0x28ef: 0x0001, -+ 0x28f0: 0x0005, 0x28f1: 0x0005, 0x28f2: 0x0005, 0x28f3: 0x0005, 0x28f4: 0x0005, 0x28f5: 0x0005, -+ 0x28f6: 0x0005, 0x28f7: 0x0005, 0x28f8: 0x0005, 0x28f9: 0x0005, 0x28fa: 0x0001, 0x28fb: 0x0001, -+ 0x28fc: 0x0001, 0x28fd: 0x0001, 0x28fe: 0x0001, 0x28ff: 0x0001, -+ // Block 0xa4, offset 0x2900 -+ 0x2900: 0x0001, 0x2901: 0x0001, 0x2902: 0x0001, 0x2903: 0x0001, 0x2904: 0x0001, 0x2905: 0x0001, -+ 0x2906: 0x0001, 0x2907: 0x0001, 0x2908: 0x0001, 0x2909: 0x0001, 0x290a: 0x0001, 0x290b: 0x0001, -+ 0x290c: 0x0001, 0x290d: 0x0001, 0x290e: 0x0001, 0x290f: 0x0001, 0x2910: 0x0001, 0x2911: 0x0001, -+ 0x2912: 0x0001, 0x2913: 0x0001, 0x2914: 0x0001, 0x2915: 0x0001, 0x2916: 0x0001, 0x2917: 0x0001, -+ 0x2918: 0x0001, 0x2919: 0x0001, 0x291a: 0x0001, 0x291b: 0x0001, 0x291c: 0x0001, 0x291d: 0x0001, -+ 0x291e: 0x0001, 0x291f: 0x0001, 0x2920: 0x0005, 0x2921: 0x0005, 0x2922: 0x0005, 0x2923: 0x0005, -+ 0x2924: 0x0005, 0x2925: 0x0005, 0x2926: 0x0005, 0x2927: 0x0005, 0x2928: 0x0005, 0x2929: 0x0005, -+ 0x292a: 0x0005, 0x292b: 0x0005, 0x292c: 0x0005, 0x292d: 0x0005, 0x292e: 0x0005, 0x292f: 0x0005, -+ 0x2930: 0x0005, 0x2931: 0x0005, 0x2932: 0x0005, 0x2933: 0x0005, 0x2934: 0x0005, 0x2935: 0x0005, -+ 0x2936: 0x0005, 0x2937: 0x0005, 0x2938: 0x0005, 0x2939: 0x0005, 0x293a: 0x0005, 0x293b: 0x0005, -+ 0x293c: 0x0005, 0x293d: 0x0005, 0x293e: 0x0005, 0x293f: 0x0001, -+ // Block 0xa5, offset 0x2940 -+ 0x2940: 0x0001, 0x2941: 0x0001, 0x2942: 0x0001, 0x2943: 0x0001, 0x2944: 0x0001, 0x2945: 0x0001, -+ 0x2946: 0x0001, 0x2947: 0x0001, 0x2948: 0x0001, 0x2949: 0x0001, 0x294a: 0x0001, 0x294b: 0x0001, -+ 0x294c: 0x0001, 0x294d: 0x0001, 0x294e: 0x0001, 0x294f: 0x0001, 0x2950: 0x0001, 0x2951: 0x0001, -+ 0x2952: 0x0001, 0x2953: 0x0001, 0x2954: 0x0001, 0x2955: 0x0001, 0x2956: 0x0001, 0x2957: 0x0001, -+ 0x2958: 0x0001, 0x2959: 0x0001, 0x295a: 0x0001, 0x295b: 0x0001, 0x295c: 0x0001, 0x295d: 0x0001, -+ 0x295e: 0x0001, 0x295f: 0x0001, 0x2960: 0x0001, 0x2961: 0x0001, 0x2962: 0x0001, 0x2963: 0x0001, -+ 0x2964: 0x0001, 0x2965: 0x0001, 0x2966: 0x0001, 0x2967: 0x0001, 0x2968: 0x0001, 0x2969: 0x0001, -+ 0x296a: 0x0001, 0x296b: 0x000c, 0x296c: 0x000c, 0x296d: 0x0001, 0x296e: 0x0001, 0x296f: 0x0001, -+ 0x2970: 0x0001, 0x2971: 0x0001, 0x2972: 0x0001, 0x2973: 0x0001, 0x2974: 0x0001, 0x2975: 0x0001, -+ 0x2976: 0x0001, 0x2977: 0x0001, 0x2978: 0x0001, 0x2979: 0x0001, 0x297a: 0x0001, 0x297b: 0x0001, -+ 0x297c: 0x0001, 0x297d: 0x0001, 0x297e: 0x0001, 0x297f: 0x0001, -+ // Block 0xa6, offset 0x2980 -+ 0x2980: 0x0001, 0x2981: 0x0001, 0x2982: 0x0001, 0x2983: 0x0001, 0x2984: 0x0001, 0x2985: 0x0001, -+ 0x2986: 0x0001, 0x2987: 0x0001, 0x2988: 0x0001, 0x2989: 0x0001, 0x298a: 0x0001, 0x298b: 0x0001, -+ 0x298c: 0x0001, 0x298d: 0x0001, 0x298e: 0x0001, 0x298f: 0x0001, 0x2990: 0x0001, 0x2991: 0x0001, -+ 0x2992: 0x0001, 0x2993: 0x0001, 0x2994: 0x0001, 0x2995: 0x0001, 0x2996: 0x0001, 0x2997: 0x0001, -+ 0x2998: 0x0001, 0x2999: 0x0001, 0x299a: 0x0001, 0x299b: 0x0001, 0x299c: 0x0001, 0x299d: 0x0001, -+ 0x299e: 0x0001, 0x299f: 0x0001, 0x29a0: 0x0001, 0x29a1: 0x0001, 0x29a2: 0x0001, 0x29a3: 0x0001, -+ 0x29a4: 0x0001, 0x29a5: 0x0001, 0x29a6: 0x0001, 0x29a7: 0x0001, 0x29a8: 0x0001, 0x29a9: 0x0001, -+ 0x29aa: 0x0001, 0x29ab: 0x0001, 0x29ac: 0x0001, 0x29ad: 0x0001, 0x29ae: 0x0001, 0x29af: 0x0001, -+ 0x29b0: 0x0001, 0x29b1: 0x0001, 0x29b2: 0x0001, 0x29b3: 0x0001, 0x29b4: 0x0001, 0x29b5: 0x0001, -+ 0x29b6: 0x0001, 0x29b7: 0x0001, 0x29b8: 0x0001, 0x29b9: 0x0001, 0x29ba: 0x0001, 0x29bb: 0x0001, -+ 0x29bc: 0x0001, 0x29bd: 0x000c, 0x29be: 0x000c, 0x29bf: 0x000c, -+ // Block 0xa7, offset 0x29c0 -+ 0x29c0: 0x0001, 0x29c1: 0x0001, 0x29c2: 0x0001, 0x29c3: 0x0001, 0x29c4: 0x0001, 0x29c5: 0x0001, -+ 0x29c6: 0x0001, 0x29c7: 0x0001, 0x29c8: 0x0001, 0x29c9: 0x0001, 0x29ca: 0x0001, 0x29cb: 0x0001, -+ 0x29cc: 0x0001, 0x29cd: 0x0001, 0x29ce: 0x0001, 0x29cf: 0x0001, 0x29d0: 0x0001, 0x29d1: 0x0001, -+ 0x29d2: 0x0001, 0x29d3: 0x0001, 0x29d4: 0x0001, 0x29d5: 0x0001, 0x29d6: 0x0001, 0x29d7: 0x0001, -+ 0x29d8: 0x0001, 0x29d9: 0x0001, 0x29da: 0x0001, 0x29db: 0x0001, 0x29dc: 0x0001, 0x29dd: 0x0001, -+ 0x29de: 0x0001, 0x29df: 0x0001, 0x29e0: 0x0001, 0x29e1: 0x0001, 0x29e2: 0x0001, 0x29e3: 0x0001, -+ 0x29e4: 0x0001, 0x29e5: 0x0001, 0x29e6: 0x0001, 0x29e7: 0x0001, 0x29e8: 0x0001, 0x29e9: 0x0001, -+ 0x29ea: 0x0001, 0x29eb: 0x0001, 0x29ec: 0x0001, 0x29ed: 0x0001, 0x29ee: 0x0001, 0x29ef: 0x0001, -+ 0x29f0: 0x000d, 0x29f1: 0x000d, 0x29f2: 0x000d, 0x29f3: 0x000d, 0x29f4: 0x000d, 0x29f5: 0x000d, -+ 0x29f6: 0x000d, 0x29f7: 0x000d, 0x29f8: 0x000d, 0x29f9: 0x000d, 0x29fa: 0x000d, 0x29fb: 0x000d, -+ 0x29fc: 0x000d, 0x29fd: 0x000d, 0x29fe: 0x000d, 0x29ff: 0x000d, -+ // Block 0xa8, offset 0x2a00 -+ 0x2a00: 0x000d, 0x2a01: 0x000d, 0x2a02: 0x000d, 0x2a03: 0x000d, 0x2a04: 0x000d, 0x2a05: 0x000d, -+ 0x2a06: 0x000c, 0x2a07: 0x000c, 0x2a08: 0x000c, 0x2a09: 0x000c, 0x2a0a: 0x000c, 0x2a0b: 0x000c, -+ 0x2a0c: 0x000c, 0x2a0d: 0x000c, 0x2a0e: 0x000c, 0x2a0f: 0x000c, 0x2a10: 0x000c, 0x2a11: 0x000d, -+ 0x2a12: 0x000d, 0x2a13: 0x000d, 0x2a14: 0x000d, 0x2a15: 0x000d, 0x2a16: 0x000d, 0x2a17: 0x000d, -+ 0x2a18: 0x000d, 0x2a19: 0x000d, 0x2a1a: 0x0001, 0x2a1b: 0x0001, 0x2a1c: 0x0001, 0x2a1d: 0x0001, -+ 0x2a1e: 0x0001, 0x2a1f: 0x0001, 0x2a20: 0x0001, 0x2a21: 0x0001, 0x2a22: 0x0001, 0x2a23: 0x0001, -+ 0x2a24: 0x0001, 0x2a25: 0x0001, 0x2a26: 0x0001, 0x2a27: 0x0001, 0x2a28: 0x0001, 0x2a29: 0x0001, -+ 0x2a2a: 0x0001, 0x2a2b: 0x0001, 0x2a2c: 0x0001, 0x2a2d: 0x0001, 0x2a2e: 0x0001, 0x2a2f: 0x0001, -+ 0x2a30: 0x0001, 0x2a31: 0x0001, 0x2a32: 0x0001, 0x2a33: 0x0001, 0x2a34: 0x0001, 0x2a35: 0x0001, -+ 0x2a36: 0x0001, 0x2a37: 0x0001, 0x2a38: 0x0001, 0x2a39: 0x0001, 0x2a3a: 0x0001, 0x2a3b: 0x0001, -+ 0x2a3c: 0x0001, 0x2a3d: 0x0001, 0x2a3e: 0x0001, 0x2a3f: 0x0001, -+ // Block 0xa9, offset 0x2a40 -+ 0x2a40: 0x0001, 0x2a41: 0x0001, 0x2a42: 0x000c, 0x2a43: 0x000c, 0x2a44: 0x000c, 0x2a45: 0x000c, -+ 0x2a46: 0x0001, 0x2a47: 0x0001, 0x2a48: 0x0001, 0x2a49: 0x0001, 0x2a4a: 0x0001, 0x2a4b: 0x0001, -+ 0x2a4c: 0x0001, 0x2a4d: 0x0001, 0x2a4e: 0x0001, 0x2a4f: 0x0001, 0x2a50: 0x0001, 0x2a51: 0x0001, -+ 0x2a52: 0x0001, 0x2a53: 0x0001, 0x2a54: 0x0001, 0x2a55: 0x0001, 0x2a56: 0x0001, 0x2a57: 0x0001, -+ 0x2a58: 0x0001, 0x2a59: 0x0001, 0x2a5a: 0x0001, 0x2a5b: 0x0001, 0x2a5c: 0x0001, 0x2a5d: 0x0001, -+ 0x2a5e: 0x0001, 0x2a5f: 0x0001, 0x2a60: 0x0001, 0x2a61: 0x0001, 0x2a62: 0x0001, 0x2a63: 0x0001, -+ 0x2a64: 0x0001, 0x2a65: 0x0001, 0x2a66: 0x0001, 0x2a67: 0x0001, 0x2a68: 0x0001, 0x2a69: 0x0001, -+ 0x2a6a: 0x0001, 0x2a6b: 0x0001, 0x2a6c: 0x0001, 0x2a6d: 0x0001, 0x2a6e: 0x0001, 0x2a6f: 0x0001, -+ 0x2a70: 0x0001, 0x2a71: 0x0001, 0x2a72: 0x0001, 0x2a73: 0x0001, 0x2a74: 0x0001, 0x2a75: 0x0001, -+ 0x2a76: 0x0001, 0x2a77: 0x0001, 0x2a78: 0x0001, 0x2a79: 0x0001, 0x2a7a: 0x0001, 0x2a7b: 0x0001, -+ 0x2a7c: 0x0001, 0x2a7d: 0x0001, 0x2a7e: 0x0001, 0x2a7f: 0x0001, -+ // Block 0xaa, offset 0x2a80 -+ 0x2a81: 0x000c, -+ 0x2ab8: 0x000c, 0x2ab9: 0x000c, 0x2aba: 0x000c, 0x2abb: 0x000c, -+ 0x2abc: 0x000c, 0x2abd: 0x000c, 0x2abe: 0x000c, 0x2abf: 0x000c, -+ // Block 0xab, offset 0x2ac0 -+ 0x2ac0: 0x000c, 0x2ac1: 0x000c, 0x2ac2: 0x000c, 0x2ac3: 0x000c, 0x2ac4: 0x000c, 0x2ac5: 0x000c, -+ 0x2ac6: 0x000c, -+ 0x2ad2: 0x000a, 0x2ad3: 0x000a, 0x2ad4: 0x000a, 0x2ad5: 0x000a, 0x2ad6: 0x000a, 0x2ad7: 0x000a, -+ 0x2ad8: 0x000a, 0x2ad9: 0x000a, 0x2ada: 0x000a, 0x2adb: 0x000a, 0x2adc: 0x000a, 0x2add: 0x000a, -+ 0x2ade: 0x000a, 0x2adf: 0x000a, 0x2ae0: 0x000a, 0x2ae1: 0x000a, 0x2ae2: 0x000a, 0x2ae3: 0x000a, -+ 0x2ae4: 0x000a, 0x2ae5: 0x000a, -+ 0x2af0: 0x000c, 0x2af3: 0x000c, 0x2af4: 0x000c, -+ 0x2aff: 0x000c, -+ // Block 0xac, offset 0x2b00 -+ 0x2b00: 0x000c, 0x2b01: 0x000c, -+ 0x2b33: 0x000c, 0x2b34: 0x000c, 0x2b35: 0x000c, -+ 0x2b36: 0x000c, 0x2b39: 0x000c, 0x2b3a: 0x000c, -+ // Block 0xad, offset 0x2b40 -+ 0x2b40: 0x000c, 0x2b41: 0x000c, 0x2b42: 0x000c, -+ 0x2b67: 0x000c, 0x2b68: 0x000c, 0x2b69: 0x000c, -+ 0x2b6a: 0x000c, 0x2b6b: 0x000c, 0x2b6d: 0x000c, 0x2b6e: 0x000c, 0x2b6f: 0x000c, -+ 0x2b70: 0x000c, 0x2b71: 0x000c, 0x2b72: 0x000c, 0x2b73: 0x000c, 0x2b74: 0x000c, -+ // Block 0xae, offset 0x2b80 -+ 0x2bb3: 0x000c, -+ // Block 0xaf, offset 0x2bc0 -+ 0x2bc0: 0x000c, 0x2bc1: 0x000c, -+ 0x2bf6: 0x000c, 0x2bf7: 0x000c, 0x2bf8: 0x000c, 0x2bf9: 0x000c, 0x2bfa: 0x000c, 0x2bfb: 0x000c, -+ 0x2bfc: 0x000c, 0x2bfd: 0x000c, 0x2bfe: 0x000c, -+ // Block 0xb0, offset 0x2c00 -+ 0x2c09: 0x000c, 0x2c0a: 0x000c, 0x2c0b: 0x000c, -+ 0x2c0c: 0x000c, 0x2c0f: 0x000c, -+ // Block 0xb1, offset 0x2c40 -+ 0x2c6f: 0x000c, -+ 0x2c70: 0x000c, 0x2c71: 0x000c, 0x2c74: 0x000c, -+ 0x2c76: 0x000c, 0x2c77: 0x000c, -+ 0x2c7e: 0x000c, -+ // Block 0xb2, offset 0x2c80 -+ 0x2c9f: 0x000c, 0x2ca3: 0x000c, -+ 0x2ca4: 0x000c, 0x2ca5: 0x000c, 0x2ca6: 0x000c, 0x2ca7: 0x000c, 0x2ca8: 0x000c, 0x2ca9: 0x000c, -+ 0x2caa: 0x000c, -+ // Block 0xb3, offset 0x2cc0 -+ 0x2cc0: 0x000c, -+ 0x2ce6: 0x000c, 0x2ce7: 0x000c, 0x2ce8: 0x000c, 0x2ce9: 0x000c, -+ 0x2cea: 0x000c, 0x2ceb: 0x000c, 0x2cec: 0x000c, -+ 0x2cf0: 0x000c, 0x2cf1: 0x000c, 0x2cf2: 0x000c, 0x2cf3: 0x000c, 0x2cf4: 0x000c, -+ // Block 0xb4, offset 0x2d00 -+ 0x2d38: 0x000c, 0x2d39: 0x000c, 0x2d3a: 0x000c, 0x2d3b: 0x000c, -+ 0x2d3c: 0x000c, 0x2d3d: 0x000c, 0x2d3e: 0x000c, 0x2d3f: 0x000c, -+ // Block 0xb5, offset 0x2d40 -+ 0x2d42: 0x000c, 0x2d43: 0x000c, 0x2d44: 0x000c, -+ 0x2d46: 0x000c, -+ 0x2d5e: 0x000c, -+ // Block 0xb6, offset 0x2d80 -+ 0x2db3: 0x000c, 0x2db4: 0x000c, 0x2db5: 0x000c, -+ 0x2db6: 0x000c, 0x2db7: 0x000c, 0x2db8: 0x000c, 0x2dba: 0x000c, -+ 0x2dbf: 0x000c, -+ // Block 0xb7, offset 0x2dc0 -+ 0x2dc0: 0x000c, 0x2dc2: 0x000c, 0x2dc3: 0x000c, -+ // Block 0xb8, offset 0x2e00 -+ 0x2e32: 0x000c, 0x2e33: 0x000c, 0x2e34: 0x000c, 0x2e35: 0x000c, -+ 0x2e3c: 0x000c, 0x2e3d: 0x000c, 0x2e3f: 0x000c, -+ // Block 0xb9, offset 0x2e40 -+ 0x2e40: 0x000c, -+ 0x2e5c: 0x000c, 0x2e5d: 0x000c, -+ // Block 0xba, offset 0x2e80 -+ 0x2eb3: 0x000c, 0x2eb4: 0x000c, 0x2eb5: 0x000c, -+ 0x2eb6: 0x000c, 0x2eb7: 0x000c, 0x2eb8: 0x000c, 0x2eb9: 0x000c, 0x2eba: 0x000c, -+ 0x2ebd: 0x000c, 0x2ebf: 0x000c, -+ // Block 0xbb, offset 0x2ec0 -+ 0x2ec0: 0x000c, -+ 0x2ee0: 0x000a, 0x2ee1: 0x000a, 0x2ee2: 0x000a, 0x2ee3: 0x000a, -+ 0x2ee4: 0x000a, 0x2ee5: 0x000a, 0x2ee6: 0x000a, 0x2ee7: 0x000a, 0x2ee8: 0x000a, 0x2ee9: 0x000a, -+ 0x2eea: 0x000a, 0x2eeb: 0x000a, 0x2eec: 0x000a, -+ // Block 0xbc, offset 0x2f00 -+ 0x2f2b: 0x000c, 0x2f2d: 0x000c, -+ 0x2f30: 0x000c, 0x2f31: 0x000c, 0x2f32: 0x000c, 0x2f33: 0x000c, 0x2f34: 0x000c, 0x2f35: 0x000c, -+ 0x2f37: 0x000c, -+ // Block 0xbd, offset 0x2f40 -+ 0x2f5d: 0x000c, -+ 0x2f5e: 0x000c, 0x2f5f: 0x000c, 0x2f62: 0x000c, 0x2f63: 0x000c, -+ 0x2f64: 0x000c, 0x2f65: 0x000c, 0x2f67: 0x000c, 0x2f68: 0x000c, 0x2f69: 0x000c, -+ 0x2f6a: 0x000c, 0x2f6b: 0x000c, -+ // Block 0xbe, offset 0x2f80 -+ 0x2faf: 0x000c, -+ 0x2fb0: 0x000c, 0x2fb1: 0x000c, 0x2fb2: 0x000c, 0x2fb3: 0x000c, 0x2fb4: 0x000c, 0x2fb5: 0x000c, -+ 0x2fb6: 0x000c, 0x2fb7: 0x000c, 0x2fb9: 0x000c, 0x2fba: 0x000c, -+ // Block 0xbf, offset 0x2fc0 -+ 0x2ffb: 0x000c, -+ 0x2ffc: 0x000c, 0x2ffe: 0x000c, -+ // Block 0xc0, offset 0x3000 -+ 0x3003: 0x000c, -+ // Block 0xc1, offset 0x3040 -+ 0x3054: 0x000c, 0x3055: 0x000c, 0x3056: 0x000c, 0x3057: 0x000c, -+ 0x305a: 0x000c, 0x305b: 0x000c, -+ 0x3060: 0x000c, -+ // Block 0xc2, offset 0x3080 -+ 0x3081: 0x000c, 0x3082: 0x000c, 0x3083: 0x000c, 0x3084: 0x000c, 0x3085: 0x000c, -+ 0x3086: 0x000c, 0x3089: 0x000c, 0x308a: 0x000c, -+ 0x30b3: 0x000c, 0x30b4: 0x000c, 0x30b5: 0x000c, -+ 0x30b6: 0x000c, 0x30b7: 0x000c, 0x30b8: 0x000c, 0x30bb: 0x000c, -+ 0x30bc: 0x000c, 0x30bd: 0x000c, 0x30be: 0x000c, -+ // Block 0xc3, offset 0x30c0 -+ 0x30c7: 0x000c, -+ 0x30d1: 0x000c, -+ 0x30d2: 0x000c, 0x30d3: 0x000c, 0x30d4: 0x000c, 0x30d5: 0x000c, 0x30d6: 0x000c, -+ 0x30d9: 0x000c, 0x30da: 0x000c, 0x30db: 0x000c, -+ // Block 0xc4, offset 0x3100 -+ 0x310a: 0x000c, 0x310b: 0x000c, -+ 0x310c: 0x000c, 0x310d: 0x000c, 0x310e: 0x000c, 0x310f: 0x000c, 0x3110: 0x000c, 0x3111: 0x000c, -+ 0x3112: 0x000c, 0x3113: 0x000c, 0x3114: 0x000c, 0x3115: 0x000c, 0x3116: 0x000c, -+ 0x3118: 0x000c, 0x3119: 0x000c, -+ // Block 0xc5, offset 0x3140 -+ 0x3170: 0x000c, 0x3171: 0x000c, 0x3172: 0x000c, 0x3173: 0x000c, 0x3174: 0x000c, 0x3175: 0x000c, -+ 0x3176: 0x000c, 0x3178: 0x000c, 0x3179: 0x000c, 0x317a: 0x000c, 0x317b: 0x000c, -+ 0x317c: 0x000c, 0x317d: 0x000c, -+ // Block 0xc6, offset 0x3180 -+ 0x3192: 0x000c, 0x3193: 0x000c, 0x3194: 0x000c, 0x3195: 0x000c, 0x3196: 0x000c, 0x3197: 0x000c, -+ 0x3198: 0x000c, 0x3199: 0x000c, 0x319a: 0x000c, 0x319b: 0x000c, 0x319c: 0x000c, 0x319d: 0x000c, -+ 0x319e: 0x000c, 0x319f: 0x000c, 0x31a0: 0x000c, 0x31a1: 0x000c, 0x31a2: 0x000c, 0x31a3: 0x000c, -+ 0x31a4: 0x000c, 0x31a5: 0x000c, 0x31a6: 0x000c, 0x31a7: 0x000c, -+ 0x31aa: 0x000c, 0x31ab: 0x000c, 0x31ac: 0x000c, 0x31ad: 0x000c, 0x31ae: 0x000c, 0x31af: 0x000c, -+ 0x31b0: 0x000c, 0x31b2: 0x000c, 0x31b3: 0x000c, 0x31b5: 0x000c, -+ 0x31b6: 0x000c, -+ // Block 0xc7, offset 0x31c0 -+ 0x31f1: 0x000c, 0x31f2: 0x000c, 0x31f3: 0x000c, 0x31f4: 0x000c, 0x31f5: 0x000c, -+ 0x31f6: 0x000c, 0x31fa: 0x000c, -+ 0x31fc: 0x000c, 0x31fd: 0x000c, 0x31ff: 0x000c, -+ // Block 0xc8, offset 0x3200 -+ 0x3200: 0x000c, 0x3201: 0x000c, 0x3202: 0x000c, 0x3203: 0x000c, 0x3204: 0x000c, 0x3205: 0x000c, -+ 0x3207: 0x000c, -+ // Block 0xc9, offset 0x3240 -+ 0x3250: 0x000c, 0x3251: 0x000c, -+ 0x3255: 0x000c, 0x3257: 0x000c, -+ // Block 0xca, offset 0x3280 -+ 0x32b3: 0x000c, 0x32b4: 0x000c, -+ // Block 0xcb, offset 0x32c0 -+ 0x32c0: 0x000c, 0x32c1: 0x000c, -+ 0x32f6: 0x000c, 0x32f7: 0x000c, 0x32f8: 0x000c, 0x32f9: 0x000c, 0x32fa: 0x000c, -+ // Block 0xcc, offset 0x3300 -+ 0x3300: 0x000c, 0x3302: 0x000c, -+ // Block 0xcd, offset 0x3340 -+ 0x3355: 0x000a, 0x3356: 0x000a, 0x3357: 0x000a, -+ 0x3358: 0x000a, 0x3359: 0x000a, 0x335a: 0x000a, 0x335b: 0x000a, 0x335c: 0x000a, 0x335d: 0x0004, -+ 0x335e: 0x0004, 0x335f: 0x0004, 0x3360: 0x0004, 0x3361: 0x000a, 0x3362: 0x000a, 0x3363: 0x000a, -+ 0x3364: 0x000a, 0x3365: 0x000a, 0x3366: 0x000a, 0x3367: 0x000a, 0x3368: 0x000a, 0x3369: 0x000a, -+ 0x336a: 0x000a, 0x336b: 0x000a, 0x336c: 0x000a, 0x336d: 0x000a, 0x336e: 0x000a, 0x336f: 0x000a, -+ 0x3370: 0x000a, 0x3371: 0x000a, -+ // Block 0xce, offset 0x3380 -+ 0x3380: 0x000c, -+ 0x3387: 0x000c, 0x3388: 0x000c, 0x3389: 0x000c, 0x338a: 0x000c, 0x338b: 0x000c, -+ 0x338c: 0x000c, 0x338d: 0x000c, 0x338e: 0x000c, 0x338f: 0x000c, 0x3390: 0x000c, 0x3391: 0x000c, -+ 0x3392: 0x000c, 0x3393: 0x000c, 0x3394: 0x000c, 0x3395: 0x000c, -+ // Block 0xcf, offset 0x33c0 -+ 0x33f0: 0x000c, 0x33f1: 0x000c, 0x33f2: 0x000c, 0x33f3: 0x000c, 0x33f4: 0x000c, -+ // Block 0xd0, offset 0x3400 -+ 0x3430: 0x000c, 0x3431: 0x000c, 0x3432: 0x000c, 0x3433: 0x000c, 0x3434: 0x000c, 0x3435: 0x000c, -+ 0x3436: 0x000c, -+ // Block 0xd1, offset 0x3440 -+ 0x344f: 0x000c, -+ // Block 0xd2, offset 0x3480 -+ 0x348f: 0x000c, 0x3490: 0x000c, 0x3491: 0x000c, -+ 0x3492: 0x000c, -+ // Block 0xd3, offset 0x34c0 -+ 0x34e2: 0x000a, -+ 0x34e4: 0x000c, -+ // Block 0xd4, offset 0x3500 -+ 0x351d: 0x000c, -+ 0x351e: 0x000c, 0x3520: 0x000b, 0x3521: 0x000b, 0x3522: 0x000b, 0x3523: 0x000b, -+ // Block 0xd5, offset 0x3540 -+ 0x3540: 0x000c, 0x3541: 0x000c, 0x3542: 0x000c, 0x3543: 0x000c, 0x3544: 0x000c, 0x3545: 0x000c, -+ 0x3546: 0x000c, 0x3547: 0x000c, 0x3548: 0x000c, 0x3549: 0x000c, 0x354a: 0x000c, 0x354b: 0x000c, -+ 0x354c: 0x000c, 0x354d: 0x000c, 0x354e: 0x000c, 0x354f: 0x000c, 0x3550: 0x000c, 0x3551: 0x000c, -+ 0x3552: 0x000c, 0x3553: 0x000c, 0x3554: 0x000c, 0x3555: 0x000c, 0x3556: 0x000c, 0x3557: 0x000c, -+ 0x3558: 0x000c, 0x3559: 0x000c, 0x355a: 0x000c, 0x355b: 0x000c, 0x355c: 0x000c, 0x355d: 0x000c, -+ 0x355e: 0x000c, 0x355f: 0x000c, 0x3560: 0x000c, 0x3561: 0x000c, 0x3562: 0x000c, 0x3563: 0x000c, -+ 0x3564: 0x000c, 0x3565: 0x000c, 0x3566: 0x000c, 0x3567: 0x000c, 0x3568: 0x000c, 0x3569: 0x000c, -+ 0x356a: 0x000c, 0x356b: 0x000c, 0x356c: 0x000c, 0x356d: 0x000c, -+ 0x3570: 0x000c, 0x3571: 0x000c, 0x3572: 0x000c, 0x3573: 0x000c, 0x3574: 0x000c, 0x3575: 0x000c, -+ 0x3576: 0x000c, 0x3577: 0x000c, 0x3578: 0x000c, 0x3579: 0x000c, 0x357a: 0x000c, 0x357b: 0x000c, -+ 0x357c: 0x000c, 0x357d: 0x000c, 0x357e: 0x000c, 0x357f: 0x000c, -+ // Block 0xd6, offset 0x3580 -+ 0x3580: 0x000c, 0x3581: 0x000c, 0x3582: 0x000c, 0x3583: 0x000c, 0x3584: 0x000c, 0x3585: 0x000c, -+ 0x3586: 0x000c, -+ // Block 0xd7, offset 0x35c0 -+ 0x35e7: 0x000c, 0x35e8: 0x000c, 0x35e9: 0x000c, -+ 0x35f3: 0x000b, 0x35f4: 0x000b, 0x35f5: 0x000b, -+ 0x35f6: 0x000b, 0x35f7: 0x000b, 0x35f8: 0x000b, 0x35f9: 0x000b, 0x35fa: 0x000b, 0x35fb: 0x000c, -+ 0x35fc: 0x000c, 0x35fd: 0x000c, 0x35fe: 0x000c, 0x35ff: 0x000c, -+ // Block 0xd8, offset 0x3600 -+ 0x3600: 0x000c, 0x3601: 0x000c, 0x3602: 0x000c, 0x3605: 0x000c, -+ 0x3606: 0x000c, 0x3607: 0x000c, 0x3608: 0x000c, 0x3609: 0x000c, 0x360a: 0x000c, 0x360b: 0x000c, -+ 0x362a: 0x000c, 0x362b: 0x000c, 0x362c: 0x000c, 0x362d: 0x000c, -+ // Block 0xd9, offset 0x3640 -+ 0x3669: 0x000a, -+ 0x366a: 0x000a, -+ // Block 0xda, offset 0x3680 -+ 0x3680: 0x000a, 0x3681: 0x000a, 0x3682: 0x000c, 0x3683: 0x000c, 0x3684: 0x000c, 0x3685: 0x000a, -+ // Block 0xdb, offset 0x36c0 -+ 0x36c0: 0x000a, 0x36c1: 0x000a, 0x36c2: 0x000a, 0x36c3: 0x000a, 0x36c4: 0x000a, 0x36c5: 0x000a, -+ 0x36c6: 0x000a, 0x36c7: 0x000a, 0x36c8: 0x000a, 0x36c9: 0x000a, 0x36ca: 0x000a, 0x36cb: 0x000a, -+ 0x36cc: 0x000a, 0x36cd: 0x000a, 0x36ce: 0x000a, 0x36cf: 0x000a, 0x36d0: 0x000a, 0x36d1: 0x000a, -+ 0x36d2: 0x000a, 0x36d3: 0x000a, 0x36d4: 0x000a, 0x36d5: 0x000a, 0x36d6: 0x000a, -+ // Block 0xdc, offset 0x3700 -+ 0x371b: 0x000a, -+ // Block 0xdd, offset 0x3740 -+ 0x3755: 0x000a, -+ // Block 0xde, offset 0x3780 -+ 0x378f: 0x000a, -+ // Block 0xdf, offset 0x37c0 -+ 0x37c9: 0x000a, -+ // Block 0xe0, offset 0x3800 -+ 0x3803: 0x000a, -+ 0x380e: 0x0002, 0x380f: 0x0002, 0x3810: 0x0002, 0x3811: 0x0002, -+ 0x3812: 0x0002, 0x3813: 0x0002, 0x3814: 0x0002, 0x3815: 0x0002, 0x3816: 0x0002, 0x3817: 0x0002, -+ 0x3818: 0x0002, 0x3819: 0x0002, 0x381a: 0x0002, 0x381b: 0x0002, 0x381c: 0x0002, 0x381d: 0x0002, -+ 0x381e: 0x0002, 0x381f: 0x0002, 0x3820: 0x0002, 0x3821: 0x0002, 0x3822: 0x0002, 0x3823: 0x0002, -+ 0x3824: 0x0002, 0x3825: 0x0002, 0x3826: 0x0002, 0x3827: 0x0002, 0x3828: 0x0002, 0x3829: 0x0002, -+ 0x382a: 0x0002, 0x382b: 0x0002, 0x382c: 0x0002, 0x382d: 0x0002, 0x382e: 0x0002, 0x382f: 0x0002, -+ 0x3830: 0x0002, 0x3831: 0x0002, 0x3832: 0x0002, 0x3833: 0x0002, 0x3834: 0x0002, 0x3835: 0x0002, -+ 0x3836: 0x0002, 0x3837: 0x0002, 0x3838: 0x0002, 0x3839: 0x0002, 0x383a: 0x0002, 0x383b: 0x0002, -+ 0x383c: 0x0002, 0x383d: 0x0002, 0x383e: 0x0002, 0x383f: 0x0002, -+ // Block 0xe1, offset 0x3840 -+ 0x3840: 0x000c, 0x3841: 0x000c, 0x3842: 0x000c, 0x3843: 0x000c, 0x3844: 0x000c, 0x3845: 0x000c, -+ 0x3846: 0x000c, 0x3847: 0x000c, 0x3848: 0x000c, 0x3849: 0x000c, 0x384a: 0x000c, 0x384b: 0x000c, -+ 0x384c: 0x000c, 0x384d: 0x000c, 0x384e: 0x000c, 0x384f: 0x000c, 0x3850: 0x000c, 0x3851: 0x000c, -+ 0x3852: 0x000c, 0x3853: 0x000c, 0x3854: 0x000c, 0x3855: 0x000c, 0x3856: 0x000c, 0x3857: 0x000c, -+ 0x3858: 0x000c, 0x3859: 0x000c, 0x385a: 0x000c, 0x385b: 0x000c, 0x385c: 0x000c, 0x385d: 0x000c, -+ 0x385e: 0x000c, 0x385f: 0x000c, 0x3860: 0x000c, 0x3861: 0x000c, 0x3862: 0x000c, 0x3863: 0x000c, -+ 0x3864: 0x000c, 0x3865: 0x000c, 0x3866: 0x000c, 0x3867: 0x000c, 0x3868: 0x000c, 0x3869: 0x000c, -+ 0x386a: 0x000c, 0x386b: 0x000c, 0x386c: 0x000c, 0x386d: 0x000c, 0x386e: 0x000c, 0x386f: 0x000c, -+ 0x3870: 0x000c, 0x3871: 0x000c, 0x3872: 0x000c, 0x3873: 0x000c, 0x3874: 0x000c, 0x3875: 0x000c, -+ 0x3876: 0x000c, 0x387b: 0x000c, -+ 0x387c: 0x000c, 0x387d: 0x000c, 0x387e: 0x000c, 0x387f: 0x000c, -+ // Block 0xe2, offset 0x3880 -+ 0x3880: 0x000c, 0x3881: 0x000c, 0x3882: 0x000c, 0x3883: 0x000c, 0x3884: 0x000c, 0x3885: 0x000c, -+ 0x3886: 0x000c, 0x3887: 0x000c, 0x3888: 0x000c, 0x3889: 0x000c, 0x388a: 0x000c, 0x388b: 0x000c, -+ 0x388c: 0x000c, 0x388d: 0x000c, 0x388e: 0x000c, 0x388f: 0x000c, 0x3890: 0x000c, 0x3891: 0x000c, -+ 0x3892: 0x000c, 0x3893: 0x000c, 0x3894: 0x000c, 0x3895: 0x000c, 0x3896: 0x000c, 0x3897: 0x000c, -+ 0x3898: 0x000c, 0x3899: 0x000c, 0x389a: 0x000c, 0x389b: 0x000c, 0x389c: 0x000c, 0x389d: 0x000c, -+ 0x389e: 0x000c, 0x389f: 0x000c, 0x38a0: 0x000c, 0x38a1: 0x000c, 0x38a2: 0x000c, 0x38a3: 0x000c, -+ 0x38a4: 0x000c, 0x38a5: 0x000c, 0x38a6: 0x000c, 0x38a7: 0x000c, 0x38a8: 0x000c, 0x38a9: 0x000c, -+ 0x38aa: 0x000c, 0x38ab: 0x000c, 0x38ac: 0x000c, -+ 0x38b5: 0x000c, -+ // Block 0xe3, offset 0x38c0 -+ 0x38c4: 0x000c, -+ 0x38db: 0x000c, 0x38dc: 0x000c, 0x38dd: 0x000c, -+ 0x38de: 0x000c, 0x38df: 0x000c, 0x38e1: 0x000c, 0x38e2: 0x000c, 0x38e3: 0x000c, -+ 0x38e4: 0x000c, 0x38e5: 0x000c, 0x38e6: 0x000c, 0x38e7: 0x000c, 0x38e8: 0x000c, 0x38e9: 0x000c, -+ 0x38ea: 0x000c, 0x38eb: 0x000c, 0x38ec: 0x000c, 0x38ed: 0x000c, 0x38ee: 0x000c, 0x38ef: 0x000c, -+ // Block 0xe4, offset 0x3900 -+ 0x3900: 0x000c, 0x3901: 0x000c, 0x3902: 0x000c, 0x3903: 0x000c, 0x3904: 0x000c, 0x3905: 0x000c, -+ 0x3906: 0x000c, 0x3908: 0x000c, 0x3909: 0x000c, 0x390a: 0x000c, 0x390b: 0x000c, -+ 0x390c: 0x000c, 0x390d: 0x000c, 0x390e: 0x000c, 0x390f: 0x000c, 0x3910: 0x000c, 0x3911: 0x000c, -+ 0x3912: 0x000c, 0x3913: 0x000c, 0x3914: 0x000c, 0x3915: 0x000c, 0x3916: 0x000c, 0x3917: 0x000c, -+ 0x3918: 0x000c, 0x391b: 0x000c, 0x391c: 0x000c, 0x391d: 0x000c, -+ 0x391e: 0x000c, 0x391f: 0x000c, 0x3920: 0x000c, 0x3921: 0x000c, 0x3923: 0x000c, -+ 0x3924: 0x000c, 0x3926: 0x000c, 0x3927: 0x000c, 0x3928: 0x000c, 0x3929: 0x000c, -+ 0x392a: 0x000c, -+ // Block 0xe5, offset 0x3940 -+ 0x396e: 0x000c, -+ // Block 0xe6, offset 0x3980 -+ 0x39ac: 0x000c, 0x39ad: 0x000c, 0x39ae: 0x000c, 0x39af: 0x000c, -+ 0x39bf: 0x0004, -+ // Block 0xe7, offset 0x39c0 -+ 0x39ec: 0x000c, 0x39ed: 0x000c, 0x39ee: 0x000c, 0x39ef: 0x000c, -+ // Block 0xe8, offset 0x3a00 -+ 0x3a00: 0x0001, 0x3a01: 0x0001, 0x3a02: 0x0001, 0x3a03: 0x0001, 0x3a04: 0x0001, 0x3a05: 0x0001, -+ 0x3a06: 0x0001, 0x3a07: 0x0001, 0x3a08: 0x0001, 0x3a09: 0x0001, 0x3a0a: 0x0001, 0x3a0b: 0x0001, -+ 0x3a0c: 0x0001, 0x3a0d: 0x0001, 0x3a0e: 0x0001, 0x3a0f: 0x0001, 0x3a10: 0x000c, 0x3a11: 0x000c, -+ 0x3a12: 0x000c, 0x3a13: 0x000c, 0x3a14: 0x000c, 0x3a15: 0x000c, 0x3a16: 0x000c, 0x3a17: 0x0001, -+ 0x3a18: 0x0001, 0x3a19: 0x0001, 0x3a1a: 0x0001, 0x3a1b: 0x0001, 0x3a1c: 0x0001, 0x3a1d: 0x0001, -+ 0x3a1e: 0x0001, 0x3a1f: 0x0001, 0x3a20: 0x0001, 0x3a21: 0x0001, 0x3a22: 0x0001, 0x3a23: 0x0001, -+ 0x3a24: 0x0001, 0x3a25: 0x0001, 0x3a26: 0x0001, 0x3a27: 0x0001, 0x3a28: 0x0001, 0x3a29: 0x0001, -+ 0x3a2a: 0x0001, 0x3a2b: 0x0001, 0x3a2c: 0x0001, 0x3a2d: 0x0001, 0x3a2e: 0x0001, 0x3a2f: 0x0001, -+ 0x3a30: 0x0001, 0x3a31: 0x0001, 0x3a32: 0x0001, 0x3a33: 0x0001, 0x3a34: 0x0001, 0x3a35: 0x0001, -+ 0x3a36: 0x0001, 0x3a37: 0x0001, 0x3a38: 0x0001, 0x3a39: 0x0001, 0x3a3a: 0x0001, 0x3a3b: 0x0001, -+ 0x3a3c: 0x0001, 0x3a3d: 0x0001, 0x3a3e: 0x0001, 0x3a3f: 0x0001, -+ // Block 0xe9, offset 0x3a40 -+ 0x3a40: 0x0001, 0x3a41: 0x0001, 0x3a42: 0x0001, 0x3a43: 0x0001, 0x3a44: 0x000c, 0x3a45: 0x000c, -+ 0x3a46: 0x000c, 0x3a47: 0x000c, 0x3a48: 0x000c, 0x3a49: 0x000c, 0x3a4a: 0x000c, 0x3a4b: 0x0001, -+ 0x3a4c: 0x0001, 0x3a4d: 0x0001, 0x3a4e: 0x0001, 0x3a4f: 0x0001, 0x3a50: 0x0001, 0x3a51: 0x0001, -+ 0x3a52: 0x0001, 0x3a53: 0x0001, 0x3a54: 0x0001, 0x3a55: 0x0001, 0x3a56: 0x0001, 0x3a57: 0x0001, -+ 0x3a58: 0x0001, 0x3a59: 0x0001, 0x3a5a: 0x0001, 0x3a5b: 0x0001, 0x3a5c: 0x0001, 0x3a5d: 0x0001, -+ 0x3a5e: 0x0001, 0x3a5f: 0x0001, 0x3a60: 0x0001, 0x3a61: 0x0001, 0x3a62: 0x0001, 0x3a63: 0x0001, -+ 0x3a64: 0x0001, 0x3a65: 0x0001, 0x3a66: 0x0001, 0x3a67: 0x0001, 0x3a68: 0x0001, 0x3a69: 0x0001, -+ 0x3a6a: 0x0001, 0x3a6b: 0x0001, 0x3a6c: 0x0001, 0x3a6d: 0x0001, 0x3a6e: 0x0001, 0x3a6f: 0x0001, -+ 0x3a70: 0x0001, 0x3a71: 0x0001, 0x3a72: 0x0001, 0x3a73: 0x0001, 0x3a74: 0x0001, 0x3a75: 0x0001, -+ 0x3a76: 0x0001, 0x3a77: 0x0001, 0x3a78: 0x0001, 0x3a79: 0x0001, 0x3a7a: 0x0001, 0x3a7b: 0x0001, -+ 0x3a7c: 0x0001, 0x3a7d: 0x0001, 0x3a7e: 0x0001, 0x3a7f: 0x0001, -+ // Block 0xea, offset 0x3a80 -+ 0x3a80: 0x0001, 0x3a81: 0x0001, 0x3a82: 0x0001, 0x3a83: 0x0001, 0x3a84: 0x0001, 0x3a85: 0x0001, -+ 0x3a86: 0x0001, 0x3a87: 0x0001, 0x3a88: 0x0001, 0x3a89: 0x0001, 0x3a8a: 0x0001, 0x3a8b: 0x0001, -+ 0x3a8c: 0x0001, 0x3a8d: 0x0001, 0x3a8e: 0x0001, 0x3a8f: 0x0001, 0x3a90: 0x0001, 0x3a91: 0x0001, -+ 0x3a92: 0x0001, 0x3a93: 0x0001, 0x3a94: 0x0001, 0x3a95: 0x0001, 0x3a96: 0x0001, 0x3a97: 0x0001, -+ 0x3a98: 0x0001, 0x3a99: 0x0001, 0x3a9a: 0x0001, 0x3a9b: 0x0001, 0x3a9c: 0x0001, 0x3a9d: 0x0001, -+ 0x3a9e: 0x0001, 0x3a9f: 0x0001, 0x3aa0: 0x0001, 0x3aa1: 0x0001, 0x3aa2: 0x0001, 0x3aa3: 0x0001, -+ 0x3aa4: 0x0001, 0x3aa5: 0x0001, 0x3aa6: 0x0001, 0x3aa7: 0x0001, 0x3aa8: 0x0001, 0x3aa9: 0x0001, -+ 0x3aaa: 0x0001, 0x3aab: 0x0001, 0x3aac: 0x0001, 0x3aad: 0x0001, 0x3aae: 0x0001, 0x3aaf: 0x0001, -+ 0x3ab0: 0x0001, 0x3ab1: 0x000d, 0x3ab2: 0x000d, 0x3ab3: 0x000d, 0x3ab4: 0x000d, 0x3ab5: 0x000d, -+ 0x3ab6: 0x000d, 0x3ab7: 0x000d, 0x3ab8: 0x000d, 0x3ab9: 0x000d, 0x3aba: 0x000d, 0x3abb: 0x000d, -+ 0x3abc: 0x000d, 0x3abd: 0x000d, 0x3abe: 0x000d, 0x3abf: 0x000d, -+ // Block 0xeb, offset 0x3ac0 -+ 0x3ac0: 0x000d, 0x3ac1: 0x000d, 0x3ac2: 0x000d, 0x3ac3: 0x000d, 0x3ac4: 0x000d, 0x3ac5: 0x000d, -+ 0x3ac6: 0x000d, 0x3ac7: 0x000d, 0x3ac8: 0x000d, 0x3ac9: 0x000d, 0x3aca: 0x000d, 0x3acb: 0x000d, -+ 0x3acc: 0x000d, 0x3acd: 0x000d, 0x3ace: 0x000d, 0x3acf: 0x000d, 0x3ad0: 0x000d, 0x3ad1: 0x000d, -+ 0x3ad2: 0x000d, 0x3ad3: 0x000d, 0x3ad4: 0x000d, 0x3ad5: 0x000d, 0x3ad6: 0x000d, 0x3ad7: 0x000d, -+ 0x3ad8: 0x000d, 0x3ad9: 0x000d, 0x3ada: 0x000d, 0x3adb: 0x000d, 0x3adc: 0x000d, 0x3add: 0x000d, -+ 0x3ade: 0x000d, 0x3adf: 0x000d, 0x3ae0: 0x000d, 0x3ae1: 0x000d, 0x3ae2: 0x000d, 0x3ae3: 0x000d, -+ 0x3ae4: 0x000d, 0x3ae5: 0x000d, 0x3ae6: 0x000d, 0x3ae7: 0x000d, 0x3ae8: 0x000d, 0x3ae9: 0x000d, -+ 0x3aea: 0x000d, 0x3aeb: 0x000d, 0x3aec: 0x000d, 0x3aed: 0x000d, 0x3aee: 0x000d, 0x3aef: 0x000d, -+ 0x3af0: 0x000d, 0x3af1: 0x000d, 0x3af2: 0x000d, 0x3af3: 0x000d, 0x3af4: 0x000d, 0x3af5: 0x0001, -+ 0x3af6: 0x0001, 0x3af7: 0x0001, 0x3af8: 0x0001, 0x3af9: 0x0001, 0x3afa: 0x0001, 0x3afb: 0x0001, -+ 0x3afc: 0x0001, 0x3afd: 0x0001, 0x3afe: 0x0001, 0x3aff: 0x0001, -+ // Block 0xec, offset 0x3b00 -+ 0x3b00: 0x0001, 0x3b01: 0x000d, 0x3b02: 0x000d, 0x3b03: 0x000d, 0x3b04: 0x000d, 0x3b05: 0x000d, -+ 0x3b06: 0x000d, 0x3b07: 0x000d, 0x3b08: 0x000d, 0x3b09: 0x000d, 0x3b0a: 0x000d, 0x3b0b: 0x000d, -+ 0x3b0c: 0x000d, 0x3b0d: 0x000d, 0x3b0e: 0x000d, 0x3b0f: 0x000d, 0x3b10: 0x000d, 0x3b11: 0x000d, -+ 0x3b12: 0x000d, 0x3b13: 0x000d, 0x3b14: 0x000d, 0x3b15: 0x000d, 0x3b16: 0x000d, 0x3b17: 0x000d, -+ 0x3b18: 0x000d, 0x3b19: 0x000d, 0x3b1a: 0x000d, 0x3b1b: 0x000d, 0x3b1c: 0x000d, 0x3b1d: 0x000d, -+ 0x3b1e: 0x000d, 0x3b1f: 0x000d, 0x3b20: 0x000d, 0x3b21: 0x000d, 0x3b22: 0x000d, 0x3b23: 0x000d, -+ 0x3b24: 0x000d, 0x3b25: 0x000d, 0x3b26: 0x000d, 0x3b27: 0x000d, 0x3b28: 0x000d, 0x3b29: 0x000d, -+ 0x3b2a: 0x000d, 0x3b2b: 0x000d, 0x3b2c: 0x000d, 0x3b2d: 0x000d, 0x3b2e: 0x000d, 0x3b2f: 0x000d, -+ 0x3b30: 0x000d, 0x3b31: 0x000d, 0x3b32: 0x000d, 0x3b33: 0x000d, 0x3b34: 0x000d, 0x3b35: 0x000d, -+ 0x3b36: 0x000d, 0x3b37: 0x000d, 0x3b38: 0x000d, 0x3b39: 0x000d, 0x3b3a: 0x000d, 0x3b3b: 0x000d, -+ 0x3b3c: 0x000d, 0x3b3d: 0x000d, 0x3b3e: 0x0001, 0x3b3f: 0x0001, -+ // Block 0xed, offset 0x3b40 -+ 0x3b40: 0x000d, 0x3b41: 0x000d, 0x3b42: 0x000d, 0x3b43: 0x000d, 0x3b44: 0x000d, 0x3b45: 0x000d, -+ 0x3b46: 0x000d, 0x3b47: 0x000d, 0x3b48: 0x000d, 0x3b49: 0x000d, 0x3b4a: 0x000d, 0x3b4b: 0x000d, -+ 0x3b4c: 0x000d, 0x3b4d: 0x000d, 0x3b4e: 0x000d, 0x3b4f: 0x000d, 0x3b50: 0x000d, 0x3b51: 0x000d, -+ 0x3b52: 0x000d, 0x3b53: 0x000d, 0x3b54: 0x000d, 0x3b55: 0x000d, 0x3b56: 0x000d, 0x3b57: 0x000d, -+ 0x3b58: 0x000d, 0x3b59: 0x000d, 0x3b5a: 0x000d, 0x3b5b: 0x000d, 0x3b5c: 0x000d, 0x3b5d: 0x000d, -+ 0x3b5e: 0x000d, 0x3b5f: 0x000d, 0x3b60: 0x000d, 0x3b61: 0x000d, 0x3b62: 0x000d, 0x3b63: 0x000d, -+ 0x3b64: 0x000d, 0x3b65: 0x000d, 0x3b66: 0x000d, 0x3b67: 0x000d, 0x3b68: 0x000d, 0x3b69: 0x000d, -+ 0x3b6a: 0x000d, 0x3b6b: 0x000d, 0x3b6c: 0x000d, 0x3b6d: 0x000d, 0x3b6e: 0x000d, 0x3b6f: 0x000d, -+ 0x3b70: 0x000a, 0x3b71: 0x000a, 0x3b72: 0x000d, 0x3b73: 0x000d, 0x3b74: 0x000d, 0x3b75: 0x000d, -+ 0x3b76: 0x000d, 0x3b77: 0x000d, 0x3b78: 0x000d, 0x3b79: 0x000d, 0x3b7a: 0x000d, 0x3b7b: 0x000d, -+ 0x3b7c: 0x000d, 0x3b7d: 0x000d, 0x3b7e: 0x000d, 0x3b7f: 0x000d, -+ // Block 0xee, offset 0x3b80 -+ 0x3b80: 0x000a, 0x3b81: 0x000a, 0x3b82: 0x000a, 0x3b83: 0x000a, 0x3b84: 0x000a, 0x3b85: 0x000a, -+ 0x3b86: 0x000a, 0x3b87: 0x000a, 0x3b88: 0x000a, 0x3b89: 0x000a, 0x3b8a: 0x000a, 0x3b8b: 0x000a, -+ 0x3b8c: 0x000a, 0x3b8d: 0x000a, 0x3b8e: 0x000a, 0x3b8f: 0x000a, 0x3b90: 0x000a, 0x3b91: 0x000a, -+ 0x3b92: 0x000a, 0x3b93: 0x000a, 0x3b94: 0x000a, 0x3b95: 0x000a, 0x3b96: 0x000a, 0x3b97: 0x000a, -+ 0x3b98: 0x000a, 0x3b99: 0x000a, 0x3b9a: 0x000a, 0x3b9b: 0x000a, 0x3b9c: 0x000a, 0x3b9d: 0x000a, -+ 0x3b9e: 0x000a, 0x3b9f: 0x000a, 0x3ba0: 0x000a, 0x3ba1: 0x000a, 0x3ba2: 0x000a, 0x3ba3: 0x000a, -+ 0x3ba4: 0x000a, 0x3ba5: 0x000a, 0x3ba6: 0x000a, 0x3ba7: 0x000a, 0x3ba8: 0x000a, 0x3ba9: 0x000a, -+ 0x3baa: 0x000a, 0x3bab: 0x000a, -+ 0x3bb0: 0x000a, 0x3bb1: 0x000a, 0x3bb2: 0x000a, 0x3bb3: 0x000a, 0x3bb4: 0x000a, 0x3bb5: 0x000a, -+ 0x3bb6: 0x000a, 0x3bb7: 0x000a, 0x3bb8: 0x000a, 0x3bb9: 0x000a, 0x3bba: 0x000a, 0x3bbb: 0x000a, -+ 0x3bbc: 0x000a, 0x3bbd: 0x000a, 0x3bbe: 0x000a, 0x3bbf: 0x000a, -+ // Block 0xef, offset 0x3bc0 -+ 0x3bc0: 0x000a, 0x3bc1: 0x000a, 0x3bc2: 0x000a, 0x3bc3: 0x000a, 0x3bc4: 0x000a, 0x3bc5: 0x000a, -+ 0x3bc6: 0x000a, 0x3bc7: 0x000a, 0x3bc8: 0x000a, 0x3bc9: 0x000a, 0x3bca: 0x000a, 0x3bcb: 0x000a, -+ 0x3bcc: 0x000a, 0x3bcd: 0x000a, 0x3bce: 0x000a, 0x3bcf: 0x000a, 0x3bd0: 0x000a, 0x3bd1: 0x000a, -+ 0x3bd2: 0x000a, 0x3bd3: 0x000a, -+ 0x3be0: 0x000a, 0x3be1: 0x000a, 0x3be2: 0x000a, 0x3be3: 0x000a, -+ 0x3be4: 0x000a, 0x3be5: 0x000a, 0x3be6: 0x000a, 0x3be7: 0x000a, 0x3be8: 0x000a, 0x3be9: 0x000a, -+ 0x3bea: 0x000a, 0x3beb: 0x000a, 0x3bec: 0x000a, 0x3bed: 0x000a, 0x3bee: 0x000a, -+ 0x3bf1: 0x000a, 0x3bf2: 0x000a, 0x3bf3: 0x000a, 0x3bf4: 0x000a, 0x3bf5: 0x000a, -+ 0x3bf6: 0x000a, 0x3bf7: 0x000a, 0x3bf8: 0x000a, 0x3bf9: 0x000a, 0x3bfa: 0x000a, 0x3bfb: 0x000a, -+ 0x3bfc: 0x000a, 0x3bfd: 0x000a, 0x3bfe: 0x000a, 0x3bff: 0x000a, -+ // Block 0xf0, offset 0x3c00 -+ 0x3c01: 0x000a, 0x3c02: 0x000a, 0x3c03: 0x000a, 0x3c04: 0x000a, 0x3c05: 0x000a, -+ 0x3c06: 0x000a, 0x3c07: 0x000a, 0x3c08: 0x000a, 0x3c09: 0x000a, 0x3c0a: 0x000a, 0x3c0b: 0x000a, -+ 0x3c0c: 0x000a, 0x3c0d: 0x000a, 0x3c0e: 0x000a, 0x3c0f: 0x000a, 0x3c11: 0x000a, -+ 0x3c12: 0x000a, 0x3c13: 0x000a, 0x3c14: 0x000a, 0x3c15: 0x000a, 0x3c16: 0x000a, 0x3c17: 0x000a, -+ 0x3c18: 0x000a, 0x3c19: 0x000a, 0x3c1a: 0x000a, 0x3c1b: 0x000a, 0x3c1c: 0x000a, 0x3c1d: 0x000a, -+ 0x3c1e: 0x000a, 0x3c1f: 0x000a, 0x3c20: 0x000a, 0x3c21: 0x000a, 0x3c22: 0x000a, 0x3c23: 0x000a, -+ 0x3c24: 0x000a, 0x3c25: 0x000a, 0x3c26: 0x000a, 0x3c27: 0x000a, 0x3c28: 0x000a, 0x3c29: 0x000a, -+ 0x3c2a: 0x000a, 0x3c2b: 0x000a, 0x3c2c: 0x000a, 0x3c2d: 0x000a, 0x3c2e: 0x000a, 0x3c2f: 0x000a, -+ 0x3c30: 0x000a, 0x3c31: 0x000a, 0x3c32: 0x000a, 0x3c33: 0x000a, 0x3c34: 0x000a, 0x3c35: 0x000a, -+ // Block 0xf1, offset 0x3c40 -+ 0x3c40: 0x0002, 0x3c41: 0x0002, 0x3c42: 0x0002, 0x3c43: 0x0002, 0x3c44: 0x0002, 0x3c45: 0x0002, -+ 0x3c46: 0x0002, 0x3c47: 0x0002, 0x3c48: 0x0002, 0x3c49: 0x0002, 0x3c4a: 0x0002, 0x3c4b: 0x000a, -+ 0x3c4c: 0x000a, 0x3c4d: 0x000a, 0x3c4e: 0x000a, 0x3c4f: 0x000a, -+ 0x3c6f: 0x000a, -+ // Block 0xf2, offset 0x3c80 -+ 0x3caa: 0x000a, 0x3cab: 0x000a, 0x3cac: 0x000a, 0x3cad: 0x000a, 0x3cae: 0x000a, 0x3caf: 0x000a, -+ // Block 0xf3, offset 0x3cc0 -+ 0x3ced: 0x000a, -+ // Block 0xf4, offset 0x3d00 -+ 0x3d20: 0x000a, 0x3d21: 0x000a, 0x3d22: 0x000a, 0x3d23: 0x000a, -+ 0x3d24: 0x000a, 0x3d25: 0x000a, -+ // Block 0xf5, offset 0x3d40 -+ 0x3d40: 0x000a, 0x3d41: 0x000a, 0x3d42: 0x000a, 0x3d43: 0x000a, 0x3d44: 0x000a, 0x3d45: 0x000a, -+ 0x3d46: 0x000a, 0x3d47: 0x000a, 0x3d48: 0x000a, 0x3d49: 0x000a, 0x3d4a: 0x000a, 0x3d4b: 0x000a, -+ 0x3d4c: 0x000a, 0x3d4d: 0x000a, 0x3d4e: 0x000a, 0x3d4f: 0x000a, 0x3d50: 0x000a, 0x3d51: 0x000a, -+ 0x3d52: 0x000a, 0x3d53: 0x000a, 0x3d54: 0x000a, 0x3d55: 0x000a, 0x3d56: 0x000a, 0x3d57: 0x000a, -+ 0x3d5c: 0x000a, 0x3d5d: 0x000a, -+ 0x3d5e: 0x000a, 0x3d5f: 0x000a, 0x3d60: 0x000a, 0x3d61: 0x000a, 0x3d62: 0x000a, 0x3d63: 0x000a, -+ 0x3d64: 0x000a, 0x3d65: 0x000a, 0x3d66: 0x000a, 0x3d67: 0x000a, 0x3d68: 0x000a, 0x3d69: 0x000a, -+ 0x3d6a: 0x000a, 0x3d6b: 0x000a, 0x3d6c: 0x000a, -+ 0x3d70: 0x000a, 0x3d71: 0x000a, 0x3d72: 0x000a, 0x3d73: 0x000a, 0x3d74: 0x000a, 0x3d75: 0x000a, -+ 0x3d76: 0x000a, 0x3d77: 0x000a, 0x3d78: 0x000a, 0x3d79: 0x000a, 0x3d7a: 0x000a, 0x3d7b: 0x000a, -+ 0x3d7c: 0x000a, -+ // Block 0xf6, offset 0x3d80 -+ 0x3d80: 0x000a, 0x3d81: 0x000a, 0x3d82: 0x000a, 0x3d83: 0x000a, 0x3d84: 0x000a, 0x3d85: 0x000a, -+ 0x3d86: 0x000a, 0x3d87: 0x000a, 0x3d88: 0x000a, 0x3d89: 0x000a, 0x3d8a: 0x000a, 0x3d8b: 0x000a, -+ 0x3d8c: 0x000a, 0x3d8d: 0x000a, 0x3d8e: 0x000a, 0x3d8f: 0x000a, 0x3d90: 0x000a, 0x3d91: 0x000a, -+ 0x3d92: 0x000a, 0x3d93: 0x000a, 0x3d94: 0x000a, 0x3d95: 0x000a, 0x3d96: 0x000a, 0x3d97: 0x000a, -+ 0x3d98: 0x000a, 0x3d99: 0x000a, 0x3d9a: 0x000a, 0x3d9b: 0x000a, 0x3d9c: 0x000a, 0x3d9d: 0x000a, -+ 0x3d9e: 0x000a, 0x3d9f: 0x000a, 0x3da0: 0x000a, 0x3da1: 0x000a, 0x3da2: 0x000a, 0x3da3: 0x000a, -+ 0x3da4: 0x000a, 0x3da5: 0x000a, 0x3da6: 0x000a, 0x3da7: 0x000a, 0x3da8: 0x000a, 0x3da9: 0x000a, -+ 0x3daa: 0x000a, 0x3dab: 0x000a, 0x3dac: 0x000a, 0x3dad: 0x000a, 0x3dae: 0x000a, 0x3daf: 0x000a, -+ 0x3db0: 0x000a, 0x3db1: 0x000a, 0x3db2: 0x000a, 0x3db3: 0x000a, 0x3db4: 0x000a, 0x3db5: 0x000a, -+ 0x3db6: 0x000a, 0x3dbb: 0x000a, -+ 0x3dbc: 0x000a, 0x3dbd: 0x000a, 0x3dbe: 0x000a, 0x3dbf: 0x000a, -+ // Block 0xf7, offset 0x3dc0 -+ 0x3dc0: 0x000a, 0x3dc1: 0x000a, 0x3dc2: 0x000a, 0x3dc3: 0x000a, 0x3dc4: 0x000a, 0x3dc5: 0x000a, -+ 0x3dc6: 0x000a, 0x3dc7: 0x000a, 0x3dc8: 0x000a, 0x3dc9: 0x000a, 0x3dca: 0x000a, 0x3dcb: 0x000a, -+ 0x3dcc: 0x000a, 0x3dcd: 0x000a, 0x3dce: 0x000a, 0x3dcf: 0x000a, 0x3dd0: 0x000a, 0x3dd1: 0x000a, -+ 0x3dd2: 0x000a, 0x3dd3: 0x000a, 0x3dd4: 0x000a, 0x3dd5: 0x000a, 0x3dd6: 0x000a, 0x3dd7: 0x000a, -+ 0x3dd8: 0x000a, 0x3dd9: 0x000a, -+ 0x3de0: 0x000a, 0x3de1: 0x000a, 0x3de2: 0x000a, 0x3de3: 0x000a, -+ 0x3de4: 0x000a, 0x3de5: 0x000a, 0x3de6: 0x000a, 0x3de7: 0x000a, 0x3de8: 0x000a, 0x3de9: 0x000a, -+ 0x3dea: 0x000a, 0x3deb: 0x000a, -+ 0x3df0: 0x000a, -+ // Block 0xf8, offset 0x3e00 -+ 0x3e00: 0x000a, 0x3e01: 0x000a, 0x3e02: 0x000a, 0x3e03: 0x000a, 0x3e04: 0x000a, 0x3e05: 0x000a, -+ 0x3e06: 0x000a, 0x3e07: 0x000a, 0x3e08: 0x000a, 0x3e09: 0x000a, 0x3e0a: 0x000a, 0x3e0b: 0x000a, -+ 0x3e10: 0x000a, 0x3e11: 0x000a, -+ 0x3e12: 0x000a, 0x3e13: 0x000a, 0x3e14: 0x000a, 0x3e15: 0x000a, 0x3e16: 0x000a, 0x3e17: 0x000a, -+ 0x3e18: 0x000a, 0x3e19: 0x000a, 0x3e1a: 0x000a, 0x3e1b: 0x000a, 0x3e1c: 0x000a, 0x3e1d: 0x000a, -+ 0x3e1e: 0x000a, 0x3e1f: 0x000a, 0x3e20: 0x000a, 0x3e21: 0x000a, 0x3e22: 0x000a, 0x3e23: 0x000a, -+ 0x3e24: 0x000a, 0x3e25: 0x000a, 0x3e26: 0x000a, 0x3e27: 0x000a, 0x3e28: 0x000a, 0x3e29: 0x000a, -+ 0x3e2a: 0x000a, 0x3e2b: 0x000a, 0x3e2c: 0x000a, 0x3e2d: 0x000a, 0x3e2e: 0x000a, 0x3e2f: 0x000a, -+ 0x3e30: 0x000a, 0x3e31: 0x000a, 0x3e32: 0x000a, 0x3e33: 0x000a, 0x3e34: 0x000a, 0x3e35: 0x000a, -+ 0x3e36: 0x000a, 0x3e37: 0x000a, 0x3e38: 0x000a, 0x3e39: 0x000a, 0x3e3a: 0x000a, 0x3e3b: 0x000a, -+ 0x3e3c: 0x000a, 0x3e3d: 0x000a, 0x3e3e: 0x000a, 0x3e3f: 0x000a, -+ // Block 0xf9, offset 0x3e40 -+ 0x3e40: 0x000a, 0x3e41: 0x000a, 0x3e42: 0x000a, 0x3e43: 0x000a, 0x3e44: 0x000a, 0x3e45: 0x000a, -+ 0x3e46: 0x000a, 0x3e47: 0x000a, -+ 0x3e50: 0x000a, 0x3e51: 0x000a, -+ 0x3e52: 0x000a, 0x3e53: 0x000a, 0x3e54: 0x000a, 0x3e55: 0x000a, 0x3e56: 0x000a, 0x3e57: 0x000a, -+ 0x3e58: 0x000a, 0x3e59: 0x000a, -+ 0x3e60: 0x000a, 0x3e61: 0x000a, 0x3e62: 0x000a, 0x3e63: 0x000a, -+ 0x3e64: 0x000a, 0x3e65: 0x000a, 0x3e66: 0x000a, 0x3e67: 0x000a, 0x3e68: 0x000a, 0x3e69: 0x000a, -+ 0x3e6a: 0x000a, 0x3e6b: 0x000a, 0x3e6c: 0x000a, 0x3e6d: 0x000a, 0x3e6e: 0x000a, 0x3e6f: 0x000a, -+ 0x3e70: 0x000a, 0x3e71: 0x000a, 0x3e72: 0x000a, 0x3e73: 0x000a, 0x3e74: 0x000a, 0x3e75: 0x000a, -+ 0x3e76: 0x000a, 0x3e77: 0x000a, 0x3e78: 0x000a, 0x3e79: 0x000a, 0x3e7a: 0x000a, 0x3e7b: 0x000a, -+ 0x3e7c: 0x000a, 0x3e7d: 0x000a, 0x3e7e: 0x000a, 0x3e7f: 0x000a, -+ // Block 0xfa, offset 0x3e80 -+ 0x3e80: 0x000a, 0x3e81: 0x000a, 0x3e82: 0x000a, 0x3e83: 0x000a, 0x3e84: 0x000a, 0x3e85: 0x000a, -+ 0x3e86: 0x000a, 0x3e87: 0x000a, -+ 0x3e90: 0x000a, 0x3e91: 0x000a, -+ 0x3e92: 0x000a, 0x3e93: 0x000a, 0x3e94: 0x000a, 0x3e95: 0x000a, 0x3e96: 0x000a, 0x3e97: 0x000a, -+ 0x3e98: 0x000a, 0x3e99: 0x000a, 0x3e9a: 0x000a, 0x3e9b: 0x000a, 0x3e9c: 0x000a, 0x3e9d: 0x000a, -+ 0x3e9e: 0x000a, 0x3e9f: 0x000a, 0x3ea0: 0x000a, 0x3ea1: 0x000a, 0x3ea2: 0x000a, 0x3ea3: 0x000a, -+ 0x3ea4: 0x000a, 0x3ea5: 0x000a, 0x3ea6: 0x000a, 0x3ea7: 0x000a, 0x3ea8: 0x000a, 0x3ea9: 0x000a, -+ 0x3eaa: 0x000a, 0x3eab: 0x000a, 0x3eac: 0x000a, 0x3ead: 0x000a, -+ 0x3eb0: 0x000a, 0x3eb1: 0x000a, -+ // Block 0xfb, offset 0x3ec0 -+ 0x3ec0: 0x000a, 0x3ec1: 0x000a, 0x3ec2: 0x000a, 0x3ec3: 0x000a, 0x3ec4: 0x000a, 0x3ec5: 0x000a, -+ 0x3ec6: 0x000a, 0x3ec7: 0x000a, 0x3ec8: 0x000a, 0x3ec9: 0x000a, 0x3eca: 0x000a, 0x3ecb: 0x000a, -+ 0x3ecc: 0x000a, 0x3ecd: 0x000a, 0x3ece: 0x000a, 0x3ecf: 0x000a, 0x3ed0: 0x000a, 0x3ed1: 0x000a, -+ 0x3ed2: 0x000a, 0x3ed3: 0x000a, -+ 0x3ee0: 0x000a, 0x3ee1: 0x000a, 0x3ee2: 0x000a, 0x3ee3: 0x000a, -+ 0x3ee4: 0x000a, 0x3ee5: 0x000a, 0x3ee6: 0x000a, 0x3ee7: 0x000a, 0x3ee8: 0x000a, 0x3ee9: 0x000a, -+ 0x3eea: 0x000a, 0x3eeb: 0x000a, 0x3eec: 0x000a, 0x3eed: 0x000a, -+ 0x3ef0: 0x000a, 0x3ef1: 0x000a, 0x3ef2: 0x000a, 0x3ef3: 0x000a, 0x3ef4: 0x000a, 0x3ef5: 0x000a, -+ 0x3ef6: 0x000a, 0x3ef7: 0x000a, 0x3ef8: 0x000a, 0x3ef9: 0x000a, 0x3efa: 0x000a, 0x3efb: 0x000a, -+ 0x3efc: 0x000a, -+ // Block 0xfc, offset 0x3f00 -+ 0x3f00: 0x000a, 0x3f01: 0x000a, 0x3f02: 0x000a, 0x3f03: 0x000a, 0x3f04: 0x000a, 0x3f05: 0x000a, -+ 0x3f06: 0x000a, 0x3f07: 0x000a, 0x3f08: 0x000a, -+ 0x3f10: 0x000a, 0x3f11: 0x000a, -+ 0x3f12: 0x000a, 0x3f13: 0x000a, 0x3f14: 0x000a, 0x3f15: 0x000a, 0x3f16: 0x000a, 0x3f17: 0x000a, -+ 0x3f18: 0x000a, 0x3f19: 0x000a, 0x3f1a: 0x000a, 0x3f1b: 0x000a, 0x3f1c: 0x000a, 0x3f1d: 0x000a, -+ 0x3f1e: 0x000a, 0x3f1f: 0x000a, 0x3f20: 0x000a, 0x3f21: 0x000a, 0x3f22: 0x000a, 0x3f23: 0x000a, -+ 0x3f24: 0x000a, 0x3f25: 0x000a, 0x3f26: 0x000a, 0x3f27: 0x000a, 0x3f28: 0x000a, 0x3f29: 0x000a, -+ 0x3f2a: 0x000a, 0x3f2b: 0x000a, 0x3f2c: 0x000a, 0x3f2d: 0x000a, 0x3f2e: 0x000a, 0x3f2f: 0x000a, -+ 0x3f30: 0x000a, 0x3f31: 0x000a, 0x3f32: 0x000a, 0x3f33: 0x000a, 0x3f34: 0x000a, 0x3f35: 0x000a, -+ 0x3f36: 0x000a, 0x3f37: 0x000a, 0x3f38: 0x000a, 0x3f39: 0x000a, 0x3f3a: 0x000a, 0x3f3b: 0x000a, -+ 0x3f3c: 0x000a, 0x3f3d: 0x000a, 0x3f3f: 0x000a, -+ // Block 0xfd, offset 0x3f40 -+ 0x3f40: 0x000a, 0x3f41: 0x000a, 0x3f42: 0x000a, 0x3f43: 0x000a, 0x3f44: 0x000a, 0x3f45: 0x000a, -+ 0x3f4e: 0x000a, 0x3f4f: 0x000a, 0x3f50: 0x000a, 0x3f51: 0x000a, -+ 0x3f52: 0x000a, 0x3f53: 0x000a, 0x3f54: 0x000a, 0x3f55: 0x000a, 0x3f56: 0x000a, 0x3f57: 0x000a, -+ 0x3f58: 0x000a, 0x3f59: 0x000a, 0x3f5a: 0x000a, 0x3f5b: 0x000a, -+ 0x3f60: 0x000a, 0x3f61: 0x000a, 0x3f62: 0x000a, 0x3f63: 0x000a, -+ 0x3f64: 0x000a, 0x3f65: 0x000a, 0x3f66: 0x000a, 0x3f67: 0x000a, 0x3f68: 0x000a, -+ 0x3f70: 0x000a, 0x3f71: 0x000a, 0x3f72: 0x000a, 0x3f73: 0x000a, 0x3f74: 0x000a, 0x3f75: 0x000a, -+ 0x3f76: 0x000a, 0x3f77: 0x000a, 0x3f78: 0x000a, -+ // Block 0xfe, offset 0x3f80 -+ 0x3f80: 0x000a, 0x3f81: 0x000a, 0x3f82: 0x000a, 0x3f83: 0x000a, 0x3f84: 0x000a, 0x3f85: 0x000a, -+ 0x3f86: 0x000a, 0x3f87: 0x000a, 0x3f88: 0x000a, 0x3f89: 0x000a, 0x3f8a: 0x000a, 0x3f8b: 0x000a, -+ 0x3f8c: 0x000a, 0x3f8d: 0x000a, 0x3f8e: 0x000a, 0x3f8f: 0x000a, 0x3f90: 0x000a, 0x3f91: 0x000a, -+ 0x3f92: 0x000a, 0x3f94: 0x000a, 0x3f95: 0x000a, 0x3f96: 0x000a, 0x3f97: 0x000a, -+ 0x3f98: 0x000a, 0x3f99: 0x000a, 0x3f9a: 0x000a, 0x3f9b: 0x000a, 0x3f9c: 0x000a, 0x3f9d: 0x000a, -+ 0x3f9e: 0x000a, 0x3f9f: 0x000a, 0x3fa0: 0x000a, 0x3fa1: 0x000a, 0x3fa2: 0x000a, 0x3fa3: 0x000a, -+ 0x3fa4: 0x000a, 0x3fa5: 0x000a, 0x3fa6: 0x000a, 0x3fa7: 0x000a, 0x3fa8: 0x000a, 0x3fa9: 0x000a, -+ 0x3faa: 0x000a, 0x3fab: 0x000a, 0x3fac: 0x000a, 0x3fad: 0x000a, 0x3fae: 0x000a, 0x3faf: 0x000a, -+ 0x3fb0: 0x000a, 0x3fb1: 0x000a, 0x3fb2: 0x000a, 0x3fb3: 0x000a, 0x3fb4: 0x000a, 0x3fb5: 0x000a, -+ 0x3fb6: 0x000a, 0x3fb7: 0x000a, 0x3fb8: 0x000a, 0x3fb9: 0x000a, 0x3fba: 0x000a, 0x3fbb: 0x000a, -+ 0x3fbc: 0x000a, 0x3fbd: 0x000a, 0x3fbe: 0x000a, 0x3fbf: 0x000a, -+ // Block 0xff, offset 0x3fc0 -+ 0x3fc0: 0x000a, 0x3fc1: 0x000a, 0x3fc2: 0x000a, 0x3fc3: 0x000a, 0x3fc4: 0x000a, 0x3fc5: 0x000a, -+ 0x3fc6: 0x000a, 0x3fc7: 0x000a, 0x3fc8: 0x000a, 0x3fc9: 0x000a, 0x3fca: 0x000a, -+ 0x3ff0: 0x0002, 0x3ff1: 0x0002, 0x3ff2: 0x0002, 0x3ff3: 0x0002, 0x3ff4: 0x0002, 0x3ff5: 0x0002, -+ 0x3ff6: 0x0002, 0x3ff7: 0x0002, 0x3ff8: 0x0002, 0x3ff9: 0x0002, -+ // Block 0x100, offset 0x4000 -+ 0x403e: 0x000b, 0x403f: 0x000b, -+ // Block 0x101, offset 0x4040 -+ 0x4040: 0x000b, 0x4041: 0x000b, 0x4042: 0x000b, 0x4043: 0x000b, 0x4044: 0x000b, 0x4045: 0x000b, -+ 0x4046: 0x000b, 0x4047: 0x000b, 0x4048: 0x000b, 0x4049: 0x000b, 0x404a: 0x000b, 0x404b: 0x000b, -+ 0x404c: 0x000b, 0x404d: 0x000b, 0x404e: 0x000b, 0x404f: 0x000b, 0x4050: 0x000b, 0x4051: 0x000b, -+ 0x4052: 0x000b, 0x4053: 0x000b, 0x4054: 0x000b, 0x4055: 0x000b, 0x4056: 0x000b, 0x4057: 0x000b, -+ 0x4058: 0x000b, 0x4059: 0x000b, 0x405a: 0x000b, 0x405b: 0x000b, 0x405c: 0x000b, 0x405d: 0x000b, -+ 0x405e: 0x000b, 0x405f: 0x000b, 0x4060: 0x000b, 0x4061: 0x000b, 0x4062: 0x000b, 0x4063: 0x000b, -+ 0x4064: 0x000b, 0x4065: 0x000b, 0x4066: 0x000b, 0x4067: 0x000b, 0x4068: 0x000b, 0x4069: 0x000b, -+ 0x406a: 0x000b, 0x406b: 0x000b, 0x406c: 0x000b, 0x406d: 0x000b, 0x406e: 0x000b, 0x406f: 0x000b, -+ 0x4070: 0x000b, 0x4071: 0x000b, 0x4072: 0x000b, 0x4073: 0x000b, 0x4074: 0x000b, 0x4075: 0x000b, -+ 0x4076: 0x000b, 0x4077: 0x000b, 0x4078: 0x000b, 0x4079: 0x000b, 0x407a: 0x000b, 0x407b: 0x000b, -+ 0x407c: 0x000b, 0x407d: 0x000b, 0x407e: 0x000b, 0x407f: 0x000b, -+ // Block 0x102, offset 0x4080 -+ 0x4080: 0x000c, 0x4081: 0x000c, 0x4082: 0x000c, 0x4083: 0x000c, 0x4084: 0x000c, 0x4085: 0x000c, -+ 0x4086: 0x000c, 0x4087: 0x000c, 0x4088: 0x000c, 0x4089: 0x000c, 0x408a: 0x000c, 0x408b: 0x000c, -+ 0x408c: 0x000c, 0x408d: 0x000c, 0x408e: 0x000c, 0x408f: 0x000c, 0x4090: 0x000c, 0x4091: 0x000c, -+ 0x4092: 0x000c, 0x4093: 0x000c, 0x4094: 0x000c, 0x4095: 0x000c, 0x4096: 0x000c, 0x4097: 0x000c, -+ 0x4098: 0x000c, 0x4099: 0x000c, 0x409a: 0x000c, 0x409b: 0x000c, 0x409c: 0x000c, 0x409d: 0x000c, -+ 0x409e: 0x000c, 0x409f: 0x000c, 0x40a0: 0x000c, 0x40a1: 0x000c, 0x40a2: 0x000c, 0x40a3: 0x000c, -+ 0x40a4: 0x000c, 0x40a5: 0x000c, 0x40a6: 0x000c, 0x40a7: 0x000c, 0x40a8: 0x000c, 0x40a9: 0x000c, -+ 0x40aa: 0x000c, 0x40ab: 0x000c, 0x40ac: 0x000c, 0x40ad: 0x000c, 0x40ae: 0x000c, 0x40af: 0x000c, -+ 0x40b0: 0x000b, 0x40b1: 0x000b, 0x40b2: 0x000b, 0x40b3: 0x000b, 0x40b4: 0x000b, 0x40b5: 0x000b, -+ 0x40b6: 0x000b, 0x40b7: 0x000b, 0x40b8: 0x000b, 0x40b9: 0x000b, 0x40ba: 0x000b, 0x40bb: 0x000b, -+ 0x40bc: 0x000b, 0x40bd: 0x000b, 0x40be: 0x000b, 0x40bf: 0x000b, -+} -+ -+// bidiIndex: 26 blocks, 1664 entries, 3328 bytes -+// Block 0 is the zero block. -+var bidiIndex = [1664]uint16{ -+ // Block 0x0, offset 0x0 -+ // Block 0x1, offset 0x40 -+ // Block 0x2, offset 0x80 -+ // Block 0x3, offset 0xc0 -+ 0xc2: 0x01, 0xc3: 0x02, -+ 0xca: 0x03, 0xcb: 0x04, 0xcc: 0x05, 0xcd: 0x06, 0xce: 0x07, 0xcf: 0x08, -+ 0xd2: 0x09, 0xd6: 0x0a, 0xd7: 0x0b, -+ 0xd8: 0x0c, 0xd9: 0x0d, 0xda: 0x0e, 0xdb: 0x0f, 0xdc: 0x10, 0xdd: 0x11, 0xde: 0x12, 0xdf: 0x13, -+ 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06, -+ 0xea: 0x07, 0xef: 0x08, -+ 0xf0: 0x13, 0xf1: 0x14, 0xf2: 0x14, 0xf3: 0x16, 0xf4: 0x17, -+ // Block 0x4, offset 0x100 -+ 0x120: 0x14, 0x121: 0x15, 0x122: 0x16, 0x123: 0x17, 0x124: 0x18, 0x125: 0x19, 0x126: 0x1a, 0x127: 0x1b, -+ 0x128: 0x1c, 0x129: 0x1d, 0x12a: 0x1c, 0x12b: 0x1e, 0x12c: 0x1f, 0x12d: 0x20, 0x12e: 0x21, 0x12f: 0x22, -+ 0x130: 0x23, 0x131: 0x24, 0x132: 0x1a, 0x133: 0x25, 0x134: 0x26, 0x135: 0x27, 0x136: 0x28, 0x137: 0x29, -+ 0x138: 0x2a, 0x139: 0x2b, 0x13a: 0x2c, 0x13b: 0x2d, 0x13c: 0x2e, 0x13d: 0x2f, 0x13e: 0x30, 0x13f: 0x31, -+ // Block 0x5, offset 0x140 -+ 0x140: 0x32, 0x141: 0x33, 0x142: 0x34, -+ 0x14d: 0x35, 0x14e: 0x36, -+ 0x150: 0x37, -+ 0x15a: 0x38, 0x15c: 0x39, 0x15d: 0x3a, 0x15e: 0x3b, 0x15f: 0x3c, -+ 0x160: 0x3d, 0x162: 0x3e, 0x164: 0x3f, 0x165: 0x40, 0x167: 0x41, -+ 0x168: 0x42, 0x169: 0x43, 0x16a: 0x44, 0x16b: 0x45, 0x16c: 0x46, 0x16d: 0x47, 0x16e: 0x48, 0x16f: 0x49, -+ 0x170: 0x4a, 0x173: 0x4b, 0x177: 0x05, -+ 0x17e: 0x4c, 0x17f: 0x4d, -+ // Block 0x6, offset 0x180 -+ 0x180: 0x4e, 0x181: 0x4f, 0x182: 0x50, 0x183: 0x51, 0x184: 0x52, 0x185: 0x53, 0x186: 0x54, 0x187: 0x55, -+ 0x188: 0x56, 0x189: 0x55, 0x18a: 0x55, 0x18b: 0x55, 0x18c: 0x57, 0x18d: 0x58, 0x18e: 0x59, 0x18f: 0x55, -+ 0x190: 0x5a, 0x191: 0x5b, 0x192: 0x5c, 0x193: 0x5d, 0x194: 0x55, 0x195: 0x55, 0x196: 0x55, 0x197: 0x55, -+ 0x198: 0x55, 0x199: 0x55, 0x19a: 0x5e, 0x19b: 0x55, 0x19c: 0x55, 0x19d: 0x5f, 0x19e: 0x55, 0x19f: 0x60, -+ 0x1a4: 0x55, 0x1a5: 0x55, 0x1a6: 0x61, 0x1a7: 0x62, -+ 0x1a8: 0x55, 0x1a9: 0x55, 0x1aa: 0x55, 0x1ab: 0x55, 0x1ac: 0x55, 0x1ad: 0x63, 0x1ae: 0x64, 0x1af: 0x55, -+ 0x1b3: 0x65, 0x1b5: 0x66, 0x1b7: 0x67, -+ 0x1b8: 0x68, 0x1b9: 0x69, 0x1ba: 0x6a, 0x1bb: 0x6b, 0x1bc: 0x55, 0x1bd: 0x55, 0x1be: 0x55, 0x1bf: 0x6c, -+ // Block 0x7, offset 0x1c0 -+ 0x1c0: 0x6d, 0x1c2: 0x6e, 0x1c3: 0x6f, 0x1c7: 0x70, -+ 0x1c8: 0x71, 0x1c9: 0x72, 0x1ca: 0x73, 0x1cb: 0x74, 0x1cd: 0x75, 0x1cf: 0x76, -+ // Block 0x8, offset 0x200 -+ 0x237: 0x55, -+ // Block 0x9, offset 0x240 -+ 0x252: 0x77, 0x253: 0x78, -+ 0x258: 0x79, 0x259: 0x7a, 0x25a: 0x7b, 0x25b: 0x7c, 0x25c: 0x7d, 0x25e: 0x7e, -+ 0x260: 0x7f, 0x261: 0x80, 0x263: 0x81, 0x264: 0x82, 0x265: 0x83, 0x266: 0x84, 0x267: 0x85, -+ 0x268: 0x86, 0x269: 0x87, 0x26a: 0x88, 0x26b: 0x89, 0x26d: 0x8a, 0x26f: 0x8b, -+ // Block 0xa, offset 0x280 -+ 0x2ac: 0x8c, 0x2ad: 0x8d, 0x2ae: 0x0e, 0x2af: 0x0e, -+ 0x2b0: 0x0e, 0x2b1: 0x0e, 0x2b2: 0x0e, 0x2b3: 0x0e, 0x2b4: 0x8e, 0x2b5: 0x8f, 0x2b6: 0x0e, 0x2b7: 0x90, -+ 0x2b8: 0x91, 0x2b9: 0x92, 0x2ba: 0x0e, 0x2bb: 0x93, 0x2bc: 0x94, 0x2bd: 0x95, 0x2bf: 0x96, -+ // Block 0xb, offset 0x2c0 -+ 0x2c4: 0x97, 0x2c5: 0x55, 0x2c6: 0x98, 0x2c7: 0x99, -+ 0x2cb: 0x9a, 0x2cd: 0x9b, -+ 0x2e0: 0x9c, 0x2e1: 0x9c, 0x2e2: 0x9c, 0x2e3: 0x9c, 0x2e4: 0x9d, 0x2e5: 0x9c, 0x2e6: 0x9c, 0x2e7: 0x9c, -+ 0x2e8: 0x9e, 0x2e9: 0x9c, 0x2ea: 0x9c, 0x2eb: 0x9f, 0x2ec: 0xa0, 0x2ed: 0x9c, 0x2ee: 0x9c, 0x2ef: 0x9c, -+ 0x2f0: 0x9c, 0x2f1: 0x9c, 0x2f2: 0x9c, 0x2f3: 0x9c, 0x2f4: 0xa1, 0x2f5: 0x9c, 0x2f6: 0x9c, 0x2f7: 0x9c, -+ 0x2f8: 0x9c, 0x2f9: 0xa2, 0x2fa: 0xa3, 0x2fb: 0xa4, 0x2fc: 0xa5, 0x2fd: 0xa6, 0x2fe: 0xa7, 0x2ff: 0x9c, -+ // Block 0xc, offset 0x300 -+ 0x300: 0xa8, 0x301: 0xa9, 0x302: 0xaa, 0x303: 0x21, 0x304: 0xab, 0x305: 0xac, 0x306: 0xad, 0x307: 0xae, -+ 0x308: 0xaf, 0x309: 0x28, 0x30b: 0xb0, 0x30c: 0x26, 0x30d: 0xb1, -+ 0x310: 0xb2, 0x311: 0xb3, 0x312: 0xb4, 0x313: 0xb5, 0x316: 0xb6, 0x317: 0xb7, -+ 0x318: 0xb8, 0x319: 0xb9, 0x31a: 0xba, 0x31c: 0xbb, -+ 0x320: 0xbc, 0x324: 0xbd, 0x325: 0xbe, 0x327: 0xbf, -+ 0x328: 0xc0, 0x329: 0xc1, 0x32a: 0xc2, -+ 0x330: 0xc3, 0x332: 0xc4, 0x334: 0xc5, 0x335: 0xc6, 0x336: 0xc7, -+ 0x33b: 0xc8, 0x33c: 0xc9, 0x33d: 0xca, 0x33f: 0xcb, -+ // Block 0xd, offset 0x340 -+ 0x351: 0xcc, -+ // Block 0xe, offset 0x380 -+ 0x3ab: 0xcd, 0x3ac: 0xce, -+ 0x3bd: 0xcf, 0x3be: 0xd0, 0x3bf: 0xd1, -+ // Block 0xf, offset 0x3c0 -+ 0x3f2: 0xd2, -+ // Block 0x10, offset 0x400 -+ 0x43c: 0xd3, 0x43d: 0xd4, -+ // Block 0x11, offset 0x440 -+ 0x445: 0xd5, 0x446: 0xd6, 0x447: 0xd7, -+ 0x448: 0x55, 0x449: 0xd8, 0x44c: 0x55, 0x44d: 0xd9, -+ 0x45b: 0xda, 0x45c: 0xdb, 0x45d: 0xdc, 0x45e: 0xdd, 0x45f: 0xde, -+ 0x468: 0xdf, 0x469: 0xe0, 0x46a: 0xe1, -+ // Block 0x12, offset 0x480 -+ 0x480: 0xe2, 0x482: 0xcf, 0x484: 0xce, -+ 0x48a: 0xe3, 0x48b: 0xe4, -+ 0x493: 0xe5, -+ 0x4a0: 0x9c, 0x4a1: 0x9c, 0x4a2: 0x9c, 0x4a3: 0xe6, 0x4a4: 0x9c, 0x4a5: 0xe7, 0x4a6: 0x9c, 0x4a7: 0x9c, -+ 0x4a8: 0x9c, 0x4a9: 0x9c, 0x4aa: 0x9c, 0x4ab: 0x9c, 0x4ac: 0x9c, 0x4ad: 0x9c, 0x4ae: 0x9c, 0x4af: 0x9c, -+ 0x4b0: 0x9c, 0x4b1: 0xe8, 0x4b2: 0xe9, 0x4b3: 0x9c, 0x4b4: 0xea, 0x4b5: 0x9c, 0x4b6: 0x9c, 0x4b7: 0x9c, -+ 0x4b8: 0x0e, 0x4b9: 0x0e, 0x4ba: 0x0e, 0x4bb: 0xeb, 0x4bc: 0x9c, 0x4bd: 0x9c, 0x4be: 0x9c, 0x4bf: 0x9c, -+ // Block 0x13, offset 0x4c0 -+ 0x4c0: 0xec, 0x4c1: 0x55, 0x4c2: 0xed, 0x4c3: 0xee, 0x4c4: 0xef, 0x4c5: 0xf0, 0x4c6: 0xf1, -+ 0x4c9: 0xf2, 0x4cc: 0x55, 0x4cd: 0x55, 0x4ce: 0x55, 0x4cf: 0x55, -+ 0x4d0: 0x55, 0x4d1: 0x55, 0x4d2: 0x55, 0x4d3: 0x55, 0x4d4: 0x55, 0x4d5: 0x55, 0x4d6: 0x55, 0x4d7: 0x55, -+ 0x4d8: 0x55, 0x4d9: 0x55, 0x4da: 0x55, 0x4db: 0xf3, 0x4dc: 0x55, 0x4dd: 0xf4, 0x4de: 0x55, 0x4df: 0xf5, -+ 0x4e0: 0xf6, 0x4e1: 0xf7, 0x4e2: 0xf8, 0x4e4: 0x55, 0x4e5: 0x55, 0x4e6: 0x55, 0x4e7: 0x55, -+ 0x4e8: 0x55, 0x4e9: 0xf9, 0x4ea: 0xfa, 0x4eb: 0xfb, 0x4ec: 0x55, 0x4ed: 0x55, 0x4ee: 0xfc, 0x4ef: 0xfd, -+ 0x4ff: 0xfe, -+ // Block 0x14, offset 0x500 -+ 0x53f: 0xfe, -+ // Block 0x15, offset 0x540 -+ 0x550: 0x09, 0x551: 0x0a, 0x553: 0x0b, 0x556: 0x0c, -+ 0x55b: 0x0d, 0x55c: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11, -+ 0x56f: 0x12, -+ 0x57f: 0x12, -+ // Block 0x16, offset 0x580 -+ 0x58f: 0x12, -+ 0x59f: 0x12, -+ 0x5af: 0x12, -+ 0x5bf: 0x12, -+ // Block 0x17, offset 0x5c0 -+ 0x5c0: 0xff, 0x5c1: 0xff, 0x5c2: 0xff, 0x5c3: 0xff, 0x5c4: 0x05, 0x5c5: 0x05, 0x5c6: 0x05, 0x5c7: 0x100, -+ 0x5c8: 0xff, 0x5c9: 0xff, 0x5ca: 0xff, 0x5cb: 0xff, 0x5cc: 0xff, 0x5cd: 0xff, 0x5ce: 0xff, 0x5cf: 0xff, -+ 0x5d0: 0xff, 0x5d1: 0xff, 0x5d2: 0xff, 0x5d3: 0xff, 0x5d4: 0xff, 0x5d5: 0xff, 0x5d6: 0xff, 0x5d7: 0xff, -+ 0x5d8: 0xff, 0x5d9: 0xff, 0x5da: 0xff, 0x5db: 0xff, 0x5dc: 0xff, 0x5dd: 0xff, 0x5de: 0xff, 0x5df: 0xff, -+ 0x5e0: 0xff, 0x5e1: 0xff, 0x5e2: 0xff, 0x5e3: 0xff, 0x5e4: 0xff, 0x5e5: 0xff, 0x5e6: 0xff, 0x5e7: 0xff, -+ 0x5e8: 0xff, 0x5e9: 0xff, 0x5ea: 0xff, 0x5eb: 0xff, 0x5ec: 0xff, 0x5ed: 0xff, 0x5ee: 0xff, 0x5ef: 0xff, -+ 0x5f0: 0xff, 0x5f1: 0xff, 0x5f2: 0xff, 0x5f3: 0xff, 0x5f4: 0xff, 0x5f5: 0xff, 0x5f6: 0xff, 0x5f7: 0xff, -+ 0x5f8: 0xff, 0x5f9: 0xff, 0x5fa: 0xff, 0x5fb: 0xff, 0x5fc: 0xff, 0x5fd: 0xff, 0x5fe: 0xff, 0x5ff: 0xff, -+ // Block 0x18, offset 0x600 -+ 0x60f: 0x12, -+ 0x61f: 0x12, -+ 0x620: 0x15, -+ 0x62f: 0x12, -+ 0x63f: 0x12, -+ // Block 0x19, offset 0x640 -+ 0x64f: 0x12, -+} -+ -+// Total table size 19960 bytes (19KiB); checksum: F50EF68C -diff --git a/vendor/golang.org/x/text/unicode/bidi/tables9.0.0.go b/vendor/golang.org/x/text/unicode/bidi/tables9.0.0.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/text/unicode/bidi/trieval.go b/vendor/golang.org/x/text/unicode/bidi/trieval.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/text/unicode/norm/composition.go b/vendor/golang.org/x/text/unicode/norm/composition.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/text/unicode/norm/forminfo.go b/vendor/golang.org/x/text/unicode/norm/forminfo.go -old mode 100644 -new mode 100755 -index d69ccb4..487335d ---- a/vendor/golang.org/x/text/unicode/norm/forminfo.go -+++ b/vendor/golang.org/x/text/unicode/norm/forminfo.go -@@ -13,7 +13,7 @@ import "encoding/binary" - // a rune to a uint16. The values take two forms. For v >= 0x8000: - // bits - // 15: 1 (inverse of NFD_QC bit of qcInfo) --// 13..7: qcInfo (see below). isYesD is always true (no decompostion). -+// 13..7: qcInfo (see below). isYesD is always true (no decomposition). - // 6..0: ccc (compressed CCC value). - // For v < 0x8000, the respective rune has a decomposition and v is an index - // into a byte array of UTF-8 decomposition sequences and additional info and -diff --git a/vendor/golang.org/x/text/unicode/norm/input.go b/vendor/golang.org/x/text/unicode/norm/input.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/text/unicode/norm/iter.go b/vendor/golang.org/x/text/unicode/norm/iter.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/text/unicode/norm/normalize.go b/vendor/golang.org/x/text/unicode/norm/normalize.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/text/unicode/norm/readwriter.go b/vendor/golang.org/x/text/unicode/norm/readwriter.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/text/unicode/norm/tables10.0.0.go b/vendor/golang.org/x/text/unicode/norm/tables10.0.0.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/text/unicode/norm/tables11.0.0.go b/vendor/golang.org/x/text/unicode/norm/tables11.0.0.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go b/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/text/unicode/norm/tables13.0.0.go b/vendor/golang.org/x/text/unicode/norm/tables13.0.0.go -old mode 100644 -new mode 100755 -index 9115ef2..f65785e ---- a/vendor/golang.org/x/text/unicode/norm/tables13.0.0.go -+++ b/vendor/golang.org/x/text/unicode/norm/tables13.0.0.go -@@ -1,7 +1,7 @@ - // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - --//go:build go1.16 --// +build go1.16 -+//go:build go1.16 && !go1.21 -+// +build go1.16,!go1.21 - - package norm - -diff --git a/vendor/golang.org/x/text/unicode/norm/tables15.0.0.go b/vendor/golang.org/x/text/unicode/norm/tables15.0.0.go -new file mode 100755 -index 0000000..e1858b8 ---- /dev/null -+++ b/vendor/golang.org/x/text/unicode/norm/tables15.0.0.go -@@ -0,0 +1,7908 @@ -+// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. -+ -+//go:build go1.21 -+// +build go1.21 -+ -+package norm -+ -+import "sync" -+ -+const ( -+ // Version is the Unicode edition from which the tables are derived. -+ Version = "15.0.0" -+ -+ // MaxTransformChunkSize indicates the maximum number of bytes that Transform -+ // may need to write atomically for any Form. Making a destination buffer at -+ // least this size ensures that Transform can always make progress and that -+ // the user does not need to grow the buffer on an ErrShortDst. -+ MaxTransformChunkSize = 35 + maxNonStarters*4 -+) -+ -+var ccc = [56]uint8{ -+ 0, 1, 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, 84, 91, 103, 107, 118, 122, 129, -+ 130, 132, 202, 214, 216, 218, 220, 222, -+ 224, 226, 228, 230, 232, 233, 234, 240, -+} -+ -+const ( -+ firstMulti = 0x199A -+ firstCCC = 0x2DD5 -+ endMulti = 0x30A1 -+ firstLeadingCCC = 0x4AEF -+ firstCCCZeroExcept = 0x4BB9 -+ firstStarterWithNLead = 0x4BE0 -+ lastDecomp = 0x4BE2 -+ maxDecomp = 0x8000 -+) -+ -+// decomps: 19426 bytes -+var decomps = [...]byte{ -+ // Bytes 0 - 3f -+ 0x00, 0x41, 0x20, 0x41, 0x21, 0x41, 0x22, 0x41, -+ 0x23, 0x41, 0x24, 0x41, 0x25, 0x41, 0x26, 0x41, -+ 0x27, 0x41, 0x28, 0x41, 0x29, 0x41, 0x2A, 0x41, -+ 0x2B, 0x41, 0x2C, 0x41, 0x2D, 0x41, 0x2E, 0x41, -+ 0x2F, 0x41, 0x30, 0x41, 0x31, 0x41, 0x32, 0x41, -+ 0x33, 0x41, 0x34, 0x41, 0x35, 0x41, 0x36, 0x41, -+ 0x37, 0x41, 0x38, 0x41, 0x39, 0x41, 0x3A, 0x41, -+ 0x3B, 0x41, 0x3C, 0x41, 0x3D, 0x41, 0x3E, 0x41, -+ // Bytes 40 - 7f -+ 0x3F, 0x41, 0x40, 0x41, 0x41, 0x41, 0x42, 0x41, -+ 0x43, 0x41, 0x44, 0x41, 0x45, 0x41, 0x46, 0x41, -+ 0x47, 0x41, 0x48, 0x41, 0x49, 0x41, 0x4A, 0x41, -+ 0x4B, 0x41, 0x4C, 0x41, 0x4D, 0x41, 0x4E, 0x41, -+ 0x4F, 0x41, 0x50, 0x41, 0x51, 0x41, 0x52, 0x41, -+ 0x53, 0x41, 0x54, 0x41, 0x55, 0x41, 0x56, 0x41, -+ 0x57, 0x41, 0x58, 0x41, 0x59, 0x41, 0x5A, 0x41, -+ 0x5B, 0x41, 0x5C, 0x41, 0x5D, 0x41, 0x5E, 0x41, -+ // Bytes 80 - bf -+ 0x5F, 0x41, 0x60, 0x41, 0x61, 0x41, 0x62, 0x41, -+ 0x63, 0x41, 0x64, 0x41, 0x65, 0x41, 0x66, 0x41, -+ 0x67, 0x41, 0x68, 0x41, 0x69, 0x41, 0x6A, 0x41, -+ 0x6B, 0x41, 0x6C, 0x41, 0x6D, 0x41, 0x6E, 0x41, -+ 0x6F, 0x41, 0x70, 0x41, 0x71, 0x41, 0x72, 0x41, -+ 0x73, 0x41, 0x74, 0x41, 0x75, 0x41, 0x76, 0x41, -+ 0x77, 0x41, 0x78, 0x41, 0x79, 0x41, 0x7A, 0x41, -+ 0x7B, 0x41, 0x7C, 0x41, 0x7D, 0x41, 0x7E, 0x42, -+ // Bytes c0 - ff -+ 0xC2, 0xA2, 0x42, 0xC2, 0xA3, 0x42, 0xC2, 0xA5, -+ 0x42, 0xC2, 0xA6, 0x42, 0xC2, 0xAC, 0x42, 0xC2, -+ 0xB7, 0x42, 0xC3, 0x86, 0x42, 0xC3, 0xA6, 0x42, -+ 0xC3, 0xB0, 0x42, 0xC3, 0xB8, 0x42, 0xC4, 0xA6, -+ 0x42, 0xC4, 0xA7, 0x42, 0xC4, 0xB1, 0x42, 0xC5, -+ 0x8B, 0x42, 0xC5, 0x93, 0x42, 0xC6, 0x8E, 0x42, -+ 0xC6, 0x90, 0x42, 0xC6, 0xAB, 0x42, 0xC7, 0x80, -+ 0x42, 0xC7, 0x81, 0x42, 0xC7, 0x82, 0x42, 0xC8, -+ // Bytes 100 - 13f -+ 0xA2, 0x42, 0xC8, 0xB7, 0x42, 0xC9, 0x90, 0x42, -+ 0xC9, 0x91, 0x42, 0xC9, 0x92, 0x42, 0xC9, 0x93, -+ 0x42, 0xC9, 0x94, 0x42, 0xC9, 0x95, 0x42, 0xC9, -+ 0x96, 0x42, 0xC9, 0x97, 0x42, 0xC9, 0x98, 0x42, -+ 0xC9, 0x99, 0x42, 0xC9, 0x9B, 0x42, 0xC9, 0x9C, -+ 0x42, 0xC9, 0x9E, 0x42, 0xC9, 0x9F, 0x42, 0xC9, -+ 0xA0, 0x42, 0xC9, 0xA1, 0x42, 0xC9, 0xA2, 0x42, -+ 0xC9, 0xA3, 0x42, 0xC9, 0xA4, 0x42, 0xC9, 0xA5, -+ // Bytes 140 - 17f -+ 0x42, 0xC9, 0xA6, 0x42, 0xC9, 0xA7, 0x42, 0xC9, -+ 0xA8, 0x42, 0xC9, 0xA9, 0x42, 0xC9, 0xAA, 0x42, -+ 0xC9, 0xAB, 0x42, 0xC9, 0xAC, 0x42, 0xC9, 0xAD, -+ 0x42, 0xC9, 0xAE, 0x42, 0xC9, 0xAF, 0x42, 0xC9, -+ 0xB0, 0x42, 0xC9, 0xB1, 0x42, 0xC9, 0xB2, 0x42, -+ 0xC9, 0xB3, 0x42, 0xC9, 0xB4, 0x42, 0xC9, 0xB5, -+ 0x42, 0xC9, 0xB6, 0x42, 0xC9, 0xB7, 0x42, 0xC9, -+ 0xB8, 0x42, 0xC9, 0xB9, 0x42, 0xC9, 0xBA, 0x42, -+ // Bytes 180 - 1bf -+ 0xC9, 0xBB, 0x42, 0xC9, 0xBD, 0x42, 0xC9, 0xBE, -+ 0x42, 0xCA, 0x80, 0x42, 0xCA, 0x81, 0x42, 0xCA, -+ 0x82, 0x42, 0xCA, 0x83, 0x42, 0xCA, 0x84, 0x42, -+ 0xCA, 0x88, 0x42, 0xCA, 0x89, 0x42, 0xCA, 0x8A, -+ 0x42, 0xCA, 0x8B, 0x42, 0xCA, 0x8C, 0x42, 0xCA, -+ 0x8D, 0x42, 0xCA, 0x8E, 0x42, 0xCA, 0x8F, 0x42, -+ 0xCA, 0x90, 0x42, 0xCA, 0x91, 0x42, 0xCA, 0x92, -+ 0x42, 0xCA, 0x95, 0x42, 0xCA, 0x98, 0x42, 0xCA, -+ // Bytes 1c0 - 1ff -+ 0x99, 0x42, 0xCA, 0x9B, 0x42, 0xCA, 0x9C, 0x42, -+ 0xCA, 0x9D, 0x42, 0xCA, 0x9F, 0x42, 0xCA, 0xA1, -+ 0x42, 0xCA, 0xA2, 0x42, 0xCA, 0xA3, 0x42, 0xCA, -+ 0xA4, 0x42, 0xCA, 0xA5, 0x42, 0xCA, 0xA6, 0x42, -+ 0xCA, 0xA7, 0x42, 0xCA, 0xA8, 0x42, 0xCA, 0xA9, -+ 0x42, 0xCA, 0xAA, 0x42, 0xCA, 0xAB, 0x42, 0xCA, -+ 0xB9, 0x42, 0xCB, 0x90, 0x42, 0xCB, 0x91, 0x42, -+ 0xCE, 0x91, 0x42, 0xCE, 0x92, 0x42, 0xCE, 0x93, -+ // Bytes 200 - 23f -+ 0x42, 0xCE, 0x94, 0x42, 0xCE, 0x95, 0x42, 0xCE, -+ 0x96, 0x42, 0xCE, 0x97, 0x42, 0xCE, 0x98, 0x42, -+ 0xCE, 0x99, 0x42, 0xCE, 0x9A, 0x42, 0xCE, 0x9B, -+ 0x42, 0xCE, 0x9C, 0x42, 0xCE, 0x9D, 0x42, 0xCE, -+ 0x9E, 0x42, 0xCE, 0x9F, 0x42, 0xCE, 0xA0, 0x42, -+ 0xCE, 0xA1, 0x42, 0xCE, 0xA3, 0x42, 0xCE, 0xA4, -+ 0x42, 0xCE, 0xA5, 0x42, 0xCE, 0xA6, 0x42, 0xCE, -+ 0xA7, 0x42, 0xCE, 0xA8, 0x42, 0xCE, 0xA9, 0x42, -+ // Bytes 240 - 27f -+ 0xCE, 0xB1, 0x42, 0xCE, 0xB2, 0x42, 0xCE, 0xB3, -+ 0x42, 0xCE, 0xB4, 0x42, 0xCE, 0xB5, 0x42, 0xCE, -+ 0xB6, 0x42, 0xCE, 0xB7, 0x42, 0xCE, 0xB8, 0x42, -+ 0xCE, 0xB9, 0x42, 0xCE, 0xBA, 0x42, 0xCE, 0xBB, -+ 0x42, 0xCE, 0xBC, 0x42, 0xCE, 0xBD, 0x42, 0xCE, -+ 0xBE, 0x42, 0xCE, 0xBF, 0x42, 0xCF, 0x80, 0x42, -+ 0xCF, 0x81, 0x42, 0xCF, 0x82, 0x42, 0xCF, 0x83, -+ 0x42, 0xCF, 0x84, 0x42, 0xCF, 0x85, 0x42, 0xCF, -+ // Bytes 280 - 2bf -+ 0x86, 0x42, 0xCF, 0x87, 0x42, 0xCF, 0x88, 0x42, -+ 0xCF, 0x89, 0x42, 0xCF, 0x9C, 0x42, 0xCF, 0x9D, -+ 0x42, 0xD0, 0xB0, 0x42, 0xD0, 0xB1, 0x42, 0xD0, -+ 0xB2, 0x42, 0xD0, 0xB3, 0x42, 0xD0, 0xB4, 0x42, -+ 0xD0, 0xB5, 0x42, 0xD0, 0xB6, 0x42, 0xD0, 0xB7, -+ 0x42, 0xD0, 0xB8, 0x42, 0xD0, 0xBA, 0x42, 0xD0, -+ 0xBB, 0x42, 0xD0, 0xBC, 0x42, 0xD0, 0xBD, 0x42, -+ 0xD0, 0xBE, 0x42, 0xD0, 0xBF, 0x42, 0xD1, 0x80, -+ // Bytes 2c0 - 2ff -+ 0x42, 0xD1, 0x81, 0x42, 0xD1, 0x82, 0x42, 0xD1, -+ 0x83, 0x42, 0xD1, 0x84, 0x42, 0xD1, 0x85, 0x42, -+ 0xD1, 0x86, 0x42, 0xD1, 0x87, 0x42, 0xD1, 0x88, -+ 0x42, 0xD1, 0x8A, 0x42, 0xD1, 0x8B, 0x42, 0xD1, -+ 0x8C, 0x42, 0xD1, 0x8D, 0x42, 0xD1, 0x8E, 0x42, -+ 0xD1, 0x95, 0x42, 0xD1, 0x96, 0x42, 0xD1, 0x98, -+ 0x42, 0xD1, 0x9F, 0x42, 0xD2, 0x91, 0x42, 0xD2, -+ 0xAB, 0x42, 0xD2, 0xAF, 0x42, 0xD2, 0xB1, 0x42, -+ // Bytes 300 - 33f -+ 0xD3, 0x8F, 0x42, 0xD3, 0x99, 0x42, 0xD3, 0xA9, -+ 0x42, 0xD7, 0x90, 0x42, 0xD7, 0x91, 0x42, 0xD7, -+ 0x92, 0x42, 0xD7, 0x93, 0x42, 0xD7, 0x94, 0x42, -+ 0xD7, 0x9B, 0x42, 0xD7, 0x9C, 0x42, 0xD7, 0x9D, -+ 0x42, 0xD7, 0xA2, 0x42, 0xD7, 0xA8, 0x42, 0xD7, -+ 0xAA, 0x42, 0xD8, 0xA1, 0x42, 0xD8, 0xA7, 0x42, -+ 0xD8, 0xA8, 0x42, 0xD8, 0xA9, 0x42, 0xD8, 0xAA, -+ 0x42, 0xD8, 0xAB, 0x42, 0xD8, 0xAC, 0x42, 0xD8, -+ // Bytes 340 - 37f -+ 0xAD, 0x42, 0xD8, 0xAE, 0x42, 0xD8, 0xAF, 0x42, -+ 0xD8, 0xB0, 0x42, 0xD8, 0xB1, 0x42, 0xD8, 0xB2, -+ 0x42, 0xD8, 0xB3, 0x42, 0xD8, 0xB4, 0x42, 0xD8, -+ 0xB5, 0x42, 0xD8, 0xB6, 0x42, 0xD8, 0xB7, 0x42, -+ 0xD8, 0xB8, 0x42, 0xD8, 0xB9, 0x42, 0xD8, 0xBA, -+ 0x42, 0xD9, 0x81, 0x42, 0xD9, 0x82, 0x42, 0xD9, -+ 0x83, 0x42, 0xD9, 0x84, 0x42, 0xD9, 0x85, 0x42, -+ 0xD9, 0x86, 0x42, 0xD9, 0x87, 0x42, 0xD9, 0x88, -+ // Bytes 380 - 3bf -+ 0x42, 0xD9, 0x89, 0x42, 0xD9, 0x8A, 0x42, 0xD9, -+ 0xAE, 0x42, 0xD9, 0xAF, 0x42, 0xD9, 0xB1, 0x42, -+ 0xD9, 0xB9, 0x42, 0xD9, 0xBA, 0x42, 0xD9, 0xBB, -+ 0x42, 0xD9, 0xBE, 0x42, 0xD9, 0xBF, 0x42, 0xDA, -+ 0x80, 0x42, 0xDA, 0x83, 0x42, 0xDA, 0x84, 0x42, -+ 0xDA, 0x86, 0x42, 0xDA, 0x87, 0x42, 0xDA, 0x88, -+ 0x42, 0xDA, 0x8C, 0x42, 0xDA, 0x8D, 0x42, 0xDA, -+ 0x8E, 0x42, 0xDA, 0x91, 0x42, 0xDA, 0x98, 0x42, -+ // Bytes 3c0 - 3ff -+ 0xDA, 0xA1, 0x42, 0xDA, 0xA4, 0x42, 0xDA, 0xA6, -+ 0x42, 0xDA, 0xA9, 0x42, 0xDA, 0xAD, 0x42, 0xDA, -+ 0xAF, 0x42, 0xDA, 0xB1, 0x42, 0xDA, 0xB3, 0x42, -+ 0xDA, 0xBA, 0x42, 0xDA, 0xBB, 0x42, 0xDA, 0xBE, -+ 0x42, 0xDB, 0x81, 0x42, 0xDB, 0x85, 0x42, 0xDB, -+ 0x86, 0x42, 0xDB, 0x87, 0x42, 0xDB, 0x88, 0x42, -+ 0xDB, 0x89, 0x42, 0xDB, 0x8B, 0x42, 0xDB, 0x8C, -+ 0x42, 0xDB, 0x90, 0x42, 0xDB, 0x92, 0x43, 0xE0, -+ // Bytes 400 - 43f -+ 0xBC, 0x8B, 0x43, 0xE1, 0x83, 0x9C, 0x43, 0xE1, -+ 0x84, 0x80, 0x43, 0xE1, 0x84, 0x81, 0x43, 0xE1, -+ 0x84, 0x82, 0x43, 0xE1, 0x84, 0x83, 0x43, 0xE1, -+ 0x84, 0x84, 0x43, 0xE1, 0x84, 0x85, 0x43, 0xE1, -+ 0x84, 0x86, 0x43, 0xE1, 0x84, 0x87, 0x43, 0xE1, -+ 0x84, 0x88, 0x43, 0xE1, 0x84, 0x89, 0x43, 0xE1, -+ 0x84, 0x8A, 0x43, 0xE1, 0x84, 0x8B, 0x43, 0xE1, -+ 0x84, 0x8C, 0x43, 0xE1, 0x84, 0x8D, 0x43, 0xE1, -+ // Bytes 440 - 47f -+ 0x84, 0x8E, 0x43, 0xE1, 0x84, 0x8F, 0x43, 0xE1, -+ 0x84, 0x90, 0x43, 0xE1, 0x84, 0x91, 0x43, 0xE1, -+ 0x84, 0x92, 0x43, 0xE1, 0x84, 0x94, 0x43, 0xE1, -+ 0x84, 0x95, 0x43, 0xE1, 0x84, 0x9A, 0x43, 0xE1, -+ 0x84, 0x9C, 0x43, 0xE1, 0x84, 0x9D, 0x43, 0xE1, -+ 0x84, 0x9E, 0x43, 0xE1, 0x84, 0xA0, 0x43, 0xE1, -+ 0x84, 0xA1, 0x43, 0xE1, 0x84, 0xA2, 0x43, 0xE1, -+ 0x84, 0xA3, 0x43, 0xE1, 0x84, 0xA7, 0x43, 0xE1, -+ // Bytes 480 - 4bf -+ 0x84, 0xA9, 0x43, 0xE1, 0x84, 0xAB, 0x43, 0xE1, -+ 0x84, 0xAC, 0x43, 0xE1, 0x84, 0xAD, 0x43, 0xE1, -+ 0x84, 0xAE, 0x43, 0xE1, 0x84, 0xAF, 0x43, 0xE1, -+ 0x84, 0xB2, 0x43, 0xE1, 0x84, 0xB6, 0x43, 0xE1, -+ 0x85, 0x80, 0x43, 0xE1, 0x85, 0x87, 0x43, 0xE1, -+ 0x85, 0x8C, 0x43, 0xE1, 0x85, 0x97, 0x43, 0xE1, -+ 0x85, 0x98, 0x43, 0xE1, 0x85, 0x99, 0x43, 0xE1, -+ 0x85, 0xA0, 0x43, 0xE1, 0x86, 0x84, 0x43, 0xE1, -+ // Bytes 4c0 - 4ff -+ 0x86, 0x85, 0x43, 0xE1, 0x86, 0x88, 0x43, 0xE1, -+ 0x86, 0x91, 0x43, 0xE1, 0x86, 0x92, 0x43, 0xE1, -+ 0x86, 0x94, 0x43, 0xE1, 0x86, 0x9E, 0x43, 0xE1, -+ 0x86, 0xA1, 0x43, 0xE1, 0x87, 0x87, 0x43, 0xE1, -+ 0x87, 0x88, 0x43, 0xE1, 0x87, 0x8C, 0x43, 0xE1, -+ 0x87, 0x8E, 0x43, 0xE1, 0x87, 0x93, 0x43, 0xE1, -+ 0x87, 0x97, 0x43, 0xE1, 0x87, 0x99, 0x43, 0xE1, -+ 0x87, 0x9D, 0x43, 0xE1, 0x87, 0x9F, 0x43, 0xE1, -+ // Bytes 500 - 53f -+ 0x87, 0xB1, 0x43, 0xE1, 0x87, 0xB2, 0x43, 0xE1, -+ 0xB4, 0x82, 0x43, 0xE1, 0xB4, 0x96, 0x43, 0xE1, -+ 0xB4, 0x97, 0x43, 0xE1, 0xB4, 0x9C, 0x43, 0xE1, -+ 0xB4, 0x9D, 0x43, 0xE1, 0xB4, 0xA5, 0x43, 0xE1, -+ 0xB5, 0xBB, 0x43, 0xE1, 0xB6, 0x85, 0x43, 0xE1, -+ 0xB6, 0x91, 0x43, 0xE2, 0x80, 0x82, 0x43, 0xE2, -+ 0x80, 0x83, 0x43, 0xE2, 0x80, 0x90, 0x43, 0xE2, -+ 0x80, 0x93, 0x43, 0xE2, 0x80, 0x94, 0x43, 0xE2, -+ // Bytes 540 - 57f -+ 0x82, 0xA9, 0x43, 0xE2, 0x86, 0x90, 0x43, 0xE2, -+ 0x86, 0x91, 0x43, 0xE2, 0x86, 0x92, 0x43, 0xE2, -+ 0x86, 0x93, 0x43, 0xE2, 0x88, 0x82, 0x43, 0xE2, -+ 0x88, 0x87, 0x43, 0xE2, 0x88, 0x91, 0x43, 0xE2, -+ 0x88, 0x92, 0x43, 0xE2, 0x94, 0x82, 0x43, 0xE2, -+ 0x96, 0xA0, 0x43, 0xE2, 0x97, 0x8B, 0x43, 0xE2, -+ 0xA6, 0x85, 0x43, 0xE2, 0xA6, 0x86, 0x43, 0xE2, -+ 0xB1, 0xB1, 0x43, 0xE2, 0xB5, 0xA1, 0x43, 0xE3, -+ // Bytes 580 - 5bf -+ 0x80, 0x81, 0x43, 0xE3, 0x80, 0x82, 0x43, 0xE3, -+ 0x80, 0x88, 0x43, 0xE3, 0x80, 0x89, 0x43, 0xE3, -+ 0x80, 0x8A, 0x43, 0xE3, 0x80, 0x8B, 0x43, 0xE3, -+ 0x80, 0x8C, 0x43, 0xE3, 0x80, 0x8D, 0x43, 0xE3, -+ 0x80, 0x8E, 0x43, 0xE3, 0x80, 0x8F, 0x43, 0xE3, -+ 0x80, 0x90, 0x43, 0xE3, 0x80, 0x91, 0x43, 0xE3, -+ 0x80, 0x92, 0x43, 0xE3, 0x80, 0x94, 0x43, 0xE3, -+ 0x80, 0x95, 0x43, 0xE3, 0x80, 0x96, 0x43, 0xE3, -+ // Bytes 5c0 - 5ff -+ 0x80, 0x97, 0x43, 0xE3, 0x82, 0xA1, 0x43, 0xE3, -+ 0x82, 0xA2, 0x43, 0xE3, 0x82, 0xA3, 0x43, 0xE3, -+ 0x82, 0xA4, 0x43, 0xE3, 0x82, 0xA5, 0x43, 0xE3, -+ 0x82, 0xA6, 0x43, 0xE3, 0x82, 0xA7, 0x43, 0xE3, -+ 0x82, 0xA8, 0x43, 0xE3, 0x82, 0xA9, 0x43, 0xE3, -+ 0x82, 0xAA, 0x43, 0xE3, 0x82, 0xAB, 0x43, 0xE3, -+ 0x82, 0xAD, 0x43, 0xE3, 0x82, 0xAF, 0x43, 0xE3, -+ 0x82, 0xB1, 0x43, 0xE3, 0x82, 0xB3, 0x43, 0xE3, -+ // Bytes 600 - 63f -+ 0x82, 0xB5, 0x43, 0xE3, 0x82, 0xB7, 0x43, 0xE3, -+ 0x82, 0xB9, 0x43, 0xE3, 0x82, 0xBB, 0x43, 0xE3, -+ 0x82, 0xBD, 0x43, 0xE3, 0x82, 0xBF, 0x43, 0xE3, -+ 0x83, 0x81, 0x43, 0xE3, 0x83, 0x83, 0x43, 0xE3, -+ 0x83, 0x84, 0x43, 0xE3, 0x83, 0x86, 0x43, 0xE3, -+ 0x83, 0x88, 0x43, 0xE3, 0x83, 0x8A, 0x43, 0xE3, -+ 0x83, 0x8B, 0x43, 0xE3, 0x83, 0x8C, 0x43, 0xE3, -+ 0x83, 0x8D, 0x43, 0xE3, 0x83, 0x8E, 0x43, 0xE3, -+ // Bytes 640 - 67f -+ 0x83, 0x8F, 0x43, 0xE3, 0x83, 0x92, 0x43, 0xE3, -+ 0x83, 0x95, 0x43, 0xE3, 0x83, 0x98, 0x43, 0xE3, -+ 0x83, 0x9B, 0x43, 0xE3, 0x83, 0x9E, 0x43, 0xE3, -+ 0x83, 0x9F, 0x43, 0xE3, 0x83, 0xA0, 0x43, 0xE3, -+ 0x83, 0xA1, 0x43, 0xE3, 0x83, 0xA2, 0x43, 0xE3, -+ 0x83, 0xA3, 0x43, 0xE3, 0x83, 0xA4, 0x43, 0xE3, -+ 0x83, 0xA5, 0x43, 0xE3, 0x83, 0xA6, 0x43, 0xE3, -+ 0x83, 0xA7, 0x43, 0xE3, 0x83, 0xA8, 0x43, 0xE3, -+ // Bytes 680 - 6bf -+ 0x83, 0xA9, 0x43, 0xE3, 0x83, 0xAA, 0x43, 0xE3, -+ 0x83, 0xAB, 0x43, 0xE3, 0x83, 0xAC, 0x43, 0xE3, -+ 0x83, 0xAD, 0x43, 0xE3, 0x83, 0xAF, 0x43, 0xE3, -+ 0x83, 0xB0, 0x43, 0xE3, 0x83, 0xB1, 0x43, 0xE3, -+ 0x83, 0xB2, 0x43, 0xE3, 0x83, 0xB3, 0x43, 0xE3, -+ 0x83, 0xBB, 0x43, 0xE3, 0x83, 0xBC, 0x43, 0xE3, -+ 0x92, 0x9E, 0x43, 0xE3, 0x92, 0xB9, 0x43, 0xE3, -+ 0x92, 0xBB, 0x43, 0xE3, 0x93, 0x9F, 0x43, 0xE3, -+ // Bytes 6c0 - 6ff -+ 0x94, 0x95, 0x43, 0xE3, 0x9B, 0xAE, 0x43, 0xE3, -+ 0x9B, 0xBC, 0x43, 0xE3, 0x9E, 0x81, 0x43, 0xE3, -+ 0xA0, 0xAF, 0x43, 0xE3, 0xA1, 0xA2, 0x43, 0xE3, -+ 0xA1, 0xBC, 0x43, 0xE3, 0xA3, 0x87, 0x43, 0xE3, -+ 0xA3, 0xA3, 0x43, 0xE3, 0xA4, 0x9C, 0x43, 0xE3, -+ 0xA4, 0xBA, 0x43, 0xE3, 0xA8, 0xAE, 0x43, 0xE3, -+ 0xA9, 0xAC, 0x43, 0xE3, 0xAB, 0xA4, 0x43, 0xE3, -+ 0xAC, 0x88, 0x43, 0xE3, 0xAC, 0x99, 0x43, 0xE3, -+ // Bytes 700 - 73f -+ 0xAD, 0x89, 0x43, 0xE3, 0xAE, 0x9D, 0x43, 0xE3, -+ 0xB0, 0x98, 0x43, 0xE3, 0xB1, 0x8E, 0x43, 0xE3, -+ 0xB4, 0xB3, 0x43, 0xE3, 0xB6, 0x96, 0x43, 0xE3, -+ 0xBA, 0xAC, 0x43, 0xE3, 0xBA, 0xB8, 0x43, 0xE3, -+ 0xBC, 0x9B, 0x43, 0xE3, 0xBF, 0xBC, 0x43, 0xE4, -+ 0x80, 0x88, 0x43, 0xE4, 0x80, 0x98, 0x43, 0xE4, -+ 0x80, 0xB9, 0x43, 0xE4, 0x81, 0x86, 0x43, 0xE4, -+ 0x82, 0x96, 0x43, 0xE4, 0x83, 0xA3, 0x43, 0xE4, -+ // Bytes 740 - 77f -+ 0x84, 0xAF, 0x43, 0xE4, 0x88, 0x82, 0x43, 0xE4, -+ 0x88, 0xA7, 0x43, 0xE4, 0x8A, 0xA0, 0x43, 0xE4, -+ 0x8C, 0x81, 0x43, 0xE4, 0x8C, 0xB4, 0x43, 0xE4, -+ 0x8D, 0x99, 0x43, 0xE4, 0x8F, 0x95, 0x43, 0xE4, -+ 0x8F, 0x99, 0x43, 0xE4, 0x90, 0x8B, 0x43, 0xE4, -+ 0x91, 0xAB, 0x43, 0xE4, 0x94, 0xAB, 0x43, 0xE4, -+ 0x95, 0x9D, 0x43, 0xE4, 0x95, 0xA1, 0x43, 0xE4, -+ 0x95, 0xAB, 0x43, 0xE4, 0x97, 0x97, 0x43, 0xE4, -+ // Bytes 780 - 7bf -+ 0x97, 0xB9, 0x43, 0xE4, 0x98, 0xB5, 0x43, 0xE4, -+ 0x9A, 0xBE, 0x43, 0xE4, 0x9B, 0x87, 0x43, 0xE4, -+ 0xA6, 0x95, 0x43, 0xE4, 0xA7, 0xA6, 0x43, 0xE4, -+ 0xA9, 0xAE, 0x43, 0xE4, 0xA9, 0xB6, 0x43, 0xE4, -+ 0xAA, 0xB2, 0x43, 0xE4, 0xAC, 0xB3, 0x43, 0xE4, -+ 0xAF, 0x8E, 0x43, 0xE4, 0xB3, 0x8E, 0x43, 0xE4, -+ 0xB3, 0xAD, 0x43, 0xE4, 0xB3, 0xB8, 0x43, 0xE4, -+ 0xB5, 0x96, 0x43, 0xE4, 0xB8, 0x80, 0x43, 0xE4, -+ // Bytes 7c0 - 7ff -+ 0xB8, 0x81, 0x43, 0xE4, 0xB8, 0x83, 0x43, 0xE4, -+ 0xB8, 0x89, 0x43, 0xE4, 0xB8, 0x8A, 0x43, 0xE4, -+ 0xB8, 0x8B, 0x43, 0xE4, 0xB8, 0x8D, 0x43, 0xE4, -+ 0xB8, 0x99, 0x43, 0xE4, 0xB8, 0xA6, 0x43, 0xE4, -+ 0xB8, 0xA8, 0x43, 0xE4, 0xB8, 0xAD, 0x43, 0xE4, -+ 0xB8, 0xB2, 0x43, 0xE4, 0xB8, 0xB6, 0x43, 0xE4, -+ 0xB8, 0xB8, 0x43, 0xE4, 0xB8, 0xB9, 0x43, 0xE4, -+ 0xB8, 0xBD, 0x43, 0xE4, 0xB8, 0xBF, 0x43, 0xE4, -+ // Bytes 800 - 83f -+ 0xB9, 0x81, 0x43, 0xE4, 0xB9, 0x99, 0x43, 0xE4, -+ 0xB9, 0x9D, 0x43, 0xE4, 0xBA, 0x82, 0x43, 0xE4, -+ 0xBA, 0x85, 0x43, 0xE4, 0xBA, 0x86, 0x43, 0xE4, -+ 0xBA, 0x8C, 0x43, 0xE4, 0xBA, 0x94, 0x43, 0xE4, -+ 0xBA, 0xA0, 0x43, 0xE4, 0xBA, 0xA4, 0x43, 0xE4, -+ 0xBA, 0xAE, 0x43, 0xE4, 0xBA, 0xBA, 0x43, 0xE4, -+ 0xBB, 0x80, 0x43, 0xE4, 0xBB, 0x8C, 0x43, 0xE4, -+ 0xBB, 0xA4, 0x43, 0xE4, 0xBC, 0x81, 0x43, 0xE4, -+ // Bytes 840 - 87f -+ 0xBC, 0x91, 0x43, 0xE4, 0xBD, 0xA0, 0x43, 0xE4, -+ 0xBE, 0x80, 0x43, 0xE4, 0xBE, 0x86, 0x43, 0xE4, -+ 0xBE, 0x8B, 0x43, 0xE4, 0xBE, 0xAE, 0x43, 0xE4, -+ 0xBE, 0xBB, 0x43, 0xE4, 0xBE, 0xBF, 0x43, 0xE5, -+ 0x80, 0x82, 0x43, 0xE5, 0x80, 0xAB, 0x43, 0xE5, -+ 0x81, 0xBA, 0x43, 0xE5, 0x82, 0x99, 0x43, 0xE5, -+ 0x83, 0x8F, 0x43, 0xE5, 0x83, 0x9A, 0x43, 0xE5, -+ 0x83, 0xA7, 0x43, 0xE5, 0x84, 0xAA, 0x43, 0xE5, -+ // Bytes 880 - 8bf -+ 0x84, 0xBF, 0x43, 0xE5, 0x85, 0x80, 0x43, 0xE5, -+ 0x85, 0x85, 0x43, 0xE5, 0x85, 0x8D, 0x43, 0xE5, -+ 0x85, 0x94, 0x43, 0xE5, 0x85, 0xA4, 0x43, 0xE5, -+ 0x85, 0xA5, 0x43, 0xE5, 0x85, 0xA7, 0x43, 0xE5, -+ 0x85, 0xA8, 0x43, 0xE5, 0x85, 0xA9, 0x43, 0xE5, -+ 0x85, 0xAB, 0x43, 0xE5, 0x85, 0xAD, 0x43, 0xE5, -+ 0x85, 0xB7, 0x43, 0xE5, 0x86, 0x80, 0x43, 0xE5, -+ 0x86, 0x82, 0x43, 0xE5, 0x86, 0x8D, 0x43, 0xE5, -+ // Bytes 8c0 - 8ff -+ 0x86, 0x92, 0x43, 0xE5, 0x86, 0x95, 0x43, 0xE5, -+ 0x86, 0x96, 0x43, 0xE5, 0x86, 0x97, 0x43, 0xE5, -+ 0x86, 0x99, 0x43, 0xE5, 0x86, 0xA4, 0x43, 0xE5, -+ 0x86, 0xAB, 0x43, 0xE5, 0x86, 0xAC, 0x43, 0xE5, -+ 0x86, 0xB5, 0x43, 0xE5, 0x86, 0xB7, 0x43, 0xE5, -+ 0x87, 0x89, 0x43, 0xE5, 0x87, 0x8C, 0x43, 0xE5, -+ 0x87, 0x9C, 0x43, 0xE5, 0x87, 0x9E, 0x43, 0xE5, -+ 0x87, 0xA0, 0x43, 0xE5, 0x87, 0xB5, 0x43, 0xE5, -+ // Bytes 900 - 93f -+ 0x88, 0x80, 0x43, 0xE5, 0x88, 0x83, 0x43, 0xE5, -+ 0x88, 0x87, 0x43, 0xE5, 0x88, 0x97, 0x43, 0xE5, -+ 0x88, 0x9D, 0x43, 0xE5, 0x88, 0xA9, 0x43, 0xE5, -+ 0x88, 0xBA, 0x43, 0xE5, 0x88, 0xBB, 0x43, 0xE5, -+ 0x89, 0x86, 0x43, 0xE5, 0x89, 0x8D, 0x43, 0xE5, -+ 0x89, 0xB2, 0x43, 0xE5, 0x89, 0xB7, 0x43, 0xE5, -+ 0x8A, 0x89, 0x43, 0xE5, 0x8A, 0x9B, 0x43, 0xE5, -+ 0x8A, 0xA3, 0x43, 0xE5, 0x8A, 0xB3, 0x43, 0xE5, -+ // Bytes 940 - 97f -+ 0x8A, 0xB4, 0x43, 0xE5, 0x8B, 0x87, 0x43, 0xE5, -+ 0x8B, 0x89, 0x43, 0xE5, 0x8B, 0x92, 0x43, 0xE5, -+ 0x8B, 0x9E, 0x43, 0xE5, 0x8B, 0xA4, 0x43, 0xE5, -+ 0x8B, 0xB5, 0x43, 0xE5, 0x8B, 0xB9, 0x43, 0xE5, -+ 0x8B, 0xBA, 0x43, 0xE5, 0x8C, 0x85, 0x43, 0xE5, -+ 0x8C, 0x86, 0x43, 0xE5, 0x8C, 0x95, 0x43, 0xE5, -+ 0x8C, 0x97, 0x43, 0xE5, 0x8C, 0x9A, 0x43, 0xE5, -+ 0x8C, 0xB8, 0x43, 0xE5, 0x8C, 0xBB, 0x43, 0xE5, -+ // Bytes 980 - 9bf -+ 0x8C, 0xBF, 0x43, 0xE5, 0x8D, 0x81, 0x43, 0xE5, -+ 0x8D, 0x84, 0x43, 0xE5, 0x8D, 0x85, 0x43, 0xE5, -+ 0x8D, 0x89, 0x43, 0xE5, 0x8D, 0x91, 0x43, 0xE5, -+ 0x8D, 0x94, 0x43, 0xE5, 0x8D, 0x9A, 0x43, 0xE5, -+ 0x8D, 0x9C, 0x43, 0xE5, 0x8D, 0xA9, 0x43, 0xE5, -+ 0x8D, 0xB0, 0x43, 0xE5, 0x8D, 0xB3, 0x43, 0xE5, -+ 0x8D, 0xB5, 0x43, 0xE5, 0x8D, 0xBD, 0x43, 0xE5, -+ 0x8D, 0xBF, 0x43, 0xE5, 0x8E, 0x82, 0x43, 0xE5, -+ // Bytes 9c0 - 9ff -+ 0x8E, 0xB6, 0x43, 0xE5, 0x8F, 0x83, 0x43, 0xE5, -+ 0x8F, 0x88, 0x43, 0xE5, 0x8F, 0x8A, 0x43, 0xE5, -+ 0x8F, 0x8C, 0x43, 0xE5, 0x8F, 0x9F, 0x43, 0xE5, -+ 0x8F, 0xA3, 0x43, 0xE5, 0x8F, 0xA5, 0x43, 0xE5, -+ 0x8F, 0xAB, 0x43, 0xE5, 0x8F, 0xAF, 0x43, 0xE5, -+ 0x8F, 0xB1, 0x43, 0xE5, 0x8F, 0xB3, 0x43, 0xE5, -+ 0x90, 0x86, 0x43, 0xE5, 0x90, 0x88, 0x43, 0xE5, -+ 0x90, 0x8D, 0x43, 0xE5, 0x90, 0x8F, 0x43, 0xE5, -+ // Bytes a00 - a3f -+ 0x90, 0x9D, 0x43, 0xE5, 0x90, 0xB8, 0x43, 0xE5, -+ 0x90, 0xB9, 0x43, 0xE5, 0x91, 0x82, 0x43, 0xE5, -+ 0x91, 0x88, 0x43, 0xE5, 0x91, 0xA8, 0x43, 0xE5, -+ 0x92, 0x9E, 0x43, 0xE5, 0x92, 0xA2, 0x43, 0xE5, -+ 0x92, 0xBD, 0x43, 0xE5, 0x93, 0xB6, 0x43, 0xE5, -+ 0x94, 0x90, 0x43, 0xE5, 0x95, 0x8F, 0x43, 0xE5, -+ 0x95, 0x93, 0x43, 0xE5, 0x95, 0x95, 0x43, 0xE5, -+ 0x95, 0xA3, 0x43, 0xE5, 0x96, 0x84, 0x43, 0xE5, -+ // Bytes a40 - a7f -+ 0x96, 0x87, 0x43, 0xE5, 0x96, 0x99, 0x43, 0xE5, -+ 0x96, 0x9D, 0x43, 0xE5, 0x96, 0xAB, 0x43, 0xE5, -+ 0x96, 0xB3, 0x43, 0xE5, 0x96, 0xB6, 0x43, 0xE5, -+ 0x97, 0x80, 0x43, 0xE5, 0x97, 0x82, 0x43, 0xE5, -+ 0x97, 0xA2, 0x43, 0xE5, 0x98, 0x86, 0x43, 0xE5, -+ 0x99, 0x91, 0x43, 0xE5, 0x99, 0xA8, 0x43, 0xE5, -+ 0x99, 0xB4, 0x43, 0xE5, 0x9B, 0x97, 0x43, 0xE5, -+ 0x9B, 0x9B, 0x43, 0xE5, 0x9B, 0xB9, 0x43, 0xE5, -+ // Bytes a80 - abf -+ 0x9C, 0x96, 0x43, 0xE5, 0x9C, 0x97, 0x43, 0xE5, -+ 0x9C, 0x9F, 0x43, 0xE5, 0x9C, 0xB0, 0x43, 0xE5, -+ 0x9E, 0x8B, 0x43, 0xE5, 0x9F, 0x8E, 0x43, 0xE5, -+ 0x9F, 0xB4, 0x43, 0xE5, 0xA0, 0x8D, 0x43, 0xE5, -+ 0xA0, 0xB1, 0x43, 0xE5, 0xA0, 0xB2, 0x43, 0xE5, -+ 0xA1, 0x80, 0x43, 0xE5, 0xA1, 0x9A, 0x43, 0xE5, -+ 0xA1, 0x9E, 0x43, 0xE5, 0xA2, 0xA8, 0x43, 0xE5, -+ 0xA2, 0xAC, 0x43, 0xE5, 0xA2, 0xB3, 0x43, 0xE5, -+ // Bytes ac0 - aff -+ 0xA3, 0x98, 0x43, 0xE5, 0xA3, 0x9F, 0x43, 0xE5, -+ 0xA3, 0xAB, 0x43, 0xE5, 0xA3, 0xAE, 0x43, 0xE5, -+ 0xA3, 0xB0, 0x43, 0xE5, 0xA3, 0xB2, 0x43, 0xE5, -+ 0xA3, 0xB7, 0x43, 0xE5, 0xA4, 0x82, 0x43, 0xE5, -+ 0xA4, 0x86, 0x43, 0xE5, 0xA4, 0x8A, 0x43, 0xE5, -+ 0xA4, 0x95, 0x43, 0xE5, 0xA4, 0x9A, 0x43, 0xE5, -+ 0xA4, 0x9C, 0x43, 0xE5, 0xA4, 0xA2, 0x43, 0xE5, -+ 0xA4, 0xA7, 0x43, 0xE5, 0xA4, 0xA9, 0x43, 0xE5, -+ // Bytes b00 - b3f -+ 0xA5, 0x84, 0x43, 0xE5, 0xA5, 0x88, 0x43, 0xE5, -+ 0xA5, 0x91, 0x43, 0xE5, 0xA5, 0x94, 0x43, 0xE5, -+ 0xA5, 0xA2, 0x43, 0xE5, 0xA5, 0xB3, 0x43, 0xE5, -+ 0xA7, 0x98, 0x43, 0xE5, 0xA7, 0xAC, 0x43, 0xE5, -+ 0xA8, 0x9B, 0x43, 0xE5, 0xA8, 0xA7, 0x43, 0xE5, -+ 0xA9, 0xA2, 0x43, 0xE5, 0xA9, 0xA6, 0x43, 0xE5, -+ 0xAA, 0xB5, 0x43, 0xE5, 0xAC, 0x88, 0x43, 0xE5, -+ 0xAC, 0xA8, 0x43, 0xE5, 0xAC, 0xBE, 0x43, 0xE5, -+ // Bytes b40 - b7f -+ 0xAD, 0x90, 0x43, 0xE5, 0xAD, 0x97, 0x43, 0xE5, -+ 0xAD, 0xA6, 0x43, 0xE5, 0xAE, 0x80, 0x43, 0xE5, -+ 0xAE, 0x85, 0x43, 0xE5, 0xAE, 0x97, 0x43, 0xE5, -+ 0xAF, 0x83, 0x43, 0xE5, 0xAF, 0x98, 0x43, 0xE5, -+ 0xAF, 0xA7, 0x43, 0xE5, 0xAF, 0xAE, 0x43, 0xE5, -+ 0xAF, 0xB3, 0x43, 0xE5, 0xAF, 0xB8, 0x43, 0xE5, -+ 0xAF, 0xBF, 0x43, 0xE5, 0xB0, 0x86, 0x43, 0xE5, -+ 0xB0, 0x8F, 0x43, 0xE5, 0xB0, 0xA2, 0x43, 0xE5, -+ // Bytes b80 - bbf -+ 0xB0, 0xB8, 0x43, 0xE5, 0xB0, 0xBF, 0x43, 0xE5, -+ 0xB1, 0xA0, 0x43, 0xE5, 0xB1, 0xA2, 0x43, 0xE5, -+ 0xB1, 0xA4, 0x43, 0xE5, 0xB1, 0xA5, 0x43, 0xE5, -+ 0xB1, 0xAE, 0x43, 0xE5, 0xB1, 0xB1, 0x43, 0xE5, -+ 0xB2, 0x8D, 0x43, 0xE5, 0xB3, 0x80, 0x43, 0xE5, -+ 0xB4, 0x99, 0x43, 0xE5, 0xB5, 0x83, 0x43, 0xE5, -+ 0xB5, 0x90, 0x43, 0xE5, 0xB5, 0xAB, 0x43, 0xE5, -+ 0xB5, 0xAE, 0x43, 0xE5, 0xB5, 0xBC, 0x43, 0xE5, -+ // Bytes bc0 - bff -+ 0xB6, 0xB2, 0x43, 0xE5, 0xB6, 0xBA, 0x43, 0xE5, -+ 0xB7, 0x9B, 0x43, 0xE5, 0xB7, 0xA1, 0x43, 0xE5, -+ 0xB7, 0xA2, 0x43, 0xE5, 0xB7, 0xA5, 0x43, 0xE5, -+ 0xB7, 0xA6, 0x43, 0xE5, 0xB7, 0xB1, 0x43, 0xE5, -+ 0xB7, 0xBD, 0x43, 0xE5, 0xB7, 0xBE, 0x43, 0xE5, -+ 0xB8, 0xA8, 0x43, 0xE5, 0xB8, 0xBD, 0x43, 0xE5, -+ 0xB9, 0xA9, 0x43, 0xE5, 0xB9, 0xB2, 0x43, 0xE5, -+ 0xB9, 0xB4, 0x43, 0xE5, 0xB9, 0xBA, 0x43, 0xE5, -+ // Bytes c00 - c3f -+ 0xB9, 0xBC, 0x43, 0xE5, 0xB9, 0xBF, 0x43, 0xE5, -+ 0xBA, 0xA6, 0x43, 0xE5, 0xBA, 0xB0, 0x43, 0xE5, -+ 0xBA, 0xB3, 0x43, 0xE5, 0xBA, 0xB6, 0x43, 0xE5, -+ 0xBB, 0x89, 0x43, 0xE5, 0xBB, 0x8A, 0x43, 0xE5, -+ 0xBB, 0x92, 0x43, 0xE5, 0xBB, 0x93, 0x43, 0xE5, -+ 0xBB, 0x99, 0x43, 0xE5, 0xBB, 0xAC, 0x43, 0xE5, -+ 0xBB, 0xB4, 0x43, 0xE5, 0xBB, 0xBE, 0x43, 0xE5, -+ 0xBC, 0x84, 0x43, 0xE5, 0xBC, 0x8B, 0x43, 0xE5, -+ // Bytes c40 - c7f -+ 0xBC, 0x93, 0x43, 0xE5, 0xBC, 0xA2, 0x43, 0xE5, -+ 0xBD, 0x90, 0x43, 0xE5, 0xBD, 0x93, 0x43, 0xE5, -+ 0xBD, 0xA1, 0x43, 0xE5, 0xBD, 0xA2, 0x43, 0xE5, -+ 0xBD, 0xA9, 0x43, 0xE5, 0xBD, 0xAB, 0x43, 0xE5, -+ 0xBD, 0xB3, 0x43, 0xE5, 0xBE, 0x8B, 0x43, 0xE5, -+ 0xBE, 0x8C, 0x43, 0xE5, 0xBE, 0x97, 0x43, 0xE5, -+ 0xBE, 0x9A, 0x43, 0xE5, 0xBE, 0xA9, 0x43, 0xE5, -+ 0xBE, 0xAD, 0x43, 0xE5, 0xBF, 0x83, 0x43, 0xE5, -+ // Bytes c80 - cbf -+ 0xBF, 0x8D, 0x43, 0xE5, 0xBF, 0x97, 0x43, 0xE5, -+ 0xBF, 0xB5, 0x43, 0xE5, 0xBF, 0xB9, 0x43, 0xE6, -+ 0x80, 0x92, 0x43, 0xE6, 0x80, 0x9C, 0x43, 0xE6, -+ 0x81, 0xB5, 0x43, 0xE6, 0x82, 0x81, 0x43, 0xE6, -+ 0x82, 0x94, 0x43, 0xE6, 0x83, 0x87, 0x43, 0xE6, -+ 0x83, 0x98, 0x43, 0xE6, 0x83, 0xA1, 0x43, 0xE6, -+ 0x84, 0x88, 0x43, 0xE6, 0x85, 0x84, 0x43, 0xE6, -+ 0x85, 0x88, 0x43, 0xE6, 0x85, 0x8C, 0x43, 0xE6, -+ // Bytes cc0 - cff -+ 0x85, 0x8E, 0x43, 0xE6, 0x85, 0xA0, 0x43, 0xE6, -+ 0x85, 0xA8, 0x43, 0xE6, 0x85, 0xBA, 0x43, 0xE6, -+ 0x86, 0x8E, 0x43, 0xE6, 0x86, 0x90, 0x43, 0xE6, -+ 0x86, 0xA4, 0x43, 0xE6, 0x86, 0xAF, 0x43, 0xE6, -+ 0x86, 0xB2, 0x43, 0xE6, 0x87, 0x9E, 0x43, 0xE6, -+ 0x87, 0xB2, 0x43, 0xE6, 0x87, 0xB6, 0x43, 0xE6, -+ 0x88, 0x80, 0x43, 0xE6, 0x88, 0x88, 0x43, 0xE6, -+ 0x88, 0x90, 0x43, 0xE6, 0x88, 0x9B, 0x43, 0xE6, -+ // Bytes d00 - d3f -+ 0x88, 0xAE, 0x43, 0xE6, 0x88, 0xB4, 0x43, 0xE6, -+ 0x88, 0xB6, 0x43, 0xE6, 0x89, 0x8B, 0x43, 0xE6, -+ 0x89, 0x93, 0x43, 0xE6, 0x89, 0x9D, 0x43, 0xE6, -+ 0x8A, 0x95, 0x43, 0xE6, 0x8A, 0xB1, 0x43, 0xE6, -+ 0x8B, 0x89, 0x43, 0xE6, 0x8B, 0x8F, 0x43, 0xE6, -+ 0x8B, 0x93, 0x43, 0xE6, 0x8B, 0x94, 0x43, 0xE6, -+ 0x8B, 0xBC, 0x43, 0xE6, 0x8B, 0xBE, 0x43, 0xE6, -+ 0x8C, 0x87, 0x43, 0xE6, 0x8C, 0xBD, 0x43, 0xE6, -+ // Bytes d40 - d7f -+ 0x8D, 0x90, 0x43, 0xE6, 0x8D, 0x95, 0x43, 0xE6, -+ 0x8D, 0xA8, 0x43, 0xE6, 0x8D, 0xBB, 0x43, 0xE6, -+ 0x8E, 0x83, 0x43, 0xE6, 0x8E, 0xA0, 0x43, 0xE6, -+ 0x8E, 0xA9, 0x43, 0xE6, 0x8F, 0x84, 0x43, 0xE6, -+ 0x8F, 0x85, 0x43, 0xE6, 0x8F, 0xA4, 0x43, 0xE6, -+ 0x90, 0x9C, 0x43, 0xE6, 0x90, 0xA2, 0x43, 0xE6, -+ 0x91, 0x92, 0x43, 0xE6, 0x91, 0xA9, 0x43, 0xE6, -+ 0x91, 0xB7, 0x43, 0xE6, 0x91, 0xBE, 0x43, 0xE6, -+ // Bytes d80 - dbf -+ 0x92, 0x9A, 0x43, 0xE6, 0x92, 0x9D, 0x43, 0xE6, -+ 0x93, 0x84, 0x43, 0xE6, 0x94, 0xAF, 0x43, 0xE6, -+ 0x94, 0xB4, 0x43, 0xE6, 0x95, 0x8F, 0x43, 0xE6, -+ 0x95, 0x96, 0x43, 0xE6, 0x95, 0xAC, 0x43, 0xE6, -+ 0x95, 0xB8, 0x43, 0xE6, 0x96, 0x87, 0x43, 0xE6, -+ 0x96, 0x97, 0x43, 0xE6, 0x96, 0x99, 0x43, 0xE6, -+ 0x96, 0xA4, 0x43, 0xE6, 0x96, 0xB0, 0x43, 0xE6, -+ 0x96, 0xB9, 0x43, 0xE6, 0x97, 0x85, 0x43, 0xE6, -+ // Bytes dc0 - dff -+ 0x97, 0xA0, 0x43, 0xE6, 0x97, 0xA2, 0x43, 0xE6, -+ 0x97, 0xA3, 0x43, 0xE6, 0x97, 0xA5, 0x43, 0xE6, -+ 0x98, 0x93, 0x43, 0xE6, 0x98, 0xA0, 0x43, 0xE6, -+ 0x99, 0x89, 0x43, 0xE6, 0x99, 0xB4, 0x43, 0xE6, -+ 0x9A, 0x88, 0x43, 0xE6, 0x9A, 0x91, 0x43, 0xE6, -+ 0x9A, 0x9C, 0x43, 0xE6, 0x9A, 0xB4, 0x43, 0xE6, -+ 0x9B, 0x86, 0x43, 0xE6, 0x9B, 0xB0, 0x43, 0xE6, -+ 0x9B, 0xB4, 0x43, 0xE6, 0x9B, 0xB8, 0x43, 0xE6, -+ // Bytes e00 - e3f -+ 0x9C, 0x80, 0x43, 0xE6, 0x9C, 0x88, 0x43, 0xE6, -+ 0x9C, 0x89, 0x43, 0xE6, 0x9C, 0x97, 0x43, 0xE6, -+ 0x9C, 0x9B, 0x43, 0xE6, 0x9C, 0xA1, 0x43, 0xE6, -+ 0x9C, 0xA8, 0x43, 0xE6, 0x9D, 0x8E, 0x43, 0xE6, -+ 0x9D, 0x93, 0x43, 0xE6, 0x9D, 0x96, 0x43, 0xE6, -+ 0x9D, 0x9E, 0x43, 0xE6, 0x9D, 0xBB, 0x43, 0xE6, -+ 0x9E, 0x85, 0x43, 0xE6, 0x9E, 0x97, 0x43, 0xE6, -+ 0x9F, 0xB3, 0x43, 0xE6, 0x9F, 0xBA, 0x43, 0xE6, -+ // Bytes e40 - e7f -+ 0xA0, 0x97, 0x43, 0xE6, 0xA0, 0x9F, 0x43, 0xE6, -+ 0xA0, 0xAA, 0x43, 0xE6, 0xA1, 0x92, 0x43, 0xE6, -+ 0xA2, 0x81, 0x43, 0xE6, 0xA2, 0x85, 0x43, 0xE6, -+ 0xA2, 0x8E, 0x43, 0xE6, 0xA2, 0xA8, 0x43, 0xE6, -+ 0xA4, 0x94, 0x43, 0xE6, 0xA5, 0x82, 0x43, 0xE6, -+ 0xA6, 0xA3, 0x43, 0xE6, 0xA7, 0xAA, 0x43, 0xE6, -+ 0xA8, 0x82, 0x43, 0xE6, 0xA8, 0x93, 0x43, 0xE6, -+ 0xAA, 0xA8, 0x43, 0xE6, 0xAB, 0x93, 0x43, 0xE6, -+ // Bytes e80 - ebf -+ 0xAB, 0x9B, 0x43, 0xE6, 0xAC, 0x84, 0x43, 0xE6, -+ 0xAC, 0xA0, 0x43, 0xE6, 0xAC, 0xA1, 0x43, 0xE6, -+ 0xAD, 0x94, 0x43, 0xE6, 0xAD, 0xA2, 0x43, 0xE6, -+ 0xAD, 0xA3, 0x43, 0xE6, 0xAD, 0xB2, 0x43, 0xE6, -+ 0xAD, 0xB7, 0x43, 0xE6, 0xAD, 0xB9, 0x43, 0xE6, -+ 0xAE, 0x9F, 0x43, 0xE6, 0xAE, 0xAE, 0x43, 0xE6, -+ 0xAE, 0xB3, 0x43, 0xE6, 0xAE, 0xBA, 0x43, 0xE6, -+ 0xAE, 0xBB, 0x43, 0xE6, 0xAF, 0x8B, 0x43, 0xE6, -+ // Bytes ec0 - eff -+ 0xAF, 0x8D, 0x43, 0xE6, 0xAF, 0x94, 0x43, 0xE6, -+ 0xAF, 0x9B, 0x43, 0xE6, 0xB0, 0x8F, 0x43, 0xE6, -+ 0xB0, 0x94, 0x43, 0xE6, 0xB0, 0xB4, 0x43, 0xE6, -+ 0xB1, 0x8E, 0x43, 0xE6, 0xB1, 0xA7, 0x43, 0xE6, -+ 0xB2, 0x88, 0x43, 0xE6, 0xB2, 0xBF, 0x43, 0xE6, -+ 0xB3, 0x8C, 0x43, 0xE6, 0xB3, 0x8D, 0x43, 0xE6, -+ 0xB3, 0xA5, 0x43, 0xE6, 0xB3, 0xA8, 0x43, 0xE6, -+ 0xB4, 0x96, 0x43, 0xE6, 0xB4, 0x9B, 0x43, 0xE6, -+ // Bytes f00 - f3f -+ 0xB4, 0x9E, 0x43, 0xE6, 0xB4, 0xB4, 0x43, 0xE6, -+ 0xB4, 0xBE, 0x43, 0xE6, 0xB5, 0x81, 0x43, 0xE6, -+ 0xB5, 0xA9, 0x43, 0xE6, 0xB5, 0xAA, 0x43, 0xE6, -+ 0xB5, 0xB7, 0x43, 0xE6, 0xB5, 0xB8, 0x43, 0xE6, -+ 0xB6, 0x85, 0x43, 0xE6, 0xB7, 0x8B, 0x43, 0xE6, -+ 0xB7, 0x9A, 0x43, 0xE6, 0xB7, 0xAA, 0x43, 0xE6, -+ 0xB7, 0xB9, 0x43, 0xE6, 0xB8, 0x9A, 0x43, 0xE6, -+ 0xB8, 0xAF, 0x43, 0xE6, 0xB9, 0xAE, 0x43, 0xE6, -+ // Bytes f40 - f7f -+ 0xBA, 0x80, 0x43, 0xE6, 0xBA, 0x9C, 0x43, 0xE6, -+ 0xBA, 0xBA, 0x43, 0xE6, 0xBB, 0x87, 0x43, 0xE6, -+ 0xBB, 0x8B, 0x43, 0xE6, 0xBB, 0x91, 0x43, 0xE6, -+ 0xBB, 0x9B, 0x43, 0xE6, 0xBC, 0x8F, 0x43, 0xE6, -+ 0xBC, 0x94, 0x43, 0xE6, 0xBC, 0xA2, 0x43, 0xE6, -+ 0xBC, 0xA3, 0x43, 0xE6, 0xBD, 0xAE, 0x43, 0xE6, -+ 0xBF, 0x86, 0x43, 0xE6, 0xBF, 0xAB, 0x43, 0xE6, -+ 0xBF, 0xBE, 0x43, 0xE7, 0x80, 0x9B, 0x43, 0xE7, -+ // Bytes f80 - fbf -+ 0x80, 0x9E, 0x43, 0xE7, 0x80, 0xB9, 0x43, 0xE7, -+ 0x81, 0x8A, 0x43, 0xE7, 0x81, 0xAB, 0x43, 0xE7, -+ 0x81, 0xB0, 0x43, 0xE7, 0x81, 0xB7, 0x43, 0xE7, -+ 0x81, 0xBD, 0x43, 0xE7, 0x82, 0x99, 0x43, 0xE7, -+ 0x82, 0xAD, 0x43, 0xE7, 0x83, 0x88, 0x43, 0xE7, -+ 0x83, 0x99, 0x43, 0xE7, 0x84, 0xA1, 0x43, 0xE7, -+ 0x85, 0x85, 0x43, 0xE7, 0x85, 0x89, 0x43, 0xE7, -+ 0x85, 0xAE, 0x43, 0xE7, 0x86, 0x9C, 0x43, 0xE7, -+ // Bytes fc0 - fff -+ 0x87, 0x8E, 0x43, 0xE7, 0x87, 0x90, 0x43, 0xE7, -+ 0x88, 0x90, 0x43, 0xE7, 0x88, 0x9B, 0x43, 0xE7, -+ 0x88, 0xA8, 0x43, 0xE7, 0x88, 0xAA, 0x43, 0xE7, -+ 0x88, 0xAB, 0x43, 0xE7, 0x88, 0xB5, 0x43, 0xE7, -+ 0x88, 0xB6, 0x43, 0xE7, 0x88, 0xBB, 0x43, 0xE7, -+ 0x88, 0xBF, 0x43, 0xE7, 0x89, 0x87, 0x43, 0xE7, -+ 0x89, 0x90, 0x43, 0xE7, 0x89, 0x99, 0x43, 0xE7, -+ 0x89, 0x9B, 0x43, 0xE7, 0x89, 0xA2, 0x43, 0xE7, -+ // Bytes 1000 - 103f -+ 0x89, 0xB9, 0x43, 0xE7, 0x8A, 0x80, 0x43, 0xE7, -+ 0x8A, 0x95, 0x43, 0xE7, 0x8A, 0xAC, 0x43, 0xE7, -+ 0x8A, 0xAF, 0x43, 0xE7, 0x8B, 0x80, 0x43, 0xE7, -+ 0x8B, 0xBC, 0x43, 0xE7, 0x8C, 0xAA, 0x43, 0xE7, -+ 0x8D, 0xB5, 0x43, 0xE7, 0x8D, 0xBA, 0x43, 0xE7, -+ 0x8E, 0x84, 0x43, 0xE7, 0x8E, 0x87, 0x43, 0xE7, -+ 0x8E, 0x89, 0x43, 0xE7, 0x8E, 0x8B, 0x43, 0xE7, -+ 0x8E, 0xA5, 0x43, 0xE7, 0x8E, 0xB2, 0x43, 0xE7, -+ // Bytes 1040 - 107f -+ 0x8F, 0x9E, 0x43, 0xE7, 0x90, 0x86, 0x43, 0xE7, -+ 0x90, 0x89, 0x43, 0xE7, 0x90, 0xA2, 0x43, 0xE7, -+ 0x91, 0x87, 0x43, 0xE7, 0x91, 0x9C, 0x43, 0xE7, -+ 0x91, 0xA9, 0x43, 0xE7, 0x91, 0xB1, 0x43, 0xE7, -+ 0x92, 0x85, 0x43, 0xE7, 0x92, 0x89, 0x43, 0xE7, -+ 0x92, 0x98, 0x43, 0xE7, 0x93, 0x8A, 0x43, 0xE7, -+ 0x93, 0x9C, 0x43, 0xE7, 0x93, 0xA6, 0x43, 0xE7, -+ 0x94, 0x86, 0x43, 0xE7, 0x94, 0x98, 0x43, 0xE7, -+ // Bytes 1080 - 10bf -+ 0x94, 0x9F, 0x43, 0xE7, 0x94, 0xA4, 0x43, 0xE7, -+ 0x94, 0xA8, 0x43, 0xE7, 0x94, 0xB0, 0x43, 0xE7, -+ 0x94, 0xB2, 0x43, 0xE7, 0x94, 0xB3, 0x43, 0xE7, -+ 0x94, 0xB7, 0x43, 0xE7, 0x94, 0xBB, 0x43, 0xE7, -+ 0x94, 0xBE, 0x43, 0xE7, 0x95, 0x99, 0x43, 0xE7, -+ 0x95, 0xA5, 0x43, 0xE7, 0x95, 0xB0, 0x43, 0xE7, -+ 0x96, 0x8B, 0x43, 0xE7, 0x96, 0x92, 0x43, 0xE7, -+ 0x97, 0xA2, 0x43, 0xE7, 0x98, 0x90, 0x43, 0xE7, -+ // Bytes 10c0 - 10ff -+ 0x98, 0x9D, 0x43, 0xE7, 0x98, 0x9F, 0x43, 0xE7, -+ 0x99, 0x82, 0x43, 0xE7, 0x99, 0xA9, 0x43, 0xE7, -+ 0x99, 0xB6, 0x43, 0xE7, 0x99, 0xBD, 0x43, 0xE7, -+ 0x9A, 0xAE, 0x43, 0xE7, 0x9A, 0xBF, 0x43, 0xE7, -+ 0x9B, 0x8A, 0x43, 0xE7, 0x9B, 0x9B, 0x43, 0xE7, -+ 0x9B, 0xA3, 0x43, 0xE7, 0x9B, 0xA7, 0x43, 0xE7, -+ 0x9B, 0xAE, 0x43, 0xE7, 0x9B, 0xB4, 0x43, 0xE7, -+ 0x9C, 0x81, 0x43, 0xE7, 0x9C, 0x9E, 0x43, 0xE7, -+ // Bytes 1100 - 113f -+ 0x9C, 0x9F, 0x43, 0xE7, 0x9D, 0x80, 0x43, 0xE7, -+ 0x9D, 0x8A, 0x43, 0xE7, 0x9E, 0x8B, 0x43, 0xE7, -+ 0x9E, 0xA7, 0x43, 0xE7, 0x9F, 0x9B, 0x43, 0xE7, -+ 0x9F, 0xA2, 0x43, 0xE7, 0x9F, 0xB3, 0x43, 0xE7, -+ 0xA1, 0x8E, 0x43, 0xE7, 0xA1, 0xAB, 0x43, 0xE7, -+ 0xA2, 0x8C, 0x43, 0xE7, 0xA2, 0x91, 0x43, 0xE7, -+ 0xA3, 0x8A, 0x43, 0xE7, 0xA3, 0x8C, 0x43, 0xE7, -+ 0xA3, 0xBB, 0x43, 0xE7, 0xA4, 0xAA, 0x43, 0xE7, -+ // Bytes 1140 - 117f -+ 0xA4, 0xBA, 0x43, 0xE7, 0xA4, 0xBC, 0x43, 0xE7, -+ 0xA4, 0xBE, 0x43, 0xE7, 0xA5, 0x88, 0x43, 0xE7, -+ 0xA5, 0x89, 0x43, 0xE7, 0xA5, 0x90, 0x43, 0xE7, -+ 0xA5, 0x96, 0x43, 0xE7, 0xA5, 0x9D, 0x43, 0xE7, -+ 0xA5, 0x9E, 0x43, 0xE7, 0xA5, 0xA5, 0x43, 0xE7, -+ 0xA5, 0xBF, 0x43, 0xE7, 0xA6, 0x81, 0x43, 0xE7, -+ 0xA6, 0x8D, 0x43, 0xE7, 0xA6, 0x8E, 0x43, 0xE7, -+ 0xA6, 0x8F, 0x43, 0xE7, 0xA6, 0xAE, 0x43, 0xE7, -+ // Bytes 1180 - 11bf -+ 0xA6, 0xB8, 0x43, 0xE7, 0xA6, 0xBE, 0x43, 0xE7, -+ 0xA7, 0x8A, 0x43, 0xE7, 0xA7, 0x98, 0x43, 0xE7, -+ 0xA7, 0xAB, 0x43, 0xE7, 0xA8, 0x9C, 0x43, 0xE7, -+ 0xA9, 0x80, 0x43, 0xE7, 0xA9, 0x8A, 0x43, 0xE7, -+ 0xA9, 0x8F, 0x43, 0xE7, 0xA9, 0xB4, 0x43, 0xE7, -+ 0xA9, 0xBA, 0x43, 0xE7, 0xAA, 0x81, 0x43, 0xE7, -+ 0xAA, 0xB1, 0x43, 0xE7, 0xAB, 0x8B, 0x43, 0xE7, -+ 0xAB, 0xAE, 0x43, 0xE7, 0xAB, 0xB9, 0x43, 0xE7, -+ // Bytes 11c0 - 11ff -+ 0xAC, 0xA0, 0x43, 0xE7, 0xAE, 0x8F, 0x43, 0xE7, -+ 0xAF, 0x80, 0x43, 0xE7, 0xAF, 0x86, 0x43, 0xE7, -+ 0xAF, 0x89, 0x43, 0xE7, 0xB0, 0xBE, 0x43, 0xE7, -+ 0xB1, 0xA0, 0x43, 0xE7, 0xB1, 0xB3, 0x43, 0xE7, -+ 0xB1, 0xBB, 0x43, 0xE7, 0xB2, 0x92, 0x43, 0xE7, -+ 0xB2, 0xBE, 0x43, 0xE7, 0xB3, 0x92, 0x43, 0xE7, -+ 0xB3, 0x96, 0x43, 0xE7, 0xB3, 0xA3, 0x43, 0xE7, -+ 0xB3, 0xA7, 0x43, 0xE7, 0xB3, 0xA8, 0x43, 0xE7, -+ // Bytes 1200 - 123f -+ 0xB3, 0xB8, 0x43, 0xE7, 0xB4, 0x80, 0x43, 0xE7, -+ 0xB4, 0x90, 0x43, 0xE7, 0xB4, 0xA2, 0x43, 0xE7, -+ 0xB4, 0xAF, 0x43, 0xE7, 0xB5, 0x82, 0x43, 0xE7, -+ 0xB5, 0x9B, 0x43, 0xE7, 0xB5, 0xA3, 0x43, 0xE7, -+ 0xB6, 0xA0, 0x43, 0xE7, 0xB6, 0xBE, 0x43, 0xE7, -+ 0xB7, 0x87, 0x43, 0xE7, 0xB7, 0xB4, 0x43, 0xE7, -+ 0xB8, 0x82, 0x43, 0xE7, 0xB8, 0x89, 0x43, 0xE7, -+ 0xB8, 0xB7, 0x43, 0xE7, 0xB9, 0x81, 0x43, 0xE7, -+ // Bytes 1240 - 127f -+ 0xB9, 0x85, 0x43, 0xE7, 0xBC, 0xB6, 0x43, 0xE7, -+ 0xBC, 0xBE, 0x43, 0xE7, 0xBD, 0x91, 0x43, 0xE7, -+ 0xBD, 0xB2, 0x43, 0xE7, 0xBD, 0xB9, 0x43, 0xE7, -+ 0xBD, 0xBA, 0x43, 0xE7, 0xBE, 0x85, 0x43, 0xE7, -+ 0xBE, 0x8A, 0x43, 0xE7, 0xBE, 0x95, 0x43, 0xE7, -+ 0xBE, 0x9A, 0x43, 0xE7, 0xBE, 0xBD, 0x43, 0xE7, -+ 0xBF, 0xBA, 0x43, 0xE8, 0x80, 0x81, 0x43, 0xE8, -+ 0x80, 0x85, 0x43, 0xE8, 0x80, 0x8C, 0x43, 0xE8, -+ // Bytes 1280 - 12bf -+ 0x80, 0x92, 0x43, 0xE8, 0x80, 0xB3, 0x43, 0xE8, -+ 0x81, 0x86, 0x43, 0xE8, 0x81, 0xA0, 0x43, 0xE8, -+ 0x81, 0xAF, 0x43, 0xE8, 0x81, 0xB0, 0x43, 0xE8, -+ 0x81, 0xBE, 0x43, 0xE8, 0x81, 0xBF, 0x43, 0xE8, -+ 0x82, 0x89, 0x43, 0xE8, 0x82, 0x8B, 0x43, 0xE8, -+ 0x82, 0xAD, 0x43, 0xE8, 0x82, 0xB2, 0x43, 0xE8, -+ 0x84, 0x83, 0x43, 0xE8, 0x84, 0xBE, 0x43, 0xE8, -+ 0x87, 0x98, 0x43, 0xE8, 0x87, 0xA3, 0x43, 0xE8, -+ // Bytes 12c0 - 12ff -+ 0x87, 0xA8, 0x43, 0xE8, 0x87, 0xAA, 0x43, 0xE8, -+ 0x87, 0xAD, 0x43, 0xE8, 0x87, 0xB3, 0x43, 0xE8, -+ 0x87, 0xBC, 0x43, 0xE8, 0x88, 0x81, 0x43, 0xE8, -+ 0x88, 0x84, 0x43, 0xE8, 0x88, 0x8C, 0x43, 0xE8, -+ 0x88, 0x98, 0x43, 0xE8, 0x88, 0x9B, 0x43, 0xE8, -+ 0x88, 0x9F, 0x43, 0xE8, 0x89, 0xAE, 0x43, 0xE8, -+ 0x89, 0xAF, 0x43, 0xE8, 0x89, 0xB2, 0x43, 0xE8, -+ 0x89, 0xB8, 0x43, 0xE8, 0x89, 0xB9, 0x43, 0xE8, -+ // Bytes 1300 - 133f -+ 0x8A, 0x8B, 0x43, 0xE8, 0x8A, 0x91, 0x43, 0xE8, -+ 0x8A, 0x9D, 0x43, 0xE8, 0x8A, 0xB1, 0x43, 0xE8, -+ 0x8A, 0xB3, 0x43, 0xE8, 0x8A, 0xBD, 0x43, 0xE8, -+ 0x8B, 0xA5, 0x43, 0xE8, 0x8B, 0xA6, 0x43, 0xE8, -+ 0x8C, 0x9D, 0x43, 0xE8, 0x8C, 0xA3, 0x43, 0xE8, -+ 0x8C, 0xB6, 0x43, 0xE8, 0x8D, 0x92, 0x43, 0xE8, -+ 0x8D, 0x93, 0x43, 0xE8, 0x8D, 0xA3, 0x43, 0xE8, -+ 0x8E, 0xAD, 0x43, 0xE8, 0x8E, 0xBD, 0x43, 0xE8, -+ // Bytes 1340 - 137f -+ 0x8F, 0x89, 0x43, 0xE8, 0x8F, 0x8A, 0x43, 0xE8, -+ 0x8F, 0x8C, 0x43, 0xE8, 0x8F, 0x9C, 0x43, 0xE8, -+ 0x8F, 0xA7, 0x43, 0xE8, 0x8F, 0xAF, 0x43, 0xE8, -+ 0x8F, 0xB1, 0x43, 0xE8, 0x90, 0xBD, 0x43, 0xE8, -+ 0x91, 0x89, 0x43, 0xE8, 0x91, 0x97, 0x43, 0xE8, -+ 0x93, 0xAE, 0x43, 0xE8, 0x93, 0xB1, 0x43, 0xE8, -+ 0x93, 0xB3, 0x43, 0xE8, 0x93, 0xBC, 0x43, 0xE8, -+ 0x94, 0x96, 0x43, 0xE8, 0x95, 0xA4, 0x43, 0xE8, -+ // Bytes 1380 - 13bf -+ 0x97, 0x8D, 0x43, 0xE8, 0x97, 0xBA, 0x43, 0xE8, -+ 0x98, 0x86, 0x43, 0xE8, 0x98, 0x92, 0x43, 0xE8, -+ 0x98, 0xAD, 0x43, 0xE8, 0x98, 0xBF, 0x43, 0xE8, -+ 0x99, 0x8D, 0x43, 0xE8, 0x99, 0x90, 0x43, 0xE8, -+ 0x99, 0x9C, 0x43, 0xE8, 0x99, 0xA7, 0x43, 0xE8, -+ 0x99, 0xA9, 0x43, 0xE8, 0x99, 0xAB, 0x43, 0xE8, -+ 0x9A, 0x88, 0x43, 0xE8, 0x9A, 0xA9, 0x43, 0xE8, -+ 0x9B, 0xA2, 0x43, 0xE8, 0x9C, 0x8E, 0x43, 0xE8, -+ // Bytes 13c0 - 13ff -+ 0x9C, 0xA8, 0x43, 0xE8, 0x9D, 0xAB, 0x43, 0xE8, -+ 0x9D, 0xB9, 0x43, 0xE8, 0x9E, 0x86, 0x43, 0xE8, -+ 0x9E, 0xBA, 0x43, 0xE8, 0x9F, 0xA1, 0x43, 0xE8, -+ 0xA0, 0x81, 0x43, 0xE8, 0xA0, 0x9F, 0x43, 0xE8, -+ 0xA1, 0x80, 0x43, 0xE8, 0xA1, 0x8C, 0x43, 0xE8, -+ 0xA1, 0xA0, 0x43, 0xE8, 0xA1, 0xA3, 0x43, 0xE8, -+ 0xA3, 0x82, 0x43, 0xE8, 0xA3, 0x8F, 0x43, 0xE8, -+ 0xA3, 0x97, 0x43, 0xE8, 0xA3, 0x9E, 0x43, 0xE8, -+ // Bytes 1400 - 143f -+ 0xA3, 0xA1, 0x43, 0xE8, 0xA3, 0xB8, 0x43, 0xE8, -+ 0xA3, 0xBA, 0x43, 0xE8, 0xA4, 0x90, 0x43, 0xE8, -+ 0xA5, 0x81, 0x43, 0xE8, 0xA5, 0xA4, 0x43, 0xE8, -+ 0xA5, 0xBE, 0x43, 0xE8, 0xA6, 0x86, 0x43, 0xE8, -+ 0xA6, 0x8B, 0x43, 0xE8, 0xA6, 0x96, 0x43, 0xE8, -+ 0xA7, 0x92, 0x43, 0xE8, 0xA7, 0xA3, 0x43, 0xE8, -+ 0xA8, 0x80, 0x43, 0xE8, 0xAA, 0xA0, 0x43, 0xE8, -+ 0xAA, 0xAA, 0x43, 0xE8, 0xAA, 0xBF, 0x43, 0xE8, -+ // Bytes 1440 - 147f -+ 0xAB, 0x8B, 0x43, 0xE8, 0xAB, 0x92, 0x43, 0xE8, -+ 0xAB, 0x96, 0x43, 0xE8, 0xAB, 0xAD, 0x43, 0xE8, -+ 0xAB, 0xB8, 0x43, 0xE8, 0xAB, 0xBE, 0x43, 0xE8, -+ 0xAC, 0x81, 0x43, 0xE8, 0xAC, 0xB9, 0x43, 0xE8, -+ 0xAD, 0x98, 0x43, 0xE8, 0xAE, 0x80, 0x43, 0xE8, -+ 0xAE, 0x8A, 0x43, 0xE8, 0xB0, 0xB7, 0x43, 0xE8, -+ 0xB1, 0x86, 0x43, 0xE8, 0xB1, 0x88, 0x43, 0xE8, -+ 0xB1, 0x95, 0x43, 0xE8, 0xB1, 0xB8, 0x43, 0xE8, -+ // Bytes 1480 - 14bf -+ 0xB2, 0x9D, 0x43, 0xE8, 0xB2, 0xA1, 0x43, 0xE8, -+ 0xB2, 0xA9, 0x43, 0xE8, 0xB2, 0xAB, 0x43, 0xE8, -+ 0xB3, 0x81, 0x43, 0xE8, 0xB3, 0x82, 0x43, 0xE8, -+ 0xB3, 0x87, 0x43, 0xE8, 0xB3, 0x88, 0x43, 0xE8, -+ 0xB3, 0x93, 0x43, 0xE8, 0xB4, 0x88, 0x43, 0xE8, -+ 0xB4, 0x9B, 0x43, 0xE8, 0xB5, 0xA4, 0x43, 0xE8, -+ 0xB5, 0xB0, 0x43, 0xE8, 0xB5, 0xB7, 0x43, 0xE8, -+ 0xB6, 0xB3, 0x43, 0xE8, 0xB6, 0xBC, 0x43, 0xE8, -+ // Bytes 14c0 - 14ff -+ 0xB7, 0x8B, 0x43, 0xE8, 0xB7, 0xAF, 0x43, 0xE8, -+ 0xB7, 0xB0, 0x43, 0xE8, 0xBA, 0xAB, 0x43, 0xE8, -+ 0xBB, 0x8A, 0x43, 0xE8, 0xBB, 0x94, 0x43, 0xE8, -+ 0xBC, 0xA6, 0x43, 0xE8, 0xBC, 0xAA, 0x43, 0xE8, -+ 0xBC, 0xB8, 0x43, 0xE8, 0xBC, 0xBB, 0x43, 0xE8, -+ 0xBD, 0xA2, 0x43, 0xE8, 0xBE, 0x9B, 0x43, 0xE8, -+ 0xBE, 0x9E, 0x43, 0xE8, 0xBE, 0xB0, 0x43, 0xE8, -+ 0xBE, 0xB5, 0x43, 0xE8, 0xBE, 0xB6, 0x43, 0xE9, -+ // Bytes 1500 - 153f -+ 0x80, 0xA3, 0x43, 0xE9, 0x80, 0xB8, 0x43, 0xE9, -+ 0x81, 0x8A, 0x43, 0xE9, 0x81, 0xA9, 0x43, 0xE9, -+ 0x81, 0xB2, 0x43, 0xE9, 0x81, 0xBC, 0x43, 0xE9, -+ 0x82, 0x8F, 0x43, 0xE9, 0x82, 0x91, 0x43, 0xE9, -+ 0x82, 0x94, 0x43, 0xE9, 0x83, 0x8E, 0x43, 0xE9, -+ 0x83, 0x9E, 0x43, 0xE9, 0x83, 0xB1, 0x43, 0xE9, -+ 0x83, 0xBD, 0x43, 0xE9, 0x84, 0x91, 0x43, 0xE9, -+ 0x84, 0x9B, 0x43, 0xE9, 0x85, 0x89, 0x43, 0xE9, -+ // Bytes 1540 - 157f -+ 0x85, 0x8D, 0x43, 0xE9, 0x85, 0xAA, 0x43, 0xE9, -+ 0x86, 0x99, 0x43, 0xE9, 0x86, 0xB4, 0x43, 0xE9, -+ 0x87, 0x86, 0x43, 0xE9, 0x87, 0x8C, 0x43, 0xE9, -+ 0x87, 0x8F, 0x43, 0xE9, 0x87, 0x91, 0x43, 0xE9, -+ 0x88, 0xB4, 0x43, 0xE9, 0x88, 0xB8, 0x43, 0xE9, -+ 0x89, 0xB6, 0x43, 0xE9, 0x89, 0xBC, 0x43, 0xE9, -+ 0x8B, 0x97, 0x43, 0xE9, 0x8B, 0x98, 0x43, 0xE9, -+ 0x8C, 0x84, 0x43, 0xE9, 0x8D, 0x8A, 0x43, 0xE9, -+ // Bytes 1580 - 15bf -+ 0x8F, 0xB9, 0x43, 0xE9, 0x90, 0x95, 0x43, 0xE9, -+ 0x95, 0xB7, 0x43, 0xE9, 0x96, 0x80, 0x43, 0xE9, -+ 0x96, 0x8B, 0x43, 0xE9, 0x96, 0xAD, 0x43, 0xE9, -+ 0x96, 0xB7, 0x43, 0xE9, 0x98, 0x9C, 0x43, 0xE9, -+ 0x98, 0xAE, 0x43, 0xE9, 0x99, 0x8B, 0x43, 0xE9, -+ 0x99, 0x8D, 0x43, 0xE9, 0x99, 0xB5, 0x43, 0xE9, -+ 0x99, 0xB8, 0x43, 0xE9, 0x99, 0xBC, 0x43, 0xE9, -+ 0x9A, 0x86, 0x43, 0xE9, 0x9A, 0xA3, 0x43, 0xE9, -+ // Bytes 15c0 - 15ff -+ 0x9A, 0xB6, 0x43, 0xE9, 0x9A, 0xB7, 0x43, 0xE9, -+ 0x9A, 0xB8, 0x43, 0xE9, 0x9A, 0xB9, 0x43, 0xE9, -+ 0x9B, 0x83, 0x43, 0xE9, 0x9B, 0xA2, 0x43, 0xE9, -+ 0x9B, 0xA3, 0x43, 0xE9, 0x9B, 0xA8, 0x43, 0xE9, -+ 0x9B, 0xB6, 0x43, 0xE9, 0x9B, 0xB7, 0x43, 0xE9, -+ 0x9C, 0xA3, 0x43, 0xE9, 0x9C, 0xB2, 0x43, 0xE9, -+ 0x9D, 0x88, 0x43, 0xE9, 0x9D, 0x91, 0x43, 0xE9, -+ 0x9D, 0x96, 0x43, 0xE9, 0x9D, 0x9E, 0x43, 0xE9, -+ // Bytes 1600 - 163f -+ 0x9D, 0xA2, 0x43, 0xE9, 0x9D, 0xA9, 0x43, 0xE9, -+ 0x9F, 0x8B, 0x43, 0xE9, 0x9F, 0x9B, 0x43, 0xE9, -+ 0x9F, 0xA0, 0x43, 0xE9, 0x9F, 0xAD, 0x43, 0xE9, -+ 0x9F, 0xB3, 0x43, 0xE9, 0x9F, 0xBF, 0x43, 0xE9, -+ 0xA0, 0x81, 0x43, 0xE9, 0xA0, 0x85, 0x43, 0xE9, -+ 0xA0, 0x8B, 0x43, 0xE9, 0xA0, 0x98, 0x43, 0xE9, -+ 0xA0, 0xA9, 0x43, 0xE9, 0xA0, 0xBB, 0x43, 0xE9, -+ 0xA1, 0x9E, 0x43, 0xE9, 0xA2, 0xA8, 0x43, 0xE9, -+ // Bytes 1640 - 167f -+ 0xA3, 0x9B, 0x43, 0xE9, 0xA3, 0x9F, 0x43, 0xE9, -+ 0xA3, 0xA2, 0x43, 0xE9, 0xA3, 0xAF, 0x43, 0xE9, -+ 0xA3, 0xBC, 0x43, 0xE9, 0xA4, 0xA8, 0x43, 0xE9, -+ 0xA4, 0xA9, 0x43, 0xE9, 0xA6, 0x96, 0x43, 0xE9, -+ 0xA6, 0x99, 0x43, 0xE9, 0xA6, 0xA7, 0x43, 0xE9, -+ 0xA6, 0xAC, 0x43, 0xE9, 0xA7, 0x82, 0x43, 0xE9, -+ 0xA7, 0xB1, 0x43, 0xE9, 0xA7, 0xBE, 0x43, 0xE9, -+ 0xA9, 0xAA, 0x43, 0xE9, 0xAA, 0xA8, 0x43, 0xE9, -+ // Bytes 1680 - 16bf -+ 0xAB, 0x98, 0x43, 0xE9, 0xAB, 0x9F, 0x43, 0xE9, -+ 0xAC, 0x92, 0x43, 0xE9, 0xAC, 0xA5, 0x43, 0xE9, -+ 0xAC, 0xAF, 0x43, 0xE9, 0xAC, 0xB2, 0x43, 0xE9, -+ 0xAC, 0xBC, 0x43, 0xE9, 0xAD, 0x9A, 0x43, 0xE9, -+ 0xAD, 0xAF, 0x43, 0xE9, 0xB1, 0x80, 0x43, 0xE9, -+ 0xB1, 0x97, 0x43, 0xE9, 0xB3, 0xA5, 0x43, 0xE9, -+ 0xB3, 0xBD, 0x43, 0xE9, 0xB5, 0xA7, 0x43, 0xE9, -+ 0xB6, 0xB4, 0x43, 0xE9, 0xB7, 0xBA, 0x43, 0xE9, -+ // Bytes 16c0 - 16ff -+ 0xB8, 0x9E, 0x43, 0xE9, 0xB9, 0xB5, 0x43, 0xE9, -+ 0xB9, 0xBF, 0x43, 0xE9, 0xBA, 0x97, 0x43, 0xE9, -+ 0xBA, 0x9F, 0x43, 0xE9, 0xBA, 0xA5, 0x43, 0xE9, -+ 0xBA, 0xBB, 0x43, 0xE9, 0xBB, 0x83, 0x43, 0xE9, -+ 0xBB, 0x8D, 0x43, 0xE9, 0xBB, 0x8E, 0x43, 0xE9, -+ 0xBB, 0x91, 0x43, 0xE9, 0xBB, 0xB9, 0x43, 0xE9, -+ 0xBB, 0xBD, 0x43, 0xE9, 0xBB, 0xBE, 0x43, 0xE9, -+ 0xBC, 0x85, 0x43, 0xE9, 0xBC, 0x8E, 0x43, 0xE9, -+ // Bytes 1700 - 173f -+ 0xBC, 0x8F, 0x43, 0xE9, 0xBC, 0x93, 0x43, 0xE9, -+ 0xBC, 0x96, 0x43, 0xE9, 0xBC, 0xA0, 0x43, 0xE9, -+ 0xBC, 0xBB, 0x43, 0xE9, 0xBD, 0x83, 0x43, 0xE9, -+ 0xBD, 0x8A, 0x43, 0xE9, 0xBD, 0x92, 0x43, 0xE9, -+ 0xBE, 0x8D, 0x43, 0xE9, 0xBE, 0x8E, 0x43, 0xE9, -+ 0xBE, 0x9C, 0x43, 0xE9, 0xBE, 0x9F, 0x43, 0xE9, -+ 0xBE, 0xA0, 0x43, 0xEA, 0x99, 0x91, 0x43, 0xEA, -+ 0x9A, 0x89, 0x43, 0xEA, 0x9C, 0xA7, 0x43, 0xEA, -+ // Bytes 1740 - 177f -+ 0x9D, 0xAF, 0x43, 0xEA, 0x9E, 0x8E, 0x43, 0xEA, -+ 0xAC, 0xB7, 0x43, 0xEA, 0xAD, 0x92, 0x43, 0xEA, -+ 0xAD, 0xA6, 0x43, 0xEA, 0xAD, 0xA7, 0x44, 0xF0, -+ 0x9D, 0xBC, 0x84, 0x44, 0xF0, 0x9D, 0xBC, 0x85, -+ 0x44, 0xF0, 0x9D, 0xBC, 0x86, 0x44, 0xF0, 0x9D, -+ 0xBC, 0x88, 0x44, 0xF0, 0x9D, 0xBC, 0x8A, 0x44, -+ 0xF0, 0x9D, 0xBC, 0x9E, 0x44, 0xF0, 0xA0, 0x84, -+ 0xA2, 0x44, 0xF0, 0xA0, 0x94, 0x9C, 0x44, 0xF0, -+ // Bytes 1780 - 17bf -+ 0xA0, 0x94, 0xA5, 0x44, 0xF0, 0xA0, 0x95, 0x8B, -+ 0x44, 0xF0, 0xA0, 0x98, 0xBA, 0x44, 0xF0, 0xA0, -+ 0xA0, 0x84, 0x44, 0xF0, 0xA0, 0xA3, 0x9E, 0x44, -+ 0xF0, 0xA0, 0xA8, 0xAC, 0x44, 0xF0, 0xA0, 0xAD, -+ 0xA3, 0x44, 0xF0, 0xA1, 0x93, 0xA4, 0x44, 0xF0, -+ 0xA1, 0x9A, 0xA8, 0x44, 0xF0, 0xA1, 0x9B, 0xAA, -+ 0x44, 0xF0, 0xA1, 0xA7, 0x88, 0x44, 0xF0, 0xA1, -+ 0xAC, 0x98, 0x44, 0xF0, 0xA1, 0xB4, 0x8B, 0x44, -+ // Bytes 17c0 - 17ff -+ 0xF0, 0xA1, 0xB7, 0xA4, 0x44, 0xF0, 0xA1, 0xB7, -+ 0xA6, 0x44, 0xF0, 0xA2, 0x86, 0x83, 0x44, 0xF0, -+ 0xA2, 0x86, 0x9F, 0x44, 0xF0, 0xA2, 0x8C, 0xB1, -+ 0x44, 0xF0, 0xA2, 0x9B, 0x94, 0x44, 0xF0, 0xA2, -+ 0xA1, 0x84, 0x44, 0xF0, 0xA2, 0xA1, 0x8A, 0x44, -+ 0xF0, 0xA2, 0xAC, 0x8C, 0x44, 0xF0, 0xA2, 0xAF, -+ 0xB1, 0x44, 0xF0, 0xA3, 0x80, 0x8A, 0x44, 0xF0, -+ 0xA3, 0x8A, 0xB8, 0x44, 0xF0, 0xA3, 0x8D, 0x9F, -+ // Bytes 1800 - 183f -+ 0x44, 0xF0, 0xA3, 0x8E, 0x93, 0x44, 0xF0, 0xA3, -+ 0x8E, 0x9C, 0x44, 0xF0, 0xA3, 0x8F, 0x83, 0x44, -+ 0xF0, 0xA3, 0x8F, 0x95, 0x44, 0xF0, 0xA3, 0x91, -+ 0xAD, 0x44, 0xF0, 0xA3, 0x9A, 0xA3, 0x44, 0xF0, -+ 0xA3, 0xA2, 0xA7, 0x44, 0xF0, 0xA3, 0xAA, 0x8D, -+ 0x44, 0xF0, 0xA3, 0xAB, 0xBA, 0x44, 0xF0, 0xA3, -+ 0xB2, 0xBC, 0x44, 0xF0, 0xA3, 0xB4, 0x9E, 0x44, -+ 0xF0, 0xA3, 0xBB, 0x91, 0x44, 0xF0, 0xA3, 0xBD, -+ // Bytes 1840 - 187f -+ 0x9E, 0x44, 0xF0, 0xA3, 0xBE, 0x8E, 0x44, 0xF0, -+ 0xA4, 0x89, 0xA3, 0x44, 0xF0, 0xA4, 0x8B, 0xAE, -+ 0x44, 0xF0, 0xA4, 0x8E, 0xAB, 0x44, 0xF0, 0xA4, -+ 0x98, 0x88, 0x44, 0xF0, 0xA4, 0x9C, 0xB5, 0x44, -+ 0xF0, 0xA4, 0xA0, 0x94, 0x44, 0xF0, 0xA4, 0xB0, -+ 0xB6, 0x44, 0xF0, 0xA4, 0xB2, 0x92, 0x44, 0xF0, -+ 0xA4, 0xBE, 0xA1, 0x44, 0xF0, 0xA4, 0xBE, 0xB8, -+ 0x44, 0xF0, 0xA5, 0x81, 0x84, 0x44, 0xF0, 0xA5, -+ // Bytes 1880 - 18bf -+ 0x83, 0xB2, 0x44, 0xF0, 0xA5, 0x83, 0xB3, 0x44, -+ 0xF0, 0xA5, 0x84, 0x99, 0x44, 0xF0, 0xA5, 0x84, -+ 0xB3, 0x44, 0xF0, 0xA5, 0x89, 0x89, 0x44, 0xF0, -+ 0xA5, 0x90, 0x9D, 0x44, 0xF0, 0xA5, 0x98, 0xA6, -+ 0x44, 0xF0, 0xA5, 0x9A, 0x9A, 0x44, 0xF0, 0xA5, -+ 0x9B, 0x85, 0x44, 0xF0, 0xA5, 0xA5, 0xBC, 0x44, -+ 0xF0, 0xA5, 0xAA, 0xA7, 0x44, 0xF0, 0xA5, 0xAE, -+ 0xAB, 0x44, 0xF0, 0xA5, 0xB2, 0x80, 0x44, 0xF0, -+ // Bytes 18c0 - 18ff -+ 0xA5, 0xB3, 0x90, 0x44, 0xF0, 0xA5, 0xBE, 0x86, -+ 0x44, 0xF0, 0xA6, 0x87, 0x9A, 0x44, 0xF0, 0xA6, -+ 0x88, 0xA8, 0x44, 0xF0, 0xA6, 0x89, 0x87, 0x44, -+ 0xF0, 0xA6, 0x8B, 0x99, 0x44, 0xF0, 0xA6, 0x8C, -+ 0xBE, 0x44, 0xF0, 0xA6, 0x93, 0x9A, 0x44, 0xF0, -+ 0xA6, 0x94, 0xA3, 0x44, 0xF0, 0xA6, 0x96, 0xA8, -+ 0x44, 0xF0, 0xA6, 0x9E, 0xA7, 0x44, 0xF0, 0xA6, -+ 0x9E, 0xB5, 0x44, 0xF0, 0xA6, 0xAC, 0xBC, 0x44, -+ // Bytes 1900 - 193f -+ 0xF0, 0xA6, 0xB0, 0xB6, 0x44, 0xF0, 0xA6, 0xB3, -+ 0x95, 0x44, 0xF0, 0xA6, 0xB5, 0xAB, 0x44, 0xF0, -+ 0xA6, 0xBC, 0xAC, 0x44, 0xF0, 0xA6, 0xBE, 0xB1, -+ 0x44, 0xF0, 0xA7, 0x83, 0x92, 0x44, 0xF0, 0xA7, -+ 0x8F, 0x8A, 0x44, 0xF0, 0xA7, 0x99, 0xA7, 0x44, -+ 0xF0, 0xA7, 0xA2, 0xAE, 0x44, 0xF0, 0xA7, 0xA5, -+ 0xA6, 0x44, 0xF0, 0xA7, 0xB2, 0xA8, 0x44, 0xF0, -+ 0xA7, 0xBB, 0x93, 0x44, 0xF0, 0xA7, 0xBC, 0xAF, -+ // Bytes 1940 - 197f -+ 0x44, 0xF0, 0xA8, 0x97, 0x92, 0x44, 0xF0, 0xA8, -+ 0x97, 0xAD, 0x44, 0xF0, 0xA8, 0x9C, 0xAE, 0x44, -+ 0xF0, 0xA8, 0xAF, 0xBA, 0x44, 0xF0, 0xA8, 0xB5, -+ 0xB7, 0x44, 0xF0, 0xA9, 0x85, 0x85, 0x44, 0xF0, -+ 0xA9, 0x87, 0x9F, 0x44, 0xF0, 0xA9, 0x88, 0x9A, -+ 0x44, 0xF0, 0xA9, 0x90, 0x8A, 0x44, 0xF0, 0xA9, -+ 0x92, 0x96, 0x44, 0xF0, 0xA9, 0x96, 0xB6, 0x44, -+ 0xF0, 0xA9, 0xAC, 0xB0, 0x44, 0xF0, 0xAA, 0x83, -+ // Bytes 1980 - 19bf -+ 0x8E, 0x44, 0xF0, 0xAA, 0x84, 0x85, 0x44, 0xF0, -+ 0xAA, 0x88, 0x8E, 0x44, 0xF0, 0xAA, 0x8A, 0x91, -+ 0x44, 0xF0, 0xAA, 0x8E, 0x92, 0x44, 0xF0, 0xAA, -+ 0x98, 0x80, 0x42, 0x21, 0x21, 0x42, 0x21, 0x3F, -+ 0x42, 0x2E, 0x2E, 0x42, 0x30, 0x2C, 0x42, 0x30, -+ 0x2E, 0x42, 0x31, 0x2C, 0x42, 0x31, 0x2E, 0x42, -+ 0x31, 0x30, 0x42, 0x31, 0x31, 0x42, 0x31, 0x32, -+ 0x42, 0x31, 0x33, 0x42, 0x31, 0x34, 0x42, 0x31, -+ // Bytes 19c0 - 19ff -+ 0x35, 0x42, 0x31, 0x36, 0x42, 0x31, 0x37, 0x42, -+ 0x31, 0x38, 0x42, 0x31, 0x39, 0x42, 0x32, 0x2C, -+ 0x42, 0x32, 0x2E, 0x42, 0x32, 0x30, 0x42, 0x32, -+ 0x31, 0x42, 0x32, 0x32, 0x42, 0x32, 0x33, 0x42, -+ 0x32, 0x34, 0x42, 0x32, 0x35, 0x42, 0x32, 0x36, -+ 0x42, 0x32, 0x37, 0x42, 0x32, 0x38, 0x42, 0x32, -+ 0x39, 0x42, 0x33, 0x2C, 0x42, 0x33, 0x2E, 0x42, -+ 0x33, 0x30, 0x42, 0x33, 0x31, 0x42, 0x33, 0x32, -+ // Bytes 1a00 - 1a3f -+ 0x42, 0x33, 0x33, 0x42, 0x33, 0x34, 0x42, 0x33, -+ 0x35, 0x42, 0x33, 0x36, 0x42, 0x33, 0x37, 0x42, -+ 0x33, 0x38, 0x42, 0x33, 0x39, 0x42, 0x34, 0x2C, -+ 0x42, 0x34, 0x2E, 0x42, 0x34, 0x30, 0x42, 0x34, -+ 0x31, 0x42, 0x34, 0x32, 0x42, 0x34, 0x33, 0x42, -+ 0x34, 0x34, 0x42, 0x34, 0x35, 0x42, 0x34, 0x36, -+ 0x42, 0x34, 0x37, 0x42, 0x34, 0x38, 0x42, 0x34, -+ 0x39, 0x42, 0x35, 0x2C, 0x42, 0x35, 0x2E, 0x42, -+ // Bytes 1a40 - 1a7f -+ 0x35, 0x30, 0x42, 0x36, 0x2C, 0x42, 0x36, 0x2E, -+ 0x42, 0x37, 0x2C, 0x42, 0x37, 0x2E, 0x42, 0x38, -+ 0x2C, 0x42, 0x38, 0x2E, 0x42, 0x39, 0x2C, 0x42, -+ 0x39, 0x2E, 0x42, 0x3D, 0x3D, 0x42, 0x3F, 0x21, -+ 0x42, 0x3F, 0x3F, 0x42, 0x41, 0x55, 0x42, 0x42, -+ 0x71, 0x42, 0x43, 0x44, 0x42, 0x44, 0x4A, 0x42, -+ 0x44, 0x5A, 0x42, 0x44, 0x7A, 0x42, 0x47, 0x42, -+ 0x42, 0x47, 0x79, 0x42, 0x48, 0x50, 0x42, 0x48, -+ // Bytes 1a80 - 1abf -+ 0x56, 0x42, 0x48, 0x67, 0x42, 0x48, 0x7A, 0x42, -+ 0x49, 0x49, 0x42, 0x49, 0x4A, 0x42, 0x49, 0x55, -+ 0x42, 0x49, 0x56, 0x42, 0x49, 0x58, 0x42, 0x4B, -+ 0x42, 0x42, 0x4B, 0x4B, 0x42, 0x4B, 0x4D, 0x42, -+ 0x4C, 0x4A, 0x42, 0x4C, 0x6A, 0x42, 0x4D, 0x42, -+ 0x42, 0x4D, 0x43, 0x42, 0x4D, 0x44, 0x42, 0x4D, -+ 0x52, 0x42, 0x4D, 0x56, 0x42, 0x4D, 0x57, 0x42, -+ 0x4E, 0x4A, 0x42, 0x4E, 0x6A, 0x42, 0x4E, 0x6F, -+ // Bytes 1ac0 - 1aff -+ 0x42, 0x50, 0x48, 0x42, 0x50, 0x52, 0x42, 0x50, -+ 0x61, 0x42, 0x52, 0x73, 0x42, 0x53, 0x44, 0x42, -+ 0x53, 0x4D, 0x42, 0x53, 0x53, 0x42, 0x53, 0x76, -+ 0x42, 0x54, 0x4D, 0x42, 0x56, 0x49, 0x42, 0x57, -+ 0x43, 0x42, 0x57, 0x5A, 0x42, 0x57, 0x62, 0x42, -+ 0x58, 0x49, 0x42, 0x63, 0x63, 0x42, 0x63, 0x64, -+ 0x42, 0x63, 0x6D, 0x42, 0x64, 0x42, 0x42, 0x64, -+ 0x61, 0x42, 0x64, 0x6C, 0x42, 0x64, 0x6D, 0x42, -+ // Bytes 1b00 - 1b3f -+ 0x64, 0x7A, 0x42, 0x65, 0x56, 0x42, 0x66, 0x66, -+ 0x42, 0x66, 0x69, 0x42, 0x66, 0x6C, 0x42, 0x66, -+ 0x6D, 0x42, 0x68, 0x61, 0x42, 0x69, 0x69, 0x42, -+ 0x69, 0x6A, 0x42, 0x69, 0x6E, 0x42, 0x69, 0x76, -+ 0x42, 0x69, 0x78, 0x42, 0x6B, 0x41, 0x42, 0x6B, -+ 0x56, 0x42, 0x6B, 0x57, 0x42, 0x6B, 0x67, 0x42, -+ 0x6B, 0x6C, 0x42, 0x6B, 0x6D, 0x42, 0x6B, 0x74, -+ 0x42, 0x6C, 0x6A, 0x42, 0x6C, 0x6D, 0x42, 0x6C, -+ // Bytes 1b40 - 1b7f -+ 0x6E, 0x42, 0x6C, 0x78, 0x42, 0x6D, 0x32, 0x42, -+ 0x6D, 0x33, 0x42, 0x6D, 0x41, 0x42, 0x6D, 0x56, -+ 0x42, 0x6D, 0x57, 0x42, 0x6D, 0x62, 0x42, 0x6D, -+ 0x67, 0x42, 0x6D, 0x6C, 0x42, 0x6D, 0x6D, 0x42, -+ 0x6D, 0x73, 0x42, 0x6E, 0x41, 0x42, 0x6E, 0x46, -+ 0x42, 0x6E, 0x56, 0x42, 0x6E, 0x57, 0x42, 0x6E, -+ 0x6A, 0x42, 0x6E, 0x6D, 0x42, 0x6E, 0x73, 0x42, -+ 0x6F, 0x56, 0x42, 0x70, 0x41, 0x42, 0x70, 0x46, -+ // Bytes 1b80 - 1bbf -+ 0x42, 0x70, 0x56, 0x42, 0x70, 0x57, 0x42, 0x70, -+ 0x63, 0x42, 0x70, 0x73, 0x42, 0x73, 0x72, 0x42, -+ 0x73, 0x74, 0x42, 0x76, 0x69, 0x42, 0x78, 0x69, -+ 0x43, 0x28, 0x31, 0x29, 0x43, 0x28, 0x32, 0x29, -+ 0x43, 0x28, 0x33, 0x29, 0x43, 0x28, 0x34, 0x29, -+ 0x43, 0x28, 0x35, 0x29, 0x43, 0x28, 0x36, 0x29, -+ 0x43, 0x28, 0x37, 0x29, 0x43, 0x28, 0x38, 0x29, -+ 0x43, 0x28, 0x39, 0x29, 0x43, 0x28, 0x41, 0x29, -+ // Bytes 1bc0 - 1bff -+ 0x43, 0x28, 0x42, 0x29, 0x43, 0x28, 0x43, 0x29, -+ 0x43, 0x28, 0x44, 0x29, 0x43, 0x28, 0x45, 0x29, -+ 0x43, 0x28, 0x46, 0x29, 0x43, 0x28, 0x47, 0x29, -+ 0x43, 0x28, 0x48, 0x29, 0x43, 0x28, 0x49, 0x29, -+ 0x43, 0x28, 0x4A, 0x29, 0x43, 0x28, 0x4B, 0x29, -+ 0x43, 0x28, 0x4C, 0x29, 0x43, 0x28, 0x4D, 0x29, -+ 0x43, 0x28, 0x4E, 0x29, 0x43, 0x28, 0x4F, 0x29, -+ 0x43, 0x28, 0x50, 0x29, 0x43, 0x28, 0x51, 0x29, -+ // Bytes 1c00 - 1c3f -+ 0x43, 0x28, 0x52, 0x29, 0x43, 0x28, 0x53, 0x29, -+ 0x43, 0x28, 0x54, 0x29, 0x43, 0x28, 0x55, 0x29, -+ 0x43, 0x28, 0x56, 0x29, 0x43, 0x28, 0x57, 0x29, -+ 0x43, 0x28, 0x58, 0x29, 0x43, 0x28, 0x59, 0x29, -+ 0x43, 0x28, 0x5A, 0x29, 0x43, 0x28, 0x61, 0x29, -+ 0x43, 0x28, 0x62, 0x29, 0x43, 0x28, 0x63, 0x29, -+ 0x43, 0x28, 0x64, 0x29, 0x43, 0x28, 0x65, 0x29, -+ 0x43, 0x28, 0x66, 0x29, 0x43, 0x28, 0x67, 0x29, -+ // Bytes 1c40 - 1c7f -+ 0x43, 0x28, 0x68, 0x29, 0x43, 0x28, 0x69, 0x29, -+ 0x43, 0x28, 0x6A, 0x29, 0x43, 0x28, 0x6B, 0x29, -+ 0x43, 0x28, 0x6C, 0x29, 0x43, 0x28, 0x6D, 0x29, -+ 0x43, 0x28, 0x6E, 0x29, 0x43, 0x28, 0x6F, 0x29, -+ 0x43, 0x28, 0x70, 0x29, 0x43, 0x28, 0x71, 0x29, -+ 0x43, 0x28, 0x72, 0x29, 0x43, 0x28, 0x73, 0x29, -+ 0x43, 0x28, 0x74, 0x29, 0x43, 0x28, 0x75, 0x29, -+ 0x43, 0x28, 0x76, 0x29, 0x43, 0x28, 0x77, 0x29, -+ // Bytes 1c80 - 1cbf -+ 0x43, 0x28, 0x78, 0x29, 0x43, 0x28, 0x79, 0x29, -+ 0x43, 0x28, 0x7A, 0x29, 0x43, 0x2E, 0x2E, 0x2E, -+ 0x43, 0x31, 0x30, 0x2E, 0x43, 0x31, 0x31, 0x2E, -+ 0x43, 0x31, 0x32, 0x2E, 0x43, 0x31, 0x33, 0x2E, -+ 0x43, 0x31, 0x34, 0x2E, 0x43, 0x31, 0x35, 0x2E, -+ 0x43, 0x31, 0x36, 0x2E, 0x43, 0x31, 0x37, 0x2E, -+ 0x43, 0x31, 0x38, 0x2E, 0x43, 0x31, 0x39, 0x2E, -+ 0x43, 0x32, 0x30, 0x2E, 0x43, 0x3A, 0x3A, 0x3D, -+ // Bytes 1cc0 - 1cff -+ 0x43, 0x3D, 0x3D, 0x3D, 0x43, 0x43, 0x6F, 0x2E, -+ 0x43, 0x46, 0x41, 0x58, 0x43, 0x47, 0x48, 0x7A, -+ 0x43, 0x47, 0x50, 0x61, 0x43, 0x49, 0x49, 0x49, -+ 0x43, 0x4C, 0x54, 0x44, 0x43, 0x4C, 0xC2, 0xB7, -+ 0x43, 0x4D, 0x48, 0x7A, 0x43, 0x4D, 0x50, 0x61, -+ 0x43, 0x4D, 0xCE, 0xA9, 0x43, 0x50, 0x50, 0x4D, -+ 0x43, 0x50, 0x50, 0x56, 0x43, 0x50, 0x54, 0x45, -+ 0x43, 0x54, 0x45, 0x4C, 0x43, 0x54, 0x48, 0x7A, -+ // Bytes 1d00 - 1d3f -+ 0x43, 0x56, 0x49, 0x49, 0x43, 0x58, 0x49, 0x49, -+ 0x43, 0x61, 0x2F, 0x63, 0x43, 0x61, 0x2F, 0x73, -+ 0x43, 0x61, 0xCA, 0xBE, 0x43, 0x62, 0x61, 0x72, -+ 0x43, 0x63, 0x2F, 0x6F, 0x43, 0x63, 0x2F, 0x75, -+ 0x43, 0x63, 0x61, 0x6C, 0x43, 0x63, 0x6D, 0x32, -+ 0x43, 0x63, 0x6D, 0x33, 0x43, 0x64, 0x6D, 0x32, -+ 0x43, 0x64, 0x6D, 0x33, 0x43, 0x65, 0x72, 0x67, -+ 0x43, 0x66, 0x66, 0x69, 0x43, 0x66, 0x66, 0x6C, -+ // Bytes 1d40 - 1d7f -+ 0x43, 0x67, 0x61, 0x6C, 0x43, 0x68, 0x50, 0x61, -+ 0x43, 0x69, 0x69, 0x69, 0x43, 0x6B, 0x48, 0x7A, -+ 0x43, 0x6B, 0x50, 0x61, 0x43, 0x6B, 0x6D, 0x32, -+ 0x43, 0x6B, 0x6D, 0x33, 0x43, 0x6B, 0xCE, 0xA9, -+ 0x43, 0x6C, 0x6F, 0x67, 0x43, 0x6C, 0xC2, 0xB7, -+ 0x43, 0x6D, 0x69, 0x6C, 0x43, 0x6D, 0x6D, 0x32, -+ 0x43, 0x6D, 0x6D, 0x33, 0x43, 0x6D, 0x6F, 0x6C, -+ 0x43, 0x72, 0x61, 0x64, 0x43, 0x76, 0x69, 0x69, -+ // Bytes 1d80 - 1dbf -+ 0x43, 0x78, 0x69, 0x69, 0x43, 0xC2, 0xB0, 0x43, -+ 0x43, 0xC2, 0xB0, 0x46, 0x43, 0xCA, 0xBC, 0x6E, -+ 0x43, 0xCE, 0xBC, 0x41, 0x43, 0xCE, 0xBC, 0x46, -+ 0x43, 0xCE, 0xBC, 0x56, 0x43, 0xCE, 0xBC, 0x57, -+ 0x43, 0xCE, 0xBC, 0x67, 0x43, 0xCE, 0xBC, 0x6C, -+ 0x43, 0xCE, 0xBC, 0x6D, 0x43, 0xCE, 0xBC, 0x73, -+ 0x44, 0x28, 0x31, 0x30, 0x29, 0x44, 0x28, 0x31, -+ 0x31, 0x29, 0x44, 0x28, 0x31, 0x32, 0x29, 0x44, -+ // Bytes 1dc0 - 1dff -+ 0x28, 0x31, 0x33, 0x29, 0x44, 0x28, 0x31, 0x34, -+ 0x29, 0x44, 0x28, 0x31, 0x35, 0x29, 0x44, 0x28, -+ 0x31, 0x36, 0x29, 0x44, 0x28, 0x31, 0x37, 0x29, -+ 0x44, 0x28, 0x31, 0x38, 0x29, 0x44, 0x28, 0x31, -+ 0x39, 0x29, 0x44, 0x28, 0x32, 0x30, 0x29, 0x44, -+ 0x30, 0xE7, 0x82, 0xB9, 0x44, 0x31, 0xE2, 0x81, -+ 0x84, 0x44, 0x31, 0xE6, 0x97, 0xA5, 0x44, 0x31, -+ 0xE6, 0x9C, 0x88, 0x44, 0x31, 0xE7, 0x82, 0xB9, -+ // Bytes 1e00 - 1e3f -+ 0x44, 0x32, 0xE6, 0x97, 0xA5, 0x44, 0x32, 0xE6, -+ 0x9C, 0x88, 0x44, 0x32, 0xE7, 0x82, 0xB9, 0x44, -+ 0x33, 0xE6, 0x97, 0xA5, 0x44, 0x33, 0xE6, 0x9C, -+ 0x88, 0x44, 0x33, 0xE7, 0x82, 0xB9, 0x44, 0x34, -+ 0xE6, 0x97, 0xA5, 0x44, 0x34, 0xE6, 0x9C, 0x88, -+ 0x44, 0x34, 0xE7, 0x82, 0xB9, 0x44, 0x35, 0xE6, -+ 0x97, 0xA5, 0x44, 0x35, 0xE6, 0x9C, 0x88, 0x44, -+ 0x35, 0xE7, 0x82, 0xB9, 0x44, 0x36, 0xE6, 0x97, -+ // Bytes 1e40 - 1e7f -+ 0xA5, 0x44, 0x36, 0xE6, 0x9C, 0x88, 0x44, 0x36, -+ 0xE7, 0x82, 0xB9, 0x44, 0x37, 0xE6, 0x97, 0xA5, -+ 0x44, 0x37, 0xE6, 0x9C, 0x88, 0x44, 0x37, 0xE7, -+ 0x82, 0xB9, 0x44, 0x38, 0xE6, 0x97, 0xA5, 0x44, -+ 0x38, 0xE6, 0x9C, 0x88, 0x44, 0x38, 0xE7, 0x82, -+ 0xB9, 0x44, 0x39, 0xE6, 0x97, 0xA5, 0x44, 0x39, -+ 0xE6, 0x9C, 0x88, 0x44, 0x39, 0xE7, 0x82, 0xB9, -+ 0x44, 0x56, 0x49, 0x49, 0x49, 0x44, 0x61, 0x2E, -+ // Bytes 1e80 - 1ebf -+ 0x6D, 0x2E, 0x44, 0x6B, 0x63, 0x61, 0x6C, 0x44, -+ 0x70, 0x2E, 0x6D, 0x2E, 0x44, 0x76, 0x69, 0x69, -+ 0x69, 0x44, 0xD5, 0xA5, 0xD6, 0x82, 0x44, 0xD5, -+ 0xB4, 0xD5, 0xA5, 0x44, 0xD5, 0xB4, 0xD5, 0xAB, -+ 0x44, 0xD5, 0xB4, 0xD5, 0xAD, 0x44, 0xD5, 0xB4, -+ 0xD5, 0xB6, 0x44, 0xD5, 0xBE, 0xD5, 0xB6, 0x44, -+ 0xD7, 0x90, 0xD7, 0x9C, 0x44, 0xD8, 0xA7, 0xD9, -+ 0xB4, 0x44, 0xD8, 0xA8, 0xD8, 0xAC, 0x44, 0xD8, -+ // Bytes 1ec0 - 1eff -+ 0xA8, 0xD8, 0xAD, 0x44, 0xD8, 0xA8, 0xD8, 0xAE, -+ 0x44, 0xD8, 0xA8, 0xD8, 0xB1, 0x44, 0xD8, 0xA8, -+ 0xD8, 0xB2, 0x44, 0xD8, 0xA8, 0xD9, 0x85, 0x44, -+ 0xD8, 0xA8, 0xD9, 0x86, 0x44, 0xD8, 0xA8, 0xD9, -+ 0x87, 0x44, 0xD8, 0xA8, 0xD9, 0x89, 0x44, 0xD8, -+ 0xA8, 0xD9, 0x8A, 0x44, 0xD8, 0xAA, 0xD8, 0xAC, -+ 0x44, 0xD8, 0xAA, 0xD8, 0xAD, 0x44, 0xD8, 0xAA, -+ 0xD8, 0xAE, 0x44, 0xD8, 0xAA, 0xD8, 0xB1, 0x44, -+ // Bytes 1f00 - 1f3f -+ 0xD8, 0xAA, 0xD8, 0xB2, 0x44, 0xD8, 0xAA, 0xD9, -+ 0x85, 0x44, 0xD8, 0xAA, 0xD9, 0x86, 0x44, 0xD8, -+ 0xAA, 0xD9, 0x87, 0x44, 0xD8, 0xAA, 0xD9, 0x89, -+ 0x44, 0xD8, 0xAA, 0xD9, 0x8A, 0x44, 0xD8, 0xAB, -+ 0xD8, 0xAC, 0x44, 0xD8, 0xAB, 0xD8, 0xB1, 0x44, -+ 0xD8, 0xAB, 0xD8, 0xB2, 0x44, 0xD8, 0xAB, 0xD9, -+ 0x85, 0x44, 0xD8, 0xAB, 0xD9, 0x86, 0x44, 0xD8, -+ 0xAB, 0xD9, 0x87, 0x44, 0xD8, 0xAB, 0xD9, 0x89, -+ // Bytes 1f40 - 1f7f -+ 0x44, 0xD8, 0xAB, 0xD9, 0x8A, 0x44, 0xD8, 0xAC, -+ 0xD8, 0xAD, 0x44, 0xD8, 0xAC, 0xD9, 0x85, 0x44, -+ 0xD8, 0xAC, 0xD9, 0x89, 0x44, 0xD8, 0xAC, 0xD9, -+ 0x8A, 0x44, 0xD8, 0xAD, 0xD8, 0xAC, 0x44, 0xD8, -+ 0xAD, 0xD9, 0x85, 0x44, 0xD8, 0xAD, 0xD9, 0x89, -+ 0x44, 0xD8, 0xAD, 0xD9, 0x8A, 0x44, 0xD8, 0xAE, -+ 0xD8, 0xAC, 0x44, 0xD8, 0xAE, 0xD8, 0xAD, 0x44, -+ 0xD8, 0xAE, 0xD9, 0x85, 0x44, 0xD8, 0xAE, 0xD9, -+ // Bytes 1f80 - 1fbf -+ 0x89, 0x44, 0xD8, 0xAE, 0xD9, 0x8A, 0x44, 0xD8, -+ 0xB3, 0xD8, 0xAC, 0x44, 0xD8, 0xB3, 0xD8, 0xAD, -+ 0x44, 0xD8, 0xB3, 0xD8, 0xAE, 0x44, 0xD8, 0xB3, -+ 0xD8, 0xB1, 0x44, 0xD8, 0xB3, 0xD9, 0x85, 0x44, -+ 0xD8, 0xB3, 0xD9, 0x87, 0x44, 0xD8, 0xB3, 0xD9, -+ 0x89, 0x44, 0xD8, 0xB3, 0xD9, 0x8A, 0x44, 0xD8, -+ 0xB4, 0xD8, 0xAC, 0x44, 0xD8, 0xB4, 0xD8, 0xAD, -+ 0x44, 0xD8, 0xB4, 0xD8, 0xAE, 0x44, 0xD8, 0xB4, -+ // Bytes 1fc0 - 1fff -+ 0xD8, 0xB1, 0x44, 0xD8, 0xB4, 0xD9, 0x85, 0x44, -+ 0xD8, 0xB4, 0xD9, 0x87, 0x44, 0xD8, 0xB4, 0xD9, -+ 0x89, 0x44, 0xD8, 0xB4, 0xD9, 0x8A, 0x44, 0xD8, -+ 0xB5, 0xD8, 0xAD, 0x44, 0xD8, 0xB5, 0xD8, 0xAE, -+ 0x44, 0xD8, 0xB5, 0xD8, 0xB1, 0x44, 0xD8, 0xB5, -+ 0xD9, 0x85, 0x44, 0xD8, 0xB5, 0xD9, 0x89, 0x44, -+ 0xD8, 0xB5, 0xD9, 0x8A, 0x44, 0xD8, 0xB6, 0xD8, -+ 0xAC, 0x44, 0xD8, 0xB6, 0xD8, 0xAD, 0x44, 0xD8, -+ // Bytes 2000 - 203f -+ 0xB6, 0xD8, 0xAE, 0x44, 0xD8, 0xB6, 0xD8, 0xB1, -+ 0x44, 0xD8, 0xB6, 0xD9, 0x85, 0x44, 0xD8, 0xB6, -+ 0xD9, 0x89, 0x44, 0xD8, 0xB6, 0xD9, 0x8A, 0x44, -+ 0xD8, 0xB7, 0xD8, 0xAD, 0x44, 0xD8, 0xB7, 0xD9, -+ 0x85, 0x44, 0xD8, 0xB7, 0xD9, 0x89, 0x44, 0xD8, -+ 0xB7, 0xD9, 0x8A, 0x44, 0xD8, 0xB8, 0xD9, 0x85, -+ 0x44, 0xD8, 0xB9, 0xD8, 0xAC, 0x44, 0xD8, 0xB9, -+ 0xD9, 0x85, 0x44, 0xD8, 0xB9, 0xD9, 0x89, 0x44, -+ // Bytes 2040 - 207f -+ 0xD8, 0xB9, 0xD9, 0x8A, 0x44, 0xD8, 0xBA, 0xD8, -+ 0xAC, 0x44, 0xD8, 0xBA, 0xD9, 0x85, 0x44, 0xD8, -+ 0xBA, 0xD9, 0x89, 0x44, 0xD8, 0xBA, 0xD9, 0x8A, -+ 0x44, 0xD9, 0x81, 0xD8, 0xAC, 0x44, 0xD9, 0x81, -+ 0xD8, 0xAD, 0x44, 0xD9, 0x81, 0xD8, 0xAE, 0x44, -+ 0xD9, 0x81, 0xD9, 0x85, 0x44, 0xD9, 0x81, 0xD9, -+ 0x89, 0x44, 0xD9, 0x81, 0xD9, 0x8A, 0x44, 0xD9, -+ 0x82, 0xD8, 0xAD, 0x44, 0xD9, 0x82, 0xD9, 0x85, -+ // Bytes 2080 - 20bf -+ 0x44, 0xD9, 0x82, 0xD9, 0x89, 0x44, 0xD9, 0x82, -+ 0xD9, 0x8A, 0x44, 0xD9, 0x83, 0xD8, 0xA7, 0x44, -+ 0xD9, 0x83, 0xD8, 0xAC, 0x44, 0xD9, 0x83, 0xD8, -+ 0xAD, 0x44, 0xD9, 0x83, 0xD8, 0xAE, 0x44, 0xD9, -+ 0x83, 0xD9, 0x84, 0x44, 0xD9, 0x83, 0xD9, 0x85, -+ 0x44, 0xD9, 0x83, 0xD9, 0x89, 0x44, 0xD9, 0x83, -+ 0xD9, 0x8A, 0x44, 0xD9, 0x84, 0xD8, 0xA7, 0x44, -+ 0xD9, 0x84, 0xD8, 0xAC, 0x44, 0xD9, 0x84, 0xD8, -+ // Bytes 20c0 - 20ff -+ 0xAD, 0x44, 0xD9, 0x84, 0xD8, 0xAE, 0x44, 0xD9, -+ 0x84, 0xD9, 0x85, 0x44, 0xD9, 0x84, 0xD9, 0x87, -+ 0x44, 0xD9, 0x84, 0xD9, 0x89, 0x44, 0xD9, 0x84, -+ 0xD9, 0x8A, 0x44, 0xD9, 0x85, 0xD8, 0xA7, 0x44, -+ 0xD9, 0x85, 0xD8, 0xAC, 0x44, 0xD9, 0x85, 0xD8, -+ 0xAD, 0x44, 0xD9, 0x85, 0xD8, 0xAE, 0x44, 0xD9, -+ 0x85, 0xD9, 0x85, 0x44, 0xD9, 0x85, 0xD9, 0x89, -+ 0x44, 0xD9, 0x85, 0xD9, 0x8A, 0x44, 0xD9, 0x86, -+ // Bytes 2100 - 213f -+ 0xD8, 0xAC, 0x44, 0xD9, 0x86, 0xD8, 0xAD, 0x44, -+ 0xD9, 0x86, 0xD8, 0xAE, 0x44, 0xD9, 0x86, 0xD8, -+ 0xB1, 0x44, 0xD9, 0x86, 0xD8, 0xB2, 0x44, 0xD9, -+ 0x86, 0xD9, 0x85, 0x44, 0xD9, 0x86, 0xD9, 0x86, -+ 0x44, 0xD9, 0x86, 0xD9, 0x87, 0x44, 0xD9, 0x86, -+ 0xD9, 0x89, 0x44, 0xD9, 0x86, 0xD9, 0x8A, 0x44, -+ 0xD9, 0x87, 0xD8, 0xAC, 0x44, 0xD9, 0x87, 0xD9, -+ 0x85, 0x44, 0xD9, 0x87, 0xD9, 0x89, 0x44, 0xD9, -+ // Bytes 2140 - 217f -+ 0x87, 0xD9, 0x8A, 0x44, 0xD9, 0x88, 0xD9, 0xB4, -+ 0x44, 0xD9, 0x8A, 0xD8, 0xAC, 0x44, 0xD9, 0x8A, -+ 0xD8, 0xAD, 0x44, 0xD9, 0x8A, 0xD8, 0xAE, 0x44, -+ 0xD9, 0x8A, 0xD8, 0xB1, 0x44, 0xD9, 0x8A, 0xD8, -+ 0xB2, 0x44, 0xD9, 0x8A, 0xD9, 0x85, 0x44, 0xD9, -+ 0x8A, 0xD9, 0x86, 0x44, 0xD9, 0x8A, 0xD9, 0x87, -+ 0x44, 0xD9, 0x8A, 0xD9, 0x89, 0x44, 0xD9, 0x8A, -+ 0xD9, 0x8A, 0x44, 0xD9, 0x8A, 0xD9, 0xB4, 0x44, -+ // Bytes 2180 - 21bf -+ 0xDB, 0x87, 0xD9, 0xB4, 0x45, 0x28, 0xE1, 0x84, -+ 0x80, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x82, 0x29, -+ 0x45, 0x28, 0xE1, 0x84, 0x83, 0x29, 0x45, 0x28, -+ 0xE1, 0x84, 0x85, 0x29, 0x45, 0x28, 0xE1, 0x84, -+ 0x86, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x87, 0x29, -+ 0x45, 0x28, 0xE1, 0x84, 0x89, 0x29, 0x45, 0x28, -+ 0xE1, 0x84, 0x8B, 0x29, 0x45, 0x28, 0xE1, 0x84, -+ 0x8C, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x8E, 0x29, -+ // Bytes 21c0 - 21ff -+ 0x45, 0x28, 0xE1, 0x84, 0x8F, 0x29, 0x45, 0x28, -+ 0xE1, 0x84, 0x90, 0x29, 0x45, 0x28, 0xE1, 0x84, -+ 0x91, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x92, 0x29, -+ 0x45, 0x28, 0xE4, 0xB8, 0x80, 0x29, 0x45, 0x28, -+ 0xE4, 0xB8, 0x83, 0x29, 0x45, 0x28, 0xE4, 0xB8, -+ 0x89, 0x29, 0x45, 0x28, 0xE4, 0xB9, 0x9D, 0x29, -+ 0x45, 0x28, 0xE4, 0xBA, 0x8C, 0x29, 0x45, 0x28, -+ 0xE4, 0xBA, 0x94, 0x29, 0x45, 0x28, 0xE4, 0xBB, -+ // Bytes 2200 - 223f -+ 0xA3, 0x29, 0x45, 0x28, 0xE4, 0xBC, 0x81, 0x29, -+ 0x45, 0x28, 0xE4, 0xBC, 0x91, 0x29, 0x45, 0x28, -+ 0xE5, 0x85, 0xAB, 0x29, 0x45, 0x28, 0xE5, 0x85, -+ 0xAD, 0x29, 0x45, 0x28, 0xE5, 0x8A, 0xB4, 0x29, -+ 0x45, 0x28, 0xE5, 0x8D, 0x81, 0x29, 0x45, 0x28, -+ 0xE5, 0x8D, 0x94, 0x29, 0x45, 0x28, 0xE5, 0x90, -+ 0x8D, 0x29, 0x45, 0x28, 0xE5, 0x91, 0xBC, 0x29, -+ 0x45, 0x28, 0xE5, 0x9B, 0x9B, 0x29, 0x45, 0x28, -+ // Bytes 2240 - 227f -+ 0xE5, 0x9C, 0x9F, 0x29, 0x45, 0x28, 0xE5, 0xAD, -+ 0xA6, 0x29, 0x45, 0x28, 0xE6, 0x97, 0xA5, 0x29, -+ 0x45, 0x28, 0xE6, 0x9C, 0x88, 0x29, 0x45, 0x28, -+ 0xE6, 0x9C, 0x89, 0x29, 0x45, 0x28, 0xE6, 0x9C, -+ 0xA8, 0x29, 0x45, 0x28, 0xE6, 0xA0, 0xAA, 0x29, -+ 0x45, 0x28, 0xE6, 0xB0, 0xB4, 0x29, 0x45, 0x28, -+ 0xE7, 0x81, 0xAB, 0x29, 0x45, 0x28, 0xE7, 0x89, -+ 0xB9, 0x29, 0x45, 0x28, 0xE7, 0x9B, 0xA3, 0x29, -+ // Bytes 2280 - 22bf -+ 0x45, 0x28, 0xE7, 0xA4, 0xBE, 0x29, 0x45, 0x28, -+ 0xE7, 0xA5, 0x9D, 0x29, 0x45, 0x28, 0xE7, 0xA5, -+ 0xAD, 0x29, 0x45, 0x28, 0xE8, 0x87, 0xAA, 0x29, -+ 0x45, 0x28, 0xE8, 0x87, 0xB3, 0x29, 0x45, 0x28, -+ 0xE8, 0xB2, 0xA1, 0x29, 0x45, 0x28, 0xE8, 0xB3, -+ 0x87, 0x29, 0x45, 0x28, 0xE9, 0x87, 0x91, 0x29, -+ 0x45, 0x30, 0xE2, 0x81, 0x84, 0x33, 0x45, 0x31, -+ 0x30, 0xE6, 0x97, 0xA5, 0x45, 0x31, 0x30, 0xE6, -+ // Bytes 22c0 - 22ff -+ 0x9C, 0x88, 0x45, 0x31, 0x30, 0xE7, 0x82, 0xB9, -+ 0x45, 0x31, 0x31, 0xE6, 0x97, 0xA5, 0x45, 0x31, -+ 0x31, 0xE6, 0x9C, 0x88, 0x45, 0x31, 0x31, 0xE7, -+ 0x82, 0xB9, 0x45, 0x31, 0x32, 0xE6, 0x97, 0xA5, -+ 0x45, 0x31, 0x32, 0xE6, 0x9C, 0x88, 0x45, 0x31, -+ 0x32, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x33, 0xE6, -+ 0x97, 0xA5, 0x45, 0x31, 0x33, 0xE7, 0x82, 0xB9, -+ 0x45, 0x31, 0x34, 0xE6, 0x97, 0xA5, 0x45, 0x31, -+ // Bytes 2300 - 233f -+ 0x34, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x35, 0xE6, -+ 0x97, 0xA5, 0x45, 0x31, 0x35, 0xE7, 0x82, 0xB9, -+ 0x45, 0x31, 0x36, 0xE6, 0x97, 0xA5, 0x45, 0x31, -+ 0x36, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x37, 0xE6, -+ 0x97, 0xA5, 0x45, 0x31, 0x37, 0xE7, 0x82, 0xB9, -+ 0x45, 0x31, 0x38, 0xE6, 0x97, 0xA5, 0x45, 0x31, -+ 0x38, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x39, 0xE6, -+ 0x97, 0xA5, 0x45, 0x31, 0x39, 0xE7, 0x82, 0xB9, -+ // Bytes 2340 - 237f -+ 0x45, 0x31, 0xE2, 0x81, 0x84, 0x32, 0x45, 0x31, -+ 0xE2, 0x81, 0x84, 0x33, 0x45, 0x31, 0xE2, 0x81, -+ 0x84, 0x34, 0x45, 0x31, 0xE2, 0x81, 0x84, 0x35, -+ 0x45, 0x31, 0xE2, 0x81, 0x84, 0x36, 0x45, 0x31, -+ 0xE2, 0x81, 0x84, 0x37, 0x45, 0x31, 0xE2, 0x81, -+ 0x84, 0x38, 0x45, 0x31, 0xE2, 0x81, 0x84, 0x39, -+ 0x45, 0x32, 0x30, 0xE6, 0x97, 0xA5, 0x45, 0x32, -+ 0x30, 0xE7, 0x82, 0xB9, 0x45, 0x32, 0x31, 0xE6, -+ // Bytes 2380 - 23bf -+ 0x97, 0xA5, 0x45, 0x32, 0x31, 0xE7, 0x82, 0xB9, -+ 0x45, 0x32, 0x32, 0xE6, 0x97, 0xA5, 0x45, 0x32, -+ 0x32, 0xE7, 0x82, 0xB9, 0x45, 0x32, 0x33, 0xE6, -+ 0x97, 0xA5, 0x45, 0x32, 0x33, 0xE7, 0x82, 0xB9, -+ 0x45, 0x32, 0x34, 0xE6, 0x97, 0xA5, 0x45, 0x32, -+ 0x34, 0xE7, 0x82, 0xB9, 0x45, 0x32, 0x35, 0xE6, -+ 0x97, 0xA5, 0x45, 0x32, 0x36, 0xE6, 0x97, 0xA5, -+ 0x45, 0x32, 0x37, 0xE6, 0x97, 0xA5, 0x45, 0x32, -+ // Bytes 23c0 - 23ff -+ 0x38, 0xE6, 0x97, 0xA5, 0x45, 0x32, 0x39, 0xE6, -+ 0x97, 0xA5, 0x45, 0x32, 0xE2, 0x81, 0x84, 0x33, -+ 0x45, 0x32, 0xE2, 0x81, 0x84, 0x35, 0x45, 0x33, -+ 0x30, 0xE6, 0x97, 0xA5, 0x45, 0x33, 0x31, 0xE6, -+ 0x97, 0xA5, 0x45, 0x33, 0xE2, 0x81, 0x84, 0x34, -+ 0x45, 0x33, 0xE2, 0x81, 0x84, 0x35, 0x45, 0x33, -+ 0xE2, 0x81, 0x84, 0x38, 0x45, 0x34, 0xE2, 0x81, -+ 0x84, 0x35, 0x45, 0x35, 0xE2, 0x81, 0x84, 0x36, -+ // Bytes 2400 - 243f -+ 0x45, 0x35, 0xE2, 0x81, 0x84, 0x38, 0x45, 0x37, -+ 0xE2, 0x81, 0x84, 0x38, 0x45, 0x41, 0xE2, 0x88, -+ 0x95, 0x6D, 0x45, 0x56, 0xE2, 0x88, 0x95, 0x6D, -+ 0x45, 0x6D, 0xE2, 0x88, 0x95, 0x73, 0x46, 0x31, -+ 0xE2, 0x81, 0x84, 0x31, 0x30, 0x46, 0x43, 0xE2, -+ 0x88, 0x95, 0x6B, 0x67, 0x46, 0x6D, 0xE2, 0x88, -+ 0x95, 0x73, 0x32, 0x46, 0xD8, 0xA8, 0xD8, 0xAD, -+ 0xD9, 0x8A, 0x46, 0xD8, 0xA8, 0xD8, 0xAE, 0xD9, -+ // Bytes 2440 - 247f -+ 0x8A, 0x46, 0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x85, -+ 0x46, 0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x89, 0x46, -+ 0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD8, -+ 0xAA, 0xD8, 0xAD, 0xD8, 0xAC, 0x46, 0xD8, 0xAA, -+ 0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD8, 0xAA, 0xD8, -+ 0xAE, 0xD9, 0x85, 0x46, 0xD8, 0xAA, 0xD8, 0xAE, -+ 0xD9, 0x89, 0x46, 0xD8, 0xAA, 0xD8, 0xAE, 0xD9, -+ 0x8A, 0x46, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAC, -+ // Bytes 2480 - 24bf -+ 0x46, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAD, 0x46, -+ 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAE, 0x46, 0xD8, -+ 0xAA, 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8, 0xAA, -+ 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8, 0xAC, 0xD8, -+ 0xAD, 0xD9, 0x89, 0x46, 0xD8, 0xAC, 0xD8, 0xAD, -+ 0xD9, 0x8A, 0x46, 0xD8, 0xAC, 0xD9, 0x85, 0xD8, -+ 0xAD, 0x46, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x89, -+ 0x46, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x8A, 0x46, -+ // Bytes 24c0 - 24ff -+ 0xD8, 0xAD, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD8, -+ 0xAD, 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8, 0xAD, -+ 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8, 0xB3, 0xD8, -+ 0xAC, 0xD8, 0xAD, 0x46, 0xD8, 0xB3, 0xD8, 0xAC, -+ 0xD9, 0x89, 0x46, 0xD8, 0xB3, 0xD8, 0xAD, 0xD8, -+ 0xAC, 0x46, 0xD8, 0xB3, 0xD8, 0xAE, 0xD9, 0x89, -+ 0x46, 0xD8, 0xB3, 0xD8, 0xAE, 0xD9, 0x8A, 0x46, -+ 0xD8, 0xB3, 0xD9, 0x85, 0xD8, 0xAC, 0x46, 0xD8, -+ // Bytes 2500 - 253f -+ 0xB3, 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD8, 0xB3, -+ 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD8, 0xB4, 0xD8, -+ 0xAC, 0xD9, 0x8A, 0x46, 0xD8, 0xB4, 0xD8, 0xAD, -+ 0xD9, 0x85, 0x46, 0xD8, 0xB4, 0xD8, 0xAD, 0xD9, -+ 0x8A, 0x46, 0xD8, 0xB4, 0xD9, 0x85, 0xD8, 0xAE, -+ 0x46, 0xD8, 0xB4, 0xD9, 0x85, 0xD9, 0x85, 0x46, -+ 0xD8, 0xB5, 0xD8, 0xAD, 0xD8, 0xAD, 0x46, 0xD8, -+ 0xB5, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD8, 0xB5, -+ // Bytes 2540 - 257f -+ 0xD9, 0x84, 0xD9, 0x89, 0x46, 0xD8, 0xB5, 0xD9, -+ 0x84, 0xDB, 0x92, 0x46, 0xD8, 0xB5, 0xD9, 0x85, -+ 0xD9, 0x85, 0x46, 0xD8, 0xB6, 0xD8, 0xAD, 0xD9, -+ 0x89, 0x46, 0xD8, 0xB6, 0xD8, 0xAD, 0xD9, 0x8A, -+ 0x46, 0xD8, 0xB6, 0xD8, 0xAE, 0xD9, 0x85, 0x46, -+ 0xD8, 0xB7, 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD8, -+ 0xB7, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD8, 0xB7, -+ 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8, 0xB9, 0xD8, -+ // Bytes 2580 - 25bf -+ 0xAC, 0xD9, 0x85, 0x46, 0xD8, 0xB9, 0xD9, 0x85, -+ 0xD9, 0x85, 0x46, 0xD8, 0xB9, 0xD9, 0x85, 0xD9, -+ 0x89, 0x46, 0xD8, 0xB9, 0xD9, 0x85, 0xD9, 0x8A, -+ 0x46, 0xD8, 0xBA, 0xD9, 0x85, 0xD9, 0x85, 0x46, -+ 0xD8, 0xBA, 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8, -+ 0xBA, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x81, -+ 0xD8, 0xAE, 0xD9, 0x85, 0x46, 0xD9, 0x81, 0xD9, -+ 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x82, 0xD9, 0x84, -+ // Bytes 25c0 - 25ff -+ 0xDB, 0x92, 0x46, 0xD9, 0x82, 0xD9, 0x85, 0xD8, -+ 0xAD, 0x46, 0xD9, 0x82, 0xD9, 0x85, 0xD9, 0x85, -+ 0x46, 0xD9, 0x82, 0xD9, 0x85, 0xD9, 0x8A, 0x46, -+ 0xD9, 0x83, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD9, -+ 0x83, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x84, -+ 0xD8, 0xAC, 0xD8, 0xAC, 0x46, 0xD9, 0x84, 0xD8, -+ 0xAC, 0xD9, 0x85, 0x46, 0xD9, 0x84, 0xD8, 0xAC, -+ 0xD9, 0x8A, 0x46, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, -+ // Bytes 2600 - 263f -+ 0x85, 0x46, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x89, -+ 0x46, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, -+ 0xD9, 0x84, 0xD8, 0xAE, 0xD9, 0x85, 0x46, 0xD9, -+ 0x84, 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD9, 0x84, -+ 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x85, 0xD8, -+ 0xAC, 0xD8, 0xAD, 0x46, 0xD9, 0x85, 0xD8, 0xAC, -+ 0xD8, 0xAE, 0x46, 0xD9, 0x85, 0xD8, 0xAC, 0xD9, -+ 0x85, 0x46, 0xD9, 0x85, 0xD8, 0xAC, 0xD9, 0x8A, -+ // Bytes 2640 - 267f -+ 0x46, 0xD9, 0x85, 0xD8, 0xAD, 0xD8, 0xAC, 0x46, -+ 0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD9, -+ 0x85, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD9, 0x85, -+ 0xD8, 0xAE, 0xD8, 0xAC, 0x46, 0xD9, 0x85, 0xD8, -+ 0xAE, 0xD9, 0x85, 0x46, 0xD9, 0x85, 0xD8, 0xAE, -+ 0xD9, 0x8A, 0x46, 0xD9, 0x85, 0xD9, 0x85, 0xD9, -+ 0x8A, 0x46, 0xD9, 0x86, 0xD8, 0xAC, 0xD8, 0xAD, -+ 0x46, 0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x85, 0x46, -+ // Bytes 2680 - 26bf -+ 0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x89, 0x46, 0xD9, -+ 0x86, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD9, 0x86, -+ 0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD9, 0x86, 0xD8, -+ 0xAD, 0xD9, 0x89, 0x46, 0xD9, 0x86, 0xD8, 0xAD, -+ 0xD9, 0x8A, 0x46, 0xD9, 0x86, 0xD9, 0x85, 0xD9, -+ 0x89, 0x46, 0xD9, 0x86, 0xD9, 0x85, 0xD9, 0x8A, -+ 0x46, 0xD9, 0x87, 0xD9, 0x85, 0xD8, 0xAC, 0x46, -+ 0xD9, 0x87, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD9, -+ // Bytes 26c0 - 26ff -+ 0x8A, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD9, 0x8A, -+ 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD9, 0x8A, 0xD9, -+ 0x85, 0xD9, 0x85, 0x46, 0xD9, 0x8A, 0xD9, 0x85, -+ 0xD9, 0x8A, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, -+ 0xA7, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAC, -+ 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAD, 0x46, -+ 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAE, 0x46, 0xD9, -+ 0x8A, 0xD9, 0x94, 0xD8, 0xB1, 0x46, 0xD9, 0x8A, -+ // Bytes 2700 - 273f -+ 0xD9, 0x94, 0xD8, 0xB2, 0x46, 0xD9, 0x8A, 0xD9, -+ 0x94, 0xD9, 0x85, 0x46, 0xD9, 0x8A, 0xD9, 0x94, -+ 0xD9, 0x86, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, -+ 0x87, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x88, -+ 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x89, 0x46, -+ 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x8A, 0x46, 0xD9, -+ 0x8A, 0xD9, 0x94, 0xDB, 0x86, 0x46, 0xD9, 0x8A, -+ 0xD9, 0x94, 0xDB, 0x87, 0x46, 0xD9, 0x8A, 0xD9, -+ // Bytes 2740 - 277f -+ 0x94, 0xDB, 0x88, 0x46, 0xD9, 0x8A, 0xD9, 0x94, -+ 0xDB, 0x90, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, -+ 0x95, 0x46, 0xE0, 0xB9, 0x8D, 0xE0, 0xB8, 0xB2, -+ 0x46, 0xE0, 0xBA, 0xAB, 0xE0, 0xBA, 0x99, 0x46, -+ 0xE0, 0xBA, 0xAB, 0xE0, 0xBA, 0xA1, 0x46, 0xE0, -+ 0xBB, 0x8D, 0xE0, 0xBA, 0xB2, 0x46, 0xE0, 0xBD, -+ 0x80, 0xE0, 0xBE, 0xB5, 0x46, 0xE0, 0xBD, 0x82, -+ 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBD, 0x8C, 0xE0, -+ // Bytes 2780 - 27bf -+ 0xBE, 0xB7, 0x46, 0xE0, 0xBD, 0x91, 0xE0, 0xBE, -+ 0xB7, 0x46, 0xE0, 0xBD, 0x96, 0xE0, 0xBE, 0xB7, -+ 0x46, 0xE0, 0xBD, 0x9B, 0xE0, 0xBE, 0xB7, 0x46, -+ 0xE0, 0xBE, 0x90, 0xE0, 0xBE, 0xB5, 0x46, 0xE0, -+ 0xBE, 0x92, 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE, -+ 0x9C, 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0xA1, -+ 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0xA6, 0xE0, -+ 0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0xAB, 0xE0, 0xBE, -+ // Bytes 27c0 - 27ff -+ 0xB7, 0x46, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, -+ 0x46, 0xE2, 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0x46, -+ 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0x46, 0xE2, -+ 0x88, 0xAE, 0xE2, 0x88, 0xAE, 0x46, 0xE3, 0x81, -+ 0xBB, 0xE3, 0x81, 0x8B, 0x46, 0xE3, 0x82, 0x88, -+ 0xE3, 0x82, 0x8A, 0x46, 0xE3, 0x82, 0xAD, 0xE3, -+ 0x83, 0xAD, 0x46, 0xE3, 0x82, 0xB3, 0xE3, 0x82, -+ 0xB3, 0x46, 0xE3, 0x82, 0xB3, 0xE3, 0x83, 0x88, -+ // Bytes 2800 - 283f -+ 0x46, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xB3, 0x46, -+ 0xE3, 0x83, 0x8A, 0xE3, 0x83, 0x8E, 0x46, 0xE3, -+ 0x83, 0x9B, 0xE3, 0x83, 0xB3, 0x46, 0xE3, 0x83, -+ 0x9F, 0xE3, 0x83, 0xAA, 0x46, 0xE3, 0x83, 0xAA, -+ 0xE3, 0x83, 0xA9, 0x46, 0xE3, 0x83, 0xAC, 0xE3, -+ 0x83, 0xA0, 0x46, 0xE4, 0xBB, 0xA4, 0xE5, 0x92, -+ 0x8C, 0x46, 0xE5, 0xA4, 0xA7, 0xE6, 0xAD, 0xA3, -+ 0x46, 0xE5, 0xB9, 0xB3, 0xE6, 0x88, 0x90, 0x46, -+ // Bytes 2840 - 287f -+ 0xE6, 0x98, 0x8E, 0xE6, 0xB2, 0xBB, 0x46, 0xE6, -+ 0x98, 0xAD, 0xE5, 0x92, 0x8C, 0x47, 0x72, 0x61, -+ 0x64, 0xE2, 0x88, 0x95, 0x73, 0x47, 0xE3, 0x80, -+ 0x94, 0x53, 0xE3, 0x80, 0x95, 0x48, 0x28, 0xE1, -+ 0x84, 0x80, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, -+ 0xE1, 0x84, 0x82, 0xE1, 0x85, 0xA1, 0x29, 0x48, -+ 0x28, 0xE1, 0x84, 0x83, 0xE1, 0x85, 0xA1, 0x29, -+ 0x48, 0x28, 0xE1, 0x84, 0x85, 0xE1, 0x85, 0xA1, -+ // Bytes 2880 - 28bf -+ 0x29, 0x48, 0x28, 0xE1, 0x84, 0x86, 0xE1, 0x85, -+ 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x87, 0xE1, -+ 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x89, -+ 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, -+ 0x8B, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, -+ 0x84, 0x8C, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, -+ 0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xAE, 0x29, 0x48, -+ 0x28, 0xE1, 0x84, 0x8E, 0xE1, 0x85, 0xA1, 0x29, -+ // Bytes 28c0 - 28ff -+ 0x48, 0x28, 0xE1, 0x84, 0x8F, 0xE1, 0x85, 0xA1, -+ 0x29, 0x48, 0x28, 0xE1, 0x84, 0x90, 0xE1, 0x85, -+ 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x91, 0xE1, -+ 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x92, -+ 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x72, 0x61, 0x64, -+ 0xE2, 0x88, 0x95, 0x73, 0x32, 0x48, 0xD8, 0xA7, -+ 0xD9, 0x83, 0xD8, 0xA8, 0xD8, 0xB1, 0x48, 0xD8, -+ 0xA7, 0xD9, 0x84, 0xD9, 0x84, 0xD9, 0x87, 0x48, -+ // Bytes 2900 - 293f -+ 0xD8, 0xB1, 0xD8, 0xB3, 0xD9, 0x88, 0xD9, 0x84, -+ 0x48, 0xD8, 0xB1, 0xDB, 0x8C, 0xD8, 0xA7, 0xD9, -+ 0x84, 0x48, 0xD8, 0xB5, 0xD9, 0x84, 0xD8, 0xB9, -+ 0xD9, 0x85, 0x48, 0xD8, 0xB9, 0xD9, 0x84, 0xD9, -+ 0x8A, 0xD9, 0x87, 0x48, 0xD9, 0x85, 0xD8, 0xAD, -+ 0xD9, 0x85, 0xD8, 0xAF, 0x48, 0xD9, 0x88, 0xD8, -+ 0xB3, 0xD9, 0x84, 0xD9, 0x85, 0x49, 0xE2, 0x80, -+ 0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0x49, -+ // Bytes 2940 - 297f -+ 0xE2, 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0xE2, 0x80, -+ 0xB5, 0x49, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, -+ 0xE2, 0x88, 0xAB, 0x49, 0xE2, 0x88, 0xAE, 0xE2, -+ 0x88, 0xAE, 0xE2, 0x88, 0xAE, 0x49, 0xE3, 0x80, -+ 0x94, 0xE4, 0xB8, 0x89, 0xE3, 0x80, 0x95, 0x49, -+ 0xE3, 0x80, 0x94, 0xE4, 0xBA, 0x8C, 0xE3, 0x80, -+ 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE5, 0x8B, 0x9D, -+ 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE5, -+ // Bytes 2980 - 29bf -+ 0xAE, 0x89, 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80, -+ 0x94, 0xE6, 0x89, 0x93, 0xE3, 0x80, 0x95, 0x49, -+ 0xE3, 0x80, 0x94, 0xE6, 0x95, 0x97, 0xE3, 0x80, -+ 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE6, 0x9C, 0xAC, -+ 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE7, -+ 0x82, 0xB9, 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80, -+ 0x94, 0xE7, 0x9B, 0x97, 0xE3, 0x80, 0x95, 0x49, -+ 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xBC, 0xE3, 0x83, -+ // Bytes 29c0 - 29ff -+ 0xAB, 0x49, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xB3, -+ 0xE3, 0x83, 0x81, 0x49, 0xE3, 0x82, 0xA6, 0xE3, -+ 0x82, 0xA9, 0xE3, 0x83, 0xB3, 0x49, 0xE3, 0x82, -+ 0xAA, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xB9, 0x49, -+ 0xE3, 0x82, 0xAA, 0xE3, 0x83, 0xBC, 0xE3, 0x83, -+ 0xA0, 0x49, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0xA4, -+ 0xE3, 0x83, 0xAA, 0x49, 0xE3, 0x82, 0xB1, 0xE3, -+ 0x83, 0xBC, 0xE3, 0x82, 0xB9, 0x49, 0xE3, 0x82, -+ // Bytes 2a00 - 2a3f -+ 0xB3, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x8A, 0x49, -+ 0xE3, 0x82, 0xBB, 0xE3, 0x83, 0xB3, 0xE3, 0x83, -+ 0x81, 0x49, 0xE3, 0x82, 0xBB, 0xE3, 0x83, 0xB3, -+ 0xE3, 0x83, 0x88, 0x49, 0xE3, 0x83, 0x86, 0xE3, -+ 0x82, 0x99, 0xE3, 0x82, 0xB7, 0x49, 0xE3, 0x83, -+ 0x88, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB, 0x49, -+ 0xE3, 0x83, 0x8E, 0xE3, 0x83, 0x83, 0xE3, 0x83, -+ 0x88, 0x49, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0xA4, -+ // Bytes 2a40 - 2a7f -+ 0xE3, 0x83, 0x84, 0x49, 0xE3, 0x83, 0x92, 0xE3, -+ 0x82, 0x99, 0xE3, 0x83, 0xAB, 0x49, 0xE3, 0x83, -+ 0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xB3, 0x49, -+ 0xE3, 0x83, 0x95, 0xE3, 0x83, 0xA9, 0xE3, 0x83, -+ 0xB3, 0x49, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, -+ 0xE3, 0x82, 0xBD, 0x49, 0xE3, 0x83, 0x98, 0xE3, -+ 0x83, 0xAB, 0xE3, 0x83, 0x84, 0x49, 0xE3, 0x83, -+ 0x9B, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB, 0x49, -+ // Bytes 2a80 - 2abf -+ 0xE3, 0x83, 0x9B, 0xE3, 0x83, 0xBC, 0xE3, 0x83, -+ 0xB3, 0x49, 0xE3, 0x83, 0x9E, 0xE3, 0x82, 0xA4, -+ 0xE3, 0x83, 0xAB, 0x49, 0xE3, 0x83, 0x9E, 0xE3, -+ 0x83, 0x83, 0xE3, 0x83, 0x8F, 0x49, 0xE3, 0x83, -+ 0x9E, 0xE3, 0x83, 0xAB, 0xE3, 0x82, 0xAF, 0x49, -+ 0xE3, 0x83, 0xA4, 0xE3, 0x83, 0xBC, 0xE3, 0x83, -+ 0xAB, 0x49, 0xE3, 0x83, 0xA6, 0xE3, 0x82, 0xA2, -+ 0xE3, 0x83, 0xB3, 0x49, 0xE3, 0x83, 0xAF, 0xE3, -+ // Bytes 2ac0 - 2aff -+ 0x83, 0x83, 0xE3, 0x83, 0x88, 0x4C, 0xE2, 0x80, -+ 0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0xE2, -+ 0x80, 0xB2, 0x4C, 0xE2, 0x88, 0xAB, 0xE2, 0x88, -+ 0xAB, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0x4C, -+ 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xAB, 0xE3, 0x83, -+ 0x95, 0xE3, 0x82, 0xA1, 0x4C, 0xE3, 0x82, 0xA8, -+ 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xAB, 0xE3, 0x83, -+ 0xBC, 0x4C, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, -+ // Bytes 2b00 - 2b3f -+ 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xB3, 0x4C, 0xE3, -+ 0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xB3, -+ 0xE3, 0x83, 0x9E, 0x4C, 0xE3, 0x82, 0xAB, 0xE3, -+ 0x83, 0xA9, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, -+ 0x4C, 0xE3, 0x82, 0xAB, 0xE3, 0x83, 0xAD, 0xE3, -+ 0x83, 0xAA, 0xE3, 0x83, 0xBC, 0x4C, 0xE3, 0x82, -+ 0xAD, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0x8B, 0xE3, -+ 0x83, 0xBC, 0x4C, 0xE3, 0x82, 0xAD, 0xE3, 0x83, -+ // Bytes 2b40 - 2b7f -+ 0xA5, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xBC, 0x4C, -+ 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x83, -+ 0xA9, 0xE3, 0x83, 0xA0, 0x4C, 0xE3, 0x82, 0xAF, -+ 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xBC, 0xE3, 0x83, -+ 0x8D, 0x4C, 0xE3, 0x82, 0xB5, 0xE3, 0x82, 0xA4, -+ 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAB, 0x4C, 0xE3, -+ 0x82, 0xBF, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, -+ 0xE3, 0x82, 0xB9, 0x4C, 0xE3, 0x83, 0x8F, 0xE3, -+ // Bytes 2b80 - 2bbf -+ 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x84, -+ 0x4C, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3, -+ 0x82, 0xAF, 0xE3, 0x83, 0xAB, 0x4C, 0xE3, 0x83, -+ 0x95, 0xE3, 0x82, 0xA3, 0xE3, 0x83, 0xBC, 0xE3, -+ 0x83, 0x88, 0x4C, 0xE3, 0x83, 0x98, 0xE3, 0x82, -+ 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xBF, 0x4C, -+ 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x83, -+ 0x8B, 0xE3, 0x83, 0x92, 0x4C, 0xE3, 0x83, 0x98, -+ // Bytes 2bc0 - 2bff -+ 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xB3, 0xE3, 0x82, -+ 0xB9, 0x4C, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x99, -+ 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x88, 0x4C, 0xE3, -+ 0x83, 0x9E, 0xE3, 0x82, 0xA4, 0xE3, 0x82, 0xAF, -+ 0xE3, 0x83, 0xAD, 0x4C, 0xE3, 0x83, 0x9F, 0xE3, -+ 0x82, 0xAF, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xB3, -+ 0x4C, 0xE3, 0x83, 0xA1, 0xE3, 0x83, 0xBC, 0xE3, -+ 0x83, 0x88, 0xE3, 0x83, 0xAB, 0x4C, 0xE3, 0x83, -+ // Bytes 2c00 - 2c3f -+ 0xAA, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, 0xE3, -+ 0x83, 0xAB, 0x4C, 0xE3, 0x83, 0xAB, 0xE3, 0x83, -+ 0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0x4C, -+ 0xE6, 0xA0, 0xAA, 0xE5, 0xBC, 0x8F, 0xE4, 0xBC, -+ 0x9A, 0xE7, 0xA4, 0xBE, 0x4E, 0x28, 0xE1, 0x84, -+ 0x8B, 0xE1, 0x85, 0xA9, 0xE1, 0x84, 0x92, 0xE1, -+ 0x85, 0xAE, 0x29, 0x4F, 0xD8, 0xAC, 0xD9, 0x84, -+ 0x20, 0xD8, 0xAC, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, -+ // Bytes 2c40 - 2c7f -+ 0x84, 0xD9, 0x87, 0x4F, 0xE3, 0x82, 0xA2, 0xE3, -+ 0x83, 0x8F, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, -+ 0xE3, 0x83, 0x88, 0x4F, 0xE3, 0x82, 0xA2, 0xE3, -+ 0x83, 0xB3, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, -+ 0xE3, 0x82, 0xA2, 0x4F, 0xE3, 0x82, 0xAD, 0xE3, -+ 0x83, 0xAD, 0xE3, 0x83, 0xAF, 0xE3, 0x83, 0x83, -+ 0xE3, 0x83, 0x88, 0x4F, 0xE3, 0x82, 0xB5, 0xE3, -+ 0x83, 0xB3, 0xE3, 0x83, 0x81, 0xE3, 0x83, 0xBC, -+ // Bytes 2c80 - 2cbf -+ 0xE3, 0x83, 0xA0, 0x4F, 0xE3, 0x83, 0x8F, 0xE3, -+ 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAC, -+ 0xE3, 0x83, 0xAB, 0x4F, 0xE3, 0x83, 0x98, 0xE3, -+ 0x82, 0xAF, 0xE3, 0x82, 0xBF, 0xE3, 0x83, 0xBC, -+ 0xE3, 0x83, 0xAB, 0x4F, 0xE3, 0x83, 0x9B, 0xE3, -+ 0x82, 0x9A, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xB3, -+ 0xE3, 0x83, 0x88, 0x4F, 0xE3, 0x83, 0x9E, 0xE3, -+ 0x83, 0xB3, 0xE3, 0x82, 0xB7, 0xE3, 0x83, 0xA7, -+ // Bytes 2cc0 - 2cff -+ 0xE3, 0x83, 0xB3, 0x4F, 0xE3, 0x83, 0xA1, 0xE3, -+ 0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0x88, -+ 0xE3, 0x83, 0xB3, 0x4F, 0xE3, 0x83, 0xAB, 0xE3, -+ 0x83, 0xBC, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x99, -+ 0xE3, 0x83, 0xAB, 0x51, 0x28, 0xE1, 0x84, 0x8B, -+ 0xE1, 0x85, 0xA9, 0xE1, 0x84, 0x8C, 0xE1, 0x85, -+ 0xA5, 0xE1, 0x86, 0xAB, 0x29, 0x52, 0xE3, 0x82, -+ 0xAD, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB, 0xE3, -+ // Bytes 2d00 - 2d3f -+ 0x82, 0xBF, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, -+ 0x52, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xAD, 0xE3, -+ 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xA9, -+ 0xE3, 0x83, 0xA0, 0x52, 0xE3, 0x82, 0xAD, 0xE3, -+ 0x83, 0xAD, 0xE3, 0x83, 0xA1, 0xE3, 0x83, 0xBC, -+ 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB, 0x52, 0xE3, -+ 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xA9, -+ 0xE3, 0x83, 0xA0, 0xE3, 0x83, 0x88, 0xE3, 0x83, -+ // Bytes 2d40 - 2d7f -+ 0xB3, 0x52, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAB, -+ 0xE3, 0x82, 0xBB, 0xE3, 0x82, 0x99, 0xE3, 0x82, -+ 0xA4, 0xE3, 0x83, 0xAD, 0x52, 0xE3, 0x83, 0x8F, -+ 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3, 0x82, -+ 0xBB, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x88, 0x52, -+ 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x82, -+ 0xA2, 0xE3, 0x82, 0xB9, 0xE3, 0x83, 0x88, 0xE3, -+ 0x83, 0xAB, 0x52, 0xE3, 0x83, 0x95, 0xE3, 0x82, -+ // Bytes 2d80 - 2dbf -+ 0x99, 0xE3, 0x83, 0x83, 0xE3, 0x82, 0xB7, 0xE3, -+ 0x82, 0xA7, 0xE3, 0x83, 0xAB, 0x52, 0xE3, 0x83, -+ 0x9F, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0x8F, 0xE3, -+ 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB, -+ 0x52, 0xE3, 0x83, 0xAC, 0xE3, 0x83, 0xB3, 0xE3, -+ 0x83, 0x88, 0xE3, 0x82, 0xB1, 0xE3, 0x82, 0x99, -+ 0xE3, 0x83, 0xB3, 0x61, 0xD8, 0xB5, 0xD9, 0x84, -+ 0xD9, 0x89, 0x20, 0xD8, 0xA7, 0xD9, 0x84, 0xD9, -+ // Bytes 2dc0 - 2dff -+ 0x84, 0xD9, 0x87, 0x20, 0xD8, 0xB9, 0xD9, 0x84, -+ 0xD9, 0x8A, 0xD9, 0x87, 0x20, 0xD9, 0x88, 0xD8, -+ 0xB3, 0xD9, 0x84, 0xD9, 0x85, 0x06, 0xE0, 0xA7, -+ 0x87, 0xE0, 0xA6, 0xBE, 0x01, 0x06, 0xE0, 0xA7, -+ 0x87, 0xE0, 0xA7, 0x97, 0x01, 0x06, 0xE0, 0xAD, -+ 0x87, 0xE0, 0xAC, 0xBE, 0x01, 0x06, 0xE0, 0xAD, -+ 0x87, 0xE0, 0xAD, 0x96, 0x01, 0x06, 0xE0, 0xAD, -+ 0x87, 0xE0, 0xAD, 0x97, 0x01, 0x06, 0xE0, 0xAE, -+ // Bytes 2e00 - 2e3f -+ 0x92, 0xE0, 0xAF, 0x97, 0x01, 0x06, 0xE0, 0xAF, -+ 0x86, 0xE0, 0xAE, 0xBE, 0x01, 0x06, 0xE0, 0xAF, -+ 0x86, 0xE0, 0xAF, 0x97, 0x01, 0x06, 0xE0, 0xAF, -+ 0x87, 0xE0, 0xAE, 0xBE, 0x01, 0x06, 0xE0, 0xB2, -+ 0xBF, 0xE0, 0xB3, 0x95, 0x01, 0x06, 0xE0, 0xB3, -+ 0x86, 0xE0, 0xB3, 0x95, 0x01, 0x06, 0xE0, 0xB3, -+ 0x86, 0xE0, 0xB3, 0x96, 0x01, 0x06, 0xE0, 0xB5, -+ 0x86, 0xE0, 0xB4, 0xBE, 0x01, 0x06, 0xE0, 0xB5, -+ // Bytes 2e40 - 2e7f -+ 0x86, 0xE0, 0xB5, 0x97, 0x01, 0x06, 0xE0, 0xB5, -+ 0x87, 0xE0, 0xB4, 0xBE, 0x01, 0x06, 0xE0, 0xB7, -+ 0x99, 0xE0, 0xB7, 0x9F, 0x01, 0x06, 0xE1, 0x80, -+ 0xA5, 0xE1, 0x80, 0xAE, 0x01, 0x06, 0xE1, 0xAC, -+ 0x85, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, -+ 0x87, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, -+ 0x89, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, -+ 0x8B, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, -+ // Bytes 2e80 - 2ebf -+ 0x8D, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, -+ 0x91, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, -+ 0xBA, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, -+ 0xBC, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, -+ 0xBE, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, -+ 0xBF, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAD, -+ 0x82, 0xE1, 0xAC, 0xB5, 0x01, 0x08, 0xF0, 0x91, -+ 0x84, 0xB1, 0xF0, 0x91, 0x84, 0xA7, 0x01, 0x08, -+ // Bytes 2ec0 - 2eff -+ 0xF0, 0x91, 0x84, 0xB2, 0xF0, 0x91, 0x84, 0xA7, -+ 0x01, 0x08, 0xF0, 0x91, 0x8D, 0x87, 0xF0, 0x91, -+ 0x8C, 0xBE, 0x01, 0x08, 0xF0, 0x91, 0x8D, 0x87, -+ 0xF0, 0x91, 0x8D, 0x97, 0x01, 0x08, 0xF0, 0x91, -+ 0x92, 0xB9, 0xF0, 0x91, 0x92, 0xB0, 0x01, 0x08, -+ 0xF0, 0x91, 0x92, 0xB9, 0xF0, 0x91, 0x92, 0xBA, -+ 0x01, 0x08, 0xF0, 0x91, 0x92, 0xB9, 0xF0, 0x91, -+ 0x92, 0xBD, 0x01, 0x08, 0xF0, 0x91, 0x96, 0xB8, -+ // Bytes 2f00 - 2f3f -+ 0xF0, 0x91, 0x96, 0xAF, 0x01, 0x08, 0xF0, 0x91, -+ 0x96, 0xB9, 0xF0, 0x91, 0x96, 0xAF, 0x01, 0x08, -+ 0xF0, 0x91, 0xA4, 0xB5, 0xF0, 0x91, 0xA4, 0xB0, -+ 0x01, 0x09, 0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x82, -+ 0xE0, 0xB3, 0x95, 0x02, 0x09, 0xE0, 0xB7, 0x99, -+ 0xE0, 0xB7, 0x8F, 0xE0, 0xB7, 0x8A, 0x16, 0x44, -+ 0x44, 0x5A, 0xCC, 0x8C, 0xCD, 0x44, 0x44, 0x7A, -+ 0xCC, 0x8C, 0xCD, 0x44, 0x64, 0x7A, 0xCC, 0x8C, -+ // Bytes 2f40 - 2f7f -+ 0xCD, 0x46, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x93, -+ 0xCD, 0x46, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x94, -+ 0xCD, 0x46, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x95, -+ 0xB9, 0x46, 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xA1, -+ 0x01, 0x46, 0xE1, 0x84, 0x82, 0xE1, 0x85, 0xA1, -+ 0x01, 0x46, 0xE1, 0x84, 0x83, 0xE1, 0x85, 0xA1, -+ 0x01, 0x46, 0xE1, 0x84, 0x85, 0xE1, 0x85, 0xA1, -+ 0x01, 0x46, 0xE1, 0x84, 0x86, 0xE1, 0x85, 0xA1, -+ // Bytes 2f80 - 2fbf -+ 0x01, 0x46, 0xE1, 0x84, 0x87, 0xE1, 0x85, 0xA1, -+ 0x01, 0x46, 0xE1, 0x84, 0x89, 0xE1, 0x85, 0xA1, -+ 0x01, 0x46, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xA1, -+ 0x01, 0x46, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xAE, -+ 0x01, 0x46, 0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xA1, -+ 0x01, 0x46, 0xE1, 0x84, 0x8E, 0xE1, 0x85, 0xA1, -+ 0x01, 0x46, 0xE1, 0x84, 0x8F, 0xE1, 0x85, 0xA1, -+ 0x01, 0x46, 0xE1, 0x84, 0x90, 0xE1, 0x85, 0xA1, -+ // Bytes 2fc0 - 2fff -+ 0x01, 0x46, 0xE1, 0x84, 0x91, 0xE1, 0x85, 0xA1, -+ 0x01, 0x46, 0xE1, 0x84, 0x92, 0xE1, 0x85, 0xA1, -+ 0x01, 0x49, 0xE3, 0x83, 0xA1, 0xE3, 0x82, 0xAB, -+ 0xE3, 0x82, 0x99, 0x11, 0x4C, 0xE1, 0x84, 0x8C, -+ 0xE1, 0x85, 0xAE, 0xE1, 0x84, 0x8B, 0xE1, 0x85, -+ 0xB4, 0x01, 0x4C, 0xE3, 0x82, 0xAD, 0xE3, 0x82, -+ 0x99, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0x11, -+ 0x4C, 0xE3, 0x82, 0xB3, 0xE3, 0x83, 0xBC, 0xE3, -+ // Bytes 3000 - 303f -+ 0x83, 0x9B, 0xE3, 0x82, 0x9A, 0x11, 0x4C, 0xE3, -+ 0x83, 0xA4, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, -+ 0xE3, 0x82, 0x99, 0x11, 0x4F, 0xE1, 0x84, 0x8E, -+ 0xE1, 0x85, 0xA1, 0xE1, 0x86, 0xB7, 0xE1, 0x84, -+ 0x80, 0xE1, 0x85, 0xA9, 0x01, 0x4F, 0xE3, 0x82, -+ 0xA4, 0xE3, 0x83, 0x8B, 0xE3, 0x83, 0xB3, 0xE3, -+ 0x82, 0xAF, 0xE3, 0x82, 0x99, 0x11, 0x4F, 0xE3, -+ 0x82, 0xB7, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xB3, -+ // Bytes 3040 - 307f -+ 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0x11, 0x4F, -+ 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x83, -+ 0xBC, 0xE3, 0x82, 0xB7, 0xE3, 0x82, 0x99, 0x11, -+ 0x4F, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A, 0xE3, -+ 0x83, 0xB3, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, -+ 0x11, 0x52, 0xE3, 0x82, 0xA8, 0xE3, 0x82, 0xB9, -+ 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xBC, 0xE3, 0x83, -+ 0x88, 0xE3, 0x82, 0x99, 0x11, 0x52, 0xE3, 0x83, -+ // Bytes 3080 - 30bf -+ 0x95, 0xE3, 0x82, 0xA1, 0xE3, 0x83, 0xA9, 0xE3, -+ 0x83, 0x83, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, -+ 0x11, 0x86, 0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x82, -+ 0x01, 0x86, 0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x8F, -+ 0x01, 0x03, 0x3C, 0xCC, 0xB8, 0x05, 0x03, 0x3D, -+ 0xCC, 0xB8, 0x05, 0x03, 0x3E, 0xCC, 0xB8, 0x05, -+ 0x03, 0x41, 0xCC, 0x80, 0xCD, 0x03, 0x41, 0xCC, -+ 0x81, 0xCD, 0x03, 0x41, 0xCC, 0x83, 0xCD, 0x03, -+ // Bytes 30c0 - 30ff -+ 0x41, 0xCC, 0x84, 0xCD, 0x03, 0x41, 0xCC, 0x89, -+ 0xCD, 0x03, 0x41, 0xCC, 0x8C, 0xCD, 0x03, 0x41, -+ 0xCC, 0x8F, 0xCD, 0x03, 0x41, 0xCC, 0x91, 0xCD, -+ 0x03, 0x41, 0xCC, 0xA5, 0xB9, 0x03, 0x41, 0xCC, -+ 0xA8, 0xA9, 0x03, 0x42, 0xCC, 0x87, 0xCD, 0x03, -+ 0x42, 0xCC, 0xA3, 0xB9, 0x03, 0x42, 0xCC, 0xB1, -+ 0xB9, 0x03, 0x43, 0xCC, 0x81, 0xCD, 0x03, 0x43, -+ 0xCC, 0x82, 0xCD, 0x03, 0x43, 0xCC, 0x87, 0xCD, -+ // Bytes 3100 - 313f -+ 0x03, 0x43, 0xCC, 0x8C, 0xCD, 0x03, 0x44, 0xCC, -+ 0x87, 0xCD, 0x03, 0x44, 0xCC, 0x8C, 0xCD, 0x03, -+ 0x44, 0xCC, 0xA3, 0xB9, 0x03, 0x44, 0xCC, 0xA7, -+ 0xA9, 0x03, 0x44, 0xCC, 0xAD, 0xB9, 0x03, 0x44, -+ 0xCC, 0xB1, 0xB9, 0x03, 0x45, 0xCC, 0x80, 0xCD, -+ 0x03, 0x45, 0xCC, 0x81, 0xCD, 0x03, 0x45, 0xCC, -+ 0x83, 0xCD, 0x03, 0x45, 0xCC, 0x86, 0xCD, 0x03, -+ 0x45, 0xCC, 0x87, 0xCD, 0x03, 0x45, 0xCC, 0x88, -+ // Bytes 3140 - 317f -+ 0xCD, 0x03, 0x45, 0xCC, 0x89, 0xCD, 0x03, 0x45, -+ 0xCC, 0x8C, 0xCD, 0x03, 0x45, 0xCC, 0x8F, 0xCD, -+ 0x03, 0x45, 0xCC, 0x91, 0xCD, 0x03, 0x45, 0xCC, -+ 0xA8, 0xA9, 0x03, 0x45, 0xCC, 0xAD, 0xB9, 0x03, -+ 0x45, 0xCC, 0xB0, 0xB9, 0x03, 0x46, 0xCC, 0x87, -+ 0xCD, 0x03, 0x47, 0xCC, 0x81, 0xCD, 0x03, 0x47, -+ 0xCC, 0x82, 0xCD, 0x03, 0x47, 0xCC, 0x84, 0xCD, -+ 0x03, 0x47, 0xCC, 0x86, 0xCD, 0x03, 0x47, 0xCC, -+ // Bytes 3180 - 31bf -+ 0x87, 0xCD, 0x03, 0x47, 0xCC, 0x8C, 0xCD, 0x03, -+ 0x47, 0xCC, 0xA7, 0xA9, 0x03, 0x48, 0xCC, 0x82, -+ 0xCD, 0x03, 0x48, 0xCC, 0x87, 0xCD, 0x03, 0x48, -+ 0xCC, 0x88, 0xCD, 0x03, 0x48, 0xCC, 0x8C, 0xCD, -+ 0x03, 0x48, 0xCC, 0xA3, 0xB9, 0x03, 0x48, 0xCC, -+ 0xA7, 0xA9, 0x03, 0x48, 0xCC, 0xAE, 0xB9, 0x03, -+ 0x49, 0xCC, 0x80, 0xCD, 0x03, 0x49, 0xCC, 0x81, -+ 0xCD, 0x03, 0x49, 0xCC, 0x82, 0xCD, 0x03, 0x49, -+ // Bytes 31c0 - 31ff -+ 0xCC, 0x83, 0xCD, 0x03, 0x49, 0xCC, 0x84, 0xCD, -+ 0x03, 0x49, 0xCC, 0x86, 0xCD, 0x03, 0x49, 0xCC, -+ 0x87, 0xCD, 0x03, 0x49, 0xCC, 0x89, 0xCD, 0x03, -+ 0x49, 0xCC, 0x8C, 0xCD, 0x03, 0x49, 0xCC, 0x8F, -+ 0xCD, 0x03, 0x49, 0xCC, 0x91, 0xCD, 0x03, 0x49, -+ 0xCC, 0xA3, 0xB9, 0x03, 0x49, 0xCC, 0xA8, 0xA9, -+ 0x03, 0x49, 0xCC, 0xB0, 0xB9, 0x03, 0x4A, 0xCC, -+ 0x82, 0xCD, 0x03, 0x4B, 0xCC, 0x81, 0xCD, 0x03, -+ // Bytes 3200 - 323f -+ 0x4B, 0xCC, 0x8C, 0xCD, 0x03, 0x4B, 0xCC, 0xA3, -+ 0xB9, 0x03, 0x4B, 0xCC, 0xA7, 0xA9, 0x03, 0x4B, -+ 0xCC, 0xB1, 0xB9, 0x03, 0x4C, 0xCC, 0x81, 0xCD, -+ 0x03, 0x4C, 0xCC, 0x8C, 0xCD, 0x03, 0x4C, 0xCC, -+ 0xA7, 0xA9, 0x03, 0x4C, 0xCC, 0xAD, 0xB9, 0x03, -+ 0x4C, 0xCC, 0xB1, 0xB9, 0x03, 0x4D, 0xCC, 0x81, -+ 0xCD, 0x03, 0x4D, 0xCC, 0x87, 0xCD, 0x03, 0x4D, -+ 0xCC, 0xA3, 0xB9, 0x03, 0x4E, 0xCC, 0x80, 0xCD, -+ // Bytes 3240 - 327f -+ 0x03, 0x4E, 0xCC, 0x81, 0xCD, 0x03, 0x4E, 0xCC, -+ 0x83, 0xCD, 0x03, 0x4E, 0xCC, 0x87, 0xCD, 0x03, -+ 0x4E, 0xCC, 0x8C, 0xCD, 0x03, 0x4E, 0xCC, 0xA3, -+ 0xB9, 0x03, 0x4E, 0xCC, 0xA7, 0xA9, 0x03, 0x4E, -+ 0xCC, 0xAD, 0xB9, 0x03, 0x4E, 0xCC, 0xB1, 0xB9, -+ 0x03, 0x4F, 0xCC, 0x80, 0xCD, 0x03, 0x4F, 0xCC, -+ 0x81, 0xCD, 0x03, 0x4F, 0xCC, 0x86, 0xCD, 0x03, -+ 0x4F, 0xCC, 0x89, 0xCD, 0x03, 0x4F, 0xCC, 0x8B, -+ // Bytes 3280 - 32bf -+ 0xCD, 0x03, 0x4F, 0xCC, 0x8C, 0xCD, 0x03, 0x4F, -+ 0xCC, 0x8F, 0xCD, 0x03, 0x4F, 0xCC, 0x91, 0xCD, -+ 0x03, 0x50, 0xCC, 0x81, 0xCD, 0x03, 0x50, 0xCC, -+ 0x87, 0xCD, 0x03, 0x52, 0xCC, 0x81, 0xCD, 0x03, -+ 0x52, 0xCC, 0x87, 0xCD, 0x03, 0x52, 0xCC, 0x8C, -+ 0xCD, 0x03, 0x52, 0xCC, 0x8F, 0xCD, 0x03, 0x52, -+ 0xCC, 0x91, 0xCD, 0x03, 0x52, 0xCC, 0xA7, 0xA9, -+ 0x03, 0x52, 0xCC, 0xB1, 0xB9, 0x03, 0x53, 0xCC, -+ // Bytes 32c0 - 32ff -+ 0x82, 0xCD, 0x03, 0x53, 0xCC, 0x87, 0xCD, 0x03, -+ 0x53, 0xCC, 0xA6, 0xB9, 0x03, 0x53, 0xCC, 0xA7, -+ 0xA9, 0x03, 0x54, 0xCC, 0x87, 0xCD, 0x03, 0x54, -+ 0xCC, 0x8C, 0xCD, 0x03, 0x54, 0xCC, 0xA3, 0xB9, -+ 0x03, 0x54, 0xCC, 0xA6, 0xB9, 0x03, 0x54, 0xCC, -+ 0xA7, 0xA9, 0x03, 0x54, 0xCC, 0xAD, 0xB9, 0x03, -+ 0x54, 0xCC, 0xB1, 0xB9, 0x03, 0x55, 0xCC, 0x80, -+ 0xCD, 0x03, 0x55, 0xCC, 0x81, 0xCD, 0x03, 0x55, -+ // Bytes 3300 - 333f -+ 0xCC, 0x82, 0xCD, 0x03, 0x55, 0xCC, 0x86, 0xCD, -+ 0x03, 0x55, 0xCC, 0x89, 0xCD, 0x03, 0x55, 0xCC, -+ 0x8A, 0xCD, 0x03, 0x55, 0xCC, 0x8B, 0xCD, 0x03, -+ 0x55, 0xCC, 0x8C, 0xCD, 0x03, 0x55, 0xCC, 0x8F, -+ 0xCD, 0x03, 0x55, 0xCC, 0x91, 0xCD, 0x03, 0x55, -+ 0xCC, 0xA3, 0xB9, 0x03, 0x55, 0xCC, 0xA4, 0xB9, -+ 0x03, 0x55, 0xCC, 0xA8, 0xA9, 0x03, 0x55, 0xCC, -+ 0xAD, 0xB9, 0x03, 0x55, 0xCC, 0xB0, 0xB9, 0x03, -+ // Bytes 3340 - 337f -+ 0x56, 0xCC, 0x83, 0xCD, 0x03, 0x56, 0xCC, 0xA3, -+ 0xB9, 0x03, 0x57, 0xCC, 0x80, 0xCD, 0x03, 0x57, -+ 0xCC, 0x81, 0xCD, 0x03, 0x57, 0xCC, 0x82, 0xCD, -+ 0x03, 0x57, 0xCC, 0x87, 0xCD, 0x03, 0x57, 0xCC, -+ 0x88, 0xCD, 0x03, 0x57, 0xCC, 0xA3, 0xB9, 0x03, -+ 0x58, 0xCC, 0x87, 0xCD, 0x03, 0x58, 0xCC, 0x88, -+ 0xCD, 0x03, 0x59, 0xCC, 0x80, 0xCD, 0x03, 0x59, -+ 0xCC, 0x81, 0xCD, 0x03, 0x59, 0xCC, 0x82, 0xCD, -+ // Bytes 3380 - 33bf -+ 0x03, 0x59, 0xCC, 0x83, 0xCD, 0x03, 0x59, 0xCC, -+ 0x84, 0xCD, 0x03, 0x59, 0xCC, 0x87, 0xCD, 0x03, -+ 0x59, 0xCC, 0x88, 0xCD, 0x03, 0x59, 0xCC, 0x89, -+ 0xCD, 0x03, 0x59, 0xCC, 0xA3, 0xB9, 0x03, 0x5A, -+ 0xCC, 0x81, 0xCD, 0x03, 0x5A, 0xCC, 0x82, 0xCD, -+ 0x03, 0x5A, 0xCC, 0x87, 0xCD, 0x03, 0x5A, 0xCC, -+ 0x8C, 0xCD, 0x03, 0x5A, 0xCC, 0xA3, 0xB9, 0x03, -+ 0x5A, 0xCC, 0xB1, 0xB9, 0x03, 0x61, 0xCC, 0x80, -+ // Bytes 33c0 - 33ff -+ 0xCD, 0x03, 0x61, 0xCC, 0x81, 0xCD, 0x03, 0x61, -+ 0xCC, 0x83, 0xCD, 0x03, 0x61, 0xCC, 0x84, 0xCD, -+ 0x03, 0x61, 0xCC, 0x89, 0xCD, 0x03, 0x61, 0xCC, -+ 0x8C, 0xCD, 0x03, 0x61, 0xCC, 0x8F, 0xCD, 0x03, -+ 0x61, 0xCC, 0x91, 0xCD, 0x03, 0x61, 0xCC, 0xA5, -+ 0xB9, 0x03, 0x61, 0xCC, 0xA8, 0xA9, 0x03, 0x62, -+ 0xCC, 0x87, 0xCD, 0x03, 0x62, 0xCC, 0xA3, 0xB9, -+ 0x03, 0x62, 0xCC, 0xB1, 0xB9, 0x03, 0x63, 0xCC, -+ // Bytes 3400 - 343f -+ 0x81, 0xCD, 0x03, 0x63, 0xCC, 0x82, 0xCD, 0x03, -+ 0x63, 0xCC, 0x87, 0xCD, 0x03, 0x63, 0xCC, 0x8C, -+ 0xCD, 0x03, 0x64, 0xCC, 0x87, 0xCD, 0x03, 0x64, -+ 0xCC, 0x8C, 0xCD, 0x03, 0x64, 0xCC, 0xA3, 0xB9, -+ 0x03, 0x64, 0xCC, 0xA7, 0xA9, 0x03, 0x64, 0xCC, -+ 0xAD, 0xB9, 0x03, 0x64, 0xCC, 0xB1, 0xB9, 0x03, -+ 0x65, 0xCC, 0x80, 0xCD, 0x03, 0x65, 0xCC, 0x81, -+ 0xCD, 0x03, 0x65, 0xCC, 0x83, 0xCD, 0x03, 0x65, -+ // Bytes 3440 - 347f -+ 0xCC, 0x86, 0xCD, 0x03, 0x65, 0xCC, 0x87, 0xCD, -+ 0x03, 0x65, 0xCC, 0x88, 0xCD, 0x03, 0x65, 0xCC, -+ 0x89, 0xCD, 0x03, 0x65, 0xCC, 0x8C, 0xCD, 0x03, -+ 0x65, 0xCC, 0x8F, 0xCD, 0x03, 0x65, 0xCC, 0x91, -+ 0xCD, 0x03, 0x65, 0xCC, 0xA8, 0xA9, 0x03, 0x65, -+ 0xCC, 0xAD, 0xB9, 0x03, 0x65, 0xCC, 0xB0, 0xB9, -+ 0x03, 0x66, 0xCC, 0x87, 0xCD, 0x03, 0x67, 0xCC, -+ 0x81, 0xCD, 0x03, 0x67, 0xCC, 0x82, 0xCD, 0x03, -+ // Bytes 3480 - 34bf -+ 0x67, 0xCC, 0x84, 0xCD, 0x03, 0x67, 0xCC, 0x86, -+ 0xCD, 0x03, 0x67, 0xCC, 0x87, 0xCD, 0x03, 0x67, -+ 0xCC, 0x8C, 0xCD, 0x03, 0x67, 0xCC, 0xA7, 0xA9, -+ 0x03, 0x68, 0xCC, 0x82, 0xCD, 0x03, 0x68, 0xCC, -+ 0x87, 0xCD, 0x03, 0x68, 0xCC, 0x88, 0xCD, 0x03, -+ 0x68, 0xCC, 0x8C, 0xCD, 0x03, 0x68, 0xCC, 0xA3, -+ 0xB9, 0x03, 0x68, 0xCC, 0xA7, 0xA9, 0x03, 0x68, -+ 0xCC, 0xAE, 0xB9, 0x03, 0x68, 0xCC, 0xB1, 0xB9, -+ // Bytes 34c0 - 34ff -+ 0x03, 0x69, 0xCC, 0x80, 0xCD, 0x03, 0x69, 0xCC, -+ 0x81, 0xCD, 0x03, 0x69, 0xCC, 0x82, 0xCD, 0x03, -+ 0x69, 0xCC, 0x83, 0xCD, 0x03, 0x69, 0xCC, 0x84, -+ 0xCD, 0x03, 0x69, 0xCC, 0x86, 0xCD, 0x03, 0x69, -+ 0xCC, 0x89, 0xCD, 0x03, 0x69, 0xCC, 0x8C, 0xCD, -+ 0x03, 0x69, 0xCC, 0x8F, 0xCD, 0x03, 0x69, 0xCC, -+ 0x91, 0xCD, 0x03, 0x69, 0xCC, 0xA3, 0xB9, 0x03, -+ 0x69, 0xCC, 0xA8, 0xA9, 0x03, 0x69, 0xCC, 0xB0, -+ // Bytes 3500 - 353f -+ 0xB9, 0x03, 0x6A, 0xCC, 0x82, 0xCD, 0x03, 0x6A, -+ 0xCC, 0x8C, 0xCD, 0x03, 0x6B, 0xCC, 0x81, 0xCD, -+ 0x03, 0x6B, 0xCC, 0x8C, 0xCD, 0x03, 0x6B, 0xCC, -+ 0xA3, 0xB9, 0x03, 0x6B, 0xCC, 0xA7, 0xA9, 0x03, -+ 0x6B, 0xCC, 0xB1, 0xB9, 0x03, 0x6C, 0xCC, 0x81, -+ 0xCD, 0x03, 0x6C, 0xCC, 0x8C, 0xCD, 0x03, 0x6C, -+ 0xCC, 0xA7, 0xA9, 0x03, 0x6C, 0xCC, 0xAD, 0xB9, -+ 0x03, 0x6C, 0xCC, 0xB1, 0xB9, 0x03, 0x6D, 0xCC, -+ // Bytes 3540 - 357f -+ 0x81, 0xCD, 0x03, 0x6D, 0xCC, 0x87, 0xCD, 0x03, -+ 0x6D, 0xCC, 0xA3, 0xB9, 0x03, 0x6E, 0xCC, 0x80, -+ 0xCD, 0x03, 0x6E, 0xCC, 0x81, 0xCD, 0x03, 0x6E, -+ 0xCC, 0x83, 0xCD, 0x03, 0x6E, 0xCC, 0x87, 0xCD, -+ 0x03, 0x6E, 0xCC, 0x8C, 0xCD, 0x03, 0x6E, 0xCC, -+ 0xA3, 0xB9, 0x03, 0x6E, 0xCC, 0xA7, 0xA9, 0x03, -+ 0x6E, 0xCC, 0xAD, 0xB9, 0x03, 0x6E, 0xCC, 0xB1, -+ 0xB9, 0x03, 0x6F, 0xCC, 0x80, 0xCD, 0x03, 0x6F, -+ // Bytes 3580 - 35bf -+ 0xCC, 0x81, 0xCD, 0x03, 0x6F, 0xCC, 0x86, 0xCD, -+ 0x03, 0x6F, 0xCC, 0x89, 0xCD, 0x03, 0x6F, 0xCC, -+ 0x8B, 0xCD, 0x03, 0x6F, 0xCC, 0x8C, 0xCD, 0x03, -+ 0x6F, 0xCC, 0x8F, 0xCD, 0x03, 0x6F, 0xCC, 0x91, -+ 0xCD, 0x03, 0x70, 0xCC, 0x81, 0xCD, 0x03, 0x70, -+ 0xCC, 0x87, 0xCD, 0x03, 0x72, 0xCC, 0x81, 0xCD, -+ 0x03, 0x72, 0xCC, 0x87, 0xCD, 0x03, 0x72, 0xCC, -+ 0x8C, 0xCD, 0x03, 0x72, 0xCC, 0x8F, 0xCD, 0x03, -+ // Bytes 35c0 - 35ff -+ 0x72, 0xCC, 0x91, 0xCD, 0x03, 0x72, 0xCC, 0xA7, -+ 0xA9, 0x03, 0x72, 0xCC, 0xB1, 0xB9, 0x03, 0x73, -+ 0xCC, 0x82, 0xCD, 0x03, 0x73, 0xCC, 0x87, 0xCD, -+ 0x03, 0x73, 0xCC, 0xA6, 0xB9, 0x03, 0x73, 0xCC, -+ 0xA7, 0xA9, 0x03, 0x74, 0xCC, 0x87, 0xCD, 0x03, -+ 0x74, 0xCC, 0x88, 0xCD, 0x03, 0x74, 0xCC, 0x8C, -+ 0xCD, 0x03, 0x74, 0xCC, 0xA3, 0xB9, 0x03, 0x74, -+ 0xCC, 0xA6, 0xB9, 0x03, 0x74, 0xCC, 0xA7, 0xA9, -+ // Bytes 3600 - 363f -+ 0x03, 0x74, 0xCC, 0xAD, 0xB9, 0x03, 0x74, 0xCC, -+ 0xB1, 0xB9, 0x03, 0x75, 0xCC, 0x80, 0xCD, 0x03, -+ 0x75, 0xCC, 0x81, 0xCD, 0x03, 0x75, 0xCC, 0x82, -+ 0xCD, 0x03, 0x75, 0xCC, 0x86, 0xCD, 0x03, 0x75, -+ 0xCC, 0x89, 0xCD, 0x03, 0x75, 0xCC, 0x8A, 0xCD, -+ 0x03, 0x75, 0xCC, 0x8B, 0xCD, 0x03, 0x75, 0xCC, -+ 0x8C, 0xCD, 0x03, 0x75, 0xCC, 0x8F, 0xCD, 0x03, -+ 0x75, 0xCC, 0x91, 0xCD, 0x03, 0x75, 0xCC, 0xA3, -+ // Bytes 3640 - 367f -+ 0xB9, 0x03, 0x75, 0xCC, 0xA4, 0xB9, 0x03, 0x75, -+ 0xCC, 0xA8, 0xA9, 0x03, 0x75, 0xCC, 0xAD, 0xB9, -+ 0x03, 0x75, 0xCC, 0xB0, 0xB9, 0x03, 0x76, 0xCC, -+ 0x83, 0xCD, 0x03, 0x76, 0xCC, 0xA3, 0xB9, 0x03, -+ 0x77, 0xCC, 0x80, 0xCD, 0x03, 0x77, 0xCC, 0x81, -+ 0xCD, 0x03, 0x77, 0xCC, 0x82, 0xCD, 0x03, 0x77, -+ 0xCC, 0x87, 0xCD, 0x03, 0x77, 0xCC, 0x88, 0xCD, -+ 0x03, 0x77, 0xCC, 0x8A, 0xCD, 0x03, 0x77, 0xCC, -+ // Bytes 3680 - 36bf -+ 0xA3, 0xB9, 0x03, 0x78, 0xCC, 0x87, 0xCD, 0x03, -+ 0x78, 0xCC, 0x88, 0xCD, 0x03, 0x79, 0xCC, 0x80, -+ 0xCD, 0x03, 0x79, 0xCC, 0x81, 0xCD, 0x03, 0x79, -+ 0xCC, 0x82, 0xCD, 0x03, 0x79, 0xCC, 0x83, 0xCD, -+ 0x03, 0x79, 0xCC, 0x84, 0xCD, 0x03, 0x79, 0xCC, -+ 0x87, 0xCD, 0x03, 0x79, 0xCC, 0x88, 0xCD, 0x03, -+ 0x79, 0xCC, 0x89, 0xCD, 0x03, 0x79, 0xCC, 0x8A, -+ 0xCD, 0x03, 0x79, 0xCC, 0xA3, 0xB9, 0x03, 0x7A, -+ // Bytes 36c0 - 36ff -+ 0xCC, 0x81, 0xCD, 0x03, 0x7A, 0xCC, 0x82, 0xCD, -+ 0x03, 0x7A, 0xCC, 0x87, 0xCD, 0x03, 0x7A, 0xCC, -+ 0x8C, 0xCD, 0x03, 0x7A, 0xCC, 0xA3, 0xB9, 0x03, -+ 0x7A, 0xCC, 0xB1, 0xB9, 0x04, 0xC2, 0xA8, 0xCC, -+ 0x80, 0xCE, 0x04, 0xC2, 0xA8, 0xCC, 0x81, 0xCE, -+ 0x04, 0xC2, 0xA8, 0xCD, 0x82, 0xCE, 0x04, 0xC3, -+ 0x86, 0xCC, 0x81, 0xCD, 0x04, 0xC3, 0x86, 0xCC, -+ 0x84, 0xCD, 0x04, 0xC3, 0x98, 0xCC, 0x81, 0xCD, -+ // Bytes 3700 - 373f -+ 0x04, 0xC3, 0xA6, 0xCC, 0x81, 0xCD, 0x04, 0xC3, -+ 0xA6, 0xCC, 0x84, 0xCD, 0x04, 0xC3, 0xB8, 0xCC, -+ 0x81, 0xCD, 0x04, 0xC5, 0xBF, 0xCC, 0x87, 0xCD, -+ 0x04, 0xC6, 0xB7, 0xCC, 0x8C, 0xCD, 0x04, 0xCA, -+ 0x92, 0xCC, 0x8C, 0xCD, 0x04, 0xCE, 0x91, 0xCC, -+ 0x80, 0xCD, 0x04, 0xCE, 0x91, 0xCC, 0x81, 0xCD, -+ 0x04, 0xCE, 0x91, 0xCC, 0x84, 0xCD, 0x04, 0xCE, -+ 0x91, 0xCC, 0x86, 0xCD, 0x04, 0xCE, 0x91, 0xCD, -+ // Bytes 3740 - 377f -+ 0x85, 0xDD, 0x04, 0xCE, 0x95, 0xCC, 0x80, 0xCD, -+ 0x04, 0xCE, 0x95, 0xCC, 0x81, 0xCD, 0x04, 0xCE, -+ 0x97, 0xCC, 0x80, 0xCD, 0x04, 0xCE, 0x97, 0xCC, -+ 0x81, 0xCD, 0x04, 0xCE, 0x97, 0xCD, 0x85, 0xDD, -+ 0x04, 0xCE, 0x99, 0xCC, 0x80, 0xCD, 0x04, 0xCE, -+ 0x99, 0xCC, 0x81, 0xCD, 0x04, 0xCE, 0x99, 0xCC, -+ 0x84, 0xCD, 0x04, 0xCE, 0x99, 0xCC, 0x86, 0xCD, -+ 0x04, 0xCE, 0x99, 0xCC, 0x88, 0xCD, 0x04, 0xCE, -+ // Bytes 3780 - 37bf -+ 0x9F, 0xCC, 0x80, 0xCD, 0x04, 0xCE, 0x9F, 0xCC, -+ 0x81, 0xCD, 0x04, 0xCE, 0xA1, 0xCC, 0x94, 0xCD, -+ 0x04, 0xCE, 0xA5, 0xCC, 0x80, 0xCD, 0x04, 0xCE, -+ 0xA5, 0xCC, 0x81, 0xCD, 0x04, 0xCE, 0xA5, 0xCC, -+ 0x84, 0xCD, 0x04, 0xCE, 0xA5, 0xCC, 0x86, 0xCD, -+ 0x04, 0xCE, 0xA5, 0xCC, 0x88, 0xCD, 0x04, 0xCE, -+ 0xA9, 0xCC, 0x80, 0xCD, 0x04, 0xCE, 0xA9, 0xCC, -+ 0x81, 0xCD, 0x04, 0xCE, 0xA9, 0xCD, 0x85, 0xDD, -+ // Bytes 37c0 - 37ff -+ 0x04, 0xCE, 0xB1, 0xCC, 0x84, 0xCD, 0x04, 0xCE, -+ 0xB1, 0xCC, 0x86, 0xCD, 0x04, 0xCE, 0xB1, 0xCD, -+ 0x85, 0xDD, 0x04, 0xCE, 0xB5, 0xCC, 0x80, 0xCD, -+ 0x04, 0xCE, 0xB5, 0xCC, 0x81, 0xCD, 0x04, 0xCE, -+ 0xB7, 0xCD, 0x85, 0xDD, 0x04, 0xCE, 0xB9, 0xCC, -+ 0x80, 0xCD, 0x04, 0xCE, 0xB9, 0xCC, 0x81, 0xCD, -+ 0x04, 0xCE, 0xB9, 0xCC, 0x84, 0xCD, 0x04, 0xCE, -+ 0xB9, 0xCC, 0x86, 0xCD, 0x04, 0xCE, 0xB9, 0xCD, -+ // Bytes 3800 - 383f -+ 0x82, 0xCD, 0x04, 0xCE, 0xBF, 0xCC, 0x80, 0xCD, -+ 0x04, 0xCE, 0xBF, 0xCC, 0x81, 0xCD, 0x04, 0xCF, -+ 0x81, 0xCC, 0x93, 0xCD, 0x04, 0xCF, 0x81, 0xCC, -+ 0x94, 0xCD, 0x04, 0xCF, 0x85, 0xCC, 0x80, 0xCD, -+ 0x04, 0xCF, 0x85, 0xCC, 0x81, 0xCD, 0x04, 0xCF, -+ 0x85, 0xCC, 0x84, 0xCD, 0x04, 0xCF, 0x85, 0xCC, -+ 0x86, 0xCD, 0x04, 0xCF, 0x85, 0xCD, 0x82, 0xCD, -+ 0x04, 0xCF, 0x89, 0xCD, 0x85, 0xDD, 0x04, 0xCF, -+ // Bytes 3840 - 387f -+ 0x92, 0xCC, 0x81, 0xCD, 0x04, 0xCF, 0x92, 0xCC, -+ 0x88, 0xCD, 0x04, 0xD0, 0x86, 0xCC, 0x88, 0xCD, -+ 0x04, 0xD0, 0x90, 0xCC, 0x86, 0xCD, 0x04, 0xD0, -+ 0x90, 0xCC, 0x88, 0xCD, 0x04, 0xD0, 0x93, 0xCC, -+ 0x81, 0xCD, 0x04, 0xD0, 0x95, 0xCC, 0x80, 0xCD, -+ 0x04, 0xD0, 0x95, 0xCC, 0x86, 0xCD, 0x04, 0xD0, -+ 0x95, 0xCC, 0x88, 0xCD, 0x04, 0xD0, 0x96, 0xCC, -+ 0x86, 0xCD, 0x04, 0xD0, 0x96, 0xCC, 0x88, 0xCD, -+ // Bytes 3880 - 38bf -+ 0x04, 0xD0, 0x97, 0xCC, 0x88, 0xCD, 0x04, 0xD0, -+ 0x98, 0xCC, 0x80, 0xCD, 0x04, 0xD0, 0x98, 0xCC, -+ 0x84, 0xCD, 0x04, 0xD0, 0x98, 0xCC, 0x86, 0xCD, -+ 0x04, 0xD0, 0x98, 0xCC, 0x88, 0xCD, 0x04, 0xD0, -+ 0x9A, 0xCC, 0x81, 0xCD, 0x04, 0xD0, 0x9E, 0xCC, -+ 0x88, 0xCD, 0x04, 0xD0, 0xA3, 0xCC, 0x84, 0xCD, -+ 0x04, 0xD0, 0xA3, 0xCC, 0x86, 0xCD, 0x04, 0xD0, -+ 0xA3, 0xCC, 0x88, 0xCD, 0x04, 0xD0, 0xA3, 0xCC, -+ // Bytes 38c0 - 38ff -+ 0x8B, 0xCD, 0x04, 0xD0, 0xA7, 0xCC, 0x88, 0xCD, -+ 0x04, 0xD0, 0xAB, 0xCC, 0x88, 0xCD, 0x04, 0xD0, -+ 0xAD, 0xCC, 0x88, 0xCD, 0x04, 0xD0, 0xB0, 0xCC, -+ 0x86, 0xCD, 0x04, 0xD0, 0xB0, 0xCC, 0x88, 0xCD, -+ 0x04, 0xD0, 0xB3, 0xCC, 0x81, 0xCD, 0x04, 0xD0, -+ 0xB5, 0xCC, 0x80, 0xCD, 0x04, 0xD0, 0xB5, 0xCC, -+ 0x86, 0xCD, 0x04, 0xD0, 0xB5, 0xCC, 0x88, 0xCD, -+ 0x04, 0xD0, 0xB6, 0xCC, 0x86, 0xCD, 0x04, 0xD0, -+ // Bytes 3900 - 393f -+ 0xB6, 0xCC, 0x88, 0xCD, 0x04, 0xD0, 0xB7, 0xCC, -+ 0x88, 0xCD, 0x04, 0xD0, 0xB8, 0xCC, 0x80, 0xCD, -+ 0x04, 0xD0, 0xB8, 0xCC, 0x84, 0xCD, 0x04, 0xD0, -+ 0xB8, 0xCC, 0x86, 0xCD, 0x04, 0xD0, 0xB8, 0xCC, -+ 0x88, 0xCD, 0x04, 0xD0, 0xBA, 0xCC, 0x81, 0xCD, -+ 0x04, 0xD0, 0xBE, 0xCC, 0x88, 0xCD, 0x04, 0xD1, -+ 0x83, 0xCC, 0x84, 0xCD, 0x04, 0xD1, 0x83, 0xCC, -+ 0x86, 0xCD, 0x04, 0xD1, 0x83, 0xCC, 0x88, 0xCD, -+ // Bytes 3940 - 397f -+ 0x04, 0xD1, 0x83, 0xCC, 0x8B, 0xCD, 0x04, 0xD1, -+ 0x87, 0xCC, 0x88, 0xCD, 0x04, 0xD1, 0x8B, 0xCC, -+ 0x88, 0xCD, 0x04, 0xD1, 0x8D, 0xCC, 0x88, 0xCD, -+ 0x04, 0xD1, 0x96, 0xCC, 0x88, 0xCD, 0x04, 0xD1, -+ 0xB4, 0xCC, 0x8F, 0xCD, 0x04, 0xD1, 0xB5, 0xCC, -+ 0x8F, 0xCD, 0x04, 0xD3, 0x98, 0xCC, 0x88, 0xCD, -+ 0x04, 0xD3, 0x99, 0xCC, 0x88, 0xCD, 0x04, 0xD3, -+ 0xA8, 0xCC, 0x88, 0xCD, 0x04, 0xD3, 0xA9, 0xCC, -+ // Bytes 3980 - 39bf -+ 0x88, 0xCD, 0x04, 0xD8, 0xA7, 0xD9, 0x93, 0xCD, -+ 0x04, 0xD8, 0xA7, 0xD9, 0x94, 0xCD, 0x04, 0xD8, -+ 0xA7, 0xD9, 0x95, 0xB9, 0x04, 0xD9, 0x88, 0xD9, -+ 0x94, 0xCD, 0x04, 0xD9, 0x8A, 0xD9, 0x94, 0xCD, -+ 0x04, 0xDB, 0x81, 0xD9, 0x94, 0xCD, 0x04, 0xDB, -+ 0x92, 0xD9, 0x94, 0xCD, 0x04, 0xDB, 0x95, 0xD9, -+ 0x94, 0xCD, 0x05, 0x41, 0xCC, 0x82, 0xCC, 0x80, -+ 0xCE, 0x05, 0x41, 0xCC, 0x82, 0xCC, 0x81, 0xCE, -+ // Bytes 39c0 - 39ff -+ 0x05, 0x41, 0xCC, 0x82, 0xCC, 0x83, 0xCE, 0x05, -+ 0x41, 0xCC, 0x82, 0xCC, 0x89, 0xCE, 0x05, 0x41, -+ 0xCC, 0x86, 0xCC, 0x80, 0xCE, 0x05, 0x41, 0xCC, -+ 0x86, 0xCC, 0x81, 0xCE, 0x05, 0x41, 0xCC, 0x86, -+ 0xCC, 0x83, 0xCE, 0x05, 0x41, 0xCC, 0x86, 0xCC, -+ 0x89, 0xCE, 0x05, 0x41, 0xCC, 0x87, 0xCC, 0x84, -+ 0xCE, 0x05, 0x41, 0xCC, 0x88, 0xCC, 0x84, 0xCE, -+ 0x05, 0x41, 0xCC, 0x8A, 0xCC, 0x81, 0xCE, 0x05, -+ // Bytes 3a00 - 3a3f -+ 0x41, 0xCC, 0xA3, 0xCC, 0x82, 0xCE, 0x05, 0x41, -+ 0xCC, 0xA3, 0xCC, 0x86, 0xCE, 0x05, 0x43, 0xCC, -+ 0xA7, 0xCC, 0x81, 0xCE, 0x05, 0x45, 0xCC, 0x82, -+ 0xCC, 0x80, 0xCE, 0x05, 0x45, 0xCC, 0x82, 0xCC, -+ 0x81, 0xCE, 0x05, 0x45, 0xCC, 0x82, 0xCC, 0x83, -+ 0xCE, 0x05, 0x45, 0xCC, 0x82, 0xCC, 0x89, 0xCE, -+ 0x05, 0x45, 0xCC, 0x84, 0xCC, 0x80, 0xCE, 0x05, -+ 0x45, 0xCC, 0x84, 0xCC, 0x81, 0xCE, 0x05, 0x45, -+ // Bytes 3a40 - 3a7f -+ 0xCC, 0xA3, 0xCC, 0x82, 0xCE, 0x05, 0x45, 0xCC, -+ 0xA7, 0xCC, 0x86, 0xCE, 0x05, 0x49, 0xCC, 0x88, -+ 0xCC, 0x81, 0xCE, 0x05, 0x4C, 0xCC, 0xA3, 0xCC, -+ 0x84, 0xCE, 0x05, 0x4F, 0xCC, 0x82, 0xCC, 0x80, -+ 0xCE, 0x05, 0x4F, 0xCC, 0x82, 0xCC, 0x81, 0xCE, -+ 0x05, 0x4F, 0xCC, 0x82, 0xCC, 0x83, 0xCE, 0x05, -+ 0x4F, 0xCC, 0x82, 0xCC, 0x89, 0xCE, 0x05, 0x4F, -+ 0xCC, 0x83, 0xCC, 0x81, 0xCE, 0x05, 0x4F, 0xCC, -+ // Bytes 3a80 - 3abf -+ 0x83, 0xCC, 0x84, 0xCE, 0x05, 0x4F, 0xCC, 0x83, -+ 0xCC, 0x88, 0xCE, 0x05, 0x4F, 0xCC, 0x84, 0xCC, -+ 0x80, 0xCE, 0x05, 0x4F, 0xCC, 0x84, 0xCC, 0x81, -+ 0xCE, 0x05, 0x4F, 0xCC, 0x87, 0xCC, 0x84, 0xCE, -+ 0x05, 0x4F, 0xCC, 0x88, 0xCC, 0x84, 0xCE, 0x05, -+ 0x4F, 0xCC, 0x9B, 0xCC, 0x80, 0xCE, 0x05, 0x4F, -+ 0xCC, 0x9B, 0xCC, 0x81, 0xCE, 0x05, 0x4F, 0xCC, -+ 0x9B, 0xCC, 0x83, 0xCE, 0x05, 0x4F, 0xCC, 0x9B, -+ // Bytes 3ac0 - 3aff -+ 0xCC, 0x89, 0xCE, 0x05, 0x4F, 0xCC, 0x9B, 0xCC, -+ 0xA3, 0xBA, 0x05, 0x4F, 0xCC, 0xA3, 0xCC, 0x82, -+ 0xCE, 0x05, 0x4F, 0xCC, 0xA8, 0xCC, 0x84, 0xCE, -+ 0x05, 0x52, 0xCC, 0xA3, 0xCC, 0x84, 0xCE, 0x05, -+ 0x53, 0xCC, 0x81, 0xCC, 0x87, 0xCE, 0x05, 0x53, -+ 0xCC, 0x8C, 0xCC, 0x87, 0xCE, 0x05, 0x53, 0xCC, -+ 0xA3, 0xCC, 0x87, 0xCE, 0x05, 0x55, 0xCC, 0x83, -+ 0xCC, 0x81, 0xCE, 0x05, 0x55, 0xCC, 0x84, 0xCC, -+ // Bytes 3b00 - 3b3f -+ 0x88, 0xCE, 0x05, 0x55, 0xCC, 0x88, 0xCC, 0x80, -+ 0xCE, 0x05, 0x55, 0xCC, 0x88, 0xCC, 0x81, 0xCE, -+ 0x05, 0x55, 0xCC, 0x88, 0xCC, 0x84, 0xCE, 0x05, -+ 0x55, 0xCC, 0x88, 0xCC, 0x8C, 0xCE, 0x05, 0x55, -+ 0xCC, 0x9B, 0xCC, 0x80, 0xCE, 0x05, 0x55, 0xCC, -+ 0x9B, 0xCC, 0x81, 0xCE, 0x05, 0x55, 0xCC, 0x9B, -+ 0xCC, 0x83, 0xCE, 0x05, 0x55, 0xCC, 0x9B, 0xCC, -+ 0x89, 0xCE, 0x05, 0x55, 0xCC, 0x9B, 0xCC, 0xA3, -+ // Bytes 3b40 - 3b7f -+ 0xBA, 0x05, 0x61, 0xCC, 0x82, 0xCC, 0x80, 0xCE, -+ 0x05, 0x61, 0xCC, 0x82, 0xCC, 0x81, 0xCE, 0x05, -+ 0x61, 0xCC, 0x82, 0xCC, 0x83, 0xCE, 0x05, 0x61, -+ 0xCC, 0x82, 0xCC, 0x89, 0xCE, 0x05, 0x61, 0xCC, -+ 0x86, 0xCC, 0x80, 0xCE, 0x05, 0x61, 0xCC, 0x86, -+ 0xCC, 0x81, 0xCE, 0x05, 0x61, 0xCC, 0x86, 0xCC, -+ 0x83, 0xCE, 0x05, 0x61, 0xCC, 0x86, 0xCC, 0x89, -+ 0xCE, 0x05, 0x61, 0xCC, 0x87, 0xCC, 0x84, 0xCE, -+ // Bytes 3b80 - 3bbf -+ 0x05, 0x61, 0xCC, 0x88, 0xCC, 0x84, 0xCE, 0x05, -+ 0x61, 0xCC, 0x8A, 0xCC, 0x81, 0xCE, 0x05, 0x61, -+ 0xCC, 0xA3, 0xCC, 0x82, 0xCE, 0x05, 0x61, 0xCC, -+ 0xA3, 0xCC, 0x86, 0xCE, 0x05, 0x63, 0xCC, 0xA7, -+ 0xCC, 0x81, 0xCE, 0x05, 0x65, 0xCC, 0x82, 0xCC, -+ 0x80, 0xCE, 0x05, 0x65, 0xCC, 0x82, 0xCC, 0x81, -+ 0xCE, 0x05, 0x65, 0xCC, 0x82, 0xCC, 0x83, 0xCE, -+ 0x05, 0x65, 0xCC, 0x82, 0xCC, 0x89, 0xCE, 0x05, -+ // Bytes 3bc0 - 3bff -+ 0x65, 0xCC, 0x84, 0xCC, 0x80, 0xCE, 0x05, 0x65, -+ 0xCC, 0x84, 0xCC, 0x81, 0xCE, 0x05, 0x65, 0xCC, -+ 0xA3, 0xCC, 0x82, 0xCE, 0x05, 0x65, 0xCC, 0xA7, -+ 0xCC, 0x86, 0xCE, 0x05, 0x69, 0xCC, 0x88, 0xCC, -+ 0x81, 0xCE, 0x05, 0x6C, 0xCC, 0xA3, 0xCC, 0x84, -+ 0xCE, 0x05, 0x6F, 0xCC, 0x82, 0xCC, 0x80, 0xCE, -+ 0x05, 0x6F, 0xCC, 0x82, 0xCC, 0x81, 0xCE, 0x05, -+ 0x6F, 0xCC, 0x82, 0xCC, 0x83, 0xCE, 0x05, 0x6F, -+ // Bytes 3c00 - 3c3f -+ 0xCC, 0x82, 0xCC, 0x89, 0xCE, 0x05, 0x6F, 0xCC, -+ 0x83, 0xCC, 0x81, 0xCE, 0x05, 0x6F, 0xCC, 0x83, -+ 0xCC, 0x84, 0xCE, 0x05, 0x6F, 0xCC, 0x83, 0xCC, -+ 0x88, 0xCE, 0x05, 0x6F, 0xCC, 0x84, 0xCC, 0x80, -+ 0xCE, 0x05, 0x6F, 0xCC, 0x84, 0xCC, 0x81, 0xCE, -+ 0x05, 0x6F, 0xCC, 0x87, 0xCC, 0x84, 0xCE, 0x05, -+ 0x6F, 0xCC, 0x88, 0xCC, 0x84, 0xCE, 0x05, 0x6F, -+ 0xCC, 0x9B, 0xCC, 0x80, 0xCE, 0x05, 0x6F, 0xCC, -+ // Bytes 3c40 - 3c7f -+ 0x9B, 0xCC, 0x81, 0xCE, 0x05, 0x6F, 0xCC, 0x9B, -+ 0xCC, 0x83, 0xCE, 0x05, 0x6F, 0xCC, 0x9B, 0xCC, -+ 0x89, 0xCE, 0x05, 0x6F, 0xCC, 0x9B, 0xCC, 0xA3, -+ 0xBA, 0x05, 0x6F, 0xCC, 0xA3, 0xCC, 0x82, 0xCE, -+ 0x05, 0x6F, 0xCC, 0xA8, 0xCC, 0x84, 0xCE, 0x05, -+ 0x72, 0xCC, 0xA3, 0xCC, 0x84, 0xCE, 0x05, 0x73, -+ 0xCC, 0x81, 0xCC, 0x87, 0xCE, 0x05, 0x73, 0xCC, -+ 0x8C, 0xCC, 0x87, 0xCE, 0x05, 0x73, 0xCC, 0xA3, -+ // Bytes 3c80 - 3cbf -+ 0xCC, 0x87, 0xCE, 0x05, 0x75, 0xCC, 0x83, 0xCC, -+ 0x81, 0xCE, 0x05, 0x75, 0xCC, 0x84, 0xCC, 0x88, -+ 0xCE, 0x05, 0x75, 0xCC, 0x88, 0xCC, 0x80, 0xCE, -+ 0x05, 0x75, 0xCC, 0x88, 0xCC, 0x81, 0xCE, 0x05, -+ 0x75, 0xCC, 0x88, 0xCC, 0x84, 0xCE, 0x05, 0x75, -+ 0xCC, 0x88, 0xCC, 0x8C, 0xCE, 0x05, 0x75, 0xCC, -+ 0x9B, 0xCC, 0x80, 0xCE, 0x05, 0x75, 0xCC, 0x9B, -+ 0xCC, 0x81, 0xCE, 0x05, 0x75, 0xCC, 0x9B, 0xCC, -+ // Bytes 3cc0 - 3cff -+ 0x83, 0xCE, 0x05, 0x75, 0xCC, 0x9B, 0xCC, 0x89, -+ 0xCE, 0x05, 0x75, 0xCC, 0x9B, 0xCC, 0xA3, 0xBA, -+ 0x05, 0xE1, 0xBE, 0xBF, 0xCC, 0x80, 0xCE, 0x05, -+ 0xE1, 0xBE, 0xBF, 0xCC, 0x81, 0xCE, 0x05, 0xE1, -+ 0xBE, 0xBF, 0xCD, 0x82, 0xCE, 0x05, 0xE1, 0xBF, -+ 0xBE, 0xCC, 0x80, 0xCE, 0x05, 0xE1, 0xBF, 0xBE, -+ 0xCC, 0x81, 0xCE, 0x05, 0xE1, 0xBF, 0xBE, 0xCD, -+ 0x82, 0xCE, 0x05, 0xE2, 0x86, 0x90, 0xCC, 0xB8, -+ // Bytes 3d00 - 3d3f -+ 0x05, 0x05, 0xE2, 0x86, 0x92, 0xCC, 0xB8, 0x05, -+ 0x05, 0xE2, 0x86, 0x94, 0xCC, 0xB8, 0x05, 0x05, -+ 0xE2, 0x87, 0x90, 0xCC, 0xB8, 0x05, 0x05, 0xE2, -+ 0x87, 0x92, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x87, -+ 0x94, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x88, 0x83, -+ 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x88, 0x88, 0xCC, -+ 0xB8, 0x05, 0x05, 0xE2, 0x88, 0x8B, 0xCC, 0xB8, -+ 0x05, 0x05, 0xE2, 0x88, 0xA3, 0xCC, 0xB8, 0x05, -+ // Bytes 3d40 - 3d7f -+ 0x05, 0xE2, 0x88, 0xA5, 0xCC, 0xB8, 0x05, 0x05, -+ 0xE2, 0x88, 0xBC, 0xCC, 0xB8, 0x05, 0x05, 0xE2, -+ 0x89, 0x83, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, -+ 0x85, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0x88, -+ 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0x8D, 0xCC, -+ 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xA1, 0xCC, 0xB8, -+ 0x05, 0x05, 0xE2, 0x89, 0xA4, 0xCC, 0xB8, 0x05, -+ 0x05, 0xE2, 0x89, 0xA5, 0xCC, 0xB8, 0x05, 0x05, -+ // Bytes 3d80 - 3dbf -+ 0xE2, 0x89, 0xB2, 0xCC, 0xB8, 0x05, 0x05, 0xE2, -+ 0x89, 0xB3, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, -+ 0xB6, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xB7, -+ 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xBA, 0xCC, -+ 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xBB, 0xCC, 0xB8, -+ 0x05, 0x05, 0xE2, 0x89, 0xBC, 0xCC, 0xB8, 0x05, -+ 0x05, 0xE2, 0x89, 0xBD, 0xCC, 0xB8, 0x05, 0x05, -+ 0xE2, 0x8A, 0x82, 0xCC, 0xB8, 0x05, 0x05, 0xE2, -+ // Bytes 3dc0 - 3dff -+ 0x8A, 0x83, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, -+ 0x86, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x87, -+ 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x91, 0xCC, -+ 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x92, 0xCC, 0xB8, -+ 0x05, 0x05, 0xE2, 0x8A, 0xA2, 0xCC, 0xB8, 0x05, -+ 0x05, 0xE2, 0x8A, 0xA8, 0xCC, 0xB8, 0x05, 0x05, -+ 0xE2, 0x8A, 0xA9, 0xCC, 0xB8, 0x05, 0x05, 0xE2, -+ 0x8A, 0xAB, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, -+ // Bytes 3e00 - 3e3f -+ 0xB2, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xB3, -+ 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xB4, 0xCC, -+ 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xB5, 0xCC, 0xB8, -+ 0x05, 0x06, 0xCE, 0x91, 0xCC, 0x93, 0xCD, 0x85, -+ 0xDE, 0x06, 0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x85, -+ 0xDE, 0x06, 0xCE, 0x95, 0xCC, 0x93, 0xCC, 0x80, -+ 0xCE, 0x06, 0xCE, 0x95, 0xCC, 0x93, 0xCC, 0x81, -+ 0xCE, 0x06, 0xCE, 0x95, 0xCC, 0x94, 0xCC, 0x80, -+ // Bytes 3e40 - 3e7f -+ 0xCE, 0x06, 0xCE, 0x95, 0xCC, 0x94, 0xCC, 0x81, -+ 0xCE, 0x06, 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x85, -+ 0xDE, 0x06, 0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x85, -+ 0xDE, 0x06, 0xCE, 0x99, 0xCC, 0x93, 0xCC, 0x80, -+ 0xCE, 0x06, 0xCE, 0x99, 0xCC, 0x93, 0xCC, 0x81, -+ 0xCE, 0x06, 0xCE, 0x99, 0xCC, 0x93, 0xCD, 0x82, -+ 0xCE, 0x06, 0xCE, 0x99, 0xCC, 0x94, 0xCC, 0x80, -+ 0xCE, 0x06, 0xCE, 0x99, 0xCC, 0x94, 0xCC, 0x81, -+ // Bytes 3e80 - 3ebf -+ 0xCE, 0x06, 0xCE, 0x99, 0xCC, 0x94, 0xCD, 0x82, -+ 0xCE, 0x06, 0xCE, 0x9F, 0xCC, 0x93, 0xCC, 0x80, -+ 0xCE, 0x06, 0xCE, 0x9F, 0xCC, 0x93, 0xCC, 0x81, -+ 0xCE, 0x06, 0xCE, 0x9F, 0xCC, 0x94, 0xCC, 0x80, -+ 0xCE, 0x06, 0xCE, 0x9F, 0xCC, 0x94, 0xCC, 0x81, -+ 0xCE, 0x06, 0xCE, 0xA5, 0xCC, 0x94, 0xCC, 0x80, -+ 0xCE, 0x06, 0xCE, 0xA5, 0xCC, 0x94, 0xCC, 0x81, -+ 0xCE, 0x06, 0xCE, 0xA5, 0xCC, 0x94, 0xCD, 0x82, -+ // Bytes 3ec0 - 3eff -+ 0xCE, 0x06, 0xCE, 0xA9, 0xCC, 0x93, 0xCD, 0x85, -+ 0xDE, 0x06, 0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x85, -+ 0xDE, 0x06, 0xCE, 0xB1, 0xCC, 0x80, 0xCD, 0x85, -+ 0xDE, 0x06, 0xCE, 0xB1, 0xCC, 0x81, 0xCD, 0x85, -+ 0xDE, 0x06, 0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x85, -+ 0xDE, 0x06, 0xCE, 0xB1, 0xCC, 0x94, 0xCD, 0x85, -+ 0xDE, 0x06, 0xCE, 0xB1, 0xCD, 0x82, 0xCD, 0x85, -+ 0xDE, 0x06, 0xCE, 0xB5, 0xCC, 0x93, 0xCC, 0x80, -+ // Bytes 3f00 - 3f3f -+ 0xCE, 0x06, 0xCE, 0xB5, 0xCC, 0x93, 0xCC, 0x81, -+ 0xCE, 0x06, 0xCE, 0xB5, 0xCC, 0x94, 0xCC, 0x80, -+ 0xCE, 0x06, 0xCE, 0xB5, 0xCC, 0x94, 0xCC, 0x81, -+ 0xCE, 0x06, 0xCE, 0xB7, 0xCC, 0x80, 0xCD, 0x85, -+ 0xDE, 0x06, 0xCE, 0xB7, 0xCC, 0x81, 0xCD, 0x85, -+ 0xDE, 0x06, 0xCE, 0xB7, 0xCC, 0x93, 0xCD, 0x85, -+ 0xDE, 0x06, 0xCE, 0xB7, 0xCC, 0x94, 0xCD, 0x85, -+ 0xDE, 0x06, 0xCE, 0xB7, 0xCD, 0x82, 0xCD, 0x85, -+ // Bytes 3f40 - 3f7f -+ 0xDE, 0x06, 0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x80, -+ 0xCE, 0x06, 0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x81, -+ 0xCE, 0x06, 0xCE, 0xB9, 0xCC, 0x88, 0xCD, 0x82, -+ 0xCE, 0x06, 0xCE, 0xB9, 0xCC, 0x93, 0xCC, 0x80, -+ 0xCE, 0x06, 0xCE, 0xB9, 0xCC, 0x93, 0xCC, 0x81, -+ 0xCE, 0x06, 0xCE, 0xB9, 0xCC, 0x93, 0xCD, 0x82, -+ 0xCE, 0x06, 0xCE, 0xB9, 0xCC, 0x94, 0xCC, 0x80, -+ 0xCE, 0x06, 0xCE, 0xB9, 0xCC, 0x94, 0xCC, 0x81, -+ // Bytes 3f80 - 3fbf -+ 0xCE, 0x06, 0xCE, 0xB9, 0xCC, 0x94, 0xCD, 0x82, -+ 0xCE, 0x06, 0xCE, 0xBF, 0xCC, 0x93, 0xCC, 0x80, -+ 0xCE, 0x06, 0xCE, 0xBF, 0xCC, 0x93, 0xCC, 0x81, -+ 0xCE, 0x06, 0xCE, 0xBF, 0xCC, 0x94, 0xCC, 0x80, -+ 0xCE, 0x06, 0xCE, 0xBF, 0xCC, 0x94, 0xCC, 0x81, -+ 0xCE, 0x06, 0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x80, -+ 0xCE, 0x06, 0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x81, -+ 0xCE, 0x06, 0xCF, 0x85, 0xCC, 0x88, 0xCD, 0x82, -+ // Bytes 3fc0 - 3fff -+ 0xCE, 0x06, 0xCF, 0x85, 0xCC, 0x93, 0xCC, 0x80, -+ 0xCE, 0x06, 0xCF, 0x85, 0xCC, 0x93, 0xCC, 0x81, -+ 0xCE, 0x06, 0xCF, 0x85, 0xCC, 0x93, 0xCD, 0x82, -+ 0xCE, 0x06, 0xCF, 0x85, 0xCC, 0x94, 0xCC, 0x80, -+ 0xCE, 0x06, 0xCF, 0x85, 0xCC, 0x94, 0xCC, 0x81, -+ 0xCE, 0x06, 0xCF, 0x85, 0xCC, 0x94, 0xCD, 0x82, -+ 0xCE, 0x06, 0xCF, 0x89, 0xCC, 0x80, 0xCD, 0x85, -+ 0xDE, 0x06, 0xCF, 0x89, 0xCC, 0x81, 0xCD, 0x85, -+ // Bytes 4000 - 403f -+ 0xDE, 0x06, 0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x85, -+ 0xDE, 0x06, 0xCF, 0x89, 0xCC, 0x94, 0xCD, 0x85, -+ 0xDE, 0x06, 0xCF, 0x89, 0xCD, 0x82, 0xCD, 0x85, -+ 0xDE, 0x06, 0xE0, 0xA4, 0xA8, 0xE0, 0xA4, 0xBC, -+ 0x0D, 0x06, 0xE0, 0xA4, 0xB0, 0xE0, 0xA4, 0xBC, -+ 0x0D, 0x06, 0xE0, 0xA4, 0xB3, 0xE0, 0xA4, 0xBC, -+ 0x0D, 0x06, 0xE0, 0xB1, 0x86, 0xE0, 0xB1, 0x96, -+ 0x89, 0x06, 0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x8A, -+ // Bytes 4040 - 407f -+ 0x15, 0x06, 0xE3, 0x81, 0x86, 0xE3, 0x82, 0x99, -+ 0x11, 0x06, 0xE3, 0x81, 0x8B, 0xE3, 0x82, 0x99, -+ 0x11, 0x06, 0xE3, 0x81, 0x8D, 0xE3, 0x82, 0x99, -+ 0x11, 0x06, 0xE3, 0x81, 0x8F, 0xE3, 0x82, 0x99, -+ 0x11, 0x06, 0xE3, 0x81, 0x91, 0xE3, 0x82, 0x99, -+ 0x11, 0x06, 0xE3, 0x81, 0x93, 0xE3, 0x82, 0x99, -+ 0x11, 0x06, 0xE3, 0x81, 0x95, 0xE3, 0x82, 0x99, -+ 0x11, 0x06, 0xE3, 0x81, 0x97, 0xE3, 0x82, 0x99, -+ // Bytes 4080 - 40bf -+ 0x11, 0x06, 0xE3, 0x81, 0x99, 0xE3, 0x82, 0x99, -+ 0x11, 0x06, 0xE3, 0x81, 0x9B, 0xE3, 0x82, 0x99, -+ 0x11, 0x06, 0xE3, 0x81, 0x9D, 0xE3, 0x82, 0x99, -+ 0x11, 0x06, 0xE3, 0x81, 0x9F, 0xE3, 0x82, 0x99, -+ 0x11, 0x06, 0xE3, 0x81, 0xA1, 0xE3, 0x82, 0x99, -+ 0x11, 0x06, 0xE3, 0x81, 0xA4, 0xE3, 0x82, 0x99, -+ 0x11, 0x06, 0xE3, 0x81, 0xA6, 0xE3, 0x82, 0x99, -+ 0x11, 0x06, 0xE3, 0x81, 0xA8, 0xE3, 0x82, 0x99, -+ // Bytes 40c0 - 40ff -+ 0x11, 0x06, 0xE3, 0x81, 0xAF, 0xE3, 0x82, 0x99, -+ 0x11, 0x06, 0xE3, 0x81, 0xAF, 0xE3, 0x82, 0x9A, -+ 0x11, 0x06, 0xE3, 0x81, 0xB2, 0xE3, 0x82, 0x99, -+ 0x11, 0x06, 0xE3, 0x81, 0xB2, 0xE3, 0x82, 0x9A, -+ 0x11, 0x06, 0xE3, 0x81, 0xB5, 0xE3, 0x82, 0x99, -+ 0x11, 0x06, 0xE3, 0x81, 0xB5, 0xE3, 0x82, 0x9A, -+ 0x11, 0x06, 0xE3, 0x81, 0xB8, 0xE3, 0x82, 0x99, -+ 0x11, 0x06, 0xE3, 0x81, 0xB8, 0xE3, 0x82, 0x9A, -+ // Bytes 4100 - 413f -+ 0x11, 0x06, 0xE3, 0x81, 0xBB, 0xE3, 0x82, 0x99, -+ 0x11, 0x06, 0xE3, 0x81, 0xBB, 0xE3, 0x82, 0x9A, -+ 0x11, 0x06, 0xE3, 0x82, 0x9D, 0xE3, 0x82, 0x99, -+ 0x11, 0x06, 0xE3, 0x82, 0xA6, 0xE3, 0x82, 0x99, -+ 0x11, 0x06, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, -+ 0x11, 0x06, 0xE3, 0x82, 0xAD, 0xE3, 0x82, 0x99, -+ 0x11, 0x06, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, -+ 0x11, 0x06, 0xE3, 0x82, 0xB1, 0xE3, 0x82, 0x99, -+ // Bytes 4140 - 417f -+ 0x11, 0x06, 0xE3, 0x82, 0xB3, 0xE3, 0x82, 0x99, -+ 0x11, 0x06, 0xE3, 0x82, 0xB5, 0xE3, 0x82, 0x99, -+ 0x11, 0x06, 0xE3, 0x82, 0xB7, 0xE3, 0x82, 0x99, -+ 0x11, 0x06, 0xE3, 0x82, 0xB9, 0xE3, 0x82, 0x99, -+ 0x11, 0x06, 0xE3, 0x82, 0xBB, 0xE3, 0x82, 0x99, -+ 0x11, 0x06, 0xE3, 0x82, 0xBD, 0xE3, 0x82, 0x99, -+ 0x11, 0x06, 0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99, -+ 0x11, 0x06, 0xE3, 0x83, 0x81, 0xE3, 0x82, 0x99, -+ // Bytes 4180 - 41bf -+ 0x11, 0x06, 0xE3, 0x83, 0x84, 0xE3, 0x82, 0x99, -+ 0x11, 0x06, 0xE3, 0x83, 0x86, 0xE3, 0x82, 0x99, -+ 0x11, 0x06, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, -+ 0x11, 0x06, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x99, -+ 0x11, 0x06, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A, -+ 0x11, 0x06, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x99, -+ 0x11, 0x06, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, -+ 0x11, 0x06, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x99, -+ // Bytes 41c0 - 41ff -+ 0x11, 0x06, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x9A, -+ 0x11, 0x06, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x99, -+ 0x11, 0x06, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, -+ 0x11, 0x06, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x99, -+ 0x11, 0x06, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A, -+ 0x11, 0x06, 0xE3, 0x83, 0xAF, 0xE3, 0x82, 0x99, -+ 0x11, 0x06, 0xE3, 0x83, 0xB0, 0xE3, 0x82, 0x99, -+ 0x11, 0x06, 0xE3, 0x83, 0xB1, 0xE3, 0x82, 0x99, -+ // Bytes 4200 - 423f -+ 0x11, 0x06, 0xE3, 0x83, 0xB2, 0xE3, 0x82, 0x99, -+ 0x11, 0x06, 0xE3, 0x83, 0xBD, 0xE3, 0x82, 0x99, -+ 0x11, 0x08, 0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x80, -+ 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x91, 0xCC, 0x93, -+ 0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x91, -+ 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08, -+ 0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, -+ 0xDF, 0x08, 0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x81, -+ // Bytes 4240 - 427f -+ 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x91, 0xCC, 0x94, -+ 0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x97, -+ 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08, -+ 0xCE, 0x97, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, -+ 0xDF, 0x08, 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x82, -+ 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x97, 0xCC, 0x94, -+ 0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x97, -+ 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08, -+ // Bytes 4280 - 42bf -+ 0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, -+ 0xDF, 0x08, 0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x80, -+ 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xA9, 0xCC, 0x93, -+ 0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xA9, -+ 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08, -+ 0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, -+ 0xDF, 0x08, 0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x81, -+ 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xA9, 0xCC, 0x94, -+ // Bytes 42c0 - 42ff -+ 0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB1, -+ 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08, -+ 0xCE, 0xB1, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, -+ 0xDF, 0x08, 0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x82, -+ 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB1, 0xCC, 0x94, -+ 0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB1, -+ 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08, -+ 0xCE, 0xB1, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, -+ // Bytes 4300 - 433f -+ 0xDF, 0x08, 0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x80, -+ 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB7, 0xCC, 0x93, -+ 0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB7, -+ 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08, -+ 0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, -+ 0xDF, 0x08, 0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x81, -+ 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB7, 0xCC, 0x94, -+ 0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08, 0xCF, 0x89, -+ // Bytes 4340 - 437f -+ 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08, -+ 0xCF, 0x89, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, -+ 0xDF, 0x08, 0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x82, -+ 0xCD, 0x85, 0xDF, 0x08, 0xCF, 0x89, 0xCC, 0x94, -+ 0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08, 0xCF, 0x89, -+ 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08, -+ 0xCF, 0x89, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, -+ 0xDF, 0x08, 0xF0, 0x91, 0x82, 0x99, 0xF0, 0x91, -+ // Bytes 4380 - 43bf -+ 0x82, 0xBA, 0x0D, 0x08, 0xF0, 0x91, 0x82, 0x9B, -+ 0xF0, 0x91, 0x82, 0xBA, 0x0D, 0x08, 0xF0, 0x91, -+ 0x82, 0xA5, 0xF0, 0x91, 0x82, 0xBA, 0x0D, 0x42, -+ 0xC2, 0xB4, 0x01, 0x43, 0x20, 0xCC, 0x81, 0xCD, -+ 0x43, 0x20, 0xCC, 0x83, 0xCD, 0x43, 0x20, 0xCC, -+ 0x84, 0xCD, 0x43, 0x20, 0xCC, 0x85, 0xCD, 0x43, -+ 0x20, 0xCC, 0x86, 0xCD, 0x43, 0x20, 0xCC, 0x87, -+ 0xCD, 0x43, 0x20, 0xCC, 0x88, 0xCD, 0x43, 0x20, -+ // Bytes 43c0 - 43ff -+ 0xCC, 0x8A, 0xCD, 0x43, 0x20, 0xCC, 0x8B, 0xCD, -+ 0x43, 0x20, 0xCC, 0x93, 0xCD, 0x43, 0x20, 0xCC, -+ 0x94, 0xCD, 0x43, 0x20, 0xCC, 0xA7, 0xA9, 0x43, -+ 0x20, 0xCC, 0xA8, 0xA9, 0x43, 0x20, 0xCC, 0xB3, -+ 0xB9, 0x43, 0x20, 0xCD, 0x82, 0xCD, 0x43, 0x20, -+ 0xCD, 0x85, 0xDD, 0x43, 0x20, 0xD9, 0x8B, 0x5D, -+ 0x43, 0x20, 0xD9, 0x8C, 0x61, 0x43, 0x20, 0xD9, -+ 0x8D, 0x65, 0x43, 0x20, 0xD9, 0x8E, 0x69, 0x43, -+ // Bytes 4400 - 443f -+ 0x20, 0xD9, 0x8F, 0x6D, 0x43, 0x20, 0xD9, 0x90, -+ 0x71, 0x43, 0x20, 0xD9, 0x91, 0x75, 0x43, 0x20, -+ 0xD9, 0x92, 0x79, 0x43, 0x41, 0xCC, 0x8A, 0xCD, -+ 0x43, 0x73, 0xCC, 0x87, 0xCD, 0x44, 0x20, 0xE3, -+ 0x82, 0x99, 0x11, 0x44, 0x20, 0xE3, 0x82, 0x9A, -+ 0x11, 0x44, 0xC2, 0xA8, 0xCC, 0x81, 0xCE, 0x44, -+ 0xCE, 0x91, 0xCC, 0x81, 0xCD, 0x44, 0xCE, 0x95, -+ 0xCC, 0x81, 0xCD, 0x44, 0xCE, 0x97, 0xCC, 0x81, -+ // Bytes 4440 - 447f -+ 0xCD, 0x44, 0xCE, 0x99, 0xCC, 0x81, 0xCD, 0x44, -+ 0xCE, 0x9F, 0xCC, 0x81, 0xCD, 0x44, 0xCE, 0xA5, -+ 0xCC, 0x81, 0xCD, 0x44, 0xCE, 0xA5, 0xCC, 0x88, -+ 0xCD, 0x44, 0xCE, 0xA9, 0xCC, 0x81, 0xCD, 0x44, -+ 0xCE, 0xB1, 0xCC, 0x81, 0xCD, 0x44, 0xCE, 0xB5, -+ 0xCC, 0x81, 0xCD, 0x44, 0xCE, 0xB7, 0xCC, 0x81, -+ 0xCD, 0x44, 0xCE, 0xB9, 0xCC, 0x81, 0xCD, 0x44, -+ 0xCE, 0xBF, 0xCC, 0x81, 0xCD, 0x44, 0xCF, 0x85, -+ // Bytes 4480 - 44bf -+ 0xCC, 0x81, 0xCD, 0x44, 0xCF, 0x89, 0xCC, 0x81, -+ 0xCD, 0x44, 0xD7, 0x90, 0xD6, 0xB7, 0x35, 0x44, -+ 0xD7, 0x90, 0xD6, 0xB8, 0x39, 0x44, 0xD7, 0x90, -+ 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x91, 0xD6, 0xBC, -+ 0x45, 0x44, 0xD7, 0x91, 0xD6, 0xBF, 0x4D, 0x44, -+ 0xD7, 0x92, 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x93, -+ 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x94, 0xD6, 0xBC, -+ 0x45, 0x44, 0xD7, 0x95, 0xD6, 0xB9, 0x3D, 0x44, -+ // Bytes 44c0 - 44ff -+ 0xD7, 0x95, 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x96, -+ 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x98, 0xD6, 0xBC, -+ 0x45, 0x44, 0xD7, 0x99, 0xD6, 0xB4, 0x29, 0x44, -+ 0xD7, 0x99, 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x9A, -+ 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x9B, 0xD6, 0xBC, -+ 0x45, 0x44, 0xD7, 0x9B, 0xD6, 0xBF, 0x4D, 0x44, -+ 0xD7, 0x9C, 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x9E, -+ 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0xA0, 0xD6, 0xBC, -+ // Bytes 4500 - 453f -+ 0x45, 0x44, 0xD7, 0xA1, 0xD6, 0xBC, 0x45, 0x44, -+ 0xD7, 0xA3, 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0xA4, -+ 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0xA4, 0xD6, 0xBF, -+ 0x4D, 0x44, 0xD7, 0xA6, 0xD6, 0xBC, 0x45, 0x44, -+ 0xD7, 0xA7, 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0xA8, -+ 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0xA9, 0xD6, 0xBC, -+ 0x45, 0x44, 0xD7, 0xA9, 0xD7, 0x81, 0x51, 0x44, -+ 0xD7, 0xA9, 0xD7, 0x82, 0x55, 0x44, 0xD7, 0xAA, -+ // Bytes 4540 - 457f -+ 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0xB2, 0xD6, 0xB7, -+ 0x35, 0x44, 0xD8, 0xA7, 0xD9, 0x8B, 0x5D, 0x44, -+ 0xD8, 0xA7, 0xD9, 0x93, 0xCD, 0x44, 0xD8, 0xA7, -+ 0xD9, 0x94, 0xCD, 0x44, 0xD8, 0xA7, 0xD9, 0x95, -+ 0xB9, 0x44, 0xD8, 0xB0, 0xD9, 0xB0, 0x7D, 0x44, -+ 0xD8, 0xB1, 0xD9, 0xB0, 0x7D, 0x44, 0xD9, 0x80, -+ 0xD9, 0x8B, 0x5D, 0x44, 0xD9, 0x80, 0xD9, 0x8E, -+ 0x69, 0x44, 0xD9, 0x80, 0xD9, 0x8F, 0x6D, 0x44, -+ // Bytes 4580 - 45bf -+ 0xD9, 0x80, 0xD9, 0x90, 0x71, 0x44, 0xD9, 0x80, -+ 0xD9, 0x91, 0x75, 0x44, 0xD9, 0x80, 0xD9, 0x92, -+ 0x79, 0x44, 0xD9, 0x87, 0xD9, 0xB0, 0x7D, 0x44, -+ 0xD9, 0x88, 0xD9, 0x94, 0xCD, 0x44, 0xD9, 0x89, -+ 0xD9, 0xB0, 0x7D, 0x44, 0xD9, 0x8A, 0xD9, 0x94, -+ 0xCD, 0x44, 0xDB, 0x92, 0xD9, 0x94, 0xCD, 0x44, -+ 0xDB, 0x95, 0xD9, 0x94, 0xCD, 0x45, 0x20, 0xCC, -+ 0x88, 0xCC, 0x80, 0xCE, 0x45, 0x20, 0xCC, 0x88, -+ // Bytes 45c0 - 45ff -+ 0xCC, 0x81, 0xCE, 0x45, 0x20, 0xCC, 0x88, 0xCD, -+ 0x82, 0xCE, 0x45, 0x20, 0xCC, 0x93, 0xCC, 0x80, -+ 0xCE, 0x45, 0x20, 0xCC, 0x93, 0xCC, 0x81, 0xCE, -+ 0x45, 0x20, 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x45, -+ 0x20, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x45, 0x20, -+ 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x45, 0x20, 0xCC, -+ 0x94, 0xCD, 0x82, 0xCE, 0x45, 0x20, 0xD9, 0x8C, -+ 0xD9, 0x91, 0x76, 0x45, 0x20, 0xD9, 0x8D, 0xD9, -+ // Bytes 4600 - 463f -+ 0x91, 0x76, 0x45, 0x20, 0xD9, 0x8E, 0xD9, 0x91, -+ 0x76, 0x45, 0x20, 0xD9, 0x8F, 0xD9, 0x91, 0x76, -+ 0x45, 0x20, 0xD9, 0x90, 0xD9, 0x91, 0x76, 0x45, -+ 0x20, 0xD9, 0x91, 0xD9, 0xB0, 0x7E, 0x45, 0xE2, -+ 0xAB, 0x9D, 0xCC, 0xB8, 0x05, 0x46, 0xCE, 0xB9, -+ 0xCC, 0x88, 0xCC, 0x81, 0xCE, 0x46, 0xCF, 0x85, -+ 0xCC, 0x88, 0xCC, 0x81, 0xCE, 0x46, 0xD7, 0xA9, -+ 0xD6, 0xBC, 0xD7, 0x81, 0x52, 0x46, 0xD7, 0xA9, -+ // Bytes 4640 - 467f -+ 0xD6, 0xBC, 0xD7, 0x82, 0x56, 0x46, 0xD9, 0x80, -+ 0xD9, 0x8E, 0xD9, 0x91, 0x76, 0x46, 0xD9, 0x80, -+ 0xD9, 0x8F, 0xD9, 0x91, 0x76, 0x46, 0xD9, 0x80, -+ 0xD9, 0x90, 0xD9, 0x91, 0x76, 0x46, 0xE0, 0xA4, -+ 0x95, 0xE0, 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, -+ 0x96, 0xE0, 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, -+ 0x97, 0xE0, 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, -+ 0x9C, 0xE0, 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, -+ // Bytes 4680 - 46bf -+ 0xA1, 0xE0, 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, -+ 0xA2, 0xE0, 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, -+ 0xAB, 0xE0, 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, -+ 0xAF, 0xE0, 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA6, -+ 0xA1, 0xE0, 0xA6, 0xBC, 0x0D, 0x46, 0xE0, 0xA6, -+ 0xA2, 0xE0, 0xA6, 0xBC, 0x0D, 0x46, 0xE0, 0xA6, -+ 0xAF, 0xE0, 0xA6, 0xBC, 0x0D, 0x46, 0xE0, 0xA8, -+ 0x96, 0xE0, 0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xA8, -+ // Bytes 46c0 - 46ff -+ 0x97, 0xE0, 0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xA8, -+ 0x9C, 0xE0, 0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xA8, -+ 0xAB, 0xE0, 0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xA8, -+ 0xB2, 0xE0, 0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xA8, -+ 0xB8, 0xE0, 0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xAC, -+ 0xA1, 0xE0, 0xAC, 0xBC, 0x0D, 0x46, 0xE0, 0xAC, -+ 0xA2, 0xE0, 0xAC, 0xBC, 0x0D, 0x46, 0xE0, 0xBE, -+ 0xB2, 0xE0, 0xBE, 0x80, 0xA1, 0x46, 0xE0, 0xBE, -+ // Bytes 4700 - 473f -+ 0xB3, 0xE0, 0xBE, 0x80, 0xA1, 0x46, 0xE3, 0x83, -+ 0x86, 0xE3, 0x82, 0x99, 0x11, 0x48, 0xF0, 0x9D, -+ 0x85, 0x97, 0xF0, 0x9D, 0x85, 0xA5, 0xB1, 0x48, -+ 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, -+ 0xB1, 0x48, 0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D, -+ 0x85, 0xA5, 0xB1, 0x48, 0xF0, 0x9D, 0x86, 0xBA, -+ 0xF0, 0x9D, 0x85, 0xA5, 0xB1, 0x49, 0xE0, 0xBE, -+ 0xB2, 0xE0, 0xBD, 0xB1, 0xE0, 0xBE, 0x80, 0xA2, -+ // Bytes 4740 - 477f -+ 0x49, 0xE0, 0xBE, 0xB3, 0xE0, 0xBD, 0xB1, 0xE0, -+ 0xBE, 0x80, 0xA2, 0x4C, 0xF0, 0x9D, 0x85, 0x98, -+ 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAE, -+ 0xB2, 0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, -+ 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAF, 0xB2, 0x4C, -+ 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, -+ 0xF0, 0x9D, 0x85, 0xB0, 0xB2, 0x4C, 0xF0, 0x9D, -+ 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, -+ // Bytes 4780 - 47bf -+ 0x85, 0xB1, 0xB2, 0x4C, 0xF0, 0x9D, 0x85, 0x98, -+ 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xB2, -+ 0xB2, 0x4C, 0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D, -+ 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAE, 0xB2, 0x4C, -+ 0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85, 0xA5, -+ 0xF0, 0x9D, 0x85, 0xAF, 0xB2, 0x4C, 0xF0, 0x9D, -+ 0x86, 0xBA, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, -+ 0x85, 0xAE, 0xB2, 0x4C, 0xF0, 0x9D, 0x86, 0xBA, -+ // Bytes 47c0 - 47ff -+ 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAF, -+ 0xB2, 0x83, 0x41, 0xCC, 0x82, 0xCD, 0x83, 0x41, -+ 0xCC, 0x86, 0xCD, 0x83, 0x41, 0xCC, 0x87, 0xCD, -+ 0x83, 0x41, 0xCC, 0x88, 0xCD, 0x83, 0x41, 0xCC, -+ 0x8A, 0xCD, 0x83, 0x41, 0xCC, 0xA3, 0xB9, 0x83, -+ 0x43, 0xCC, 0xA7, 0xA9, 0x83, 0x45, 0xCC, 0x82, -+ 0xCD, 0x83, 0x45, 0xCC, 0x84, 0xCD, 0x83, 0x45, -+ 0xCC, 0xA3, 0xB9, 0x83, 0x45, 0xCC, 0xA7, 0xA9, -+ // Bytes 4800 - 483f -+ 0x83, 0x49, 0xCC, 0x88, 0xCD, 0x83, 0x4C, 0xCC, -+ 0xA3, 0xB9, 0x83, 0x4F, 0xCC, 0x82, 0xCD, 0x83, -+ 0x4F, 0xCC, 0x83, 0xCD, 0x83, 0x4F, 0xCC, 0x84, -+ 0xCD, 0x83, 0x4F, 0xCC, 0x87, 0xCD, 0x83, 0x4F, -+ 0xCC, 0x88, 0xCD, 0x83, 0x4F, 0xCC, 0x9B, 0xB1, -+ 0x83, 0x4F, 0xCC, 0xA3, 0xB9, 0x83, 0x4F, 0xCC, -+ 0xA8, 0xA9, 0x83, 0x52, 0xCC, 0xA3, 0xB9, 0x83, -+ 0x53, 0xCC, 0x81, 0xCD, 0x83, 0x53, 0xCC, 0x8C, -+ // Bytes 4840 - 487f -+ 0xCD, 0x83, 0x53, 0xCC, 0xA3, 0xB9, 0x83, 0x55, -+ 0xCC, 0x83, 0xCD, 0x83, 0x55, 0xCC, 0x84, 0xCD, -+ 0x83, 0x55, 0xCC, 0x88, 0xCD, 0x83, 0x55, 0xCC, -+ 0x9B, 0xB1, 0x83, 0x61, 0xCC, 0x82, 0xCD, 0x83, -+ 0x61, 0xCC, 0x86, 0xCD, 0x83, 0x61, 0xCC, 0x87, -+ 0xCD, 0x83, 0x61, 0xCC, 0x88, 0xCD, 0x83, 0x61, -+ 0xCC, 0x8A, 0xCD, 0x83, 0x61, 0xCC, 0xA3, 0xB9, -+ 0x83, 0x63, 0xCC, 0xA7, 0xA9, 0x83, 0x65, 0xCC, -+ // Bytes 4880 - 48bf -+ 0x82, 0xCD, 0x83, 0x65, 0xCC, 0x84, 0xCD, 0x83, -+ 0x65, 0xCC, 0xA3, 0xB9, 0x83, 0x65, 0xCC, 0xA7, -+ 0xA9, 0x83, 0x69, 0xCC, 0x88, 0xCD, 0x83, 0x6C, -+ 0xCC, 0xA3, 0xB9, 0x83, 0x6F, 0xCC, 0x82, 0xCD, -+ 0x83, 0x6F, 0xCC, 0x83, 0xCD, 0x83, 0x6F, 0xCC, -+ 0x84, 0xCD, 0x83, 0x6F, 0xCC, 0x87, 0xCD, 0x83, -+ 0x6F, 0xCC, 0x88, 0xCD, 0x83, 0x6F, 0xCC, 0x9B, -+ 0xB1, 0x83, 0x6F, 0xCC, 0xA3, 0xB9, 0x83, 0x6F, -+ // Bytes 48c0 - 48ff -+ 0xCC, 0xA8, 0xA9, 0x83, 0x72, 0xCC, 0xA3, 0xB9, -+ 0x83, 0x73, 0xCC, 0x81, 0xCD, 0x83, 0x73, 0xCC, -+ 0x8C, 0xCD, 0x83, 0x73, 0xCC, 0xA3, 0xB9, 0x83, -+ 0x75, 0xCC, 0x83, 0xCD, 0x83, 0x75, 0xCC, 0x84, -+ 0xCD, 0x83, 0x75, 0xCC, 0x88, 0xCD, 0x83, 0x75, -+ 0xCC, 0x9B, 0xB1, 0x84, 0xCE, 0x91, 0xCC, 0x93, -+ 0xCD, 0x84, 0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x84, -+ 0xCE, 0x95, 0xCC, 0x93, 0xCD, 0x84, 0xCE, 0x95, -+ // Bytes 4900 - 493f -+ 0xCC, 0x94, 0xCD, 0x84, 0xCE, 0x97, 0xCC, 0x93, -+ 0xCD, 0x84, 0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x84, -+ 0xCE, 0x99, 0xCC, 0x93, 0xCD, 0x84, 0xCE, 0x99, -+ 0xCC, 0x94, 0xCD, 0x84, 0xCE, 0x9F, 0xCC, 0x93, -+ 0xCD, 0x84, 0xCE, 0x9F, 0xCC, 0x94, 0xCD, 0x84, -+ 0xCE, 0xA5, 0xCC, 0x94, 0xCD, 0x84, 0xCE, 0xA9, -+ 0xCC, 0x93, 0xCD, 0x84, 0xCE, 0xA9, 0xCC, 0x94, -+ 0xCD, 0x84, 0xCE, 0xB1, 0xCC, 0x80, 0xCD, 0x84, -+ // Bytes 4940 - 497f -+ 0xCE, 0xB1, 0xCC, 0x81, 0xCD, 0x84, 0xCE, 0xB1, -+ 0xCC, 0x93, 0xCD, 0x84, 0xCE, 0xB1, 0xCC, 0x94, -+ 0xCD, 0x84, 0xCE, 0xB1, 0xCD, 0x82, 0xCD, 0x84, -+ 0xCE, 0xB5, 0xCC, 0x93, 0xCD, 0x84, 0xCE, 0xB5, -+ 0xCC, 0x94, 0xCD, 0x84, 0xCE, 0xB7, 0xCC, 0x80, -+ 0xCD, 0x84, 0xCE, 0xB7, 0xCC, 0x81, 0xCD, 0x84, -+ 0xCE, 0xB7, 0xCC, 0x93, 0xCD, 0x84, 0xCE, 0xB7, -+ 0xCC, 0x94, 0xCD, 0x84, 0xCE, 0xB7, 0xCD, 0x82, -+ // Bytes 4980 - 49bf -+ 0xCD, 0x84, 0xCE, 0xB9, 0xCC, 0x88, 0xCD, 0x84, -+ 0xCE, 0xB9, 0xCC, 0x93, 0xCD, 0x84, 0xCE, 0xB9, -+ 0xCC, 0x94, 0xCD, 0x84, 0xCE, 0xBF, 0xCC, 0x93, -+ 0xCD, 0x84, 0xCE, 0xBF, 0xCC, 0x94, 0xCD, 0x84, -+ 0xCF, 0x85, 0xCC, 0x88, 0xCD, 0x84, 0xCF, 0x85, -+ 0xCC, 0x93, 0xCD, 0x84, 0xCF, 0x85, 0xCC, 0x94, -+ 0xCD, 0x84, 0xCF, 0x89, 0xCC, 0x80, 0xCD, 0x84, -+ 0xCF, 0x89, 0xCC, 0x81, 0xCD, 0x84, 0xCF, 0x89, -+ // Bytes 49c0 - 49ff -+ 0xCC, 0x93, 0xCD, 0x84, 0xCF, 0x89, 0xCC, 0x94, -+ 0xCD, 0x84, 0xCF, 0x89, 0xCD, 0x82, 0xCD, 0x86, -+ 0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86, -+ 0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86, -+ 0xCE, 0x91, 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86, -+ 0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86, -+ 0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86, -+ 0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86, -+ // Bytes 4a00 - 4a3f -+ 0xCE, 0x97, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86, -+ 0xCE, 0x97, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86, -+ 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86, -+ 0xCE, 0x97, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86, -+ 0xCE, 0x97, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86, -+ 0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86, -+ 0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86, -+ 0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86, -+ // Bytes 4a40 - 4a7f -+ 0xCE, 0xA9, 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86, -+ 0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86, -+ 0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86, -+ 0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86, -+ 0xCE, 0xB1, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86, -+ 0xCE, 0xB1, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86, -+ 0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86, -+ 0xCE, 0xB1, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86, -+ // Bytes 4a80 - 4abf -+ 0xCE, 0xB1, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86, -+ 0xCE, 0xB1, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86, -+ 0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86, -+ 0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86, -+ 0xCE, 0xB7, 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86, -+ 0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86, -+ 0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86, -+ 0xCE, 0xB7, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86, -+ // Bytes 4ac0 - 4aff -+ 0xCF, 0x89, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86, -+ 0xCF, 0x89, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86, -+ 0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86, -+ 0xCF, 0x89, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86, -+ 0xCF, 0x89, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86, -+ 0xCF, 0x89, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x42, -+ 0xCC, 0x80, 0xCD, 0x33, 0x42, 0xCC, 0x81, 0xCD, -+ 0x33, 0x42, 0xCC, 0x93, 0xCD, 0x33, 0x43, 0xE1, -+ // Bytes 4b00 - 4b3f -+ 0x85, 0xA1, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xA2, -+ 0x01, 0x00, 0x43, 0xE1, 0x85, 0xA3, 0x01, 0x00, -+ 0x43, 0xE1, 0x85, 0xA4, 0x01, 0x00, 0x43, 0xE1, -+ 0x85, 0xA5, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xA6, -+ 0x01, 0x00, 0x43, 0xE1, 0x85, 0xA7, 0x01, 0x00, -+ 0x43, 0xE1, 0x85, 0xA8, 0x01, 0x00, 0x43, 0xE1, -+ 0x85, 0xA9, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xAA, -+ 0x01, 0x00, 0x43, 0xE1, 0x85, 0xAB, 0x01, 0x00, -+ // Bytes 4b40 - 4b7f -+ 0x43, 0xE1, 0x85, 0xAC, 0x01, 0x00, 0x43, 0xE1, -+ 0x85, 0xAD, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xAE, -+ 0x01, 0x00, 0x43, 0xE1, 0x85, 0xAF, 0x01, 0x00, -+ 0x43, 0xE1, 0x85, 0xB0, 0x01, 0x00, 0x43, 0xE1, -+ 0x85, 0xB1, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xB2, -+ 0x01, 0x00, 0x43, 0xE1, 0x85, 0xB3, 0x01, 0x00, -+ 0x43, 0xE1, 0x85, 0xB4, 0x01, 0x00, 0x43, 0xE1, -+ 0x85, 0xB5, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xAA, -+ // Bytes 4b80 - 4bbf -+ 0x01, 0x00, 0x43, 0xE1, 0x86, 0xAC, 0x01, 0x00, -+ 0x43, 0xE1, 0x86, 0xAD, 0x01, 0x00, 0x43, 0xE1, -+ 0x86, 0xB0, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xB1, -+ 0x01, 0x00, 0x43, 0xE1, 0x86, 0xB2, 0x01, 0x00, -+ 0x43, 0xE1, 0x86, 0xB3, 0x01, 0x00, 0x43, 0xE1, -+ 0x86, 0xB4, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xB5, -+ 0x01, 0x00, 0x44, 0xCC, 0x88, 0xCC, 0x81, 0xCE, -+ 0x33, 0x43, 0xE3, 0x82, 0x99, 0x11, 0x04, 0x43, -+ // Bytes 4bc0 - 4bff -+ 0xE3, 0x82, 0x9A, 0x11, 0x04, 0x46, 0xE0, 0xBD, -+ 0xB1, 0xE0, 0xBD, 0xB2, 0xA2, 0x27, 0x46, 0xE0, -+ 0xBD, 0xB1, 0xE0, 0xBD, 0xB4, 0xA6, 0x27, 0x46, -+ 0xE0, 0xBD, 0xB1, 0xE0, 0xBE, 0x80, 0xA2, 0x27, -+ 0x00, 0x01, -+} -+ -+// 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 *nfcTrie) lookup(s []byte) (v uint16, sz int) { -+ c0 := s[0] -+ switch { -+ case c0 < 0x80: // is ASCII -+ return nfcValues[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 := nfcIndex[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 := nfcIndex[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 = nfcIndex[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 := nfcIndex[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 = nfcIndex[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 = nfcIndex[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 *nfcTrie) lookupUnsafe(s []byte) uint16 { -+ c0 := s[0] -+ if c0 < 0x80 { // is ASCII -+ return nfcValues[c0] -+ } -+ i := nfcIndex[c0] -+ if c0 < 0xE0 { // 2-byte UTF-8 -+ return t.lookupValue(uint32(i), s[1]) -+ } -+ i = nfcIndex[uint32(i)<<6+uint32(s[1])] -+ if c0 < 0xF0 { // 3-byte UTF-8 -+ return t.lookupValue(uint32(i), s[2]) -+ } -+ i = nfcIndex[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 *nfcTrie) lookupString(s string) (v uint16, sz int) { -+ c0 := s[0] -+ switch { -+ case c0 < 0x80: // is ASCII -+ return nfcValues[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 := nfcIndex[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 := nfcIndex[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 = nfcIndex[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 := nfcIndex[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 = nfcIndex[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 = nfcIndex[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 *nfcTrie) lookupStringUnsafe(s string) uint16 { -+ c0 := s[0] -+ if c0 < 0x80 { // is ASCII -+ return nfcValues[c0] -+ } -+ i := nfcIndex[c0] -+ if c0 < 0xE0 { // 2-byte UTF-8 -+ return t.lookupValue(uint32(i), s[1]) -+ } -+ i = nfcIndex[uint32(i)<<6+uint32(s[1])] -+ if c0 < 0xF0 { // 3-byte UTF-8 -+ return t.lookupValue(uint32(i), s[2]) -+ } -+ i = nfcIndex[uint32(i)<<6+uint32(s[2])] -+ if c0 < 0xF8 { // 4-byte UTF-8 -+ return t.lookupValue(uint32(i), s[3]) -+ } -+ return 0 -+} -+ -+// nfcTrie. Total size: 10798 bytes (10.54 KiB). Checksum: b5981cc85e3bd14. -+type nfcTrie struct{} -+ -+func newNfcTrie(i int) *nfcTrie { -+ return &nfcTrie{} -+} -+ -+// lookupValue determines the type of block n and looks up the value for b. -+func (t *nfcTrie) lookupValue(n uint32, b byte) uint16 { -+ switch { -+ case n < 46: -+ return uint16(nfcValues[n<<6+uint32(b)]) -+ default: -+ n -= 46 -+ return uint16(nfcSparse.lookup(n, b)) -+ } -+} -+ -+// nfcValues: 48 blocks, 3072 entries, 6144 bytes -+// The third block is the zero block. -+var nfcValues = [3072]uint16{ -+ // Block 0x0, offset 0x0 -+ 0x3c: 0xa000, 0x3d: 0xa000, 0x3e: 0xa000, -+ // Block 0x1, offset 0x40 -+ 0x41: 0xa000, 0x42: 0xa000, 0x43: 0xa000, 0x44: 0xa000, 0x45: 0xa000, -+ 0x46: 0xa000, 0x47: 0xa000, 0x48: 0xa000, 0x49: 0xa000, 0x4a: 0xa000, 0x4b: 0xa000, -+ 0x4c: 0xa000, 0x4d: 0xa000, 0x4e: 0xa000, 0x4f: 0xa000, 0x50: 0xa000, -+ 0x52: 0xa000, 0x53: 0xa000, 0x54: 0xa000, 0x55: 0xa000, 0x56: 0xa000, 0x57: 0xa000, -+ 0x58: 0xa000, 0x59: 0xa000, 0x5a: 0xa000, -+ 0x61: 0xa000, 0x62: 0xa000, 0x63: 0xa000, -+ 0x64: 0xa000, 0x65: 0xa000, 0x66: 0xa000, 0x67: 0xa000, 0x68: 0xa000, 0x69: 0xa000, -+ 0x6a: 0xa000, 0x6b: 0xa000, 0x6c: 0xa000, 0x6d: 0xa000, 0x6e: 0xa000, 0x6f: 0xa000, -+ 0x70: 0xa000, 0x72: 0xa000, 0x73: 0xa000, 0x74: 0xa000, 0x75: 0xa000, -+ 0x76: 0xa000, 0x77: 0xa000, 0x78: 0xa000, 0x79: 0xa000, 0x7a: 0xa000, -+ // Block 0x2, offset 0x80 -+ // Block 0x3, offset 0xc0 -+ 0xc0: 0x30b0, 0xc1: 0x30b5, 0xc2: 0x47c9, 0xc3: 0x30ba, 0xc4: 0x47d8, 0xc5: 0x47dd, -+ 0xc6: 0xa000, 0xc7: 0x47e7, 0xc8: 0x3123, 0xc9: 0x3128, 0xca: 0x47ec, 0xcb: 0x313c, -+ 0xcc: 0x31af, 0xcd: 0x31b4, 0xce: 0x31b9, 0xcf: 0x4800, 0xd1: 0x3245, -+ 0xd2: 0x3268, 0xd3: 0x326d, 0xd4: 0x480a, 0xd5: 0x480f, 0xd6: 0x481e, -+ 0xd8: 0xa000, 0xd9: 0x32f4, 0xda: 0x32f9, 0xdb: 0x32fe, 0xdc: 0x4850, 0xdd: 0x3376, -+ 0xe0: 0x33bc, 0xe1: 0x33c1, 0xe2: 0x485a, 0xe3: 0x33c6, -+ 0xe4: 0x4869, 0xe5: 0x486e, 0xe6: 0xa000, 0xe7: 0x4878, 0xe8: 0x342f, 0xe9: 0x3434, -+ 0xea: 0x487d, 0xeb: 0x3448, 0xec: 0x34c0, 0xed: 0x34c5, 0xee: 0x34ca, 0xef: 0x4891, -+ 0xf1: 0x3556, 0xf2: 0x3579, 0xf3: 0x357e, 0xf4: 0x489b, 0xf5: 0x48a0, -+ 0xf6: 0x48af, 0xf8: 0xa000, 0xf9: 0x360a, 0xfa: 0x360f, 0xfb: 0x3614, -+ 0xfc: 0x48e1, 0xfd: 0x3691, 0xff: 0x36aa, -+ // Block 0x4, offset 0x100 -+ 0x100: 0x30bf, 0x101: 0x33cb, 0x102: 0x47ce, 0x103: 0x485f, 0x104: 0x30dd, 0x105: 0x33e9, -+ 0x106: 0x30f1, 0x107: 0x33fd, 0x108: 0x30f6, 0x109: 0x3402, 0x10a: 0x30fb, 0x10b: 0x3407, -+ 0x10c: 0x3100, 0x10d: 0x340c, 0x10e: 0x310a, 0x10f: 0x3416, -+ 0x112: 0x47f1, 0x113: 0x4882, 0x114: 0x3132, 0x115: 0x343e, 0x116: 0x3137, 0x117: 0x3443, -+ 0x118: 0x3155, 0x119: 0x3461, 0x11a: 0x3146, 0x11b: 0x3452, 0x11c: 0x316e, 0x11d: 0x347a, -+ 0x11e: 0x3178, 0x11f: 0x3484, 0x120: 0x317d, 0x121: 0x3489, 0x122: 0x3187, 0x123: 0x3493, -+ 0x124: 0x318c, 0x125: 0x3498, 0x128: 0x31be, 0x129: 0x34cf, -+ 0x12a: 0x31c3, 0x12b: 0x34d4, 0x12c: 0x31c8, 0x12d: 0x34d9, 0x12e: 0x31eb, 0x12f: 0x34f7, -+ 0x130: 0x31cd, 0x134: 0x31f5, 0x135: 0x3501, -+ 0x136: 0x3209, 0x137: 0x351a, 0x139: 0x3213, 0x13a: 0x3524, 0x13b: 0x321d, -+ 0x13c: 0x352e, 0x13d: 0x3218, 0x13e: 0x3529, -+ // Block 0x5, offset 0x140 -+ 0x143: 0x3240, 0x144: 0x3551, 0x145: 0x3259, -+ 0x146: 0x356a, 0x147: 0x324f, 0x148: 0x3560, -+ 0x14c: 0x4814, 0x14d: 0x48a5, 0x14e: 0x3272, 0x14f: 0x3583, 0x150: 0x327c, 0x151: 0x358d, -+ 0x154: 0x329a, 0x155: 0x35ab, 0x156: 0x32b3, 0x157: 0x35c4, -+ 0x158: 0x32a4, 0x159: 0x35b5, 0x15a: 0x4837, 0x15b: 0x48c8, 0x15c: 0x32bd, 0x15d: 0x35ce, -+ 0x15e: 0x32cc, 0x15f: 0x35dd, 0x160: 0x483c, 0x161: 0x48cd, 0x162: 0x32e5, 0x163: 0x35fb, -+ 0x164: 0x32d6, 0x165: 0x35ec, 0x168: 0x4846, 0x169: 0x48d7, -+ 0x16a: 0x484b, 0x16b: 0x48dc, 0x16c: 0x3303, 0x16d: 0x3619, 0x16e: 0x330d, 0x16f: 0x3623, -+ 0x170: 0x3312, 0x171: 0x3628, 0x172: 0x3330, 0x173: 0x3646, 0x174: 0x3353, 0x175: 0x3669, -+ 0x176: 0x337b, 0x177: 0x3696, 0x178: 0x338f, 0x179: 0x339e, 0x17a: 0x36be, 0x17b: 0x33a8, -+ 0x17c: 0x36c8, 0x17d: 0x33ad, 0x17e: 0x36cd, 0x17f: 0xa000, -+ // Block 0x6, offset 0x180 -+ 0x184: 0x8100, 0x185: 0x8100, -+ 0x186: 0x8100, -+ 0x18d: 0x30c9, 0x18e: 0x33d5, 0x18f: 0x31d7, 0x190: 0x34e3, 0x191: 0x3281, -+ 0x192: 0x3592, 0x193: 0x3317, 0x194: 0x362d, 0x195: 0x3b10, 0x196: 0x3c9f, 0x197: 0x3b09, -+ 0x198: 0x3c98, 0x199: 0x3b17, 0x19a: 0x3ca6, 0x19b: 0x3b02, 0x19c: 0x3c91, -+ 0x19e: 0x39f1, 0x19f: 0x3b80, 0x1a0: 0x39ea, 0x1a1: 0x3b79, 0x1a2: 0x36f4, 0x1a3: 0x3706, -+ 0x1a6: 0x3182, 0x1a7: 0x348e, 0x1a8: 0x31ff, 0x1a9: 0x3510, -+ 0x1aa: 0x482d, 0x1ab: 0x48be, 0x1ac: 0x3ad1, 0x1ad: 0x3c60, 0x1ae: 0x3718, 0x1af: 0x371e, -+ 0x1b0: 0x3506, 0x1b4: 0x3169, 0x1b5: 0x3475, -+ 0x1b8: 0x323b, 0x1b9: 0x354c, 0x1ba: 0x39f8, 0x1bb: 0x3b87, -+ 0x1bc: 0x36ee, 0x1bd: 0x3700, 0x1be: 0x36fa, 0x1bf: 0x370c, -+ // Block 0x7, offset 0x1c0 -+ 0x1c0: 0x30ce, 0x1c1: 0x33da, 0x1c2: 0x30d3, 0x1c3: 0x33df, 0x1c4: 0x314b, 0x1c5: 0x3457, -+ 0x1c6: 0x3150, 0x1c7: 0x345c, 0x1c8: 0x31dc, 0x1c9: 0x34e8, 0x1ca: 0x31e1, 0x1cb: 0x34ed, -+ 0x1cc: 0x3286, 0x1cd: 0x3597, 0x1ce: 0x328b, 0x1cf: 0x359c, 0x1d0: 0x32a9, 0x1d1: 0x35ba, -+ 0x1d2: 0x32ae, 0x1d3: 0x35bf, 0x1d4: 0x331c, 0x1d5: 0x3632, 0x1d6: 0x3321, 0x1d7: 0x3637, -+ 0x1d8: 0x32c7, 0x1d9: 0x35d8, 0x1da: 0x32e0, 0x1db: 0x35f6, -+ 0x1de: 0x319b, 0x1df: 0x34a7, -+ 0x1e6: 0x47d3, 0x1e7: 0x4864, 0x1e8: 0x47fb, 0x1e9: 0x488c, -+ 0x1ea: 0x3aa0, 0x1eb: 0x3c2f, 0x1ec: 0x3a7d, 0x1ed: 0x3c0c, 0x1ee: 0x4819, 0x1ef: 0x48aa, -+ 0x1f0: 0x3a99, 0x1f1: 0x3c28, 0x1f2: 0x3385, 0x1f3: 0x36a0, -+ // Block 0x8, offset 0x200 -+ 0x200: 0x9933, 0x201: 0x9933, 0x202: 0x9933, 0x203: 0x9933, 0x204: 0x9933, 0x205: 0x8133, -+ 0x206: 0x9933, 0x207: 0x9933, 0x208: 0x9933, 0x209: 0x9933, 0x20a: 0x9933, 0x20b: 0x9933, -+ 0x20c: 0x9933, 0x20d: 0x8133, 0x20e: 0x8133, 0x20f: 0x9933, 0x210: 0x8133, 0x211: 0x9933, -+ 0x212: 0x8133, 0x213: 0x9933, 0x214: 0x9933, 0x215: 0x8134, 0x216: 0x812e, 0x217: 0x812e, -+ 0x218: 0x812e, 0x219: 0x812e, 0x21a: 0x8134, 0x21b: 0x992c, 0x21c: 0x812e, 0x21d: 0x812e, -+ 0x21e: 0x812e, 0x21f: 0x812e, 0x220: 0x812e, 0x221: 0x812a, 0x222: 0x812a, 0x223: 0x992e, -+ 0x224: 0x992e, 0x225: 0x992e, 0x226: 0x992e, 0x227: 0x992a, 0x228: 0x992a, 0x229: 0x812e, -+ 0x22a: 0x812e, 0x22b: 0x812e, 0x22c: 0x812e, 0x22d: 0x992e, 0x22e: 0x992e, 0x22f: 0x812e, -+ 0x230: 0x992e, 0x231: 0x992e, 0x232: 0x812e, 0x233: 0x812e, 0x234: 0x8101, 0x235: 0x8101, -+ 0x236: 0x8101, 0x237: 0x8101, 0x238: 0x9901, 0x239: 0x812e, 0x23a: 0x812e, 0x23b: 0x812e, -+ 0x23c: 0x812e, 0x23d: 0x8133, 0x23e: 0x8133, 0x23f: 0x8133, -+ // Block 0x9, offset 0x240 -+ 0x240: 0x4aef, 0x241: 0x4af4, 0x242: 0x9933, 0x243: 0x4af9, 0x244: 0x4bb2, 0x245: 0x9937, -+ 0x246: 0x8133, 0x247: 0x812e, 0x248: 0x812e, 0x249: 0x812e, 0x24a: 0x8133, 0x24b: 0x8133, -+ 0x24c: 0x8133, 0x24d: 0x812e, 0x24e: 0x812e, 0x250: 0x8133, 0x251: 0x8133, -+ 0x252: 0x8133, 0x253: 0x812e, 0x254: 0x812e, 0x255: 0x812e, 0x256: 0x812e, 0x257: 0x8133, -+ 0x258: 0x8134, 0x259: 0x812e, 0x25a: 0x812e, 0x25b: 0x8133, 0x25c: 0x8135, 0x25d: 0x8136, -+ 0x25e: 0x8136, 0x25f: 0x8135, 0x260: 0x8136, 0x261: 0x8136, 0x262: 0x8135, 0x263: 0x8133, -+ 0x264: 0x8133, 0x265: 0x8133, 0x266: 0x8133, 0x267: 0x8133, 0x268: 0x8133, 0x269: 0x8133, -+ 0x26a: 0x8133, 0x26b: 0x8133, 0x26c: 0x8133, 0x26d: 0x8133, 0x26e: 0x8133, 0x26f: 0x8133, -+ 0x274: 0x01ee, -+ 0x27a: 0x8100, -+ 0x27e: 0x0037, -+ // Block 0xa, offset 0x280 -+ 0x284: 0x8100, 0x285: 0x36e2, -+ 0x286: 0x372a, 0x287: 0x00ce, 0x288: 0x3748, 0x289: 0x3754, 0x28a: 0x3766, -+ 0x28c: 0x3784, 0x28e: 0x3796, 0x28f: 0x37b4, 0x290: 0x3f49, 0x291: 0xa000, -+ 0x295: 0xa000, 0x297: 0xa000, -+ 0x299: 0xa000, -+ 0x29f: 0xa000, 0x2a1: 0xa000, -+ 0x2a5: 0xa000, 0x2a9: 0xa000, -+ 0x2aa: 0x3778, 0x2ab: 0x37a8, 0x2ac: 0x493f, 0x2ad: 0x37d8, 0x2ae: 0x4969, 0x2af: 0x37ea, -+ 0x2b0: 0x3fb1, 0x2b1: 0xa000, 0x2b5: 0xa000, -+ 0x2b7: 0xa000, 0x2b9: 0xa000, -+ 0x2bf: 0xa000, -+ // Block 0xb, offset 0x2c0 -+ 0x2c0: 0x3862, 0x2c1: 0x386e, 0x2c3: 0x385c, -+ 0x2c6: 0xa000, 0x2c7: 0x384a, -+ 0x2cc: 0x389e, 0x2cd: 0x3886, 0x2ce: 0x38b0, 0x2d0: 0xa000, -+ 0x2d3: 0xa000, 0x2d5: 0xa000, 0x2d6: 0xa000, 0x2d7: 0xa000, -+ 0x2d8: 0xa000, 0x2d9: 0x3892, 0x2da: 0xa000, -+ 0x2de: 0xa000, 0x2e3: 0xa000, -+ 0x2e7: 0xa000, -+ 0x2eb: 0xa000, 0x2ed: 0xa000, -+ 0x2f0: 0xa000, 0x2f3: 0xa000, 0x2f5: 0xa000, -+ 0x2f6: 0xa000, 0x2f7: 0xa000, 0x2f8: 0xa000, 0x2f9: 0x3916, 0x2fa: 0xa000, -+ 0x2fe: 0xa000, -+ // Block 0xc, offset 0x300 -+ 0x301: 0x3874, 0x302: 0x38f8, -+ 0x310: 0x3850, 0x311: 0x38d4, -+ 0x312: 0x3856, 0x313: 0x38da, 0x316: 0x3868, 0x317: 0x38ec, -+ 0x318: 0xa000, 0x319: 0xa000, 0x31a: 0x396a, 0x31b: 0x3970, 0x31c: 0x387a, 0x31d: 0x38fe, -+ 0x31e: 0x3880, 0x31f: 0x3904, 0x322: 0x388c, 0x323: 0x3910, -+ 0x324: 0x3898, 0x325: 0x391c, 0x326: 0x38a4, 0x327: 0x3928, 0x328: 0xa000, 0x329: 0xa000, -+ 0x32a: 0x3976, 0x32b: 0x397c, 0x32c: 0x38ce, 0x32d: 0x3952, 0x32e: 0x38aa, 0x32f: 0x392e, -+ 0x330: 0x38b6, 0x331: 0x393a, 0x332: 0x38bc, 0x333: 0x3940, 0x334: 0x38c2, 0x335: 0x3946, -+ 0x338: 0x38c8, 0x339: 0x394c, -+ // Block 0xd, offset 0x340 -+ 0x351: 0x812e, -+ 0x352: 0x8133, 0x353: 0x8133, 0x354: 0x8133, 0x355: 0x8133, 0x356: 0x812e, 0x357: 0x8133, -+ 0x358: 0x8133, 0x359: 0x8133, 0x35a: 0x812f, 0x35b: 0x812e, 0x35c: 0x8133, 0x35d: 0x8133, -+ 0x35e: 0x8133, 0x35f: 0x8133, 0x360: 0x8133, 0x361: 0x8133, 0x362: 0x812e, 0x363: 0x812e, -+ 0x364: 0x812e, 0x365: 0x812e, 0x366: 0x812e, 0x367: 0x812e, 0x368: 0x8133, 0x369: 0x8133, -+ 0x36a: 0x812e, 0x36b: 0x8133, 0x36c: 0x8133, 0x36d: 0x812f, 0x36e: 0x8132, 0x36f: 0x8133, -+ 0x370: 0x8106, 0x371: 0x8107, 0x372: 0x8108, 0x373: 0x8109, 0x374: 0x810a, 0x375: 0x810b, -+ 0x376: 0x810c, 0x377: 0x810d, 0x378: 0x810e, 0x379: 0x810f, 0x37a: 0x810f, 0x37b: 0x8110, -+ 0x37c: 0x8111, 0x37d: 0x8112, 0x37f: 0x8113, -+ // Block 0xe, offset 0x380 -+ 0x388: 0xa000, 0x38a: 0xa000, 0x38b: 0x8117, -+ 0x38c: 0x8118, 0x38d: 0x8119, 0x38e: 0x811a, 0x38f: 0x811b, 0x390: 0x811c, 0x391: 0x811d, -+ 0x392: 0x811e, 0x393: 0x9933, 0x394: 0x9933, 0x395: 0x992e, 0x396: 0x812e, 0x397: 0x8133, -+ 0x398: 0x8133, 0x399: 0x8133, 0x39a: 0x8133, 0x39b: 0x8133, 0x39c: 0x812e, 0x39d: 0x8133, -+ 0x39e: 0x8133, 0x39f: 0x812e, -+ 0x3b0: 0x811f, -+ // Block 0xf, offset 0x3c0 -+ 0x3ca: 0x8133, 0x3cb: 0x8133, -+ 0x3cc: 0x8133, 0x3cd: 0x8133, 0x3ce: 0x8133, 0x3cf: 0x812e, 0x3d0: 0x812e, 0x3d1: 0x812e, -+ 0x3d2: 0x812e, 0x3d3: 0x812e, 0x3d4: 0x8133, 0x3d5: 0x8133, 0x3d6: 0x8133, 0x3d7: 0x8133, -+ 0x3d8: 0x8133, 0x3d9: 0x8133, 0x3da: 0x8133, 0x3db: 0x8133, 0x3dc: 0x8133, 0x3dd: 0x8133, -+ 0x3de: 0x8133, 0x3df: 0x8133, 0x3e0: 0x8133, 0x3e1: 0x8133, 0x3e3: 0x812e, -+ 0x3e4: 0x8133, 0x3e5: 0x8133, 0x3e6: 0x812e, 0x3e7: 0x8133, 0x3e8: 0x8133, 0x3e9: 0x812e, -+ 0x3ea: 0x8133, 0x3eb: 0x8133, 0x3ec: 0x8133, 0x3ed: 0x812e, 0x3ee: 0x812e, 0x3ef: 0x812e, -+ 0x3f0: 0x8117, 0x3f1: 0x8118, 0x3f2: 0x8119, 0x3f3: 0x8133, 0x3f4: 0x8133, 0x3f5: 0x8133, -+ 0x3f6: 0x812e, 0x3f7: 0x8133, 0x3f8: 0x8133, 0x3f9: 0x812e, 0x3fa: 0x812e, 0x3fb: 0x8133, -+ 0x3fc: 0x8133, 0x3fd: 0x8133, 0x3fe: 0x8133, 0x3ff: 0x8133, -+ // Block 0x10, offset 0x400 -+ 0x405: 0xa000, -+ 0x406: 0x2e5d, 0x407: 0xa000, 0x408: 0x2e65, 0x409: 0xa000, 0x40a: 0x2e6d, 0x40b: 0xa000, -+ 0x40c: 0x2e75, 0x40d: 0xa000, 0x40e: 0x2e7d, 0x411: 0xa000, -+ 0x412: 0x2e85, -+ 0x434: 0x8103, 0x435: 0x9900, -+ 0x43a: 0xa000, 0x43b: 0x2e8d, -+ 0x43c: 0xa000, 0x43d: 0x2e95, 0x43e: 0xa000, 0x43f: 0xa000, -+ // Block 0x11, offset 0x440 -+ 0x440: 0x8133, 0x441: 0x8133, 0x442: 0x812e, 0x443: 0x8133, 0x444: 0x8133, 0x445: 0x8133, -+ 0x446: 0x8133, 0x447: 0x8133, 0x448: 0x8133, 0x449: 0x8133, 0x44a: 0x812e, 0x44b: 0x8133, -+ 0x44c: 0x8133, 0x44d: 0x8136, 0x44e: 0x812b, 0x44f: 0x812e, 0x450: 0x812a, 0x451: 0x8133, -+ 0x452: 0x8133, 0x453: 0x8133, 0x454: 0x8133, 0x455: 0x8133, 0x456: 0x8133, 0x457: 0x8133, -+ 0x458: 0x8133, 0x459: 0x8133, 0x45a: 0x8133, 0x45b: 0x8133, 0x45c: 0x8133, 0x45d: 0x8133, -+ 0x45e: 0x8133, 0x45f: 0x8133, 0x460: 0x8133, 0x461: 0x8133, 0x462: 0x8133, 0x463: 0x8133, -+ 0x464: 0x8133, 0x465: 0x8133, 0x466: 0x8133, 0x467: 0x8133, 0x468: 0x8133, 0x469: 0x8133, -+ 0x46a: 0x8133, 0x46b: 0x8133, 0x46c: 0x8133, 0x46d: 0x8133, 0x46e: 0x8133, 0x46f: 0x8133, -+ 0x470: 0x8133, 0x471: 0x8133, 0x472: 0x8133, 0x473: 0x8133, 0x474: 0x8133, 0x475: 0x8133, -+ 0x476: 0x8134, 0x477: 0x8132, 0x478: 0x8132, 0x479: 0x812e, 0x47a: 0x812d, 0x47b: 0x8133, -+ 0x47c: 0x8135, 0x47d: 0x812e, 0x47e: 0x8133, 0x47f: 0x812e, -+ // Block 0x12, offset 0x480 -+ 0x480: 0x30d8, 0x481: 0x33e4, 0x482: 0x30e2, 0x483: 0x33ee, 0x484: 0x30e7, 0x485: 0x33f3, -+ 0x486: 0x30ec, 0x487: 0x33f8, 0x488: 0x3a0d, 0x489: 0x3b9c, 0x48a: 0x3105, 0x48b: 0x3411, -+ 0x48c: 0x310f, 0x48d: 0x341b, 0x48e: 0x311e, 0x48f: 0x342a, 0x490: 0x3114, 0x491: 0x3420, -+ 0x492: 0x3119, 0x493: 0x3425, 0x494: 0x3a30, 0x495: 0x3bbf, 0x496: 0x3a37, 0x497: 0x3bc6, -+ 0x498: 0x315a, 0x499: 0x3466, 0x49a: 0x315f, 0x49b: 0x346b, 0x49c: 0x3a45, 0x49d: 0x3bd4, -+ 0x49e: 0x3164, 0x49f: 0x3470, 0x4a0: 0x3173, 0x4a1: 0x347f, 0x4a2: 0x3191, 0x4a3: 0x349d, -+ 0x4a4: 0x31a0, 0x4a5: 0x34ac, 0x4a6: 0x3196, 0x4a7: 0x34a2, 0x4a8: 0x31a5, 0x4a9: 0x34b1, -+ 0x4aa: 0x31aa, 0x4ab: 0x34b6, 0x4ac: 0x31f0, 0x4ad: 0x34fc, 0x4ae: 0x3a4c, 0x4af: 0x3bdb, -+ 0x4b0: 0x31fa, 0x4b1: 0x350b, 0x4b2: 0x3204, 0x4b3: 0x3515, 0x4b4: 0x320e, 0x4b5: 0x351f, -+ 0x4b6: 0x4805, 0x4b7: 0x4896, 0x4b8: 0x3a53, 0x4b9: 0x3be2, 0x4ba: 0x3227, 0x4bb: 0x3538, -+ 0x4bc: 0x3222, 0x4bd: 0x3533, 0x4be: 0x322c, 0x4bf: 0x353d, -+ // Block 0x13, offset 0x4c0 -+ 0x4c0: 0x3231, 0x4c1: 0x3542, 0x4c2: 0x3236, 0x4c3: 0x3547, 0x4c4: 0x324a, 0x4c5: 0x355b, -+ 0x4c6: 0x3254, 0x4c7: 0x3565, 0x4c8: 0x3263, 0x4c9: 0x3574, 0x4ca: 0x325e, 0x4cb: 0x356f, -+ 0x4cc: 0x3a76, 0x4cd: 0x3c05, 0x4ce: 0x3a84, 0x4cf: 0x3c13, 0x4d0: 0x3a8b, 0x4d1: 0x3c1a, -+ 0x4d2: 0x3a92, 0x4d3: 0x3c21, 0x4d4: 0x3290, 0x4d5: 0x35a1, 0x4d6: 0x3295, 0x4d7: 0x35a6, -+ 0x4d8: 0x329f, 0x4d9: 0x35b0, 0x4da: 0x4832, 0x4db: 0x48c3, 0x4dc: 0x3ad8, 0x4dd: 0x3c67, -+ 0x4de: 0x32b8, 0x4df: 0x35c9, 0x4e0: 0x32c2, 0x4e1: 0x35d3, 0x4e2: 0x4841, 0x4e3: 0x48d2, -+ 0x4e4: 0x3adf, 0x4e5: 0x3c6e, 0x4e6: 0x3ae6, 0x4e7: 0x3c75, 0x4e8: 0x3aed, 0x4e9: 0x3c7c, -+ 0x4ea: 0x32d1, 0x4eb: 0x35e2, 0x4ec: 0x32db, 0x4ed: 0x35f1, 0x4ee: 0x32ef, 0x4ef: 0x3605, -+ 0x4f0: 0x32ea, 0x4f1: 0x3600, 0x4f2: 0x332b, 0x4f3: 0x3641, 0x4f4: 0x333a, 0x4f5: 0x3650, -+ 0x4f6: 0x3335, 0x4f7: 0x364b, 0x4f8: 0x3af4, 0x4f9: 0x3c83, 0x4fa: 0x3afb, 0x4fb: 0x3c8a, -+ 0x4fc: 0x333f, 0x4fd: 0x3655, 0x4fe: 0x3344, 0x4ff: 0x365a, -+ // Block 0x14, offset 0x500 -+ 0x500: 0x3349, 0x501: 0x365f, 0x502: 0x334e, 0x503: 0x3664, 0x504: 0x335d, 0x505: 0x3673, -+ 0x506: 0x3358, 0x507: 0x366e, 0x508: 0x3362, 0x509: 0x367d, 0x50a: 0x3367, 0x50b: 0x3682, -+ 0x50c: 0x336c, 0x50d: 0x3687, 0x50e: 0x338a, 0x50f: 0x36a5, 0x510: 0x33a3, 0x511: 0x36c3, -+ 0x512: 0x33b2, 0x513: 0x36d2, 0x514: 0x33b7, 0x515: 0x36d7, 0x516: 0x34bb, 0x517: 0x35e7, -+ 0x518: 0x3678, 0x519: 0x36b4, 0x51b: 0x3712, -+ 0x520: 0x47e2, 0x521: 0x4873, 0x522: 0x30c4, 0x523: 0x33d0, -+ 0x524: 0x39b9, 0x525: 0x3b48, 0x526: 0x39b2, 0x527: 0x3b41, 0x528: 0x39c7, 0x529: 0x3b56, -+ 0x52a: 0x39c0, 0x52b: 0x3b4f, 0x52c: 0x39ff, 0x52d: 0x3b8e, 0x52e: 0x39d5, 0x52f: 0x3b64, -+ 0x530: 0x39ce, 0x531: 0x3b5d, 0x532: 0x39e3, 0x533: 0x3b72, 0x534: 0x39dc, 0x535: 0x3b6b, -+ 0x536: 0x3a06, 0x537: 0x3b95, 0x538: 0x47f6, 0x539: 0x4887, 0x53a: 0x3141, 0x53b: 0x344d, -+ 0x53c: 0x312d, 0x53d: 0x3439, 0x53e: 0x3a1b, 0x53f: 0x3baa, -+ // Block 0x15, offset 0x540 -+ 0x540: 0x3a14, 0x541: 0x3ba3, 0x542: 0x3a29, 0x543: 0x3bb8, 0x544: 0x3a22, 0x545: 0x3bb1, -+ 0x546: 0x3a3e, 0x547: 0x3bcd, 0x548: 0x31d2, 0x549: 0x34de, 0x54a: 0x31e6, 0x54b: 0x34f2, -+ 0x54c: 0x4828, 0x54d: 0x48b9, 0x54e: 0x3277, 0x54f: 0x3588, 0x550: 0x3a61, 0x551: 0x3bf0, -+ 0x552: 0x3a5a, 0x553: 0x3be9, 0x554: 0x3a6f, 0x555: 0x3bfe, 0x556: 0x3a68, 0x557: 0x3bf7, -+ 0x558: 0x3aca, 0x559: 0x3c59, 0x55a: 0x3aae, 0x55b: 0x3c3d, 0x55c: 0x3aa7, 0x55d: 0x3c36, -+ 0x55e: 0x3abc, 0x55f: 0x3c4b, 0x560: 0x3ab5, 0x561: 0x3c44, 0x562: 0x3ac3, 0x563: 0x3c52, -+ 0x564: 0x3326, 0x565: 0x363c, 0x566: 0x3308, 0x567: 0x361e, 0x568: 0x3b25, 0x569: 0x3cb4, -+ 0x56a: 0x3b1e, 0x56b: 0x3cad, 0x56c: 0x3b33, 0x56d: 0x3cc2, 0x56e: 0x3b2c, 0x56f: 0x3cbb, -+ 0x570: 0x3b3a, 0x571: 0x3cc9, 0x572: 0x3371, 0x573: 0x368c, 0x574: 0x3399, 0x575: 0x36b9, -+ 0x576: 0x3394, 0x577: 0x36af, 0x578: 0x3380, 0x579: 0x369b, -+ // Block 0x16, offset 0x580 -+ 0x580: 0x4945, 0x581: 0x494b, 0x582: 0x4a5f, 0x583: 0x4a77, 0x584: 0x4a67, 0x585: 0x4a7f, -+ 0x586: 0x4a6f, 0x587: 0x4a87, 0x588: 0x48eb, 0x589: 0x48f1, 0x58a: 0x49cf, 0x58b: 0x49e7, -+ 0x58c: 0x49d7, 0x58d: 0x49ef, 0x58e: 0x49df, 0x58f: 0x49f7, 0x590: 0x4957, 0x591: 0x495d, -+ 0x592: 0x3ef9, 0x593: 0x3f09, 0x594: 0x3f01, 0x595: 0x3f11, -+ 0x598: 0x48f7, 0x599: 0x48fd, 0x59a: 0x3e29, 0x59b: 0x3e39, 0x59c: 0x3e31, 0x59d: 0x3e41, -+ 0x5a0: 0x496f, 0x5a1: 0x4975, 0x5a2: 0x4a8f, 0x5a3: 0x4aa7, -+ 0x5a4: 0x4a97, 0x5a5: 0x4aaf, 0x5a6: 0x4a9f, 0x5a7: 0x4ab7, 0x5a8: 0x4903, 0x5a9: 0x4909, -+ 0x5aa: 0x49ff, 0x5ab: 0x4a17, 0x5ac: 0x4a07, 0x5ad: 0x4a1f, 0x5ae: 0x4a0f, 0x5af: 0x4a27, -+ 0x5b0: 0x4987, 0x5b1: 0x498d, 0x5b2: 0x3f59, 0x5b3: 0x3f71, 0x5b4: 0x3f61, 0x5b5: 0x3f79, -+ 0x5b6: 0x3f69, 0x5b7: 0x3f81, 0x5b8: 0x490f, 0x5b9: 0x4915, 0x5ba: 0x3e59, 0x5bb: 0x3e71, -+ 0x5bc: 0x3e61, 0x5bd: 0x3e79, 0x5be: 0x3e69, 0x5bf: 0x3e81, -+ // Block 0x17, offset 0x5c0 -+ 0x5c0: 0x4993, 0x5c1: 0x4999, 0x5c2: 0x3f89, 0x5c3: 0x3f99, 0x5c4: 0x3f91, 0x5c5: 0x3fa1, -+ 0x5c8: 0x491b, 0x5c9: 0x4921, 0x5ca: 0x3e89, 0x5cb: 0x3e99, -+ 0x5cc: 0x3e91, 0x5cd: 0x3ea1, 0x5d0: 0x49a5, 0x5d1: 0x49ab, -+ 0x5d2: 0x3fc1, 0x5d3: 0x3fd9, 0x5d4: 0x3fc9, 0x5d5: 0x3fe1, 0x5d6: 0x3fd1, 0x5d7: 0x3fe9, -+ 0x5d9: 0x4927, 0x5db: 0x3ea9, 0x5dd: 0x3eb1, -+ 0x5df: 0x3eb9, 0x5e0: 0x49bd, 0x5e1: 0x49c3, 0x5e2: 0x4abf, 0x5e3: 0x4ad7, -+ 0x5e4: 0x4ac7, 0x5e5: 0x4adf, 0x5e6: 0x4acf, 0x5e7: 0x4ae7, 0x5e8: 0x492d, 0x5e9: 0x4933, -+ 0x5ea: 0x4a2f, 0x5eb: 0x4a47, 0x5ec: 0x4a37, 0x5ed: 0x4a4f, 0x5ee: 0x4a3f, 0x5ef: 0x4a57, -+ 0x5f0: 0x4939, 0x5f1: 0x445f, 0x5f2: 0x37d2, 0x5f3: 0x4465, 0x5f4: 0x4963, 0x5f5: 0x446b, -+ 0x5f6: 0x37e4, 0x5f7: 0x4471, 0x5f8: 0x3802, 0x5f9: 0x4477, 0x5fa: 0x381a, 0x5fb: 0x447d, -+ 0x5fc: 0x49b1, 0x5fd: 0x4483, -+ // Block 0x18, offset 0x600 -+ 0x600: 0x3ee1, 0x601: 0x3ee9, 0x602: 0x42c5, 0x603: 0x42e3, 0x604: 0x42cf, 0x605: 0x42ed, -+ 0x606: 0x42d9, 0x607: 0x42f7, 0x608: 0x3e19, 0x609: 0x3e21, 0x60a: 0x4211, 0x60b: 0x422f, -+ 0x60c: 0x421b, 0x60d: 0x4239, 0x60e: 0x4225, 0x60f: 0x4243, 0x610: 0x3f29, 0x611: 0x3f31, -+ 0x612: 0x4301, 0x613: 0x431f, 0x614: 0x430b, 0x615: 0x4329, 0x616: 0x4315, 0x617: 0x4333, -+ 0x618: 0x3e49, 0x619: 0x3e51, 0x61a: 0x424d, 0x61b: 0x426b, 0x61c: 0x4257, 0x61d: 0x4275, -+ 0x61e: 0x4261, 0x61f: 0x427f, 0x620: 0x4001, 0x621: 0x4009, 0x622: 0x433d, 0x623: 0x435b, -+ 0x624: 0x4347, 0x625: 0x4365, 0x626: 0x4351, 0x627: 0x436f, 0x628: 0x3ec1, 0x629: 0x3ec9, -+ 0x62a: 0x4289, 0x62b: 0x42a7, 0x62c: 0x4293, 0x62d: 0x42b1, 0x62e: 0x429d, 0x62f: 0x42bb, -+ 0x630: 0x37c6, 0x631: 0x37c0, 0x632: 0x3ed1, 0x633: 0x37cc, 0x634: 0x3ed9, -+ 0x636: 0x4951, 0x637: 0x3ef1, 0x638: 0x3736, 0x639: 0x3730, 0x63a: 0x3724, 0x63b: 0x442f, -+ 0x63c: 0x373c, 0x63d: 0x8100, 0x63e: 0x0257, 0x63f: 0xa100, -+ // Block 0x19, offset 0x640 -+ 0x640: 0x8100, 0x641: 0x36e8, 0x642: 0x3f19, 0x643: 0x37de, 0x644: 0x3f21, -+ 0x646: 0x497b, 0x647: 0x3f39, 0x648: 0x3742, 0x649: 0x4435, 0x64a: 0x374e, 0x64b: 0x443b, -+ 0x64c: 0x375a, 0x64d: 0x3cd0, 0x64e: 0x3cd7, 0x64f: 0x3cde, 0x650: 0x37f6, 0x651: 0x37f0, -+ 0x652: 0x3f41, 0x653: 0x4625, 0x656: 0x37fc, 0x657: 0x3f51, -+ 0x658: 0x3772, 0x659: 0x376c, 0x65a: 0x3760, 0x65b: 0x4441, 0x65d: 0x3ce5, -+ 0x65e: 0x3cec, 0x65f: 0x3cf3, 0x660: 0x382c, 0x661: 0x3826, 0x662: 0x3fa9, 0x663: 0x462d, -+ 0x664: 0x380e, 0x665: 0x3814, 0x666: 0x3832, 0x667: 0x3fb9, 0x668: 0x37a2, 0x669: 0x379c, -+ 0x66a: 0x3790, 0x66b: 0x444d, 0x66c: 0x378a, 0x66d: 0x36dc, 0x66e: 0x4429, 0x66f: 0x0081, -+ 0x672: 0x3ff1, 0x673: 0x3838, 0x674: 0x3ff9, -+ 0x676: 0x49c9, 0x677: 0x4011, 0x678: 0x377e, 0x679: 0x4447, 0x67a: 0x37ae, 0x67b: 0x4459, -+ 0x67c: 0x37ba, 0x67d: 0x4397, 0x67e: 0xa100, -+ // Block 0x1a, offset 0x680 -+ 0x681: 0x3d47, 0x683: 0xa000, 0x684: 0x3d4e, 0x685: 0xa000, -+ 0x687: 0x3d55, 0x688: 0xa000, 0x689: 0x3d5c, -+ 0x68d: 0xa000, -+ 0x6a0: 0x30a6, 0x6a1: 0xa000, 0x6a2: 0x3d6a, -+ 0x6a4: 0xa000, 0x6a5: 0xa000, -+ 0x6ad: 0x3d63, 0x6ae: 0x30a1, 0x6af: 0x30ab, -+ 0x6b0: 0x3d71, 0x6b1: 0x3d78, 0x6b2: 0xa000, 0x6b3: 0xa000, 0x6b4: 0x3d7f, 0x6b5: 0x3d86, -+ 0x6b6: 0xa000, 0x6b7: 0xa000, 0x6b8: 0x3d8d, 0x6b9: 0x3d94, 0x6ba: 0xa000, 0x6bb: 0xa000, -+ 0x6bc: 0xa000, 0x6bd: 0xa000, -+ // Block 0x1b, offset 0x6c0 -+ 0x6c0: 0x3d9b, 0x6c1: 0x3da2, 0x6c2: 0xa000, 0x6c3: 0xa000, 0x6c4: 0x3db7, 0x6c5: 0x3dbe, -+ 0x6c6: 0xa000, 0x6c7: 0xa000, 0x6c8: 0x3dc5, 0x6c9: 0x3dcc, -+ 0x6d1: 0xa000, -+ 0x6d2: 0xa000, -+ 0x6e2: 0xa000, -+ 0x6e8: 0xa000, 0x6e9: 0xa000, -+ 0x6eb: 0xa000, 0x6ec: 0x3de1, 0x6ed: 0x3de8, 0x6ee: 0x3def, 0x6ef: 0x3df6, -+ 0x6f2: 0xa000, 0x6f3: 0xa000, 0x6f4: 0xa000, 0x6f5: 0xa000, -+ // Block 0x1c, offset 0x700 -+ 0x706: 0xa000, 0x70b: 0xa000, -+ 0x70c: 0x4049, 0x70d: 0xa000, 0x70e: 0x4051, 0x70f: 0xa000, 0x710: 0x4059, 0x711: 0xa000, -+ 0x712: 0x4061, 0x713: 0xa000, 0x714: 0x4069, 0x715: 0xa000, 0x716: 0x4071, 0x717: 0xa000, -+ 0x718: 0x4079, 0x719: 0xa000, 0x71a: 0x4081, 0x71b: 0xa000, 0x71c: 0x4089, 0x71d: 0xa000, -+ 0x71e: 0x4091, 0x71f: 0xa000, 0x720: 0x4099, 0x721: 0xa000, 0x722: 0x40a1, -+ 0x724: 0xa000, 0x725: 0x40a9, 0x726: 0xa000, 0x727: 0x40b1, 0x728: 0xa000, 0x729: 0x40b9, -+ 0x72f: 0xa000, -+ 0x730: 0x40c1, 0x731: 0x40c9, 0x732: 0xa000, 0x733: 0x40d1, 0x734: 0x40d9, 0x735: 0xa000, -+ 0x736: 0x40e1, 0x737: 0x40e9, 0x738: 0xa000, 0x739: 0x40f1, 0x73a: 0x40f9, 0x73b: 0xa000, -+ 0x73c: 0x4101, 0x73d: 0x4109, -+ // Block 0x1d, offset 0x740 -+ 0x754: 0x4041, -+ 0x759: 0x9904, 0x75a: 0x9904, 0x75b: 0x8100, 0x75c: 0x8100, 0x75d: 0xa000, -+ 0x75e: 0x4111, -+ 0x766: 0xa000, -+ 0x76b: 0xa000, 0x76c: 0x4121, 0x76d: 0xa000, 0x76e: 0x4129, 0x76f: 0xa000, -+ 0x770: 0x4131, 0x771: 0xa000, 0x772: 0x4139, 0x773: 0xa000, 0x774: 0x4141, 0x775: 0xa000, -+ 0x776: 0x4149, 0x777: 0xa000, 0x778: 0x4151, 0x779: 0xa000, 0x77a: 0x4159, 0x77b: 0xa000, -+ 0x77c: 0x4161, 0x77d: 0xa000, 0x77e: 0x4169, 0x77f: 0xa000, -+ // Block 0x1e, offset 0x780 -+ 0x780: 0x4171, 0x781: 0xa000, 0x782: 0x4179, 0x784: 0xa000, 0x785: 0x4181, -+ 0x786: 0xa000, 0x787: 0x4189, 0x788: 0xa000, 0x789: 0x4191, -+ 0x78f: 0xa000, 0x790: 0x4199, 0x791: 0x41a1, -+ 0x792: 0xa000, 0x793: 0x41a9, 0x794: 0x41b1, 0x795: 0xa000, 0x796: 0x41b9, 0x797: 0x41c1, -+ 0x798: 0xa000, 0x799: 0x41c9, 0x79a: 0x41d1, 0x79b: 0xa000, 0x79c: 0x41d9, 0x79d: 0x41e1, -+ 0x7af: 0xa000, -+ 0x7b0: 0xa000, 0x7b1: 0xa000, 0x7b2: 0xa000, 0x7b4: 0x4119, -+ 0x7b7: 0x41e9, 0x7b8: 0x41f1, 0x7b9: 0x41f9, 0x7ba: 0x4201, -+ 0x7bd: 0xa000, 0x7be: 0x4209, -+ // Block 0x1f, offset 0x7c0 -+ 0x7c0: 0x1472, 0x7c1: 0x0df6, 0x7c2: 0x14ce, 0x7c3: 0x149a, 0x7c4: 0x0f52, 0x7c5: 0x07e6, -+ 0x7c6: 0x09da, 0x7c7: 0x1726, 0x7c8: 0x1726, 0x7c9: 0x0b06, 0x7ca: 0x155a, 0x7cb: 0x0a3e, -+ 0x7cc: 0x0b02, 0x7cd: 0x0cea, 0x7ce: 0x10ca, 0x7cf: 0x125a, 0x7d0: 0x1392, 0x7d1: 0x13ce, -+ 0x7d2: 0x1402, 0x7d3: 0x1516, 0x7d4: 0x0e6e, 0x7d5: 0x0efa, 0x7d6: 0x0fa6, 0x7d7: 0x103e, -+ 0x7d8: 0x135a, 0x7d9: 0x1542, 0x7da: 0x166e, 0x7db: 0x080a, 0x7dc: 0x09ae, 0x7dd: 0x0e82, -+ 0x7de: 0x0fca, 0x7df: 0x138e, 0x7e0: 0x16be, 0x7e1: 0x0bae, 0x7e2: 0x0f72, 0x7e3: 0x137e, -+ 0x7e4: 0x1412, 0x7e5: 0x0d1e, 0x7e6: 0x12b6, 0x7e7: 0x13da, 0x7e8: 0x0c1a, 0x7e9: 0x0e0a, -+ 0x7ea: 0x0f12, 0x7eb: 0x1016, 0x7ec: 0x1522, 0x7ed: 0x084a, 0x7ee: 0x08e2, 0x7ef: 0x094e, -+ 0x7f0: 0x0d86, 0x7f1: 0x0e7a, 0x7f2: 0x0fc6, 0x7f3: 0x10ea, 0x7f4: 0x1272, 0x7f5: 0x1386, -+ 0x7f6: 0x139e, 0x7f7: 0x14c2, 0x7f8: 0x15ea, 0x7f9: 0x169e, 0x7fa: 0x16ba, 0x7fb: 0x1126, -+ 0x7fc: 0x1166, 0x7fd: 0x121e, 0x7fe: 0x133e, 0x7ff: 0x1576, -+ // Block 0x20, offset 0x800 -+ 0x800: 0x16c6, 0x801: 0x1446, 0x802: 0x0ac2, 0x803: 0x0c36, 0x804: 0x11d6, 0x805: 0x1296, -+ 0x806: 0x0ffa, 0x807: 0x112e, 0x808: 0x1492, 0x809: 0x15e2, 0x80a: 0x0abe, 0x80b: 0x0b8a, -+ 0x80c: 0x0e72, 0x80d: 0x0f26, 0x80e: 0x0f5a, 0x80f: 0x120e, 0x810: 0x1236, 0x811: 0x15a2, -+ 0x812: 0x094a, 0x813: 0x12a2, 0x814: 0x08ee, 0x815: 0x08ea, 0x816: 0x1192, 0x817: 0x1222, -+ 0x818: 0x1356, 0x819: 0x15aa, 0x81a: 0x1462, 0x81b: 0x0d22, 0x81c: 0x0e6e, 0x81d: 0x1452, -+ 0x81e: 0x07f2, 0x81f: 0x0b5e, 0x820: 0x0c8e, 0x821: 0x102a, 0x822: 0x10aa, 0x823: 0x096e, -+ 0x824: 0x1136, 0x825: 0x085a, 0x826: 0x0c72, 0x827: 0x07d2, 0x828: 0x0ee6, 0x829: 0x0d9e, -+ 0x82a: 0x120a, 0x82b: 0x09c2, 0x82c: 0x0aae, 0x82d: 0x10f6, 0x82e: 0x135e, 0x82f: 0x1436, -+ 0x830: 0x0eb2, 0x831: 0x14f2, 0x832: 0x0ede, 0x833: 0x0d32, 0x834: 0x1316, 0x835: 0x0d52, -+ 0x836: 0x10a6, 0x837: 0x0826, 0x838: 0x08a2, 0x839: 0x08e6, 0x83a: 0x0e4e, 0x83b: 0x11f6, -+ 0x83c: 0x12ee, 0x83d: 0x1442, 0x83e: 0x1556, 0x83f: 0x0956, -+ // Block 0x21, offset 0x840 -+ 0x840: 0x0a0a, 0x841: 0x0b12, 0x842: 0x0c2a, 0x843: 0x0dba, 0x844: 0x0f76, 0x845: 0x113a, -+ 0x846: 0x1592, 0x847: 0x1676, 0x848: 0x16ca, 0x849: 0x16e2, 0x84a: 0x0932, 0x84b: 0x0dee, -+ 0x84c: 0x0e9e, 0x84d: 0x14e6, 0x84e: 0x0bf6, 0x84f: 0x0cd2, 0x850: 0x0cee, 0x851: 0x0d7e, -+ 0x852: 0x0f66, 0x853: 0x0fb2, 0x854: 0x1062, 0x855: 0x1186, 0x856: 0x122a, 0x857: 0x128e, -+ 0x858: 0x14d6, 0x859: 0x1366, 0x85a: 0x14fe, 0x85b: 0x157a, 0x85c: 0x090a, 0x85d: 0x0936, -+ 0x85e: 0x0a1e, 0x85f: 0x0fa2, 0x860: 0x13ee, 0x861: 0x1436, 0x862: 0x0c16, 0x863: 0x0c86, -+ 0x864: 0x0d4a, 0x865: 0x0eaa, 0x866: 0x11d2, 0x867: 0x101e, 0x868: 0x0836, 0x869: 0x0a7a, -+ 0x86a: 0x0b5e, 0x86b: 0x0bc2, 0x86c: 0x0c92, 0x86d: 0x103a, 0x86e: 0x1056, 0x86f: 0x1266, -+ 0x870: 0x1286, 0x871: 0x155e, 0x872: 0x15de, 0x873: 0x15ee, 0x874: 0x162a, 0x875: 0x084e, -+ 0x876: 0x117a, 0x877: 0x154a, 0x878: 0x15c6, 0x879: 0x0caa, 0x87a: 0x0812, 0x87b: 0x0872, -+ 0x87c: 0x0b62, 0x87d: 0x0b82, 0x87e: 0x0daa, 0x87f: 0x0e6e, -+ // Block 0x22, offset 0x880 -+ 0x880: 0x0fbe, 0x881: 0x10c6, 0x882: 0x1372, 0x883: 0x1512, 0x884: 0x171e, 0x885: 0x0dde, -+ 0x886: 0x159e, 0x887: 0x092e, 0x888: 0x0e2a, 0x889: 0x0e36, 0x88a: 0x0f0a, 0x88b: 0x0f42, -+ 0x88c: 0x1046, 0x88d: 0x10a2, 0x88e: 0x1122, 0x88f: 0x1206, 0x890: 0x1636, 0x891: 0x08aa, -+ 0x892: 0x0cfe, 0x893: 0x15ae, 0x894: 0x0862, 0x895: 0x0ba6, 0x896: 0x0f2a, 0x897: 0x14da, -+ 0x898: 0x0c62, 0x899: 0x0cb2, 0x89a: 0x0e3e, 0x89b: 0x102a, 0x89c: 0x15b6, 0x89d: 0x0912, -+ 0x89e: 0x09fa, 0x89f: 0x0b92, 0x8a0: 0x0dce, 0x8a1: 0x0e1a, 0x8a2: 0x0e5a, 0x8a3: 0x0eee, -+ 0x8a4: 0x1042, 0x8a5: 0x10b6, 0x8a6: 0x1252, 0x8a7: 0x13f2, 0x8a8: 0x13fe, 0x8a9: 0x1552, -+ 0x8aa: 0x15d2, 0x8ab: 0x097e, 0x8ac: 0x0f46, 0x8ad: 0x09fe, 0x8ae: 0x0fc2, 0x8af: 0x1066, -+ 0x8b0: 0x1382, 0x8b1: 0x15ba, 0x8b2: 0x16a6, 0x8b3: 0x16ce, 0x8b4: 0x0e32, 0x8b5: 0x0f22, -+ 0x8b6: 0x12be, 0x8b7: 0x11b2, 0x8b8: 0x11be, 0x8b9: 0x11e2, 0x8ba: 0x1012, 0x8bb: 0x0f9a, -+ 0x8bc: 0x145e, 0x8bd: 0x082e, 0x8be: 0x1326, 0x8bf: 0x0916, -+ // Block 0x23, offset 0x8c0 -+ 0x8c0: 0x0906, 0x8c1: 0x0c06, 0x8c2: 0x0d26, 0x8c3: 0x11ee, 0x8c4: 0x0b4e, 0x8c5: 0x0efe, -+ 0x8c6: 0x0dea, 0x8c7: 0x14e2, 0x8c8: 0x13e2, 0x8c9: 0x15a6, 0x8ca: 0x141e, 0x8cb: 0x0c22, -+ 0x8cc: 0x0882, 0x8cd: 0x0a56, 0x8d0: 0x0aaa, -+ 0x8d2: 0x0dda, 0x8d5: 0x08f2, 0x8d6: 0x101a, 0x8d7: 0x10de, -+ 0x8d8: 0x1142, 0x8d9: 0x115e, 0x8da: 0x1162, 0x8db: 0x1176, 0x8dc: 0x15f6, 0x8dd: 0x11e6, -+ 0x8de: 0x126a, 0x8e0: 0x138a, 0x8e2: 0x144e, -+ 0x8e5: 0x1502, 0x8e6: 0x152e, -+ 0x8ea: 0x164a, 0x8eb: 0x164e, 0x8ec: 0x1652, 0x8ed: 0x16b6, 0x8ee: 0x1526, 0x8ef: 0x15c2, -+ 0x8f0: 0x0852, 0x8f1: 0x0876, 0x8f2: 0x088a, 0x8f3: 0x0946, 0x8f4: 0x0952, 0x8f5: 0x0992, -+ 0x8f6: 0x0a46, 0x8f7: 0x0a62, 0x8f8: 0x0a6a, 0x8f9: 0x0aa6, 0x8fa: 0x0ab2, 0x8fb: 0x0b8e, -+ 0x8fc: 0x0b96, 0x8fd: 0x0c9e, 0x8fe: 0x0cc6, 0x8ff: 0x0cce, -+ // Block 0x24, offset 0x900 -+ 0x900: 0x0ce6, 0x901: 0x0d92, 0x902: 0x0dc2, 0x903: 0x0de2, 0x904: 0x0e52, 0x905: 0x0f16, -+ 0x906: 0x0f32, 0x907: 0x0f62, 0x908: 0x0fb6, 0x909: 0x0fd6, 0x90a: 0x104a, 0x90b: 0x112a, -+ 0x90c: 0x1146, 0x90d: 0x114e, 0x90e: 0x114a, 0x90f: 0x1152, 0x910: 0x1156, 0x911: 0x115a, -+ 0x912: 0x116e, 0x913: 0x1172, 0x914: 0x1196, 0x915: 0x11aa, 0x916: 0x11c6, 0x917: 0x122a, -+ 0x918: 0x1232, 0x919: 0x123a, 0x91a: 0x124e, 0x91b: 0x1276, 0x91c: 0x12c6, 0x91d: 0x12fa, -+ 0x91e: 0x12fa, 0x91f: 0x1362, 0x920: 0x140a, 0x921: 0x1422, 0x922: 0x1456, 0x923: 0x145a, -+ 0x924: 0x149e, 0x925: 0x14a2, 0x926: 0x14fa, 0x927: 0x1502, 0x928: 0x15d6, 0x929: 0x161a, -+ 0x92a: 0x1632, 0x92b: 0x0c96, 0x92c: 0x184b, 0x92d: 0x12de, -+ 0x930: 0x07da, 0x931: 0x08de, 0x932: 0x089e, 0x933: 0x0846, 0x934: 0x0886, 0x935: 0x08b2, -+ 0x936: 0x0942, 0x937: 0x095e, 0x938: 0x0a46, 0x939: 0x0a32, 0x93a: 0x0a42, 0x93b: 0x0a5e, -+ 0x93c: 0x0aaa, 0x93d: 0x0aba, 0x93e: 0x0afe, 0x93f: 0x0b0a, -+ // Block 0x25, offset 0x940 -+ 0x940: 0x0b26, 0x941: 0x0b36, 0x942: 0x0c1e, 0x943: 0x0c26, 0x944: 0x0c56, 0x945: 0x0c76, -+ 0x946: 0x0ca6, 0x947: 0x0cbe, 0x948: 0x0cae, 0x949: 0x0cce, 0x94a: 0x0cc2, 0x94b: 0x0ce6, -+ 0x94c: 0x0d02, 0x94d: 0x0d5a, 0x94e: 0x0d66, 0x94f: 0x0d6e, 0x950: 0x0d96, 0x951: 0x0dda, -+ 0x952: 0x0e0a, 0x953: 0x0e0e, 0x954: 0x0e22, 0x955: 0x0ea2, 0x956: 0x0eb2, 0x957: 0x0f0a, -+ 0x958: 0x0f56, 0x959: 0x0f4e, 0x95a: 0x0f62, 0x95b: 0x0f7e, 0x95c: 0x0fb6, 0x95d: 0x110e, -+ 0x95e: 0x0fda, 0x95f: 0x100e, 0x960: 0x101a, 0x961: 0x105a, 0x962: 0x1076, 0x963: 0x109a, -+ 0x964: 0x10be, 0x965: 0x10c2, 0x966: 0x10de, 0x967: 0x10e2, 0x968: 0x10f2, 0x969: 0x1106, -+ 0x96a: 0x1102, 0x96b: 0x1132, 0x96c: 0x11ae, 0x96d: 0x11c6, 0x96e: 0x11de, 0x96f: 0x1216, -+ 0x970: 0x122a, 0x971: 0x1246, 0x972: 0x1276, 0x973: 0x132a, 0x974: 0x1352, 0x975: 0x13c6, -+ 0x976: 0x140e, 0x977: 0x141a, 0x978: 0x1422, 0x979: 0x143a, 0x97a: 0x144e, 0x97b: 0x143e, -+ 0x97c: 0x1456, 0x97d: 0x1452, 0x97e: 0x144a, 0x97f: 0x145a, -+ // Block 0x26, offset 0x980 -+ 0x980: 0x1466, 0x981: 0x14a2, 0x982: 0x14de, 0x983: 0x150e, 0x984: 0x1546, 0x985: 0x1566, -+ 0x986: 0x15b2, 0x987: 0x15d6, 0x988: 0x15f6, 0x989: 0x160a, 0x98a: 0x161a, 0x98b: 0x1626, -+ 0x98c: 0x1632, 0x98d: 0x1686, 0x98e: 0x1726, 0x98f: 0x17e2, 0x990: 0x17dd, 0x991: 0x180f, -+ 0x992: 0x0702, 0x993: 0x072a, 0x994: 0x072e, 0x995: 0x1891, 0x996: 0x18be, 0x997: 0x1936, -+ 0x998: 0x1712, 0x999: 0x1722, -+ // Block 0x27, offset 0x9c0 -+ 0x9c0: 0x07f6, 0x9c1: 0x07ee, 0x9c2: 0x07fe, 0x9c3: 0x1774, 0x9c4: 0x0842, 0x9c5: 0x0852, -+ 0x9c6: 0x0856, 0x9c7: 0x085e, 0x9c8: 0x0866, 0x9c9: 0x086a, 0x9ca: 0x0876, 0x9cb: 0x086e, -+ 0x9cc: 0x06ae, 0x9cd: 0x1788, 0x9ce: 0x088a, 0x9cf: 0x088e, 0x9d0: 0x0892, 0x9d1: 0x08ae, -+ 0x9d2: 0x1779, 0x9d3: 0x06b2, 0x9d4: 0x089a, 0x9d5: 0x08ba, 0x9d6: 0x1783, 0x9d7: 0x08ca, -+ 0x9d8: 0x08d2, 0x9d9: 0x0832, 0x9da: 0x08da, 0x9db: 0x08de, 0x9dc: 0x195e, 0x9dd: 0x08fa, -+ 0x9de: 0x0902, 0x9df: 0x06ba, 0x9e0: 0x091a, 0x9e1: 0x091e, 0x9e2: 0x0926, 0x9e3: 0x092a, -+ 0x9e4: 0x06be, 0x9e5: 0x0942, 0x9e6: 0x0946, 0x9e7: 0x0952, 0x9e8: 0x095e, 0x9e9: 0x0962, -+ 0x9ea: 0x0966, 0x9eb: 0x096e, 0x9ec: 0x098e, 0x9ed: 0x0992, 0x9ee: 0x099a, 0x9ef: 0x09aa, -+ 0x9f0: 0x09b2, 0x9f1: 0x09b6, 0x9f2: 0x09b6, 0x9f3: 0x09b6, 0x9f4: 0x1797, 0x9f5: 0x0f8e, -+ 0x9f6: 0x09ca, 0x9f7: 0x09d2, 0x9f8: 0x179c, 0x9f9: 0x09de, 0x9fa: 0x09e6, 0x9fb: 0x09ee, -+ 0x9fc: 0x0a16, 0x9fd: 0x0a02, 0x9fe: 0x0a0e, 0x9ff: 0x0a12, -+ // Block 0x28, offset 0xa00 -+ 0xa00: 0x0a1a, 0xa01: 0x0a22, 0xa02: 0x0a26, 0xa03: 0x0a2e, 0xa04: 0x0a36, 0xa05: 0x0a3a, -+ 0xa06: 0x0a3a, 0xa07: 0x0a42, 0xa08: 0x0a4a, 0xa09: 0x0a4e, 0xa0a: 0x0a5a, 0xa0b: 0x0a7e, -+ 0xa0c: 0x0a62, 0xa0d: 0x0a82, 0xa0e: 0x0a66, 0xa0f: 0x0a6e, 0xa10: 0x0906, 0xa11: 0x0aca, -+ 0xa12: 0x0a92, 0xa13: 0x0a96, 0xa14: 0x0a9a, 0xa15: 0x0a8e, 0xa16: 0x0aa2, 0xa17: 0x0a9e, -+ 0xa18: 0x0ab6, 0xa19: 0x17a1, 0xa1a: 0x0ad2, 0xa1b: 0x0ad6, 0xa1c: 0x0ade, 0xa1d: 0x0aea, -+ 0xa1e: 0x0af2, 0xa1f: 0x0b0e, 0xa20: 0x17a6, 0xa21: 0x17ab, 0xa22: 0x0b1a, 0xa23: 0x0b1e, -+ 0xa24: 0x0b22, 0xa25: 0x0b16, 0xa26: 0x0b2a, 0xa27: 0x06c2, 0xa28: 0x06c6, 0xa29: 0x0b32, -+ 0xa2a: 0x0b3a, 0xa2b: 0x0b3a, 0xa2c: 0x17b0, 0xa2d: 0x0b56, 0xa2e: 0x0b5a, 0xa2f: 0x0b5e, -+ 0xa30: 0x0b66, 0xa31: 0x17b5, 0xa32: 0x0b6e, 0xa33: 0x0b72, 0xa34: 0x0c4a, 0xa35: 0x0b7a, -+ 0xa36: 0x06ca, 0xa37: 0x0b86, 0xa38: 0x0b96, 0xa39: 0x0ba2, 0xa3a: 0x0b9e, 0xa3b: 0x17bf, -+ 0xa3c: 0x0baa, 0xa3d: 0x17c4, 0xa3e: 0x0bb6, 0xa3f: 0x0bb2, -+ // Block 0x29, offset 0xa40 -+ 0xa40: 0x0bba, 0xa41: 0x0bca, 0xa42: 0x0bce, 0xa43: 0x06ce, 0xa44: 0x0bde, 0xa45: 0x0be6, -+ 0xa46: 0x0bea, 0xa47: 0x0bee, 0xa48: 0x06d2, 0xa49: 0x17c9, 0xa4a: 0x06d6, 0xa4b: 0x0c0a, -+ 0xa4c: 0x0c0e, 0xa4d: 0x0c12, 0xa4e: 0x0c1a, 0xa4f: 0x1990, 0xa50: 0x0c32, 0xa51: 0x17d3, -+ 0xa52: 0x17d3, 0xa53: 0x12d2, 0xa54: 0x0c42, 0xa55: 0x0c42, 0xa56: 0x06da, 0xa57: 0x17f6, -+ 0xa58: 0x18c8, 0xa59: 0x0c52, 0xa5a: 0x0c5a, 0xa5b: 0x06de, 0xa5c: 0x0c6e, 0xa5d: 0x0c7e, -+ 0xa5e: 0x0c82, 0xa5f: 0x0c8a, 0xa60: 0x0c9a, 0xa61: 0x06e6, 0xa62: 0x06e2, 0xa63: 0x0c9e, -+ 0xa64: 0x17d8, 0xa65: 0x0ca2, 0xa66: 0x0cb6, 0xa67: 0x0cba, 0xa68: 0x0cbe, 0xa69: 0x0cba, -+ 0xa6a: 0x0cca, 0xa6b: 0x0cce, 0xa6c: 0x0cde, 0xa6d: 0x0cd6, 0xa6e: 0x0cda, 0xa6f: 0x0ce2, -+ 0xa70: 0x0ce6, 0xa71: 0x0cea, 0xa72: 0x0cf6, 0xa73: 0x0cfa, 0xa74: 0x0d12, 0xa75: 0x0d1a, -+ 0xa76: 0x0d2a, 0xa77: 0x0d3e, 0xa78: 0x17e7, 0xa79: 0x0d3a, 0xa7a: 0x0d2e, 0xa7b: 0x0d46, -+ 0xa7c: 0x0d4e, 0xa7d: 0x0d62, 0xa7e: 0x17ec, 0xa7f: 0x0d6a, -+ // Block 0x2a, offset 0xa80 -+ 0xa80: 0x0d5e, 0xa81: 0x0d56, 0xa82: 0x06ea, 0xa83: 0x0d72, 0xa84: 0x0d7a, 0xa85: 0x0d82, -+ 0xa86: 0x0d76, 0xa87: 0x06ee, 0xa88: 0x0d92, 0xa89: 0x0d9a, 0xa8a: 0x17f1, 0xa8b: 0x0dc6, -+ 0xa8c: 0x0dfa, 0xa8d: 0x0dd6, 0xa8e: 0x06fa, 0xa8f: 0x0de2, 0xa90: 0x06f6, 0xa91: 0x06f2, -+ 0xa92: 0x08be, 0xa93: 0x08c2, 0xa94: 0x0dfe, 0xa95: 0x0de6, 0xa96: 0x12a6, 0xa97: 0x075e, -+ 0xa98: 0x0e0a, 0xa99: 0x0e0e, 0xa9a: 0x0e12, 0xa9b: 0x0e26, 0xa9c: 0x0e1e, 0xa9d: 0x180a, -+ 0xa9e: 0x06fe, 0xa9f: 0x0e3a, 0xaa0: 0x0e2e, 0xaa1: 0x0e4a, 0xaa2: 0x0e52, 0xaa3: 0x1814, -+ 0xaa4: 0x0e56, 0xaa5: 0x0e42, 0xaa6: 0x0e5e, 0xaa7: 0x0702, 0xaa8: 0x0e62, 0xaa9: 0x0e66, -+ 0xaaa: 0x0e6a, 0xaab: 0x0e76, 0xaac: 0x1819, 0xaad: 0x0e7e, 0xaae: 0x0706, 0xaaf: 0x0e8a, -+ 0xab0: 0x181e, 0xab1: 0x0e8e, 0xab2: 0x070a, 0xab3: 0x0e9a, 0xab4: 0x0ea6, 0xab5: 0x0eb2, -+ 0xab6: 0x0eb6, 0xab7: 0x1823, 0xab8: 0x17ba, 0xab9: 0x1828, 0xaba: 0x0ed6, 0xabb: 0x182d, -+ 0xabc: 0x0ee2, 0xabd: 0x0eea, 0xabe: 0x0eda, 0xabf: 0x0ef6, -+ // Block 0x2b, offset 0xac0 -+ 0xac0: 0x0f06, 0xac1: 0x0f16, 0xac2: 0x0f0a, 0xac3: 0x0f0e, 0xac4: 0x0f1a, 0xac5: 0x0f1e, -+ 0xac6: 0x1832, 0xac7: 0x0f02, 0xac8: 0x0f36, 0xac9: 0x0f3a, 0xaca: 0x070e, 0xacb: 0x0f4e, -+ 0xacc: 0x0f4a, 0xacd: 0x1837, 0xace: 0x0f2e, 0xacf: 0x0f6a, 0xad0: 0x183c, 0xad1: 0x1841, -+ 0xad2: 0x0f6e, 0xad3: 0x0f82, 0xad4: 0x0f7e, 0xad5: 0x0f7a, 0xad6: 0x0712, 0xad7: 0x0f86, -+ 0xad8: 0x0f96, 0xad9: 0x0f92, 0xada: 0x0f9e, 0xadb: 0x177e, 0xadc: 0x0fae, 0xadd: 0x1846, -+ 0xade: 0x0fba, 0xadf: 0x1850, 0xae0: 0x0fce, 0xae1: 0x0fda, 0xae2: 0x0fee, 0xae3: 0x1855, -+ 0xae4: 0x1002, 0xae5: 0x1006, 0xae6: 0x185a, 0xae7: 0x185f, 0xae8: 0x1022, 0xae9: 0x1032, -+ 0xaea: 0x0716, 0xaeb: 0x1036, 0xaec: 0x071a, 0xaed: 0x071a, 0xaee: 0x104e, 0xaef: 0x1052, -+ 0xaf0: 0x105a, 0xaf1: 0x105e, 0xaf2: 0x106a, 0xaf3: 0x071e, 0xaf4: 0x1082, 0xaf5: 0x1864, -+ 0xaf6: 0x109e, 0xaf7: 0x1869, 0xaf8: 0x10aa, 0xaf9: 0x17ce, 0xafa: 0x10ba, 0xafb: 0x186e, -+ 0xafc: 0x1873, 0xafd: 0x1878, 0xafe: 0x0722, 0xaff: 0x0726, -+ // Block 0x2c, offset 0xb00 -+ 0xb00: 0x10f2, 0xb01: 0x1882, 0xb02: 0x187d, 0xb03: 0x1887, 0xb04: 0x188c, 0xb05: 0x10fa, -+ 0xb06: 0x10fe, 0xb07: 0x10fe, 0xb08: 0x1106, 0xb09: 0x072e, 0xb0a: 0x110a, 0xb0b: 0x0732, -+ 0xb0c: 0x0736, 0xb0d: 0x1896, 0xb0e: 0x111e, 0xb0f: 0x1126, 0xb10: 0x1132, 0xb11: 0x073a, -+ 0xb12: 0x189b, 0xb13: 0x1156, 0xb14: 0x18a0, 0xb15: 0x18a5, 0xb16: 0x1176, 0xb17: 0x118e, -+ 0xb18: 0x073e, 0xb19: 0x1196, 0xb1a: 0x119a, 0xb1b: 0x119e, 0xb1c: 0x18aa, 0xb1d: 0x18af, -+ 0xb1e: 0x18af, 0xb1f: 0x11b6, 0xb20: 0x0742, 0xb21: 0x18b4, 0xb22: 0x11ca, 0xb23: 0x11ce, -+ 0xb24: 0x0746, 0xb25: 0x18b9, 0xb26: 0x11ea, 0xb27: 0x074a, 0xb28: 0x11fa, 0xb29: 0x11f2, -+ 0xb2a: 0x1202, 0xb2b: 0x18c3, 0xb2c: 0x121a, 0xb2d: 0x074e, 0xb2e: 0x1226, 0xb2f: 0x122e, -+ 0xb30: 0x123e, 0xb31: 0x0752, 0xb32: 0x18cd, 0xb33: 0x18d2, 0xb34: 0x0756, 0xb35: 0x18d7, -+ 0xb36: 0x1256, 0xb37: 0x18dc, 0xb38: 0x1262, 0xb39: 0x126e, 0xb3a: 0x1276, 0xb3b: 0x18e1, -+ 0xb3c: 0x18e6, 0xb3d: 0x128a, 0xb3e: 0x18eb, 0xb3f: 0x1292, -+ // Block 0x2d, offset 0xb40 -+ 0xb40: 0x17fb, 0xb41: 0x075a, 0xb42: 0x12aa, 0xb43: 0x12ae, 0xb44: 0x0762, 0xb45: 0x12b2, -+ 0xb46: 0x0b2e, 0xb47: 0x18f0, 0xb48: 0x18f5, 0xb49: 0x1800, 0xb4a: 0x1805, 0xb4b: 0x12d2, -+ 0xb4c: 0x12d6, 0xb4d: 0x14ee, 0xb4e: 0x0766, 0xb4f: 0x1302, 0xb50: 0x12fe, 0xb51: 0x1306, -+ 0xb52: 0x093a, 0xb53: 0x130a, 0xb54: 0x130e, 0xb55: 0x1312, 0xb56: 0x131a, 0xb57: 0x18fa, -+ 0xb58: 0x1316, 0xb59: 0x131e, 0xb5a: 0x1332, 0xb5b: 0x1336, 0xb5c: 0x1322, 0xb5d: 0x133a, -+ 0xb5e: 0x134e, 0xb5f: 0x1362, 0xb60: 0x132e, 0xb61: 0x1342, 0xb62: 0x1346, 0xb63: 0x134a, -+ 0xb64: 0x18ff, 0xb65: 0x1909, 0xb66: 0x1904, 0xb67: 0x076a, 0xb68: 0x136a, 0xb69: 0x136e, -+ 0xb6a: 0x1376, 0xb6b: 0x191d, 0xb6c: 0x137a, 0xb6d: 0x190e, 0xb6e: 0x076e, 0xb6f: 0x0772, -+ 0xb70: 0x1913, 0xb71: 0x1918, 0xb72: 0x0776, 0xb73: 0x139a, 0xb74: 0x139e, 0xb75: 0x13a2, -+ 0xb76: 0x13a6, 0xb77: 0x13b2, 0xb78: 0x13ae, 0xb79: 0x13ba, 0xb7a: 0x13b6, 0xb7b: 0x13c6, -+ 0xb7c: 0x13be, 0xb7d: 0x13c2, 0xb7e: 0x13ca, 0xb7f: 0x077a, -+ // Block 0x2e, offset 0xb80 -+ 0xb80: 0x13d2, 0xb81: 0x13d6, 0xb82: 0x077e, 0xb83: 0x13e6, 0xb84: 0x13ea, 0xb85: 0x1922, -+ 0xb86: 0x13f6, 0xb87: 0x13fa, 0xb88: 0x0782, 0xb89: 0x1406, 0xb8a: 0x06b6, 0xb8b: 0x1927, -+ 0xb8c: 0x192c, 0xb8d: 0x0786, 0xb8e: 0x078a, 0xb8f: 0x1432, 0xb90: 0x144a, 0xb91: 0x1466, -+ 0xb92: 0x1476, 0xb93: 0x1931, 0xb94: 0x148a, 0xb95: 0x148e, 0xb96: 0x14a6, 0xb97: 0x14b2, -+ 0xb98: 0x193b, 0xb99: 0x178d, 0xb9a: 0x14be, 0xb9b: 0x14ba, 0xb9c: 0x14c6, 0xb9d: 0x1792, -+ 0xb9e: 0x14d2, 0xb9f: 0x14de, 0xba0: 0x1940, 0xba1: 0x1945, 0xba2: 0x151e, 0xba3: 0x152a, -+ 0xba4: 0x1532, 0xba5: 0x194a, 0xba6: 0x1536, 0xba7: 0x1562, 0xba8: 0x156e, 0xba9: 0x1572, -+ 0xbaa: 0x156a, 0xbab: 0x157e, 0xbac: 0x1582, 0xbad: 0x194f, 0xbae: 0x158e, 0xbaf: 0x078e, -+ 0xbb0: 0x1596, 0xbb1: 0x1954, 0xbb2: 0x0792, 0xbb3: 0x15ce, 0xbb4: 0x0bbe, 0xbb5: 0x15e6, -+ 0xbb6: 0x1959, 0xbb7: 0x1963, 0xbb8: 0x0796, 0xbb9: 0x079a, 0xbba: 0x160e, 0xbbb: 0x1968, -+ 0xbbc: 0x079e, 0xbbd: 0x196d, 0xbbe: 0x1626, 0xbbf: 0x1626, -+ // Block 0x2f, offset 0xbc0 -+ 0xbc0: 0x162e, 0xbc1: 0x1972, 0xbc2: 0x1646, 0xbc3: 0x07a2, 0xbc4: 0x1656, 0xbc5: 0x1662, -+ 0xbc6: 0x166a, 0xbc7: 0x1672, 0xbc8: 0x07a6, 0xbc9: 0x1977, 0xbca: 0x1686, 0xbcb: 0x16a2, -+ 0xbcc: 0x16ae, 0xbcd: 0x07aa, 0xbce: 0x07ae, 0xbcf: 0x16b2, 0xbd0: 0x197c, 0xbd1: 0x07b2, -+ 0xbd2: 0x1981, 0xbd3: 0x1986, 0xbd4: 0x198b, 0xbd5: 0x16d6, 0xbd6: 0x07b6, 0xbd7: 0x16ea, -+ 0xbd8: 0x16f2, 0xbd9: 0x16f6, 0xbda: 0x16fe, 0xbdb: 0x1706, 0xbdc: 0x170e, 0xbdd: 0x1995, -+} -+ -+// nfcIndex: 22 blocks, 1408 entries, 1408 bytes -+// Block 0 is the zero block. -+var nfcIndex = [1408]uint8{ -+ // Block 0x0, offset 0x0 -+ // Block 0x1, offset 0x40 -+ // Block 0x2, offset 0x80 -+ // Block 0x3, offset 0xc0 -+ 0xc2: 0x2e, 0xc3: 0x01, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x2f, 0xc7: 0x04, -+ 0xc8: 0x05, 0xca: 0x30, 0xcb: 0x31, 0xcc: 0x06, 0xcd: 0x07, 0xce: 0x08, 0xcf: 0x32, -+ 0xd0: 0x09, 0xd1: 0x33, 0xd2: 0x34, 0xd3: 0x0a, 0xd6: 0x0b, 0xd7: 0x35, -+ 0xd8: 0x36, 0xd9: 0x0c, 0xdb: 0x37, 0xdc: 0x38, 0xdd: 0x39, 0xdf: 0x3a, -+ 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, -+ 0xea: 0x06, 0xeb: 0x07, 0xec: 0x08, 0xed: 0x09, 0xef: 0x0a, -+ 0xf0: 0x13, -+ // Block 0x4, offset 0x100 -+ 0x120: 0x3b, 0x121: 0x3c, 0x122: 0x3d, 0x123: 0x0d, 0x124: 0x3e, 0x125: 0x3f, 0x126: 0x40, 0x127: 0x41, -+ 0x128: 0x42, 0x129: 0x43, 0x12a: 0x44, 0x12b: 0x45, 0x12c: 0x40, 0x12d: 0x46, 0x12e: 0x47, 0x12f: 0x48, -+ 0x130: 0x44, 0x131: 0x49, 0x132: 0x4a, 0x133: 0x4b, 0x134: 0x4c, 0x135: 0x4d, 0x137: 0x4e, -+ 0x138: 0x4f, 0x139: 0x50, 0x13a: 0x51, 0x13b: 0x52, 0x13c: 0x53, 0x13d: 0x54, 0x13e: 0x55, 0x13f: 0x56, -+ // Block 0x5, offset 0x140 -+ 0x140: 0x57, 0x142: 0x58, 0x144: 0x59, 0x145: 0x5a, 0x146: 0x5b, 0x147: 0x5c, -+ 0x14d: 0x5d, -+ 0x15c: 0x5e, 0x15f: 0x5f, -+ 0x162: 0x60, 0x164: 0x61, -+ 0x168: 0x62, 0x169: 0x63, 0x16a: 0x64, 0x16b: 0x65, 0x16c: 0x0e, 0x16d: 0x66, 0x16e: 0x67, 0x16f: 0x68, -+ 0x170: 0x69, 0x173: 0x6a, 0x177: 0x0f, -+ 0x178: 0x10, 0x179: 0x11, 0x17a: 0x12, 0x17b: 0x13, 0x17c: 0x14, 0x17d: 0x15, 0x17e: 0x16, 0x17f: 0x17, -+ // Block 0x6, offset 0x180 -+ 0x180: 0x6b, 0x183: 0x6c, 0x184: 0x6d, 0x186: 0x6e, 0x187: 0x6f, -+ 0x188: 0x70, 0x189: 0x18, 0x18a: 0x19, 0x18b: 0x71, 0x18c: 0x72, -+ 0x1ab: 0x73, -+ 0x1b3: 0x74, 0x1b5: 0x75, 0x1b7: 0x76, -+ // Block 0x7, offset 0x1c0 -+ 0x1c0: 0x77, 0x1c1: 0x1a, 0x1c2: 0x1b, 0x1c3: 0x1c, 0x1c4: 0x78, 0x1c5: 0x79, -+ 0x1c9: 0x7a, 0x1cc: 0x7b, 0x1cd: 0x7c, -+ // Block 0x8, offset 0x200 -+ 0x219: 0x7d, 0x21a: 0x7e, 0x21b: 0x7f, -+ 0x220: 0x80, 0x223: 0x81, 0x224: 0x82, 0x225: 0x83, 0x226: 0x84, 0x227: 0x85, -+ 0x22a: 0x86, 0x22b: 0x87, 0x22f: 0x88, -+ 0x230: 0x89, 0x231: 0x8a, 0x232: 0x8b, 0x233: 0x8c, 0x234: 0x8d, 0x235: 0x8e, 0x236: 0x8f, 0x237: 0x89, -+ 0x238: 0x8a, 0x239: 0x8b, 0x23a: 0x8c, 0x23b: 0x8d, 0x23c: 0x8e, 0x23d: 0x8f, 0x23e: 0x89, 0x23f: 0x8a, -+ // Block 0x9, offset 0x240 -+ 0x240: 0x8b, 0x241: 0x8c, 0x242: 0x8d, 0x243: 0x8e, 0x244: 0x8f, 0x245: 0x89, 0x246: 0x8a, 0x247: 0x8b, -+ 0x248: 0x8c, 0x249: 0x8d, 0x24a: 0x8e, 0x24b: 0x8f, 0x24c: 0x89, 0x24d: 0x8a, 0x24e: 0x8b, 0x24f: 0x8c, -+ 0x250: 0x8d, 0x251: 0x8e, 0x252: 0x8f, 0x253: 0x89, 0x254: 0x8a, 0x255: 0x8b, 0x256: 0x8c, 0x257: 0x8d, -+ 0x258: 0x8e, 0x259: 0x8f, 0x25a: 0x89, 0x25b: 0x8a, 0x25c: 0x8b, 0x25d: 0x8c, 0x25e: 0x8d, 0x25f: 0x8e, -+ 0x260: 0x8f, 0x261: 0x89, 0x262: 0x8a, 0x263: 0x8b, 0x264: 0x8c, 0x265: 0x8d, 0x266: 0x8e, 0x267: 0x8f, -+ 0x268: 0x89, 0x269: 0x8a, 0x26a: 0x8b, 0x26b: 0x8c, 0x26c: 0x8d, 0x26d: 0x8e, 0x26e: 0x8f, 0x26f: 0x89, -+ 0x270: 0x8a, 0x271: 0x8b, 0x272: 0x8c, 0x273: 0x8d, 0x274: 0x8e, 0x275: 0x8f, 0x276: 0x89, 0x277: 0x8a, -+ 0x278: 0x8b, 0x279: 0x8c, 0x27a: 0x8d, 0x27b: 0x8e, 0x27c: 0x8f, 0x27d: 0x89, 0x27e: 0x8a, 0x27f: 0x8b, -+ // Block 0xa, offset 0x280 -+ 0x280: 0x8c, 0x281: 0x8d, 0x282: 0x8e, 0x283: 0x8f, 0x284: 0x89, 0x285: 0x8a, 0x286: 0x8b, 0x287: 0x8c, -+ 0x288: 0x8d, 0x289: 0x8e, 0x28a: 0x8f, 0x28b: 0x89, 0x28c: 0x8a, 0x28d: 0x8b, 0x28e: 0x8c, 0x28f: 0x8d, -+ 0x290: 0x8e, 0x291: 0x8f, 0x292: 0x89, 0x293: 0x8a, 0x294: 0x8b, 0x295: 0x8c, 0x296: 0x8d, 0x297: 0x8e, -+ 0x298: 0x8f, 0x299: 0x89, 0x29a: 0x8a, 0x29b: 0x8b, 0x29c: 0x8c, 0x29d: 0x8d, 0x29e: 0x8e, 0x29f: 0x8f, -+ 0x2a0: 0x89, 0x2a1: 0x8a, 0x2a2: 0x8b, 0x2a3: 0x8c, 0x2a4: 0x8d, 0x2a5: 0x8e, 0x2a6: 0x8f, 0x2a7: 0x89, -+ 0x2a8: 0x8a, 0x2a9: 0x8b, 0x2aa: 0x8c, 0x2ab: 0x8d, 0x2ac: 0x8e, 0x2ad: 0x8f, 0x2ae: 0x89, 0x2af: 0x8a, -+ 0x2b0: 0x8b, 0x2b1: 0x8c, 0x2b2: 0x8d, 0x2b3: 0x8e, 0x2b4: 0x8f, 0x2b5: 0x89, 0x2b6: 0x8a, 0x2b7: 0x8b, -+ 0x2b8: 0x8c, 0x2b9: 0x8d, 0x2ba: 0x8e, 0x2bb: 0x8f, 0x2bc: 0x89, 0x2bd: 0x8a, 0x2be: 0x8b, 0x2bf: 0x8c, -+ // Block 0xb, offset 0x2c0 -+ 0x2c0: 0x8d, 0x2c1: 0x8e, 0x2c2: 0x8f, 0x2c3: 0x89, 0x2c4: 0x8a, 0x2c5: 0x8b, 0x2c6: 0x8c, 0x2c7: 0x8d, -+ 0x2c8: 0x8e, 0x2c9: 0x8f, 0x2ca: 0x89, 0x2cb: 0x8a, 0x2cc: 0x8b, 0x2cd: 0x8c, 0x2ce: 0x8d, 0x2cf: 0x8e, -+ 0x2d0: 0x8f, 0x2d1: 0x89, 0x2d2: 0x8a, 0x2d3: 0x8b, 0x2d4: 0x8c, 0x2d5: 0x8d, 0x2d6: 0x8e, 0x2d7: 0x8f, -+ 0x2d8: 0x89, 0x2d9: 0x8a, 0x2da: 0x8b, 0x2db: 0x8c, 0x2dc: 0x8d, 0x2dd: 0x8e, 0x2de: 0x90, -+ // Block 0xc, offset 0x300 -+ 0x324: 0x1d, 0x325: 0x1e, 0x326: 0x1f, 0x327: 0x20, -+ 0x328: 0x21, 0x329: 0x22, 0x32a: 0x23, 0x32b: 0x24, 0x32c: 0x91, 0x32d: 0x92, 0x32e: 0x93, -+ 0x331: 0x94, 0x332: 0x95, 0x333: 0x96, 0x334: 0x97, -+ 0x338: 0x98, 0x339: 0x99, 0x33a: 0x9a, 0x33b: 0x9b, 0x33e: 0x9c, 0x33f: 0x9d, -+ // Block 0xd, offset 0x340 -+ 0x347: 0x9e, -+ 0x34b: 0x9f, 0x34d: 0xa0, -+ 0x368: 0xa1, 0x36b: 0xa2, -+ 0x374: 0xa3, -+ 0x37a: 0xa4, 0x37b: 0xa5, 0x37d: 0xa6, 0x37e: 0xa7, -+ // Block 0xe, offset 0x380 -+ 0x381: 0xa8, 0x382: 0xa9, 0x384: 0xaa, 0x385: 0x84, 0x387: 0xab, -+ 0x388: 0xac, 0x38b: 0xad, 0x38c: 0xae, 0x38d: 0xaf, -+ 0x391: 0xb0, 0x392: 0xb1, 0x393: 0xb2, 0x396: 0xb3, 0x397: 0xb4, -+ 0x398: 0x75, 0x39a: 0xb5, 0x39c: 0xb6, -+ 0x3a0: 0xb7, 0x3a4: 0xb8, 0x3a5: 0xb9, 0x3a7: 0xba, -+ 0x3a8: 0xbb, 0x3a9: 0xbc, 0x3aa: 0xbd, -+ 0x3b0: 0x75, 0x3b5: 0xbe, 0x3b6: 0xbf, -+ 0x3bd: 0xc0, -+ // Block 0xf, offset 0x3c0 -+ 0x3eb: 0xc1, 0x3ec: 0xc2, -+ 0x3ff: 0xc3, -+ // Block 0x10, offset 0x400 -+ 0x432: 0xc4, -+ // Block 0x11, offset 0x440 -+ 0x445: 0xc5, 0x446: 0xc6, 0x447: 0xc7, -+ 0x449: 0xc8, -+ // Block 0x12, offset 0x480 -+ 0x480: 0xc9, 0x482: 0xca, 0x484: 0xc2, -+ 0x48a: 0xcb, 0x48b: 0xcc, -+ 0x493: 0xcd, -+ 0x4a3: 0xce, 0x4a5: 0xcf, -+ // Block 0x13, offset 0x4c0 -+ 0x4c8: 0xd0, -+ // Block 0x14, offset 0x500 -+ 0x520: 0x25, 0x521: 0x26, 0x522: 0x27, 0x523: 0x28, 0x524: 0x29, 0x525: 0x2a, 0x526: 0x2b, 0x527: 0x2c, -+ 0x528: 0x2d, -+ // Block 0x15, offset 0x540 -+ 0x550: 0x0b, 0x551: 0x0c, 0x556: 0x0d, -+ 0x55b: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11, -+ 0x56f: 0x12, -+} -+ -+// nfcSparseOffset: 163 entries, 326 bytes -+var nfcSparseOffset = []uint16{0x0, 0x5, 0x9, 0xb, 0xd, 0x18, 0x28, 0x2a, 0x2f, 0x3a, 0x49, 0x56, 0x5e, 0x63, 0x68, 0x6a, 0x6e, 0x76, 0x7d, 0x80, 0x88, 0x8c, 0x90, 0x92, 0x94, 0x9d, 0xa1, 0xa8, 0xad, 0xb0, 0xba, 0xbd, 0xc4, 0xcc, 0xcf, 0xd1, 0xd4, 0xd6, 0xdb, 0xec, 0xf8, 0xfa, 0x100, 0x102, 0x104, 0x106, 0x108, 0x10a, 0x10c, 0x10f, 0x112, 0x114, 0x117, 0x11a, 0x11e, 0x124, 0x12b, 0x134, 0x136, 0x139, 0x13b, 0x146, 0x14a, 0x158, 0x15b, 0x161, 0x167, 0x172, 0x176, 0x178, 0x17a, 0x17c, 0x17e, 0x180, 0x186, 0x18a, 0x18c, 0x18e, 0x196, 0x19a, 0x19d, 0x19f, 0x1a1, 0x1a4, 0x1a7, 0x1a9, 0x1ab, 0x1ad, 0x1af, 0x1b5, 0x1b8, 0x1ba, 0x1c1, 0x1c7, 0x1cd, 0x1d5, 0x1db, 0x1e1, 0x1e7, 0x1eb, 0x1f9, 0x202, 0x205, 0x208, 0x20a, 0x20d, 0x20f, 0x213, 0x218, 0x21a, 0x21c, 0x221, 0x227, 0x229, 0x22b, 0x22d, 0x233, 0x236, 0x238, 0x23a, 0x23c, 0x242, 0x246, 0x24a, 0x252, 0x259, 0x25c, 0x25f, 0x261, 0x264, 0x26c, 0x270, 0x277, 0x27a, 0x280, 0x282, 0x285, 0x287, 0x28a, 0x28f, 0x291, 0x293, 0x295, 0x297, 0x299, 0x29c, 0x29e, 0x2a0, 0x2a2, 0x2a4, 0x2a6, 0x2a8, 0x2b5, 0x2bf, 0x2c1, 0x2c3, 0x2c9, 0x2cb, 0x2cd, 0x2cf, 0x2d3, 0x2d5, 0x2d8} -+ -+// nfcSparseValues: 730 entries, 2920 bytes -+var nfcSparseValues = [730]valueRange{ -+ // Block 0x0, offset 0x0 -+ {value: 0x0000, lo: 0x04}, -+ {value: 0xa100, lo: 0xa8, hi: 0xa8}, -+ {value: 0x8100, lo: 0xaf, hi: 0xaf}, -+ {value: 0x8100, lo: 0xb4, hi: 0xb4}, -+ {value: 0x8100, lo: 0xb8, hi: 0xb8}, -+ // Block 0x1, offset 0x5 -+ {value: 0x0091, lo: 0x03}, -+ {value: 0x4823, lo: 0xa0, hi: 0xa1}, -+ {value: 0x4855, lo: 0xaf, hi: 0xb0}, -+ {value: 0xa000, lo: 0xb7, hi: 0xb7}, -+ // Block 0x2, offset 0x9 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0xa000, lo: 0x92, hi: 0x92}, -+ // Block 0x3, offset 0xb -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8100, lo: 0x98, hi: 0x9d}, -+ // Block 0x4, offset 0xd -+ {value: 0x0006, lo: 0x0a}, -+ {value: 0xa000, lo: 0x81, hi: 0x81}, -+ {value: 0xa000, lo: 0x85, hi: 0x85}, -+ {value: 0xa000, lo: 0x89, hi: 0x89}, -+ {value: 0x4981, lo: 0x8a, hi: 0x8a}, -+ {value: 0x499f, lo: 0x8b, hi: 0x8b}, -+ {value: 0x3808, lo: 0x8c, hi: 0x8c}, -+ {value: 0x3820, lo: 0x8d, hi: 0x8d}, -+ {value: 0x49b7, lo: 0x8e, hi: 0x8e}, -+ {value: 0xa000, lo: 0x92, hi: 0x92}, -+ {value: 0x383e, lo: 0x93, hi: 0x94}, -+ // Block 0x5, offset 0x18 -+ {value: 0x0000, lo: 0x0f}, -+ {value: 0xa000, lo: 0x83, hi: 0x83}, -+ {value: 0xa000, lo: 0x87, hi: 0x87}, -+ {value: 0xa000, lo: 0x8b, hi: 0x8b}, -+ {value: 0xa000, lo: 0x8d, hi: 0x8d}, -+ {value: 0x38e6, lo: 0x90, hi: 0x90}, -+ {value: 0x38f2, lo: 0x91, hi: 0x91}, -+ {value: 0x38e0, lo: 0x93, hi: 0x93}, -+ {value: 0xa000, lo: 0x96, hi: 0x96}, -+ {value: 0x3958, lo: 0x97, hi: 0x97}, -+ {value: 0x3922, lo: 0x9c, hi: 0x9c}, -+ {value: 0x390a, lo: 0x9d, hi: 0x9d}, -+ {value: 0x3934, lo: 0x9e, hi: 0x9e}, -+ {value: 0xa000, lo: 0xb4, hi: 0xb5}, -+ {value: 0x395e, lo: 0xb6, hi: 0xb6}, -+ {value: 0x3964, lo: 0xb7, hi: 0xb7}, -+ // Block 0x6, offset 0x28 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8133, lo: 0x83, hi: 0x87}, -+ // Block 0x7, offset 0x2a -+ {value: 0x0001, lo: 0x04}, -+ {value: 0x8114, lo: 0x81, hi: 0x82}, -+ {value: 0x8133, lo: 0x84, hi: 0x84}, -+ {value: 0x812e, lo: 0x85, hi: 0x85}, -+ {value: 0x810e, lo: 0x87, hi: 0x87}, -+ // Block 0x8, offset 0x2f -+ {value: 0x0000, lo: 0x0a}, -+ {value: 0x8133, lo: 0x90, hi: 0x97}, -+ {value: 0x811a, lo: 0x98, hi: 0x98}, -+ {value: 0x811b, lo: 0x99, hi: 0x99}, -+ {value: 0x811c, lo: 0x9a, hi: 0x9a}, -+ {value: 0x3982, lo: 0xa2, hi: 0xa2}, -+ {value: 0x3988, lo: 0xa3, hi: 0xa3}, -+ {value: 0x3994, lo: 0xa4, hi: 0xa4}, -+ {value: 0x398e, lo: 0xa5, hi: 0xa5}, -+ {value: 0x399a, lo: 0xa6, hi: 0xa6}, -+ {value: 0xa000, lo: 0xa7, hi: 0xa7}, -+ // Block 0x9, offset 0x3a -+ {value: 0x0000, lo: 0x0e}, -+ {value: 0x39ac, lo: 0x80, hi: 0x80}, -+ {value: 0xa000, lo: 0x81, hi: 0x81}, -+ {value: 0x39a0, lo: 0x82, hi: 0x82}, -+ {value: 0xa000, lo: 0x92, hi: 0x92}, -+ {value: 0x39a6, lo: 0x93, hi: 0x93}, -+ {value: 0xa000, lo: 0x95, hi: 0x95}, -+ {value: 0x8133, lo: 0x96, hi: 0x9c}, -+ {value: 0x8133, lo: 0x9f, hi: 0xa2}, -+ {value: 0x812e, lo: 0xa3, hi: 0xa3}, -+ {value: 0x8133, lo: 0xa4, hi: 0xa4}, -+ {value: 0x8133, lo: 0xa7, hi: 0xa8}, -+ {value: 0x812e, lo: 0xaa, hi: 0xaa}, -+ {value: 0x8133, lo: 0xab, hi: 0xac}, -+ {value: 0x812e, lo: 0xad, hi: 0xad}, -+ // Block 0xa, offset 0x49 -+ {value: 0x0000, lo: 0x0c}, -+ {value: 0x8120, lo: 0x91, hi: 0x91}, -+ {value: 0x8133, lo: 0xb0, hi: 0xb0}, -+ {value: 0x812e, lo: 0xb1, hi: 0xb1}, -+ {value: 0x8133, lo: 0xb2, hi: 0xb3}, -+ {value: 0x812e, lo: 0xb4, hi: 0xb4}, -+ {value: 0x8133, lo: 0xb5, hi: 0xb6}, -+ {value: 0x812e, lo: 0xb7, hi: 0xb9}, -+ {value: 0x8133, lo: 0xba, hi: 0xba}, -+ {value: 0x812e, lo: 0xbb, hi: 0xbc}, -+ {value: 0x8133, lo: 0xbd, hi: 0xbd}, -+ {value: 0x812e, lo: 0xbe, hi: 0xbe}, -+ {value: 0x8133, lo: 0xbf, hi: 0xbf}, -+ // Block 0xb, offset 0x56 -+ {value: 0x0005, lo: 0x07}, -+ {value: 0x8133, lo: 0x80, hi: 0x80}, -+ {value: 0x8133, lo: 0x81, hi: 0x81}, -+ {value: 0x812e, lo: 0x82, hi: 0x83}, -+ {value: 0x812e, lo: 0x84, hi: 0x85}, -+ {value: 0x812e, lo: 0x86, hi: 0x87}, -+ {value: 0x812e, lo: 0x88, hi: 0x89}, -+ {value: 0x8133, lo: 0x8a, hi: 0x8a}, -+ // Block 0xc, offset 0x5e -+ {value: 0x0000, lo: 0x04}, -+ {value: 0x8133, lo: 0xab, hi: 0xb1}, -+ {value: 0x812e, lo: 0xb2, hi: 0xb2}, -+ {value: 0x8133, lo: 0xb3, hi: 0xb3}, -+ {value: 0x812e, lo: 0xbd, hi: 0xbd}, -+ // Block 0xd, offset 0x63 -+ {value: 0x0000, lo: 0x04}, -+ {value: 0x8133, lo: 0x96, hi: 0x99}, -+ {value: 0x8133, lo: 0x9b, hi: 0xa3}, -+ {value: 0x8133, lo: 0xa5, hi: 0xa7}, -+ {value: 0x8133, lo: 0xa9, hi: 0xad}, -+ // Block 0xe, offset 0x68 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x812e, lo: 0x99, hi: 0x9b}, -+ // Block 0xf, offset 0x6a -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x8133, lo: 0x98, hi: 0x98}, -+ {value: 0x812e, lo: 0x99, hi: 0x9b}, -+ {value: 0x8133, lo: 0x9c, hi: 0x9f}, -+ // Block 0x10, offset 0x6e -+ {value: 0x0000, lo: 0x07}, -+ {value: 0xa000, lo: 0xa8, hi: 0xa8}, -+ {value: 0x4019, lo: 0xa9, hi: 0xa9}, -+ {value: 0xa000, lo: 0xb0, hi: 0xb0}, -+ {value: 0x4021, lo: 0xb1, hi: 0xb1}, -+ {value: 0xa000, lo: 0xb3, hi: 0xb3}, -+ {value: 0x4029, lo: 0xb4, hi: 0xb4}, -+ {value: 0x9903, lo: 0xbc, hi: 0xbc}, -+ // Block 0x11, offset 0x76 -+ {value: 0x0008, lo: 0x06}, -+ {value: 0x8105, lo: 0x8d, hi: 0x8d}, -+ {value: 0x8133, lo: 0x91, hi: 0x91}, -+ {value: 0x812e, lo: 0x92, hi: 0x92}, -+ {value: 0x8133, lo: 0x93, hi: 0x93}, -+ {value: 0x8133, lo: 0x94, hi: 0x94}, -+ {value: 0x465d, lo: 0x98, hi: 0x9f}, -+ // Block 0x12, offset 0x7d -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8103, lo: 0xbc, hi: 0xbc}, -+ {value: 0x9900, lo: 0xbe, hi: 0xbe}, -+ // Block 0x13, offset 0x80 -+ {value: 0x0008, lo: 0x07}, -+ {value: 0xa000, lo: 0x87, hi: 0x87}, -+ {value: 0x2dd5, lo: 0x8b, hi: 0x8c}, -+ {value: 0x8105, lo: 0x8d, hi: 0x8d}, -+ {value: 0x9900, lo: 0x97, hi: 0x97}, -+ {value: 0x469d, lo: 0x9c, hi: 0x9d}, -+ {value: 0x46ad, lo: 0x9f, hi: 0x9f}, -+ {value: 0x8133, lo: 0xbe, hi: 0xbe}, -+ // Block 0x14, offset 0x88 -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x46d5, lo: 0xb3, hi: 0xb3}, -+ {value: 0x46dd, lo: 0xb6, hi: 0xb6}, -+ {value: 0x8103, lo: 0xbc, hi: 0xbc}, -+ // Block 0x15, offset 0x8c -+ {value: 0x0008, lo: 0x03}, -+ {value: 0x8105, lo: 0x8d, hi: 0x8d}, -+ {value: 0x46b5, lo: 0x99, hi: 0x9b}, -+ {value: 0x46cd, lo: 0x9e, hi: 0x9e}, -+ // Block 0x16, offset 0x90 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8103, lo: 0xbc, hi: 0xbc}, -+ // Block 0x17, offset 0x92 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8105, lo: 0x8d, hi: 0x8d}, -+ // Block 0x18, offset 0x94 -+ {value: 0x0000, lo: 0x08}, -+ {value: 0xa000, lo: 0x87, hi: 0x87}, -+ {value: 0x2ded, lo: 0x88, hi: 0x88}, -+ {value: 0x2de5, lo: 0x8b, hi: 0x8b}, -+ {value: 0x2df5, lo: 0x8c, hi: 0x8c}, -+ {value: 0x8105, lo: 0x8d, hi: 0x8d}, -+ {value: 0x9900, lo: 0x96, hi: 0x97}, -+ {value: 0x46e5, lo: 0x9c, hi: 0x9c}, -+ {value: 0x46ed, lo: 0x9d, hi: 0x9d}, -+ // Block 0x19, offset 0x9d -+ {value: 0x0000, lo: 0x03}, -+ {value: 0xa000, lo: 0x92, hi: 0x92}, -+ {value: 0x2dfd, lo: 0x94, hi: 0x94}, -+ {value: 0x9900, lo: 0xbe, hi: 0xbe}, -+ // Block 0x1a, offset 0xa1 -+ {value: 0x0000, lo: 0x06}, -+ {value: 0xa000, lo: 0x86, hi: 0x87}, -+ {value: 0x2e05, lo: 0x8a, hi: 0x8a}, -+ {value: 0x2e15, lo: 0x8b, hi: 0x8b}, -+ {value: 0x2e0d, lo: 0x8c, hi: 0x8c}, -+ {value: 0x8105, lo: 0x8d, hi: 0x8d}, -+ {value: 0x9900, lo: 0x97, hi: 0x97}, -+ // Block 0x1b, offset 0xa8 -+ {value: 0x1801, lo: 0x04}, -+ {value: 0xa000, lo: 0x86, hi: 0x86}, -+ {value: 0x4031, lo: 0x88, hi: 0x88}, -+ {value: 0x8105, lo: 0x8d, hi: 0x8d}, -+ {value: 0x8121, lo: 0x95, hi: 0x96}, -+ // Block 0x1c, offset 0xad -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8103, lo: 0xbc, hi: 0xbc}, -+ {value: 0xa000, lo: 0xbf, hi: 0xbf}, -+ // Block 0x1d, offset 0xb0 -+ {value: 0x0000, lo: 0x09}, -+ {value: 0x2e1d, lo: 0x80, hi: 0x80}, -+ {value: 0x9900, lo: 0x82, hi: 0x82}, -+ {value: 0xa000, lo: 0x86, hi: 0x86}, -+ {value: 0x2e25, lo: 0x87, hi: 0x87}, -+ {value: 0x2e2d, lo: 0x88, hi: 0x88}, -+ {value: 0x3091, lo: 0x8a, hi: 0x8a}, -+ {value: 0x2f19, lo: 0x8b, hi: 0x8b}, -+ {value: 0x8105, lo: 0x8d, hi: 0x8d}, -+ {value: 0x9900, lo: 0x95, hi: 0x96}, -+ // Block 0x1e, offset 0xba -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8105, lo: 0xbb, hi: 0xbc}, -+ {value: 0x9900, lo: 0xbe, hi: 0xbe}, -+ // Block 0x1f, offset 0xbd -+ {value: 0x0000, lo: 0x06}, -+ {value: 0xa000, lo: 0x86, hi: 0x87}, -+ {value: 0x2e35, lo: 0x8a, hi: 0x8a}, -+ {value: 0x2e45, lo: 0x8b, hi: 0x8b}, -+ {value: 0x2e3d, lo: 0x8c, hi: 0x8c}, -+ {value: 0x8105, lo: 0x8d, hi: 0x8d}, -+ {value: 0x9900, lo: 0x97, hi: 0x97}, -+ // Block 0x20, offset 0xc4 -+ {value: 0x6ab3, lo: 0x07}, -+ {value: 0x9905, lo: 0x8a, hi: 0x8a}, -+ {value: 0x9900, lo: 0x8f, hi: 0x8f}, -+ {value: 0xa000, lo: 0x99, hi: 0x99}, -+ {value: 0x4039, lo: 0x9a, hi: 0x9a}, -+ {value: 0x3099, lo: 0x9c, hi: 0x9c}, -+ {value: 0x2f24, lo: 0x9d, hi: 0x9d}, -+ {value: 0x2e4d, lo: 0x9e, hi: 0x9f}, -+ // Block 0x21, offset 0xcc -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8123, lo: 0xb8, hi: 0xb9}, -+ {value: 0x8105, lo: 0xba, hi: 0xba}, -+ // Block 0x22, offset 0xcf -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8124, lo: 0x88, hi: 0x8b}, -+ // Block 0x23, offset 0xd1 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8125, lo: 0xb8, hi: 0xb9}, -+ {value: 0x8105, lo: 0xba, hi: 0xba}, -+ // Block 0x24, offset 0xd4 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8126, lo: 0x88, hi: 0x8b}, -+ // Block 0x25, offset 0xd6 -+ {value: 0x0000, lo: 0x04}, -+ {value: 0x812e, lo: 0x98, hi: 0x99}, -+ {value: 0x812e, lo: 0xb5, hi: 0xb5}, -+ {value: 0x812e, lo: 0xb7, hi: 0xb7}, -+ {value: 0x812c, lo: 0xb9, hi: 0xb9}, -+ // Block 0x26, offset 0xdb -+ {value: 0x0000, lo: 0x10}, -+ {value: 0x2774, lo: 0x83, hi: 0x83}, -+ {value: 0x277b, lo: 0x8d, hi: 0x8d}, -+ {value: 0x2782, lo: 0x92, hi: 0x92}, -+ {value: 0x2789, lo: 0x97, hi: 0x97}, -+ {value: 0x2790, lo: 0x9c, hi: 0x9c}, -+ {value: 0x276d, lo: 0xa9, hi: 0xa9}, -+ {value: 0x8127, lo: 0xb1, hi: 0xb1}, -+ {value: 0x8128, lo: 0xb2, hi: 0xb2}, -+ {value: 0x4bc5, lo: 0xb3, hi: 0xb3}, -+ {value: 0x8129, lo: 0xb4, hi: 0xb4}, -+ {value: 0x4bce, lo: 0xb5, hi: 0xb5}, -+ {value: 0x46f5, lo: 0xb6, hi: 0xb6}, -+ {value: 0x8200, lo: 0xb7, hi: 0xb7}, -+ {value: 0x46fd, lo: 0xb8, hi: 0xb8}, -+ {value: 0x8200, lo: 0xb9, hi: 0xb9}, -+ {value: 0x8128, lo: 0xba, hi: 0xbd}, -+ // Block 0x27, offset 0xec -+ {value: 0x0000, lo: 0x0b}, -+ {value: 0x8128, lo: 0x80, hi: 0x80}, -+ {value: 0x4bd7, lo: 0x81, hi: 0x81}, -+ {value: 0x8133, lo: 0x82, hi: 0x83}, -+ {value: 0x8105, lo: 0x84, hi: 0x84}, -+ {value: 0x8133, lo: 0x86, hi: 0x87}, -+ {value: 0x279e, lo: 0x93, hi: 0x93}, -+ {value: 0x27a5, lo: 0x9d, hi: 0x9d}, -+ {value: 0x27ac, lo: 0xa2, hi: 0xa2}, -+ {value: 0x27b3, lo: 0xa7, hi: 0xa7}, -+ {value: 0x27ba, lo: 0xac, hi: 0xac}, -+ {value: 0x2797, lo: 0xb9, hi: 0xb9}, -+ // Block 0x28, offset 0xf8 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x812e, lo: 0x86, hi: 0x86}, -+ // Block 0x29, offset 0xfa -+ {value: 0x0000, lo: 0x05}, -+ {value: 0xa000, lo: 0xa5, hi: 0xa5}, -+ {value: 0x2e55, lo: 0xa6, hi: 0xa6}, -+ {value: 0x9900, lo: 0xae, hi: 0xae}, -+ {value: 0x8103, lo: 0xb7, hi: 0xb7}, -+ {value: 0x8105, lo: 0xb9, hi: 0xba}, -+ // Block 0x2a, offset 0x100 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x812e, lo: 0x8d, hi: 0x8d}, -+ // Block 0x2b, offset 0x102 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0xa000, lo: 0x80, hi: 0x92}, -+ // Block 0x2c, offset 0x104 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0xb900, lo: 0xa1, hi: 0xb5}, -+ // Block 0x2d, offset 0x106 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x9900, lo: 0xa8, hi: 0xbf}, -+ // Block 0x2e, offset 0x108 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x9900, lo: 0x80, hi: 0x82}, -+ // Block 0x2f, offset 0x10a -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8133, lo: 0x9d, hi: 0x9f}, -+ // Block 0x30, offset 0x10c -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8105, lo: 0x94, hi: 0x95}, -+ {value: 0x8105, lo: 0xb4, hi: 0xb4}, -+ // Block 0x31, offset 0x10f -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8105, lo: 0x92, hi: 0x92}, -+ {value: 0x8133, lo: 0x9d, hi: 0x9d}, -+ // Block 0x32, offset 0x112 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8132, lo: 0xa9, hi: 0xa9}, -+ // Block 0x33, offset 0x114 -+ {value: 0x0004, lo: 0x02}, -+ {value: 0x812f, lo: 0xb9, hi: 0xba}, -+ {value: 0x812e, lo: 0xbb, hi: 0xbb}, -+ // Block 0x34, offset 0x117 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8133, lo: 0x97, hi: 0x97}, -+ {value: 0x812e, lo: 0x98, hi: 0x98}, -+ // Block 0x35, offset 0x11a -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x8105, lo: 0xa0, hi: 0xa0}, -+ {value: 0x8133, lo: 0xb5, hi: 0xbc}, -+ {value: 0x812e, lo: 0xbf, hi: 0xbf}, -+ // Block 0x36, offset 0x11e -+ {value: 0x0000, lo: 0x05}, -+ {value: 0x8133, lo: 0xb0, hi: 0xb4}, -+ {value: 0x812e, lo: 0xb5, hi: 0xba}, -+ {value: 0x8133, lo: 0xbb, hi: 0xbc}, -+ {value: 0x812e, lo: 0xbd, hi: 0xbd}, -+ {value: 0x812e, lo: 0xbf, hi: 0xbf}, -+ // Block 0x37, offset 0x124 -+ {value: 0x0000, lo: 0x06}, -+ {value: 0x812e, lo: 0x80, hi: 0x80}, -+ {value: 0x8133, lo: 0x81, hi: 0x82}, -+ {value: 0x812e, lo: 0x83, hi: 0x84}, -+ {value: 0x8133, lo: 0x85, hi: 0x89}, -+ {value: 0x812e, lo: 0x8a, hi: 0x8a}, -+ {value: 0x8133, lo: 0x8b, hi: 0x8e}, -+ // Block 0x38, offset 0x12b -+ {value: 0x0000, lo: 0x08}, -+ {value: 0x2e9d, lo: 0x80, hi: 0x80}, -+ {value: 0x2ea5, lo: 0x81, hi: 0x81}, -+ {value: 0xa000, lo: 0x82, hi: 0x82}, -+ {value: 0x2ead, lo: 0x83, hi: 0x83}, -+ {value: 0x8105, lo: 0x84, hi: 0x84}, -+ {value: 0x8133, lo: 0xab, hi: 0xab}, -+ {value: 0x812e, lo: 0xac, hi: 0xac}, -+ {value: 0x8133, lo: 0xad, hi: 0xb3}, -+ // Block 0x39, offset 0x134 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8105, lo: 0xaa, hi: 0xab}, -+ // Block 0x3a, offset 0x136 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8103, lo: 0xa6, hi: 0xa6}, -+ {value: 0x8105, lo: 0xb2, hi: 0xb3}, -+ // Block 0x3b, offset 0x139 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8103, lo: 0xb7, hi: 0xb7}, -+ // Block 0x3c, offset 0x13b -+ {value: 0x0000, lo: 0x0a}, -+ {value: 0x8133, lo: 0x90, hi: 0x92}, -+ {value: 0x8101, lo: 0x94, hi: 0x94}, -+ {value: 0x812e, lo: 0x95, hi: 0x99}, -+ {value: 0x8133, lo: 0x9a, hi: 0x9b}, -+ {value: 0x812e, lo: 0x9c, hi: 0x9f}, -+ {value: 0x8133, lo: 0xa0, hi: 0xa0}, -+ {value: 0x8101, lo: 0xa2, hi: 0xa8}, -+ {value: 0x812e, lo: 0xad, hi: 0xad}, -+ {value: 0x8133, lo: 0xb4, hi: 0xb4}, -+ {value: 0x8133, lo: 0xb8, hi: 0xb9}, -+ // Block 0x3d, offset 0x146 -+ {value: 0x0004, lo: 0x03}, -+ {value: 0x052a, lo: 0x80, hi: 0x81}, -+ {value: 0x8100, lo: 0x97, hi: 0x97}, -+ {value: 0x8100, lo: 0xbe, hi: 0xbe}, -+ // Block 0x3e, offset 0x14a -+ {value: 0x0000, lo: 0x0d}, -+ {value: 0x8133, lo: 0x90, hi: 0x91}, -+ {value: 0x8101, lo: 0x92, hi: 0x93}, -+ {value: 0x8133, lo: 0x94, hi: 0x97}, -+ {value: 0x8101, lo: 0x98, hi: 0x9a}, -+ {value: 0x8133, lo: 0x9b, hi: 0x9c}, -+ {value: 0x8133, lo: 0xa1, hi: 0xa1}, -+ {value: 0x8101, lo: 0xa5, hi: 0xa6}, -+ {value: 0x8133, lo: 0xa7, hi: 0xa7}, -+ {value: 0x812e, lo: 0xa8, hi: 0xa8}, -+ {value: 0x8133, lo: 0xa9, hi: 0xa9}, -+ {value: 0x8101, lo: 0xaa, hi: 0xab}, -+ {value: 0x812e, lo: 0xac, hi: 0xaf}, -+ {value: 0x8133, lo: 0xb0, hi: 0xb0}, -+ // Block 0x3f, offset 0x158 -+ {value: 0x43bc, lo: 0x02}, -+ {value: 0x023c, lo: 0xa6, hi: 0xa6}, -+ {value: 0x0057, lo: 0xaa, hi: 0xab}, -+ // Block 0x40, offset 0x15b -+ {value: 0x0007, lo: 0x05}, -+ {value: 0xa000, lo: 0x90, hi: 0x90}, -+ {value: 0xa000, lo: 0x92, hi: 0x92}, -+ {value: 0xa000, lo: 0x94, hi: 0x94}, -+ {value: 0x3cfa, lo: 0x9a, hi: 0x9b}, -+ {value: 0x3d08, lo: 0xae, hi: 0xae}, -+ // Block 0x41, offset 0x161 -+ {value: 0x000e, lo: 0x05}, -+ {value: 0x3d0f, lo: 0x8d, hi: 0x8e}, -+ {value: 0x3d16, lo: 0x8f, hi: 0x8f}, -+ {value: 0xa000, lo: 0x90, hi: 0x90}, -+ {value: 0xa000, lo: 0x92, hi: 0x92}, -+ {value: 0xa000, lo: 0x94, hi: 0x94}, -+ // Block 0x42, offset 0x167 -+ {value: 0x62c7, lo: 0x0a}, -+ {value: 0xa000, lo: 0x83, hi: 0x83}, -+ {value: 0x3d24, lo: 0x84, hi: 0x84}, -+ {value: 0xa000, lo: 0x88, hi: 0x88}, -+ {value: 0x3d2b, lo: 0x89, hi: 0x89}, -+ {value: 0xa000, lo: 0x8b, hi: 0x8b}, -+ {value: 0x3d32, lo: 0x8c, hi: 0x8c}, -+ {value: 0xa000, lo: 0xa3, hi: 0xa3}, -+ {value: 0x3d39, lo: 0xa4, hi: 0xa5}, -+ {value: 0x3d40, lo: 0xa6, hi: 0xa6}, -+ {value: 0xa000, lo: 0xbc, hi: 0xbc}, -+ // Block 0x43, offset 0x172 -+ {value: 0x0007, lo: 0x03}, -+ {value: 0x3da9, lo: 0xa0, hi: 0xa1}, -+ {value: 0x3dd3, lo: 0xa2, hi: 0xa3}, -+ {value: 0x3dfd, lo: 0xaa, hi: 0xad}, -+ // Block 0x44, offset 0x176 -+ {value: 0x0004, lo: 0x01}, -+ {value: 0x0586, lo: 0xa9, hi: 0xaa}, -+ // Block 0x45, offset 0x178 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x461e, lo: 0x9c, hi: 0x9c}, -+ // Block 0x46, offset 0x17a -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8133, lo: 0xaf, hi: 0xb1}, -+ // Block 0x47, offset 0x17c -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8105, lo: 0xbf, hi: 0xbf}, -+ // Block 0x48, offset 0x17e -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8133, lo: 0xa0, hi: 0xbf}, -+ // Block 0x49, offset 0x180 -+ {value: 0x0000, lo: 0x05}, -+ {value: 0x812d, lo: 0xaa, hi: 0xaa}, -+ {value: 0x8132, lo: 0xab, hi: 0xab}, -+ {value: 0x8134, lo: 0xac, hi: 0xac}, -+ {value: 0x812f, lo: 0xad, hi: 0xad}, -+ {value: 0x8130, lo: 0xae, hi: 0xaf}, -+ // Block 0x4a, offset 0x186 -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x4be0, lo: 0xb3, hi: 0xb3}, -+ {value: 0x4be0, lo: 0xb5, hi: 0xb6}, -+ {value: 0x4be0, lo: 0xba, hi: 0xbf}, -+ // Block 0x4b, offset 0x18a -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x4be0, lo: 0x8f, hi: 0xa3}, -+ // Block 0x4c, offset 0x18c -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8100, lo: 0xae, hi: 0xbe}, -+ // Block 0x4d, offset 0x18e -+ {value: 0x0000, lo: 0x07}, -+ {value: 0x8100, lo: 0x84, hi: 0x84}, -+ {value: 0x8100, lo: 0x87, hi: 0x87}, -+ {value: 0x8100, lo: 0x90, hi: 0x90}, -+ {value: 0x8100, lo: 0x9e, hi: 0x9e}, -+ {value: 0x8100, lo: 0xa1, hi: 0xa1}, -+ {value: 0x8100, lo: 0xb2, hi: 0xb2}, -+ {value: 0x8100, lo: 0xbb, hi: 0xbb}, -+ // Block 0x4e, offset 0x196 -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x8100, lo: 0x80, hi: 0x80}, -+ {value: 0x8100, lo: 0x8b, hi: 0x8b}, -+ {value: 0x8100, lo: 0x8e, hi: 0x8e}, -+ // Block 0x4f, offset 0x19a -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8133, lo: 0xaf, hi: 0xaf}, -+ {value: 0x8133, lo: 0xb4, hi: 0xbd}, -+ // Block 0x50, offset 0x19d -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8133, lo: 0x9e, hi: 0x9f}, -+ // Block 0x51, offset 0x19f -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8133, lo: 0xb0, hi: 0xb1}, -+ // Block 0x52, offset 0x1a1 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8105, lo: 0x86, hi: 0x86}, -+ {value: 0x8105, lo: 0xac, hi: 0xac}, -+ // Block 0x53, offset 0x1a4 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8105, lo: 0x84, hi: 0x84}, -+ {value: 0x8133, lo: 0xa0, hi: 0xb1}, -+ // Block 0x54, offset 0x1a7 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x812e, lo: 0xab, hi: 0xad}, -+ // Block 0x55, offset 0x1a9 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8105, lo: 0x93, hi: 0x93}, -+ // Block 0x56, offset 0x1ab -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8103, lo: 0xb3, hi: 0xb3}, -+ // Block 0x57, offset 0x1ad -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8105, lo: 0x80, hi: 0x80}, -+ // Block 0x58, offset 0x1af -+ {value: 0x0000, lo: 0x05}, -+ {value: 0x8133, lo: 0xb0, hi: 0xb0}, -+ {value: 0x8133, lo: 0xb2, hi: 0xb3}, -+ {value: 0x812e, lo: 0xb4, hi: 0xb4}, -+ {value: 0x8133, lo: 0xb7, hi: 0xb8}, -+ {value: 0x8133, lo: 0xbe, hi: 0xbf}, -+ // Block 0x59, offset 0x1b5 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8133, lo: 0x81, hi: 0x81}, -+ {value: 0x8105, lo: 0xb6, hi: 0xb6}, -+ // Block 0x5a, offset 0x1b8 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8105, lo: 0xad, hi: 0xad}, -+ // Block 0x5b, offset 0x1ba -+ {value: 0x0000, lo: 0x06}, -+ {value: 0xe500, lo: 0x80, hi: 0x80}, -+ {value: 0xc600, lo: 0x81, hi: 0x9b}, -+ {value: 0xe500, lo: 0x9c, hi: 0x9c}, -+ {value: 0xc600, lo: 0x9d, hi: 0xb7}, -+ {value: 0xe500, lo: 0xb8, hi: 0xb8}, -+ {value: 0xc600, lo: 0xb9, hi: 0xbf}, -+ // Block 0x5c, offset 0x1c1 -+ {value: 0x0000, lo: 0x05}, -+ {value: 0xc600, lo: 0x80, hi: 0x93}, -+ {value: 0xe500, lo: 0x94, hi: 0x94}, -+ {value: 0xc600, lo: 0x95, hi: 0xaf}, -+ {value: 0xe500, lo: 0xb0, hi: 0xb0}, -+ {value: 0xc600, lo: 0xb1, hi: 0xbf}, -+ // Block 0x5d, offset 0x1c7 -+ {value: 0x0000, lo: 0x05}, -+ {value: 0xc600, lo: 0x80, hi: 0x8b}, -+ {value: 0xe500, lo: 0x8c, hi: 0x8c}, -+ {value: 0xc600, lo: 0x8d, hi: 0xa7}, -+ {value: 0xe500, lo: 0xa8, hi: 0xa8}, -+ {value: 0xc600, lo: 0xa9, hi: 0xbf}, -+ // Block 0x5e, offset 0x1cd -+ {value: 0x0000, lo: 0x07}, -+ {value: 0xc600, lo: 0x80, hi: 0x83}, -+ {value: 0xe500, lo: 0x84, hi: 0x84}, -+ {value: 0xc600, lo: 0x85, hi: 0x9f}, -+ {value: 0xe500, lo: 0xa0, hi: 0xa0}, -+ {value: 0xc600, lo: 0xa1, hi: 0xbb}, -+ {value: 0xe500, lo: 0xbc, hi: 0xbc}, -+ {value: 0xc600, lo: 0xbd, hi: 0xbf}, -+ // Block 0x5f, offset 0x1d5 -+ {value: 0x0000, lo: 0x05}, -+ {value: 0xc600, lo: 0x80, hi: 0x97}, -+ {value: 0xe500, lo: 0x98, hi: 0x98}, -+ {value: 0xc600, lo: 0x99, hi: 0xb3}, -+ {value: 0xe500, lo: 0xb4, hi: 0xb4}, -+ {value: 0xc600, lo: 0xb5, hi: 0xbf}, -+ // Block 0x60, offset 0x1db -+ {value: 0x0000, lo: 0x05}, -+ {value: 0xc600, lo: 0x80, hi: 0x8f}, -+ {value: 0xe500, lo: 0x90, hi: 0x90}, -+ {value: 0xc600, lo: 0x91, hi: 0xab}, -+ {value: 0xe500, lo: 0xac, hi: 0xac}, -+ {value: 0xc600, lo: 0xad, hi: 0xbf}, -+ // Block 0x61, offset 0x1e1 -+ {value: 0x0000, lo: 0x05}, -+ {value: 0xc600, lo: 0x80, hi: 0x87}, -+ {value: 0xe500, lo: 0x88, hi: 0x88}, -+ {value: 0xc600, lo: 0x89, hi: 0xa3}, -+ {value: 0xe500, lo: 0xa4, hi: 0xa4}, -+ {value: 0xc600, lo: 0xa5, hi: 0xbf}, -+ // Block 0x62, offset 0x1e7 -+ {value: 0x0000, lo: 0x03}, -+ {value: 0xc600, lo: 0x80, hi: 0x87}, -+ {value: 0xe500, lo: 0x88, hi: 0x88}, -+ {value: 0xc600, lo: 0x89, hi: 0xa3}, -+ // Block 0x63, offset 0x1eb -+ {value: 0x0006, lo: 0x0d}, -+ {value: 0x44d1, lo: 0x9d, hi: 0x9d}, -+ {value: 0x8116, lo: 0x9e, hi: 0x9e}, -+ {value: 0x4543, lo: 0x9f, hi: 0x9f}, -+ {value: 0x4531, lo: 0xaa, hi: 0xab}, -+ {value: 0x4635, lo: 0xac, hi: 0xac}, -+ {value: 0x463d, lo: 0xad, hi: 0xad}, -+ {value: 0x4489, lo: 0xae, hi: 0xb1}, -+ {value: 0x44a7, lo: 0xb2, hi: 0xb4}, -+ {value: 0x44bf, lo: 0xb5, hi: 0xb6}, -+ {value: 0x44cb, lo: 0xb8, hi: 0xb8}, -+ {value: 0x44d7, lo: 0xb9, hi: 0xbb}, -+ {value: 0x44ef, lo: 0xbc, hi: 0xbc}, -+ {value: 0x44f5, lo: 0xbe, hi: 0xbe}, -+ // Block 0x64, offset 0x1f9 -+ {value: 0x0006, lo: 0x08}, -+ {value: 0x44fb, lo: 0x80, hi: 0x81}, -+ {value: 0x4507, lo: 0x83, hi: 0x84}, -+ {value: 0x4519, lo: 0x86, hi: 0x89}, -+ {value: 0x453d, lo: 0x8a, hi: 0x8a}, -+ {value: 0x44b9, lo: 0x8b, hi: 0x8b}, -+ {value: 0x44a1, lo: 0x8c, hi: 0x8c}, -+ {value: 0x44e9, lo: 0x8d, hi: 0x8d}, -+ {value: 0x4513, lo: 0x8e, hi: 0x8e}, -+ // Block 0x65, offset 0x202 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8100, lo: 0xa4, hi: 0xa5}, -+ {value: 0x8100, lo: 0xb0, hi: 0xb1}, -+ // Block 0x66, offset 0x205 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8100, lo: 0x9b, hi: 0x9d}, -+ {value: 0x8200, lo: 0x9e, hi: 0xa3}, -+ // Block 0x67, offset 0x208 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8100, lo: 0x90, hi: 0x90}, -+ // Block 0x68, offset 0x20a -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8100, lo: 0x99, hi: 0x99}, -+ {value: 0x8200, lo: 0xb2, hi: 0xb4}, -+ // Block 0x69, offset 0x20d -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8100, lo: 0xbc, hi: 0xbd}, -+ // Block 0x6a, offset 0x20f -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x8133, lo: 0xa0, hi: 0xa6}, -+ {value: 0x812e, lo: 0xa7, hi: 0xad}, -+ {value: 0x8133, lo: 0xae, hi: 0xaf}, -+ // Block 0x6b, offset 0x213 -+ {value: 0x0000, lo: 0x04}, -+ {value: 0x8100, lo: 0x89, hi: 0x8c}, -+ {value: 0x8100, lo: 0xb0, hi: 0xb2}, -+ {value: 0x8100, lo: 0xb4, hi: 0xb4}, -+ {value: 0x8100, lo: 0xb6, hi: 0xbf}, -+ // Block 0x6c, offset 0x218 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8100, lo: 0x81, hi: 0x8c}, -+ // Block 0x6d, offset 0x21a -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8100, lo: 0xb5, hi: 0xba}, -+ // Block 0x6e, offset 0x21c -+ {value: 0x0000, lo: 0x04}, -+ {value: 0x4be0, lo: 0x9e, hi: 0x9f}, -+ {value: 0x4be0, lo: 0xa3, hi: 0xa3}, -+ {value: 0x4be0, lo: 0xa5, hi: 0xa6}, -+ {value: 0x4be0, lo: 0xaa, hi: 0xaf}, -+ // Block 0x6f, offset 0x221 -+ {value: 0x0000, lo: 0x05}, -+ {value: 0x4be0, lo: 0x82, hi: 0x87}, -+ {value: 0x4be0, lo: 0x8a, hi: 0x8f}, -+ {value: 0x4be0, lo: 0x92, hi: 0x97}, -+ {value: 0x4be0, lo: 0x9a, hi: 0x9c}, -+ {value: 0x8100, lo: 0xa3, hi: 0xa3}, -+ // Block 0x70, offset 0x227 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x812e, lo: 0xbd, hi: 0xbd}, -+ // Block 0x71, offset 0x229 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x812e, lo: 0xa0, hi: 0xa0}, -+ // Block 0x72, offset 0x22b -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8133, lo: 0xb6, hi: 0xba}, -+ // Block 0x73, offset 0x22d -+ {value: 0x002d, lo: 0x05}, -+ {value: 0x812e, lo: 0x8d, hi: 0x8d}, -+ {value: 0x8133, lo: 0x8f, hi: 0x8f}, -+ {value: 0x8133, lo: 0xb8, hi: 0xb8}, -+ {value: 0x8101, lo: 0xb9, hi: 0xba}, -+ {value: 0x8105, lo: 0xbf, hi: 0xbf}, -+ // Block 0x74, offset 0x233 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8133, lo: 0xa5, hi: 0xa5}, -+ {value: 0x812e, lo: 0xa6, hi: 0xa6}, -+ // Block 0x75, offset 0x236 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8133, lo: 0xa4, hi: 0xa7}, -+ // Block 0x76, offset 0x238 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8133, lo: 0xab, hi: 0xac}, -+ // Block 0x77, offset 0x23a -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x812e, lo: 0xbd, hi: 0xbf}, -+ // Block 0x78, offset 0x23c -+ {value: 0x0000, lo: 0x05}, -+ {value: 0x812e, lo: 0x86, hi: 0x87}, -+ {value: 0x8133, lo: 0x88, hi: 0x8a}, -+ {value: 0x812e, lo: 0x8b, hi: 0x8b}, -+ {value: 0x8133, lo: 0x8c, hi: 0x8c}, -+ {value: 0x812e, lo: 0x8d, hi: 0x90}, -+ // Block 0x79, offset 0x242 -+ {value: 0x0005, lo: 0x03}, -+ {value: 0x8133, lo: 0x82, hi: 0x82}, -+ {value: 0x812e, lo: 0x83, hi: 0x84}, -+ {value: 0x812e, lo: 0x85, hi: 0x85}, -+ // Block 0x7a, offset 0x246 -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x8105, lo: 0x86, hi: 0x86}, -+ {value: 0x8105, lo: 0xb0, hi: 0xb0}, -+ {value: 0x8105, lo: 0xbf, hi: 0xbf}, -+ // Block 0x7b, offset 0x24a -+ {value: 0x17fe, lo: 0x07}, -+ {value: 0xa000, lo: 0x99, hi: 0x99}, -+ {value: 0x4379, lo: 0x9a, hi: 0x9a}, -+ {value: 0xa000, lo: 0x9b, hi: 0x9b}, -+ {value: 0x4383, lo: 0x9c, hi: 0x9c}, -+ {value: 0xa000, lo: 0xa5, hi: 0xa5}, -+ {value: 0x438d, lo: 0xab, hi: 0xab}, -+ {value: 0x8105, lo: 0xb9, hi: 0xba}, -+ // Block 0x7c, offset 0x252 -+ {value: 0x0000, lo: 0x06}, -+ {value: 0x8133, lo: 0x80, hi: 0x82}, -+ {value: 0x9900, lo: 0xa7, hi: 0xa7}, -+ {value: 0x2eb5, lo: 0xae, hi: 0xae}, -+ {value: 0x2ebf, lo: 0xaf, hi: 0xaf}, -+ {value: 0xa000, lo: 0xb1, hi: 0xb2}, -+ {value: 0x8105, lo: 0xb3, hi: 0xb4}, -+ // Block 0x7d, offset 0x259 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8105, lo: 0x80, hi: 0x80}, -+ {value: 0x8103, lo: 0x8a, hi: 0x8a}, -+ // Block 0x7e, offset 0x25c -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8105, lo: 0xb5, hi: 0xb5}, -+ {value: 0x8103, lo: 0xb6, hi: 0xb6}, -+ // Block 0x7f, offset 0x25f -+ {value: 0x0002, lo: 0x01}, -+ {value: 0x8103, lo: 0xa9, hi: 0xaa}, -+ // Block 0x80, offset 0x261 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8103, lo: 0xbb, hi: 0xbc}, -+ {value: 0x9900, lo: 0xbe, hi: 0xbe}, -+ // Block 0x81, offset 0x264 -+ {value: 0x0000, lo: 0x07}, -+ {value: 0xa000, lo: 0x87, hi: 0x87}, -+ {value: 0x2ec9, lo: 0x8b, hi: 0x8b}, -+ {value: 0x2ed3, lo: 0x8c, hi: 0x8c}, -+ {value: 0x8105, lo: 0x8d, hi: 0x8d}, -+ {value: 0x9900, lo: 0x97, hi: 0x97}, -+ {value: 0x8133, lo: 0xa6, hi: 0xac}, -+ {value: 0x8133, lo: 0xb0, hi: 0xb4}, -+ // Block 0x82, offset 0x26c -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x8105, lo: 0x82, hi: 0x82}, -+ {value: 0x8103, lo: 0x86, hi: 0x86}, -+ {value: 0x8133, lo: 0x9e, hi: 0x9e}, -+ // Block 0x83, offset 0x270 -+ {value: 0x6a23, lo: 0x06}, -+ {value: 0x9900, lo: 0xb0, hi: 0xb0}, -+ {value: 0xa000, lo: 0xb9, hi: 0xb9}, -+ {value: 0x9900, lo: 0xba, hi: 0xba}, -+ {value: 0x2ee7, lo: 0xbb, hi: 0xbb}, -+ {value: 0x2edd, lo: 0xbc, hi: 0xbd}, -+ {value: 0x2ef1, lo: 0xbe, hi: 0xbe}, -+ // Block 0x84, offset 0x277 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8105, lo: 0x82, hi: 0x82}, -+ {value: 0x8103, lo: 0x83, hi: 0x83}, -+ // Block 0x85, offset 0x27a -+ {value: 0x0000, lo: 0x05}, -+ {value: 0x9900, lo: 0xaf, hi: 0xaf}, -+ {value: 0xa000, lo: 0xb8, hi: 0xb9}, -+ {value: 0x2efb, lo: 0xba, hi: 0xba}, -+ {value: 0x2f05, lo: 0xbb, hi: 0xbb}, -+ {value: 0x8105, lo: 0xbf, hi: 0xbf}, -+ // Block 0x86, offset 0x280 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8103, lo: 0x80, hi: 0x80}, -+ // Block 0x87, offset 0x282 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8105, lo: 0xb6, hi: 0xb6}, -+ {value: 0x8103, lo: 0xb7, hi: 0xb7}, -+ // Block 0x88, offset 0x285 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8105, lo: 0xab, hi: 0xab}, -+ // Block 0x89, offset 0x287 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8105, lo: 0xb9, hi: 0xb9}, -+ {value: 0x8103, lo: 0xba, hi: 0xba}, -+ // Block 0x8a, offset 0x28a -+ {value: 0x0000, lo: 0x04}, -+ {value: 0x9900, lo: 0xb0, hi: 0xb0}, -+ {value: 0xa000, lo: 0xb5, hi: 0xb5}, -+ {value: 0x2f0f, lo: 0xb8, hi: 0xb8}, -+ {value: 0x8105, lo: 0xbd, hi: 0xbe}, -+ // Block 0x8b, offset 0x28f -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8103, lo: 0x83, hi: 0x83}, -+ // Block 0x8c, offset 0x291 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8105, lo: 0xa0, hi: 0xa0}, -+ // Block 0x8d, offset 0x293 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8105, lo: 0xb4, hi: 0xb4}, -+ // Block 0x8e, offset 0x295 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8105, lo: 0x87, hi: 0x87}, -+ // Block 0x8f, offset 0x297 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8105, lo: 0x99, hi: 0x99}, -+ // Block 0x90, offset 0x299 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8103, lo: 0x82, hi: 0x82}, -+ {value: 0x8105, lo: 0x84, hi: 0x85}, -+ // Block 0x91, offset 0x29c -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8105, lo: 0x97, hi: 0x97}, -+ // Block 0x92, offset 0x29e -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8105, lo: 0x81, hi: 0x82}, -+ // Block 0x93, offset 0x2a0 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8101, lo: 0xb0, hi: 0xb4}, -+ // Block 0x94, offset 0x2a2 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8133, lo: 0xb0, hi: 0xb6}, -+ // Block 0x95, offset 0x2a4 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8102, lo: 0xb0, hi: 0xb1}, -+ // Block 0x96, offset 0x2a6 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8101, lo: 0x9e, hi: 0x9e}, -+ // Block 0x97, offset 0x2a8 -+ {value: 0x0000, lo: 0x0c}, -+ {value: 0x470d, lo: 0x9e, hi: 0x9e}, -+ {value: 0x4717, lo: 0x9f, hi: 0x9f}, -+ {value: 0x474b, lo: 0xa0, hi: 0xa0}, -+ {value: 0x4759, lo: 0xa1, hi: 0xa1}, -+ {value: 0x4767, lo: 0xa2, hi: 0xa2}, -+ {value: 0x4775, lo: 0xa3, hi: 0xa3}, -+ {value: 0x4783, lo: 0xa4, hi: 0xa4}, -+ {value: 0x812c, lo: 0xa5, hi: 0xa6}, -+ {value: 0x8101, lo: 0xa7, hi: 0xa9}, -+ {value: 0x8131, lo: 0xad, hi: 0xad}, -+ {value: 0x812c, lo: 0xae, hi: 0xb2}, -+ {value: 0x812e, lo: 0xbb, hi: 0xbf}, -+ // Block 0x98, offset 0x2b5 -+ {value: 0x0000, lo: 0x09}, -+ {value: 0x812e, lo: 0x80, hi: 0x82}, -+ {value: 0x8133, lo: 0x85, hi: 0x89}, -+ {value: 0x812e, lo: 0x8a, hi: 0x8b}, -+ {value: 0x8133, lo: 0xaa, hi: 0xad}, -+ {value: 0x4721, lo: 0xbb, hi: 0xbb}, -+ {value: 0x472b, lo: 0xbc, hi: 0xbc}, -+ {value: 0x4791, lo: 0xbd, hi: 0xbd}, -+ {value: 0x47ad, lo: 0xbe, hi: 0xbe}, -+ {value: 0x479f, lo: 0xbf, hi: 0xbf}, -+ // Block 0x99, offset 0x2bf -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x47bb, lo: 0x80, hi: 0x80}, -+ // Block 0x9a, offset 0x2c1 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8133, lo: 0x82, hi: 0x84}, -+ // Block 0x9b, offset 0x2c3 -+ {value: 0x0000, lo: 0x05}, -+ {value: 0x8133, lo: 0x80, hi: 0x86}, -+ {value: 0x8133, lo: 0x88, hi: 0x98}, -+ {value: 0x8133, lo: 0x9b, hi: 0xa1}, -+ {value: 0x8133, lo: 0xa3, hi: 0xa4}, -+ {value: 0x8133, lo: 0xa6, hi: 0xaa}, -+ // Block 0x9c, offset 0x2c9 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8133, lo: 0x8f, hi: 0x8f}, -+ // Block 0x9d, offset 0x2cb -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8133, lo: 0xae, hi: 0xae}, -+ // Block 0x9e, offset 0x2cd -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8133, lo: 0xac, hi: 0xaf}, -+ // Block 0x9f, offset 0x2cf -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x8134, lo: 0xac, hi: 0xad}, -+ {value: 0x812e, lo: 0xae, hi: 0xae}, -+ {value: 0x8133, lo: 0xaf, hi: 0xaf}, -+ // Block 0xa0, offset 0x2d3 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x812e, lo: 0x90, hi: 0x96}, -+ // Block 0xa1, offset 0x2d5 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8133, lo: 0x84, hi: 0x89}, -+ {value: 0x8103, lo: 0x8a, hi: 0x8a}, -+ // Block 0xa2, offset 0x2d8 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8100, lo: 0x93, hi: 0x93}, -+} -+ -+// 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 *nfkcTrie) lookup(s []byte) (v uint16, sz int) { -+ c0 := s[0] -+ switch { -+ case c0 < 0x80: // is ASCII -+ return nfkcValues[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 := nfkcIndex[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 := nfkcIndex[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 = nfkcIndex[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 := nfkcIndex[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 = nfkcIndex[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 = nfkcIndex[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 *nfkcTrie) lookupUnsafe(s []byte) uint16 { -+ c0 := s[0] -+ if c0 < 0x80 { // is ASCII -+ return nfkcValues[c0] -+ } -+ i := nfkcIndex[c0] -+ if c0 < 0xE0 { // 2-byte UTF-8 -+ return t.lookupValue(uint32(i), s[1]) -+ } -+ i = nfkcIndex[uint32(i)<<6+uint32(s[1])] -+ if c0 < 0xF0 { // 3-byte UTF-8 -+ return t.lookupValue(uint32(i), s[2]) -+ } -+ i = nfkcIndex[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 *nfkcTrie) lookupString(s string) (v uint16, sz int) { -+ c0 := s[0] -+ switch { -+ case c0 < 0x80: // is ASCII -+ return nfkcValues[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 := nfkcIndex[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 := nfkcIndex[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 = nfkcIndex[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 := nfkcIndex[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 = nfkcIndex[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 = nfkcIndex[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 *nfkcTrie) lookupStringUnsafe(s string) uint16 { -+ c0 := s[0] -+ if c0 < 0x80 { // is ASCII -+ return nfkcValues[c0] -+ } -+ i := nfkcIndex[c0] -+ if c0 < 0xE0 { // 2-byte UTF-8 -+ return t.lookupValue(uint32(i), s[1]) -+ } -+ i = nfkcIndex[uint32(i)<<6+uint32(s[1])] -+ if c0 < 0xF0 { // 3-byte UTF-8 -+ return t.lookupValue(uint32(i), s[2]) -+ } -+ i = nfkcIndex[uint32(i)<<6+uint32(s[2])] -+ if c0 < 0xF8 { // 4-byte UTF-8 -+ return t.lookupValue(uint32(i), s[3]) -+ } -+ return 0 -+} -+ -+// nfkcTrie. Total size: 19260 bytes (18.81 KiB). Checksum: 1a0bbc4c8c24da49. -+type nfkcTrie struct{} -+ -+func newNfkcTrie(i int) *nfkcTrie { -+ return &nfkcTrie{} -+} -+ -+// lookupValue determines the type of block n and looks up the value for b. -+func (t *nfkcTrie) lookupValue(n uint32, b byte) uint16 { -+ switch { -+ case n < 95: -+ return uint16(nfkcValues[n<<6+uint32(b)]) -+ default: -+ n -= 95 -+ return uint16(nfkcSparse.lookup(n, b)) -+ } -+} -+ -+// nfkcValues: 97 blocks, 6208 entries, 12416 bytes -+// The third block is the zero block. -+var nfkcValues = [6208]uint16{ -+ // Block 0x0, offset 0x0 -+ 0x3c: 0xa000, 0x3d: 0xa000, 0x3e: 0xa000, -+ // Block 0x1, offset 0x40 -+ 0x41: 0xa000, 0x42: 0xa000, 0x43: 0xa000, 0x44: 0xa000, 0x45: 0xa000, -+ 0x46: 0xa000, 0x47: 0xa000, 0x48: 0xa000, 0x49: 0xa000, 0x4a: 0xa000, 0x4b: 0xa000, -+ 0x4c: 0xa000, 0x4d: 0xa000, 0x4e: 0xa000, 0x4f: 0xa000, 0x50: 0xa000, -+ 0x52: 0xa000, 0x53: 0xa000, 0x54: 0xa000, 0x55: 0xa000, 0x56: 0xa000, 0x57: 0xa000, -+ 0x58: 0xa000, 0x59: 0xa000, 0x5a: 0xa000, -+ 0x61: 0xa000, 0x62: 0xa000, 0x63: 0xa000, -+ 0x64: 0xa000, 0x65: 0xa000, 0x66: 0xa000, 0x67: 0xa000, 0x68: 0xa000, 0x69: 0xa000, -+ 0x6a: 0xa000, 0x6b: 0xa000, 0x6c: 0xa000, 0x6d: 0xa000, 0x6e: 0xa000, 0x6f: 0xa000, -+ 0x70: 0xa000, 0x72: 0xa000, 0x73: 0xa000, 0x74: 0xa000, 0x75: 0xa000, -+ 0x76: 0xa000, 0x77: 0xa000, 0x78: 0xa000, 0x79: 0xa000, 0x7a: 0xa000, -+ // Block 0x2, offset 0x80 -+ // Block 0x3, offset 0xc0 -+ 0xc0: 0x30b0, 0xc1: 0x30b5, 0xc2: 0x47c9, 0xc3: 0x30ba, 0xc4: 0x47d8, 0xc5: 0x47dd, -+ 0xc6: 0xa000, 0xc7: 0x47e7, 0xc8: 0x3123, 0xc9: 0x3128, 0xca: 0x47ec, 0xcb: 0x313c, -+ 0xcc: 0x31af, 0xcd: 0x31b4, 0xce: 0x31b9, 0xcf: 0x4800, 0xd1: 0x3245, -+ 0xd2: 0x3268, 0xd3: 0x326d, 0xd4: 0x480a, 0xd5: 0x480f, 0xd6: 0x481e, -+ 0xd8: 0xa000, 0xd9: 0x32f4, 0xda: 0x32f9, 0xdb: 0x32fe, 0xdc: 0x4850, 0xdd: 0x3376, -+ 0xe0: 0x33bc, 0xe1: 0x33c1, 0xe2: 0x485a, 0xe3: 0x33c6, -+ 0xe4: 0x4869, 0xe5: 0x486e, 0xe6: 0xa000, 0xe7: 0x4878, 0xe8: 0x342f, 0xe9: 0x3434, -+ 0xea: 0x487d, 0xeb: 0x3448, 0xec: 0x34c0, 0xed: 0x34c5, 0xee: 0x34ca, 0xef: 0x4891, -+ 0xf1: 0x3556, 0xf2: 0x3579, 0xf3: 0x357e, 0xf4: 0x489b, 0xf5: 0x48a0, -+ 0xf6: 0x48af, 0xf8: 0xa000, 0xf9: 0x360a, 0xfa: 0x360f, 0xfb: 0x3614, -+ 0xfc: 0x48e1, 0xfd: 0x3691, 0xff: 0x36aa, -+ // Block 0x4, offset 0x100 -+ 0x100: 0x30bf, 0x101: 0x33cb, 0x102: 0x47ce, 0x103: 0x485f, 0x104: 0x30dd, 0x105: 0x33e9, -+ 0x106: 0x30f1, 0x107: 0x33fd, 0x108: 0x30f6, 0x109: 0x3402, 0x10a: 0x30fb, 0x10b: 0x3407, -+ 0x10c: 0x3100, 0x10d: 0x340c, 0x10e: 0x310a, 0x10f: 0x3416, -+ 0x112: 0x47f1, 0x113: 0x4882, 0x114: 0x3132, 0x115: 0x343e, 0x116: 0x3137, 0x117: 0x3443, -+ 0x118: 0x3155, 0x119: 0x3461, 0x11a: 0x3146, 0x11b: 0x3452, 0x11c: 0x316e, 0x11d: 0x347a, -+ 0x11e: 0x3178, 0x11f: 0x3484, 0x120: 0x317d, 0x121: 0x3489, 0x122: 0x3187, 0x123: 0x3493, -+ 0x124: 0x318c, 0x125: 0x3498, 0x128: 0x31be, 0x129: 0x34cf, -+ 0x12a: 0x31c3, 0x12b: 0x34d4, 0x12c: 0x31c8, 0x12d: 0x34d9, 0x12e: 0x31eb, 0x12f: 0x34f7, -+ 0x130: 0x31cd, 0x132: 0x1a8a, 0x133: 0x1b17, 0x134: 0x31f5, 0x135: 0x3501, -+ 0x136: 0x3209, 0x137: 0x351a, 0x139: 0x3213, 0x13a: 0x3524, 0x13b: 0x321d, -+ 0x13c: 0x352e, 0x13d: 0x3218, 0x13e: 0x3529, 0x13f: 0x1cdc, -+ // Block 0x5, offset 0x140 -+ 0x140: 0x1d64, 0x143: 0x3240, 0x144: 0x3551, 0x145: 0x3259, -+ 0x146: 0x356a, 0x147: 0x324f, 0x148: 0x3560, 0x149: 0x1d8c, -+ 0x14c: 0x4814, 0x14d: 0x48a5, 0x14e: 0x3272, 0x14f: 0x3583, 0x150: 0x327c, 0x151: 0x358d, -+ 0x154: 0x329a, 0x155: 0x35ab, 0x156: 0x32b3, 0x157: 0x35c4, -+ 0x158: 0x32a4, 0x159: 0x35b5, 0x15a: 0x4837, 0x15b: 0x48c8, 0x15c: 0x32bd, 0x15d: 0x35ce, -+ 0x15e: 0x32cc, 0x15f: 0x35dd, 0x160: 0x483c, 0x161: 0x48cd, 0x162: 0x32e5, 0x163: 0x35fb, -+ 0x164: 0x32d6, 0x165: 0x35ec, 0x168: 0x4846, 0x169: 0x48d7, -+ 0x16a: 0x484b, 0x16b: 0x48dc, 0x16c: 0x3303, 0x16d: 0x3619, 0x16e: 0x330d, 0x16f: 0x3623, -+ 0x170: 0x3312, 0x171: 0x3628, 0x172: 0x3330, 0x173: 0x3646, 0x174: 0x3353, 0x175: 0x3669, -+ 0x176: 0x337b, 0x177: 0x3696, 0x178: 0x338f, 0x179: 0x339e, 0x17a: 0x36be, 0x17b: 0x33a8, -+ 0x17c: 0x36c8, 0x17d: 0x33ad, 0x17e: 0x36cd, 0x17f: 0x00a7, -+ // Block 0x6, offset 0x180 -+ 0x184: 0x2f2f, 0x185: 0x2f35, -+ 0x186: 0x2f3b, 0x187: 0x1a9f, 0x188: 0x1aa2, 0x189: 0x1b38, 0x18a: 0x1ab7, 0x18b: 0x1aba, -+ 0x18c: 0x1b6e, 0x18d: 0x30c9, 0x18e: 0x33d5, 0x18f: 0x31d7, 0x190: 0x34e3, 0x191: 0x3281, -+ 0x192: 0x3592, 0x193: 0x3317, 0x194: 0x362d, 0x195: 0x3b10, 0x196: 0x3c9f, 0x197: 0x3b09, -+ 0x198: 0x3c98, 0x199: 0x3b17, 0x19a: 0x3ca6, 0x19b: 0x3b02, 0x19c: 0x3c91, -+ 0x19e: 0x39f1, 0x19f: 0x3b80, 0x1a0: 0x39ea, 0x1a1: 0x3b79, 0x1a2: 0x36f4, 0x1a3: 0x3706, -+ 0x1a6: 0x3182, 0x1a7: 0x348e, 0x1a8: 0x31ff, 0x1a9: 0x3510, -+ 0x1aa: 0x482d, 0x1ab: 0x48be, 0x1ac: 0x3ad1, 0x1ad: 0x3c60, 0x1ae: 0x3718, 0x1af: 0x371e, -+ 0x1b0: 0x3506, 0x1b1: 0x1a6f, 0x1b2: 0x1a72, 0x1b3: 0x1aff, 0x1b4: 0x3169, 0x1b5: 0x3475, -+ 0x1b8: 0x323b, 0x1b9: 0x354c, 0x1ba: 0x39f8, 0x1bb: 0x3b87, -+ 0x1bc: 0x36ee, 0x1bd: 0x3700, 0x1be: 0x36fa, 0x1bf: 0x370c, -+ // Block 0x7, offset 0x1c0 -+ 0x1c0: 0x30ce, 0x1c1: 0x33da, 0x1c2: 0x30d3, 0x1c3: 0x33df, 0x1c4: 0x314b, 0x1c5: 0x3457, -+ 0x1c6: 0x3150, 0x1c7: 0x345c, 0x1c8: 0x31dc, 0x1c9: 0x34e8, 0x1ca: 0x31e1, 0x1cb: 0x34ed, -+ 0x1cc: 0x3286, 0x1cd: 0x3597, 0x1ce: 0x328b, 0x1cf: 0x359c, 0x1d0: 0x32a9, 0x1d1: 0x35ba, -+ 0x1d2: 0x32ae, 0x1d3: 0x35bf, 0x1d4: 0x331c, 0x1d5: 0x3632, 0x1d6: 0x3321, 0x1d7: 0x3637, -+ 0x1d8: 0x32c7, 0x1d9: 0x35d8, 0x1da: 0x32e0, 0x1db: 0x35f6, -+ 0x1de: 0x319b, 0x1df: 0x34a7, -+ 0x1e6: 0x47d3, 0x1e7: 0x4864, 0x1e8: 0x47fb, 0x1e9: 0x488c, -+ 0x1ea: 0x3aa0, 0x1eb: 0x3c2f, 0x1ec: 0x3a7d, 0x1ed: 0x3c0c, 0x1ee: 0x4819, 0x1ef: 0x48aa, -+ 0x1f0: 0x3a99, 0x1f1: 0x3c28, 0x1f2: 0x3385, 0x1f3: 0x36a0, -+ // Block 0x8, offset 0x200 -+ 0x200: 0x9933, 0x201: 0x9933, 0x202: 0x9933, 0x203: 0x9933, 0x204: 0x9933, 0x205: 0x8133, -+ 0x206: 0x9933, 0x207: 0x9933, 0x208: 0x9933, 0x209: 0x9933, 0x20a: 0x9933, 0x20b: 0x9933, -+ 0x20c: 0x9933, 0x20d: 0x8133, 0x20e: 0x8133, 0x20f: 0x9933, 0x210: 0x8133, 0x211: 0x9933, -+ 0x212: 0x8133, 0x213: 0x9933, 0x214: 0x9933, 0x215: 0x8134, 0x216: 0x812e, 0x217: 0x812e, -+ 0x218: 0x812e, 0x219: 0x812e, 0x21a: 0x8134, 0x21b: 0x992c, 0x21c: 0x812e, 0x21d: 0x812e, -+ 0x21e: 0x812e, 0x21f: 0x812e, 0x220: 0x812e, 0x221: 0x812a, 0x222: 0x812a, 0x223: 0x992e, -+ 0x224: 0x992e, 0x225: 0x992e, 0x226: 0x992e, 0x227: 0x992a, 0x228: 0x992a, 0x229: 0x812e, -+ 0x22a: 0x812e, 0x22b: 0x812e, 0x22c: 0x812e, 0x22d: 0x992e, 0x22e: 0x992e, 0x22f: 0x812e, -+ 0x230: 0x992e, 0x231: 0x992e, 0x232: 0x812e, 0x233: 0x812e, 0x234: 0x8101, 0x235: 0x8101, -+ 0x236: 0x8101, 0x237: 0x8101, 0x238: 0x9901, 0x239: 0x812e, 0x23a: 0x812e, 0x23b: 0x812e, -+ 0x23c: 0x812e, 0x23d: 0x8133, 0x23e: 0x8133, 0x23f: 0x8133, -+ // Block 0x9, offset 0x240 -+ 0x240: 0x4aef, 0x241: 0x4af4, 0x242: 0x9933, 0x243: 0x4af9, 0x244: 0x4bb2, 0x245: 0x9937, -+ 0x246: 0x8133, 0x247: 0x812e, 0x248: 0x812e, 0x249: 0x812e, 0x24a: 0x8133, 0x24b: 0x8133, -+ 0x24c: 0x8133, 0x24d: 0x812e, 0x24e: 0x812e, 0x250: 0x8133, 0x251: 0x8133, -+ 0x252: 0x8133, 0x253: 0x812e, 0x254: 0x812e, 0x255: 0x812e, 0x256: 0x812e, 0x257: 0x8133, -+ 0x258: 0x8134, 0x259: 0x812e, 0x25a: 0x812e, 0x25b: 0x8133, 0x25c: 0x8135, 0x25d: 0x8136, -+ 0x25e: 0x8136, 0x25f: 0x8135, 0x260: 0x8136, 0x261: 0x8136, 0x262: 0x8135, 0x263: 0x8133, -+ 0x264: 0x8133, 0x265: 0x8133, 0x266: 0x8133, 0x267: 0x8133, 0x268: 0x8133, 0x269: 0x8133, -+ 0x26a: 0x8133, 0x26b: 0x8133, 0x26c: 0x8133, 0x26d: 0x8133, 0x26e: 0x8133, 0x26f: 0x8133, -+ 0x274: 0x01ee, -+ 0x27a: 0x43e6, -+ 0x27e: 0x0037, -+ // Block 0xa, offset 0x280 -+ 0x284: 0x439b, 0x285: 0x45bc, -+ 0x286: 0x372a, 0x287: 0x00ce, 0x288: 0x3748, 0x289: 0x3754, 0x28a: 0x3766, -+ 0x28c: 0x3784, 0x28e: 0x3796, 0x28f: 0x37b4, 0x290: 0x3f49, 0x291: 0xa000, -+ 0x295: 0xa000, 0x297: 0xa000, -+ 0x299: 0xa000, -+ 0x29f: 0xa000, 0x2a1: 0xa000, -+ 0x2a5: 0xa000, 0x2a9: 0xa000, -+ 0x2aa: 0x3778, 0x2ab: 0x37a8, 0x2ac: 0x493f, 0x2ad: 0x37d8, 0x2ae: 0x4969, 0x2af: 0x37ea, -+ 0x2b0: 0x3fb1, 0x2b1: 0xa000, 0x2b5: 0xa000, -+ 0x2b7: 0xa000, 0x2b9: 0xa000, -+ 0x2bf: 0xa000, -+ // Block 0xb, offset 0x2c0 -+ 0x2c1: 0xa000, 0x2c5: 0xa000, -+ 0x2c9: 0xa000, 0x2ca: 0x4981, 0x2cb: 0x499f, -+ 0x2cc: 0x3808, 0x2cd: 0x3820, 0x2ce: 0x49b7, 0x2d0: 0x0242, 0x2d1: 0x0254, -+ 0x2d2: 0x0230, 0x2d3: 0x444d, 0x2d4: 0x4453, 0x2d5: 0x027e, 0x2d6: 0x026c, -+ 0x2f0: 0x025a, 0x2f1: 0x026f, 0x2f2: 0x0272, 0x2f4: 0x020c, 0x2f5: 0x024b, -+ 0x2f9: 0x022a, -+ // Block 0xc, offset 0x300 -+ 0x300: 0x3862, 0x301: 0x386e, 0x303: 0x385c, -+ 0x306: 0xa000, 0x307: 0x384a, -+ 0x30c: 0x389e, 0x30d: 0x3886, 0x30e: 0x38b0, 0x310: 0xa000, -+ 0x313: 0xa000, 0x315: 0xa000, 0x316: 0xa000, 0x317: 0xa000, -+ 0x318: 0xa000, 0x319: 0x3892, 0x31a: 0xa000, -+ 0x31e: 0xa000, 0x323: 0xa000, -+ 0x327: 0xa000, -+ 0x32b: 0xa000, 0x32d: 0xa000, -+ 0x330: 0xa000, 0x333: 0xa000, 0x335: 0xa000, -+ 0x336: 0xa000, 0x337: 0xa000, 0x338: 0xa000, 0x339: 0x3916, 0x33a: 0xa000, -+ 0x33e: 0xa000, -+ // Block 0xd, offset 0x340 -+ 0x341: 0x3874, 0x342: 0x38f8, -+ 0x350: 0x3850, 0x351: 0x38d4, -+ 0x352: 0x3856, 0x353: 0x38da, 0x356: 0x3868, 0x357: 0x38ec, -+ 0x358: 0xa000, 0x359: 0xa000, 0x35a: 0x396a, 0x35b: 0x3970, 0x35c: 0x387a, 0x35d: 0x38fe, -+ 0x35e: 0x3880, 0x35f: 0x3904, 0x362: 0x388c, 0x363: 0x3910, -+ 0x364: 0x3898, 0x365: 0x391c, 0x366: 0x38a4, 0x367: 0x3928, 0x368: 0xa000, 0x369: 0xa000, -+ 0x36a: 0x3976, 0x36b: 0x397c, 0x36c: 0x38ce, 0x36d: 0x3952, 0x36e: 0x38aa, 0x36f: 0x392e, -+ 0x370: 0x38b6, 0x371: 0x393a, 0x372: 0x38bc, 0x373: 0x3940, 0x374: 0x38c2, 0x375: 0x3946, -+ 0x378: 0x38c8, 0x379: 0x394c, -+ // Block 0xe, offset 0x380 -+ 0x387: 0x1e91, -+ 0x391: 0x812e, -+ 0x392: 0x8133, 0x393: 0x8133, 0x394: 0x8133, 0x395: 0x8133, 0x396: 0x812e, 0x397: 0x8133, -+ 0x398: 0x8133, 0x399: 0x8133, 0x39a: 0x812f, 0x39b: 0x812e, 0x39c: 0x8133, 0x39d: 0x8133, -+ 0x39e: 0x8133, 0x39f: 0x8133, 0x3a0: 0x8133, 0x3a1: 0x8133, 0x3a2: 0x812e, 0x3a3: 0x812e, -+ 0x3a4: 0x812e, 0x3a5: 0x812e, 0x3a6: 0x812e, 0x3a7: 0x812e, 0x3a8: 0x8133, 0x3a9: 0x8133, -+ 0x3aa: 0x812e, 0x3ab: 0x8133, 0x3ac: 0x8133, 0x3ad: 0x812f, 0x3ae: 0x8132, 0x3af: 0x8133, -+ 0x3b0: 0x8106, 0x3b1: 0x8107, 0x3b2: 0x8108, 0x3b3: 0x8109, 0x3b4: 0x810a, 0x3b5: 0x810b, -+ 0x3b6: 0x810c, 0x3b7: 0x810d, 0x3b8: 0x810e, 0x3b9: 0x810f, 0x3ba: 0x810f, 0x3bb: 0x8110, -+ 0x3bc: 0x8111, 0x3bd: 0x8112, 0x3bf: 0x8113, -+ // Block 0xf, offset 0x3c0 -+ 0x3c8: 0xa000, 0x3ca: 0xa000, 0x3cb: 0x8117, -+ 0x3cc: 0x8118, 0x3cd: 0x8119, 0x3ce: 0x811a, 0x3cf: 0x811b, 0x3d0: 0x811c, 0x3d1: 0x811d, -+ 0x3d2: 0x811e, 0x3d3: 0x9933, 0x3d4: 0x9933, 0x3d5: 0x992e, 0x3d6: 0x812e, 0x3d7: 0x8133, -+ 0x3d8: 0x8133, 0x3d9: 0x8133, 0x3da: 0x8133, 0x3db: 0x8133, 0x3dc: 0x812e, 0x3dd: 0x8133, -+ 0x3de: 0x8133, 0x3df: 0x812e, -+ 0x3f0: 0x811f, 0x3f5: 0x1eb4, -+ 0x3f6: 0x2143, 0x3f7: 0x217f, 0x3f8: 0x217a, -+ // Block 0x10, offset 0x400 -+ 0x40a: 0x8133, 0x40b: 0x8133, -+ 0x40c: 0x8133, 0x40d: 0x8133, 0x40e: 0x8133, 0x40f: 0x812e, 0x410: 0x812e, 0x411: 0x812e, -+ 0x412: 0x812e, 0x413: 0x812e, 0x414: 0x8133, 0x415: 0x8133, 0x416: 0x8133, 0x417: 0x8133, -+ 0x418: 0x8133, 0x419: 0x8133, 0x41a: 0x8133, 0x41b: 0x8133, 0x41c: 0x8133, 0x41d: 0x8133, -+ 0x41e: 0x8133, 0x41f: 0x8133, 0x420: 0x8133, 0x421: 0x8133, 0x423: 0x812e, -+ 0x424: 0x8133, 0x425: 0x8133, 0x426: 0x812e, 0x427: 0x8133, 0x428: 0x8133, 0x429: 0x812e, -+ 0x42a: 0x8133, 0x42b: 0x8133, 0x42c: 0x8133, 0x42d: 0x812e, 0x42e: 0x812e, 0x42f: 0x812e, -+ 0x430: 0x8117, 0x431: 0x8118, 0x432: 0x8119, 0x433: 0x8133, 0x434: 0x8133, 0x435: 0x8133, -+ 0x436: 0x812e, 0x437: 0x8133, 0x438: 0x8133, 0x439: 0x812e, 0x43a: 0x812e, 0x43b: 0x8133, -+ 0x43c: 0x8133, 0x43d: 0x8133, 0x43e: 0x8133, 0x43f: 0x8133, -+ // Block 0x11, offset 0x440 -+ 0x445: 0xa000, -+ 0x446: 0x2e5d, 0x447: 0xa000, 0x448: 0x2e65, 0x449: 0xa000, 0x44a: 0x2e6d, 0x44b: 0xa000, -+ 0x44c: 0x2e75, 0x44d: 0xa000, 0x44e: 0x2e7d, 0x451: 0xa000, -+ 0x452: 0x2e85, -+ 0x474: 0x8103, 0x475: 0x9900, -+ 0x47a: 0xa000, 0x47b: 0x2e8d, -+ 0x47c: 0xa000, 0x47d: 0x2e95, 0x47e: 0xa000, 0x47f: 0xa000, -+ // Block 0x12, offset 0x480 -+ 0x480: 0x0069, 0x481: 0x006b, 0x482: 0x006f, 0x483: 0x0083, 0x484: 0x0104, 0x485: 0x0107, -+ 0x486: 0x0506, 0x487: 0x0085, 0x488: 0x0089, 0x489: 0x008b, 0x48a: 0x011f, 0x48b: 0x0122, -+ 0x48c: 0x0125, 0x48d: 0x008f, 0x48f: 0x0097, 0x490: 0x009b, 0x491: 0x00e6, -+ 0x492: 0x009f, 0x493: 0x0110, 0x494: 0x050a, 0x495: 0x050e, 0x496: 0x00a1, 0x497: 0x00a9, -+ 0x498: 0x00ab, 0x499: 0x0516, 0x49a: 0x015b, 0x49b: 0x00ad, 0x49c: 0x051a, 0x49d: 0x0242, -+ 0x49e: 0x0245, 0x49f: 0x0248, 0x4a0: 0x027e, 0x4a1: 0x0281, 0x4a2: 0x0093, 0x4a3: 0x00a5, -+ 0x4a4: 0x00ab, 0x4a5: 0x00ad, 0x4a6: 0x0242, 0x4a7: 0x0245, 0x4a8: 0x026f, 0x4a9: 0x027e, -+ 0x4aa: 0x0281, -+ 0x4b8: 0x02b4, -+ // Block 0x13, offset 0x4c0 -+ 0x4db: 0x010a, 0x4dc: 0x0087, 0x4dd: 0x0113, -+ 0x4de: 0x00d7, 0x4df: 0x0125, 0x4e0: 0x008d, 0x4e1: 0x012b, 0x4e2: 0x0131, 0x4e3: 0x013d, -+ 0x4e4: 0x0146, 0x4e5: 0x0149, 0x4e6: 0x014c, 0x4e7: 0x051e, 0x4e8: 0x01c7, 0x4e9: 0x0155, -+ 0x4ea: 0x0522, 0x4eb: 0x01ca, 0x4ec: 0x0161, 0x4ed: 0x015e, 0x4ee: 0x0164, 0x4ef: 0x0167, -+ 0x4f0: 0x016a, 0x4f1: 0x016d, 0x4f2: 0x0176, 0x4f3: 0x018e, 0x4f4: 0x0191, 0x4f5: 0x00f2, -+ 0x4f6: 0x019a, 0x4f7: 0x019d, 0x4f8: 0x0512, 0x4f9: 0x01a0, 0x4fa: 0x01a3, 0x4fb: 0x00b5, -+ 0x4fc: 0x01af, 0x4fd: 0x01b2, 0x4fe: 0x01b5, 0x4ff: 0x0254, -+ // Block 0x14, offset 0x500 -+ 0x500: 0x8133, 0x501: 0x8133, 0x502: 0x812e, 0x503: 0x8133, 0x504: 0x8133, 0x505: 0x8133, -+ 0x506: 0x8133, 0x507: 0x8133, 0x508: 0x8133, 0x509: 0x8133, 0x50a: 0x812e, 0x50b: 0x8133, -+ 0x50c: 0x8133, 0x50d: 0x8136, 0x50e: 0x812b, 0x50f: 0x812e, 0x510: 0x812a, 0x511: 0x8133, -+ 0x512: 0x8133, 0x513: 0x8133, 0x514: 0x8133, 0x515: 0x8133, 0x516: 0x8133, 0x517: 0x8133, -+ 0x518: 0x8133, 0x519: 0x8133, 0x51a: 0x8133, 0x51b: 0x8133, 0x51c: 0x8133, 0x51d: 0x8133, -+ 0x51e: 0x8133, 0x51f: 0x8133, 0x520: 0x8133, 0x521: 0x8133, 0x522: 0x8133, 0x523: 0x8133, -+ 0x524: 0x8133, 0x525: 0x8133, 0x526: 0x8133, 0x527: 0x8133, 0x528: 0x8133, 0x529: 0x8133, -+ 0x52a: 0x8133, 0x52b: 0x8133, 0x52c: 0x8133, 0x52d: 0x8133, 0x52e: 0x8133, 0x52f: 0x8133, -+ 0x530: 0x8133, 0x531: 0x8133, 0x532: 0x8133, 0x533: 0x8133, 0x534: 0x8133, 0x535: 0x8133, -+ 0x536: 0x8134, 0x537: 0x8132, 0x538: 0x8132, 0x539: 0x812e, 0x53a: 0x812d, 0x53b: 0x8133, -+ 0x53c: 0x8135, 0x53d: 0x812e, 0x53e: 0x8133, 0x53f: 0x812e, -+ // Block 0x15, offset 0x540 -+ 0x540: 0x30d8, 0x541: 0x33e4, 0x542: 0x30e2, 0x543: 0x33ee, 0x544: 0x30e7, 0x545: 0x33f3, -+ 0x546: 0x30ec, 0x547: 0x33f8, 0x548: 0x3a0d, 0x549: 0x3b9c, 0x54a: 0x3105, 0x54b: 0x3411, -+ 0x54c: 0x310f, 0x54d: 0x341b, 0x54e: 0x311e, 0x54f: 0x342a, 0x550: 0x3114, 0x551: 0x3420, -+ 0x552: 0x3119, 0x553: 0x3425, 0x554: 0x3a30, 0x555: 0x3bbf, 0x556: 0x3a37, 0x557: 0x3bc6, -+ 0x558: 0x315a, 0x559: 0x3466, 0x55a: 0x315f, 0x55b: 0x346b, 0x55c: 0x3a45, 0x55d: 0x3bd4, -+ 0x55e: 0x3164, 0x55f: 0x3470, 0x560: 0x3173, 0x561: 0x347f, 0x562: 0x3191, 0x563: 0x349d, -+ 0x564: 0x31a0, 0x565: 0x34ac, 0x566: 0x3196, 0x567: 0x34a2, 0x568: 0x31a5, 0x569: 0x34b1, -+ 0x56a: 0x31aa, 0x56b: 0x34b6, 0x56c: 0x31f0, 0x56d: 0x34fc, 0x56e: 0x3a4c, 0x56f: 0x3bdb, -+ 0x570: 0x31fa, 0x571: 0x350b, 0x572: 0x3204, 0x573: 0x3515, 0x574: 0x320e, 0x575: 0x351f, -+ 0x576: 0x4805, 0x577: 0x4896, 0x578: 0x3a53, 0x579: 0x3be2, 0x57a: 0x3227, 0x57b: 0x3538, -+ 0x57c: 0x3222, 0x57d: 0x3533, 0x57e: 0x322c, 0x57f: 0x353d, -+ // Block 0x16, offset 0x580 -+ 0x580: 0x3231, 0x581: 0x3542, 0x582: 0x3236, 0x583: 0x3547, 0x584: 0x324a, 0x585: 0x355b, -+ 0x586: 0x3254, 0x587: 0x3565, 0x588: 0x3263, 0x589: 0x3574, 0x58a: 0x325e, 0x58b: 0x356f, -+ 0x58c: 0x3a76, 0x58d: 0x3c05, 0x58e: 0x3a84, 0x58f: 0x3c13, 0x590: 0x3a8b, 0x591: 0x3c1a, -+ 0x592: 0x3a92, 0x593: 0x3c21, 0x594: 0x3290, 0x595: 0x35a1, 0x596: 0x3295, 0x597: 0x35a6, -+ 0x598: 0x329f, 0x599: 0x35b0, 0x59a: 0x4832, 0x59b: 0x48c3, 0x59c: 0x3ad8, 0x59d: 0x3c67, -+ 0x59e: 0x32b8, 0x59f: 0x35c9, 0x5a0: 0x32c2, 0x5a1: 0x35d3, 0x5a2: 0x4841, 0x5a3: 0x48d2, -+ 0x5a4: 0x3adf, 0x5a5: 0x3c6e, 0x5a6: 0x3ae6, 0x5a7: 0x3c75, 0x5a8: 0x3aed, 0x5a9: 0x3c7c, -+ 0x5aa: 0x32d1, 0x5ab: 0x35e2, 0x5ac: 0x32db, 0x5ad: 0x35f1, 0x5ae: 0x32ef, 0x5af: 0x3605, -+ 0x5b0: 0x32ea, 0x5b1: 0x3600, 0x5b2: 0x332b, 0x5b3: 0x3641, 0x5b4: 0x333a, 0x5b5: 0x3650, -+ 0x5b6: 0x3335, 0x5b7: 0x364b, 0x5b8: 0x3af4, 0x5b9: 0x3c83, 0x5ba: 0x3afb, 0x5bb: 0x3c8a, -+ 0x5bc: 0x333f, 0x5bd: 0x3655, 0x5be: 0x3344, 0x5bf: 0x365a, -+ // Block 0x17, offset 0x5c0 -+ 0x5c0: 0x3349, 0x5c1: 0x365f, 0x5c2: 0x334e, 0x5c3: 0x3664, 0x5c4: 0x335d, 0x5c5: 0x3673, -+ 0x5c6: 0x3358, 0x5c7: 0x366e, 0x5c8: 0x3362, 0x5c9: 0x367d, 0x5ca: 0x3367, 0x5cb: 0x3682, -+ 0x5cc: 0x336c, 0x5cd: 0x3687, 0x5ce: 0x338a, 0x5cf: 0x36a5, 0x5d0: 0x33a3, 0x5d1: 0x36c3, -+ 0x5d2: 0x33b2, 0x5d3: 0x36d2, 0x5d4: 0x33b7, 0x5d5: 0x36d7, 0x5d6: 0x34bb, 0x5d7: 0x35e7, -+ 0x5d8: 0x3678, 0x5d9: 0x36b4, 0x5da: 0x1d10, 0x5db: 0x4418, -+ 0x5e0: 0x47e2, 0x5e1: 0x4873, 0x5e2: 0x30c4, 0x5e3: 0x33d0, -+ 0x5e4: 0x39b9, 0x5e5: 0x3b48, 0x5e6: 0x39b2, 0x5e7: 0x3b41, 0x5e8: 0x39c7, 0x5e9: 0x3b56, -+ 0x5ea: 0x39c0, 0x5eb: 0x3b4f, 0x5ec: 0x39ff, 0x5ed: 0x3b8e, 0x5ee: 0x39d5, 0x5ef: 0x3b64, -+ 0x5f0: 0x39ce, 0x5f1: 0x3b5d, 0x5f2: 0x39e3, 0x5f3: 0x3b72, 0x5f4: 0x39dc, 0x5f5: 0x3b6b, -+ 0x5f6: 0x3a06, 0x5f7: 0x3b95, 0x5f8: 0x47f6, 0x5f9: 0x4887, 0x5fa: 0x3141, 0x5fb: 0x344d, -+ 0x5fc: 0x312d, 0x5fd: 0x3439, 0x5fe: 0x3a1b, 0x5ff: 0x3baa, -+ // Block 0x18, offset 0x600 -+ 0x600: 0x3a14, 0x601: 0x3ba3, 0x602: 0x3a29, 0x603: 0x3bb8, 0x604: 0x3a22, 0x605: 0x3bb1, -+ 0x606: 0x3a3e, 0x607: 0x3bcd, 0x608: 0x31d2, 0x609: 0x34de, 0x60a: 0x31e6, 0x60b: 0x34f2, -+ 0x60c: 0x4828, 0x60d: 0x48b9, 0x60e: 0x3277, 0x60f: 0x3588, 0x610: 0x3a61, 0x611: 0x3bf0, -+ 0x612: 0x3a5a, 0x613: 0x3be9, 0x614: 0x3a6f, 0x615: 0x3bfe, 0x616: 0x3a68, 0x617: 0x3bf7, -+ 0x618: 0x3aca, 0x619: 0x3c59, 0x61a: 0x3aae, 0x61b: 0x3c3d, 0x61c: 0x3aa7, 0x61d: 0x3c36, -+ 0x61e: 0x3abc, 0x61f: 0x3c4b, 0x620: 0x3ab5, 0x621: 0x3c44, 0x622: 0x3ac3, 0x623: 0x3c52, -+ 0x624: 0x3326, 0x625: 0x363c, 0x626: 0x3308, 0x627: 0x361e, 0x628: 0x3b25, 0x629: 0x3cb4, -+ 0x62a: 0x3b1e, 0x62b: 0x3cad, 0x62c: 0x3b33, 0x62d: 0x3cc2, 0x62e: 0x3b2c, 0x62f: 0x3cbb, -+ 0x630: 0x3b3a, 0x631: 0x3cc9, 0x632: 0x3371, 0x633: 0x368c, 0x634: 0x3399, 0x635: 0x36b9, -+ 0x636: 0x3394, 0x637: 0x36af, 0x638: 0x3380, 0x639: 0x369b, -+ // Block 0x19, offset 0x640 -+ 0x640: 0x4945, 0x641: 0x494b, 0x642: 0x4a5f, 0x643: 0x4a77, 0x644: 0x4a67, 0x645: 0x4a7f, -+ 0x646: 0x4a6f, 0x647: 0x4a87, 0x648: 0x48eb, 0x649: 0x48f1, 0x64a: 0x49cf, 0x64b: 0x49e7, -+ 0x64c: 0x49d7, 0x64d: 0x49ef, 0x64e: 0x49df, 0x64f: 0x49f7, 0x650: 0x4957, 0x651: 0x495d, -+ 0x652: 0x3ef9, 0x653: 0x3f09, 0x654: 0x3f01, 0x655: 0x3f11, -+ 0x658: 0x48f7, 0x659: 0x48fd, 0x65a: 0x3e29, 0x65b: 0x3e39, 0x65c: 0x3e31, 0x65d: 0x3e41, -+ 0x660: 0x496f, 0x661: 0x4975, 0x662: 0x4a8f, 0x663: 0x4aa7, -+ 0x664: 0x4a97, 0x665: 0x4aaf, 0x666: 0x4a9f, 0x667: 0x4ab7, 0x668: 0x4903, 0x669: 0x4909, -+ 0x66a: 0x49ff, 0x66b: 0x4a17, 0x66c: 0x4a07, 0x66d: 0x4a1f, 0x66e: 0x4a0f, 0x66f: 0x4a27, -+ 0x670: 0x4987, 0x671: 0x498d, 0x672: 0x3f59, 0x673: 0x3f71, 0x674: 0x3f61, 0x675: 0x3f79, -+ 0x676: 0x3f69, 0x677: 0x3f81, 0x678: 0x490f, 0x679: 0x4915, 0x67a: 0x3e59, 0x67b: 0x3e71, -+ 0x67c: 0x3e61, 0x67d: 0x3e79, 0x67e: 0x3e69, 0x67f: 0x3e81, -+ // Block 0x1a, offset 0x680 -+ 0x680: 0x4993, 0x681: 0x4999, 0x682: 0x3f89, 0x683: 0x3f99, 0x684: 0x3f91, 0x685: 0x3fa1, -+ 0x688: 0x491b, 0x689: 0x4921, 0x68a: 0x3e89, 0x68b: 0x3e99, -+ 0x68c: 0x3e91, 0x68d: 0x3ea1, 0x690: 0x49a5, 0x691: 0x49ab, -+ 0x692: 0x3fc1, 0x693: 0x3fd9, 0x694: 0x3fc9, 0x695: 0x3fe1, 0x696: 0x3fd1, 0x697: 0x3fe9, -+ 0x699: 0x4927, 0x69b: 0x3ea9, 0x69d: 0x3eb1, -+ 0x69f: 0x3eb9, 0x6a0: 0x49bd, 0x6a1: 0x49c3, 0x6a2: 0x4abf, 0x6a3: 0x4ad7, -+ 0x6a4: 0x4ac7, 0x6a5: 0x4adf, 0x6a6: 0x4acf, 0x6a7: 0x4ae7, 0x6a8: 0x492d, 0x6a9: 0x4933, -+ 0x6aa: 0x4a2f, 0x6ab: 0x4a47, 0x6ac: 0x4a37, 0x6ad: 0x4a4f, 0x6ae: 0x4a3f, 0x6af: 0x4a57, -+ 0x6b0: 0x4939, 0x6b1: 0x445f, 0x6b2: 0x37d2, 0x6b3: 0x4465, 0x6b4: 0x4963, 0x6b5: 0x446b, -+ 0x6b6: 0x37e4, 0x6b7: 0x4471, 0x6b8: 0x3802, 0x6b9: 0x4477, 0x6ba: 0x381a, 0x6bb: 0x447d, -+ 0x6bc: 0x49b1, 0x6bd: 0x4483, -+ // Block 0x1b, offset 0x6c0 -+ 0x6c0: 0x3ee1, 0x6c1: 0x3ee9, 0x6c2: 0x42c5, 0x6c3: 0x42e3, 0x6c4: 0x42cf, 0x6c5: 0x42ed, -+ 0x6c6: 0x42d9, 0x6c7: 0x42f7, 0x6c8: 0x3e19, 0x6c9: 0x3e21, 0x6ca: 0x4211, 0x6cb: 0x422f, -+ 0x6cc: 0x421b, 0x6cd: 0x4239, 0x6ce: 0x4225, 0x6cf: 0x4243, 0x6d0: 0x3f29, 0x6d1: 0x3f31, -+ 0x6d2: 0x4301, 0x6d3: 0x431f, 0x6d4: 0x430b, 0x6d5: 0x4329, 0x6d6: 0x4315, 0x6d7: 0x4333, -+ 0x6d8: 0x3e49, 0x6d9: 0x3e51, 0x6da: 0x424d, 0x6db: 0x426b, 0x6dc: 0x4257, 0x6dd: 0x4275, -+ 0x6de: 0x4261, 0x6df: 0x427f, 0x6e0: 0x4001, 0x6e1: 0x4009, 0x6e2: 0x433d, 0x6e3: 0x435b, -+ 0x6e4: 0x4347, 0x6e5: 0x4365, 0x6e6: 0x4351, 0x6e7: 0x436f, 0x6e8: 0x3ec1, 0x6e9: 0x3ec9, -+ 0x6ea: 0x4289, 0x6eb: 0x42a7, 0x6ec: 0x4293, 0x6ed: 0x42b1, 0x6ee: 0x429d, 0x6ef: 0x42bb, -+ 0x6f0: 0x37c6, 0x6f1: 0x37c0, 0x6f2: 0x3ed1, 0x6f3: 0x37cc, 0x6f4: 0x3ed9, -+ 0x6f6: 0x4951, 0x6f7: 0x3ef1, 0x6f8: 0x3736, 0x6f9: 0x3730, 0x6fa: 0x3724, 0x6fb: 0x442f, -+ 0x6fc: 0x373c, 0x6fd: 0x43c8, 0x6fe: 0x0257, 0x6ff: 0x43c8, -+ // Block 0x1c, offset 0x700 -+ 0x700: 0x43e1, 0x701: 0x45c3, 0x702: 0x3f19, 0x703: 0x37de, 0x704: 0x3f21, -+ 0x706: 0x497b, 0x707: 0x3f39, 0x708: 0x3742, 0x709: 0x4435, 0x70a: 0x374e, 0x70b: 0x443b, -+ 0x70c: 0x375a, 0x70d: 0x45ca, 0x70e: 0x45d1, 0x70f: 0x45d8, 0x710: 0x37f6, 0x711: 0x37f0, -+ 0x712: 0x3f41, 0x713: 0x4625, 0x716: 0x37fc, 0x717: 0x3f51, -+ 0x718: 0x3772, 0x719: 0x376c, 0x71a: 0x3760, 0x71b: 0x4441, 0x71d: 0x45df, -+ 0x71e: 0x45e6, 0x71f: 0x45ed, 0x720: 0x382c, 0x721: 0x3826, 0x722: 0x3fa9, 0x723: 0x462d, -+ 0x724: 0x380e, 0x725: 0x3814, 0x726: 0x3832, 0x727: 0x3fb9, 0x728: 0x37a2, 0x729: 0x379c, -+ 0x72a: 0x3790, 0x72b: 0x444d, 0x72c: 0x378a, 0x72d: 0x45b5, 0x72e: 0x45bc, 0x72f: 0x0081, -+ 0x732: 0x3ff1, 0x733: 0x3838, 0x734: 0x3ff9, -+ 0x736: 0x49c9, 0x737: 0x4011, 0x738: 0x377e, 0x739: 0x4447, 0x73a: 0x37ae, 0x73b: 0x4459, -+ 0x73c: 0x37ba, 0x73d: 0x439b, 0x73e: 0x43cd, -+ // Block 0x1d, offset 0x740 -+ 0x740: 0x1d08, 0x741: 0x1d0c, 0x742: 0x0047, 0x743: 0x1d84, 0x745: 0x1d18, -+ 0x746: 0x1d1c, 0x747: 0x00ef, 0x749: 0x1d88, 0x74a: 0x008f, 0x74b: 0x0051, -+ 0x74c: 0x0051, 0x74d: 0x0051, 0x74e: 0x0091, 0x74f: 0x00e0, 0x750: 0x0053, 0x751: 0x0053, -+ 0x752: 0x0059, 0x753: 0x0099, 0x755: 0x005d, 0x756: 0x1abd, -+ 0x759: 0x0061, 0x75a: 0x0063, 0x75b: 0x0065, 0x75c: 0x0065, 0x75d: 0x0065, -+ 0x760: 0x1acf, 0x761: 0x1cf8, 0x762: 0x1ad8, -+ 0x764: 0x0075, 0x766: 0x023c, 0x768: 0x0075, -+ 0x76a: 0x0057, 0x76b: 0x4413, 0x76c: 0x0045, 0x76d: 0x0047, 0x76f: 0x008b, -+ 0x770: 0x004b, 0x771: 0x004d, 0x773: 0x005b, 0x774: 0x009f, 0x775: 0x0308, -+ 0x776: 0x030b, 0x777: 0x030e, 0x778: 0x0311, 0x779: 0x0093, 0x77b: 0x1cc8, -+ 0x77c: 0x026c, 0x77d: 0x0245, 0x77e: 0x01fd, 0x77f: 0x0224, -+ // Block 0x1e, offset 0x780 -+ 0x780: 0x055a, 0x785: 0x0049, -+ 0x786: 0x0089, 0x787: 0x008b, 0x788: 0x0093, 0x789: 0x0095, -+ 0x790: 0x235e, 0x791: 0x236a, -+ 0x792: 0x241e, 0x793: 0x2346, 0x794: 0x23ca, 0x795: 0x2352, 0x796: 0x23d0, 0x797: 0x23e8, -+ 0x798: 0x23f4, 0x799: 0x2358, 0x79a: 0x23fa, 0x79b: 0x2364, 0x79c: 0x23ee, 0x79d: 0x2400, -+ 0x79e: 0x2406, 0x79f: 0x1dec, 0x7a0: 0x0053, 0x7a1: 0x1a87, 0x7a2: 0x1cd4, 0x7a3: 0x1a90, -+ 0x7a4: 0x006d, 0x7a5: 0x1adb, 0x7a6: 0x1d00, 0x7a7: 0x1e78, 0x7a8: 0x1a93, 0x7a9: 0x0071, -+ 0x7aa: 0x1ae7, 0x7ab: 0x1d04, 0x7ac: 0x0059, 0x7ad: 0x0047, 0x7ae: 0x0049, 0x7af: 0x005b, -+ 0x7b0: 0x0093, 0x7b1: 0x1b14, 0x7b2: 0x1d48, 0x7b3: 0x1b1d, 0x7b4: 0x00ad, 0x7b5: 0x1b92, -+ 0x7b6: 0x1d7c, 0x7b7: 0x1e8c, 0x7b8: 0x1b20, 0x7b9: 0x00b1, 0x7ba: 0x1b95, 0x7bb: 0x1d80, -+ 0x7bc: 0x0099, 0x7bd: 0x0087, 0x7be: 0x0089, 0x7bf: 0x009b, -+ // Block 0x1f, offset 0x7c0 -+ 0x7c1: 0x3d47, 0x7c3: 0xa000, 0x7c4: 0x3d4e, 0x7c5: 0xa000, -+ 0x7c7: 0x3d55, 0x7c8: 0xa000, 0x7c9: 0x3d5c, -+ 0x7cd: 0xa000, -+ 0x7e0: 0x30a6, 0x7e1: 0xa000, 0x7e2: 0x3d6a, -+ 0x7e4: 0xa000, 0x7e5: 0xa000, -+ 0x7ed: 0x3d63, 0x7ee: 0x30a1, 0x7ef: 0x30ab, -+ 0x7f0: 0x3d71, 0x7f1: 0x3d78, 0x7f2: 0xa000, 0x7f3: 0xa000, 0x7f4: 0x3d7f, 0x7f5: 0x3d86, -+ 0x7f6: 0xa000, 0x7f7: 0xa000, 0x7f8: 0x3d8d, 0x7f9: 0x3d94, 0x7fa: 0xa000, 0x7fb: 0xa000, -+ 0x7fc: 0xa000, 0x7fd: 0xa000, -+ // Block 0x20, offset 0x800 -+ 0x800: 0x3d9b, 0x801: 0x3da2, 0x802: 0xa000, 0x803: 0xa000, 0x804: 0x3db7, 0x805: 0x3dbe, -+ 0x806: 0xa000, 0x807: 0xa000, 0x808: 0x3dc5, 0x809: 0x3dcc, -+ 0x811: 0xa000, -+ 0x812: 0xa000, -+ 0x822: 0xa000, -+ 0x828: 0xa000, 0x829: 0xa000, -+ 0x82b: 0xa000, 0x82c: 0x3de1, 0x82d: 0x3de8, 0x82e: 0x3def, 0x82f: 0x3df6, -+ 0x832: 0xa000, 0x833: 0xa000, 0x834: 0xa000, 0x835: 0xa000, -+ // Block 0x21, offset 0x840 -+ 0x860: 0x0023, 0x861: 0x0025, 0x862: 0x0027, 0x863: 0x0029, -+ 0x864: 0x002b, 0x865: 0x002d, 0x866: 0x002f, 0x867: 0x0031, 0x868: 0x0033, 0x869: 0x19af, -+ 0x86a: 0x19b2, 0x86b: 0x19b5, 0x86c: 0x19b8, 0x86d: 0x19bb, 0x86e: 0x19be, 0x86f: 0x19c1, -+ 0x870: 0x19c4, 0x871: 0x19c7, 0x872: 0x19ca, 0x873: 0x19d3, 0x874: 0x1b98, 0x875: 0x1b9c, -+ 0x876: 0x1ba0, 0x877: 0x1ba4, 0x878: 0x1ba8, 0x879: 0x1bac, 0x87a: 0x1bb0, 0x87b: 0x1bb4, -+ 0x87c: 0x1bb8, 0x87d: 0x1db0, 0x87e: 0x1db5, 0x87f: 0x1dba, -+ // Block 0x22, offset 0x880 -+ 0x880: 0x1dbf, 0x881: 0x1dc4, 0x882: 0x1dc9, 0x883: 0x1dce, 0x884: 0x1dd3, 0x885: 0x1dd8, -+ 0x886: 0x1ddd, 0x887: 0x1de2, 0x888: 0x19ac, 0x889: 0x19d0, 0x88a: 0x19f4, 0x88b: 0x1a18, -+ 0x88c: 0x1a3c, 0x88d: 0x1a45, 0x88e: 0x1a4b, 0x88f: 0x1a51, 0x890: 0x1a57, 0x891: 0x1c90, -+ 0x892: 0x1c94, 0x893: 0x1c98, 0x894: 0x1c9c, 0x895: 0x1ca0, 0x896: 0x1ca4, 0x897: 0x1ca8, -+ 0x898: 0x1cac, 0x899: 0x1cb0, 0x89a: 0x1cb4, 0x89b: 0x1cb8, 0x89c: 0x1c24, 0x89d: 0x1c28, -+ 0x89e: 0x1c2c, 0x89f: 0x1c30, 0x8a0: 0x1c34, 0x8a1: 0x1c38, 0x8a2: 0x1c3c, 0x8a3: 0x1c40, -+ 0x8a4: 0x1c44, 0x8a5: 0x1c48, 0x8a6: 0x1c4c, 0x8a7: 0x1c50, 0x8a8: 0x1c54, 0x8a9: 0x1c58, -+ 0x8aa: 0x1c5c, 0x8ab: 0x1c60, 0x8ac: 0x1c64, 0x8ad: 0x1c68, 0x8ae: 0x1c6c, 0x8af: 0x1c70, -+ 0x8b0: 0x1c74, 0x8b1: 0x1c78, 0x8b2: 0x1c7c, 0x8b3: 0x1c80, 0x8b4: 0x1c84, 0x8b5: 0x1c88, -+ 0x8b6: 0x0043, 0x8b7: 0x0045, 0x8b8: 0x0047, 0x8b9: 0x0049, 0x8ba: 0x004b, 0x8bb: 0x004d, -+ 0x8bc: 0x004f, 0x8bd: 0x0051, 0x8be: 0x0053, 0x8bf: 0x0055, -+ // Block 0x23, offset 0x8c0 -+ 0x8c0: 0x07ba, 0x8c1: 0x07de, 0x8c2: 0x07ea, 0x8c3: 0x07fa, 0x8c4: 0x0802, 0x8c5: 0x080e, -+ 0x8c6: 0x0816, 0x8c7: 0x081e, 0x8c8: 0x082a, 0x8c9: 0x087e, 0x8ca: 0x0896, 0x8cb: 0x08a6, -+ 0x8cc: 0x08b6, 0x8cd: 0x08c6, 0x8ce: 0x08d6, 0x8cf: 0x08f6, 0x8d0: 0x08fa, 0x8d1: 0x08fe, -+ 0x8d2: 0x0932, 0x8d3: 0x095a, 0x8d4: 0x096a, 0x8d5: 0x0972, 0x8d6: 0x0976, 0x8d7: 0x0982, -+ 0x8d8: 0x099e, 0x8d9: 0x09a2, 0x8da: 0x09ba, 0x8db: 0x09be, 0x8dc: 0x09c6, 0x8dd: 0x09d6, -+ 0x8de: 0x0a72, 0x8df: 0x0a86, 0x8e0: 0x0ac6, 0x8e1: 0x0ada, 0x8e2: 0x0ae2, 0x8e3: 0x0ae6, -+ 0x8e4: 0x0af6, 0x8e5: 0x0b12, 0x8e6: 0x0b3e, 0x8e7: 0x0b4a, 0x8e8: 0x0b6a, 0x8e9: 0x0b76, -+ 0x8ea: 0x0b7a, 0x8eb: 0x0b7e, 0x8ec: 0x0b96, 0x8ed: 0x0b9a, 0x8ee: 0x0bc6, 0x8ef: 0x0bd2, -+ 0x8f0: 0x0bda, 0x8f1: 0x0be2, 0x8f2: 0x0bf2, 0x8f3: 0x0bfa, 0x8f4: 0x0c02, 0x8f5: 0x0c2e, -+ 0x8f6: 0x0c32, 0x8f7: 0x0c3a, 0x8f8: 0x0c3e, 0x8f9: 0x0c46, 0x8fa: 0x0c4e, 0x8fb: 0x0c5e, -+ 0x8fc: 0x0c7a, 0x8fd: 0x0cf2, 0x8fe: 0x0d06, 0x8ff: 0x0d0a, -+ // Block 0x24, offset 0x900 -+ 0x900: 0x0d8a, 0x901: 0x0d8e, 0x902: 0x0da2, 0x903: 0x0da6, 0x904: 0x0dae, 0x905: 0x0db6, -+ 0x906: 0x0dbe, 0x907: 0x0dca, 0x908: 0x0df2, 0x909: 0x0e02, 0x90a: 0x0e16, 0x90b: 0x0e86, -+ 0x90c: 0x0e92, 0x90d: 0x0ea2, 0x90e: 0x0eae, 0x90f: 0x0eba, 0x910: 0x0ec2, 0x911: 0x0ec6, -+ 0x912: 0x0eca, 0x913: 0x0ece, 0x914: 0x0ed2, 0x915: 0x0f8a, 0x916: 0x0fd2, 0x917: 0x0fde, -+ 0x918: 0x0fe2, 0x919: 0x0fe6, 0x91a: 0x0fea, 0x91b: 0x0ff2, 0x91c: 0x0ff6, 0x91d: 0x100a, -+ 0x91e: 0x1026, 0x91f: 0x102e, 0x920: 0x106e, 0x921: 0x1072, 0x922: 0x107a, 0x923: 0x107e, -+ 0x924: 0x1086, 0x925: 0x108a, 0x926: 0x10ae, 0x927: 0x10b2, 0x928: 0x10ce, 0x929: 0x10d2, -+ 0x92a: 0x10d6, 0x92b: 0x10da, 0x92c: 0x10ee, 0x92d: 0x1112, 0x92e: 0x1116, 0x92f: 0x111a, -+ 0x930: 0x113e, 0x931: 0x117e, 0x932: 0x1182, 0x933: 0x11a2, 0x934: 0x11b2, 0x935: 0x11ba, -+ 0x936: 0x11da, 0x937: 0x11fe, 0x938: 0x1242, 0x939: 0x124a, 0x93a: 0x125e, 0x93b: 0x126a, -+ 0x93c: 0x1272, 0x93d: 0x127a, 0x93e: 0x127e, 0x93f: 0x1282, -+ // Block 0x25, offset 0x940 -+ 0x940: 0x129a, 0x941: 0x129e, 0x942: 0x12ba, 0x943: 0x12c2, 0x944: 0x12ca, 0x945: 0x12ce, -+ 0x946: 0x12da, 0x947: 0x12e2, 0x948: 0x12e6, 0x949: 0x12ea, 0x94a: 0x12f2, 0x94b: 0x12f6, -+ 0x94c: 0x1396, 0x94d: 0x13aa, 0x94e: 0x13de, 0x94f: 0x13e2, 0x950: 0x13ea, 0x951: 0x1416, -+ 0x952: 0x141e, 0x953: 0x1426, 0x954: 0x142e, 0x955: 0x146a, 0x956: 0x146e, 0x957: 0x1476, -+ 0x958: 0x147a, 0x959: 0x147e, 0x95a: 0x14aa, 0x95b: 0x14ae, 0x95c: 0x14b6, 0x95d: 0x14ca, -+ 0x95e: 0x14ce, 0x95f: 0x14ea, 0x960: 0x14f2, 0x961: 0x14f6, 0x962: 0x151a, 0x963: 0x153a, -+ 0x964: 0x154e, 0x965: 0x1552, 0x966: 0x155a, 0x967: 0x1586, 0x968: 0x158a, 0x969: 0x159a, -+ 0x96a: 0x15be, 0x96b: 0x15ca, 0x96c: 0x15da, 0x96d: 0x15f2, 0x96e: 0x15fa, 0x96f: 0x15fe, -+ 0x970: 0x1602, 0x971: 0x1606, 0x972: 0x1612, 0x973: 0x1616, 0x974: 0x161e, 0x975: 0x163a, -+ 0x976: 0x163e, 0x977: 0x1642, 0x978: 0x165a, 0x979: 0x165e, 0x97a: 0x1666, 0x97b: 0x167a, -+ 0x97c: 0x167e, 0x97d: 0x1682, 0x97e: 0x168a, 0x97f: 0x168e, -+ // Block 0x26, offset 0x980 -+ 0x986: 0xa000, 0x98b: 0xa000, -+ 0x98c: 0x4049, 0x98d: 0xa000, 0x98e: 0x4051, 0x98f: 0xa000, 0x990: 0x4059, 0x991: 0xa000, -+ 0x992: 0x4061, 0x993: 0xa000, 0x994: 0x4069, 0x995: 0xa000, 0x996: 0x4071, 0x997: 0xa000, -+ 0x998: 0x4079, 0x999: 0xa000, 0x99a: 0x4081, 0x99b: 0xa000, 0x99c: 0x4089, 0x99d: 0xa000, -+ 0x99e: 0x4091, 0x99f: 0xa000, 0x9a0: 0x4099, 0x9a1: 0xa000, 0x9a2: 0x40a1, -+ 0x9a4: 0xa000, 0x9a5: 0x40a9, 0x9a6: 0xa000, 0x9a7: 0x40b1, 0x9a8: 0xa000, 0x9a9: 0x40b9, -+ 0x9af: 0xa000, -+ 0x9b0: 0x40c1, 0x9b1: 0x40c9, 0x9b2: 0xa000, 0x9b3: 0x40d1, 0x9b4: 0x40d9, 0x9b5: 0xa000, -+ 0x9b6: 0x40e1, 0x9b7: 0x40e9, 0x9b8: 0xa000, 0x9b9: 0x40f1, 0x9ba: 0x40f9, 0x9bb: 0xa000, -+ 0x9bc: 0x4101, 0x9bd: 0x4109, -+ // Block 0x27, offset 0x9c0 -+ 0x9d4: 0x4041, -+ 0x9d9: 0x9904, 0x9da: 0x9904, 0x9db: 0x441d, 0x9dc: 0x4423, 0x9dd: 0xa000, -+ 0x9de: 0x4111, 0x9df: 0x27e4, -+ 0x9e6: 0xa000, -+ 0x9eb: 0xa000, 0x9ec: 0x4121, 0x9ed: 0xa000, 0x9ee: 0x4129, 0x9ef: 0xa000, -+ 0x9f0: 0x4131, 0x9f1: 0xa000, 0x9f2: 0x4139, 0x9f3: 0xa000, 0x9f4: 0x4141, 0x9f5: 0xa000, -+ 0x9f6: 0x4149, 0x9f7: 0xa000, 0x9f8: 0x4151, 0x9f9: 0xa000, 0x9fa: 0x4159, 0x9fb: 0xa000, -+ 0x9fc: 0x4161, 0x9fd: 0xa000, 0x9fe: 0x4169, 0x9ff: 0xa000, -+ // Block 0x28, offset 0xa00 -+ 0xa00: 0x4171, 0xa01: 0xa000, 0xa02: 0x4179, 0xa04: 0xa000, 0xa05: 0x4181, -+ 0xa06: 0xa000, 0xa07: 0x4189, 0xa08: 0xa000, 0xa09: 0x4191, -+ 0xa0f: 0xa000, 0xa10: 0x4199, 0xa11: 0x41a1, -+ 0xa12: 0xa000, 0xa13: 0x41a9, 0xa14: 0x41b1, 0xa15: 0xa000, 0xa16: 0x41b9, 0xa17: 0x41c1, -+ 0xa18: 0xa000, 0xa19: 0x41c9, 0xa1a: 0x41d1, 0xa1b: 0xa000, 0xa1c: 0x41d9, 0xa1d: 0x41e1, -+ 0xa2f: 0xa000, -+ 0xa30: 0xa000, 0xa31: 0xa000, 0xa32: 0xa000, 0xa34: 0x4119, -+ 0xa37: 0x41e9, 0xa38: 0x41f1, 0xa39: 0x41f9, 0xa3a: 0x4201, -+ 0xa3d: 0xa000, 0xa3e: 0x4209, 0xa3f: 0x27f9, -+ // Block 0x29, offset 0xa40 -+ 0xa40: 0x045a, 0xa41: 0x041e, 0xa42: 0x0422, 0xa43: 0x0426, 0xa44: 0x046e, 0xa45: 0x042a, -+ 0xa46: 0x042e, 0xa47: 0x0432, 0xa48: 0x0436, 0xa49: 0x043a, 0xa4a: 0x043e, 0xa4b: 0x0442, -+ 0xa4c: 0x0446, 0xa4d: 0x044a, 0xa4e: 0x044e, 0xa4f: 0x4afe, 0xa50: 0x4b04, 0xa51: 0x4b0a, -+ 0xa52: 0x4b10, 0xa53: 0x4b16, 0xa54: 0x4b1c, 0xa55: 0x4b22, 0xa56: 0x4b28, 0xa57: 0x4b2e, -+ 0xa58: 0x4b34, 0xa59: 0x4b3a, 0xa5a: 0x4b40, 0xa5b: 0x4b46, 0xa5c: 0x4b4c, 0xa5d: 0x4b52, -+ 0xa5e: 0x4b58, 0xa5f: 0x4b5e, 0xa60: 0x4b64, 0xa61: 0x4b6a, 0xa62: 0x4b70, 0xa63: 0x4b76, -+ 0xa64: 0x04b6, 0xa65: 0x0452, 0xa66: 0x0456, 0xa67: 0x04da, 0xa68: 0x04de, 0xa69: 0x04e2, -+ 0xa6a: 0x04e6, 0xa6b: 0x04ea, 0xa6c: 0x04ee, 0xa6d: 0x04f2, 0xa6e: 0x045e, 0xa6f: 0x04f6, -+ 0xa70: 0x04fa, 0xa71: 0x0462, 0xa72: 0x0466, 0xa73: 0x046a, 0xa74: 0x0472, 0xa75: 0x0476, -+ 0xa76: 0x047a, 0xa77: 0x047e, 0xa78: 0x0482, 0xa79: 0x0486, 0xa7a: 0x048a, 0xa7b: 0x048e, -+ 0xa7c: 0x0492, 0xa7d: 0x0496, 0xa7e: 0x049a, 0xa7f: 0x049e, -+ // Block 0x2a, offset 0xa80 -+ 0xa80: 0x04a2, 0xa81: 0x04a6, 0xa82: 0x04fe, 0xa83: 0x0502, 0xa84: 0x04aa, 0xa85: 0x04ae, -+ 0xa86: 0x04b2, 0xa87: 0x04ba, 0xa88: 0x04be, 0xa89: 0x04c2, 0xa8a: 0x04c6, 0xa8b: 0x04ca, -+ 0xa8c: 0x04ce, 0xa8d: 0x04d2, 0xa8e: 0x04d6, -+ 0xa92: 0x07ba, 0xa93: 0x0816, 0xa94: 0x07c6, 0xa95: 0x0a76, 0xa96: 0x07ca, 0xa97: 0x07e2, -+ 0xa98: 0x07ce, 0xa99: 0x108e, 0xa9a: 0x0802, 0xa9b: 0x07d6, 0xa9c: 0x07be, 0xa9d: 0x0afa, -+ 0xa9e: 0x0a8a, 0xa9f: 0x082a, -+ // Block 0x2b, offset 0xac0 -+ 0xac0: 0x2184, 0xac1: 0x218a, 0xac2: 0x2190, 0xac3: 0x2196, 0xac4: 0x219c, 0xac5: 0x21a2, -+ 0xac6: 0x21a8, 0xac7: 0x21ae, 0xac8: 0x21b4, 0xac9: 0x21ba, 0xaca: 0x21c0, 0xacb: 0x21c6, -+ 0xacc: 0x21cc, 0xacd: 0x21d2, 0xace: 0x285d, 0xacf: 0x2866, 0xad0: 0x286f, 0xad1: 0x2878, -+ 0xad2: 0x2881, 0xad3: 0x288a, 0xad4: 0x2893, 0xad5: 0x289c, 0xad6: 0x28a5, 0xad7: 0x28b7, -+ 0xad8: 0x28c0, 0xad9: 0x28c9, 0xada: 0x28d2, 0xadb: 0x28db, 0xadc: 0x28ae, 0xadd: 0x2ce3, -+ 0xade: 0x2c24, 0xae0: 0x21d8, 0xae1: 0x21f0, 0xae2: 0x21e4, 0xae3: 0x2238, -+ 0xae4: 0x21f6, 0xae5: 0x2214, 0xae6: 0x21de, 0xae7: 0x220e, 0xae8: 0x21ea, 0xae9: 0x2220, -+ 0xaea: 0x2250, 0xaeb: 0x226e, 0xaec: 0x2268, 0xaed: 0x225c, 0xaee: 0x22aa, 0xaef: 0x223e, -+ 0xaf0: 0x224a, 0xaf1: 0x2262, 0xaf2: 0x2256, 0xaf3: 0x2280, 0xaf4: 0x222c, 0xaf5: 0x2274, -+ 0xaf6: 0x229e, 0xaf7: 0x2286, 0xaf8: 0x221a, 0xaf9: 0x21fc, 0xafa: 0x2232, 0xafb: 0x2244, -+ 0xafc: 0x227a, 0xafd: 0x2202, 0xafe: 0x22a4, 0xaff: 0x2226, -+ // Block 0x2c, offset 0xb00 -+ 0xb00: 0x228c, 0xb01: 0x2208, 0xb02: 0x2292, 0xb03: 0x2298, 0xb04: 0x0a2a, 0xb05: 0x0bfe, -+ 0xb06: 0x0da2, 0xb07: 0x11c2, -+ 0xb10: 0x1cf4, 0xb11: 0x19d6, -+ 0xb12: 0x19d9, 0xb13: 0x19dc, 0xb14: 0x19df, 0xb15: 0x19e2, 0xb16: 0x19e5, 0xb17: 0x19e8, -+ 0xb18: 0x19eb, 0xb19: 0x19ee, 0xb1a: 0x19f7, 0xb1b: 0x19fa, 0xb1c: 0x19fd, 0xb1d: 0x1a00, -+ 0xb1e: 0x1a03, 0xb1f: 0x1a06, 0xb20: 0x0406, 0xb21: 0x040e, 0xb22: 0x0412, 0xb23: 0x041a, -+ 0xb24: 0x041e, 0xb25: 0x0422, 0xb26: 0x042a, 0xb27: 0x0432, 0xb28: 0x0436, 0xb29: 0x043e, -+ 0xb2a: 0x0442, 0xb2b: 0x0446, 0xb2c: 0x044a, 0xb2d: 0x044e, 0xb2e: 0x2f59, 0xb2f: 0x2f61, -+ 0xb30: 0x2f69, 0xb31: 0x2f71, 0xb32: 0x2f79, 0xb33: 0x2f81, 0xb34: 0x2f89, 0xb35: 0x2f91, -+ 0xb36: 0x2fa1, 0xb37: 0x2fa9, 0xb38: 0x2fb1, 0xb39: 0x2fb9, 0xb3a: 0x2fc1, 0xb3b: 0x2fc9, -+ 0xb3c: 0x3014, 0xb3d: 0x2fdc, 0xb3e: 0x2f99, -+ // Block 0x2d, offset 0xb40 -+ 0xb40: 0x07ba, 0xb41: 0x0816, 0xb42: 0x07c6, 0xb43: 0x0a76, 0xb44: 0x081a, 0xb45: 0x08aa, -+ 0xb46: 0x07c2, 0xb47: 0x08a6, 0xb48: 0x0806, 0xb49: 0x0982, 0xb4a: 0x0e02, 0xb4b: 0x0f8a, -+ 0xb4c: 0x0ed2, 0xb4d: 0x0e16, 0xb4e: 0x155a, 0xb4f: 0x0a86, 0xb50: 0x0dca, 0xb51: 0x0e46, -+ 0xb52: 0x0e06, 0xb53: 0x1146, 0xb54: 0x09f6, 0xb55: 0x0ffe, 0xb56: 0x1482, 0xb57: 0x115a, -+ 0xb58: 0x093e, 0xb59: 0x118a, 0xb5a: 0x1096, 0xb5b: 0x0b12, 0xb5c: 0x150a, 0xb5d: 0x087a, -+ 0xb5e: 0x09a6, 0xb5f: 0x0ef2, 0xb60: 0x1622, 0xb61: 0x083e, 0xb62: 0x08ce, 0xb63: 0x0e96, -+ 0xb64: 0x07ca, 0xb65: 0x07e2, 0xb66: 0x07ce, 0xb67: 0x0bd6, 0xb68: 0x09ea, 0xb69: 0x097a, -+ 0xb6a: 0x0b52, 0xb6b: 0x0b46, 0xb6c: 0x10e6, 0xb6d: 0x083a, 0xb6e: 0x1496, 0xb6f: 0x0996, -+ 0xb70: 0x0aee, 0xb71: 0x1a09, 0xb72: 0x1a0c, 0xb73: 0x1a0f, 0xb74: 0x1a12, 0xb75: 0x1a1b, -+ 0xb76: 0x1a1e, 0xb77: 0x1a21, 0xb78: 0x1a24, 0xb79: 0x1a27, 0xb7a: 0x1a2a, 0xb7b: 0x1a2d, -+ 0xb7c: 0x1a30, 0xb7d: 0x1a33, 0xb7e: 0x1a36, 0xb7f: 0x1a3f, -+ // Block 0x2e, offset 0xb80 -+ 0xb80: 0x1df6, 0xb81: 0x1e05, 0xb82: 0x1e14, 0xb83: 0x1e23, 0xb84: 0x1e32, 0xb85: 0x1e41, -+ 0xb86: 0x1e50, 0xb87: 0x1e5f, 0xb88: 0x1e6e, 0xb89: 0x22bc, 0xb8a: 0x22ce, 0xb8b: 0x22e0, -+ 0xb8c: 0x1a81, 0xb8d: 0x1d34, 0xb8e: 0x1b02, 0xb8f: 0x1cd8, 0xb90: 0x05c6, 0xb91: 0x05ce, -+ 0xb92: 0x05d6, 0xb93: 0x05de, 0xb94: 0x05e6, 0xb95: 0x05ea, 0xb96: 0x05ee, 0xb97: 0x05f2, -+ 0xb98: 0x05f6, 0xb99: 0x05fa, 0xb9a: 0x05fe, 0xb9b: 0x0602, 0xb9c: 0x0606, 0xb9d: 0x060a, -+ 0xb9e: 0x060e, 0xb9f: 0x0612, 0xba0: 0x0616, 0xba1: 0x061e, 0xba2: 0x0622, 0xba3: 0x0626, -+ 0xba4: 0x062a, 0xba5: 0x062e, 0xba6: 0x0632, 0xba7: 0x0636, 0xba8: 0x063a, 0xba9: 0x063e, -+ 0xbaa: 0x0642, 0xbab: 0x0646, 0xbac: 0x064a, 0xbad: 0x064e, 0xbae: 0x0652, 0xbaf: 0x0656, -+ 0xbb0: 0x065a, 0xbb1: 0x065e, 0xbb2: 0x0662, 0xbb3: 0x066a, 0xbb4: 0x0672, 0xbb5: 0x067a, -+ 0xbb6: 0x067e, 0xbb7: 0x0682, 0xbb8: 0x0686, 0xbb9: 0x068a, 0xbba: 0x068e, 0xbbb: 0x0692, -+ 0xbbc: 0x0696, 0xbbd: 0x069a, 0xbbe: 0x069e, 0xbbf: 0x282a, -+ // Block 0x2f, offset 0xbc0 -+ 0xbc0: 0x2c43, 0xbc1: 0x2adf, 0xbc2: 0x2c53, 0xbc3: 0x29b7, 0xbc4: 0x3025, 0xbc5: 0x29c1, -+ 0xbc6: 0x29cb, 0xbc7: 0x3069, 0xbc8: 0x2aec, 0xbc9: 0x29d5, 0xbca: 0x29df, 0xbcb: 0x29e9, -+ 0xbcc: 0x2b13, 0xbcd: 0x2b20, 0xbce: 0x2af9, 0xbcf: 0x2b06, 0xbd0: 0x2fea, 0xbd1: 0x2b2d, -+ 0xbd2: 0x2b3a, 0xbd3: 0x2cf5, 0xbd4: 0x27eb, 0xbd5: 0x2d08, 0xbd6: 0x2d1b, 0xbd7: 0x2c63, -+ 0xbd8: 0x2b47, 0xbd9: 0x2d2e, 0xbda: 0x2d41, 0xbdb: 0x2b54, 0xbdc: 0x29f3, 0xbdd: 0x29fd, -+ 0xbde: 0x2ff8, 0xbdf: 0x2b61, 0xbe0: 0x2c73, 0xbe1: 0x3036, 0xbe2: 0x2a07, 0xbe3: 0x2a11, -+ 0xbe4: 0x2b6e, 0xbe5: 0x2a1b, 0xbe6: 0x2a25, 0xbe7: 0x2800, 0xbe8: 0x2807, 0xbe9: 0x2a2f, -+ 0xbea: 0x2a39, 0xbeb: 0x2d54, 0xbec: 0x2b7b, 0xbed: 0x2c83, 0xbee: 0x2d67, 0xbef: 0x2b88, -+ 0xbf0: 0x2a4d, 0xbf1: 0x2a43, 0xbf2: 0x307d, 0xbf3: 0x2b95, 0xbf4: 0x2d7a, 0xbf5: 0x2a57, -+ 0xbf6: 0x2c93, 0xbf7: 0x2a61, 0xbf8: 0x2baf, 0xbf9: 0x2a6b, 0xbfa: 0x2bbc, 0xbfb: 0x3047, -+ 0xbfc: 0x2ba2, 0xbfd: 0x2ca3, 0xbfe: 0x2bc9, 0xbff: 0x280e, -+ // Block 0x30, offset 0xc00 -+ 0xc00: 0x3058, 0xc01: 0x2a75, 0xc02: 0x2a7f, 0xc03: 0x2bd6, 0xc04: 0x2a89, 0xc05: 0x2a93, -+ 0xc06: 0x2a9d, 0xc07: 0x2cb3, 0xc08: 0x2be3, 0xc09: 0x2815, 0xc0a: 0x2d8d, 0xc0b: 0x2fd1, -+ 0xc0c: 0x2cc3, 0xc0d: 0x2bf0, 0xc0e: 0x3006, 0xc0f: 0x2aa7, 0xc10: 0x2ab1, 0xc11: 0x2bfd, -+ 0xc12: 0x281c, 0xc13: 0x2c0a, 0xc14: 0x2cd3, 0xc15: 0x2823, 0xc16: 0x2da0, 0xc17: 0x2abb, -+ 0xc18: 0x1de7, 0xc19: 0x1dfb, 0xc1a: 0x1e0a, 0xc1b: 0x1e19, 0xc1c: 0x1e28, 0xc1d: 0x1e37, -+ 0xc1e: 0x1e46, 0xc1f: 0x1e55, 0xc20: 0x1e64, 0xc21: 0x1e73, 0xc22: 0x22c2, 0xc23: 0x22d4, -+ 0xc24: 0x22e6, 0xc25: 0x22f2, 0xc26: 0x22fe, 0xc27: 0x230a, 0xc28: 0x2316, 0xc29: 0x2322, -+ 0xc2a: 0x232e, 0xc2b: 0x233a, 0xc2c: 0x2376, 0xc2d: 0x2382, 0xc2e: 0x238e, 0xc2f: 0x239a, -+ 0xc30: 0x23a6, 0xc31: 0x1d44, 0xc32: 0x1af6, 0xc33: 0x1a63, 0xc34: 0x1d14, 0xc35: 0x1b77, -+ 0xc36: 0x1b86, 0xc37: 0x1afc, 0xc38: 0x1d2c, 0xc39: 0x1d30, 0xc3a: 0x1a8d, 0xc3b: 0x2838, -+ 0xc3c: 0x2846, 0xc3d: 0x2831, 0xc3e: 0x283f, 0xc3f: 0x2c17, -+ // Block 0x31, offset 0xc40 -+ 0xc40: 0x1b7a, 0xc41: 0x1b62, 0xc42: 0x1d90, 0xc43: 0x1b4a, 0xc44: 0x1b23, 0xc45: 0x1a96, -+ 0xc46: 0x1aa5, 0xc47: 0x1a75, 0xc48: 0x1d20, 0xc49: 0x1e82, 0xc4a: 0x1b7d, 0xc4b: 0x1b65, -+ 0xc4c: 0x1d94, 0xc4d: 0x1da0, 0xc4e: 0x1b56, 0xc4f: 0x1b2c, 0xc50: 0x1a84, 0xc51: 0x1d4c, -+ 0xc52: 0x1ce0, 0xc53: 0x1ccc, 0xc54: 0x1cfc, 0xc55: 0x1da4, 0xc56: 0x1b59, 0xc57: 0x1af9, -+ 0xc58: 0x1b2f, 0xc59: 0x1b0e, 0xc5a: 0x1b71, 0xc5b: 0x1da8, 0xc5c: 0x1b5c, 0xc5d: 0x1af0, -+ 0xc5e: 0x1b32, 0xc5f: 0x1d6c, 0xc60: 0x1d24, 0xc61: 0x1b44, 0xc62: 0x1d54, 0xc63: 0x1d70, -+ 0xc64: 0x1d28, 0xc65: 0x1b47, 0xc66: 0x1d58, 0xc67: 0x2418, 0xc68: 0x242c, 0xc69: 0x1ac6, -+ 0xc6a: 0x1d50, 0xc6b: 0x1ce4, 0xc6c: 0x1cd0, 0xc6d: 0x1d78, 0xc6e: 0x284d, 0xc6f: 0x28e4, -+ 0xc70: 0x1b89, 0xc71: 0x1b74, 0xc72: 0x1dac, 0xc73: 0x1b5f, 0xc74: 0x1b80, 0xc75: 0x1b68, -+ 0xc76: 0x1d98, 0xc77: 0x1b4d, 0xc78: 0x1b26, 0xc79: 0x1ab1, 0xc7a: 0x1b83, 0xc7b: 0x1b6b, -+ 0xc7c: 0x1d9c, 0xc7d: 0x1b50, 0xc7e: 0x1b29, 0xc7f: 0x1ab4, -+ // Block 0x32, offset 0xc80 -+ 0xc80: 0x1d5c, 0xc81: 0x1ce8, 0xc82: 0x1e7d, 0xc83: 0x1a66, 0xc84: 0x1aea, 0xc85: 0x1aed, -+ 0xc86: 0x2425, 0xc87: 0x1cc4, 0xc88: 0x1af3, 0xc89: 0x1a78, 0xc8a: 0x1b11, 0xc8b: 0x1a7b, -+ 0xc8c: 0x1b1a, 0xc8d: 0x1a99, 0xc8e: 0x1a9c, 0xc8f: 0x1b35, 0xc90: 0x1b3b, 0xc91: 0x1b3e, -+ 0xc92: 0x1d60, 0xc93: 0x1b41, 0xc94: 0x1b53, 0xc95: 0x1d68, 0xc96: 0x1d74, 0xc97: 0x1ac0, -+ 0xc98: 0x1e87, 0xc99: 0x1cec, 0xc9a: 0x1ac3, 0xc9b: 0x1b8c, 0xc9c: 0x1ad5, 0xc9d: 0x1ae4, -+ 0xc9e: 0x2412, 0xc9f: 0x240c, 0xca0: 0x1df1, 0xca1: 0x1e00, 0xca2: 0x1e0f, 0xca3: 0x1e1e, -+ 0xca4: 0x1e2d, 0xca5: 0x1e3c, 0xca6: 0x1e4b, 0xca7: 0x1e5a, 0xca8: 0x1e69, 0xca9: 0x22b6, -+ 0xcaa: 0x22c8, 0xcab: 0x22da, 0xcac: 0x22ec, 0xcad: 0x22f8, 0xcae: 0x2304, 0xcaf: 0x2310, -+ 0xcb0: 0x231c, 0xcb1: 0x2328, 0xcb2: 0x2334, 0xcb3: 0x2370, 0xcb4: 0x237c, 0xcb5: 0x2388, -+ 0xcb6: 0x2394, 0xcb7: 0x23a0, 0xcb8: 0x23ac, 0xcb9: 0x23b2, 0xcba: 0x23b8, 0xcbb: 0x23be, -+ 0xcbc: 0x23c4, 0xcbd: 0x23d6, 0xcbe: 0x23dc, 0xcbf: 0x1d40, -+ // Block 0x33, offset 0xcc0 -+ 0xcc0: 0x1472, 0xcc1: 0x0df6, 0xcc2: 0x14ce, 0xcc3: 0x149a, 0xcc4: 0x0f52, 0xcc5: 0x07e6, -+ 0xcc6: 0x09da, 0xcc7: 0x1726, 0xcc8: 0x1726, 0xcc9: 0x0b06, 0xcca: 0x155a, 0xccb: 0x0a3e, -+ 0xccc: 0x0b02, 0xccd: 0x0cea, 0xcce: 0x10ca, 0xccf: 0x125a, 0xcd0: 0x1392, 0xcd1: 0x13ce, -+ 0xcd2: 0x1402, 0xcd3: 0x1516, 0xcd4: 0x0e6e, 0xcd5: 0x0efa, 0xcd6: 0x0fa6, 0xcd7: 0x103e, -+ 0xcd8: 0x135a, 0xcd9: 0x1542, 0xcda: 0x166e, 0xcdb: 0x080a, 0xcdc: 0x09ae, 0xcdd: 0x0e82, -+ 0xcde: 0x0fca, 0xcdf: 0x138e, 0xce0: 0x16be, 0xce1: 0x0bae, 0xce2: 0x0f72, 0xce3: 0x137e, -+ 0xce4: 0x1412, 0xce5: 0x0d1e, 0xce6: 0x12b6, 0xce7: 0x13da, 0xce8: 0x0c1a, 0xce9: 0x0e0a, -+ 0xcea: 0x0f12, 0xceb: 0x1016, 0xcec: 0x1522, 0xced: 0x084a, 0xcee: 0x08e2, 0xcef: 0x094e, -+ 0xcf0: 0x0d86, 0xcf1: 0x0e7a, 0xcf2: 0x0fc6, 0xcf3: 0x10ea, 0xcf4: 0x1272, 0xcf5: 0x1386, -+ 0xcf6: 0x139e, 0xcf7: 0x14c2, 0xcf8: 0x15ea, 0xcf9: 0x169e, 0xcfa: 0x16ba, 0xcfb: 0x1126, -+ 0xcfc: 0x1166, 0xcfd: 0x121e, 0xcfe: 0x133e, 0xcff: 0x1576, -+ // Block 0x34, offset 0xd00 -+ 0xd00: 0x16c6, 0xd01: 0x1446, 0xd02: 0x0ac2, 0xd03: 0x0c36, 0xd04: 0x11d6, 0xd05: 0x1296, -+ 0xd06: 0x0ffa, 0xd07: 0x112e, 0xd08: 0x1492, 0xd09: 0x15e2, 0xd0a: 0x0abe, 0xd0b: 0x0b8a, -+ 0xd0c: 0x0e72, 0xd0d: 0x0f26, 0xd0e: 0x0f5a, 0xd0f: 0x120e, 0xd10: 0x1236, 0xd11: 0x15a2, -+ 0xd12: 0x094a, 0xd13: 0x12a2, 0xd14: 0x08ee, 0xd15: 0x08ea, 0xd16: 0x1192, 0xd17: 0x1222, -+ 0xd18: 0x1356, 0xd19: 0x15aa, 0xd1a: 0x1462, 0xd1b: 0x0d22, 0xd1c: 0x0e6e, 0xd1d: 0x1452, -+ 0xd1e: 0x07f2, 0xd1f: 0x0b5e, 0xd20: 0x0c8e, 0xd21: 0x102a, 0xd22: 0x10aa, 0xd23: 0x096e, -+ 0xd24: 0x1136, 0xd25: 0x085a, 0xd26: 0x0c72, 0xd27: 0x07d2, 0xd28: 0x0ee6, 0xd29: 0x0d9e, -+ 0xd2a: 0x120a, 0xd2b: 0x09c2, 0xd2c: 0x0aae, 0xd2d: 0x10f6, 0xd2e: 0x135e, 0xd2f: 0x1436, -+ 0xd30: 0x0eb2, 0xd31: 0x14f2, 0xd32: 0x0ede, 0xd33: 0x0d32, 0xd34: 0x1316, 0xd35: 0x0d52, -+ 0xd36: 0x10a6, 0xd37: 0x0826, 0xd38: 0x08a2, 0xd39: 0x08e6, 0xd3a: 0x0e4e, 0xd3b: 0x11f6, -+ 0xd3c: 0x12ee, 0xd3d: 0x1442, 0xd3e: 0x1556, 0xd3f: 0x0956, -+ // Block 0x35, offset 0xd40 -+ 0xd40: 0x0a0a, 0xd41: 0x0b12, 0xd42: 0x0c2a, 0xd43: 0x0dba, 0xd44: 0x0f76, 0xd45: 0x113a, -+ 0xd46: 0x1592, 0xd47: 0x1676, 0xd48: 0x16ca, 0xd49: 0x16e2, 0xd4a: 0x0932, 0xd4b: 0x0dee, -+ 0xd4c: 0x0e9e, 0xd4d: 0x14e6, 0xd4e: 0x0bf6, 0xd4f: 0x0cd2, 0xd50: 0x0cee, 0xd51: 0x0d7e, -+ 0xd52: 0x0f66, 0xd53: 0x0fb2, 0xd54: 0x1062, 0xd55: 0x1186, 0xd56: 0x122a, 0xd57: 0x128e, -+ 0xd58: 0x14d6, 0xd59: 0x1366, 0xd5a: 0x14fe, 0xd5b: 0x157a, 0xd5c: 0x090a, 0xd5d: 0x0936, -+ 0xd5e: 0x0a1e, 0xd5f: 0x0fa2, 0xd60: 0x13ee, 0xd61: 0x1436, 0xd62: 0x0c16, 0xd63: 0x0c86, -+ 0xd64: 0x0d4a, 0xd65: 0x0eaa, 0xd66: 0x11d2, 0xd67: 0x101e, 0xd68: 0x0836, 0xd69: 0x0a7a, -+ 0xd6a: 0x0b5e, 0xd6b: 0x0bc2, 0xd6c: 0x0c92, 0xd6d: 0x103a, 0xd6e: 0x1056, 0xd6f: 0x1266, -+ 0xd70: 0x1286, 0xd71: 0x155e, 0xd72: 0x15de, 0xd73: 0x15ee, 0xd74: 0x162a, 0xd75: 0x084e, -+ 0xd76: 0x117a, 0xd77: 0x154a, 0xd78: 0x15c6, 0xd79: 0x0caa, 0xd7a: 0x0812, 0xd7b: 0x0872, -+ 0xd7c: 0x0b62, 0xd7d: 0x0b82, 0xd7e: 0x0daa, 0xd7f: 0x0e6e, -+ // Block 0x36, offset 0xd80 -+ 0xd80: 0x0fbe, 0xd81: 0x10c6, 0xd82: 0x1372, 0xd83: 0x1512, 0xd84: 0x171e, 0xd85: 0x0dde, -+ 0xd86: 0x159e, 0xd87: 0x092e, 0xd88: 0x0e2a, 0xd89: 0x0e36, 0xd8a: 0x0f0a, 0xd8b: 0x0f42, -+ 0xd8c: 0x1046, 0xd8d: 0x10a2, 0xd8e: 0x1122, 0xd8f: 0x1206, 0xd90: 0x1636, 0xd91: 0x08aa, -+ 0xd92: 0x0cfe, 0xd93: 0x15ae, 0xd94: 0x0862, 0xd95: 0x0ba6, 0xd96: 0x0f2a, 0xd97: 0x14da, -+ 0xd98: 0x0c62, 0xd99: 0x0cb2, 0xd9a: 0x0e3e, 0xd9b: 0x102a, 0xd9c: 0x15b6, 0xd9d: 0x0912, -+ 0xd9e: 0x09fa, 0xd9f: 0x0b92, 0xda0: 0x0dce, 0xda1: 0x0e1a, 0xda2: 0x0e5a, 0xda3: 0x0eee, -+ 0xda4: 0x1042, 0xda5: 0x10b6, 0xda6: 0x1252, 0xda7: 0x13f2, 0xda8: 0x13fe, 0xda9: 0x1552, -+ 0xdaa: 0x15d2, 0xdab: 0x097e, 0xdac: 0x0f46, 0xdad: 0x09fe, 0xdae: 0x0fc2, 0xdaf: 0x1066, -+ 0xdb0: 0x1382, 0xdb1: 0x15ba, 0xdb2: 0x16a6, 0xdb3: 0x16ce, 0xdb4: 0x0e32, 0xdb5: 0x0f22, -+ 0xdb6: 0x12be, 0xdb7: 0x11b2, 0xdb8: 0x11be, 0xdb9: 0x11e2, 0xdba: 0x1012, 0xdbb: 0x0f9a, -+ 0xdbc: 0x145e, 0xdbd: 0x082e, 0xdbe: 0x1326, 0xdbf: 0x0916, -+ // Block 0x37, offset 0xdc0 -+ 0xdc0: 0x0906, 0xdc1: 0x0c06, 0xdc2: 0x0d26, 0xdc3: 0x11ee, 0xdc4: 0x0b4e, 0xdc5: 0x0efe, -+ 0xdc6: 0x0dea, 0xdc7: 0x14e2, 0xdc8: 0x13e2, 0xdc9: 0x15a6, 0xdca: 0x141e, 0xdcb: 0x0c22, -+ 0xdcc: 0x0882, 0xdcd: 0x0a56, 0xdd0: 0x0aaa, -+ 0xdd2: 0x0dda, 0xdd5: 0x08f2, 0xdd6: 0x101a, 0xdd7: 0x10de, -+ 0xdd8: 0x1142, 0xdd9: 0x115e, 0xdda: 0x1162, 0xddb: 0x1176, 0xddc: 0x15f6, 0xddd: 0x11e6, -+ 0xdde: 0x126a, 0xde0: 0x138a, 0xde2: 0x144e, -+ 0xde5: 0x1502, 0xde6: 0x152e, -+ 0xdea: 0x164a, 0xdeb: 0x164e, 0xdec: 0x1652, 0xded: 0x16b6, 0xdee: 0x1526, 0xdef: 0x15c2, -+ 0xdf0: 0x0852, 0xdf1: 0x0876, 0xdf2: 0x088a, 0xdf3: 0x0946, 0xdf4: 0x0952, 0xdf5: 0x0992, -+ 0xdf6: 0x0a46, 0xdf7: 0x0a62, 0xdf8: 0x0a6a, 0xdf9: 0x0aa6, 0xdfa: 0x0ab2, 0xdfb: 0x0b8e, -+ 0xdfc: 0x0b96, 0xdfd: 0x0c9e, 0xdfe: 0x0cc6, 0xdff: 0x0cce, -+ // Block 0x38, offset 0xe00 -+ 0xe00: 0x0ce6, 0xe01: 0x0d92, 0xe02: 0x0dc2, 0xe03: 0x0de2, 0xe04: 0x0e52, 0xe05: 0x0f16, -+ 0xe06: 0x0f32, 0xe07: 0x0f62, 0xe08: 0x0fb6, 0xe09: 0x0fd6, 0xe0a: 0x104a, 0xe0b: 0x112a, -+ 0xe0c: 0x1146, 0xe0d: 0x114e, 0xe0e: 0x114a, 0xe0f: 0x1152, 0xe10: 0x1156, 0xe11: 0x115a, -+ 0xe12: 0x116e, 0xe13: 0x1172, 0xe14: 0x1196, 0xe15: 0x11aa, 0xe16: 0x11c6, 0xe17: 0x122a, -+ 0xe18: 0x1232, 0xe19: 0x123a, 0xe1a: 0x124e, 0xe1b: 0x1276, 0xe1c: 0x12c6, 0xe1d: 0x12fa, -+ 0xe1e: 0x12fa, 0xe1f: 0x1362, 0xe20: 0x140a, 0xe21: 0x1422, 0xe22: 0x1456, 0xe23: 0x145a, -+ 0xe24: 0x149e, 0xe25: 0x14a2, 0xe26: 0x14fa, 0xe27: 0x1502, 0xe28: 0x15d6, 0xe29: 0x161a, -+ 0xe2a: 0x1632, 0xe2b: 0x0c96, 0xe2c: 0x184b, 0xe2d: 0x12de, -+ 0xe30: 0x07da, 0xe31: 0x08de, 0xe32: 0x089e, 0xe33: 0x0846, 0xe34: 0x0886, 0xe35: 0x08b2, -+ 0xe36: 0x0942, 0xe37: 0x095e, 0xe38: 0x0a46, 0xe39: 0x0a32, 0xe3a: 0x0a42, 0xe3b: 0x0a5e, -+ 0xe3c: 0x0aaa, 0xe3d: 0x0aba, 0xe3e: 0x0afe, 0xe3f: 0x0b0a, -+ // Block 0x39, offset 0xe40 -+ 0xe40: 0x0b26, 0xe41: 0x0b36, 0xe42: 0x0c1e, 0xe43: 0x0c26, 0xe44: 0x0c56, 0xe45: 0x0c76, -+ 0xe46: 0x0ca6, 0xe47: 0x0cbe, 0xe48: 0x0cae, 0xe49: 0x0cce, 0xe4a: 0x0cc2, 0xe4b: 0x0ce6, -+ 0xe4c: 0x0d02, 0xe4d: 0x0d5a, 0xe4e: 0x0d66, 0xe4f: 0x0d6e, 0xe50: 0x0d96, 0xe51: 0x0dda, -+ 0xe52: 0x0e0a, 0xe53: 0x0e0e, 0xe54: 0x0e22, 0xe55: 0x0ea2, 0xe56: 0x0eb2, 0xe57: 0x0f0a, -+ 0xe58: 0x0f56, 0xe59: 0x0f4e, 0xe5a: 0x0f62, 0xe5b: 0x0f7e, 0xe5c: 0x0fb6, 0xe5d: 0x110e, -+ 0xe5e: 0x0fda, 0xe5f: 0x100e, 0xe60: 0x101a, 0xe61: 0x105a, 0xe62: 0x1076, 0xe63: 0x109a, -+ 0xe64: 0x10be, 0xe65: 0x10c2, 0xe66: 0x10de, 0xe67: 0x10e2, 0xe68: 0x10f2, 0xe69: 0x1106, -+ 0xe6a: 0x1102, 0xe6b: 0x1132, 0xe6c: 0x11ae, 0xe6d: 0x11c6, 0xe6e: 0x11de, 0xe6f: 0x1216, -+ 0xe70: 0x122a, 0xe71: 0x1246, 0xe72: 0x1276, 0xe73: 0x132a, 0xe74: 0x1352, 0xe75: 0x13c6, -+ 0xe76: 0x140e, 0xe77: 0x141a, 0xe78: 0x1422, 0xe79: 0x143a, 0xe7a: 0x144e, 0xe7b: 0x143e, -+ 0xe7c: 0x1456, 0xe7d: 0x1452, 0xe7e: 0x144a, 0xe7f: 0x145a, -+ // Block 0x3a, offset 0xe80 -+ 0xe80: 0x1466, 0xe81: 0x14a2, 0xe82: 0x14de, 0xe83: 0x150e, 0xe84: 0x1546, 0xe85: 0x1566, -+ 0xe86: 0x15b2, 0xe87: 0x15d6, 0xe88: 0x15f6, 0xe89: 0x160a, 0xe8a: 0x161a, 0xe8b: 0x1626, -+ 0xe8c: 0x1632, 0xe8d: 0x1686, 0xe8e: 0x1726, 0xe8f: 0x17e2, 0xe90: 0x17dd, 0xe91: 0x180f, -+ 0xe92: 0x0702, 0xe93: 0x072a, 0xe94: 0x072e, 0xe95: 0x1891, 0xe96: 0x18be, 0xe97: 0x1936, -+ 0xe98: 0x1712, 0xe99: 0x1722, -+ // Block 0x3b, offset 0xec0 -+ 0xec0: 0x1b05, 0xec1: 0x1b08, 0xec2: 0x1b0b, 0xec3: 0x1d38, 0xec4: 0x1d3c, 0xec5: 0x1b8f, -+ 0xec6: 0x1b8f, -+ 0xed3: 0x1ea5, 0xed4: 0x1e96, 0xed5: 0x1e9b, 0xed6: 0x1eaa, 0xed7: 0x1ea0, -+ 0xedd: 0x44d1, -+ 0xede: 0x8116, 0xedf: 0x4543, 0xee0: 0x0320, 0xee1: 0x0308, 0xee2: 0x0311, 0xee3: 0x0314, -+ 0xee4: 0x0317, 0xee5: 0x031a, 0xee6: 0x031d, 0xee7: 0x0323, 0xee8: 0x0326, 0xee9: 0x0017, -+ 0xeea: 0x4531, 0xeeb: 0x4537, 0xeec: 0x4635, 0xeed: 0x463d, 0xeee: 0x4489, 0xeef: 0x448f, -+ 0xef0: 0x4495, 0xef1: 0x449b, 0xef2: 0x44a7, 0xef3: 0x44ad, 0xef4: 0x44b3, 0xef5: 0x44bf, -+ 0xef6: 0x44c5, 0xef8: 0x44cb, 0xef9: 0x44d7, 0xefa: 0x44dd, 0xefb: 0x44e3, -+ 0xefc: 0x44ef, 0xefe: 0x44f5, -+ // Block 0x3c, offset 0xf00 -+ 0xf00: 0x44fb, 0xf01: 0x4501, 0xf03: 0x4507, 0xf04: 0x450d, -+ 0xf06: 0x4519, 0xf07: 0x451f, 0xf08: 0x4525, 0xf09: 0x452b, 0xf0a: 0x453d, 0xf0b: 0x44b9, -+ 0xf0c: 0x44a1, 0xf0d: 0x44e9, 0xf0e: 0x4513, 0xf0f: 0x1eaf, 0xf10: 0x038c, 0xf11: 0x038c, -+ 0xf12: 0x0395, 0xf13: 0x0395, 0xf14: 0x0395, 0xf15: 0x0395, 0xf16: 0x0398, 0xf17: 0x0398, -+ 0xf18: 0x0398, 0xf19: 0x0398, 0xf1a: 0x039e, 0xf1b: 0x039e, 0xf1c: 0x039e, 0xf1d: 0x039e, -+ 0xf1e: 0x0392, 0xf1f: 0x0392, 0xf20: 0x0392, 0xf21: 0x0392, 0xf22: 0x039b, 0xf23: 0x039b, -+ 0xf24: 0x039b, 0xf25: 0x039b, 0xf26: 0x038f, 0xf27: 0x038f, 0xf28: 0x038f, 0xf29: 0x038f, -+ 0xf2a: 0x03c2, 0xf2b: 0x03c2, 0xf2c: 0x03c2, 0xf2d: 0x03c2, 0xf2e: 0x03c5, 0xf2f: 0x03c5, -+ 0xf30: 0x03c5, 0xf31: 0x03c5, 0xf32: 0x03a4, 0xf33: 0x03a4, 0xf34: 0x03a4, 0xf35: 0x03a4, -+ 0xf36: 0x03a1, 0xf37: 0x03a1, 0xf38: 0x03a1, 0xf39: 0x03a1, 0xf3a: 0x03a7, 0xf3b: 0x03a7, -+ 0xf3c: 0x03a7, 0xf3d: 0x03a7, 0xf3e: 0x03aa, 0xf3f: 0x03aa, -+ // Block 0x3d, offset 0xf40 -+ 0xf40: 0x03aa, 0xf41: 0x03aa, 0xf42: 0x03b3, 0xf43: 0x03b3, 0xf44: 0x03b0, 0xf45: 0x03b0, -+ 0xf46: 0x03b6, 0xf47: 0x03b6, 0xf48: 0x03ad, 0xf49: 0x03ad, 0xf4a: 0x03bc, 0xf4b: 0x03bc, -+ 0xf4c: 0x03b9, 0xf4d: 0x03b9, 0xf4e: 0x03c8, 0xf4f: 0x03c8, 0xf50: 0x03c8, 0xf51: 0x03c8, -+ 0xf52: 0x03ce, 0xf53: 0x03ce, 0xf54: 0x03ce, 0xf55: 0x03ce, 0xf56: 0x03d4, 0xf57: 0x03d4, -+ 0xf58: 0x03d4, 0xf59: 0x03d4, 0xf5a: 0x03d1, 0xf5b: 0x03d1, 0xf5c: 0x03d1, 0xf5d: 0x03d1, -+ 0xf5e: 0x03d7, 0xf5f: 0x03d7, 0xf60: 0x03da, 0xf61: 0x03da, 0xf62: 0x03da, 0xf63: 0x03da, -+ 0xf64: 0x45af, 0xf65: 0x45af, 0xf66: 0x03e0, 0xf67: 0x03e0, 0xf68: 0x03e0, 0xf69: 0x03e0, -+ 0xf6a: 0x03dd, 0xf6b: 0x03dd, 0xf6c: 0x03dd, 0xf6d: 0x03dd, 0xf6e: 0x03fb, 0xf6f: 0x03fb, -+ 0xf70: 0x45a9, 0xf71: 0x45a9, -+ // Block 0x3e, offset 0xf80 -+ 0xf93: 0x03cb, 0xf94: 0x03cb, 0xf95: 0x03cb, 0xf96: 0x03cb, 0xf97: 0x03e9, -+ 0xf98: 0x03e9, 0xf99: 0x03e6, 0xf9a: 0x03e6, 0xf9b: 0x03ec, 0xf9c: 0x03ec, 0xf9d: 0x217f, -+ 0xf9e: 0x03f2, 0xf9f: 0x03f2, 0xfa0: 0x03e3, 0xfa1: 0x03e3, 0xfa2: 0x03ef, 0xfa3: 0x03ef, -+ 0xfa4: 0x03f8, 0xfa5: 0x03f8, 0xfa6: 0x03f8, 0xfa7: 0x03f8, 0xfa8: 0x0380, 0xfa9: 0x0380, -+ 0xfaa: 0x26da, 0xfab: 0x26da, 0xfac: 0x274a, 0xfad: 0x274a, 0xfae: 0x2719, 0xfaf: 0x2719, -+ 0xfb0: 0x2735, 0xfb1: 0x2735, 0xfb2: 0x272e, 0xfb3: 0x272e, 0xfb4: 0x273c, 0xfb5: 0x273c, -+ 0xfb6: 0x2743, 0xfb7: 0x2743, 0xfb8: 0x2743, 0xfb9: 0x2720, 0xfba: 0x2720, 0xfbb: 0x2720, -+ 0xfbc: 0x03f5, 0xfbd: 0x03f5, 0xfbe: 0x03f5, 0xfbf: 0x03f5, -+ // Block 0x3f, offset 0xfc0 -+ 0xfc0: 0x26e1, 0xfc1: 0x26e8, 0xfc2: 0x2704, 0xfc3: 0x2720, 0xfc4: 0x2727, 0xfc5: 0x1eb9, -+ 0xfc6: 0x1ebe, 0xfc7: 0x1ec3, 0xfc8: 0x1ed2, 0xfc9: 0x1ee1, 0xfca: 0x1ee6, 0xfcb: 0x1eeb, -+ 0xfcc: 0x1ef0, 0xfcd: 0x1ef5, 0xfce: 0x1f04, 0xfcf: 0x1f13, 0xfd0: 0x1f18, 0xfd1: 0x1f1d, -+ 0xfd2: 0x1f2c, 0xfd3: 0x1f3b, 0xfd4: 0x1f40, 0xfd5: 0x1f45, 0xfd6: 0x1f4a, 0xfd7: 0x1f59, -+ 0xfd8: 0x1f5e, 0xfd9: 0x1f6d, 0xfda: 0x1f72, 0xfdb: 0x1f77, 0xfdc: 0x1f86, 0xfdd: 0x1f8b, -+ 0xfde: 0x1f90, 0xfdf: 0x1f9a, 0xfe0: 0x1fd6, 0xfe1: 0x1fe5, 0xfe2: 0x1ff4, 0xfe3: 0x1ff9, -+ 0xfe4: 0x1ffe, 0xfe5: 0x2008, 0xfe6: 0x2017, 0xfe7: 0x201c, 0xfe8: 0x202b, 0xfe9: 0x2030, -+ 0xfea: 0x2035, 0xfeb: 0x2044, 0xfec: 0x2049, 0xfed: 0x2058, 0xfee: 0x205d, 0xfef: 0x2062, -+ 0xff0: 0x2067, 0xff1: 0x206c, 0xff2: 0x2071, 0xff3: 0x2076, 0xff4: 0x207b, 0xff5: 0x2080, -+ 0xff6: 0x2085, 0xff7: 0x208a, 0xff8: 0x208f, 0xff9: 0x2094, 0xffa: 0x2099, 0xffb: 0x209e, -+ 0xffc: 0x20a3, 0xffd: 0x20a8, 0xffe: 0x20ad, 0xfff: 0x20b7, -+ // Block 0x40, offset 0x1000 -+ 0x1000: 0x20bc, 0x1001: 0x20c1, 0x1002: 0x20c6, 0x1003: 0x20d0, 0x1004: 0x20d5, 0x1005: 0x20df, -+ 0x1006: 0x20e4, 0x1007: 0x20e9, 0x1008: 0x20ee, 0x1009: 0x20f3, 0x100a: 0x20f8, 0x100b: 0x20fd, -+ 0x100c: 0x2102, 0x100d: 0x2107, 0x100e: 0x2116, 0x100f: 0x2125, 0x1010: 0x212a, 0x1011: 0x212f, -+ 0x1012: 0x2134, 0x1013: 0x2139, 0x1014: 0x213e, 0x1015: 0x2148, 0x1016: 0x214d, 0x1017: 0x2152, -+ 0x1018: 0x2161, 0x1019: 0x2170, 0x101a: 0x2175, 0x101b: 0x4561, 0x101c: 0x4567, 0x101d: 0x459d, -+ 0x101e: 0x45f4, 0x101f: 0x45fb, 0x1020: 0x4602, 0x1021: 0x4609, 0x1022: 0x4610, 0x1023: 0x4617, -+ 0x1024: 0x26f6, 0x1025: 0x26fd, 0x1026: 0x2704, 0x1027: 0x270b, 0x1028: 0x2720, 0x1029: 0x2727, -+ 0x102a: 0x1ec8, 0x102b: 0x1ecd, 0x102c: 0x1ed2, 0x102d: 0x1ed7, 0x102e: 0x1ee1, 0x102f: 0x1ee6, -+ 0x1030: 0x1efa, 0x1031: 0x1eff, 0x1032: 0x1f04, 0x1033: 0x1f09, 0x1034: 0x1f13, 0x1035: 0x1f18, -+ 0x1036: 0x1f22, 0x1037: 0x1f27, 0x1038: 0x1f2c, 0x1039: 0x1f31, 0x103a: 0x1f3b, 0x103b: 0x1f40, -+ 0x103c: 0x206c, 0x103d: 0x2071, 0x103e: 0x2080, 0x103f: 0x2085, -+ // Block 0x41, offset 0x1040 -+ 0x1040: 0x208a, 0x1041: 0x209e, 0x1042: 0x20a3, 0x1043: 0x20a8, 0x1044: 0x20ad, 0x1045: 0x20c6, -+ 0x1046: 0x20d0, 0x1047: 0x20d5, 0x1048: 0x20da, 0x1049: 0x20ee, 0x104a: 0x210c, 0x104b: 0x2111, -+ 0x104c: 0x2116, 0x104d: 0x211b, 0x104e: 0x2125, 0x104f: 0x212a, 0x1050: 0x459d, 0x1051: 0x2157, -+ 0x1052: 0x215c, 0x1053: 0x2161, 0x1054: 0x2166, 0x1055: 0x2170, 0x1056: 0x2175, 0x1057: 0x26e1, -+ 0x1058: 0x26e8, 0x1059: 0x26ef, 0x105a: 0x2704, 0x105b: 0x2712, 0x105c: 0x1eb9, 0x105d: 0x1ebe, -+ 0x105e: 0x1ec3, 0x105f: 0x1ed2, 0x1060: 0x1edc, 0x1061: 0x1eeb, 0x1062: 0x1ef0, 0x1063: 0x1ef5, -+ 0x1064: 0x1f04, 0x1065: 0x1f0e, 0x1066: 0x1f2c, 0x1067: 0x1f45, 0x1068: 0x1f4a, 0x1069: 0x1f59, -+ 0x106a: 0x1f5e, 0x106b: 0x1f6d, 0x106c: 0x1f77, 0x106d: 0x1f86, 0x106e: 0x1f8b, 0x106f: 0x1f90, -+ 0x1070: 0x1f9a, 0x1071: 0x1fd6, 0x1072: 0x1fdb, 0x1073: 0x1fe5, 0x1074: 0x1ff4, 0x1075: 0x1ff9, -+ 0x1076: 0x1ffe, 0x1077: 0x2008, 0x1078: 0x2017, 0x1079: 0x202b, 0x107a: 0x2030, 0x107b: 0x2035, -+ 0x107c: 0x2044, 0x107d: 0x2049, 0x107e: 0x2058, 0x107f: 0x205d, -+ // Block 0x42, offset 0x1080 -+ 0x1080: 0x2062, 0x1081: 0x2067, 0x1082: 0x2076, 0x1083: 0x207b, 0x1084: 0x208f, 0x1085: 0x2094, -+ 0x1086: 0x2099, 0x1087: 0x209e, 0x1088: 0x20a3, 0x1089: 0x20b7, 0x108a: 0x20bc, 0x108b: 0x20c1, -+ 0x108c: 0x20c6, 0x108d: 0x20cb, 0x108e: 0x20df, 0x108f: 0x20e4, 0x1090: 0x20e9, 0x1091: 0x20ee, -+ 0x1092: 0x20fd, 0x1093: 0x2102, 0x1094: 0x2107, 0x1095: 0x2116, 0x1096: 0x2120, 0x1097: 0x212f, -+ 0x1098: 0x2134, 0x1099: 0x4591, 0x109a: 0x2148, 0x109b: 0x214d, 0x109c: 0x2152, 0x109d: 0x2161, -+ 0x109e: 0x216b, 0x109f: 0x2704, 0x10a0: 0x2712, 0x10a1: 0x1ed2, 0x10a2: 0x1edc, 0x10a3: 0x1f04, -+ 0x10a4: 0x1f0e, 0x10a5: 0x1f2c, 0x10a6: 0x1f36, 0x10a7: 0x1f9a, 0x10a8: 0x1f9f, 0x10a9: 0x1fc2, -+ 0x10aa: 0x1fc7, 0x10ab: 0x209e, 0x10ac: 0x20a3, 0x10ad: 0x20c6, 0x10ae: 0x2116, 0x10af: 0x2120, -+ 0x10b0: 0x2161, 0x10b1: 0x216b, 0x10b2: 0x4645, 0x10b3: 0x464d, 0x10b4: 0x4655, 0x10b5: 0x2021, -+ 0x10b6: 0x2026, 0x10b7: 0x203a, 0x10b8: 0x203f, 0x10b9: 0x204e, 0x10ba: 0x2053, 0x10bb: 0x1fa4, -+ 0x10bc: 0x1fa9, 0x10bd: 0x1fcc, 0x10be: 0x1fd1, 0x10bf: 0x1f63, -+ // Block 0x43, offset 0x10c0 -+ 0x10c0: 0x1f68, 0x10c1: 0x1f4f, 0x10c2: 0x1f54, 0x10c3: 0x1f7c, 0x10c4: 0x1f81, 0x10c5: 0x1fea, -+ 0x10c6: 0x1fef, 0x10c7: 0x200d, 0x10c8: 0x2012, 0x10c9: 0x1fae, 0x10ca: 0x1fb3, 0x10cb: 0x1fb8, -+ 0x10cc: 0x1fc2, 0x10cd: 0x1fbd, 0x10ce: 0x1f95, 0x10cf: 0x1fe0, 0x10d0: 0x2003, 0x10d1: 0x2021, -+ 0x10d2: 0x2026, 0x10d3: 0x203a, 0x10d4: 0x203f, 0x10d5: 0x204e, 0x10d6: 0x2053, 0x10d7: 0x1fa4, -+ 0x10d8: 0x1fa9, 0x10d9: 0x1fcc, 0x10da: 0x1fd1, 0x10db: 0x1f63, 0x10dc: 0x1f68, 0x10dd: 0x1f4f, -+ 0x10de: 0x1f54, 0x10df: 0x1f7c, 0x10e0: 0x1f81, 0x10e1: 0x1fea, 0x10e2: 0x1fef, 0x10e3: 0x200d, -+ 0x10e4: 0x2012, 0x10e5: 0x1fae, 0x10e6: 0x1fb3, 0x10e7: 0x1fb8, 0x10e8: 0x1fc2, 0x10e9: 0x1fbd, -+ 0x10ea: 0x1f95, 0x10eb: 0x1fe0, 0x10ec: 0x2003, 0x10ed: 0x1fae, 0x10ee: 0x1fb3, 0x10ef: 0x1fb8, -+ 0x10f0: 0x1fc2, 0x10f1: 0x1f9f, 0x10f2: 0x1fc7, 0x10f3: 0x201c, 0x10f4: 0x1f86, 0x10f5: 0x1f8b, -+ 0x10f6: 0x1f90, 0x10f7: 0x1fae, 0x10f8: 0x1fb3, 0x10f9: 0x1fb8, 0x10fa: 0x201c, 0x10fb: 0x202b, -+ 0x10fc: 0x4549, 0x10fd: 0x4549, -+ // Block 0x44, offset 0x1100 -+ 0x1110: 0x2441, 0x1111: 0x2456, -+ 0x1112: 0x2456, 0x1113: 0x245d, 0x1114: 0x2464, 0x1115: 0x2479, 0x1116: 0x2480, 0x1117: 0x2487, -+ 0x1118: 0x24aa, 0x1119: 0x24aa, 0x111a: 0x24cd, 0x111b: 0x24c6, 0x111c: 0x24e2, 0x111d: 0x24d4, -+ 0x111e: 0x24db, 0x111f: 0x24fe, 0x1120: 0x24fe, 0x1121: 0x24f7, 0x1122: 0x2505, 0x1123: 0x2505, -+ 0x1124: 0x252f, 0x1125: 0x252f, 0x1126: 0x254b, 0x1127: 0x2513, 0x1128: 0x2513, 0x1129: 0x250c, -+ 0x112a: 0x2521, 0x112b: 0x2521, 0x112c: 0x2528, 0x112d: 0x2528, 0x112e: 0x2552, 0x112f: 0x2560, -+ 0x1130: 0x2560, 0x1131: 0x2567, 0x1132: 0x2567, 0x1133: 0x256e, 0x1134: 0x2575, 0x1135: 0x257c, -+ 0x1136: 0x2583, 0x1137: 0x2583, 0x1138: 0x258a, 0x1139: 0x2598, 0x113a: 0x25a6, 0x113b: 0x259f, -+ 0x113c: 0x25ad, 0x113d: 0x25ad, 0x113e: 0x25c2, 0x113f: 0x25c9, -+ // Block 0x45, offset 0x1140 -+ 0x1140: 0x25fa, 0x1141: 0x2608, 0x1142: 0x2601, 0x1143: 0x25e5, 0x1144: 0x25e5, 0x1145: 0x260f, -+ 0x1146: 0x260f, 0x1147: 0x2616, 0x1148: 0x2616, 0x1149: 0x2640, 0x114a: 0x2647, 0x114b: 0x264e, -+ 0x114c: 0x2624, 0x114d: 0x2632, 0x114e: 0x2655, 0x114f: 0x265c, -+ 0x1152: 0x262b, 0x1153: 0x26b0, 0x1154: 0x26b7, 0x1155: 0x268d, 0x1156: 0x2694, 0x1157: 0x2678, -+ 0x1158: 0x2678, 0x1159: 0x267f, 0x115a: 0x26a9, 0x115b: 0x26a2, 0x115c: 0x26cc, 0x115d: 0x26cc, -+ 0x115e: 0x243a, 0x115f: 0x244f, 0x1160: 0x2448, 0x1161: 0x2472, 0x1162: 0x246b, 0x1163: 0x2495, -+ 0x1164: 0x248e, 0x1165: 0x24b8, 0x1166: 0x249c, 0x1167: 0x24b1, 0x1168: 0x24e9, 0x1169: 0x2536, -+ 0x116a: 0x251a, 0x116b: 0x2559, 0x116c: 0x25f3, 0x116d: 0x261d, 0x116e: 0x26c5, 0x116f: 0x26be, -+ 0x1170: 0x26d3, 0x1171: 0x266a, 0x1172: 0x25d0, 0x1173: 0x269b, 0x1174: 0x25c2, 0x1175: 0x25fa, -+ 0x1176: 0x2591, 0x1177: 0x25de, 0x1178: 0x2671, 0x1179: 0x2663, 0x117a: 0x25ec, 0x117b: 0x25d7, -+ 0x117c: 0x25ec, 0x117d: 0x2671, 0x117e: 0x24a3, 0x117f: 0x24bf, -+ // Block 0x46, offset 0x1180 -+ 0x1180: 0x2639, 0x1181: 0x25b4, 0x1182: 0x2433, 0x1183: 0x25d7, 0x1184: 0x257c, 0x1185: 0x254b, -+ 0x1186: 0x24f0, 0x1187: 0x2686, -+ 0x11b0: 0x2544, 0x11b1: 0x25bb, 0x11b2: 0x28f6, 0x11b3: 0x28ed, 0x11b4: 0x2923, 0x11b5: 0x2911, -+ 0x11b6: 0x28ff, 0x11b7: 0x291a, 0x11b8: 0x292c, 0x11b9: 0x253d, 0x11ba: 0x2db3, 0x11bb: 0x2c33, -+ 0x11bc: 0x2908, -+ // Block 0x47, offset 0x11c0 -+ 0x11d0: 0x0019, 0x11d1: 0x057e, -+ 0x11d2: 0x0582, 0x11d3: 0x0035, 0x11d4: 0x0037, 0x11d5: 0x0003, 0x11d6: 0x003f, 0x11d7: 0x05ba, -+ 0x11d8: 0x05be, 0x11d9: 0x1c8c, -+ 0x11e0: 0x8133, 0x11e1: 0x8133, 0x11e2: 0x8133, 0x11e3: 0x8133, -+ 0x11e4: 0x8133, 0x11e5: 0x8133, 0x11e6: 0x8133, 0x11e7: 0x812e, 0x11e8: 0x812e, 0x11e9: 0x812e, -+ 0x11ea: 0x812e, 0x11eb: 0x812e, 0x11ec: 0x812e, 0x11ed: 0x812e, 0x11ee: 0x8133, 0x11ef: 0x8133, -+ 0x11f0: 0x19a0, 0x11f1: 0x053a, 0x11f2: 0x0536, 0x11f3: 0x007f, 0x11f4: 0x007f, 0x11f5: 0x0011, -+ 0x11f6: 0x0013, 0x11f7: 0x00b7, 0x11f8: 0x00bb, 0x11f9: 0x05b2, 0x11fa: 0x05b6, 0x11fb: 0x05a6, -+ 0x11fc: 0x05aa, 0x11fd: 0x058e, 0x11fe: 0x0592, 0x11ff: 0x0586, -+ // Block 0x48, offset 0x1200 -+ 0x1200: 0x058a, 0x1201: 0x0596, 0x1202: 0x059a, 0x1203: 0x059e, 0x1204: 0x05a2, -+ 0x1207: 0x0077, 0x1208: 0x007b, 0x1209: 0x43aa, 0x120a: 0x43aa, 0x120b: 0x43aa, -+ 0x120c: 0x43aa, 0x120d: 0x007f, 0x120e: 0x007f, 0x120f: 0x007f, 0x1210: 0x0019, 0x1211: 0x057e, -+ 0x1212: 0x001d, 0x1214: 0x0037, 0x1215: 0x0035, 0x1216: 0x003f, 0x1217: 0x0003, -+ 0x1218: 0x053a, 0x1219: 0x0011, 0x121a: 0x0013, 0x121b: 0x00b7, 0x121c: 0x00bb, 0x121d: 0x05b2, -+ 0x121e: 0x05b6, 0x121f: 0x0007, 0x1220: 0x000d, 0x1221: 0x0015, 0x1222: 0x0017, 0x1223: 0x001b, -+ 0x1224: 0x0039, 0x1225: 0x003d, 0x1226: 0x003b, 0x1228: 0x0079, 0x1229: 0x0009, -+ 0x122a: 0x000b, 0x122b: 0x0041, -+ 0x1230: 0x43eb, 0x1231: 0x456d, 0x1232: 0x43f0, 0x1234: 0x43f5, -+ 0x1236: 0x43fa, 0x1237: 0x4573, 0x1238: 0x43ff, 0x1239: 0x4579, 0x123a: 0x4404, 0x123b: 0x457f, -+ 0x123c: 0x4409, 0x123d: 0x4585, 0x123e: 0x440e, 0x123f: 0x458b, -+ // Block 0x49, offset 0x1240 -+ 0x1240: 0x0329, 0x1241: 0x454f, 0x1242: 0x454f, 0x1243: 0x4555, 0x1244: 0x4555, 0x1245: 0x4597, -+ 0x1246: 0x4597, 0x1247: 0x455b, 0x1248: 0x455b, 0x1249: 0x45a3, 0x124a: 0x45a3, 0x124b: 0x45a3, -+ 0x124c: 0x45a3, 0x124d: 0x032c, 0x124e: 0x032c, 0x124f: 0x032f, 0x1250: 0x032f, 0x1251: 0x032f, -+ 0x1252: 0x032f, 0x1253: 0x0332, 0x1254: 0x0332, 0x1255: 0x0335, 0x1256: 0x0335, 0x1257: 0x0335, -+ 0x1258: 0x0335, 0x1259: 0x0338, 0x125a: 0x0338, 0x125b: 0x0338, 0x125c: 0x0338, 0x125d: 0x033b, -+ 0x125e: 0x033b, 0x125f: 0x033b, 0x1260: 0x033b, 0x1261: 0x033e, 0x1262: 0x033e, 0x1263: 0x033e, -+ 0x1264: 0x033e, 0x1265: 0x0341, 0x1266: 0x0341, 0x1267: 0x0341, 0x1268: 0x0341, 0x1269: 0x0344, -+ 0x126a: 0x0344, 0x126b: 0x0347, 0x126c: 0x0347, 0x126d: 0x034a, 0x126e: 0x034a, 0x126f: 0x034d, -+ 0x1270: 0x034d, 0x1271: 0x0350, 0x1272: 0x0350, 0x1273: 0x0350, 0x1274: 0x0350, 0x1275: 0x0353, -+ 0x1276: 0x0353, 0x1277: 0x0353, 0x1278: 0x0353, 0x1279: 0x0356, 0x127a: 0x0356, 0x127b: 0x0356, -+ 0x127c: 0x0356, 0x127d: 0x0359, 0x127e: 0x0359, 0x127f: 0x0359, -+ // Block 0x4a, offset 0x1280 -+ 0x1280: 0x0359, 0x1281: 0x035c, 0x1282: 0x035c, 0x1283: 0x035c, 0x1284: 0x035c, 0x1285: 0x035f, -+ 0x1286: 0x035f, 0x1287: 0x035f, 0x1288: 0x035f, 0x1289: 0x0362, 0x128a: 0x0362, 0x128b: 0x0362, -+ 0x128c: 0x0362, 0x128d: 0x0365, 0x128e: 0x0365, 0x128f: 0x0365, 0x1290: 0x0365, 0x1291: 0x0368, -+ 0x1292: 0x0368, 0x1293: 0x0368, 0x1294: 0x0368, 0x1295: 0x036b, 0x1296: 0x036b, 0x1297: 0x036b, -+ 0x1298: 0x036b, 0x1299: 0x036e, 0x129a: 0x036e, 0x129b: 0x036e, 0x129c: 0x036e, 0x129d: 0x0371, -+ 0x129e: 0x0371, 0x129f: 0x0371, 0x12a0: 0x0371, 0x12a1: 0x0374, 0x12a2: 0x0374, 0x12a3: 0x0374, -+ 0x12a4: 0x0374, 0x12a5: 0x0377, 0x12a6: 0x0377, 0x12a7: 0x0377, 0x12a8: 0x0377, 0x12a9: 0x037a, -+ 0x12aa: 0x037a, 0x12ab: 0x037a, 0x12ac: 0x037a, 0x12ad: 0x037d, 0x12ae: 0x037d, 0x12af: 0x0380, -+ 0x12b0: 0x0380, 0x12b1: 0x0383, 0x12b2: 0x0383, 0x12b3: 0x0383, 0x12b4: 0x0383, 0x12b5: 0x2f41, -+ 0x12b6: 0x2f41, 0x12b7: 0x2f49, 0x12b8: 0x2f49, 0x12b9: 0x2f51, 0x12ba: 0x2f51, 0x12bb: 0x20b2, -+ 0x12bc: 0x20b2, -+ // Block 0x4b, offset 0x12c0 -+ 0x12c0: 0x0081, 0x12c1: 0x0083, 0x12c2: 0x0085, 0x12c3: 0x0087, 0x12c4: 0x0089, 0x12c5: 0x008b, -+ 0x12c6: 0x008d, 0x12c7: 0x008f, 0x12c8: 0x0091, 0x12c9: 0x0093, 0x12ca: 0x0095, 0x12cb: 0x0097, -+ 0x12cc: 0x0099, 0x12cd: 0x009b, 0x12ce: 0x009d, 0x12cf: 0x009f, 0x12d0: 0x00a1, 0x12d1: 0x00a3, -+ 0x12d2: 0x00a5, 0x12d3: 0x00a7, 0x12d4: 0x00a9, 0x12d5: 0x00ab, 0x12d6: 0x00ad, 0x12d7: 0x00af, -+ 0x12d8: 0x00b1, 0x12d9: 0x00b3, 0x12da: 0x00b5, 0x12db: 0x00b7, 0x12dc: 0x00b9, 0x12dd: 0x00bb, -+ 0x12de: 0x00bd, 0x12df: 0x056e, 0x12e0: 0x0572, 0x12e1: 0x0582, 0x12e2: 0x0596, 0x12e3: 0x059a, -+ 0x12e4: 0x057e, 0x12e5: 0x06a6, 0x12e6: 0x069e, 0x12e7: 0x05c2, 0x12e8: 0x05ca, 0x12e9: 0x05d2, -+ 0x12ea: 0x05da, 0x12eb: 0x05e2, 0x12ec: 0x0666, 0x12ed: 0x066e, 0x12ee: 0x0676, 0x12ef: 0x061a, -+ 0x12f0: 0x06aa, 0x12f1: 0x05c6, 0x12f2: 0x05ce, 0x12f3: 0x05d6, 0x12f4: 0x05de, 0x12f5: 0x05e6, -+ 0x12f6: 0x05ea, 0x12f7: 0x05ee, 0x12f8: 0x05f2, 0x12f9: 0x05f6, 0x12fa: 0x05fa, 0x12fb: 0x05fe, -+ 0x12fc: 0x0602, 0x12fd: 0x0606, 0x12fe: 0x060a, 0x12ff: 0x060e, -+ // Block 0x4c, offset 0x1300 -+ 0x1300: 0x0612, 0x1301: 0x0616, 0x1302: 0x061e, 0x1303: 0x0622, 0x1304: 0x0626, 0x1305: 0x062a, -+ 0x1306: 0x062e, 0x1307: 0x0632, 0x1308: 0x0636, 0x1309: 0x063a, 0x130a: 0x063e, 0x130b: 0x0642, -+ 0x130c: 0x0646, 0x130d: 0x064a, 0x130e: 0x064e, 0x130f: 0x0652, 0x1310: 0x0656, 0x1311: 0x065a, -+ 0x1312: 0x065e, 0x1313: 0x0662, 0x1314: 0x066a, 0x1315: 0x0672, 0x1316: 0x067a, 0x1317: 0x067e, -+ 0x1318: 0x0682, 0x1319: 0x0686, 0x131a: 0x068a, 0x131b: 0x068e, 0x131c: 0x0692, 0x131d: 0x06a2, -+ 0x131e: 0x4bb9, 0x131f: 0x4bbf, 0x1320: 0x04b6, 0x1321: 0x0406, 0x1322: 0x040a, 0x1323: 0x4b7c, -+ 0x1324: 0x040e, 0x1325: 0x4b82, 0x1326: 0x4b88, 0x1327: 0x0412, 0x1328: 0x0416, 0x1329: 0x041a, -+ 0x132a: 0x4b8e, 0x132b: 0x4b94, 0x132c: 0x4b9a, 0x132d: 0x4ba0, 0x132e: 0x4ba6, 0x132f: 0x4bac, -+ 0x1330: 0x045a, 0x1331: 0x041e, 0x1332: 0x0422, 0x1333: 0x0426, 0x1334: 0x046e, 0x1335: 0x042a, -+ 0x1336: 0x042e, 0x1337: 0x0432, 0x1338: 0x0436, 0x1339: 0x043a, 0x133a: 0x043e, 0x133b: 0x0442, -+ 0x133c: 0x0446, 0x133d: 0x044a, 0x133e: 0x044e, -+ // Block 0x4d, offset 0x1340 -+ 0x1342: 0x4afe, 0x1343: 0x4b04, 0x1344: 0x4b0a, 0x1345: 0x4b10, -+ 0x1346: 0x4b16, 0x1347: 0x4b1c, 0x134a: 0x4b22, 0x134b: 0x4b28, -+ 0x134c: 0x4b2e, 0x134d: 0x4b34, 0x134e: 0x4b3a, 0x134f: 0x4b40, -+ 0x1352: 0x4b46, 0x1353: 0x4b4c, 0x1354: 0x4b52, 0x1355: 0x4b58, 0x1356: 0x4b5e, 0x1357: 0x4b64, -+ 0x135a: 0x4b6a, 0x135b: 0x4b70, 0x135c: 0x4b76, -+ 0x1360: 0x00bf, 0x1361: 0x00c2, 0x1362: 0x00cb, 0x1363: 0x43a5, -+ 0x1364: 0x00c8, 0x1365: 0x00c5, 0x1366: 0x053e, 0x1368: 0x0562, 0x1369: 0x0542, -+ 0x136a: 0x0546, 0x136b: 0x054a, 0x136c: 0x054e, 0x136d: 0x0566, 0x136e: 0x056a, -+ // Block 0x4e, offset 0x1380 -+ 0x1381: 0x01f1, 0x1382: 0x01f4, 0x1383: 0x00d4, 0x1384: 0x01be, 0x1385: 0x010d, -+ 0x1387: 0x01d3, 0x1388: 0x174e, 0x1389: 0x01d9, 0x138a: 0x01d6, 0x138b: 0x0116, -+ 0x138c: 0x0119, 0x138d: 0x0526, 0x138e: 0x011c, 0x138f: 0x0128, 0x1390: 0x01e5, 0x1391: 0x013a, -+ 0x1392: 0x0134, 0x1393: 0x012e, 0x1394: 0x01c1, 0x1395: 0x00e0, 0x1396: 0x01c4, 0x1397: 0x0143, -+ 0x1398: 0x0194, 0x1399: 0x01e8, 0x139a: 0x01eb, 0x139b: 0x0152, 0x139c: 0x1756, 0x139d: 0x1742, -+ 0x139e: 0x0158, 0x139f: 0x175b, 0x13a0: 0x01a9, 0x13a1: 0x1760, 0x13a2: 0x00da, 0x13a3: 0x0170, -+ 0x13a4: 0x0173, 0x13a5: 0x00a3, 0x13a6: 0x017c, 0x13a7: 0x1765, 0x13a8: 0x0182, 0x13a9: 0x0185, -+ 0x13aa: 0x0188, 0x13ab: 0x01e2, 0x13ac: 0x01dc, 0x13ad: 0x1752, 0x13ae: 0x01df, 0x13af: 0x0197, -+ 0x13b0: 0x0576, 0x13b2: 0x01ac, 0x13b3: 0x01cd, 0x13b4: 0x01d0, 0x13b5: 0x01bb, -+ 0x13b6: 0x00f5, 0x13b7: 0x00f8, 0x13b8: 0x00fb, 0x13b9: 0x176a, 0x13ba: 0x176f, -+ // Block 0x4f, offset 0x13c0 -+ 0x13c0: 0x0063, 0x13c1: 0x0065, 0x13c2: 0x0067, 0x13c3: 0x0069, 0x13c4: 0x006b, 0x13c5: 0x006d, -+ 0x13c6: 0x006f, 0x13c7: 0x0071, 0x13c8: 0x0073, 0x13c9: 0x0075, 0x13ca: 0x0083, 0x13cb: 0x0085, -+ 0x13cc: 0x0087, 0x13cd: 0x0089, 0x13ce: 0x008b, 0x13cf: 0x008d, 0x13d0: 0x008f, 0x13d1: 0x0091, -+ 0x13d2: 0x0093, 0x13d3: 0x0095, 0x13d4: 0x0097, 0x13d5: 0x0099, 0x13d6: 0x009b, 0x13d7: 0x009d, -+ 0x13d8: 0x009f, 0x13d9: 0x00a1, 0x13da: 0x00a3, 0x13db: 0x00a5, 0x13dc: 0x00a7, 0x13dd: 0x00a9, -+ 0x13de: 0x00ab, 0x13df: 0x00ad, 0x13e0: 0x00af, 0x13e1: 0x00b1, 0x13e2: 0x00b3, 0x13e3: 0x00b5, -+ 0x13e4: 0x00e3, 0x13e5: 0x0101, 0x13e8: 0x01f7, 0x13e9: 0x01fa, -+ 0x13ea: 0x01fd, 0x13eb: 0x0200, 0x13ec: 0x0203, 0x13ed: 0x0206, 0x13ee: 0x0209, 0x13ef: 0x020c, -+ 0x13f0: 0x020f, 0x13f1: 0x0212, 0x13f2: 0x0215, 0x13f3: 0x0218, 0x13f4: 0x021b, 0x13f5: 0x021e, -+ 0x13f6: 0x0221, 0x13f7: 0x0224, 0x13f8: 0x0227, 0x13f9: 0x020c, 0x13fa: 0x022a, 0x13fb: 0x022d, -+ 0x13fc: 0x0230, 0x13fd: 0x0233, 0x13fe: 0x0236, 0x13ff: 0x0239, -+ // Block 0x50, offset 0x1400 -+ 0x1400: 0x0281, 0x1401: 0x0284, 0x1402: 0x0287, 0x1403: 0x0552, 0x1404: 0x024b, 0x1405: 0x0254, -+ 0x1406: 0x025a, 0x1407: 0x027e, 0x1408: 0x026f, 0x1409: 0x026c, 0x140a: 0x028a, 0x140b: 0x028d, -+ 0x140e: 0x0021, 0x140f: 0x0023, 0x1410: 0x0025, 0x1411: 0x0027, -+ 0x1412: 0x0029, 0x1413: 0x002b, 0x1414: 0x002d, 0x1415: 0x002f, 0x1416: 0x0031, 0x1417: 0x0033, -+ 0x1418: 0x0021, 0x1419: 0x0023, 0x141a: 0x0025, 0x141b: 0x0027, 0x141c: 0x0029, 0x141d: 0x002b, -+ 0x141e: 0x002d, 0x141f: 0x002f, 0x1420: 0x0031, 0x1421: 0x0033, 0x1422: 0x0021, 0x1423: 0x0023, -+ 0x1424: 0x0025, 0x1425: 0x0027, 0x1426: 0x0029, 0x1427: 0x002b, 0x1428: 0x002d, 0x1429: 0x002f, -+ 0x142a: 0x0031, 0x142b: 0x0033, 0x142c: 0x0021, 0x142d: 0x0023, 0x142e: 0x0025, 0x142f: 0x0027, -+ 0x1430: 0x0029, 0x1431: 0x002b, 0x1432: 0x002d, 0x1433: 0x002f, 0x1434: 0x0031, 0x1435: 0x0033, -+ 0x1436: 0x0021, 0x1437: 0x0023, 0x1438: 0x0025, 0x1439: 0x0027, 0x143a: 0x0029, 0x143b: 0x002b, -+ 0x143c: 0x002d, 0x143d: 0x002f, 0x143e: 0x0031, 0x143f: 0x0033, -+ // Block 0x51, offset 0x1440 -+ 0x1440: 0x8133, 0x1441: 0x8133, 0x1442: 0x8133, 0x1443: 0x8133, 0x1444: 0x8133, 0x1445: 0x8133, -+ 0x1446: 0x8133, 0x1448: 0x8133, 0x1449: 0x8133, 0x144a: 0x8133, 0x144b: 0x8133, -+ 0x144c: 0x8133, 0x144d: 0x8133, 0x144e: 0x8133, 0x144f: 0x8133, 0x1450: 0x8133, 0x1451: 0x8133, -+ 0x1452: 0x8133, 0x1453: 0x8133, 0x1454: 0x8133, 0x1455: 0x8133, 0x1456: 0x8133, 0x1457: 0x8133, -+ 0x1458: 0x8133, 0x145b: 0x8133, 0x145c: 0x8133, 0x145d: 0x8133, -+ 0x145e: 0x8133, 0x145f: 0x8133, 0x1460: 0x8133, 0x1461: 0x8133, 0x1463: 0x8133, -+ 0x1464: 0x8133, 0x1466: 0x8133, 0x1467: 0x8133, 0x1468: 0x8133, 0x1469: 0x8133, -+ 0x146a: 0x8133, -+ 0x1470: 0x0290, 0x1471: 0x0293, 0x1472: 0x0296, 0x1473: 0x0299, 0x1474: 0x029c, 0x1475: 0x029f, -+ 0x1476: 0x02a2, 0x1477: 0x02a5, 0x1478: 0x02a8, 0x1479: 0x02ab, 0x147a: 0x02ae, 0x147b: 0x02b1, -+ 0x147c: 0x02b7, 0x147d: 0x02ba, 0x147e: 0x02bd, 0x147f: 0x02c0, -+ // Block 0x52, offset 0x1480 -+ 0x1480: 0x02c3, 0x1481: 0x02c6, 0x1482: 0x02c9, 0x1483: 0x02cc, 0x1484: 0x02cf, 0x1485: 0x02d2, -+ 0x1486: 0x02d5, 0x1487: 0x02db, 0x1488: 0x02e1, 0x1489: 0x02e4, 0x148a: 0x1736, 0x148b: 0x0302, -+ 0x148c: 0x02ea, 0x148d: 0x02ed, 0x148e: 0x0305, 0x148f: 0x02f9, 0x1490: 0x02ff, 0x1491: 0x0290, -+ 0x1492: 0x0293, 0x1493: 0x0296, 0x1494: 0x0299, 0x1495: 0x029c, 0x1496: 0x029f, 0x1497: 0x02a2, -+ 0x1498: 0x02a5, 0x1499: 0x02a8, 0x149a: 0x02ab, 0x149b: 0x02ae, 0x149c: 0x02b7, 0x149d: 0x02ba, -+ 0x149e: 0x02c0, 0x149f: 0x02c6, 0x14a0: 0x02c9, 0x14a1: 0x02cc, 0x14a2: 0x02cf, 0x14a3: 0x02d2, -+ 0x14a4: 0x02d5, 0x14a5: 0x02d8, 0x14a6: 0x02db, 0x14a7: 0x02f3, 0x14a8: 0x02ea, 0x14a9: 0x02e7, -+ 0x14aa: 0x02f0, 0x14ab: 0x02f6, 0x14ac: 0x1732, 0x14ad: 0x02fc, -+ // Block 0x53, offset 0x14c0 -+ 0x14c0: 0x032c, 0x14c1: 0x032f, 0x14c2: 0x033b, 0x14c3: 0x0344, 0x14c5: 0x037d, -+ 0x14c6: 0x034d, 0x14c7: 0x033e, 0x14c8: 0x035c, 0x14c9: 0x0383, 0x14ca: 0x036e, 0x14cb: 0x0371, -+ 0x14cc: 0x0374, 0x14cd: 0x0377, 0x14ce: 0x0350, 0x14cf: 0x0362, 0x14d0: 0x0368, 0x14d1: 0x0356, -+ 0x14d2: 0x036b, 0x14d3: 0x034a, 0x14d4: 0x0353, 0x14d5: 0x0335, 0x14d6: 0x0338, 0x14d7: 0x0341, -+ 0x14d8: 0x0347, 0x14d9: 0x0359, 0x14da: 0x035f, 0x14db: 0x0365, 0x14dc: 0x0386, 0x14dd: 0x03d7, -+ 0x14de: 0x03bf, 0x14df: 0x0389, 0x14e1: 0x032f, 0x14e2: 0x033b, -+ 0x14e4: 0x037a, 0x14e7: 0x033e, 0x14e9: 0x0383, -+ 0x14ea: 0x036e, 0x14eb: 0x0371, 0x14ec: 0x0374, 0x14ed: 0x0377, 0x14ee: 0x0350, 0x14ef: 0x0362, -+ 0x14f0: 0x0368, 0x14f1: 0x0356, 0x14f2: 0x036b, 0x14f4: 0x0353, 0x14f5: 0x0335, -+ 0x14f6: 0x0338, 0x14f7: 0x0341, 0x14f9: 0x0359, 0x14fb: 0x0365, -+ // Block 0x54, offset 0x1500 -+ 0x1502: 0x033b, -+ 0x1507: 0x033e, 0x1509: 0x0383, 0x150b: 0x0371, -+ 0x150d: 0x0377, 0x150e: 0x0350, 0x150f: 0x0362, 0x1511: 0x0356, -+ 0x1512: 0x036b, 0x1514: 0x0353, 0x1517: 0x0341, -+ 0x1519: 0x0359, 0x151b: 0x0365, 0x151d: 0x03d7, -+ 0x151f: 0x0389, 0x1521: 0x032f, 0x1522: 0x033b, -+ 0x1524: 0x037a, 0x1527: 0x033e, 0x1528: 0x035c, 0x1529: 0x0383, -+ 0x152a: 0x036e, 0x152c: 0x0374, 0x152d: 0x0377, 0x152e: 0x0350, 0x152f: 0x0362, -+ 0x1530: 0x0368, 0x1531: 0x0356, 0x1532: 0x036b, 0x1534: 0x0353, 0x1535: 0x0335, -+ 0x1536: 0x0338, 0x1537: 0x0341, 0x1539: 0x0359, 0x153a: 0x035f, 0x153b: 0x0365, -+ 0x153c: 0x0386, 0x153e: 0x03bf, -+ // Block 0x55, offset 0x1540 -+ 0x1540: 0x032c, 0x1541: 0x032f, 0x1542: 0x033b, 0x1543: 0x0344, 0x1544: 0x037a, 0x1545: 0x037d, -+ 0x1546: 0x034d, 0x1547: 0x033e, 0x1548: 0x035c, 0x1549: 0x0383, 0x154b: 0x0371, -+ 0x154c: 0x0374, 0x154d: 0x0377, 0x154e: 0x0350, 0x154f: 0x0362, 0x1550: 0x0368, 0x1551: 0x0356, -+ 0x1552: 0x036b, 0x1553: 0x034a, 0x1554: 0x0353, 0x1555: 0x0335, 0x1556: 0x0338, 0x1557: 0x0341, -+ 0x1558: 0x0347, 0x1559: 0x0359, 0x155a: 0x035f, 0x155b: 0x0365, -+ 0x1561: 0x032f, 0x1562: 0x033b, 0x1563: 0x0344, -+ 0x1565: 0x037d, 0x1566: 0x034d, 0x1567: 0x033e, 0x1568: 0x035c, 0x1569: 0x0383, -+ 0x156b: 0x0371, 0x156c: 0x0374, 0x156d: 0x0377, 0x156e: 0x0350, 0x156f: 0x0362, -+ 0x1570: 0x0368, 0x1571: 0x0356, 0x1572: 0x036b, 0x1573: 0x034a, 0x1574: 0x0353, 0x1575: 0x0335, -+ 0x1576: 0x0338, 0x1577: 0x0341, 0x1578: 0x0347, 0x1579: 0x0359, 0x157a: 0x035f, 0x157b: 0x0365, -+ // Block 0x56, offset 0x1580 -+ 0x1580: 0x19a6, 0x1581: 0x19a3, 0x1582: 0x19a9, 0x1583: 0x19cd, 0x1584: 0x19f1, 0x1585: 0x1a15, -+ 0x1586: 0x1a39, 0x1587: 0x1a42, 0x1588: 0x1a48, 0x1589: 0x1a4e, 0x158a: 0x1a54, -+ 0x1590: 0x1bbc, 0x1591: 0x1bc0, -+ 0x1592: 0x1bc4, 0x1593: 0x1bc8, 0x1594: 0x1bcc, 0x1595: 0x1bd0, 0x1596: 0x1bd4, 0x1597: 0x1bd8, -+ 0x1598: 0x1bdc, 0x1599: 0x1be0, 0x159a: 0x1be4, 0x159b: 0x1be8, 0x159c: 0x1bec, 0x159d: 0x1bf0, -+ 0x159e: 0x1bf4, 0x159f: 0x1bf8, 0x15a0: 0x1bfc, 0x15a1: 0x1c00, 0x15a2: 0x1c04, 0x15a3: 0x1c08, -+ 0x15a4: 0x1c0c, 0x15a5: 0x1c10, 0x15a6: 0x1c14, 0x15a7: 0x1c18, 0x15a8: 0x1c1c, 0x15a9: 0x1c20, -+ 0x15aa: 0x2855, 0x15ab: 0x0047, 0x15ac: 0x0065, 0x15ad: 0x1a69, 0x15ae: 0x1ae1, -+ 0x15b0: 0x0043, 0x15b1: 0x0045, 0x15b2: 0x0047, 0x15b3: 0x0049, 0x15b4: 0x004b, 0x15b5: 0x004d, -+ 0x15b6: 0x004f, 0x15b7: 0x0051, 0x15b8: 0x0053, 0x15b9: 0x0055, 0x15ba: 0x0057, 0x15bb: 0x0059, -+ 0x15bc: 0x005b, 0x15bd: 0x005d, 0x15be: 0x005f, 0x15bf: 0x0061, -+ // Block 0x57, offset 0x15c0 -+ 0x15c0: 0x27dd, 0x15c1: 0x27f2, 0x15c2: 0x05fe, -+ 0x15d0: 0x0d0a, 0x15d1: 0x0b42, -+ 0x15d2: 0x09ce, 0x15d3: 0x4705, 0x15d4: 0x0816, 0x15d5: 0x0aea, 0x15d6: 0x142a, 0x15d7: 0x0afa, -+ 0x15d8: 0x0822, 0x15d9: 0x0dd2, 0x15da: 0x0faa, 0x15db: 0x0daa, 0x15dc: 0x0922, 0x15dd: 0x0c66, -+ 0x15de: 0x08ba, 0x15df: 0x0db2, 0x15e0: 0x090e, 0x15e1: 0x1212, 0x15e2: 0x107e, 0x15e3: 0x1486, -+ 0x15e4: 0x0ace, 0x15e5: 0x0a06, 0x15e6: 0x0f5e, 0x15e7: 0x0d16, 0x15e8: 0x0d42, 0x15e9: 0x07ba, -+ 0x15ea: 0x07c6, 0x15eb: 0x1506, 0x15ec: 0x0bd6, 0x15ed: 0x07e2, 0x15ee: 0x09ea, 0x15ef: 0x0d36, -+ 0x15f0: 0x14ae, 0x15f1: 0x0d0e, 0x15f2: 0x116a, 0x15f3: 0x11a6, 0x15f4: 0x09f2, 0x15f5: 0x0f3e, -+ 0x15f6: 0x0e06, 0x15f7: 0x0e02, 0x15f8: 0x1092, 0x15f9: 0x0926, 0x15fa: 0x0a52, 0x15fb: 0x153e, -+ // Block 0x58, offset 0x1600 -+ 0x1600: 0x07f6, 0x1601: 0x07ee, 0x1602: 0x07fe, 0x1603: 0x1774, 0x1604: 0x0842, 0x1605: 0x0852, -+ 0x1606: 0x0856, 0x1607: 0x085e, 0x1608: 0x0866, 0x1609: 0x086a, 0x160a: 0x0876, 0x160b: 0x086e, -+ 0x160c: 0x06ae, 0x160d: 0x1788, 0x160e: 0x088a, 0x160f: 0x088e, 0x1610: 0x0892, 0x1611: 0x08ae, -+ 0x1612: 0x1779, 0x1613: 0x06b2, 0x1614: 0x089a, 0x1615: 0x08ba, 0x1616: 0x1783, 0x1617: 0x08ca, -+ 0x1618: 0x08d2, 0x1619: 0x0832, 0x161a: 0x08da, 0x161b: 0x08de, 0x161c: 0x195e, 0x161d: 0x08fa, -+ 0x161e: 0x0902, 0x161f: 0x06ba, 0x1620: 0x091a, 0x1621: 0x091e, 0x1622: 0x0926, 0x1623: 0x092a, -+ 0x1624: 0x06be, 0x1625: 0x0942, 0x1626: 0x0946, 0x1627: 0x0952, 0x1628: 0x095e, 0x1629: 0x0962, -+ 0x162a: 0x0966, 0x162b: 0x096e, 0x162c: 0x098e, 0x162d: 0x0992, 0x162e: 0x099a, 0x162f: 0x09aa, -+ 0x1630: 0x09b2, 0x1631: 0x09b6, 0x1632: 0x09b6, 0x1633: 0x09b6, 0x1634: 0x1797, 0x1635: 0x0f8e, -+ 0x1636: 0x09ca, 0x1637: 0x09d2, 0x1638: 0x179c, 0x1639: 0x09de, 0x163a: 0x09e6, 0x163b: 0x09ee, -+ 0x163c: 0x0a16, 0x163d: 0x0a02, 0x163e: 0x0a0e, 0x163f: 0x0a12, -+ // Block 0x59, offset 0x1640 -+ 0x1640: 0x0a1a, 0x1641: 0x0a22, 0x1642: 0x0a26, 0x1643: 0x0a2e, 0x1644: 0x0a36, 0x1645: 0x0a3a, -+ 0x1646: 0x0a3a, 0x1647: 0x0a42, 0x1648: 0x0a4a, 0x1649: 0x0a4e, 0x164a: 0x0a5a, 0x164b: 0x0a7e, -+ 0x164c: 0x0a62, 0x164d: 0x0a82, 0x164e: 0x0a66, 0x164f: 0x0a6e, 0x1650: 0x0906, 0x1651: 0x0aca, -+ 0x1652: 0x0a92, 0x1653: 0x0a96, 0x1654: 0x0a9a, 0x1655: 0x0a8e, 0x1656: 0x0aa2, 0x1657: 0x0a9e, -+ 0x1658: 0x0ab6, 0x1659: 0x17a1, 0x165a: 0x0ad2, 0x165b: 0x0ad6, 0x165c: 0x0ade, 0x165d: 0x0aea, -+ 0x165e: 0x0af2, 0x165f: 0x0b0e, 0x1660: 0x17a6, 0x1661: 0x17ab, 0x1662: 0x0b1a, 0x1663: 0x0b1e, -+ 0x1664: 0x0b22, 0x1665: 0x0b16, 0x1666: 0x0b2a, 0x1667: 0x06c2, 0x1668: 0x06c6, 0x1669: 0x0b32, -+ 0x166a: 0x0b3a, 0x166b: 0x0b3a, 0x166c: 0x17b0, 0x166d: 0x0b56, 0x166e: 0x0b5a, 0x166f: 0x0b5e, -+ 0x1670: 0x0b66, 0x1671: 0x17b5, 0x1672: 0x0b6e, 0x1673: 0x0b72, 0x1674: 0x0c4a, 0x1675: 0x0b7a, -+ 0x1676: 0x06ca, 0x1677: 0x0b86, 0x1678: 0x0b96, 0x1679: 0x0ba2, 0x167a: 0x0b9e, 0x167b: 0x17bf, -+ 0x167c: 0x0baa, 0x167d: 0x17c4, 0x167e: 0x0bb6, 0x167f: 0x0bb2, -+ // Block 0x5a, offset 0x1680 -+ 0x1680: 0x0bba, 0x1681: 0x0bca, 0x1682: 0x0bce, 0x1683: 0x06ce, 0x1684: 0x0bde, 0x1685: 0x0be6, -+ 0x1686: 0x0bea, 0x1687: 0x0bee, 0x1688: 0x06d2, 0x1689: 0x17c9, 0x168a: 0x06d6, 0x168b: 0x0c0a, -+ 0x168c: 0x0c0e, 0x168d: 0x0c12, 0x168e: 0x0c1a, 0x168f: 0x1990, 0x1690: 0x0c32, 0x1691: 0x17d3, -+ 0x1692: 0x17d3, 0x1693: 0x12d2, 0x1694: 0x0c42, 0x1695: 0x0c42, 0x1696: 0x06da, 0x1697: 0x17f6, -+ 0x1698: 0x18c8, 0x1699: 0x0c52, 0x169a: 0x0c5a, 0x169b: 0x06de, 0x169c: 0x0c6e, 0x169d: 0x0c7e, -+ 0x169e: 0x0c82, 0x169f: 0x0c8a, 0x16a0: 0x0c9a, 0x16a1: 0x06e6, 0x16a2: 0x06e2, 0x16a3: 0x0c9e, -+ 0x16a4: 0x17d8, 0x16a5: 0x0ca2, 0x16a6: 0x0cb6, 0x16a7: 0x0cba, 0x16a8: 0x0cbe, 0x16a9: 0x0cba, -+ 0x16aa: 0x0cca, 0x16ab: 0x0cce, 0x16ac: 0x0cde, 0x16ad: 0x0cd6, 0x16ae: 0x0cda, 0x16af: 0x0ce2, -+ 0x16b0: 0x0ce6, 0x16b1: 0x0cea, 0x16b2: 0x0cf6, 0x16b3: 0x0cfa, 0x16b4: 0x0d12, 0x16b5: 0x0d1a, -+ 0x16b6: 0x0d2a, 0x16b7: 0x0d3e, 0x16b8: 0x17e7, 0x16b9: 0x0d3a, 0x16ba: 0x0d2e, 0x16bb: 0x0d46, -+ 0x16bc: 0x0d4e, 0x16bd: 0x0d62, 0x16be: 0x17ec, 0x16bf: 0x0d6a, -+ // Block 0x5b, offset 0x16c0 -+ 0x16c0: 0x0d5e, 0x16c1: 0x0d56, 0x16c2: 0x06ea, 0x16c3: 0x0d72, 0x16c4: 0x0d7a, 0x16c5: 0x0d82, -+ 0x16c6: 0x0d76, 0x16c7: 0x06ee, 0x16c8: 0x0d92, 0x16c9: 0x0d9a, 0x16ca: 0x17f1, 0x16cb: 0x0dc6, -+ 0x16cc: 0x0dfa, 0x16cd: 0x0dd6, 0x16ce: 0x06fa, 0x16cf: 0x0de2, 0x16d0: 0x06f6, 0x16d1: 0x06f2, -+ 0x16d2: 0x08be, 0x16d3: 0x08c2, 0x16d4: 0x0dfe, 0x16d5: 0x0de6, 0x16d6: 0x12a6, 0x16d7: 0x075e, -+ 0x16d8: 0x0e0a, 0x16d9: 0x0e0e, 0x16da: 0x0e12, 0x16db: 0x0e26, 0x16dc: 0x0e1e, 0x16dd: 0x180a, -+ 0x16de: 0x06fe, 0x16df: 0x0e3a, 0x16e0: 0x0e2e, 0x16e1: 0x0e4a, 0x16e2: 0x0e52, 0x16e3: 0x1814, -+ 0x16e4: 0x0e56, 0x16e5: 0x0e42, 0x16e6: 0x0e5e, 0x16e7: 0x0702, 0x16e8: 0x0e62, 0x16e9: 0x0e66, -+ 0x16ea: 0x0e6a, 0x16eb: 0x0e76, 0x16ec: 0x1819, 0x16ed: 0x0e7e, 0x16ee: 0x0706, 0x16ef: 0x0e8a, -+ 0x16f0: 0x181e, 0x16f1: 0x0e8e, 0x16f2: 0x070a, 0x16f3: 0x0e9a, 0x16f4: 0x0ea6, 0x16f5: 0x0eb2, -+ 0x16f6: 0x0eb6, 0x16f7: 0x1823, 0x16f8: 0x17ba, 0x16f9: 0x1828, 0x16fa: 0x0ed6, 0x16fb: 0x182d, -+ 0x16fc: 0x0ee2, 0x16fd: 0x0eea, 0x16fe: 0x0eda, 0x16ff: 0x0ef6, -+ // Block 0x5c, offset 0x1700 -+ 0x1700: 0x0f06, 0x1701: 0x0f16, 0x1702: 0x0f0a, 0x1703: 0x0f0e, 0x1704: 0x0f1a, 0x1705: 0x0f1e, -+ 0x1706: 0x1832, 0x1707: 0x0f02, 0x1708: 0x0f36, 0x1709: 0x0f3a, 0x170a: 0x070e, 0x170b: 0x0f4e, -+ 0x170c: 0x0f4a, 0x170d: 0x1837, 0x170e: 0x0f2e, 0x170f: 0x0f6a, 0x1710: 0x183c, 0x1711: 0x1841, -+ 0x1712: 0x0f6e, 0x1713: 0x0f82, 0x1714: 0x0f7e, 0x1715: 0x0f7a, 0x1716: 0x0712, 0x1717: 0x0f86, -+ 0x1718: 0x0f96, 0x1719: 0x0f92, 0x171a: 0x0f9e, 0x171b: 0x177e, 0x171c: 0x0fae, 0x171d: 0x1846, -+ 0x171e: 0x0fba, 0x171f: 0x1850, 0x1720: 0x0fce, 0x1721: 0x0fda, 0x1722: 0x0fee, 0x1723: 0x1855, -+ 0x1724: 0x1002, 0x1725: 0x1006, 0x1726: 0x185a, 0x1727: 0x185f, 0x1728: 0x1022, 0x1729: 0x1032, -+ 0x172a: 0x0716, 0x172b: 0x1036, 0x172c: 0x071a, 0x172d: 0x071a, 0x172e: 0x104e, 0x172f: 0x1052, -+ 0x1730: 0x105a, 0x1731: 0x105e, 0x1732: 0x106a, 0x1733: 0x071e, 0x1734: 0x1082, 0x1735: 0x1864, -+ 0x1736: 0x109e, 0x1737: 0x1869, 0x1738: 0x10aa, 0x1739: 0x17ce, 0x173a: 0x10ba, 0x173b: 0x186e, -+ 0x173c: 0x1873, 0x173d: 0x1878, 0x173e: 0x0722, 0x173f: 0x0726, -+ // Block 0x5d, offset 0x1740 -+ 0x1740: 0x10f2, 0x1741: 0x1882, 0x1742: 0x187d, 0x1743: 0x1887, 0x1744: 0x188c, 0x1745: 0x10fa, -+ 0x1746: 0x10fe, 0x1747: 0x10fe, 0x1748: 0x1106, 0x1749: 0x072e, 0x174a: 0x110a, 0x174b: 0x0732, -+ 0x174c: 0x0736, 0x174d: 0x1896, 0x174e: 0x111e, 0x174f: 0x1126, 0x1750: 0x1132, 0x1751: 0x073a, -+ 0x1752: 0x189b, 0x1753: 0x1156, 0x1754: 0x18a0, 0x1755: 0x18a5, 0x1756: 0x1176, 0x1757: 0x118e, -+ 0x1758: 0x073e, 0x1759: 0x1196, 0x175a: 0x119a, 0x175b: 0x119e, 0x175c: 0x18aa, 0x175d: 0x18af, -+ 0x175e: 0x18af, 0x175f: 0x11b6, 0x1760: 0x0742, 0x1761: 0x18b4, 0x1762: 0x11ca, 0x1763: 0x11ce, -+ 0x1764: 0x0746, 0x1765: 0x18b9, 0x1766: 0x11ea, 0x1767: 0x074a, 0x1768: 0x11fa, 0x1769: 0x11f2, -+ 0x176a: 0x1202, 0x176b: 0x18c3, 0x176c: 0x121a, 0x176d: 0x074e, 0x176e: 0x1226, 0x176f: 0x122e, -+ 0x1770: 0x123e, 0x1771: 0x0752, 0x1772: 0x18cd, 0x1773: 0x18d2, 0x1774: 0x0756, 0x1775: 0x18d7, -+ 0x1776: 0x1256, 0x1777: 0x18dc, 0x1778: 0x1262, 0x1779: 0x126e, 0x177a: 0x1276, 0x177b: 0x18e1, -+ 0x177c: 0x18e6, 0x177d: 0x128a, 0x177e: 0x18eb, 0x177f: 0x1292, -+ // Block 0x5e, offset 0x1780 -+ 0x1780: 0x17fb, 0x1781: 0x075a, 0x1782: 0x12aa, 0x1783: 0x12ae, 0x1784: 0x0762, 0x1785: 0x12b2, -+ 0x1786: 0x0b2e, 0x1787: 0x18f0, 0x1788: 0x18f5, 0x1789: 0x1800, 0x178a: 0x1805, 0x178b: 0x12d2, -+ 0x178c: 0x12d6, 0x178d: 0x14ee, 0x178e: 0x0766, 0x178f: 0x1302, 0x1790: 0x12fe, 0x1791: 0x1306, -+ 0x1792: 0x093a, 0x1793: 0x130a, 0x1794: 0x130e, 0x1795: 0x1312, 0x1796: 0x131a, 0x1797: 0x18fa, -+ 0x1798: 0x1316, 0x1799: 0x131e, 0x179a: 0x1332, 0x179b: 0x1336, 0x179c: 0x1322, 0x179d: 0x133a, -+ 0x179e: 0x134e, 0x179f: 0x1362, 0x17a0: 0x132e, 0x17a1: 0x1342, 0x17a2: 0x1346, 0x17a3: 0x134a, -+ 0x17a4: 0x18ff, 0x17a5: 0x1909, 0x17a6: 0x1904, 0x17a7: 0x076a, 0x17a8: 0x136a, 0x17a9: 0x136e, -+ 0x17aa: 0x1376, 0x17ab: 0x191d, 0x17ac: 0x137a, 0x17ad: 0x190e, 0x17ae: 0x076e, 0x17af: 0x0772, -+ 0x17b0: 0x1913, 0x17b1: 0x1918, 0x17b2: 0x0776, 0x17b3: 0x139a, 0x17b4: 0x139e, 0x17b5: 0x13a2, -+ 0x17b6: 0x13a6, 0x17b7: 0x13b2, 0x17b8: 0x13ae, 0x17b9: 0x13ba, 0x17ba: 0x13b6, 0x17bb: 0x13c6, -+ 0x17bc: 0x13be, 0x17bd: 0x13c2, 0x17be: 0x13ca, 0x17bf: 0x077a, -+ // Block 0x5f, offset 0x17c0 -+ 0x17c0: 0x13d2, 0x17c1: 0x13d6, 0x17c2: 0x077e, 0x17c3: 0x13e6, 0x17c4: 0x13ea, 0x17c5: 0x1922, -+ 0x17c6: 0x13f6, 0x17c7: 0x13fa, 0x17c8: 0x0782, 0x17c9: 0x1406, 0x17ca: 0x06b6, 0x17cb: 0x1927, -+ 0x17cc: 0x192c, 0x17cd: 0x0786, 0x17ce: 0x078a, 0x17cf: 0x1432, 0x17d0: 0x144a, 0x17d1: 0x1466, -+ 0x17d2: 0x1476, 0x17d3: 0x1931, 0x17d4: 0x148a, 0x17d5: 0x148e, 0x17d6: 0x14a6, 0x17d7: 0x14b2, -+ 0x17d8: 0x193b, 0x17d9: 0x178d, 0x17da: 0x14be, 0x17db: 0x14ba, 0x17dc: 0x14c6, 0x17dd: 0x1792, -+ 0x17de: 0x14d2, 0x17df: 0x14de, 0x17e0: 0x1940, 0x17e1: 0x1945, 0x17e2: 0x151e, 0x17e3: 0x152a, -+ 0x17e4: 0x1532, 0x17e5: 0x194a, 0x17e6: 0x1536, 0x17e7: 0x1562, 0x17e8: 0x156e, 0x17e9: 0x1572, -+ 0x17ea: 0x156a, 0x17eb: 0x157e, 0x17ec: 0x1582, 0x17ed: 0x194f, 0x17ee: 0x158e, 0x17ef: 0x078e, -+ 0x17f0: 0x1596, 0x17f1: 0x1954, 0x17f2: 0x0792, 0x17f3: 0x15ce, 0x17f4: 0x0bbe, 0x17f5: 0x15e6, -+ 0x17f6: 0x1959, 0x17f7: 0x1963, 0x17f8: 0x0796, 0x17f9: 0x079a, 0x17fa: 0x160e, 0x17fb: 0x1968, -+ 0x17fc: 0x079e, 0x17fd: 0x196d, 0x17fe: 0x1626, 0x17ff: 0x1626, -+ // Block 0x60, offset 0x1800 -+ 0x1800: 0x162e, 0x1801: 0x1972, 0x1802: 0x1646, 0x1803: 0x07a2, 0x1804: 0x1656, 0x1805: 0x1662, -+ 0x1806: 0x166a, 0x1807: 0x1672, 0x1808: 0x07a6, 0x1809: 0x1977, 0x180a: 0x1686, 0x180b: 0x16a2, -+ 0x180c: 0x16ae, 0x180d: 0x07aa, 0x180e: 0x07ae, 0x180f: 0x16b2, 0x1810: 0x197c, 0x1811: 0x07b2, -+ 0x1812: 0x1981, 0x1813: 0x1986, 0x1814: 0x198b, 0x1815: 0x16d6, 0x1816: 0x07b6, 0x1817: 0x16ea, -+ 0x1818: 0x16f2, 0x1819: 0x16f6, 0x181a: 0x16fe, 0x181b: 0x1706, 0x181c: 0x170e, 0x181d: 0x1995, -+} -+ -+// nfkcIndex: 22 blocks, 1408 entries, 2816 bytes -+// Block 0 is the zero block. -+var nfkcIndex = [1408]uint16{ -+ // Block 0x0, offset 0x0 -+ // Block 0x1, offset 0x40 -+ // Block 0x2, offset 0x80 -+ // Block 0x3, offset 0xc0 -+ 0xc2: 0x5f, 0xc3: 0x01, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x60, 0xc7: 0x04, -+ 0xc8: 0x05, 0xca: 0x61, 0xcb: 0x62, 0xcc: 0x06, 0xcd: 0x07, 0xce: 0x08, 0xcf: 0x09, -+ 0xd0: 0x0a, 0xd1: 0x63, 0xd2: 0x64, 0xd3: 0x0b, 0xd6: 0x0c, 0xd7: 0x65, -+ 0xd8: 0x66, 0xd9: 0x0d, 0xdb: 0x67, 0xdc: 0x68, 0xdd: 0x69, 0xdf: 0x6a, -+ 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, -+ 0xea: 0x06, 0xeb: 0x07, 0xec: 0x08, 0xed: 0x09, 0xef: 0x0a, -+ 0xf0: 0x13, -+ // Block 0x4, offset 0x100 -+ 0x120: 0x6b, 0x121: 0x6c, 0x122: 0x6d, 0x123: 0x0e, 0x124: 0x6e, 0x125: 0x6f, 0x126: 0x70, 0x127: 0x71, -+ 0x128: 0x72, 0x129: 0x73, 0x12a: 0x74, 0x12b: 0x75, 0x12c: 0x70, 0x12d: 0x76, 0x12e: 0x77, 0x12f: 0x78, -+ 0x130: 0x74, 0x131: 0x79, 0x132: 0x7a, 0x133: 0x7b, 0x134: 0x7c, 0x135: 0x7d, 0x137: 0x7e, -+ 0x138: 0x7f, 0x139: 0x80, 0x13a: 0x81, 0x13b: 0x82, 0x13c: 0x83, 0x13d: 0x84, 0x13e: 0x85, 0x13f: 0x86, -+ // Block 0x5, offset 0x140 -+ 0x140: 0x87, 0x142: 0x88, 0x143: 0x89, 0x144: 0x8a, 0x145: 0x8b, 0x146: 0x8c, 0x147: 0x8d, -+ 0x14d: 0x8e, -+ 0x15c: 0x8f, 0x15f: 0x90, -+ 0x162: 0x91, 0x164: 0x92, -+ 0x168: 0x93, 0x169: 0x94, 0x16a: 0x95, 0x16b: 0x96, 0x16c: 0x0f, 0x16d: 0x97, 0x16e: 0x98, 0x16f: 0x99, -+ 0x170: 0x9a, 0x173: 0x9b, 0x174: 0x9c, 0x175: 0x10, 0x176: 0x11, 0x177: 0x12, -+ 0x178: 0x13, 0x179: 0x14, 0x17a: 0x15, 0x17b: 0x16, 0x17c: 0x17, 0x17d: 0x18, 0x17e: 0x19, 0x17f: 0x1a, -+ // Block 0x6, offset 0x180 -+ 0x180: 0x9d, 0x181: 0x9e, 0x182: 0x9f, 0x183: 0xa0, 0x184: 0x1b, 0x185: 0x1c, 0x186: 0xa1, 0x187: 0xa2, -+ 0x188: 0xa3, 0x189: 0x1d, 0x18a: 0x1e, 0x18b: 0xa4, 0x18c: 0xa5, -+ 0x191: 0x1f, 0x192: 0x20, 0x193: 0xa6, -+ 0x1a8: 0xa7, 0x1a9: 0xa8, 0x1ab: 0xa9, -+ 0x1b1: 0xaa, 0x1b3: 0xab, 0x1b5: 0xac, 0x1b7: 0xad, -+ 0x1ba: 0xae, 0x1bb: 0xaf, 0x1bc: 0x21, 0x1bd: 0x22, 0x1be: 0x23, 0x1bf: 0xb0, -+ // Block 0x7, offset 0x1c0 -+ 0x1c0: 0xb1, 0x1c1: 0x24, 0x1c2: 0x25, 0x1c3: 0x26, 0x1c4: 0xb2, 0x1c5: 0x27, 0x1c6: 0x28, -+ 0x1c8: 0x29, 0x1c9: 0x2a, 0x1ca: 0x2b, 0x1cb: 0x2c, 0x1cc: 0x2d, 0x1cd: 0x2e, 0x1ce: 0x2f, 0x1cf: 0x30, -+ // Block 0x8, offset 0x200 -+ 0x219: 0xb3, 0x21a: 0xb4, 0x21b: 0xb5, 0x21d: 0xb6, 0x21f: 0xb7, -+ 0x220: 0xb8, 0x223: 0xb9, 0x224: 0xba, 0x225: 0xbb, 0x226: 0xbc, 0x227: 0xbd, -+ 0x22a: 0xbe, 0x22b: 0xbf, 0x22d: 0xc0, 0x22f: 0xc1, -+ 0x230: 0xc2, 0x231: 0xc3, 0x232: 0xc4, 0x233: 0xc5, 0x234: 0xc6, 0x235: 0xc7, 0x236: 0xc8, 0x237: 0xc2, -+ 0x238: 0xc3, 0x239: 0xc4, 0x23a: 0xc5, 0x23b: 0xc6, 0x23c: 0xc7, 0x23d: 0xc8, 0x23e: 0xc2, 0x23f: 0xc3, -+ // Block 0x9, offset 0x240 -+ 0x240: 0xc4, 0x241: 0xc5, 0x242: 0xc6, 0x243: 0xc7, 0x244: 0xc8, 0x245: 0xc2, 0x246: 0xc3, 0x247: 0xc4, -+ 0x248: 0xc5, 0x249: 0xc6, 0x24a: 0xc7, 0x24b: 0xc8, 0x24c: 0xc2, 0x24d: 0xc3, 0x24e: 0xc4, 0x24f: 0xc5, -+ 0x250: 0xc6, 0x251: 0xc7, 0x252: 0xc8, 0x253: 0xc2, 0x254: 0xc3, 0x255: 0xc4, 0x256: 0xc5, 0x257: 0xc6, -+ 0x258: 0xc7, 0x259: 0xc8, 0x25a: 0xc2, 0x25b: 0xc3, 0x25c: 0xc4, 0x25d: 0xc5, 0x25e: 0xc6, 0x25f: 0xc7, -+ 0x260: 0xc8, 0x261: 0xc2, 0x262: 0xc3, 0x263: 0xc4, 0x264: 0xc5, 0x265: 0xc6, 0x266: 0xc7, 0x267: 0xc8, -+ 0x268: 0xc2, 0x269: 0xc3, 0x26a: 0xc4, 0x26b: 0xc5, 0x26c: 0xc6, 0x26d: 0xc7, 0x26e: 0xc8, 0x26f: 0xc2, -+ 0x270: 0xc3, 0x271: 0xc4, 0x272: 0xc5, 0x273: 0xc6, 0x274: 0xc7, 0x275: 0xc8, 0x276: 0xc2, 0x277: 0xc3, -+ 0x278: 0xc4, 0x279: 0xc5, 0x27a: 0xc6, 0x27b: 0xc7, 0x27c: 0xc8, 0x27d: 0xc2, 0x27e: 0xc3, 0x27f: 0xc4, -+ // Block 0xa, offset 0x280 -+ 0x280: 0xc5, 0x281: 0xc6, 0x282: 0xc7, 0x283: 0xc8, 0x284: 0xc2, 0x285: 0xc3, 0x286: 0xc4, 0x287: 0xc5, -+ 0x288: 0xc6, 0x289: 0xc7, 0x28a: 0xc8, 0x28b: 0xc2, 0x28c: 0xc3, 0x28d: 0xc4, 0x28e: 0xc5, 0x28f: 0xc6, -+ 0x290: 0xc7, 0x291: 0xc8, 0x292: 0xc2, 0x293: 0xc3, 0x294: 0xc4, 0x295: 0xc5, 0x296: 0xc6, 0x297: 0xc7, -+ 0x298: 0xc8, 0x299: 0xc2, 0x29a: 0xc3, 0x29b: 0xc4, 0x29c: 0xc5, 0x29d: 0xc6, 0x29e: 0xc7, 0x29f: 0xc8, -+ 0x2a0: 0xc2, 0x2a1: 0xc3, 0x2a2: 0xc4, 0x2a3: 0xc5, 0x2a4: 0xc6, 0x2a5: 0xc7, 0x2a6: 0xc8, 0x2a7: 0xc2, -+ 0x2a8: 0xc3, 0x2a9: 0xc4, 0x2aa: 0xc5, 0x2ab: 0xc6, 0x2ac: 0xc7, 0x2ad: 0xc8, 0x2ae: 0xc2, 0x2af: 0xc3, -+ 0x2b0: 0xc4, 0x2b1: 0xc5, 0x2b2: 0xc6, 0x2b3: 0xc7, 0x2b4: 0xc8, 0x2b5: 0xc2, 0x2b6: 0xc3, 0x2b7: 0xc4, -+ 0x2b8: 0xc5, 0x2b9: 0xc6, 0x2ba: 0xc7, 0x2bb: 0xc8, 0x2bc: 0xc2, 0x2bd: 0xc3, 0x2be: 0xc4, 0x2bf: 0xc5, -+ // Block 0xb, offset 0x2c0 -+ 0x2c0: 0xc6, 0x2c1: 0xc7, 0x2c2: 0xc8, 0x2c3: 0xc2, 0x2c4: 0xc3, 0x2c5: 0xc4, 0x2c6: 0xc5, 0x2c7: 0xc6, -+ 0x2c8: 0xc7, 0x2c9: 0xc8, 0x2ca: 0xc2, 0x2cb: 0xc3, 0x2cc: 0xc4, 0x2cd: 0xc5, 0x2ce: 0xc6, 0x2cf: 0xc7, -+ 0x2d0: 0xc8, 0x2d1: 0xc2, 0x2d2: 0xc3, 0x2d3: 0xc4, 0x2d4: 0xc5, 0x2d5: 0xc6, 0x2d6: 0xc7, 0x2d7: 0xc8, -+ 0x2d8: 0xc2, 0x2d9: 0xc3, 0x2da: 0xc4, 0x2db: 0xc5, 0x2dc: 0xc6, 0x2dd: 0xc7, 0x2de: 0xc9, -+ // Block 0xc, offset 0x300 -+ 0x324: 0x31, 0x325: 0x32, 0x326: 0x33, 0x327: 0x34, -+ 0x328: 0x35, 0x329: 0x36, 0x32a: 0x37, 0x32b: 0x38, 0x32c: 0x39, 0x32d: 0x3a, 0x32e: 0x3b, 0x32f: 0x3c, -+ 0x330: 0x3d, 0x331: 0x3e, 0x332: 0x3f, 0x333: 0x40, 0x334: 0x41, 0x335: 0x42, 0x336: 0x43, 0x337: 0x44, -+ 0x338: 0x45, 0x339: 0x46, 0x33a: 0x47, 0x33b: 0x48, 0x33c: 0xca, 0x33d: 0x49, 0x33e: 0x4a, 0x33f: 0x4b, -+ // Block 0xd, offset 0x340 -+ 0x347: 0xcb, -+ 0x34b: 0xcc, 0x34d: 0xcd, -+ 0x35e: 0x4c, -+ 0x368: 0xce, 0x36b: 0xcf, -+ 0x374: 0xd0, -+ 0x37a: 0xd1, 0x37b: 0xd2, 0x37d: 0xd3, 0x37e: 0xd4, -+ // Block 0xe, offset 0x380 -+ 0x381: 0xd5, 0x382: 0xd6, 0x384: 0xd7, 0x385: 0xbc, 0x387: 0xd8, -+ 0x388: 0xd9, 0x38b: 0xda, 0x38c: 0xdb, 0x38d: 0xdc, -+ 0x391: 0xdd, 0x392: 0xde, 0x393: 0xdf, 0x396: 0xe0, 0x397: 0xe1, -+ 0x398: 0xe2, 0x39a: 0xe3, 0x39c: 0xe4, -+ 0x3a0: 0xe5, 0x3a4: 0xe6, 0x3a5: 0xe7, 0x3a7: 0xe8, -+ 0x3a8: 0xe9, 0x3a9: 0xea, 0x3aa: 0xeb, -+ 0x3b0: 0xe2, 0x3b5: 0xec, 0x3b6: 0xed, -+ 0x3bd: 0xee, -+ // Block 0xf, offset 0x3c0 -+ 0x3eb: 0xef, 0x3ec: 0xf0, -+ 0x3ff: 0xf1, -+ // Block 0x10, offset 0x400 -+ 0x432: 0xf2, -+ // Block 0x11, offset 0x440 -+ 0x445: 0xf3, 0x446: 0xf4, 0x447: 0xf5, -+ 0x449: 0xf6, -+ 0x450: 0xf7, 0x451: 0xf8, 0x452: 0xf9, 0x453: 0xfa, 0x454: 0xfb, 0x455: 0xfc, 0x456: 0xfd, 0x457: 0xfe, -+ 0x458: 0xff, 0x459: 0x100, 0x45a: 0x4d, 0x45b: 0x101, 0x45c: 0x102, 0x45d: 0x103, 0x45e: 0x104, 0x45f: 0x4e, -+ // Block 0x12, offset 0x480 -+ 0x480: 0x4f, 0x481: 0x50, 0x482: 0x105, 0x484: 0xf0, -+ 0x48a: 0x106, 0x48b: 0x107, -+ 0x493: 0x108, -+ 0x4a3: 0x109, 0x4a5: 0x10a, -+ 0x4b8: 0x51, 0x4b9: 0x52, 0x4ba: 0x53, -+ // Block 0x13, offset 0x4c0 -+ 0x4c4: 0x54, 0x4c5: 0x10b, 0x4c6: 0x10c, -+ 0x4c8: 0x55, 0x4c9: 0x10d, -+ 0x4ef: 0x10e, -+ // Block 0x14, offset 0x500 -+ 0x520: 0x56, 0x521: 0x57, 0x522: 0x58, 0x523: 0x59, 0x524: 0x5a, 0x525: 0x5b, 0x526: 0x5c, 0x527: 0x5d, -+ 0x528: 0x5e, -+ // Block 0x15, offset 0x540 -+ 0x550: 0x0b, 0x551: 0x0c, 0x556: 0x0d, -+ 0x55b: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11, -+ 0x56f: 0x12, -+} -+ -+// nfkcSparseOffset: 176 entries, 352 bytes -+var nfkcSparseOffset = []uint16{0x0, 0xe, 0x12, 0x1c, 0x26, 0x36, 0x38, 0x3d, 0x48, 0x57, 0x64, 0x6c, 0x71, 0x76, 0x78, 0x7c, 0x84, 0x8b, 0x8e, 0x96, 0x9a, 0x9e, 0xa0, 0xa2, 0xab, 0xaf, 0xb6, 0xbb, 0xbe, 0xc8, 0xcb, 0xd2, 0xda, 0xde, 0xe0, 0xe4, 0xe8, 0xee, 0xff, 0x10b, 0x10d, 0x113, 0x115, 0x117, 0x119, 0x11b, 0x11d, 0x11f, 0x121, 0x124, 0x127, 0x129, 0x12c, 0x12f, 0x133, 0x139, 0x140, 0x149, 0x14b, 0x14e, 0x150, 0x15b, 0x166, 0x174, 0x182, 0x192, 0x1a0, 0x1a7, 0x1ad, 0x1bc, 0x1c0, 0x1c2, 0x1c6, 0x1c8, 0x1cb, 0x1cd, 0x1d0, 0x1d2, 0x1d5, 0x1d7, 0x1d9, 0x1db, 0x1e7, 0x1f1, 0x1fb, 0x1fe, 0x202, 0x204, 0x206, 0x20b, 0x20e, 0x211, 0x213, 0x215, 0x217, 0x219, 0x21f, 0x222, 0x227, 0x229, 0x230, 0x236, 0x23c, 0x244, 0x24a, 0x250, 0x256, 0x25a, 0x25c, 0x25e, 0x260, 0x262, 0x268, 0x26b, 0x26d, 0x26f, 0x271, 0x277, 0x27b, 0x27f, 0x287, 0x28e, 0x291, 0x294, 0x296, 0x299, 0x2a1, 0x2a5, 0x2ac, 0x2af, 0x2b5, 0x2b7, 0x2b9, 0x2bc, 0x2be, 0x2c1, 0x2c6, 0x2c8, 0x2ca, 0x2cc, 0x2ce, 0x2d0, 0x2d3, 0x2d5, 0x2d7, 0x2d9, 0x2db, 0x2dd, 0x2df, 0x2ec, 0x2f6, 0x2f8, 0x2fa, 0x2fe, 0x303, 0x30f, 0x314, 0x31d, 0x323, 0x328, 0x32c, 0x331, 0x335, 0x345, 0x353, 0x361, 0x36f, 0x371, 0x373, 0x375, 0x379, 0x37b, 0x37e, 0x389, 0x38b, 0x395} -+ -+// nfkcSparseValues: 919 entries, 3676 bytes -+var nfkcSparseValues = [919]valueRange{ -+ // Block 0x0, offset 0x0 -+ {value: 0x0002, lo: 0x0d}, -+ {value: 0x0001, lo: 0xa0, hi: 0xa0}, -+ {value: 0x43b9, lo: 0xa8, hi: 0xa8}, -+ {value: 0x0083, lo: 0xaa, hi: 0xaa}, -+ {value: 0x43a5, lo: 0xaf, hi: 0xaf}, -+ {value: 0x0025, lo: 0xb2, hi: 0xb3}, -+ {value: 0x439b, lo: 0xb4, hi: 0xb4}, -+ {value: 0x0260, lo: 0xb5, hi: 0xb5}, -+ {value: 0x43d2, lo: 0xb8, hi: 0xb8}, -+ {value: 0x0023, lo: 0xb9, hi: 0xb9}, -+ {value: 0x009f, lo: 0xba, hi: 0xba}, -+ {value: 0x234c, lo: 0xbc, hi: 0xbc}, -+ {value: 0x2340, lo: 0xbd, hi: 0xbd}, -+ {value: 0x23e2, lo: 0xbe, hi: 0xbe}, -+ // Block 0x1, offset 0xe -+ {value: 0x0091, lo: 0x03}, -+ {value: 0x4823, lo: 0xa0, hi: 0xa1}, -+ {value: 0x4855, lo: 0xaf, hi: 0xb0}, -+ {value: 0xa000, lo: 0xb7, hi: 0xb7}, -+ // Block 0x2, offset 0x12 -+ {value: 0x0004, lo: 0x09}, -+ {value: 0xa000, lo: 0x92, hi: 0x92}, -+ {value: 0x0091, lo: 0xb0, hi: 0xb0}, -+ {value: 0x0140, lo: 0xb1, hi: 0xb1}, -+ {value: 0x0095, lo: 0xb2, hi: 0xb2}, -+ {value: 0x00a5, lo: 0xb3, hi: 0xb3}, -+ {value: 0x0179, lo: 0xb4, hi: 0xb4}, -+ {value: 0x017f, lo: 0xb5, hi: 0xb5}, -+ {value: 0x018b, lo: 0xb6, hi: 0xb6}, -+ {value: 0x00af, lo: 0xb7, hi: 0xb8}, -+ // Block 0x3, offset 0x1c -+ {value: 0x000a, lo: 0x09}, -+ {value: 0x43af, lo: 0x98, hi: 0x98}, -+ {value: 0x43b4, lo: 0x99, hi: 0x9a}, -+ {value: 0x43d7, lo: 0x9b, hi: 0x9b}, -+ {value: 0x43a0, lo: 0x9c, hi: 0x9c}, -+ {value: 0x43c3, lo: 0x9d, hi: 0x9d}, -+ {value: 0x0137, lo: 0xa0, hi: 0xa0}, -+ {value: 0x0099, lo: 0xa1, hi: 0xa1}, -+ {value: 0x00a7, lo: 0xa2, hi: 0xa3}, -+ {value: 0x01b8, lo: 0xa4, hi: 0xa4}, -+ // Block 0x4, offset 0x26 -+ {value: 0x0000, lo: 0x0f}, -+ {value: 0xa000, lo: 0x83, hi: 0x83}, -+ {value: 0xa000, lo: 0x87, hi: 0x87}, -+ {value: 0xa000, lo: 0x8b, hi: 0x8b}, -+ {value: 0xa000, lo: 0x8d, hi: 0x8d}, -+ {value: 0x38e6, lo: 0x90, hi: 0x90}, -+ {value: 0x38f2, lo: 0x91, hi: 0x91}, -+ {value: 0x38e0, lo: 0x93, hi: 0x93}, -+ {value: 0xa000, lo: 0x96, hi: 0x96}, -+ {value: 0x3958, lo: 0x97, hi: 0x97}, -+ {value: 0x3922, lo: 0x9c, hi: 0x9c}, -+ {value: 0x390a, lo: 0x9d, hi: 0x9d}, -+ {value: 0x3934, lo: 0x9e, hi: 0x9e}, -+ {value: 0xa000, lo: 0xb4, hi: 0xb5}, -+ {value: 0x395e, lo: 0xb6, hi: 0xb6}, -+ {value: 0x3964, lo: 0xb7, hi: 0xb7}, -+ // Block 0x5, offset 0x36 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8133, lo: 0x83, hi: 0x87}, -+ // Block 0x6, offset 0x38 -+ {value: 0x0001, lo: 0x04}, -+ {value: 0x8114, lo: 0x81, hi: 0x82}, -+ {value: 0x8133, lo: 0x84, hi: 0x84}, -+ {value: 0x812e, lo: 0x85, hi: 0x85}, -+ {value: 0x810e, lo: 0x87, hi: 0x87}, -+ // Block 0x7, offset 0x3d -+ {value: 0x0000, lo: 0x0a}, -+ {value: 0x8133, lo: 0x90, hi: 0x97}, -+ {value: 0x811a, lo: 0x98, hi: 0x98}, -+ {value: 0x811b, lo: 0x99, hi: 0x99}, -+ {value: 0x811c, lo: 0x9a, hi: 0x9a}, -+ {value: 0x3982, lo: 0xa2, hi: 0xa2}, -+ {value: 0x3988, lo: 0xa3, hi: 0xa3}, -+ {value: 0x3994, lo: 0xa4, hi: 0xa4}, -+ {value: 0x398e, lo: 0xa5, hi: 0xa5}, -+ {value: 0x399a, lo: 0xa6, hi: 0xa6}, -+ {value: 0xa000, lo: 0xa7, hi: 0xa7}, -+ // Block 0x8, offset 0x48 -+ {value: 0x0000, lo: 0x0e}, -+ {value: 0x39ac, lo: 0x80, hi: 0x80}, -+ {value: 0xa000, lo: 0x81, hi: 0x81}, -+ {value: 0x39a0, lo: 0x82, hi: 0x82}, -+ {value: 0xa000, lo: 0x92, hi: 0x92}, -+ {value: 0x39a6, lo: 0x93, hi: 0x93}, -+ {value: 0xa000, lo: 0x95, hi: 0x95}, -+ {value: 0x8133, lo: 0x96, hi: 0x9c}, -+ {value: 0x8133, lo: 0x9f, hi: 0xa2}, -+ {value: 0x812e, lo: 0xa3, hi: 0xa3}, -+ {value: 0x8133, lo: 0xa4, hi: 0xa4}, -+ {value: 0x8133, lo: 0xa7, hi: 0xa8}, -+ {value: 0x812e, lo: 0xaa, hi: 0xaa}, -+ {value: 0x8133, lo: 0xab, hi: 0xac}, -+ {value: 0x812e, lo: 0xad, hi: 0xad}, -+ // Block 0x9, offset 0x57 -+ {value: 0x0000, lo: 0x0c}, -+ {value: 0x8120, lo: 0x91, hi: 0x91}, -+ {value: 0x8133, lo: 0xb0, hi: 0xb0}, -+ {value: 0x812e, lo: 0xb1, hi: 0xb1}, -+ {value: 0x8133, lo: 0xb2, hi: 0xb3}, -+ {value: 0x812e, lo: 0xb4, hi: 0xb4}, -+ {value: 0x8133, lo: 0xb5, hi: 0xb6}, -+ {value: 0x812e, lo: 0xb7, hi: 0xb9}, -+ {value: 0x8133, lo: 0xba, hi: 0xba}, -+ {value: 0x812e, lo: 0xbb, hi: 0xbc}, -+ {value: 0x8133, lo: 0xbd, hi: 0xbd}, -+ {value: 0x812e, lo: 0xbe, hi: 0xbe}, -+ {value: 0x8133, lo: 0xbf, hi: 0xbf}, -+ // Block 0xa, offset 0x64 -+ {value: 0x0005, lo: 0x07}, -+ {value: 0x8133, lo: 0x80, hi: 0x80}, -+ {value: 0x8133, lo: 0x81, hi: 0x81}, -+ {value: 0x812e, lo: 0x82, hi: 0x83}, -+ {value: 0x812e, lo: 0x84, hi: 0x85}, -+ {value: 0x812e, lo: 0x86, hi: 0x87}, -+ {value: 0x812e, lo: 0x88, hi: 0x89}, -+ {value: 0x8133, lo: 0x8a, hi: 0x8a}, -+ // Block 0xb, offset 0x6c -+ {value: 0x0000, lo: 0x04}, -+ {value: 0x8133, lo: 0xab, hi: 0xb1}, -+ {value: 0x812e, lo: 0xb2, hi: 0xb2}, -+ {value: 0x8133, lo: 0xb3, hi: 0xb3}, -+ {value: 0x812e, lo: 0xbd, hi: 0xbd}, -+ // Block 0xc, offset 0x71 -+ {value: 0x0000, lo: 0x04}, -+ {value: 0x8133, lo: 0x96, hi: 0x99}, -+ {value: 0x8133, lo: 0x9b, hi: 0xa3}, -+ {value: 0x8133, lo: 0xa5, hi: 0xa7}, -+ {value: 0x8133, lo: 0xa9, hi: 0xad}, -+ // Block 0xd, offset 0x76 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x812e, lo: 0x99, hi: 0x9b}, -+ // Block 0xe, offset 0x78 -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x8133, lo: 0x98, hi: 0x98}, -+ {value: 0x812e, lo: 0x99, hi: 0x9b}, -+ {value: 0x8133, lo: 0x9c, hi: 0x9f}, -+ // Block 0xf, offset 0x7c -+ {value: 0x0000, lo: 0x07}, -+ {value: 0xa000, lo: 0xa8, hi: 0xa8}, -+ {value: 0x4019, lo: 0xa9, hi: 0xa9}, -+ {value: 0xa000, lo: 0xb0, hi: 0xb0}, -+ {value: 0x4021, lo: 0xb1, hi: 0xb1}, -+ {value: 0xa000, lo: 0xb3, hi: 0xb3}, -+ {value: 0x4029, lo: 0xb4, hi: 0xb4}, -+ {value: 0x9903, lo: 0xbc, hi: 0xbc}, -+ // Block 0x10, offset 0x84 -+ {value: 0x0008, lo: 0x06}, -+ {value: 0x8105, lo: 0x8d, hi: 0x8d}, -+ {value: 0x8133, lo: 0x91, hi: 0x91}, -+ {value: 0x812e, lo: 0x92, hi: 0x92}, -+ {value: 0x8133, lo: 0x93, hi: 0x93}, -+ {value: 0x8133, lo: 0x94, hi: 0x94}, -+ {value: 0x465d, lo: 0x98, hi: 0x9f}, -+ // Block 0x11, offset 0x8b -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8103, lo: 0xbc, hi: 0xbc}, -+ {value: 0x9900, lo: 0xbe, hi: 0xbe}, -+ // Block 0x12, offset 0x8e -+ {value: 0x0008, lo: 0x07}, -+ {value: 0xa000, lo: 0x87, hi: 0x87}, -+ {value: 0x2dd5, lo: 0x8b, hi: 0x8c}, -+ {value: 0x8105, lo: 0x8d, hi: 0x8d}, -+ {value: 0x9900, lo: 0x97, hi: 0x97}, -+ {value: 0x469d, lo: 0x9c, hi: 0x9d}, -+ {value: 0x46ad, lo: 0x9f, hi: 0x9f}, -+ {value: 0x8133, lo: 0xbe, hi: 0xbe}, -+ // Block 0x13, offset 0x96 -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x46d5, lo: 0xb3, hi: 0xb3}, -+ {value: 0x46dd, lo: 0xb6, hi: 0xb6}, -+ {value: 0x8103, lo: 0xbc, hi: 0xbc}, -+ // Block 0x14, offset 0x9a -+ {value: 0x0008, lo: 0x03}, -+ {value: 0x8105, lo: 0x8d, hi: 0x8d}, -+ {value: 0x46b5, lo: 0x99, hi: 0x9b}, -+ {value: 0x46cd, lo: 0x9e, hi: 0x9e}, -+ // Block 0x15, offset 0x9e -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8103, lo: 0xbc, hi: 0xbc}, -+ // Block 0x16, offset 0xa0 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8105, lo: 0x8d, hi: 0x8d}, -+ // Block 0x17, offset 0xa2 -+ {value: 0x0000, lo: 0x08}, -+ {value: 0xa000, lo: 0x87, hi: 0x87}, -+ {value: 0x2ded, lo: 0x88, hi: 0x88}, -+ {value: 0x2de5, lo: 0x8b, hi: 0x8b}, -+ {value: 0x2df5, lo: 0x8c, hi: 0x8c}, -+ {value: 0x8105, lo: 0x8d, hi: 0x8d}, -+ {value: 0x9900, lo: 0x96, hi: 0x97}, -+ {value: 0x46e5, lo: 0x9c, hi: 0x9c}, -+ {value: 0x46ed, lo: 0x9d, hi: 0x9d}, -+ // Block 0x18, offset 0xab -+ {value: 0x0000, lo: 0x03}, -+ {value: 0xa000, lo: 0x92, hi: 0x92}, -+ {value: 0x2dfd, lo: 0x94, hi: 0x94}, -+ {value: 0x9900, lo: 0xbe, hi: 0xbe}, -+ // Block 0x19, offset 0xaf -+ {value: 0x0000, lo: 0x06}, -+ {value: 0xa000, lo: 0x86, hi: 0x87}, -+ {value: 0x2e05, lo: 0x8a, hi: 0x8a}, -+ {value: 0x2e15, lo: 0x8b, hi: 0x8b}, -+ {value: 0x2e0d, lo: 0x8c, hi: 0x8c}, -+ {value: 0x8105, lo: 0x8d, hi: 0x8d}, -+ {value: 0x9900, lo: 0x97, hi: 0x97}, -+ // Block 0x1a, offset 0xb6 -+ {value: 0x1801, lo: 0x04}, -+ {value: 0xa000, lo: 0x86, hi: 0x86}, -+ {value: 0x4031, lo: 0x88, hi: 0x88}, -+ {value: 0x8105, lo: 0x8d, hi: 0x8d}, -+ {value: 0x8121, lo: 0x95, hi: 0x96}, -+ // Block 0x1b, offset 0xbb -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8103, lo: 0xbc, hi: 0xbc}, -+ {value: 0xa000, lo: 0xbf, hi: 0xbf}, -+ // Block 0x1c, offset 0xbe -+ {value: 0x0000, lo: 0x09}, -+ {value: 0x2e1d, lo: 0x80, hi: 0x80}, -+ {value: 0x9900, lo: 0x82, hi: 0x82}, -+ {value: 0xa000, lo: 0x86, hi: 0x86}, -+ {value: 0x2e25, lo: 0x87, hi: 0x87}, -+ {value: 0x2e2d, lo: 0x88, hi: 0x88}, -+ {value: 0x3091, lo: 0x8a, hi: 0x8a}, -+ {value: 0x2f19, lo: 0x8b, hi: 0x8b}, -+ {value: 0x8105, lo: 0x8d, hi: 0x8d}, -+ {value: 0x9900, lo: 0x95, hi: 0x96}, -+ // Block 0x1d, offset 0xc8 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8105, lo: 0xbb, hi: 0xbc}, -+ {value: 0x9900, lo: 0xbe, hi: 0xbe}, -+ // Block 0x1e, offset 0xcb -+ {value: 0x0000, lo: 0x06}, -+ {value: 0xa000, lo: 0x86, hi: 0x87}, -+ {value: 0x2e35, lo: 0x8a, hi: 0x8a}, -+ {value: 0x2e45, lo: 0x8b, hi: 0x8b}, -+ {value: 0x2e3d, lo: 0x8c, hi: 0x8c}, -+ {value: 0x8105, lo: 0x8d, hi: 0x8d}, -+ {value: 0x9900, lo: 0x97, hi: 0x97}, -+ // Block 0x1f, offset 0xd2 -+ {value: 0x6ab3, lo: 0x07}, -+ {value: 0x9905, lo: 0x8a, hi: 0x8a}, -+ {value: 0x9900, lo: 0x8f, hi: 0x8f}, -+ {value: 0xa000, lo: 0x99, hi: 0x99}, -+ {value: 0x4039, lo: 0x9a, hi: 0x9a}, -+ {value: 0x3099, lo: 0x9c, hi: 0x9c}, -+ {value: 0x2f24, lo: 0x9d, hi: 0x9d}, -+ {value: 0x2e4d, lo: 0x9e, hi: 0x9f}, -+ // Block 0x20, offset 0xda -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x2751, lo: 0xb3, hi: 0xb3}, -+ {value: 0x8123, lo: 0xb8, hi: 0xb9}, -+ {value: 0x8105, lo: 0xba, hi: 0xba}, -+ // Block 0x21, offset 0xde -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8124, lo: 0x88, hi: 0x8b}, -+ // Block 0x22, offset 0xe0 -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x2766, lo: 0xb3, hi: 0xb3}, -+ {value: 0x8125, lo: 0xb8, hi: 0xb9}, -+ {value: 0x8105, lo: 0xba, hi: 0xba}, -+ // Block 0x23, offset 0xe4 -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x8126, lo: 0x88, hi: 0x8b}, -+ {value: 0x2758, lo: 0x9c, hi: 0x9c}, -+ {value: 0x275f, lo: 0x9d, hi: 0x9d}, -+ // Block 0x24, offset 0xe8 -+ {value: 0x0000, lo: 0x05}, -+ {value: 0x03fe, lo: 0x8c, hi: 0x8c}, -+ {value: 0x812e, lo: 0x98, hi: 0x99}, -+ {value: 0x812e, lo: 0xb5, hi: 0xb5}, -+ {value: 0x812e, lo: 0xb7, hi: 0xb7}, -+ {value: 0x812c, lo: 0xb9, hi: 0xb9}, -+ // Block 0x25, offset 0xee -+ {value: 0x0000, lo: 0x10}, -+ {value: 0x2774, lo: 0x83, hi: 0x83}, -+ {value: 0x277b, lo: 0x8d, hi: 0x8d}, -+ {value: 0x2782, lo: 0x92, hi: 0x92}, -+ {value: 0x2789, lo: 0x97, hi: 0x97}, -+ {value: 0x2790, lo: 0x9c, hi: 0x9c}, -+ {value: 0x276d, lo: 0xa9, hi: 0xa9}, -+ {value: 0x8127, lo: 0xb1, hi: 0xb1}, -+ {value: 0x8128, lo: 0xb2, hi: 0xb2}, -+ {value: 0x4bc5, lo: 0xb3, hi: 0xb3}, -+ {value: 0x8129, lo: 0xb4, hi: 0xb4}, -+ {value: 0x4bce, lo: 0xb5, hi: 0xb5}, -+ {value: 0x46f5, lo: 0xb6, hi: 0xb6}, -+ {value: 0x4735, lo: 0xb7, hi: 0xb7}, -+ {value: 0x46fd, lo: 0xb8, hi: 0xb8}, -+ {value: 0x4740, lo: 0xb9, hi: 0xb9}, -+ {value: 0x8128, lo: 0xba, hi: 0xbd}, -+ // Block 0x26, offset 0xff -+ {value: 0x0000, lo: 0x0b}, -+ {value: 0x8128, lo: 0x80, hi: 0x80}, -+ {value: 0x4bd7, lo: 0x81, hi: 0x81}, -+ {value: 0x8133, lo: 0x82, hi: 0x83}, -+ {value: 0x8105, lo: 0x84, hi: 0x84}, -+ {value: 0x8133, lo: 0x86, hi: 0x87}, -+ {value: 0x279e, lo: 0x93, hi: 0x93}, -+ {value: 0x27a5, lo: 0x9d, hi: 0x9d}, -+ {value: 0x27ac, lo: 0xa2, hi: 0xa2}, -+ {value: 0x27b3, lo: 0xa7, hi: 0xa7}, -+ {value: 0x27ba, lo: 0xac, hi: 0xac}, -+ {value: 0x2797, lo: 0xb9, hi: 0xb9}, -+ // Block 0x27, offset 0x10b -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x812e, lo: 0x86, hi: 0x86}, -+ // Block 0x28, offset 0x10d -+ {value: 0x0000, lo: 0x05}, -+ {value: 0xa000, lo: 0xa5, hi: 0xa5}, -+ {value: 0x2e55, lo: 0xa6, hi: 0xa6}, -+ {value: 0x9900, lo: 0xae, hi: 0xae}, -+ {value: 0x8103, lo: 0xb7, hi: 0xb7}, -+ {value: 0x8105, lo: 0xb9, hi: 0xba}, -+ // Block 0x29, offset 0x113 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x812e, lo: 0x8d, hi: 0x8d}, -+ // Block 0x2a, offset 0x115 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x0402, lo: 0xbc, hi: 0xbc}, -+ // Block 0x2b, offset 0x117 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0xa000, lo: 0x80, hi: 0x92}, -+ // Block 0x2c, offset 0x119 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0xb900, lo: 0xa1, hi: 0xb5}, -+ // Block 0x2d, offset 0x11b -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x9900, lo: 0xa8, hi: 0xbf}, -+ // Block 0x2e, offset 0x11d -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x9900, lo: 0x80, hi: 0x82}, -+ // Block 0x2f, offset 0x11f -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8133, lo: 0x9d, hi: 0x9f}, -+ // Block 0x30, offset 0x121 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8105, lo: 0x94, hi: 0x95}, -+ {value: 0x8105, lo: 0xb4, hi: 0xb4}, -+ // Block 0x31, offset 0x124 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8105, lo: 0x92, hi: 0x92}, -+ {value: 0x8133, lo: 0x9d, hi: 0x9d}, -+ // Block 0x32, offset 0x127 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8132, lo: 0xa9, hi: 0xa9}, -+ // Block 0x33, offset 0x129 -+ {value: 0x0004, lo: 0x02}, -+ {value: 0x812f, lo: 0xb9, hi: 0xba}, -+ {value: 0x812e, lo: 0xbb, hi: 0xbb}, -+ // Block 0x34, offset 0x12c -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8133, lo: 0x97, hi: 0x97}, -+ {value: 0x812e, lo: 0x98, hi: 0x98}, -+ // Block 0x35, offset 0x12f -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x8105, lo: 0xa0, hi: 0xa0}, -+ {value: 0x8133, lo: 0xb5, hi: 0xbc}, -+ {value: 0x812e, lo: 0xbf, hi: 0xbf}, -+ // Block 0x36, offset 0x133 -+ {value: 0x0000, lo: 0x05}, -+ {value: 0x8133, lo: 0xb0, hi: 0xb4}, -+ {value: 0x812e, lo: 0xb5, hi: 0xba}, -+ {value: 0x8133, lo: 0xbb, hi: 0xbc}, -+ {value: 0x812e, lo: 0xbd, hi: 0xbd}, -+ {value: 0x812e, lo: 0xbf, hi: 0xbf}, -+ // Block 0x37, offset 0x139 -+ {value: 0x0000, lo: 0x06}, -+ {value: 0x812e, lo: 0x80, hi: 0x80}, -+ {value: 0x8133, lo: 0x81, hi: 0x82}, -+ {value: 0x812e, lo: 0x83, hi: 0x84}, -+ {value: 0x8133, lo: 0x85, hi: 0x89}, -+ {value: 0x812e, lo: 0x8a, hi: 0x8a}, -+ {value: 0x8133, lo: 0x8b, hi: 0x8e}, -+ // Block 0x38, offset 0x140 -+ {value: 0x0000, lo: 0x08}, -+ {value: 0x2e9d, lo: 0x80, hi: 0x80}, -+ {value: 0x2ea5, lo: 0x81, hi: 0x81}, -+ {value: 0xa000, lo: 0x82, hi: 0x82}, -+ {value: 0x2ead, lo: 0x83, hi: 0x83}, -+ {value: 0x8105, lo: 0x84, hi: 0x84}, -+ {value: 0x8133, lo: 0xab, hi: 0xab}, -+ {value: 0x812e, lo: 0xac, hi: 0xac}, -+ {value: 0x8133, lo: 0xad, hi: 0xb3}, -+ // Block 0x39, offset 0x149 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8105, lo: 0xaa, hi: 0xab}, -+ // Block 0x3a, offset 0x14b -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8103, lo: 0xa6, hi: 0xa6}, -+ {value: 0x8105, lo: 0xb2, hi: 0xb3}, -+ // Block 0x3b, offset 0x14e -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8103, lo: 0xb7, hi: 0xb7}, -+ // Block 0x3c, offset 0x150 -+ {value: 0x0000, lo: 0x0a}, -+ {value: 0x8133, lo: 0x90, hi: 0x92}, -+ {value: 0x8101, lo: 0x94, hi: 0x94}, -+ {value: 0x812e, lo: 0x95, hi: 0x99}, -+ {value: 0x8133, lo: 0x9a, hi: 0x9b}, -+ {value: 0x812e, lo: 0x9c, hi: 0x9f}, -+ {value: 0x8133, lo: 0xa0, hi: 0xa0}, -+ {value: 0x8101, lo: 0xa2, hi: 0xa8}, -+ {value: 0x812e, lo: 0xad, hi: 0xad}, -+ {value: 0x8133, lo: 0xb4, hi: 0xb4}, -+ {value: 0x8133, lo: 0xb8, hi: 0xb9}, -+ // Block 0x3d, offset 0x15b -+ {value: 0x0002, lo: 0x0a}, -+ {value: 0x0043, lo: 0xac, hi: 0xac}, -+ {value: 0x00d1, lo: 0xad, hi: 0xad}, -+ {value: 0x0045, lo: 0xae, hi: 0xae}, -+ {value: 0x0049, lo: 0xb0, hi: 0xb1}, -+ {value: 0x00ec, lo: 0xb2, hi: 0xb2}, -+ {value: 0x004f, lo: 0xb3, hi: 0xba}, -+ {value: 0x005f, lo: 0xbc, hi: 0xbc}, -+ {value: 0x00fe, lo: 0xbd, hi: 0xbd}, -+ {value: 0x0061, lo: 0xbe, hi: 0xbe}, -+ {value: 0x0065, lo: 0xbf, hi: 0xbf}, -+ // Block 0x3e, offset 0x166 -+ {value: 0x0000, lo: 0x0d}, -+ {value: 0x0001, lo: 0x80, hi: 0x8a}, -+ {value: 0x0532, lo: 0x91, hi: 0x91}, -+ {value: 0x43dc, lo: 0x97, hi: 0x97}, -+ {value: 0x001d, lo: 0xa4, hi: 0xa4}, -+ {value: 0x19a0, lo: 0xa5, hi: 0xa5}, -+ {value: 0x1c8c, lo: 0xa6, hi: 0xa6}, -+ {value: 0x0001, lo: 0xaf, hi: 0xaf}, -+ {value: 0x27c1, lo: 0xb3, hi: 0xb3}, -+ {value: 0x2935, lo: 0xb4, hi: 0xb4}, -+ {value: 0x27c8, lo: 0xb6, hi: 0xb6}, -+ {value: 0x293f, lo: 0xb7, hi: 0xb7}, -+ {value: 0x199a, lo: 0xbc, hi: 0xbc}, -+ {value: 0x43aa, lo: 0xbe, hi: 0xbe}, -+ // Block 0x3f, offset 0x174 -+ {value: 0x0002, lo: 0x0d}, -+ {value: 0x1a60, lo: 0x87, hi: 0x87}, -+ {value: 0x1a5d, lo: 0x88, hi: 0x88}, -+ {value: 0x199d, lo: 0x89, hi: 0x89}, -+ {value: 0x2ac5, lo: 0x97, hi: 0x97}, -+ {value: 0x0001, lo: 0x9f, hi: 0x9f}, -+ {value: 0x0021, lo: 0xb0, hi: 0xb0}, -+ {value: 0x0093, lo: 0xb1, hi: 0xb1}, -+ {value: 0x0029, lo: 0xb4, hi: 0xb9}, -+ {value: 0x0017, lo: 0xba, hi: 0xba}, -+ {value: 0x055e, lo: 0xbb, hi: 0xbb}, -+ {value: 0x003b, lo: 0xbc, hi: 0xbc}, -+ {value: 0x0011, lo: 0xbd, hi: 0xbe}, -+ {value: 0x009d, lo: 0xbf, hi: 0xbf}, -+ // Block 0x40, offset 0x182 -+ {value: 0x0002, lo: 0x0f}, -+ {value: 0x0021, lo: 0x80, hi: 0x89}, -+ {value: 0x0017, lo: 0x8a, hi: 0x8a}, -+ {value: 0x055e, lo: 0x8b, hi: 0x8b}, -+ {value: 0x003b, lo: 0x8c, hi: 0x8c}, -+ {value: 0x0011, lo: 0x8d, hi: 0x8e}, -+ {value: 0x0083, lo: 0x90, hi: 0x90}, -+ {value: 0x008b, lo: 0x91, hi: 0x91}, -+ {value: 0x009f, lo: 0x92, hi: 0x92}, -+ {value: 0x00b1, lo: 0x93, hi: 0x93}, -+ {value: 0x011f, lo: 0x94, hi: 0x94}, -+ {value: 0x0091, lo: 0x95, hi: 0x95}, -+ {value: 0x0097, lo: 0x96, hi: 0x99}, -+ {value: 0x00a1, lo: 0x9a, hi: 0x9a}, -+ {value: 0x00a7, lo: 0x9b, hi: 0x9c}, -+ {value: 0x1ac9, lo: 0xa8, hi: 0xa8}, -+ // Block 0x41, offset 0x192 -+ {value: 0x0000, lo: 0x0d}, -+ {value: 0x8133, lo: 0x90, hi: 0x91}, -+ {value: 0x8101, lo: 0x92, hi: 0x93}, -+ {value: 0x8133, lo: 0x94, hi: 0x97}, -+ {value: 0x8101, lo: 0x98, hi: 0x9a}, -+ {value: 0x8133, lo: 0x9b, hi: 0x9c}, -+ {value: 0x8133, lo: 0xa1, hi: 0xa1}, -+ {value: 0x8101, lo: 0xa5, hi: 0xa6}, -+ {value: 0x8133, lo: 0xa7, hi: 0xa7}, -+ {value: 0x812e, lo: 0xa8, hi: 0xa8}, -+ {value: 0x8133, lo: 0xa9, hi: 0xa9}, -+ {value: 0x8101, lo: 0xaa, hi: 0xab}, -+ {value: 0x812e, lo: 0xac, hi: 0xaf}, -+ {value: 0x8133, lo: 0xb0, hi: 0xb0}, -+ // Block 0x42, offset 0x1a0 -+ {value: 0x0007, lo: 0x06}, -+ {value: 0x22b0, lo: 0x89, hi: 0x89}, -+ {value: 0xa000, lo: 0x90, hi: 0x90}, -+ {value: 0xa000, lo: 0x92, hi: 0x92}, -+ {value: 0xa000, lo: 0x94, hi: 0x94}, -+ {value: 0x3cfa, lo: 0x9a, hi: 0x9b}, -+ {value: 0x3d08, lo: 0xae, hi: 0xae}, -+ // Block 0x43, offset 0x1a7 -+ {value: 0x000e, lo: 0x05}, -+ {value: 0x3d0f, lo: 0x8d, hi: 0x8e}, -+ {value: 0x3d16, lo: 0x8f, hi: 0x8f}, -+ {value: 0xa000, lo: 0x90, hi: 0x90}, -+ {value: 0xa000, lo: 0x92, hi: 0x92}, -+ {value: 0xa000, lo: 0x94, hi: 0x94}, -+ // Block 0x44, offset 0x1ad -+ {value: 0x017a, lo: 0x0e}, -+ {value: 0xa000, lo: 0x83, hi: 0x83}, -+ {value: 0x3d24, lo: 0x84, hi: 0x84}, -+ {value: 0xa000, lo: 0x88, hi: 0x88}, -+ {value: 0x3d2b, lo: 0x89, hi: 0x89}, -+ {value: 0xa000, lo: 0x8b, hi: 0x8b}, -+ {value: 0x3d32, lo: 0x8c, hi: 0x8c}, -+ {value: 0xa000, lo: 0xa3, hi: 0xa3}, -+ {value: 0x3d39, lo: 0xa4, hi: 0xa4}, -+ {value: 0xa000, lo: 0xa5, hi: 0xa5}, -+ {value: 0x3d40, lo: 0xa6, hi: 0xa6}, -+ {value: 0x27cf, lo: 0xac, hi: 0xad}, -+ {value: 0x27d6, lo: 0xaf, hi: 0xaf}, -+ {value: 0x2953, lo: 0xb0, hi: 0xb0}, -+ {value: 0xa000, lo: 0xbc, hi: 0xbc}, -+ // Block 0x45, offset 0x1bc -+ {value: 0x0007, lo: 0x03}, -+ {value: 0x3da9, lo: 0xa0, hi: 0xa1}, -+ {value: 0x3dd3, lo: 0xa2, hi: 0xa3}, -+ {value: 0x3dfd, lo: 0xaa, hi: 0xad}, -+ // Block 0x46, offset 0x1c0 -+ {value: 0x0004, lo: 0x01}, -+ {value: 0x0586, lo: 0xa9, hi: 0xaa}, -+ // Block 0x47, offset 0x1c2 -+ {value: 0x0002, lo: 0x03}, -+ {value: 0x0057, lo: 0x80, hi: 0x8f}, -+ {value: 0x0083, lo: 0x90, hi: 0xa9}, -+ {value: 0x0021, lo: 0xaa, hi: 0xaa}, -+ // Block 0x48, offset 0x1c6 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x2ad2, lo: 0x8c, hi: 0x8c}, -+ // Block 0x49, offset 0x1c8 -+ {value: 0x0266, lo: 0x02}, -+ {value: 0x1cbc, lo: 0xb4, hi: 0xb4}, -+ {value: 0x1a5a, lo: 0xb5, hi: 0xb6}, -+ // Block 0x4a, offset 0x1cb -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x461e, lo: 0x9c, hi: 0x9c}, -+ // Block 0x4b, offset 0x1cd -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x0095, lo: 0xbc, hi: 0xbc}, -+ {value: 0x006d, lo: 0xbd, hi: 0xbd}, -+ // Block 0x4c, offset 0x1d0 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8133, lo: 0xaf, hi: 0xb1}, -+ // Block 0x4d, offset 0x1d2 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x057a, lo: 0xaf, hi: 0xaf}, -+ {value: 0x8105, lo: 0xbf, hi: 0xbf}, -+ // Block 0x4e, offset 0x1d5 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8133, lo: 0xa0, hi: 0xbf}, -+ // Block 0x4f, offset 0x1d7 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x0ebe, lo: 0x9f, hi: 0x9f}, -+ // Block 0x50, offset 0x1d9 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x172a, lo: 0xb3, hi: 0xb3}, -+ // Block 0x51, offset 0x1db -+ {value: 0x0004, lo: 0x0b}, -+ {value: 0x1692, lo: 0x80, hi: 0x82}, -+ {value: 0x16aa, lo: 0x83, hi: 0x83}, -+ {value: 0x16c2, lo: 0x84, hi: 0x85}, -+ {value: 0x16d2, lo: 0x86, hi: 0x89}, -+ {value: 0x16e6, lo: 0x8a, hi: 0x8c}, -+ {value: 0x16fa, lo: 0x8d, hi: 0x8d}, -+ {value: 0x1702, lo: 0x8e, hi: 0x8e}, -+ {value: 0x170a, lo: 0x8f, hi: 0x90}, -+ {value: 0x1716, lo: 0x91, hi: 0x93}, -+ {value: 0x1726, lo: 0x94, hi: 0x94}, -+ {value: 0x172e, lo: 0x95, hi: 0x95}, -+ // Block 0x52, offset 0x1e7 -+ {value: 0x0004, lo: 0x09}, -+ {value: 0x0001, lo: 0x80, hi: 0x80}, -+ {value: 0x812d, lo: 0xaa, hi: 0xaa}, -+ {value: 0x8132, lo: 0xab, hi: 0xab}, -+ {value: 0x8134, lo: 0xac, hi: 0xac}, -+ {value: 0x812f, lo: 0xad, hi: 0xad}, -+ {value: 0x8130, lo: 0xae, hi: 0xae}, -+ {value: 0x8130, lo: 0xaf, hi: 0xaf}, -+ {value: 0x05ae, lo: 0xb6, hi: 0xb6}, -+ {value: 0x0982, lo: 0xb8, hi: 0xba}, -+ // Block 0x53, offset 0x1f1 -+ {value: 0x0006, lo: 0x09}, -+ {value: 0x0406, lo: 0xb1, hi: 0xb1}, -+ {value: 0x040a, lo: 0xb2, hi: 0xb2}, -+ {value: 0x4b7c, lo: 0xb3, hi: 0xb3}, -+ {value: 0x040e, lo: 0xb4, hi: 0xb4}, -+ {value: 0x4b82, lo: 0xb5, hi: 0xb6}, -+ {value: 0x0412, lo: 0xb7, hi: 0xb7}, -+ {value: 0x0416, lo: 0xb8, hi: 0xb8}, -+ {value: 0x041a, lo: 0xb9, hi: 0xb9}, -+ {value: 0x4b8e, lo: 0xba, hi: 0xbf}, -+ // Block 0x54, offset 0x1fb -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8133, lo: 0xaf, hi: 0xaf}, -+ {value: 0x8133, lo: 0xb4, hi: 0xbd}, -+ // Block 0x55, offset 0x1fe -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x02d8, lo: 0x9c, hi: 0x9c}, -+ {value: 0x02de, lo: 0x9d, hi: 0x9d}, -+ {value: 0x8133, lo: 0x9e, hi: 0x9f}, -+ // Block 0x56, offset 0x202 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8133, lo: 0xb0, hi: 0xb1}, -+ // Block 0x57, offset 0x204 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x173e, lo: 0xb0, hi: 0xb0}, -+ // Block 0x58, offset 0x206 -+ {value: 0x0006, lo: 0x04}, -+ {value: 0x0047, lo: 0xb2, hi: 0xb3}, -+ {value: 0x0063, lo: 0xb4, hi: 0xb4}, -+ {value: 0x00dd, lo: 0xb8, hi: 0xb8}, -+ {value: 0x00e9, lo: 0xb9, hi: 0xb9}, -+ // Block 0x59, offset 0x20b -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8105, lo: 0x86, hi: 0x86}, -+ {value: 0x8105, lo: 0xac, hi: 0xac}, -+ // Block 0x5a, offset 0x20e -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8105, lo: 0x84, hi: 0x84}, -+ {value: 0x8133, lo: 0xa0, hi: 0xb1}, -+ // Block 0x5b, offset 0x211 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x812e, lo: 0xab, hi: 0xad}, -+ // Block 0x5c, offset 0x213 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8105, lo: 0x93, hi: 0x93}, -+ // Block 0x5d, offset 0x215 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8103, lo: 0xb3, hi: 0xb3}, -+ // Block 0x5e, offset 0x217 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8105, lo: 0x80, hi: 0x80}, -+ // Block 0x5f, offset 0x219 -+ {value: 0x0000, lo: 0x05}, -+ {value: 0x8133, lo: 0xb0, hi: 0xb0}, -+ {value: 0x8133, lo: 0xb2, hi: 0xb3}, -+ {value: 0x812e, lo: 0xb4, hi: 0xb4}, -+ {value: 0x8133, lo: 0xb7, hi: 0xb8}, -+ {value: 0x8133, lo: 0xbe, hi: 0xbf}, -+ // Block 0x60, offset 0x21f -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8133, lo: 0x81, hi: 0x81}, -+ {value: 0x8105, lo: 0xb6, hi: 0xb6}, -+ // Block 0x61, offset 0x222 -+ {value: 0x000c, lo: 0x04}, -+ {value: 0x173a, lo: 0x9c, hi: 0x9d}, -+ {value: 0x014f, lo: 0x9e, hi: 0x9e}, -+ {value: 0x174a, lo: 0x9f, hi: 0x9f}, -+ {value: 0x01a6, lo: 0xa9, hi: 0xa9}, -+ // Block 0x62, offset 0x227 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8105, lo: 0xad, hi: 0xad}, -+ // Block 0x63, offset 0x229 -+ {value: 0x0000, lo: 0x06}, -+ {value: 0xe500, lo: 0x80, hi: 0x80}, -+ {value: 0xc600, lo: 0x81, hi: 0x9b}, -+ {value: 0xe500, lo: 0x9c, hi: 0x9c}, -+ {value: 0xc600, lo: 0x9d, hi: 0xb7}, -+ {value: 0xe500, lo: 0xb8, hi: 0xb8}, -+ {value: 0xc600, lo: 0xb9, hi: 0xbf}, -+ // Block 0x64, offset 0x230 -+ {value: 0x0000, lo: 0x05}, -+ {value: 0xc600, lo: 0x80, hi: 0x93}, -+ {value: 0xe500, lo: 0x94, hi: 0x94}, -+ {value: 0xc600, lo: 0x95, hi: 0xaf}, -+ {value: 0xe500, lo: 0xb0, hi: 0xb0}, -+ {value: 0xc600, lo: 0xb1, hi: 0xbf}, -+ // Block 0x65, offset 0x236 -+ {value: 0x0000, lo: 0x05}, -+ {value: 0xc600, lo: 0x80, hi: 0x8b}, -+ {value: 0xe500, lo: 0x8c, hi: 0x8c}, -+ {value: 0xc600, lo: 0x8d, hi: 0xa7}, -+ {value: 0xe500, lo: 0xa8, hi: 0xa8}, -+ {value: 0xc600, lo: 0xa9, hi: 0xbf}, -+ // Block 0x66, offset 0x23c -+ {value: 0x0000, lo: 0x07}, -+ {value: 0xc600, lo: 0x80, hi: 0x83}, -+ {value: 0xe500, lo: 0x84, hi: 0x84}, -+ {value: 0xc600, lo: 0x85, hi: 0x9f}, -+ {value: 0xe500, lo: 0xa0, hi: 0xa0}, -+ {value: 0xc600, lo: 0xa1, hi: 0xbb}, -+ {value: 0xe500, lo: 0xbc, hi: 0xbc}, -+ {value: 0xc600, lo: 0xbd, hi: 0xbf}, -+ // Block 0x67, offset 0x244 -+ {value: 0x0000, lo: 0x05}, -+ {value: 0xc600, lo: 0x80, hi: 0x97}, -+ {value: 0xe500, lo: 0x98, hi: 0x98}, -+ {value: 0xc600, lo: 0x99, hi: 0xb3}, -+ {value: 0xe500, lo: 0xb4, hi: 0xb4}, -+ {value: 0xc600, lo: 0xb5, hi: 0xbf}, -+ // Block 0x68, offset 0x24a -+ {value: 0x0000, lo: 0x05}, -+ {value: 0xc600, lo: 0x80, hi: 0x8f}, -+ {value: 0xe500, lo: 0x90, hi: 0x90}, -+ {value: 0xc600, lo: 0x91, hi: 0xab}, -+ {value: 0xe500, lo: 0xac, hi: 0xac}, -+ {value: 0xc600, lo: 0xad, hi: 0xbf}, -+ // Block 0x69, offset 0x250 -+ {value: 0x0000, lo: 0x05}, -+ {value: 0xc600, lo: 0x80, hi: 0x87}, -+ {value: 0xe500, lo: 0x88, hi: 0x88}, -+ {value: 0xc600, lo: 0x89, hi: 0xa3}, -+ {value: 0xe500, lo: 0xa4, hi: 0xa4}, -+ {value: 0xc600, lo: 0xa5, hi: 0xbf}, -+ // Block 0x6a, offset 0x256 -+ {value: 0x0000, lo: 0x03}, -+ {value: 0xc600, lo: 0x80, hi: 0x87}, -+ {value: 0xe500, lo: 0x88, hi: 0x88}, -+ {value: 0xc600, lo: 0x89, hi: 0xa3}, -+ // Block 0x6b, offset 0x25a -+ {value: 0x0002, lo: 0x01}, -+ {value: 0x0003, lo: 0x81, hi: 0xbf}, -+ // Block 0x6c, offset 0x25c -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x812e, lo: 0xbd, hi: 0xbd}, -+ // Block 0x6d, offset 0x25e -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x812e, lo: 0xa0, hi: 0xa0}, -+ // Block 0x6e, offset 0x260 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8133, lo: 0xb6, hi: 0xba}, -+ // Block 0x6f, offset 0x262 -+ {value: 0x002d, lo: 0x05}, -+ {value: 0x812e, lo: 0x8d, hi: 0x8d}, -+ {value: 0x8133, lo: 0x8f, hi: 0x8f}, -+ {value: 0x8133, lo: 0xb8, hi: 0xb8}, -+ {value: 0x8101, lo: 0xb9, hi: 0xba}, -+ {value: 0x8105, lo: 0xbf, hi: 0xbf}, -+ // Block 0x70, offset 0x268 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8133, lo: 0xa5, hi: 0xa5}, -+ {value: 0x812e, lo: 0xa6, hi: 0xa6}, -+ // Block 0x71, offset 0x26b -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8133, lo: 0xa4, hi: 0xa7}, -+ // Block 0x72, offset 0x26d -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8133, lo: 0xab, hi: 0xac}, -+ // Block 0x73, offset 0x26f -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x812e, lo: 0xbd, hi: 0xbf}, -+ // Block 0x74, offset 0x271 -+ {value: 0x0000, lo: 0x05}, -+ {value: 0x812e, lo: 0x86, hi: 0x87}, -+ {value: 0x8133, lo: 0x88, hi: 0x8a}, -+ {value: 0x812e, lo: 0x8b, hi: 0x8b}, -+ {value: 0x8133, lo: 0x8c, hi: 0x8c}, -+ {value: 0x812e, lo: 0x8d, hi: 0x90}, -+ // Block 0x75, offset 0x277 -+ {value: 0x0005, lo: 0x03}, -+ {value: 0x8133, lo: 0x82, hi: 0x82}, -+ {value: 0x812e, lo: 0x83, hi: 0x84}, -+ {value: 0x812e, lo: 0x85, hi: 0x85}, -+ // Block 0x76, offset 0x27b -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x8105, lo: 0x86, hi: 0x86}, -+ {value: 0x8105, lo: 0xb0, hi: 0xb0}, -+ {value: 0x8105, lo: 0xbf, hi: 0xbf}, -+ // Block 0x77, offset 0x27f -+ {value: 0x17fe, lo: 0x07}, -+ {value: 0xa000, lo: 0x99, hi: 0x99}, -+ {value: 0x4379, lo: 0x9a, hi: 0x9a}, -+ {value: 0xa000, lo: 0x9b, hi: 0x9b}, -+ {value: 0x4383, lo: 0x9c, hi: 0x9c}, -+ {value: 0xa000, lo: 0xa5, hi: 0xa5}, -+ {value: 0x438d, lo: 0xab, hi: 0xab}, -+ {value: 0x8105, lo: 0xb9, hi: 0xba}, -+ // Block 0x78, offset 0x287 -+ {value: 0x0000, lo: 0x06}, -+ {value: 0x8133, lo: 0x80, hi: 0x82}, -+ {value: 0x9900, lo: 0xa7, hi: 0xa7}, -+ {value: 0x2eb5, lo: 0xae, hi: 0xae}, -+ {value: 0x2ebf, lo: 0xaf, hi: 0xaf}, -+ {value: 0xa000, lo: 0xb1, hi: 0xb2}, -+ {value: 0x8105, lo: 0xb3, hi: 0xb4}, -+ // Block 0x79, offset 0x28e -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8105, lo: 0x80, hi: 0x80}, -+ {value: 0x8103, lo: 0x8a, hi: 0x8a}, -+ // Block 0x7a, offset 0x291 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8105, lo: 0xb5, hi: 0xb5}, -+ {value: 0x8103, lo: 0xb6, hi: 0xb6}, -+ // Block 0x7b, offset 0x294 -+ {value: 0x0002, lo: 0x01}, -+ {value: 0x8103, lo: 0xa9, hi: 0xaa}, -+ // Block 0x7c, offset 0x296 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8103, lo: 0xbb, hi: 0xbc}, -+ {value: 0x9900, lo: 0xbe, hi: 0xbe}, -+ // Block 0x7d, offset 0x299 -+ {value: 0x0000, lo: 0x07}, -+ {value: 0xa000, lo: 0x87, hi: 0x87}, -+ {value: 0x2ec9, lo: 0x8b, hi: 0x8b}, -+ {value: 0x2ed3, lo: 0x8c, hi: 0x8c}, -+ {value: 0x8105, lo: 0x8d, hi: 0x8d}, -+ {value: 0x9900, lo: 0x97, hi: 0x97}, -+ {value: 0x8133, lo: 0xa6, hi: 0xac}, -+ {value: 0x8133, lo: 0xb0, hi: 0xb4}, -+ // Block 0x7e, offset 0x2a1 -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x8105, lo: 0x82, hi: 0x82}, -+ {value: 0x8103, lo: 0x86, hi: 0x86}, -+ {value: 0x8133, lo: 0x9e, hi: 0x9e}, -+ // Block 0x7f, offset 0x2a5 -+ {value: 0x6a23, lo: 0x06}, -+ {value: 0x9900, lo: 0xb0, hi: 0xb0}, -+ {value: 0xa000, lo: 0xb9, hi: 0xb9}, -+ {value: 0x9900, lo: 0xba, hi: 0xba}, -+ {value: 0x2ee7, lo: 0xbb, hi: 0xbb}, -+ {value: 0x2edd, lo: 0xbc, hi: 0xbd}, -+ {value: 0x2ef1, lo: 0xbe, hi: 0xbe}, -+ // Block 0x80, offset 0x2ac -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8105, lo: 0x82, hi: 0x82}, -+ {value: 0x8103, lo: 0x83, hi: 0x83}, -+ // Block 0x81, offset 0x2af -+ {value: 0x0000, lo: 0x05}, -+ {value: 0x9900, lo: 0xaf, hi: 0xaf}, -+ {value: 0xa000, lo: 0xb8, hi: 0xb9}, -+ {value: 0x2efb, lo: 0xba, hi: 0xba}, -+ {value: 0x2f05, lo: 0xbb, hi: 0xbb}, -+ {value: 0x8105, lo: 0xbf, hi: 0xbf}, -+ // Block 0x82, offset 0x2b5 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8103, lo: 0x80, hi: 0x80}, -+ // Block 0x83, offset 0x2b7 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8105, lo: 0xbf, hi: 0xbf}, -+ // Block 0x84, offset 0x2b9 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8105, lo: 0xb6, hi: 0xb6}, -+ {value: 0x8103, lo: 0xb7, hi: 0xb7}, -+ // Block 0x85, offset 0x2bc -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8105, lo: 0xab, hi: 0xab}, -+ // Block 0x86, offset 0x2be -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8105, lo: 0xb9, hi: 0xb9}, -+ {value: 0x8103, lo: 0xba, hi: 0xba}, -+ // Block 0x87, offset 0x2c1 -+ {value: 0x0000, lo: 0x04}, -+ {value: 0x9900, lo: 0xb0, hi: 0xb0}, -+ {value: 0xa000, lo: 0xb5, hi: 0xb5}, -+ {value: 0x2f0f, lo: 0xb8, hi: 0xb8}, -+ {value: 0x8105, lo: 0xbd, hi: 0xbe}, -+ // Block 0x88, offset 0x2c6 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8103, lo: 0x83, hi: 0x83}, -+ // Block 0x89, offset 0x2c8 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8105, lo: 0xa0, hi: 0xa0}, -+ // Block 0x8a, offset 0x2ca -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8105, lo: 0xb4, hi: 0xb4}, -+ // Block 0x8b, offset 0x2cc -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8105, lo: 0x87, hi: 0x87}, -+ // Block 0x8c, offset 0x2ce -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8105, lo: 0x99, hi: 0x99}, -+ // Block 0x8d, offset 0x2d0 -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8103, lo: 0x82, hi: 0x82}, -+ {value: 0x8105, lo: 0x84, hi: 0x85}, -+ // Block 0x8e, offset 0x2d3 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8105, lo: 0x97, hi: 0x97}, -+ // Block 0x8f, offset 0x2d5 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8105, lo: 0x81, hi: 0x82}, -+ // Block 0x90, offset 0x2d7 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8101, lo: 0xb0, hi: 0xb4}, -+ // Block 0x91, offset 0x2d9 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8133, lo: 0xb0, hi: 0xb6}, -+ // Block 0x92, offset 0x2db -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8102, lo: 0xb0, hi: 0xb1}, -+ // Block 0x93, offset 0x2dd -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8101, lo: 0x9e, hi: 0x9e}, -+ // Block 0x94, offset 0x2df -+ {value: 0x0000, lo: 0x0c}, -+ {value: 0x470d, lo: 0x9e, hi: 0x9e}, -+ {value: 0x4717, lo: 0x9f, hi: 0x9f}, -+ {value: 0x474b, lo: 0xa0, hi: 0xa0}, -+ {value: 0x4759, lo: 0xa1, hi: 0xa1}, -+ {value: 0x4767, lo: 0xa2, hi: 0xa2}, -+ {value: 0x4775, lo: 0xa3, hi: 0xa3}, -+ {value: 0x4783, lo: 0xa4, hi: 0xa4}, -+ {value: 0x812c, lo: 0xa5, hi: 0xa6}, -+ {value: 0x8101, lo: 0xa7, hi: 0xa9}, -+ {value: 0x8131, lo: 0xad, hi: 0xad}, -+ {value: 0x812c, lo: 0xae, hi: 0xb2}, -+ {value: 0x812e, lo: 0xbb, hi: 0xbf}, -+ // Block 0x95, offset 0x2ec -+ {value: 0x0000, lo: 0x09}, -+ {value: 0x812e, lo: 0x80, hi: 0x82}, -+ {value: 0x8133, lo: 0x85, hi: 0x89}, -+ {value: 0x812e, lo: 0x8a, hi: 0x8b}, -+ {value: 0x8133, lo: 0xaa, hi: 0xad}, -+ {value: 0x4721, lo: 0xbb, hi: 0xbb}, -+ {value: 0x472b, lo: 0xbc, hi: 0xbc}, -+ {value: 0x4791, lo: 0xbd, hi: 0xbd}, -+ {value: 0x47ad, lo: 0xbe, hi: 0xbe}, -+ {value: 0x479f, lo: 0xbf, hi: 0xbf}, -+ // Block 0x96, offset 0x2f6 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x47bb, lo: 0x80, hi: 0x80}, -+ // Block 0x97, offset 0x2f8 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8133, lo: 0x82, hi: 0x84}, -+ // Block 0x98, offset 0x2fa -+ {value: 0x0002, lo: 0x03}, -+ {value: 0x0043, lo: 0x80, hi: 0x99}, -+ {value: 0x0083, lo: 0x9a, hi: 0xb3}, -+ {value: 0x0043, lo: 0xb4, hi: 0xbf}, -+ // Block 0x99, offset 0x2fe -+ {value: 0x0002, lo: 0x04}, -+ {value: 0x005b, lo: 0x80, hi: 0x8d}, -+ {value: 0x0083, lo: 0x8e, hi: 0x94}, -+ {value: 0x0093, lo: 0x96, hi: 0xa7}, -+ {value: 0x0043, lo: 0xa8, hi: 0xbf}, -+ // Block 0x9a, offset 0x303 -+ {value: 0x0002, lo: 0x0b}, -+ {value: 0x0073, lo: 0x80, hi: 0x81}, -+ {value: 0x0083, lo: 0x82, hi: 0x9b}, -+ {value: 0x0043, lo: 0x9c, hi: 0x9c}, -+ {value: 0x0047, lo: 0x9e, hi: 0x9f}, -+ {value: 0x004f, lo: 0xa2, hi: 0xa2}, -+ {value: 0x0055, lo: 0xa5, hi: 0xa6}, -+ {value: 0x005d, lo: 0xa9, hi: 0xac}, -+ {value: 0x0067, lo: 0xae, hi: 0xb5}, -+ {value: 0x0083, lo: 0xb6, hi: 0xb9}, -+ {value: 0x008d, lo: 0xbb, hi: 0xbb}, -+ {value: 0x0091, lo: 0xbd, hi: 0xbf}, -+ // Block 0x9b, offset 0x30f -+ {value: 0x0002, lo: 0x04}, -+ {value: 0x0097, lo: 0x80, hi: 0x83}, -+ {value: 0x00a1, lo: 0x85, hi: 0x8f}, -+ {value: 0x0043, lo: 0x90, hi: 0xa9}, -+ {value: 0x0083, lo: 0xaa, hi: 0xbf}, -+ // Block 0x9c, offset 0x314 -+ {value: 0x0002, lo: 0x08}, -+ {value: 0x00af, lo: 0x80, hi: 0x83}, -+ {value: 0x0043, lo: 0x84, hi: 0x85}, -+ {value: 0x0049, lo: 0x87, hi: 0x8a}, -+ {value: 0x0055, lo: 0x8d, hi: 0x94}, -+ {value: 0x0067, lo: 0x96, hi: 0x9c}, -+ {value: 0x0083, lo: 0x9e, hi: 0xb7}, -+ {value: 0x0043, lo: 0xb8, hi: 0xb9}, -+ {value: 0x0049, lo: 0xbb, hi: 0xbe}, -+ // Block 0x9d, offset 0x31d -+ {value: 0x0002, lo: 0x05}, -+ {value: 0x0053, lo: 0x80, hi: 0x84}, -+ {value: 0x005f, lo: 0x86, hi: 0x86}, -+ {value: 0x0067, lo: 0x8a, hi: 0x90}, -+ {value: 0x0083, lo: 0x92, hi: 0xab}, -+ {value: 0x0043, lo: 0xac, hi: 0xbf}, -+ // Block 0x9e, offset 0x323 -+ {value: 0x0002, lo: 0x04}, -+ {value: 0x006b, lo: 0x80, hi: 0x85}, -+ {value: 0x0083, lo: 0x86, hi: 0x9f}, -+ {value: 0x0043, lo: 0xa0, hi: 0xb9}, -+ {value: 0x0083, lo: 0xba, hi: 0xbf}, -+ // Block 0x9f, offset 0x328 -+ {value: 0x0002, lo: 0x03}, -+ {value: 0x008f, lo: 0x80, hi: 0x93}, -+ {value: 0x0043, lo: 0x94, hi: 0xad}, -+ {value: 0x0083, lo: 0xae, hi: 0xbf}, -+ // Block 0xa0, offset 0x32c -+ {value: 0x0002, lo: 0x04}, -+ {value: 0x00a7, lo: 0x80, hi: 0x87}, -+ {value: 0x0043, lo: 0x88, hi: 0xa1}, -+ {value: 0x0083, lo: 0xa2, hi: 0xbb}, -+ {value: 0x0043, lo: 0xbc, hi: 0xbf}, -+ // Block 0xa1, offset 0x331 -+ {value: 0x0002, lo: 0x03}, -+ {value: 0x004b, lo: 0x80, hi: 0x95}, -+ {value: 0x0083, lo: 0x96, hi: 0xaf}, -+ {value: 0x0043, lo: 0xb0, hi: 0xbf}, -+ // Block 0xa2, offset 0x335 -+ {value: 0x0003, lo: 0x0f}, -+ {value: 0x023c, lo: 0x80, hi: 0x80}, -+ {value: 0x0556, lo: 0x81, hi: 0x81}, -+ {value: 0x023f, lo: 0x82, hi: 0x9a}, -+ {value: 0x0552, lo: 0x9b, hi: 0x9b}, -+ {value: 0x024b, lo: 0x9c, hi: 0x9c}, -+ {value: 0x0254, lo: 0x9d, hi: 0x9d}, -+ {value: 0x025a, lo: 0x9e, hi: 0x9e}, -+ {value: 0x027e, lo: 0x9f, hi: 0x9f}, -+ {value: 0x026f, lo: 0xa0, hi: 0xa0}, -+ {value: 0x026c, lo: 0xa1, hi: 0xa1}, -+ {value: 0x01f7, lo: 0xa2, hi: 0xb2}, -+ {value: 0x020c, lo: 0xb3, hi: 0xb3}, -+ {value: 0x022a, lo: 0xb4, hi: 0xba}, -+ {value: 0x0556, lo: 0xbb, hi: 0xbb}, -+ {value: 0x023f, lo: 0xbc, hi: 0xbf}, -+ // Block 0xa3, offset 0x345 -+ {value: 0x0003, lo: 0x0d}, -+ {value: 0x024b, lo: 0x80, hi: 0x94}, -+ {value: 0x0552, lo: 0x95, hi: 0x95}, -+ {value: 0x024b, lo: 0x96, hi: 0x96}, -+ {value: 0x0254, lo: 0x97, hi: 0x97}, -+ {value: 0x025a, lo: 0x98, hi: 0x98}, -+ {value: 0x027e, lo: 0x99, hi: 0x99}, -+ {value: 0x026f, lo: 0x9a, hi: 0x9a}, -+ {value: 0x026c, lo: 0x9b, hi: 0x9b}, -+ {value: 0x01f7, lo: 0x9c, hi: 0xac}, -+ {value: 0x020c, lo: 0xad, hi: 0xad}, -+ {value: 0x022a, lo: 0xae, hi: 0xb4}, -+ {value: 0x0556, lo: 0xb5, hi: 0xb5}, -+ {value: 0x023f, lo: 0xb6, hi: 0xbf}, -+ // Block 0xa4, offset 0x353 -+ {value: 0x0003, lo: 0x0d}, -+ {value: 0x025d, lo: 0x80, hi: 0x8e}, -+ {value: 0x0552, lo: 0x8f, hi: 0x8f}, -+ {value: 0x024b, lo: 0x90, hi: 0x90}, -+ {value: 0x0254, lo: 0x91, hi: 0x91}, -+ {value: 0x025a, lo: 0x92, hi: 0x92}, -+ {value: 0x027e, lo: 0x93, hi: 0x93}, -+ {value: 0x026f, lo: 0x94, hi: 0x94}, -+ {value: 0x026c, lo: 0x95, hi: 0x95}, -+ {value: 0x01f7, lo: 0x96, hi: 0xa6}, -+ {value: 0x020c, lo: 0xa7, hi: 0xa7}, -+ {value: 0x022a, lo: 0xa8, hi: 0xae}, -+ {value: 0x0556, lo: 0xaf, hi: 0xaf}, -+ {value: 0x023f, lo: 0xb0, hi: 0xbf}, -+ // Block 0xa5, offset 0x361 -+ {value: 0x0003, lo: 0x0d}, -+ {value: 0x026f, lo: 0x80, hi: 0x88}, -+ {value: 0x0552, lo: 0x89, hi: 0x89}, -+ {value: 0x024b, lo: 0x8a, hi: 0x8a}, -+ {value: 0x0254, lo: 0x8b, hi: 0x8b}, -+ {value: 0x025a, lo: 0x8c, hi: 0x8c}, -+ {value: 0x027e, lo: 0x8d, hi: 0x8d}, -+ {value: 0x026f, lo: 0x8e, hi: 0x8e}, -+ {value: 0x026c, lo: 0x8f, hi: 0x8f}, -+ {value: 0x01f7, lo: 0x90, hi: 0xa0}, -+ {value: 0x020c, lo: 0xa1, hi: 0xa1}, -+ {value: 0x022a, lo: 0xa2, hi: 0xa8}, -+ {value: 0x0556, lo: 0xa9, hi: 0xa9}, -+ {value: 0x023f, lo: 0xaa, hi: 0xbf}, -+ // Block 0xa6, offset 0x36f -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8133, lo: 0x8f, hi: 0x8f}, -+ // Block 0xa7, offset 0x371 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8133, lo: 0xae, hi: 0xae}, -+ // Block 0xa8, offset 0x373 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x8133, lo: 0xac, hi: 0xaf}, -+ // Block 0xa9, offset 0x375 -+ {value: 0x0000, lo: 0x03}, -+ {value: 0x8134, lo: 0xac, hi: 0xad}, -+ {value: 0x812e, lo: 0xae, hi: 0xae}, -+ {value: 0x8133, lo: 0xaf, hi: 0xaf}, -+ // Block 0xaa, offset 0x379 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x812e, lo: 0x90, hi: 0x96}, -+ // Block 0xab, offset 0x37b -+ {value: 0x0000, lo: 0x02}, -+ {value: 0x8133, lo: 0x84, hi: 0x89}, -+ {value: 0x8103, lo: 0x8a, hi: 0x8a}, -+ // Block 0xac, offset 0x37e -+ {value: 0x0002, lo: 0x0a}, -+ {value: 0x0063, lo: 0x80, hi: 0x89}, -+ {value: 0x1a7e, lo: 0x8a, hi: 0x8a}, -+ {value: 0x1ab1, lo: 0x8b, hi: 0x8b}, -+ {value: 0x1acc, lo: 0x8c, hi: 0x8c}, -+ {value: 0x1ad2, lo: 0x8d, hi: 0x8d}, -+ {value: 0x1cf0, lo: 0x8e, hi: 0x8e}, -+ {value: 0x1ade, lo: 0x8f, hi: 0x8f}, -+ {value: 0x1aa8, lo: 0xaa, hi: 0xaa}, -+ {value: 0x1aab, lo: 0xab, hi: 0xab}, -+ {value: 0x1aae, lo: 0xac, hi: 0xac}, -+ // Block 0xad, offset 0x389 -+ {value: 0x0000, lo: 0x01}, -+ {value: 0x1a6c, lo: 0x90, hi: 0x90}, -+ // Block 0xae, offset 0x38b -+ {value: 0x0028, lo: 0x09}, -+ {value: 0x2999, lo: 0x80, hi: 0x80}, -+ {value: 0x295d, lo: 0x81, hi: 0x81}, -+ {value: 0x2967, lo: 0x82, hi: 0x82}, -+ {value: 0x297b, lo: 0x83, hi: 0x84}, -+ {value: 0x2985, lo: 0x85, hi: 0x86}, -+ {value: 0x2971, lo: 0x87, hi: 0x87}, -+ {value: 0x298f, lo: 0x88, hi: 0x88}, -+ {value: 0x0c6a, lo: 0x90, hi: 0x90}, -+ {value: 0x09e2, lo: 0x91, hi: 0x91}, -+ // Block 0xaf, offset 0x395 -+ {value: 0x0002, lo: 0x01}, -+ {value: 0x0021, lo: 0xb0, hi: 0xb9}, -+} -+ -+// recompMap: 7528 bytes (entries only) -+var recompMap map[uint32]rune -+var recompMapOnce sync.Once -+ -+const recompMapPacked = "" + -+ "\x00A\x03\x00\x00\x00\x00\xc0" + // 0x00410300: 0x000000C0 -+ "\x00A\x03\x01\x00\x00\x00\xc1" + // 0x00410301: 0x000000C1 -+ "\x00A\x03\x02\x00\x00\x00\xc2" + // 0x00410302: 0x000000C2 -+ "\x00A\x03\x03\x00\x00\x00\xc3" + // 0x00410303: 0x000000C3 -+ "\x00A\x03\b\x00\x00\x00\xc4" + // 0x00410308: 0x000000C4 -+ "\x00A\x03\n\x00\x00\x00\xc5" + // 0x0041030A: 0x000000C5 -+ "\x00C\x03'\x00\x00\x00\xc7" + // 0x00430327: 0x000000C7 -+ "\x00E\x03\x00\x00\x00\x00\xc8" + // 0x00450300: 0x000000C8 -+ "\x00E\x03\x01\x00\x00\x00\xc9" + // 0x00450301: 0x000000C9 -+ "\x00E\x03\x02\x00\x00\x00\xca" + // 0x00450302: 0x000000CA -+ "\x00E\x03\b\x00\x00\x00\xcb" + // 0x00450308: 0x000000CB -+ "\x00I\x03\x00\x00\x00\x00\xcc" + // 0x00490300: 0x000000CC -+ "\x00I\x03\x01\x00\x00\x00\xcd" + // 0x00490301: 0x000000CD -+ "\x00I\x03\x02\x00\x00\x00\xce" + // 0x00490302: 0x000000CE -+ "\x00I\x03\b\x00\x00\x00\xcf" + // 0x00490308: 0x000000CF -+ "\x00N\x03\x03\x00\x00\x00\xd1" + // 0x004E0303: 0x000000D1 -+ "\x00O\x03\x00\x00\x00\x00\xd2" + // 0x004F0300: 0x000000D2 -+ "\x00O\x03\x01\x00\x00\x00\xd3" + // 0x004F0301: 0x000000D3 -+ "\x00O\x03\x02\x00\x00\x00\xd4" + // 0x004F0302: 0x000000D4 -+ "\x00O\x03\x03\x00\x00\x00\xd5" + // 0x004F0303: 0x000000D5 -+ "\x00O\x03\b\x00\x00\x00\xd6" + // 0x004F0308: 0x000000D6 -+ "\x00U\x03\x00\x00\x00\x00\xd9" + // 0x00550300: 0x000000D9 -+ "\x00U\x03\x01\x00\x00\x00\xda" + // 0x00550301: 0x000000DA -+ "\x00U\x03\x02\x00\x00\x00\xdb" + // 0x00550302: 0x000000DB -+ "\x00U\x03\b\x00\x00\x00\xdc" + // 0x00550308: 0x000000DC -+ "\x00Y\x03\x01\x00\x00\x00\xdd" + // 0x00590301: 0x000000DD -+ "\x00a\x03\x00\x00\x00\x00\xe0" + // 0x00610300: 0x000000E0 -+ "\x00a\x03\x01\x00\x00\x00\xe1" + // 0x00610301: 0x000000E1 -+ "\x00a\x03\x02\x00\x00\x00\xe2" + // 0x00610302: 0x000000E2 -+ "\x00a\x03\x03\x00\x00\x00\xe3" + // 0x00610303: 0x000000E3 -+ "\x00a\x03\b\x00\x00\x00\xe4" + // 0x00610308: 0x000000E4 -+ "\x00a\x03\n\x00\x00\x00\xe5" + // 0x0061030A: 0x000000E5 -+ "\x00c\x03'\x00\x00\x00\xe7" + // 0x00630327: 0x000000E7 -+ "\x00e\x03\x00\x00\x00\x00\xe8" + // 0x00650300: 0x000000E8 -+ "\x00e\x03\x01\x00\x00\x00\xe9" + // 0x00650301: 0x000000E9 -+ "\x00e\x03\x02\x00\x00\x00\xea" + // 0x00650302: 0x000000EA -+ "\x00e\x03\b\x00\x00\x00\xeb" + // 0x00650308: 0x000000EB -+ "\x00i\x03\x00\x00\x00\x00\xec" + // 0x00690300: 0x000000EC -+ "\x00i\x03\x01\x00\x00\x00\xed" + // 0x00690301: 0x000000ED -+ "\x00i\x03\x02\x00\x00\x00\xee" + // 0x00690302: 0x000000EE -+ "\x00i\x03\b\x00\x00\x00\xef" + // 0x00690308: 0x000000EF -+ "\x00n\x03\x03\x00\x00\x00\xf1" + // 0x006E0303: 0x000000F1 -+ "\x00o\x03\x00\x00\x00\x00\xf2" + // 0x006F0300: 0x000000F2 -+ "\x00o\x03\x01\x00\x00\x00\xf3" + // 0x006F0301: 0x000000F3 -+ "\x00o\x03\x02\x00\x00\x00\xf4" + // 0x006F0302: 0x000000F4 -+ "\x00o\x03\x03\x00\x00\x00\xf5" + // 0x006F0303: 0x000000F5 -+ "\x00o\x03\b\x00\x00\x00\xf6" + // 0x006F0308: 0x000000F6 -+ "\x00u\x03\x00\x00\x00\x00\xf9" + // 0x00750300: 0x000000F9 -+ "\x00u\x03\x01\x00\x00\x00\xfa" + // 0x00750301: 0x000000FA -+ "\x00u\x03\x02\x00\x00\x00\xfb" + // 0x00750302: 0x000000FB -+ "\x00u\x03\b\x00\x00\x00\xfc" + // 0x00750308: 0x000000FC -+ "\x00y\x03\x01\x00\x00\x00\xfd" + // 0x00790301: 0x000000FD -+ "\x00y\x03\b\x00\x00\x00\xff" + // 0x00790308: 0x000000FF -+ "\x00A\x03\x04\x00\x00\x01\x00" + // 0x00410304: 0x00000100 -+ "\x00a\x03\x04\x00\x00\x01\x01" + // 0x00610304: 0x00000101 -+ "\x00A\x03\x06\x00\x00\x01\x02" + // 0x00410306: 0x00000102 -+ "\x00a\x03\x06\x00\x00\x01\x03" + // 0x00610306: 0x00000103 -+ "\x00A\x03(\x00\x00\x01\x04" + // 0x00410328: 0x00000104 -+ "\x00a\x03(\x00\x00\x01\x05" + // 0x00610328: 0x00000105 -+ "\x00C\x03\x01\x00\x00\x01\x06" + // 0x00430301: 0x00000106 -+ "\x00c\x03\x01\x00\x00\x01\a" + // 0x00630301: 0x00000107 -+ "\x00C\x03\x02\x00\x00\x01\b" + // 0x00430302: 0x00000108 -+ "\x00c\x03\x02\x00\x00\x01\t" + // 0x00630302: 0x00000109 -+ "\x00C\x03\a\x00\x00\x01\n" + // 0x00430307: 0x0000010A -+ "\x00c\x03\a\x00\x00\x01\v" + // 0x00630307: 0x0000010B -+ "\x00C\x03\f\x00\x00\x01\f" + // 0x0043030C: 0x0000010C -+ "\x00c\x03\f\x00\x00\x01\r" + // 0x0063030C: 0x0000010D -+ "\x00D\x03\f\x00\x00\x01\x0e" + // 0x0044030C: 0x0000010E -+ "\x00d\x03\f\x00\x00\x01\x0f" + // 0x0064030C: 0x0000010F -+ "\x00E\x03\x04\x00\x00\x01\x12" + // 0x00450304: 0x00000112 -+ "\x00e\x03\x04\x00\x00\x01\x13" + // 0x00650304: 0x00000113 -+ "\x00E\x03\x06\x00\x00\x01\x14" + // 0x00450306: 0x00000114 -+ "\x00e\x03\x06\x00\x00\x01\x15" + // 0x00650306: 0x00000115 -+ "\x00E\x03\a\x00\x00\x01\x16" + // 0x00450307: 0x00000116 -+ "\x00e\x03\a\x00\x00\x01\x17" + // 0x00650307: 0x00000117 -+ "\x00E\x03(\x00\x00\x01\x18" + // 0x00450328: 0x00000118 -+ "\x00e\x03(\x00\x00\x01\x19" + // 0x00650328: 0x00000119 -+ "\x00E\x03\f\x00\x00\x01\x1a" + // 0x0045030C: 0x0000011A -+ "\x00e\x03\f\x00\x00\x01\x1b" + // 0x0065030C: 0x0000011B -+ "\x00G\x03\x02\x00\x00\x01\x1c" + // 0x00470302: 0x0000011C -+ "\x00g\x03\x02\x00\x00\x01\x1d" + // 0x00670302: 0x0000011D -+ "\x00G\x03\x06\x00\x00\x01\x1e" + // 0x00470306: 0x0000011E -+ "\x00g\x03\x06\x00\x00\x01\x1f" + // 0x00670306: 0x0000011F -+ "\x00G\x03\a\x00\x00\x01 " + // 0x00470307: 0x00000120 -+ "\x00g\x03\a\x00\x00\x01!" + // 0x00670307: 0x00000121 -+ "\x00G\x03'\x00\x00\x01\"" + // 0x00470327: 0x00000122 -+ "\x00g\x03'\x00\x00\x01#" + // 0x00670327: 0x00000123 -+ "\x00H\x03\x02\x00\x00\x01$" + // 0x00480302: 0x00000124 -+ "\x00h\x03\x02\x00\x00\x01%" + // 0x00680302: 0x00000125 -+ "\x00I\x03\x03\x00\x00\x01(" + // 0x00490303: 0x00000128 -+ "\x00i\x03\x03\x00\x00\x01)" + // 0x00690303: 0x00000129 -+ "\x00I\x03\x04\x00\x00\x01*" + // 0x00490304: 0x0000012A -+ "\x00i\x03\x04\x00\x00\x01+" + // 0x00690304: 0x0000012B -+ "\x00I\x03\x06\x00\x00\x01," + // 0x00490306: 0x0000012C -+ "\x00i\x03\x06\x00\x00\x01-" + // 0x00690306: 0x0000012D -+ "\x00I\x03(\x00\x00\x01." + // 0x00490328: 0x0000012E -+ "\x00i\x03(\x00\x00\x01/" + // 0x00690328: 0x0000012F -+ "\x00I\x03\a\x00\x00\x010" + // 0x00490307: 0x00000130 -+ "\x00J\x03\x02\x00\x00\x014" + // 0x004A0302: 0x00000134 -+ "\x00j\x03\x02\x00\x00\x015" + // 0x006A0302: 0x00000135 -+ "\x00K\x03'\x00\x00\x016" + // 0x004B0327: 0x00000136 -+ "\x00k\x03'\x00\x00\x017" + // 0x006B0327: 0x00000137 -+ "\x00L\x03\x01\x00\x00\x019" + // 0x004C0301: 0x00000139 -+ "\x00l\x03\x01\x00\x00\x01:" + // 0x006C0301: 0x0000013A -+ "\x00L\x03'\x00\x00\x01;" + // 0x004C0327: 0x0000013B -+ "\x00l\x03'\x00\x00\x01<" + // 0x006C0327: 0x0000013C -+ "\x00L\x03\f\x00\x00\x01=" + // 0x004C030C: 0x0000013D -+ "\x00l\x03\f\x00\x00\x01>" + // 0x006C030C: 0x0000013E -+ "\x00N\x03\x01\x00\x00\x01C" + // 0x004E0301: 0x00000143 -+ "\x00n\x03\x01\x00\x00\x01D" + // 0x006E0301: 0x00000144 -+ "\x00N\x03'\x00\x00\x01E" + // 0x004E0327: 0x00000145 -+ "\x00n\x03'\x00\x00\x01F" + // 0x006E0327: 0x00000146 -+ "\x00N\x03\f\x00\x00\x01G" + // 0x004E030C: 0x00000147 -+ "\x00n\x03\f\x00\x00\x01H" + // 0x006E030C: 0x00000148 -+ "\x00O\x03\x04\x00\x00\x01L" + // 0x004F0304: 0x0000014C -+ "\x00o\x03\x04\x00\x00\x01M" + // 0x006F0304: 0x0000014D -+ "\x00O\x03\x06\x00\x00\x01N" + // 0x004F0306: 0x0000014E -+ "\x00o\x03\x06\x00\x00\x01O" + // 0x006F0306: 0x0000014F -+ "\x00O\x03\v\x00\x00\x01P" + // 0x004F030B: 0x00000150 -+ "\x00o\x03\v\x00\x00\x01Q" + // 0x006F030B: 0x00000151 -+ "\x00R\x03\x01\x00\x00\x01T" + // 0x00520301: 0x00000154 -+ "\x00r\x03\x01\x00\x00\x01U" + // 0x00720301: 0x00000155 -+ "\x00R\x03'\x00\x00\x01V" + // 0x00520327: 0x00000156 -+ "\x00r\x03'\x00\x00\x01W" + // 0x00720327: 0x00000157 -+ "\x00R\x03\f\x00\x00\x01X" + // 0x0052030C: 0x00000158 -+ "\x00r\x03\f\x00\x00\x01Y" + // 0x0072030C: 0x00000159 -+ "\x00S\x03\x01\x00\x00\x01Z" + // 0x00530301: 0x0000015A -+ "\x00s\x03\x01\x00\x00\x01[" + // 0x00730301: 0x0000015B -+ "\x00S\x03\x02\x00\x00\x01\\" + // 0x00530302: 0x0000015C -+ "\x00s\x03\x02\x00\x00\x01]" + // 0x00730302: 0x0000015D -+ "\x00S\x03'\x00\x00\x01^" + // 0x00530327: 0x0000015E -+ "\x00s\x03'\x00\x00\x01_" + // 0x00730327: 0x0000015F -+ "\x00S\x03\f\x00\x00\x01`" + // 0x0053030C: 0x00000160 -+ "\x00s\x03\f\x00\x00\x01a" + // 0x0073030C: 0x00000161 -+ "\x00T\x03'\x00\x00\x01b" + // 0x00540327: 0x00000162 -+ "\x00t\x03'\x00\x00\x01c" + // 0x00740327: 0x00000163 -+ "\x00T\x03\f\x00\x00\x01d" + // 0x0054030C: 0x00000164 -+ "\x00t\x03\f\x00\x00\x01e" + // 0x0074030C: 0x00000165 -+ "\x00U\x03\x03\x00\x00\x01h" + // 0x00550303: 0x00000168 -+ "\x00u\x03\x03\x00\x00\x01i" + // 0x00750303: 0x00000169 -+ "\x00U\x03\x04\x00\x00\x01j" + // 0x00550304: 0x0000016A -+ "\x00u\x03\x04\x00\x00\x01k" + // 0x00750304: 0x0000016B -+ "\x00U\x03\x06\x00\x00\x01l" + // 0x00550306: 0x0000016C -+ "\x00u\x03\x06\x00\x00\x01m" + // 0x00750306: 0x0000016D -+ "\x00U\x03\n\x00\x00\x01n" + // 0x0055030A: 0x0000016E -+ "\x00u\x03\n\x00\x00\x01o" + // 0x0075030A: 0x0000016F -+ "\x00U\x03\v\x00\x00\x01p" + // 0x0055030B: 0x00000170 -+ "\x00u\x03\v\x00\x00\x01q" + // 0x0075030B: 0x00000171 -+ "\x00U\x03(\x00\x00\x01r" + // 0x00550328: 0x00000172 -+ "\x00u\x03(\x00\x00\x01s" + // 0x00750328: 0x00000173 -+ "\x00W\x03\x02\x00\x00\x01t" + // 0x00570302: 0x00000174 -+ "\x00w\x03\x02\x00\x00\x01u" + // 0x00770302: 0x00000175 -+ "\x00Y\x03\x02\x00\x00\x01v" + // 0x00590302: 0x00000176 -+ "\x00y\x03\x02\x00\x00\x01w" + // 0x00790302: 0x00000177 -+ "\x00Y\x03\b\x00\x00\x01x" + // 0x00590308: 0x00000178 -+ "\x00Z\x03\x01\x00\x00\x01y" + // 0x005A0301: 0x00000179 -+ "\x00z\x03\x01\x00\x00\x01z" + // 0x007A0301: 0x0000017A -+ "\x00Z\x03\a\x00\x00\x01{" + // 0x005A0307: 0x0000017B -+ "\x00z\x03\a\x00\x00\x01|" + // 0x007A0307: 0x0000017C -+ "\x00Z\x03\f\x00\x00\x01}" + // 0x005A030C: 0x0000017D -+ "\x00z\x03\f\x00\x00\x01~" + // 0x007A030C: 0x0000017E -+ "\x00O\x03\x1b\x00\x00\x01\xa0" + // 0x004F031B: 0x000001A0 -+ "\x00o\x03\x1b\x00\x00\x01\xa1" + // 0x006F031B: 0x000001A1 -+ "\x00U\x03\x1b\x00\x00\x01\xaf" + // 0x0055031B: 0x000001AF -+ "\x00u\x03\x1b\x00\x00\x01\xb0" + // 0x0075031B: 0x000001B0 -+ "\x00A\x03\f\x00\x00\x01\xcd" + // 0x0041030C: 0x000001CD -+ "\x00a\x03\f\x00\x00\x01\xce" + // 0x0061030C: 0x000001CE -+ "\x00I\x03\f\x00\x00\x01\xcf" + // 0x0049030C: 0x000001CF -+ "\x00i\x03\f\x00\x00\x01\xd0" + // 0x0069030C: 0x000001D0 -+ "\x00O\x03\f\x00\x00\x01\xd1" + // 0x004F030C: 0x000001D1 -+ "\x00o\x03\f\x00\x00\x01\xd2" + // 0x006F030C: 0x000001D2 -+ "\x00U\x03\f\x00\x00\x01\xd3" + // 0x0055030C: 0x000001D3 -+ "\x00u\x03\f\x00\x00\x01\xd4" + // 0x0075030C: 0x000001D4 -+ "\x00\xdc\x03\x04\x00\x00\x01\xd5" + // 0x00DC0304: 0x000001D5 -+ "\x00\xfc\x03\x04\x00\x00\x01\xd6" + // 0x00FC0304: 0x000001D6 -+ "\x00\xdc\x03\x01\x00\x00\x01\xd7" + // 0x00DC0301: 0x000001D7 -+ "\x00\xfc\x03\x01\x00\x00\x01\xd8" + // 0x00FC0301: 0x000001D8 -+ "\x00\xdc\x03\f\x00\x00\x01\xd9" + // 0x00DC030C: 0x000001D9 -+ "\x00\xfc\x03\f\x00\x00\x01\xda" + // 0x00FC030C: 0x000001DA -+ "\x00\xdc\x03\x00\x00\x00\x01\xdb" + // 0x00DC0300: 0x000001DB -+ "\x00\xfc\x03\x00\x00\x00\x01\xdc" + // 0x00FC0300: 0x000001DC -+ "\x00\xc4\x03\x04\x00\x00\x01\xde" + // 0x00C40304: 0x000001DE -+ "\x00\xe4\x03\x04\x00\x00\x01\xdf" + // 0x00E40304: 0x000001DF -+ "\x02&\x03\x04\x00\x00\x01\xe0" + // 0x02260304: 0x000001E0 -+ "\x02'\x03\x04\x00\x00\x01\xe1" + // 0x02270304: 0x000001E1 -+ "\x00\xc6\x03\x04\x00\x00\x01\xe2" + // 0x00C60304: 0x000001E2 -+ "\x00\xe6\x03\x04\x00\x00\x01\xe3" + // 0x00E60304: 0x000001E3 -+ "\x00G\x03\f\x00\x00\x01\xe6" + // 0x0047030C: 0x000001E6 -+ "\x00g\x03\f\x00\x00\x01\xe7" + // 0x0067030C: 0x000001E7 -+ "\x00K\x03\f\x00\x00\x01\xe8" + // 0x004B030C: 0x000001E8 -+ "\x00k\x03\f\x00\x00\x01\xe9" + // 0x006B030C: 0x000001E9 -+ "\x00O\x03(\x00\x00\x01\xea" + // 0x004F0328: 0x000001EA -+ "\x00o\x03(\x00\x00\x01\xeb" + // 0x006F0328: 0x000001EB -+ "\x01\xea\x03\x04\x00\x00\x01\xec" + // 0x01EA0304: 0x000001EC -+ "\x01\xeb\x03\x04\x00\x00\x01\xed" + // 0x01EB0304: 0x000001ED -+ "\x01\xb7\x03\f\x00\x00\x01\xee" + // 0x01B7030C: 0x000001EE -+ "\x02\x92\x03\f\x00\x00\x01\xef" + // 0x0292030C: 0x000001EF -+ "\x00j\x03\f\x00\x00\x01\xf0" + // 0x006A030C: 0x000001F0 -+ "\x00G\x03\x01\x00\x00\x01\xf4" + // 0x00470301: 0x000001F4 -+ "\x00g\x03\x01\x00\x00\x01\xf5" + // 0x00670301: 0x000001F5 -+ "\x00N\x03\x00\x00\x00\x01\xf8" + // 0x004E0300: 0x000001F8 -+ "\x00n\x03\x00\x00\x00\x01\xf9" + // 0x006E0300: 0x000001F9 -+ "\x00\xc5\x03\x01\x00\x00\x01\xfa" + // 0x00C50301: 0x000001FA -+ "\x00\xe5\x03\x01\x00\x00\x01\xfb" + // 0x00E50301: 0x000001FB -+ "\x00\xc6\x03\x01\x00\x00\x01\xfc" + // 0x00C60301: 0x000001FC -+ "\x00\xe6\x03\x01\x00\x00\x01\xfd" + // 0x00E60301: 0x000001FD -+ "\x00\xd8\x03\x01\x00\x00\x01\xfe" + // 0x00D80301: 0x000001FE -+ "\x00\xf8\x03\x01\x00\x00\x01\xff" + // 0x00F80301: 0x000001FF -+ "\x00A\x03\x0f\x00\x00\x02\x00" + // 0x0041030F: 0x00000200 -+ "\x00a\x03\x0f\x00\x00\x02\x01" + // 0x0061030F: 0x00000201 -+ "\x00A\x03\x11\x00\x00\x02\x02" + // 0x00410311: 0x00000202 -+ "\x00a\x03\x11\x00\x00\x02\x03" + // 0x00610311: 0x00000203 -+ "\x00E\x03\x0f\x00\x00\x02\x04" + // 0x0045030F: 0x00000204 -+ "\x00e\x03\x0f\x00\x00\x02\x05" + // 0x0065030F: 0x00000205 -+ "\x00E\x03\x11\x00\x00\x02\x06" + // 0x00450311: 0x00000206 -+ "\x00e\x03\x11\x00\x00\x02\a" + // 0x00650311: 0x00000207 -+ "\x00I\x03\x0f\x00\x00\x02\b" + // 0x0049030F: 0x00000208 -+ "\x00i\x03\x0f\x00\x00\x02\t" + // 0x0069030F: 0x00000209 -+ "\x00I\x03\x11\x00\x00\x02\n" + // 0x00490311: 0x0000020A -+ "\x00i\x03\x11\x00\x00\x02\v" + // 0x00690311: 0x0000020B -+ "\x00O\x03\x0f\x00\x00\x02\f" + // 0x004F030F: 0x0000020C -+ "\x00o\x03\x0f\x00\x00\x02\r" + // 0x006F030F: 0x0000020D -+ "\x00O\x03\x11\x00\x00\x02\x0e" + // 0x004F0311: 0x0000020E -+ "\x00o\x03\x11\x00\x00\x02\x0f" + // 0x006F0311: 0x0000020F -+ "\x00R\x03\x0f\x00\x00\x02\x10" + // 0x0052030F: 0x00000210 -+ "\x00r\x03\x0f\x00\x00\x02\x11" + // 0x0072030F: 0x00000211 -+ "\x00R\x03\x11\x00\x00\x02\x12" + // 0x00520311: 0x00000212 -+ "\x00r\x03\x11\x00\x00\x02\x13" + // 0x00720311: 0x00000213 -+ "\x00U\x03\x0f\x00\x00\x02\x14" + // 0x0055030F: 0x00000214 -+ "\x00u\x03\x0f\x00\x00\x02\x15" + // 0x0075030F: 0x00000215 -+ "\x00U\x03\x11\x00\x00\x02\x16" + // 0x00550311: 0x00000216 -+ "\x00u\x03\x11\x00\x00\x02\x17" + // 0x00750311: 0x00000217 -+ "\x00S\x03&\x00\x00\x02\x18" + // 0x00530326: 0x00000218 -+ "\x00s\x03&\x00\x00\x02\x19" + // 0x00730326: 0x00000219 -+ "\x00T\x03&\x00\x00\x02\x1a" + // 0x00540326: 0x0000021A -+ "\x00t\x03&\x00\x00\x02\x1b" + // 0x00740326: 0x0000021B -+ "\x00H\x03\f\x00\x00\x02\x1e" + // 0x0048030C: 0x0000021E -+ "\x00h\x03\f\x00\x00\x02\x1f" + // 0x0068030C: 0x0000021F -+ "\x00A\x03\a\x00\x00\x02&" + // 0x00410307: 0x00000226 -+ "\x00a\x03\a\x00\x00\x02'" + // 0x00610307: 0x00000227 -+ "\x00E\x03'\x00\x00\x02(" + // 0x00450327: 0x00000228 -+ "\x00e\x03'\x00\x00\x02)" + // 0x00650327: 0x00000229 -+ "\x00\xd6\x03\x04\x00\x00\x02*" + // 0x00D60304: 0x0000022A -+ "\x00\xf6\x03\x04\x00\x00\x02+" + // 0x00F60304: 0x0000022B -+ "\x00\xd5\x03\x04\x00\x00\x02," + // 0x00D50304: 0x0000022C -+ "\x00\xf5\x03\x04\x00\x00\x02-" + // 0x00F50304: 0x0000022D -+ "\x00O\x03\a\x00\x00\x02." + // 0x004F0307: 0x0000022E -+ "\x00o\x03\a\x00\x00\x02/" + // 0x006F0307: 0x0000022F -+ "\x02.\x03\x04\x00\x00\x020" + // 0x022E0304: 0x00000230 -+ "\x02/\x03\x04\x00\x00\x021" + // 0x022F0304: 0x00000231 -+ "\x00Y\x03\x04\x00\x00\x022" + // 0x00590304: 0x00000232 -+ "\x00y\x03\x04\x00\x00\x023" + // 0x00790304: 0x00000233 -+ "\x00\xa8\x03\x01\x00\x00\x03\x85" + // 0x00A80301: 0x00000385 -+ "\x03\x91\x03\x01\x00\x00\x03\x86" + // 0x03910301: 0x00000386 -+ "\x03\x95\x03\x01\x00\x00\x03\x88" + // 0x03950301: 0x00000388 -+ "\x03\x97\x03\x01\x00\x00\x03\x89" + // 0x03970301: 0x00000389 -+ "\x03\x99\x03\x01\x00\x00\x03\x8a" + // 0x03990301: 0x0000038A -+ "\x03\x9f\x03\x01\x00\x00\x03\x8c" + // 0x039F0301: 0x0000038C -+ "\x03\xa5\x03\x01\x00\x00\x03\x8e" + // 0x03A50301: 0x0000038E -+ "\x03\xa9\x03\x01\x00\x00\x03\x8f" + // 0x03A90301: 0x0000038F -+ "\x03\xca\x03\x01\x00\x00\x03\x90" + // 0x03CA0301: 0x00000390 -+ "\x03\x99\x03\b\x00\x00\x03\xaa" + // 0x03990308: 0x000003AA -+ "\x03\xa5\x03\b\x00\x00\x03\xab" + // 0x03A50308: 0x000003AB -+ "\x03\xb1\x03\x01\x00\x00\x03\xac" + // 0x03B10301: 0x000003AC -+ "\x03\xb5\x03\x01\x00\x00\x03\xad" + // 0x03B50301: 0x000003AD -+ "\x03\xb7\x03\x01\x00\x00\x03\xae" + // 0x03B70301: 0x000003AE -+ "\x03\xb9\x03\x01\x00\x00\x03\xaf" + // 0x03B90301: 0x000003AF -+ "\x03\xcb\x03\x01\x00\x00\x03\xb0" + // 0x03CB0301: 0x000003B0 -+ "\x03\xb9\x03\b\x00\x00\x03\xca" + // 0x03B90308: 0x000003CA -+ "\x03\xc5\x03\b\x00\x00\x03\xcb" + // 0x03C50308: 0x000003CB -+ "\x03\xbf\x03\x01\x00\x00\x03\xcc" + // 0x03BF0301: 0x000003CC -+ "\x03\xc5\x03\x01\x00\x00\x03\xcd" + // 0x03C50301: 0x000003CD -+ "\x03\xc9\x03\x01\x00\x00\x03\xce" + // 0x03C90301: 0x000003CE -+ "\x03\xd2\x03\x01\x00\x00\x03\xd3" + // 0x03D20301: 0x000003D3 -+ "\x03\xd2\x03\b\x00\x00\x03\xd4" + // 0x03D20308: 0x000003D4 -+ "\x04\x15\x03\x00\x00\x00\x04\x00" + // 0x04150300: 0x00000400 -+ "\x04\x15\x03\b\x00\x00\x04\x01" + // 0x04150308: 0x00000401 -+ "\x04\x13\x03\x01\x00\x00\x04\x03" + // 0x04130301: 0x00000403 -+ "\x04\x06\x03\b\x00\x00\x04\a" + // 0x04060308: 0x00000407 -+ "\x04\x1a\x03\x01\x00\x00\x04\f" + // 0x041A0301: 0x0000040C -+ "\x04\x18\x03\x00\x00\x00\x04\r" + // 0x04180300: 0x0000040D -+ "\x04#\x03\x06\x00\x00\x04\x0e" + // 0x04230306: 0x0000040E -+ "\x04\x18\x03\x06\x00\x00\x04\x19" + // 0x04180306: 0x00000419 -+ "\x048\x03\x06\x00\x00\x049" + // 0x04380306: 0x00000439 -+ "\x045\x03\x00\x00\x00\x04P" + // 0x04350300: 0x00000450 -+ "\x045\x03\b\x00\x00\x04Q" + // 0x04350308: 0x00000451 -+ "\x043\x03\x01\x00\x00\x04S" + // 0x04330301: 0x00000453 -+ "\x04V\x03\b\x00\x00\x04W" + // 0x04560308: 0x00000457 -+ "\x04:\x03\x01\x00\x00\x04\\" + // 0x043A0301: 0x0000045C -+ "\x048\x03\x00\x00\x00\x04]" + // 0x04380300: 0x0000045D -+ "\x04C\x03\x06\x00\x00\x04^" + // 0x04430306: 0x0000045E -+ "\x04t\x03\x0f\x00\x00\x04v" + // 0x0474030F: 0x00000476 -+ "\x04u\x03\x0f\x00\x00\x04w" + // 0x0475030F: 0x00000477 -+ "\x04\x16\x03\x06\x00\x00\x04\xc1" + // 0x04160306: 0x000004C1 -+ "\x046\x03\x06\x00\x00\x04\xc2" + // 0x04360306: 0x000004C2 -+ "\x04\x10\x03\x06\x00\x00\x04\xd0" + // 0x04100306: 0x000004D0 -+ "\x040\x03\x06\x00\x00\x04\xd1" + // 0x04300306: 0x000004D1 -+ "\x04\x10\x03\b\x00\x00\x04\xd2" + // 0x04100308: 0x000004D2 -+ "\x040\x03\b\x00\x00\x04\xd3" + // 0x04300308: 0x000004D3 -+ "\x04\x15\x03\x06\x00\x00\x04\xd6" + // 0x04150306: 0x000004D6 -+ "\x045\x03\x06\x00\x00\x04\xd7" + // 0x04350306: 0x000004D7 -+ "\x04\xd8\x03\b\x00\x00\x04\xda" + // 0x04D80308: 0x000004DA -+ "\x04\xd9\x03\b\x00\x00\x04\xdb" + // 0x04D90308: 0x000004DB -+ "\x04\x16\x03\b\x00\x00\x04\xdc" + // 0x04160308: 0x000004DC -+ "\x046\x03\b\x00\x00\x04\xdd" + // 0x04360308: 0x000004DD -+ "\x04\x17\x03\b\x00\x00\x04\xde" + // 0x04170308: 0x000004DE -+ "\x047\x03\b\x00\x00\x04\xdf" + // 0x04370308: 0x000004DF -+ "\x04\x18\x03\x04\x00\x00\x04\xe2" + // 0x04180304: 0x000004E2 -+ "\x048\x03\x04\x00\x00\x04\xe3" + // 0x04380304: 0x000004E3 -+ "\x04\x18\x03\b\x00\x00\x04\xe4" + // 0x04180308: 0x000004E4 -+ "\x048\x03\b\x00\x00\x04\xe5" + // 0x04380308: 0x000004E5 -+ "\x04\x1e\x03\b\x00\x00\x04\xe6" + // 0x041E0308: 0x000004E6 -+ "\x04>\x03\b\x00\x00\x04\xe7" + // 0x043E0308: 0x000004E7 -+ "\x04\xe8\x03\b\x00\x00\x04\xea" + // 0x04E80308: 0x000004EA -+ "\x04\xe9\x03\b\x00\x00\x04\xeb" + // 0x04E90308: 0x000004EB -+ "\x04-\x03\b\x00\x00\x04\xec" + // 0x042D0308: 0x000004EC -+ "\x04M\x03\b\x00\x00\x04\xed" + // 0x044D0308: 0x000004ED -+ "\x04#\x03\x04\x00\x00\x04\xee" + // 0x04230304: 0x000004EE -+ "\x04C\x03\x04\x00\x00\x04\xef" + // 0x04430304: 0x000004EF -+ "\x04#\x03\b\x00\x00\x04\xf0" + // 0x04230308: 0x000004F0 -+ "\x04C\x03\b\x00\x00\x04\xf1" + // 0x04430308: 0x000004F1 -+ "\x04#\x03\v\x00\x00\x04\xf2" + // 0x0423030B: 0x000004F2 -+ "\x04C\x03\v\x00\x00\x04\xf3" + // 0x0443030B: 0x000004F3 -+ "\x04'\x03\b\x00\x00\x04\xf4" + // 0x04270308: 0x000004F4 -+ "\x04G\x03\b\x00\x00\x04\xf5" + // 0x04470308: 0x000004F5 -+ "\x04+\x03\b\x00\x00\x04\xf8" + // 0x042B0308: 0x000004F8 -+ "\x04K\x03\b\x00\x00\x04\xf9" + // 0x044B0308: 0x000004F9 -+ "\x06'\x06S\x00\x00\x06\"" + // 0x06270653: 0x00000622 -+ "\x06'\x06T\x00\x00\x06#" + // 0x06270654: 0x00000623 -+ "\x06H\x06T\x00\x00\x06$" + // 0x06480654: 0x00000624 -+ "\x06'\x06U\x00\x00\x06%" + // 0x06270655: 0x00000625 -+ "\x06J\x06T\x00\x00\x06&" + // 0x064A0654: 0x00000626 -+ "\x06\xd5\x06T\x00\x00\x06\xc0" + // 0x06D50654: 0x000006C0 -+ "\x06\xc1\x06T\x00\x00\x06\xc2" + // 0x06C10654: 0x000006C2 -+ "\x06\xd2\x06T\x00\x00\x06\xd3" + // 0x06D20654: 0x000006D3 -+ "\t(\t<\x00\x00\t)" + // 0x0928093C: 0x00000929 -+ "\t0\t<\x00\x00\t1" + // 0x0930093C: 0x00000931 -+ "\t3\t<\x00\x00\t4" + // 0x0933093C: 0x00000934 -+ "\t\xc7\t\xbe\x00\x00\t\xcb" + // 0x09C709BE: 0x000009CB -+ "\t\xc7\t\xd7\x00\x00\t\xcc" + // 0x09C709D7: 0x000009CC -+ "\vG\vV\x00\x00\vH" + // 0x0B470B56: 0x00000B48 -+ "\vG\v>\x00\x00\vK" + // 0x0B470B3E: 0x00000B4B -+ "\vG\vW\x00\x00\vL" + // 0x0B470B57: 0x00000B4C -+ "\v\x92\v\xd7\x00\x00\v\x94" + // 0x0B920BD7: 0x00000B94 -+ "\v\xc6\v\xbe\x00\x00\v\xca" + // 0x0BC60BBE: 0x00000BCA -+ "\v\xc7\v\xbe\x00\x00\v\xcb" + // 0x0BC70BBE: 0x00000BCB -+ "\v\xc6\v\xd7\x00\x00\v\xcc" + // 0x0BC60BD7: 0x00000BCC -+ "\fF\fV\x00\x00\fH" + // 0x0C460C56: 0x00000C48 -+ "\f\xbf\f\xd5\x00\x00\f\xc0" + // 0x0CBF0CD5: 0x00000CC0 -+ "\f\xc6\f\xd5\x00\x00\f\xc7" + // 0x0CC60CD5: 0x00000CC7 -+ "\f\xc6\f\xd6\x00\x00\f\xc8" + // 0x0CC60CD6: 0x00000CC8 -+ "\f\xc6\f\xc2\x00\x00\f\xca" + // 0x0CC60CC2: 0x00000CCA -+ "\f\xca\f\xd5\x00\x00\f\xcb" + // 0x0CCA0CD5: 0x00000CCB -+ "\rF\r>\x00\x00\rJ" + // 0x0D460D3E: 0x00000D4A -+ "\rG\r>\x00\x00\rK" + // 0x0D470D3E: 0x00000D4B -+ "\rF\rW\x00\x00\rL" + // 0x0D460D57: 0x00000D4C -+ "\r\xd9\r\xca\x00\x00\r\xda" + // 0x0DD90DCA: 0x00000DDA -+ "\r\xd9\r\xcf\x00\x00\r\xdc" + // 0x0DD90DCF: 0x00000DDC -+ "\r\xdc\r\xca\x00\x00\r\xdd" + // 0x0DDC0DCA: 0x00000DDD -+ "\r\xd9\r\xdf\x00\x00\r\xde" + // 0x0DD90DDF: 0x00000DDE -+ "\x10%\x10.\x00\x00\x10&" + // 0x1025102E: 0x00001026 -+ "\x1b\x05\x1b5\x00\x00\x1b\x06" + // 0x1B051B35: 0x00001B06 -+ "\x1b\a\x1b5\x00\x00\x1b\b" + // 0x1B071B35: 0x00001B08 -+ "\x1b\t\x1b5\x00\x00\x1b\n" + // 0x1B091B35: 0x00001B0A -+ "\x1b\v\x1b5\x00\x00\x1b\f" + // 0x1B0B1B35: 0x00001B0C -+ "\x1b\r\x1b5\x00\x00\x1b\x0e" + // 0x1B0D1B35: 0x00001B0E -+ "\x1b\x11\x1b5\x00\x00\x1b\x12" + // 0x1B111B35: 0x00001B12 -+ "\x1b:\x1b5\x00\x00\x1b;" + // 0x1B3A1B35: 0x00001B3B -+ "\x1b<\x1b5\x00\x00\x1b=" + // 0x1B3C1B35: 0x00001B3D -+ "\x1b>\x1b5\x00\x00\x1b@" + // 0x1B3E1B35: 0x00001B40 -+ "\x1b?\x1b5\x00\x00\x1bA" + // 0x1B3F1B35: 0x00001B41 -+ "\x1bB\x1b5\x00\x00\x1bC" + // 0x1B421B35: 0x00001B43 -+ "\x00A\x03%\x00\x00\x1e\x00" + // 0x00410325: 0x00001E00 -+ "\x00a\x03%\x00\x00\x1e\x01" + // 0x00610325: 0x00001E01 -+ "\x00B\x03\a\x00\x00\x1e\x02" + // 0x00420307: 0x00001E02 -+ "\x00b\x03\a\x00\x00\x1e\x03" + // 0x00620307: 0x00001E03 -+ "\x00B\x03#\x00\x00\x1e\x04" + // 0x00420323: 0x00001E04 -+ "\x00b\x03#\x00\x00\x1e\x05" + // 0x00620323: 0x00001E05 -+ "\x00B\x031\x00\x00\x1e\x06" + // 0x00420331: 0x00001E06 -+ "\x00b\x031\x00\x00\x1e\a" + // 0x00620331: 0x00001E07 -+ "\x00\xc7\x03\x01\x00\x00\x1e\b" + // 0x00C70301: 0x00001E08 -+ "\x00\xe7\x03\x01\x00\x00\x1e\t" + // 0x00E70301: 0x00001E09 -+ "\x00D\x03\a\x00\x00\x1e\n" + // 0x00440307: 0x00001E0A -+ "\x00d\x03\a\x00\x00\x1e\v" + // 0x00640307: 0x00001E0B -+ "\x00D\x03#\x00\x00\x1e\f" + // 0x00440323: 0x00001E0C -+ "\x00d\x03#\x00\x00\x1e\r" + // 0x00640323: 0x00001E0D -+ "\x00D\x031\x00\x00\x1e\x0e" + // 0x00440331: 0x00001E0E -+ "\x00d\x031\x00\x00\x1e\x0f" + // 0x00640331: 0x00001E0F -+ "\x00D\x03'\x00\x00\x1e\x10" + // 0x00440327: 0x00001E10 -+ "\x00d\x03'\x00\x00\x1e\x11" + // 0x00640327: 0x00001E11 -+ "\x00D\x03-\x00\x00\x1e\x12" + // 0x0044032D: 0x00001E12 -+ "\x00d\x03-\x00\x00\x1e\x13" + // 0x0064032D: 0x00001E13 -+ "\x01\x12\x03\x00\x00\x00\x1e\x14" + // 0x01120300: 0x00001E14 -+ "\x01\x13\x03\x00\x00\x00\x1e\x15" + // 0x01130300: 0x00001E15 -+ "\x01\x12\x03\x01\x00\x00\x1e\x16" + // 0x01120301: 0x00001E16 -+ "\x01\x13\x03\x01\x00\x00\x1e\x17" + // 0x01130301: 0x00001E17 -+ "\x00E\x03-\x00\x00\x1e\x18" + // 0x0045032D: 0x00001E18 -+ "\x00e\x03-\x00\x00\x1e\x19" + // 0x0065032D: 0x00001E19 -+ "\x00E\x030\x00\x00\x1e\x1a" + // 0x00450330: 0x00001E1A -+ "\x00e\x030\x00\x00\x1e\x1b" + // 0x00650330: 0x00001E1B -+ "\x02(\x03\x06\x00\x00\x1e\x1c" + // 0x02280306: 0x00001E1C -+ "\x02)\x03\x06\x00\x00\x1e\x1d" + // 0x02290306: 0x00001E1D -+ "\x00F\x03\a\x00\x00\x1e\x1e" + // 0x00460307: 0x00001E1E -+ "\x00f\x03\a\x00\x00\x1e\x1f" + // 0x00660307: 0x00001E1F -+ "\x00G\x03\x04\x00\x00\x1e " + // 0x00470304: 0x00001E20 -+ "\x00g\x03\x04\x00\x00\x1e!" + // 0x00670304: 0x00001E21 -+ "\x00H\x03\a\x00\x00\x1e\"" + // 0x00480307: 0x00001E22 -+ "\x00h\x03\a\x00\x00\x1e#" + // 0x00680307: 0x00001E23 -+ "\x00H\x03#\x00\x00\x1e$" + // 0x00480323: 0x00001E24 -+ "\x00h\x03#\x00\x00\x1e%" + // 0x00680323: 0x00001E25 -+ "\x00H\x03\b\x00\x00\x1e&" + // 0x00480308: 0x00001E26 -+ "\x00h\x03\b\x00\x00\x1e'" + // 0x00680308: 0x00001E27 -+ "\x00H\x03'\x00\x00\x1e(" + // 0x00480327: 0x00001E28 -+ "\x00h\x03'\x00\x00\x1e)" + // 0x00680327: 0x00001E29 -+ "\x00H\x03.\x00\x00\x1e*" + // 0x0048032E: 0x00001E2A -+ "\x00h\x03.\x00\x00\x1e+" + // 0x0068032E: 0x00001E2B -+ "\x00I\x030\x00\x00\x1e," + // 0x00490330: 0x00001E2C -+ "\x00i\x030\x00\x00\x1e-" + // 0x00690330: 0x00001E2D -+ "\x00\xcf\x03\x01\x00\x00\x1e." + // 0x00CF0301: 0x00001E2E -+ "\x00\xef\x03\x01\x00\x00\x1e/" + // 0x00EF0301: 0x00001E2F -+ "\x00K\x03\x01\x00\x00\x1e0" + // 0x004B0301: 0x00001E30 -+ "\x00k\x03\x01\x00\x00\x1e1" + // 0x006B0301: 0x00001E31 -+ "\x00K\x03#\x00\x00\x1e2" + // 0x004B0323: 0x00001E32 -+ "\x00k\x03#\x00\x00\x1e3" + // 0x006B0323: 0x00001E33 -+ "\x00K\x031\x00\x00\x1e4" + // 0x004B0331: 0x00001E34 -+ "\x00k\x031\x00\x00\x1e5" + // 0x006B0331: 0x00001E35 -+ "\x00L\x03#\x00\x00\x1e6" + // 0x004C0323: 0x00001E36 -+ "\x00l\x03#\x00\x00\x1e7" + // 0x006C0323: 0x00001E37 -+ "\x1e6\x03\x04\x00\x00\x1e8" + // 0x1E360304: 0x00001E38 -+ "\x1e7\x03\x04\x00\x00\x1e9" + // 0x1E370304: 0x00001E39 -+ "\x00L\x031\x00\x00\x1e:" + // 0x004C0331: 0x00001E3A -+ "\x00l\x031\x00\x00\x1e;" + // 0x006C0331: 0x00001E3B -+ "\x00L\x03-\x00\x00\x1e<" + // 0x004C032D: 0x00001E3C -+ "\x00l\x03-\x00\x00\x1e=" + // 0x006C032D: 0x00001E3D -+ "\x00M\x03\x01\x00\x00\x1e>" + // 0x004D0301: 0x00001E3E -+ "\x00m\x03\x01\x00\x00\x1e?" + // 0x006D0301: 0x00001E3F -+ "\x00M\x03\a\x00\x00\x1e@" + // 0x004D0307: 0x00001E40 -+ "\x00m\x03\a\x00\x00\x1eA" + // 0x006D0307: 0x00001E41 -+ "\x00M\x03#\x00\x00\x1eB" + // 0x004D0323: 0x00001E42 -+ "\x00m\x03#\x00\x00\x1eC" + // 0x006D0323: 0x00001E43 -+ "\x00N\x03\a\x00\x00\x1eD" + // 0x004E0307: 0x00001E44 -+ "\x00n\x03\a\x00\x00\x1eE" + // 0x006E0307: 0x00001E45 -+ "\x00N\x03#\x00\x00\x1eF" + // 0x004E0323: 0x00001E46 -+ "\x00n\x03#\x00\x00\x1eG" + // 0x006E0323: 0x00001E47 -+ "\x00N\x031\x00\x00\x1eH" + // 0x004E0331: 0x00001E48 -+ "\x00n\x031\x00\x00\x1eI" + // 0x006E0331: 0x00001E49 -+ "\x00N\x03-\x00\x00\x1eJ" + // 0x004E032D: 0x00001E4A -+ "\x00n\x03-\x00\x00\x1eK" + // 0x006E032D: 0x00001E4B -+ "\x00\xd5\x03\x01\x00\x00\x1eL" + // 0x00D50301: 0x00001E4C -+ "\x00\xf5\x03\x01\x00\x00\x1eM" + // 0x00F50301: 0x00001E4D -+ "\x00\xd5\x03\b\x00\x00\x1eN" + // 0x00D50308: 0x00001E4E -+ "\x00\xf5\x03\b\x00\x00\x1eO" + // 0x00F50308: 0x00001E4F -+ "\x01L\x03\x00\x00\x00\x1eP" + // 0x014C0300: 0x00001E50 -+ "\x01M\x03\x00\x00\x00\x1eQ" + // 0x014D0300: 0x00001E51 -+ "\x01L\x03\x01\x00\x00\x1eR" + // 0x014C0301: 0x00001E52 -+ "\x01M\x03\x01\x00\x00\x1eS" + // 0x014D0301: 0x00001E53 -+ "\x00P\x03\x01\x00\x00\x1eT" + // 0x00500301: 0x00001E54 -+ "\x00p\x03\x01\x00\x00\x1eU" + // 0x00700301: 0x00001E55 -+ "\x00P\x03\a\x00\x00\x1eV" + // 0x00500307: 0x00001E56 -+ "\x00p\x03\a\x00\x00\x1eW" + // 0x00700307: 0x00001E57 -+ "\x00R\x03\a\x00\x00\x1eX" + // 0x00520307: 0x00001E58 -+ "\x00r\x03\a\x00\x00\x1eY" + // 0x00720307: 0x00001E59 -+ "\x00R\x03#\x00\x00\x1eZ" + // 0x00520323: 0x00001E5A -+ "\x00r\x03#\x00\x00\x1e[" + // 0x00720323: 0x00001E5B -+ "\x1eZ\x03\x04\x00\x00\x1e\\" + // 0x1E5A0304: 0x00001E5C -+ "\x1e[\x03\x04\x00\x00\x1e]" + // 0x1E5B0304: 0x00001E5D -+ "\x00R\x031\x00\x00\x1e^" + // 0x00520331: 0x00001E5E -+ "\x00r\x031\x00\x00\x1e_" + // 0x00720331: 0x00001E5F -+ "\x00S\x03\a\x00\x00\x1e`" + // 0x00530307: 0x00001E60 -+ "\x00s\x03\a\x00\x00\x1ea" + // 0x00730307: 0x00001E61 -+ "\x00S\x03#\x00\x00\x1eb" + // 0x00530323: 0x00001E62 -+ "\x00s\x03#\x00\x00\x1ec" + // 0x00730323: 0x00001E63 -+ "\x01Z\x03\a\x00\x00\x1ed" + // 0x015A0307: 0x00001E64 -+ "\x01[\x03\a\x00\x00\x1ee" + // 0x015B0307: 0x00001E65 -+ "\x01`\x03\a\x00\x00\x1ef" + // 0x01600307: 0x00001E66 -+ "\x01a\x03\a\x00\x00\x1eg" + // 0x01610307: 0x00001E67 -+ "\x1eb\x03\a\x00\x00\x1eh" + // 0x1E620307: 0x00001E68 -+ "\x1ec\x03\a\x00\x00\x1ei" + // 0x1E630307: 0x00001E69 -+ "\x00T\x03\a\x00\x00\x1ej" + // 0x00540307: 0x00001E6A -+ "\x00t\x03\a\x00\x00\x1ek" + // 0x00740307: 0x00001E6B -+ "\x00T\x03#\x00\x00\x1el" + // 0x00540323: 0x00001E6C -+ "\x00t\x03#\x00\x00\x1em" + // 0x00740323: 0x00001E6D -+ "\x00T\x031\x00\x00\x1en" + // 0x00540331: 0x00001E6E -+ "\x00t\x031\x00\x00\x1eo" + // 0x00740331: 0x00001E6F -+ "\x00T\x03-\x00\x00\x1ep" + // 0x0054032D: 0x00001E70 -+ "\x00t\x03-\x00\x00\x1eq" + // 0x0074032D: 0x00001E71 -+ "\x00U\x03$\x00\x00\x1er" + // 0x00550324: 0x00001E72 -+ "\x00u\x03$\x00\x00\x1es" + // 0x00750324: 0x00001E73 -+ "\x00U\x030\x00\x00\x1et" + // 0x00550330: 0x00001E74 -+ "\x00u\x030\x00\x00\x1eu" + // 0x00750330: 0x00001E75 -+ "\x00U\x03-\x00\x00\x1ev" + // 0x0055032D: 0x00001E76 -+ "\x00u\x03-\x00\x00\x1ew" + // 0x0075032D: 0x00001E77 -+ "\x01h\x03\x01\x00\x00\x1ex" + // 0x01680301: 0x00001E78 -+ "\x01i\x03\x01\x00\x00\x1ey" + // 0x01690301: 0x00001E79 -+ "\x01j\x03\b\x00\x00\x1ez" + // 0x016A0308: 0x00001E7A -+ "\x01k\x03\b\x00\x00\x1e{" + // 0x016B0308: 0x00001E7B -+ "\x00V\x03\x03\x00\x00\x1e|" + // 0x00560303: 0x00001E7C -+ "\x00v\x03\x03\x00\x00\x1e}" + // 0x00760303: 0x00001E7D -+ "\x00V\x03#\x00\x00\x1e~" + // 0x00560323: 0x00001E7E -+ "\x00v\x03#\x00\x00\x1e\x7f" + // 0x00760323: 0x00001E7F -+ "\x00W\x03\x00\x00\x00\x1e\x80" + // 0x00570300: 0x00001E80 -+ "\x00w\x03\x00\x00\x00\x1e\x81" + // 0x00770300: 0x00001E81 -+ "\x00W\x03\x01\x00\x00\x1e\x82" + // 0x00570301: 0x00001E82 -+ "\x00w\x03\x01\x00\x00\x1e\x83" + // 0x00770301: 0x00001E83 -+ "\x00W\x03\b\x00\x00\x1e\x84" + // 0x00570308: 0x00001E84 -+ "\x00w\x03\b\x00\x00\x1e\x85" + // 0x00770308: 0x00001E85 -+ "\x00W\x03\a\x00\x00\x1e\x86" + // 0x00570307: 0x00001E86 -+ "\x00w\x03\a\x00\x00\x1e\x87" + // 0x00770307: 0x00001E87 -+ "\x00W\x03#\x00\x00\x1e\x88" + // 0x00570323: 0x00001E88 -+ "\x00w\x03#\x00\x00\x1e\x89" + // 0x00770323: 0x00001E89 -+ "\x00X\x03\a\x00\x00\x1e\x8a" + // 0x00580307: 0x00001E8A -+ "\x00x\x03\a\x00\x00\x1e\x8b" + // 0x00780307: 0x00001E8B -+ "\x00X\x03\b\x00\x00\x1e\x8c" + // 0x00580308: 0x00001E8C -+ "\x00x\x03\b\x00\x00\x1e\x8d" + // 0x00780308: 0x00001E8D -+ "\x00Y\x03\a\x00\x00\x1e\x8e" + // 0x00590307: 0x00001E8E -+ "\x00y\x03\a\x00\x00\x1e\x8f" + // 0x00790307: 0x00001E8F -+ "\x00Z\x03\x02\x00\x00\x1e\x90" + // 0x005A0302: 0x00001E90 -+ "\x00z\x03\x02\x00\x00\x1e\x91" + // 0x007A0302: 0x00001E91 -+ "\x00Z\x03#\x00\x00\x1e\x92" + // 0x005A0323: 0x00001E92 -+ "\x00z\x03#\x00\x00\x1e\x93" + // 0x007A0323: 0x00001E93 -+ "\x00Z\x031\x00\x00\x1e\x94" + // 0x005A0331: 0x00001E94 -+ "\x00z\x031\x00\x00\x1e\x95" + // 0x007A0331: 0x00001E95 -+ "\x00h\x031\x00\x00\x1e\x96" + // 0x00680331: 0x00001E96 -+ "\x00t\x03\b\x00\x00\x1e\x97" + // 0x00740308: 0x00001E97 -+ "\x00w\x03\n\x00\x00\x1e\x98" + // 0x0077030A: 0x00001E98 -+ "\x00y\x03\n\x00\x00\x1e\x99" + // 0x0079030A: 0x00001E99 -+ "\x01\x7f\x03\a\x00\x00\x1e\x9b" + // 0x017F0307: 0x00001E9B -+ "\x00A\x03#\x00\x00\x1e\xa0" + // 0x00410323: 0x00001EA0 -+ "\x00a\x03#\x00\x00\x1e\xa1" + // 0x00610323: 0x00001EA1 -+ "\x00A\x03\t\x00\x00\x1e\xa2" + // 0x00410309: 0x00001EA2 -+ "\x00a\x03\t\x00\x00\x1e\xa3" + // 0x00610309: 0x00001EA3 -+ "\x00\xc2\x03\x01\x00\x00\x1e\xa4" + // 0x00C20301: 0x00001EA4 -+ "\x00\xe2\x03\x01\x00\x00\x1e\xa5" + // 0x00E20301: 0x00001EA5 -+ "\x00\xc2\x03\x00\x00\x00\x1e\xa6" + // 0x00C20300: 0x00001EA6 -+ "\x00\xe2\x03\x00\x00\x00\x1e\xa7" + // 0x00E20300: 0x00001EA7 -+ "\x00\xc2\x03\t\x00\x00\x1e\xa8" + // 0x00C20309: 0x00001EA8 -+ "\x00\xe2\x03\t\x00\x00\x1e\xa9" + // 0x00E20309: 0x00001EA9 -+ "\x00\xc2\x03\x03\x00\x00\x1e\xaa" + // 0x00C20303: 0x00001EAA -+ "\x00\xe2\x03\x03\x00\x00\x1e\xab" + // 0x00E20303: 0x00001EAB -+ "\x1e\xa0\x03\x02\x00\x00\x1e\xac" + // 0x1EA00302: 0x00001EAC -+ "\x1e\xa1\x03\x02\x00\x00\x1e\xad" + // 0x1EA10302: 0x00001EAD -+ "\x01\x02\x03\x01\x00\x00\x1e\xae" + // 0x01020301: 0x00001EAE -+ "\x01\x03\x03\x01\x00\x00\x1e\xaf" + // 0x01030301: 0x00001EAF -+ "\x01\x02\x03\x00\x00\x00\x1e\xb0" + // 0x01020300: 0x00001EB0 -+ "\x01\x03\x03\x00\x00\x00\x1e\xb1" + // 0x01030300: 0x00001EB1 -+ "\x01\x02\x03\t\x00\x00\x1e\xb2" + // 0x01020309: 0x00001EB2 -+ "\x01\x03\x03\t\x00\x00\x1e\xb3" + // 0x01030309: 0x00001EB3 -+ "\x01\x02\x03\x03\x00\x00\x1e\xb4" + // 0x01020303: 0x00001EB4 -+ "\x01\x03\x03\x03\x00\x00\x1e\xb5" + // 0x01030303: 0x00001EB5 -+ "\x1e\xa0\x03\x06\x00\x00\x1e\xb6" + // 0x1EA00306: 0x00001EB6 -+ "\x1e\xa1\x03\x06\x00\x00\x1e\xb7" + // 0x1EA10306: 0x00001EB7 -+ "\x00E\x03#\x00\x00\x1e\xb8" + // 0x00450323: 0x00001EB8 -+ "\x00e\x03#\x00\x00\x1e\xb9" + // 0x00650323: 0x00001EB9 -+ "\x00E\x03\t\x00\x00\x1e\xba" + // 0x00450309: 0x00001EBA -+ "\x00e\x03\t\x00\x00\x1e\xbb" + // 0x00650309: 0x00001EBB -+ "\x00E\x03\x03\x00\x00\x1e\xbc" + // 0x00450303: 0x00001EBC -+ "\x00e\x03\x03\x00\x00\x1e\xbd" + // 0x00650303: 0x00001EBD -+ "\x00\xca\x03\x01\x00\x00\x1e\xbe" + // 0x00CA0301: 0x00001EBE -+ "\x00\xea\x03\x01\x00\x00\x1e\xbf" + // 0x00EA0301: 0x00001EBF -+ "\x00\xca\x03\x00\x00\x00\x1e\xc0" + // 0x00CA0300: 0x00001EC0 -+ "\x00\xea\x03\x00\x00\x00\x1e\xc1" + // 0x00EA0300: 0x00001EC1 -+ "\x00\xca\x03\t\x00\x00\x1e\xc2" + // 0x00CA0309: 0x00001EC2 -+ "\x00\xea\x03\t\x00\x00\x1e\xc3" + // 0x00EA0309: 0x00001EC3 -+ "\x00\xca\x03\x03\x00\x00\x1e\xc4" + // 0x00CA0303: 0x00001EC4 -+ "\x00\xea\x03\x03\x00\x00\x1e\xc5" + // 0x00EA0303: 0x00001EC5 -+ "\x1e\xb8\x03\x02\x00\x00\x1e\xc6" + // 0x1EB80302: 0x00001EC6 -+ "\x1e\xb9\x03\x02\x00\x00\x1e\xc7" + // 0x1EB90302: 0x00001EC7 -+ "\x00I\x03\t\x00\x00\x1e\xc8" + // 0x00490309: 0x00001EC8 -+ "\x00i\x03\t\x00\x00\x1e\xc9" + // 0x00690309: 0x00001EC9 -+ "\x00I\x03#\x00\x00\x1e\xca" + // 0x00490323: 0x00001ECA -+ "\x00i\x03#\x00\x00\x1e\xcb" + // 0x00690323: 0x00001ECB -+ "\x00O\x03#\x00\x00\x1e\xcc" + // 0x004F0323: 0x00001ECC -+ "\x00o\x03#\x00\x00\x1e\xcd" + // 0x006F0323: 0x00001ECD -+ "\x00O\x03\t\x00\x00\x1e\xce" + // 0x004F0309: 0x00001ECE -+ "\x00o\x03\t\x00\x00\x1e\xcf" + // 0x006F0309: 0x00001ECF -+ "\x00\xd4\x03\x01\x00\x00\x1e\xd0" + // 0x00D40301: 0x00001ED0 -+ "\x00\xf4\x03\x01\x00\x00\x1e\xd1" + // 0x00F40301: 0x00001ED1 -+ "\x00\xd4\x03\x00\x00\x00\x1e\xd2" + // 0x00D40300: 0x00001ED2 -+ "\x00\xf4\x03\x00\x00\x00\x1e\xd3" + // 0x00F40300: 0x00001ED3 -+ "\x00\xd4\x03\t\x00\x00\x1e\xd4" + // 0x00D40309: 0x00001ED4 -+ "\x00\xf4\x03\t\x00\x00\x1e\xd5" + // 0x00F40309: 0x00001ED5 -+ "\x00\xd4\x03\x03\x00\x00\x1e\xd6" + // 0x00D40303: 0x00001ED6 -+ "\x00\xf4\x03\x03\x00\x00\x1e\xd7" + // 0x00F40303: 0x00001ED7 -+ "\x1e\xcc\x03\x02\x00\x00\x1e\xd8" + // 0x1ECC0302: 0x00001ED8 -+ "\x1e\xcd\x03\x02\x00\x00\x1e\xd9" + // 0x1ECD0302: 0x00001ED9 -+ "\x01\xa0\x03\x01\x00\x00\x1e\xda" + // 0x01A00301: 0x00001EDA -+ "\x01\xa1\x03\x01\x00\x00\x1e\xdb" + // 0x01A10301: 0x00001EDB -+ "\x01\xa0\x03\x00\x00\x00\x1e\xdc" + // 0x01A00300: 0x00001EDC -+ "\x01\xa1\x03\x00\x00\x00\x1e\xdd" + // 0x01A10300: 0x00001EDD -+ "\x01\xa0\x03\t\x00\x00\x1e\xde" + // 0x01A00309: 0x00001EDE -+ "\x01\xa1\x03\t\x00\x00\x1e\xdf" + // 0x01A10309: 0x00001EDF -+ "\x01\xa0\x03\x03\x00\x00\x1e\xe0" + // 0x01A00303: 0x00001EE0 -+ "\x01\xa1\x03\x03\x00\x00\x1e\xe1" + // 0x01A10303: 0x00001EE1 -+ "\x01\xa0\x03#\x00\x00\x1e\xe2" + // 0x01A00323: 0x00001EE2 -+ "\x01\xa1\x03#\x00\x00\x1e\xe3" + // 0x01A10323: 0x00001EE3 -+ "\x00U\x03#\x00\x00\x1e\xe4" + // 0x00550323: 0x00001EE4 -+ "\x00u\x03#\x00\x00\x1e\xe5" + // 0x00750323: 0x00001EE5 -+ "\x00U\x03\t\x00\x00\x1e\xe6" + // 0x00550309: 0x00001EE6 -+ "\x00u\x03\t\x00\x00\x1e\xe7" + // 0x00750309: 0x00001EE7 -+ "\x01\xaf\x03\x01\x00\x00\x1e\xe8" + // 0x01AF0301: 0x00001EE8 -+ "\x01\xb0\x03\x01\x00\x00\x1e\xe9" + // 0x01B00301: 0x00001EE9 -+ "\x01\xaf\x03\x00\x00\x00\x1e\xea" + // 0x01AF0300: 0x00001EEA -+ "\x01\xb0\x03\x00\x00\x00\x1e\xeb" + // 0x01B00300: 0x00001EEB -+ "\x01\xaf\x03\t\x00\x00\x1e\xec" + // 0x01AF0309: 0x00001EEC -+ "\x01\xb0\x03\t\x00\x00\x1e\xed" + // 0x01B00309: 0x00001EED -+ "\x01\xaf\x03\x03\x00\x00\x1e\xee" + // 0x01AF0303: 0x00001EEE -+ "\x01\xb0\x03\x03\x00\x00\x1e\xef" + // 0x01B00303: 0x00001EEF -+ "\x01\xaf\x03#\x00\x00\x1e\xf0" + // 0x01AF0323: 0x00001EF0 -+ "\x01\xb0\x03#\x00\x00\x1e\xf1" + // 0x01B00323: 0x00001EF1 -+ "\x00Y\x03\x00\x00\x00\x1e\xf2" + // 0x00590300: 0x00001EF2 -+ "\x00y\x03\x00\x00\x00\x1e\xf3" + // 0x00790300: 0x00001EF3 -+ "\x00Y\x03#\x00\x00\x1e\xf4" + // 0x00590323: 0x00001EF4 -+ "\x00y\x03#\x00\x00\x1e\xf5" + // 0x00790323: 0x00001EF5 -+ "\x00Y\x03\t\x00\x00\x1e\xf6" + // 0x00590309: 0x00001EF6 -+ "\x00y\x03\t\x00\x00\x1e\xf7" + // 0x00790309: 0x00001EF7 -+ "\x00Y\x03\x03\x00\x00\x1e\xf8" + // 0x00590303: 0x00001EF8 -+ "\x00y\x03\x03\x00\x00\x1e\xf9" + // 0x00790303: 0x00001EF9 -+ "\x03\xb1\x03\x13\x00\x00\x1f\x00" + // 0x03B10313: 0x00001F00 -+ "\x03\xb1\x03\x14\x00\x00\x1f\x01" + // 0x03B10314: 0x00001F01 -+ "\x1f\x00\x03\x00\x00\x00\x1f\x02" + // 0x1F000300: 0x00001F02 -+ "\x1f\x01\x03\x00\x00\x00\x1f\x03" + // 0x1F010300: 0x00001F03 -+ "\x1f\x00\x03\x01\x00\x00\x1f\x04" + // 0x1F000301: 0x00001F04 -+ "\x1f\x01\x03\x01\x00\x00\x1f\x05" + // 0x1F010301: 0x00001F05 -+ "\x1f\x00\x03B\x00\x00\x1f\x06" + // 0x1F000342: 0x00001F06 -+ "\x1f\x01\x03B\x00\x00\x1f\a" + // 0x1F010342: 0x00001F07 -+ "\x03\x91\x03\x13\x00\x00\x1f\b" + // 0x03910313: 0x00001F08 -+ "\x03\x91\x03\x14\x00\x00\x1f\t" + // 0x03910314: 0x00001F09 -+ "\x1f\b\x03\x00\x00\x00\x1f\n" + // 0x1F080300: 0x00001F0A -+ "\x1f\t\x03\x00\x00\x00\x1f\v" + // 0x1F090300: 0x00001F0B -+ "\x1f\b\x03\x01\x00\x00\x1f\f" + // 0x1F080301: 0x00001F0C -+ "\x1f\t\x03\x01\x00\x00\x1f\r" + // 0x1F090301: 0x00001F0D -+ "\x1f\b\x03B\x00\x00\x1f\x0e" + // 0x1F080342: 0x00001F0E -+ "\x1f\t\x03B\x00\x00\x1f\x0f" + // 0x1F090342: 0x00001F0F -+ "\x03\xb5\x03\x13\x00\x00\x1f\x10" + // 0x03B50313: 0x00001F10 -+ "\x03\xb5\x03\x14\x00\x00\x1f\x11" + // 0x03B50314: 0x00001F11 -+ "\x1f\x10\x03\x00\x00\x00\x1f\x12" + // 0x1F100300: 0x00001F12 -+ "\x1f\x11\x03\x00\x00\x00\x1f\x13" + // 0x1F110300: 0x00001F13 -+ "\x1f\x10\x03\x01\x00\x00\x1f\x14" + // 0x1F100301: 0x00001F14 -+ "\x1f\x11\x03\x01\x00\x00\x1f\x15" + // 0x1F110301: 0x00001F15 -+ "\x03\x95\x03\x13\x00\x00\x1f\x18" + // 0x03950313: 0x00001F18 -+ "\x03\x95\x03\x14\x00\x00\x1f\x19" + // 0x03950314: 0x00001F19 -+ "\x1f\x18\x03\x00\x00\x00\x1f\x1a" + // 0x1F180300: 0x00001F1A -+ "\x1f\x19\x03\x00\x00\x00\x1f\x1b" + // 0x1F190300: 0x00001F1B -+ "\x1f\x18\x03\x01\x00\x00\x1f\x1c" + // 0x1F180301: 0x00001F1C -+ "\x1f\x19\x03\x01\x00\x00\x1f\x1d" + // 0x1F190301: 0x00001F1D -+ "\x03\xb7\x03\x13\x00\x00\x1f " + // 0x03B70313: 0x00001F20 -+ "\x03\xb7\x03\x14\x00\x00\x1f!" + // 0x03B70314: 0x00001F21 -+ "\x1f \x03\x00\x00\x00\x1f\"" + // 0x1F200300: 0x00001F22 -+ "\x1f!\x03\x00\x00\x00\x1f#" + // 0x1F210300: 0x00001F23 -+ "\x1f \x03\x01\x00\x00\x1f$" + // 0x1F200301: 0x00001F24 -+ "\x1f!\x03\x01\x00\x00\x1f%" + // 0x1F210301: 0x00001F25 -+ "\x1f \x03B\x00\x00\x1f&" + // 0x1F200342: 0x00001F26 -+ "\x1f!\x03B\x00\x00\x1f'" + // 0x1F210342: 0x00001F27 -+ "\x03\x97\x03\x13\x00\x00\x1f(" + // 0x03970313: 0x00001F28 -+ "\x03\x97\x03\x14\x00\x00\x1f)" + // 0x03970314: 0x00001F29 -+ "\x1f(\x03\x00\x00\x00\x1f*" + // 0x1F280300: 0x00001F2A -+ "\x1f)\x03\x00\x00\x00\x1f+" + // 0x1F290300: 0x00001F2B -+ "\x1f(\x03\x01\x00\x00\x1f," + // 0x1F280301: 0x00001F2C -+ "\x1f)\x03\x01\x00\x00\x1f-" + // 0x1F290301: 0x00001F2D -+ "\x1f(\x03B\x00\x00\x1f." + // 0x1F280342: 0x00001F2E -+ "\x1f)\x03B\x00\x00\x1f/" + // 0x1F290342: 0x00001F2F -+ "\x03\xb9\x03\x13\x00\x00\x1f0" + // 0x03B90313: 0x00001F30 -+ "\x03\xb9\x03\x14\x00\x00\x1f1" + // 0x03B90314: 0x00001F31 -+ "\x1f0\x03\x00\x00\x00\x1f2" + // 0x1F300300: 0x00001F32 -+ "\x1f1\x03\x00\x00\x00\x1f3" + // 0x1F310300: 0x00001F33 -+ "\x1f0\x03\x01\x00\x00\x1f4" + // 0x1F300301: 0x00001F34 -+ "\x1f1\x03\x01\x00\x00\x1f5" + // 0x1F310301: 0x00001F35 -+ "\x1f0\x03B\x00\x00\x1f6" + // 0x1F300342: 0x00001F36 -+ "\x1f1\x03B\x00\x00\x1f7" + // 0x1F310342: 0x00001F37 -+ "\x03\x99\x03\x13\x00\x00\x1f8" + // 0x03990313: 0x00001F38 -+ "\x03\x99\x03\x14\x00\x00\x1f9" + // 0x03990314: 0x00001F39 -+ "\x1f8\x03\x00\x00\x00\x1f:" + // 0x1F380300: 0x00001F3A -+ "\x1f9\x03\x00\x00\x00\x1f;" + // 0x1F390300: 0x00001F3B -+ "\x1f8\x03\x01\x00\x00\x1f<" + // 0x1F380301: 0x00001F3C -+ "\x1f9\x03\x01\x00\x00\x1f=" + // 0x1F390301: 0x00001F3D -+ "\x1f8\x03B\x00\x00\x1f>" + // 0x1F380342: 0x00001F3E -+ "\x1f9\x03B\x00\x00\x1f?" + // 0x1F390342: 0x00001F3F -+ "\x03\xbf\x03\x13\x00\x00\x1f@" + // 0x03BF0313: 0x00001F40 -+ "\x03\xbf\x03\x14\x00\x00\x1fA" + // 0x03BF0314: 0x00001F41 -+ "\x1f@\x03\x00\x00\x00\x1fB" + // 0x1F400300: 0x00001F42 -+ "\x1fA\x03\x00\x00\x00\x1fC" + // 0x1F410300: 0x00001F43 -+ "\x1f@\x03\x01\x00\x00\x1fD" + // 0x1F400301: 0x00001F44 -+ "\x1fA\x03\x01\x00\x00\x1fE" + // 0x1F410301: 0x00001F45 -+ "\x03\x9f\x03\x13\x00\x00\x1fH" + // 0x039F0313: 0x00001F48 -+ "\x03\x9f\x03\x14\x00\x00\x1fI" + // 0x039F0314: 0x00001F49 -+ "\x1fH\x03\x00\x00\x00\x1fJ" + // 0x1F480300: 0x00001F4A -+ "\x1fI\x03\x00\x00\x00\x1fK" + // 0x1F490300: 0x00001F4B -+ "\x1fH\x03\x01\x00\x00\x1fL" + // 0x1F480301: 0x00001F4C -+ "\x1fI\x03\x01\x00\x00\x1fM" + // 0x1F490301: 0x00001F4D -+ "\x03\xc5\x03\x13\x00\x00\x1fP" + // 0x03C50313: 0x00001F50 -+ "\x03\xc5\x03\x14\x00\x00\x1fQ" + // 0x03C50314: 0x00001F51 -+ "\x1fP\x03\x00\x00\x00\x1fR" + // 0x1F500300: 0x00001F52 -+ "\x1fQ\x03\x00\x00\x00\x1fS" + // 0x1F510300: 0x00001F53 -+ "\x1fP\x03\x01\x00\x00\x1fT" + // 0x1F500301: 0x00001F54 -+ "\x1fQ\x03\x01\x00\x00\x1fU" + // 0x1F510301: 0x00001F55 -+ "\x1fP\x03B\x00\x00\x1fV" + // 0x1F500342: 0x00001F56 -+ "\x1fQ\x03B\x00\x00\x1fW" + // 0x1F510342: 0x00001F57 -+ "\x03\xa5\x03\x14\x00\x00\x1fY" + // 0x03A50314: 0x00001F59 -+ "\x1fY\x03\x00\x00\x00\x1f[" + // 0x1F590300: 0x00001F5B -+ "\x1fY\x03\x01\x00\x00\x1f]" + // 0x1F590301: 0x00001F5D -+ "\x1fY\x03B\x00\x00\x1f_" + // 0x1F590342: 0x00001F5F -+ "\x03\xc9\x03\x13\x00\x00\x1f`" + // 0x03C90313: 0x00001F60 -+ "\x03\xc9\x03\x14\x00\x00\x1fa" + // 0x03C90314: 0x00001F61 -+ "\x1f`\x03\x00\x00\x00\x1fb" + // 0x1F600300: 0x00001F62 -+ "\x1fa\x03\x00\x00\x00\x1fc" + // 0x1F610300: 0x00001F63 -+ "\x1f`\x03\x01\x00\x00\x1fd" + // 0x1F600301: 0x00001F64 -+ "\x1fa\x03\x01\x00\x00\x1fe" + // 0x1F610301: 0x00001F65 -+ "\x1f`\x03B\x00\x00\x1ff" + // 0x1F600342: 0x00001F66 -+ "\x1fa\x03B\x00\x00\x1fg" + // 0x1F610342: 0x00001F67 -+ "\x03\xa9\x03\x13\x00\x00\x1fh" + // 0x03A90313: 0x00001F68 -+ "\x03\xa9\x03\x14\x00\x00\x1fi" + // 0x03A90314: 0x00001F69 -+ "\x1fh\x03\x00\x00\x00\x1fj" + // 0x1F680300: 0x00001F6A -+ "\x1fi\x03\x00\x00\x00\x1fk" + // 0x1F690300: 0x00001F6B -+ "\x1fh\x03\x01\x00\x00\x1fl" + // 0x1F680301: 0x00001F6C -+ "\x1fi\x03\x01\x00\x00\x1fm" + // 0x1F690301: 0x00001F6D -+ "\x1fh\x03B\x00\x00\x1fn" + // 0x1F680342: 0x00001F6E -+ "\x1fi\x03B\x00\x00\x1fo" + // 0x1F690342: 0x00001F6F -+ "\x03\xb1\x03\x00\x00\x00\x1fp" + // 0x03B10300: 0x00001F70 -+ "\x03\xb5\x03\x00\x00\x00\x1fr" + // 0x03B50300: 0x00001F72 -+ "\x03\xb7\x03\x00\x00\x00\x1ft" + // 0x03B70300: 0x00001F74 -+ "\x03\xb9\x03\x00\x00\x00\x1fv" + // 0x03B90300: 0x00001F76 -+ "\x03\xbf\x03\x00\x00\x00\x1fx" + // 0x03BF0300: 0x00001F78 -+ "\x03\xc5\x03\x00\x00\x00\x1fz" + // 0x03C50300: 0x00001F7A -+ "\x03\xc9\x03\x00\x00\x00\x1f|" + // 0x03C90300: 0x00001F7C -+ "\x1f\x00\x03E\x00\x00\x1f\x80" + // 0x1F000345: 0x00001F80 -+ "\x1f\x01\x03E\x00\x00\x1f\x81" + // 0x1F010345: 0x00001F81 -+ "\x1f\x02\x03E\x00\x00\x1f\x82" + // 0x1F020345: 0x00001F82 -+ "\x1f\x03\x03E\x00\x00\x1f\x83" + // 0x1F030345: 0x00001F83 -+ "\x1f\x04\x03E\x00\x00\x1f\x84" + // 0x1F040345: 0x00001F84 -+ "\x1f\x05\x03E\x00\x00\x1f\x85" + // 0x1F050345: 0x00001F85 -+ "\x1f\x06\x03E\x00\x00\x1f\x86" + // 0x1F060345: 0x00001F86 -+ "\x1f\a\x03E\x00\x00\x1f\x87" + // 0x1F070345: 0x00001F87 -+ "\x1f\b\x03E\x00\x00\x1f\x88" + // 0x1F080345: 0x00001F88 -+ "\x1f\t\x03E\x00\x00\x1f\x89" + // 0x1F090345: 0x00001F89 -+ "\x1f\n\x03E\x00\x00\x1f\x8a" + // 0x1F0A0345: 0x00001F8A -+ "\x1f\v\x03E\x00\x00\x1f\x8b" + // 0x1F0B0345: 0x00001F8B -+ "\x1f\f\x03E\x00\x00\x1f\x8c" + // 0x1F0C0345: 0x00001F8C -+ "\x1f\r\x03E\x00\x00\x1f\x8d" + // 0x1F0D0345: 0x00001F8D -+ "\x1f\x0e\x03E\x00\x00\x1f\x8e" + // 0x1F0E0345: 0x00001F8E -+ "\x1f\x0f\x03E\x00\x00\x1f\x8f" + // 0x1F0F0345: 0x00001F8F -+ "\x1f \x03E\x00\x00\x1f\x90" + // 0x1F200345: 0x00001F90 -+ "\x1f!\x03E\x00\x00\x1f\x91" + // 0x1F210345: 0x00001F91 -+ "\x1f\"\x03E\x00\x00\x1f\x92" + // 0x1F220345: 0x00001F92 -+ "\x1f#\x03E\x00\x00\x1f\x93" + // 0x1F230345: 0x00001F93 -+ "\x1f$\x03E\x00\x00\x1f\x94" + // 0x1F240345: 0x00001F94 -+ "\x1f%\x03E\x00\x00\x1f\x95" + // 0x1F250345: 0x00001F95 -+ "\x1f&\x03E\x00\x00\x1f\x96" + // 0x1F260345: 0x00001F96 -+ "\x1f'\x03E\x00\x00\x1f\x97" + // 0x1F270345: 0x00001F97 -+ "\x1f(\x03E\x00\x00\x1f\x98" + // 0x1F280345: 0x00001F98 -+ "\x1f)\x03E\x00\x00\x1f\x99" + // 0x1F290345: 0x00001F99 -+ "\x1f*\x03E\x00\x00\x1f\x9a" + // 0x1F2A0345: 0x00001F9A -+ "\x1f+\x03E\x00\x00\x1f\x9b" + // 0x1F2B0345: 0x00001F9B -+ "\x1f,\x03E\x00\x00\x1f\x9c" + // 0x1F2C0345: 0x00001F9C -+ "\x1f-\x03E\x00\x00\x1f\x9d" + // 0x1F2D0345: 0x00001F9D -+ "\x1f.\x03E\x00\x00\x1f\x9e" + // 0x1F2E0345: 0x00001F9E -+ "\x1f/\x03E\x00\x00\x1f\x9f" + // 0x1F2F0345: 0x00001F9F -+ "\x1f`\x03E\x00\x00\x1f\xa0" + // 0x1F600345: 0x00001FA0 -+ "\x1fa\x03E\x00\x00\x1f\xa1" + // 0x1F610345: 0x00001FA1 -+ "\x1fb\x03E\x00\x00\x1f\xa2" + // 0x1F620345: 0x00001FA2 -+ "\x1fc\x03E\x00\x00\x1f\xa3" + // 0x1F630345: 0x00001FA3 -+ "\x1fd\x03E\x00\x00\x1f\xa4" + // 0x1F640345: 0x00001FA4 -+ "\x1fe\x03E\x00\x00\x1f\xa5" + // 0x1F650345: 0x00001FA5 -+ "\x1ff\x03E\x00\x00\x1f\xa6" + // 0x1F660345: 0x00001FA6 -+ "\x1fg\x03E\x00\x00\x1f\xa7" + // 0x1F670345: 0x00001FA7 -+ "\x1fh\x03E\x00\x00\x1f\xa8" + // 0x1F680345: 0x00001FA8 -+ "\x1fi\x03E\x00\x00\x1f\xa9" + // 0x1F690345: 0x00001FA9 -+ "\x1fj\x03E\x00\x00\x1f\xaa" + // 0x1F6A0345: 0x00001FAA -+ "\x1fk\x03E\x00\x00\x1f\xab" + // 0x1F6B0345: 0x00001FAB -+ "\x1fl\x03E\x00\x00\x1f\xac" + // 0x1F6C0345: 0x00001FAC -+ "\x1fm\x03E\x00\x00\x1f\xad" + // 0x1F6D0345: 0x00001FAD -+ "\x1fn\x03E\x00\x00\x1f\xae" + // 0x1F6E0345: 0x00001FAE -+ "\x1fo\x03E\x00\x00\x1f\xaf" + // 0x1F6F0345: 0x00001FAF -+ "\x03\xb1\x03\x06\x00\x00\x1f\xb0" + // 0x03B10306: 0x00001FB0 -+ "\x03\xb1\x03\x04\x00\x00\x1f\xb1" + // 0x03B10304: 0x00001FB1 -+ "\x1fp\x03E\x00\x00\x1f\xb2" + // 0x1F700345: 0x00001FB2 -+ "\x03\xb1\x03E\x00\x00\x1f\xb3" + // 0x03B10345: 0x00001FB3 -+ "\x03\xac\x03E\x00\x00\x1f\xb4" + // 0x03AC0345: 0x00001FB4 -+ "\x03\xb1\x03B\x00\x00\x1f\xb6" + // 0x03B10342: 0x00001FB6 -+ "\x1f\xb6\x03E\x00\x00\x1f\xb7" + // 0x1FB60345: 0x00001FB7 -+ "\x03\x91\x03\x06\x00\x00\x1f\xb8" + // 0x03910306: 0x00001FB8 -+ "\x03\x91\x03\x04\x00\x00\x1f\xb9" + // 0x03910304: 0x00001FB9 -+ "\x03\x91\x03\x00\x00\x00\x1f\xba" + // 0x03910300: 0x00001FBA -+ "\x03\x91\x03E\x00\x00\x1f\xbc" + // 0x03910345: 0x00001FBC -+ "\x00\xa8\x03B\x00\x00\x1f\xc1" + // 0x00A80342: 0x00001FC1 -+ "\x1ft\x03E\x00\x00\x1f\xc2" + // 0x1F740345: 0x00001FC2 -+ "\x03\xb7\x03E\x00\x00\x1f\xc3" + // 0x03B70345: 0x00001FC3 -+ "\x03\xae\x03E\x00\x00\x1f\xc4" + // 0x03AE0345: 0x00001FC4 -+ "\x03\xb7\x03B\x00\x00\x1f\xc6" + // 0x03B70342: 0x00001FC6 -+ "\x1f\xc6\x03E\x00\x00\x1f\xc7" + // 0x1FC60345: 0x00001FC7 -+ "\x03\x95\x03\x00\x00\x00\x1f\xc8" + // 0x03950300: 0x00001FC8 -+ "\x03\x97\x03\x00\x00\x00\x1f\xca" + // 0x03970300: 0x00001FCA -+ "\x03\x97\x03E\x00\x00\x1f\xcc" + // 0x03970345: 0x00001FCC -+ "\x1f\xbf\x03\x00\x00\x00\x1f\xcd" + // 0x1FBF0300: 0x00001FCD -+ "\x1f\xbf\x03\x01\x00\x00\x1f\xce" + // 0x1FBF0301: 0x00001FCE -+ "\x1f\xbf\x03B\x00\x00\x1f\xcf" + // 0x1FBF0342: 0x00001FCF -+ "\x03\xb9\x03\x06\x00\x00\x1f\xd0" + // 0x03B90306: 0x00001FD0 -+ "\x03\xb9\x03\x04\x00\x00\x1f\xd1" + // 0x03B90304: 0x00001FD1 -+ "\x03\xca\x03\x00\x00\x00\x1f\xd2" + // 0x03CA0300: 0x00001FD2 -+ "\x03\xb9\x03B\x00\x00\x1f\xd6" + // 0x03B90342: 0x00001FD6 -+ "\x03\xca\x03B\x00\x00\x1f\xd7" + // 0x03CA0342: 0x00001FD7 -+ "\x03\x99\x03\x06\x00\x00\x1f\xd8" + // 0x03990306: 0x00001FD8 -+ "\x03\x99\x03\x04\x00\x00\x1f\xd9" + // 0x03990304: 0x00001FD9 -+ "\x03\x99\x03\x00\x00\x00\x1f\xda" + // 0x03990300: 0x00001FDA -+ "\x1f\xfe\x03\x00\x00\x00\x1f\xdd" + // 0x1FFE0300: 0x00001FDD -+ "\x1f\xfe\x03\x01\x00\x00\x1f\xde" + // 0x1FFE0301: 0x00001FDE -+ "\x1f\xfe\x03B\x00\x00\x1f\xdf" + // 0x1FFE0342: 0x00001FDF -+ "\x03\xc5\x03\x06\x00\x00\x1f\xe0" + // 0x03C50306: 0x00001FE0 -+ "\x03\xc5\x03\x04\x00\x00\x1f\xe1" + // 0x03C50304: 0x00001FE1 -+ "\x03\xcb\x03\x00\x00\x00\x1f\xe2" + // 0x03CB0300: 0x00001FE2 -+ "\x03\xc1\x03\x13\x00\x00\x1f\xe4" + // 0x03C10313: 0x00001FE4 -+ "\x03\xc1\x03\x14\x00\x00\x1f\xe5" + // 0x03C10314: 0x00001FE5 -+ "\x03\xc5\x03B\x00\x00\x1f\xe6" + // 0x03C50342: 0x00001FE6 -+ "\x03\xcb\x03B\x00\x00\x1f\xe7" + // 0x03CB0342: 0x00001FE7 -+ "\x03\xa5\x03\x06\x00\x00\x1f\xe8" + // 0x03A50306: 0x00001FE8 -+ "\x03\xa5\x03\x04\x00\x00\x1f\xe9" + // 0x03A50304: 0x00001FE9 -+ "\x03\xa5\x03\x00\x00\x00\x1f\xea" + // 0x03A50300: 0x00001FEA -+ "\x03\xa1\x03\x14\x00\x00\x1f\xec" + // 0x03A10314: 0x00001FEC -+ "\x00\xa8\x03\x00\x00\x00\x1f\xed" + // 0x00A80300: 0x00001FED -+ "\x1f|\x03E\x00\x00\x1f\xf2" + // 0x1F7C0345: 0x00001FF2 -+ "\x03\xc9\x03E\x00\x00\x1f\xf3" + // 0x03C90345: 0x00001FF3 -+ "\x03\xce\x03E\x00\x00\x1f\xf4" + // 0x03CE0345: 0x00001FF4 -+ "\x03\xc9\x03B\x00\x00\x1f\xf6" + // 0x03C90342: 0x00001FF6 -+ "\x1f\xf6\x03E\x00\x00\x1f\xf7" + // 0x1FF60345: 0x00001FF7 -+ "\x03\x9f\x03\x00\x00\x00\x1f\xf8" + // 0x039F0300: 0x00001FF8 -+ "\x03\xa9\x03\x00\x00\x00\x1f\xfa" + // 0x03A90300: 0x00001FFA -+ "\x03\xa9\x03E\x00\x00\x1f\xfc" + // 0x03A90345: 0x00001FFC -+ "!\x90\x038\x00\x00!\x9a" + // 0x21900338: 0x0000219A -+ "!\x92\x038\x00\x00!\x9b" + // 0x21920338: 0x0000219B -+ "!\x94\x038\x00\x00!\xae" + // 0x21940338: 0x000021AE -+ "!\xd0\x038\x00\x00!\xcd" + // 0x21D00338: 0x000021CD -+ "!\xd4\x038\x00\x00!\xce" + // 0x21D40338: 0x000021CE -+ "!\xd2\x038\x00\x00!\xcf" + // 0x21D20338: 0x000021CF -+ "\"\x03\x038\x00\x00\"\x04" + // 0x22030338: 0x00002204 -+ "\"\b\x038\x00\x00\"\t" + // 0x22080338: 0x00002209 -+ "\"\v\x038\x00\x00\"\f" + // 0x220B0338: 0x0000220C -+ "\"#\x038\x00\x00\"$" + // 0x22230338: 0x00002224 -+ "\"%\x038\x00\x00\"&" + // 0x22250338: 0x00002226 -+ "\"<\x038\x00\x00\"A" + // 0x223C0338: 0x00002241 -+ "\"C\x038\x00\x00\"D" + // 0x22430338: 0x00002244 -+ "\"E\x038\x00\x00\"G" + // 0x22450338: 0x00002247 -+ "\"H\x038\x00\x00\"I" + // 0x22480338: 0x00002249 -+ "\x00=\x038\x00\x00\"`" + // 0x003D0338: 0x00002260 -+ "\"a\x038\x00\x00\"b" + // 0x22610338: 0x00002262 -+ "\"M\x038\x00\x00\"m" + // 0x224D0338: 0x0000226D -+ "\x00<\x038\x00\x00\"n" + // 0x003C0338: 0x0000226E -+ "\x00>\x038\x00\x00\"o" + // 0x003E0338: 0x0000226F -+ "\"d\x038\x00\x00\"p" + // 0x22640338: 0x00002270 -+ "\"e\x038\x00\x00\"q" + // 0x22650338: 0x00002271 -+ "\"r\x038\x00\x00\"t" + // 0x22720338: 0x00002274 -+ "\"s\x038\x00\x00\"u" + // 0x22730338: 0x00002275 -+ "\"v\x038\x00\x00\"x" + // 0x22760338: 0x00002278 -+ "\"w\x038\x00\x00\"y" + // 0x22770338: 0x00002279 -+ "\"z\x038\x00\x00\"\x80" + // 0x227A0338: 0x00002280 -+ "\"{\x038\x00\x00\"\x81" + // 0x227B0338: 0x00002281 -+ "\"\x82\x038\x00\x00\"\x84" + // 0x22820338: 0x00002284 -+ "\"\x83\x038\x00\x00\"\x85" + // 0x22830338: 0x00002285 -+ "\"\x86\x038\x00\x00\"\x88" + // 0x22860338: 0x00002288 -+ "\"\x87\x038\x00\x00\"\x89" + // 0x22870338: 0x00002289 -+ "\"\xa2\x038\x00\x00\"\xac" + // 0x22A20338: 0x000022AC -+ "\"\xa8\x038\x00\x00\"\xad" + // 0x22A80338: 0x000022AD -+ "\"\xa9\x038\x00\x00\"\xae" + // 0x22A90338: 0x000022AE -+ "\"\xab\x038\x00\x00\"\xaf" + // 0x22AB0338: 0x000022AF -+ "\"|\x038\x00\x00\"\xe0" + // 0x227C0338: 0x000022E0 -+ "\"}\x038\x00\x00\"\xe1" + // 0x227D0338: 0x000022E1 -+ "\"\x91\x038\x00\x00\"\xe2" + // 0x22910338: 0x000022E2 -+ "\"\x92\x038\x00\x00\"\xe3" + // 0x22920338: 0x000022E3 -+ "\"\xb2\x038\x00\x00\"\xea" + // 0x22B20338: 0x000022EA -+ "\"\xb3\x038\x00\x00\"\xeb" + // 0x22B30338: 0x000022EB -+ "\"\xb4\x038\x00\x00\"\xec" + // 0x22B40338: 0x000022EC -+ "\"\xb5\x038\x00\x00\"\xed" + // 0x22B50338: 0x000022ED -+ "0K0\x99\x00\x000L" + // 0x304B3099: 0x0000304C -+ "0M0\x99\x00\x000N" + // 0x304D3099: 0x0000304E -+ "0O0\x99\x00\x000P" + // 0x304F3099: 0x00003050 -+ "0Q0\x99\x00\x000R" + // 0x30513099: 0x00003052 -+ "0S0\x99\x00\x000T" + // 0x30533099: 0x00003054 -+ "0U0\x99\x00\x000V" + // 0x30553099: 0x00003056 -+ "0W0\x99\x00\x000X" + // 0x30573099: 0x00003058 -+ "0Y0\x99\x00\x000Z" + // 0x30593099: 0x0000305A -+ "0[0\x99\x00\x000\\" + // 0x305B3099: 0x0000305C -+ "0]0\x99\x00\x000^" + // 0x305D3099: 0x0000305E -+ "0_0\x99\x00\x000`" + // 0x305F3099: 0x00003060 -+ "0a0\x99\x00\x000b" + // 0x30613099: 0x00003062 -+ "0d0\x99\x00\x000e" + // 0x30643099: 0x00003065 -+ "0f0\x99\x00\x000g" + // 0x30663099: 0x00003067 -+ "0h0\x99\x00\x000i" + // 0x30683099: 0x00003069 -+ "0o0\x99\x00\x000p" + // 0x306F3099: 0x00003070 -+ "0o0\x9a\x00\x000q" + // 0x306F309A: 0x00003071 -+ "0r0\x99\x00\x000s" + // 0x30723099: 0x00003073 -+ "0r0\x9a\x00\x000t" + // 0x3072309A: 0x00003074 -+ "0u0\x99\x00\x000v" + // 0x30753099: 0x00003076 -+ "0u0\x9a\x00\x000w" + // 0x3075309A: 0x00003077 -+ "0x0\x99\x00\x000y" + // 0x30783099: 0x00003079 -+ "0x0\x9a\x00\x000z" + // 0x3078309A: 0x0000307A -+ "0{0\x99\x00\x000|" + // 0x307B3099: 0x0000307C -+ "0{0\x9a\x00\x000}" + // 0x307B309A: 0x0000307D -+ "0F0\x99\x00\x000\x94" + // 0x30463099: 0x00003094 -+ "0\x9d0\x99\x00\x000\x9e" + // 0x309D3099: 0x0000309E -+ "0\xab0\x99\x00\x000\xac" + // 0x30AB3099: 0x000030AC -+ "0\xad0\x99\x00\x000\xae" + // 0x30AD3099: 0x000030AE -+ "0\xaf0\x99\x00\x000\xb0" + // 0x30AF3099: 0x000030B0 -+ "0\xb10\x99\x00\x000\xb2" + // 0x30B13099: 0x000030B2 -+ "0\xb30\x99\x00\x000\xb4" + // 0x30B33099: 0x000030B4 -+ "0\xb50\x99\x00\x000\xb6" + // 0x30B53099: 0x000030B6 -+ "0\xb70\x99\x00\x000\xb8" + // 0x30B73099: 0x000030B8 -+ "0\xb90\x99\x00\x000\xba" + // 0x30B93099: 0x000030BA -+ "0\xbb0\x99\x00\x000\xbc" + // 0x30BB3099: 0x000030BC -+ "0\xbd0\x99\x00\x000\xbe" + // 0x30BD3099: 0x000030BE -+ "0\xbf0\x99\x00\x000\xc0" + // 0x30BF3099: 0x000030C0 -+ "0\xc10\x99\x00\x000\xc2" + // 0x30C13099: 0x000030C2 -+ "0\xc40\x99\x00\x000\xc5" + // 0x30C43099: 0x000030C5 -+ "0\xc60\x99\x00\x000\xc7" + // 0x30C63099: 0x000030C7 -+ "0\xc80\x99\x00\x000\xc9" + // 0x30C83099: 0x000030C9 -+ "0\xcf0\x99\x00\x000\xd0" + // 0x30CF3099: 0x000030D0 -+ "0\xcf0\x9a\x00\x000\xd1" + // 0x30CF309A: 0x000030D1 -+ "0\xd20\x99\x00\x000\xd3" + // 0x30D23099: 0x000030D3 -+ "0\xd20\x9a\x00\x000\xd4" + // 0x30D2309A: 0x000030D4 -+ "0\xd50\x99\x00\x000\xd6" + // 0x30D53099: 0x000030D6 -+ "0\xd50\x9a\x00\x000\xd7" + // 0x30D5309A: 0x000030D7 -+ "0\xd80\x99\x00\x000\xd9" + // 0x30D83099: 0x000030D9 -+ "0\xd80\x9a\x00\x000\xda" + // 0x30D8309A: 0x000030DA -+ "0\xdb0\x99\x00\x000\xdc" + // 0x30DB3099: 0x000030DC -+ "0\xdb0\x9a\x00\x000\xdd" + // 0x30DB309A: 0x000030DD -+ "0\xa60\x99\x00\x000\xf4" + // 0x30A63099: 0x000030F4 -+ "0\xef0\x99\x00\x000\xf7" + // 0x30EF3099: 0x000030F7 -+ "0\xf00\x99\x00\x000\xf8" + // 0x30F03099: 0x000030F8 -+ "0\xf10\x99\x00\x000\xf9" + // 0x30F13099: 0x000030F9 -+ "0\xf20\x99\x00\x000\xfa" + // 0x30F23099: 0x000030FA -+ "0\xfd0\x99\x00\x000\xfe" + // 0x30FD3099: 0x000030FE -+ "\x10\x99\x10\xba\x00\x01\x10\x9a" + // 0x109910BA: 0x0001109A -+ "\x10\x9b\x10\xba\x00\x01\x10\x9c" + // 0x109B10BA: 0x0001109C -+ "\x10\xa5\x10\xba\x00\x01\x10\xab" + // 0x10A510BA: 0x000110AB -+ "\x111\x11'\x00\x01\x11." + // 0x11311127: 0x0001112E -+ "\x112\x11'\x00\x01\x11/" + // 0x11321127: 0x0001112F -+ "\x13G\x13>\x00\x01\x13K" + // 0x1347133E: 0x0001134B -+ "\x13G\x13W\x00\x01\x13L" + // 0x13471357: 0x0001134C -+ "\x14\xb9\x14\xba\x00\x01\x14\xbb" + // 0x14B914BA: 0x000114BB -+ "\x14\xb9\x14\xb0\x00\x01\x14\xbc" + // 0x14B914B0: 0x000114BC -+ "\x14\xb9\x14\xbd\x00\x01\x14\xbe" + // 0x14B914BD: 0x000114BE -+ "\x15\xb8\x15\xaf\x00\x01\x15\xba" + // 0x15B815AF: 0x000115BA -+ "\x15\xb9\x15\xaf\x00\x01\x15\xbb" + // 0x15B915AF: 0x000115BB -+ "\x195\x190\x00\x01\x198" + // 0x19351930: 0x00011938 -+ "" -+ // Total size of tables: 56KB (57068 bytes) -diff --git a/vendor/golang.org/x/text/unicode/norm/tables9.0.0.go b/vendor/golang.org/x/text/unicode/norm/tables9.0.0.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/text/unicode/norm/transform.go b/vendor/golang.org/x/text/unicode/norm/transform.go -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/text/unicode/norm/trie.go b/vendor/golang.org/x/text/unicode/norm/trie.go -old mode 100644 -new mode 100755 -index 423386b..e4250ae ---- a/vendor/golang.org/x/text/unicode/norm/trie.go -+++ b/vendor/golang.org/x/text/unicode/norm/trie.go -@@ -29,7 +29,7 @@ var ( - nfkcData = newNfkcTrie(0) - ) - --// lookupValue determines the type of block n and looks up the value for b. -+// 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. -diff --git a/vendor/golang.org/x/time/AUTHORS b/vendor/golang.org/x/time/AUTHORS -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/time/CONTRIBUTORS b/vendor/golang.org/x/time/CONTRIBUTORS -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/time/LICENSE b/vendor/golang.org/x/time/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/time/PATENTS b/vendor/golang.org/x/time/PATENTS -old mode 100644 -new mode 100755 -diff --git a/vendor/golang.org/x/time/rate/rate.go b/vendor/golang.org/x/time/rate/rate.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/appengine/LICENSE b/vendor/google.golang.org/appengine/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/appengine/internal/api.go b/vendor/google.golang.org/appengine/internal/api.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/appengine/internal/api_classic.go b/vendor/google.golang.org/appengine/internal/api_classic.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/appengine/internal/api_common.go b/vendor/google.golang.org/appengine/internal/api_common.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/appengine/internal/app_id.go b/vendor/google.golang.org/appengine/internal/app_id.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/appengine/internal/base/api_base.pb.go b/vendor/google.golang.org/appengine/internal/base/api_base.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/appengine/internal/base/api_base.proto b/vendor/google.golang.org/appengine/internal/base/api_base.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/appengine/internal/datastore/datastore_v3.pb.go b/vendor/google.golang.org/appengine/internal/datastore/datastore_v3.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/appengine/internal/datastore/datastore_v3.proto b/vendor/google.golang.org/appengine/internal/datastore/datastore_v3.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/appengine/internal/identity.go b/vendor/google.golang.org/appengine/internal/identity.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/appengine/internal/identity_classic.go b/vendor/google.golang.org/appengine/internal/identity_classic.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/appengine/internal/identity_flex.go b/vendor/google.golang.org/appengine/internal/identity_flex.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/appengine/internal/identity_vm.go b/vendor/google.golang.org/appengine/internal/identity_vm.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/appengine/internal/internal.go b/vendor/google.golang.org/appengine/internal/internal.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/appengine/internal/log/log_service.pb.go b/vendor/google.golang.org/appengine/internal/log/log_service.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/appengine/internal/log/log_service.proto b/vendor/google.golang.org/appengine/internal/log/log_service.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/appengine/internal/main.go b/vendor/google.golang.org/appengine/internal/main.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/appengine/internal/main_common.go b/vendor/google.golang.org/appengine/internal/main_common.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/appengine/internal/main_vm.go b/vendor/google.golang.org/appengine/internal/main_vm.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/appengine/internal/metadata.go b/vendor/google.golang.org/appengine/internal/metadata.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/appengine/internal/net.go b/vendor/google.golang.org/appengine/internal/net.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/appengine/internal/regen.sh b/vendor/google.golang.org/appengine/internal/regen.sh -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/appengine/internal/remote_api/remote_api.pb.go b/vendor/google.golang.org/appengine/internal/remote_api/remote_api.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/appengine/internal/remote_api/remote_api.proto b/vendor/google.golang.org/appengine/internal/remote_api/remote_api.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/appengine/internal/transaction.go b/vendor/google.golang.org/appengine/internal/transaction.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.pb.go b/vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.proto b/vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/appengine/urlfetch/urlfetch.go b/vendor/google.golang.org/appengine/urlfetch/urlfetch.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/genproto/googleapis/rpc/LICENSE b/vendor/google.golang.org/genproto/googleapis/rpc/LICENSE -new file mode 100755 -index 0000000..d645695 ---- /dev/null -+++ b/vendor/google.golang.org/genproto/googleapis/rpc/LICENSE -@@ -0,0 +1,202 @@ -+ -+ Apache License -+ Version 2.0, January 2004 -+ http://www.apache.org/licenses/ -+ -+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -+ -+ 1. Definitions. -+ -+ "License" shall mean the terms and conditions for use, reproduction, -+ and distribution as defined by Sections 1 through 9 of this document. -+ -+ "Licensor" shall mean the copyright owner or entity authorized by -+ the copyright owner that is granting the License. -+ -+ "Legal Entity" shall mean the union of the acting entity and all -+ other entities that control, are controlled by, or are under common -+ control with that entity. For the purposes of this definition, -+ "control" means (i) the power, direct or indirect, to cause the -+ direction or management of such entity, whether by contract or -+ otherwise, or (ii) ownership of fifty percent (50%) or more of the -+ outstanding shares, or (iii) beneficial ownership of such entity. -+ -+ "You" (or "Your") shall mean an individual or Legal Entity -+ exercising permissions granted by this License. -+ -+ "Source" form shall mean the preferred form for making modifications, -+ including but not limited to software source code, documentation -+ source, and configuration files. -+ -+ "Object" form shall mean any form resulting from mechanical -+ transformation or translation of a Source form, including but -+ not limited to compiled object code, generated documentation, -+ and conversions to other media types. -+ -+ "Work" shall mean the work of authorship, whether in Source or -+ Object form, made available under the License, as indicated by a -+ copyright notice that is included in or attached to the work -+ (an example is provided in the Appendix below). -+ -+ "Derivative Works" shall mean any work, whether in Source or Object -+ form, that is based on (or derived from) the Work and for which the -+ editorial revisions, annotations, elaborations, or other modifications -+ represent, as a whole, an original work of authorship. For the purposes -+ of this License, Derivative Works shall not include works that remain -+ separable from, or merely link (or bind by name) to the interfaces of, -+ the Work and Derivative Works thereof. -+ -+ "Contribution" shall mean any work of authorship, including -+ the original version of the Work and any modifications or additions -+ to that Work or Derivative Works thereof, that is intentionally -+ submitted to Licensor for inclusion in the Work by the copyright owner -+ or by an individual or Legal Entity authorized to submit on behalf of -+ the copyright owner. For the purposes of this definition, "submitted" -+ means any form of electronic, verbal, or written communication sent -+ to the Licensor or its representatives, including but not limited to -+ communication on electronic mailing lists, source code control systems, -+ and issue tracking systems that are managed by, or on behalf of, the -+ Licensor for the purpose of discussing and improving the Work, but -+ excluding communication that is conspicuously marked or otherwise -+ designated in writing by the copyright owner as "Not a Contribution." -+ -+ "Contributor" shall mean Licensor and any individual or Legal Entity -+ on behalf of whom a Contribution has been received by Licensor and -+ subsequently incorporated within the Work. -+ -+ 2. Grant of Copyright License. Subject to the terms and conditions of -+ this License, each Contributor hereby grants to You a perpetual, -+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable -+ copyright license to reproduce, prepare Derivative Works of, -+ publicly display, publicly perform, sublicense, and distribute the -+ Work and such Derivative Works in Source or Object form. -+ -+ 3. Grant of Patent License. Subject to the terms and conditions of -+ this License, each Contributor hereby grants to You a perpetual, -+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable -+ (except as stated in this section) patent license to make, have made, -+ use, offer to sell, sell, import, and otherwise transfer the Work, -+ where such license applies only to those patent claims licensable -+ by such Contributor that are necessarily infringed by their -+ Contribution(s) alone or by combination of their Contribution(s) -+ with the Work to which such Contribution(s) was submitted. If You -+ institute patent litigation against any entity (including a -+ cross-claim or counterclaim in a lawsuit) alleging that the Work -+ or a Contribution incorporated within the Work constitutes direct -+ or contributory patent infringement, then any patent licenses -+ granted to You under this License for that Work shall terminate -+ as of the date such litigation is filed. -+ -+ 4. Redistribution. You may reproduce and distribute copies of the -+ Work or Derivative Works thereof in any medium, with or without -+ modifications, and in Source or Object form, provided that You -+ meet the following conditions: -+ -+ (a) You must give any other recipients of the Work or -+ Derivative Works a copy of this License; and -+ -+ (b) You must cause any modified files to carry prominent notices -+ stating that You changed the files; and -+ -+ (c) You must retain, in the Source form of any Derivative Works -+ that You distribute, all copyright, patent, trademark, and -+ attribution notices from the Source form of the Work, -+ excluding those notices that do not pertain to any part of -+ the Derivative Works; and -+ -+ (d) If the Work includes a "NOTICE" text file as part of its -+ distribution, then any Derivative Works that You distribute must -+ include a readable copy of the attribution notices contained -+ within such NOTICE file, excluding those notices that do not -+ pertain to any part of the Derivative Works, in at least one -+ of the following places: within a NOTICE text file distributed -+ as part of the Derivative Works; within the Source form or -+ documentation, if provided along with the Derivative Works; or, -+ within a display generated by the Derivative Works, if and -+ wherever such third-party notices normally appear. The contents -+ of the NOTICE file are for informational purposes only and -+ do not modify the License. You may add Your own attribution -+ notices within Derivative Works that You distribute, alongside -+ or as an addendum to the NOTICE text from the Work, provided -+ that such additional attribution notices cannot be construed -+ as modifying the License. -+ -+ You may add Your own copyright statement to Your modifications and -+ may provide additional or different license terms and conditions -+ for use, reproduction, or distribution of Your modifications, or -+ for any such Derivative Works as a whole, provided Your use, -+ reproduction, and distribution of the Work otherwise complies with -+ the conditions stated in this License. -+ -+ 5. Submission of Contributions. Unless You explicitly state otherwise, -+ any Contribution intentionally submitted for inclusion in the Work -+ by You to the Licensor shall be under the terms and conditions of -+ this License, without any additional terms or conditions. -+ Notwithstanding the above, nothing herein shall supersede or modify -+ the terms of any separate license agreement you may have executed -+ with Licensor regarding such Contributions. -+ -+ 6. Trademarks. This License does not grant permission to use the trade -+ names, trademarks, service marks, or product names of the Licensor, -+ except as required for reasonable and customary use in describing the -+ origin of the Work and reproducing the content of the NOTICE file. -+ -+ 7. Disclaimer of Warranty. Unless required by applicable law or -+ agreed to in writing, Licensor provides the Work (and each -+ Contributor provides its Contributions) on an "AS IS" BASIS, -+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -+ implied, including, without limitation, any warranties or conditions -+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A -+ PARTICULAR PURPOSE. You are solely responsible for determining the -+ appropriateness of using or redistributing the Work and assume any -+ risks associated with Your exercise of permissions under this License. -+ -+ 8. Limitation of Liability. In no event and under no legal theory, -+ whether in tort (including negligence), contract, or otherwise, -+ unless required by applicable law (such as deliberate and grossly -+ negligent acts) or agreed to in writing, shall any Contributor be -+ liable to You for damages, including any direct, indirect, special, -+ incidental, or consequential damages of any character arising as a -+ result of this License or out of the use or inability to use the -+ Work (including but not limited to damages for loss of goodwill, -+ work stoppage, computer failure or malfunction, or any and all -+ other commercial damages or losses), even if such Contributor -+ has been advised of the possibility of such damages. -+ -+ 9. Accepting Warranty or Additional Liability. While redistributing -+ the Work or Derivative Works thereof, You may choose to offer, -+ and charge a fee for, acceptance of support, warranty, indemnity, -+ or other liability obligations and/or rights consistent with this -+ License. However, in accepting such obligations, You may act only -+ on Your own behalf and on Your sole responsibility, not on behalf -+ of any other Contributor, and only if You agree to indemnify, -+ defend, and hold each Contributor harmless for any liability -+ incurred by, or claims asserted against, such Contributor by reason -+ of your accepting any such warranty or additional liability. -+ -+ END OF TERMS AND CONDITIONS -+ -+ APPENDIX: How to apply the Apache License to your work. -+ -+ To apply the Apache License to your work, attach the following -+ boilerplate notice, with the fields enclosed by brackets "[]" -+ replaced with your own identifying information. (Don't include -+ the brackets!) The text should be enclosed in the appropriate -+ comment syntax for the file format. We also recommend that a -+ file or class name and description of purpose be included on the -+ same "printed page" as the copyright notice for easier -+ identification within third-party archives. -+ -+ Copyright [yyyy] [name of copyright owner] -+ -+ 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. -diff --git a/vendor/google.golang.org/genproto/googleapis/rpc/status/status.pb.go b/vendor/google.golang.org/genproto/googleapis/rpc/status/status.pb.go -new file mode 100755 -index 0000000..a6b5081 ---- /dev/null -+++ b/vendor/google.golang.org/genproto/googleapis/rpc/status/status.pb.go -@@ -0,0 +1,203 @@ -+// Copyright 2022 Google LLC -+// -+// 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. -+ -+// Code generated by protoc-gen-go. DO NOT EDIT. -+// versions: -+// protoc-gen-go v1.26.0 -+// protoc v3.21.9 -+// source: google/rpc/status.proto -+ -+package status -+ -+import ( -+ reflect "reflect" -+ sync "sync" -+ -+ protoreflect "google.golang.org/protobuf/reflect/protoreflect" -+ protoimpl "google.golang.org/protobuf/runtime/protoimpl" -+ anypb "google.golang.org/protobuf/types/known/anypb" -+) -+ -+const ( -+ // Verify that this generated code is sufficiently up-to-date. -+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) -+ // Verify that runtime/protoimpl is sufficiently up-to-date. -+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -+) -+ -+// The `Status` type defines a logical error model that is suitable for -+// different programming environments, including REST APIs and RPC APIs. It is -+// used by [gRPC](https://github.com/grpc). Each `Status` message contains -+// three pieces of data: error code, error message, and error details. -+// -+// You can find out more about this error model and how to work with it in the -+// [API Design Guide](https://cloud.google.com/apis/design/errors). -+type Status struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ // The status code, which should be an enum value of -+ // [google.rpc.Code][google.rpc.Code]. -+ Code int32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"` -+ // A developer-facing error message, which should be in English. Any -+ // user-facing error message should be localized and sent in the -+ // [google.rpc.Status.details][google.rpc.Status.details] field, or localized -+ // by the client. -+ Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` -+ // A list of messages that carry the error details. There is a common set of -+ // message types for APIs to use. -+ Details []*anypb.Any `protobuf:"bytes,3,rep,name=details,proto3" json:"details,omitempty"` -+} -+ -+func (x *Status) Reset() { -+ *x = Status{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_google_rpc_status_proto_msgTypes[0] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *Status) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*Status) ProtoMessage() {} -+ -+func (x *Status) ProtoReflect() protoreflect.Message { -+ mi := &file_google_rpc_status_proto_msgTypes[0] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use Status.ProtoReflect.Descriptor instead. -+func (*Status) Descriptor() ([]byte, []int) { -+ return file_google_rpc_status_proto_rawDescGZIP(), []int{0} -+} -+ -+func (x *Status) GetCode() int32 { -+ if x != nil { -+ return x.Code -+ } -+ return 0 -+} -+ -+func (x *Status) GetMessage() string { -+ if x != nil { -+ return x.Message -+ } -+ return "" -+} -+ -+func (x *Status) GetDetails() []*anypb.Any { -+ if x != nil { -+ return x.Details -+ } -+ return nil -+} -+ -+var File_google_rpc_status_proto protoreflect.FileDescriptor -+ -+var file_google_rpc_status_proto_rawDesc = []byte{ -+ 0x0a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x74, 0x61, -+ 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, -+ 0x65, 0x2e, 0x72, 0x70, 0x63, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, -+ 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, -+ 0x22, 0x66, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, -+ 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, -+ 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, -+ 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2e, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, -+ 0x69, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, -+ 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, -+ 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, 0x61, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e, -+ 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x42, 0x0b, 0x53, 0x74, 0x61, 0x74, -+ 0x75, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x37, 0x67, 0x6f, 0x6f, 0x67, 0x6c, -+ 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, -+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, -+ 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x3b, 0x73, 0x74, 0x61, 0x74, -+ 0x75, 0x73, 0xf8, 0x01, 0x01, 0xa2, 0x02, 0x03, 0x52, 0x50, 0x43, 0x62, 0x06, 0x70, 0x72, 0x6f, -+ 0x74, 0x6f, 0x33, -+} -+ -+var ( -+ file_google_rpc_status_proto_rawDescOnce sync.Once -+ file_google_rpc_status_proto_rawDescData = file_google_rpc_status_proto_rawDesc -+) -+ -+func file_google_rpc_status_proto_rawDescGZIP() []byte { -+ file_google_rpc_status_proto_rawDescOnce.Do(func() { -+ file_google_rpc_status_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_rpc_status_proto_rawDescData) -+ }) -+ return file_google_rpc_status_proto_rawDescData -+} -+ -+var file_google_rpc_status_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -+var file_google_rpc_status_proto_goTypes = []interface{}{ -+ (*Status)(nil), // 0: google.rpc.Status -+ (*anypb.Any)(nil), // 1: google.protobuf.Any -+} -+var file_google_rpc_status_proto_depIdxs = []int32{ -+ 1, // 0: google.rpc.Status.details:type_name -> google.protobuf.Any -+ 1, // [1:1] is the sub-list for method output_type -+ 1, // [1:1] is the sub-list for method input_type -+ 1, // [1:1] is the sub-list for extension type_name -+ 1, // [1:1] is the sub-list for extension extendee -+ 0, // [0:1] is the sub-list for field type_name -+} -+ -+func init() { file_google_rpc_status_proto_init() } -+func file_google_rpc_status_proto_init() { -+ if File_google_rpc_status_proto != nil { -+ return -+ } -+ if !protoimpl.UnsafeEnabled { -+ file_google_rpc_status_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*Status); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ } -+ type x struct{} -+ out := protoimpl.TypeBuilder{ -+ File: protoimpl.DescBuilder{ -+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), -+ RawDescriptor: file_google_rpc_status_proto_rawDesc, -+ NumEnums: 0, -+ NumMessages: 1, -+ NumExtensions: 0, -+ NumServices: 0, -+ }, -+ GoTypes: file_google_rpc_status_proto_goTypes, -+ DependencyIndexes: file_google_rpc_status_proto_depIdxs, -+ MessageInfos: file_google_rpc_status_proto_msgTypes, -+ }.Build() -+ File_google_rpc_status_proto = out.File -+ file_google_rpc_status_proto_rawDesc = nil -+ file_google_rpc_status_proto_goTypes = nil -+ file_google_rpc_status_proto_depIdxs = nil -+} -diff --git a/vendor/google.golang.org/grpc/AUTHORS b/vendor/google.golang.org/grpc/AUTHORS -new file mode 100755 -index 0000000..e491a9e ---- /dev/null -+++ b/vendor/google.golang.org/grpc/AUTHORS -@@ -0,0 +1 @@ -+Google Inc. -diff --git a/vendor/google.golang.org/grpc/CODE-OF-CONDUCT.md b/vendor/google.golang.org/grpc/CODE-OF-CONDUCT.md -new file mode 100755 -index 0000000..9d4213e ---- /dev/null -+++ b/vendor/google.golang.org/grpc/CODE-OF-CONDUCT.md -@@ -0,0 +1,3 @@ -+## Community Code of Conduct -+ -+gRPC follows the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md). -diff --git a/vendor/google.golang.org/grpc/CONTRIBUTING.md b/vendor/google.golang.org/grpc/CONTRIBUTING.md -new file mode 100755 -index 0000000..608aa6e ---- /dev/null -+++ b/vendor/google.golang.org/grpc/CONTRIBUTING.md -@@ -0,0 +1,73 @@ -+# How to contribute -+ -+We definitely welcome your patches and contributions to gRPC! Please read the gRPC -+organization's [governance rules](https://github.com/grpc/grpc-community/blob/master/governance.md) -+and [contribution guidelines](https://github.com/grpc/grpc-community/blob/master/CONTRIBUTING.md) before proceeding. -+ -+If you are new to github, please start by reading [Pull Request howto](https://help.github.com/articles/about-pull-requests/) -+ -+## Legal requirements -+ -+In order to protect both you and ourselves, you will need to sign the -+[Contributor License Agreement](https://identity.linuxfoundation.org/projects/cncf). -+ -+## Guidelines for Pull Requests -+How to get your contributions merged smoothly and quickly. -+ -+- Create **small PRs** that are narrowly focused on **addressing a single -+ concern**. We often times receive PRs that are trying to fix several things at -+ a time, but only one fix is considered acceptable, nothing gets merged and -+ both author's & review's time is wasted. Create more PRs to address different -+ concerns and everyone will be happy. -+ -+- If you are searching for features to work on, issues labeled [Status: Help -+ Wanted](https://github.com/grpc/grpc-go/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3A%22Status%3A+Help+Wanted%22) -+ is a great place to start. These issues are well-documented and usually can be -+ resolved with a single pull request. -+ -+- If you are adding a new file, make sure it has the copyright message template -+ at the top as a comment. You can copy over the message from an existing file -+ and update the year. -+ -+- The grpc package should only depend on standard Go packages and a small number -+ of exceptions. If your contribution introduces new dependencies which are NOT -+ in the [list](https://godoc.org/google.golang.org/grpc?imports), you need a -+ discussion with gRPC-Go authors and consultants. -+ -+- For speculative changes, consider opening an issue and discussing it first. If -+ you are suggesting a behavioral or API change, consider starting with a [gRFC -+ proposal](https://github.com/grpc/proposal). -+ -+- Provide a good **PR description** as a record of **what** change is being made -+ and **why** it was made. Link to a github issue if it exists. -+ -+- If you want to fix formatting or style, consider whether your changes are an -+ obvious improvement or might be considered a personal preference. If a style -+ change is based on preference, it likely will not be accepted. If it corrects -+ widely agreed-upon anti-patterns, then please do create a PR and explain the -+ benefits of the change. -+ -+- Unless your PR is trivial, you should expect there will be reviewer comments -+ that you'll need to address before merging. We'll mark it as `Status: Requires -+ Reporter Clarification` if we expect you to respond to these comments in a -+ timely manner. If the PR remains inactive for 6 days, it will be marked as -+ `stale` and automatically close 7 days after that if we don't hear back from -+ you. -+ -+- Maintain **clean commit history** and use **meaningful commit messages**. PRs -+ with messy commit history are difficult to review and won't be merged. Use -+ `rebase -i upstream/master` to curate your commit history and/or to bring in -+ latest changes from master (but avoid rebasing in the middle of a code -+ review). -+ -+- Keep your PR up to date with upstream/master (if there are merge conflicts, we -+ can't really merge your change). -+ -+- **All tests need to be passing** before your change can be merged. We -+ recommend you **run tests locally** before creating your PR to catch breakages -+ early on. -+ - `VET_SKIP_PROTO=1 ./vet.sh` to catch vet errors -+ - `go test -cpu 1,4 -timeout 7m ./...` to run the tests -+ - `go test -race -cpu 1,4 -timeout 7m ./...` to run tests in race mode -+ -+- Exceptions to the rules can be made if there's a compelling reason for doing so. -diff --git a/vendor/google.golang.org/grpc/GOVERNANCE.md b/vendor/google.golang.org/grpc/GOVERNANCE.md -new file mode 100755 -index 0000000..d6ff267 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/GOVERNANCE.md -@@ -0,0 +1 @@ -+This repository is governed by the gRPC organization's [governance rules](https://github.com/grpc/grpc-community/blob/master/governance.md). -diff --git a/vendor/google.golang.org/grpc/LICENSE b/vendor/google.golang.org/grpc/LICENSE -new file mode 100755 -index 0000000..d645695 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/LICENSE -@@ -0,0 +1,202 @@ -+ -+ Apache License -+ Version 2.0, January 2004 -+ http://www.apache.org/licenses/ -+ -+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -+ -+ 1. Definitions. -+ -+ "License" shall mean the terms and conditions for use, reproduction, -+ and distribution as defined by Sections 1 through 9 of this document. -+ -+ "Licensor" shall mean the copyright owner or entity authorized by -+ the copyright owner that is granting the License. -+ -+ "Legal Entity" shall mean the union of the acting entity and all -+ other entities that control, are controlled by, or are under common -+ control with that entity. For the purposes of this definition, -+ "control" means (i) the power, direct or indirect, to cause the -+ direction or management of such entity, whether by contract or -+ otherwise, or (ii) ownership of fifty percent (50%) or more of the -+ outstanding shares, or (iii) beneficial ownership of such entity. -+ -+ "You" (or "Your") shall mean an individual or Legal Entity -+ exercising permissions granted by this License. -+ -+ "Source" form shall mean the preferred form for making modifications, -+ including but not limited to software source code, documentation -+ source, and configuration files. -+ -+ "Object" form shall mean any form resulting from mechanical -+ transformation or translation of a Source form, including but -+ not limited to compiled object code, generated documentation, -+ and conversions to other media types. -+ -+ "Work" shall mean the work of authorship, whether in Source or -+ Object form, made available under the License, as indicated by a -+ copyright notice that is included in or attached to the work -+ (an example is provided in the Appendix below). -+ -+ "Derivative Works" shall mean any work, whether in Source or Object -+ form, that is based on (or derived from) the Work and for which the -+ editorial revisions, annotations, elaborations, or other modifications -+ represent, as a whole, an original work of authorship. For the purposes -+ of this License, Derivative Works shall not include works that remain -+ separable from, or merely link (or bind by name) to the interfaces of, -+ the Work and Derivative Works thereof. -+ -+ "Contribution" shall mean any work of authorship, including -+ the original version of the Work and any modifications or additions -+ to that Work or Derivative Works thereof, that is intentionally -+ submitted to Licensor for inclusion in the Work by the copyright owner -+ or by an individual or Legal Entity authorized to submit on behalf of -+ the copyright owner. For the purposes of this definition, "submitted" -+ means any form of electronic, verbal, or written communication sent -+ to the Licensor or its representatives, including but not limited to -+ communication on electronic mailing lists, source code control systems, -+ and issue tracking systems that are managed by, or on behalf of, the -+ Licensor for the purpose of discussing and improving the Work, but -+ excluding communication that is conspicuously marked or otherwise -+ designated in writing by the copyright owner as "Not a Contribution." -+ -+ "Contributor" shall mean Licensor and any individual or Legal Entity -+ on behalf of whom a Contribution has been received by Licensor and -+ subsequently incorporated within the Work. -+ -+ 2. Grant of Copyright License. Subject to the terms and conditions of -+ this License, each Contributor hereby grants to You a perpetual, -+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable -+ copyright license to reproduce, prepare Derivative Works of, -+ publicly display, publicly perform, sublicense, and distribute the -+ Work and such Derivative Works in Source or Object form. -+ -+ 3. Grant of Patent License. Subject to the terms and conditions of -+ this License, each Contributor hereby grants to You a perpetual, -+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable -+ (except as stated in this section) patent license to make, have made, -+ use, offer to sell, sell, import, and otherwise transfer the Work, -+ where such license applies only to those patent claims licensable -+ by such Contributor that are necessarily infringed by their -+ Contribution(s) alone or by combination of their Contribution(s) -+ with the Work to which such Contribution(s) was submitted. If You -+ institute patent litigation against any entity (including a -+ cross-claim or counterclaim in a lawsuit) alleging that the Work -+ or a Contribution incorporated within the Work constitutes direct -+ or contributory patent infringement, then any patent licenses -+ granted to You under this License for that Work shall terminate -+ as of the date such litigation is filed. -+ -+ 4. Redistribution. You may reproduce and distribute copies of the -+ Work or Derivative Works thereof in any medium, with or without -+ modifications, and in Source or Object form, provided that You -+ meet the following conditions: -+ -+ (a) You must give any other recipients of the Work or -+ Derivative Works a copy of this License; and -+ -+ (b) You must cause any modified files to carry prominent notices -+ stating that You changed the files; and -+ -+ (c) You must retain, in the Source form of any Derivative Works -+ that You distribute, all copyright, patent, trademark, and -+ attribution notices from the Source form of the Work, -+ excluding those notices that do not pertain to any part of -+ the Derivative Works; and -+ -+ (d) If the Work includes a "NOTICE" text file as part of its -+ distribution, then any Derivative Works that You distribute must -+ include a readable copy of the attribution notices contained -+ within such NOTICE file, excluding those notices that do not -+ pertain to any part of the Derivative Works, in at least one -+ of the following places: within a NOTICE text file distributed -+ as part of the Derivative Works; within the Source form or -+ documentation, if provided along with the Derivative Works; or, -+ within a display generated by the Derivative Works, if and -+ wherever such third-party notices normally appear. The contents -+ of the NOTICE file are for informational purposes only and -+ do not modify the License. You may add Your own attribution -+ notices within Derivative Works that You distribute, alongside -+ or as an addendum to the NOTICE text from the Work, provided -+ that such additional attribution notices cannot be construed -+ as modifying the License. -+ -+ You may add Your own copyright statement to Your modifications and -+ may provide additional or different license terms and conditions -+ for use, reproduction, or distribution of Your modifications, or -+ for any such Derivative Works as a whole, provided Your use, -+ reproduction, and distribution of the Work otherwise complies with -+ the conditions stated in this License. -+ -+ 5. Submission of Contributions. Unless You explicitly state otherwise, -+ any Contribution intentionally submitted for inclusion in the Work -+ by You to the Licensor shall be under the terms and conditions of -+ this License, without any additional terms or conditions. -+ Notwithstanding the above, nothing herein shall supersede or modify -+ the terms of any separate license agreement you may have executed -+ with Licensor regarding such Contributions. -+ -+ 6. Trademarks. This License does not grant permission to use the trade -+ names, trademarks, service marks, or product names of the Licensor, -+ except as required for reasonable and customary use in describing the -+ origin of the Work and reproducing the content of the NOTICE file. -+ -+ 7. Disclaimer of Warranty. Unless required by applicable law or -+ agreed to in writing, Licensor provides the Work (and each -+ Contributor provides its Contributions) on an "AS IS" BASIS, -+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -+ implied, including, without limitation, any warranties or conditions -+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A -+ PARTICULAR PURPOSE. You are solely responsible for determining the -+ appropriateness of using or redistributing the Work and assume any -+ risks associated with Your exercise of permissions under this License. -+ -+ 8. Limitation of Liability. In no event and under no legal theory, -+ whether in tort (including negligence), contract, or otherwise, -+ unless required by applicable law (such as deliberate and grossly -+ negligent acts) or agreed to in writing, shall any Contributor be -+ liable to You for damages, including any direct, indirect, special, -+ incidental, or consequential damages of any character arising as a -+ result of this License or out of the use or inability to use the -+ Work (including but not limited to damages for loss of goodwill, -+ work stoppage, computer failure or malfunction, or any and all -+ other commercial damages or losses), even if such Contributor -+ has been advised of the possibility of such damages. -+ -+ 9. Accepting Warranty or Additional Liability. While redistributing -+ the Work or Derivative Works thereof, You may choose to offer, -+ and charge a fee for, acceptance of support, warranty, indemnity, -+ or other liability obligations and/or rights consistent with this -+ License. However, in accepting such obligations, You may act only -+ on Your own behalf and on Your sole responsibility, not on behalf -+ of any other Contributor, and only if You agree to indemnify, -+ defend, and hold each Contributor harmless for any liability -+ incurred by, or claims asserted against, such Contributor by reason -+ of your accepting any such warranty or additional liability. -+ -+ END OF TERMS AND CONDITIONS -+ -+ APPENDIX: How to apply the Apache License to your work. -+ -+ To apply the Apache License to your work, attach the following -+ boilerplate notice, with the fields enclosed by brackets "[]" -+ replaced with your own identifying information. (Don't include -+ the brackets!) The text should be enclosed in the appropriate -+ comment syntax for the file format. We also recommend that a -+ file or class name and description of purpose be included on the -+ same "printed page" as the copyright notice for easier -+ identification within third-party archives. -+ -+ Copyright [yyyy] [name of copyright owner] -+ -+ 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. -diff --git a/vendor/google.golang.org/grpc/MAINTAINERS.md b/vendor/google.golang.org/grpc/MAINTAINERS.md -new file mode 100755 -index 0000000..c6672c0 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/MAINTAINERS.md -@@ -0,0 +1,28 @@ -+This page lists all active maintainers of this repository. If you were a -+maintainer and would like to add your name to the Emeritus list, please send us a -+PR. -+ -+See [GOVERNANCE.md](https://github.com/grpc/grpc-community/blob/master/governance.md) -+for governance guidelines and how to become a maintainer. -+See [CONTRIBUTING.md](https://github.com/grpc/grpc-community/blob/master/CONTRIBUTING.md) -+for general contribution guidelines. -+ -+## Maintainers (in alphabetical order) -+ -+- [cesarghali](https://github.com/cesarghali), Google LLC -+- [dfawley](https://github.com/dfawley), Google LLC -+- [easwars](https://github.com/easwars), Google LLC -+- [menghanl](https://github.com/menghanl), Google LLC -+- [srini100](https://github.com/srini100), Google LLC -+ -+## Emeritus Maintainers (in alphabetical order) -+- [adelez](https://github.com/adelez), Google LLC -+- [canguler](https://github.com/canguler), Google LLC -+- [iamqizhao](https://github.com/iamqizhao), Google LLC -+- [jadekler](https://github.com/jadekler), Google LLC -+- [jtattermusch](https://github.com/jtattermusch), Google LLC -+- [lyuxuan](https://github.com/lyuxuan), Google LLC -+- [makmukhi](https://github.com/makmukhi), Google LLC -+- [matt-kwong](https://github.com/matt-kwong), Google LLC -+- [nicolasnoble](https://github.com/nicolasnoble), Google LLC -+- [yongni](https://github.com/yongni), Google LLC -diff --git a/vendor/google.golang.org/grpc/Makefile b/vendor/google.golang.org/grpc/Makefile -new file mode 100755 -index 0000000..1f89609 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/Makefile -@@ -0,0 +1,46 @@ -+all: vet test testrace -+ -+build: -+ go build google.golang.org/grpc/... -+ -+clean: -+ go clean -i google.golang.org/grpc/... -+ -+deps: -+ GO111MODULE=on go get -d -v google.golang.org/grpc/... -+ -+proto: -+ @ if ! which protoc > /dev/null; then \ -+ echo "error: protoc not installed" >&2; \ -+ exit 1; \ -+ fi -+ go generate google.golang.org/grpc/... -+ -+test: -+ go test -cpu 1,4 -timeout 7m google.golang.org/grpc/... -+ -+testsubmodule: -+ cd security/advancedtls && go test -cpu 1,4 -timeout 7m google.golang.org/grpc/security/advancedtls/... -+ cd security/authorization && go test -cpu 1,4 -timeout 7m google.golang.org/grpc/security/authorization/... -+ -+testrace: -+ go test -race -cpu 1,4 -timeout 7m google.golang.org/grpc/... -+ -+testdeps: -+ GO111MODULE=on go get -d -v -t google.golang.org/grpc/... -+ -+vet: vetdeps -+ ./vet.sh -+ -+vetdeps: -+ ./vet.sh -install -+ -+.PHONY: \ -+ all \ -+ build \ -+ clean \ -+ proto \ -+ test \ -+ testrace \ -+ vet \ -+ vetdeps -diff --git a/vendor/google.golang.org/grpc/NOTICE.txt b/vendor/google.golang.org/grpc/NOTICE.txt -new file mode 100755 -index 0000000..5301977 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/NOTICE.txt -@@ -0,0 +1,13 @@ -+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. -diff --git a/vendor/google.golang.org/grpc/README.md b/vendor/google.golang.org/grpc/README.md -new file mode 100755 -index 0000000..0e6ae69 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/README.md -@@ -0,0 +1,141 @@ -+# gRPC-Go -+ -+[![Build Status](https://travis-ci.org/grpc/grpc-go.svg)](https://travis-ci.org/grpc/grpc-go) -+[![GoDoc](https://pkg.go.dev/badge/google.golang.org/grpc)][API] -+[![GoReportCard](https://goreportcard.com/badge/grpc/grpc-go)](https://goreportcard.com/report/github.com/grpc/grpc-go) -+ -+The [Go][] implementation of [gRPC][]: A high performance, open source, general -+RPC framework that puts mobile and HTTP/2 first. For more information see the -+[Go gRPC docs][], or jump directly into the [quick start][]. -+ -+## Prerequisites -+ -+- **[Go][]**: any one of the **three latest major** [releases][go-releases]. -+ -+## Installation -+ -+With [Go module][] support (Go 1.11+), simply add the following import -+ -+```go -+import "google.golang.org/grpc" -+``` -+ -+to your code, and then `go [build|run|test]` will automatically fetch the -+necessary dependencies. -+ -+Otherwise, to install the `grpc-go` package, run the following command: -+ -+```console -+$ go get -u google.golang.org/grpc -+``` -+ -+> **Note:** If you are trying to access `grpc-go` from **China**, see the -+> [FAQ](#FAQ) below. -+ -+## Learn more -+ -+- [Go gRPC docs][], which include a [quick start][] and [API -+ reference][API] among other resources -+- [Low-level technical docs](Documentation) from this repository -+- [Performance benchmark][] -+- [Examples](examples) -+ -+## FAQ -+ -+### I/O Timeout Errors -+ -+The `golang.org` domain may be blocked from some countries. `go get` usually -+produces an error like the following when this happens: -+ -+```console -+$ go get -u google.golang.org/grpc -+package google.golang.org/grpc: unrecognized import path "google.golang.org/grpc" (https fetch: Get https://google.golang.org/grpc?go-get=1: dial tcp 216.239.37.1:443: i/o timeout) -+``` -+ -+To build Go code, there are several options: -+ -+- Set up a VPN and access google.golang.org through that. -+ -+- Without Go module support: `git clone` the repo manually: -+ -+ ```sh -+ git clone https://github.com/grpc/grpc-go.git $GOPATH/src/google.golang.org/grpc -+ ``` -+ -+ You will need to do the same for all of grpc's dependencies in `golang.org`, -+ e.g. `golang.org/x/net`. -+ -+- With Go module support: it is possible to use the `replace` feature of `go -+ mod` to create aliases for golang.org packages. In your project's directory: -+ -+ ```sh -+ go mod edit -replace=google.golang.org/grpc=github.com/grpc/grpc-go@latest -+ go mod tidy -+ go mod vendor -+ go build -mod=vendor -+ ``` -+ -+ Again, this will need to be done for all transitive dependencies hosted on -+ golang.org as well. For details, refer to [golang/go issue #28652](https://github.com/golang/go/issues/28652). -+ -+### Compiling error, undefined: grpc.SupportPackageIsVersion -+ -+#### If you are using Go modules: -+ -+Ensure your gRPC-Go version is `require`d at the appropriate version in -+the same module containing the generated `.pb.go` files. For example, -+`SupportPackageIsVersion6` needs `v1.27.0`, so in your `go.mod` file: -+ -+```go -+module -+ -+require ( -+ google.golang.org/grpc v1.27.0 -+) -+``` -+ -+#### If you are *not* using Go modules: -+ -+Update the `proto` package, gRPC package, and rebuild the `.proto` files: -+ -+```sh -+go get -u github.com/golang/protobuf/{proto,protoc-gen-go} -+go get -u google.golang.org/grpc -+protoc --go_out=plugins=grpc:. *.proto -+``` -+ -+### How to turn on logging -+ -+The default logger is controlled by environment variables. Turn everything on -+like this: -+ -+```console -+$ export GRPC_GO_LOG_VERBOSITY_LEVEL=99 -+$ export GRPC_GO_LOG_SEVERITY_LEVEL=info -+``` -+ -+### The RPC failed with error `"code = Unavailable desc = transport is closing"` -+ -+This error means the connection the RPC is using was closed, and there are many -+possible reasons, including: -+ 1. mis-configured transport credentials, connection failed on handshaking -+ 1. bytes disrupted, possibly by a proxy in between -+ 1. server shutdown -+ 1. Keepalive parameters caused connection shutdown, for example if you have configured -+ your server to terminate connections regularly to [trigger DNS lookups](https://github.com/grpc/grpc-go/issues/3170#issuecomment-552517779). -+ If this is the case, you may want to increase your [MaxConnectionAgeGrace](https://pkg.go.dev/google.golang.org/grpc/keepalive?tab=doc#ServerParameters), -+ to allow longer RPC calls to finish. -+ -+It can be tricky to debug this because the error happens on the client side but -+the root cause of the connection being closed is on the server side. Turn on -+logging on __both client and server__, and see if there are any transport -+errors. -+ -+[API]: https://pkg.go.dev/google.golang.org/grpc -+[Go]: https://golang.org -+[Go module]: https://github.com/golang/go/wiki/Modules -+[gRPC]: https://grpc.io -+[Go gRPC docs]: https://grpc.io/docs/languages/go -+[Performance benchmark]: https://performance-dot-grpc-testing.appspot.com/explore?dashboard=5180705743044608 -+[quick start]: https://grpc.io/docs/languages/go/quickstart -+[go-releases]: https://golang.org/doc/devel/release.html -diff --git a/vendor/google.golang.org/grpc/SECURITY.md b/vendor/google.golang.org/grpc/SECURITY.md -new file mode 100755 -index 0000000..be6e108 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/SECURITY.md -@@ -0,0 +1,3 @@ -+# Security Policy -+ -+For information on gRPC Security Policy and reporting potentional security issues, please see [gRPC CVE Process](https://github.com/grpc/proposal/blob/master/P4-grpc-cve-process.md). -diff --git a/vendor/google.golang.org/grpc/attributes/attributes.go b/vendor/google.golang.org/grpc/attributes/attributes.go -new file mode 100755 -index 0000000..49712ac ---- /dev/null -+++ b/vendor/google.golang.org/grpc/attributes/attributes.go -@@ -0,0 +1,142 @@ -+/* -+ * -+ * Copyright 2019 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 attributes defines a generic key/value store used in various gRPC -+// components. -+// -+// # Experimental -+// -+// Notice: This package is EXPERIMENTAL and may be changed or removed in a -+// later release. -+package attributes -+ -+import ( -+ "fmt" -+ "strings" -+) -+ -+// Attributes is an immutable struct for storing and retrieving generic -+// key/value pairs. Keys must be hashable, and users should define their own -+// types for keys. Values should not be modified after they are added to an -+// Attributes or if they were received from one. If values implement 'Equal(o -+// interface{}) bool', it will be called by (*Attributes).Equal to determine -+// whether two values with the same key should be considered equal. -+type Attributes struct { -+ m map[interface{}]interface{} -+} -+ -+// New returns a new Attributes containing the key/value pair. -+func New(key, value interface{}) *Attributes { -+ return &Attributes{m: map[interface{}]interface{}{key: value}} -+} -+ -+// WithValue returns a new Attributes containing the previous keys and values -+// and the new key/value pair. If the same key appears multiple times, the -+// last value overwrites all previous values for that key. To remove an -+// existing key, use a nil value. value should not be modified later. -+func (a *Attributes) WithValue(key, value interface{}) *Attributes { -+ if a == nil { -+ return New(key, value) -+ } -+ n := &Attributes{m: make(map[interface{}]interface{}, len(a.m)+1)} -+ for k, v := range a.m { -+ n.m[k] = v -+ } -+ n.m[key] = value -+ return n -+} -+ -+// Value returns the value associated with these attributes for key, or nil if -+// no value is associated with key. The returned value should not be modified. -+func (a *Attributes) Value(key interface{}) interface{} { -+ if a == nil { -+ return nil -+ } -+ return a.m[key] -+} -+ -+// Equal returns whether a and o are equivalent. If 'Equal(o interface{}) -+// bool' is implemented for a value in the attributes, it is called to -+// determine if the value matches the one stored in the other attributes. If -+// Equal is not implemented, standard equality is used to determine if the two -+// values are equal. Note that some types (e.g. maps) aren't comparable by -+// default, so they must be wrapped in a struct, or in an alias type, with Equal -+// defined. -+func (a *Attributes) Equal(o *Attributes) bool { -+ if a == nil && o == nil { -+ return true -+ } -+ if a == nil || o == nil { -+ return false -+ } -+ if len(a.m) != len(o.m) { -+ return false -+ } -+ for k, v := range a.m { -+ ov, ok := o.m[k] -+ if !ok { -+ // o missing element of a -+ return false -+ } -+ if eq, ok := v.(interface{ Equal(o interface{}) bool }); ok { -+ if !eq.Equal(ov) { -+ return false -+ } -+ } else if v != ov { -+ // Fallback to a standard equality check if Value is unimplemented. -+ return false -+ } -+ } -+ return true -+} -+ -+// String prints the attribute map. If any key or values throughout the map -+// implement fmt.Stringer, it calls that method and appends. -+func (a *Attributes) String() string { -+ var sb strings.Builder -+ sb.WriteString("{") -+ first := true -+ for k, v := range a.m { -+ if !first { -+ sb.WriteString(", ") -+ } -+ sb.WriteString(fmt.Sprintf("%q: %q ", str(k), str(v))) -+ first = false -+ } -+ sb.WriteString("}") -+ return sb.String() -+} -+ -+func str(x interface{}) string { -+ if v, ok := x.(fmt.Stringer); ok { -+ return v.String() -+ } else if v, ok := x.(string); ok { -+ return v -+ } -+ return fmt.Sprintf("<%p>", x) -+} -+ -+// MarshalJSON helps implement the json.Marshaler interface, thereby rendering -+// the Attributes correctly when printing (via pretty.JSON) structs containing -+// Attributes as fields. -+// -+// Is it impossible to unmarshal attributes from a JSON representation and this -+// method is meant only for debugging purposes. -+func (a *Attributes) MarshalJSON() ([]byte, error) { -+ return []byte(a.String()), nil -+} -diff --git a/vendor/google.golang.org/grpc/backoff.go b/vendor/google.golang.org/grpc/backoff.go -new file mode 100755 -index 0000000..29475e3 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/backoff.go -@@ -0,0 +1,61 @@ -+/* -+ * -+ * 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. -+ * -+ */ -+ -+// See internal/backoff package for the backoff implementation. This file is -+// kept for the exported types and API backward compatibility. -+ -+package grpc -+ -+import ( -+ "time" -+ -+ "google.golang.org/grpc/backoff" -+) -+ -+// DefaultBackoffConfig uses values specified for backoff in -+// https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md. -+// -+// Deprecated: use ConnectParams instead. Will be supported throughout 1.x. -+var DefaultBackoffConfig = BackoffConfig{ -+ MaxDelay: 120 * time.Second, -+} -+ -+// BackoffConfig defines the parameters for the default gRPC backoff strategy. -+// -+// Deprecated: use ConnectParams instead. Will be supported throughout 1.x. -+type BackoffConfig struct { -+ // MaxDelay is the upper bound of backoff delay. -+ MaxDelay time.Duration -+} -+ -+// ConnectParams defines the parameters for connecting and retrying. Users are -+// encouraged to use this instead of the BackoffConfig type defined above. See -+// here for more details: -+// https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md. -+// -+// # Experimental -+// -+// Notice: This type is EXPERIMENTAL and may be changed or removed in a -+// later release. -+type ConnectParams struct { -+ // Backoff specifies the configuration options for connection backoff. -+ Backoff backoff.Config -+ // MinConnectTimeout is the minimum amount of time we are willing to give a -+ // connection to complete. -+ MinConnectTimeout time.Duration -+} -diff --git a/vendor/google.golang.org/grpc/backoff/backoff.go b/vendor/google.golang.org/grpc/backoff/backoff.go -new file mode 100755 -index 0000000..0787d0b ---- /dev/null -+++ b/vendor/google.golang.org/grpc/backoff/backoff.go -@@ -0,0 +1,52 @@ -+/* -+ * -+ * Copyright 2019 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 backoff provides configuration options for backoff. -+// -+// More details can be found at: -+// https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md. -+// -+// All APIs in this package are experimental. -+package backoff -+ -+import "time" -+ -+// Config defines the configuration options for backoff. -+type Config struct { -+ // BaseDelay is the amount of time to backoff after the first failure. -+ BaseDelay time.Duration -+ // Multiplier is the factor with which to multiply backoffs after a -+ // failed retry. Should ideally be greater than 1. -+ Multiplier float64 -+ // Jitter is the factor with which backoffs are randomized. -+ Jitter float64 -+ // MaxDelay is the upper bound of backoff delay. -+ MaxDelay time.Duration -+} -+ -+// DefaultConfig is a backoff configuration with the default values specfied -+// at https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md. -+// -+// This should be useful for callers who want to configure backoff with -+// non-default values only for a subset of the options. -+var DefaultConfig = Config{ -+ BaseDelay: 1.0 * time.Second, -+ Multiplier: 1.6, -+ Jitter: 0.2, -+ MaxDelay: 120 * time.Second, -+} -diff --git a/vendor/google.golang.org/grpc/balancer/balancer.go b/vendor/google.golang.org/grpc/balancer/balancer.go -new file mode 100755 -index 0000000..8f00523 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/balancer/balancer.go -@@ -0,0 +1,404 @@ -+/* -+ * -+ * 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 balancer defines APIs for load balancing in gRPC. -+// All APIs in this package are experimental. -+package balancer -+ -+import ( -+ "context" -+ "encoding/json" -+ "errors" -+ "net" -+ "strings" -+ -+ "google.golang.org/grpc/channelz" -+ "google.golang.org/grpc/connectivity" -+ "google.golang.org/grpc/credentials" -+ "google.golang.org/grpc/internal" -+ "google.golang.org/grpc/metadata" -+ "google.golang.org/grpc/resolver" -+ "google.golang.org/grpc/serviceconfig" -+) -+ -+var ( -+ // m is a map from name to balancer builder. -+ m = make(map[string]Builder) -+) -+ -+// Register registers the balancer builder to the balancer map. b.Name -+// (lowercased) will be used as the name registered with this builder. If the -+// Builder implements ConfigParser, ParseConfig will be called when new service -+// configs are received by the resolver, and the result will be provided to the -+// Balancer in UpdateClientConnState. -+// -+// NOTE: this function must only be called during initialization time (i.e. in -+// an init() function), and is not thread-safe. If multiple Balancers are -+// registered with the same name, the one registered last will take effect. -+func Register(b Builder) { -+ m[strings.ToLower(b.Name())] = b -+} -+ -+// unregisterForTesting deletes the balancer with the given name from the -+// balancer map. -+// -+// This function is not thread-safe. -+func unregisterForTesting(name string) { -+ delete(m, name) -+} -+ -+func init() { -+ internal.BalancerUnregister = unregisterForTesting -+} -+ -+// Get returns the resolver builder registered with the given name. -+// Note that the compare is done in a case-insensitive fashion. -+// If no builder is register with the name, nil will be returned. -+func Get(name string) Builder { -+ if b, ok := m[strings.ToLower(name)]; ok { -+ return b -+ } -+ return nil -+} -+ -+// A SubConn represents a single connection to a gRPC backend service. -+// -+// Each SubConn contains a list of addresses. -+// -+// All SubConns start in IDLE, and will not try to connect. To trigger the -+// connecting, Balancers must call Connect. If a connection re-enters IDLE, -+// Balancers must call Connect again to trigger a new connection attempt. -+// -+// gRPC will try to connect to the addresses in sequence, and stop trying the -+// remainder once the first connection is successful. If an attempt to connect -+// to all addresses encounters an error, the SubConn will enter -+// TRANSIENT_FAILURE for a backoff period, and then transition to IDLE. -+// -+// Once established, if a connection is lost, the SubConn will transition -+// directly to IDLE. -+// -+// This interface is to be implemented by gRPC. Users should not need their own -+// implementation of this interface. For situations like testing, any -+// implementations should embed this interface. This allows gRPC to add new -+// methods to this interface. -+type SubConn interface { -+ // UpdateAddresses updates the addresses used in this SubConn. -+ // gRPC checks if currently-connected address is still in the new list. -+ // If it's in the list, the connection will be kept. -+ // If it's not in the list, the connection will gracefully closed, and -+ // a new connection will be created. -+ // -+ // This will trigger a state transition for the SubConn. -+ // -+ // Deprecated: This method is now part of the ClientConn interface and will -+ // eventually be removed from here. -+ UpdateAddresses([]resolver.Address) -+ // Connect starts the connecting for this SubConn. -+ Connect() -+ // GetOrBuildProducer returns a reference to the existing Producer for this -+ // ProducerBuilder in this SubConn, or, if one does not currently exist, -+ // creates a new one and returns it. Returns a close function which must -+ // be called when the Producer is no longer needed. -+ GetOrBuildProducer(ProducerBuilder) (p Producer, close func()) -+} -+ -+// NewSubConnOptions contains options to create new SubConn. -+type NewSubConnOptions struct { -+ // CredsBundle is the credentials bundle that will be used in the created -+ // SubConn. If it's nil, the original creds from grpc DialOptions will be -+ // used. -+ // -+ // Deprecated: Use the Attributes field in resolver.Address to pass -+ // arbitrary data to the credential handshaker. -+ CredsBundle credentials.Bundle -+ // HealthCheckEnabled indicates whether health check service should be -+ // enabled on this SubConn -+ HealthCheckEnabled bool -+} -+ -+// State contains the balancer's state relevant to the gRPC ClientConn. -+type State struct { -+ // State contains the connectivity state of the balancer, which is used to -+ // determine the state of the ClientConn. -+ ConnectivityState connectivity.State -+ // Picker is used to choose connections (SubConns) for RPCs. -+ Picker Picker -+} -+ -+// ClientConn represents a gRPC ClientConn. -+// -+// This interface is to be implemented by gRPC. Users should not need a -+// brand new implementation of this interface. For the situations like -+// testing, the new implementation should embed this interface. This allows -+// gRPC to add new methods to this interface. -+type ClientConn interface { -+ // NewSubConn is called by balancer to create a new SubConn. -+ // It doesn't block and wait for the connections to be established. -+ // Behaviors of the SubConn can be controlled by options. -+ NewSubConn([]resolver.Address, NewSubConnOptions) (SubConn, error) -+ // RemoveSubConn removes the SubConn from ClientConn. -+ // The SubConn will be shutdown. -+ RemoveSubConn(SubConn) -+ // UpdateAddresses updates the addresses used in the passed in SubConn. -+ // gRPC checks if the currently connected address is still in the new list. -+ // If so, the connection will be kept. Else, the connection will be -+ // gracefully closed, and a new connection will be created. -+ // -+ // This will trigger a state transition for the SubConn. -+ UpdateAddresses(SubConn, []resolver.Address) -+ -+ // UpdateState notifies gRPC that the balancer's internal state has -+ // changed. -+ // -+ // gRPC will update the connectivity state of the ClientConn, and will call -+ // Pick on the new Picker to pick new SubConns. -+ UpdateState(State) -+ -+ // ResolveNow is called by balancer to notify gRPC to do a name resolving. -+ ResolveNow(resolver.ResolveNowOptions) -+ -+ // Target returns the dial target for this ClientConn. -+ // -+ // Deprecated: Use the Target field in the BuildOptions instead. -+ Target() string -+} -+ -+// BuildOptions contains additional information for Build. -+type BuildOptions struct { -+ // DialCreds is the transport credentials to use when communicating with a -+ // remote load balancer server. Balancer implementations which do not -+ // communicate with a remote load balancer server can ignore this field. -+ DialCreds credentials.TransportCredentials -+ // CredsBundle is the credentials bundle to use when communicating with a -+ // remote load balancer server. Balancer implementations which do not -+ // communicate with a remote load balancer server can ignore this field. -+ CredsBundle credentials.Bundle -+ // Dialer is the custom dialer to use when communicating with a remote load -+ // balancer server. Balancer implementations which do not communicate with a -+ // remote load balancer server can ignore this field. -+ Dialer func(context.Context, string) (net.Conn, error) -+ // Authority is the server name to use as part of the authentication -+ // handshake when communicating with a remote load balancer server. Balancer -+ // implementations which do not communicate with a remote load balancer -+ // server can ignore this field. -+ Authority string -+ // ChannelzParentID is the parent ClientConn's channelz ID. -+ ChannelzParentID *channelz.Identifier -+ // CustomUserAgent is the custom user agent set on the parent ClientConn. -+ // The balancer should set the same custom user agent if it creates a -+ // ClientConn. -+ CustomUserAgent string -+ // Target contains the parsed address info of the dial target. It is the -+ // same resolver.Target as passed to the resolver. See the documentation for -+ // the resolver.Target type for details about what it contains. -+ Target resolver.Target -+} -+ -+// Builder creates a balancer. -+type Builder interface { -+ // Build creates a new balancer with the ClientConn. -+ Build(cc ClientConn, opts BuildOptions) Balancer -+ // Name returns the name of balancers built by this builder. -+ // It will be used to pick balancers (for example in service config). -+ Name() string -+} -+ -+// ConfigParser parses load balancer configs. -+type ConfigParser interface { -+ // ParseConfig parses the JSON load balancer config provided into an -+ // internal form or returns an error if the config is invalid. For future -+ // compatibility reasons, unknown fields in the config should be ignored. -+ ParseConfig(LoadBalancingConfigJSON json.RawMessage) (serviceconfig.LoadBalancingConfig, error) -+} -+ -+// PickInfo contains additional information for the Pick operation. -+type PickInfo struct { -+ // FullMethodName is the method name that NewClientStream() is called -+ // with. The canonical format is /service/Method. -+ FullMethodName string -+ // Ctx is the RPC's context, and may contain relevant RPC-level information -+ // like the outgoing header metadata. -+ Ctx context.Context -+} -+ -+// DoneInfo contains additional information for done. -+type DoneInfo struct { -+ // Err is the rpc error the RPC finished with. It could be nil. -+ Err error -+ // Trailer contains the metadata from the RPC's trailer, if present. -+ Trailer metadata.MD -+ // BytesSent indicates if any bytes have been sent to the server. -+ BytesSent bool -+ // BytesReceived indicates if any byte has been received from the server. -+ BytesReceived bool -+ // ServerLoad is the load received from server. It's usually sent as part of -+ // trailing metadata. -+ // -+ // The only supported type now is *orca_v3.LoadReport. -+ ServerLoad interface{} -+} -+ -+var ( -+ // ErrNoSubConnAvailable indicates no SubConn is available for pick(). -+ // gRPC will block the RPC until a new picker is available via UpdateState(). -+ ErrNoSubConnAvailable = errors.New("no SubConn is available") -+ // ErrTransientFailure indicates all SubConns are in TransientFailure. -+ // WaitForReady RPCs will block, non-WaitForReady RPCs will fail. -+ // -+ // Deprecated: return an appropriate error based on the last resolution or -+ // connection attempt instead. The behavior is the same for any non-gRPC -+ // status error. -+ ErrTransientFailure = errors.New("all SubConns are in TransientFailure") -+) -+ -+// PickResult contains information related to a connection chosen for an RPC. -+type PickResult struct { -+ // SubConn is the connection to use for this pick, if its state is Ready. -+ // If the state is not Ready, gRPC will block the RPC until a new Picker is -+ // provided by the balancer (using ClientConn.UpdateState). The SubConn -+ // must be one returned by ClientConn.NewSubConn. -+ SubConn SubConn -+ -+ // Done is called when the RPC is completed. If the SubConn is not ready, -+ // this will be called with a nil parameter. If the SubConn is not a valid -+ // type, Done may not be called. May be nil if the balancer does not wish -+ // to be notified when the RPC completes. -+ Done func(DoneInfo) -+ -+ // Metadata provides a way for LB policies to inject arbitrary per-call -+ // metadata. Any metadata returned here will be merged with existing -+ // metadata added by the client application. -+ // -+ // LB policies with child policies are responsible for propagating metadata -+ // injected by their children to the ClientConn, as part of Pick(). -+ Metadata metadata.MD -+} -+ -+// TransientFailureError returns e. It exists for backward compatibility and -+// will be deleted soon. -+// -+// Deprecated: no longer necessary, picker errors are treated this way by -+// default. -+func TransientFailureError(e error) error { return e } -+ -+// Picker is used by gRPC to pick a SubConn to send an RPC. -+// Balancer is expected to generate a new picker from its snapshot every time its -+// internal state has changed. -+// -+// The pickers used by gRPC can be updated by ClientConn.UpdateState(). -+type Picker interface { -+ // Pick returns the connection to use for this RPC and related information. -+ // -+ // Pick should not block. If the balancer needs to do I/O or any blocking -+ // or time-consuming work to service this call, it should return -+ // ErrNoSubConnAvailable, and the Pick call will be repeated by gRPC when -+ // the Picker is updated (using ClientConn.UpdateState). -+ // -+ // If an error is returned: -+ // -+ // - If the error is ErrNoSubConnAvailable, gRPC will block until a new -+ // Picker is provided by the balancer (using ClientConn.UpdateState). -+ // -+ // - If the error is a status error (implemented by the grpc/status -+ // package), gRPC will terminate the RPC with the code and message -+ // provided. -+ // -+ // - For all other errors, wait for ready RPCs will wait, but non-wait for -+ // ready RPCs will be terminated with this error's Error() string and -+ // status code Unavailable. -+ Pick(info PickInfo) (PickResult, error) -+} -+ -+// Balancer takes input from gRPC, manages SubConns, and collects and aggregates -+// the connectivity states. -+// -+// It also generates and updates the Picker used by gRPC to pick SubConns for RPCs. -+// -+// UpdateClientConnState, ResolverError, UpdateSubConnState, and Close are -+// guaranteed to be called synchronously from the same goroutine. There's no -+// guarantee on picker.Pick, it may be called anytime. -+type Balancer interface { -+ // UpdateClientConnState is called by gRPC when the state of the ClientConn -+ // changes. If the error returned is ErrBadResolverState, the ClientConn -+ // will begin calling ResolveNow on the active name resolver with -+ // exponential backoff until a subsequent call to UpdateClientConnState -+ // returns a nil error. Any other errors are currently ignored. -+ UpdateClientConnState(ClientConnState) error -+ // ResolverError is called by gRPC when the name resolver reports an error. -+ ResolverError(error) -+ // UpdateSubConnState is called by gRPC when the state of a SubConn -+ // changes. -+ UpdateSubConnState(SubConn, SubConnState) -+ // Close closes the balancer. The balancer is not required to call -+ // ClientConn.RemoveSubConn for its existing SubConns. -+ Close() -+} -+ -+// ExitIdler is an optional interface for balancers to implement. If -+// implemented, ExitIdle will be called when ClientConn.Connect is called, if -+// the ClientConn is idle. If unimplemented, ClientConn.Connect will cause -+// all SubConns to connect. -+// -+// Notice: it will be required for all balancers to implement this in a future -+// release. -+type ExitIdler interface { -+ // ExitIdle instructs the LB policy to reconnect to backends / exit the -+ // IDLE state, if appropriate and possible. Note that SubConns that enter -+ // the IDLE state will not reconnect until SubConn.Connect is called. -+ ExitIdle() -+} -+ -+// SubConnState describes the state of a SubConn. -+type SubConnState struct { -+ // ConnectivityState is the connectivity state of the SubConn. -+ ConnectivityState connectivity.State -+ // ConnectionError is set if the ConnectivityState is TransientFailure, -+ // describing the reason the SubConn failed. Otherwise, it is nil. -+ ConnectionError error -+} -+ -+// ClientConnState describes the state of a ClientConn relevant to the -+// balancer. -+type ClientConnState struct { -+ ResolverState resolver.State -+ // The parsed load balancing configuration returned by the builder's -+ // ParseConfig method, if implemented. -+ BalancerConfig serviceconfig.LoadBalancingConfig -+} -+ -+// ErrBadResolverState may be returned by UpdateClientConnState to indicate a -+// problem with the provided name resolver data. -+var ErrBadResolverState = errors.New("bad resolver state") -+ -+// A ProducerBuilder is a simple constructor for a Producer. It is used by the -+// SubConn to create producers when needed. -+type ProducerBuilder interface { -+ // Build creates a Producer. The first parameter is always a -+ // grpc.ClientConnInterface (a type to allow creating RPCs/streams on the -+ // associated SubConn), but is declared as interface{} to avoid a -+ // dependency cycle. Should also return a close function that will be -+ // called when all references to the Producer have been given up. -+ Build(grpcClientConnInterface interface{}) (p Producer, close func()) -+} -+ -+// A Producer is a type shared among potentially many consumers. It is -+// associated with a SubConn, and an implementation will typically contain -+// other methods to provide additional functionality, e.g. configuration or -+// subscription registration. -+type Producer interface { -+} -diff --git a/vendor/google.golang.org/grpc/balancer/base/balancer.go b/vendor/google.golang.org/grpc/balancer/base/balancer.go -new file mode 100755 -index 0000000..3929c26 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/balancer/base/balancer.go -@@ -0,0 +1,254 @@ -+/* -+ * -+ * 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 base -+ -+import ( -+ "errors" -+ "fmt" -+ -+ "google.golang.org/grpc/balancer" -+ "google.golang.org/grpc/connectivity" -+ "google.golang.org/grpc/grpclog" -+ "google.golang.org/grpc/resolver" -+) -+ -+var logger = grpclog.Component("balancer") -+ -+type baseBuilder struct { -+ name string -+ pickerBuilder PickerBuilder -+ config Config -+} -+ -+func (bb *baseBuilder) Build(cc balancer.ClientConn, opt balancer.BuildOptions) balancer.Balancer { -+ bal := &baseBalancer{ -+ cc: cc, -+ pickerBuilder: bb.pickerBuilder, -+ -+ subConns: resolver.NewAddressMap(), -+ scStates: make(map[balancer.SubConn]connectivity.State), -+ csEvltr: &balancer.ConnectivityStateEvaluator{}, -+ config: bb.config, -+ state: connectivity.Connecting, -+ } -+ // Initialize picker to a picker that always returns -+ // ErrNoSubConnAvailable, because when state of a SubConn changes, we -+ // may call UpdateState with this picker. -+ bal.picker = NewErrPicker(balancer.ErrNoSubConnAvailable) -+ return bal -+} -+ -+func (bb *baseBuilder) Name() string { -+ return bb.name -+} -+ -+type baseBalancer struct { -+ cc balancer.ClientConn -+ pickerBuilder PickerBuilder -+ -+ csEvltr *balancer.ConnectivityStateEvaluator -+ state connectivity.State -+ -+ subConns *resolver.AddressMap -+ scStates map[balancer.SubConn]connectivity.State -+ picker balancer.Picker -+ config Config -+ -+ resolverErr error // the last error reported by the resolver; cleared on successful resolution -+ connErr error // the last connection error; cleared upon leaving TransientFailure -+} -+ -+func (b *baseBalancer) ResolverError(err error) { -+ b.resolverErr = err -+ if b.subConns.Len() == 0 { -+ b.state = connectivity.TransientFailure -+ } -+ -+ if b.state != connectivity.TransientFailure { -+ // The picker will not change since the balancer does not currently -+ // report an error. -+ return -+ } -+ b.regeneratePicker() -+ b.cc.UpdateState(balancer.State{ -+ ConnectivityState: b.state, -+ Picker: b.picker, -+ }) -+} -+ -+func (b *baseBalancer) UpdateClientConnState(s balancer.ClientConnState) error { -+ // TODO: handle s.ResolverState.ServiceConfig? -+ if logger.V(2) { -+ logger.Info("base.baseBalancer: got new ClientConn state: ", s) -+ } -+ // Successful resolution; clear resolver error and ensure we return nil. -+ b.resolverErr = nil -+ // addrsSet is the set converted from addrs, it's used for quick lookup of an address. -+ addrsSet := resolver.NewAddressMap() -+ for _, a := range s.ResolverState.Addresses { -+ addrsSet.Set(a, nil) -+ if _, ok := b.subConns.Get(a); !ok { -+ // a is a new address (not existing in b.subConns). -+ sc, err := b.cc.NewSubConn([]resolver.Address{a}, balancer.NewSubConnOptions{HealthCheckEnabled: b.config.HealthCheck}) -+ if err != nil { -+ logger.Warningf("base.baseBalancer: failed to create new SubConn: %v", err) -+ continue -+ } -+ b.subConns.Set(a, sc) -+ b.scStates[sc] = connectivity.Idle -+ b.csEvltr.RecordTransition(connectivity.Shutdown, connectivity.Idle) -+ sc.Connect() -+ } -+ } -+ for _, a := range b.subConns.Keys() { -+ sci, _ := b.subConns.Get(a) -+ sc := sci.(balancer.SubConn) -+ // a was removed by resolver. -+ if _, ok := addrsSet.Get(a); !ok { -+ b.cc.RemoveSubConn(sc) -+ b.subConns.Delete(a) -+ // Keep the state of this sc in b.scStates until sc's state becomes Shutdown. -+ // The entry will be deleted in UpdateSubConnState. -+ } -+ } -+ // If resolver state contains no addresses, return an error so ClientConn -+ // will trigger re-resolve. Also records this as an resolver error, so when -+ // the overall state turns transient failure, the error message will have -+ // the zero address information. -+ if len(s.ResolverState.Addresses) == 0 { -+ b.ResolverError(errors.New("produced zero addresses")) -+ return balancer.ErrBadResolverState -+ } -+ -+ b.regeneratePicker() -+ b.cc.UpdateState(balancer.State{ConnectivityState: b.state, Picker: b.picker}) -+ return nil -+} -+ -+// mergeErrors builds an error from the last connection error and the last -+// resolver error. Must only be called if b.state is TransientFailure. -+func (b *baseBalancer) mergeErrors() error { -+ // connErr must always be non-nil unless there are no SubConns, in which -+ // case resolverErr must be non-nil. -+ if b.connErr == nil { -+ return fmt.Errorf("last resolver error: %v", b.resolverErr) -+ } -+ if b.resolverErr == nil { -+ return fmt.Errorf("last connection error: %v", b.connErr) -+ } -+ return fmt.Errorf("last connection error: %v; last resolver error: %v", b.connErr, b.resolverErr) -+} -+ -+// regeneratePicker takes a snapshot of the balancer, and generates a picker -+// from it. The picker is -+// - errPicker if the balancer is in TransientFailure, -+// - built by the pickerBuilder with all READY SubConns otherwise. -+func (b *baseBalancer) regeneratePicker() { -+ if b.state == connectivity.TransientFailure { -+ b.picker = NewErrPicker(b.mergeErrors()) -+ return -+ } -+ readySCs := make(map[balancer.SubConn]SubConnInfo) -+ -+ // Filter out all ready SCs from full subConn map. -+ for _, addr := range b.subConns.Keys() { -+ sci, _ := b.subConns.Get(addr) -+ sc := sci.(balancer.SubConn) -+ if st, ok := b.scStates[sc]; ok && st == connectivity.Ready { -+ readySCs[sc] = SubConnInfo{Address: addr} -+ } -+ } -+ b.picker = b.pickerBuilder.Build(PickerBuildInfo{ReadySCs: readySCs}) -+} -+ -+func (b *baseBalancer) UpdateSubConnState(sc balancer.SubConn, state balancer.SubConnState) { -+ s := state.ConnectivityState -+ if logger.V(2) { -+ logger.Infof("base.baseBalancer: handle SubConn state change: %p, %v", sc, s) -+ } -+ oldS, ok := b.scStates[sc] -+ if !ok { -+ if logger.V(2) { -+ logger.Infof("base.baseBalancer: got state changes for an unknown SubConn: %p, %v", sc, s) -+ } -+ return -+ } -+ if oldS == connectivity.TransientFailure && -+ (s == connectivity.Connecting || s == connectivity.Idle) { -+ // Once a subconn enters TRANSIENT_FAILURE, ignore subsequent IDLE or -+ // CONNECTING transitions to prevent the aggregated state from being -+ // always CONNECTING when many backends exist but are all down. -+ if s == connectivity.Idle { -+ sc.Connect() -+ } -+ return -+ } -+ b.scStates[sc] = s -+ switch s { -+ case connectivity.Idle: -+ sc.Connect() -+ case connectivity.Shutdown: -+ // When an address was removed by resolver, b called RemoveSubConn but -+ // kept the sc's state in scStates. Remove state for this sc here. -+ delete(b.scStates, sc) -+ case connectivity.TransientFailure: -+ // Save error to be reported via picker. -+ b.connErr = state.ConnectionError -+ } -+ -+ b.state = b.csEvltr.RecordTransition(oldS, s) -+ -+ // Regenerate picker when one of the following happens: -+ // - this sc entered or left ready -+ // - the aggregated state of balancer is TransientFailure -+ // (may need to update error message) -+ if (s == connectivity.Ready) != (oldS == connectivity.Ready) || -+ b.state == connectivity.TransientFailure { -+ b.regeneratePicker() -+ } -+ b.cc.UpdateState(balancer.State{ConnectivityState: b.state, Picker: b.picker}) -+} -+ -+// Close is a nop because base balancer doesn't have internal state to clean up, -+// and it doesn't need to call RemoveSubConn for the SubConns. -+func (b *baseBalancer) Close() { -+} -+ -+// ExitIdle is a nop because the base balancer attempts to stay connected to -+// all SubConns at all times. -+func (b *baseBalancer) ExitIdle() { -+} -+ -+// NewErrPicker returns a Picker that always returns err on Pick(). -+func NewErrPicker(err error) balancer.Picker { -+ return &errPicker{err: err} -+} -+ -+// NewErrPickerV2 is temporarily defined for backward compatibility reasons. -+// -+// Deprecated: use NewErrPicker instead. -+var NewErrPickerV2 = NewErrPicker -+ -+type errPicker struct { -+ err error // Pick() always returns this err. -+} -+ -+func (p *errPicker) Pick(info balancer.PickInfo) (balancer.PickResult, error) { -+ return balancer.PickResult{}, p.err -+} -diff --git a/vendor/google.golang.org/grpc/balancer/base/base.go b/vendor/google.golang.org/grpc/balancer/base/base.go -new file mode 100755 -index 0000000..e31d76e ---- /dev/null -+++ b/vendor/google.golang.org/grpc/balancer/base/base.go -@@ -0,0 +1,71 @@ -+/* -+ * -+ * 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 base defines a balancer base that can be used to build balancers with -+// different picking algorithms. -+// -+// The base balancer creates a new SubConn for each resolved address. The -+// provided picker will only be notified about READY SubConns. -+// -+// This package is the base of round_robin balancer, its purpose is to be used -+// to build round_robin like balancers with complex picking algorithms. -+// Balancers with more complicated logic should try to implement a balancer -+// builder from scratch. -+// -+// All APIs in this package are experimental. -+package base -+ -+import ( -+ "google.golang.org/grpc/balancer" -+ "google.golang.org/grpc/resolver" -+) -+ -+// PickerBuilder creates balancer.Picker. -+type PickerBuilder interface { -+ // Build returns a picker that will be used by gRPC to pick a SubConn. -+ Build(info PickerBuildInfo) balancer.Picker -+} -+ -+// PickerBuildInfo contains information needed by the picker builder to -+// construct a picker. -+type PickerBuildInfo struct { -+ // ReadySCs is a map from all ready SubConns to the Addresses used to -+ // create them. -+ ReadySCs map[balancer.SubConn]SubConnInfo -+} -+ -+// SubConnInfo contains information about a SubConn created by the base -+// balancer. -+type SubConnInfo struct { -+ Address resolver.Address // the address used to create this SubConn -+} -+ -+// Config contains the config info about the base balancer builder. -+type Config struct { -+ // HealthCheck indicates whether health checking should be enabled for this specific balancer. -+ HealthCheck bool -+} -+ -+// NewBalancerBuilder returns a base balancer builder configured by the provided config. -+func NewBalancerBuilder(name string, pb PickerBuilder, config Config) balancer.Builder { -+ return &baseBuilder{ -+ name: name, -+ pickerBuilder: pb, -+ config: config, -+ } -+} -diff --git a/vendor/google.golang.org/grpc/balancer/conn_state_evaluator.go b/vendor/google.golang.org/grpc/balancer/conn_state_evaluator.go -new file mode 100755 -index 0000000..c334135 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/balancer/conn_state_evaluator.go -@@ -0,0 +1,74 @@ -+/* -+ * -+ * Copyright 2022 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 balancer -+ -+import "google.golang.org/grpc/connectivity" -+ -+// ConnectivityStateEvaluator takes the connectivity states of multiple SubConns -+// and returns one aggregated connectivity state. -+// -+// It's not thread safe. -+type ConnectivityStateEvaluator struct { -+ numReady uint64 // Number of addrConns in ready state. -+ numConnecting uint64 // Number of addrConns in connecting state. -+ numTransientFailure uint64 // Number of addrConns in transient failure state. -+ numIdle uint64 // Number of addrConns in idle state. -+} -+ -+// RecordTransition records state change happening in subConn and based on that -+// it evaluates what aggregated state should be. -+// -+// - If at least one SubConn in Ready, the aggregated state is Ready; -+// - Else if at least one SubConn in Connecting, the aggregated state is Connecting; -+// - Else if at least one SubConn is Idle, the aggregated state is Idle; -+// - Else if at least one SubConn is TransientFailure (or there are no SubConns), the aggregated state is Transient Failure. -+// -+// Shutdown is not considered. -+func (cse *ConnectivityStateEvaluator) RecordTransition(oldState, newState connectivity.State) connectivity.State { -+ // Update counters. -+ for idx, state := range []connectivity.State{oldState, newState} { -+ updateVal := 2*uint64(idx) - 1 // -1 for oldState and +1 for new. -+ switch state { -+ case connectivity.Ready: -+ cse.numReady += updateVal -+ case connectivity.Connecting: -+ cse.numConnecting += updateVal -+ case connectivity.TransientFailure: -+ cse.numTransientFailure += updateVal -+ case connectivity.Idle: -+ cse.numIdle += updateVal -+ } -+ } -+ return cse.CurrentState() -+} -+ -+// CurrentState returns the current aggregate conn state by evaluating the counters -+func (cse *ConnectivityStateEvaluator) CurrentState() connectivity.State { -+ // Evaluate. -+ if cse.numReady > 0 { -+ return connectivity.Ready -+ } -+ if cse.numConnecting > 0 { -+ return connectivity.Connecting -+ } -+ if cse.numIdle > 0 { -+ return connectivity.Idle -+ } -+ return connectivity.TransientFailure -+} -diff --git a/vendor/google.golang.org/grpc/balancer/grpclb/state/state.go b/vendor/google.golang.org/grpc/balancer/grpclb/state/state.go -new file mode 100755 -index 0000000..4ecfa1c ---- /dev/null -+++ b/vendor/google.golang.org/grpc/balancer/grpclb/state/state.go -@@ -0,0 +1,51 @@ -+/* -+ * -+ * Copyright 2020 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 state declares grpclb types to be set by resolvers wishing to pass -+// information to grpclb via resolver.State Attributes. -+package state -+ -+import ( -+ "google.golang.org/grpc/resolver" -+) -+ -+// keyType is the key to use for storing State in Attributes. -+type keyType string -+ -+const key = keyType("grpc.grpclb.state") -+ -+// State contains gRPCLB-relevant data passed from the name resolver. -+type State struct { -+ // BalancerAddresses contains the remote load balancer address(es). If -+ // set, overrides any resolver-provided addresses with Type of GRPCLB. -+ BalancerAddresses []resolver.Address -+} -+ -+// Set returns a copy of the provided state with attributes containing s. s's -+// data should not be mutated after calling Set. -+func Set(state resolver.State, s *State) resolver.State { -+ state.Attributes = state.Attributes.WithValue(key, s) -+ return state -+} -+ -+// Get returns the grpclb State in the resolver.State, or nil if not present. -+// The returned data should not be mutated. -+func Get(state resolver.State) *State { -+ s, _ := state.Attributes.Value(key).(*State) -+ return s -+} -diff --git a/vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go b/vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go -new file mode 100755 -index 0000000..f7031ad ---- /dev/null -+++ b/vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go -@@ -0,0 +1,81 @@ -+/* -+ * -+ * 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 defines a roundrobin balancer. Roundrobin balancer is -+// installed as one of the default balancers in gRPC, users don't need to -+// explicitly install this balancer. -+package roundrobin -+ -+import ( -+ "sync/atomic" -+ -+ "google.golang.org/grpc/balancer" -+ "google.golang.org/grpc/balancer/base" -+ "google.golang.org/grpc/grpclog" -+ "google.golang.org/grpc/internal/grpcrand" -+) -+ -+// Name is the name of round_robin balancer. -+const Name = "round_robin" -+ -+var logger = grpclog.Component("roundrobin") -+ -+// newBuilder creates a new roundrobin balancer builder. -+func newBuilder() balancer.Builder { -+ return base.NewBalancerBuilder(Name, &rrPickerBuilder{}, base.Config{HealthCheck: true}) -+} -+ -+func init() { -+ balancer.Register(newBuilder()) -+} -+ -+type rrPickerBuilder struct{} -+ -+func (*rrPickerBuilder) Build(info base.PickerBuildInfo) balancer.Picker { -+ logger.Infof("roundrobinPicker: Build called with info: %v", info) -+ if len(info.ReadySCs) == 0 { -+ return base.NewErrPicker(balancer.ErrNoSubConnAvailable) -+ } -+ scs := make([]balancer.SubConn, 0, len(info.ReadySCs)) -+ for sc := range info.ReadySCs { -+ scs = append(scs, sc) -+ } -+ return &rrPicker{ -+ subConns: scs, -+ // Start at a random index, as the same RR balancer rebuilds a new -+ // picker when SubConn states change, and we don't want to apply excess -+ // load to the first server in the list. -+ next: uint32(grpcrand.Intn(len(scs))), -+ } -+} -+ -+type rrPicker struct { -+ // subConns is the snapshot of the roundrobin balancer when this picker was -+ // created. The slice is immutable. Each Get() will do a round robin -+ // selection from it and return the selected SubConn. -+ subConns []balancer.SubConn -+ next uint32 -+} -+ -+func (p *rrPicker) Pick(balancer.PickInfo) (balancer.PickResult, error) { -+ subConnsLen := uint32(len(p.subConns)) -+ nextIndex := atomic.AddUint32(&p.next, 1) -+ -+ sc := p.subConns[nextIndex%subConnsLen] -+ return balancer.PickResult{SubConn: sc}, nil -+} -diff --git a/vendor/google.golang.org/grpc/balancer_conn_wrappers.go b/vendor/google.golang.org/grpc/balancer_conn_wrappers.go -new file mode 100755 -index 0000000..04b9ad4 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/balancer_conn_wrappers.go -@@ -0,0 +1,459 @@ -+/* -+ * -+ * 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 ( -+ "context" -+ "fmt" -+ "strings" -+ "sync" -+ -+ "google.golang.org/grpc/balancer" -+ "google.golang.org/grpc/connectivity" -+ "google.golang.org/grpc/internal/balancer/gracefulswitch" -+ "google.golang.org/grpc/internal/channelz" -+ "google.golang.org/grpc/internal/grpcsync" -+ "google.golang.org/grpc/resolver" -+) -+ -+type ccbMode int -+ -+const ( -+ ccbModeActive = iota -+ ccbModeIdle -+ ccbModeClosed -+ ccbModeExitingIdle -+) -+ -+// ccBalancerWrapper sits between the ClientConn and the Balancer. -+// -+// ccBalancerWrapper implements methods corresponding to the ones on the -+// balancer.Balancer interface. The ClientConn is free to call these methods -+// concurrently and the ccBalancerWrapper ensures that calls from the ClientConn -+// to the Balancer happen synchronously and in order. -+// -+// ccBalancerWrapper also implements the balancer.ClientConn interface and is -+// passed to the Balancer implementations. It invokes unexported methods on the -+// ClientConn to handle these calls from the Balancer. -+// -+// It uses the gracefulswitch.Balancer internally to ensure that balancer -+// switches happen in a graceful manner. -+type ccBalancerWrapper struct { -+ // The following fields are initialized when the wrapper is created and are -+ // read-only afterwards, and therefore can be accessed without a mutex. -+ cc *ClientConn -+ opts balancer.BuildOptions -+ -+ // Outgoing (gRPC --> balancer) calls are guaranteed to execute in a -+ // mutually exclusive manner as they are scheduled in the serializer. Fields -+ // accessed *only* in these serializer callbacks, can therefore be accessed -+ // without a mutex. -+ balancer *gracefulswitch.Balancer -+ curBalancerName string -+ -+ // mu guards access to the below fields. Access to the serializer and its -+ // cancel function needs to be mutex protected because they are overwritten -+ // when the wrapper exits idle mode. -+ mu sync.Mutex -+ serializer *grpcsync.CallbackSerializer // To serialize all outoing calls. -+ serializerCancel context.CancelFunc // To close the seralizer at close/enterIdle time. -+ mode ccbMode // Tracks the current mode of the wrapper. -+} -+ -+// newCCBalancerWrapper creates a new balancer wrapper. The underlying balancer -+// is not created until the switchTo() method is invoked. -+func newCCBalancerWrapper(cc *ClientConn, bopts balancer.BuildOptions) *ccBalancerWrapper { -+ ctx, cancel := context.WithCancel(context.Background()) -+ ccb := &ccBalancerWrapper{ -+ cc: cc, -+ opts: bopts, -+ serializer: grpcsync.NewCallbackSerializer(ctx), -+ serializerCancel: cancel, -+ } -+ ccb.balancer = gracefulswitch.NewBalancer(ccb, bopts) -+ return ccb -+} -+ -+// updateClientConnState is invoked by grpc to push a ClientConnState update to -+// the underlying balancer. -+func (ccb *ccBalancerWrapper) updateClientConnState(ccs *balancer.ClientConnState) error { -+ ccb.mu.Lock() -+ errCh := make(chan error, 1) -+ // Here and everywhere else where Schedule() is called, it is done with the -+ // lock held. But the lock guards only the scheduling part. The actual -+ // callback is called asynchronously without the lock being held. -+ ok := ccb.serializer.Schedule(func(_ context.Context) { -+ // If the addresses specified in the update contain addresses of type -+ // "grpclb" and the selected LB policy is not "grpclb", these addresses -+ // will be filtered out and ccs will be modified with the updated -+ // address list. -+ if ccb.curBalancerName != grpclbName { -+ var addrs []resolver.Address -+ for _, addr := range ccs.ResolverState.Addresses { -+ if addr.Type == resolver.GRPCLB { -+ continue -+ } -+ addrs = append(addrs, addr) -+ } -+ ccs.ResolverState.Addresses = addrs -+ } -+ errCh <- ccb.balancer.UpdateClientConnState(*ccs) -+ }) -+ if !ok { -+ // If we are unable to schedule a function with the serializer, it -+ // indicates that it has been closed. A serializer is only closed when -+ // the wrapper is closed or is in idle. -+ ccb.mu.Unlock() -+ return fmt.Errorf("grpc: cannot send state update to a closed or idle balancer") -+ } -+ ccb.mu.Unlock() -+ -+ // We get here only if the above call to Schedule succeeds, in which case it -+ // is guaranteed that the scheduled function will run. Therefore it is safe -+ // to block on this channel. -+ err := <-errCh -+ if logger.V(2) && err != nil { -+ logger.Infof("error from balancer.UpdateClientConnState: %v", err) -+ } -+ return err -+} -+ -+// updateSubConnState is invoked by grpc to push a subConn state update to the -+// underlying balancer. -+func (ccb *ccBalancerWrapper) updateSubConnState(sc balancer.SubConn, s connectivity.State, err error) { -+ ccb.mu.Lock() -+ ccb.serializer.Schedule(func(_ context.Context) { -+ ccb.balancer.UpdateSubConnState(sc, balancer.SubConnState{ConnectivityState: s, ConnectionError: err}) -+ }) -+ ccb.mu.Unlock() -+} -+ -+func (ccb *ccBalancerWrapper) resolverError(err error) { -+ ccb.mu.Lock() -+ ccb.serializer.Schedule(func(_ context.Context) { -+ ccb.balancer.ResolverError(err) -+ }) -+ ccb.mu.Unlock() -+} -+ -+// switchTo is invoked by grpc to instruct the balancer wrapper to switch to the -+// LB policy identified by name. -+// -+// ClientConn calls newCCBalancerWrapper() at creation time. Upon receipt of the -+// first good update from the name resolver, it determines the LB policy to use -+// and invokes the switchTo() method. Upon receipt of every subsequent update -+// from the name resolver, it invokes this method. -+// -+// the ccBalancerWrapper keeps track of the current LB policy name, and skips -+// the graceful balancer switching process if the name does not change. -+func (ccb *ccBalancerWrapper) switchTo(name string) { -+ ccb.mu.Lock() -+ ccb.serializer.Schedule(func(_ context.Context) { -+ // TODO: Other languages use case-sensitive balancer registries. We should -+ // switch as well. See: https://github.com/grpc/grpc-go/issues/5288. -+ if strings.EqualFold(ccb.curBalancerName, name) { -+ return -+ } -+ ccb.buildLoadBalancingPolicy(name) -+ }) -+ ccb.mu.Unlock() -+} -+ -+// buildLoadBalancingPolicy performs the following: -+// - retrieve a balancer builder for the given name. Use the default LB -+// policy, pick_first, if no LB policy with name is found in the registry. -+// - instruct the gracefulswitch balancer to switch to the above builder. This -+// will actually build the new balancer. -+// - update the `curBalancerName` field -+// -+// Must be called from a serializer callback. -+func (ccb *ccBalancerWrapper) buildLoadBalancingPolicy(name string) { -+ builder := balancer.Get(name) -+ if builder == nil { -+ channelz.Warningf(logger, ccb.cc.channelzID, "Channel switches to new LB policy %q, since the specified LB policy %q was not registered", PickFirstBalancerName, name) -+ builder = newPickfirstBuilder() -+ } else { -+ channelz.Infof(logger, ccb.cc.channelzID, "Channel switches to new LB policy %q", name) -+ } -+ -+ if err := ccb.balancer.SwitchTo(builder); err != nil { -+ channelz.Errorf(logger, ccb.cc.channelzID, "Channel failed to build new LB policy %q: %v", name, err) -+ return -+ } -+ ccb.curBalancerName = builder.Name() -+} -+ -+func (ccb *ccBalancerWrapper) close() { -+ channelz.Info(logger, ccb.cc.channelzID, "ccBalancerWrapper: closing") -+ ccb.closeBalancer(ccbModeClosed) -+} -+ -+// enterIdleMode is invoked by grpc when the channel enters idle mode upon -+// expiry of idle_timeout. This call blocks until the balancer is closed. -+func (ccb *ccBalancerWrapper) enterIdleMode() { -+ channelz.Info(logger, ccb.cc.channelzID, "ccBalancerWrapper: entering idle mode") -+ ccb.closeBalancer(ccbModeIdle) -+} -+ -+// closeBalancer is invoked when the channel is being closed or when it enters -+// idle mode upon expiry of idle_timeout. -+func (ccb *ccBalancerWrapper) closeBalancer(m ccbMode) { -+ ccb.mu.Lock() -+ if ccb.mode == ccbModeClosed || ccb.mode == ccbModeIdle { -+ ccb.mu.Unlock() -+ return -+ } -+ -+ ccb.mode = m -+ done := ccb.serializer.Done -+ b := ccb.balancer -+ ok := ccb.serializer.Schedule(func(_ context.Context) { -+ // Close the serializer to ensure that no more calls from gRPC are sent -+ // to the balancer. -+ ccb.serializerCancel() -+ // Empty the current balancer name because we don't have a balancer -+ // anymore and also so that we act on the next call to switchTo by -+ // creating a new balancer specified by the new resolver. -+ ccb.curBalancerName = "" -+ }) -+ if !ok { -+ ccb.mu.Unlock() -+ return -+ } -+ ccb.mu.Unlock() -+ -+ // Give enqueued callbacks a chance to finish. -+ <-done -+ // Spawn a goroutine to close the balancer (since it may block trying to -+ // cleanup all allocated resources) and return early. -+ go b.Close() -+} -+ -+// exitIdleMode is invoked by grpc when the channel exits idle mode either -+// because of an RPC or because of an invocation of the Connect() API. This -+// recreates the balancer that was closed previously when entering idle mode. -+// -+// If the channel is not in idle mode, we know for a fact that we are here as a -+// result of the user calling the Connect() method on the ClientConn. In this -+// case, we can simply forward the call to the underlying balancer, instructing -+// it to reconnect to the backends. -+func (ccb *ccBalancerWrapper) exitIdleMode() { -+ ccb.mu.Lock() -+ if ccb.mode == ccbModeClosed { -+ // Request to exit idle is a no-op when wrapper is already closed. -+ ccb.mu.Unlock() -+ return -+ } -+ -+ if ccb.mode == ccbModeIdle { -+ // Recreate the serializer which was closed when we entered idle. -+ ctx, cancel := context.WithCancel(context.Background()) -+ ccb.serializer = grpcsync.NewCallbackSerializer(ctx) -+ ccb.serializerCancel = cancel -+ } -+ -+ // The ClientConn guarantees that mutual exclusion between close() and -+ // exitIdleMode(), and since we just created a new serializer, we can be -+ // sure that the below function will be scheduled. -+ done := make(chan struct{}) -+ ccb.serializer.Schedule(func(_ context.Context) { -+ defer close(done) -+ -+ ccb.mu.Lock() -+ defer ccb.mu.Unlock() -+ -+ if ccb.mode != ccbModeIdle { -+ ccb.balancer.ExitIdle() -+ return -+ } -+ -+ // Gracefulswitch balancer does not support a switchTo operation after -+ // being closed. Hence we need to create a new one here. -+ ccb.balancer = gracefulswitch.NewBalancer(ccb, ccb.opts) -+ ccb.mode = ccbModeActive -+ channelz.Info(logger, ccb.cc.channelzID, "ccBalancerWrapper: exiting idle mode") -+ -+ }) -+ ccb.mu.Unlock() -+ -+ <-done -+} -+ -+func (ccb *ccBalancerWrapper) isIdleOrClosed() bool { -+ ccb.mu.Lock() -+ defer ccb.mu.Unlock() -+ return ccb.mode == ccbModeIdle || ccb.mode == ccbModeClosed -+} -+ -+func (ccb *ccBalancerWrapper) NewSubConn(addrs []resolver.Address, opts balancer.NewSubConnOptions) (balancer.SubConn, error) { -+ if ccb.isIdleOrClosed() { -+ return nil, fmt.Errorf("grpc: cannot create SubConn when balancer is closed or idle") -+ } -+ -+ if len(addrs) == 0 { -+ return nil, fmt.Errorf("grpc: cannot create SubConn with empty address list") -+ } -+ ac, err := ccb.cc.newAddrConn(addrs, opts) -+ if err != nil { -+ channelz.Warningf(logger, ccb.cc.channelzID, "acBalancerWrapper: NewSubConn: failed to newAddrConn: %v", err) -+ return nil, err -+ } -+ acbw := &acBalancerWrapper{ac: ac, producers: make(map[balancer.ProducerBuilder]*refCountedProducer)} -+ ac.acbw = acbw -+ return acbw, nil -+} -+ -+func (ccb *ccBalancerWrapper) RemoveSubConn(sc balancer.SubConn) { -+ if ccb.isIdleOrClosed() { -+ // It it safe to ignore this call when the balancer is closed or in idle -+ // because the ClientConn takes care of closing the connections. -+ // -+ // Not returning early from here when the balancer is closed or in idle -+ // leads to a deadlock though, because of the following sequence of -+ // calls when holding cc.mu: -+ // cc.exitIdleMode --> ccb.enterIdleMode --> gsw.Close --> -+ // ccb.RemoveAddrConn --> cc.removeAddrConn -+ return -+ } -+ -+ acbw, ok := sc.(*acBalancerWrapper) -+ if !ok { -+ return -+ } -+ ccb.cc.removeAddrConn(acbw.ac, errConnDrain) -+} -+ -+func (ccb *ccBalancerWrapper) UpdateAddresses(sc balancer.SubConn, addrs []resolver.Address) { -+ if ccb.isIdleOrClosed() { -+ return -+ } -+ -+ acbw, ok := sc.(*acBalancerWrapper) -+ if !ok { -+ return -+ } -+ acbw.UpdateAddresses(addrs) -+} -+ -+func (ccb *ccBalancerWrapper) UpdateState(s balancer.State) { -+ if ccb.isIdleOrClosed() { -+ return -+ } -+ -+ // Update picker before updating state. Even though the ordering here does -+ // not matter, it can lead to multiple calls of Pick in the common start-up -+ // case where we wait for ready and then perform an RPC. If the picker is -+ // updated later, we could call the "connecting" picker when the state is -+ // updated, and then call the "ready" picker after the picker gets updated. -+ ccb.cc.blockingpicker.updatePicker(s.Picker) -+ ccb.cc.csMgr.updateState(s.ConnectivityState) -+} -+ -+func (ccb *ccBalancerWrapper) ResolveNow(o resolver.ResolveNowOptions) { -+ if ccb.isIdleOrClosed() { -+ return -+ } -+ -+ ccb.cc.resolveNow(o) -+} -+ -+func (ccb *ccBalancerWrapper) Target() string { -+ return ccb.cc.target -+} -+ -+// acBalancerWrapper is a wrapper on top of ac for balancers. -+// It implements balancer.SubConn interface. -+type acBalancerWrapper struct { -+ ac *addrConn // read-only -+ -+ mu sync.Mutex -+ producers map[balancer.ProducerBuilder]*refCountedProducer -+} -+ -+func (acbw *acBalancerWrapper) String() string { -+ return fmt.Sprintf("SubConn(id:%d)", acbw.ac.channelzID.Int()) -+} -+ -+func (acbw *acBalancerWrapper) UpdateAddresses(addrs []resolver.Address) { -+ acbw.ac.updateAddrs(addrs) -+} -+ -+func (acbw *acBalancerWrapper) Connect() { -+ go acbw.ac.connect() -+} -+ -+// NewStream begins a streaming RPC on the addrConn. If the addrConn is not -+// ready, blocks until it is or ctx expires. Returns an error when the context -+// expires or the addrConn is shut down. -+func (acbw *acBalancerWrapper) NewStream(ctx context.Context, desc *StreamDesc, method string, opts ...CallOption) (ClientStream, error) { -+ transport, err := acbw.ac.getTransport(ctx) -+ if err != nil { -+ return nil, err -+ } -+ return newNonRetryClientStream(ctx, desc, method, transport, acbw.ac, opts...) -+} -+ -+// Invoke performs a unary RPC. If the addrConn is not ready, returns -+// errSubConnNotReady. -+func (acbw *acBalancerWrapper) Invoke(ctx context.Context, method string, args interface{}, reply interface{}, opts ...CallOption) error { -+ cs, err := acbw.NewStream(ctx, unaryStreamDesc, method, opts...) -+ if err != nil { -+ return err -+ } -+ if err := cs.SendMsg(args); err != nil { -+ return err -+ } -+ return cs.RecvMsg(reply) -+} -+ -+type refCountedProducer struct { -+ producer balancer.Producer -+ refs int // number of current refs to the producer -+ close func() // underlying producer's close function -+} -+ -+func (acbw *acBalancerWrapper) GetOrBuildProducer(pb balancer.ProducerBuilder) (balancer.Producer, func()) { -+ acbw.mu.Lock() -+ defer acbw.mu.Unlock() -+ -+ // Look up existing producer from this builder. -+ pData := acbw.producers[pb] -+ if pData == nil { -+ // Not found; create a new one and add it to the producers map. -+ p, close := pb.Build(acbw) -+ pData = &refCountedProducer{producer: p, close: close} -+ acbw.producers[pb] = pData -+ } -+ // Account for this new reference. -+ pData.refs++ -+ -+ // Return a cleanup function wrapped in a OnceFunc to remove this reference -+ // and delete the refCountedProducer from the map if the total reference -+ // count goes to zero. -+ unref := func() { -+ acbw.mu.Lock() -+ pData.refs-- -+ if pData.refs == 0 { -+ defer pData.close() // Run outside the acbw mutex -+ delete(acbw.producers, pb) -+ } -+ acbw.mu.Unlock() -+ } -+ return pData.producer, grpcsync.OnceFunc(unref) -+} -diff --git a/vendor/google.golang.org/grpc/binarylog/grpc_binarylog_v1/binarylog.pb.go b/vendor/google.golang.org/grpc/binarylog/grpc_binarylog_v1/binarylog.pb.go -new file mode 100755 -index 0000000..ec2c2fa ---- /dev/null -+++ b/vendor/google.golang.org/grpc/binarylog/grpc_binarylog_v1/binarylog.pb.go -@@ -0,0 +1,1183 @@ -+// Copyright 2018 The gRPC Authors -+// All rights reserved. -+// -+// 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. -+ -+// The canonical version of this proto can be found at -+// https://github.com/grpc/grpc-proto/blob/master/grpc/binlog/v1/binarylog.proto -+ -+// Code generated by protoc-gen-go. DO NOT EDIT. -+// versions: -+// protoc-gen-go v1.30.0 -+// protoc v4.22.0 -+// source: grpc/binlog/v1/binarylog.proto -+ -+package grpc_binarylog_v1 -+ -+import ( -+ protoreflect "google.golang.org/protobuf/reflect/protoreflect" -+ protoimpl "google.golang.org/protobuf/runtime/protoimpl" -+ durationpb "google.golang.org/protobuf/types/known/durationpb" -+ timestamppb "google.golang.org/protobuf/types/known/timestamppb" -+ reflect "reflect" -+ sync "sync" -+) -+ -+const ( -+ // Verify that this generated code is sufficiently up-to-date. -+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) -+ // Verify that runtime/protoimpl is sufficiently up-to-date. -+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -+) -+ -+// Enumerates the type of event -+// Note the terminology is different from the RPC semantics -+// definition, but the same meaning is expressed here. -+type GrpcLogEntry_EventType int32 -+ -+const ( -+ GrpcLogEntry_EVENT_TYPE_UNKNOWN GrpcLogEntry_EventType = 0 -+ // Header sent from client to server -+ GrpcLogEntry_EVENT_TYPE_CLIENT_HEADER GrpcLogEntry_EventType = 1 -+ // Header sent from server to client -+ GrpcLogEntry_EVENT_TYPE_SERVER_HEADER GrpcLogEntry_EventType = 2 -+ // Message sent from client to server -+ GrpcLogEntry_EVENT_TYPE_CLIENT_MESSAGE GrpcLogEntry_EventType = 3 -+ // Message sent from server to client -+ GrpcLogEntry_EVENT_TYPE_SERVER_MESSAGE GrpcLogEntry_EventType = 4 -+ // A signal that client is done sending -+ GrpcLogEntry_EVENT_TYPE_CLIENT_HALF_CLOSE GrpcLogEntry_EventType = 5 -+ // Trailer indicates the end of the RPC. -+ // On client side, this event means a trailer was either received -+ // from the network or the gRPC library locally generated a status -+ // to inform the application about a failure. -+ // On server side, this event means the server application requested -+ // to send a trailer. Note: EVENT_TYPE_CANCEL may still arrive after -+ // this due to races on server side. -+ GrpcLogEntry_EVENT_TYPE_SERVER_TRAILER GrpcLogEntry_EventType = 6 -+ // A signal that the RPC is cancelled. On client side, this -+ // indicates the client application requests a cancellation. -+ // On server side, this indicates that cancellation was detected. -+ // Note: This marks the end of the RPC. Events may arrive after -+ // this due to races. For example, on client side a trailer -+ // may arrive even though the application requested to cancel the RPC. -+ GrpcLogEntry_EVENT_TYPE_CANCEL GrpcLogEntry_EventType = 7 -+) -+ -+// Enum value maps for GrpcLogEntry_EventType. -+var ( -+ GrpcLogEntry_EventType_name = map[int32]string{ -+ 0: "EVENT_TYPE_UNKNOWN", -+ 1: "EVENT_TYPE_CLIENT_HEADER", -+ 2: "EVENT_TYPE_SERVER_HEADER", -+ 3: "EVENT_TYPE_CLIENT_MESSAGE", -+ 4: "EVENT_TYPE_SERVER_MESSAGE", -+ 5: "EVENT_TYPE_CLIENT_HALF_CLOSE", -+ 6: "EVENT_TYPE_SERVER_TRAILER", -+ 7: "EVENT_TYPE_CANCEL", -+ } -+ GrpcLogEntry_EventType_value = map[string]int32{ -+ "EVENT_TYPE_UNKNOWN": 0, -+ "EVENT_TYPE_CLIENT_HEADER": 1, -+ "EVENT_TYPE_SERVER_HEADER": 2, -+ "EVENT_TYPE_CLIENT_MESSAGE": 3, -+ "EVENT_TYPE_SERVER_MESSAGE": 4, -+ "EVENT_TYPE_CLIENT_HALF_CLOSE": 5, -+ "EVENT_TYPE_SERVER_TRAILER": 6, -+ "EVENT_TYPE_CANCEL": 7, -+ } -+) -+ -+func (x GrpcLogEntry_EventType) Enum() *GrpcLogEntry_EventType { -+ p := new(GrpcLogEntry_EventType) -+ *p = x -+ return p -+} -+ -+func (x GrpcLogEntry_EventType) String() string { -+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -+} -+ -+func (GrpcLogEntry_EventType) Descriptor() protoreflect.EnumDescriptor { -+ return file_grpc_binlog_v1_binarylog_proto_enumTypes[0].Descriptor() -+} -+ -+func (GrpcLogEntry_EventType) Type() protoreflect.EnumType { -+ return &file_grpc_binlog_v1_binarylog_proto_enumTypes[0] -+} -+ -+func (x GrpcLogEntry_EventType) Number() protoreflect.EnumNumber { -+ return protoreflect.EnumNumber(x) -+} -+ -+// Deprecated: Use GrpcLogEntry_EventType.Descriptor instead. -+func (GrpcLogEntry_EventType) EnumDescriptor() ([]byte, []int) { -+ return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{0, 0} -+} -+ -+// Enumerates the entity that generates the log entry -+type GrpcLogEntry_Logger int32 -+ -+const ( -+ GrpcLogEntry_LOGGER_UNKNOWN GrpcLogEntry_Logger = 0 -+ GrpcLogEntry_LOGGER_CLIENT GrpcLogEntry_Logger = 1 -+ GrpcLogEntry_LOGGER_SERVER GrpcLogEntry_Logger = 2 -+) -+ -+// Enum value maps for GrpcLogEntry_Logger. -+var ( -+ GrpcLogEntry_Logger_name = map[int32]string{ -+ 0: "LOGGER_UNKNOWN", -+ 1: "LOGGER_CLIENT", -+ 2: "LOGGER_SERVER", -+ } -+ GrpcLogEntry_Logger_value = map[string]int32{ -+ "LOGGER_UNKNOWN": 0, -+ "LOGGER_CLIENT": 1, -+ "LOGGER_SERVER": 2, -+ } -+) -+ -+func (x GrpcLogEntry_Logger) Enum() *GrpcLogEntry_Logger { -+ p := new(GrpcLogEntry_Logger) -+ *p = x -+ return p -+} -+ -+func (x GrpcLogEntry_Logger) String() string { -+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -+} -+ -+func (GrpcLogEntry_Logger) Descriptor() protoreflect.EnumDescriptor { -+ return file_grpc_binlog_v1_binarylog_proto_enumTypes[1].Descriptor() -+} -+ -+func (GrpcLogEntry_Logger) Type() protoreflect.EnumType { -+ return &file_grpc_binlog_v1_binarylog_proto_enumTypes[1] -+} -+ -+func (x GrpcLogEntry_Logger) Number() protoreflect.EnumNumber { -+ return protoreflect.EnumNumber(x) -+} -+ -+// Deprecated: Use GrpcLogEntry_Logger.Descriptor instead. -+func (GrpcLogEntry_Logger) EnumDescriptor() ([]byte, []int) { -+ return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{0, 1} -+} -+ -+type Address_Type int32 -+ -+const ( -+ Address_TYPE_UNKNOWN Address_Type = 0 -+ // address is in 1.2.3.4 form -+ Address_TYPE_IPV4 Address_Type = 1 -+ // address is in IPv6 canonical form (RFC5952 section 4) -+ // The scope is NOT included in the address string. -+ Address_TYPE_IPV6 Address_Type = 2 -+ // address is UDS string -+ Address_TYPE_UNIX Address_Type = 3 -+) -+ -+// Enum value maps for Address_Type. -+var ( -+ Address_Type_name = map[int32]string{ -+ 0: "TYPE_UNKNOWN", -+ 1: "TYPE_IPV4", -+ 2: "TYPE_IPV6", -+ 3: "TYPE_UNIX", -+ } -+ Address_Type_value = map[string]int32{ -+ "TYPE_UNKNOWN": 0, -+ "TYPE_IPV4": 1, -+ "TYPE_IPV6": 2, -+ "TYPE_UNIX": 3, -+ } -+) -+ -+func (x Address_Type) Enum() *Address_Type { -+ p := new(Address_Type) -+ *p = x -+ return p -+} -+ -+func (x Address_Type) String() string { -+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -+} -+ -+func (Address_Type) Descriptor() protoreflect.EnumDescriptor { -+ return file_grpc_binlog_v1_binarylog_proto_enumTypes[2].Descriptor() -+} -+ -+func (Address_Type) Type() protoreflect.EnumType { -+ return &file_grpc_binlog_v1_binarylog_proto_enumTypes[2] -+} -+ -+func (x Address_Type) Number() protoreflect.EnumNumber { -+ return protoreflect.EnumNumber(x) -+} -+ -+// Deprecated: Use Address_Type.Descriptor instead. -+func (Address_Type) EnumDescriptor() ([]byte, []int) { -+ return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{7, 0} -+} -+ -+// Log entry we store in binary logs -+type GrpcLogEntry struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ // The timestamp of the binary log message -+ Timestamp *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` -+ // Uniquely identifies a call. The value must not be 0 in order to disambiguate -+ // from an unset value. -+ // Each call may have several log entries, they will all have the same call_id. -+ // Nothing is guaranteed about their value other than they are unique across -+ // different RPCs in the same gRPC process. -+ CallId uint64 `protobuf:"varint,2,opt,name=call_id,json=callId,proto3" json:"call_id,omitempty"` -+ // The entry sequence id for this call. The first GrpcLogEntry has a -+ // value of 1, to disambiguate from an unset value. The purpose of -+ // this field is to detect missing entries in environments where -+ // durability or ordering is not guaranteed. -+ SequenceIdWithinCall uint64 `protobuf:"varint,3,opt,name=sequence_id_within_call,json=sequenceIdWithinCall,proto3" json:"sequence_id_within_call,omitempty"` -+ Type GrpcLogEntry_EventType `protobuf:"varint,4,opt,name=type,proto3,enum=grpc.binarylog.v1.GrpcLogEntry_EventType" json:"type,omitempty"` -+ Logger GrpcLogEntry_Logger `protobuf:"varint,5,opt,name=logger,proto3,enum=grpc.binarylog.v1.GrpcLogEntry_Logger" json:"logger,omitempty"` // One of the above Logger enum -+ // The logger uses one of the following fields to record the payload, -+ // according to the type of the log entry. -+ // -+ // Types that are assignable to Payload: -+ // -+ // *GrpcLogEntry_ClientHeader -+ // *GrpcLogEntry_ServerHeader -+ // *GrpcLogEntry_Message -+ // *GrpcLogEntry_Trailer -+ Payload isGrpcLogEntry_Payload `protobuf_oneof:"payload"` -+ // true if payload does not represent the full message or metadata. -+ PayloadTruncated bool `protobuf:"varint,10,opt,name=payload_truncated,json=payloadTruncated,proto3" json:"payload_truncated,omitempty"` -+ // Peer address information, will only be recorded on the first -+ // incoming event. On client side, peer is logged on -+ // EVENT_TYPE_SERVER_HEADER normally or EVENT_TYPE_SERVER_TRAILER in -+ // the case of trailers-only. On server side, peer is always -+ // logged on EVENT_TYPE_CLIENT_HEADER. -+ Peer *Address `protobuf:"bytes,11,opt,name=peer,proto3" json:"peer,omitempty"` -+} -+ -+func (x *GrpcLogEntry) Reset() { -+ *x = GrpcLogEntry{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[0] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *GrpcLogEntry) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*GrpcLogEntry) ProtoMessage() {} -+ -+func (x *GrpcLogEntry) ProtoReflect() protoreflect.Message { -+ mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[0] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use GrpcLogEntry.ProtoReflect.Descriptor instead. -+func (*GrpcLogEntry) Descriptor() ([]byte, []int) { -+ return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{0} -+} -+ -+func (x *GrpcLogEntry) GetTimestamp() *timestamppb.Timestamp { -+ if x != nil { -+ return x.Timestamp -+ } -+ return nil -+} -+ -+func (x *GrpcLogEntry) GetCallId() uint64 { -+ if x != nil { -+ return x.CallId -+ } -+ return 0 -+} -+ -+func (x *GrpcLogEntry) GetSequenceIdWithinCall() uint64 { -+ if x != nil { -+ return x.SequenceIdWithinCall -+ } -+ return 0 -+} -+ -+func (x *GrpcLogEntry) GetType() GrpcLogEntry_EventType { -+ if x != nil { -+ return x.Type -+ } -+ return GrpcLogEntry_EVENT_TYPE_UNKNOWN -+} -+ -+func (x *GrpcLogEntry) GetLogger() GrpcLogEntry_Logger { -+ if x != nil { -+ return x.Logger -+ } -+ return GrpcLogEntry_LOGGER_UNKNOWN -+} -+ -+func (m *GrpcLogEntry) GetPayload() isGrpcLogEntry_Payload { -+ if m != nil { -+ return m.Payload -+ } -+ return nil -+} -+ -+func (x *GrpcLogEntry) GetClientHeader() *ClientHeader { -+ if x, ok := x.GetPayload().(*GrpcLogEntry_ClientHeader); ok { -+ return x.ClientHeader -+ } -+ return nil -+} -+ -+func (x *GrpcLogEntry) GetServerHeader() *ServerHeader { -+ if x, ok := x.GetPayload().(*GrpcLogEntry_ServerHeader); ok { -+ return x.ServerHeader -+ } -+ return nil -+} -+ -+func (x *GrpcLogEntry) GetMessage() *Message { -+ if x, ok := x.GetPayload().(*GrpcLogEntry_Message); ok { -+ return x.Message -+ } -+ return nil -+} -+ -+func (x *GrpcLogEntry) GetTrailer() *Trailer { -+ if x, ok := x.GetPayload().(*GrpcLogEntry_Trailer); ok { -+ return x.Trailer -+ } -+ return nil -+} -+ -+func (x *GrpcLogEntry) GetPayloadTruncated() bool { -+ if x != nil { -+ return x.PayloadTruncated -+ } -+ return false -+} -+ -+func (x *GrpcLogEntry) GetPeer() *Address { -+ if x != nil { -+ return x.Peer -+ } -+ return nil -+} -+ -+type isGrpcLogEntry_Payload interface { -+ isGrpcLogEntry_Payload() -+} -+ -+type GrpcLogEntry_ClientHeader struct { -+ ClientHeader *ClientHeader `protobuf:"bytes,6,opt,name=client_header,json=clientHeader,proto3,oneof"` -+} -+ -+type GrpcLogEntry_ServerHeader struct { -+ ServerHeader *ServerHeader `protobuf:"bytes,7,opt,name=server_header,json=serverHeader,proto3,oneof"` -+} -+ -+type GrpcLogEntry_Message struct { -+ // Used by EVENT_TYPE_CLIENT_MESSAGE, EVENT_TYPE_SERVER_MESSAGE -+ Message *Message `protobuf:"bytes,8,opt,name=message,proto3,oneof"` -+} -+ -+type GrpcLogEntry_Trailer struct { -+ Trailer *Trailer `protobuf:"bytes,9,opt,name=trailer,proto3,oneof"` -+} -+ -+func (*GrpcLogEntry_ClientHeader) isGrpcLogEntry_Payload() {} -+ -+func (*GrpcLogEntry_ServerHeader) isGrpcLogEntry_Payload() {} -+ -+func (*GrpcLogEntry_Message) isGrpcLogEntry_Payload() {} -+ -+func (*GrpcLogEntry_Trailer) isGrpcLogEntry_Payload() {} -+ -+type ClientHeader struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ // This contains only the metadata from the application. -+ Metadata *Metadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` -+ // The name of the RPC method, which looks something like: -+ // // -+ // Note the leading "/" character. -+ MethodName string `protobuf:"bytes,2,opt,name=method_name,json=methodName,proto3" json:"method_name,omitempty"` -+ // A single process may be used to run multiple virtual -+ // servers with different identities. -+ // The authority is the name of such a server identitiy. -+ // It is typically a portion of the URI in the form of -+ // or : . -+ Authority string `protobuf:"bytes,3,opt,name=authority,proto3" json:"authority,omitempty"` -+ // the RPC timeout -+ Timeout *durationpb.Duration `protobuf:"bytes,4,opt,name=timeout,proto3" json:"timeout,omitempty"` -+} -+ -+func (x *ClientHeader) Reset() { -+ *x = ClientHeader{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[1] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *ClientHeader) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*ClientHeader) ProtoMessage() {} -+ -+func (x *ClientHeader) ProtoReflect() protoreflect.Message { -+ mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[1] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use ClientHeader.ProtoReflect.Descriptor instead. -+func (*ClientHeader) Descriptor() ([]byte, []int) { -+ return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{1} -+} -+ -+func (x *ClientHeader) GetMetadata() *Metadata { -+ if x != nil { -+ return x.Metadata -+ } -+ return nil -+} -+ -+func (x *ClientHeader) GetMethodName() string { -+ if x != nil { -+ return x.MethodName -+ } -+ return "" -+} -+ -+func (x *ClientHeader) GetAuthority() string { -+ if x != nil { -+ return x.Authority -+ } -+ return "" -+} -+ -+func (x *ClientHeader) GetTimeout() *durationpb.Duration { -+ if x != nil { -+ return x.Timeout -+ } -+ return nil -+} -+ -+type ServerHeader struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ // This contains only the metadata from the application. -+ Metadata *Metadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` -+} -+ -+func (x *ServerHeader) Reset() { -+ *x = ServerHeader{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[2] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *ServerHeader) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*ServerHeader) ProtoMessage() {} -+ -+func (x *ServerHeader) ProtoReflect() protoreflect.Message { -+ mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[2] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use ServerHeader.ProtoReflect.Descriptor instead. -+func (*ServerHeader) Descriptor() ([]byte, []int) { -+ return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{2} -+} -+ -+func (x *ServerHeader) GetMetadata() *Metadata { -+ if x != nil { -+ return x.Metadata -+ } -+ return nil -+} -+ -+type Trailer struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ // This contains only the metadata from the application. -+ Metadata *Metadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` -+ // The gRPC status code. -+ StatusCode uint32 `protobuf:"varint,2,opt,name=status_code,json=statusCode,proto3" json:"status_code,omitempty"` -+ // An original status message before any transport specific -+ // encoding. -+ StatusMessage string `protobuf:"bytes,3,opt,name=status_message,json=statusMessage,proto3" json:"status_message,omitempty"` -+ // The value of the 'grpc-status-details-bin' metadata key. If -+ // present, this is always an encoded 'google.rpc.Status' message. -+ StatusDetails []byte `protobuf:"bytes,4,opt,name=status_details,json=statusDetails,proto3" json:"status_details,omitempty"` -+} -+ -+func (x *Trailer) Reset() { -+ *x = Trailer{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[3] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *Trailer) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*Trailer) ProtoMessage() {} -+ -+func (x *Trailer) ProtoReflect() protoreflect.Message { -+ mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[3] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use Trailer.ProtoReflect.Descriptor instead. -+func (*Trailer) Descriptor() ([]byte, []int) { -+ return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{3} -+} -+ -+func (x *Trailer) GetMetadata() *Metadata { -+ if x != nil { -+ return x.Metadata -+ } -+ return nil -+} -+ -+func (x *Trailer) GetStatusCode() uint32 { -+ if x != nil { -+ return x.StatusCode -+ } -+ return 0 -+} -+ -+func (x *Trailer) GetStatusMessage() string { -+ if x != nil { -+ return x.StatusMessage -+ } -+ return "" -+} -+ -+func (x *Trailer) GetStatusDetails() []byte { -+ if x != nil { -+ return x.StatusDetails -+ } -+ return nil -+} -+ -+// Message payload, used by CLIENT_MESSAGE and SERVER_MESSAGE -+type Message struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ // Length of the message. It may not be the same as the length of the -+ // data field, as the logging payload can be truncated or omitted. -+ Length uint32 `protobuf:"varint,1,opt,name=length,proto3" json:"length,omitempty"` -+ // May be truncated or omitted. -+ Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` -+} -+ -+func (x *Message) Reset() { -+ *x = Message{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[4] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *Message) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*Message) ProtoMessage() {} -+ -+func (x *Message) ProtoReflect() protoreflect.Message { -+ mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[4] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use Message.ProtoReflect.Descriptor instead. -+func (*Message) Descriptor() ([]byte, []int) { -+ return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{4} -+} -+ -+func (x *Message) GetLength() uint32 { -+ if x != nil { -+ return x.Length -+ } -+ return 0 -+} -+ -+func (x *Message) GetData() []byte { -+ if x != nil { -+ return x.Data -+ } -+ return nil -+} -+ -+// A list of metadata pairs, used in the payload of client header, -+// server header, and server trailer. -+// Implementations may omit some entries to honor the header limits -+// of GRPC_BINARY_LOG_CONFIG. -+// -+// Header keys added by gRPC are omitted. To be more specific, -+// implementations will not log the following entries, and this is -+// not to be treated as a truncation: -+// - entries handled by grpc that are not user visible, such as those -+// that begin with 'grpc-' (with exception of grpc-trace-bin) -+// or keys like 'lb-token' -+// - transport specific entries, including but not limited to: -+// ':path', ':authority', 'content-encoding', 'user-agent', 'te', etc -+// - entries added for call credentials -+// -+// Implementations must always log grpc-trace-bin if it is present. -+// Practically speaking it will only be visible on server side because -+// grpc-trace-bin is managed by low level client side mechanisms -+// inaccessible from the application level. On server side, the -+// header is just a normal metadata key. -+// The pair will not count towards the size limit. -+type Metadata struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ Entry []*MetadataEntry `protobuf:"bytes,1,rep,name=entry,proto3" json:"entry,omitempty"` -+} -+ -+func (x *Metadata) Reset() { -+ *x = Metadata{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[5] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *Metadata) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*Metadata) ProtoMessage() {} -+ -+func (x *Metadata) ProtoReflect() protoreflect.Message { -+ mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[5] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use Metadata.ProtoReflect.Descriptor instead. -+func (*Metadata) Descriptor() ([]byte, []int) { -+ return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{5} -+} -+ -+func (x *Metadata) GetEntry() []*MetadataEntry { -+ if x != nil { -+ return x.Entry -+ } -+ return nil -+} -+ -+// A metadata key value pair -+type MetadataEntry struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` -+ Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` -+} -+ -+func (x *MetadataEntry) Reset() { -+ *x = MetadataEntry{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[6] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *MetadataEntry) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*MetadataEntry) ProtoMessage() {} -+ -+func (x *MetadataEntry) ProtoReflect() protoreflect.Message { -+ mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[6] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use MetadataEntry.ProtoReflect.Descriptor instead. -+func (*MetadataEntry) Descriptor() ([]byte, []int) { -+ return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{6} -+} -+ -+func (x *MetadataEntry) GetKey() string { -+ if x != nil { -+ return x.Key -+ } -+ return "" -+} -+ -+func (x *MetadataEntry) GetValue() []byte { -+ if x != nil { -+ return x.Value -+ } -+ return nil -+} -+ -+// Address information -+type Address struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ Type Address_Type `protobuf:"varint,1,opt,name=type,proto3,enum=grpc.binarylog.v1.Address_Type" json:"type,omitempty"` -+ Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` -+ // only for TYPE_IPV4 and TYPE_IPV6 -+ IpPort uint32 `protobuf:"varint,3,opt,name=ip_port,json=ipPort,proto3" json:"ip_port,omitempty"` -+} -+ -+func (x *Address) Reset() { -+ *x = Address{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[7] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *Address) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*Address) ProtoMessage() {} -+ -+func (x *Address) ProtoReflect() protoreflect.Message { -+ mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[7] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use Address.ProtoReflect.Descriptor instead. -+func (*Address) Descriptor() ([]byte, []int) { -+ return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{7} -+} -+ -+func (x *Address) GetType() Address_Type { -+ if x != nil { -+ return x.Type -+ } -+ return Address_TYPE_UNKNOWN -+} -+ -+func (x *Address) GetAddress() string { -+ if x != nil { -+ return x.Address -+ } -+ return "" -+} -+ -+func (x *Address) GetIpPort() uint32 { -+ if x != nil { -+ return x.IpPort -+ } -+ return 0 -+} -+ -+var File_grpc_binlog_v1_binarylog_proto protoreflect.FileDescriptor -+ -+var file_grpc_binlog_v1_binarylog_proto_rawDesc = []byte{ -+ 0x0a, 0x1e, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x62, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x2f, 0x76, 0x31, -+ 0x2f, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, -+ 0x12, 0x11, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, -+ 0x2e, 0x76, 0x31, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, -+ 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, -+ 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, -+ 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, -+ 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xbb, 0x07, 0x0a, 0x0c, 0x47, 0x72, 0x70, 0x63, 0x4c, 0x6f, 0x67, -+ 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, -+ 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, -+ 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, -+ 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, -+ 0x17, 0x0a, 0x07, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, -+ 0x52, 0x06, 0x63, 0x61, 0x6c, 0x6c, 0x49, 0x64, 0x12, 0x35, 0x0a, 0x17, 0x73, 0x65, 0x71, 0x75, -+ 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x5f, 0x63, -+ 0x61, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x14, 0x73, 0x65, 0x71, 0x75, 0x65, -+ 0x6e, 0x63, 0x65, 0x49, 0x64, 0x57, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x43, 0x61, 0x6c, 0x6c, 0x12, -+ 0x3d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, -+ 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76, -+ 0x31, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x45, -+ 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3e, -+ 0x0a, 0x06, 0x6c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, -+ 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, -+ 0x76, 0x31, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x2e, -+ 0x4c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x52, 0x06, 0x6c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x12, 0x46, -+ 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, -+ 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, -+ 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, -+ 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, -+ 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x46, 0x0a, 0x0d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, -+ 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, -+ 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76, -+ 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, -+ 0x52, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x36, -+ 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, -+ 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, -+ 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x07, 0x6d, -+ 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x65, -+ 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, -+ 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x69, -+ 0x6c, 0x65, 0x72, 0x48, 0x00, 0x52, 0x07, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x65, 0x72, 0x12, 0x2b, -+ 0x0a, 0x11, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, -+ 0x74, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x70, 0x61, 0x79, 0x6c, 0x6f, -+ 0x61, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x04, 0x70, -+ 0x65, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, -+ 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, -+ 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x04, 0x70, 0x65, 0x65, 0x72, 0x22, 0xf5, 0x01, 0x0a, 0x09, -+ 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x45, 0x56, 0x45, -+ 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, -+ 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, -+ 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x10, 0x01, 0x12, -+ 0x1c, 0x0a, 0x18, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, -+ 0x52, 0x56, 0x45, 0x52, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x10, 0x02, 0x12, 0x1d, 0x0a, -+ 0x19, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4c, 0x49, 0x45, -+ 0x4e, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, -+ 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, -+ 0x52, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x04, 0x12, 0x20, 0x0a, 0x1c, 0x45, -+ 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, -+ 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x10, 0x05, 0x12, 0x1d, 0x0a, -+ 0x19, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x52, 0x56, -+ 0x45, 0x52, 0x5f, 0x54, 0x52, 0x41, 0x49, 0x4c, 0x45, 0x52, 0x10, 0x06, 0x12, 0x15, 0x0a, 0x11, -+ 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, -+ 0x4c, 0x10, 0x07, 0x22, 0x42, 0x0a, 0x06, 0x4c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x12, 0x12, 0x0a, -+ 0x0e, 0x4c, 0x4f, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, -+ 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x4c, 0x4f, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x43, 0x4c, 0x49, 0x45, -+ 0x4e, 0x54, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x4c, 0x4f, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x53, -+ 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, -+ 0x61, 0x64, 0x22, 0xbb, 0x01, 0x0a, 0x0c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61, -+ 0x64, 0x65, 0x72, 0x12, 0x37, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, -+ 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, -+ 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, -+ 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x0b, -+ 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, -+ 0x09, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, -+ 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, -+ 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x33, 0x0a, 0x07, 0x74, -+ 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, -+ 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, -+ 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, -+ 0x22, 0x47, 0x0a, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, -+ 0x12, 0x37, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, -+ 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, -+ 0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, -+ 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xb1, 0x01, 0x0a, 0x07, 0x54, 0x72, -+ 0x61, 0x69, 0x6c, 0x65, 0x72, 0x12, 0x37, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, -+ 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, -+ 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, -+ 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1f, -+ 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, -+ 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, -+ 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, -+ 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, -+ 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, -+ 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, -+ 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x35, 0x0a, -+ 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, -+ 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, -+ 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, -+ 0x64, 0x61, 0x74, 0x61, 0x22, 0x42, 0x0a, 0x08, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, -+ 0x12, 0x36, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, -+ 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, -+ 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, -+ 0x79, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x22, 0x37, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, -+ 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, -+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, -+ 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, -+ 0x65, 0x22, 0xb8, 0x01, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x33, 0x0a, -+ 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x67, 0x72, -+ 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e, -+ 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, -+ 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, -+ 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x17, 0x0a, 0x07, -+ 0x69, 0x70, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x69, -+ 0x70, 0x50, 0x6f, 0x72, 0x74, 0x22, 0x45, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, -+ 0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, -+ 0x0d, 0x0a, 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x56, 0x34, 0x10, 0x01, 0x12, 0x0d, -+ 0x0a, 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x10, 0x02, 0x12, 0x0d, 0x0a, -+ 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x49, 0x58, 0x10, 0x03, 0x42, 0x5c, 0x0a, 0x14, -+ 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, -+ 0x67, 0x2e, 0x76, 0x31, 0x42, 0x0e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x4c, 0x6f, 0x67, 0x50, -+ 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x32, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, -+ 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x62, -+ 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x62, 0x69, -+ 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x5f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, -+ 0x6f, 0x33, -+} -+ -+var ( -+ file_grpc_binlog_v1_binarylog_proto_rawDescOnce sync.Once -+ file_grpc_binlog_v1_binarylog_proto_rawDescData = file_grpc_binlog_v1_binarylog_proto_rawDesc -+) -+ -+func file_grpc_binlog_v1_binarylog_proto_rawDescGZIP() []byte { -+ file_grpc_binlog_v1_binarylog_proto_rawDescOnce.Do(func() { -+ file_grpc_binlog_v1_binarylog_proto_rawDescData = protoimpl.X.CompressGZIP(file_grpc_binlog_v1_binarylog_proto_rawDescData) -+ }) -+ return file_grpc_binlog_v1_binarylog_proto_rawDescData -+} -+ -+var file_grpc_binlog_v1_binarylog_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -+var file_grpc_binlog_v1_binarylog_proto_msgTypes = make([]protoimpl.MessageInfo, 8) -+var file_grpc_binlog_v1_binarylog_proto_goTypes = []interface{}{ -+ (GrpcLogEntry_EventType)(0), // 0: grpc.binarylog.v1.GrpcLogEntry.EventType -+ (GrpcLogEntry_Logger)(0), // 1: grpc.binarylog.v1.GrpcLogEntry.Logger -+ (Address_Type)(0), // 2: grpc.binarylog.v1.Address.Type -+ (*GrpcLogEntry)(nil), // 3: grpc.binarylog.v1.GrpcLogEntry -+ (*ClientHeader)(nil), // 4: grpc.binarylog.v1.ClientHeader -+ (*ServerHeader)(nil), // 5: grpc.binarylog.v1.ServerHeader -+ (*Trailer)(nil), // 6: grpc.binarylog.v1.Trailer -+ (*Message)(nil), // 7: grpc.binarylog.v1.Message -+ (*Metadata)(nil), // 8: grpc.binarylog.v1.Metadata -+ (*MetadataEntry)(nil), // 9: grpc.binarylog.v1.MetadataEntry -+ (*Address)(nil), // 10: grpc.binarylog.v1.Address -+ (*timestamppb.Timestamp)(nil), // 11: google.protobuf.Timestamp -+ (*durationpb.Duration)(nil), // 12: google.protobuf.Duration -+} -+var file_grpc_binlog_v1_binarylog_proto_depIdxs = []int32{ -+ 11, // 0: grpc.binarylog.v1.GrpcLogEntry.timestamp:type_name -> google.protobuf.Timestamp -+ 0, // 1: grpc.binarylog.v1.GrpcLogEntry.type:type_name -> grpc.binarylog.v1.GrpcLogEntry.EventType -+ 1, // 2: grpc.binarylog.v1.GrpcLogEntry.logger:type_name -> grpc.binarylog.v1.GrpcLogEntry.Logger -+ 4, // 3: grpc.binarylog.v1.GrpcLogEntry.client_header:type_name -> grpc.binarylog.v1.ClientHeader -+ 5, // 4: grpc.binarylog.v1.GrpcLogEntry.server_header:type_name -> grpc.binarylog.v1.ServerHeader -+ 7, // 5: grpc.binarylog.v1.GrpcLogEntry.message:type_name -> grpc.binarylog.v1.Message -+ 6, // 6: grpc.binarylog.v1.GrpcLogEntry.trailer:type_name -> grpc.binarylog.v1.Trailer -+ 10, // 7: grpc.binarylog.v1.GrpcLogEntry.peer:type_name -> grpc.binarylog.v1.Address -+ 8, // 8: grpc.binarylog.v1.ClientHeader.metadata:type_name -> grpc.binarylog.v1.Metadata -+ 12, // 9: grpc.binarylog.v1.ClientHeader.timeout:type_name -> google.protobuf.Duration -+ 8, // 10: grpc.binarylog.v1.ServerHeader.metadata:type_name -> grpc.binarylog.v1.Metadata -+ 8, // 11: grpc.binarylog.v1.Trailer.metadata:type_name -> grpc.binarylog.v1.Metadata -+ 9, // 12: grpc.binarylog.v1.Metadata.entry:type_name -> grpc.binarylog.v1.MetadataEntry -+ 2, // 13: grpc.binarylog.v1.Address.type:type_name -> grpc.binarylog.v1.Address.Type -+ 14, // [14:14] is the sub-list for method output_type -+ 14, // [14:14] is the sub-list for method input_type -+ 14, // [14:14] is the sub-list for extension type_name -+ 14, // [14:14] is the sub-list for extension extendee -+ 0, // [0:14] is the sub-list for field type_name -+} -+ -+func init() { file_grpc_binlog_v1_binarylog_proto_init() } -+func file_grpc_binlog_v1_binarylog_proto_init() { -+ if File_grpc_binlog_v1_binarylog_proto != nil { -+ return -+ } -+ if !protoimpl.UnsafeEnabled { -+ file_grpc_binlog_v1_binarylog_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*GrpcLogEntry); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_grpc_binlog_v1_binarylog_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*ClientHeader); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_grpc_binlog_v1_binarylog_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*ServerHeader); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_grpc_binlog_v1_binarylog_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*Trailer); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_grpc_binlog_v1_binarylog_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*Message); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_grpc_binlog_v1_binarylog_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*Metadata); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_grpc_binlog_v1_binarylog_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*MetadataEntry); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_grpc_binlog_v1_binarylog_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*Address); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ } -+ file_grpc_binlog_v1_binarylog_proto_msgTypes[0].OneofWrappers = []interface{}{ -+ (*GrpcLogEntry_ClientHeader)(nil), -+ (*GrpcLogEntry_ServerHeader)(nil), -+ (*GrpcLogEntry_Message)(nil), -+ (*GrpcLogEntry_Trailer)(nil), -+ } -+ type x struct{} -+ out := protoimpl.TypeBuilder{ -+ File: protoimpl.DescBuilder{ -+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), -+ RawDescriptor: file_grpc_binlog_v1_binarylog_proto_rawDesc, -+ NumEnums: 3, -+ NumMessages: 8, -+ NumExtensions: 0, -+ NumServices: 0, -+ }, -+ GoTypes: file_grpc_binlog_v1_binarylog_proto_goTypes, -+ DependencyIndexes: file_grpc_binlog_v1_binarylog_proto_depIdxs, -+ EnumInfos: file_grpc_binlog_v1_binarylog_proto_enumTypes, -+ MessageInfos: file_grpc_binlog_v1_binarylog_proto_msgTypes, -+ }.Build() -+ File_grpc_binlog_v1_binarylog_proto = out.File -+ file_grpc_binlog_v1_binarylog_proto_rawDesc = nil -+ file_grpc_binlog_v1_binarylog_proto_goTypes = nil -+ file_grpc_binlog_v1_binarylog_proto_depIdxs = nil -+} -diff --git a/vendor/google.golang.org/grpc/call.go b/vendor/google.golang.org/grpc/call.go -new file mode 100755 -index 0000000..e6a1dc5 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/call.go -@@ -0,0 +1,79 @@ -+/* -+ * -+ * 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 ( -+ "context" -+) -+ -+// Invoke sends the RPC request on the wire and returns after response is -+// received. This is typically called by generated code. -+// -+// All errors returned by Invoke are compatible with the status package. -+func (cc *ClientConn) Invoke(ctx context.Context, method string, args, reply interface{}, opts ...CallOption) error { -+ if err := cc.idlenessMgr.onCallBegin(); err != nil { -+ return err -+ } -+ defer cc.idlenessMgr.onCallEnd() -+ -+ // allow interceptor to see all applicable call options, which means those -+ // configured as defaults from dial option as well as per-call options -+ opts = combine(cc.dopts.callOptions, opts) -+ -+ if cc.dopts.unaryInt != nil { -+ return cc.dopts.unaryInt(ctx, method, args, reply, cc, invoke, opts...) -+ } -+ return invoke(ctx, method, args, reply, cc, opts...) -+} -+ -+func combine(o1 []CallOption, o2 []CallOption) []CallOption { -+ // we don't use append because o1 could have extra capacity whose -+ // elements would be overwritten, which could cause inadvertent -+ // sharing (and race conditions) between concurrent calls -+ if len(o1) == 0 { -+ return o2 -+ } else if len(o2) == 0 { -+ return o1 -+ } -+ ret := make([]CallOption, len(o1)+len(o2)) -+ copy(ret, o1) -+ copy(ret[len(o1):], o2) -+ return ret -+} -+ -+// Invoke sends the RPC request on the wire and returns after response is -+// received. This is typically called by generated code. -+// -+// DEPRECATED: Use ClientConn.Invoke instead. -+func Invoke(ctx context.Context, method string, args, reply interface{}, cc *ClientConn, opts ...CallOption) error { -+ return cc.Invoke(ctx, method, args, reply, opts...) -+} -+ -+var unaryStreamDesc = &StreamDesc{ServerStreams: false, ClientStreams: false} -+ -+func invoke(ctx context.Context, method string, req, reply interface{}, cc *ClientConn, opts ...CallOption) error { -+ cs, err := newClientStream(ctx, unaryStreamDesc, cc, method, opts...) -+ if err != nil { -+ return err -+ } -+ if err := cs.SendMsg(req); err != nil { -+ return err -+ } -+ return cs.RecvMsg(reply) -+} -diff --git a/vendor/google.golang.org/grpc/channelz/channelz.go b/vendor/google.golang.org/grpc/channelz/channelz.go -new file mode 100755 -index 0000000..32b7fa5 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/channelz/channelz.go -@@ -0,0 +1,36 @@ -+/* -+ * -+ * Copyright 2020 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 channelz exports internals of the channelz implementation as required -+// by other gRPC packages. -+// -+// The implementation of the channelz spec as defined in -+// https://github.com/grpc/proposal/blob/master/A14-channelz.md, is provided by -+// the `internal/channelz` package. -+// -+// # Experimental -+// -+// Notice: All APIs in this package are experimental and may be removed in a -+// later release. -+package channelz -+ -+import "google.golang.org/grpc/internal/channelz" -+ -+// Identifier is an opaque identifier which uniquely identifies an entity in the -+// channelz database. -+type Identifier = channelz.Identifier -diff --git a/vendor/google.golang.org/grpc/clientconn.go b/vendor/google.golang.org/grpc/clientconn.go -new file mode 100755 -index 0000000..bfd7555 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/clientconn.go -@@ -0,0 +1,1979 @@ -+/* -+ * -+ * 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 ( -+ "context" -+ "errors" -+ "fmt" -+ "math" -+ "net/url" -+ "strings" -+ "sync" -+ "sync/atomic" -+ "time" -+ -+ "google.golang.org/grpc/balancer" -+ "google.golang.org/grpc/balancer/base" -+ "google.golang.org/grpc/codes" -+ "google.golang.org/grpc/connectivity" -+ "google.golang.org/grpc/credentials" -+ "google.golang.org/grpc/internal/backoff" -+ "google.golang.org/grpc/internal/channelz" -+ "google.golang.org/grpc/internal/grpcsync" -+ "google.golang.org/grpc/internal/pretty" -+ iresolver "google.golang.org/grpc/internal/resolver" -+ "google.golang.org/grpc/internal/transport" -+ "google.golang.org/grpc/keepalive" -+ "google.golang.org/grpc/resolver" -+ "google.golang.org/grpc/serviceconfig" -+ "google.golang.org/grpc/status" -+ -+ _ "google.golang.org/grpc/balancer/roundrobin" // To register roundrobin. -+ _ "google.golang.org/grpc/internal/resolver/dns" // To register dns resolver. -+ _ "google.golang.org/grpc/internal/resolver/passthrough" // To register passthrough resolver. -+ _ "google.golang.org/grpc/internal/resolver/unix" // To register unix resolver. -+) -+ -+const ( -+ // minimum time to give a connection to complete -+ minConnectTimeout = 20 * time.Second -+ // must match grpclbName in grpclb/grpclb.go -+ grpclbName = "grpclb" -+) -+ -+var ( -+ // ErrClientConnClosing indicates that the operation is illegal because -+ // the ClientConn is closing. -+ // -+ // Deprecated: this error should not be relied upon by users; use the status -+ // code of Canceled instead. -+ ErrClientConnClosing = status.Error(codes.Canceled, "grpc: the client connection is closing") -+ // errConnDrain indicates that the connection starts to be drained and does not accept any new RPCs. -+ errConnDrain = errors.New("grpc: the connection is drained") -+ // errConnClosing indicates that the connection is closing. -+ errConnClosing = errors.New("grpc: the connection is closing") -+ // errConnIdling indicates the the connection is being closed as the channel -+ // is moving to an idle mode due to inactivity. -+ errConnIdling = errors.New("grpc: the connection is closing due to channel idleness") -+ // invalidDefaultServiceConfigErrPrefix is used to prefix the json parsing error for the default -+ // service config. -+ invalidDefaultServiceConfigErrPrefix = "grpc: the provided default service config is invalid" -+) -+ -+// The following errors are returned from Dial and DialContext -+var ( -+ // errNoTransportSecurity indicates that there is no transport security -+ // being set for ClientConn. Users should either set one or explicitly -+ // call WithInsecure DialOption to disable security. -+ errNoTransportSecurity = errors.New("grpc: no transport security set (use grpc.WithTransportCredentials(insecure.NewCredentials()) explicitly or set credentials)") -+ // errTransportCredsAndBundle indicates that creds bundle is used together -+ // with other individual Transport Credentials. -+ errTransportCredsAndBundle = errors.New("grpc: credentials.Bundle may not be used with individual TransportCredentials") -+ // errNoTransportCredsInBundle indicated that the configured creds bundle -+ // returned a transport credentials which was nil. -+ errNoTransportCredsInBundle = errors.New("grpc: credentials.Bundle must return non-nil transport credentials") -+ // errTransportCredentialsMissing indicates that users want to transmit -+ // security information (e.g., OAuth2 token) which requires secure -+ // connection on an insecure connection. -+ errTransportCredentialsMissing = errors.New("grpc: the credentials require transport level security (use grpc.WithTransportCredentials() to set)") -+) -+ -+const ( -+ defaultClientMaxReceiveMessageSize = 1024 * 1024 * 4 -+ defaultClientMaxSendMessageSize = math.MaxInt32 -+ // http2IOBufSize specifies the buffer size for sending frames. -+ defaultWriteBufSize = 32 * 1024 -+ defaultReadBufSize = 32 * 1024 -+) -+ -+// Dial creates a client connection to the given target. -+func Dial(target string, opts ...DialOption) (*ClientConn, error) { -+ return DialContext(context.Background(), target, opts...) -+} -+ -+type defaultConfigSelector struct { -+ sc *ServiceConfig -+} -+ -+func (dcs *defaultConfigSelector) SelectConfig(rpcInfo iresolver.RPCInfo) (*iresolver.RPCConfig, error) { -+ return &iresolver.RPCConfig{ -+ Context: rpcInfo.Context, -+ MethodConfig: getMethodConfig(dcs.sc, rpcInfo.Method), -+ }, nil -+} -+ -+// DialContext creates a client connection to the given target. By default, it's -+// a non-blocking dial (the function won't wait for connections to be -+// established, and connecting happens in the background). To make it a blocking -+// dial, use WithBlock() dial option. -+// -+// In the non-blocking case, the ctx does not act against the connection. It -+// only controls the setup steps. -+// -+// In the blocking case, ctx can be used to cancel or expire the pending -+// connection. Once this function returns, the cancellation and expiration of -+// ctx will be noop. Users should call ClientConn.Close to terminate all the -+// pending operations after this function returns. -+// -+// The target name syntax is defined in -+// https://github.com/grpc/grpc/blob/master/doc/naming.md. -+// e.g. to use dns resolver, a "dns:///" prefix should be applied to the target. -+func DialContext(ctx context.Context, target string, opts ...DialOption) (conn *ClientConn, err error) { -+ cc := &ClientConn{ -+ target: target, -+ csMgr: &connectivityStateManager{}, -+ conns: make(map[*addrConn]struct{}), -+ dopts: defaultDialOptions(), -+ czData: new(channelzData), -+ } -+ -+ // We start the channel off in idle mode, but kick it out of idle at the end -+ // of this method, instead of waiting for the first RPC. Other gRPC -+ // implementations do wait for the first RPC to kick the channel out of -+ // idle. But doing so would be a major behavior change for our users who are -+ // used to seeing the channel active after Dial. -+ // -+ // Taking this approach of kicking it out of idle at the end of this method -+ // allows us to share the code between channel creation and exiting idle -+ // mode. This will also make it easy for us to switch to starting the -+ // channel off in idle, if at all we ever get to do that. -+ cc.idlenessState = ccIdlenessStateIdle -+ -+ cc.retryThrottler.Store((*retryThrottler)(nil)) -+ cc.safeConfigSelector.UpdateConfigSelector(&defaultConfigSelector{nil}) -+ cc.ctx, cc.cancel = context.WithCancel(context.Background()) -+ cc.exitIdleCond = sync.NewCond(&cc.mu) -+ -+ disableGlobalOpts := false -+ for _, opt := range opts { -+ if _, ok := opt.(*disableGlobalDialOptions); ok { -+ disableGlobalOpts = true -+ break -+ } -+ } -+ -+ if !disableGlobalOpts { -+ for _, opt := range globalDialOptions { -+ opt.apply(&cc.dopts) -+ } -+ } -+ -+ for _, opt := range opts { -+ opt.apply(&cc.dopts) -+ } -+ -+ chainUnaryClientInterceptors(cc) -+ chainStreamClientInterceptors(cc) -+ -+ defer func() { -+ if err != nil { -+ cc.Close() -+ } -+ }() -+ -+ // Register ClientConn with channelz. -+ cc.channelzRegistration(target) -+ -+ if err := cc.validateTransportCredentials(); err != nil { -+ return nil, err -+ } -+ -+ if cc.dopts.defaultServiceConfigRawJSON != nil { -+ scpr := parseServiceConfig(*cc.dopts.defaultServiceConfigRawJSON) -+ if scpr.Err != nil { -+ return nil, fmt.Errorf("%s: %v", invalidDefaultServiceConfigErrPrefix, scpr.Err) -+ } -+ cc.dopts.defaultServiceConfig, _ = scpr.Config.(*ServiceConfig) -+ } -+ cc.mkp = cc.dopts.copts.KeepaliveParams -+ -+ if cc.dopts.copts.UserAgent != "" { -+ cc.dopts.copts.UserAgent += " " + grpcUA -+ } else { -+ cc.dopts.copts.UserAgent = grpcUA -+ } -+ -+ if cc.dopts.timeout > 0 { -+ var cancel context.CancelFunc -+ ctx, cancel = context.WithTimeout(ctx, cc.dopts.timeout) -+ defer cancel() -+ } -+ defer func() { -+ select { -+ case <-ctx.Done(): -+ switch { -+ case ctx.Err() == err: -+ conn = nil -+ case err == nil || !cc.dopts.returnLastError: -+ conn, err = nil, ctx.Err() -+ default: -+ conn, err = nil, fmt.Errorf("%v: %v", ctx.Err(), err) -+ } -+ default: -+ } -+ }() -+ -+ if cc.dopts.bs == nil { -+ cc.dopts.bs = backoff.DefaultExponential -+ } -+ -+ // Determine the resolver to use. -+ if err := cc.parseTargetAndFindResolver(); err != nil { -+ return nil, err -+ } -+ if err = cc.determineAuthority(); err != nil { -+ return nil, err -+ } -+ -+ if cc.dopts.scChan != nil { -+ // Blocking wait for the initial service config. -+ select { -+ case sc, ok := <-cc.dopts.scChan: -+ if ok { -+ cc.sc = &sc -+ cc.safeConfigSelector.UpdateConfigSelector(&defaultConfigSelector{&sc}) -+ } -+ case <-ctx.Done(): -+ return nil, ctx.Err() -+ } -+ } -+ if cc.dopts.scChan != nil { -+ go cc.scWatcher() -+ } -+ -+ // This creates the name resolver, load balancer, blocking picker etc. -+ if err := cc.exitIdleMode(); err != nil { -+ return nil, err -+ } -+ -+ // Configure idleness support with configured idle timeout or default idle -+ // timeout duration. Idleness can be explicitly disabled by the user, by -+ // setting the dial option to 0. -+ cc.idlenessMgr = newIdlenessManager(cc, cc.dopts.idleTimeout) -+ -+ // Return early for non-blocking dials. -+ if !cc.dopts.block { -+ return cc, nil -+ } -+ -+ // A blocking dial blocks until the clientConn is ready. -+ for { -+ s := cc.GetState() -+ if s == connectivity.Idle { -+ cc.Connect() -+ } -+ if s == connectivity.Ready { -+ return cc, nil -+ } else if cc.dopts.copts.FailOnNonTempDialError && s == connectivity.TransientFailure { -+ if err = cc.connectionError(); err != nil { -+ terr, ok := err.(interface { -+ Temporary() bool -+ }) -+ if ok && !terr.Temporary() { -+ return nil, err -+ } -+ } -+ } -+ if !cc.WaitForStateChange(ctx, s) { -+ // ctx got timeout or canceled. -+ if err = cc.connectionError(); err != nil && cc.dopts.returnLastError { -+ return nil, err -+ } -+ return nil, ctx.Err() -+ } -+ } -+} -+ -+// addTraceEvent is a helper method to add a trace event on the channel. If the -+// channel is a nested one, the same event is also added on the parent channel. -+func (cc *ClientConn) addTraceEvent(msg string) { -+ ted := &channelz.TraceEventDesc{ -+ Desc: fmt.Sprintf("Channel %s", msg), -+ Severity: channelz.CtInfo, -+ } -+ if cc.dopts.channelzParentID != nil { -+ ted.Parent = &channelz.TraceEventDesc{ -+ Desc: fmt.Sprintf("Nested channel(id:%d) %s", cc.channelzID.Int(), msg), -+ Severity: channelz.CtInfo, -+ } -+ } -+ channelz.AddTraceEvent(logger, cc.channelzID, 0, ted) -+} -+ -+// exitIdleMode moves the channel out of idle mode by recreating the name -+// resolver and load balancer. -+func (cc *ClientConn) exitIdleMode() error { -+ cc.mu.Lock() -+ if cc.conns == nil { -+ cc.mu.Unlock() -+ return errConnClosing -+ } -+ if cc.idlenessState != ccIdlenessStateIdle { -+ cc.mu.Unlock() -+ logger.Info("ClientConn asked to exit idle mode when not in idle mode") -+ return nil -+ } -+ -+ defer func() { -+ // When Close() and exitIdleMode() race against each other, one of the -+ // following two can happen: -+ // - Close() wins the race and runs first. exitIdleMode() runs after, and -+ // sees that the ClientConn is already closed and hence returns early. -+ // - exitIdleMode() wins the race and runs first and recreates the balancer -+ // and releases the lock before recreating the resolver. If Close() runs -+ // in this window, it will wait for exitIdleMode to complete. -+ // -+ // We achieve this synchronization using the below condition variable. -+ cc.mu.Lock() -+ cc.idlenessState = ccIdlenessStateActive -+ cc.exitIdleCond.Signal() -+ cc.mu.Unlock() -+ }() -+ -+ cc.idlenessState = ccIdlenessStateExitingIdle -+ exitedIdle := false -+ if cc.blockingpicker == nil { -+ cc.blockingpicker = newPickerWrapper() -+ } else { -+ cc.blockingpicker.exitIdleMode() -+ exitedIdle = true -+ } -+ -+ var credsClone credentials.TransportCredentials -+ if creds := cc.dopts.copts.TransportCredentials; creds != nil { -+ credsClone = creds.Clone() -+ } -+ if cc.balancerWrapper == nil { -+ cc.balancerWrapper = newCCBalancerWrapper(cc, balancer.BuildOptions{ -+ DialCreds: credsClone, -+ CredsBundle: cc.dopts.copts.CredsBundle, -+ Dialer: cc.dopts.copts.Dialer, -+ Authority: cc.authority, -+ CustomUserAgent: cc.dopts.copts.UserAgent, -+ ChannelzParentID: cc.channelzID, -+ Target: cc.parsedTarget, -+ }) -+ } else { -+ cc.balancerWrapper.exitIdleMode() -+ } -+ cc.firstResolveEvent = grpcsync.NewEvent() -+ cc.mu.Unlock() -+ -+ // This needs to be called without cc.mu because this builds a new resolver -+ // which might update state or report error inline which needs to be handled -+ // by cc.updateResolverState() which also grabs cc.mu. -+ if err := cc.initResolverWrapper(credsClone); err != nil { -+ return err -+ } -+ -+ if exitedIdle { -+ cc.addTraceEvent("exiting idle mode") -+ } -+ return nil -+} -+ -+// enterIdleMode puts the channel in idle mode, and as part of it shuts down the -+// name resolver, load balancer and any subchannels. -+func (cc *ClientConn) enterIdleMode() error { -+ cc.mu.Lock() -+ if cc.conns == nil { -+ cc.mu.Unlock() -+ return ErrClientConnClosing -+ } -+ if cc.idlenessState != ccIdlenessStateActive { -+ logger.Error("ClientConn asked to enter idle mode when not active") -+ return nil -+ } -+ -+ // cc.conns == nil is a proxy for the ClientConn being closed. So, instead -+ // of setting it to nil here, we recreate the map. This also means that we -+ // don't have to do this when exiting idle mode. -+ conns := cc.conns -+ cc.conns = make(map[*addrConn]struct{}) -+ -+ // TODO: Currently, we close the resolver wrapper upon entering idle mode -+ // and create a new one upon exiting idle mode. This means that the -+ // `cc.resolverWrapper` field would be overwritten everytime we exit idle -+ // mode. While this means that we need to hold `cc.mu` when accessing -+ // `cc.resolverWrapper`, it makes the code simpler in the wrapper. We should -+ // try to do the same for the balancer and picker wrappers too. -+ cc.resolverWrapper.close() -+ cc.blockingpicker.enterIdleMode() -+ cc.balancerWrapper.enterIdleMode() -+ cc.csMgr.updateState(connectivity.Idle) -+ cc.idlenessState = ccIdlenessStateIdle -+ cc.mu.Unlock() -+ -+ go func() { -+ cc.addTraceEvent("entering idle mode") -+ for ac := range conns { -+ ac.tearDown(errConnIdling) -+ } -+ }() -+ return nil -+} -+ -+// validateTransportCredentials performs a series of checks on the configured -+// transport credentials. It returns a non-nil error if any of these conditions -+// are met: -+// - no transport creds and no creds bundle is configured -+// - both transport creds and creds bundle are configured -+// - creds bundle is configured, but it lacks a transport credentials -+// - insecure transport creds configured alongside call creds that require -+// transport level security -+// -+// If none of the above conditions are met, the configured credentials are -+// deemed valid and a nil error is returned. -+func (cc *ClientConn) validateTransportCredentials() error { -+ if cc.dopts.copts.TransportCredentials == nil && cc.dopts.copts.CredsBundle == nil { -+ return errNoTransportSecurity -+ } -+ if cc.dopts.copts.TransportCredentials != nil && cc.dopts.copts.CredsBundle != nil { -+ return errTransportCredsAndBundle -+ } -+ if cc.dopts.copts.CredsBundle != nil && cc.dopts.copts.CredsBundle.TransportCredentials() == nil { -+ return errNoTransportCredsInBundle -+ } -+ transportCreds := cc.dopts.copts.TransportCredentials -+ if transportCreds == nil { -+ transportCreds = cc.dopts.copts.CredsBundle.TransportCredentials() -+ } -+ if transportCreds.Info().SecurityProtocol == "insecure" { -+ for _, cd := range cc.dopts.copts.PerRPCCredentials { -+ if cd.RequireTransportSecurity() { -+ return errTransportCredentialsMissing -+ } -+ } -+ } -+ return nil -+} -+ -+// channelzRegistration registers the newly created ClientConn with channelz and -+// stores the returned identifier in `cc.channelzID` and `cc.csMgr.channelzID`. -+// A channelz trace event is emitted for ClientConn creation. If the newly -+// created ClientConn is a nested one, i.e a valid parent ClientConn ID is -+// specified via a dial option, the trace event is also added to the parent. -+// -+// Doesn't grab cc.mu as this method is expected to be called only at Dial time. -+func (cc *ClientConn) channelzRegistration(target string) { -+ cc.channelzID = channelz.RegisterChannel(&channelzChannel{cc}, cc.dopts.channelzParentID, target) -+ cc.addTraceEvent("created") -+ cc.csMgr.channelzID = cc.channelzID -+} -+ -+// chainUnaryClientInterceptors chains all unary client interceptors into one. -+func chainUnaryClientInterceptors(cc *ClientConn) { -+ interceptors := cc.dopts.chainUnaryInts -+ // Prepend dopts.unaryInt to the chaining interceptors if it exists, since unaryInt will -+ // be executed before any other chained interceptors. -+ if cc.dopts.unaryInt != nil { -+ interceptors = append([]UnaryClientInterceptor{cc.dopts.unaryInt}, interceptors...) -+ } -+ var chainedInt UnaryClientInterceptor -+ if len(interceptors) == 0 { -+ chainedInt = nil -+ } else if len(interceptors) == 1 { -+ chainedInt = interceptors[0] -+ } else { -+ chainedInt = func(ctx context.Context, method string, req, reply interface{}, cc *ClientConn, invoker UnaryInvoker, opts ...CallOption) error { -+ return interceptors[0](ctx, method, req, reply, cc, getChainUnaryInvoker(interceptors, 0, invoker), opts...) -+ } -+ } -+ cc.dopts.unaryInt = chainedInt -+} -+ -+// getChainUnaryInvoker recursively generate the chained unary invoker. -+func getChainUnaryInvoker(interceptors []UnaryClientInterceptor, curr int, finalInvoker UnaryInvoker) UnaryInvoker { -+ if curr == len(interceptors)-1 { -+ return finalInvoker -+ } -+ return func(ctx context.Context, method string, req, reply interface{}, cc *ClientConn, opts ...CallOption) error { -+ return interceptors[curr+1](ctx, method, req, reply, cc, getChainUnaryInvoker(interceptors, curr+1, finalInvoker), opts...) -+ } -+} -+ -+// chainStreamClientInterceptors chains all stream client interceptors into one. -+func chainStreamClientInterceptors(cc *ClientConn) { -+ interceptors := cc.dopts.chainStreamInts -+ // Prepend dopts.streamInt to the chaining interceptors if it exists, since streamInt will -+ // be executed before any other chained interceptors. -+ if cc.dopts.streamInt != nil { -+ interceptors = append([]StreamClientInterceptor{cc.dopts.streamInt}, interceptors...) -+ } -+ var chainedInt StreamClientInterceptor -+ if len(interceptors) == 0 { -+ chainedInt = nil -+ } else if len(interceptors) == 1 { -+ chainedInt = interceptors[0] -+ } else { -+ chainedInt = func(ctx context.Context, desc *StreamDesc, cc *ClientConn, method string, streamer Streamer, opts ...CallOption) (ClientStream, error) { -+ return interceptors[0](ctx, desc, cc, method, getChainStreamer(interceptors, 0, streamer), opts...) -+ } -+ } -+ cc.dopts.streamInt = chainedInt -+} -+ -+// getChainStreamer recursively generate the chained client stream constructor. -+func getChainStreamer(interceptors []StreamClientInterceptor, curr int, finalStreamer Streamer) Streamer { -+ if curr == len(interceptors)-1 { -+ return finalStreamer -+ } -+ return func(ctx context.Context, desc *StreamDesc, cc *ClientConn, method string, opts ...CallOption) (ClientStream, error) { -+ return interceptors[curr+1](ctx, desc, cc, method, getChainStreamer(interceptors, curr+1, finalStreamer), opts...) -+ } -+} -+ -+// connectivityStateManager keeps the connectivity.State of ClientConn. -+// This struct will eventually be exported so the balancers can access it. -+type connectivityStateManager struct { -+ mu sync.Mutex -+ state connectivity.State -+ notifyChan chan struct{} -+ channelzID *channelz.Identifier -+} -+ -+// updateState updates the connectivity.State of ClientConn. -+// If there's a change it notifies goroutines waiting on state change to -+// happen. -+func (csm *connectivityStateManager) updateState(state connectivity.State) { -+ csm.mu.Lock() -+ defer csm.mu.Unlock() -+ if csm.state == connectivity.Shutdown { -+ return -+ } -+ if csm.state == state { -+ return -+ } -+ csm.state = state -+ channelz.Infof(logger, csm.channelzID, "Channel Connectivity change to %v", state) -+ if csm.notifyChan != nil { -+ // There are other goroutines waiting on this channel. -+ close(csm.notifyChan) -+ csm.notifyChan = nil -+ } -+} -+ -+func (csm *connectivityStateManager) getState() connectivity.State { -+ csm.mu.Lock() -+ defer csm.mu.Unlock() -+ return csm.state -+} -+ -+func (csm *connectivityStateManager) getNotifyChan() <-chan struct{} { -+ csm.mu.Lock() -+ defer csm.mu.Unlock() -+ if csm.notifyChan == nil { -+ csm.notifyChan = make(chan struct{}) -+ } -+ return csm.notifyChan -+} -+ -+// ClientConnInterface defines the functions clients need to perform unary and -+// streaming RPCs. It is implemented by *ClientConn, and is only intended to -+// be referenced by generated code. -+type ClientConnInterface interface { -+ // Invoke performs a unary RPC and returns after the response is received -+ // into reply. -+ Invoke(ctx context.Context, method string, args interface{}, reply interface{}, opts ...CallOption) error -+ // NewStream begins a streaming RPC. -+ NewStream(ctx context.Context, desc *StreamDesc, method string, opts ...CallOption) (ClientStream, error) -+} -+ -+// Assert *ClientConn implements ClientConnInterface. -+var _ ClientConnInterface = (*ClientConn)(nil) -+ -+// ClientConn represents a virtual connection to a conceptual endpoint, to -+// perform RPCs. -+// -+// A ClientConn is free to have zero or more actual connections to the endpoint -+// based on configuration, load, etc. It is also free to determine which actual -+// endpoints to use and may change it every RPC, permitting client-side load -+// balancing. -+// -+// A ClientConn encapsulates a range of functionality including name -+// resolution, TCP connection establishment (with retries and backoff) and TLS -+// handshakes. It also handles errors on established connections by -+// re-resolving the name and reconnecting. -+type ClientConn struct { -+ ctx context.Context // Initialized using the background context at dial time. -+ cancel context.CancelFunc // Cancelled on close. -+ -+ // The following are initialized at dial time, and are read-only after that. -+ target string // User's dial target. -+ parsedTarget resolver.Target // See parseTargetAndFindResolver(). -+ authority string // See determineAuthority(). -+ dopts dialOptions // Default and user specified dial options. -+ channelzID *channelz.Identifier // Channelz identifier for the channel. -+ resolverBuilder resolver.Builder // See parseTargetAndFindResolver(). -+ balancerWrapper *ccBalancerWrapper // Uses gracefulswitch.balancer underneath. -+ idlenessMgr idlenessManager -+ -+ // The following provide their own synchronization, and therefore don't -+ // require cc.mu to be held to access them. -+ csMgr *connectivityStateManager -+ blockingpicker *pickerWrapper -+ safeConfigSelector iresolver.SafeConfigSelector -+ czData *channelzData -+ retryThrottler atomic.Value // Updated from service config. -+ -+ // firstResolveEvent is used to track whether the name resolver sent us at -+ // least one update. RPCs block on this event. -+ firstResolveEvent *grpcsync.Event -+ -+ // mu protects the following fields. -+ // TODO: split mu so the same mutex isn't used for everything. -+ mu sync.RWMutex -+ resolverWrapper *ccResolverWrapper // Initialized in Dial; cleared in Close. -+ sc *ServiceConfig // Latest service config received from the resolver. -+ conns map[*addrConn]struct{} // Set to nil on close. -+ mkp keepalive.ClientParameters // May be updated upon receipt of a GoAway. -+ idlenessState ccIdlenessState // Tracks idleness state of the channel. -+ exitIdleCond *sync.Cond // Signalled when channel exits idle. -+ -+ lceMu sync.Mutex // protects lastConnectionError -+ lastConnectionError error -+} -+ -+// ccIdlenessState tracks the idleness state of the channel. -+// -+// Channels start off in `active` and move to `idle` after a period of -+// inactivity. When moving back to `active` upon an incoming RPC, they -+// transition through `exiting_idle`. This state is useful for synchronization -+// with Close(). -+// -+// This state tracking is mostly for self-protection. The idlenessManager is -+// expected to keep track of the state as well, and is expected not to call into -+// the ClientConn unnecessarily. -+type ccIdlenessState int8 -+ -+const ( -+ ccIdlenessStateActive ccIdlenessState = iota -+ ccIdlenessStateIdle -+ ccIdlenessStateExitingIdle -+) -+ -+// WaitForStateChange waits until the connectivity.State of ClientConn changes from sourceState or -+// ctx expires. A true value is returned in former case and false in latter. -+// -+// # Experimental -+// -+// Notice: This API is EXPERIMENTAL and may be changed or removed in a -+// later release. -+func (cc *ClientConn) WaitForStateChange(ctx context.Context, sourceState connectivity.State) bool { -+ ch := cc.csMgr.getNotifyChan() -+ if cc.csMgr.getState() != sourceState { -+ return true -+ } -+ select { -+ case <-ctx.Done(): -+ return false -+ case <-ch: -+ return true -+ } -+} -+ -+// GetState returns the connectivity.State of ClientConn. -+// -+// # Experimental -+// -+// Notice: This API is EXPERIMENTAL and may be changed or removed in a later -+// release. -+func (cc *ClientConn) GetState() connectivity.State { -+ return cc.csMgr.getState() -+} -+ -+// Connect causes all subchannels in the ClientConn to attempt to connect if -+// the channel is idle. Does not wait for the connection attempts to begin -+// before returning. -+// -+// # Experimental -+// -+// Notice: This API is EXPERIMENTAL and may be changed or removed in a later -+// release. -+func (cc *ClientConn) Connect() { -+ cc.exitIdleMode() -+ // If the ClientConn was not in idle mode, we need to call ExitIdle on the -+ // LB policy so that connections can be created. -+ cc.balancerWrapper.exitIdleMode() -+} -+ -+func (cc *ClientConn) scWatcher() { -+ for { -+ select { -+ case sc, ok := <-cc.dopts.scChan: -+ if !ok { -+ return -+ } -+ cc.mu.Lock() -+ // TODO: load balance policy runtime change is ignored. -+ // We may revisit this decision in the future. -+ cc.sc = &sc -+ cc.safeConfigSelector.UpdateConfigSelector(&defaultConfigSelector{&sc}) -+ cc.mu.Unlock() -+ case <-cc.ctx.Done(): -+ return -+ } -+ } -+} -+ -+// waitForResolvedAddrs blocks until the resolver has provided addresses or the -+// context expires. Returns nil unless the context expires first; otherwise -+// returns a status error based on the context. -+func (cc *ClientConn) waitForResolvedAddrs(ctx context.Context) error { -+ // This is on the RPC path, so we use a fast path to avoid the -+ // more-expensive "select" below after the resolver has returned once. -+ if cc.firstResolveEvent.HasFired() { -+ return nil -+ } -+ select { -+ case <-cc.firstResolveEvent.Done(): -+ return nil -+ case <-ctx.Done(): -+ return status.FromContextError(ctx.Err()).Err() -+ case <-cc.ctx.Done(): -+ return ErrClientConnClosing -+ } -+} -+ -+var emptyServiceConfig *ServiceConfig -+ -+func init() { -+ cfg := parseServiceConfig("{}") -+ if cfg.Err != nil { -+ panic(fmt.Sprintf("impossible error parsing empty service config: %v", cfg.Err)) -+ } -+ emptyServiceConfig = cfg.Config.(*ServiceConfig) -+} -+ -+func (cc *ClientConn) maybeApplyDefaultServiceConfig(addrs []resolver.Address) { -+ if cc.sc != nil { -+ cc.applyServiceConfigAndBalancer(cc.sc, nil, addrs) -+ return -+ } -+ if cc.dopts.defaultServiceConfig != nil { -+ cc.applyServiceConfigAndBalancer(cc.dopts.defaultServiceConfig, &defaultConfigSelector{cc.dopts.defaultServiceConfig}, addrs) -+ } else { -+ cc.applyServiceConfigAndBalancer(emptyServiceConfig, &defaultConfigSelector{emptyServiceConfig}, addrs) -+ } -+} -+ -+func (cc *ClientConn) updateResolverState(s resolver.State, err error) error { -+ defer cc.firstResolveEvent.Fire() -+ cc.mu.Lock() -+ // Check if the ClientConn is already closed. Some fields (e.g. -+ // balancerWrapper) are set to nil when closing the ClientConn, and could -+ // cause nil pointer panic if we don't have this check. -+ if cc.conns == nil { -+ cc.mu.Unlock() -+ return nil -+ } -+ -+ if err != nil { -+ // May need to apply the initial service config in case the resolver -+ // doesn't support service configs, or doesn't provide a service config -+ // with the new addresses. -+ cc.maybeApplyDefaultServiceConfig(nil) -+ -+ cc.balancerWrapper.resolverError(err) -+ -+ // No addresses are valid with err set; return early. -+ cc.mu.Unlock() -+ return balancer.ErrBadResolverState -+ } -+ -+ var ret error -+ if cc.dopts.disableServiceConfig { -+ channelz.Infof(logger, cc.channelzID, "ignoring service config from resolver (%v) and applying the default because service config is disabled", s.ServiceConfig) -+ cc.maybeApplyDefaultServiceConfig(s.Addresses) -+ } else if s.ServiceConfig == nil { -+ cc.maybeApplyDefaultServiceConfig(s.Addresses) -+ // TODO: do we need to apply a failing LB policy if there is no -+ // default, per the error handling design? -+ } else { -+ if sc, ok := s.ServiceConfig.Config.(*ServiceConfig); s.ServiceConfig.Err == nil && ok { -+ configSelector := iresolver.GetConfigSelector(s) -+ if configSelector != nil { -+ if len(s.ServiceConfig.Config.(*ServiceConfig).Methods) != 0 { -+ channelz.Infof(logger, cc.channelzID, "method configs in service config will be ignored due to presence of config selector") -+ } -+ } else { -+ configSelector = &defaultConfigSelector{sc} -+ } -+ cc.applyServiceConfigAndBalancer(sc, configSelector, s.Addresses) -+ } else { -+ ret = balancer.ErrBadResolverState -+ if cc.sc == nil { -+ // Apply the failing LB only if we haven't received valid service config -+ // from the name resolver in the past. -+ cc.applyFailingLB(s.ServiceConfig) -+ cc.mu.Unlock() -+ return ret -+ } -+ } -+ } -+ -+ var balCfg serviceconfig.LoadBalancingConfig -+ if cc.sc != nil && cc.sc.lbConfig != nil { -+ balCfg = cc.sc.lbConfig.cfg -+ } -+ bw := cc.balancerWrapper -+ cc.mu.Unlock() -+ -+ uccsErr := bw.updateClientConnState(&balancer.ClientConnState{ResolverState: s, BalancerConfig: balCfg}) -+ if ret == nil { -+ ret = uccsErr // prefer ErrBadResolver state since any other error is -+ // currently meaningless to the caller. -+ } -+ return ret -+} -+ -+// applyFailingLB is akin to configuring an LB policy on the channel which -+// always fails RPCs. Here, an actual LB policy is not configured, but an always -+// erroring picker is configured, which returns errors with information about -+// what was invalid in the received service config. A config selector with no -+// service config is configured, and the connectivity state of the channel is -+// set to TransientFailure. -+// -+// Caller must hold cc.mu. -+func (cc *ClientConn) applyFailingLB(sc *serviceconfig.ParseResult) { -+ var err error -+ if sc.Err != nil { -+ err = status.Errorf(codes.Unavailable, "error parsing service config: %v", sc.Err) -+ } else { -+ err = status.Errorf(codes.Unavailable, "illegal service config type: %T", sc.Config) -+ } -+ cc.safeConfigSelector.UpdateConfigSelector(&defaultConfigSelector{nil}) -+ cc.blockingpicker.updatePicker(base.NewErrPicker(err)) -+ cc.csMgr.updateState(connectivity.TransientFailure) -+} -+ -+func (cc *ClientConn) handleSubConnStateChange(sc balancer.SubConn, s connectivity.State, err error) { -+ cc.balancerWrapper.updateSubConnState(sc, s, err) -+} -+ -+// Makes a copy of the input addresses slice and clears out the balancer -+// attributes field. Addresses are passed during subconn creation and address -+// update operations. In both cases, we will clear the balancer attributes by -+// calling this function, and therefore we will be able to use the Equal method -+// provided by the resolver.Address type for comparison. -+func copyAddressesWithoutBalancerAttributes(in []resolver.Address) []resolver.Address { -+ out := make([]resolver.Address, len(in)) -+ for i := range in { -+ out[i] = in[i] -+ out[i].BalancerAttributes = nil -+ } -+ return out -+} -+ -+// newAddrConn creates an addrConn for addrs and adds it to cc.conns. -+// -+// Caller needs to make sure len(addrs) > 0. -+func (cc *ClientConn) newAddrConn(addrs []resolver.Address, opts balancer.NewSubConnOptions) (*addrConn, error) { -+ ac := &addrConn{ -+ state: connectivity.Idle, -+ cc: cc, -+ addrs: copyAddressesWithoutBalancerAttributes(addrs), -+ scopts: opts, -+ dopts: cc.dopts, -+ czData: new(channelzData), -+ resetBackoff: make(chan struct{}), -+ stateChan: make(chan struct{}), -+ } -+ ac.ctx, ac.cancel = context.WithCancel(cc.ctx) -+ // Track ac in cc. This needs to be done before any getTransport(...) is called. -+ cc.mu.Lock() -+ defer cc.mu.Unlock() -+ if cc.conns == nil { -+ return nil, ErrClientConnClosing -+ } -+ -+ var err error -+ ac.channelzID, err = channelz.RegisterSubChannel(ac, cc.channelzID, "") -+ if err != nil { -+ return nil, err -+ } -+ channelz.AddTraceEvent(logger, ac.channelzID, 0, &channelz.TraceEventDesc{ -+ Desc: "Subchannel created", -+ Severity: channelz.CtInfo, -+ Parent: &channelz.TraceEventDesc{ -+ Desc: fmt.Sprintf("Subchannel(id:%d) created", ac.channelzID.Int()), -+ Severity: channelz.CtInfo, -+ }, -+ }) -+ -+ cc.conns[ac] = struct{}{} -+ return ac, nil -+} -+ -+// removeAddrConn removes the addrConn in the subConn from clientConn. -+// It also tears down the ac with the given error. -+func (cc *ClientConn) removeAddrConn(ac *addrConn, err error) { -+ cc.mu.Lock() -+ if cc.conns == nil { -+ cc.mu.Unlock() -+ return -+ } -+ delete(cc.conns, ac) -+ cc.mu.Unlock() -+ ac.tearDown(err) -+} -+ -+func (cc *ClientConn) channelzMetric() *channelz.ChannelInternalMetric { -+ return &channelz.ChannelInternalMetric{ -+ State: cc.GetState(), -+ Target: cc.target, -+ CallsStarted: atomic.LoadInt64(&cc.czData.callsStarted), -+ CallsSucceeded: atomic.LoadInt64(&cc.czData.callsSucceeded), -+ CallsFailed: atomic.LoadInt64(&cc.czData.callsFailed), -+ LastCallStartedTimestamp: time.Unix(0, atomic.LoadInt64(&cc.czData.lastCallStartedTime)), -+ } -+} -+ -+// Target returns the target string of the ClientConn. -+// -+// # Experimental -+// -+// Notice: This API is EXPERIMENTAL and may be changed or removed in a -+// later release. -+func (cc *ClientConn) Target() string { -+ return cc.target -+} -+ -+func (cc *ClientConn) incrCallsStarted() { -+ atomic.AddInt64(&cc.czData.callsStarted, 1) -+ atomic.StoreInt64(&cc.czData.lastCallStartedTime, time.Now().UnixNano()) -+} -+ -+func (cc *ClientConn) incrCallsSucceeded() { -+ atomic.AddInt64(&cc.czData.callsSucceeded, 1) -+} -+ -+func (cc *ClientConn) incrCallsFailed() { -+ atomic.AddInt64(&cc.czData.callsFailed, 1) -+} -+ -+// connect starts creating a transport. -+// It does nothing if the ac is not IDLE. -+// TODO(bar) Move this to the addrConn section. -+func (ac *addrConn) connect() error { -+ ac.mu.Lock() -+ if ac.state == connectivity.Shutdown { -+ if logger.V(2) { -+ logger.Infof("connect called on shutdown addrConn; ignoring.") -+ } -+ ac.mu.Unlock() -+ return errConnClosing -+ } -+ if ac.state != connectivity.Idle { -+ if logger.V(2) { -+ logger.Infof("connect called on addrConn in non-idle state (%v); ignoring.", ac.state) -+ } -+ ac.mu.Unlock() -+ return nil -+ } -+ ac.mu.Unlock() -+ -+ ac.resetTransport() -+ return nil -+} -+ -+func equalAddresses(a, b []resolver.Address) bool { -+ if len(a) != len(b) { -+ return false -+ } -+ for i, v := range a { -+ if !v.Equal(b[i]) { -+ return false -+ } -+ } -+ return true -+} -+ -+// updateAddrs updates ac.addrs with the new addresses list and handles active -+// connections or connection attempts. -+func (ac *addrConn) updateAddrs(addrs []resolver.Address) { -+ ac.mu.Lock() -+ channelz.Infof(logger, ac.channelzID, "addrConn: updateAddrs curAddr: %v, addrs: %v", pretty.ToJSON(ac.curAddr), pretty.ToJSON(addrs)) -+ -+ addrs = copyAddressesWithoutBalancerAttributes(addrs) -+ if equalAddresses(ac.addrs, addrs) { -+ ac.mu.Unlock() -+ return -+ } -+ -+ ac.addrs = addrs -+ -+ if ac.state == connectivity.Shutdown || -+ ac.state == connectivity.TransientFailure || -+ ac.state == connectivity.Idle { -+ // We were not connecting, so do nothing but update the addresses. -+ ac.mu.Unlock() -+ return -+ } -+ -+ if ac.state == connectivity.Ready { -+ // Try to find the connected address. -+ for _, a := range addrs { -+ a.ServerName = ac.cc.getServerName(a) -+ if a.Equal(ac.curAddr) { -+ // We are connected to a valid address, so do nothing but -+ // update the addresses. -+ ac.mu.Unlock() -+ return -+ } -+ } -+ } -+ -+ // We are either connected to the wrong address or currently connecting. -+ // Stop the current iteration and restart. -+ -+ ac.cancel() -+ ac.ctx, ac.cancel = context.WithCancel(ac.cc.ctx) -+ -+ // We have to defer here because GracefulClose => Close => onClose, which -+ // requires locking ac.mu. -+ if ac.transport != nil { -+ defer ac.transport.GracefulClose() -+ ac.transport = nil -+ } -+ -+ if len(addrs) == 0 { -+ ac.updateConnectivityState(connectivity.Idle, nil) -+ } -+ -+ ac.mu.Unlock() -+ -+ // Since we were connecting/connected, we should start a new connection -+ // attempt. -+ go ac.resetTransport() -+} -+ -+// getServerName determines the serverName to be used in the connection -+// handshake. The default value for the serverName is the authority on the -+// ClientConn, which either comes from the user's dial target or through an -+// authority override specified using the WithAuthority dial option. Name -+// resolvers can specify a per-address override for the serverName through the -+// resolver.Address.ServerName field which is used only if the WithAuthority -+// dial option was not used. The rationale is that per-address authority -+// overrides specified by the name resolver can represent a security risk, while -+// an override specified by the user is more dependable since they probably know -+// what they are doing. -+func (cc *ClientConn) getServerName(addr resolver.Address) string { -+ if cc.dopts.authority != "" { -+ return cc.dopts.authority -+ } -+ if addr.ServerName != "" { -+ return addr.ServerName -+ } -+ return cc.authority -+} -+ -+func getMethodConfig(sc *ServiceConfig, method string) MethodConfig { -+ if sc == nil { -+ return MethodConfig{} -+ } -+ if m, ok := sc.Methods[method]; ok { -+ return m -+ } -+ i := strings.LastIndex(method, "/") -+ if m, ok := sc.Methods[method[:i+1]]; ok { -+ return m -+ } -+ return sc.Methods[""] -+} -+ -+// GetMethodConfig gets the method config of the input method. -+// If there's an exact match for input method (i.e. /service/method), we return -+// the corresponding MethodConfig. -+// If there isn't an exact match for the input method, we look for the service's default -+// config under the service (i.e /service/) and then for the default for all services (empty string). -+// -+// If there is a default MethodConfig for the service, we return it. -+// Otherwise, we return an empty MethodConfig. -+func (cc *ClientConn) GetMethodConfig(method string) MethodConfig { -+ // TODO: Avoid the locking here. -+ cc.mu.RLock() -+ defer cc.mu.RUnlock() -+ return getMethodConfig(cc.sc, method) -+} -+ -+func (cc *ClientConn) healthCheckConfig() *healthCheckConfig { -+ cc.mu.RLock() -+ defer cc.mu.RUnlock() -+ if cc.sc == nil { -+ return nil -+ } -+ return cc.sc.healthCheckConfig -+} -+ -+func (cc *ClientConn) getTransport(ctx context.Context, failfast bool, method string) (transport.ClientTransport, balancer.PickResult, error) { -+ return cc.blockingpicker.pick(ctx, failfast, balancer.PickInfo{ -+ Ctx: ctx, -+ FullMethodName: method, -+ }) -+} -+ -+func (cc *ClientConn) applyServiceConfigAndBalancer(sc *ServiceConfig, configSelector iresolver.ConfigSelector, addrs []resolver.Address) { -+ if sc == nil { -+ // should never reach here. -+ return -+ } -+ cc.sc = sc -+ if configSelector != nil { -+ cc.safeConfigSelector.UpdateConfigSelector(configSelector) -+ } -+ -+ if cc.sc.retryThrottling != nil { -+ newThrottler := &retryThrottler{ -+ tokens: cc.sc.retryThrottling.MaxTokens, -+ max: cc.sc.retryThrottling.MaxTokens, -+ thresh: cc.sc.retryThrottling.MaxTokens / 2, -+ ratio: cc.sc.retryThrottling.TokenRatio, -+ } -+ cc.retryThrottler.Store(newThrottler) -+ } else { -+ cc.retryThrottler.Store((*retryThrottler)(nil)) -+ } -+ -+ var newBalancerName string -+ if cc.sc != nil && cc.sc.lbConfig != nil { -+ newBalancerName = cc.sc.lbConfig.name -+ } else { -+ var isGRPCLB bool -+ for _, a := range addrs { -+ if a.Type == resolver.GRPCLB { -+ isGRPCLB = true -+ break -+ } -+ } -+ if isGRPCLB { -+ newBalancerName = grpclbName -+ } else if cc.sc != nil && cc.sc.LB != nil { -+ newBalancerName = *cc.sc.LB -+ } else { -+ newBalancerName = PickFirstBalancerName -+ } -+ } -+ cc.balancerWrapper.switchTo(newBalancerName) -+} -+ -+func (cc *ClientConn) resolveNow(o resolver.ResolveNowOptions) { -+ cc.mu.RLock() -+ r := cc.resolverWrapper -+ cc.mu.RUnlock() -+ if r == nil { -+ return -+ } -+ go r.resolveNow(o) -+} -+ -+// ResetConnectBackoff wakes up all subchannels in transient failure and causes -+// them to attempt another connection immediately. It also resets the backoff -+// times used for subsequent attempts regardless of the current state. -+// -+// In general, this function should not be used. Typical service or network -+// outages result in a reasonable client reconnection strategy by default. -+// However, if a previously unavailable network becomes available, this may be -+// used to trigger an immediate reconnect. -+// -+// # Experimental -+// -+// Notice: This API is EXPERIMENTAL and may be changed or removed in a -+// later release. -+func (cc *ClientConn) ResetConnectBackoff() { -+ cc.mu.Lock() -+ conns := cc.conns -+ cc.mu.Unlock() -+ for ac := range conns { -+ ac.resetConnectBackoff() -+ } -+} -+ -+// Close tears down the ClientConn and all underlying connections. -+func (cc *ClientConn) Close() error { -+ defer cc.cancel() -+ -+ cc.mu.Lock() -+ if cc.conns == nil { -+ cc.mu.Unlock() -+ return ErrClientConnClosing -+ } -+ -+ for cc.idlenessState == ccIdlenessStateExitingIdle { -+ cc.exitIdleCond.Wait() -+ } -+ -+ conns := cc.conns -+ cc.conns = nil -+ cc.csMgr.updateState(connectivity.Shutdown) -+ -+ pWrapper := cc.blockingpicker -+ rWrapper := cc.resolverWrapper -+ bWrapper := cc.balancerWrapper -+ idlenessMgr := cc.idlenessMgr -+ cc.mu.Unlock() -+ -+ // The order of closing matters here since the balancer wrapper assumes the -+ // picker is closed before it is closed. -+ if pWrapper != nil { -+ pWrapper.close() -+ } -+ if bWrapper != nil { -+ bWrapper.close() -+ } -+ if rWrapper != nil { -+ rWrapper.close() -+ } -+ if idlenessMgr != nil { -+ idlenessMgr.close() -+ } -+ -+ for ac := range conns { -+ ac.tearDown(ErrClientConnClosing) -+ } -+ cc.addTraceEvent("deleted") -+ // TraceEvent needs to be called before RemoveEntry, as TraceEvent may add -+ // trace reference to the entity being deleted, and thus prevent it from being -+ // deleted right away. -+ channelz.RemoveEntry(cc.channelzID) -+ -+ return nil -+} -+ -+// addrConn is a network connection to a given address. -+type addrConn struct { -+ ctx context.Context -+ cancel context.CancelFunc -+ -+ cc *ClientConn -+ dopts dialOptions -+ acbw balancer.SubConn -+ scopts balancer.NewSubConnOptions -+ -+ // transport is set when there's a viable transport (note: ac state may not be READY as LB channel -+ // health checking may require server to report healthy to set ac to READY), and is reset -+ // to nil when the current transport should no longer be used to create a stream (e.g. after GoAway -+ // is received, transport is closed, ac has been torn down). -+ transport transport.ClientTransport // The current transport. -+ -+ mu sync.Mutex -+ curAddr resolver.Address // The current address. -+ addrs []resolver.Address // All addresses that the resolver resolved to. -+ -+ // Use updateConnectivityState for updating addrConn's connectivity state. -+ state connectivity.State -+ stateChan chan struct{} // closed and recreated on every state change. -+ -+ backoffIdx int // Needs to be stateful for resetConnectBackoff. -+ resetBackoff chan struct{} -+ -+ channelzID *channelz.Identifier -+ czData *channelzData -+} -+ -+// Note: this requires a lock on ac.mu. -+func (ac *addrConn) updateConnectivityState(s connectivity.State, lastErr error) { -+ if ac.state == s { -+ return -+ } -+ // When changing states, reset the state change channel. -+ close(ac.stateChan) -+ ac.stateChan = make(chan struct{}) -+ ac.state = s -+ if lastErr == nil { -+ channelz.Infof(logger, ac.channelzID, "Subchannel Connectivity change to %v", s) -+ } else { -+ channelz.Infof(logger, ac.channelzID, "Subchannel Connectivity change to %v, last error: %s", s, lastErr) -+ } -+ ac.cc.handleSubConnStateChange(ac.acbw, s, lastErr) -+} -+ -+// adjustParams updates parameters used to create transports upon -+// receiving a GoAway. -+func (ac *addrConn) adjustParams(r transport.GoAwayReason) { -+ switch r { -+ case transport.GoAwayTooManyPings: -+ v := 2 * ac.dopts.copts.KeepaliveParams.Time -+ ac.cc.mu.Lock() -+ if v > ac.cc.mkp.Time { -+ ac.cc.mkp.Time = v -+ } -+ ac.cc.mu.Unlock() -+ } -+} -+ -+func (ac *addrConn) resetTransport() { -+ ac.mu.Lock() -+ acCtx := ac.ctx -+ if acCtx.Err() != nil { -+ ac.mu.Unlock() -+ return -+ } -+ -+ addrs := ac.addrs -+ backoffFor := ac.dopts.bs.Backoff(ac.backoffIdx) -+ // This will be the duration that dial gets to finish. -+ dialDuration := minConnectTimeout -+ if ac.dopts.minConnectTimeout != nil { -+ dialDuration = ac.dopts.minConnectTimeout() -+ } -+ -+ if dialDuration < backoffFor { -+ // Give dial more time as we keep failing to connect. -+ dialDuration = backoffFor -+ } -+ // We can potentially spend all the time trying the first address, and -+ // if the server accepts the connection and then hangs, the following -+ // addresses will never be tried. -+ // -+ // The spec doesn't mention what should be done for multiple addresses. -+ // https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md#proposed-backoff-algorithm -+ connectDeadline := time.Now().Add(dialDuration) -+ -+ ac.updateConnectivityState(connectivity.Connecting, nil) -+ ac.mu.Unlock() -+ -+ if err := ac.tryAllAddrs(acCtx, addrs, connectDeadline); err != nil { -+ ac.cc.resolveNow(resolver.ResolveNowOptions{}) -+ // After exhausting all addresses, the addrConn enters -+ // TRANSIENT_FAILURE. -+ if acCtx.Err() != nil { -+ return -+ } -+ ac.mu.Lock() -+ ac.updateConnectivityState(connectivity.TransientFailure, err) -+ -+ // Backoff. -+ b := ac.resetBackoff -+ ac.mu.Unlock() -+ -+ timer := time.NewTimer(backoffFor) -+ select { -+ case <-timer.C: -+ ac.mu.Lock() -+ ac.backoffIdx++ -+ ac.mu.Unlock() -+ case <-b: -+ timer.Stop() -+ case <-acCtx.Done(): -+ timer.Stop() -+ return -+ } -+ -+ ac.mu.Lock() -+ if acCtx.Err() == nil { -+ ac.updateConnectivityState(connectivity.Idle, err) -+ } -+ ac.mu.Unlock() -+ return -+ } -+ // Success; reset backoff. -+ ac.mu.Lock() -+ ac.backoffIdx = 0 -+ ac.mu.Unlock() -+} -+ -+// tryAllAddrs tries to creates a connection to the addresses, and stop when at -+// the first successful one. It returns an error if no address was successfully -+// connected, or updates ac appropriately with the new transport. -+func (ac *addrConn) tryAllAddrs(ctx context.Context, addrs []resolver.Address, connectDeadline time.Time) error { -+ var firstConnErr error -+ for _, addr := range addrs { -+ if ctx.Err() != nil { -+ return errConnClosing -+ } -+ ac.mu.Lock() -+ -+ ac.cc.mu.RLock() -+ ac.dopts.copts.KeepaliveParams = ac.cc.mkp -+ ac.cc.mu.RUnlock() -+ -+ copts := ac.dopts.copts -+ if ac.scopts.CredsBundle != nil { -+ copts.CredsBundle = ac.scopts.CredsBundle -+ } -+ ac.mu.Unlock() -+ -+ channelz.Infof(logger, ac.channelzID, "Subchannel picks a new address %q to connect", addr.Addr) -+ -+ err := ac.createTransport(ctx, addr, copts, connectDeadline) -+ if err == nil { -+ return nil -+ } -+ if firstConnErr == nil { -+ firstConnErr = err -+ } -+ ac.cc.updateConnectionError(err) -+ } -+ -+ // Couldn't connect to any address. -+ return firstConnErr -+} -+ -+// createTransport creates a connection to addr. It returns an error if the -+// address was not successfully connected, or updates ac appropriately with the -+// new transport. -+func (ac *addrConn) createTransport(ctx context.Context, addr resolver.Address, copts transport.ConnectOptions, connectDeadline time.Time) error { -+ addr.ServerName = ac.cc.getServerName(addr) -+ hctx, hcancel := context.WithCancel(ctx) -+ -+ onClose := func(r transport.GoAwayReason) { -+ ac.mu.Lock() -+ defer ac.mu.Unlock() -+ // adjust params based on GoAwayReason -+ ac.adjustParams(r) -+ if ctx.Err() != nil { -+ // Already shut down or connection attempt canceled. tearDown() or -+ // updateAddrs() already cleared the transport and canceled hctx -+ // via ac.ctx, and we expected this connection to be closed, so do -+ // nothing here. -+ return -+ } -+ hcancel() -+ if ac.transport == nil { -+ // We're still connecting to this address, which could error. Do -+ // not update the connectivity state or resolve; these will happen -+ // at the end of the tryAllAddrs connection loop in the event of an -+ // error. -+ return -+ } -+ ac.transport = nil -+ // Refresh the name resolver on any connection loss. -+ ac.cc.resolveNow(resolver.ResolveNowOptions{}) -+ // Always go idle and wait for the LB policy to initiate a new -+ // connection attempt. -+ ac.updateConnectivityState(connectivity.Idle, nil) -+ } -+ -+ connectCtx, cancel := context.WithDeadline(ctx, connectDeadline) -+ defer cancel() -+ copts.ChannelzParentID = ac.channelzID -+ -+ newTr, err := transport.NewClientTransport(connectCtx, ac.cc.ctx, addr, copts, onClose) -+ if err != nil { -+ if logger.V(2) { -+ logger.Infof("Creating new client transport to %q: %v", addr, err) -+ } -+ // newTr is either nil, or closed. -+ hcancel() -+ channelz.Warningf(logger, ac.channelzID, "grpc: addrConn.createTransport failed to connect to %s. Err: %v", addr, err) -+ return err -+ } -+ -+ ac.mu.Lock() -+ defer ac.mu.Unlock() -+ if ctx.Err() != nil { -+ // This can happen if the subConn was removed while in `Connecting` -+ // state. tearDown() would have set the state to `Shutdown`, but -+ // would not have closed the transport since ac.transport would not -+ // have been set at that point. -+ // -+ // We run this in a goroutine because newTr.Close() calls onClose() -+ // inline, which requires locking ac.mu. -+ // -+ // The error we pass to Close() is immaterial since there are no open -+ // streams at this point, so no trailers with error details will be sent -+ // out. We just need to pass a non-nil error. -+ // -+ // This can also happen when updateAddrs is called during a connection -+ // attempt. -+ go newTr.Close(transport.ErrConnClosing) -+ return nil -+ } -+ if hctx.Err() != nil { -+ // onClose was already called for this connection, but the connection -+ // was successfully established first. Consider it a success and set -+ // the new state to Idle. -+ ac.updateConnectivityState(connectivity.Idle, nil) -+ return nil -+ } -+ ac.curAddr = addr -+ ac.transport = newTr -+ ac.startHealthCheck(hctx) // Will set state to READY if appropriate. -+ return nil -+} -+ -+// startHealthCheck starts the health checking stream (RPC) to watch the health -+// stats of this connection if health checking is requested and configured. -+// -+// LB channel health checking is enabled when all requirements below are met: -+// 1. it is not disabled by the user with the WithDisableHealthCheck DialOption -+// 2. internal.HealthCheckFunc is set by importing the grpc/health package -+// 3. a service config with non-empty healthCheckConfig field is provided -+// 4. the load balancer requests it -+// -+// It sets addrConn to READY if the health checking stream is not started. -+// -+// Caller must hold ac.mu. -+func (ac *addrConn) startHealthCheck(ctx context.Context) { -+ var healthcheckManagingState bool -+ defer func() { -+ if !healthcheckManagingState { -+ ac.updateConnectivityState(connectivity.Ready, nil) -+ } -+ }() -+ -+ if ac.cc.dopts.disableHealthCheck { -+ return -+ } -+ healthCheckConfig := ac.cc.healthCheckConfig() -+ if healthCheckConfig == nil { -+ return -+ } -+ if !ac.scopts.HealthCheckEnabled { -+ return -+ } -+ healthCheckFunc := ac.cc.dopts.healthCheckFunc -+ if healthCheckFunc == nil { -+ // The health package is not imported to set health check function. -+ // -+ // TODO: add a link to the health check doc in the error message. -+ channelz.Error(logger, ac.channelzID, "Health check is requested but health check function is not set.") -+ return -+ } -+ -+ healthcheckManagingState = true -+ -+ // Set up the health check helper functions. -+ currentTr := ac.transport -+ newStream := func(method string) (interface{}, error) { -+ ac.mu.Lock() -+ if ac.transport != currentTr { -+ ac.mu.Unlock() -+ return nil, status.Error(codes.Canceled, "the provided transport is no longer valid to use") -+ } -+ ac.mu.Unlock() -+ return newNonRetryClientStream(ctx, &StreamDesc{ServerStreams: true}, method, currentTr, ac) -+ } -+ setConnectivityState := func(s connectivity.State, lastErr error) { -+ ac.mu.Lock() -+ defer ac.mu.Unlock() -+ if ac.transport != currentTr { -+ return -+ } -+ ac.updateConnectivityState(s, lastErr) -+ } -+ // Start the health checking stream. -+ go func() { -+ err := ac.cc.dopts.healthCheckFunc(ctx, newStream, setConnectivityState, healthCheckConfig.ServiceName) -+ if err != nil { -+ if status.Code(err) == codes.Unimplemented { -+ channelz.Error(logger, ac.channelzID, "Subchannel health check is unimplemented at server side, thus health check is disabled") -+ } else { -+ channelz.Errorf(logger, ac.channelzID, "Health checking failed: %v", err) -+ } -+ } -+ }() -+} -+ -+func (ac *addrConn) resetConnectBackoff() { -+ ac.mu.Lock() -+ close(ac.resetBackoff) -+ ac.backoffIdx = 0 -+ ac.resetBackoff = make(chan struct{}) -+ ac.mu.Unlock() -+} -+ -+// getReadyTransport returns the transport if ac's state is READY or nil if not. -+func (ac *addrConn) getReadyTransport() transport.ClientTransport { -+ ac.mu.Lock() -+ defer ac.mu.Unlock() -+ if ac.state == connectivity.Ready { -+ return ac.transport -+ } -+ return nil -+} -+ -+// getTransport waits until the addrconn is ready and returns the transport. -+// If the context expires first, returns an appropriate status. If the -+// addrConn is stopped first, returns an Unavailable status error. -+func (ac *addrConn) getTransport(ctx context.Context) (transport.ClientTransport, error) { -+ for ctx.Err() == nil { -+ ac.mu.Lock() -+ t, state, sc := ac.transport, ac.state, ac.stateChan -+ ac.mu.Unlock() -+ if state == connectivity.Ready { -+ return t, nil -+ } -+ if state == connectivity.Shutdown { -+ return nil, status.Errorf(codes.Unavailable, "SubConn shutting down") -+ } -+ -+ select { -+ case <-ctx.Done(): -+ case <-sc: -+ } -+ } -+ return nil, status.FromContextError(ctx.Err()).Err() -+} -+ -+// tearDown starts to tear down the addrConn. -+// -+// Note that tearDown doesn't remove ac from ac.cc.conns, so the addrConn struct -+// will leak. In most cases, call cc.removeAddrConn() instead. -+func (ac *addrConn) tearDown(err error) { -+ ac.mu.Lock() -+ if ac.state == connectivity.Shutdown { -+ ac.mu.Unlock() -+ return -+ } -+ curTr := ac.transport -+ ac.transport = nil -+ // We have to set the state to Shutdown before anything else to prevent races -+ // between setting the state and logic that waits on context cancellation / etc. -+ ac.updateConnectivityState(connectivity.Shutdown, nil) -+ ac.cancel() -+ ac.curAddr = resolver.Address{} -+ if err == errConnDrain && curTr != nil { -+ // GracefulClose(...) may be executed multiple times when -+ // i) receiving multiple GoAway frames from the server; or -+ // ii) there are concurrent name resolver/Balancer triggered -+ // address removal and GoAway. -+ // We have to unlock and re-lock here because GracefulClose => Close => onClose, which requires locking ac.mu. -+ ac.mu.Unlock() -+ curTr.GracefulClose() -+ ac.mu.Lock() -+ } -+ channelz.AddTraceEvent(logger, ac.channelzID, 0, &channelz.TraceEventDesc{ -+ Desc: "Subchannel deleted", -+ Severity: channelz.CtInfo, -+ Parent: &channelz.TraceEventDesc{ -+ Desc: fmt.Sprintf("Subchannel(id:%d) deleted", ac.channelzID.Int()), -+ Severity: channelz.CtInfo, -+ }, -+ }) -+ // TraceEvent needs to be called before RemoveEntry, as TraceEvent may add -+ // trace reference to the entity being deleted, and thus prevent it from -+ // being deleted right away. -+ channelz.RemoveEntry(ac.channelzID) -+ ac.mu.Unlock() -+} -+ -+func (ac *addrConn) getState() connectivity.State { -+ ac.mu.Lock() -+ defer ac.mu.Unlock() -+ return ac.state -+} -+ -+func (ac *addrConn) ChannelzMetric() *channelz.ChannelInternalMetric { -+ ac.mu.Lock() -+ addr := ac.curAddr.Addr -+ ac.mu.Unlock() -+ return &channelz.ChannelInternalMetric{ -+ State: ac.getState(), -+ Target: addr, -+ CallsStarted: atomic.LoadInt64(&ac.czData.callsStarted), -+ CallsSucceeded: atomic.LoadInt64(&ac.czData.callsSucceeded), -+ CallsFailed: atomic.LoadInt64(&ac.czData.callsFailed), -+ LastCallStartedTimestamp: time.Unix(0, atomic.LoadInt64(&ac.czData.lastCallStartedTime)), -+ } -+} -+ -+func (ac *addrConn) incrCallsStarted() { -+ atomic.AddInt64(&ac.czData.callsStarted, 1) -+ atomic.StoreInt64(&ac.czData.lastCallStartedTime, time.Now().UnixNano()) -+} -+ -+func (ac *addrConn) incrCallsSucceeded() { -+ atomic.AddInt64(&ac.czData.callsSucceeded, 1) -+} -+ -+func (ac *addrConn) incrCallsFailed() { -+ atomic.AddInt64(&ac.czData.callsFailed, 1) -+} -+ -+type retryThrottler struct { -+ max float64 -+ thresh float64 -+ ratio float64 -+ -+ mu sync.Mutex -+ tokens float64 // TODO(dfawley): replace with atomic and remove lock. -+} -+ -+// throttle subtracts a retry token from the pool and returns whether a retry -+// should be throttled (disallowed) based upon the retry throttling policy in -+// the service config. -+func (rt *retryThrottler) throttle() bool { -+ if rt == nil { -+ return false -+ } -+ rt.mu.Lock() -+ defer rt.mu.Unlock() -+ rt.tokens-- -+ if rt.tokens < 0 { -+ rt.tokens = 0 -+ } -+ return rt.tokens <= rt.thresh -+} -+ -+func (rt *retryThrottler) successfulRPC() { -+ if rt == nil { -+ return -+ } -+ rt.mu.Lock() -+ defer rt.mu.Unlock() -+ rt.tokens += rt.ratio -+ if rt.tokens > rt.max { -+ rt.tokens = rt.max -+ } -+} -+ -+type channelzChannel struct { -+ cc *ClientConn -+} -+ -+func (c *channelzChannel) ChannelzMetric() *channelz.ChannelInternalMetric { -+ return c.cc.channelzMetric() -+} -+ -+// ErrClientConnTimeout indicates that the ClientConn cannot establish the -+// underlying connections within the specified timeout. -+// -+// Deprecated: This error is never returned by grpc and should not be -+// referenced by users. -+var ErrClientConnTimeout = errors.New("grpc: timed out when dialing") -+ -+// getResolver finds the scheme in the cc's resolvers or the global registry. -+// scheme should always be lowercase (typically by virtue of url.Parse() -+// performing proper RFC3986 behavior). -+func (cc *ClientConn) getResolver(scheme string) resolver.Builder { -+ for _, rb := range cc.dopts.resolvers { -+ if scheme == rb.Scheme() { -+ return rb -+ } -+ } -+ return resolver.Get(scheme) -+} -+ -+func (cc *ClientConn) updateConnectionError(err error) { -+ cc.lceMu.Lock() -+ cc.lastConnectionError = err -+ cc.lceMu.Unlock() -+} -+ -+func (cc *ClientConn) connectionError() error { -+ cc.lceMu.Lock() -+ defer cc.lceMu.Unlock() -+ return cc.lastConnectionError -+} -+ -+// parseTargetAndFindResolver parses the user's dial target and stores the -+// parsed target in `cc.parsedTarget`. -+// -+// The resolver to use is determined based on the scheme in the parsed target -+// and the same is stored in `cc.resolverBuilder`. -+// -+// Doesn't grab cc.mu as this method is expected to be called only at Dial time. -+func (cc *ClientConn) parseTargetAndFindResolver() error { -+ channelz.Infof(logger, cc.channelzID, "original dial target is: %q", cc.target) -+ -+ var rb resolver.Builder -+ parsedTarget, err := parseTarget(cc.target) -+ if err != nil { -+ channelz.Infof(logger, cc.channelzID, "dial target %q parse failed: %v", cc.target, err) -+ } else { -+ channelz.Infof(logger, cc.channelzID, "parsed dial target is: %+v", parsedTarget) -+ rb = cc.getResolver(parsedTarget.URL.Scheme) -+ if rb != nil { -+ cc.parsedTarget = parsedTarget -+ cc.resolverBuilder = rb -+ return nil -+ } -+ } -+ -+ // We are here because the user's dial target did not contain a scheme or -+ // specified an unregistered scheme. We should fallback to the default -+ // scheme, except when a custom dialer is specified in which case, we should -+ // always use passthrough scheme. -+ defScheme := resolver.GetDefaultScheme() -+ channelz.Infof(logger, cc.channelzID, "fallback to scheme %q", defScheme) -+ canonicalTarget := defScheme + ":///" + cc.target -+ -+ parsedTarget, err = parseTarget(canonicalTarget) -+ if err != nil { -+ channelz.Infof(logger, cc.channelzID, "dial target %q parse failed: %v", canonicalTarget, err) -+ return err -+ } -+ channelz.Infof(logger, cc.channelzID, "parsed dial target is: %+v", parsedTarget) -+ rb = cc.getResolver(parsedTarget.URL.Scheme) -+ if rb == nil { -+ return fmt.Errorf("could not get resolver for default scheme: %q", parsedTarget.URL.Scheme) -+ } -+ cc.parsedTarget = parsedTarget -+ cc.resolverBuilder = rb -+ return nil -+} -+ -+// parseTarget uses RFC 3986 semantics to parse the given target into a -+// resolver.Target struct containing url. Query params are stripped from the -+// endpoint. -+func parseTarget(target string) (resolver.Target, error) { -+ u, err := url.Parse(target) -+ if err != nil { -+ return resolver.Target{}, err -+ } -+ -+ return resolver.Target{URL: *u}, nil -+} -+ -+func encodeAuthority(authority string) string { -+ const upperhex = "0123456789ABCDEF" -+ -+ // Return for characters that must be escaped as per -+ // Valid chars are mentioned here: -+ // https://datatracker.ietf.org/doc/html/rfc3986#section-3.2 -+ shouldEscape := func(c byte) bool { -+ // Alphanum are always allowed. -+ if 'a' <= c && c <= 'z' || 'A' <= c && c <= 'Z' || '0' <= c && c <= '9' { -+ return false -+ } -+ switch c { -+ case '-', '_', '.', '~': // Unreserved characters -+ return false -+ case '!', '$', '&', '\'', '(', ')', '*', '+', ',', ';', '=': // Subdelim characters -+ return false -+ case ':', '[', ']', '@': // Authority related delimeters -+ return false -+ } -+ // Everything else must be escaped. -+ return true -+ } -+ -+ hexCount := 0 -+ for i := 0; i < len(authority); i++ { -+ c := authority[i] -+ if shouldEscape(c) { -+ hexCount++ -+ } -+ } -+ -+ if hexCount == 0 { -+ return authority -+ } -+ -+ required := len(authority) + 2*hexCount -+ t := make([]byte, required) -+ -+ j := 0 -+ // This logic is a barebones version of escape in the go net/url library. -+ for i := 0; i < len(authority); i++ { -+ switch c := authority[i]; { -+ case shouldEscape(c): -+ t[j] = '%' -+ t[j+1] = upperhex[c>>4] -+ t[j+2] = upperhex[c&15] -+ j += 3 -+ default: -+ t[j] = authority[i] -+ j++ -+ } -+ } -+ return string(t) -+} -+ -+// Determine channel authority. The order of precedence is as follows: -+// - user specified authority override using `WithAuthority` dial option -+// - creds' notion of server name for the authentication handshake -+// - endpoint from dial target of the form "scheme://[authority]/endpoint" -+// -+// Stores the determined authority in `cc.authority`. -+// -+// Returns a non-nil error if the authority returned by the transport -+// credentials do not match the authority configured through the dial option. -+// -+// Doesn't grab cc.mu as this method is expected to be called only at Dial time. -+func (cc *ClientConn) determineAuthority() error { -+ dopts := cc.dopts -+ // Historically, we had two options for users to specify the serverName or -+ // authority for a channel. One was through the transport credentials -+ // (either in its constructor, or through the OverrideServerName() method). -+ // The other option (for cases where WithInsecure() dial option was used) -+ // was to use the WithAuthority() dial option. -+ // -+ // A few things have changed since: -+ // - `insecure` package with an implementation of the `TransportCredentials` -+ // interface for the insecure case -+ // - WithAuthority() dial option support for secure credentials -+ authorityFromCreds := "" -+ if creds := dopts.copts.TransportCredentials; creds != nil && creds.Info().ServerName != "" { -+ authorityFromCreds = creds.Info().ServerName -+ } -+ authorityFromDialOption := dopts.authority -+ if (authorityFromCreds != "" && authorityFromDialOption != "") && authorityFromCreds != authorityFromDialOption { -+ return fmt.Errorf("ClientConn's authority from transport creds %q and dial option %q don't match", authorityFromCreds, authorityFromDialOption) -+ } -+ -+ endpoint := cc.parsedTarget.Endpoint() -+ target := cc.target -+ switch { -+ case authorityFromDialOption != "": -+ cc.authority = authorityFromDialOption -+ case authorityFromCreds != "": -+ cc.authority = authorityFromCreds -+ case strings.HasPrefix(target, "unix:") || strings.HasPrefix(target, "unix-abstract:"): -+ // TODO: remove when the unix resolver implements optional interface to -+ // return channel authority. -+ cc.authority = "localhost" -+ case strings.HasPrefix(endpoint, ":"): -+ cc.authority = "localhost" + endpoint -+ default: -+ // TODO: Define an optional interface on the resolver builder to return -+ // the channel authority given the user's dial target. For resolvers -+ // which don't implement this interface, we will use the endpoint from -+ // "scheme://authority/endpoint" as the default authority. -+ // Escape the endpoint to handle use cases where the endpoint -+ // might not be a valid authority by default. -+ // For example an endpoint which has multiple paths like -+ // 'a/b/c', which is not a valid authority by default. -+ cc.authority = encodeAuthority(endpoint) -+ } -+ channelz.Infof(logger, cc.channelzID, "Channel authority set to %q", cc.authority) -+ return nil -+} -+ -+// initResolverWrapper creates a ccResolverWrapper, which builds the name -+// resolver. This method grabs the lock to assign the newly built resolver -+// wrapper to the cc.resolverWrapper field. -+func (cc *ClientConn) initResolverWrapper(creds credentials.TransportCredentials) error { -+ rw, err := newCCResolverWrapper(cc, ccResolverWrapperOpts{ -+ target: cc.parsedTarget, -+ builder: cc.resolverBuilder, -+ bOpts: resolver.BuildOptions{ -+ DisableServiceConfig: cc.dopts.disableServiceConfig, -+ DialCreds: creds, -+ CredsBundle: cc.dopts.copts.CredsBundle, -+ Dialer: cc.dopts.copts.Dialer, -+ }, -+ channelzID: cc.channelzID, -+ }) -+ if err != nil { -+ return fmt.Errorf("failed to build resolver: %v", err) -+ } -+ // Resolver implementations may report state update or error inline when -+ // built (or right after), and this is handled in cc.updateResolverState. -+ // Also, an error from the resolver might lead to a re-resolution request -+ // from the balancer, which is handled in resolveNow() where -+ // `cc.resolverWrapper` is accessed. Hence, we need to hold the lock here. -+ cc.mu.Lock() -+ cc.resolverWrapper = rw -+ cc.mu.Unlock() -+ return nil -+} -diff --git a/vendor/google.golang.org/grpc/codec.go b/vendor/google.golang.org/grpc/codec.go -new file mode 100755 -index 0000000..1297765 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/codec.go -@@ -0,0 +1,50 @@ -+/* -+ * -+ * 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 ( -+ "google.golang.org/grpc/encoding" -+ _ "google.golang.org/grpc/encoding/proto" // to register the Codec for "proto" -+) -+ -+// baseCodec contains the functionality of both Codec and encoding.Codec, but -+// omits the name/string, which vary between the two and are not needed for -+// anything besides the registry in the encoding package. -+type baseCodec interface { -+ Marshal(v interface{}) ([]byte, error) -+ Unmarshal(data []byte, v interface{}) error -+} -+ -+var _ baseCodec = Codec(nil) -+var _ baseCodec = encoding.Codec(nil) -+ -+// Codec defines the interface gRPC uses to encode and decode messages. -+// Note that implementations of this interface must be thread safe; -+// a Codec's methods can be called from concurrent goroutines. -+// -+// Deprecated: use encoding.Codec instead. -+type Codec interface { -+ // Marshal returns the wire format of v. -+ Marshal(v interface{}) ([]byte, error) -+ // Unmarshal parses the wire format into v. -+ Unmarshal(data []byte, v interface{}) error -+ // String returns the name of the Codec implementation. This is unused by -+ // gRPC. -+ String() string -+} -diff --git a/vendor/google.golang.org/grpc/codegen.sh b/vendor/google.golang.org/grpc/codegen.sh -new file mode 100755 -index 0000000..4cdc6ba ---- /dev/null -+++ b/vendor/google.golang.org/grpc/codegen.sh -@@ -0,0 +1,17 @@ -+#!/usr/bin/env bash -+ -+# This script serves as an example to demonstrate how to generate the gRPC-Go -+# interface and the related messages from .proto file. -+# -+# It assumes the installation of i) Google proto buffer compiler at -+# https://github.com/google/protobuf (after v2.6.1) and ii) the Go codegen -+# plugin at https://github.com/golang/protobuf (after 2015-02-20). If you have -+# not, please install them first. -+# -+# We recommend running this script at $GOPATH/src. -+# -+# If this is not what you need, feel free to make your own scripts. Again, this -+# script is for demonstration purpose. -+# -+proto=$1 -+protoc --go_out=plugins=grpc:. $proto -diff --git a/vendor/google.golang.org/grpc/codes/code_string.go b/vendor/google.golang.org/grpc/codes/code_string.go -new file mode 100755 -index 0000000..934fac2 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/codes/code_string.go -@@ -0,0 +1,111 @@ -+/* -+ * -+ * 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 ( -+ "strconv" -+ -+ "google.golang.org/grpc/internal" -+) -+ -+func init() { -+ internal.CanonicalString = canonicalString -+} -+ -+func (c Code) String() string { -+ switch c { -+ case OK: -+ return "OK" -+ case Canceled: -+ return "Canceled" -+ case Unknown: -+ return "Unknown" -+ case InvalidArgument: -+ return "InvalidArgument" -+ case DeadlineExceeded: -+ return "DeadlineExceeded" -+ case NotFound: -+ return "NotFound" -+ case AlreadyExists: -+ return "AlreadyExists" -+ case PermissionDenied: -+ return "PermissionDenied" -+ case ResourceExhausted: -+ return "ResourceExhausted" -+ case FailedPrecondition: -+ return "FailedPrecondition" -+ case Aborted: -+ return "Aborted" -+ case OutOfRange: -+ return "OutOfRange" -+ case Unimplemented: -+ return "Unimplemented" -+ case Internal: -+ return "Internal" -+ case Unavailable: -+ return "Unavailable" -+ case DataLoss: -+ return "DataLoss" -+ case Unauthenticated: -+ return "Unauthenticated" -+ default: -+ return "Code(" + strconv.FormatInt(int64(c), 10) + ")" -+ } -+} -+ -+func canonicalString(c Code) string { -+ switch c { -+ case OK: -+ return "OK" -+ case Canceled: -+ return "CANCELLED" -+ case Unknown: -+ return "UNKNOWN" -+ case InvalidArgument: -+ return "INVALID_ARGUMENT" -+ case DeadlineExceeded: -+ return "DEADLINE_EXCEEDED" -+ case NotFound: -+ return "NOT_FOUND" -+ case AlreadyExists: -+ return "ALREADY_EXISTS" -+ case PermissionDenied: -+ return "PERMISSION_DENIED" -+ case ResourceExhausted: -+ return "RESOURCE_EXHAUSTED" -+ case FailedPrecondition: -+ return "FAILED_PRECONDITION" -+ case Aborted: -+ return "ABORTED" -+ case OutOfRange: -+ return "OUT_OF_RANGE" -+ case Unimplemented: -+ return "UNIMPLEMENTED" -+ case Internal: -+ return "INTERNAL" -+ case Unavailable: -+ return "UNAVAILABLE" -+ case DataLoss: -+ return "DATA_LOSS" -+ case Unauthenticated: -+ return "UNAUTHENTICATED" -+ default: -+ return "CODE(" + strconv.FormatInt(int64(c), 10) + ")" -+ } -+} -diff --git a/vendor/google.golang.org/grpc/codes/codes.go b/vendor/google.golang.org/grpc/codes/codes.go -new file mode 100755 -index 0000000..11b1061 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/codes/codes.go -@@ -0,0 +1,244 @@ -+/* -+ * -+ * 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 codes defines the canonical error codes used by gRPC. It is -+// consistent across various languages. -+package codes // import "google.golang.org/grpc/codes" -+ -+import ( -+ "fmt" -+ "strconv" -+) -+ -+// A Code is an unsigned 32-bit error code as defined in the gRPC spec. -+type Code uint32 -+ -+const ( -+ // OK is returned on success. -+ OK Code = 0 -+ -+ // Canceled indicates the operation was canceled (typically by the caller). -+ // -+ // The gRPC framework will generate this error code when cancellation -+ // is requested. -+ Canceled Code = 1 -+ -+ // Unknown error. An example of where this error may be returned is -+ // if 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. -+ // -+ // The gRPC framework will generate this error code in the above two -+ // mentioned cases. -+ Unknown Code = 2 -+ -+ // InvalidArgument indicates client specified an invalid argument. -+ // Note that this differs from FailedPrecondition. It indicates arguments -+ // that are problematic regardless of the state of the system -+ // (e.g., a malformed file name). -+ // -+ // This error code will not be generated by the gRPC framework. -+ InvalidArgument Code = 3 -+ -+ // DeadlineExceeded means operation expired before completion. -+ // 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. -+ // -+ // The gRPC framework will generate this error code when the deadline is -+ // exceeded. -+ DeadlineExceeded Code = 4 -+ -+ // NotFound means some requested entity (e.g., file or directory) was -+ // not found. -+ // -+ // This error code will not be generated by the gRPC framework. -+ NotFound Code = 5 -+ -+ // AlreadyExists means an attempt to create an entity failed because one -+ // already exists. -+ // -+ // This error code will not be generated by the gRPC framework. -+ AlreadyExists Code = 6 -+ -+ // PermissionDenied indicates the caller does not have permission to -+ // execute the specified operation. It must not be used for rejections -+ // caused by exhausting some resource (use ResourceExhausted -+ // instead for those errors). It must not be -+ // used if the caller cannot be identified (use Unauthenticated -+ // instead for those errors). -+ // -+ // This error code will not be generated by the gRPC core framework, -+ // but expect authentication middleware to use it. -+ PermissionDenied Code = 7 -+ -+ // ResourceExhausted indicates some resource has been exhausted, perhaps -+ // a per-user quota, or perhaps the entire file system is out of space. -+ // -+ // This error code will be generated by the gRPC framework in -+ // out-of-memory and server overload situations, or when a message is -+ // larger than the configured maximum size. -+ ResourceExhausted Code = 8 -+ -+ // FailedPrecondition indicates operation was rejected because the -+ // system is not in a state required for the operation's execution. -+ // For example, directory to be deleted may be non-empty, an rmdir -+ // operation is applied to a non-directory, etc. -+ // -+ // A litmus test that may help a service implementor in deciding -+ // between FailedPrecondition, 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., restarting a read-modify-write sequence). -+ // (c) Use FailedPrecondition 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, FailedPrecondition -+ // should be returned since the client should not retry unless -+ // they have first fixed up the directory by deleting files from it. -+ // (d) Use FailedPrecondition if the client performs conditional -+ // REST Get/Update/Delete on a resource and the resource on the -+ // server does not match the condition. E.g., conflicting -+ // read-modify-write on the same resource. -+ // -+ // This error code will not be generated by the gRPC framework. -+ FailedPrecondition Code = 9 -+ -+ // Aborted indicates the operation was aborted, typically due to a -+ // concurrency issue like sequencer check failures, transaction aborts, -+ // etc. -+ // -+ // See litmus test above for deciding between FailedPrecondition, -+ // Aborted, and Unavailable. -+ // -+ // This error code will not be generated by the gRPC framework. -+ Aborted Code = 10 -+ -+ // OutOfRange means operation was attempted past the valid range. -+ // E.g., seeking or reading past end of file. -+ // -+ // Unlike InvalidArgument, this error indicates a problem that may -+ // be fixed if the system state changes. For example, a 32-bit file -+ // system will generate InvalidArgument if asked to read at an -+ // offset that is not in the range [0,2^32-1], but it will generate -+ // OutOfRange if asked to read from an offset past the current -+ // file size. -+ // -+ // There is a fair bit of overlap between FailedPrecondition and -+ // OutOfRange. We recommend using OutOfRange (the more specific -+ // error) when it applies so that callers who are iterating through -+ // a space can easily look for an OutOfRange error to detect when -+ // they are done. -+ // -+ // This error code will not be generated by the gRPC framework. -+ OutOfRange Code = 11 -+ -+ // Unimplemented indicates operation is not implemented or not -+ // supported/enabled in this service. -+ // -+ // This error code will be generated by the gRPC framework. Most -+ // commonly, you will see this error code when a method implementation -+ // is missing on the server. It can also be generated for unknown -+ // compression algorithms or a disagreement as to whether an RPC should -+ // be streaming. -+ Unimplemented Code = 12 -+ -+ // Internal errors. Means some invariants expected by underlying -+ // system has been broken. If you see one of these errors, -+ // something is very broken. -+ // -+ // This error code will be generated by the gRPC framework in several -+ // internal error conditions. -+ Internal Code = 13 -+ -+ // Unavailable indicates the service is currently unavailable. -+ // This is a most likely a transient condition and may be corrected -+ // by retrying with a backoff. Note that it is not always safe to retry -+ // non-idempotent operations. -+ // -+ // See litmus test above for deciding between FailedPrecondition, -+ // Aborted, and Unavailable. -+ // -+ // This error code will be generated by the gRPC framework during -+ // abrupt shutdown of a server process or network connection. -+ Unavailable Code = 14 -+ -+ // DataLoss indicates unrecoverable data loss or corruption. -+ // -+ // This error code will not be generated by the gRPC framework. -+ DataLoss Code = 15 -+ -+ // Unauthenticated indicates the request does not have valid -+ // authentication credentials for the operation. -+ // -+ // The gRPC framework will generate this error code when the -+ // authentication metadata is invalid or a Credentials callback fails, -+ // but also expect authentication middleware to generate it. -+ Unauthenticated Code = 16 -+ -+ _maxCode = 17 -+) -+ -+var strToCode = map[string]Code{ -+ `"OK"`: OK, -+ `"CANCELLED"`:/* [sic] */ Canceled, -+ `"UNKNOWN"`: Unknown, -+ `"INVALID_ARGUMENT"`: InvalidArgument, -+ `"DEADLINE_EXCEEDED"`: DeadlineExceeded, -+ `"NOT_FOUND"`: NotFound, -+ `"ALREADY_EXISTS"`: AlreadyExists, -+ `"PERMISSION_DENIED"`: PermissionDenied, -+ `"RESOURCE_EXHAUSTED"`: ResourceExhausted, -+ `"FAILED_PRECONDITION"`: FailedPrecondition, -+ `"ABORTED"`: Aborted, -+ `"OUT_OF_RANGE"`: OutOfRange, -+ `"UNIMPLEMENTED"`: Unimplemented, -+ `"INTERNAL"`: Internal, -+ `"UNAVAILABLE"`: Unavailable, -+ `"DATA_LOSS"`: DataLoss, -+ `"UNAUTHENTICATED"`: Unauthenticated, -+} -+ -+// UnmarshalJSON unmarshals b into the Code. -+func (c *Code) UnmarshalJSON(b []byte) error { -+ // From json.Unmarshaler: By convention, to approximate the behavior of -+ // Unmarshal itself, Unmarshalers implement UnmarshalJSON([]byte("null")) as -+ // a no-op. -+ if string(b) == "null" { -+ return nil -+ } -+ if c == nil { -+ return fmt.Errorf("nil receiver passed to UnmarshalJSON") -+ } -+ -+ if ci, err := strconv.ParseUint(string(b), 10, 32); err == nil { -+ if ci >= _maxCode { -+ return fmt.Errorf("invalid code: %q", ci) -+ } -+ -+ *c = Code(ci) -+ return nil -+ } -+ -+ if jc, ok := strToCode[string(b)]; ok { -+ *c = jc -+ return nil -+ } -+ return fmt.Errorf("invalid code: %q", string(b)) -+} -diff --git a/vendor/google.golang.org/grpc/connectivity/connectivity.go b/vendor/google.golang.org/grpc/connectivity/connectivity.go -new file mode 100755 -index 0000000..4a89926 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/connectivity/connectivity.go -@@ -0,0 +1,94 @@ -+/* -+ * -+ * 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 connectivity defines connectivity semantics. -+// For details, see https://github.com/grpc/grpc/blob/master/doc/connectivity-semantics-and-api.md. -+package connectivity -+ -+import ( -+ "google.golang.org/grpc/grpclog" -+) -+ -+var logger = grpclog.Component("core") -+ -+// State indicates the state of connectivity. -+// It can be the state of a ClientConn or SubConn. -+type State int -+ -+func (s State) String() string { -+ switch s { -+ case Idle: -+ return "IDLE" -+ case Connecting: -+ return "CONNECTING" -+ case Ready: -+ return "READY" -+ case TransientFailure: -+ return "TRANSIENT_FAILURE" -+ case Shutdown: -+ return "SHUTDOWN" -+ default: -+ logger.Errorf("unknown connectivity state: %d", s) -+ return "INVALID_STATE" -+ } -+} -+ -+const ( -+ // Idle indicates the ClientConn is idle. -+ Idle State = iota -+ // Connecting indicates the ClientConn is connecting. -+ Connecting -+ // Ready indicates the ClientConn is ready for work. -+ Ready -+ // TransientFailure indicates the ClientConn has seen a failure but expects to recover. -+ TransientFailure -+ // Shutdown indicates the ClientConn has started shutting down. -+ Shutdown -+) -+ -+// ServingMode indicates the current mode of operation of the server. -+// -+// Only xDS enabled gRPC servers currently report their serving mode. -+type ServingMode int -+ -+const ( -+ // ServingModeStarting indicates that the server is starting up. -+ ServingModeStarting ServingMode = iota -+ // ServingModeServing indicates that the server contains all required -+ // configuration and is serving RPCs. -+ ServingModeServing -+ // ServingModeNotServing indicates that the server is not accepting new -+ // connections. Existing connections will be closed gracefully, allowing -+ // in-progress RPCs to complete. A server enters this mode when it does not -+ // contain the required configuration to serve RPCs. -+ ServingModeNotServing -+) -+ -+func (s ServingMode) String() string { -+ switch s { -+ case ServingModeStarting: -+ return "STARTING" -+ case ServingModeServing: -+ return "SERVING" -+ case ServingModeNotServing: -+ return "NOT_SERVING" -+ default: -+ logger.Errorf("unknown serving mode: %d", s) -+ return "INVALID_MODE" -+ } -+} -diff --git a/vendor/google.golang.org/grpc/credentials/credentials.go b/vendor/google.golang.org/grpc/credentials/credentials.go -new file mode 100755 -index 0000000..5feac3a ---- /dev/null -+++ b/vendor/google.golang.org/grpc/credentials/credentials.go -@@ -0,0 +1,291 @@ -+/* -+ * -+ * 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 credentials implements various credentials supported by gRPC library, -+// which encapsulate all the state needed by a client to authenticate with a -+// server and make various assertions, e.g., about the client's identity, role, -+// or whether it is authorized to make a particular call. -+package credentials // import "google.golang.org/grpc/credentials" -+ -+import ( -+ "context" -+ "errors" -+ "fmt" -+ "net" -+ -+ "github.com/golang/protobuf/proto" -+ "google.golang.org/grpc/attributes" -+ icredentials "google.golang.org/grpc/internal/credentials" -+) -+ -+// PerRPCCredentials defines the common interface for the credentials which need to -+// attach security information to every RPC (e.g., oauth2). -+type PerRPCCredentials interface { -+ // GetRequestMetadata gets the current request metadata, refreshing tokens -+ // if required. This should be called by the transport layer on each -+ // request, and the data should be populated in headers or other -+ // context. If a status code is returned, it will be used as the status for -+ // the RPC (restricted to an allowable set of codes as defined by gRFC -+ // A54). uri is the URI of the entry point for the request. When supported -+ // by the underlying implementation, ctx can be used for timeout and -+ // cancellation. Additionally, RequestInfo data will be available via ctx -+ // to this call. TODO(zhaoq): Define the set of the qualified keys instead -+ // of leaving it as an arbitrary string. -+ GetRequestMetadata(ctx context.Context, uri ...string) (map[string]string, error) -+ // RequireTransportSecurity indicates whether the credentials requires -+ // transport security. -+ RequireTransportSecurity() bool -+} -+ -+// SecurityLevel defines the protection level on an established connection. -+// -+// This API is experimental. -+type SecurityLevel int -+ -+const ( -+ // InvalidSecurityLevel indicates an invalid security level. -+ // The zero SecurityLevel value is invalid for backward compatibility. -+ InvalidSecurityLevel SecurityLevel = iota -+ // NoSecurity indicates a connection is insecure. -+ NoSecurity -+ // IntegrityOnly indicates a connection only provides integrity protection. -+ IntegrityOnly -+ // PrivacyAndIntegrity indicates a connection provides both privacy and integrity protection. -+ PrivacyAndIntegrity -+) -+ -+// String returns SecurityLevel in a string format. -+func (s SecurityLevel) String() string { -+ switch s { -+ case NoSecurity: -+ return "NoSecurity" -+ case IntegrityOnly: -+ return "IntegrityOnly" -+ case PrivacyAndIntegrity: -+ return "PrivacyAndIntegrity" -+ } -+ return fmt.Sprintf("invalid SecurityLevel: %v", int(s)) -+} -+ -+// CommonAuthInfo contains authenticated information common to AuthInfo implementations. -+// It should be embedded in a struct implementing AuthInfo to provide additional information -+// about the credentials. -+// -+// This API is experimental. -+type CommonAuthInfo struct { -+ SecurityLevel SecurityLevel -+} -+ -+// GetCommonAuthInfo returns the pointer to CommonAuthInfo struct. -+func (c CommonAuthInfo) GetCommonAuthInfo() CommonAuthInfo { -+ return c -+} -+ -+// ProtocolInfo provides information regarding the gRPC wire protocol version, -+// security protocol, security protocol version in use, server name, etc. -+type ProtocolInfo struct { -+ // ProtocolVersion is the gRPC wire protocol version. -+ ProtocolVersion string -+ // SecurityProtocol is the security protocol in use. -+ SecurityProtocol string -+ // SecurityVersion is the security protocol version. It is a static version string from the -+ // credentials, not a value that reflects per-connection protocol negotiation. To retrieve -+ // details about the credentials used for a connection, use the Peer's AuthInfo field instead. -+ // -+ // Deprecated: please use Peer.AuthInfo. -+ SecurityVersion string -+ // ServerName is the user-configured server name. -+ ServerName string -+} -+ -+// AuthInfo defines the common interface for the auth information the users are interested in. -+// A struct that implements AuthInfo should embed CommonAuthInfo by including additional -+// information about the credentials in it. -+type AuthInfo interface { -+ AuthType() string -+} -+ -+// ErrConnDispatched indicates that rawConn has been dispatched out of gRPC -+// and the caller should not close rawConn. -+var ErrConnDispatched = errors.New("credentials: rawConn is dispatched out of gRPC") -+ -+// TransportCredentials defines the common interface for all the live gRPC wire -+// protocols and supported transport security protocols (e.g., TLS, SSL). -+type TransportCredentials interface { -+ // ClientHandshake does the authentication handshake specified by the -+ // corresponding authentication protocol on rawConn for clients. It returns -+ // the authenticated connection and the corresponding auth information -+ // about the connection. The auth information should embed CommonAuthInfo -+ // to return additional information about the credentials. Implementations -+ // must use the provided context to implement timely cancellation. gRPC -+ // will try to reconnect if the error returned is a temporary error -+ // (io.EOF, context.DeadlineExceeded or err.Temporary() == true). If the -+ // returned error is a wrapper error, implementations should make sure that -+ // the error implements Temporary() to have the correct retry behaviors. -+ // Additionally, ClientHandshakeInfo data will be available via the context -+ // passed to this call. -+ // -+ // The second argument to this method is the `:authority` header value used -+ // while creating new streams on this connection after authentication -+ // succeeds. Implementations must use this as the server name during the -+ // authentication handshake. -+ // -+ // If the returned net.Conn is closed, it MUST close the net.Conn provided. -+ ClientHandshake(context.Context, string, net.Conn) (net.Conn, AuthInfo, error) -+ // ServerHandshake does the authentication handshake for servers. It returns -+ // the authenticated connection and the corresponding auth information about -+ // the connection. The auth information should embed CommonAuthInfo to return additional information -+ // about the credentials. -+ // -+ // If the returned net.Conn is closed, it MUST close the net.Conn provided. -+ ServerHandshake(net.Conn) (net.Conn, AuthInfo, error) -+ // Info provides the ProtocolInfo of this TransportCredentials. -+ Info() ProtocolInfo -+ // Clone makes a copy of this TransportCredentials. -+ Clone() TransportCredentials -+ // OverrideServerName specifies the value used for the following: -+ // - verifying the hostname on the returned certificates -+ // - as SNI in the client's handshake to support virtual hosting -+ // - as the value for `:authority` header at stream creation time -+ // -+ // Deprecated: use grpc.WithAuthority instead. Will be supported -+ // throughout 1.x. -+ OverrideServerName(string) error -+} -+ -+// Bundle is a combination of TransportCredentials and PerRPCCredentials. -+// -+// It also contains a mode switching method, so it can be used as a combination -+// of different credential policies. -+// -+// Bundle cannot be used together with individual TransportCredentials. -+// PerRPCCredentials from Bundle will be appended to other PerRPCCredentials. -+// -+// This API is experimental. -+type Bundle interface { -+ // TransportCredentials returns the transport credentials from the Bundle. -+ // -+ // Implementations must return non-nil transport credentials. If transport -+ // security is not needed by the Bundle, implementations may choose to -+ // return insecure.NewCredentials(). -+ TransportCredentials() TransportCredentials -+ -+ // PerRPCCredentials returns the per-RPC credentials from the Bundle. -+ // -+ // May be nil if per-RPC credentials are not needed. -+ PerRPCCredentials() PerRPCCredentials -+ -+ // NewWithMode should make a copy of Bundle, and switch mode. Modifying the -+ // existing Bundle may cause races. -+ // -+ // NewWithMode returns nil if the requested mode is not supported. -+ NewWithMode(mode string) (Bundle, error) -+} -+ -+// RequestInfo contains request data attached to the context passed to GetRequestMetadata calls. -+// -+// This API is experimental. -+type RequestInfo struct { -+ // The method passed to Invoke or NewStream for this RPC. (For proto methods, this has the format "/some.Service/Method") -+ Method string -+ // AuthInfo contains the information from a security handshake (TransportCredentials.ClientHandshake, TransportCredentials.ServerHandshake) -+ AuthInfo AuthInfo -+} -+ -+// RequestInfoFromContext extracts the RequestInfo from the context if it exists. -+// -+// This API is experimental. -+func RequestInfoFromContext(ctx context.Context) (ri RequestInfo, ok bool) { -+ ri, ok = icredentials.RequestInfoFromContext(ctx).(RequestInfo) -+ return ri, ok -+} -+ -+// ClientHandshakeInfo holds data to be passed to ClientHandshake. This makes -+// it possible to pass arbitrary data to the handshaker from gRPC, resolver, -+// balancer etc. Individual credential implementations control the actual -+// format of the data that they are willing to receive. -+// -+// This API is experimental. -+type ClientHandshakeInfo struct { -+ // Attributes contains the attributes for the address. It could be provided -+ // by the gRPC, resolver, balancer etc. -+ Attributes *attributes.Attributes -+} -+ -+// ClientHandshakeInfoFromContext returns the ClientHandshakeInfo struct stored -+// in ctx. -+// -+// This API is experimental. -+func ClientHandshakeInfoFromContext(ctx context.Context) ClientHandshakeInfo { -+ chi, _ := icredentials.ClientHandshakeInfoFromContext(ctx).(ClientHandshakeInfo) -+ return chi -+} -+ -+// CheckSecurityLevel checks if a connection's security level is greater than or equal to the specified one. -+// It returns success if 1) the condition is satisified or 2) AuthInfo struct does not implement GetCommonAuthInfo() method -+// or 3) CommonAuthInfo.SecurityLevel has an invalid zero value. For 2) and 3), it is for the purpose of backward-compatibility. -+// -+// This API is experimental. -+func CheckSecurityLevel(ai AuthInfo, level SecurityLevel) error { -+ type internalInfo interface { -+ GetCommonAuthInfo() CommonAuthInfo -+ } -+ if ai == nil { -+ return errors.New("AuthInfo is nil") -+ } -+ if ci, ok := ai.(internalInfo); ok { -+ // CommonAuthInfo.SecurityLevel has an invalid value. -+ if ci.GetCommonAuthInfo().SecurityLevel == InvalidSecurityLevel { -+ return nil -+ } -+ if ci.GetCommonAuthInfo().SecurityLevel < level { -+ return fmt.Errorf("requires SecurityLevel %v; connection has %v", level, ci.GetCommonAuthInfo().SecurityLevel) -+ } -+ } -+ // The condition is satisfied or AuthInfo struct does not implement GetCommonAuthInfo() method. -+ return nil -+} -+ -+// ChannelzSecurityInfo defines the interface that security protocols should implement -+// in order to provide security info to channelz. -+// -+// This API is experimental. -+type ChannelzSecurityInfo interface { -+ GetSecurityValue() ChannelzSecurityValue -+} -+ -+// ChannelzSecurityValue defines the interface that GetSecurityValue() return value -+// should satisfy. This interface should only be satisfied by *TLSChannelzSecurityValue -+// and *OtherChannelzSecurityValue. -+// -+// This API is experimental. -+type ChannelzSecurityValue interface { -+ isChannelzSecurityValue() -+} -+ -+// OtherChannelzSecurityValue defines the struct that non-TLS protocol should return -+// from GetSecurityValue(), which contains protocol specific security info. Note -+// the Value field will be sent to users of channelz requesting channel info, and -+// thus sensitive info should better be avoided. -+// -+// This API is experimental. -+type OtherChannelzSecurityValue struct { -+ ChannelzSecurityValue -+ Name string -+ Value proto.Message -+} -diff --git a/vendor/google.golang.org/grpc/credentials/insecure/insecure.go b/vendor/google.golang.org/grpc/credentials/insecure/insecure.go -new file mode 100755 -index 0000000..82bee14 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/credentials/insecure/insecure.go -@@ -0,0 +1,98 @@ -+/* -+ * -+ * Copyright 2020 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 insecure provides an implementation of the -+// credentials.TransportCredentials interface which disables transport security. -+package insecure -+ -+import ( -+ "context" -+ "net" -+ -+ "google.golang.org/grpc/credentials" -+) -+ -+// NewCredentials returns a credentials which disables transport security. -+// -+// Note that using this credentials with per-RPC credentials which require -+// transport security is incompatible and will cause grpc.Dial() to fail. -+func NewCredentials() credentials.TransportCredentials { -+ return insecureTC{} -+} -+ -+// insecureTC implements the insecure transport credentials. The handshake -+// methods simply return the passed in net.Conn and set the security level to -+// NoSecurity. -+type insecureTC struct{} -+ -+func (insecureTC) ClientHandshake(ctx context.Context, _ string, conn net.Conn) (net.Conn, credentials.AuthInfo, error) { -+ return conn, info{credentials.CommonAuthInfo{SecurityLevel: credentials.NoSecurity}}, nil -+} -+ -+func (insecureTC) ServerHandshake(conn net.Conn) (net.Conn, credentials.AuthInfo, error) { -+ return conn, info{credentials.CommonAuthInfo{SecurityLevel: credentials.NoSecurity}}, nil -+} -+ -+func (insecureTC) Info() credentials.ProtocolInfo { -+ return credentials.ProtocolInfo{SecurityProtocol: "insecure"} -+} -+ -+func (insecureTC) Clone() credentials.TransportCredentials { -+ return insecureTC{} -+} -+ -+func (insecureTC) OverrideServerName(string) error { -+ return nil -+} -+ -+// info contains the auth information for an insecure connection. -+// It implements the AuthInfo interface. -+type info struct { -+ credentials.CommonAuthInfo -+} -+ -+// AuthType returns the type of info as a string. -+func (info) AuthType() string { -+ return "insecure" -+} -+ -+// insecureBundle implements an insecure bundle. -+// An insecure bundle provides a thin wrapper around insecureTC to support -+// the credentials.Bundle interface. -+type insecureBundle struct{} -+ -+// NewBundle returns a bundle with disabled transport security and no per rpc credential. -+func NewBundle() credentials.Bundle { -+ return insecureBundle{} -+} -+ -+// NewWithMode returns a new insecure Bundle. The mode is ignored. -+func (insecureBundle) NewWithMode(string) (credentials.Bundle, error) { -+ return insecureBundle{}, nil -+} -+ -+// PerRPCCredentials returns an nil implementation as insecure -+// bundle does not support a per rpc credential. -+func (insecureBundle) PerRPCCredentials() credentials.PerRPCCredentials { -+ return nil -+} -+ -+// TransportCredentials returns the underlying insecure transport credential. -+func (insecureBundle) TransportCredentials() credentials.TransportCredentials { -+ return NewCredentials() -+} -diff --git a/vendor/google.golang.org/grpc/credentials/tls.go b/vendor/google.golang.org/grpc/credentials/tls.go -new file mode 100755 -index 0000000..877b7cd ---- /dev/null -+++ b/vendor/google.golang.org/grpc/credentials/tls.go -@@ -0,0 +1,236 @@ -+/* -+ * -+ * 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 credentials -+ -+import ( -+ "context" -+ "crypto/tls" -+ "crypto/x509" -+ "fmt" -+ "net" -+ "net/url" -+ "os" -+ -+ credinternal "google.golang.org/grpc/internal/credentials" -+) -+ -+// TLSInfo contains the auth information for a TLS authenticated connection. -+// It implements the AuthInfo interface. -+type TLSInfo struct { -+ State tls.ConnectionState -+ CommonAuthInfo -+ // This API is experimental. -+ SPIFFEID *url.URL -+} -+ -+// AuthType returns the type of TLSInfo as a string. -+func (t TLSInfo) AuthType() string { -+ return "tls" -+} -+ -+// GetSecurityValue returns security info requested by channelz. -+func (t TLSInfo) GetSecurityValue() ChannelzSecurityValue { -+ v := &TLSChannelzSecurityValue{ -+ StandardName: cipherSuiteLookup[t.State.CipherSuite], -+ } -+ // Currently there's no way to get LocalCertificate info from tls package. -+ if len(t.State.PeerCertificates) > 0 { -+ v.RemoteCertificate = t.State.PeerCertificates[0].Raw -+ } -+ return v -+} -+ -+// tlsCreds is the credentials required for authenticating a connection using TLS. -+type tlsCreds struct { -+ // TLS configuration -+ config *tls.Config -+} -+ -+func (c tlsCreds) Info() ProtocolInfo { -+ return ProtocolInfo{ -+ SecurityProtocol: "tls", -+ SecurityVersion: "1.2", -+ ServerName: c.config.ServerName, -+ } -+} -+ -+func (c *tlsCreds) ClientHandshake(ctx context.Context, authority string, rawConn net.Conn) (_ net.Conn, _ AuthInfo, err error) { -+ // use local cfg to avoid clobbering ServerName if using multiple endpoints -+ cfg := credinternal.CloneTLSConfig(c.config) -+ if cfg.ServerName == "" { -+ serverName, _, err := net.SplitHostPort(authority) -+ if err != nil { -+ // If the authority had no host port or if the authority cannot be parsed, use it as-is. -+ serverName = authority -+ } -+ cfg.ServerName = serverName -+ } -+ conn := tls.Client(rawConn, cfg) -+ errChannel := make(chan error, 1) -+ go func() { -+ errChannel <- conn.Handshake() -+ close(errChannel) -+ }() -+ select { -+ case err := <-errChannel: -+ if err != nil { -+ conn.Close() -+ return nil, nil, err -+ } -+ case <-ctx.Done(): -+ conn.Close() -+ return nil, nil, ctx.Err() -+ } -+ tlsInfo := TLSInfo{ -+ State: conn.ConnectionState(), -+ CommonAuthInfo: CommonAuthInfo{ -+ SecurityLevel: PrivacyAndIntegrity, -+ }, -+ } -+ id := credinternal.SPIFFEIDFromState(conn.ConnectionState()) -+ if id != nil { -+ tlsInfo.SPIFFEID = id -+ } -+ return credinternal.WrapSyscallConn(rawConn, conn), tlsInfo, nil -+} -+ -+func (c *tlsCreds) ServerHandshake(rawConn net.Conn) (net.Conn, AuthInfo, error) { -+ conn := tls.Server(rawConn, c.config) -+ if err := conn.Handshake(); err != nil { -+ conn.Close() -+ return nil, nil, err -+ } -+ tlsInfo := TLSInfo{ -+ State: conn.ConnectionState(), -+ CommonAuthInfo: CommonAuthInfo{ -+ SecurityLevel: PrivacyAndIntegrity, -+ }, -+ } -+ id := credinternal.SPIFFEIDFromState(conn.ConnectionState()) -+ if id != nil { -+ tlsInfo.SPIFFEID = id -+ } -+ return credinternal.WrapSyscallConn(rawConn, conn), tlsInfo, nil -+} -+ -+func (c *tlsCreds) Clone() TransportCredentials { -+ return NewTLS(c.config) -+} -+ -+func (c *tlsCreds) OverrideServerName(serverNameOverride string) error { -+ c.config.ServerName = serverNameOverride -+ return nil -+} -+ -+// NewTLS uses c to construct a TransportCredentials based on TLS. -+func NewTLS(c *tls.Config) TransportCredentials { -+ tc := &tlsCreds{credinternal.CloneTLSConfig(c)} -+ tc.config.NextProtos = credinternal.AppendH2ToNextProtos(tc.config.NextProtos) -+ return tc -+} -+ -+// NewClientTLSFromCert constructs TLS credentials from the provided root -+// certificate authority certificate(s) to validate server connections. If -+// certificates to establish the identity of the client need to be included in -+// the credentials (eg: for mTLS), use NewTLS instead, where a complete -+// tls.Config can be specified. -+// serverNameOverride is for testing only. If set to a non empty string, -+// it will override the virtual host name of authority (e.g. :authority header -+// field) in requests. -+func NewClientTLSFromCert(cp *x509.CertPool, serverNameOverride string) TransportCredentials { -+ return NewTLS(&tls.Config{ServerName: serverNameOverride, RootCAs: cp}) -+} -+ -+// NewClientTLSFromFile constructs TLS credentials from the provided root -+// certificate authority certificate file(s) to validate server connections. If -+// certificates to establish the identity of the client need to be included in -+// the credentials (eg: for mTLS), use NewTLS instead, where a complete -+// tls.Config can be specified. -+// serverNameOverride is for testing only. If set to a non empty string, -+// it will override the virtual host name of authority (e.g. :authority header -+// field) in requests. -+func NewClientTLSFromFile(certFile, serverNameOverride string) (TransportCredentials, error) { -+ b, err := os.ReadFile(certFile) -+ if err != nil { -+ return nil, err -+ } -+ cp := x509.NewCertPool() -+ if !cp.AppendCertsFromPEM(b) { -+ return nil, fmt.Errorf("credentials: failed to append certificates") -+ } -+ return NewTLS(&tls.Config{ServerName: serverNameOverride, RootCAs: cp}), nil -+} -+ -+// NewServerTLSFromCert constructs TLS credentials from the input certificate for server. -+func NewServerTLSFromCert(cert *tls.Certificate) TransportCredentials { -+ return NewTLS(&tls.Config{Certificates: []tls.Certificate{*cert}}) -+} -+ -+// NewServerTLSFromFile constructs TLS credentials from the input certificate file and key -+// file for server. -+func NewServerTLSFromFile(certFile, keyFile string) (TransportCredentials, error) { -+ cert, err := tls.LoadX509KeyPair(certFile, keyFile) -+ if err != nil { -+ return nil, err -+ } -+ return NewTLS(&tls.Config{Certificates: []tls.Certificate{cert}}), nil -+} -+ -+// TLSChannelzSecurityValue defines the struct that TLS protocol should return -+// from GetSecurityValue(), containing security info like cipher and certificate used. -+// -+// # Experimental -+// -+// Notice: This type is EXPERIMENTAL and may be changed or removed in a -+// later release. -+type TLSChannelzSecurityValue struct { -+ ChannelzSecurityValue -+ StandardName string -+ LocalCertificate []byte -+ RemoteCertificate []byte -+} -+ -+var cipherSuiteLookup = map[uint16]string{ -+ tls.TLS_RSA_WITH_RC4_128_SHA: "TLS_RSA_WITH_RC4_128_SHA", -+ tls.TLS_RSA_WITH_3DES_EDE_CBC_SHA: "TLS_RSA_WITH_3DES_EDE_CBC_SHA", -+ tls.TLS_RSA_WITH_AES_128_CBC_SHA: "TLS_RSA_WITH_AES_128_CBC_SHA", -+ tls.TLS_RSA_WITH_AES_256_CBC_SHA: "TLS_RSA_WITH_AES_256_CBC_SHA", -+ tls.TLS_RSA_WITH_AES_128_GCM_SHA256: "TLS_RSA_WITH_AES_128_GCM_SHA256", -+ tls.TLS_RSA_WITH_AES_256_GCM_SHA384: "TLS_RSA_WITH_AES_256_GCM_SHA384", -+ tls.TLS_ECDHE_ECDSA_WITH_RC4_128_SHA: "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA", -+ tls.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA: "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA", -+ tls.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA: "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA", -+ tls.TLS_ECDHE_RSA_WITH_RC4_128_SHA: "TLS_ECDHE_RSA_WITH_RC4_128_SHA", -+ tls.TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA: "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA", -+ tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA: "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA", -+ tls.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA: "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA", -+ tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256: "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256", -+ tls.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256: "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", -+ tls.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384: "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", -+ tls.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384: "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", -+ tls.TLS_FALLBACK_SCSV: "TLS_FALLBACK_SCSV", -+ tls.TLS_RSA_WITH_AES_128_CBC_SHA256: "TLS_RSA_WITH_AES_128_CBC_SHA256", -+ tls.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256: "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256", -+ tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256: "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256", -+ tls.TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305: "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305", -+ tls.TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305: "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305", -+ tls.TLS_AES_128_GCM_SHA256: "TLS_AES_128_GCM_SHA256", -+ tls.TLS_AES_256_GCM_SHA384: "TLS_AES_256_GCM_SHA384", -+ tls.TLS_CHACHA20_POLY1305_SHA256: "TLS_CHACHA20_POLY1305_SHA256", -+} -diff --git a/vendor/google.golang.org/grpc/dialoptions.go b/vendor/google.golang.org/grpc/dialoptions.go -new file mode 100755 -index 0000000..23ea952 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/dialoptions.go -@@ -0,0 +1,701 @@ -+/* -+ * -+ * 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 grpc -+ -+import ( -+ "context" -+ "net" -+ "time" -+ -+ "google.golang.org/grpc/backoff" -+ "google.golang.org/grpc/channelz" -+ "google.golang.org/grpc/credentials" -+ "google.golang.org/grpc/credentials/insecure" -+ "google.golang.org/grpc/internal" -+ internalbackoff "google.golang.org/grpc/internal/backoff" -+ "google.golang.org/grpc/internal/binarylog" -+ "google.golang.org/grpc/internal/transport" -+ "google.golang.org/grpc/keepalive" -+ "google.golang.org/grpc/resolver" -+ "google.golang.org/grpc/stats" -+) -+ -+func init() { -+ internal.AddGlobalDialOptions = func(opt ...DialOption) { -+ globalDialOptions = append(globalDialOptions, opt...) -+ } -+ internal.ClearGlobalDialOptions = func() { -+ globalDialOptions = nil -+ } -+ internal.WithBinaryLogger = withBinaryLogger -+ internal.JoinDialOptions = newJoinDialOption -+ internal.DisableGlobalDialOptions = newDisableGlobalDialOptions -+} -+ -+// dialOptions configure a Dial call. dialOptions are set by the DialOption -+// values passed to Dial. -+type dialOptions struct { -+ unaryInt UnaryClientInterceptor -+ streamInt StreamClientInterceptor -+ -+ chainUnaryInts []UnaryClientInterceptor -+ chainStreamInts []StreamClientInterceptor -+ -+ cp Compressor -+ dc Decompressor -+ bs internalbackoff.Strategy -+ block bool -+ returnLastError bool -+ timeout time.Duration -+ scChan <-chan ServiceConfig -+ authority string -+ binaryLogger binarylog.Logger -+ copts transport.ConnectOptions -+ callOptions []CallOption -+ channelzParentID *channelz.Identifier -+ disableServiceConfig bool -+ disableRetry bool -+ disableHealthCheck bool -+ healthCheckFunc internal.HealthChecker -+ minConnectTimeout func() time.Duration -+ defaultServiceConfig *ServiceConfig // defaultServiceConfig is parsed from defaultServiceConfigRawJSON. -+ defaultServiceConfigRawJSON *string -+ resolvers []resolver.Builder -+ idleTimeout time.Duration -+ recvBufferPool SharedBufferPool -+} -+ -+// DialOption configures how we set up the connection. -+type DialOption interface { -+ apply(*dialOptions) -+} -+ -+var globalDialOptions []DialOption -+ -+// EmptyDialOption does not alter the dial configuration. It can be embedded in -+// another structure to build custom dial options. -+// -+// # Experimental -+// -+// Notice: This type is EXPERIMENTAL and may be changed or removed in a -+// later release. -+type EmptyDialOption struct{} -+ -+func (EmptyDialOption) apply(*dialOptions) {} -+ -+type disableGlobalDialOptions struct{} -+ -+func (disableGlobalDialOptions) apply(*dialOptions) {} -+ -+// newDisableGlobalDialOptions returns a DialOption that prevents the ClientConn -+// from applying the global DialOptions (set via AddGlobalDialOptions). -+func newDisableGlobalDialOptions() DialOption { -+ return &disableGlobalDialOptions{} -+} -+ -+// funcDialOption wraps a function that modifies dialOptions into an -+// implementation of the DialOption interface. -+type funcDialOption struct { -+ f func(*dialOptions) -+} -+ -+func (fdo *funcDialOption) apply(do *dialOptions) { -+ fdo.f(do) -+} -+ -+func newFuncDialOption(f func(*dialOptions)) *funcDialOption { -+ return &funcDialOption{ -+ f: f, -+ } -+} -+ -+type joinDialOption struct { -+ opts []DialOption -+} -+ -+func (jdo *joinDialOption) apply(do *dialOptions) { -+ for _, opt := range jdo.opts { -+ opt.apply(do) -+ } -+} -+ -+func newJoinDialOption(opts ...DialOption) DialOption { -+ return &joinDialOption{opts: opts} -+} -+ -+// WithWriteBufferSize determines how much data can be batched before doing a -+// write on the wire. The corresponding memory allocation for this buffer will -+// be twice the size to keep syscalls low. The default value for this buffer is -+// 32KB. -+// -+// Zero or negative values will disable the write buffer such that each write -+// will be on underlying connection. Note: A Send call may not directly -+// translate to a write. -+func WithWriteBufferSize(s int) DialOption { -+ return newFuncDialOption(func(o *dialOptions) { -+ o.copts.WriteBufferSize = s -+ }) -+} -+ -+// WithReadBufferSize lets you set the size of read buffer, this determines how -+// much data can be read at most for each read syscall. -+// -+// The default value for this buffer is 32KB. Zero or negative values will -+// disable read buffer for a connection so data framer can access the -+// underlying conn directly. -+func WithReadBufferSize(s int) DialOption { -+ return newFuncDialOption(func(o *dialOptions) { -+ o.copts.ReadBufferSize = s -+ }) -+} -+ -+// WithInitialWindowSize returns a DialOption which sets the value for initial -+// window size on a stream. The lower bound for window size is 64K and any value -+// smaller than that will be ignored. -+func WithInitialWindowSize(s int32) DialOption { -+ return newFuncDialOption(func(o *dialOptions) { -+ o.copts.InitialWindowSize = s -+ }) -+} -+ -+// WithInitialConnWindowSize returns a DialOption which sets the value for -+// initial window size on a connection. The lower bound for window size is 64K -+// and any value smaller than that will be ignored. -+func WithInitialConnWindowSize(s int32) DialOption { -+ return newFuncDialOption(func(o *dialOptions) { -+ o.copts.InitialConnWindowSize = s -+ }) -+} -+ -+// WithMaxMsgSize returns a DialOption which sets the maximum message size the -+// client can receive. -+// -+// Deprecated: use WithDefaultCallOptions(MaxCallRecvMsgSize(s)) instead. Will -+// be supported throughout 1.x. -+func WithMaxMsgSize(s int) DialOption { -+ return WithDefaultCallOptions(MaxCallRecvMsgSize(s)) -+} -+ -+// WithDefaultCallOptions returns a DialOption which sets the default -+// CallOptions for calls over the connection. -+func WithDefaultCallOptions(cos ...CallOption) DialOption { -+ return newFuncDialOption(func(o *dialOptions) { -+ o.callOptions = append(o.callOptions, cos...) -+ }) -+} -+ -+// WithCodec returns a DialOption which sets a codec for message marshaling and -+// unmarshaling. -+// -+// Deprecated: use WithDefaultCallOptions(ForceCodec(_)) instead. Will be -+// supported throughout 1.x. -+func WithCodec(c Codec) DialOption { -+ return WithDefaultCallOptions(CallCustomCodec(c)) -+} -+ -+// WithCompressor returns a DialOption which sets a Compressor to use for -+// message compression. It has lower priority than the compressor set by the -+// UseCompressor CallOption. -+// -+// Deprecated: use UseCompressor instead. Will be supported throughout 1.x. -+func WithCompressor(cp Compressor) DialOption { -+ return newFuncDialOption(func(o *dialOptions) { -+ o.cp = cp -+ }) -+} -+ -+// WithDecompressor returns a DialOption which sets a Decompressor to use for -+// incoming message decompression. If incoming response messages are encoded -+// using the decompressor's Type(), it will be used. Otherwise, the message -+// encoding will be used to look up the compressor registered via -+// encoding.RegisterCompressor, which will then be used to decompress the -+// message. If no compressor is registered for the encoding, an Unimplemented -+// status error will be returned. -+// -+// Deprecated: use encoding.RegisterCompressor instead. Will be supported -+// throughout 1.x. -+func WithDecompressor(dc Decompressor) DialOption { -+ return newFuncDialOption(func(o *dialOptions) { -+ o.dc = dc -+ }) -+} -+ -+// WithServiceConfig returns a DialOption which has a channel to read the -+// service configuration. -+// -+// Deprecated: service config should be received through name resolver or via -+// WithDefaultServiceConfig, as specified at -+// https://github.com/grpc/grpc/blob/master/doc/service_config.md. Will be -+// removed in a future 1.x release. -+func WithServiceConfig(c <-chan ServiceConfig) DialOption { -+ return newFuncDialOption(func(o *dialOptions) { -+ o.scChan = c -+ }) -+} -+ -+// WithConnectParams configures the ClientConn to use the provided ConnectParams -+// for creating and maintaining connections to servers. -+// -+// The backoff configuration specified as part of the ConnectParams overrides -+// all defaults specified in -+// https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md. Consider -+// using the backoff.DefaultConfig as a base, in cases where you want to -+// override only a subset of the backoff configuration. -+func WithConnectParams(p ConnectParams) DialOption { -+ return newFuncDialOption(func(o *dialOptions) { -+ o.bs = internalbackoff.Exponential{Config: p.Backoff} -+ o.minConnectTimeout = func() time.Duration { -+ return p.MinConnectTimeout -+ } -+ }) -+} -+ -+// WithBackoffMaxDelay configures the dialer to use the provided maximum delay -+// when backing off after failed connection attempts. -+// -+// Deprecated: use WithConnectParams instead. Will be supported throughout 1.x. -+func WithBackoffMaxDelay(md time.Duration) DialOption { -+ return WithBackoffConfig(BackoffConfig{MaxDelay: md}) -+} -+ -+// WithBackoffConfig configures the dialer to use the provided backoff -+// parameters after connection failures. -+// -+// Deprecated: use WithConnectParams instead. Will be supported throughout 1.x. -+func WithBackoffConfig(b BackoffConfig) DialOption { -+ bc := backoff.DefaultConfig -+ bc.MaxDelay = b.MaxDelay -+ return withBackoff(internalbackoff.Exponential{Config: bc}) -+} -+ -+// withBackoff sets the backoff strategy used for connectRetryNum after a failed -+// connection attempt. -+// -+// This can be exported if arbitrary backoff strategies are allowed by gRPC. -+func withBackoff(bs internalbackoff.Strategy) DialOption { -+ return newFuncDialOption(func(o *dialOptions) { -+ o.bs = bs -+ }) -+} -+ -+// WithBlock returns a DialOption which makes callers of Dial block until the -+// underlying connection is up. Without this, Dial returns immediately and -+// connecting the server happens in background. -+// -+// Use of this feature is not recommended. For more information, please see: -+// https://github.com/grpc/grpc-go/blob/master/Documentation/anti-patterns.md -+func WithBlock() DialOption { -+ return newFuncDialOption(func(o *dialOptions) { -+ o.block = true -+ }) -+} -+ -+// WithReturnConnectionError returns a DialOption which makes the client connection -+// return a string containing both the last connection error that occurred and -+// the context.DeadlineExceeded error. -+// Implies WithBlock() -+// -+// Use of this feature is not recommended. For more information, please see: -+// https://github.com/grpc/grpc-go/blob/master/Documentation/anti-patterns.md -+// -+// # Experimental -+// -+// Notice: This API is EXPERIMENTAL and may be changed or removed in a -+// later release. -+func WithReturnConnectionError() DialOption { -+ return newFuncDialOption(func(o *dialOptions) { -+ o.block = true -+ o.returnLastError = true -+ }) -+} -+ -+// WithInsecure returns a DialOption which disables transport security for this -+// ClientConn. Under the hood, it uses insecure.NewCredentials(). -+// -+// Note that using this DialOption with per-RPC credentials (through -+// WithCredentialsBundle or WithPerRPCCredentials) which require transport -+// security is incompatible and will cause grpc.Dial() to fail. -+// -+// Deprecated: use WithTransportCredentials and insecure.NewCredentials() -+// instead. Will be supported throughout 1.x. -+func WithInsecure() DialOption { -+ return newFuncDialOption(func(o *dialOptions) { -+ o.copts.TransportCredentials = insecure.NewCredentials() -+ }) -+} -+ -+// WithNoProxy returns a DialOption which disables the use of proxies for this -+// ClientConn. This is ignored if WithDialer or WithContextDialer are used. -+// -+// # Experimental -+// -+// Notice: This API is EXPERIMENTAL and may be changed or removed in a -+// later release. -+func WithNoProxy() DialOption { -+ return newFuncDialOption(func(o *dialOptions) { -+ o.copts.UseProxy = false -+ }) -+} -+ -+// WithTransportCredentials returns a DialOption which configures a connection -+// level security credentials (e.g., TLS/SSL). This should not be used together -+// with WithCredentialsBundle. -+func WithTransportCredentials(creds credentials.TransportCredentials) DialOption { -+ return newFuncDialOption(func(o *dialOptions) { -+ o.copts.TransportCredentials = creds -+ }) -+} -+ -+// WithPerRPCCredentials returns a DialOption which sets credentials and places -+// auth state on each outbound RPC. -+func WithPerRPCCredentials(creds credentials.PerRPCCredentials) DialOption { -+ return newFuncDialOption(func(o *dialOptions) { -+ o.copts.PerRPCCredentials = append(o.copts.PerRPCCredentials, creds) -+ }) -+} -+ -+// WithCredentialsBundle returns a DialOption to set a credentials bundle for -+// the ClientConn.WithCreds. This should not be used together with -+// WithTransportCredentials. -+// -+// # Experimental -+// -+// Notice: This API is EXPERIMENTAL and may be changed or removed in a -+// later release. -+func WithCredentialsBundle(b credentials.Bundle) DialOption { -+ return newFuncDialOption(func(o *dialOptions) { -+ o.copts.CredsBundle = b -+ }) -+} -+ -+// WithTimeout returns a DialOption that configures a timeout for dialing a -+// ClientConn initially. This is valid if and only if WithBlock() is present. -+// -+// Deprecated: use DialContext instead of Dial and context.WithTimeout -+// instead. Will be supported throughout 1.x. -+func WithTimeout(d time.Duration) DialOption { -+ return newFuncDialOption(func(o *dialOptions) { -+ o.timeout = d -+ }) -+} -+ -+// WithContextDialer returns a DialOption that sets a dialer to create -+// connections. If FailOnNonTempDialError() is set to true, and an error is -+// returned by f, gRPC checks the error's Temporary() method to decide if it -+// should try to reconnect to the network address. -+func WithContextDialer(f func(context.Context, string) (net.Conn, error)) DialOption { -+ return newFuncDialOption(func(o *dialOptions) { -+ o.copts.Dialer = f -+ }) -+} -+ -+func init() { -+ internal.WithHealthCheckFunc = withHealthCheckFunc -+} -+ -+// WithDialer returns a DialOption that specifies a function to use for dialing -+// network addresses. If FailOnNonTempDialError() is set to true, and an error -+// is returned by f, gRPC checks the error's Temporary() method to decide if it -+// should try to reconnect to the network address. -+// -+// Deprecated: use WithContextDialer instead. Will be supported throughout -+// 1.x. -+func WithDialer(f func(string, time.Duration) (net.Conn, error)) DialOption { -+ return WithContextDialer( -+ func(ctx context.Context, addr string) (net.Conn, error) { -+ if deadline, ok := ctx.Deadline(); ok { -+ return f(addr, time.Until(deadline)) -+ } -+ return f(addr, 0) -+ }) -+} -+ -+// WithStatsHandler returns a DialOption that specifies the stats handler for -+// all the RPCs and underlying network connections in this ClientConn. -+func WithStatsHandler(h stats.Handler) DialOption { -+ return newFuncDialOption(func(o *dialOptions) { -+ if h == nil { -+ logger.Error("ignoring nil parameter in grpc.WithStatsHandler ClientOption") -+ // Do not allow a nil stats handler, which would otherwise cause -+ // panics. -+ return -+ } -+ o.copts.StatsHandlers = append(o.copts.StatsHandlers, h) -+ }) -+} -+ -+// withBinaryLogger returns a DialOption that specifies the binary logger for -+// this ClientConn. -+func withBinaryLogger(bl binarylog.Logger) DialOption { -+ return newFuncDialOption(func(o *dialOptions) { -+ o.binaryLogger = bl -+ }) -+} -+ -+// FailOnNonTempDialError returns a DialOption that specifies if gRPC fails on -+// non-temporary dial errors. If f is true, and dialer returns a non-temporary -+// error, gRPC will fail the connection to the network address and won't try to -+// reconnect. The default value of FailOnNonTempDialError is false. -+// -+// FailOnNonTempDialError only affects the initial dial, and does not do -+// anything useful unless you are also using WithBlock(). -+// -+// Use of this feature is not recommended. For more information, please see: -+// https://github.com/grpc/grpc-go/blob/master/Documentation/anti-patterns.md -+// -+// # Experimental -+// -+// Notice: This API is EXPERIMENTAL and may be changed or removed in a -+// later release. -+func FailOnNonTempDialError(f bool) DialOption { -+ return newFuncDialOption(func(o *dialOptions) { -+ o.copts.FailOnNonTempDialError = f -+ }) -+} -+ -+// WithUserAgent returns a DialOption that specifies a user agent string for all -+// the RPCs. -+func WithUserAgent(s string) DialOption { -+ return newFuncDialOption(func(o *dialOptions) { -+ o.copts.UserAgent = s -+ }) -+} -+ -+// WithKeepaliveParams returns a DialOption that specifies keepalive parameters -+// for the client transport. -+func WithKeepaliveParams(kp keepalive.ClientParameters) DialOption { -+ if kp.Time < internal.KeepaliveMinPingTime { -+ logger.Warningf("Adjusting keepalive ping interval to minimum period of %v", internal.KeepaliveMinPingTime) -+ kp.Time = internal.KeepaliveMinPingTime -+ } -+ return newFuncDialOption(func(o *dialOptions) { -+ o.copts.KeepaliveParams = kp -+ }) -+} -+ -+// WithUnaryInterceptor returns a DialOption that specifies the interceptor for -+// unary RPCs. -+func WithUnaryInterceptor(f UnaryClientInterceptor) DialOption { -+ return newFuncDialOption(func(o *dialOptions) { -+ o.unaryInt = f -+ }) -+} -+ -+// WithChainUnaryInterceptor returns a DialOption that specifies the chained -+// interceptor for unary RPCs. The first interceptor will be the outer most, -+// while the last interceptor will be the inner most wrapper around the real call. -+// All interceptors added by this method will be chained, and the interceptor -+// defined by WithUnaryInterceptor will always be prepended to the chain. -+func WithChainUnaryInterceptor(interceptors ...UnaryClientInterceptor) DialOption { -+ return newFuncDialOption(func(o *dialOptions) { -+ o.chainUnaryInts = append(o.chainUnaryInts, interceptors...) -+ }) -+} -+ -+// WithStreamInterceptor returns a DialOption that specifies the interceptor for -+// streaming RPCs. -+func WithStreamInterceptor(f StreamClientInterceptor) DialOption { -+ return newFuncDialOption(func(o *dialOptions) { -+ o.streamInt = f -+ }) -+} -+ -+// WithChainStreamInterceptor returns a DialOption that specifies the chained -+// interceptor for streaming RPCs. The first interceptor will be the outer most, -+// while the last interceptor will be the inner most wrapper around the real call. -+// All interceptors added by this method will be chained, and the interceptor -+// defined by WithStreamInterceptor will always be prepended to the chain. -+func WithChainStreamInterceptor(interceptors ...StreamClientInterceptor) DialOption { -+ return newFuncDialOption(func(o *dialOptions) { -+ o.chainStreamInts = append(o.chainStreamInts, interceptors...) -+ }) -+} -+ -+// WithAuthority returns a DialOption that specifies the value to be used as the -+// :authority pseudo-header and as the server name in authentication handshake. -+func WithAuthority(a string) DialOption { -+ return newFuncDialOption(func(o *dialOptions) { -+ o.authority = a -+ }) -+} -+ -+// WithChannelzParentID returns a DialOption that specifies the channelz ID of -+// current ClientConn's parent. This function is used in nested channel creation -+// (e.g. grpclb dial). -+// -+// # Experimental -+// -+// Notice: This API is EXPERIMENTAL and may be changed or removed in a -+// later release. -+func WithChannelzParentID(id *channelz.Identifier) DialOption { -+ return newFuncDialOption(func(o *dialOptions) { -+ o.channelzParentID = id -+ }) -+} -+ -+// WithDisableServiceConfig returns a DialOption that causes gRPC to ignore any -+// service config provided by the resolver and provides a hint to the resolver -+// to not fetch service configs. -+// -+// Note that this dial option only disables service config from resolver. If -+// default service config is provided, gRPC will use the default service config. -+func WithDisableServiceConfig() DialOption { -+ return newFuncDialOption(func(o *dialOptions) { -+ o.disableServiceConfig = true -+ }) -+} -+ -+// WithDefaultServiceConfig returns a DialOption that configures the default -+// service config, which will be used in cases where: -+// -+// 1. WithDisableServiceConfig is also used, or -+// -+// 2. The name resolver does not provide a service config or provides an -+// invalid service config. -+// -+// The parameter s is the JSON representation of the default service config. -+// For more information about service configs, see: -+// https://github.com/grpc/grpc/blob/master/doc/service_config.md -+// For a simple example of usage, see: -+// examples/features/load_balancing/client/main.go -+func WithDefaultServiceConfig(s string) DialOption { -+ return newFuncDialOption(func(o *dialOptions) { -+ o.defaultServiceConfigRawJSON = &s -+ }) -+} -+ -+// WithDisableRetry returns a DialOption that disables retries, even if the -+// service config enables them. This does not impact transparent retries, which -+// will happen automatically if no data is written to the wire or if the RPC is -+// unprocessed by the remote server. -+func WithDisableRetry() DialOption { -+ return newFuncDialOption(func(o *dialOptions) { -+ o.disableRetry = true -+ }) -+} -+ -+// WithMaxHeaderListSize returns a DialOption that specifies the maximum -+// (uncompressed) size of header list that the client is prepared to accept. -+func WithMaxHeaderListSize(s uint32) DialOption { -+ return newFuncDialOption(func(o *dialOptions) { -+ o.copts.MaxHeaderListSize = &s -+ }) -+} -+ -+// WithDisableHealthCheck disables the LB channel health checking for all -+// SubConns of this ClientConn. -+// -+// # Experimental -+// -+// Notice: This API is EXPERIMENTAL and may be changed or removed in a -+// later release. -+func WithDisableHealthCheck() DialOption { -+ return newFuncDialOption(func(o *dialOptions) { -+ o.disableHealthCheck = true -+ }) -+} -+ -+// withHealthCheckFunc replaces the default health check function with the -+// provided one. It makes tests easier to change the health check function. -+// -+// For testing purpose only. -+func withHealthCheckFunc(f internal.HealthChecker) DialOption { -+ return newFuncDialOption(func(o *dialOptions) { -+ o.healthCheckFunc = f -+ }) -+} -+ -+func defaultDialOptions() dialOptions { -+ return dialOptions{ -+ healthCheckFunc: internal.HealthCheckFunc, -+ copts: transport.ConnectOptions{ -+ WriteBufferSize: defaultWriteBufSize, -+ ReadBufferSize: defaultReadBufSize, -+ UseProxy: true, -+ }, -+ recvBufferPool: nopBufferPool{}, -+ } -+} -+ -+// withGetMinConnectDeadline specifies the function that clientconn uses to -+// get minConnectDeadline. This can be used to make connection attempts happen -+// faster/slower. -+// -+// For testing purpose only. -+func withMinConnectDeadline(f func() time.Duration) DialOption { -+ return newFuncDialOption(func(o *dialOptions) { -+ o.minConnectTimeout = f -+ }) -+} -+ -+// WithResolvers allows a list of resolver implementations to be registered -+// locally with the ClientConn without needing to be globally registered via -+// resolver.Register. They will be matched against the scheme used for the -+// current Dial only, and will take precedence over the global registry. -+// -+// # Experimental -+// -+// Notice: This API is EXPERIMENTAL and may be changed or removed in a -+// later release. -+func WithResolvers(rs ...resolver.Builder) DialOption { -+ return newFuncDialOption(func(o *dialOptions) { -+ o.resolvers = append(o.resolvers, rs...) -+ }) -+} -+ -+// WithIdleTimeout returns a DialOption that configures an idle timeout for the -+// channel. If the channel is idle for the configured timeout, i.e there are no -+// ongoing RPCs and no new RPCs are initiated, the channel will enter idle mode -+// and as a result the name resolver and load balancer will be shut down. The -+// channel will exit idle mode when the Connect() method is called or when an -+// RPC is initiated. -+// -+// By default this feature is disabled, which can also be explicitly configured -+// by passing zero to this function. -+// -+// # Experimental -+// -+// Notice: This API is EXPERIMENTAL and may be changed or removed in a -+// later release. -+func WithIdleTimeout(d time.Duration) DialOption { -+ return newFuncDialOption(func(o *dialOptions) { -+ o.idleTimeout = d -+ }) -+} -+ -+// WithRecvBufferPool returns a DialOption that configures the ClientConn -+// to use the provided shared buffer pool for parsing incoming messages. Depending -+// on the application's workload, this could result in reduced memory allocation. -+// -+// If you are unsure about how to implement a memory pool but want to utilize one, -+// begin with grpc.NewSharedBufferPool. -+// -+// Note: The shared buffer pool feature will not be active if any of the following -+// options are used: WithStatsHandler, EnableTracing, or binary logging. In such -+// cases, the shared buffer pool will be ignored. -+// -+// # Experimental -+// -+// Notice: This API is EXPERIMENTAL and may be changed or removed in a -+// later release. -+func WithRecvBufferPool(bufferPool SharedBufferPool) DialOption { -+ return newFuncDialOption(func(o *dialOptions) { -+ o.recvBufferPool = bufferPool -+ }) -+} -diff --git a/vendor/google.golang.org/grpc/doc.go b/vendor/google.golang.org/grpc/doc.go -new file mode 100755 -index 0000000..0022859 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/doc.go -@@ -0,0 +1,26 @@ -+/* -+ * -+ * 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 ./regenerate.sh -+ -+/* -+Package grpc implements an RPC system called gRPC. -+ -+See grpc.io for more information about gRPC. -+*/ -+package grpc // import "google.golang.org/grpc" -diff --git a/vendor/google.golang.org/grpc/encoding/encoding.go b/vendor/google.golang.org/grpc/encoding/encoding.go -new file mode 100755 -index 0000000..07a5861 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/encoding/encoding.go -@@ -0,0 +1,135 @@ -+/* -+ * -+ * 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 encoding defines the interface for the compressor and codec, and -+// functions to register and retrieve compressors and codecs. -+// -+// # Experimental -+// -+// Notice: This package is EXPERIMENTAL and may be changed or removed in a -+// later release. -+package encoding -+ -+import ( -+ "io" -+ "strings" -+ -+ "google.golang.org/grpc/internal/grpcutil" -+) -+ -+// Identity specifies the optional encoding for uncompressed streams. -+// It is intended for grpc internal use only. -+const Identity = "identity" -+ -+// Compressor is used for compressing and decompressing when sending or -+// receiving messages. -+type Compressor interface { -+ // Compress writes the data written to wc to w after compressing it. If an -+ // error occurs while initializing the compressor, that error is returned -+ // instead. -+ Compress(w io.Writer) (io.WriteCloser, error) -+ // Decompress reads data from r, decompresses it, and provides the -+ // uncompressed data via the returned io.Reader. If an error occurs while -+ // initializing the decompressor, that error is returned instead. -+ Decompress(r io.Reader) (io.Reader, error) -+ // Name is the name of the compression codec and is used to set the content -+ // coding header. The result must be static; the result cannot change -+ // between calls. -+ Name() string -+ // If a Compressor implements -+ // DecompressedSize(compressedBytes []byte) int, gRPC will call it -+ // to determine the size of the buffer allocated for the result of decompression. -+ // Return -1 to indicate unknown size. -+ // -+ // Experimental -+ // -+ // Notice: This API is EXPERIMENTAL and may be changed or removed in a -+ // later release. -+} -+ -+var registeredCompressor = make(map[string]Compressor) -+ -+// RegisterCompressor registers the compressor with gRPC by its name. It can -+// be activated when sending an RPC via grpc.UseCompressor(). It will be -+// automatically accessed when receiving a message based on the content coding -+// header. Servers also use it to send a response with the same encoding as -+// the request. -+// -+// NOTE: this function must only be called during initialization time (i.e. in -+// an init() function), and is not thread-safe. If multiple Compressors are -+// registered with the same name, the one registered last will take effect. -+func RegisterCompressor(c Compressor) { -+ registeredCompressor[c.Name()] = c -+ if !grpcutil.IsCompressorNameRegistered(c.Name()) { -+ grpcutil.RegisteredCompressorNames = append(grpcutil.RegisteredCompressorNames, c.Name()) -+ } -+} -+ -+// GetCompressor returns Compressor for the given compressor name. -+func GetCompressor(name string) Compressor { -+ return registeredCompressor[name] -+} -+ -+// Codec defines the interface gRPC uses to encode and decode messages. Note -+// that implementations of this interface must be thread safe; a Codec's -+// methods can be called from concurrent goroutines. -+type Codec interface { -+ // Marshal returns the wire format of v. -+ Marshal(v interface{}) ([]byte, error) -+ // Unmarshal parses the wire format into v. -+ Unmarshal(data []byte, v interface{}) error -+ // Name returns the name of the Codec implementation. The returned string -+ // will be used as part of content type in transmission. The result must be -+ // static; the result cannot change between calls. -+ Name() string -+} -+ -+var registeredCodecs = make(map[string]Codec) -+ -+// RegisterCodec registers the provided Codec for use with all gRPC clients and -+// servers. -+// -+// The Codec will be stored and looked up by result of its Name() method, which -+// should match the content-subtype of the encoding handled by the Codec. This -+// is case-insensitive, and is stored and looked up as lowercase. If the -+// result of calling Name() is an empty string, RegisterCodec will panic. See -+// Content-Type on -+// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests for -+// more details. -+// -+// NOTE: this function must only be called during initialization time (i.e. in -+// an init() function), and is not thread-safe. If multiple Codecs are -+// registered with the same name, the one registered last will take effect. -+func RegisterCodec(codec Codec) { -+ if codec == nil { -+ panic("cannot register a nil Codec") -+ } -+ if codec.Name() == "" { -+ panic("cannot register Codec with empty string result for Name()") -+ } -+ contentSubtype := strings.ToLower(codec.Name()) -+ registeredCodecs[contentSubtype] = codec -+} -+ -+// GetCodec gets a registered Codec by content-subtype, or nil if no Codec is -+// registered for the content-subtype. -+// -+// The content-subtype is expected to be lowercase. -+func GetCodec(contentSubtype string) Codec { -+ return registeredCodecs[contentSubtype] -+} -diff --git a/vendor/google.golang.org/grpc/encoding/proto/proto.go b/vendor/google.golang.org/grpc/encoding/proto/proto.go -new file mode 100755 -index 0000000..3009b35 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/encoding/proto/proto.go -@@ -0,0 +1,58 @@ -+/* -+ * -+ * 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 defines the protobuf codec. Importing this package will -+// register the codec. -+package proto -+ -+import ( -+ "fmt" -+ -+ "github.com/golang/protobuf/proto" -+ "google.golang.org/grpc/encoding" -+) -+ -+// Name is the name registered for the proto compressor. -+const Name = "proto" -+ -+func init() { -+ encoding.RegisterCodec(codec{}) -+} -+ -+// codec is a Codec implementation with protobuf. It is the default codec for gRPC. -+type codec struct{} -+ -+func (codec) Marshal(v interface{}) ([]byte, error) { -+ vv, ok := v.(proto.Message) -+ if !ok { -+ return nil, fmt.Errorf("failed to marshal, message is %T, want proto.Message", v) -+ } -+ return proto.Marshal(vv) -+} -+ -+func (codec) Unmarshal(data []byte, v interface{}) error { -+ vv, ok := v.(proto.Message) -+ if !ok { -+ return fmt.Errorf("failed to unmarshal, message is %T, want proto.Message", v) -+ } -+ return proto.Unmarshal(data, vv) -+} -+ -+func (codec) Name() string { -+ return Name -+} -diff --git a/vendor/google.golang.org/grpc/grpclog/component.go b/vendor/google.golang.org/grpc/grpclog/component.go -new file mode 100755 -index 0000000..8358dd6 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/grpclog/component.go -@@ -0,0 +1,117 @@ -+/* -+ * -+ * Copyright 2020 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 ( -+ "fmt" -+ -+ "google.golang.org/grpc/internal/grpclog" -+) -+ -+// componentData records the settings for a component. -+type componentData struct { -+ name string -+} -+ -+var cache = map[string]*componentData{} -+ -+func (c *componentData) InfoDepth(depth int, args ...interface{}) { -+ args = append([]interface{}{"[" + string(c.name) + "]"}, args...) -+ grpclog.InfoDepth(depth+1, args...) -+} -+ -+func (c *componentData) WarningDepth(depth int, args ...interface{}) { -+ args = append([]interface{}{"[" + string(c.name) + "]"}, args...) -+ grpclog.WarningDepth(depth+1, args...) -+} -+ -+func (c *componentData) ErrorDepth(depth int, args ...interface{}) { -+ args = append([]interface{}{"[" + string(c.name) + "]"}, args...) -+ grpclog.ErrorDepth(depth+1, args...) -+} -+ -+func (c *componentData) FatalDepth(depth int, args ...interface{}) { -+ args = append([]interface{}{"[" + string(c.name) + "]"}, args...) -+ grpclog.FatalDepth(depth+1, args...) -+} -+ -+func (c *componentData) Info(args ...interface{}) { -+ c.InfoDepth(1, args...) -+} -+ -+func (c *componentData) Warning(args ...interface{}) { -+ c.WarningDepth(1, args...) -+} -+ -+func (c *componentData) Error(args ...interface{}) { -+ c.ErrorDepth(1, args...) -+} -+ -+func (c *componentData) Fatal(args ...interface{}) { -+ c.FatalDepth(1, args...) -+} -+ -+func (c *componentData) Infof(format string, args ...interface{}) { -+ c.InfoDepth(1, fmt.Sprintf(format, args...)) -+} -+ -+func (c *componentData) Warningf(format string, args ...interface{}) { -+ c.WarningDepth(1, fmt.Sprintf(format, args...)) -+} -+ -+func (c *componentData) Errorf(format string, args ...interface{}) { -+ c.ErrorDepth(1, fmt.Sprintf(format, args...)) -+} -+ -+func (c *componentData) Fatalf(format string, args ...interface{}) { -+ c.FatalDepth(1, fmt.Sprintf(format, args...)) -+} -+ -+func (c *componentData) Infoln(args ...interface{}) { -+ c.InfoDepth(1, args...) -+} -+ -+func (c *componentData) Warningln(args ...interface{}) { -+ c.WarningDepth(1, args...) -+} -+ -+func (c *componentData) Errorln(args ...interface{}) { -+ c.ErrorDepth(1, args...) -+} -+ -+func (c *componentData) Fatalln(args ...interface{}) { -+ c.FatalDepth(1, args...) -+} -+ -+func (c *componentData) V(l int) bool { -+ return V(l) -+} -+ -+// Component creates a new component and returns it for logging. If a component -+// with the name already exists, nothing will be created and it will be -+// returned. SetLoggerV2 will panic if it is called with a logger created by -+// Component. -+func Component(componentName string) DepthLoggerV2 { -+ if cData, ok := cache[componentName]; ok { -+ return cData -+ } -+ c := &componentData{componentName} -+ cache[componentName] = c -+ return c -+} -diff --git a/vendor/google.golang.org/grpc/grpclog/grpclog.go b/vendor/google.golang.org/grpc/grpclog/grpclog.go -new file mode 100755 -index 0000000..c8bb2be ---- /dev/null -+++ b/vendor/google.golang.org/grpc/grpclog/grpclog.go -@@ -0,0 +1,132 @@ -+/* -+ * -+ * 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 defines logging for grpc. -+// -+// All logs in transport and grpclb packages only go to verbose level 2. -+// All logs in other packages in grpc are logged in spite of the verbosity level. -+// -+// In the default logger, -+// severity level can be set by environment variable GRPC_GO_LOG_SEVERITY_LEVEL, -+// verbosity level can be set by GRPC_GO_LOG_VERBOSITY_LEVEL. -+package grpclog // import "google.golang.org/grpc/grpclog" -+ -+import ( -+ "os" -+ -+ "google.golang.org/grpc/internal/grpclog" -+) -+ -+func init() { -+ SetLoggerV2(newLoggerV2()) -+} -+ -+// V reports whether verbosity level l is at least the requested verbose level. -+func V(l int) bool { -+ return grpclog.Logger.V(l) -+} -+ -+// Info logs to the INFO log. -+func Info(args ...interface{}) { -+ grpclog.Logger.Info(args...) -+} -+ -+// Infof logs to the INFO log. Arguments are handled in the manner of fmt.Printf. -+func Infof(format string, args ...interface{}) { -+ grpclog.Logger.Infof(format, args...) -+} -+ -+// Infoln logs to the INFO log. Arguments are handled in the manner of fmt.Println. -+func Infoln(args ...interface{}) { -+ grpclog.Logger.Infoln(args...) -+} -+ -+// Warning logs to the WARNING log. -+func Warning(args ...interface{}) { -+ grpclog.Logger.Warning(args...) -+} -+ -+// Warningf logs to the WARNING log. Arguments are handled in the manner of fmt.Printf. -+func Warningf(format string, args ...interface{}) { -+ grpclog.Logger.Warningf(format, args...) -+} -+ -+// Warningln logs to the WARNING log. Arguments are handled in the manner of fmt.Println. -+func Warningln(args ...interface{}) { -+ grpclog.Logger.Warningln(args...) -+} -+ -+// Error logs to the ERROR log. -+func Error(args ...interface{}) { -+ grpclog.Logger.Error(args...) -+} -+ -+// Errorf logs to the ERROR log. Arguments are handled in the manner of fmt.Printf. -+func Errorf(format string, args ...interface{}) { -+ grpclog.Logger.Errorf(format, args...) -+} -+ -+// Errorln logs to the ERROR log. Arguments are handled in the manner of fmt.Println. -+func Errorln(args ...interface{}) { -+ grpclog.Logger.Errorln(args...) -+} -+ -+// Fatal logs to the FATAL log. Arguments are handled in the manner of fmt.Print. -+// It calls os.Exit() with exit code 1. -+func Fatal(args ...interface{}) { -+ grpclog.Logger.Fatal(args...) -+ // Make sure fatal logs will exit. -+ os.Exit(1) -+} -+ -+// Fatalf logs to the FATAL log. Arguments are handled in the manner of fmt.Printf. -+// It calls os.Exit() with exit code 1. -+func Fatalf(format string, args ...interface{}) { -+ grpclog.Logger.Fatalf(format, args...) -+ // Make sure fatal logs will exit. -+ os.Exit(1) -+} -+ -+// Fatalln logs to the FATAL log. Arguments are handled in the manner of fmt.Println. -+// It calle os.Exit()) with exit code 1. -+func Fatalln(args ...interface{}) { -+ grpclog.Logger.Fatalln(args...) -+ // Make sure fatal logs will exit. -+ os.Exit(1) -+} -+ -+// Print prints to the logger. Arguments are handled in the manner of fmt.Print. -+// -+// Deprecated: use Info. -+func Print(args ...interface{}) { -+ grpclog.Logger.Info(args...) -+} -+ -+// Printf prints to the logger. Arguments are handled in the manner of fmt.Printf. -+// -+// Deprecated: use Infof. -+func Printf(format string, args ...interface{}) { -+ grpclog.Logger.Infof(format, args...) -+} -+ -+// Println prints to the logger. Arguments are handled in the manner of fmt.Println. -+// -+// Deprecated: use Infoln. -+func Println(args ...interface{}) { -+ grpclog.Logger.Infoln(args...) -+} -diff --git a/vendor/google.golang.org/grpc/grpclog/logger.go b/vendor/google.golang.org/grpc/grpclog/logger.go -new file mode 100755 -index 0000000..ef06a48 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/grpclog/logger.go -@@ -0,0 +1,87 @@ -+/* -+ * -+ * 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 grpclog -+ -+import "google.golang.org/grpc/internal/grpclog" -+ -+// Logger mimics golang's standard Logger as an interface. -+// -+// Deprecated: use LoggerV2. -+type Logger interface { -+ Fatal(args ...interface{}) -+ Fatalf(format string, args ...interface{}) -+ Fatalln(args ...interface{}) -+ Print(args ...interface{}) -+ Printf(format string, args ...interface{}) -+ Println(args ...interface{}) -+} -+ -+// SetLogger sets the logger that is used in grpc. Call only from -+// init() functions. -+// -+// Deprecated: use SetLoggerV2. -+func SetLogger(l Logger) { -+ grpclog.Logger = &loggerWrapper{Logger: l} -+} -+ -+// loggerWrapper wraps Logger into a LoggerV2. -+type loggerWrapper struct { -+ Logger -+} -+ -+func (g *loggerWrapper) Info(args ...interface{}) { -+ g.Logger.Print(args...) -+} -+ -+func (g *loggerWrapper) Infoln(args ...interface{}) { -+ g.Logger.Println(args...) -+} -+ -+func (g *loggerWrapper) Infof(format string, args ...interface{}) { -+ g.Logger.Printf(format, args...) -+} -+ -+func (g *loggerWrapper) Warning(args ...interface{}) { -+ g.Logger.Print(args...) -+} -+ -+func (g *loggerWrapper) Warningln(args ...interface{}) { -+ g.Logger.Println(args...) -+} -+ -+func (g *loggerWrapper) Warningf(format string, args ...interface{}) { -+ g.Logger.Printf(format, args...) -+} -+ -+func (g *loggerWrapper) Error(args ...interface{}) { -+ g.Logger.Print(args...) -+} -+ -+func (g *loggerWrapper) Errorln(args ...interface{}) { -+ g.Logger.Println(args...) -+} -+ -+func (g *loggerWrapper) Errorf(format string, args ...interface{}) { -+ g.Logger.Printf(format, args...) -+} -+ -+func (g *loggerWrapper) V(l int) bool { -+ // Returns true for all verbose level. -+ return true -+} -diff --git a/vendor/google.golang.org/grpc/grpclog/loggerv2.go b/vendor/google.golang.org/grpc/grpclog/loggerv2.go -new file mode 100755 -index 0000000..5de66e4 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/grpclog/loggerv2.go -@@ -0,0 +1,258 @@ -+/* -+ * -+ * 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 ( -+ "encoding/json" -+ "fmt" -+ "io" -+ "log" -+ "os" -+ "strconv" -+ "strings" -+ -+ "google.golang.org/grpc/internal/grpclog" -+) -+ -+// LoggerV2 does underlying logging work for grpclog. -+type LoggerV2 interface { -+ // Info logs to INFO log. Arguments are handled in the manner of fmt.Print. -+ Info(args ...interface{}) -+ // Infoln logs to INFO log. Arguments are handled in the manner of fmt.Println. -+ Infoln(args ...interface{}) -+ // Infof logs to INFO log. Arguments are handled in the manner of fmt.Printf. -+ Infof(format string, args ...interface{}) -+ // Warning logs to WARNING log. Arguments are handled in the manner of fmt.Print. -+ Warning(args ...interface{}) -+ // Warningln logs to WARNING log. Arguments are handled in the manner of fmt.Println. -+ Warningln(args ...interface{}) -+ // Warningf logs to WARNING log. Arguments are handled in the manner of fmt.Printf. -+ Warningf(format string, args ...interface{}) -+ // Error logs to ERROR log. Arguments are handled in the manner of fmt.Print. -+ Error(args ...interface{}) -+ // Errorln logs to ERROR log. Arguments are handled in the manner of fmt.Println. -+ Errorln(args ...interface{}) -+ // Errorf logs to ERROR log. Arguments are handled in the manner of fmt.Printf. -+ Errorf(format string, args ...interface{}) -+ // Fatal logs to ERROR log. Arguments are handled in the manner of fmt.Print. -+ // gRPC ensures that all Fatal logs will exit with os.Exit(1). -+ // Implementations may also call os.Exit() with a non-zero exit code. -+ Fatal(args ...interface{}) -+ // Fatalln logs to ERROR log. Arguments are handled in the manner of fmt.Println. -+ // gRPC ensures that all Fatal logs will exit with os.Exit(1). -+ // Implementations may also call os.Exit() with a non-zero exit code. -+ Fatalln(args ...interface{}) -+ // Fatalf logs to ERROR log. Arguments are handled in the manner of fmt.Printf. -+ // gRPC ensures that all Fatal logs will exit with os.Exit(1). -+ // Implementations may also call os.Exit() with a non-zero exit code. -+ Fatalf(format string, args ...interface{}) -+ // V reports whether verbosity level l is at least the requested verbose level. -+ V(l int) bool -+} -+ -+// SetLoggerV2 sets logger that is used in grpc to a V2 logger. -+// Not mutex-protected, should be called before any gRPC functions. -+func SetLoggerV2(l LoggerV2) { -+ if _, ok := l.(*componentData); ok { -+ panic("cannot use component logger as grpclog logger") -+ } -+ grpclog.Logger = l -+ grpclog.DepthLogger, _ = l.(grpclog.DepthLoggerV2) -+} -+ -+const ( -+ // infoLog indicates Info severity. -+ infoLog int = iota -+ // warningLog indicates Warning severity. -+ warningLog -+ // errorLog indicates Error severity. -+ errorLog -+ // fatalLog indicates Fatal severity. -+ fatalLog -+) -+ -+// severityName contains the string representation of each severity. -+var severityName = []string{ -+ infoLog: "INFO", -+ warningLog: "WARNING", -+ errorLog: "ERROR", -+ fatalLog: "FATAL", -+} -+ -+// loggerT is the default logger used by grpclog. -+type loggerT struct { -+ m []*log.Logger -+ v int -+ jsonFormat bool -+} -+ -+// NewLoggerV2 creates a loggerV2 with the provided writers. -+// Fatal logs will be written to errorW, warningW, infoW, followed by exit(1). -+// Error logs will be written to errorW, warningW and infoW. -+// Warning logs will be written to warningW and infoW. -+// Info logs will be written to infoW. -+func NewLoggerV2(infoW, warningW, errorW io.Writer) LoggerV2 { -+ return newLoggerV2WithConfig(infoW, warningW, errorW, loggerV2Config{}) -+} -+ -+// NewLoggerV2WithVerbosity creates a loggerV2 with the provided writers and -+// verbosity level. -+func NewLoggerV2WithVerbosity(infoW, warningW, errorW io.Writer, v int) LoggerV2 { -+ return newLoggerV2WithConfig(infoW, warningW, errorW, loggerV2Config{verbose: v}) -+} -+ -+type loggerV2Config struct { -+ verbose int -+ jsonFormat bool -+} -+ -+func newLoggerV2WithConfig(infoW, warningW, errorW io.Writer, c loggerV2Config) LoggerV2 { -+ var m []*log.Logger -+ flag := log.LstdFlags -+ if c.jsonFormat { -+ flag = 0 -+ } -+ m = append(m, log.New(infoW, "", flag)) -+ m = append(m, log.New(io.MultiWriter(infoW, warningW), "", flag)) -+ ew := io.MultiWriter(infoW, warningW, errorW) // ew will be used for error and fatal. -+ m = append(m, log.New(ew, "", flag)) -+ m = append(m, log.New(ew, "", flag)) -+ return &loggerT{m: m, v: c.verbose, jsonFormat: c.jsonFormat} -+} -+ -+// newLoggerV2 creates a loggerV2 to be used as default logger. -+// All logs are written to stderr. -+func newLoggerV2() LoggerV2 { -+ errorW := io.Discard -+ warningW := io.Discard -+ infoW := io.Discard -+ -+ logLevel := os.Getenv("GRPC_GO_LOG_SEVERITY_LEVEL") -+ switch logLevel { -+ case "", "ERROR", "error": // If env is unset, set level to ERROR. -+ errorW = os.Stderr -+ case "WARNING", "warning": -+ warningW = os.Stderr -+ case "INFO", "info": -+ infoW = os.Stderr -+ } -+ -+ var v int -+ vLevel := os.Getenv("GRPC_GO_LOG_VERBOSITY_LEVEL") -+ if vl, err := strconv.Atoi(vLevel); err == nil { -+ v = vl -+ } -+ -+ jsonFormat := strings.EqualFold(os.Getenv("GRPC_GO_LOG_FORMATTER"), "json") -+ -+ return newLoggerV2WithConfig(infoW, warningW, errorW, loggerV2Config{ -+ verbose: v, -+ jsonFormat: jsonFormat, -+ }) -+} -+ -+func (g *loggerT) output(severity int, s string) { -+ sevStr := severityName[severity] -+ if !g.jsonFormat { -+ g.m[severity].Output(2, fmt.Sprintf("%v: %v", sevStr, s)) -+ return -+ } -+ // TODO: we can also include the logging component, but that needs more -+ // (API) changes. -+ b, _ := json.Marshal(map[string]string{ -+ "severity": sevStr, -+ "message": s, -+ }) -+ g.m[severity].Output(2, string(b)) -+} -+ -+func (g *loggerT) Info(args ...interface{}) { -+ g.output(infoLog, fmt.Sprint(args...)) -+} -+ -+func (g *loggerT) Infoln(args ...interface{}) { -+ g.output(infoLog, fmt.Sprintln(args...)) -+} -+ -+func (g *loggerT) Infof(format string, args ...interface{}) { -+ g.output(infoLog, fmt.Sprintf(format, args...)) -+} -+ -+func (g *loggerT) Warning(args ...interface{}) { -+ g.output(warningLog, fmt.Sprint(args...)) -+} -+ -+func (g *loggerT) Warningln(args ...interface{}) { -+ g.output(warningLog, fmt.Sprintln(args...)) -+} -+ -+func (g *loggerT) Warningf(format string, args ...interface{}) { -+ g.output(warningLog, fmt.Sprintf(format, args...)) -+} -+ -+func (g *loggerT) Error(args ...interface{}) { -+ g.output(errorLog, fmt.Sprint(args...)) -+} -+ -+func (g *loggerT) Errorln(args ...interface{}) { -+ g.output(errorLog, fmt.Sprintln(args...)) -+} -+ -+func (g *loggerT) Errorf(format string, args ...interface{}) { -+ g.output(errorLog, fmt.Sprintf(format, args...)) -+} -+ -+func (g *loggerT) Fatal(args ...interface{}) { -+ g.output(fatalLog, fmt.Sprint(args...)) -+ os.Exit(1) -+} -+ -+func (g *loggerT) Fatalln(args ...interface{}) { -+ g.output(fatalLog, fmt.Sprintln(args...)) -+ os.Exit(1) -+} -+ -+func (g *loggerT) Fatalf(format string, args ...interface{}) { -+ g.output(fatalLog, fmt.Sprintf(format, args...)) -+ os.Exit(1) -+} -+ -+func (g *loggerT) V(l int) bool { -+ return l <= g.v -+} -+ -+// DepthLoggerV2 logs at a specified call frame. If a LoggerV2 also implements -+// DepthLoggerV2, the below functions will be called with the appropriate stack -+// depth set for trivial functions the logger may ignore. -+// -+// # Experimental -+// -+// Notice: This type is EXPERIMENTAL and may be changed or removed in a -+// later release. -+type DepthLoggerV2 interface { -+ LoggerV2 -+ // InfoDepth logs to INFO log at the specified depth. Arguments are handled in the manner of fmt.Println. -+ InfoDepth(depth int, args ...interface{}) -+ // WarningDepth logs to WARNING log at the specified depth. Arguments are handled in the manner of fmt.Println. -+ WarningDepth(depth int, args ...interface{}) -+ // ErrorDepth logs to ERROR log at the specified depth. Arguments are handled in the manner of fmt.Println. -+ ErrorDepth(depth int, args ...interface{}) -+ // FatalDepth logs to FATAL log at the specified depth. Arguments are handled in the manner of fmt.Println. -+ FatalDepth(depth int, args ...interface{}) -+} -diff --git a/vendor/google.golang.org/grpc/idle.go b/vendor/google.golang.org/grpc/idle.go -new file mode 100755 -index 0000000..dc3dc72 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/idle.go -@@ -0,0 +1,287 @@ -+/* -+ * -+ * Copyright 2023 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" -+ "sync" -+ "sync/atomic" -+ "time" -+) -+ -+// For overriding in unit tests. -+var timeAfterFunc = func(d time.Duration, f func()) *time.Timer { -+ return time.AfterFunc(d, f) -+} -+ -+// idlenessEnforcer is the functionality provided by grpc.ClientConn to enter -+// and exit from idle mode. -+type idlenessEnforcer interface { -+ exitIdleMode() error -+ enterIdleMode() error -+} -+ -+// idlenessManager defines the functionality required to track RPC activity on a -+// channel. -+type idlenessManager interface { -+ onCallBegin() error -+ onCallEnd() -+ close() -+} -+ -+type noopIdlenessManager struct{} -+ -+func (noopIdlenessManager) onCallBegin() error { return nil } -+func (noopIdlenessManager) onCallEnd() {} -+func (noopIdlenessManager) close() {} -+ -+// idlenessManagerImpl implements the idlenessManager interface. It uses atomic -+// operations to synchronize access to shared state and a mutex to guarantee -+// mutual exclusion in a critical section. -+type idlenessManagerImpl struct { -+ // State accessed atomically. -+ lastCallEndTime int64 // Unix timestamp in nanos; time when the most recent RPC completed. -+ activeCallsCount int32 // Count of active RPCs; -math.MaxInt32 means channel is idle or is trying to get there. -+ activeSinceLastTimerCheck int32 // Boolean; True if there was an RPC since the last timer callback. -+ closed int32 // Boolean; True when the manager is closed. -+ -+ // Can be accessed without atomics or mutex since these are set at creation -+ // time and read-only after that. -+ enforcer idlenessEnforcer // Functionality provided by grpc.ClientConn. -+ timeout int64 // Idle timeout duration nanos stored as an int64. -+ -+ // idleMu is used to guarantee mutual exclusion in two scenarios: -+ // - Opposing intentions: -+ // - a: Idle timeout has fired and handleIdleTimeout() is trying to put -+ // the channel in idle mode because the channel has been inactive. -+ // - b: At the same time an RPC is made on the channel, and onCallBegin() -+ // is trying to prevent the channel from going idle. -+ // - Competing intentions: -+ // - The channel is in idle mode and there are multiple RPCs starting at -+ // the same time, all trying to move the channel out of idle. Only one -+ // of them should succeed in doing so, while the other RPCs should -+ // piggyback on the first one and be successfully handled. -+ idleMu sync.RWMutex -+ actuallyIdle bool -+ timer *time.Timer -+} -+ -+// newIdlenessManager creates a new idleness manager implementation for the -+// given idle timeout. -+func newIdlenessManager(enforcer idlenessEnforcer, idleTimeout time.Duration) idlenessManager { -+ if idleTimeout == 0 { -+ return noopIdlenessManager{} -+ } -+ -+ i := &idlenessManagerImpl{ -+ enforcer: enforcer, -+ timeout: int64(idleTimeout), -+ } -+ i.timer = timeAfterFunc(idleTimeout, i.handleIdleTimeout) -+ return i -+} -+ -+// resetIdleTimer resets the idle timer to the given duration. This method -+// should only be called from the timer callback. -+func (i *idlenessManagerImpl) resetIdleTimer(d time.Duration) { -+ i.idleMu.Lock() -+ defer i.idleMu.Unlock() -+ -+ if i.timer == nil { -+ // Only close sets timer to nil. We are done. -+ return -+ } -+ -+ // It is safe to ignore the return value from Reset() because this method is -+ // only ever called from the timer callback, which means the timer has -+ // already fired. -+ i.timer.Reset(d) -+} -+ -+// handleIdleTimeout is the timer callback that is invoked upon expiry of the -+// configured idle timeout. The channel is considered inactive if there are no -+// ongoing calls and no RPC activity since the last time the timer fired. -+func (i *idlenessManagerImpl) handleIdleTimeout() { -+ if i.isClosed() { -+ return -+ } -+ -+ if atomic.LoadInt32(&i.activeCallsCount) > 0 { -+ i.resetIdleTimer(time.Duration(i.timeout)) -+ return -+ } -+ -+ // There has been activity on the channel since we last got here. Reset the -+ // timer and return. -+ if atomic.LoadInt32(&i.activeSinceLastTimerCheck) == 1 { -+ // Set the timer to fire after a duration of idle timeout, calculated -+ // from the time the most recent RPC completed. -+ atomic.StoreInt32(&i.activeSinceLastTimerCheck, 0) -+ i.resetIdleTimer(time.Duration(atomic.LoadInt64(&i.lastCallEndTime) + i.timeout - time.Now().UnixNano())) -+ return -+ } -+ -+ // This CAS operation is extremely likely to succeed given that there has -+ // been no activity since the last time we were here. Setting the -+ // activeCallsCount to -math.MaxInt32 indicates to onCallBegin() that the -+ // channel is either in idle mode or is trying to get there. -+ if !atomic.CompareAndSwapInt32(&i.activeCallsCount, 0, -math.MaxInt32) { -+ // This CAS operation can fail if an RPC started after we checked for -+ // activity at the top of this method, or one was ongoing from before -+ // the last time we were here. In both case, reset the timer and return. -+ i.resetIdleTimer(time.Duration(i.timeout)) -+ return -+ } -+ -+ // Now that we've set the active calls count to -math.MaxInt32, it's time to -+ // actually move to idle mode. -+ if i.tryEnterIdleMode() { -+ // Successfully entered idle mode. No timer needed until we exit idle. -+ return -+ } -+ -+ // Failed to enter idle mode due to a concurrent RPC that kept the channel -+ // active, or because of an error from the channel. Undo the attempt to -+ // enter idle, and reset the timer to try again later. -+ atomic.AddInt32(&i.activeCallsCount, math.MaxInt32) -+ i.resetIdleTimer(time.Duration(i.timeout)) -+} -+ -+// tryEnterIdleMode instructs the channel to enter idle mode. But before -+// that, it performs a last minute check to ensure that no new RPC has come in, -+// making the channel active. -+// -+// Return value indicates whether or not the channel moved to idle mode. -+// -+// Holds idleMu which ensures mutual exclusion with exitIdleMode. -+func (i *idlenessManagerImpl) tryEnterIdleMode() bool { -+ i.idleMu.Lock() -+ defer i.idleMu.Unlock() -+ -+ if atomic.LoadInt32(&i.activeCallsCount) != -math.MaxInt32 { -+ // We raced and lost to a new RPC. Very rare, but stop entering idle. -+ return false -+ } -+ if atomic.LoadInt32(&i.activeSinceLastTimerCheck) == 1 { -+ // An very short RPC could have come in (and also finished) after we -+ // checked for calls count and activity in handleIdleTimeout(), but -+ // before the CAS operation. So, we need to check for activity again. -+ return false -+ } -+ -+ // No new RPCs have come in since we last set the active calls count value -+ // -math.MaxInt32 in the timer callback. And since we have the lock, it is -+ // safe to enter idle mode now. -+ if err := i.enforcer.enterIdleMode(); err != nil { -+ logger.Errorf("Failed to enter idle mode: %v", err) -+ return false -+ } -+ -+ // Successfully entered idle mode. -+ i.actuallyIdle = true -+ return true -+} -+ -+// onCallBegin is invoked at the start of every RPC. -+func (i *idlenessManagerImpl) onCallBegin() error { -+ if i.isClosed() { -+ return nil -+ } -+ -+ if atomic.AddInt32(&i.activeCallsCount, 1) > 0 { -+ // Channel is not idle now. Set the activity bit and allow the call. -+ atomic.StoreInt32(&i.activeSinceLastTimerCheck, 1) -+ return nil -+ } -+ -+ // Channel is either in idle mode or is in the process of moving to idle -+ // mode. Attempt to exit idle mode to allow this RPC. -+ if err := i.exitIdleMode(); err != nil { -+ // Undo the increment to calls count, and return an error causing the -+ // RPC to fail. -+ atomic.AddInt32(&i.activeCallsCount, -1) -+ return err -+ } -+ -+ atomic.StoreInt32(&i.activeSinceLastTimerCheck, 1) -+ return nil -+} -+ -+// exitIdleMode instructs the channel to exit idle mode. -+// -+// Holds idleMu which ensures mutual exclusion with tryEnterIdleMode. -+func (i *idlenessManagerImpl) exitIdleMode() error { -+ i.idleMu.Lock() -+ defer i.idleMu.Unlock() -+ -+ if !i.actuallyIdle { -+ // This can happen in two scenarios: -+ // - handleIdleTimeout() set the calls count to -math.MaxInt32 and called -+ // tryEnterIdleMode(). But before the latter could grab the lock, an RPC -+ // came in and onCallBegin() noticed that the calls count is negative. -+ // - Channel is in idle mode, and multiple new RPCs come in at the same -+ // time, all of them notice a negative calls count in onCallBegin and get -+ // here. The first one to get the lock would got the channel to exit idle. -+ // -+ // Either way, nothing to do here. -+ return nil -+ } -+ -+ if err := i.enforcer.exitIdleMode(); err != nil { -+ return fmt.Errorf("channel failed to exit idle mode: %v", err) -+ } -+ -+ // Undo the idle entry process. This also respects any new RPC attempts. -+ atomic.AddInt32(&i.activeCallsCount, math.MaxInt32) -+ i.actuallyIdle = false -+ -+ // Start a new timer to fire after the configured idle timeout. -+ i.timer = timeAfterFunc(time.Duration(i.timeout), i.handleIdleTimeout) -+ return nil -+} -+ -+// onCallEnd is invoked at the end of every RPC. -+func (i *idlenessManagerImpl) onCallEnd() { -+ if i.isClosed() { -+ return -+ } -+ -+ // Record the time at which the most recent call finished. -+ atomic.StoreInt64(&i.lastCallEndTime, time.Now().UnixNano()) -+ -+ // Decrement the active calls count. This count can temporarily go negative -+ // when the timer callback is in the process of moving the channel to idle -+ // mode, but one or more RPCs come in and complete before the timer callback -+ // can get done with the process of moving to idle mode. -+ atomic.AddInt32(&i.activeCallsCount, -1) -+} -+ -+func (i *idlenessManagerImpl) isClosed() bool { -+ return atomic.LoadInt32(&i.closed) == 1 -+} -+ -+func (i *idlenessManagerImpl) close() { -+ atomic.StoreInt32(&i.closed, 1) -+ -+ i.idleMu.Lock() -+ i.timer.Stop() -+ i.timer = nil -+ i.idleMu.Unlock() -+} -diff --git a/vendor/google.golang.org/grpc/interceptor.go b/vendor/google.golang.org/grpc/interceptor.go -new file mode 100755 -index 0000000..bb96ef5 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/interceptor.go -@@ -0,0 +1,104 @@ -+/* -+ * -+ * 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 ( -+ "context" -+) -+ -+// UnaryInvoker is called by UnaryClientInterceptor to complete RPCs. -+type UnaryInvoker func(ctx context.Context, method string, req, reply interface{}, cc *ClientConn, opts ...CallOption) error -+ -+// UnaryClientInterceptor intercepts the execution of a unary RPC on the client. -+// Unary interceptors can be specified as a DialOption, using -+// WithUnaryInterceptor() or WithChainUnaryInterceptor(), when creating a -+// ClientConn. When a unary interceptor(s) is set on a ClientConn, gRPC -+// delegates all unary RPC invocations to the interceptor, and it is the -+// responsibility of the interceptor to call invoker to complete the processing -+// of the RPC. -+// -+// method is the RPC name. req and reply are the corresponding request and -+// response messages. cc is the ClientConn on which the RPC was invoked. invoker -+// is the handler to complete the RPC and it is the responsibility of the -+// interceptor to call it. opts contain all applicable call options, including -+// defaults from the ClientConn as well as per-call options. -+// -+// The returned error must be compatible with the status package. -+type UnaryClientInterceptor func(ctx context.Context, method string, req, reply interface{}, cc *ClientConn, invoker UnaryInvoker, opts ...CallOption) error -+ -+// Streamer is called by StreamClientInterceptor to create a ClientStream. -+type Streamer func(ctx context.Context, desc *StreamDesc, cc *ClientConn, method string, opts ...CallOption) (ClientStream, error) -+ -+// StreamClientInterceptor intercepts the creation of a ClientStream. Stream -+// interceptors can be specified as a DialOption, using WithStreamInterceptor() -+// or WithChainStreamInterceptor(), when creating a ClientConn. When a stream -+// interceptor(s) is set on the ClientConn, gRPC delegates all stream creations -+// to the interceptor, and it is the responsibility of the interceptor to call -+// streamer. -+// -+// desc contains a description of the stream. cc is the ClientConn on which the -+// RPC was invoked. streamer is the handler to create a ClientStream and it is -+// the responsibility of the interceptor to call it. opts contain all applicable -+// call options, including defaults from the ClientConn as well as per-call -+// options. -+// -+// StreamClientInterceptor may return a custom ClientStream to intercept all I/O -+// operations. The returned error must be compatible with the status package. -+type StreamClientInterceptor func(ctx context.Context, desc *StreamDesc, cc *ClientConn, method string, streamer Streamer, opts ...CallOption) (ClientStream, error) -+ -+// UnaryServerInfo consists of various information about a unary RPC on -+// server side. All per-rpc information may be mutated by the interceptor. -+type UnaryServerInfo struct { -+ // Server is the service implementation the user provides. This is read-only. -+ Server interface{} -+ // FullMethod is the full RPC method string, i.e., /package.service/method. -+ FullMethod string -+} -+ -+// UnaryHandler defines the handler invoked by UnaryServerInterceptor to complete the normal -+// execution of a unary RPC. -+// -+// If a UnaryHandler returns an error, it should either be produced by the -+// status package, or be one of the context errors. Otherwise, gRPC will use -+// codes.Unknown as the status code and err.Error() as the status message of the -+// RPC. -+type UnaryHandler func(ctx context.Context, req interface{}) (interface{}, error) -+ -+// UnaryServerInterceptor provides a hook to intercept the execution of a unary RPC on the server. info -+// contains all the information of this RPC the interceptor can operate on. And handler is the wrapper -+// of the service method implementation. It is the responsibility of the interceptor to invoke handler -+// to complete the RPC. -+type UnaryServerInterceptor func(ctx context.Context, req interface{}, info *UnaryServerInfo, handler UnaryHandler) (resp interface{}, err error) -+ -+// StreamServerInfo consists of various information about a streaming RPC on -+// server side. All per-rpc information may be mutated by the interceptor. -+type StreamServerInfo struct { -+ // FullMethod is the full RPC method string, i.e., /package.service/method. -+ FullMethod string -+ // IsClientStream indicates whether the RPC is a client streaming RPC. -+ IsClientStream bool -+ // IsServerStream indicates whether the RPC is a server streaming RPC. -+ IsServerStream bool -+} -+ -+// StreamServerInterceptor provides a hook to intercept the execution of a streaming RPC on the server. -+// info contains all the information of this RPC the interceptor can operate on. And handler is the -+// service method implementation. It is the responsibility of the interceptor to invoke handler to -+// complete the RPC. -+type StreamServerInterceptor func(srv interface{}, ss ServerStream, info *StreamServerInfo, handler StreamHandler) error -diff --git a/vendor/google.golang.org/grpc/internal/backoff/backoff.go b/vendor/google.golang.org/grpc/internal/backoff/backoff.go -new file mode 100755 -index 0000000..5fc0ee3 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/backoff/backoff.go -@@ -0,0 +1,73 @@ -+/* -+ * -+ * 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 backoff implement the backoff strategy for gRPC. -+// -+// This is kept in internal until the gRPC project decides whether or not to -+// allow alternative backoff strategies. -+package backoff -+ -+import ( -+ "time" -+ -+ grpcbackoff "google.golang.org/grpc/backoff" -+ "google.golang.org/grpc/internal/grpcrand" -+) -+ -+// Strategy defines the methodology for backing off after a grpc connection -+// failure. -+type Strategy interface { -+ // Backoff returns the amount of time to wait before the next retry given -+ // the number of consecutive failures. -+ Backoff(retries int) time.Duration -+} -+ -+// DefaultExponential is an exponential backoff implementation using the -+// default values for all the configurable knobs defined in -+// https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md. -+var DefaultExponential = Exponential{Config: grpcbackoff.DefaultConfig} -+ -+// Exponential implements exponential backoff algorithm as defined in -+// https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md. -+type Exponential struct { -+ // Config contains all options to configure the backoff algorithm. -+ Config grpcbackoff.Config -+} -+ -+// Backoff returns the amount of time to wait before the next retry given the -+// number of retries. -+func (bc Exponential) Backoff(retries int) time.Duration { -+ if retries == 0 { -+ return bc.Config.BaseDelay -+ } -+ backoff, max := float64(bc.Config.BaseDelay), float64(bc.Config.MaxDelay) -+ for backoff < max && retries > 0 { -+ backoff *= bc.Config.Multiplier -+ retries-- -+ } -+ if backoff > max { -+ backoff = max -+ } -+ // Randomize backoff delays so that if a cluster of requests start at -+ // the same time, they won't operate in lockstep. -+ backoff *= 1 + bc.Config.Jitter*(grpcrand.Float64()*2-1) -+ if backoff < 0 { -+ return 0 -+ } -+ return time.Duration(backoff) -+} -diff --git a/vendor/google.golang.org/grpc/internal/balancer/gracefulswitch/gracefulswitch.go b/vendor/google.golang.org/grpc/internal/balancer/gracefulswitch/gracefulswitch.go -new file mode 100755 -index 0000000..08666f6 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/balancer/gracefulswitch/gracefulswitch.go -@@ -0,0 +1,384 @@ -+/* -+ * -+ * Copyright 2022 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 gracefulswitch implements a graceful switch load balancer. -+package gracefulswitch -+ -+import ( -+ "errors" -+ "fmt" -+ "sync" -+ -+ "google.golang.org/grpc/balancer" -+ "google.golang.org/grpc/balancer/base" -+ "google.golang.org/grpc/connectivity" -+ "google.golang.org/grpc/resolver" -+) -+ -+var errBalancerClosed = errors.New("gracefulSwitchBalancer is closed") -+var _ balancer.Balancer = (*Balancer)(nil) -+ -+// NewBalancer returns a graceful switch Balancer. -+func NewBalancer(cc balancer.ClientConn, opts balancer.BuildOptions) *Balancer { -+ return &Balancer{ -+ cc: cc, -+ bOpts: opts, -+ } -+} -+ -+// Balancer is a utility to gracefully switch from one balancer to -+// a new balancer. It implements the balancer.Balancer interface. -+type Balancer struct { -+ bOpts balancer.BuildOptions -+ cc balancer.ClientConn -+ -+ // mu protects the following fields and all fields within balancerCurrent -+ // and balancerPending. mu does not need to be held when calling into the -+ // child balancers, as all calls into these children happen only as a direct -+ // result of a call into the gracefulSwitchBalancer, which are also -+ // guaranteed to be synchronous. There is one exception: an UpdateState call -+ // from a child balancer when current and pending are populated can lead to -+ // calling Close() on the current. To prevent that racing with an -+ // UpdateSubConnState from the channel, we hold currentMu during Close and -+ // UpdateSubConnState calls. -+ mu sync.Mutex -+ balancerCurrent *balancerWrapper -+ balancerPending *balancerWrapper -+ closed bool // set to true when this balancer is closed -+ -+ // currentMu must be locked before mu. This mutex guards against this -+ // sequence of events: UpdateSubConnState() called, finds the -+ // balancerCurrent, gives up lock, updateState comes in, causes Close() on -+ // balancerCurrent before the UpdateSubConnState is called on the -+ // balancerCurrent. -+ currentMu sync.Mutex -+} -+ -+// swap swaps out the current lb with the pending lb and updates the ClientConn. -+// The caller must hold gsb.mu. -+func (gsb *Balancer) swap() { -+ gsb.cc.UpdateState(gsb.balancerPending.lastState) -+ cur := gsb.balancerCurrent -+ gsb.balancerCurrent = gsb.balancerPending -+ gsb.balancerPending = nil -+ go func() { -+ gsb.currentMu.Lock() -+ defer gsb.currentMu.Unlock() -+ cur.Close() -+ }() -+} -+ -+// Helper function that checks if the balancer passed in is current or pending. -+// The caller must hold gsb.mu. -+func (gsb *Balancer) balancerCurrentOrPending(bw *balancerWrapper) bool { -+ return bw == gsb.balancerCurrent || bw == gsb.balancerPending -+} -+ -+// SwitchTo initializes the graceful switch process, which completes based on -+// connectivity state changes on the current/pending balancer. Thus, the switch -+// process is not complete when this method returns. This method must be called -+// synchronously alongside the rest of the balancer.Balancer methods this -+// Graceful Switch Balancer implements. -+func (gsb *Balancer) SwitchTo(builder balancer.Builder) error { -+ gsb.mu.Lock() -+ if gsb.closed { -+ gsb.mu.Unlock() -+ return errBalancerClosed -+ } -+ bw := &balancerWrapper{ -+ gsb: gsb, -+ lastState: balancer.State{ -+ ConnectivityState: connectivity.Connecting, -+ Picker: base.NewErrPicker(balancer.ErrNoSubConnAvailable), -+ }, -+ subconns: make(map[balancer.SubConn]bool), -+ } -+ balToClose := gsb.balancerPending // nil if there is no pending balancer -+ if gsb.balancerCurrent == nil { -+ gsb.balancerCurrent = bw -+ } else { -+ gsb.balancerPending = bw -+ } -+ gsb.mu.Unlock() -+ balToClose.Close() -+ // This function takes a builder instead of a balancer because builder.Build -+ // can call back inline, and this utility needs to handle the callbacks. -+ newBalancer := builder.Build(bw, gsb.bOpts) -+ if newBalancer == nil { -+ // This is illegal and should never happen; we clear the balancerWrapper -+ // we were constructing if it happens to avoid a potential panic. -+ gsb.mu.Lock() -+ if gsb.balancerPending != nil { -+ gsb.balancerPending = nil -+ } else { -+ gsb.balancerCurrent = nil -+ } -+ gsb.mu.Unlock() -+ return balancer.ErrBadResolverState -+ } -+ -+ // This write doesn't need to take gsb.mu because this field never gets read -+ // or written to on any calls from the current or pending. Calls from grpc -+ // to this balancer are guaranteed to be called synchronously, so this -+ // bw.Balancer field will never be forwarded to until this SwitchTo() -+ // function returns. -+ bw.Balancer = newBalancer -+ return nil -+} -+ -+// Returns nil if the graceful switch balancer is closed. -+func (gsb *Balancer) latestBalancer() *balancerWrapper { -+ gsb.mu.Lock() -+ defer gsb.mu.Unlock() -+ if gsb.balancerPending != nil { -+ return gsb.balancerPending -+ } -+ return gsb.balancerCurrent -+} -+ -+// UpdateClientConnState forwards the update to the latest balancer created. -+func (gsb *Balancer) UpdateClientConnState(state balancer.ClientConnState) error { -+ // The resolver data is only relevant to the most recent LB Policy. -+ balToUpdate := gsb.latestBalancer() -+ if balToUpdate == nil { -+ return errBalancerClosed -+ } -+ // Perform this call without gsb.mu to prevent deadlocks if the child calls -+ // back into the channel. The latest balancer can never be closed during a -+ // call from the channel, even without gsb.mu held. -+ return balToUpdate.UpdateClientConnState(state) -+} -+ -+// ResolverError forwards the error to the latest balancer created. -+func (gsb *Balancer) ResolverError(err error) { -+ // The resolver data is only relevant to the most recent LB Policy. -+ balToUpdate := gsb.latestBalancer() -+ if balToUpdate == nil { -+ return -+ } -+ // Perform this call without gsb.mu to prevent deadlocks if the child calls -+ // back into the channel. The latest balancer can never be closed during a -+ // call from the channel, even without gsb.mu held. -+ balToUpdate.ResolverError(err) -+} -+ -+// ExitIdle forwards the call to the latest balancer created. -+// -+// If the latest balancer does not support ExitIdle, the subConns are -+// re-connected to manually. -+func (gsb *Balancer) ExitIdle() { -+ balToUpdate := gsb.latestBalancer() -+ if balToUpdate == nil { -+ return -+ } -+ // There is no need to protect this read with a mutex, as the write to the -+ // Balancer field happens in SwitchTo, which completes before this can be -+ // called. -+ if ei, ok := balToUpdate.Balancer.(balancer.ExitIdler); ok { -+ ei.ExitIdle() -+ return -+ } -+ gsb.mu.Lock() -+ defer gsb.mu.Unlock() -+ for sc := range balToUpdate.subconns { -+ sc.Connect() -+ } -+} -+ -+// UpdateSubConnState forwards the update to the appropriate child. -+func (gsb *Balancer) UpdateSubConnState(sc balancer.SubConn, state balancer.SubConnState) { -+ gsb.currentMu.Lock() -+ defer gsb.currentMu.Unlock() -+ gsb.mu.Lock() -+ // Forward update to the appropriate child. Even if there is a pending -+ // balancer, the current balancer should continue to get SubConn updates to -+ // maintain the proper state while the pending is still connecting. -+ var balToUpdate *balancerWrapper -+ if gsb.balancerCurrent != nil && gsb.balancerCurrent.subconns[sc] { -+ balToUpdate = gsb.balancerCurrent -+ } else if gsb.balancerPending != nil && gsb.balancerPending.subconns[sc] { -+ balToUpdate = gsb.balancerPending -+ } -+ gsb.mu.Unlock() -+ if balToUpdate == nil { -+ // SubConn belonged to a stale lb policy that has not yet fully closed, -+ // or the balancer was already closed. -+ return -+ } -+ balToUpdate.UpdateSubConnState(sc, state) -+} -+ -+// Close closes any active child balancers. -+func (gsb *Balancer) Close() { -+ gsb.mu.Lock() -+ gsb.closed = true -+ currentBalancerToClose := gsb.balancerCurrent -+ gsb.balancerCurrent = nil -+ pendingBalancerToClose := gsb.balancerPending -+ gsb.balancerPending = nil -+ gsb.mu.Unlock() -+ -+ currentBalancerToClose.Close() -+ pendingBalancerToClose.Close() -+} -+ -+// balancerWrapper wraps a balancer.Balancer, and overrides some Balancer -+// methods to help cleanup SubConns created by the wrapped balancer. -+// -+// It implements the balancer.ClientConn interface and is passed down in that -+// capacity to the wrapped balancer. It maintains a set of subConns created by -+// the wrapped balancer and calls from the latter to create/update/remove -+// SubConns update this set before being forwarded to the parent ClientConn. -+// State updates from the wrapped balancer can result in invocation of the -+// graceful switch logic. -+type balancerWrapper struct { -+ balancer.Balancer -+ gsb *Balancer -+ -+ lastState balancer.State -+ subconns map[balancer.SubConn]bool // subconns created by this balancer -+} -+ -+func (bw *balancerWrapper) UpdateSubConnState(sc balancer.SubConn, state balancer.SubConnState) { -+ if state.ConnectivityState == connectivity.Shutdown { -+ bw.gsb.mu.Lock() -+ delete(bw.subconns, sc) -+ bw.gsb.mu.Unlock() -+ } -+ // There is no need to protect this read with a mutex, as the write to the -+ // Balancer field happens in SwitchTo, which completes before this can be -+ // called. -+ bw.Balancer.UpdateSubConnState(sc, state) -+} -+ -+// Close closes the underlying LB policy and removes the subconns it created. bw -+// must not be referenced via balancerCurrent or balancerPending in gsb when -+// called. gsb.mu must not be held. Does not panic with a nil receiver. -+func (bw *balancerWrapper) Close() { -+ // before Close is called. -+ if bw == nil { -+ return -+ } -+ // There is no need to protect this read with a mutex, as Close() is -+ // impossible to be called concurrently with the write in SwitchTo(). The -+ // callsites of Close() for this balancer in Graceful Switch Balancer will -+ // never be called until SwitchTo() returns. -+ bw.Balancer.Close() -+ bw.gsb.mu.Lock() -+ for sc := range bw.subconns { -+ bw.gsb.cc.RemoveSubConn(sc) -+ } -+ bw.gsb.mu.Unlock() -+} -+ -+func (bw *balancerWrapper) UpdateState(state balancer.State) { -+ // Hold the mutex for this entire call to ensure it cannot occur -+ // concurrently with other updateState() calls. This causes updates to -+ // lastState and calls to cc.UpdateState to happen atomically. -+ bw.gsb.mu.Lock() -+ defer bw.gsb.mu.Unlock() -+ bw.lastState = state -+ -+ if !bw.gsb.balancerCurrentOrPending(bw) { -+ return -+ } -+ -+ if bw == bw.gsb.balancerCurrent { -+ // In the case that the current balancer exits READY, and there is a pending -+ // balancer, you can forward the pending balancer's cached State up to -+ // ClientConn and swap the pending into the current. This is because there -+ // is no reason to gracefully switch from and keep using the old policy as -+ // the ClientConn is not connected to any backends. -+ if state.ConnectivityState != connectivity.Ready && bw.gsb.balancerPending != nil { -+ bw.gsb.swap() -+ return -+ } -+ // Even if there is a pending balancer waiting to be gracefully switched to, -+ // continue to forward current balancer updates to the Client Conn. Ignoring -+ // state + picker from the current would cause undefined behavior/cause the -+ // system to behave incorrectly from the current LB policies perspective. -+ // Also, the current LB is still being used by grpc to choose SubConns per -+ // RPC, and thus should use the most updated form of the current balancer. -+ bw.gsb.cc.UpdateState(state) -+ return -+ } -+ // This method is now dealing with a state update from the pending balancer. -+ // If the current balancer is currently in a state other than READY, the new -+ // policy can be swapped into place immediately. This is because there is no -+ // reason to gracefully switch from and keep using the old policy as the -+ // ClientConn is not connected to any backends. -+ if state.ConnectivityState != connectivity.Connecting || bw.gsb.balancerCurrent.lastState.ConnectivityState != connectivity.Ready { -+ bw.gsb.swap() -+ } -+} -+ -+func (bw *balancerWrapper) NewSubConn(addrs []resolver.Address, opts balancer.NewSubConnOptions) (balancer.SubConn, error) { -+ bw.gsb.mu.Lock() -+ if !bw.gsb.balancerCurrentOrPending(bw) { -+ bw.gsb.mu.Unlock() -+ return nil, fmt.Errorf("%T at address %p that called NewSubConn is deleted", bw, bw) -+ } -+ bw.gsb.mu.Unlock() -+ -+ sc, err := bw.gsb.cc.NewSubConn(addrs, opts) -+ if err != nil { -+ return nil, err -+ } -+ bw.gsb.mu.Lock() -+ if !bw.gsb.balancerCurrentOrPending(bw) { // balancer was closed during this call -+ bw.gsb.cc.RemoveSubConn(sc) -+ bw.gsb.mu.Unlock() -+ return nil, fmt.Errorf("%T at address %p that called NewSubConn is deleted", bw, bw) -+ } -+ bw.subconns[sc] = true -+ bw.gsb.mu.Unlock() -+ return sc, nil -+} -+ -+func (bw *balancerWrapper) ResolveNow(opts resolver.ResolveNowOptions) { -+ // Ignore ResolveNow requests from anything other than the most recent -+ // balancer, because older balancers were already removed from the config. -+ if bw != bw.gsb.latestBalancer() { -+ return -+ } -+ bw.gsb.cc.ResolveNow(opts) -+} -+ -+func (bw *balancerWrapper) RemoveSubConn(sc balancer.SubConn) { -+ bw.gsb.mu.Lock() -+ if !bw.gsb.balancerCurrentOrPending(bw) { -+ bw.gsb.mu.Unlock() -+ return -+ } -+ bw.gsb.mu.Unlock() -+ bw.gsb.cc.RemoveSubConn(sc) -+} -+ -+func (bw *balancerWrapper) UpdateAddresses(sc balancer.SubConn, addrs []resolver.Address) { -+ bw.gsb.mu.Lock() -+ if !bw.gsb.balancerCurrentOrPending(bw) { -+ bw.gsb.mu.Unlock() -+ return -+ } -+ bw.gsb.mu.Unlock() -+ bw.gsb.cc.UpdateAddresses(sc, addrs) -+} -+ -+func (bw *balancerWrapper) Target() string { -+ return bw.gsb.cc.Target() -+} -diff --git a/vendor/google.golang.org/grpc/internal/balancerload/load.go b/vendor/google.golang.org/grpc/internal/balancerload/load.go -new file mode 100755 -index 0000000..3a905d9 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/balancerload/load.go -@@ -0,0 +1,46 @@ -+/* -+ * Copyright 2019 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 balancerload defines APIs to parse server loads in trailers. The -+// parsed loads are sent to balancers in DoneInfo. -+package balancerload -+ -+import ( -+ "google.golang.org/grpc/metadata" -+) -+ -+// Parser converts loads from metadata into a concrete type. -+type Parser interface { -+ // Parse parses loads from metadata. -+ Parse(md metadata.MD) interface{} -+} -+ -+var parser Parser -+ -+// SetParser sets the load parser. -+// -+// Not mutex-protected, should be called before any gRPC functions. -+func SetParser(lr Parser) { -+ parser = lr -+} -+ -+// Parse calls parser.Read(). -+func Parse(md metadata.MD) interface{} { -+ if parser == nil { -+ return nil -+ } -+ return parser.Parse(md) -+} -diff --git a/vendor/google.golang.org/grpc/internal/binarylog/binarylog.go b/vendor/google.golang.org/grpc/internal/binarylog/binarylog.go -new file mode 100755 -index 0000000..755fdeb ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/binarylog/binarylog.go -@@ -0,0 +1,192 @@ -+/* -+ * -+ * 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 binarylog implementation binary logging as defined in -+// https://github.com/grpc/proposal/blob/master/A16-binary-logging.md. -+package binarylog -+ -+import ( -+ "fmt" -+ "os" -+ -+ "google.golang.org/grpc/grpclog" -+ "google.golang.org/grpc/internal/grpcutil" -+) -+ -+var grpclogLogger = grpclog.Component("binarylog") -+ -+// Logger specifies MethodLoggers for method names with a Log call that -+// takes a context. -+// -+// This is used in the 1.0 release of gcp/observability, and thus must not be -+// deleted or changed. -+type Logger interface { -+ GetMethodLogger(methodName string) MethodLogger -+} -+ -+// binLogger is the global binary logger for the binary. One of this should be -+// built at init time from the configuration (environment variable or flags). -+// -+// It is used to get a MethodLogger for each individual method. -+var binLogger Logger -+ -+// SetLogger sets the binary logger. -+// -+// Only call this at init time. -+func SetLogger(l Logger) { -+ binLogger = l -+} -+ -+// GetLogger gets the binary logger. -+// -+// Only call this at init time. -+func GetLogger() Logger { -+ return binLogger -+} -+ -+// GetMethodLogger returns the MethodLogger for the given methodName. -+// -+// methodName should be in the format of "/service/method". -+// -+// Each MethodLogger returned by this method is a new instance. This is to -+// generate sequence id within the call. -+func GetMethodLogger(methodName string) MethodLogger { -+ if binLogger == nil { -+ return nil -+ } -+ return binLogger.GetMethodLogger(methodName) -+} -+ -+func init() { -+ const envStr = "GRPC_BINARY_LOG_FILTER" -+ configStr := os.Getenv(envStr) -+ binLogger = NewLoggerFromConfigString(configStr) -+} -+ -+// MethodLoggerConfig contains the setting for logging behavior of a method -+// logger. Currently, it contains the max length of header and message. -+type MethodLoggerConfig struct { -+ // Max length of header and message. -+ Header, Message uint64 -+} -+ -+// LoggerConfig contains the config for loggers to create method loggers. -+type LoggerConfig struct { -+ All *MethodLoggerConfig -+ Services map[string]*MethodLoggerConfig -+ Methods map[string]*MethodLoggerConfig -+ -+ Blacklist map[string]struct{} -+} -+ -+type logger struct { -+ config LoggerConfig -+} -+ -+// NewLoggerFromConfig builds a logger with the given LoggerConfig. -+func NewLoggerFromConfig(config LoggerConfig) Logger { -+ return &logger{config: config} -+} -+ -+// newEmptyLogger creates an empty logger. The map fields need to be filled in -+// using the set* functions. -+func newEmptyLogger() *logger { -+ return &logger{} -+} -+ -+// Set method logger for "*". -+func (l *logger) setDefaultMethodLogger(ml *MethodLoggerConfig) error { -+ if l.config.All != nil { -+ return fmt.Errorf("conflicting global rules found") -+ } -+ l.config.All = ml -+ return nil -+} -+ -+// Set method logger for "service/*". -+// -+// New MethodLogger with same service overrides the old one. -+func (l *logger) setServiceMethodLogger(service string, ml *MethodLoggerConfig) error { -+ if _, ok := l.config.Services[service]; ok { -+ return fmt.Errorf("conflicting service rules for service %v found", service) -+ } -+ if l.config.Services == nil { -+ l.config.Services = make(map[string]*MethodLoggerConfig) -+ } -+ l.config.Services[service] = ml -+ return nil -+} -+ -+// Set method logger for "service/method". -+// -+// New MethodLogger with same method overrides the old one. -+func (l *logger) setMethodMethodLogger(method string, ml *MethodLoggerConfig) error { -+ if _, ok := l.config.Blacklist[method]; ok { -+ return fmt.Errorf("conflicting blacklist rules for method %v found", method) -+ } -+ if _, ok := l.config.Methods[method]; ok { -+ return fmt.Errorf("conflicting method rules for method %v found", method) -+ } -+ if l.config.Methods == nil { -+ l.config.Methods = make(map[string]*MethodLoggerConfig) -+ } -+ l.config.Methods[method] = ml -+ return nil -+} -+ -+// Set blacklist method for "-service/method". -+func (l *logger) setBlacklist(method string) error { -+ if _, ok := l.config.Blacklist[method]; ok { -+ return fmt.Errorf("conflicting blacklist rules for method %v found", method) -+ } -+ if _, ok := l.config.Methods[method]; ok { -+ return fmt.Errorf("conflicting method rules for method %v found", method) -+ } -+ if l.config.Blacklist == nil { -+ l.config.Blacklist = make(map[string]struct{}) -+ } -+ l.config.Blacklist[method] = struct{}{} -+ return nil -+} -+ -+// getMethodLogger returns the MethodLogger for the given methodName. -+// -+// methodName should be in the format of "/service/method". -+// -+// Each MethodLogger returned by this method is a new instance. This is to -+// generate sequence id within the call. -+func (l *logger) GetMethodLogger(methodName string) MethodLogger { -+ s, m, err := grpcutil.ParseMethod(methodName) -+ if err != nil { -+ grpclogLogger.Infof("binarylogging: failed to parse %q: %v", methodName, err) -+ return nil -+ } -+ if ml, ok := l.config.Methods[s+"/"+m]; ok { -+ return NewTruncatingMethodLogger(ml.Header, ml.Message) -+ } -+ if _, ok := l.config.Blacklist[s+"/"+m]; ok { -+ return nil -+ } -+ if ml, ok := l.config.Services[s]; ok { -+ return NewTruncatingMethodLogger(ml.Header, ml.Message) -+ } -+ if l.config.All == nil { -+ return nil -+ } -+ return NewTruncatingMethodLogger(l.config.All.Header, l.config.All.Message) -+} -diff --git a/vendor/google.golang.org/grpc/internal/binarylog/binarylog_testutil.go b/vendor/google.golang.org/grpc/internal/binarylog/binarylog_testutil.go -new file mode 100755 -index 0000000..1ee00a3 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/binarylog/binarylog_testutil.go -@@ -0,0 +1,42 @@ -+/* -+ * -+ * 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. -+ * -+ */ -+ -+// This file contains exported variables/functions that are exported for testing -+// only. -+// -+// An ideal way for this would be to put those in a *_test.go but in binarylog -+// package. But this doesn't work with staticcheck with go module. Error was: -+// "MdToMetadataProto not declared by package binarylog". This could be caused -+// by the way staticcheck looks for files for a certain package, which doesn't -+// support *_test.go files. -+// -+// Move those to binary_test.go when staticcheck is fixed. -+ -+package binarylog -+ -+var ( -+ // AllLogger is a logger that logs all headers/messages for all RPCs. It's -+ // for testing only. -+ AllLogger = NewLoggerFromConfigString("*") -+ // MdToMetadataProto converts metadata to a binary logging proto message. -+ // It's for testing only. -+ MdToMetadataProto = mdToMetadataProto -+ // AddrToProto converts an address to a binary logging proto message. It's -+ // for testing only. -+ AddrToProto = addrToProto -+) -diff --git a/vendor/google.golang.org/grpc/internal/binarylog/env_config.go b/vendor/google.golang.org/grpc/internal/binarylog/env_config.go -new file mode 100755 -index 0000000..f9e80e2 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/binarylog/env_config.go -@@ -0,0 +1,208 @@ -+/* -+ * -+ * 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 binarylog -+ -+import ( -+ "errors" -+ "fmt" -+ "regexp" -+ "strconv" -+ "strings" -+) -+ -+// NewLoggerFromConfigString reads the string and build a logger. It can be used -+// to build a new logger and assign it to binarylog.Logger. -+// -+// Example filter config strings: -+// - "" Nothing will be logged -+// - "*" All headers and messages will be fully logged. -+// - "*{h}" Only headers will be logged. -+// - "*{m:256}" Only the first 256 bytes of each message will be logged. -+// - "Foo/*" Logs every method in service Foo -+// - "Foo/*,-Foo/Bar" Logs every method in service Foo except method /Foo/Bar -+// - "Foo/*,Foo/Bar{m:256}" Logs the first 256 bytes of each message in method -+// /Foo/Bar, logs all headers and messages in every other method in service -+// Foo. -+// -+// If two configs exist for one certain method or service, the one specified -+// later overrides the previous config. -+func NewLoggerFromConfigString(s string) Logger { -+ if s == "" { -+ return nil -+ } -+ l := newEmptyLogger() -+ methods := strings.Split(s, ",") -+ for _, method := range methods { -+ if err := l.fillMethodLoggerWithConfigString(method); err != nil { -+ grpclogLogger.Warningf("failed to parse binary log config: %v", err) -+ return nil -+ } -+ } -+ return l -+} -+ -+// fillMethodLoggerWithConfigString parses config, creates TruncatingMethodLogger and adds -+// it to the right map in the logger. -+func (l *logger) fillMethodLoggerWithConfigString(config string) error { -+ // "" is invalid. -+ if config == "" { -+ return errors.New("empty string is not a valid method binary logging config") -+ } -+ -+ // "-service/method", blacklist, no * or {} allowed. -+ if config[0] == '-' { -+ s, m, suffix, err := parseMethodConfigAndSuffix(config[1:]) -+ if err != nil { -+ return fmt.Errorf("invalid config: %q, %v", config, err) -+ } -+ if m == "*" { -+ return fmt.Errorf("invalid config: %q, %v", config, "* not allowed in blacklist config") -+ } -+ if suffix != "" { -+ return fmt.Errorf("invalid config: %q, %v", config, "header/message limit not allowed in blacklist config") -+ } -+ if err := l.setBlacklist(s + "/" + m); err != nil { -+ return fmt.Errorf("invalid config: %v", err) -+ } -+ return nil -+ } -+ -+ // "*{h:256;m:256}" -+ if config[0] == '*' { -+ hdr, msg, err := parseHeaderMessageLengthConfig(config[1:]) -+ if err != nil { -+ return fmt.Errorf("invalid config: %q, %v", config, err) -+ } -+ if err := l.setDefaultMethodLogger(&MethodLoggerConfig{Header: hdr, Message: msg}); err != nil { -+ return fmt.Errorf("invalid config: %v", err) -+ } -+ return nil -+ } -+ -+ s, m, suffix, err := parseMethodConfigAndSuffix(config) -+ if err != nil { -+ return fmt.Errorf("invalid config: %q, %v", config, err) -+ } -+ hdr, msg, err := parseHeaderMessageLengthConfig(suffix) -+ if err != nil { -+ return fmt.Errorf("invalid header/message length config: %q, %v", suffix, err) -+ } -+ if m == "*" { -+ if err := l.setServiceMethodLogger(s, &MethodLoggerConfig{Header: hdr, Message: msg}); err != nil { -+ return fmt.Errorf("invalid config: %v", err) -+ } -+ } else { -+ if err := l.setMethodMethodLogger(s+"/"+m, &MethodLoggerConfig{Header: hdr, Message: msg}); err != nil { -+ return fmt.Errorf("invalid config: %v", err) -+ } -+ } -+ return nil -+} -+ -+const ( -+ // TODO: this const is only used by env_config now. But could be useful for -+ // other config. Move to binarylog.go if necessary. -+ maxUInt = ^uint64(0) -+ -+ // For "p.s/m" plus any suffix. Suffix will be parsed again. See test for -+ // expected output. -+ longMethodConfigRegexpStr = `^([\w./]+)/((?:\w+)|[*])(.+)?$` -+ -+ // For suffix from above, "{h:123,m:123}". See test for expected output. -+ optionalLengthRegexpStr = `(?::(\d+))?` // Optional ":123". -+ headerConfigRegexpStr = `^{h` + optionalLengthRegexpStr + `}$` -+ messageConfigRegexpStr = `^{m` + optionalLengthRegexpStr + `}$` -+ headerMessageConfigRegexpStr = `^{h` + optionalLengthRegexpStr + `;m` + optionalLengthRegexpStr + `}$` -+) -+ -+var ( -+ longMethodConfigRegexp = regexp.MustCompile(longMethodConfigRegexpStr) -+ headerConfigRegexp = regexp.MustCompile(headerConfigRegexpStr) -+ messageConfigRegexp = regexp.MustCompile(messageConfigRegexpStr) -+ headerMessageConfigRegexp = regexp.MustCompile(headerMessageConfigRegexpStr) -+) -+ -+// Turn "service/method{h;m}" into "service", "method", "{h;m}". -+func parseMethodConfigAndSuffix(c string) (service, method, suffix string, _ error) { -+ // Regexp result: -+ // -+ // in: "p.s/m{h:123,m:123}", -+ // out: []string{"p.s/m{h:123,m:123}", "p.s", "m", "{h:123,m:123}"}, -+ match := longMethodConfigRegexp.FindStringSubmatch(c) -+ if match == nil { -+ return "", "", "", fmt.Errorf("%q contains invalid substring", c) -+ } -+ service = match[1] -+ method = match[2] -+ suffix = match[3] -+ return -+} -+ -+// Turn "{h:123;m:345}" into 123, 345. -+// -+// Return maxUInt if length is unspecified. -+func parseHeaderMessageLengthConfig(c string) (hdrLenStr, msgLenStr uint64, err error) { -+ if c == "" { -+ return maxUInt, maxUInt, nil -+ } -+ // Header config only. -+ if match := headerConfigRegexp.FindStringSubmatch(c); match != nil { -+ if s := match[1]; s != "" { -+ hdrLenStr, err = strconv.ParseUint(s, 10, 64) -+ if err != nil { -+ return 0, 0, fmt.Errorf("failed to convert %q to uint", s) -+ } -+ return hdrLenStr, 0, nil -+ } -+ return maxUInt, 0, nil -+ } -+ -+ // Message config only. -+ if match := messageConfigRegexp.FindStringSubmatch(c); match != nil { -+ if s := match[1]; s != "" { -+ msgLenStr, err = strconv.ParseUint(s, 10, 64) -+ if err != nil { -+ return 0, 0, fmt.Errorf("failed to convert %q to uint", s) -+ } -+ return 0, msgLenStr, nil -+ } -+ return 0, maxUInt, nil -+ } -+ -+ // Header and message config both. -+ if match := headerMessageConfigRegexp.FindStringSubmatch(c); match != nil { -+ // Both hdr and msg are specified, but one or two of them might be empty. -+ hdrLenStr = maxUInt -+ msgLenStr = maxUInt -+ if s := match[1]; s != "" { -+ hdrLenStr, err = strconv.ParseUint(s, 10, 64) -+ if err != nil { -+ return 0, 0, fmt.Errorf("failed to convert %q to uint", s) -+ } -+ } -+ if s := match[2]; s != "" { -+ msgLenStr, err = strconv.ParseUint(s, 10, 64) -+ if err != nil { -+ return 0, 0, fmt.Errorf("failed to convert %q to uint", s) -+ } -+ } -+ return hdrLenStr, msgLenStr, nil -+ } -+ return 0, 0, fmt.Errorf("%q contains invalid substring", c) -+} -diff --git a/vendor/google.golang.org/grpc/internal/binarylog/method_logger.go b/vendor/google.golang.org/grpc/internal/binarylog/method_logger.go -new file mode 100755 -index 0000000..6c3f632 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/binarylog/method_logger.go -@@ -0,0 +1,445 @@ -+/* -+ * -+ * 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 binarylog -+ -+import ( -+ "context" -+ "net" -+ "strings" -+ "sync/atomic" -+ "time" -+ -+ "github.com/golang/protobuf/proto" -+ "github.com/golang/protobuf/ptypes" -+ binlogpb "google.golang.org/grpc/binarylog/grpc_binarylog_v1" -+ "google.golang.org/grpc/metadata" -+ "google.golang.org/grpc/status" -+) -+ -+type callIDGenerator struct { -+ id uint64 -+} -+ -+func (g *callIDGenerator) next() uint64 { -+ id := atomic.AddUint64(&g.id, 1) -+ return id -+} -+ -+// reset is for testing only, and doesn't need to be thread safe. -+func (g *callIDGenerator) reset() { -+ g.id = 0 -+} -+ -+var idGen callIDGenerator -+ -+// MethodLogger is the sub-logger for each method. -+// -+// This is used in the 1.0 release of gcp/observability, and thus must not be -+// deleted or changed. -+type MethodLogger interface { -+ Log(context.Context, LogEntryConfig) -+} -+ -+// TruncatingMethodLogger is a method logger that truncates headers and messages -+// based on configured fields. -+type TruncatingMethodLogger struct { -+ headerMaxLen, messageMaxLen uint64 -+ -+ callID uint64 -+ idWithinCallGen *callIDGenerator -+ -+ sink Sink // TODO(blog): make this plugable. -+} -+ -+// NewTruncatingMethodLogger returns a new truncating method logger. -+// -+// This is used in the 1.0 release of gcp/observability, and thus must not be -+// deleted or changed. -+func NewTruncatingMethodLogger(h, m uint64) *TruncatingMethodLogger { -+ return &TruncatingMethodLogger{ -+ headerMaxLen: h, -+ messageMaxLen: m, -+ -+ callID: idGen.next(), -+ idWithinCallGen: &callIDGenerator{}, -+ -+ sink: DefaultSink, // TODO(blog): make it plugable. -+ } -+} -+ -+// Build is an internal only method for building the proto message out of the -+// input event. It's made public to enable other library to reuse as much logic -+// in TruncatingMethodLogger as possible. -+func (ml *TruncatingMethodLogger) Build(c LogEntryConfig) *binlogpb.GrpcLogEntry { -+ m := c.toProto() -+ timestamp, _ := ptypes.TimestampProto(time.Now()) -+ m.Timestamp = timestamp -+ m.CallId = ml.callID -+ m.SequenceIdWithinCall = ml.idWithinCallGen.next() -+ -+ switch pay := m.Payload.(type) { -+ case *binlogpb.GrpcLogEntry_ClientHeader: -+ m.PayloadTruncated = ml.truncateMetadata(pay.ClientHeader.GetMetadata()) -+ case *binlogpb.GrpcLogEntry_ServerHeader: -+ m.PayloadTruncated = ml.truncateMetadata(pay.ServerHeader.GetMetadata()) -+ case *binlogpb.GrpcLogEntry_Message: -+ m.PayloadTruncated = ml.truncateMessage(pay.Message) -+ } -+ return m -+} -+ -+// Log creates a proto binary log entry, and logs it to the sink. -+func (ml *TruncatingMethodLogger) Log(ctx context.Context, c LogEntryConfig) { -+ ml.sink.Write(ml.Build(c)) -+} -+ -+func (ml *TruncatingMethodLogger) truncateMetadata(mdPb *binlogpb.Metadata) (truncated bool) { -+ if ml.headerMaxLen == maxUInt { -+ return false -+ } -+ var ( -+ bytesLimit = ml.headerMaxLen -+ index int -+ ) -+ // At the end of the loop, index will be the first entry where the total -+ // size is greater than the limit: -+ // -+ // len(entry[:index]) <= ml.hdr && len(entry[:index+1]) > ml.hdr. -+ for ; index < len(mdPb.Entry); index++ { -+ entry := mdPb.Entry[index] -+ if entry.Key == "grpc-trace-bin" { -+ // "grpc-trace-bin" is a special key. It's kept in the log entry, -+ // but not counted towards the size limit. -+ continue -+ } -+ currentEntryLen := uint64(len(entry.GetKey())) + uint64(len(entry.GetValue())) -+ if currentEntryLen > bytesLimit { -+ break -+ } -+ bytesLimit -= currentEntryLen -+ } -+ truncated = index < len(mdPb.Entry) -+ mdPb.Entry = mdPb.Entry[:index] -+ return truncated -+} -+ -+func (ml *TruncatingMethodLogger) truncateMessage(msgPb *binlogpb.Message) (truncated bool) { -+ if ml.messageMaxLen == maxUInt { -+ return false -+ } -+ if ml.messageMaxLen >= uint64(len(msgPb.Data)) { -+ return false -+ } -+ msgPb.Data = msgPb.Data[:ml.messageMaxLen] -+ return true -+} -+ -+// LogEntryConfig represents the configuration for binary log entry. -+// -+// This is used in the 1.0 release of gcp/observability, and thus must not be -+// deleted or changed. -+type LogEntryConfig interface { -+ toProto() *binlogpb.GrpcLogEntry -+} -+ -+// ClientHeader configs the binary log entry to be a ClientHeader entry. -+type ClientHeader struct { -+ OnClientSide bool -+ Header metadata.MD -+ MethodName string -+ Authority string -+ Timeout time.Duration -+ // PeerAddr is required only when it's on server side. -+ PeerAddr net.Addr -+} -+ -+func (c *ClientHeader) toProto() *binlogpb.GrpcLogEntry { -+ // This function doesn't need to set all the fields (e.g. seq ID). The Log -+ // function will set the fields when necessary. -+ clientHeader := &binlogpb.ClientHeader{ -+ Metadata: mdToMetadataProto(c.Header), -+ MethodName: c.MethodName, -+ Authority: c.Authority, -+ } -+ if c.Timeout > 0 { -+ clientHeader.Timeout = ptypes.DurationProto(c.Timeout) -+ } -+ ret := &binlogpb.GrpcLogEntry{ -+ Type: binlogpb.GrpcLogEntry_EVENT_TYPE_CLIENT_HEADER, -+ Payload: &binlogpb.GrpcLogEntry_ClientHeader{ -+ ClientHeader: clientHeader, -+ }, -+ } -+ if c.OnClientSide { -+ ret.Logger = binlogpb.GrpcLogEntry_LOGGER_CLIENT -+ } else { -+ ret.Logger = binlogpb.GrpcLogEntry_LOGGER_SERVER -+ } -+ if c.PeerAddr != nil { -+ ret.Peer = addrToProto(c.PeerAddr) -+ } -+ return ret -+} -+ -+// ServerHeader configs the binary log entry to be a ServerHeader entry. -+type ServerHeader struct { -+ OnClientSide bool -+ Header metadata.MD -+ // PeerAddr is required only when it's on client side. -+ PeerAddr net.Addr -+} -+ -+func (c *ServerHeader) toProto() *binlogpb.GrpcLogEntry { -+ ret := &binlogpb.GrpcLogEntry{ -+ Type: binlogpb.GrpcLogEntry_EVENT_TYPE_SERVER_HEADER, -+ Payload: &binlogpb.GrpcLogEntry_ServerHeader{ -+ ServerHeader: &binlogpb.ServerHeader{ -+ Metadata: mdToMetadataProto(c.Header), -+ }, -+ }, -+ } -+ if c.OnClientSide { -+ ret.Logger = binlogpb.GrpcLogEntry_LOGGER_CLIENT -+ } else { -+ ret.Logger = binlogpb.GrpcLogEntry_LOGGER_SERVER -+ } -+ if c.PeerAddr != nil { -+ ret.Peer = addrToProto(c.PeerAddr) -+ } -+ return ret -+} -+ -+// ClientMessage configs the binary log entry to be a ClientMessage entry. -+type ClientMessage struct { -+ OnClientSide bool -+ // Message can be a proto.Message or []byte. Other messages formats are not -+ // supported. -+ Message interface{} -+} -+ -+func (c *ClientMessage) toProto() *binlogpb.GrpcLogEntry { -+ var ( -+ data []byte -+ err error -+ ) -+ if m, ok := c.Message.(proto.Message); ok { -+ data, err = proto.Marshal(m) -+ if err != nil { -+ grpclogLogger.Infof("binarylogging: failed to marshal proto message: %v", err) -+ } -+ } else if b, ok := c.Message.([]byte); ok { -+ data = b -+ } else { -+ grpclogLogger.Infof("binarylogging: message to log is neither proto.message nor []byte") -+ } -+ ret := &binlogpb.GrpcLogEntry{ -+ Type: binlogpb.GrpcLogEntry_EVENT_TYPE_CLIENT_MESSAGE, -+ Payload: &binlogpb.GrpcLogEntry_Message{ -+ Message: &binlogpb.Message{ -+ Length: uint32(len(data)), -+ Data: data, -+ }, -+ }, -+ } -+ if c.OnClientSide { -+ ret.Logger = binlogpb.GrpcLogEntry_LOGGER_CLIENT -+ } else { -+ ret.Logger = binlogpb.GrpcLogEntry_LOGGER_SERVER -+ } -+ return ret -+} -+ -+// ServerMessage configs the binary log entry to be a ServerMessage entry. -+type ServerMessage struct { -+ OnClientSide bool -+ // Message can be a proto.Message or []byte. Other messages formats are not -+ // supported. -+ Message interface{} -+} -+ -+func (c *ServerMessage) toProto() *binlogpb.GrpcLogEntry { -+ var ( -+ data []byte -+ err error -+ ) -+ if m, ok := c.Message.(proto.Message); ok { -+ data, err = proto.Marshal(m) -+ if err != nil { -+ grpclogLogger.Infof("binarylogging: failed to marshal proto message: %v", err) -+ } -+ } else if b, ok := c.Message.([]byte); ok { -+ data = b -+ } else { -+ grpclogLogger.Infof("binarylogging: message to log is neither proto.message nor []byte") -+ } -+ ret := &binlogpb.GrpcLogEntry{ -+ Type: binlogpb.GrpcLogEntry_EVENT_TYPE_SERVER_MESSAGE, -+ Payload: &binlogpb.GrpcLogEntry_Message{ -+ Message: &binlogpb.Message{ -+ Length: uint32(len(data)), -+ Data: data, -+ }, -+ }, -+ } -+ if c.OnClientSide { -+ ret.Logger = binlogpb.GrpcLogEntry_LOGGER_CLIENT -+ } else { -+ ret.Logger = binlogpb.GrpcLogEntry_LOGGER_SERVER -+ } -+ return ret -+} -+ -+// ClientHalfClose configs the binary log entry to be a ClientHalfClose entry. -+type ClientHalfClose struct { -+ OnClientSide bool -+} -+ -+func (c *ClientHalfClose) toProto() *binlogpb.GrpcLogEntry { -+ ret := &binlogpb.GrpcLogEntry{ -+ Type: binlogpb.GrpcLogEntry_EVENT_TYPE_CLIENT_HALF_CLOSE, -+ Payload: nil, // No payload here. -+ } -+ if c.OnClientSide { -+ ret.Logger = binlogpb.GrpcLogEntry_LOGGER_CLIENT -+ } else { -+ ret.Logger = binlogpb.GrpcLogEntry_LOGGER_SERVER -+ } -+ return ret -+} -+ -+// ServerTrailer configs the binary log entry to be a ServerTrailer entry. -+type ServerTrailer struct { -+ OnClientSide bool -+ Trailer metadata.MD -+ // Err is the status error. -+ Err error -+ // PeerAddr is required only when it's on client side and the RPC is trailer -+ // only. -+ PeerAddr net.Addr -+} -+ -+func (c *ServerTrailer) toProto() *binlogpb.GrpcLogEntry { -+ st, ok := status.FromError(c.Err) -+ if !ok { -+ grpclogLogger.Info("binarylogging: error in trailer is not a status error") -+ } -+ var ( -+ detailsBytes []byte -+ err error -+ ) -+ stProto := st.Proto() -+ if stProto != nil && len(stProto.Details) != 0 { -+ detailsBytes, err = proto.Marshal(stProto) -+ if err != nil { -+ grpclogLogger.Infof("binarylogging: failed to marshal status proto: %v", err) -+ } -+ } -+ ret := &binlogpb.GrpcLogEntry{ -+ Type: binlogpb.GrpcLogEntry_EVENT_TYPE_SERVER_TRAILER, -+ Payload: &binlogpb.GrpcLogEntry_Trailer{ -+ Trailer: &binlogpb.Trailer{ -+ Metadata: mdToMetadataProto(c.Trailer), -+ StatusCode: uint32(st.Code()), -+ StatusMessage: st.Message(), -+ StatusDetails: detailsBytes, -+ }, -+ }, -+ } -+ if c.OnClientSide { -+ ret.Logger = binlogpb.GrpcLogEntry_LOGGER_CLIENT -+ } else { -+ ret.Logger = binlogpb.GrpcLogEntry_LOGGER_SERVER -+ } -+ if c.PeerAddr != nil { -+ ret.Peer = addrToProto(c.PeerAddr) -+ } -+ return ret -+} -+ -+// Cancel configs the binary log entry to be a Cancel entry. -+type Cancel struct { -+ OnClientSide bool -+} -+ -+func (c *Cancel) toProto() *binlogpb.GrpcLogEntry { -+ ret := &binlogpb.GrpcLogEntry{ -+ Type: binlogpb.GrpcLogEntry_EVENT_TYPE_CANCEL, -+ Payload: nil, -+ } -+ if c.OnClientSide { -+ ret.Logger = binlogpb.GrpcLogEntry_LOGGER_CLIENT -+ } else { -+ ret.Logger = binlogpb.GrpcLogEntry_LOGGER_SERVER -+ } -+ return ret -+} -+ -+// metadataKeyOmit returns whether the metadata entry with this key should be -+// omitted. -+func metadataKeyOmit(key string) bool { -+ switch key { -+ case "lb-token", ":path", ":authority", "content-encoding", "content-type", "user-agent", "te": -+ return true -+ case "grpc-trace-bin": // grpc-trace-bin is special because it's visiable to users. -+ return false -+ } -+ return strings.HasPrefix(key, "grpc-") -+} -+ -+func mdToMetadataProto(md metadata.MD) *binlogpb.Metadata { -+ ret := &binlogpb.Metadata{} -+ for k, vv := range md { -+ if metadataKeyOmit(k) { -+ continue -+ } -+ for _, v := range vv { -+ ret.Entry = append(ret.Entry, -+ &binlogpb.MetadataEntry{ -+ Key: k, -+ Value: []byte(v), -+ }, -+ ) -+ } -+ } -+ return ret -+} -+ -+func addrToProto(addr net.Addr) *binlogpb.Address { -+ ret := &binlogpb.Address{} -+ switch a := addr.(type) { -+ case *net.TCPAddr: -+ if a.IP.To4() != nil { -+ ret.Type = binlogpb.Address_TYPE_IPV4 -+ } else if a.IP.To16() != nil { -+ ret.Type = binlogpb.Address_TYPE_IPV6 -+ } else { -+ ret.Type = binlogpb.Address_TYPE_UNKNOWN -+ // Do not set address and port fields. -+ break -+ } -+ ret.Address = a.IP.String() -+ ret.IpPort = uint32(a.Port) -+ case *net.UnixAddr: -+ ret.Type = binlogpb.Address_TYPE_UNIX -+ ret.Address = a.String() -+ default: -+ ret.Type = binlogpb.Address_TYPE_UNKNOWN -+ } -+ return ret -+} -diff --git a/vendor/google.golang.org/grpc/internal/binarylog/sink.go b/vendor/google.golang.org/grpc/internal/binarylog/sink.go -new file mode 100755 -index 0000000..264de38 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/binarylog/sink.go -@@ -0,0 +1,170 @@ -+/* -+ * -+ * 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 binarylog -+ -+import ( -+ "bufio" -+ "encoding/binary" -+ "io" -+ "sync" -+ "time" -+ -+ "github.com/golang/protobuf/proto" -+ binlogpb "google.golang.org/grpc/binarylog/grpc_binarylog_v1" -+) -+ -+var ( -+ // DefaultSink is the sink where the logs will be written to. It's exported -+ // for the binarylog package to update. -+ DefaultSink Sink = &noopSink{} // TODO(blog): change this default (file in /tmp). -+) -+ -+// Sink writes log entry into the binary log sink. -+// -+// sink is a copy of the exported binarylog.Sink, to avoid circular dependency. -+type Sink interface { -+ // Write will be called to write the log entry into the sink. -+ // -+ // It should be thread-safe so it can be called in parallel. -+ Write(*binlogpb.GrpcLogEntry) error -+ // Close will be called when the Sink is replaced by a new Sink. -+ Close() error -+} -+ -+type noopSink struct{} -+ -+func (ns *noopSink) Write(*binlogpb.GrpcLogEntry) error { return nil } -+func (ns *noopSink) Close() error { return nil } -+ -+// newWriterSink creates a binary log sink with the given writer. -+// -+// Write() marshals the proto message and writes it to the given writer. Each -+// message is prefixed with a 4 byte big endian unsigned integer as the length. -+// -+// No buffer is done, Close() doesn't try to close the writer. -+func newWriterSink(w io.Writer) Sink { -+ return &writerSink{out: w} -+} -+ -+type writerSink struct { -+ out io.Writer -+} -+ -+func (ws *writerSink) Write(e *binlogpb.GrpcLogEntry) error { -+ b, err := proto.Marshal(e) -+ if err != nil { -+ grpclogLogger.Errorf("binary logging: failed to marshal proto message: %v", err) -+ return err -+ } -+ hdr := make([]byte, 4) -+ binary.BigEndian.PutUint32(hdr, uint32(len(b))) -+ if _, err := ws.out.Write(hdr); err != nil { -+ return err -+ } -+ if _, err := ws.out.Write(b); err != nil { -+ return err -+ } -+ return nil -+} -+ -+func (ws *writerSink) Close() error { return nil } -+ -+type bufferedSink struct { -+ mu sync.Mutex -+ closer io.Closer -+ out Sink // out is built on buf. -+ buf *bufio.Writer // buf is kept for flush. -+ flusherStarted bool -+ -+ writeTicker *time.Ticker -+ done chan struct{} -+} -+ -+func (fs *bufferedSink) Write(e *binlogpb.GrpcLogEntry) error { -+ fs.mu.Lock() -+ defer fs.mu.Unlock() -+ if !fs.flusherStarted { -+ // Start the write loop when Write is called. -+ fs.startFlushGoroutine() -+ fs.flusherStarted = true -+ } -+ if err := fs.out.Write(e); err != nil { -+ return err -+ } -+ return nil -+} -+ -+const ( -+ bufFlushDuration = 60 * time.Second -+) -+ -+func (fs *bufferedSink) startFlushGoroutine() { -+ fs.writeTicker = time.NewTicker(bufFlushDuration) -+ go func() { -+ for { -+ select { -+ case <-fs.done: -+ return -+ case <-fs.writeTicker.C: -+ } -+ fs.mu.Lock() -+ if err := fs.buf.Flush(); err != nil { -+ grpclogLogger.Warningf("failed to flush to Sink: %v", err) -+ } -+ fs.mu.Unlock() -+ } -+ }() -+} -+ -+func (fs *bufferedSink) Close() error { -+ fs.mu.Lock() -+ defer fs.mu.Unlock() -+ if fs.writeTicker != nil { -+ fs.writeTicker.Stop() -+ } -+ close(fs.done) -+ if err := fs.buf.Flush(); err != nil { -+ grpclogLogger.Warningf("failed to flush to Sink: %v", err) -+ } -+ if err := fs.closer.Close(); err != nil { -+ grpclogLogger.Warningf("failed to close the underlying WriterCloser: %v", err) -+ } -+ if err := fs.out.Close(); err != nil { -+ grpclogLogger.Warningf("failed to close the Sink: %v", err) -+ } -+ return nil -+} -+ -+// NewBufferedSink creates a binary log sink with the given WriteCloser. -+// -+// Write() marshals the proto message and writes it to the given writer. Each -+// message is prefixed with a 4 byte big endian unsigned integer as the length. -+// -+// Content is kept in a buffer, and is flushed every 60 seconds. -+// -+// Close closes the WriteCloser. -+func NewBufferedSink(o io.WriteCloser) Sink { -+ bufW := bufio.NewWriter(o) -+ return &bufferedSink{ -+ closer: o, -+ out: newWriterSink(bufW), -+ buf: bufW, -+ done: make(chan struct{}), -+ } -+} -diff --git a/vendor/google.golang.org/grpc/internal/buffer/unbounded.go b/vendor/google.golang.org/grpc/internal/buffer/unbounded.go -new file mode 100755 -index 0000000..81c2f5f ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/buffer/unbounded.go -@@ -0,0 +1,105 @@ -+/* -+ * Copyright 2019 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 buffer provides an implementation of an unbounded buffer. -+package buffer -+ -+import "sync" -+ -+// Unbounded is an implementation of an unbounded buffer which does not use -+// extra goroutines. This is typically used for passing updates from one entity -+// to another within gRPC. -+// -+// All methods on this type are thread-safe and don't block on anything except -+// the underlying mutex used for synchronization. -+// -+// Unbounded supports values of any type to be stored in it by using a channel -+// of `interface{}`. This means that a call to Put() incurs an extra memory -+// allocation, and also that users need a type assertion while reading. For -+// performance critical code paths, using Unbounded is strongly discouraged and -+// defining a new type specific implementation of this buffer is preferred. See -+// internal/transport/transport.go for an example of this. -+type Unbounded struct { -+ c chan interface{} -+ closed bool -+ mu sync.Mutex -+ backlog []interface{} -+} -+ -+// NewUnbounded returns a new instance of Unbounded. -+func NewUnbounded() *Unbounded { -+ return &Unbounded{c: make(chan interface{}, 1)} -+} -+ -+// Put adds t to the unbounded buffer. -+func (b *Unbounded) Put(t interface{}) { -+ b.mu.Lock() -+ defer b.mu.Unlock() -+ if b.closed { -+ return -+ } -+ if len(b.backlog) == 0 { -+ select { -+ case b.c <- t: -+ return -+ default: -+ } -+ } -+ b.backlog = append(b.backlog, t) -+} -+ -+// Load sends the earliest buffered data, if any, onto the read channel -+// returned by Get(). Users are expected to call this every time they read a -+// value from the read channel. -+func (b *Unbounded) Load() { -+ b.mu.Lock() -+ defer b.mu.Unlock() -+ if b.closed { -+ return -+ } -+ if len(b.backlog) > 0 { -+ select { -+ case b.c <- b.backlog[0]: -+ b.backlog[0] = nil -+ b.backlog = b.backlog[1:] -+ default: -+ } -+ } -+} -+ -+// Get returns a read channel on which values added to the buffer, via Put(), -+// are sent on. -+// -+// Upon reading a value from this channel, users are expected to call Load() to -+// send the next buffered value onto the channel if there is any. -+// -+// If the unbounded buffer is closed, the read channel returned by this method -+// is closed. -+func (b *Unbounded) Get() <-chan interface{} { -+ return b.c -+} -+ -+// Close closes the unbounded buffer. -+func (b *Unbounded) Close() { -+ b.mu.Lock() -+ defer b.mu.Unlock() -+ if b.closed { -+ return -+ } -+ b.closed = true -+ close(b.c) -+} -diff --git a/vendor/google.golang.org/grpc/internal/channelz/funcs.go b/vendor/google.golang.org/grpc/internal/channelz/funcs.go -new file mode 100755 -index 0000000..777cbcd ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/channelz/funcs.go -@@ -0,0 +1,789 @@ -+/* -+ * -+ * 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 channelz defines APIs for enabling channelz service, entry -+// registration/deletion, and accessing channelz data. It also defines channelz -+// metric struct formats. -+// -+// All APIs in this package are experimental. -+package channelz -+ -+import ( -+ "context" -+ "errors" -+ "fmt" -+ "sort" -+ "sync" -+ "sync/atomic" -+ "time" -+ -+ "google.golang.org/grpc/grpclog" -+) -+ -+const ( -+ defaultMaxTraceEntry int32 = 30 -+) -+ -+var ( -+ db dbWrapper -+ idGen idGenerator -+ // EntryPerPage defines the number of channelz entries to be shown on a web page. -+ EntryPerPage = int64(50) -+ curState int32 -+ maxTraceEntry = defaultMaxTraceEntry -+) -+ -+// TurnOn turns on channelz data collection. -+func TurnOn() { -+ if !IsOn() { -+ db.set(newChannelMap()) -+ idGen.reset() -+ atomic.StoreInt32(&curState, 1) -+ } -+} -+ -+// IsOn returns whether channelz data collection is on. -+func IsOn() bool { -+ return atomic.CompareAndSwapInt32(&curState, 1, 1) -+} -+ -+// SetMaxTraceEntry sets maximum number of trace entry per entity (i.e. channel/subchannel). -+// Setting it to 0 will disable channel tracing. -+func SetMaxTraceEntry(i int32) { -+ atomic.StoreInt32(&maxTraceEntry, i) -+} -+ -+// ResetMaxTraceEntryToDefault resets the maximum number of trace entry per entity to default. -+func ResetMaxTraceEntryToDefault() { -+ atomic.StoreInt32(&maxTraceEntry, defaultMaxTraceEntry) -+} -+ -+func getMaxTraceEntry() int { -+ i := atomic.LoadInt32(&maxTraceEntry) -+ return int(i) -+} -+ -+// dbWarpper wraps around a reference to internal channelz data storage, and -+// provide synchronized functionality to set and get the reference. -+type dbWrapper struct { -+ mu sync.RWMutex -+ DB *channelMap -+} -+ -+func (d *dbWrapper) set(db *channelMap) { -+ d.mu.Lock() -+ d.DB = db -+ d.mu.Unlock() -+} -+ -+func (d *dbWrapper) get() *channelMap { -+ d.mu.RLock() -+ defer d.mu.RUnlock() -+ return d.DB -+} -+ -+// NewChannelzStorageForTesting initializes channelz data storage and id -+// generator for testing purposes. -+// -+// Returns a cleanup function to be invoked by the test, which waits for up to -+// 10s for all channelz state to be reset by the grpc goroutines when those -+// entities get closed. This cleanup function helps with ensuring that tests -+// don't mess up each other. -+func NewChannelzStorageForTesting() (cleanup func() error) { -+ db.set(newChannelMap()) -+ idGen.reset() -+ -+ return func() error { -+ cm := db.get() -+ if cm == nil { -+ return nil -+ } -+ -+ ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) -+ defer cancel() -+ ticker := time.NewTicker(10 * time.Millisecond) -+ defer ticker.Stop() -+ for { -+ cm.mu.RLock() -+ topLevelChannels, servers, channels, subChannels, listenSockets, normalSockets := len(cm.topLevelChannels), len(cm.servers), len(cm.channels), len(cm.subChannels), len(cm.listenSockets), len(cm.normalSockets) -+ cm.mu.RUnlock() -+ -+ if err := ctx.Err(); err != nil { -+ return fmt.Errorf("after 10s the channelz map has not been cleaned up yet, topchannels: %d, servers: %d, channels: %d, subchannels: %d, listen sockets: %d, normal sockets: %d", topLevelChannels, servers, channels, subChannels, listenSockets, normalSockets) -+ } -+ if topLevelChannels == 0 && servers == 0 && channels == 0 && subChannels == 0 && listenSockets == 0 && normalSockets == 0 { -+ return nil -+ } -+ <-ticker.C -+ } -+ } -+} -+ -+// GetTopChannels returns a slice of top channel's ChannelMetric, along with a -+// boolean indicating whether there's more top channels to be queried for. -+// -+// The arg id specifies that only top channel with id at or above it will be included -+// in the result. The returned slice is up to a length of the arg maxResults or -+// EntryPerPage if maxResults is zero, and is sorted in ascending id order. -+func GetTopChannels(id int64, maxResults int64) ([]*ChannelMetric, bool) { -+ return db.get().GetTopChannels(id, maxResults) -+} -+ -+// GetServers returns a slice of server's ServerMetric, along with a -+// boolean indicating whether there's more servers to be queried for. -+// -+// The arg id specifies that only server with id at or above it will be included -+// in the result. The returned slice is up to a length of the arg maxResults or -+// EntryPerPage if maxResults is zero, and is sorted in ascending id order. -+func GetServers(id int64, maxResults int64) ([]*ServerMetric, bool) { -+ return db.get().GetServers(id, maxResults) -+} -+ -+// GetServerSockets returns a slice of server's (identified by id) normal socket's -+// SocketMetric, along with a boolean indicating whether there's more sockets to -+// be queried for. -+// -+// The arg startID specifies that only sockets with id at or above it will be -+// included in the result. The returned slice is up to a length of the arg maxResults -+// or EntryPerPage if maxResults is zero, and is sorted in ascending id order. -+func GetServerSockets(id int64, startID int64, maxResults int64) ([]*SocketMetric, bool) { -+ return db.get().GetServerSockets(id, startID, maxResults) -+} -+ -+// GetChannel returns the ChannelMetric for the channel (identified by id). -+func GetChannel(id int64) *ChannelMetric { -+ return db.get().GetChannel(id) -+} -+ -+// GetSubChannel returns the SubChannelMetric for the subchannel (identified by id). -+func GetSubChannel(id int64) *SubChannelMetric { -+ return db.get().GetSubChannel(id) -+} -+ -+// GetSocket returns the SocketInternalMetric for the socket (identified by id). -+func GetSocket(id int64) *SocketMetric { -+ return db.get().GetSocket(id) -+} -+ -+// GetServer returns the ServerMetric for the server (identified by id). -+func GetServer(id int64) *ServerMetric { -+ return db.get().GetServer(id) -+} -+ -+// RegisterChannel registers the given channel c in the channelz database with -+// ref as its reference name, and adds it to the child list of its parent -+// (identified by pid). pid == nil means no parent. -+// -+// Returns a unique channelz identifier assigned to this channel. -+// -+// If channelz is not turned ON, the channelz database is not mutated. -+func RegisterChannel(c Channel, pid *Identifier, ref string) *Identifier { -+ id := idGen.genID() -+ var parent int64 -+ isTopChannel := true -+ if pid != nil { -+ isTopChannel = false -+ parent = pid.Int() -+ } -+ -+ if !IsOn() { -+ return newIdentifer(RefChannel, id, pid) -+ } -+ -+ cn := &channel{ -+ refName: ref, -+ c: c, -+ subChans: make(map[int64]string), -+ nestedChans: make(map[int64]string), -+ id: id, -+ pid: parent, -+ trace: &channelTrace{createdTime: time.Now(), events: make([]*TraceEvent, 0, getMaxTraceEntry())}, -+ } -+ db.get().addChannel(id, cn, isTopChannel, parent) -+ return newIdentifer(RefChannel, id, pid) -+} -+ -+// RegisterSubChannel registers the given subChannel c in the channelz database -+// with ref as its reference name, and adds it to the child list of its parent -+// (identified by pid). -+// -+// Returns a unique channelz identifier assigned to this subChannel. -+// -+// If channelz is not turned ON, the channelz database is not mutated. -+func RegisterSubChannel(c Channel, pid *Identifier, ref string) (*Identifier, error) { -+ if pid == nil { -+ return nil, errors.New("a SubChannel's parent id cannot be nil") -+ } -+ id := idGen.genID() -+ if !IsOn() { -+ return newIdentifer(RefSubChannel, id, pid), nil -+ } -+ -+ sc := &subChannel{ -+ refName: ref, -+ c: c, -+ sockets: make(map[int64]string), -+ id: id, -+ pid: pid.Int(), -+ trace: &channelTrace{createdTime: time.Now(), events: make([]*TraceEvent, 0, getMaxTraceEntry())}, -+ } -+ db.get().addSubChannel(id, sc, pid.Int()) -+ return newIdentifer(RefSubChannel, id, pid), nil -+} -+ -+// RegisterServer registers the given server s in channelz database. It returns -+// the unique channelz tracking id assigned to this server. -+// -+// If channelz is not turned ON, the channelz database is not mutated. -+func RegisterServer(s Server, ref string) *Identifier { -+ id := idGen.genID() -+ if !IsOn() { -+ return newIdentifer(RefServer, id, nil) -+ } -+ -+ svr := &server{ -+ refName: ref, -+ s: s, -+ sockets: make(map[int64]string), -+ listenSockets: make(map[int64]string), -+ id: id, -+ } -+ db.get().addServer(id, svr) -+ return newIdentifer(RefServer, id, nil) -+} -+ -+// RegisterListenSocket registers the given listen socket s in channelz database -+// with ref as its reference name, and add it to the child list of its parent -+// (identified by pid). It returns the unique channelz tracking id assigned to -+// this listen socket. -+// -+// If channelz is not turned ON, the channelz database is not mutated. -+func RegisterListenSocket(s Socket, pid *Identifier, ref string) (*Identifier, error) { -+ if pid == nil { -+ return nil, errors.New("a ListenSocket's parent id cannot be 0") -+ } -+ id := idGen.genID() -+ if !IsOn() { -+ return newIdentifer(RefListenSocket, id, pid), nil -+ } -+ -+ ls := &listenSocket{refName: ref, s: s, id: id, pid: pid.Int()} -+ db.get().addListenSocket(id, ls, pid.Int()) -+ return newIdentifer(RefListenSocket, id, pid), nil -+} -+ -+// RegisterNormalSocket registers the given normal socket s in channelz database -+// with ref as its reference name, and adds it to the child list of its parent -+// (identified by pid). It returns the unique channelz tracking id assigned to -+// this normal socket. -+// -+// If channelz is not turned ON, the channelz database is not mutated. -+func RegisterNormalSocket(s Socket, pid *Identifier, ref string) (*Identifier, error) { -+ if pid == nil { -+ return nil, errors.New("a NormalSocket's parent id cannot be 0") -+ } -+ id := idGen.genID() -+ if !IsOn() { -+ return newIdentifer(RefNormalSocket, id, pid), nil -+ } -+ -+ ns := &normalSocket{refName: ref, s: s, id: id, pid: pid.Int()} -+ db.get().addNormalSocket(id, ns, pid.Int()) -+ return newIdentifer(RefNormalSocket, id, pid), nil -+} -+ -+// RemoveEntry removes an entry with unique channelz tracking id to be id from -+// channelz database. -+// -+// If channelz is not turned ON, this function is a no-op. -+func RemoveEntry(id *Identifier) { -+ if !IsOn() { -+ return -+ } -+ db.get().removeEntry(id.Int()) -+} -+ -+// TraceEventDesc is what the caller of AddTraceEvent should provide to describe -+// the event to be added to the channel trace. -+// -+// The Parent field is optional. It is used for an event that will be recorded -+// in the entity's parent trace. -+type TraceEventDesc struct { -+ Desc string -+ Severity Severity -+ Parent *TraceEventDesc -+} -+ -+// AddTraceEvent adds trace related to the entity with specified id, using the -+// provided TraceEventDesc. -+// -+// If channelz is not turned ON, this will simply log the event descriptions. -+func AddTraceEvent(l grpclog.DepthLoggerV2, id *Identifier, depth int, desc *TraceEventDesc) { -+ // Log only the trace description associated with the bottom most entity. -+ switch desc.Severity { -+ case CtUnknown, CtInfo: -+ l.InfoDepth(depth+1, withParens(id)+desc.Desc) -+ case CtWarning: -+ l.WarningDepth(depth+1, withParens(id)+desc.Desc) -+ case CtError: -+ l.ErrorDepth(depth+1, withParens(id)+desc.Desc) -+ } -+ -+ if getMaxTraceEntry() == 0 { -+ return -+ } -+ if IsOn() { -+ db.get().traceEvent(id.Int(), desc) -+ } -+} -+ -+// channelMap is the storage data structure for channelz. -+// Methods of channelMap can be divided in two two categories with respect to locking. -+// 1. Methods acquire the global lock. -+// 2. Methods that can only be called when global lock is held. -+// A second type of method need always to be called inside a first type of method. -+type channelMap struct { -+ mu sync.RWMutex -+ topLevelChannels map[int64]struct{} -+ servers map[int64]*server -+ channels map[int64]*channel -+ subChannels map[int64]*subChannel -+ listenSockets map[int64]*listenSocket -+ normalSockets map[int64]*normalSocket -+} -+ -+func newChannelMap() *channelMap { -+ return &channelMap{ -+ topLevelChannels: make(map[int64]struct{}), -+ channels: make(map[int64]*channel), -+ listenSockets: make(map[int64]*listenSocket), -+ normalSockets: make(map[int64]*normalSocket), -+ servers: make(map[int64]*server), -+ subChannels: make(map[int64]*subChannel), -+ } -+} -+ -+func (c *channelMap) addServer(id int64, s *server) { -+ c.mu.Lock() -+ s.cm = c -+ c.servers[id] = s -+ c.mu.Unlock() -+} -+ -+func (c *channelMap) addChannel(id int64, cn *channel, isTopChannel bool, pid int64) { -+ c.mu.Lock() -+ cn.cm = c -+ cn.trace.cm = c -+ c.channels[id] = cn -+ if isTopChannel { -+ c.topLevelChannels[id] = struct{}{} -+ } else { -+ c.findEntry(pid).addChild(id, cn) -+ } -+ c.mu.Unlock() -+} -+ -+func (c *channelMap) addSubChannel(id int64, sc *subChannel, pid int64) { -+ c.mu.Lock() -+ sc.cm = c -+ sc.trace.cm = c -+ c.subChannels[id] = sc -+ c.findEntry(pid).addChild(id, sc) -+ c.mu.Unlock() -+} -+ -+func (c *channelMap) addListenSocket(id int64, ls *listenSocket, pid int64) { -+ c.mu.Lock() -+ ls.cm = c -+ c.listenSockets[id] = ls -+ c.findEntry(pid).addChild(id, ls) -+ c.mu.Unlock() -+} -+ -+func (c *channelMap) addNormalSocket(id int64, ns *normalSocket, pid int64) { -+ c.mu.Lock() -+ ns.cm = c -+ c.normalSockets[id] = ns -+ c.findEntry(pid).addChild(id, ns) -+ c.mu.Unlock() -+} -+ -+// removeEntry triggers the removal of an entry, which may not indeed delete the entry, if it has to -+// wait on the deletion of its children and until no other entity's channel trace references it. -+// It may lead to a chain of entry deletion. For example, deleting the last socket of a gracefully -+// shutting down server will lead to the server being also deleted. -+func (c *channelMap) removeEntry(id int64) { -+ c.mu.Lock() -+ c.findEntry(id).triggerDelete() -+ c.mu.Unlock() -+} -+ -+// c.mu must be held by the caller -+func (c *channelMap) decrTraceRefCount(id int64) { -+ e := c.findEntry(id) -+ if v, ok := e.(tracedChannel); ok { -+ v.decrTraceRefCount() -+ e.deleteSelfIfReady() -+ } -+} -+ -+// c.mu must be held by the caller. -+func (c *channelMap) findEntry(id int64) entry { -+ var v entry -+ var ok bool -+ if v, ok = c.channels[id]; ok { -+ return v -+ } -+ if v, ok = c.subChannels[id]; ok { -+ return v -+ } -+ if v, ok = c.servers[id]; ok { -+ return v -+ } -+ if v, ok = c.listenSockets[id]; ok { -+ return v -+ } -+ if v, ok = c.normalSockets[id]; ok { -+ return v -+ } -+ return &dummyEntry{idNotFound: id} -+} -+ -+// c.mu must be held by the caller -+// deleteEntry simply deletes an entry from the channelMap. Before calling this -+// method, caller must check this entry is ready to be deleted, i.e removeEntry() -+// has been called on it, and no children still exist. -+// Conditionals are ordered by the expected frequency of deletion of each entity -+// type, in order to optimize performance. -+func (c *channelMap) deleteEntry(id int64) { -+ var ok bool -+ if _, ok = c.normalSockets[id]; ok { -+ delete(c.normalSockets, id) -+ return -+ } -+ if _, ok = c.subChannels[id]; ok { -+ delete(c.subChannels, id) -+ return -+ } -+ if _, ok = c.channels[id]; ok { -+ delete(c.channels, id) -+ delete(c.topLevelChannels, id) -+ return -+ } -+ if _, ok = c.listenSockets[id]; ok { -+ delete(c.listenSockets, id) -+ return -+ } -+ if _, ok = c.servers[id]; ok { -+ delete(c.servers, id) -+ return -+ } -+} -+ -+func (c *channelMap) traceEvent(id int64, desc *TraceEventDesc) { -+ c.mu.Lock() -+ child := c.findEntry(id) -+ childTC, ok := child.(tracedChannel) -+ if !ok { -+ c.mu.Unlock() -+ return -+ } -+ childTC.getChannelTrace().append(&TraceEvent{Desc: desc.Desc, Severity: desc.Severity, Timestamp: time.Now()}) -+ if desc.Parent != nil { -+ parent := c.findEntry(child.getParentID()) -+ var chanType RefChannelType -+ switch child.(type) { -+ case *channel: -+ chanType = RefChannel -+ case *subChannel: -+ chanType = RefSubChannel -+ } -+ if parentTC, ok := parent.(tracedChannel); ok { -+ parentTC.getChannelTrace().append(&TraceEvent{ -+ Desc: desc.Parent.Desc, -+ Severity: desc.Parent.Severity, -+ Timestamp: time.Now(), -+ RefID: id, -+ RefName: childTC.getRefName(), -+ RefType: chanType, -+ }) -+ childTC.incrTraceRefCount() -+ } -+ } -+ c.mu.Unlock() -+} -+ -+type int64Slice []int64 -+ -+func (s int64Slice) Len() int { return len(s) } -+func (s int64Slice) Swap(i, j int) { s[i], s[j] = s[j], s[i] } -+func (s int64Slice) Less(i, j int) bool { return s[i] < s[j] } -+ -+func copyMap(m map[int64]string) map[int64]string { -+ n := make(map[int64]string) -+ for k, v := range m { -+ n[k] = v -+ } -+ return n -+} -+ -+func min(a, b int64) int64 { -+ if a < b { -+ return a -+ } -+ return b -+} -+ -+func (c *channelMap) GetTopChannels(id int64, maxResults int64) ([]*ChannelMetric, bool) { -+ if maxResults <= 0 { -+ maxResults = EntryPerPage -+ } -+ c.mu.RLock() -+ l := int64(len(c.topLevelChannels)) -+ ids := make([]int64, 0, l) -+ cns := make([]*channel, 0, min(l, maxResults)) -+ -+ for k := range c.topLevelChannels { -+ ids = append(ids, k) -+ } -+ sort.Sort(int64Slice(ids)) -+ idx := sort.Search(len(ids), func(i int) bool { return ids[i] >= id }) -+ count := int64(0) -+ var end bool -+ var t []*ChannelMetric -+ for i, v := range ids[idx:] { -+ if count == maxResults { -+ break -+ } -+ if cn, ok := c.channels[v]; ok { -+ cns = append(cns, cn) -+ t = append(t, &ChannelMetric{ -+ NestedChans: copyMap(cn.nestedChans), -+ SubChans: copyMap(cn.subChans), -+ }) -+ count++ -+ } -+ if i == len(ids[idx:])-1 { -+ end = true -+ break -+ } -+ } -+ c.mu.RUnlock() -+ if count == 0 { -+ end = true -+ } -+ -+ for i, cn := range cns { -+ t[i].ChannelData = cn.c.ChannelzMetric() -+ t[i].ID = cn.id -+ t[i].RefName = cn.refName -+ t[i].Trace = cn.trace.dumpData() -+ } -+ return t, end -+} -+ -+func (c *channelMap) GetServers(id, maxResults int64) ([]*ServerMetric, bool) { -+ if maxResults <= 0 { -+ maxResults = EntryPerPage -+ } -+ c.mu.RLock() -+ l := int64(len(c.servers)) -+ ids := make([]int64, 0, l) -+ ss := make([]*server, 0, min(l, maxResults)) -+ for k := range c.servers { -+ ids = append(ids, k) -+ } -+ sort.Sort(int64Slice(ids)) -+ idx := sort.Search(len(ids), func(i int) bool { return ids[i] >= id }) -+ count := int64(0) -+ var end bool -+ var s []*ServerMetric -+ for i, v := range ids[idx:] { -+ if count == maxResults { -+ break -+ } -+ if svr, ok := c.servers[v]; ok { -+ ss = append(ss, svr) -+ s = append(s, &ServerMetric{ -+ ListenSockets: copyMap(svr.listenSockets), -+ }) -+ count++ -+ } -+ if i == len(ids[idx:])-1 { -+ end = true -+ break -+ } -+ } -+ c.mu.RUnlock() -+ if count == 0 { -+ end = true -+ } -+ -+ for i, svr := range ss { -+ s[i].ServerData = svr.s.ChannelzMetric() -+ s[i].ID = svr.id -+ s[i].RefName = svr.refName -+ } -+ return s, end -+} -+ -+func (c *channelMap) GetServerSockets(id int64, startID int64, maxResults int64) ([]*SocketMetric, bool) { -+ if maxResults <= 0 { -+ maxResults = EntryPerPage -+ } -+ var svr *server -+ var ok bool -+ c.mu.RLock() -+ if svr, ok = c.servers[id]; !ok { -+ // server with id doesn't exist. -+ c.mu.RUnlock() -+ return nil, true -+ } -+ svrskts := svr.sockets -+ l := int64(len(svrskts)) -+ ids := make([]int64, 0, l) -+ sks := make([]*normalSocket, 0, min(l, maxResults)) -+ for k := range svrskts { -+ ids = append(ids, k) -+ } -+ sort.Sort(int64Slice(ids)) -+ idx := sort.Search(len(ids), func(i int) bool { return ids[i] >= startID }) -+ count := int64(0) -+ var end bool -+ for i, v := range ids[idx:] { -+ if count == maxResults { -+ break -+ } -+ if ns, ok := c.normalSockets[v]; ok { -+ sks = append(sks, ns) -+ count++ -+ } -+ if i == len(ids[idx:])-1 { -+ end = true -+ break -+ } -+ } -+ c.mu.RUnlock() -+ if count == 0 { -+ end = true -+ } -+ s := make([]*SocketMetric, 0, len(sks)) -+ for _, ns := range sks { -+ sm := &SocketMetric{} -+ sm.SocketData = ns.s.ChannelzMetric() -+ sm.ID = ns.id -+ sm.RefName = ns.refName -+ s = append(s, sm) -+ } -+ return s, end -+} -+ -+func (c *channelMap) GetChannel(id int64) *ChannelMetric { -+ cm := &ChannelMetric{} -+ var cn *channel -+ var ok bool -+ c.mu.RLock() -+ if cn, ok = c.channels[id]; !ok { -+ // channel with id doesn't exist. -+ c.mu.RUnlock() -+ return nil -+ } -+ cm.NestedChans = copyMap(cn.nestedChans) -+ cm.SubChans = copyMap(cn.subChans) -+ // cn.c can be set to &dummyChannel{} when deleteSelfFromMap is called. Save a copy of cn.c when -+ // holding the lock to prevent potential data race. -+ chanCopy := cn.c -+ c.mu.RUnlock() -+ cm.ChannelData = chanCopy.ChannelzMetric() -+ cm.ID = cn.id -+ cm.RefName = cn.refName -+ cm.Trace = cn.trace.dumpData() -+ return cm -+} -+ -+func (c *channelMap) GetSubChannel(id int64) *SubChannelMetric { -+ cm := &SubChannelMetric{} -+ var sc *subChannel -+ var ok bool -+ c.mu.RLock() -+ if sc, ok = c.subChannels[id]; !ok { -+ // subchannel with id doesn't exist. -+ c.mu.RUnlock() -+ return nil -+ } -+ cm.Sockets = copyMap(sc.sockets) -+ // sc.c can be set to &dummyChannel{} when deleteSelfFromMap is called. Save a copy of sc.c when -+ // holding the lock to prevent potential data race. -+ chanCopy := sc.c -+ c.mu.RUnlock() -+ cm.ChannelData = chanCopy.ChannelzMetric() -+ cm.ID = sc.id -+ cm.RefName = sc.refName -+ cm.Trace = sc.trace.dumpData() -+ return cm -+} -+ -+func (c *channelMap) GetSocket(id int64) *SocketMetric { -+ sm := &SocketMetric{} -+ c.mu.RLock() -+ if ls, ok := c.listenSockets[id]; ok { -+ c.mu.RUnlock() -+ sm.SocketData = ls.s.ChannelzMetric() -+ sm.ID = ls.id -+ sm.RefName = ls.refName -+ return sm -+ } -+ if ns, ok := c.normalSockets[id]; ok { -+ c.mu.RUnlock() -+ sm.SocketData = ns.s.ChannelzMetric() -+ sm.ID = ns.id -+ sm.RefName = ns.refName -+ return sm -+ } -+ c.mu.RUnlock() -+ return nil -+} -+ -+func (c *channelMap) GetServer(id int64) *ServerMetric { -+ sm := &ServerMetric{} -+ var svr *server -+ var ok bool -+ c.mu.RLock() -+ if svr, ok = c.servers[id]; !ok { -+ c.mu.RUnlock() -+ return nil -+ } -+ sm.ListenSockets = copyMap(svr.listenSockets) -+ c.mu.RUnlock() -+ sm.ID = svr.id -+ sm.RefName = svr.refName -+ sm.ServerData = svr.s.ChannelzMetric() -+ return sm -+} -+ -+type idGenerator struct { -+ id int64 -+} -+ -+func (i *idGenerator) reset() { -+ atomic.StoreInt64(&i.id, 0) -+} -+ -+func (i *idGenerator) genID() int64 { -+ return atomic.AddInt64(&i.id, 1) -+} -diff --git a/vendor/google.golang.org/grpc/internal/channelz/id.go b/vendor/google.golang.org/grpc/internal/channelz/id.go -new file mode 100755 -index 0000000..c9a27ac ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/channelz/id.go -@@ -0,0 +1,75 @@ -+/* -+ * -+ * Copyright 2022 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 channelz -+ -+import "fmt" -+ -+// Identifier is an opaque identifier which uniquely identifies an entity in the -+// channelz database. -+type Identifier struct { -+ typ RefChannelType -+ id int64 -+ str string -+ pid *Identifier -+} -+ -+// Type returns the entity type corresponding to id. -+func (id *Identifier) Type() RefChannelType { -+ return id.typ -+} -+ -+// Int returns the integer identifier corresponding to id. -+func (id *Identifier) Int() int64 { -+ return id.id -+} -+ -+// String returns a string representation of the entity corresponding to id. -+// -+// This includes some information about the parent as well. Examples: -+// Top-level channel: [Channel #channel-number] -+// Nested channel: [Channel #parent-channel-number Channel #channel-number] -+// Sub channel: [Channel #parent-channel SubChannel #subchannel-number] -+func (id *Identifier) String() string { -+ return id.str -+} -+ -+// Equal returns true if other is the same as id. -+func (id *Identifier) Equal(other *Identifier) bool { -+ if (id != nil) != (other != nil) { -+ return false -+ } -+ if id == nil && other == nil { -+ return true -+ } -+ return id.typ == other.typ && id.id == other.id && id.pid == other.pid -+} -+ -+// NewIdentifierForTesting returns a new opaque identifier to be used only for -+// testing purposes. -+func NewIdentifierForTesting(typ RefChannelType, id int64, pid *Identifier) *Identifier { -+ return newIdentifer(typ, id, pid) -+} -+ -+func newIdentifer(typ RefChannelType, id int64, pid *Identifier) *Identifier { -+ str := fmt.Sprintf("%s #%d", typ, id) -+ if pid != nil { -+ str = fmt.Sprintf("%s %s", pid, str) -+ } -+ return &Identifier{typ: typ, id: id, str: str, pid: pid} -+} -diff --git a/vendor/google.golang.org/grpc/internal/channelz/logging.go b/vendor/google.golang.org/grpc/internal/channelz/logging.go -new file mode 100755 -index 0000000..8e13a3d ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/channelz/logging.go -@@ -0,0 +1,79 @@ -+/* -+ * -+ * Copyright 2020 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 channelz -+ -+import ( -+ "fmt" -+ -+ "google.golang.org/grpc/grpclog" -+) -+ -+var logger = grpclog.Component("channelz") -+ -+func withParens(id *Identifier) string { -+ return "[" + id.String() + "] " -+} -+ -+// Info logs and adds a trace event if channelz is on. -+func Info(l grpclog.DepthLoggerV2, id *Identifier, args ...interface{}) { -+ AddTraceEvent(l, id, 1, &TraceEventDesc{ -+ Desc: fmt.Sprint(args...), -+ Severity: CtInfo, -+ }) -+} -+ -+// Infof logs and adds a trace event if channelz is on. -+func Infof(l grpclog.DepthLoggerV2, id *Identifier, format string, args ...interface{}) { -+ AddTraceEvent(l, id, 1, &TraceEventDesc{ -+ Desc: fmt.Sprintf(format, args...), -+ Severity: CtInfo, -+ }) -+} -+ -+// Warning logs and adds a trace event if channelz is on. -+func Warning(l grpclog.DepthLoggerV2, id *Identifier, args ...interface{}) { -+ AddTraceEvent(l, id, 1, &TraceEventDesc{ -+ Desc: fmt.Sprint(args...), -+ Severity: CtWarning, -+ }) -+} -+ -+// Warningf logs and adds a trace event if channelz is on. -+func Warningf(l grpclog.DepthLoggerV2, id *Identifier, format string, args ...interface{}) { -+ AddTraceEvent(l, id, 1, &TraceEventDesc{ -+ Desc: fmt.Sprintf(format, args...), -+ Severity: CtWarning, -+ }) -+} -+ -+// Error logs and adds a trace event if channelz is on. -+func Error(l grpclog.DepthLoggerV2, id *Identifier, args ...interface{}) { -+ AddTraceEvent(l, id, 1, &TraceEventDesc{ -+ Desc: fmt.Sprint(args...), -+ Severity: CtError, -+ }) -+} -+ -+// Errorf logs and adds a trace event if channelz is on. -+func Errorf(l grpclog.DepthLoggerV2, id *Identifier, format string, args ...interface{}) { -+ AddTraceEvent(l, id, 1, &TraceEventDesc{ -+ Desc: fmt.Sprintf(format, args...), -+ Severity: CtError, -+ }) -+} -diff --git a/vendor/google.golang.org/grpc/internal/channelz/types.go b/vendor/google.golang.org/grpc/internal/channelz/types.go -new file mode 100755 -index 0000000..7b2f350 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/channelz/types.go -@@ -0,0 +1,722 @@ -+/* -+ * -+ * 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 channelz -+ -+import ( -+ "net" -+ "sync" -+ "sync/atomic" -+ "time" -+ -+ "google.golang.org/grpc/connectivity" -+ "google.golang.org/grpc/credentials" -+) -+ -+// entry represents a node in the channelz database. -+type entry interface { -+ // addChild adds a child e, whose channelz id is id to child list -+ addChild(id int64, e entry) -+ // deleteChild deletes a child with channelz id to be id from child list -+ deleteChild(id int64) -+ // triggerDelete tries to delete self from channelz database. However, if child -+ // list is not empty, then deletion from the database is on hold until the last -+ // child is deleted from database. -+ triggerDelete() -+ // deleteSelfIfReady check whether triggerDelete() has been called before, and whether child -+ // list is now empty. If both conditions are met, then delete self from database. -+ deleteSelfIfReady() -+ // getParentID returns parent ID of the entry. 0 value parent ID means no parent. -+ getParentID() int64 -+} -+ -+// dummyEntry is a fake entry to handle entry not found case. -+type dummyEntry struct { -+ idNotFound int64 -+} -+ -+func (d *dummyEntry) addChild(id int64, e entry) { -+ // Note: It is possible for a normal program to reach here under race condition. -+ // For example, there could be a race between ClientConn.Close() info being propagated -+ // to addrConn and http2Client. ClientConn.Close() cancel the context and result -+ // in http2Client to error. The error info is then caught by transport monitor -+ // and before addrConn.tearDown() is called in side ClientConn.Close(). Therefore, -+ // the addrConn will create a new transport. And when registering the new transport in -+ // channelz, its parent addrConn could have already been torn down and deleted -+ // from channelz tracking, and thus reach the code here. -+ logger.Infof("attempt to add child of type %T with id %d to a parent (id=%d) that doesn't currently exist", e, id, d.idNotFound) -+} -+ -+func (d *dummyEntry) deleteChild(id int64) { -+ // It is possible for a normal program to reach here under race condition. -+ // Refer to the example described in addChild(). -+ logger.Infof("attempt to delete child with id %d from a parent (id=%d) that doesn't currently exist", id, d.idNotFound) -+} -+ -+func (d *dummyEntry) triggerDelete() { -+ logger.Warningf("attempt to delete an entry (id=%d) that doesn't currently exist", d.idNotFound) -+} -+ -+func (*dummyEntry) deleteSelfIfReady() { -+ // code should not reach here. deleteSelfIfReady is always called on an existing entry. -+} -+ -+func (*dummyEntry) getParentID() int64 { -+ return 0 -+} -+ -+// ChannelMetric defines the info channelz provides for a specific Channel, which -+// includes ChannelInternalMetric and channelz-specific data, such as channelz id, -+// child list, etc. -+type ChannelMetric struct { -+ // ID is the channelz id of this channel. -+ ID int64 -+ // RefName is the human readable reference string of this channel. -+ RefName string -+ // ChannelData contains channel internal metric reported by the channel through -+ // ChannelzMetric(). -+ ChannelData *ChannelInternalMetric -+ // NestedChans tracks the nested channel type children of this channel in the format of -+ // a map from nested channel channelz id to corresponding reference string. -+ NestedChans map[int64]string -+ // SubChans tracks the subchannel type children of this channel in the format of a -+ // map from subchannel channelz id to corresponding reference string. -+ SubChans map[int64]string -+ // Sockets tracks the socket type children of this channel in the format of a map -+ // from socket channelz id to corresponding reference string. -+ // Note current grpc implementation doesn't allow channel having sockets directly, -+ // therefore, this is field is unused. -+ Sockets map[int64]string -+ // Trace contains the most recent traced events. -+ Trace *ChannelTrace -+} -+ -+// SubChannelMetric defines the info channelz provides for a specific SubChannel, -+// which includes ChannelInternalMetric and channelz-specific data, such as -+// channelz id, child list, etc. -+type SubChannelMetric struct { -+ // ID is the channelz id of this subchannel. -+ ID int64 -+ // RefName is the human readable reference string of this subchannel. -+ RefName string -+ // ChannelData contains subchannel internal metric reported by the subchannel -+ // through ChannelzMetric(). -+ ChannelData *ChannelInternalMetric -+ // NestedChans tracks the nested channel type children of this subchannel in the format of -+ // a map from nested channel channelz id to corresponding reference string. -+ // Note current grpc implementation doesn't allow subchannel to have nested channels -+ // as children, therefore, this field is unused. -+ NestedChans map[int64]string -+ // SubChans tracks the subchannel type children of this subchannel in the format of a -+ // map from subchannel channelz id to corresponding reference string. -+ // Note current grpc implementation doesn't allow subchannel to have subchannels -+ // as children, therefore, this field is unused. -+ SubChans map[int64]string -+ // Sockets tracks the socket type children of this subchannel in the format of a map -+ // from socket channelz id to corresponding reference string. -+ Sockets map[int64]string -+ // Trace contains the most recent traced events. -+ Trace *ChannelTrace -+} -+ -+// ChannelInternalMetric defines the struct that the implementor of Channel interface -+// should return from ChannelzMetric(). -+type ChannelInternalMetric struct { -+ // current connectivity state of the channel. -+ State connectivity.State -+ // The target this channel originally tried to connect to. May be absent -+ Target string -+ // The number of calls started on the channel. -+ CallsStarted int64 -+ // The number of calls that have completed with an OK status. -+ CallsSucceeded int64 -+ // The number of calls that have a completed with a non-OK status. -+ CallsFailed int64 -+ // The last time a call was started on the channel. -+ LastCallStartedTimestamp time.Time -+} -+ -+// ChannelTrace stores traced events on a channel/subchannel and related info. -+type ChannelTrace struct { -+ // EventNum is the number of events that ever got traced (i.e. including those that have been deleted) -+ EventNum int64 -+ // CreationTime is the creation time of the trace. -+ CreationTime time.Time -+ // Events stores the most recent trace events (up to $maxTraceEntry, newer event will overwrite the -+ // oldest one) -+ Events []*TraceEvent -+} -+ -+// TraceEvent represent a single trace event -+type TraceEvent struct { -+ // Desc is a simple description of the trace event. -+ Desc string -+ // Severity states the severity of this trace event. -+ Severity Severity -+ // Timestamp is the event time. -+ Timestamp time.Time -+ // RefID is the id of the entity that gets referenced in the event. RefID is 0 if no other entity is -+ // involved in this event. -+ // e.g. SubChannel (id: 4[]) Created. --> RefID = 4, RefName = "" (inside []) -+ RefID int64 -+ // RefName is the reference name for the entity that gets referenced in the event. -+ RefName string -+ // RefType indicates the referenced entity type, i.e Channel or SubChannel. -+ RefType RefChannelType -+} -+ -+// Channel is the interface that should be satisfied in order to be tracked by -+// channelz as Channel or SubChannel. -+type Channel interface { -+ ChannelzMetric() *ChannelInternalMetric -+} -+ -+type dummyChannel struct{} -+ -+func (d *dummyChannel) ChannelzMetric() *ChannelInternalMetric { -+ return &ChannelInternalMetric{} -+} -+ -+type channel struct { -+ refName string -+ c Channel -+ closeCalled bool -+ nestedChans map[int64]string -+ subChans map[int64]string -+ id int64 -+ pid int64 -+ cm *channelMap -+ trace *channelTrace -+ // traceRefCount is the number of trace events that reference this channel. -+ // Non-zero traceRefCount means the trace of this channel cannot be deleted. -+ traceRefCount int32 -+} -+ -+func (c *channel) addChild(id int64, e entry) { -+ switch v := e.(type) { -+ case *subChannel: -+ c.subChans[id] = v.refName -+ case *channel: -+ c.nestedChans[id] = v.refName -+ default: -+ logger.Errorf("cannot add a child (id = %d) of type %T to a channel", id, e) -+ } -+} -+ -+func (c *channel) deleteChild(id int64) { -+ delete(c.subChans, id) -+ delete(c.nestedChans, id) -+ c.deleteSelfIfReady() -+} -+ -+func (c *channel) triggerDelete() { -+ c.closeCalled = true -+ c.deleteSelfIfReady() -+} -+ -+func (c *channel) getParentID() int64 { -+ return c.pid -+} -+ -+// deleteSelfFromTree tries to delete the channel from the channelz entry relation tree, which means -+// deleting the channel reference from its parent's child list. -+// -+// In order for a channel to be deleted from the tree, it must meet the criteria that, removal of the -+// corresponding grpc object has been invoked, and the channel does not have any children left. -+// -+// The returned boolean value indicates whether the channel has been successfully deleted from tree. -+func (c *channel) deleteSelfFromTree() (deleted bool) { -+ if !c.closeCalled || len(c.subChans)+len(c.nestedChans) != 0 { -+ return false -+ } -+ // not top channel -+ if c.pid != 0 { -+ c.cm.findEntry(c.pid).deleteChild(c.id) -+ } -+ return true -+} -+ -+// deleteSelfFromMap checks whether it is valid to delete the channel from the map, which means -+// deleting the channel from channelz's tracking entirely. Users can no longer use id to query the -+// channel, and its memory will be garbage collected. -+// -+// The trace reference count of the channel must be 0 in order to be deleted from the map. This is -+// specified in the channel tracing gRFC that as long as some other trace has reference to an entity, -+// the trace of the referenced entity must not be deleted. In order to release the resource allocated -+// by grpc, the reference to the grpc object is reset to a dummy object. -+// -+// deleteSelfFromMap must be called after deleteSelfFromTree returns true. -+// -+// It returns a bool to indicate whether the channel can be safely deleted from map. -+func (c *channel) deleteSelfFromMap() (delete bool) { -+ if c.getTraceRefCount() != 0 { -+ c.c = &dummyChannel{} -+ return false -+ } -+ return true -+} -+ -+// deleteSelfIfReady tries to delete the channel itself from the channelz database. -+// The delete process includes two steps: -+// 1. delete the channel from the entry relation tree, i.e. delete the channel reference from its -+// parent's child list. -+// 2. delete the channel from the map, i.e. delete the channel entirely from channelz. Lookup by id -+// will return entry not found error. -+func (c *channel) deleteSelfIfReady() { -+ if !c.deleteSelfFromTree() { -+ return -+ } -+ if !c.deleteSelfFromMap() { -+ return -+ } -+ c.cm.deleteEntry(c.id) -+ c.trace.clear() -+} -+ -+func (c *channel) getChannelTrace() *channelTrace { -+ return c.trace -+} -+ -+func (c *channel) incrTraceRefCount() { -+ atomic.AddInt32(&c.traceRefCount, 1) -+} -+ -+func (c *channel) decrTraceRefCount() { -+ atomic.AddInt32(&c.traceRefCount, -1) -+} -+ -+func (c *channel) getTraceRefCount() int { -+ i := atomic.LoadInt32(&c.traceRefCount) -+ return int(i) -+} -+ -+func (c *channel) getRefName() string { -+ return c.refName -+} -+ -+type subChannel struct { -+ refName string -+ c Channel -+ closeCalled bool -+ sockets map[int64]string -+ id int64 -+ pid int64 -+ cm *channelMap -+ trace *channelTrace -+ traceRefCount int32 -+} -+ -+func (sc *subChannel) addChild(id int64, e entry) { -+ if v, ok := e.(*normalSocket); ok { -+ sc.sockets[id] = v.refName -+ } else { -+ logger.Errorf("cannot add a child (id = %d) of type %T to a subChannel", id, e) -+ } -+} -+ -+func (sc *subChannel) deleteChild(id int64) { -+ delete(sc.sockets, id) -+ sc.deleteSelfIfReady() -+} -+ -+func (sc *subChannel) triggerDelete() { -+ sc.closeCalled = true -+ sc.deleteSelfIfReady() -+} -+ -+func (sc *subChannel) getParentID() int64 { -+ return sc.pid -+} -+ -+// deleteSelfFromTree tries to delete the subchannel from the channelz entry relation tree, which -+// means deleting the subchannel reference from its parent's child list. -+// -+// In order for a subchannel to be deleted from the tree, it must meet the criteria that, removal of -+// the corresponding grpc object has been invoked, and the subchannel does not have any children left. -+// -+// The returned boolean value indicates whether the channel has been successfully deleted from tree. -+func (sc *subChannel) deleteSelfFromTree() (deleted bool) { -+ if !sc.closeCalled || len(sc.sockets) != 0 { -+ return false -+ } -+ sc.cm.findEntry(sc.pid).deleteChild(sc.id) -+ return true -+} -+ -+// deleteSelfFromMap checks whether it is valid to delete the subchannel from the map, which means -+// deleting the subchannel from channelz's tracking entirely. Users can no longer use id to query -+// the subchannel, and its memory will be garbage collected. -+// -+// The trace reference count of the subchannel must be 0 in order to be deleted from the map. This is -+// specified in the channel tracing gRFC that as long as some other trace has reference to an entity, -+// the trace of the referenced entity must not be deleted. In order to release the resource allocated -+// by grpc, the reference to the grpc object is reset to a dummy object. -+// -+// deleteSelfFromMap must be called after deleteSelfFromTree returns true. -+// -+// It returns a bool to indicate whether the channel can be safely deleted from map. -+func (sc *subChannel) deleteSelfFromMap() (delete bool) { -+ if sc.getTraceRefCount() != 0 { -+ // free the grpc struct (i.e. addrConn) -+ sc.c = &dummyChannel{} -+ return false -+ } -+ return true -+} -+ -+// deleteSelfIfReady tries to delete the subchannel itself from the channelz database. -+// The delete process includes two steps: -+// 1. delete the subchannel from the entry relation tree, i.e. delete the subchannel reference from -+// its parent's child list. -+// 2. delete the subchannel from the map, i.e. delete the subchannel entirely from channelz. Lookup -+// by id will return entry not found error. -+func (sc *subChannel) deleteSelfIfReady() { -+ if !sc.deleteSelfFromTree() { -+ return -+ } -+ if !sc.deleteSelfFromMap() { -+ return -+ } -+ sc.cm.deleteEntry(sc.id) -+ sc.trace.clear() -+} -+ -+func (sc *subChannel) getChannelTrace() *channelTrace { -+ return sc.trace -+} -+ -+func (sc *subChannel) incrTraceRefCount() { -+ atomic.AddInt32(&sc.traceRefCount, 1) -+} -+ -+func (sc *subChannel) decrTraceRefCount() { -+ atomic.AddInt32(&sc.traceRefCount, -1) -+} -+ -+func (sc *subChannel) getTraceRefCount() int { -+ i := atomic.LoadInt32(&sc.traceRefCount) -+ return int(i) -+} -+ -+func (sc *subChannel) getRefName() string { -+ return sc.refName -+} -+ -+// SocketMetric defines the info channelz provides for a specific Socket, which -+// includes SocketInternalMetric and channelz-specific data, such as channelz id, etc. -+type SocketMetric struct { -+ // ID is the channelz id of this socket. -+ ID int64 -+ // RefName is the human readable reference string of this socket. -+ RefName string -+ // SocketData contains socket internal metric reported by the socket through -+ // ChannelzMetric(). -+ SocketData *SocketInternalMetric -+} -+ -+// SocketInternalMetric defines the struct that the implementor of Socket interface -+// should return from ChannelzMetric(). -+type SocketInternalMetric struct { -+ // The number of streams that have been started. -+ StreamsStarted int64 -+ // The number of streams that have ended successfully: -+ // On client side, receiving frame with eos bit set. -+ // On server side, sending frame with eos bit set. -+ StreamsSucceeded int64 -+ // The number of streams that have ended unsuccessfully: -+ // On client side, termination without receiving frame with eos bit set. -+ // On server side, termination without sending frame with eos bit set. -+ StreamsFailed int64 -+ // The number of messages successfully sent on this socket. -+ MessagesSent int64 -+ MessagesReceived int64 -+ // The number of keep alives sent. This is typically implemented with HTTP/2 -+ // ping messages. -+ KeepAlivesSent int64 -+ // The last time a stream was created by this endpoint. Usually unset for -+ // servers. -+ LastLocalStreamCreatedTimestamp time.Time -+ // The last time a stream was created by the remote endpoint. Usually unset -+ // for clients. -+ LastRemoteStreamCreatedTimestamp time.Time -+ // The last time a message was sent by this endpoint. -+ LastMessageSentTimestamp time.Time -+ // The last time a message was received by this endpoint. -+ LastMessageReceivedTimestamp time.Time -+ // The amount of window, granted to the local endpoint by the remote endpoint. -+ // This may be slightly out of date due to network latency. This does NOT -+ // include stream level or TCP level flow control info. -+ LocalFlowControlWindow int64 -+ // The amount of window, granted to the remote endpoint by the local endpoint. -+ // This may be slightly out of date due to network latency. This does NOT -+ // include stream level or TCP level flow control info. -+ RemoteFlowControlWindow int64 -+ // The locally bound address. -+ LocalAddr net.Addr -+ // The remote bound address. May be absent. -+ RemoteAddr net.Addr -+ // Optional, represents the name of the remote endpoint, if different than -+ // the original target name. -+ RemoteName string -+ SocketOptions *SocketOptionData -+ Security credentials.ChannelzSecurityValue -+} -+ -+// Socket is the interface that should be satisfied in order to be tracked by -+// channelz as Socket. -+type Socket interface { -+ ChannelzMetric() *SocketInternalMetric -+} -+ -+type listenSocket struct { -+ refName string -+ s Socket -+ id int64 -+ pid int64 -+ cm *channelMap -+} -+ -+func (ls *listenSocket) addChild(id int64, e entry) { -+ logger.Errorf("cannot add a child (id = %d) of type %T to a listen socket", id, e) -+} -+ -+func (ls *listenSocket) deleteChild(id int64) { -+ logger.Errorf("cannot delete a child (id = %d) from a listen socket", id) -+} -+ -+func (ls *listenSocket) triggerDelete() { -+ ls.cm.deleteEntry(ls.id) -+ ls.cm.findEntry(ls.pid).deleteChild(ls.id) -+} -+ -+func (ls *listenSocket) deleteSelfIfReady() { -+ logger.Errorf("cannot call deleteSelfIfReady on a listen socket") -+} -+ -+func (ls *listenSocket) getParentID() int64 { -+ return ls.pid -+} -+ -+type normalSocket struct { -+ refName string -+ s Socket -+ id int64 -+ pid int64 -+ cm *channelMap -+} -+ -+func (ns *normalSocket) addChild(id int64, e entry) { -+ logger.Errorf("cannot add a child (id = %d) of type %T to a normal socket", id, e) -+} -+ -+func (ns *normalSocket) deleteChild(id int64) { -+ logger.Errorf("cannot delete a child (id = %d) from a normal socket", id) -+} -+ -+func (ns *normalSocket) triggerDelete() { -+ ns.cm.deleteEntry(ns.id) -+ ns.cm.findEntry(ns.pid).deleteChild(ns.id) -+} -+ -+func (ns *normalSocket) deleteSelfIfReady() { -+ logger.Errorf("cannot call deleteSelfIfReady on a normal socket") -+} -+ -+func (ns *normalSocket) getParentID() int64 { -+ return ns.pid -+} -+ -+// ServerMetric defines the info channelz provides for a specific Server, which -+// includes ServerInternalMetric and channelz-specific data, such as channelz id, -+// child list, etc. -+type ServerMetric struct { -+ // ID is the channelz id of this server. -+ ID int64 -+ // RefName is the human readable reference string of this server. -+ RefName string -+ // ServerData contains server internal metric reported by the server through -+ // ChannelzMetric(). -+ ServerData *ServerInternalMetric -+ // ListenSockets tracks the listener socket type children of this server in the -+ // format of a map from socket channelz id to corresponding reference string. -+ ListenSockets map[int64]string -+} -+ -+// ServerInternalMetric defines the struct that the implementor of Server interface -+// should return from ChannelzMetric(). -+type ServerInternalMetric struct { -+ // The number of incoming calls started on the server. -+ CallsStarted int64 -+ // The number of incoming calls that have completed with an OK status. -+ CallsSucceeded int64 -+ // The number of incoming calls that have a completed with a non-OK status. -+ CallsFailed int64 -+ // The last time a call was started on the server. -+ LastCallStartedTimestamp time.Time -+} -+ -+// Server is the interface to be satisfied in order to be tracked by channelz as -+// Server. -+type Server interface { -+ ChannelzMetric() *ServerInternalMetric -+} -+ -+type server struct { -+ refName string -+ s Server -+ closeCalled bool -+ sockets map[int64]string -+ listenSockets map[int64]string -+ id int64 -+ cm *channelMap -+} -+ -+func (s *server) addChild(id int64, e entry) { -+ switch v := e.(type) { -+ case *normalSocket: -+ s.sockets[id] = v.refName -+ case *listenSocket: -+ s.listenSockets[id] = v.refName -+ default: -+ logger.Errorf("cannot add a child (id = %d) of type %T to a server", id, e) -+ } -+} -+ -+func (s *server) deleteChild(id int64) { -+ delete(s.sockets, id) -+ delete(s.listenSockets, id) -+ s.deleteSelfIfReady() -+} -+ -+func (s *server) triggerDelete() { -+ s.closeCalled = true -+ s.deleteSelfIfReady() -+} -+ -+func (s *server) deleteSelfIfReady() { -+ if !s.closeCalled || len(s.sockets)+len(s.listenSockets) != 0 { -+ return -+ } -+ s.cm.deleteEntry(s.id) -+} -+ -+func (s *server) getParentID() int64 { -+ return 0 -+} -+ -+type tracedChannel interface { -+ getChannelTrace() *channelTrace -+ incrTraceRefCount() -+ decrTraceRefCount() -+ getRefName() string -+} -+ -+type channelTrace struct { -+ cm *channelMap -+ createdTime time.Time -+ eventCount int64 -+ mu sync.Mutex -+ events []*TraceEvent -+} -+ -+func (c *channelTrace) append(e *TraceEvent) { -+ c.mu.Lock() -+ if len(c.events) == getMaxTraceEntry() { -+ del := c.events[0] -+ c.events = c.events[1:] -+ if del.RefID != 0 { -+ // start recursive cleanup in a goroutine to not block the call originated from grpc. -+ go func() { -+ // need to acquire c.cm.mu lock to call the unlocked attemptCleanup func. -+ c.cm.mu.Lock() -+ c.cm.decrTraceRefCount(del.RefID) -+ c.cm.mu.Unlock() -+ }() -+ } -+ } -+ e.Timestamp = time.Now() -+ c.events = append(c.events, e) -+ c.eventCount++ -+ c.mu.Unlock() -+} -+ -+func (c *channelTrace) clear() { -+ c.mu.Lock() -+ for _, e := range c.events { -+ if e.RefID != 0 { -+ // caller should have already held the c.cm.mu lock. -+ c.cm.decrTraceRefCount(e.RefID) -+ } -+ } -+ c.mu.Unlock() -+} -+ -+// Severity is the severity level of a trace event. -+// The canonical enumeration of all valid values is here: -+// https://github.com/grpc/grpc-proto/blob/9b13d199cc0d4703c7ea26c9c330ba695866eb23/grpc/channelz/v1/channelz.proto#L126. -+type Severity int -+ -+const ( -+ // CtUnknown indicates unknown severity of a trace event. -+ CtUnknown Severity = iota -+ // CtInfo indicates info level severity of a trace event. -+ CtInfo -+ // CtWarning indicates warning level severity of a trace event. -+ CtWarning -+ // CtError indicates error level severity of a trace event. -+ CtError -+) -+ -+// RefChannelType is the type of the entity being referenced in a trace event. -+type RefChannelType int -+ -+const ( -+ // RefUnknown indicates an unknown entity type, the zero value for this type. -+ RefUnknown RefChannelType = iota -+ // RefChannel indicates the referenced entity is a Channel. -+ RefChannel -+ // RefSubChannel indicates the referenced entity is a SubChannel. -+ RefSubChannel -+ // RefServer indicates the referenced entity is a Server. -+ RefServer -+ // RefListenSocket indicates the referenced entity is a ListenSocket. -+ RefListenSocket -+ // RefNormalSocket indicates the referenced entity is a NormalSocket. -+ RefNormalSocket -+) -+ -+var refChannelTypeToString = map[RefChannelType]string{ -+ RefUnknown: "Unknown", -+ RefChannel: "Channel", -+ RefSubChannel: "SubChannel", -+ RefServer: "Server", -+ RefListenSocket: "ListenSocket", -+ RefNormalSocket: "NormalSocket", -+} -+ -+func (r RefChannelType) String() string { -+ return refChannelTypeToString[r] -+} -+ -+func (c *channelTrace) dumpData() *ChannelTrace { -+ c.mu.Lock() -+ ct := &ChannelTrace{EventNum: c.eventCount, CreationTime: c.createdTime} -+ ct.Events = c.events[:len(c.events)] -+ c.mu.Unlock() -+ return ct -+} -diff --git a/vendor/google.golang.org/grpc/internal/channelz/types_linux.go b/vendor/google.golang.org/grpc/internal/channelz/types_linux.go -new file mode 100755 -index 0000000..1b1c4cc ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/channelz/types_linux.go -@@ -0,0 +1,51 @@ -+/* -+ * -+ * 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 channelz -+ -+import ( -+ "syscall" -+ -+ "golang.org/x/sys/unix" -+) -+ -+// SocketOptionData defines the struct to hold socket option data, and related -+// getter function to obtain info from fd. -+type SocketOptionData struct { -+ Linger *unix.Linger -+ RecvTimeout *unix.Timeval -+ SendTimeout *unix.Timeval -+ TCPInfo *unix.TCPInfo -+} -+ -+// Getsockopt defines the function to get socket options requested by channelz. -+// It is to be passed to syscall.RawConn.Control(). -+func (s *SocketOptionData) Getsockopt(fd uintptr) { -+ if v, err := unix.GetsockoptLinger(int(fd), syscall.SOL_SOCKET, syscall.SO_LINGER); err == nil { -+ s.Linger = v -+ } -+ if v, err := unix.GetsockoptTimeval(int(fd), syscall.SOL_SOCKET, syscall.SO_RCVTIMEO); err == nil { -+ s.RecvTimeout = v -+ } -+ if v, err := unix.GetsockoptTimeval(int(fd), syscall.SOL_SOCKET, syscall.SO_SNDTIMEO); err == nil { -+ s.SendTimeout = v -+ } -+ if v, err := unix.GetsockoptTCPInfo(int(fd), syscall.SOL_TCP, syscall.TCP_INFO); err == nil { -+ s.TCPInfo = v -+ } -+} -diff --git a/vendor/google.golang.org/grpc/internal/channelz/types_nonlinux.go b/vendor/google.golang.org/grpc/internal/channelz/types_nonlinux.go -new file mode 100755 -index 0000000..8b06eed ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/channelz/types_nonlinux.go -@@ -0,0 +1,43 @@ -+//go:build !linux -+// +build !linux -+ -+/* -+ * -+ * 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 channelz -+ -+import ( -+ "sync" -+) -+ -+var once sync.Once -+ -+// SocketOptionData defines the struct to hold socket option data, and related -+// getter function to obtain info from fd. -+// Windows OS doesn't support Socket Option -+type SocketOptionData struct { -+} -+ -+// Getsockopt defines the function to get socket options requested by channelz. -+// It is to be passed to syscall.RawConn.Control(). -+// Windows OS doesn't support Socket Option -+func (s *SocketOptionData) Getsockopt(fd uintptr) { -+ once.Do(func() { -+ logger.Warning("Channelz: socket options are not supported on non-linux environments") -+ }) -+} -diff --git a/vendor/google.golang.org/grpc/internal/channelz/util_linux.go b/vendor/google.golang.org/grpc/internal/channelz/util_linux.go -new file mode 100755 -index 0000000..8d194e4 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/channelz/util_linux.go -@@ -0,0 +1,37 @@ -+/* -+ * -+ * 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 channelz -+ -+import ( -+ "syscall" -+) -+ -+// GetSocketOption gets the socket option info of the conn. -+func GetSocketOption(socket interface{}) *SocketOptionData { -+ c, ok := socket.(syscall.Conn) -+ if !ok { -+ return nil -+ } -+ data := &SocketOptionData{} -+ if rawConn, err := c.SyscallConn(); err == nil { -+ rawConn.Control(data.Getsockopt) -+ return data -+ } -+ return nil -+} -diff --git a/vendor/google.golang.org/grpc/internal/channelz/util_nonlinux.go b/vendor/google.golang.org/grpc/internal/channelz/util_nonlinux.go -new file mode 100755 -index 0000000..837ddc4 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/channelz/util_nonlinux.go -@@ -0,0 +1,27 @@ -+//go:build !linux -+// +build !linux -+ -+/* -+ * -+ * 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 channelz -+ -+// GetSocketOption gets the socket option info of the conn. -+func GetSocketOption(c interface{}) *SocketOptionData { -+ return nil -+} -diff --git a/vendor/google.golang.org/grpc/internal/credentials/credentials.go b/vendor/google.golang.org/grpc/internal/credentials/credentials.go -new file mode 100755 -index 0000000..32c9b59 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/credentials/credentials.go -@@ -0,0 +1,49 @@ -+/* -+ * Copyright 2021 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 ( -+ "context" -+) -+ -+// requestInfoKey is a struct to be used as the key to store RequestInfo in a -+// context. -+type requestInfoKey struct{} -+ -+// NewRequestInfoContext creates a context with ri. -+func NewRequestInfoContext(ctx context.Context, ri interface{}) context.Context { -+ return context.WithValue(ctx, requestInfoKey{}, ri) -+} -+ -+// RequestInfoFromContext extracts the RequestInfo from ctx. -+func RequestInfoFromContext(ctx context.Context) interface{} { -+ return ctx.Value(requestInfoKey{}) -+} -+ -+// clientHandshakeInfoKey is a struct used as the key to store -+// ClientHandshakeInfo in a context. -+type clientHandshakeInfoKey struct{} -+ -+// ClientHandshakeInfoFromContext extracts the ClientHandshakeInfo from ctx. -+func ClientHandshakeInfoFromContext(ctx context.Context) interface{} { -+ return ctx.Value(clientHandshakeInfoKey{}) -+} -+ -+// NewClientHandshakeInfoContext creates a context with chi. -+func NewClientHandshakeInfoContext(ctx context.Context, chi interface{}) context.Context { -+ return context.WithValue(ctx, clientHandshakeInfoKey{}, chi) -+} -diff --git a/vendor/google.golang.org/grpc/internal/credentials/spiffe.go b/vendor/google.golang.org/grpc/internal/credentials/spiffe.go -new file mode 100755 -index 0000000..25ade62 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/credentials/spiffe.go -@@ -0,0 +1,75 @@ -+/* -+ * -+ * Copyright 2020 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 defines APIs for parsing SPIFFE ID. -+// -+// All APIs in this package are experimental. -+package credentials -+ -+import ( -+ "crypto/tls" -+ "crypto/x509" -+ "net/url" -+ -+ "google.golang.org/grpc/grpclog" -+) -+ -+var logger = grpclog.Component("credentials") -+ -+// SPIFFEIDFromState parses the SPIFFE ID from State. If the SPIFFE ID format -+// is invalid, return nil with warning. -+func SPIFFEIDFromState(state tls.ConnectionState) *url.URL { -+ if len(state.PeerCertificates) == 0 || len(state.PeerCertificates[0].URIs) == 0 { -+ return nil -+ } -+ return SPIFFEIDFromCert(state.PeerCertificates[0]) -+} -+ -+// SPIFFEIDFromCert parses the SPIFFE ID from x509.Certificate. If the SPIFFE -+// ID format is invalid, return nil with warning. -+func SPIFFEIDFromCert(cert *x509.Certificate) *url.URL { -+ if cert == nil || cert.URIs == nil { -+ return nil -+ } -+ var spiffeID *url.URL -+ for _, uri := range cert.URIs { -+ if uri == nil || uri.Scheme != "spiffe" || uri.Opaque != "" || (uri.User != nil && uri.User.Username() != "") { -+ continue -+ } -+ // From this point, we assume the uri is intended for a SPIFFE ID. -+ if len(uri.String()) > 2048 { -+ logger.Warning("invalid SPIFFE ID: total ID length larger than 2048 bytes") -+ return nil -+ } -+ if len(uri.Host) == 0 || len(uri.Path) == 0 { -+ logger.Warning("invalid SPIFFE ID: domain or workload ID is empty") -+ return nil -+ } -+ if len(uri.Host) > 255 { -+ logger.Warning("invalid SPIFFE ID: domain length larger than 255 characters") -+ return nil -+ } -+ // A valid SPIFFE certificate can only have exactly one URI SAN field. -+ if len(cert.URIs) > 1 { -+ logger.Warning("invalid SPIFFE ID: multiple URI SANs") -+ return nil -+ } -+ spiffeID = uri -+ } -+ return spiffeID -+} -diff --git a/vendor/google.golang.org/grpc/internal/credentials/syscallconn.go b/vendor/google.golang.org/grpc/internal/credentials/syscallconn.go -new file mode 100755 -index 0000000..2919632 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/credentials/syscallconn.go -@@ -0,0 +1,58 @@ -+/* -+ * -+ * 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 credentials -+ -+import ( -+ "net" -+ "syscall" -+) -+ -+type sysConn = syscall.Conn -+ -+// syscallConn keeps reference of rawConn to support syscall.Conn for channelz. -+// SyscallConn() (the method in interface syscall.Conn) is explicitly -+// implemented on this type, -+// -+// Interface syscall.Conn is implemented by most net.Conn implementations (e.g. -+// TCPConn, UnixConn), but is not part of net.Conn interface. So wrapper conns -+// that embed net.Conn don't implement syscall.Conn. (Side note: tls.Conn -+// doesn't embed net.Conn, so even if syscall.Conn is part of net.Conn, it won't -+// help here). -+type syscallConn struct { -+ net.Conn -+ // sysConn is a type alias of syscall.Conn. It's necessary because the name -+ // `Conn` collides with `net.Conn`. -+ sysConn -+} -+ -+// WrapSyscallConn tries to wrap rawConn and newConn into a net.Conn that -+// implements syscall.Conn. rawConn will be used to support syscall, and newConn -+// will be used for read/write. -+// -+// This function returns newConn if rawConn doesn't implement syscall.Conn. -+func WrapSyscallConn(rawConn, newConn net.Conn) net.Conn { -+ sysConn, ok := rawConn.(syscall.Conn) -+ if !ok { -+ return newConn -+ } -+ return &syscallConn{ -+ Conn: newConn, -+ sysConn: sysConn, -+ } -+} -diff --git a/vendor/google.golang.org/grpc/internal/credentials/util.go b/vendor/google.golang.org/grpc/internal/credentials/util.go -new file mode 100755 -index 0000000..f792fd2 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/credentials/util.go -@@ -0,0 +1,52 @@ -+/* -+ * -+ * Copyright 2020 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" -+) -+ -+const alpnProtoStrH2 = "h2" -+ -+// AppendH2ToNextProtos appends h2 to next protos. -+func AppendH2ToNextProtos(ps []string) []string { -+ for _, p := range ps { -+ if p == alpnProtoStrH2 { -+ return ps -+ } -+ } -+ ret := make([]string, 0, len(ps)+1) -+ ret = append(ret, ps...) -+ return append(ret, alpnProtoStrH2) -+} -+ -+// CloneTLSConfig returns a shallow clone of the exported -+// fields of cfg, ignoring the unexported sync.Once, which -+// contains a mutex and must not be copied. -+// -+// If cfg is nil, a new zero tls.Config is returned. -+// -+// TODO: inline this function if possible. -+func CloneTLSConfig(cfg *tls.Config) *tls.Config { -+ if cfg == nil { -+ return &tls.Config{} -+ } -+ -+ return cfg.Clone() -+} -diff --git a/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go b/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go -new file mode 100755 -index 0000000..77c2c0b ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go -@@ -0,0 +1,69 @@ -+/* -+ * -+ * 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 envconfig contains grpc settings configured by environment variables. -+package envconfig -+ -+import ( -+ "os" -+ "strconv" -+ "strings" -+) -+ -+var ( -+ // TXTErrIgnore is set if TXT errors should be ignored ("GRPC_GO_IGNORE_TXT_ERRORS" is not "false"). -+ TXTErrIgnore = boolFromEnv("GRPC_GO_IGNORE_TXT_ERRORS", true) -+ // AdvertiseCompressors is set if registered compressor should be advertised -+ // ("GRPC_GO_ADVERTISE_COMPRESSORS" is not "false"). -+ AdvertiseCompressors = boolFromEnv("GRPC_GO_ADVERTISE_COMPRESSORS", true) -+ // RingHashCap indicates the maximum ring size which defaults to 4096 -+ // entries but may be overridden by setting the environment variable -+ // "GRPC_RING_HASH_CAP". This does not override the default bounds -+ // checking which NACKs configs specifying ring sizes > 8*1024*1024 (~8M). -+ RingHashCap = uint64FromEnv("GRPC_RING_HASH_CAP", 4096, 1, 8*1024*1024) -+ // PickFirstLBConfig is set if we should support configuration of the -+ // pick_first LB policy, which can be enabled by setting the environment -+ // variable "GRPC_EXPERIMENTAL_PICKFIRST_LB_CONFIG" to "true". -+ PickFirstLBConfig = boolFromEnv("GRPC_EXPERIMENTAL_PICKFIRST_LB_CONFIG", false) -+ // ALTSMaxConcurrentHandshakes is the maximum number of concurrent ALTS -+ // handshakes that can be performed. -+ ALTSMaxConcurrentHandshakes = uint64FromEnv("GRPC_ALTS_MAX_CONCURRENT_HANDSHAKES", 100, 1, 100) -+) -+ -+func boolFromEnv(envVar string, def bool) bool { -+ if def { -+ // The default is true; return true unless the variable is "false". -+ return !strings.EqualFold(os.Getenv(envVar), "false") -+ } -+ // The default is false; return false unless the variable is "true". -+ return strings.EqualFold(os.Getenv(envVar), "true") -+} -+ -+func uint64FromEnv(envVar string, def, min, max uint64) uint64 { -+ v, err := strconv.ParseUint(os.Getenv(envVar), 10, 64) -+ if err != nil { -+ return def -+ } -+ if v < min { -+ return min -+ } -+ if v > max { -+ return max -+ } -+ return v -+} -diff --git a/vendor/google.golang.org/grpc/internal/envconfig/observability.go b/vendor/google.golang.org/grpc/internal/envconfig/observability.go -new file mode 100755 -index 0000000..dd314cf ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/envconfig/observability.go -@@ -0,0 +1,42 @@ -+/* -+ * -+ * Copyright 2022 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 envconfig -+ -+import "os" -+ -+const ( -+ envObservabilityConfig = "GRPC_GCP_OBSERVABILITY_CONFIG" -+ envObservabilityConfigFile = "GRPC_GCP_OBSERVABILITY_CONFIG_FILE" -+) -+ -+var ( -+ // ObservabilityConfig is the json configuration for the gcp/observability -+ // package specified directly in the envObservabilityConfig env var. -+ // -+ // This is used in the 1.0 release of gcp/observability, and thus must not be -+ // deleted or changed. -+ ObservabilityConfig = os.Getenv(envObservabilityConfig) -+ // ObservabilityConfigFile is the json configuration for the -+ // gcp/observability specified in a file with the location specified in -+ // envObservabilityConfigFile env var. -+ // -+ // This is used in the 1.0 release of gcp/observability, and thus must not be -+ // deleted or changed. -+ ObservabilityConfigFile = os.Getenv(envObservabilityConfigFile) -+) -diff --git a/vendor/google.golang.org/grpc/internal/envconfig/xds.go b/vendor/google.golang.org/grpc/internal/envconfig/xds.go -new file mode 100755 -index 0000000..02b4b6a ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/envconfig/xds.go -@@ -0,0 +1,95 @@ -+/* -+ * -+ * Copyright 2020 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 envconfig -+ -+import ( -+ "os" -+) -+ -+const ( -+ // XDSBootstrapFileNameEnv is the env variable to set bootstrap file name. -+ // Do not use this and read from env directly. Its value is read and kept in -+ // variable XDSBootstrapFileName. -+ // -+ // When both bootstrap FileName and FileContent are set, FileName is used. -+ XDSBootstrapFileNameEnv = "GRPC_XDS_BOOTSTRAP" -+ // XDSBootstrapFileContentEnv is the env variable to set bootstrap file -+ // content. Do not use this and read from env directly. Its value is read -+ // and kept in variable XDSBootstrapFileContent. -+ // -+ // When both bootstrap FileName and FileContent are set, FileName is used. -+ XDSBootstrapFileContentEnv = "GRPC_XDS_BOOTSTRAP_CONFIG" -+) -+ -+var ( -+ // XDSBootstrapFileName holds the name of the file which contains xDS -+ // bootstrap configuration. Users can specify the location of the bootstrap -+ // file by setting the environment variable "GRPC_XDS_BOOTSTRAP". -+ // -+ // When both bootstrap FileName and FileContent are set, FileName is used. -+ XDSBootstrapFileName = os.Getenv(XDSBootstrapFileNameEnv) -+ // XDSBootstrapFileContent holds the content of the xDS bootstrap -+ // configuration. Users can specify the bootstrap config by setting the -+ // environment variable "GRPC_XDS_BOOTSTRAP_CONFIG". -+ // -+ // When both bootstrap FileName and FileContent are set, FileName is used. -+ XDSBootstrapFileContent = os.Getenv(XDSBootstrapFileContentEnv) -+ // XDSRingHash indicates whether ring hash support is enabled, which can be -+ // disabled by setting the environment variable -+ // "GRPC_XDS_EXPERIMENTAL_ENABLE_RING_HASH" to "false". -+ XDSRingHash = boolFromEnv("GRPC_XDS_EXPERIMENTAL_ENABLE_RING_HASH", true) -+ // XDSClientSideSecurity is used to control processing of security -+ // configuration on the client-side. -+ // -+ // Note that there is no env var protection for the server-side because we -+ // have a brand new API on the server-side and users explicitly need to use -+ // the new API to get security integration on the server. -+ XDSClientSideSecurity = boolFromEnv("GRPC_XDS_EXPERIMENTAL_SECURITY_SUPPORT", true) -+ // XDSAggregateAndDNS indicates whether processing of aggregated cluster and -+ // DNS cluster is enabled, which can be disabled by setting the environment -+ // variable "GRPC_XDS_EXPERIMENTAL_ENABLE_AGGREGATE_AND_LOGICAL_DNS_CLUSTER" -+ // to "false". -+ XDSAggregateAndDNS = boolFromEnv("GRPC_XDS_EXPERIMENTAL_ENABLE_AGGREGATE_AND_LOGICAL_DNS_CLUSTER", true) -+ -+ // XDSRBAC indicates whether xDS configured RBAC HTTP Filter is enabled, -+ // which can be disabled by setting the environment variable -+ // "GRPC_XDS_EXPERIMENTAL_RBAC" to "false". -+ XDSRBAC = boolFromEnv("GRPC_XDS_EXPERIMENTAL_RBAC", true) -+ // XDSOutlierDetection indicates whether outlier detection support is -+ // enabled, which can be disabled by setting the environment variable -+ // "GRPC_EXPERIMENTAL_ENABLE_OUTLIER_DETECTION" to "false". -+ XDSOutlierDetection = boolFromEnv("GRPC_EXPERIMENTAL_ENABLE_OUTLIER_DETECTION", true) -+ // XDSFederation indicates whether federation support is enabled, which can -+ // be enabled by setting the environment variable -+ // "GRPC_EXPERIMENTAL_XDS_FEDERATION" to "true". -+ XDSFederation = boolFromEnv("GRPC_EXPERIMENTAL_XDS_FEDERATION", true) -+ -+ // XDSRLS indicates whether processing of Cluster Specifier plugins and -+ // support for the RLS CLuster Specifier is enabled, which can be disabled by -+ // setting the environment variable "GRPC_EXPERIMENTAL_XDS_RLS_LB" to -+ // "false". -+ XDSRLS = boolFromEnv("GRPC_EXPERIMENTAL_XDS_RLS_LB", true) -+ -+ // C2PResolverTestOnlyTrafficDirectorURI is the TD URI for testing. -+ C2PResolverTestOnlyTrafficDirectorURI = os.Getenv("GRPC_TEST_ONLY_GOOGLE_C2P_RESOLVER_TRAFFIC_DIRECTOR_URI") -+ // XDSCustomLBPolicy indicates whether Custom LB Policies are enabled, which -+ // can be disabled by setting the environment variable -+ // "GRPC_EXPERIMENTAL_XDS_CUSTOM_LB_CONFIG" to "false". -+ XDSCustomLBPolicy = boolFromEnv("GRPC_EXPERIMENTAL_XDS_CUSTOM_LB_CONFIG", true) -+) -diff --git a/vendor/google.golang.org/grpc/internal/grpclog/grpclog.go b/vendor/google.golang.org/grpc/internal/grpclog/grpclog.go -new file mode 100755 -index 0000000..b68e26a ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/grpclog/grpclog.go -@@ -0,0 +1,126 @@ -+/* -+ * -+ * Copyright 2020 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 (internal) defines depth logging for grpc. -+package grpclog -+ -+import ( -+ "os" -+) -+ -+// Logger is the logger used for the non-depth log functions. -+var Logger LoggerV2 -+ -+// DepthLogger is the logger used for the depth log functions. -+var DepthLogger DepthLoggerV2 -+ -+// InfoDepth logs to the INFO log at the specified depth. -+func InfoDepth(depth int, args ...interface{}) { -+ if DepthLogger != nil { -+ DepthLogger.InfoDepth(depth, args...) -+ } else { -+ Logger.Infoln(args...) -+ } -+} -+ -+// WarningDepth logs to the WARNING log at the specified depth. -+func WarningDepth(depth int, args ...interface{}) { -+ if DepthLogger != nil { -+ DepthLogger.WarningDepth(depth, args...) -+ } else { -+ Logger.Warningln(args...) -+ } -+} -+ -+// ErrorDepth logs to the ERROR log at the specified depth. -+func ErrorDepth(depth int, args ...interface{}) { -+ if DepthLogger != nil { -+ DepthLogger.ErrorDepth(depth, args...) -+ } else { -+ Logger.Errorln(args...) -+ } -+} -+ -+// FatalDepth logs to the FATAL log at the specified depth. -+func FatalDepth(depth int, args ...interface{}) { -+ if DepthLogger != nil { -+ DepthLogger.FatalDepth(depth, args...) -+ } else { -+ Logger.Fatalln(args...) -+ } -+ os.Exit(1) -+} -+ -+// LoggerV2 does underlying logging work for grpclog. -+// This is a copy of the LoggerV2 defined in the external grpclog package. It -+// is defined here to avoid a circular dependency. -+type LoggerV2 interface { -+ // Info logs to INFO log. Arguments are handled in the manner of fmt.Print. -+ Info(args ...interface{}) -+ // Infoln logs to INFO log. Arguments are handled in the manner of fmt.Println. -+ Infoln(args ...interface{}) -+ // Infof logs to INFO log. Arguments are handled in the manner of fmt.Printf. -+ Infof(format string, args ...interface{}) -+ // Warning logs to WARNING log. Arguments are handled in the manner of fmt.Print. -+ Warning(args ...interface{}) -+ // Warningln logs to WARNING log. Arguments are handled in the manner of fmt.Println. -+ Warningln(args ...interface{}) -+ // Warningf logs to WARNING log. Arguments are handled in the manner of fmt.Printf. -+ Warningf(format string, args ...interface{}) -+ // Error logs to ERROR log. Arguments are handled in the manner of fmt.Print. -+ Error(args ...interface{}) -+ // Errorln logs to ERROR log. Arguments are handled in the manner of fmt.Println. -+ Errorln(args ...interface{}) -+ // Errorf logs to ERROR log. Arguments are handled in the manner of fmt.Printf. -+ Errorf(format string, args ...interface{}) -+ // Fatal logs to ERROR log. Arguments are handled in the manner of fmt.Print. -+ // gRPC ensures that all Fatal logs will exit with os.Exit(1). -+ // Implementations may also call os.Exit() with a non-zero exit code. -+ Fatal(args ...interface{}) -+ // Fatalln logs to ERROR log. Arguments are handled in the manner of fmt.Println. -+ // gRPC ensures that all Fatal logs will exit with os.Exit(1). -+ // Implementations may also call os.Exit() with a non-zero exit code. -+ Fatalln(args ...interface{}) -+ // Fatalf logs to ERROR log. Arguments are handled in the manner of fmt.Printf. -+ // gRPC ensures that all Fatal logs will exit with os.Exit(1). -+ // Implementations may also call os.Exit() with a non-zero exit code. -+ Fatalf(format string, args ...interface{}) -+ // V reports whether verbosity level l is at least the requested verbose level. -+ V(l int) bool -+} -+ -+// DepthLoggerV2 logs at a specified call frame. If a LoggerV2 also implements -+// DepthLoggerV2, the below functions will be called with the appropriate stack -+// depth set for trivial functions the logger may ignore. -+// This is a copy of the DepthLoggerV2 defined in the external grpclog package. -+// It is defined here to avoid a circular dependency. -+// -+// # Experimental -+// -+// Notice: This type is EXPERIMENTAL and may be changed or removed in a -+// later release. -+type DepthLoggerV2 interface { -+ // InfoDepth logs to INFO log at the specified depth. Arguments are handled in the manner of fmt.Println. -+ InfoDepth(depth int, args ...interface{}) -+ // WarningDepth logs to WARNING log at the specified depth. Arguments are handled in the manner of fmt.Println. -+ WarningDepth(depth int, args ...interface{}) -+ // ErrorDepth logs to ERROR log at the specified depth. Arguments are handled in the manner of fmt.Println. -+ ErrorDepth(depth int, args ...interface{}) -+ // FatalDepth logs to FATAL log at the specified depth. Arguments are handled in the manner of fmt.Println. -+ FatalDepth(depth int, args ...interface{}) -+} -diff --git a/vendor/google.golang.org/grpc/internal/grpclog/prefixLogger.go b/vendor/google.golang.org/grpc/internal/grpclog/prefixLogger.go -new file mode 100755 -index 0000000..02224b4 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/grpclog/prefixLogger.go -@@ -0,0 +1,93 @@ -+/* -+ * -+ * Copyright 2020 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 ( -+ "fmt" -+) -+ -+// PrefixLogger does logging with a prefix. -+// -+// Logging method on a nil logs without any prefix. -+type PrefixLogger struct { -+ logger DepthLoggerV2 -+ prefix string -+} -+ -+// Infof does info logging. -+func (pl *PrefixLogger) Infof(format string, args ...interface{}) { -+ if pl != nil { -+ // Handle nil, so the tests can pass in a nil logger. -+ format = pl.prefix + format -+ pl.logger.InfoDepth(1, fmt.Sprintf(format, args...)) -+ return -+ } -+ InfoDepth(1, fmt.Sprintf(format, args...)) -+} -+ -+// Warningf does warning logging. -+func (pl *PrefixLogger) Warningf(format string, args ...interface{}) { -+ if pl != nil { -+ format = pl.prefix + format -+ pl.logger.WarningDepth(1, fmt.Sprintf(format, args...)) -+ return -+ } -+ WarningDepth(1, fmt.Sprintf(format, args...)) -+} -+ -+// Errorf does error logging. -+func (pl *PrefixLogger) Errorf(format string, args ...interface{}) { -+ if pl != nil { -+ format = pl.prefix + format -+ pl.logger.ErrorDepth(1, fmt.Sprintf(format, args...)) -+ return -+ } -+ ErrorDepth(1, fmt.Sprintf(format, args...)) -+} -+ -+// Debugf does info logging at verbose level 2. -+func (pl *PrefixLogger) Debugf(format string, args ...interface{}) { -+ // TODO(6044): Refactor interfaces LoggerV2 and DepthLogger, and maybe -+ // rewrite PrefixLogger a little to ensure that we don't use the global -+ // `Logger` here, and instead use the `logger` field. -+ if !Logger.V(2) { -+ return -+ } -+ if pl != nil { -+ // Handle nil, so the tests can pass in a nil logger. -+ format = pl.prefix + format -+ pl.logger.InfoDepth(1, fmt.Sprintf(format, args...)) -+ return -+ } -+ InfoDepth(1, fmt.Sprintf(format, args...)) -+ -+} -+ -+// V reports whether verbosity level l is at least the requested verbose level. -+func (pl *PrefixLogger) V(l int) bool { -+ // TODO(6044): Refactor interfaces LoggerV2 and DepthLogger, and maybe -+ // rewrite PrefixLogger a little to ensure that we don't use the global -+ // `Logger` here, and instead use the `logger` field. -+ return Logger.V(l) -+} -+ -+// NewPrefixLogger creates a prefix logger with the given prefix. -+func NewPrefixLogger(logger DepthLoggerV2, prefix string) *PrefixLogger { -+ return &PrefixLogger{logger: logger, prefix: prefix} -+} -diff --git a/vendor/google.golang.org/grpc/internal/grpcrand/grpcrand.go b/vendor/google.golang.org/grpc/internal/grpcrand/grpcrand.go -new file mode 100755 -index 0000000..aa97273 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/grpcrand/grpcrand.go -@@ -0,0 +1,95 @@ -+/* -+ * -+ * 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 grpcrand implements math/rand functions in a concurrent-safe way -+// with a global random source, independent of math/rand's global source. -+package grpcrand -+ -+import ( -+ "math/rand" -+ "sync" -+ "time" -+) -+ -+var ( -+ r = rand.New(rand.NewSource(time.Now().UnixNano())) -+ mu sync.Mutex -+) -+ -+// Int implements rand.Int on the grpcrand global source. -+func Int() int { -+ mu.Lock() -+ defer mu.Unlock() -+ return r.Int() -+} -+ -+// Int63n implements rand.Int63n on the grpcrand global source. -+func Int63n(n int64) int64 { -+ mu.Lock() -+ defer mu.Unlock() -+ return r.Int63n(n) -+} -+ -+// Intn implements rand.Intn on the grpcrand global source. -+func Intn(n int) int { -+ mu.Lock() -+ defer mu.Unlock() -+ return r.Intn(n) -+} -+ -+// Int31n implements rand.Int31n on the grpcrand global source. -+func Int31n(n int32) int32 { -+ mu.Lock() -+ defer mu.Unlock() -+ return r.Int31n(n) -+} -+ -+// Float64 implements rand.Float64 on the grpcrand global source. -+func Float64() float64 { -+ mu.Lock() -+ defer mu.Unlock() -+ return r.Float64() -+} -+ -+// Uint64 implements rand.Uint64 on the grpcrand global source. -+func Uint64() uint64 { -+ mu.Lock() -+ defer mu.Unlock() -+ return r.Uint64() -+} -+ -+// Uint32 implements rand.Uint32 on the grpcrand global source. -+func Uint32() uint32 { -+ mu.Lock() -+ defer mu.Unlock() -+ return r.Uint32() -+} -+ -+// ExpFloat64 implements rand.ExpFloat64 on the grpcrand global source. -+func ExpFloat64() float64 { -+ mu.Lock() -+ defer mu.Unlock() -+ return r.ExpFloat64() -+} -+ -+// Shuffle implements rand.Shuffle on the grpcrand global source. -+var Shuffle = func(n int, f func(int, int)) { -+ mu.Lock() -+ defer mu.Unlock() -+ r.Shuffle(n, f) -+} -diff --git a/vendor/google.golang.org/grpc/internal/grpcsync/callback_serializer.go b/vendor/google.golang.org/grpc/internal/grpcsync/callback_serializer.go -new file mode 100755 -index 0000000..37b8d41 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/grpcsync/callback_serializer.go -@@ -0,0 +1,119 @@ -+/* -+ * -+ * Copyright 2022 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 grpcsync -+ -+import ( -+ "context" -+ "sync" -+ -+ "google.golang.org/grpc/internal/buffer" -+) -+ -+// CallbackSerializer provides a mechanism to schedule callbacks in a -+// synchronized manner. It provides a FIFO guarantee on the order of execution -+// of scheduled callbacks. New callbacks can be scheduled by invoking the -+// Schedule() method. -+// -+// This type is safe for concurrent access. -+type CallbackSerializer struct { -+ // Done is closed once the serializer is shut down completely, i.e all -+ // scheduled callbacks are executed and the serializer has deallocated all -+ // its resources. -+ Done chan struct{} -+ -+ callbacks *buffer.Unbounded -+ closedMu sync.Mutex -+ closed bool -+} -+ -+// NewCallbackSerializer returns a new CallbackSerializer instance. The provided -+// context will be passed to the scheduled callbacks. Users should cancel the -+// provided context to shutdown the CallbackSerializer. It is guaranteed that no -+// callbacks will be added once this context is canceled, and any pending un-run -+// callbacks will be executed before the serializer is shut down. -+func NewCallbackSerializer(ctx context.Context) *CallbackSerializer { -+ t := &CallbackSerializer{ -+ Done: make(chan struct{}), -+ callbacks: buffer.NewUnbounded(), -+ } -+ go t.run(ctx) -+ return t -+} -+ -+// Schedule adds a callback to be scheduled after existing callbacks are run. -+// -+// Callbacks are expected to honor the context when performing any blocking -+// operations, and should return early when the context is canceled. -+// -+// Return value indicates if the callback was successfully added to the list of -+// callbacks to be executed by the serializer. It is not possible to add -+// callbacks once the context passed to NewCallbackSerializer is cancelled. -+func (t *CallbackSerializer) Schedule(f func(ctx context.Context)) bool { -+ t.closedMu.Lock() -+ defer t.closedMu.Unlock() -+ -+ if t.closed { -+ return false -+ } -+ t.callbacks.Put(f) -+ return true -+} -+ -+func (t *CallbackSerializer) run(ctx context.Context) { -+ var backlog []func(context.Context) -+ -+ defer close(t.Done) -+ for ctx.Err() == nil { -+ select { -+ case <-ctx.Done(): -+ // Do nothing here. Next iteration of the for loop will not happen, -+ // since ctx.Err() would be non-nil. -+ case callback, ok := <-t.callbacks.Get(): -+ if !ok { -+ return -+ } -+ t.callbacks.Load() -+ callback.(func(ctx context.Context))(ctx) -+ } -+ } -+ -+ // Fetch pending callbacks if any, and execute them before returning from -+ // this method and closing t.Done. -+ t.closedMu.Lock() -+ t.closed = true -+ backlog = t.fetchPendingCallbacks() -+ t.callbacks.Close() -+ t.closedMu.Unlock() -+ for _, b := range backlog { -+ b(ctx) -+ } -+} -+ -+func (t *CallbackSerializer) fetchPendingCallbacks() []func(context.Context) { -+ var backlog []func(context.Context) -+ for { -+ select { -+ case b := <-t.callbacks.Get(): -+ backlog = append(backlog, b.(func(context.Context))) -+ t.callbacks.Load() -+ default: -+ return backlog -+ } -+ } -+} -diff --git a/vendor/google.golang.org/grpc/internal/grpcsync/event.go b/vendor/google.golang.org/grpc/internal/grpcsync/event.go -new file mode 100755 -index 0000000..fbe697c ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/grpcsync/event.go -@@ -0,0 +1,61 @@ -+/* -+ * -+ * 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 grpcsync implements additional synchronization primitives built upon -+// the sync package. -+package grpcsync -+ -+import ( -+ "sync" -+ "sync/atomic" -+) -+ -+// Event represents a one-time event that may occur in the future. -+type Event struct { -+ fired int32 -+ c chan struct{} -+ o sync.Once -+} -+ -+// Fire causes e to complete. It is safe to call multiple times, and -+// concurrently. It returns true iff this call to Fire caused the signaling -+// channel returned by Done to close. -+func (e *Event) Fire() bool { -+ ret := false -+ e.o.Do(func() { -+ atomic.StoreInt32(&e.fired, 1) -+ close(e.c) -+ ret = true -+ }) -+ return ret -+} -+ -+// Done returns a channel that will be closed when Fire is called. -+func (e *Event) Done() <-chan struct{} { -+ return e.c -+} -+ -+// HasFired returns true if Fire has been called. -+func (e *Event) HasFired() bool { -+ return atomic.LoadInt32(&e.fired) == 1 -+} -+ -+// NewEvent returns a new, ready-to-use Event. -+func NewEvent() *Event { -+ return &Event{c: make(chan struct{})} -+} -diff --git a/vendor/google.golang.org/grpc/internal/grpcsync/oncefunc.go b/vendor/google.golang.org/grpc/internal/grpcsync/oncefunc.go -new file mode 100755 -index 0000000..6635f7b ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/grpcsync/oncefunc.go -@@ -0,0 +1,32 @@ -+/* -+ * -+ * Copyright 2022 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 grpcsync -+ -+import ( -+ "sync" -+) -+ -+// OnceFunc returns a function wrapping f which ensures f is only executed -+// once even if the returned function is executed multiple times. -+func OnceFunc(f func()) func() { -+ var once sync.Once -+ return func() { -+ once.Do(f) -+ } -+} -diff --git a/vendor/google.golang.org/grpc/internal/grpcsync/pubsub.go b/vendor/google.golang.org/grpc/internal/grpcsync/pubsub.go -new file mode 100755 -index 0000000..f58b5ff ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/grpcsync/pubsub.go -@@ -0,0 +1,136 @@ -+/* -+ * -+ * Copyright 2023 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 grpcsync -+ -+import ( -+ "context" -+ "sync" -+) -+ -+// Subscriber represents an entity that is subscribed to messages published on -+// a PubSub. It wraps the callback to be invoked by the PubSub when a new -+// message is published. -+type Subscriber interface { -+ // OnMessage is invoked when a new message is published. Implementations -+ // must not block in this method. -+ OnMessage(msg interface{}) -+} -+ -+// PubSub is a simple one-to-many publish-subscribe system that supports -+// messages of arbitrary type. It guarantees that messages are delivered in -+// the same order in which they were published. -+// -+// Publisher invokes the Publish() method to publish new messages, while -+// subscribers interested in receiving these messages register a callback -+// via the Subscribe() method. -+// -+// Once a PubSub is stopped, no more messages can be published, and -+// it is guaranteed that no more subscriber callback will be invoked. -+type PubSub struct { -+ cs *CallbackSerializer -+ cancel context.CancelFunc -+ -+ // Access to the below fields are guarded by this mutex. -+ mu sync.Mutex -+ msg interface{} -+ subscribers map[Subscriber]bool -+ stopped bool -+} -+ -+// NewPubSub returns a new PubSub instance. -+func NewPubSub() *PubSub { -+ ctx, cancel := context.WithCancel(context.Background()) -+ return &PubSub{ -+ cs: NewCallbackSerializer(ctx), -+ cancel: cancel, -+ subscribers: map[Subscriber]bool{}, -+ } -+} -+ -+// Subscribe registers the provided Subscriber to the PubSub. -+// -+// If the PubSub contains a previously published message, the Subscriber's -+// OnMessage() callback will be invoked asynchronously with the existing -+// message to begin with, and subsequently for every newly published message. -+// -+// The caller is responsible for invoking the returned cancel function to -+// unsubscribe itself from the PubSub. -+func (ps *PubSub) Subscribe(sub Subscriber) (cancel func()) { -+ ps.mu.Lock() -+ defer ps.mu.Unlock() -+ -+ if ps.stopped { -+ return func() {} -+ } -+ -+ ps.subscribers[sub] = true -+ -+ if ps.msg != nil { -+ msg := ps.msg -+ ps.cs.Schedule(func(context.Context) { -+ ps.mu.Lock() -+ defer ps.mu.Unlock() -+ if !ps.subscribers[sub] { -+ return -+ } -+ sub.OnMessage(msg) -+ }) -+ } -+ -+ return func() { -+ ps.mu.Lock() -+ defer ps.mu.Unlock() -+ delete(ps.subscribers, sub) -+ } -+} -+ -+// Publish publishes the provided message to the PubSub, and invokes -+// callbacks registered by subscribers asynchronously. -+func (ps *PubSub) Publish(msg interface{}) { -+ ps.mu.Lock() -+ defer ps.mu.Unlock() -+ -+ if ps.stopped { -+ return -+ } -+ -+ ps.msg = msg -+ for sub := range ps.subscribers { -+ s := sub -+ ps.cs.Schedule(func(context.Context) { -+ ps.mu.Lock() -+ defer ps.mu.Unlock() -+ if !ps.subscribers[s] { -+ return -+ } -+ s.OnMessage(msg) -+ }) -+ } -+} -+ -+// Stop shuts down the PubSub and releases any resources allocated by it. -+// It is guaranteed that no subscriber callbacks would be invoked once this -+// method returns. -+func (ps *PubSub) Stop() { -+ ps.mu.Lock() -+ defer ps.mu.Unlock() -+ ps.stopped = true -+ -+ ps.cancel() -+} -diff --git a/vendor/google.golang.org/grpc/internal/grpcutil/compressor.go b/vendor/google.golang.org/grpc/internal/grpcutil/compressor.go -new file mode 100755 -index 0000000..9f40909 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/grpcutil/compressor.go -@@ -0,0 +1,47 @@ -+/* -+ * -+ * Copyright 2022 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 grpcutil -+ -+import ( -+ "strings" -+ -+ "google.golang.org/grpc/internal/envconfig" -+) -+ -+// RegisteredCompressorNames holds names of the registered compressors. -+var RegisteredCompressorNames []string -+ -+// IsCompressorNameRegistered returns true when name is available in registry. -+func IsCompressorNameRegistered(name string) bool { -+ for _, compressor := range RegisteredCompressorNames { -+ if compressor == name { -+ return true -+ } -+ } -+ return false -+} -+ -+// RegisteredCompressors returns a string of registered compressor names -+// separated by comma. -+func RegisteredCompressors() string { -+ if !envconfig.AdvertiseCompressors { -+ return "" -+ } -+ return strings.Join(RegisteredCompressorNames, ",") -+} -diff --git a/vendor/google.golang.org/grpc/internal/grpcutil/encode_duration.go b/vendor/google.golang.org/grpc/internal/grpcutil/encode_duration.go -new file mode 100755 -index 0000000..b25b0ba ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/grpcutil/encode_duration.go -@@ -0,0 +1,63 @@ -+/* -+ * -+ * Copyright 2020 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 grpcutil -+ -+import ( -+ "strconv" -+ "time" -+) -+ -+const maxTimeoutValue int64 = 100000000 - 1 -+ -+// div does integer division and round-up the result. Note that this is -+// equivalent to (d+r-1)/r but has less chance to overflow. -+func div(d, r time.Duration) int64 { -+ if d%r > 0 { -+ return int64(d/r + 1) -+ } -+ return int64(d / r) -+} -+ -+// EncodeDuration encodes the duration to the format grpc-timeout header -+// accepts. -+// -+// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests -+func EncodeDuration(t time.Duration) string { -+ // TODO: This is simplistic and not bandwidth efficient. Improve it. -+ if t <= 0 { -+ return "0n" -+ } -+ if d := div(t, time.Nanosecond); d <= maxTimeoutValue { -+ return strconv.FormatInt(d, 10) + "n" -+ } -+ if d := div(t, time.Microsecond); d <= maxTimeoutValue { -+ return strconv.FormatInt(d, 10) + "u" -+ } -+ if d := div(t, time.Millisecond); d <= maxTimeoutValue { -+ return strconv.FormatInt(d, 10) + "m" -+ } -+ if d := div(t, time.Second); d <= maxTimeoutValue { -+ return strconv.FormatInt(d, 10) + "S" -+ } -+ if d := div(t, time.Minute); d <= maxTimeoutValue { -+ return strconv.FormatInt(d, 10) + "M" -+ } -+ // Note that maxTimeoutValue * time.Hour > MaxInt64. -+ return strconv.FormatInt(div(t, time.Hour), 10) + "H" -+} -diff --git a/vendor/google.golang.org/grpc/internal/grpcutil/grpcutil.go b/vendor/google.golang.org/grpc/internal/grpcutil/grpcutil.go -new file mode 100755 -index 0000000..e2f948e ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/grpcutil/grpcutil.go -@@ -0,0 +1,20 @@ -+/* -+ * -+ * Copyright 2021 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 grpcutil provides utility functions used across the gRPC codebase. -+package grpcutil -diff --git a/vendor/google.golang.org/grpc/internal/grpcutil/metadata.go b/vendor/google.golang.org/grpc/internal/grpcutil/metadata.go -new file mode 100755 -index 0000000..6f22bd8 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/grpcutil/metadata.go -@@ -0,0 +1,40 @@ -+/* -+ * -+ * Copyright 2020 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 grpcutil -+ -+import ( -+ "context" -+ -+ "google.golang.org/grpc/metadata" -+) -+ -+type mdExtraKey struct{} -+ -+// WithExtraMetadata creates a new context with incoming md attached. -+func WithExtraMetadata(ctx context.Context, md metadata.MD) context.Context { -+ return context.WithValue(ctx, mdExtraKey{}, md) -+} -+ -+// ExtraMetadata returns the incoming metadata in ctx if it exists. The -+// returned MD should not be modified. Writing to it may cause races. -+// Modification should be made to copies of the returned MD. -+func ExtraMetadata(ctx context.Context) (md metadata.MD, ok bool) { -+ md, ok = ctx.Value(mdExtraKey{}).(metadata.MD) -+ return -+} -diff --git a/vendor/google.golang.org/grpc/internal/grpcutil/method.go b/vendor/google.golang.org/grpc/internal/grpcutil/method.go -new file mode 100755 -index 0000000..ec62b47 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/grpcutil/method.go -@@ -0,0 +1,88 @@ -+/* -+ * -+ * 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 grpcutil -+ -+import ( -+ "errors" -+ "strings" -+) -+ -+// ParseMethod splits service and method from the input. It expects format -+// "/service/method". -+func ParseMethod(methodName string) (service, method string, _ error) { -+ if !strings.HasPrefix(methodName, "/") { -+ return "", "", errors.New("invalid method name: should start with /") -+ } -+ methodName = methodName[1:] -+ -+ pos := strings.LastIndex(methodName, "/") -+ if pos < 0 { -+ return "", "", errors.New("invalid method name: suffix /method is missing") -+ } -+ return methodName[:pos], methodName[pos+1:], nil -+} -+ -+// baseContentType is the base content-type for gRPC. This is a valid -+// content-type on it's own, but can also include a content-subtype such as -+// "proto" as a suffix after "+" or ";". See -+// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests -+// for more details. -+const baseContentType = "application/grpc" -+ -+// ContentSubtype returns the content-subtype for the given content-type. The -+// given content-type must be a valid content-type that starts with -+// "application/grpc". A content-subtype will follow "application/grpc" after a -+// "+" or ";". See -+// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests for -+// more details. -+// -+// If contentType is not a valid content-type for gRPC, the boolean -+// will be false, otherwise true. If content-type == "application/grpc", -+// "application/grpc+", or "application/grpc;", the boolean will be true, -+// but no content-subtype will be returned. -+// -+// contentType is assumed to be lowercase already. -+func ContentSubtype(contentType string) (string, bool) { -+ if contentType == baseContentType { -+ return "", true -+ } -+ if !strings.HasPrefix(contentType, baseContentType) { -+ return "", false -+ } -+ // guaranteed since != baseContentType and has baseContentType prefix -+ switch contentType[len(baseContentType)] { -+ case '+', ';': -+ // this will return true for "application/grpc+" or "application/grpc;" -+ // which the previous validContentType function tested to be valid, so we -+ // just say that no content-subtype is specified in this case -+ return contentType[len(baseContentType)+1:], true -+ default: -+ return "", false -+ } -+} -+ -+// ContentType builds full content type with the given sub-type. -+// -+// contentSubtype is assumed to be lowercase -+func ContentType(contentSubtype string) string { -+ if contentSubtype == "" { -+ return baseContentType -+ } -+ return baseContentType + "+" + contentSubtype -+} -diff --git a/vendor/google.golang.org/grpc/internal/grpcutil/regex.go b/vendor/google.golang.org/grpc/internal/grpcutil/regex.go -new file mode 100755 -index 0000000..7a092b2 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/grpcutil/regex.go -@@ -0,0 +1,31 @@ -+/* -+ * -+ * Copyright 2021 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 grpcutil -+ -+import "regexp" -+ -+// FullMatchWithRegex returns whether the full text matches the regex provided. -+func FullMatchWithRegex(re *regexp.Regexp, text string) bool { -+ if len(text) == 0 { -+ return re.MatchString(text) -+ } -+ re.Longest() -+ rem := re.FindString(text) -+ return len(rem) == len(text) -+} -diff --git a/vendor/google.golang.org/grpc/internal/internal.go b/vendor/google.golang.org/grpc/internal/internal.go -new file mode 100755 -index 0000000..42ff39c ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/internal.go -@@ -0,0 +1,194 @@ -+/* -+ * 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 internal contains gRPC-internal code, to avoid polluting -+// the godoc of the top-level grpc package. It must not import any grpc -+// symbols to avoid circular dependencies. -+package internal -+ -+import ( -+ "context" -+ "time" -+ -+ "google.golang.org/grpc/connectivity" -+ "google.golang.org/grpc/serviceconfig" -+) -+ -+var ( -+ // WithHealthCheckFunc is set by dialoptions.go -+ WithHealthCheckFunc interface{} // func (HealthChecker) DialOption -+ // HealthCheckFunc is used to provide client-side LB channel health checking -+ HealthCheckFunc HealthChecker -+ // BalancerUnregister is exported by package balancer to unregister a balancer. -+ BalancerUnregister func(name string) -+ // KeepaliveMinPingTime is the minimum ping interval. This must be 10s by -+ // default, but tests may wish to set it lower for convenience. -+ KeepaliveMinPingTime = 10 * time.Second -+ // ParseServiceConfig parses a JSON representation of the service config. -+ ParseServiceConfig interface{} // func(string) *serviceconfig.ParseResult -+ // EqualServiceConfigForTesting is for testing service config generation and -+ // parsing. Both a and b should be returned by ParseServiceConfig. -+ // This function compares the config without rawJSON stripped, in case the -+ // there's difference in white space. -+ EqualServiceConfigForTesting func(a, b serviceconfig.Config) bool -+ // GetCertificateProviderBuilder returns the registered builder for the -+ // given name. This is set by package certprovider for use from xDS -+ // bootstrap code while parsing certificate provider configs in the -+ // bootstrap file. -+ GetCertificateProviderBuilder interface{} // func(string) certprovider.Builder -+ // GetXDSHandshakeInfoForTesting returns a pointer to the xds.HandshakeInfo -+ // stored in the passed in attributes. This is set by -+ // credentials/xds/xds.go. -+ GetXDSHandshakeInfoForTesting interface{} // func (*attributes.Attributes) *xds.HandshakeInfo -+ // GetServerCredentials returns the transport credentials configured on a -+ // gRPC server. An xDS-enabled server needs to know what type of credentials -+ // is configured on the underlying gRPC server. This is set by server.go. -+ GetServerCredentials interface{} // func (*grpc.Server) credentials.TransportCredentials -+ // CanonicalString returns the canonical string of the code defined here: -+ // https://github.com/grpc/grpc/blob/master/doc/statuscodes.md. -+ // -+ // This is used in the 1.0 release of gcp/observability, and thus must not be -+ // deleted or changed. -+ CanonicalString interface{} // func (codes.Code) string -+ // DrainServerTransports initiates a graceful close of existing connections -+ // on a gRPC server accepted on the provided listener address. An -+ // xDS-enabled server invokes this method on a grpc.Server when a particular -+ // listener moves to "not-serving" mode. -+ DrainServerTransports interface{} // func(*grpc.Server, string) -+ // AddGlobalServerOptions adds an array of ServerOption that will be -+ // effective globally for newly created servers. The priority will be: 1. -+ // user-provided; 2. this method; 3. default values. -+ // -+ // This is used in the 1.0 release of gcp/observability, and thus must not be -+ // deleted or changed. -+ AddGlobalServerOptions interface{} // func(opt ...ServerOption) -+ // ClearGlobalServerOptions clears the array of extra ServerOption. This -+ // method is useful in testing and benchmarking. -+ // -+ // This is used in the 1.0 release of gcp/observability, and thus must not be -+ // deleted or changed. -+ ClearGlobalServerOptions func() -+ // AddGlobalDialOptions adds an array of DialOption that will be effective -+ // globally for newly created client channels. The priority will be: 1. -+ // user-provided; 2. this method; 3. default values. -+ // -+ // This is used in the 1.0 release of gcp/observability, and thus must not be -+ // deleted or changed. -+ AddGlobalDialOptions interface{} // func(opt ...DialOption) -+ // DisableGlobalDialOptions returns a DialOption that prevents the -+ // ClientConn from applying the global DialOptions (set via -+ // AddGlobalDialOptions). -+ // -+ // This is used in the 1.0 release of gcp/observability, and thus must not be -+ // deleted or changed. -+ DisableGlobalDialOptions interface{} // func() grpc.DialOption -+ // ClearGlobalDialOptions clears the array of extra DialOption. This -+ // method is useful in testing and benchmarking. -+ // -+ // This is used in the 1.0 release of gcp/observability, and thus must not be -+ // deleted or changed. -+ ClearGlobalDialOptions func() -+ // JoinDialOptions combines the dial options passed as arguments into a -+ // single dial option. -+ JoinDialOptions interface{} // func(...grpc.DialOption) grpc.DialOption -+ // JoinServerOptions combines the server options passed as arguments into a -+ // single server option. -+ JoinServerOptions interface{} // func(...grpc.ServerOption) grpc.ServerOption -+ -+ // WithBinaryLogger returns a DialOption that specifies the binary logger -+ // for a ClientConn. -+ // -+ // This is used in the 1.0 release of gcp/observability, and thus must not be -+ // deleted or changed. -+ WithBinaryLogger interface{} // func(binarylog.Logger) grpc.DialOption -+ // BinaryLogger returns a ServerOption that can set the binary logger for a -+ // server. -+ // -+ // This is used in the 1.0 release of gcp/observability, and thus must not be -+ // deleted or changed. -+ BinaryLogger interface{} // func(binarylog.Logger) grpc.ServerOption -+ -+ // NewXDSResolverWithConfigForTesting creates a new xds resolver builder using -+ // the provided xds bootstrap config instead of the global configuration from -+ // the supported environment variables. The resolver.Builder is meant to be -+ // used in conjunction with the grpc.WithResolvers DialOption. -+ // -+ // Testing Only -+ // -+ // This function should ONLY be used for testing and may not work with some -+ // other features, including the CSDS service. -+ NewXDSResolverWithConfigForTesting interface{} // func([]byte) (resolver.Builder, error) -+ -+ // RegisterRLSClusterSpecifierPluginForTesting registers the RLS Cluster -+ // Specifier Plugin for testing purposes, regardless of the XDSRLS environment -+ // variable. -+ // -+ // TODO: Remove this function once the RLS env var is removed. -+ RegisterRLSClusterSpecifierPluginForTesting func() -+ -+ // UnregisterRLSClusterSpecifierPluginForTesting unregisters the RLS Cluster -+ // Specifier Plugin for testing purposes. This is needed because there is no way -+ // to unregister the RLS Cluster Specifier Plugin after registering it solely -+ // for testing purposes using RegisterRLSClusterSpecifierPluginForTesting(). -+ // -+ // TODO: Remove this function once the RLS env var is removed. -+ UnregisterRLSClusterSpecifierPluginForTesting func() -+ -+ // RegisterRBACHTTPFilterForTesting registers the RBAC HTTP Filter for testing -+ // purposes, regardless of the RBAC environment variable. -+ // -+ // TODO: Remove this function once the RBAC env var is removed. -+ RegisterRBACHTTPFilterForTesting func() -+ -+ // UnregisterRBACHTTPFilterForTesting unregisters the RBAC HTTP Filter for -+ // testing purposes. This is needed because there is no way to unregister the -+ // HTTP Filter after registering it solely for testing purposes using -+ // RegisterRBACHTTPFilterForTesting(). -+ // -+ // TODO: Remove this function once the RBAC env var is removed. -+ UnregisterRBACHTTPFilterForTesting func() -+ -+ // ORCAAllowAnyMinReportingInterval is for examples/orca use ONLY. -+ ORCAAllowAnyMinReportingInterval interface{} // func(so *orca.ServiceOptions) -+) -+ -+// HealthChecker defines the signature of the client-side LB channel health checking function. -+// -+// The implementation is expected to create a health checking RPC stream by -+// calling newStream(), watch for the health status of serviceName, and report -+// it's health back by calling setConnectivityState(). -+// -+// The health checking protocol is defined at: -+// https://github.com/grpc/grpc/blob/master/doc/health-checking.md -+type HealthChecker func(ctx context.Context, newStream func(string) (interface{}, error), setConnectivityState func(connectivity.State, error), serviceName string) error -+ -+const ( -+ // CredsBundleModeFallback switches GoogleDefaultCreds to fallback mode. -+ CredsBundleModeFallback = "fallback" -+ // CredsBundleModeBalancer switches GoogleDefaultCreds to grpclb balancer -+ // mode. -+ CredsBundleModeBalancer = "balancer" -+ // CredsBundleModeBackendFromBalancer switches GoogleDefaultCreds to mode -+ // that supports backend returned by grpclb balancer. -+ CredsBundleModeBackendFromBalancer = "backend-from-balancer" -+) -+ -+// RLSLoadBalancingPolicyName is the name of the RLS LB policy. -+// -+// It currently has an experimental suffix which would be removed once -+// end-to-end testing of the policy is completed. -+const RLSLoadBalancingPolicyName = "rls_experimental" -diff --git a/vendor/google.golang.org/grpc/internal/metadata/metadata.go b/vendor/google.golang.org/grpc/internal/metadata/metadata.go -new file mode 100755 -index 0000000..c82e608 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/metadata/metadata.go -@@ -0,0 +1,132 @@ -+/* -+ * -+ * Copyright 2020 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 contains functions to set and get metadata from addresses. -+// -+// This package is experimental. -+package metadata -+ -+import ( -+ "fmt" -+ "strings" -+ -+ "google.golang.org/grpc/metadata" -+ "google.golang.org/grpc/resolver" -+) -+ -+type mdKeyType string -+ -+const mdKey = mdKeyType("grpc.internal.address.metadata") -+ -+type mdValue metadata.MD -+ -+func (m mdValue) Equal(o interface{}) bool { -+ om, ok := o.(mdValue) -+ if !ok { -+ return false -+ } -+ if len(m) != len(om) { -+ return false -+ } -+ for k, v := range m { -+ ov := om[k] -+ if len(ov) != len(v) { -+ return false -+ } -+ for i, ve := range v { -+ if ov[i] != ve { -+ return false -+ } -+ } -+ } -+ return true -+} -+ -+// Get returns the metadata of addr. -+func Get(addr resolver.Address) metadata.MD { -+ attrs := addr.Attributes -+ if attrs == nil { -+ return nil -+ } -+ md, _ := attrs.Value(mdKey).(mdValue) -+ return metadata.MD(md) -+} -+ -+// Set sets (overrides) the metadata in addr. -+// -+// When a SubConn is created with this address, the RPCs sent on it will all -+// have this metadata. -+func Set(addr resolver.Address, md metadata.MD) resolver.Address { -+ addr.Attributes = addr.Attributes.WithValue(mdKey, mdValue(md)) -+ return addr -+} -+ -+// Validate validates every pair in md with ValidatePair. -+func Validate(md metadata.MD) error { -+ for k, vals := range md { -+ if err := ValidatePair(k, vals...); err != nil { -+ return err -+ } -+ } -+ return nil -+} -+ -+// hasNotPrintable return true if msg contains any characters which are not in %x20-%x7E -+func hasNotPrintable(msg string) bool { -+ // for i that saving a conversion if not using for range -+ for i := 0; i < len(msg); i++ { -+ if msg[i] < 0x20 || msg[i] > 0x7E { -+ return true -+ } -+ } -+ return false -+} -+ -+// ValidatePair validate a key-value pair with the following rules (the pseudo-header will be skipped) : -+// -+// - key must contain one or more characters. -+// - the characters in the key must be contained in [0-9 a-z _ - .]. -+// - if the key ends with a "-bin" suffix, no validation of the corresponding value is performed. -+// - the characters in the every value must be printable (in [%x20-%x7E]). -+func ValidatePair(key string, vals ...string) error { -+ // key should not be empty -+ if key == "" { -+ return fmt.Errorf("there is an empty key in the header") -+ } -+ // pseudo-header will be ignored -+ if key[0] == ':' { -+ return nil -+ } -+ // check key, for i that saving a conversion if not using for range -+ for i := 0; i < len(key); i++ { -+ r := key[i] -+ if !(r >= 'a' && r <= 'z') && !(r >= '0' && r <= '9') && r != '.' && r != '-' && r != '_' { -+ return fmt.Errorf("header key %q contains illegal characters not in [0-9a-z-_.]", key) -+ } -+ } -+ if strings.HasSuffix(key, "-bin") { -+ return nil -+ } -+ // check value -+ for _, val := range vals { -+ if hasNotPrintable(val) { -+ return fmt.Errorf("header key %q contains value with non-printable ASCII characters", key) -+ } -+ } -+ return nil -+} -diff --git a/vendor/google.golang.org/grpc/internal/pretty/pretty.go b/vendor/google.golang.org/grpc/internal/pretty/pretty.go -new file mode 100755 -index 0000000..0177af4 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/pretty/pretty.go -@@ -0,0 +1,82 @@ -+/* -+ * -+ * Copyright 2021 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 pretty defines helper functions to pretty-print structs for logging. -+package pretty -+ -+import ( -+ "bytes" -+ "encoding/json" -+ "fmt" -+ -+ "github.com/golang/protobuf/jsonpb" -+ protov1 "github.com/golang/protobuf/proto" -+ "google.golang.org/protobuf/encoding/protojson" -+ protov2 "google.golang.org/protobuf/proto" -+) -+ -+const jsonIndent = " " -+ -+// ToJSON marshals the input into a json string. -+// -+// If marshal fails, it falls back to fmt.Sprintf("%+v"). -+func ToJSON(e interface{}) string { -+ switch ee := e.(type) { -+ case protov1.Message: -+ mm := jsonpb.Marshaler{Indent: jsonIndent} -+ ret, err := mm.MarshalToString(ee) -+ if err != nil { -+ // This may fail for proto.Anys, e.g. for xDS v2, LDS, the v2 -+ // messages are not imported, and this will fail because the message -+ // is not found. -+ return fmt.Sprintf("%+v", ee) -+ } -+ return ret -+ case protov2.Message: -+ mm := protojson.MarshalOptions{ -+ Multiline: true, -+ Indent: jsonIndent, -+ } -+ ret, err := mm.Marshal(ee) -+ if err != nil { -+ // This may fail for proto.Anys, e.g. for xDS v2, LDS, the v2 -+ // messages are not imported, and this will fail because the message -+ // is not found. -+ return fmt.Sprintf("%+v", ee) -+ } -+ return string(ret) -+ default: -+ ret, err := json.MarshalIndent(ee, "", jsonIndent) -+ if err != nil { -+ return fmt.Sprintf("%+v", ee) -+ } -+ return string(ret) -+ } -+} -+ -+// FormatJSON formats the input json bytes with indentation. -+// -+// If Indent fails, it returns the unchanged input as string. -+func FormatJSON(b []byte) string { -+ var out bytes.Buffer -+ err := json.Indent(&out, b, "", jsonIndent) -+ if err != nil { -+ return string(b) -+ } -+ return out.String() -+} -diff --git a/vendor/google.golang.org/grpc/internal/resolver/config_selector.go b/vendor/google.golang.org/grpc/internal/resolver/config_selector.go -new file mode 100755 -index 0000000..c7a18a9 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/resolver/config_selector.go -@@ -0,0 +1,167 @@ -+/* -+ * -+ * Copyright 2020 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 resolver provides internal resolver-related functionality. -+package resolver -+ -+import ( -+ "context" -+ "sync" -+ -+ "google.golang.org/grpc/internal/serviceconfig" -+ "google.golang.org/grpc/metadata" -+ "google.golang.org/grpc/resolver" -+) -+ -+// ConfigSelector controls what configuration to use for every RPC. -+type ConfigSelector interface { -+ // Selects the configuration for the RPC, or terminates it using the error. -+ // This error will be converted by the gRPC library to a status error with -+ // code UNKNOWN if it is not returned as a status error. -+ SelectConfig(RPCInfo) (*RPCConfig, error) -+} -+ -+// RPCInfo contains RPC information needed by a ConfigSelector. -+type RPCInfo struct { -+ // Context is the user's context for the RPC and contains headers and -+ // application timeout. It is passed for interception purposes and for -+ // efficiency reasons. SelectConfig should not be blocking. -+ Context context.Context -+ Method string // i.e. "/Service/Method" -+} -+ -+// RPCConfig describes the configuration to use for each RPC. -+type RPCConfig struct { -+ // The context to use for the remainder of the RPC; can pass info to LB -+ // policy or affect timeout or metadata. -+ Context context.Context -+ MethodConfig serviceconfig.MethodConfig // configuration to use for this RPC -+ OnCommitted func() // Called when the RPC has been committed (retries no longer possible) -+ Interceptor ClientInterceptor -+} -+ -+// ClientStream is the same as grpc.ClientStream, but defined here for circular -+// dependency reasons. -+type ClientStream interface { -+ // Header returns the header metadata received from the server if there -+ // is any. It blocks if the metadata is not ready to read. -+ Header() (metadata.MD, error) -+ // Trailer returns the trailer metadata from the server, if there is any. -+ // It must only be called after stream.CloseAndRecv has returned, or -+ // stream.Recv has returned a non-nil error (including io.EOF). -+ Trailer() metadata.MD -+ // CloseSend closes the send direction of the stream. It closes the stream -+ // when non-nil error is met. It is also not safe to call CloseSend -+ // concurrently with SendMsg. -+ CloseSend() error -+ // Context returns the context for this stream. -+ // -+ // It should not be called until after Header or RecvMsg has returned. Once -+ // called, subsequent client-side retries are disabled. -+ Context() context.Context -+ // SendMsg is generally called by generated code. On error, SendMsg aborts -+ // the stream. If the error was generated by the client, the status is -+ // returned directly; otherwise, io.EOF is returned and the status of -+ // the stream may be discovered using RecvMsg. -+ // -+ // SendMsg blocks until: -+ // - There is sufficient flow control to schedule m with the transport, or -+ // - The stream is done, or -+ // - The stream breaks. -+ // -+ // SendMsg does not wait until the message is received by the server. An -+ // untimely stream closure may result in lost messages. To ensure delivery, -+ // users should ensure the RPC completed successfully using RecvMsg. -+ // -+ // It is safe to have a goroutine calling SendMsg and another goroutine -+ // calling RecvMsg on the same stream at the same time, but it is not safe -+ // to call SendMsg on the same stream in different goroutines. It is also -+ // not safe to call CloseSend concurrently with SendMsg. -+ SendMsg(m interface{}) error -+ // RecvMsg blocks until it receives a message into m or the stream is -+ // done. It returns io.EOF when the stream completes successfully. On -+ // any other error, the stream is aborted and the error contains the RPC -+ // status. -+ // -+ // It is safe to have a goroutine calling SendMsg and another goroutine -+ // calling RecvMsg on the same stream at the same time, but it is not -+ // safe to call RecvMsg on the same stream in different goroutines. -+ RecvMsg(m interface{}) error -+} -+ -+// ClientInterceptor is an interceptor for gRPC client streams. -+type ClientInterceptor interface { -+ // NewStream produces a ClientStream for an RPC which may optionally use -+ // the provided function to produce a stream for delegation. Note: -+ // RPCInfo.Context should not be used (will be nil). -+ // -+ // done is invoked when the RPC is finished using its connection, or could -+ // not be assigned a connection. RPC operations may still occur on -+ // ClientStream after done is called, since the interceptor is invoked by -+ // application-layer operations. done must never be nil when called. -+ NewStream(ctx context.Context, ri RPCInfo, done func(), newStream func(ctx context.Context, done func()) (ClientStream, error)) (ClientStream, error) -+} -+ -+// ServerInterceptor is an interceptor for incoming RPC's on gRPC server side. -+type ServerInterceptor interface { -+ // AllowRPC checks if an incoming RPC is allowed to proceed based on -+ // information about connection RPC was received on, and HTTP Headers. This -+ // information will be piped into context. -+ AllowRPC(ctx context.Context) error // TODO: Make this a real interceptor for filters such as rate limiting. -+} -+ -+type csKeyType string -+ -+const csKey = csKeyType("grpc.internal.resolver.configSelector") -+ -+// SetConfigSelector sets the config selector in state and returns the new -+// state. -+func SetConfigSelector(state resolver.State, cs ConfigSelector) resolver.State { -+ state.Attributes = state.Attributes.WithValue(csKey, cs) -+ return state -+} -+ -+// GetConfigSelector retrieves the config selector from state, if present, and -+// returns it or nil if absent. -+func GetConfigSelector(state resolver.State) ConfigSelector { -+ cs, _ := state.Attributes.Value(csKey).(ConfigSelector) -+ return cs -+} -+ -+// SafeConfigSelector allows for safe switching of ConfigSelector -+// implementations such that previous values are guaranteed to not be in use -+// when UpdateConfigSelector returns. -+type SafeConfigSelector struct { -+ mu sync.RWMutex -+ cs ConfigSelector -+} -+ -+// UpdateConfigSelector swaps to the provided ConfigSelector and blocks until -+// all uses of the previous ConfigSelector have completed. -+func (scs *SafeConfigSelector) UpdateConfigSelector(cs ConfigSelector) { -+ scs.mu.Lock() -+ defer scs.mu.Unlock() -+ scs.cs = cs -+} -+ -+// SelectConfig defers to the current ConfigSelector in scs. -+func (scs *SafeConfigSelector) SelectConfig(r RPCInfo) (*RPCConfig, error) { -+ scs.mu.RLock() -+ defer scs.mu.RUnlock() -+ return scs.cs.SelectConfig(r) -+} -diff --git a/vendor/google.golang.org/grpc/internal/resolver/dns/dns_resolver.go b/vendor/google.golang.org/grpc/internal/resolver/dns/dns_resolver.go -new file mode 100755 -index 0000000..99e1e5b ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/resolver/dns/dns_resolver.go -@@ -0,0 +1,470 @@ -+/* -+ * -+ * 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 dns implements a dns resolver to be installed as the default resolver -+// in grpc. -+package dns -+ -+import ( -+ "context" -+ "encoding/json" -+ "errors" -+ "fmt" -+ "net" -+ "os" -+ "strconv" -+ "strings" -+ "sync" -+ "time" -+ -+ grpclbstate "google.golang.org/grpc/balancer/grpclb/state" -+ "google.golang.org/grpc/grpclog" -+ "google.golang.org/grpc/internal/backoff" -+ "google.golang.org/grpc/internal/envconfig" -+ "google.golang.org/grpc/internal/grpcrand" -+ "google.golang.org/grpc/resolver" -+ "google.golang.org/grpc/serviceconfig" -+) -+ -+// EnableSRVLookups controls whether the DNS resolver attempts to fetch gRPCLB -+// addresses from SRV records. Must not be changed after init time. -+var EnableSRVLookups = false -+ -+var logger = grpclog.Component("dns") -+ -+// Globals to stub out in tests. TODO: Perhaps these two can be combined into a -+// single variable for testing the resolver? -+var ( -+ newTimer = time.NewTimer -+ newTimerDNSResRate = time.NewTimer -+) -+ -+func init() { -+ resolver.Register(NewBuilder()) -+} -+ -+const ( -+ defaultPort = "443" -+ defaultDNSSvrPort = "53" -+ golang = "GO" -+ // txtPrefix is the prefix string to be prepended to the host name for txt -+ // record lookup. -+ txtPrefix = "_grpc_config." -+ // In DNS, service config is encoded in a TXT record via the mechanism -+ // described in RFC-1464 using the attribute name grpc_config. -+ txtAttribute = "grpc_config=" -+) -+ -+var ( -+ errMissingAddr = errors.New("dns resolver: missing address") -+ -+ // Addresses ending with a colon that is supposed to be the separator -+ // between host and port is not allowed. E.g. "::" is a valid address as -+ // it is an IPv6 address (host only) and "[::]:" is invalid as it ends with -+ // a colon as the host and port separator -+ errEndsWithColon = errors.New("dns resolver: missing port after port-separator colon") -+) -+ -+var ( -+ defaultResolver netResolver = net.DefaultResolver -+ // To prevent excessive re-resolution, we enforce a rate limit on DNS -+ // resolution requests. -+ minDNSResRate = 30 * time.Second -+) -+ -+var addressDialer = func(address string) func(context.Context, string, string) (net.Conn, error) { -+ return func(ctx context.Context, network, _ string) (net.Conn, error) { -+ var dialer net.Dialer -+ return dialer.DialContext(ctx, network, address) -+ } -+} -+ -+var newNetResolver = func(authority string) (netResolver, error) { -+ host, port, err := parseTarget(authority, defaultDNSSvrPort) -+ if err != nil { -+ return nil, err -+ } -+ -+ authorityWithPort := net.JoinHostPort(host, port) -+ -+ return &net.Resolver{ -+ PreferGo: true, -+ Dial: addressDialer(authorityWithPort), -+ }, nil -+} -+ -+// NewBuilder creates a dnsBuilder which is used to factory DNS resolvers. -+func NewBuilder() resolver.Builder { -+ return &dnsBuilder{} -+} -+ -+type dnsBuilder struct{} -+ -+// Build creates and starts a DNS resolver that watches the name resolution of -+// the target. -+func (b *dnsBuilder) Build(target resolver.Target, cc resolver.ClientConn, opts resolver.BuildOptions) (resolver.Resolver, error) { -+ host, port, err := parseTarget(target.Endpoint(), defaultPort) -+ if err != nil { -+ return nil, err -+ } -+ -+ // IP address. -+ if ipAddr, ok := formatIP(host); ok { -+ addr := []resolver.Address{{Addr: ipAddr + ":" + port}} -+ cc.UpdateState(resolver.State{Addresses: addr}) -+ return deadResolver{}, nil -+ } -+ -+ // DNS address (non-IP). -+ ctx, cancel := context.WithCancel(context.Background()) -+ d := &dnsResolver{ -+ host: host, -+ port: port, -+ ctx: ctx, -+ cancel: cancel, -+ cc: cc, -+ rn: make(chan struct{}, 1), -+ disableServiceConfig: opts.DisableServiceConfig, -+ } -+ -+ if target.URL.Host == "" { -+ d.resolver = defaultResolver -+ } else { -+ d.resolver, err = newNetResolver(target.URL.Host) -+ if err != nil { -+ return nil, err -+ } -+ } -+ -+ d.wg.Add(1) -+ go d.watcher() -+ return d, nil -+} -+ -+// Scheme returns the naming scheme of this resolver builder, which is "dns". -+func (b *dnsBuilder) Scheme() string { -+ return "dns" -+} -+ -+type netResolver interface { -+ LookupHost(ctx context.Context, host string) (addrs []string, err error) -+ LookupSRV(ctx context.Context, service, proto, name string) (cname string, addrs []*net.SRV, err error) -+ LookupTXT(ctx context.Context, name string) (txts []string, err error) -+} -+ -+// deadResolver is a resolver that does nothing. -+type deadResolver struct{} -+ -+func (deadResolver) ResolveNow(resolver.ResolveNowOptions) {} -+ -+func (deadResolver) Close() {} -+ -+// dnsResolver watches for the name resolution update for a non-IP target. -+type dnsResolver struct { -+ host string -+ port string -+ resolver netResolver -+ ctx context.Context -+ cancel context.CancelFunc -+ cc resolver.ClientConn -+ // rn channel is used by ResolveNow() to force an immediate resolution of the -+ // target. -+ rn chan struct{} -+ // wg is used to enforce Close() to return after the watcher() goroutine has -+ // finished. Otherwise, data race will be possible. [Race Example] in -+ // dns_resolver_test we replace the real lookup functions with mocked ones to -+ // facilitate testing. If Close() doesn't wait for watcher() goroutine -+ // finishes, race detector sometimes will warns lookup (READ the lookup -+ // function pointers) inside watcher() goroutine has data race with -+ // replaceNetFunc (WRITE the lookup function pointers). -+ wg sync.WaitGroup -+ disableServiceConfig bool -+} -+ -+// ResolveNow invoke an immediate resolution of the target that this -+// dnsResolver watches. -+func (d *dnsResolver) ResolveNow(resolver.ResolveNowOptions) { -+ select { -+ case d.rn <- struct{}{}: -+ default: -+ } -+} -+ -+// Close closes the dnsResolver. -+func (d *dnsResolver) Close() { -+ d.cancel() -+ d.wg.Wait() -+} -+ -+func (d *dnsResolver) watcher() { -+ defer d.wg.Done() -+ backoffIndex := 1 -+ for { -+ state, err := d.lookup() -+ if err != nil { -+ // Report error to the underlying grpc.ClientConn. -+ d.cc.ReportError(err) -+ } else { -+ err = d.cc.UpdateState(*state) -+ } -+ -+ var timer *time.Timer -+ if err == nil { -+ // Success resolving, wait for the next ResolveNow. However, also wait 30 -+ // seconds at the very least to prevent constantly re-resolving. -+ backoffIndex = 1 -+ timer = newTimerDNSResRate(minDNSResRate) -+ select { -+ case <-d.ctx.Done(): -+ timer.Stop() -+ return -+ case <-d.rn: -+ } -+ } else { -+ // Poll on an error found in DNS Resolver or an error received from -+ // ClientConn. -+ timer = newTimer(backoff.DefaultExponential.Backoff(backoffIndex)) -+ backoffIndex++ -+ } -+ select { -+ case <-d.ctx.Done(): -+ timer.Stop() -+ return -+ case <-timer.C: -+ } -+ } -+} -+ -+func (d *dnsResolver) lookupSRV() ([]resolver.Address, error) { -+ if !EnableSRVLookups { -+ return nil, nil -+ } -+ var newAddrs []resolver.Address -+ _, srvs, err := d.resolver.LookupSRV(d.ctx, "grpclb", "tcp", d.host) -+ if err != nil { -+ err = handleDNSError(err, "SRV") // may become nil -+ return nil, err -+ } -+ for _, s := range srvs { -+ lbAddrs, err := d.resolver.LookupHost(d.ctx, s.Target) -+ if err != nil { -+ err = handleDNSError(err, "A") // may become nil -+ if err == nil { -+ // If there are other SRV records, look them up and ignore this -+ // one that does not exist. -+ continue -+ } -+ return nil, err -+ } -+ for _, a := range lbAddrs { -+ ip, ok := formatIP(a) -+ if !ok { -+ return nil, fmt.Errorf("dns: error parsing A record IP address %v", a) -+ } -+ addr := ip + ":" + strconv.Itoa(int(s.Port)) -+ newAddrs = append(newAddrs, resolver.Address{Addr: addr, ServerName: s.Target}) -+ } -+ } -+ return newAddrs, nil -+} -+ -+func handleDNSError(err error, lookupType string) error { -+ dnsErr, ok := err.(*net.DNSError) -+ if ok && !dnsErr.IsTimeout && !dnsErr.IsTemporary { -+ // Timeouts and temporary errors should be communicated to gRPC to -+ // attempt another DNS query (with backoff). Other errors should be -+ // suppressed (they may represent the absence of a TXT record). -+ return nil -+ } -+ if err != nil { -+ err = fmt.Errorf("dns: %v record lookup error: %v", lookupType, err) -+ logger.Info(err) -+ } -+ return err -+} -+ -+func (d *dnsResolver) lookupTXT() *serviceconfig.ParseResult { -+ ss, err := d.resolver.LookupTXT(d.ctx, txtPrefix+d.host) -+ if err != nil { -+ if envconfig.TXTErrIgnore { -+ return nil -+ } -+ if err = handleDNSError(err, "TXT"); err != nil { -+ return &serviceconfig.ParseResult{Err: err} -+ } -+ return nil -+ } -+ var res string -+ for _, s := range ss { -+ res += s -+ } -+ -+ // TXT record must have "grpc_config=" attribute in order to be used as -+ // service config. -+ if !strings.HasPrefix(res, txtAttribute) { -+ logger.Warningf("dns: TXT record %v missing %v attribute", res, txtAttribute) -+ // This is not an error; it is the equivalent of not having a service -+ // config. -+ return nil -+ } -+ sc := canaryingSC(strings.TrimPrefix(res, txtAttribute)) -+ return d.cc.ParseServiceConfig(sc) -+} -+ -+func (d *dnsResolver) lookupHost() ([]resolver.Address, error) { -+ addrs, err := d.resolver.LookupHost(d.ctx, d.host) -+ if err != nil { -+ err = handleDNSError(err, "A") -+ return nil, err -+ } -+ newAddrs := make([]resolver.Address, 0, len(addrs)) -+ for _, a := range addrs { -+ ip, ok := formatIP(a) -+ if !ok { -+ return nil, fmt.Errorf("dns: error parsing A record IP address %v", a) -+ } -+ addr := ip + ":" + d.port -+ newAddrs = append(newAddrs, resolver.Address{Addr: addr}) -+ } -+ return newAddrs, nil -+} -+ -+func (d *dnsResolver) lookup() (*resolver.State, error) { -+ srv, srvErr := d.lookupSRV() -+ addrs, hostErr := d.lookupHost() -+ if hostErr != nil && (srvErr != nil || len(srv) == 0) { -+ return nil, hostErr -+ } -+ -+ state := resolver.State{Addresses: addrs} -+ if len(srv) > 0 { -+ state = grpclbstate.Set(state, &grpclbstate.State{BalancerAddresses: srv}) -+ } -+ if !d.disableServiceConfig { -+ state.ServiceConfig = d.lookupTXT() -+ } -+ return &state, nil -+} -+ -+// formatIP returns ok = false if addr is not a valid textual representation of -+// an IP address. If addr is an IPv4 address, return the addr and ok = true. -+// If addr is an IPv6 address, return the addr enclosed in square brackets and -+// ok = true. -+func formatIP(addr string) (addrIP string, ok bool) { -+ ip := net.ParseIP(addr) -+ if ip == nil { -+ return "", false -+ } -+ if ip.To4() != nil { -+ return addr, true -+ } -+ return "[" + addr + "]", true -+} -+ -+// parseTarget takes the user input target string and default port, returns -+// formatted host and port info. If target doesn't specify a port, set the port -+// to be the defaultPort. If target is in IPv6 format and host-name is enclosed -+// in square brackets, brackets are stripped when setting the host. -+// examples: -+// target: "www.google.com" defaultPort: "443" returns host: "www.google.com", port: "443" -+// target: "ipv4-host:80" defaultPort: "443" returns host: "ipv4-host", port: "80" -+// target: "[ipv6-host]" defaultPort: "443" returns host: "ipv6-host", port: "443" -+// target: ":80" defaultPort: "443" returns host: "localhost", port: "80" -+func parseTarget(target, defaultPort string) (host, port string, err error) { -+ if target == "" { -+ return "", "", errMissingAddr -+ } -+ if ip := net.ParseIP(target); ip != nil { -+ // target is an IPv4 or IPv6(without brackets) address -+ return target, defaultPort, nil -+ } -+ if host, port, err = net.SplitHostPort(target); err == nil { -+ if port == "" { -+ // If the port field is empty (target ends with colon), e.g. "[::1]:", -+ // this is an error. -+ return "", "", errEndsWithColon -+ } -+ // target has port, i.e ipv4-host:port, [ipv6-host]:port, host-name:port -+ if host == "" { -+ // Keep consistent with net.Dial(): If the host is empty, as in ":80", -+ // the local system is assumed. -+ host = "localhost" -+ } -+ return host, port, nil -+ } -+ if host, port, err = net.SplitHostPort(target + ":" + defaultPort); err == nil { -+ // target doesn't have port -+ return host, port, nil -+ } -+ return "", "", fmt.Errorf("invalid target address %v, error info: %v", target, err) -+} -+ -+type rawChoice struct { -+ ClientLanguage *[]string `json:"clientLanguage,omitempty"` -+ Percentage *int `json:"percentage,omitempty"` -+ ClientHostName *[]string `json:"clientHostName,omitempty"` -+ ServiceConfig *json.RawMessage `json:"serviceConfig,omitempty"` -+} -+ -+func containsString(a *[]string, b string) bool { -+ if a == nil { -+ return true -+ } -+ for _, c := range *a { -+ if c == b { -+ return true -+ } -+ } -+ return false -+} -+ -+func chosenByPercentage(a *int) bool { -+ if a == nil { -+ return true -+ } -+ return grpcrand.Intn(100)+1 <= *a -+} -+ -+func canaryingSC(js string) string { -+ if js == "" { -+ return "" -+ } -+ var rcs []rawChoice -+ err := json.Unmarshal([]byte(js), &rcs) -+ if err != nil { -+ logger.Warningf("dns: error parsing service config json: %v", err) -+ return "" -+ } -+ cliHostname, err := os.Hostname() -+ if err != nil { -+ logger.Warningf("dns: error getting client hostname: %v", err) -+ return "" -+ } -+ var sc string -+ for _, c := range rcs { -+ if !containsString(c.ClientLanguage, golang) || -+ !chosenByPercentage(c.Percentage) || -+ !containsString(c.ClientHostName, cliHostname) || -+ c.ServiceConfig == nil { -+ continue -+ } -+ sc = string(*c.ServiceConfig) -+ break -+ } -+ return sc -+} -diff --git a/vendor/google.golang.org/grpc/internal/resolver/passthrough/passthrough.go b/vendor/google.golang.org/grpc/internal/resolver/passthrough/passthrough.go -new file mode 100755 -index 0000000..afac565 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/resolver/passthrough/passthrough.go -@@ -0,0 +1,64 @@ -+/* -+ * -+ * 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 passthrough implements a pass-through resolver. It sends the target -+// name without scheme back to gRPC as resolved address. -+package passthrough -+ -+import ( -+ "errors" -+ -+ "google.golang.org/grpc/resolver" -+) -+ -+const scheme = "passthrough" -+ -+type passthroughBuilder struct{} -+ -+func (*passthroughBuilder) Build(target resolver.Target, cc resolver.ClientConn, opts resolver.BuildOptions) (resolver.Resolver, error) { -+ if target.Endpoint() == "" && opts.Dialer == nil { -+ return nil, errors.New("passthrough: received empty target in Build()") -+ } -+ r := &passthroughResolver{ -+ target: target, -+ cc: cc, -+ } -+ r.start() -+ return r, nil -+} -+ -+func (*passthroughBuilder) Scheme() string { -+ return scheme -+} -+ -+type passthroughResolver struct { -+ target resolver.Target -+ cc resolver.ClientConn -+} -+ -+func (r *passthroughResolver) start() { -+ r.cc.UpdateState(resolver.State{Addresses: []resolver.Address{{Addr: r.target.Endpoint()}}}) -+} -+ -+func (*passthroughResolver) ResolveNow(o resolver.ResolveNowOptions) {} -+ -+func (*passthroughResolver) Close() {} -+ -+func init() { -+ resolver.Register(&passthroughBuilder{}) -+} -diff --git a/vendor/google.golang.org/grpc/internal/resolver/unix/unix.go b/vendor/google.golang.org/grpc/internal/resolver/unix/unix.go -new file mode 100755 -index 0000000..1609116 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/resolver/unix/unix.go -@@ -0,0 +1,74 @@ -+/* -+ * -+ * Copyright 2020 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 unix implements a resolver for unix targets. -+package unix -+ -+import ( -+ "fmt" -+ -+ "google.golang.org/grpc/internal/transport/networktype" -+ "google.golang.org/grpc/resolver" -+) -+ -+const unixScheme = "unix" -+const unixAbstractScheme = "unix-abstract" -+ -+type builder struct { -+ scheme string -+} -+ -+func (b *builder) Build(target resolver.Target, cc resolver.ClientConn, _ resolver.BuildOptions) (resolver.Resolver, error) { -+ if target.URL.Host != "" { -+ return nil, fmt.Errorf("invalid (non-empty) authority: %v", target.URL.Host) -+ } -+ -+ // gRPC was parsing the dial target manually before PR #4817, and we -+ // switched to using url.Parse() in that PR. To avoid breaking existing -+ // resolver implementations we ended up stripping the leading "/" from the -+ // endpoint. This obviously does not work for the "unix" scheme. Hence we -+ // end up using the parsed URL instead. -+ endpoint := target.URL.Path -+ if endpoint == "" { -+ endpoint = target.URL.Opaque -+ } -+ addr := resolver.Address{Addr: endpoint} -+ if b.scheme == unixAbstractScheme { -+ // We can not prepend \0 as c++ gRPC does, as in Golang '@' is used to signify we do -+ // not want trailing \0 in address. -+ addr.Addr = "@" + addr.Addr -+ } -+ cc.UpdateState(resolver.State{Addresses: []resolver.Address{networktype.Set(addr, "unix")}}) -+ return &nopResolver{}, nil -+} -+ -+func (b *builder) Scheme() string { -+ return b.scheme -+} -+ -+type nopResolver struct { -+} -+ -+func (*nopResolver) ResolveNow(resolver.ResolveNowOptions) {} -+ -+func (*nopResolver) Close() {} -+ -+func init() { -+ resolver.Register(&builder{scheme: unixScheme}) -+ resolver.Register(&builder{scheme: unixAbstractScheme}) -+} -diff --git a/vendor/google.golang.org/grpc/internal/serviceconfig/duration.go b/vendor/google.golang.org/grpc/internal/serviceconfig/duration.go -new file mode 100755 -index 0000000..11d82af ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/serviceconfig/duration.go -@@ -0,0 +1,130 @@ -+/* -+ * -+ * Copyright 2023 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 serviceconfig -+ -+import ( -+ "encoding/json" -+ "fmt" -+ "math" -+ "strconv" -+ "strings" -+ "time" -+) -+ -+// Duration defines JSON marshal and unmarshal methods to conform to the -+// protobuf JSON spec defined [here]. -+// -+// [here]: https://protobuf.dev/reference/protobuf/google.protobuf/#duration -+type Duration time.Duration -+ -+func (d Duration) String() string { -+ return fmt.Sprint(time.Duration(d)) -+} -+ -+// MarshalJSON converts from d to a JSON string output. -+func (d Duration) MarshalJSON() ([]byte, error) { -+ ns := time.Duration(d).Nanoseconds() -+ sec := ns / int64(time.Second) -+ ns = ns % int64(time.Second) -+ -+ var sign string -+ if sec < 0 || ns < 0 { -+ sign, sec, ns = "-", -1*sec, -1*ns -+ } -+ -+ // Generated output always contains 0, 3, 6, or 9 fractional digits, -+ // depending on required precision. -+ str := fmt.Sprintf("%s%d.%09d", sign, sec, ns) -+ str = strings.TrimSuffix(str, "000") -+ str = strings.TrimSuffix(str, "000") -+ str = strings.TrimSuffix(str, ".000") -+ return []byte(fmt.Sprintf("\"%ss\"", str)), nil -+} -+ -+// UnmarshalJSON unmarshals b as a duration JSON string into d. -+func (d *Duration) UnmarshalJSON(b []byte) error { -+ var s string -+ if err := json.Unmarshal(b, &s); err != nil { -+ return err -+ } -+ if !strings.HasSuffix(s, "s") { -+ return fmt.Errorf("malformed duration %q: missing seconds unit", s) -+ } -+ neg := false -+ if s[0] == '-' { -+ neg = true -+ s = s[1:] -+ } -+ ss := strings.SplitN(s[:len(s)-1], ".", 3) -+ if len(ss) > 2 { -+ return fmt.Errorf("malformed duration %q: too many decimals", s) -+ } -+ // hasDigits is set if either the whole or fractional part of the number is -+ // present, since both are optional but one is required. -+ hasDigits := false -+ var sec, ns int64 -+ if len(ss[0]) > 0 { -+ var err error -+ if sec, err = strconv.ParseInt(ss[0], 10, 64); err != nil { -+ return fmt.Errorf("malformed duration %q: %v", s, err) -+ } -+ // Maximum seconds value per the durationpb spec. -+ const maxProtoSeconds = 315_576_000_000 -+ if sec > maxProtoSeconds { -+ return fmt.Errorf("out of range: %q", s) -+ } -+ hasDigits = true -+ } -+ if len(ss) == 2 && len(ss[1]) > 0 { -+ if len(ss[1]) > 9 { -+ return fmt.Errorf("malformed duration %q: too many digits after decimal", s) -+ } -+ var err error -+ if ns, err = strconv.ParseInt(ss[1], 10, 64); err != nil { -+ return fmt.Errorf("malformed duration %q: %v", s, err) -+ } -+ for i := 9; i > len(ss[1]); i-- { -+ ns *= 10 -+ } -+ hasDigits = true -+ } -+ if !hasDigits { -+ return fmt.Errorf("malformed duration %q: contains no numbers", s) -+ } -+ -+ if neg { -+ sec *= -1 -+ ns *= -1 -+ } -+ -+ // Maximum/minimum seconds/nanoseconds representable by Go's time.Duration. -+ const maxSeconds = math.MaxInt64 / int64(time.Second) -+ const maxNanosAtMaxSeconds = math.MaxInt64 % int64(time.Second) -+ const minSeconds = math.MinInt64 / int64(time.Second) -+ const minNanosAtMinSeconds = math.MinInt64 % int64(time.Second) -+ -+ if sec > maxSeconds || (sec == maxSeconds && ns >= maxNanosAtMaxSeconds) { -+ *d = Duration(math.MaxInt64) -+ } else if sec < minSeconds || (sec == minSeconds && ns <= minNanosAtMinSeconds) { -+ *d = Duration(math.MinInt64) -+ } else { -+ *d = Duration(sec*int64(time.Second) + ns) -+ } -+ return nil -+} -diff --git a/vendor/google.golang.org/grpc/internal/serviceconfig/serviceconfig.go b/vendor/google.golang.org/grpc/internal/serviceconfig/serviceconfig.go -new file mode 100755 -index 0000000..51e733e ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/serviceconfig/serviceconfig.go -@@ -0,0 +1,180 @@ -+/* -+ * -+ * Copyright 2020 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 serviceconfig contains utility functions to parse service config. -+package serviceconfig -+ -+import ( -+ "encoding/json" -+ "fmt" -+ "time" -+ -+ "google.golang.org/grpc/balancer" -+ "google.golang.org/grpc/codes" -+ "google.golang.org/grpc/grpclog" -+ externalserviceconfig "google.golang.org/grpc/serviceconfig" -+) -+ -+var logger = grpclog.Component("core") -+ -+// BalancerConfig wraps the name and config associated with one load balancing -+// policy. It corresponds to a single entry of the loadBalancingConfig field -+// from ServiceConfig. -+// -+// It implements the json.Unmarshaler interface. -+// -+// https://github.com/grpc/grpc-proto/blob/54713b1e8bc6ed2d4f25fb4dff527842150b91b2/grpc/service_config/service_config.proto#L247 -+type BalancerConfig struct { -+ Name string -+ Config externalserviceconfig.LoadBalancingConfig -+} -+ -+type intermediateBalancerConfig []map[string]json.RawMessage -+ -+// MarshalJSON implements the json.Marshaler interface. -+// -+// It marshals the balancer and config into a length-1 slice -+// ([]map[string]config). -+func (bc *BalancerConfig) MarshalJSON() ([]byte, error) { -+ if bc.Config == nil { -+ // If config is nil, return empty config `{}`. -+ return []byte(fmt.Sprintf(`[{%q: %v}]`, bc.Name, "{}")), nil -+ } -+ c, err := json.Marshal(bc.Config) -+ if err != nil { -+ return nil, err -+ } -+ return []byte(fmt.Sprintf(`[{%q: %s}]`, bc.Name, c)), nil -+} -+ -+// UnmarshalJSON implements the json.Unmarshaler interface. -+// -+// ServiceConfig contains a list of loadBalancingConfigs, each with a name and -+// config. This method iterates through that list in order, and stops at the -+// first policy that is supported. -+// - If the config for the first supported policy is invalid, the whole service -+// config is invalid. -+// - If the list doesn't contain any supported policy, the whole service config -+// is invalid. -+func (bc *BalancerConfig) UnmarshalJSON(b []byte) error { -+ var ir intermediateBalancerConfig -+ err := json.Unmarshal(b, &ir) -+ if err != nil { -+ return err -+ } -+ -+ var names []string -+ for i, lbcfg := range ir { -+ if len(lbcfg) != 1 { -+ return fmt.Errorf("invalid loadBalancingConfig: entry %v does not contain exactly 1 policy/config pair: %q", i, lbcfg) -+ } -+ -+ var ( -+ name string -+ jsonCfg json.RawMessage -+ ) -+ // Get the key:value pair from the map. We have already made sure that -+ // the map contains a single entry. -+ for name, jsonCfg = range lbcfg { -+ } -+ -+ names = append(names, name) -+ builder := balancer.Get(name) -+ if builder == nil { -+ // If the balancer is not registered, move on to the next config. -+ // This is not an error. -+ continue -+ } -+ bc.Name = name -+ -+ parser, ok := builder.(balancer.ConfigParser) -+ if !ok { -+ if string(jsonCfg) != "{}" { -+ logger.Warningf("non-empty balancer configuration %q, but balancer does not implement ParseConfig", string(jsonCfg)) -+ } -+ // Stop at this, though the builder doesn't support parsing config. -+ return nil -+ } -+ -+ cfg, err := parser.ParseConfig(jsonCfg) -+ if err != nil { -+ return fmt.Errorf("error parsing loadBalancingConfig for policy %q: %v", name, err) -+ } -+ bc.Config = cfg -+ return nil -+ } -+ // This is reached when the for loop iterates over all entries, but didn't -+ // return. This means we had a loadBalancingConfig slice but did not -+ // encounter a registered policy. The config is considered invalid in this -+ // case. -+ return fmt.Errorf("invalid loadBalancingConfig: no supported policies found in %v", names) -+} -+ -+// MethodConfig defines the configuration recommended by the service providers for a -+// particular method. -+type MethodConfig struct { -+ // WaitForReady indicates whether RPCs sent to this method should wait until -+ // the connection is ready by default (!failfast). The value specified via the -+ // gRPC client API will override the value set here. -+ WaitForReady *bool -+ // Timeout is the default timeout for RPCs sent to this method. The actual -+ // deadline used will be the minimum of the value specified here and the value -+ // set by the application via the gRPC client API. If either one is not set, -+ // then the other will be used. If neither is set, then the RPC has no deadline. -+ Timeout *time.Duration -+ // MaxReqSize is the maximum allowed payload size for an individual request in a -+ // stream (client->server) in bytes. The size which is measured is the serialized -+ // payload after per-message compression (but before stream compression) in bytes. -+ // The actual value used is the minimum of the value specified here and the value set -+ // by the application via the gRPC client API. If either one is not set, then the other -+ // will be used. If neither is set, then the built-in default is used. -+ MaxReqSize *int -+ // MaxRespSize is the maximum allowed payload size for an individual response in a -+ // stream (server->client) in bytes. -+ MaxRespSize *int -+ // RetryPolicy configures retry options for the method. -+ RetryPolicy *RetryPolicy -+} -+ -+// RetryPolicy defines the go-native version of the retry policy defined by the -+// service config here: -+// https://github.com/grpc/proposal/blob/master/A6-client-retries.md#integration-with-service-config -+type RetryPolicy struct { -+ // MaxAttempts is the maximum number of attempts, including the original RPC. -+ // -+ // This field is required and must be two or greater. -+ MaxAttempts int -+ -+ // Exponential backoff parameters. The initial retry attempt will occur at -+ // random(0, initialBackoff). In general, the nth attempt will occur at -+ // random(0, -+ // min(initialBackoff*backoffMultiplier**(n-1), maxBackoff)). -+ // -+ // These fields are required and must be greater than zero. -+ InitialBackoff time.Duration -+ MaxBackoff time.Duration -+ BackoffMultiplier float64 -+ -+ // The set of status codes which may be retried. -+ // -+ // Status codes are specified as strings, e.g., "UNAVAILABLE". -+ // -+ // This field is required and must be non-empty. -+ // Note: a set is used to store this for easy lookup. -+ RetryableStatusCodes map[codes.Code]bool -+} -diff --git a/vendor/google.golang.org/grpc/internal/status/status.go b/vendor/google.golang.org/grpc/internal/status/status.go -new file mode 100755 -index 0000000..b0ead4f ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/status/status.go -@@ -0,0 +1,176 @@ -+/* -+ * -+ * Copyright 2020 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 implements errors returned by gRPC. These errors are -+// serialized and transmitted on the wire between server and client, and allow -+// for additional data to be transmitted via the Details field in the status -+// proto. gRPC service handlers should return an error created by this -+// package, and gRPC clients should expect a corresponding error to be -+// returned from the RPC call. -+// -+// This package upholds the invariants that a non-nil error may not -+// contain an OK code, and an OK code must result in a nil error. -+package status -+ -+import ( -+ "errors" -+ "fmt" -+ -+ "github.com/golang/protobuf/proto" -+ "github.com/golang/protobuf/ptypes" -+ spb "google.golang.org/genproto/googleapis/rpc/status" -+ "google.golang.org/grpc/codes" -+) -+ -+// Status represents an RPC status code, message, and details. It is immutable -+// and should be created with New, Newf, or FromProto. -+type Status struct { -+ s *spb.Status -+} -+ -+// New returns a Status representing c and msg. -+func New(c codes.Code, msg string) *Status { -+ return &Status{s: &spb.Status{Code: int32(c), Message: msg}} -+} -+ -+// Newf returns New(c, fmt.Sprintf(format, a...)). -+func Newf(c codes.Code, format string, a ...interface{}) *Status { -+ return New(c, fmt.Sprintf(format, a...)) -+} -+ -+// FromProto returns a Status representing s. -+func FromProto(s *spb.Status) *Status { -+ return &Status{s: proto.Clone(s).(*spb.Status)} -+} -+ -+// Err returns an error representing c and msg. If c is OK, returns nil. -+func Err(c codes.Code, msg string) error { -+ return New(c, msg).Err() -+} -+ -+// Errorf returns Error(c, fmt.Sprintf(format, a...)). -+func Errorf(c codes.Code, format string, a ...interface{}) error { -+ return Err(c, fmt.Sprintf(format, a...)) -+} -+ -+// Code returns the status code contained in s. -+func (s *Status) Code() codes.Code { -+ if s == nil || s.s == nil { -+ return codes.OK -+ } -+ return codes.Code(s.s.Code) -+} -+ -+// Message returns the message contained in s. -+func (s *Status) Message() string { -+ if s == nil || s.s == nil { -+ return "" -+ } -+ return s.s.Message -+} -+ -+// Proto returns s's status as an spb.Status proto message. -+func (s *Status) Proto() *spb.Status { -+ if s == nil { -+ return nil -+ } -+ return proto.Clone(s.s).(*spb.Status) -+} -+ -+// Err returns an immutable error representing s; returns nil if s.Code() is OK. -+func (s *Status) Err() error { -+ if s.Code() == codes.OK { -+ return nil -+ } -+ return &Error{s: s} -+} -+ -+// WithDetails returns a new status with the provided details messages appended to the status. -+// If any errors are encountered, it returns nil and the first error encountered. -+func (s *Status) WithDetails(details ...proto.Message) (*Status, error) { -+ if s.Code() == codes.OK { -+ return nil, errors.New("no error details for status with code OK") -+ } -+ // s.Code() != OK implies that s.Proto() != nil. -+ p := s.Proto() -+ for _, detail := range details { -+ any, err := ptypes.MarshalAny(detail) -+ if err != nil { -+ return nil, err -+ } -+ p.Details = append(p.Details, any) -+ } -+ return &Status{s: p}, nil -+} -+ -+// Details returns a slice of details messages attached to the status. -+// If a detail cannot be decoded, the error is returned in place of the detail. -+func (s *Status) Details() []interface{} { -+ if s == nil || s.s == nil { -+ return nil -+ } -+ details := make([]interface{}, 0, len(s.s.Details)) -+ for _, any := range s.s.Details { -+ detail := &ptypes.DynamicAny{} -+ if err := ptypes.UnmarshalAny(any, detail); err != nil { -+ details = append(details, err) -+ continue -+ } -+ details = append(details, detail.Message) -+ } -+ return details -+} -+ -+func (s *Status) String() string { -+ return fmt.Sprintf("rpc error: code = %s desc = %s", s.Code(), s.Message()) -+} -+ -+// Error wraps a pointer of a status proto. It implements error and Status, -+// and a nil *Error should never be returned by this package. -+type Error struct { -+ s *Status -+} -+ -+func (e *Error) Error() string { -+ return e.s.String() -+} -+ -+// GRPCStatus returns the Status represented by se. -+func (e *Error) GRPCStatus() *Status { -+ return e.s -+} -+ -+// Is implements future error.Is functionality. -+// A Error is equivalent if the code and message are identical. -+func (e *Error) Is(target error) bool { -+ tse, ok := target.(*Error) -+ if !ok { -+ return false -+ } -+ return proto.Equal(e.s.s, tse.s.s) -+} -+ -+// IsRestrictedControlPlaneCode returns whether the status includes a code -+// restricted for control plane usage as defined by gRFC A54. -+func IsRestrictedControlPlaneCode(s *Status) bool { -+ switch s.Code() { -+ case codes.InvalidArgument, codes.NotFound, codes.AlreadyExists, codes.FailedPrecondition, codes.Aborted, codes.OutOfRange, codes.DataLoss: -+ return true -+ } -+ return false -+} -diff --git a/vendor/google.golang.org/grpc/internal/syscall/syscall_linux.go b/vendor/google.golang.org/grpc/internal/syscall/syscall_linux.go -new file mode 100755 -index 0000000..b3a7227 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/syscall/syscall_linux.go -@@ -0,0 +1,112 @@ -+/* -+ * -+ * 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 syscall provides functionalities that grpc uses to get low-level operating system -+// stats/info. -+package syscall -+ -+import ( -+ "fmt" -+ "net" -+ "syscall" -+ "time" -+ -+ "golang.org/x/sys/unix" -+ "google.golang.org/grpc/grpclog" -+) -+ -+var logger = grpclog.Component("core") -+ -+// GetCPUTime returns the how much CPU time has passed since the start of this process. -+func GetCPUTime() int64 { -+ var ts unix.Timespec -+ if err := unix.ClockGettime(unix.CLOCK_PROCESS_CPUTIME_ID, &ts); err != nil { -+ logger.Fatal(err) -+ } -+ return ts.Nano() -+} -+ -+// Rusage is an alias for syscall.Rusage under linux environment. -+type Rusage = syscall.Rusage -+ -+// GetRusage returns the resource usage of current process. -+func GetRusage() *Rusage { -+ rusage := new(Rusage) -+ syscall.Getrusage(syscall.RUSAGE_SELF, rusage) -+ return rusage -+} -+ -+// CPUTimeDiff returns the differences of user CPU time and system CPU time used -+// between two Rusage structs. -+func CPUTimeDiff(first *Rusage, latest *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 -+} -+ -+// SetTCPUserTimeout sets the TCP user timeout on a connection's socket -+func SetTCPUserTimeout(conn net.Conn, timeout time.Duration) error { -+ tcpconn, ok := conn.(*net.TCPConn) -+ if !ok { -+ // not a TCP connection. exit early -+ return nil -+ } -+ rawConn, err := tcpconn.SyscallConn() -+ if err != nil { -+ return fmt.Errorf("error getting raw connection: %v", err) -+ } -+ err = rawConn.Control(func(fd uintptr) { -+ err = syscall.SetsockoptInt(int(fd), syscall.IPPROTO_TCP, unix.TCP_USER_TIMEOUT, int(timeout/time.Millisecond)) -+ }) -+ if err != nil { -+ return fmt.Errorf("error setting option on socket: %v", err) -+ } -+ -+ return nil -+} -+ -+// GetTCPUserTimeout gets the TCP user timeout on a connection's socket -+func GetTCPUserTimeout(conn net.Conn) (opt int, err error) { -+ tcpconn, ok := conn.(*net.TCPConn) -+ if !ok { -+ err = fmt.Errorf("conn is not *net.TCPConn. got %T", conn) -+ return -+ } -+ rawConn, err := tcpconn.SyscallConn() -+ if err != nil { -+ err = fmt.Errorf("error getting raw connection: %v", err) -+ return -+ } -+ err = rawConn.Control(func(fd uintptr) { -+ opt, err = syscall.GetsockoptInt(int(fd), syscall.IPPROTO_TCP, unix.TCP_USER_TIMEOUT) -+ }) -+ if err != nil { -+ err = fmt.Errorf("error getting option on socket: %v", err) -+ return -+ } -+ -+ return -+} -diff --git a/vendor/google.golang.org/grpc/internal/syscall/syscall_nonlinux.go b/vendor/google.golang.org/grpc/internal/syscall/syscall_nonlinux.go -new file mode 100755 -index 0000000..999f52c ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/syscall/syscall_nonlinux.go -@@ -0,0 +1,77 @@ -+//go:build !linux -+// +build !linux -+ -+/* -+ * -+ * 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 syscall provides functionalities that grpc uses to get low-level -+// operating system stats/info. -+package syscall -+ -+import ( -+ "net" -+ "sync" -+ "time" -+ -+ "google.golang.org/grpc/grpclog" -+) -+ -+var once sync.Once -+var logger = grpclog.Component("core") -+ -+func log() { -+ once.Do(func() { -+ logger.Info("CPU time info is unavailable on non-linux environments.") -+ }) -+} -+ -+// GetCPUTime returns the how much CPU time has passed since the start of this -+// process. It always returns 0 under non-linux environments. -+func GetCPUTime() int64 { -+ log() -+ return 0 -+} -+ -+// Rusage is an empty struct under non-linux environments. -+type Rusage struct{} -+ -+// GetRusage is a no-op function under non-linux environments. -+func GetRusage() *Rusage { -+ log() -+ return nil -+} -+ -+// CPUTimeDiff returns the differences of user CPU time and system CPU time used -+// between two Rusage structs. It a no-op function for non-linux environments. -+func CPUTimeDiff(first *Rusage, latest *Rusage) (float64, float64) { -+ log() -+ return 0, 0 -+} -+ -+// SetTCPUserTimeout is a no-op function under non-linux environments. -+func SetTCPUserTimeout(conn net.Conn, timeout time.Duration) error { -+ log() -+ return nil -+} -+ -+// GetTCPUserTimeout is a no-op function under non-linux environments. -+// A negative return value indicates the operation is not supported -+func GetTCPUserTimeout(conn net.Conn) (int, error) { -+ log() -+ return -1, nil -+} -diff --git a/vendor/google.golang.org/grpc/internal/transport/bdp_estimator.go b/vendor/google.golang.org/grpc/internal/transport/bdp_estimator.go -new file mode 100755 -index 0000000..070680e ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/transport/bdp_estimator.go -@@ -0,0 +1,141 @@ -+/* -+ * -+ * 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 transport -+ -+import ( -+ "sync" -+ "time" -+) -+ -+const ( -+ // bdpLimit is the maximum value the flow control windows will be increased -+ // to. TCP typically limits this to 4MB, but some systems go up to 16MB. -+ // Since this is only a limit, it is safe to make it optimistic. -+ bdpLimit = (1 << 20) * 16 -+ // alpha is a constant factor used to keep a moving average -+ // of RTTs. -+ alpha = 0.9 -+ // If the current bdp sample is greater than or equal to -+ // our beta * our estimated bdp and the current bandwidth -+ // sample is the maximum bandwidth observed so far, we -+ // increase our bbp estimate by a factor of gamma. -+ beta = 0.66 -+ // To put our bdp to be smaller than or equal to twice the real BDP, -+ // we should multiply our current sample with 4/3, however to round things out -+ // we use 2 as the multiplication factor. -+ gamma = 2 -+) -+ -+// Adding arbitrary data to ping so that its ack can be identified. -+// Easter-egg: what does the ping message say? -+var bdpPing = &ping{data: [8]byte{2, 4, 16, 16, 9, 14, 7, 7}} -+ -+type bdpEstimator struct { -+ // sentAt is the time when the ping was sent. -+ sentAt time.Time -+ -+ mu sync.Mutex -+ // bdp is the current bdp estimate. -+ bdp uint32 -+ // sample is the number of bytes received in one measurement cycle. -+ sample uint32 -+ // bwMax is the maximum bandwidth noted so far (bytes/sec). -+ bwMax float64 -+ // bool to keep track of the beginning of a new measurement cycle. -+ isSent bool -+ // Callback to update the window sizes. -+ updateFlowControl func(n uint32) -+ // sampleCount is the number of samples taken so far. -+ sampleCount uint64 -+ // round trip time (seconds) -+ rtt float64 -+} -+ -+// timesnap registers the time bdp ping was sent out so that -+// network rtt can be calculated when its ack is received. -+// It is called (by controller) when the bdpPing is -+// being written on the wire. -+func (b *bdpEstimator) timesnap(d [8]byte) { -+ if bdpPing.data != d { -+ return -+ } -+ b.sentAt = time.Now() -+} -+ -+// add adds bytes to the current sample for calculating bdp. -+// It returns true only if a ping must be sent. This can be used -+// by the caller (handleData) to make decision about batching -+// a window update with it. -+func (b *bdpEstimator) add(n uint32) bool { -+ b.mu.Lock() -+ defer b.mu.Unlock() -+ if b.bdp == bdpLimit { -+ return false -+ } -+ if !b.isSent { -+ b.isSent = true -+ b.sample = n -+ b.sentAt = time.Time{} -+ b.sampleCount++ -+ return true -+ } -+ b.sample += n -+ return false -+} -+ -+// calculate is called when an ack for a bdp ping is received. -+// Here we calculate the current bdp and bandwidth sample and -+// decide if the flow control windows should go up. -+func (b *bdpEstimator) calculate(d [8]byte) { -+ // Check if the ping acked for was the bdp ping. -+ if bdpPing.data != d { -+ return -+ } -+ b.mu.Lock() -+ rttSample := time.Since(b.sentAt).Seconds() -+ if b.sampleCount < 10 { -+ // Bootstrap rtt with an average of first 10 rtt samples. -+ b.rtt += (rttSample - b.rtt) / float64(b.sampleCount) -+ } else { -+ // Heed to the recent past more. -+ b.rtt += (rttSample - b.rtt) * float64(alpha) -+ } -+ b.isSent = false -+ // The number of bytes accumulated so far in the sample is smaller -+ // than or equal to 1.5 times the real BDP on a saturated connection. -+ bwCurrent := float64(b.sample) / (b.rtt * float64(1.5)) -+ if bwCurrent > b.bwMax { -+ b.bwMax = bwCurrent -+ } -+ // If the current sample (which is smaller than or equal to the 1.5 times the real BDP) is -+ // greater than or equal to 2/3rd our perceived bdp AND this is the maximum bandwidth seen so far, we -+ // should update our perception of the network BDP. -+ if float64(b.sample) >= beta*float64(b.bdp) && bwCurrent == b.bwMax && b.bdp != bdpLimit { -+ sampleFloat := float64(b.sample) -+ b.bdp = uint32(gamma * sampleFloat) -+ if b.bdp > bdpLimit { -+ b.bdp = bdpLimit -+ } -+ bdp := b.bdp -+ b.mu.Unlock() -+ b.updateFlowControl(bdp) -+ return -+ } -+ b.mu.Unlock() -+} -diff --git a/vendor/google.golang.org/grpc/internal/transport/controlbuf.go b/vendor/google.golang.org/grpc/internal/transport/controlbuf.go -new file mode 100755 -index 0000000..be5a9c8 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/transport/controlbuf.go -@@ -0,0 +1,1007 @@ -+/* -+ * -+ * 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 ( -+ "bytes" -+ "errors" -+ "fmt" -+ "net" -+ "runtime" -+ "strconv" -+ "sync" -+ "sync/atomic" -+ -+ "golang.org/x/net/http2" -+ "golang.org/x/net/http2/hpack" -+ "google.golang.org/grpc/internal/grpclog" -+ "google.golang.org/grpc/internal/grpcutil" -+ "google.golang.org/grpc/status" -+) -+ -+var updateHeaderTblSize = func(e *hpack.Encoder, v uint32) { -+ e.SetMaxDynamicTableSizeLimit(v) -+} -+ -+type itemNode struct { -+ it interface{} -+ next *itemNode -+} -+ -+type itemList struct { -+ head *itemNode -+ tail *itemNode -+} -+ -+func (il *itemList) enqueue(i interface{}) { -+ n := &itemNode{it: i} -+ if il.tail == nil { -+ il.head, il.tail = n, n -+ return -+ } -+ il.tail.next = n -+ il.tail = n -+} -+ -+// peek returns the first item in the list without removing it from the -+// list. -+func (il *itemList) peek() interface{} { -+ return il.head.it -+} -+ -+func (il *itemList) dequeue() interface{} { -+ if il.head == nil { -+ return nil -+ } -+ i := il.head.it -+ il.head = il.head.next -+ if il.head == nil { -+ il.tail = nil -+ } -+ return i -+} -+ -+func (il *itemList) dequeueAll() *itemNode { -+ h := il.head -+ il.head, il.tail = nil, nil -+ return h -+} -+ -+func (il *itemList) isEmpty() bool { -+ return il.head == nil -+} -+ -+// The following defines various control items which could flow through -+// the control buffer of transport. They represent different aspects of -+// control tasks, e.g., flow control, settings, streaming resetting, etc. -+ -+// maxQueuedTransportResponseFrames is the most queued "transport response" -+// frames we will buffer before preventing new reads from occurring on the -+// transport. These are control frames sent in response to client requests, -+// such as RST_STREAM due to bad headers or settings acks. -+const maxQueuedTransportResponseFrames = 50 -+ -+type cbItem interface { -+ isTransportResponseFrame() bool -+} -+ -+// registerStream is used to register an incoming stream with loopy writer. -+type registerStream struct { -+ streamID uint32 -+ wq *writeQuota -+} -+ -+func (*registerStream) isTransportResponseFrame() bool { return false } -+ -+// headerFrame is also used to register stream on the client-side. -+type headerFrame struct { -+ streamID uint32 -+ hf []hpack.HeaderField -+ endStream bool // Valid on server side. -+ initStream func(uint32) error // Used only on the client side. -+ onWrite func() -+ wq *writeQuota // write quota for the stream created. -+ cleanup *cleanupStream // Valid on the server side. -+ onOrphaned func(error) // Valid on client-side -+} -+ -+func (h *headerFrame) isTransportResponseFrame() bool { -+ return h.cleanup != nil && h.cleanup.rst // Results in a RST_STREAM -+} -+ -+type cleanupStream struct { -+ streamID uint32 -+ rst bool -+ rstCode http2.ErrCode -+ onWrite func() -+} -+ -+func (c *cleanupStream) isTransportResponseFrame() bool { return c.rst } // Results in a RST_STREAM -+ -+type earlyAbortStream struct { -+ httpStatus uint32 -+ streamID uint32 -+ contentSubtype string -+ status *status.Status -+ rst bool -+} -+ -+func (*earlyAbortStream) isTransportResponseFrame() bool { return false } -+ -+type dataFrame struct { -+ streamID uint32 -+ endStream bool -+ h []byte -+ d []byte -+ // onEachWrite is called every time -+ // a part of d is written out. -+ onEachWrite func() -+} -+ -+func (*dataFrame) isTransportResponseFrame() bool { return false } -+ -+type incomingWindowUpdate struct { -+ streamID uint32 -+ increment uint32 -+} -+ -+func (*incomingWindowUpdate) isTransportResponseFrame() bool { return false } -+ -+type outgoingWindowUpdate struct { -+ streamID uint32 -+ increment uint32 -+} -+ -+func (*outgoingWindowUpdate) isTransportResponseFrame() bool { -+ return false // window updates are throttled by thresholds -+} -+ -+type incomingSettings struct { -+ ss []http2.Setting -+} -+ -+func (*incomingSettings) isTransportResponseFrame() bool { return true } // Results in a settings ACK -+ -+type outgoingSettings struct { -+ ss []http2.Setting -+} -+ -+func (*outgoingSettings) isTransportResponseFrame() bool { return false } -+ -+type incomingGoAway struct { -+} -+ -+func (*incomingGoAway) isTransportResponseFrame() bool { return false } -+ -+type goAway struct { -+ code http2.ErrCode -+ debugData []byte -+ headsUp bool -+ closeConn error // if set, loopyWriter will exit, resulting in conn closure -+} -+ -+func (*goAway) isTransportResponseFrame() bool { return false } -+ -+type ping struct { -+ ack bool -+ data [8]byte -+} -+ -+func (*ping) isTransportResponseFrame() bool { return true } -+ -+type outFlowControlSizeRequest struct { -+ resp chan uint32 -+} -+ -+func (*outFlowControlSizeRequest) isTransportResponseFrame() bool { return false } -+ -+// closeConnection is an instruction to tell the loopy writer to flush the -+// framer and exit, which will cause the transport's connection to be closed -+// (by the client or server). The transport itself will close after the reader -+// encounters the EOF caused by the connection closure. -+type closeConnection struct{} -+ -+func (closeConnection) isTransportResponseFrame() bool { return false } -+ -+type outStreamState int -+ -+const ( -+ active outStreamState = iota -+ empty -+ waitingOnStreamQuota -+) -+ -+type outStream struct { -+ id uint32 -+ state outStreamState -+ itl *itemList -+ bytesOutStanding int -+ wq *writeQuota -+ -+ next *outStream -+ prev *outStream -+} -+ -+func (s *outStream) deleteSelf() { -+ if s.prev != nil { -+ s.prev.next = s.next -+ } -+ if s.next != nil { -+ s.next.prev = s.prev -+ } -+ s.next, s.prev = nil, nil -+} -+ -+type outStreamList struct { -+ // Following are sentinel objects that mark the -+ // beginning and end of the list. They do not -+ // contain any item lists. All valid objects are -+ // inserted in between them. -+ // This is needed so that an outStream object can -+ // deleteSelf() in O(1) time without knowing which -+ // list it belongs to. -+ head *outStream -+ tail *outStream -+} -+ -+func newOutStreamList() *outStreamList { -+ head, tail := new(outStream), new(outStream) -+ head.next = tail -+ tail.prev = head -+ return &outStreamList{ -+ head: head, -+ tail: tail, -+ } -+} -+ -+func (l *outStreamList) enqueue(s *outStream) { -+ e := l.tail.prev -+ e.next = s -+ s.prev = e -+ s.next = l.tail -+ l.tail.prev = s -+} -+ -+// remove from the beginning of the list. -+func (l *outStreamList) dequeue() *outStream { -+ b := l.head.next -+ if b == l.tail { -+ return nil -+ } -+ b.deleteSelf() -+ return b -+} -+ -+// controlBuffer is a way to pass information to loopy. -+// Information is passed as specific struct types called control frames. -+// A control frame not only represents data, messages or headers to be sent out -+// but can also be used to instruct loopy to update its internal state. -+// It shouldn't be confused with an HTTP2 frame, although some of the control frames -+// like dataFrame and headerFrame do go out on wire as HTTP2 frames. -+type controlBuffer struct { -+ ch chan struct{} -+ done <-chan struct{} -+ mu sync.Mutex -+ consumerWaiting bool -+ list *itemList -+ err error -+ -+ // transportResponseFrames counts the number of queued items that represent -+ // the response of an action initiated by the peer. trfChan is created -+ // when transportResponseFrames >= maxQueuedTransportResponseFrames and is -+ // closed and nilled when transportResponseFrames drops below the -+ // threshold. Both fields are protected by mu. -+ transportResponseFrames int -+ trfChan atomic.Value // chan struct{} -+} -+ -+func newControlBuffer(done <-chan struct{}) *controlBuffer { -+ return &controlBuffer{ -+ ch: make(chan struct{}, 1), -+ list: &itemList{}, -+ done: done, -+ } -+} -+ -+// throttle blocks if there are too many incomingSettings/cleanupStreams in the -+// controlbuf. -+func (c *controlBuffer) throttle() { -+ ch, _ := c.trfChan.Load().(chan struct{}) -+ if ch != nil { -+ select { -+ case <-ch: -+ case <-c.done: -+ } -+ } -+} -+ -+func (c *controlBuffer) put(it cbItem) error { -+ _, err := c.executeAndPut(nil, it) -+ return err -+} -+ -+func (c *controlBuffer) executeAndPut(f func(it interface{}) bool, it cbItem) (bool, error) { -+ var wakeUp bool -+ c.mu.Lock() -+ if c.err != nil { -+ c.mu.Unlock() -+ return false, c.err -+ } -+ if f != nil { -+ if !f(it) { // f wasn't successful -+ c.mu.Unlock() -+ return false, nil -+ } -+ } -+ if c.consumerWaiting { -+ wakeUp = true -+ c.consumerWaiting = false -+ } -+ c.list.enqueue(it) -+ if it.isTransportResponseFrame() { -+ c.transportResponseFrames++ -+ if c.transportResponseFrames == maxQueuedTransportResponseFrames { -+ // We are adding the frame that puts us over the threshold; create -+ // a throttling channel. -+ c.trfChan.Store(make(chan struct{})) -+ } -+ } -+ c.mu.Unlock() -+ if wakeUp { -+ select { -+ case c.ch <- struct{}{}: -+ default: -+ } -+ } -+ return true, nil -+} -+ -+// Note argument f should never be nil. -+func (c *controlBuffer) execute(f func(it interface{}) bool, it interface{}) (bool, error) { -+ c.mu.Lock() -+ if c.err != nil { -+ c.mu.Unlock() -+ return false, c.err -+ } -+ if !f(it) { // f wasn't successful -+ c.mu.Unlock() -+ return false, nil -+ } -+ c.mu.Unlock() -+ return true, nil -+} -+ -+func (c *controlBuffer) get(block bool) (interface{}, error) { -+ for { -+ c.mu.Lock() -+ if c.err != nil { -+ c.mu.Unlock() -+ return nil, c.err -+ } -+ if !c.list.isEmpty() { -+ h := c.list.dequeue().(cbItem) -+ if h.isTransportResponseFrame() { -+ if c.transportResponseFrames == maxQueuedTransportResponseFrames { -+ // We are removing the frame that put us over the -+ // threshold; close and clear the throttling channel. -+ ch := c.trfChan.Load().(chan struct{}) -+ close(ch) -+ c.trfChan.Store((chan struct{})(nil)) -+ } -+ c.transportResponseFrames-- -+ } -+ c.mu.Unlock() -+ return h, nil -+ } -+ if !block { -+ c.mu.Unlock() -+ return nil, nil -+ } -+ c.consumerWaiting = true -+ c.mu.Unlock() -+ select { -+ case <-c.ch: -+ case <-c.done: -+ return nil, errors.New("transport closed by client") -+ } -+ } -+} -+ -+func (c *controlBuffer) finish() { -+ c.mu.Lock() -+ if c.err != nil { -+ c.mu.Unlock() -+ return -+ } -+ c.err = ErrConnClosing -+ // There may be headers for streams in the control buffer. -+ // These streams need to be cleaned out since the transport -+ // is still not aware of these yet. -+ for head := c.list.dequeueAll(); head != nil; head = head.next { -+ hdr, ok := head.it.(*headerFrame) -+ if !ok { -+ continue -+ } -+ if hdr.onOrphaned != nil { // It will be nil on the server-side. -+ hdr.onOrphaned(ErrConnClosing) -+ } -+ } -+ // In case throttle() is currently in flight, it needs to be unblocked. -+ // Otherwise, the transport may not close, since the transport is closed by -+ // the reader encountering the connection error. -+ ch, _ := c.trfChan.Load().(chan struct{}) -+ if ch != nil { -+ close(ch) -+ } -+ c.trfChan.Store((chan struct{})(nil)) -+ c.mu.Unlock() -+} -+ -+type side int -+ -+const ( -+ clientSide side = iota -+ serverSide -+) -+ -+// Loopy receives frames from the control buffer. -+// Each frame is handled individually; most of the work done by loopy goes -+// into handling data frames. Loopy maintains a queue of active streams, and each -+// stream maintains a queue of data frames; as loopy receives data frames -+// it gets added to the queue of the relevant stream. -+// Loopy goes over this list of active streams by processing one node every iteration, -+// thereby closely resemebling to a round-robin scheduling over all streams. While -+// processing a stream, loopy writes out data bytes from this stream capped by the min -+// of http2MaxFrameLen, connection-level flow control and stream-level flow control. -+type loopyWriter struct { -+ side side -+ cbuf *controlBuffer -+ sendQuota uint32 -+ oiws uint32 // outbound initial window size. -+ // estdStreams is map of all established streams that are not cleaned-up yet. -+ // On client-side, this is all streams whose headers were sent out. -+ // On server-side, this is all streams whose headers were received. -+ estdStreams map[uint32]*outStream // Established streams. -+ // activeStreams is a linked-list of all streams that have data to send and some -+ // stream-level flow control quota. -+ // Each of these streams internally have a list of data items(and perhaps trailers -+ // on the server-side) to be sent out. -+ activeStreams *outStreamList -+ framer *framer -+ hBuf *bytes.Buffer // The buffer for HPACK encoding. -+ hEnc *hpack.Encoder // HPACK encoder. -+ bdpEst *bdpEstimator -+ draining bool -+ conn net.Conn -+ logger *grpclog.PrefixLogger -+ -+ // Side-specific handlers -+ ssGoAwayHandler func(*goAway) (bool, error) -+} -+ -+func newLoopyWriter(s side, fr *framer, cbuf *controlBuffer, bdpEst *bdpEstimator, conn net.Conn, logger *grpclog.PrefixLogger) *loopyWriter { -+ var buf bytes.Buffer -+ l := &loopyWriter{ -+ side: s, -+ cbuf: cbuf, -+ sendQuota: defaultWindowSize, -+ oiws: defaultWindowSize, -+ estdStreams: make(map[uint32]*outStream), -+ activeStreams: newOutStreamList(), -+ framer: fr, -+ hBuf: &buf, -+ hEnc: hpack.NewEncoder(&buf), -+ bdpEst: bdpEst, -+ conn: conn, -+ logger: logger, -+ } -+ return l -+} -+ -+const minBatchSize = 1000 -+ -+// run should be run in a separate goroutine. -+// It reads control frames from controlBuf and processes them by: -+// 1. Updating loopy's internal state, or/and -+// 2. Writing out HTTP2 frames on the wire. -+// -+// Loopy keeps all active streams with data to send in a linked-list. -+// All streams in the activeStreams linked-list must have both: -+// 1. Data to send, and -+// 2. Stream level flow control quota available. -+// -+// In each iteration of run loop, other than processing the incoming control -+// frame, loopy calls processData, which processes one node from the -+// activeStreams linked-list. This results in writing of HTTP2 frames into an -+// underlying write buffer. When there's no more control frames to read from -+// controlBuf, loopy flushes the write buffer. As an optimization, to increase -+// the batch size for each flush, loopy yields the processor, once if the batch -+// size is too low to give stream goroutines a chance to fill it up. -+// -+// Upon exiting, if the error causing the exit is not an I/O error, run() -+// flushes and closes the underlying connection. Otherwise, the connection is -+// left open to allow the I/O error to be encountered by the reader instead. -+func (l *loopyWriter) run() (err error) { -+ defer func() { -+ if l.logger.V(logLevel) { -+ l.logger.Infof("loopyWriter exiting with error: %v", err) -+ } -+ if !isIOError(err) { -+ l.framer.writer.Flush() -+ l.conn.Close() -+ } -+ l.cbuf.finish() -+ }() -+ for { -+ it, err := l.cbuf.get(true) -+ if err != nil { -+ return err -+ } -+ if err = l.handle(it); err != nil { -+ return err -+ } -+ if _, err = l.processData(); err != nil { -+ return err -+ } -+ gosched := true -+ hasdata: -+ for { -+ it, err := l.cbuf.get(false) -+ if err != nil { -+ return err -+ } -+ if it != nil { -+ if err = l.handle(it); err != nil { -+ return err -+ } -+ if _, err = l.processData(); err != nil { -+ return err -+ } -+ continue hasdata -+ } -+ isEmpty, err := l.processData() -+ if err != nil { -+ return err -+ } -+ if !isEmpty { -+ continue hasdata -+ } -+ if gosched { -+ gosched = false -+ if l.framer.writer.offset < minBatchSize { -+ runtime.Gosched() -+ continue hasdata -+ } -+ } -+ l.framer.writer.Flush() -+ break hasdata -+ } -+ } -+} -+ -+func (l *loopyWriter) outgoingWindowUpdateHandler(w *outgoingWindowUpdate) error { -+ return l.framer.fr.WriteWindowUpdate(w.streamID, w.increment) -+} -+ -+func (l *loopyWriter) incomingWindowUpdateHandler(w *incomingWindowUpdate) { -+ // Otherwise update the quota. -+ if w.streamID == 0 { -+ l.sendQuota += w.increment -+ return -+ } -+ // Find the stream and update it. -+ if str, ok := l.estdStreams[w.streamID]; ok { -+ str.bytesOutStanding -= int(w.increment) -+ if strQuota := int(l.oiws) - str.bytesOutStanding; strQuota > 0 && str.state == waitingOnStreamQuota { -+ str.state = active -+ l.activeStreams.enqueue(str) -+ return -+ } -+ } -+} -+ -+func (l *loopyWriter) outgoingSettingsHandler(s *outgoingSettings) error { -+ return l.framer.fr.WriteSettings(s.ss...) -+} -+ -+func (l *loopyWriter) incomingSettingsHandler(s *incomingSettings) error { -+ l.applySettings(s.ss) -+ return l.framer.fr.WriteSettingsAck() -+} -+ -+func (l *loopyWriter) registerStreamHandler(h *registerStream) { -+ str := &outStream{ -+ id: h.streamID, -+ state: empty, -+ itl: &itemList{}, -+ wq: h.wq, -+ } -+ l.estdStreams[h.streamID] = str -+} -+ -+func (l *loopyWriter) headerHandler(h *headerFrame) error { -+ if l.side == serverSide { -+ str, ok := l.estdStreams[h.streamID] -+ if !ok { -+ if l.logger.V(logLevel) { -+ l.logger.Infof("Unrecognized streamID %d in loopyWriter", h.streamID) -+ } -+ return nil -+ } -+ // Case 1.A: Server is responding back with headers. -+ if !h.endStream { -+ return l.writeHeader(h.streamID, h.endStream, h.hf, h.onWrite) -+ } -+ // else: Case 1.B: Server wants to close stream. -+ -+ if str.state != empty { // either active or waiting on stream quota. -+ // add it str's list of items. -+ str.itl.enqueue(h) -+ return nil -+ } -+ if err := l.writeHeader(h.streamID, h.endStream, h.hf, h.onWrite); err != nil { -+ return err -+ } -+ return l.cleanupStreamHandler(h.cleanup) -+ } -+ // Case 2: Client wants to originate stream. -+ str := &outStream{ -+ id: h.streamID, -+ state: empty, -+ itl: &itemList{}, -+ wq: h.wq, -+ } -+ return l.originateStream(str, h) -+} -+ -+func (l *loopyWriter) originateStream(str *outStream, hdr *headerFrame) error { -+ // l.draining is set when handling GoAway. In which case, we want to avoid -+ // creating new streams. -+ if l.draining { -+ // TODO: provide a better error with the reason we are in draining. -+ hdr.onOrphaned(errStreamDrain) -+ return nil -+ } -+ if err := hdr.initStream(str.id); err != nil { -+ return err -+ } -+ if err := l.writeHeader(str.id, hdr.endStream, hdr.hf, hdr.onWrite); err != nil { -+ return err -+ } -+ l.estdStreams[str.id] = str -+ return nil -+} -+ -+func (l *loopyWriter) writeHeader(streamID uint32, endStream bool, hf []hpack.HeaderField, onWrite func()) error { -+ if onWrite != nil { -+ onWrite() -+ } -+ l.hBuf.Reset() -+ for _, f := range hf { -+ if err := l.hEnc.WriteField(f); err != nil { -+ if l.logger.V(logLevel) { -+ l.logger.Warningf("Encountered error while encoding headers: %v", err) -+ } -+ } -+ } -+ var ( -+ err error -+ endHeaders, first bool -+ ) -+ first = true -+ for !endHeaders { -+ size := l.hBuf.Len() -+ if size > http2MaxFrameLen { -+ size = http2MaxFrameLen -+ } else { -+ endHeaders = true -+ } -+ if first { -+ first = false -+ err = l.framer.fr.WriteHeaders(http2.HeadersFrameParam{ -+ StreamID: streamID, -+ BlockFragment: l.hBuf.Next(size), -+ EndStream: endStream, -+ EndHeaders: endHeaders, -+ }) -+ } else { -+ err = l.framer.fr.WriteContinuation( -+ streamID, -+ endHeaders, -+ l.hBuf.Next(size), -+ ) -+ } -+ if err != nil { -+ return err -+ } -+ } -+ return nil -+} -+ -+func (l *loopyWriter) preprocessData(df *dataFrame) { -+ str, ok := l.estdStreams[df.streamID] -+ if !ok { -+ return -+ } -+ // If we got data for a stream it means that -+ // stream was originated and the headers were sent out. -+ str.itl.enqueue(df) -+ if str.state == empty { -+ str.state = active -+ l.activeStreams.enqueue(str) -+ } -+} -+ -+func (l *loopyWriter) pingHandler(p *ping) error { -+ if !p.ack { -+ l.bdpEst.timesnap(p.data) -+ } -+ return l.framer.fr.WritePing(p.ack, p.data) -+ -+} -+ -+func (l *loopyWriter) outFlowControlSizeRequestHandler(o *outFlowControlSizeRequest) { -+ o.resp <- l.sendQuota -+} -+ -+func (l *loopyWriter) cleanupStreamHandler(c *cleanupStream) error { -+ c.onWrite() -+ if str, ok := l.estdStreams[c.streamID]; ok { -+ // On the server side it could be a trailers-only response or -+ // a RST_STREAM before stream initialization thus the stream might -+ // not be established yet. -+ delete(l.estdStreams, c.streamID) -+ str.deleteSelf() -+ } -+ if c.rst { // If RST_STREAM needs to be sent. -+ if err := l.framer.fr.WriteRSTStream(c.streamID, c.rstCode); err != nil { -+ return err -+ } -+ } -+ if l.draining && len(l.estdStreams) == 0 { -+ // Flush and close the connection; we are done with it. -+ return errors.New("finished processing active streams while in draining mode") -+ } -+ return nil -+} -+ -+func (l *loopyWriter) earlyAbortStreamHandler(eas *earlyAbortStream) error { -+ if l.side == clientSide { -+ return errors.New("earlyAbortStream not handled on client") -+ } -+ // In case the caller forgets to set the http status, default to 200. -+ if eas.httpStatus == 0 { -+ eas.httpStatus = 200 -+ } -+ headerFields := []hpack.HeaderField{ -+ {Name: ":status", Value: strconv.Itoa(int(eas.httpStatus))}, -+ {Name: "content-type", Value: grpcutil.ContentType(eas.contentSubtype)}, -+ {Name: "grpc-status", Value: strconv.Itoa(int(eas.status.Code()))}, -+ {Name: "grpc-message", Value: encodeGrpcMessage(eas.status.Message())}, -+ } -+ -+ if err := l.writeHeader(eas.streamID, true, headerFields, nil); err != nil { -+ return err -+ } -+ if eas.rst { -+ if err := l.framer.fr.WriteRSTStream(eas.streamID, http2.ErrCodeNo); err != nil { -+ return err -+ } -+ } -+ return nil -+} -+ -+func (l *loopyWriter) incomingGoAwayHandler(*incomingGoAway) error { -+ if l.side == clientSide { -+ l.draining = true -+ if len(l.estdStreams) == 0 { -+ // Flush and close the connection; we are done with it. -+ return errors.New("received GOAWAY with no active streams") -+ } -+ } -+ return nil -+} -+ -+func (l *loopyWriter) goAwayHandler(g *goAway) error { -+ // Handling of outgoing GoAway is very specific to side. -+ if l.ssGoAwayHandler != nil { -+ draining, err := l.ssGoAwayHandler(g) -+ if err != nil { -+ return err -+ } -+ l.draining = draining -+ } -+ return nil -+} -+ -+func (l *loopyWriter) handle(i interface{}) error { -+ switch i := i.(type) { -+ case *incomingWindowUpdate: -+ l.incomingWindowUpdateHandler(i) -+ case *outgoingWindowUpdate: -+ return l.outgoingWindowUpdateHandler(i) -+ case *incomingSettings: -+ return l.incomingSettingsHandler(i) -+ case *outgoingSettings: -+ return l.outgoingSettingsHandler(i) -+ case *headerFrame: -+ return l.headerHandler(i) -+ case *registerStream: -+ l.registerStreamHandler(i) -+ case *cleanupStream: -+ return l.cleanupStreamHandler(i) -+ case *earlyAbortStream: -+ return l.earlyAbortStreamHandler(i) -+ case *incomingGoAway: -+ return l.incomingGoAwayHandler(i) -+ case *dataFrame: -+ l.preprocessData(i) -+ case *ping: -+ return l.pingHandler(i) -+ case *goAway: -+ return l.goAwayHandler(i) -+ case *outFlowControlSizeRequest: -+ l.outFlowControlSizeRequestHandler(i) -+ case closeConnection: -+ // Just return a non-I/O error and run() will flush and close the -+ // connection. -+ return ErrConnClosing -+ default: -+ return fmt.Errorf("transport: unknown control message type %T", i) -+ } -+ return nil -+} -+ -+func (l *loopyWriter) applySettings(ss []http2.Setting) { -+ for _, s := range ss { -+ switch s.ID { -+ case http2.SettingInitialWindowSize: -+ o := l.oiws -+ l.oiws = s.Val -+ if o < l.oiws { -+ // If the new limit is greater make all depleted streams active. -+ for _, stream := range l.estdStreams { -+ if stream.state == waitingOnStreamQuota { -+ stream.state = active -+ l.activeStreams.enqueue(stream) -+ } -+ } -+ } -+ case http2.SettingHeaderTableSize: -+ updateHeaderTblSize(l.hEnc, s.Val) -+ } -+ } -+} -+ -+// processData removes the first stream from active streams, writes out at most 16KB -+// of its data and then puts it at the end of activeStreams if there's still more data -+// to be sent and stream has some stream-level flow control. -+func (l *loopyWriter) processData() (bool, error) { -+ if l.sendQuota == 0 { -+ return true, nil -+ } -+ str := l.activeStreams.dequeue() // Remove the first stream. -+ if str == nil { -+ return true, nil -+ } -+ dataItem := str.itl.peek().(*dataFrame) // Peek at the first data item this stream. -+ // A data item is represented by a dataFrame, since it later translates into -+ // multiple HTTP2 data frames. -+ // Every dataFrame has two buffers; h that keeps grpc-message header and d that is actual data. -+ // As an optimization to keep wire traffic low, data from d is copied to h to make as big as the -+ // maximum possible HTTP2 frame size. -+ -+ if len(dataItem.h) == 0 && len(dataItem.d) == 0 { // Empty data frame -+ // Client sends out empty data frame with endStream = true -+ if err := l.framer.fr.WriteData(dataItem.streamID, dataItem.endStream, nil); err != nil { -+ return false, err -+ } -+ str.itl.dequeue() // remove the empty data item from stream -+ if str.itl.isEmpty() { -+ str.state = empty -+ } else if trailer, ok := str.itl.peek().(*headerFrame); ok { // the next item is trailers. -+ if err := l.writeHeader(trailer.streamID, trailer.endStream, trailer.hf, trailer.onWrite); err != nil { -+ return false, err -+ } -+ if err := l.cleanupStreamHandler(trailer.cleanup); err != nil { -+ return false, err -+ } -+ } else { -+ l.activeStreams.enqueue(str) -+ } -+ return false, nil -+ } -+ var ( -+ buf []byte -+ ) -+ // Figure out the maximum size we can send -+ maxSize := http2MaxFrameLen -+ if strQuota := int(l.oiws) - str.bytesOutStanding; strQuota <= 0 { // stream-level flow control. -+ str.state = waitingOnStreamQuota -+ return false, nil -+ } else if maxSize > strQuota { -+ maxSize = strQuota -+ } -+ if maxSize > int(l.sendQuota) { // connection-level flow control. -+ maxSize = int(l.sendQuota) -+ } -+ // Compute how much of the header and data we can send within quota and max frame length -+ hSize := min(maxSize, len(dataItem.h)) -+ dSize := min(maxSize-hSize, len(dataItem.d)) -+ if hSize != 0 { -+ if dSize == 0 { -+ buf = dataItem.h -+ } else { -+ // We can add some data to grpc message header to distribute bytes more equally across frames. -+ // Copy on the stack to avoid generating garbage -+ var localBuf [http2MaxFrameLen]byte -+ copy(localBuf[:hSize], dataItem.h) -+ copy(localBuf[hSize:], dataItem.d[:dSize]) -+ buf = localBuf[:hSize+dSize] -+ } -+ } else { -+ buf = dataItem.d -+ } -+ -+ size := hSize + dSize -+ -+ // Now that outgoing flow controls are checked we can replenish str's write quota -+ str.wq.replenish(size) -+ var endStream bool -+ // If this is the last data message on this stream and all of it can be written in this iteration. -+ if dataItem.endStream && len(dataItem.h)+len(dataItem.d) <= size { -+ endStream = true -+ } -+ if dataItem.onEachWrite != nil { -+ dataItem.onEachWrite() -+ } -+ if err := l.framer.fr.WriteData(dataItem.streamID, endStream, buf[:size]); err != nil { -+ return false, err -+ } -+ str.bytesOutStanding += size -+ l.sendQuota -= uint32(size) -+ dataItem.h = dataItem.h[hSize:] -+ dataItem.d = dataItem.d[dSize:] -+ -+ if len(dataItem.h) == 0 && len(dataItem.d) == 0 { // All the data from that message was written out. -+ str.itl.dequeue() -+ } -+ if str.itl.isEmpty() { -+ str.state = empty -+ } else if trailer, ok := str.itl.peek().(*headerFrame); ok { // The next item is trailers. -+ if err := l.writeHeader(trailer.streamID, trailer.endStream, trailer.hf, trailer.onWrite); err != nil { -+ return false, err -+ } -+ if err := l.cleanupStreamHandler(trailer.cleanup); err != nil { -+ return false, err -+ } -+ } else if int(l.oiws)-str.bytesOutStanding <= 0 { // Ran out of stream quota. -+ str.state = waitingOnStreamQuota -+ } else { // Otherwise add it back to the list of active streams. -+ l.activeStreams.enqueue(str) -+ } -+ return false, nil -+} -+ -+func min(a, b int) int { -+ if a < b { -+ return a -+ } -+ return b -+} -diff --git a/vendor/google.golang.org/grpc/internal/transport/defaults.go b/vendor/google.golang.org/grpc/internal/transport/defaults.go -new file mode 100755 -index 0000000..bc8ee07 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/transport/defaults.go -@@ -0,0 +1,55 @@ -+/* -+ * -+ * 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 transport -+ -+import ( -+ "math" -+ "time" -+) -+ -+const ( -+ // The default value of flow control window size in HTTP2 spec. -+ defaultWindowSize = 65535 -+ // The initial window size for flow control. -+ initialWindowSize = defaultWindowSize // for an RPC -+ infinity = time.Duration(math.MaxInt64) -+ defaultClientKeepaliveTime = infinity -+ defaultClientKeepaliveTimeout = 20 * time.Second -+ defaultMaxStreamsClient = 100 -+ defaultMaxConnectionIdle = infinity -+ defaultMaxConnectionAge = infinity -+ defaultMaxConnectionAgeGrace = infinity -+ defaultServerKeepaliveTime = 2 * time.Hour -+ defaultServerKeepaliveTimeout = 20 * time.Second -+ defaultKeepalivePolicyMinTime = 5 * time.Minute -+ // max window limit set by HTTP2 Specs. -+ maxWindowSize = math.MaxInt32 -+ // defaultWriteQuota is the default value for number of data -+ // bytes that each stream can schedule before some of it being -+ // flushed out. -+ defaultWriteQuota = 64 * 1024 -+ defaultClientMaxHeaderListSize = uint32(16 << 20) -+ defaultServerMaxHeaderListSize = uint32(16 << 20) -+) -+ -+// MaxStreamID is the upper bound for the stream ID before the current -+// transport gracefully closes and new transport is created for subsequent RPCs. -+// This is set to 75% of 2^31-1. Streams are identified with an unsigned 31-bit -+// integer. It's exported so that tests can override it. -+var MaxStreamID = uint32(math.MaxInt32 * 3 / 4) -diff --git a/vendor/google.golang.org/grpc/internal/transport/flowcontrol.go b/vendor/google.golang.org/grpc/internal/transport/flowcontrol.go -new file mode 100755 -index 0000000..97198c5 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/transport/flowcontrol.go -@@ -0,0 +1,215 @@ -+/* -+ * -+ * 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" -+ "math" -+ "sync" -+ "sync/atomic" -+) -+ -+// writeQuota is a soft limit on the amount of data a stream can -+// schedule before some of it is written out. -+type writeQuota struct { -+ quota int32 -+ // get waits on read from when quota goes less than or equal to zero. -+ // replenish writes on it when quota goes positive again. -+ ch chan struct{} -+ // done is triggered in error case. -+ done <-chan struct{} -+ // replenish is called by loopyWriter to give quota back to. -+ // It is implemented as a field so that it can be updated -+ // by tests. -+ replenish func(n int) -+} -+ -+func newWriteQuota(sz int32, done <-chan struct{}) *writeQuota { -+ w := &writeQuota{ -+ quota: sz, -+ ch: make(chan struct{}, 1), -+ done: done, -+ } -+ w.replenish = w.realReplenish -+ return w -+} -+ -+func (w *writeQuota) get(sz int32) error { -+ for { -+ if atomic.LoadInt32(&w.quota) > 0 { -+ atomic.AddInt32(&w.quota, -sz) -+ return nil -+ } -+ select { -+ case <-w.ch: -+ continue -+ case <-w.done: -+ return errStreamDone -+ } -+ } -+} -+ -+func (w *writeQuota) realReplenish(n int) { -+ sz := int32(n) -+ a := atomic.AddInt32(&w.quota, sz) -+ b := a - sz -+ if b <= 0 && a > 0 { -+ select { -+ case w.ch <- struct{}{}: -+ default: -+ } -+ } -+} -+ -+type trInFlow struct { -+ limit uint32 -+ unacked uint32 -+ effectiveWindowSize uint32 -+} -+ -+func (f *trInFlow) newLimit(n uint32) uint32 { -+ d := n - f.limit -+ f.limit = n -+ f.updateEffectiveWindowSize() -+ return d -+} -+ -+func (f *trInFlow) onData(n uint32) uint32 { -+ f.unacked += n -+ if f.unacked >= f.limit/4 { -+ w := f.unacked -+ f.unacked = 0 -+ f.updateEffectiveWindowSize() -+ return w -+ } -+ f.updateEffectiveWindowSize() -+ return 0 -+} -+ -+func (f *trInFlow) reset() uint32 { -+ w := f.unacked -+ f.unacked = 0 -+ f.updateEffectiveWindowSize() -+ return w -+} -+ -+func (f *trInFlow) updateEffectiveWindowSize() { -+ atomic.StoreUint32(&f.effectiveWindowSize, f.limit-f.unacked) -+} -+ -+func (f *trInFlow) getSize() uint32 { -+ return atomic.LoadUint32(&f.effectiveWindowSize) -+} -+ -+// TODO(mmukhi): Simplify this code. -+// inFlow deals with inbound flow control -+type inFlow struct { -+ mu sync.Mutex -+ // The inbound flow control limit for pending data. -+ limit uint32 -+ // pendingData is the overall data which have been received but not been -+ // consumed by applications. -+ pendingData uint32 -+ // The amount of data the application has consumed but grpc has not sent -+ // window update for them. Used to reduce window update frequency. -+ pendingUpdate uint32 -+ // delta is the extra window update given by receiver when an application -+ // is reading data bigger in size than the inFlow limit. -+ delta uint32 -+} -+ -+// newLimit updates the inflow window to a new value n. -+// It assumes that n is always greater than the old limit. -+func (f *inFlow) newLimit(n uint32) { -+ f.mu.Lock() -+ f.limit = n -+ f.mu.Unlock() -+} -+ -+func (f *inFlow) maybeAdjust(n uint32) uint32 { -+ if n > uint32(math.MaxInt32) { -+ n = uint32(math.MaxInt32) -+ } -+ f.mu.Lock() -+ defer f.mu.Unlock() -+ // estSenderQuota is the receiver's view of the maximum number of bytes the sender -+ // can send without a window update. -+ estSenderQuota := int32(f.limit - (f.pendingData + f.pendingUpdate)) -+ // estUntransmittedData is the maximum number of bytes the sends might not have put -+ // on the wire yet. A value of 0 or less means that we have already received all or -+ // more bytes than the application is requesting to read. -+ estUntransmittedData := int32(n - f.pendingData) // Casting into int32 since it could be negative. -+ // This implies that unless we send a window update, the sender won't be able to send all the bytes -+ // for this message. Therefore we must send an update over the limit since there's an active read -+ // request from the application. -+ if estUntransmittedData > estSenderQuota { -+ // Sender's window shouldn't go more than 2^31 - 1 as specified in the HTTP spec. -+ if f.limit+n > maxWindowSize { -+ f.delta = maxWindowSize - f.limit -+ } else { -+ // Send a window update for the whole message and not just the difference between -+ // estUntransmittedData and estSenderQuota. This will be helpful in case the message -+ // is padded; We will fallback on the current available window(at least a 1/4th of the limit). -+ f.delta = n -+ } -+ return f.delta -+ } -+ return 0 -+} -+ -+// onData is invoked when some data frame is received. It updates pendingData. -+func (f *inFlow) onData(n uint32) error { -+ f.mu.Lock() -+ f.pendingData += n -+ if f.pendingData+f.pendingUpdate > f.limit+f.delta { -+ limit := f.limit -+ rcvd := f.pendingData + f.pendingUpdate -+ f.mu.Unlock() -+ return fmt.Errorf("received %d-bytes data exceeding the limit %d bytes", rcvd, limit) -+ } -+ f.mu.Unlock() -+ return nil -+} -+ -+// onRead is invoked when the application reads the data. It returns the window size -+// to be sent to the peer. -+func (f *inFlow) onRead(n uint32) uint32 { -+ f.mu.Lock() -+ if f.pendingData == 0 { -+ f.mu.Unlock() -+ return 0 -+ } -+ f.pendingData -= n -+ if n > f.delta { -+ n -= f.delta -+ f.delta = 0 -+ } else { -+ f.delta -= n -+ n = 0 -+ } -+ f.pendingUpdate += n -+ if f.pendingUpdate >= f.limit/4 { -+ wu := f.pendingUpdate -+ f.pendingUpdate = 0 -+ f.mu.Unlock() -+ return wu -+ } -+ f.mu.Unlock() -+ return 0 -+} -diff --git a/vendor/google.golang.org/grpc/internal/transport/handler_server.go b/vendor/google.golang.org/grpc/internal/transport/handler_server.go -new file mode 100755 -index 0000000..98f80e3 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/transport/handler_server.go -@@ -0,0 +1,480 @@ -+/* -+ * -+ * 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. -+ * -+ */ -+ -+// This file is the implementation of a gRPC server using HTTP/2 which -+// uses the standard Go http2 Server implementation (via the -+// http.Handler interface), rather than speaking low-level HTTP/2 -+// frames itself. It is the implementation of *grpc.Server.ServeHTTP. -+ -+package transport -+ -+import ( -+ "bytes" -+ "context" -+ "errors" -+ "fmt" -+ "io" -+ "net" -+ "net/http" -+ "strings" -+ "sync" -+ "time" -+ -+ "github.com/golang/protobuf/proto" -+ "golang.org/x/net/http2" -+ "google.golang.org/grpc/codes" -+ "google.golang.org/grpc/credentials" -+ "google.golang.org/grpc/internal/grpclog" -+ "google.golang.org/grpc/internal/grpcutil" -+ "google.golang.org/grpc/metadata" -+ "google.golang.org/grpc/peer" -+ "google.golang.org/grpc/stats" -+ "google.golang.org/grpc/status" -+) -+ -+// NewServerHandlerTransport returns a ServerTransport handling gRPC from -+// inside an http.Handler, or writes an HTTP error to w and returns an error. -+// It requires that the http Server supports HTTP/2. -+func NewServerHandlerTransport(w http.ResponseWriter, r *http.Request, stats []stats.Handler) (ServerTransport, error) { -+ if r.ProtoMajor != 2 { -+ msg := "gRPC requires HTTP/2" -+ http.Error(w, msg, http.StatusBadRequest) -+ return nil, errors.New(msg) -+ } -+ if r.Method != "POST" { -+ msg := fmt.Sprintf("invalid gRPC request method %q", r.Method) -+ http.Error(w, msg, http.StatusBadRequest) -+ return nil, errors.New(msg) -+ } -+ contentType := r.Header.Get("Content-Type") -+ // TODO: do we assume contentType is lowercase? we did before -+ contentSubtype, validContentType := grpcutil.ContentSubtype(contentType) -+ if !validContentType { -+ msg := fmt.Sprintf("invalid gRPC request content-type %q", contentType) -+ http.Error(w, msg, http.StatusUnsupportedMediaType) -+ return nil, errors.New(msg) -+ } -+ if _, ok := w.(http.Flusher); !ok { -+ msg := "gRPC requires a ResponseWriter supporting http.Flusher" -+ http.Error(w, msg, http.StatusInternalServerError) -+ return nil, errors.New(msg) -+ } -+ -+ st := &serverHandlerTransport{ -+ rw: w, -+ req: r, -+ closedCh: make(chan struct{}), -+ writes: make(chan func()), -+ contentType: contentType, -+ contentSubtype: contentSubtype, -+ stats: stats, -+ } -+ st.logger = prefixLoggerForServerHandlerTransport(st) -+ -+ if v := r.Header.Get("grpc-timeout"); v != "" { -+ to, err := decodeTimeout(v) -+ if err != nil { -+ msg := fmt.Sprintf("malformed grpc-timeout: %v", err) -+ http.Error(w, msg, http.StatusBadRequest) -+ return nil, status.Error(codes.Internal, msg) -+ } -+ st.timeoutSet = true -+ st.timeout = to -+ } -+ -+ metakv := []string{"content-type", contentType} -+ if r.Host != "" { -+ metakv = append(metakv, ":authority", r.Host) -+ } -+ for k, vv := range r.Header { -+ k = strings.ToLower(k) -+ if isReservedHeader(k) && !isWhitelistedHeader(k) { -+ continue -+ } -+ for _, v := range vv { -+ v, err := decodeMetadataHeader(k, v) -+ if err != nil { -+ msg := fmt.Sprintf("malformed binary metadata %q in header %q: %v", v, k, err) -+ http.Error(w, msg, http.StatusBadRequest) -+ return nil, status.Error(codes.Internal, msg) -+ } -+ metakv = append(metakv, k, v) -+ } -+ } -+ st.headerMD = metadata.Pairs(metakv...) -+ -+ return st, nil -+} -+ -+// serverHandlerTransport is an implementation of ServerTransport -+// which replies to exactly one gRPC request (exactly one HTTP request), -+// using the net/http.Handler interface. This http.Handler is guaranteed -+// at this point to be speaking over HTTP/2, so it's able to speak valid -+// gRPC. -+type serverHandlerTransport struct { -+ rw http.ResponseWriter -+ req *http.Request -+ timeoutSet bool -+ timeout time.Duration -+ -+ headerMD metadata.MD -+ -+ closeOnce sync.Once -+ closedCh chan struct{} // closed on Close -+ -+ // writes is a channel of code to run serialized in the -+ // ServeHTTP (HandleStreams) goroutine. The channel is closed -+ // when WriteStatus is called. -+ writes chan func() -+ -+ // block concurrent WriteStatus calls -+ // e.g. grpc/(*serverStream).SendMsg/RecvMsg -+ writeStatusMu sync.Mutex -+ -+ // we just mirror the request content-type -+ contentType string -+ // we store both contentType and contentSubtype so we don't keep recreating them -+ // TODO make sure this is consistent across handler_server and http2_server -+ contentSubtype string -+ -+ stats []stats.Handler -+ logger *grpclog.PrefixLogger -+} -+ -+func (ht *serverHandlerTransport) Close(err error) { -+ ht.closeOnce.Do(func() { -+ if ht.logger.V(logLevel) { -+ ht.logger.Infof("Closing: %v", err) -+ } -+ close(ht.closedCh) -+ }) -+} -+ -+func (ht *serverHandlerTransport) RemoteAddr() net.Addr { return strAddr(ht.req.RemoteAddr) } -+ -+// strAddr is a net.Addr backed by either a TCP "ip:port" string, or -+// the empty string if unknown. -+type strAddr string -+ -+func (a strAddr) Network() string { -+ if a != "" { -+ // Per the documentation on net/http.Request.RemoteAddr, if this is -+ // set, it's set to the IP:port of the peer (hence, TCP): -+ // https://golang.org/pkg/net/http/#Request -+ // -+ // If we want to support Unix sockets later, we can -+ // add our own grpc-specific convention within the -+ // grpc codebase to set RemoteAddr to a different -+ // format, or probably better: we can attach it to the -+ // context and use that from serverHandlerTransport.RemoteAddr. -+ return "tcp" -+ } -+ return "" -+} -+ -+func (a strAddr) String() string { return string(a) } -+ -+// do runs fn in the ServeHTTP goroutine. -+func (ht *serverHandlerTransport) do(fn func()) error { -+ select { -+ case <-ht.closedCh: -+ return ErrConnClosing -+ case ht.writes <- fn: -+ return nil -+ } -+} -+ -+func (ht *serverHandlerTransport) WriteStatus(s *Stream, st *status.Status) error { -+ ht.writeStatusMu.Lock() -+ defer ht.writeStatusMu.Unlock() -+ -+ headersWritten := s.updateHeaderSent() -+ err := ht.do(func() { -+ if !headersWritten { -+ ht.writePendingHeaders(s) -+ } -+ -+ // And flush, in case no header or body has been sent yet. -+ // This forces a separation of headers and trailers if this is the -+ // first call (for example, in end2end tests's TestNoService). -+ ht.rw.(http.Flusher).Flush() -+ -+ h := ht.rw.Header() -+ h.Set("Grpc-Status", fmt.Sprintf("%d", st.Code())) -+ if m := st.Message(); m != "" { -+ h.Set("Grpc-Message", encodeGrpcMessage(m)) -+ } -+ -+ if p := st.Proto(); p != nil && len(p.Details) > 0 { -+ stBytes, err := proto.Marshal(p) -+ if err != nil { -+ // TODO: return error instead, when callers are able to handle it. -+ panic(err) -+ } -+ -+ h.Set("Grpc-Status-Details-Bin", encodeBinHeader(stBytes)) -+ } -+ -+ if md := s.Trailer(); len(md) > 0 { -+ for k, vv := range md { -+ // Clients don't tolerate reading restricted headers after some non restricted ones were sent. -+ if isReservedHeader(k) { -+ continue -+ } -+ for _, v := range vv { -+ // http2 ResponseWriter mechanism to send undeclared Trailers after -+ // the headers have possibly been written. -+ h.Add(http2.TrailerPrefix+k, encodeMetadataHeader(k, v)) -+ } -+ } -+ } -+ }) -+ -+ if err == nil { // transport has not been closed -+ // Note: The trailer fields are compressed with hpack after this call returns. -+ // No WireLength field is set here. -+ for _, sh := range ht.stats { -+ sh.HandleRPC(s.Context(), &stats.OutTrailer{ -+ Trailer: s.trailer.Copy(), -+ }) -+ } -+ } -+ ht.Close(errors.New("finished writing status")) -+ return err -+} -+ -+// writePendingHeaders sets common and custom headers on the first -+// write call (Write, WriteHeader, or WriteStatus) -+func (ht *serverHandlerTransport) writePendingHeaders(s *Stream) { -+ ht.writeCommonHeaders(s) -+ ht.writeCustomHeaders(s) -+} -+ -+// writeCommonHeaders sets common headers on the first write -+// call (Write, WriteHeader, or WriteStatus). -+func (ht *serverHandlerTransport) writeCommonHeaders(s *Stream) { -+ h := ht.rw.Header() -+ h["Date"] = nil // suppress Date to make tests happy; TODO: restore -+ h.Set("Content-Type", ht.contentType) -+ -+ // Predeclare trailers we'll set later in WriteStatus (after the body). -+ // This is a SHOULD in the HTTP RFC, and the way you add (known) -+ // Trailers per the net/http.ResponseWriter contract. -+ // See https://golang.org/pkg/net/http/#ResponseWriter -+ // and https://golang.org/pkg/net/http/#example_ResponseWriter_trailers -+ h.Add("Trailer", "Grpc-Status") -+ h.Add("Trailer", "Grpc-Message") -+ h.Add("Trailer", "Grpc-Status-Details-Bin") -+ -+ if s.sendCompress != "" { -+ h.Set("Grpc-Encoding", s.sendCompress) -+ } -+} -+ -+// writeCustomHeaders sets custom headers set on the stream via SetHeader -+// on the first write call (Write, WriteHeader, or WriteStatus). -+func (ht *serverHandlerTransport) writeCustomHeaders(s *Stream) { -+ h := ht.rw.Header() -+ -+ s.hdrMu.Lock() -+ for k, vv := range s.header { -+ if isReservedHeader(k) { -+ continue -+ } -+ for _, v := range vv { -+ h.Add(k, encodeMetadataHeader(k, v)) -+ } -+ } -+ -+ s.hdrMu.Unlock() -+} -+ -+func (ht *serverHandlerTransport) Write(s *Stream, hdr []byte, data []byte, opts *Options) error { -+ headersWritten := s.updateHeaderSent() -+ return ht.do(func() { -+ if !headersWritten { -+ ht.writePendingHeaders(s) -+ } -+ ht.rw.Write(hdr) -+ ht.rw.Write(data) -+ ht.rw.(http.Flusher).Flush() -+ }) -+} -+ -+func (ht *serverHandlerTransport) WriteHeader(s *Stream, md metadata.MD) error { -+ if err := s.SetHeader(md); err != nil { -+ return err -+ } -+ -+ headersWritten := s.updateHeaderSent() -+ err := ht.do(func() { -+ if !headersWritten { -+ ht.writePendingHeaders(s) -+ } -+ -+ ht.rw.WriteHeader(200) -+ ht.rw.(http.Flusher).Flush() -+ }) -+ -+ if err == nil { -+ for _, sh := range ht.stats { -+ // Note: The header fields are compressed with hpack after this call returns. -+ // No WireLength field is set here. -+ sh.HandleRPC(s.Context(), &stats.OutHeader{ -+ Header: md.Copy(), -+ Compression: s.sendCompress, -+ }) -+ } -+ } -+ return err -+} -+ -+func (ht *serverHandlerTransport) HandleStreams(startStream func(*Stream), traceCtx func(context.Context, string) context.Context) { -+ // With this transport type there will be exactly 1 stream: this HTTP request. -+ -+ ctx := ht.req.Context() -+ var cancel context.CancelFunc -+ if ht.timeoutSet { -+ ctx, cancel = context.WithTimeout(ctx, ht.timeout) -+ } else { -+ ctx, cancel = context.WithCancel(ctx) -+ } -+ -+ // requestOver is closed when the status has been written via WriteStatus. -+ requestOver := make(chan struct{}) -+ go func() { -+ select { -+ case <-requestOver: -+ case <-ht.closedCh: -+ case <-ht.req.Context().Done(): -+ } -+ cancel() -+ ht.Close(errors.New("request is done processing")) -+ }() -+ -+ req := ht.req -+ -+ s := &Stream{ -+ id: 0, // irrelevant -+ requestRead: func(int) {}, -+ cancel: cancel, -+ buf: newRecvBuffer(), -+ st: ht, -+ method: req.URL.Path, -+ recvCompress: req.Header.Get("grpc-encoding"), -+ contentSubtype: ht.contentSubtype, -+ } -+ pr := &peer.Peer{ -+ Addr: ht.RemoteAddr(), -+ } -+ if req.TLS != nil { -+ pr.AuthInfo = credentials.TLSInfo{State: *req.TLS, CommonAuthInfo: credentials.CommonAuthInfo{SecurityLevel: credentials.PrivacyAndIntegrity}} -+ } -+ ctx = metadata.NewIncomingContext(ctx, ht.headerMD) -+ s.ctx = peer.NewContext(ctx, pr) -+ for _, sh := range ht.stats { -+ s.ctx = sh.TagRPC(s.ctx, &stats.RPCTagInfo{FullMethodName: s.method}) -+ inHeader := &stats.InHeader{ -+ FullMethod: s.method, -+ RemoteAddr: ht.RemoteAddr(), -+ Compression: s.recvCompress, -+ } -+ sh.HandleRPC(s.ctx, inHeader) -+ } -+ s.trReader = &transportReader{ -+ reader: &recvBufferReader{ctx: s.ctx, ctxDone: s.ctx.Done(), recv: s.buf, freeBuffer: func(*bytes.Buffer) {}}, -+ windowHandler: func(int) {}, -+ } -+ -+ // readerDone is closed when the Body.Read-ing goroutine exits. -+ readerDone := make(chan struct{}) -+ go func() { -+ defer close(readerDone) -+ -+ // TODO: minimize garbage, optimize recvBuffer code/ownership -+ const readSize = 8196 -+ for buf := make([]byte, readSize); ; { -+ n, err := req.Body.Read(buf) -+ if n > 0 { -+ s.buf.put(recvMsg{buffer: bytes.NewBuffer(buf[:n:n])}) -+ buf = buf[n:] -+ } -+ if err != nil { -+ s.buf.put(recvMsg{err: mapRecvMsgError(err)}) -+ return -+ } -+ if len(buf) == 0 { -+ buf = make([]byte, readSize) -+ } -+ } -+ }() -+ -+ // startStream is provided by the *grpc.Server's serveStreams. -+ // It starts a goroutine serving s and exits immediately. -+ // The goroutine that is started is the one that then calls -+ // into ht, calling WriteHeader, Write, WriteStatus, Close, etc. -+ startStream(s) -+ -+ ht.runStream() -+ close(requestOver) -+ -+ // Wait for reading goroutine to finish. -+ req.Body.Close() -+ <-readerDone -+} -+ -+func (ht *serverHandlerTransport) runStream() { -+ for { -+ select { -+ case fn := <-ht.writes: -+ fn() -+ case <-ht.closedCh: -+ return -+ } -+ } -+} -+ -+func (ht *serverHandlerTransport) IncrMsgSent() {} -+ -+func (ht *serverHandlerTransport) IncrMsgRecv() {} -+ -+func (ht *serverHandlerTransport) Drain(debugData string) { -+ panic("Drain() is not implemented") -+} -+ -+// mapRecvMsgError returns the non-nil err into the appropriate -+// error value as expected by callers of *grpc.parser.recvMsg. -+// In particular, in can only be: -+// - io.EOF -+// - io.ErrUnexpectedEOF -+// - of type transport.ConnectionError -+// - an error from the status package -+func mapRecvMsgError(err error) error { -+ if err == io.EOF || err == io.ErrUnexpectedEOF { -+ return err -+ } -+ if se, ok := err.(http2.StreamError); ok { -+ if code, ok := http2ErrConvTab[se.Code]; ok { -+ return status.Error(code, se.Error()) -+ } -+ } -+ if strings.Contains(err.Error(), "body closed by handler") { -+ return status.Error(codes.Canceled, err.Error()) -+ } -+ return connectionErrorf(true, err, err.Error()) -+} -diff --git a/vendor/google.golang.org/grpc/internal/transport/http2_client.go b/vendor/google.golang.org/grpc/internal/transport/http2_client.go -new file mode 100755 -index 0000000..326bf08 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/transport/http2_client.go -@@ -0,0 +1,1798 @@ -+/* -+ * -+ * 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 ( -+ "context" -+ "fmt" -+ "io" -+ "math" -+ "net" -+ "net/http" -+ "path/filepath" -+ "strconv" -+ "strings" -+ "sync" -+ "sync/atomic" -+ "time" -+ -+ "golang.org/x/net/http2" -+ "golang.org/x/net/http2/hpack" -+ "google.golang.org/grpc/codes" -+ "google.golang.org/grpc/credentials" -+ "google.golang.org/grpc/internal/channelz" -+ icredentials "google.golang.org/grpc/internal/credentials" -+ "google.golang.org/grpc/internal/grpclog" -+ "google.golang.org/grpc/internal/grpcsync" -+ "google.golang.org/grpc/internal/grpcutil" -+ imetadata "google.golang.org/grpc/internal/metadata" -+ istatus "google.golang.org/grpc/internal/status" -+ "google.golang.org/grpc/internal/syscall" -+ "google.golang.org/grpc/internal/transport/networktype" -+ "google.golang.org/grpc/keepalive" -+ "google.golang.org/grpc/metadata" -+ "google.golang.org/grpc/peer" -+ "google.golang.org/grpc/resolver" -+ "google.golang.org/grpc/stats" -+ "google.golang.org/grpc/status" -+) -+ -+// clientConnectionCounter counts the number of connections a client has -+// initiated (equal to the number of http2Clients created). Must be accessed -+// atomically. -+var clientConnectionCounter uint64 -+ -+// http2Client implements the ClientTransport interface with HTTP2. -+type http2Client struct { -+ lastRead int64 // Keep this field 64-bit aligned. Accessed atomically. -+ ctx context.Context -+ cancel context.CancelFunc -+ ctxDone <-chan struct{} // Cache the ctx.Done() chan. -+ userAgent string -+ // address contains the resolver returned address for this transport. -+ // If the `ServerName` field is set, it takes precedence over `CallHdr.Host` -+ // passed to `NewStream`, when determining the :authority header. -+ address resolver.Address -+ md metadata.MD -+ conn net.Conn // underlying communication channel -+ loopy *loopyWriter -+ remoteAddr net.Addr -+ localAddr net.Addr -+ authInfo credentials.AuthInfo // auth info about the connection -+ -+ readerDone chan struct{} // sync point to enable testing. -+ writerDone chan struct{} // sync point to enable testing. -+ // goAway is closed to notify the upper layer (i.e., addrConn.transportMonitor) -+ // that the server sent GoAway on this transport. -+ goAway chan struct{} -+ -+ framer *framer -+ // controlBuf delivers all the control related tasks (e.g., window -+ // updates, reset streams, and various settings) to the controller. -+ // Do not access controlBuf with mu held. -+ controlBuf *controlBuffer -+ fc *trInFlow -+ // The scheme used: https if TLS is on, http otherwise. -+ scheme string -+ -+ isSecure bool -+ -+ perRPCCreds []credentials.PerRPCCredentials -+ -+ kp keepalive.ClientParameters -+ keepaliveEnabled bool -+ -+ statsHandlers []stats.Handler -+ -+ initialWindowSize int32 -+ -+ // configured by peer through SETTINGS_MAX_HEADER_LIST_SIZE -+ maxSendHeaderListSize *uint32 -+ -+ bdpEst *bdpEstimator -+ -+ maxConcurrentStreams uint32 -+ streamQuota int64 -+ streamsQuotaAvailable chan struct{} -+ waitingStreams uint32 -+ nextID uint32 -+ registeredCompressors string -+ -+ // Do not access controlBuf with mu held. -+ mu sync.Mutex // guard the following variables -+ state transportState -+ activeStreams map[uint32]*Stream -+ // prevGoAway ID records the Last-Stream-ID in the previous GOAway frame. -+ prevGoAwayID uint32 -+ // goAwayReason records the http2.ErrCode and debug data received with the -+ // GoAway frame. -+ goAwayReason GoAwayReason -+ // goAwayDebugMessage contains a detailed human readable string about a -+ // GoAway frame, useful for error messages. -+ goAwayDebugMessage string -+ // A condition variable used to signal when the keepalive goroutine should -+ // go dormant. The condition for dormancy is based on the number of active -+ // streams and the `PermitWithoutStream` keepalive client parameter. And -+ // since the number of active streams is guarded by the above mutex, we use -+ // the same for this condition variable as well. -+ kpDormancyCond *sync.Cond -+ // A boolean to track whether the keepalive goroutine is dormant or not. -+ // This is checked before attempting to signal the above condition -+ // variable. -+ kpDormant bool -+ -+ // Fields below are for channelz metric collection. -+ channelzID *channelz.Identifier -+ czData *channelzData -+ -+ onClose func(GoAwayReason) -+ -+ bufferPool *bufferPool -+ -+ connectionID uint64 -+ logger *grpclog.PrefixLogger -+} -+ -+func dial(ctx context.Context, fn func(context.Context, string) (net.Conn, error), addr resolver.Address, useProxy bool, grpcUA string) (net.Conn, error) { -+ address := addr.Addr -+ networkType, ok := networktype.Get(addr) -+ if fn != nil { -+ // Special handling for unix scheme with custom dialer. Back in the day, -+ // we did not have a unix resolver and therefore targets with a unix -+ // scheme would end up using the passthrough resolver. So, user's used a -+ // custom dialer in this case and expected the original dial target to -+ // be passed to the custom dialer. Now, we have a unix resolver. But if -+ // a custom dialer is specified, we want to retain the old behavior in -+ // terms of the address being passed to the custom dialer. -+ if networkType == "unix" && !strings.HasPrefix(address, "\x00") { -+ // Supported unix targets are either "unix://absolute-path" or -+ // "unix:relative-path". -+ if filepath.IsAbs(address) { -+ return fn(ctx, "unix://"+address) -+ } -+ return fn(ctx, "unix:"+address) -+ } -+ return fn(ctx, address) -+ } -+ if !ok { -+ networkType, address = parseDialTarget(address) -+ } -+ if networkType == "tcp" && useProxy { -+ return proxyDial(ctx, address, grpcUA) -+ } -+ return (&net.Dialer{}).DialContext(ctx, networkType, address) -+} -+ -+func isTemporary(err error) bool { -+ switch err := err.(type) { -+ case interface { -+ Temporary() bool -+ }: -+ return err.Temporary() -+ case interface { -+ Timeout() bool -+ }: -+ // Timeouts may be resolved upon retry, and are thus treated as -+ // temporary. -+ return err.Timeout() -+ } -+ return true -+} -+ -+// newHTTP2Client constructs a connected ClientTransport to addr based on HTTP2 -+// and starts to receive messages on it. Non-nil error returns if construction -+// fails. -+func newHTTP2Client(connectCtx, ctx context.Context, addr resolver.Address, opts ConnectOptions, onClose func(GoAwayReason)) (_ *http2Client, err error) { -+ scheme := "http" -+ ctx, cancel := context.WithCancel(ctx) -+ defer func() { -+ if err != nil { -+ cancel() -+ } -+ }() -+ -+ // gRPC, resolver, balancer etc. can specify arbitrary data in the -+ // Attributes field of resolver.Address, which is shoved into connectCtx -+ // and passed to the dialer and credential handshaker. This makes it possible for -+ // address specific arbitrary data to reach custom dialers and credential handshakers. -+ connectCtx = icredentials.NewClientHandshakeInfoContext(connectCtx, credentials.ClientHandshakeInfo{Attributes: addr.Attributes}) -+ -+ conn, err := dial(connectCtx, opts.Dialer, addr, opts.UseProxy, opts.UserAgent) -+ if err != nil { -+ if opts.FailOnNonTempDialError { -+ return nil, connectionErrorf(isTemporary(err), err, "transport: error while dialing: %v", err) -+ } -+ return nil, connectionErrorf(true, err, "transport: Error while dialing: %v", err) -+ } -+ -+ // Any further errors will close the underlying connection -+ defer func(conn net.Conn) { -+ if err != nil { -+ conn.Close() -+ } -+ }(conn) -+ -+ // The following defer and goroutine monitor the connectCtx for cancelation -+ // and deadline. On context expiration, the connection is hard closed and -+ // this function will naturally fail as a result. Otherwise, the defer -+ // waits for the goroutine to exit to prevent the context from being -+ // monitored (and to prevent the connection from ever being closed) after -+ // returning from this function. -+ ctxMonitorDone := grpcsync.NewEvent() -+ newClientCtx, newClientDone := context.WithCancel(connectCtx) -+ defer func() { -+ newClientDone() // Awaken the goroutine below if connectCtx hasn't expired. -+ <-ctxMonitorDone.Done() // Wait for the goroutine below to exit. -+ }() -+ go func(conn net.Conn) { -+ defer ctxMonitorDone.Fire() // Signal this goroutine has exited. -+ <-newClientCtx.Done() // Block until connectCtx expires or the defer above executes. -+ if err := connectCtx.Err(); err != nil { -+ // connectCtx expired before exiting the function. Hard close the connection. -+ if logger.V(logLevel) { -+ logger.Infof("Aborting due to connect deadline expiring: %v", err) -+ } -+ conn.Close() -+ } -+ }(conn) -+ -+ kp := opts.KeepaliveParams -+ // Validate keepalive parameters. -+ if kp.Time == 0 { -+ kp.Time = defaultClientKeepaliveTime -+ } -+ if kp.Timeout == 0 { -+ kp.Timeout = defaultClientKeepaliveTimeout -+ } -+ keepaliveEnabled := false -+ if kp.Time != infinity { -+ if err = syscall.SetTCPUserTimeout(conn, kp.Timeout); err != nil { -+ return nil, connectionErrorf(false, err, "transport: failed to set TCP_USER_TIMEOUT: %v", err) -+ } -+ keepaliveEnabled = true -+ } -+ var ( -+ isSecure bool -+ authInfo credentials.AuthInfo -+ ) -+ transportCreds := opts.TransportCredentials -+ perRPCCreds := opts.PerRPCCredentials -+ -+ if b := opts.CredsBundle; b != nil { -+ if t := b.TransportCredentials(); t != nil { -+ transportCreds = t -+ } -+ if t := b.PerRPCCredentials(); t != nil { -+ perRPCCreds = append(perRPCCreds, t) -+ } -+ } -+ if transportCreds != nil { -+ conn, authInfo, err = transportCreds.ClientHandshake(connectCtx, addr.ServerName, conn) -+ if err != nil { -+ return nil, connectionErrorf(isTemporary(err), err, "transport: authentication handshake failed: %v", err) -+ } -+ for _, cd := range perRPCCreds { -+ if cd.RequireTransportSecurity() { -+ if ci, ok := authInfo.(interface { -+ GetCommonAuthInfo() credentials.CommonAuthInfo -+ }); ok { -+ secLevel := ci.GetCommonAuthInfo().SecurityLevel -+ if secLevel != credentials.InvalidSecurityLevel && secLevel < credentials.PrivacyAndIntegrity { -+ return nil, connectionErrorf(true, nil, "transport: cannot send secure credentials on an insecure connection") -+ } -+ } -+ } -+ } -+ isSecure = true -+ if transportCreds.Info().SecurityProtocol == "tls" { -+ scheme = "https" -+ } -+ } -+ dynamicWindow := true -+ icwz := int32(initialWindowSize) -+ if opts.InitialConnWindowSize >= defaultWindowSize { -+ icwz = opts.InitialConnWindowSize -+ dynamicWindow = false -+ } -+ writeBufSize := opts.WriteBufferSize -+ readBufSize := opts.ReadBufferSize -+ maxHeaderListSize := defaultClientMaxHeaderListSize -+ if opts.MaxHeaderListSize != nil { -+ maxHeaderListSize = *opts.MaxHeaderListSize -+ } -+ t := &http2Client{ -+ ctx: ctx, -+ ctxDone: ctx.Done(), // Cache Done chan. -+ cancel: cancel, -+ userAgent: opts.UserAgent, -+ registeredCompressors: grpcutil.RegisteredCompressors(), -+ address: addr, -+ conn: conn, -+ remoteAddr: conn.RemoteAddr(), -+ localAddr: conn.LocalAddr(), -+ authInfo: authInfo, -+ readerDone: make(chan struct{}), -+ writerDone: make(chan struct{}), -+ goAway: make(chan struct{}), -+ framer: newFramer(conn, writeBufSize, readBufSize, maxHeaderListSize), -+ fc: &trInFlow{limit: uint32(icwz)}, -+ scheme: scheme, -+ activeStreams: make(map[uint32]*Stream), -+ isSecure: isSecure, -+ perRPCCreds: perRPCCreds, -+ kp: kp, -+ statsHandlers: opts.StatsHandlers, -+ initialWindowSize: initialWindowSize, -+ nextID: 1, -+ maxConcurrentStreams: defaultMaxStreamsClient, -+ streamQuota: defaultMaxStreamsClient, -+ streamsQuotaAvailable: make(chan struct{}, 1), -+ czData: new(channelzData), -+ keepaliveEnabled: keepaliveEnabled, -+ bufferPool: newBufferPool(), -+ onClose: onClose, -+ } -+ t.logger = prefixLoggerForClientTransport(t) -+ // Add peer information to the http2client context. -+ t.ctx = peer.NewContext(t.ctx, t.getPeer()) -+ -+ if md, ok := addr.Metadata.(*metadata.MD); ok { -+ t.md = *md -+ } else if md := imetadata.Get(addr); md != nil { -+ t.md = md -+ } -+ t.controlBuf = newControlBuffer(t.ctxDone) -+ if opts.InitialWindowSize >= defaultWindowSize { -+ t.initialWindowSize = opts.InitialWindowSize -+ dynamicWindow = false -+ } -+ if dynamicWindow { -+ t.bdpEst = &bdpEstimator{ -+ bdp: initialWindowSize, -+ updateFlowControl: t.updateFlowControl, -+ } -+ } -+ for _, sh := range t.statsHandlers { -+ t.ctx = sh.TagConn(t.ctx, &stats.ConnTagInfo{ -+ RemoteAddr: t.remoteAddr, -+ LocalAddr: t.localAddr, -+ }) -+ connBegin := &stats.ConnBegin{ -+ Client: true, -+ } -+ sh.HandleConn(t.ctx, connBegin) -+ } -+ t.channelzID, err = channelz.RegisterNormalSocket(t, opts.ChannelzParentID, fmt.Sprintf("%s -> %s", t.localAddr, t.remoteAddr)) -+ if err != nil { -+ return nil, err -+ } -+ if t.keepaliveEnabled { -+ t.kpDormancyCond = sync.NewCond(&t.mu) -+ go t.keepalive() -+ } -+ -+ // Start the reader goroutine for incoming messages. Each transport has a -+ // dedicated goroutine which reads HTTP2 frames from the network. Then it -+ // dispatches the frame to the corresponding stream entity. When the -+ // server preface is received, readerErrCh is closed. If an error occurs -+ // first, an error is pushed to the channel. This must be checked before -+ // returning from this function. -+ readerErrCh := make(chan error, 1) -+ go t.reader(readerErrCh) -+ defer func() { -+ if err == nil { -+ err = <-readerErrCh -+ } -+ if err != nil { -+ t.Close(err) -+ } -+ }() -+ -+ // Send connection preface to server. -+ n, err := t.conn.Write(clientPreface) -+ if err != nil { -+ err = connectionErrorf(true, err, "transport: failed to write client preface: %v", err) -+ return nil, err -+ } -+ if n != len(clientPreface) { -+ err = connectionErrorf(true, nil, "transport: preface mismatch, wrote %d bytes; want %d", n, len(clientPreface)) -+ return nil, err -+ } -+ var ss []http2.Setting -+ -+ if t.initialWindowSize != defaultWindowSize { -+ ss = append(ss, http2.Setting{ -+ ID: http2.SettingInitialWindowSize, -+ Val: uint32(t.initialWindowSize), -+ }) -+ } -+ if opts.MaxHeaderListSize != nil { -+ ss = append(ss, http2.Setting{ -+ ID: http2.SettingMaxHeaderListSize, -+ Val: *opts.MaxHeaderListSize, -+ }) -+ } -+ err = t.framer.fr.WriteSettings(ss...) -+ if err != nil { -+ err = connectionErrorf(true, err, "transport: failed to write initial settings frame: %v", err) -+ return nil, err -+ } -+ // Adjust the connection flow control window if needed. -+ if delta := uint32(icwz - defaultWindowSize); delta > 0 { -+ if err := t.framer.fr.WriteWindowUpdate(0, delta); err != nil { -+ err = connectionErrorf(true, err, "transport: failed to write window update: %v", err) -+ return nil, err -+ } -+ } -+ -+ t.connectionID = atomic.AddUint64(&clientConnectionCounter, 1) -+ -+ if err := t.framer.writer.Flush(); err != nil { -+ return nil, err -+ } -+ go func() { -+ t.loopy = newLoopyWriter(clientSide, t.framer, t.controlBuf, t.bdpEst, t.conn, t.logger) -+ t.loopy.run() -+ close(t.writerDone) -+ }() -+ return t, nil -+} -+ -+func (t *http2Client) newStream(ctx context.Context, callHdr *CallHdr) *Stream { -+ // TODO(zhaoq): Handle uint32 overflow of Stream.id. -+ s := &Stream{ -+ ct: t, -+ done: make(chan struct{}), -+ method: callHdr.Method, -+ sendCompress: callHdr.SendCompress, -+ buf: newRecvBuffer(), -+ headerChan: make(chan struct{}), -+ contentSubtype: callHdr.ContentSubtype, -+ doneFunc: callHdr.DoneFunc, -+ } -+ s.wq = newWriteQuota(defaultWriteQuota, s.done) -+ s.requestRead = func(n int) { -+ t.adjustWindow(s, uint32(n)) -+ } -+ // The client side stream context should have exactly the same life cycle with the user provided context. -+ // That means, s.ctx should be read-only. And s.ctx is done iff ctx is done. -+ // So we use the original context here instead of creating a copy. -+ s.ctx = ctx -+ s.trReader = &transportReader{ -+ reader: &recvBufferReader{ -+ ctx: s.ctx, -+ ctxDone: s.ctx.Done(), -+ recv: s.buf, -+ closeStream: func(err error) { -+ t.CloseStream(s, err) -+ }, -+ freeBuffer: t.bufferPool.put, -+ }, -+ windowHandler: func(n int) { -+ t.updateWindow(s, uint32(n)) -+ }, -+ } -+ return s -+} -+ -+func (t *http2Client) getPeer() *peer.Peer { -+ return &peer.Peer{ -+ Addr: t.remoteAddr, -+ AuthInfo: t.authInfo, // Can be nil -+ } -+} -+ -+func (t *http2Client) createHeaderFields(ctx context.Context, callHdr *CallHdr) ([]hpack.HeaderField, error) { -+ aud := t.createAudience(callHdr) -+ ri := credentials.RequestInfo{ -+ Method: callHdr.Method, -+ AuthInfo: t.authInfo, -+ } -+ ctxWithRequestInfo := icredentials.NewRequestInfoContext(ctx, ri) -+ authData, err := t.getTrAuthData(ctxWithRequestInfo, aud) -+ if err != nil { -+ return nil, err -+ } -+ callAuthData, err := t.getCallAuthData(ctxWithRequestInfo, aud, callHdr) -+ if err != nil { -+ return nil, err -+ } -+ // TODO(mmukhi): Benchmark if the performance gets better if count the metadata and other header fields -+ // first and create a slice of that exact size. -+ // Make the slice of certain predictable size to reduce allocations made by append. -+ hfLen := 7 // :method, :scheme, :path, :authority, content-type, user-agent, te -+ hfLen += len(authData) + len(callAuthData) -+ headerFields := make([]hpack.HeaderField, 0, hfLen) -+ headerFields = append(headerFields, hpack.HeaderField{Name: ":method", Value: "POST"}) -+ headerFields = append(headerFields, hpack.HeaderField{Name: ":scheme", Value: t.scheme}) -+ headerFields = append(headerFields, hpack.HeaderField{Name: ":path", Value: callHdr.Method}) -+ headerFields = append(headerFields, hpack.HeaderField{Name: ":authority", Value: callHdr.Host}) -+ headerFields = append(headerFields, hpack.HeaderField{Name: "content-type", Value: grpcutil.ContentType(callHdr.ContentSubtype)}) -+ headerFields = append(headerFields, hpack.HeaderField{Name: "user-agent", Value: t.userAgent}) -+ headerFields = append(headerFields, hpack.HeaderField{Name: "te", Value: "trailers"}) -+ if callHdr.PreviousAttempts > 0 { -+ headerFields = append(headerFields, hpack.HeaderField{Name: "grpc-previous-rpc-attempts", Value: strconv.Itoa(callHdr.PreviousAttempts)}) -+ } -+ -+ registeredCompressors := t.registeredCompressors -+ if callHdr.SendCompress != "" { -+ headerFields = append(headerFields, hpack.HeaderField{Name: "grpc-encoding", Value: callHdr.SendCompress}) -+ // Include the outgoing compressor name when compressor is not registered -+ // via encoding.RegisterCompressor. This is possible when client uses -+ // WithCompressor dial option. -+ if !grpcutil.IsCompressorNameRegistered(callHdr.SendCompress) { -+ if registeredCompressors != "" { -+ registeredCompressors += "," -+ } -+ registeredCompressors += callHdr.SendCompress -+ } -+ } -+ -+ if registeredCompressors != "" { -+ headerFields = append(headerFields, hpack.HeaderField{Name: "grpc-accept-encoding", Value: registeredCompressors}) -+ } -+ if dl, ok := ctx.Deadline(); ok { -+ // Send out timeout regardless its value. The server can detect timeout context by itself. -+ // TODO(mmukhi): Perhaps this field should be updated when actually writing out to the wire. -+ timeout := time.Until(dl) -+ headerFields = append(headerFields, hpack.HeaderField{Name: "grpc-timeout", Value: grpcutil.EncodeDuration(timeout)}) -+ } -+ for k, v := range authData { -+ headerFields = append(headerFields, hpack.HeaderField{Name: k, Value: encodeMetadataHeader(k, v)}) -+ } -+ for k, v := range callAuthData { -+ headerFields = append(headerFields, hpack.HeaderField{Name: k, Value: encodeMetadataHeader(k, v)}) -+ } -+ if b := stats.OutgoingTags(ctx); b != nil { -+ headerFields = append(headerFields, hpack.HeaderField{Name: "grpc-tags-bin", Value: encodeBinHeader(b)}) -+ } -+ if b := stats.OutgoingTrace(ctx); b != nil { -+ headerFields = append(headerFields, hpack.HeaderField{Name: "grpc-trace-bin", Value: encodeBinHeader(b)}) -+ } -+ -+ if md, added, ok := metadata.FromOutgoingContextRaw(ctx); ok { -+ var k string -+ for k, vv := range md { -+ // HTTP doesn't allow you to set pseudoheaders after non pseudoheaders were set. -+ if isReservedHeader(k) { -+ continue -+ } -+ for _, v := range vv { -+ headerFields = append(headerFields, hpack.HeaderField{Name: k, Value: encodeMetadataHeader(k, v)}) -+ } -+ } -+ for _, vv := range added { -+ for i, v := range vv { -+ if i%2 == 0 { -+ k = strings.ToLower(v) -+ continue -+ } -+ // HTTP doesn't allow you to set pseudoheaders after non pseudoheaders were set. -+ if isReservedHeader(k) { -+ continue -+ } -+ headerFields = append(headerFields, hpack.HeaderField{Name: k, Value: encodeMetadataHeader(k, v)}) -+ } -+ } -+ } -+ for k, vv := range t.md { -+ if isReservedHeader(k) { -+ continue -+ } -+ for _, v := range vv { -+ headerFields = append(headerFields, hpack.HeaderField{Name: k, Value: encodeMetadataHeader(k, v)}) -+ } -+ } -+ return headerFields, nil -+} -+ -+func (t *http2Client) createAudience(callHdr *CallHdr) string { -+ // Create an audience string only if needed. -+ if len(t.perRPCCreds) == 0 && callHdr.Creds == nil { -+ return "" -+ } -+ // Construct URI required to get auth request metadata. -+ // Omit port if it is the default one. -+ host := strings.TrimSuffix(callHdr.Host, ":443") -+ pos := strings.LastIndex(callHdr.Method, "/") -+ if pos == -1 { -+ pos = len(callHdr.Method) -+ } -+ return "https://" + host + callHdr.Method[:pos] -+} -+ -+func (t *http2Client) getTrAuthData(ctx context.Context, audience string) (map[string]string, error) { -+ if len(t.perRPCCreds) == 0 { -+ return nil, nil -+ } -+ authData := map[string]string{} -+ for _, c := range t.perRPCCreds { -+ data, err := c.GetRequestMetadata(ctx, audience) -+ if err != nil { -+ if st, ok := status.FromError(err); ok { -+ // Restrict the code to the list allowed by gRFC A54. -+ if istatus.IsRestrictedControlPlaneCode(st) { -+ err = status.Errorf(codes.Internal, "transport: received per-RPC creds error with illegal status: %v", err) -+ } -+ return nil, err -+ } -+ -+ return nil, status.Errorf(codes.Unauthenticated, "transport: per-RPC creds failed due to error: %v", err) -+ } -+ for k, v := range data { -+ // Capital header names are illegal in HTTP/2. -+ k = strings.ToLower(k) -+ authData[k] = v -+ } -+ } -+ return authData, nil -+} -+ -+func (t *http2Client) getCallAuthData(ctx context.Context, audience string, callHdr *CallHdr) (map[string]string, error) { -+ var callAuthData map[string]string -+ // Check if credentials.PerRPCCredentials were provided via call options. -+ // Note: if these credentials are provided both via dial options and call -+ // options, then both sets of credentials will be applied. -+ if callCreds := callHdr.Creds; callCreds != nil { -+ if callCreds.RequireTransportSecurity() { -+ ri, _ := credentials.RequestInfoFromContext(ctx) -+ if !t.isSecure || credentials.CheckSecurityLevel(ri.AuthInfo, credentials.PrivacyAndIntegrity) != nil { -+ return nil, status.Error(codes.Unauthenticated, "transport: cannot send secure credentials on an insecure connection") -+ } -+ } -+ data, err := callCreds.GetRequestMetadata(ctx, audience) -+ if err != nil { -+ if st, ok := status.FromError(err); ok { -+ // Restrict the code to the list allowed by gRFC A54. -+ if istatus.IsRestrictedControlPlaneCode(st) { -+ err = status.Errorf(codes.Internal, "transport: received per-RPC creds error with illegal status: %v", err) -+ } -+ return nil, err -+ } -+ return nil, status.Errorf(codes.Internal, "transport: per-RPC creds failed due to error: %v", err) -+ } -+ callAuthData = make(map[string]string, len(data)) -+ for k, v := range data { -+ // Capital header names are illegal in HTTP/2 -+ k = strings.ToLower(k) -+ callAuthData[k] = v -+ } -+ } -+ return callAuthData, nil -+} -+ -+// NewStreamError wraps an error and reports additional information. Typically -+// NewStream errors result in transparent retry, as they mean nothing went onto -+// the wire. However, there are two notable exceptions: -+// -+// 1. If the stream headers violate the max header list size allowed by the -+// server. It's possible this could succeed on another transport, even if -+// it's unlikely, but do not transparently retry. -+// 2. If the credentials errored when requesting their headers. In this case, -+// it's possible a retry can fix the problem, but indefinitely transparently -+// retrying is not appropriate as it is likely the credentials, if they can -+// eventually succeed, would need I/O to do so. -+type NewStreamError struct { -+ Err error -+ -+ AllowTransparentRetry bool -+} -+ -+func (e NewStreamError) Error() string { -+ return e.Err.Error() -+} -+ -+// NewStream creates a stream and registers it into the transport as "active" -+// streams. All non-nil errors returned will be *NewStreamError. -+func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (*Stream, error) { -+ ctx = peer.NewContext(ctx, t.getPeer()) -+ -+ // ServerName field of the resolver returned address takes precedence over -+ // Host field of CallHdr to determine the :authority header. This is because, -+ // the ServerName field takes precedence for server authentication during -+ // TLS handshake, and the :authority header should match the value used -+ // for server authentication. -+ if t.address.ServerName != "" { -+ newCallHdr := *callHdr -+ newCallHdr.Host = t.address.ServerName -+ callHdr = &newCallHdr -+ } -+ -+ headerFields, err := t.createHeaderFields(ctx, callHdr) -+ if err != nil { -+ return nil, &NewStreamError{Err: err, AllowTransparentRetry: false} -+ } -+ s := t.newStream(ctx, callHdr) -+ cleanup := func(err error) { -+ if s.swapState(streamDone) == streamDone { -+ // If it was already done, return. -+ return -+ } -+ // The stream was unprocessed by the server. -+ atomic.StoreUint32(&s.unprocessed, 1) -+ s.write(recvMsg{err: err}) -+ close(s.done) -+ // If headerChan isn't closed, then close it. -+ if atomic.CompareAndSwapUint32(&s.headerChanClosed, 0, 1) { -+ close(s.headerChan) -+ } -+ } -+ hdr := &headerFrame{ -+ hf: headerFields, -+ endStream: false, -+ initStream: func(id uint32) error { -+ t.mu.Lock() -+ // TODO: handle transport closure in loopy instead and remove this -+ // initStream is never called when transport is draining. -+ if t.state == closing { -+ t.mu.Unlock() -+ cleanup(ErrConnClosing) -+ return ErrConnClosing -+ } -+ if channelz.IsOn() { -+ atomic.AddInt64(&t.czData.streamsStarted, 1) -+ atomic.StoreInt64(&t.czData.lastStreamCreatedTime, time.Now().UnixNano()) -+ } -+ // If the keepalive goroutine has gone dormant, wake it up. -+ if t.kpDormant { -+ t.kpDormancyCond.Signal() -+ } -+ t.mu.Unlock() -+ return nil -+ }, -+ onOrphaned: cleanup, -+ wq: s.wq, -+ } -+ firstTry := true -+ var ch chan struct{} -+ transportDrainRequired := false -+ checkForStreamQuota := func(it interface{}) bool { -+ if t.streamQuota <= 0 { // Can go negative if server decreases it. -+ if firstTry { -+ t.waitingStreams++ -+ } -+ ch = t.streamsQuotaAvailable -+ return false -+ } -+ if !firstTry { -+ t.waitingStreams-- -+ } -+ t.streamQuota-- -+ h := it.(*headerFrame) -+ h.streamID = t.nextID -+ t.nextID += 2 -+ -+ // Drain client transport if nextID > MaxStreamID which signals gRPC that -+ // the connection is closed and a new one must be created for subsequent RPCs. -+ transportDrainRequired = t.nextID > MaxStreamID -+ -+ s.id = h.streamID -+ s.fc = &inFlow{limit: uint32(t.initialWindowSize)} -+ t.mu.Lock() -+ if t.state == draining || t.activeStreams == nil { // Can be niled from Close(). -+ t.mu.Unlock() -+ return false // Don't create a stream if the transport is already closed. -+ } -+ t.activeStreams[s.id] = s -+ t.mu.Unlock() -+ if t.streamQuota > 0 && t.waitingStreams > 0 { -+ select { -+ case t.streamsQuotaAvailable <- struct{}{}: -+ default: -+ } -+ } -+ return true -+ } -+ var hdrListSizeErr error -+ checkForHeaderListSize := func(it interface{}) bool { -+ if t.maxSendHeaderListSize == nil { -+ return true -+ } -+ hdrFrame := it.(*headerFrame) -+ var sz int64 -+ for _, f := range hdrFrame.hf { -+ if sz += int64(f.Size()); sz > int64(*t.maxSendHeaderListSize) { -+ hdrListSizeErr = status.Errorf(codes.Internal, "header list size to send violates the maximum size (%d bytes) set by server", *t.maxSendHeaderListSize) -+ return false -+ } -+ } -+ return true -+ } -+ for { -+ success, err := t.controlBuf.executeAndPut(func(it interface{}) bool { -+ return checkForHeaderListSize(it) && checkForStreamQuota(it) -+ }, hdr) -+ if err != nil { -+ // Connection closed. -+ return nil, &NewStreamError{Err: err, AllowTransparentRetry: true} -+ } -+ if success { -+ break -+ } -+ if hdrListSizeErr != nil { -+ return nil, &NewStreamError{Err: hdrListSizeErr} -+ } -+ firstTry = false -+ select { -+ case <-ch: -+ case <-ctx.Done(): -+ return nil, &NewStreamError{Err: ContextErr(ctx.Err())} -+ case <-t.goAway: -+ return nil, &NewStreamError{Err: errStreamDrain, AllowTransparentRetry: true} -+ case <-t.ctx.Done(): -+ return nil, &NewStreamError{Err: ErrConnClosing, AllowTransparentRetry: true} -+ } -+ } -+ if len(t.statsHandlers) != 0 { -+ header, ok := metadata.FromOutgoingContext(ctx) -+ if ok { -+ header.Set("user-agent", t.userAgent) -+ } else { -+ header = metadata.Pairs("user-agent", t.userAgent) -+ } -+ for _, sh := range t.statsHandlers { -+ // Note: The header fields are compressed with hpack after this call returns. -+ // No WireLength field is set here. -+ // Note: Creating a new stats object to prevent pollution. -+ outHeader := &stats.OutHeader{ -+ Client: true, -+ FullMethod: callHdr.Method, -+ RemoteAddr: t.remoteAddr, -+ LocalAddr: t.localAddr, -+ Compression: callHdr.SendCompress, -+ Header: header, -+ } -+ sh.HandleRPC(s.ctx, outHeader) -+ } -+ } -+ if transportDrainRequired { -+ if t.logger.V(logLevel) { -+ t.logger.Infof("Draining transport: t.nextID > MaxStreamID") -+ } -+ t.GracefulClose() -+ } -+ return s, nil -+} -+ -+// CloseStream clears the footprint of a stream when the stream is not needed any more. -+// This must not be executed in reader's goroutine. -+func (t *http2Client) CloseStream(s *Stream, err error) { -+ var ( -+ rst bool -+ rstCode http2.ErrCode -+ ) -+ if err != nil { -+ rst = true -+ rstCode = http2.ErrCodeCancel -+ } -+ t.closeStream(s, err, rst, rstCode, status.Convert(err), nil, false) -+} -+ -+func (t *http2Client) closeStream(s *Stream, err error, rst bool, rstCode http2.ErrCode, st *status.Status, mdata map[string][]string, eosReceived bool) { -+ // Set stream status to done. -+ if s.swapState(streamDone) == streamDone { -+ // If it was already done, return. If multiple closeStream calls -+ // happen simultaneously, wait for the first to finish. -+ <-s.done -+ return -+ } -+ // status and trailers can be updated here without any synchronization because the stream goroutine will -+ // only read it after it sees an io.EOF error from read or write and we'll write those errors -+ // only after updating this. -+ s.status = st -+ if len(mdata) > 0 { -+ s.trailer = mdata -+ } -+ if err != nil { -+ // This will unblock reads eventually. -+ s.write(recvMsg{err: err}) -+ } -+ // If headerChan isn't closed, then close it. -+ if atomic.CompareAndSwapUint32(&s.headerChanClosed, 0, 1) { -+ s.noHeaders = true -+ close(s.headerChan) -+ } -+ cleanup := &cleanupStream{ -+ streamID: s.id, -+ onWrite: func() { -+ t.mu.Lock() -+ if t.activeStreams != nil { -+ delete(t.activeStreams, s.id) -+ } -+ t.mu.Unlock() -+ if channelz.IsOn() { -+ if eosReceived { -+ atomic.AddInt64(&t.czData.streamsSucceeded, 1) -+ } else { -+ atomic.AddInt64(&t.czData.streamsFailed, 1) -+ } -+ } -+ }, -+ rst: rst, -+ rstCode: rstCode, -+ } -+ addBackStreamQuota := func(interface{}) bool { -+ t.streamQuota++ -+ if t.streamQuota > 0 && t.waitingStreams > 0 { -+ select { -+ case t.streamsQuotaAvailable <- struct{}{}: -+ default: -+ } -+ } -+ return true -+ } -+ t.controlBuf.executeAndPut(addBackStreamQuota, cleanup) -+ // This will unblock write. -+ close(s.done) -+ if s.doneFunc != nil { -+ s.doneFunc() -+ } -+} -+ -+// Close kicks off the shutdown process of the transport. This should be called -+// only once on a transport. Once it is called, the transport should not be -+// accessed any more. -+func (t *http2Client) Close(err error) { -+ t.mu.Lock() -+ // Make sure we only close once. -+ if t.state == closing { -+ t.mu.Unlock() -+ return -+ } -+ if t.logger.V(logLevel) { -+ t.logger.Infof("Closing: %v", err) -+ } -+ // Call t.onClose ASAP to prevent the client from attempting to create new -+ // streams. -+ if t.state != draining { -+ t.onClose(GoAwayInvalid) -+ } -+ t.state = closing -+ streams := t.activeStreams -+ t.activeStreams = nil -+ if t.kpDormant { -+ // If the keepalive goroutine is blocked on this condition variable, we -+ // should unblock it so that the goroutine eventually exits. -+ t.kpDormancyCond.Signal() -+ } -+ t.mu.Unlock() -+ t.controlBuf.finish() -+ t.cancel() -+ t.conn.Close() -+ channelz.RemoveEntry(t.channelzID) -+ // Append info about previous goaways if there were any, since this may be important -+ // for understanding the root cause for this connection to be closed. -+ _, goAwayDebugMessage := t.GetGoAwayReason() -+ -+ var st *status.Status -+ if len(goAwayDebugMessage) > 0 { -+ st = status.Newf(codes.Unavailable, "closing transport due to: %v, received prior goaway: %v", err, goAwayDebugMessage) -+ err = st.Err() -+ } else { -+ st = status.New(codes.Unavailable, err.Error()) -+ } -+ -+ // Notify all active streams. -+ for _, s := range streams { -+ t.closeStream(s, err, false, http2.ErrCodeNo, st, nil, false) -+ } -+ for _, sh := range t.statsHandlers { -+ connEnd := &stats.ConnEnd{ -+ Client: true, -+ } -+ sh.HandleConn(t.ctx, connEnd) -+ } -+} -+ -+// GracefulClose sets the state to draining, which prevents new streams from -+// being created and causes the transport to be closed when the last active -+// stream is closed. If there are no active streams, the transport is closed -+// immediately. This does nothing if the transport is already draining or -+// closing. -+func (t *http2Client) GracefulClose() { -+ t.mu.Lock() -+ // Make sure we move to draining only from active. -+ if t.state == draining || t.state == closing { -+ t.mu.Unlock() -+ return -+ } -+ if t.logger.V(logLevel) { -+ t.logger.Infof("GracefulClose called") -+ } -+ t.onClose(GoAwayInvalid) -+ t.state = draining -+ active := len(t.activeStreams) -+ t.mu.Unlock() -+ if active == 0 { -+ t.Close(connectionErrorf(true, nil, "no active streams left to process while draining")) -+ return -+ } -+ t.controlBuf.put(&incomingGoAway{}) -+} -+ -+// Write formats the data into HTTP2 data frame(s) and sends it out. The caller -+// should proceed only if Write returns nil. -+func (t *http2Client) Write(s *Stream, hdr []byte, data []byte, opts *Options) error { -+ if opts.Last { -+ // If it's the last message, update stream state. -+ if !s.compareAndSwapState(streamActive, streamWriteDone) { -+ return errStreamDone -+ } -+ } else if s.getState() != streamActive { -+ return errStreamDone -+ } -+ df := &dataFrame{ -+ streamID: s.id, -+ endStream: opts.Last, -+ h: hdr, -+ d: data, -+ } -+ if hdr != nil || data != nil { // If it's not an empty data frame, check quota. -+ if err := s.wq.get(int32(len(hdr) + len(data))); err != nil { -+ return err -+ } -+ } -+ return t.controlBuf.put(df) -+} -+ -+func (t *http2Client) getStream(f http2.Frame) *Stream { -+ t.mu.Lock() -+ s := t.activeStreams[f.Header().StreamID] -+ t.mu.Unlock() -+ return s -+} -+ -+// adjustWindow sends out extra window update over the initial window size -+// of stream if the application is requesting data larger in size than -+// the window. -+func (t *http2Client) adjustWindow(s *Stream, n uint32) { -+ if w := s.fc.maybeAdjust(n); w > 0 { -+ t.controlBuf.put(&outgoingWindowUpdate{streamID: s.id, increment: w}) -+ } -+} -+ -+// updateWindow adjusts the inbound quota for the stream. -+// Window updates will be sent out when the cumulative quota -+// exceeds the corresponding threshold. -+func (t *http2Client) updateWindow(s *Stream, n uint32) { -+ if w := s.fc.onRead(n); w > 0 { -+ t.controlBuf.put(&outgoingWindowUpdate{streamID: s.id, increment: w}) -+ } -+} -+ -+// updateFlowControl updates the incoming flow control windows -+// for the transport and the stream based on the current bdp -+// estimation. -+func (t *http2Client) updateFlowControl(n uint32) { -+ updateIWS := func(interface{}) bool { -+ t.initialWindowSize = int32(n) -+ t.mu.Lock() -+ for _, s := range t.activeStreams { -+ s.fc.newLimit(n) -+ } -+ t.mu.Unlock() -+ return true -+ } -+ t.controlBuf.executeAndPut(updateIWS, &outgoingWindowUpdate{streamID: 0, increment: t.fc.newLimit(n)}) -+ t.controlBuf.put(&outgoingSettings{ -+ ss: []http2.Setting{ -+ { -+ ID: http2.SettingInitialWindowSize, -+ Val: n, -+ }, -+ }, -+ }) -+} -+ -+func (t *http2Client) handleData(f *http2.DataFrame) { -+ size := f.Header().Length -+ var sendBDPPing bool -+ if t.bdpEst != nil { -+ sendBDPPing = t.bdpEst.add(size) -+ } -+ // Decouple connection's flow control from application's read. -+ // An update on connection's flow control should not depend on -+ // whether user application has read the data or not. Such a -+ // restriction is already imposed on the stream's flow control, -+ // and therefore the sender will be blocked anyways. -+ // Decoupling the connection flow control will prevent other -+ // active(fast) streams from starving in presence of slow or -+ // inactive streams. -+ // -+ if w := t.fc.onData(size); w > 0 { -+ t.controlBuf.put(&outgoingWindowUpdate{ -+ streamID: 0, -+ increment: w, -+ }) -+ } -+ if sendBDPPing { -+ // Avoid excessive ping detection (e.g. in an L7 proxy) -+ // by sending a window update prior to the BDP ping. -+ -+ if w := t.fc.reset(); w > 0 { -+ t.controlBuf.put(&outgoingWindowUpdate{ -+ streamID: 0, -+ increment: w, -+ }) -+ } -+ -+ t.controlBuf.put(bdpPing) -+ } -+ // Select the right stream to dispatch. -+ s := t.getStream(f) -+ if s == nil { -+ return -+ } -+ if size > 0 { -+ if err := s.fc.onData(size); err != nil { -+ t.closeStream(s, io.EOF, true, http2.ErrCodeFlowControl, status.New(codes.Internal, err.Error()), nil, false) -+ return -+ } -+ if f.Header().Flags.Has(http2.FlagDataPadded) { -+ if w := s.fc.onRead(size - uint32(len(f.Data()))); w > 0 { -+ t.controlBuf.put(&outgoingWindowUpdate{s.id, w}) -+ } -+ } -+ // TODO(bradfitz, zhaoq): A copy is required here because there is no -+ // guarantee f.Data() is consumed before the arrival of next frame. -+ // Can this copy be eliminated? -+ if len(f.Data()) > 0 { -+ buffer := t.bufferPool.get() -+ buffer.Reset() -+ buffer.Write(f.Data()) -+ s.write(recvMsg{buffer: buffer}) -+ } -+ } -+ // The server has closed the stream without sending trailers. Record that -+ // the read direction is closed, and set the status appropriately. -+ if f.StreamEnded() { -+ t.closeStream(s, io.EOF, false, http2.ErrCodeNo, status.New(codes.Internal, "server closed the stream without sending trailers"), nil, true) -+ } -+} -+ -+func (t *http2Client) handleRSTStream(f *http2.RSTStreamFrame) { -+ s := t.getStream(f) -+ if s == nil { -+ return -+ } -+ if f.ErrCode == http2.ErrCodeRefusedStream { -+ // The stream was unprocessed by the server. -+ atomic.StoreUint32(&s.unprocessed, 1) -+ } -+ statusCode, ok := http2ErrConvTab[f.ErrCode] -+ if !ok { -+ if t.logger.V(logLevel) { -+ t.logger.Infof("Received a RST_STREAM frame with code %q, but found no mapped gRPC status", f.ErrCode) -+ } -+ statusCode = codes.Unknown -+ } -+ if statusCode == codes.Canceled { -+ if d, ok := s.ctx.Deadline(); ok && !d.After(time.Now()) { -+ // Our deadline was already exceeded, and that was likely the cause -+ // of this cancelation. Alter the status code accordingly. -+ statusCode = codes.DeadlineExceeded -+ } -+ } -+ t.closeStream(s, io.EOF, false, http2.ErrCodeNo, status.Newf(statusCode, "stream terminated by RST_STREAM with error code: %v", f.ErrCode), nil, false) -+} -+ -+func (t *http2Client) handleSettings(f *http2.SettingsFrame, isFirst bool) { -+ if f.IsAck() { -+ return -+ } -+ var maxStreams *uint32 -+ var ss []http2.Setting -+ var updateFuncs []func() -+ f.ForeachSetting(func(s http2.Setting) error { -+ switch s.ID { -+ case http2.SettingMaxConcurrentStreams: -+ maxStreams = new(uint32) -+ *maxStreams = s.Val -+ case http2.SettingMaxHeaderListSize: -+ updateFuncs = append(updateFuncs, func() { -+ t.maxSendHeaderListSize = new(uint32) -+ *t.maxSendHeaderListSize = s.Val -+ }) -+ default: -+ ss = append(ss, s) -+ } -+ return nil -+ }) -+ if isFirst && maxStreams == nil { -+ maxStreams = new(uint32) -+ *maxStreams = math.MaxUint32 -+ } -+ sf := &incomingSettings{ -+ ss: ss, -+ } -+ if maxStreams != nil { -+ updateStreamQuota := func() { -+ delta := int64(*maxStreams) - int64(t.maxConcurrentStreams) -+ t.maxConcurrentStreams = *maxStreams -+ t.streamQuota += delta -+ if delta > 0 && t.waitingStreams > 0 { -+ close(t.streamsQuotaAvailable) // wake all of them up. -+ t.streamsQuotaAvailable = make(chan struct{}, 1) -+ } -+ } -+ updateFuncs = append(updateFuncs, updateStreamQuota) -+ } -+ t.controlBuf.executeAndPut(func(interface{}) bool { -+ for _, f := range updateFuncs { -+ f() -+ } -+ return true -+ }, sf) -+} -+ -+func (t *http2Client) handlePing(f *http2.PingFrame) { -+ if f.IsAck() { -+ // Maybe it's a BDP ping. -+ if t.bdpEst != nil { -+ t.bdpEst.calculate(f.Data) -+ } -+ return -+ } -+ pingAck := &ping{ack: true} -+ copy(pingAck.data[:], f.Data[:]) -+ t.controlBuf.put(pingAck) -+} -+ -+func (t *http2Client) handleGoAway(f *http2.GoAwayFrame) { -+ t.mu.Lock() -+ if t.state == closing { -+ t.mu.Unlock() -+ return -+ } -+ if f.ErrCode == http2.ErrCodeEnhanceYourCalm && string(f.DebugData()) == "too_many_pings" { -+ // When a client receives a GOAWAY with error code ENHANCE_YOUR_CALM and debug -+ // data equal to ASCII "too_many_pings", it should log the occurrence at a log level that is -+ // enabled by default and double the configure KEEPALIVE_TIME used for new connections -+ // on that channel. -+ logger.Errorf("Client received GoAway with error code ENHANCE_YOUR_CALM and debug data equal to ASCII \"too_many_pings\".") -+ } -+ id := f.LastStreamID -+ if id > 0 && id%2 == 0 { -+ t.mu.Unlock() -+ t.Close(connectionErrorf(true, nil, "received goaway with non-zero even-numbered numbered stream id: %v", id)) -+ return -+ } -+ // A client can receive multiple GoAways from the server (see -+ // https://github.com/grpc/grpc-go/issues/1387). The idea is that the first -+ // GoAway will be sent with an ID of MaxInt32 and the second GoAway will be -+ // sent after an RTT delay with the ID of the last stream the server will -+ // process. -+ // -+ // Therefore, when we get the first GoAway we don't necessarily close any -+ // streams. While in case of second GoAway we close all streams created after -+ // the GoAwayId. This way streams that were in-flight while the GoAway from -+ // server was being sent don't get killed. -+ select { -+ case <-t.goAway: // t.goAway has been closed (i.e.,multiple GoAways). -+ // If there are multiple GoAways the first one should always have an ID greater than the following ones. -+ if id > t.prevGoAwayID { -+ t.mu.Unlock() -+ t.Close(connectionErrorf(true, nil, "received goaway with stream id: %v, which exceeds stream id of previous goaway: %v", id, t.prevGoAwayID)) -+ return -+ } -+ default: -+ t.setGoAwayReason(f) -+ close(t.goAway) -+ defer t.controlBuf.put(&incomingGoAway{}) // Defer as t.mu is currently held. -+ // Notify the clientconn about the GOAWAY before we set the state to -+ // draining, to allow the client to stop attempting to create streams -+ // before disallowing new streams on this connection. -+ if t.state != draining { -+ t.onClose(t.goAwayReason) -+ t.state = draining -+ } -+ } -+ // All streams with IDs greater than the GoAwayId -+ // and smaller than the previous GoAway ID should be killed. -+ upperLimit := t.prevGoAwayID -+ if upperLimit == 0 { // This is the first GoAway Frame. -+ upperLimit = math.MaxUint32 // Kill all streams after the GoAway ID. -+ } -+ -+ t.prevGoAwayID = id -+ if len(t.activeStreams) == 0 { -+ t.mu.Unlock() -+ t.Close(connectionErrorf(true, nil, "received goaway and there are no active streams")) -+ return -+ } -+ -+ streamsToClose := make([]*Stream, 0) -+ for streamID, stream := range t.activeStreams { -+ if streamID > id && streamID <= upperLimit { -+ // The stream was unprocessed by the server. -+ if streamID > id && streamID <= upperLimit { -+ atomic.StoreUint32(&stream.unprocessed, 1) -+ streamsToClose = append(streamsToClose, stream) -+ } -+ } -+ } -+ t.mu.Unlock() -+ // Called outside t.mu because closeStream can take controlBuf's mu, which -+ // could induce deadlock and is not allowed. -+ for _, stream := range streamsToClose { -+ t.closeStream(stream, errStreamDrain, false, http2.ErrCodeNo, statusGoAway, nil, false) -+ } -+} -+ -+// setGoAwayReason sets the value of t.goAwayReason based -+// on the GoAway frame received. -+// It expects a lock on transport's mutex to be held by -+// the caller. -+func (t *http2Client) setGoAwayReason(f *http2.GoAwayFrame) { -+ t.goAwayReason = GoAwayNoReason -+ switch f.ErrCode { -+ case http2.ErrCodeEnhanceYourCalm: -+ if string(f.DebugData()) == "too_many_pings" { -+ t.goAwayReason = GoAwayTooManyPings -+ } -+ } -+ if len(f.DebugData()) == 0 { -+ t.goAwayDebugMessage = fmt.Sprintf("code: %s", f.ErrCode) -+ } else { -+ t.goAwayDebugMessage = fmt.Sprintf("code: %s, debug data: %q", f.ErrCode, string(f.DebugData())) -+ } -+} -+ -+func (t *http2Client) GetGoAwayReason() (GoAwayReason, string) { -+ t.mu.Lock() -+ defer t.mu.Unlock() -+ return t.goAwayReason, t.goAwayDebugMessage -+} -+ -+func (t *http2Client) handleWindowUpdate(f *http2.WindowUpdateFrame) { -+ t.controlBuf.put(&incomingWindowUpdate{ -+ streamID: f.Header().StreamID, -+ increment: f.Increment, -+ }) -+} -+ -+// operateHeaders takes action on the decoded headers. -+func (t *http2Client) operateHeaders(frame *http2.MetaHeadersFrame) { -+ s := t.getStream(frame) -+ if s == nil { -+ return -+ } -+ endStream := frame.StreamEnded() -+ atomic.StoreUint32(&s.bytesReceived, 1) -+ initialHeader := atomic.LoadUint32(&s.headerChanClosed) == 0 -+ -+ if !initialHeader && !endStream { -+ // As specified by gRPC over HTTP2, a HEADERS frame (and associated CONTINUATION frames) can only appear at the start or end of a stream. Therefore, second HEADERS frame must have EOS bit set. -+ st := status.New(codes.Internal, "a HEADERS frame cannot appear in the middle of a stream") -+ t.closeStream(s, st.Err(), true, http2.ErrCodeProtocol, st, nil, false) -+ return -+ } -+ -+ // frame.Truncated is set to true when framer detects that the current header -+ // list size hits MaxHeaderListSize limit. -+ if frame.Truncated { -+ se := status.New(codes.Internal, "peer header list size exceeded limit") -+ t.closeStream(s, se.Err(), true, http2.ErrCodeFrameSize, se, nil, endStream) -+ return -+ } -+ -+ var ( -+ // If a gRPC Response-Headers has already been received, then it means -+ // that the peer is speaking gRPC and we are in gRPC mode. -+ isGRPC = !initialHeader -+ mdata = make(map[string][]string) -+ contentTypeErr = "malformed header: missing HTTP content-type" -+ grpcMessage string -+ statusGen *status.Status -+ recvCompress string -+ httpStatusCode *int -+ httpStatusErr string -+ rawStatusCode = codes.Unknown -+ // headerError is set if an error is encountered while parsing the headers -+ headerError string -+ ) -+ -+ if initialHeader { -+ httpStatusErr = "malformed header: missing HTTP status" -+ } -+ -+ for _, hf := range frame.Fields { -+ switch hf.Name { -+ case "content-type": -+ if _, validContentType := grpcutil.ContentSubtype(hf.Value); !validContentType { -+ contentTypeErr = fmt.Sprintf("transport: received unexpected content-type %q", hf.Value) -+ break -+ } -+ contentTypeErr = "" -+ mdata[hf.Name] = append(mdata[hf.Name], hf.Value) -+ isGRPC = true -+ case "grpc-encoding": -+ recvCompress = hf.Value -+ case "grpc-status": -+ code, err := strconv.ParseInt(hf.Value, 10, 32) -+ if err != nil { -+ se := status.New(codes.Internal, fmt.Sprintf("transport: malformed grpc-status: %v", err)) -+ t.closeStream(s, se.Err(), true, http2.ErrCodeProtocol, se, nil, endStream) -+ return -+ } -+ rawStatusCode = codes.Code(uint32(code)) -+ case "grpc-message": -+ grpcMessage = decodeGrpcMessage(hf.Value) -+ case "grpc-status-details-bin": -+ var err error -+ statusGen, err = decodeGRPCStatusDetails(hf.Value) -+ if err != nil { -+ headerError = fmt.Sprintf("transport: malformed grpc-status-details-bin: %v", err) -+ } -+ case ":status": -+ if hf.Value == "200" { -+ httpStatusErr = "" -+ statusCode := 200 -+ httpStatusCode = &statusCode -+ break -+ } -+ -+ c, err := strconv.ParseInt(hf.Value, 10, 32) -+ if err != nil { -+ se := status.New(codes.Internal, fmt.Sprintf("transport: malformed http-status: %v", err)) -+ t.closeStream(s, se.Err(), true, http2.ErrCodeProtocol, se, nil, endStream) -+ return -+ } -+ statusCode := int(c) -+ httpStatusCode = &statusCode -+ -+ httpStatusErr = fmt.Sprintf( -+ "unexpected HTTP status code received from server: %d (%s)", -+ statusCode, -+ http.StatusText(statusCode), -+ ) -+ default: -+ if isReservedHeader(hf.Name) && !isWhitelistedHeader(hf.Name) { -+ break -+ } -+ v, err := decodeMetadataHeader(hf.Name, hf.Value) -+ if err != nil { -+ headerError = fmt.Sprintf("transport: malformed %s: %v", hf.Name, err) -+ logger.Warningf("Failed to decode metadata header (%q, %q): %v", hf.Name, hf.Value, err) -+ break -+ } -+ mdata[hf.Name] = append(mdata[hf.Name], v) -+ } -+ } -+ -+ if !isGRPC || httpStatusErr != "" { -+ var code = codes.Internal // when header does not include HTTP status, return INTERNAL -+ -+ if httpStatusCode != nil { -+ var ok bool -+ code, ok = HTTPStatusConvTab[*httpStatusCode] -+ if !ok { -+ code = codes.Unknown -+ } -+ } -+ var errs []string -+ if httpStatusErr != "" { -+ errs = append(errs, httpStatusErr) -+ } -+ if contentTypeErr != "" { -+ errs = append(errs, contentTypeErr) -+ } -+ // Verify the HTTP response is a 200. -+ se := status.New(code, strings.Join(errs, "; ")) -+ t.closeStream(s, se.Err(), true, http2.ErrCodeProtocol, se, nil, endStream) -+ return -+ } -+ -+ if headerError != "" { -+ se := status.New(codes.Internal, headerError) -+ t.closeStream(s, se.Err(), true, http2.ErrCodeProtocol, se, nil, endStream) -+ return -+ } -+ -+ isHeader := false -+ -+ // If headerChan hasn't been closed yet -+ if atomic.CompareAndSwapUint32(&s.headerChanClosed, 0, 1) { -+ s.headerValid = true -+ if !endStream { -+ // HEADERS frame block carries a Response-Headers. -+ isHeader = true -+ // These values can be set without any synchronization because -+ // stream goroutine will read it only after seeing a closed -+ // headerChan which we'll close after setting this. -+ s.recvCompress = recvCompress -+ if len(mdata) > 0 { -+ s.header = mdata -+ } -+ } else { -+ // HEADERS frame block carries a Trailers-Only. -+ s.noHeaders = true -+ } -+ close(s.headerChan) -+ } -+ -+ for _, sh := range t.statsHandlers { -+ if isHeader { -+ inHeader := &stats.InHeader{ -+ Client: true, -+ WireLength: int(frame.Header().Length), -+ Header: metadata.MD(mdata).Copy(), -+ Compression: s.recvCompress, -+ } -+ sh.HandleRPC(s.ctx, inHeader) -+ } else { -+ inTrailer := &stats.InTrailer{ -+ Client: true, -+ WireLength: int(frame.Header().Length), -+ Trailer: metadata.MD(mdata).Copy(), -+ } -+ sh.HandleRPC(s.ctx, inTrailer) -+ } -+ } -+ -+ if !endStream { -+ return -+ } -+ -+ if statusGen == nil { -+ statusGen = status.New(rawStatusCode, grpcMessage) -+ } -+ -+ // if client received END_STREAM from server while stream was still active, send RST_STREAM -+ rst := s.getState() == streamActive -+ t.closeStream(s, io.EOF, rst, http2.ErrCodeNo, statusGen, mdata, true) -+} -+ -+// readServerPreface reads and handles the initial settings frame from the -+// server. -+func (t *http2Client) readServerPreface() error { -+ frame, err := t.framer.fr.ReadFrame() -+ if err != nil { -+ return connectionErrorf(true, err, "error reading server preface: %v", err) -+ } -+ sf, ok := frame.(*http2.SettingsFrame) -+ if !ok { -+ return connectionErrorf(true, nil, "initial http2 frame from server is not a settings frame: %T", frame) -+ } -+ t.handleSettings(sf, true) -+ return nil -+} -+ -+// reader verifies the server preface and reads all subsequent data from -+// network connection. If the server preface is not read successfully, an -+// error is pushed to errCh; otherwise errCh is closed with no error. -+func (t *http2Client) reader(errCh chan<- error) { -+ defer close(t.readerDone) -+ -+ if err := t.readServerPreface(); err != nil { -+ errCh <- err -+ return -+ } -+ close(errCh) -+ if t.keepaliveEnabled { -+ atomic.StoreInt64(&t.lastRead, time.Now().UnixNano()) -+ } -+ -+ // loop to keep reading incoming messages on this transport. -+ for { -+ t.controlBuf.throttle() -+ frame, err := t.framer.fr.ReadFrame() -+ if t.keepaliveEnabled { -+ atomic.StoreInt64(&t.lastRead, time.Now().UnixNano()) -+ } -+ if err != nil { -+ // Abort an active stream if the http2.Framer returns a -+ // http2.StreamError. This can happen only if the server's response -+ // is malformed http2. -+ if se, ok := err.(http2.StreamError); ok { -+ t.mu.Lock() -+ s := t.activeStreams[se.StreamID] -+ t.mu.Unlock() -+ if s != nil { -+ // use error detail to provide better err message -+ code := http2ErrConvTab[se.Code] -+ errorDetail := t.framer.fr.ErrorDetail() -+ var msg string -+ if errorDetail != nil { -+ msg = errorDetail.Error() -+ } else { -+ msg = "received invalid frame" -+ } -+ t.closeStream(s, status.Error(code, msg), true, http2.ErrCodeProtocol, status.New(code, msg), nil, false) -+ } -+ continue -+ } else { -+ // Transport error. -+ t.Close(connectionErrorf(true, err, "error reading from server: %v", err)) -+ return -+ } -+ } -+ switch frame := frame.(type) { -+ case *http2.MetaHeadersFrame: -+ t.operateHeaders(frame) -+ case *http2.DataFrame: -+ t.handleData(frame) -+ case *http2.RSTStreamFrame: -+ t.handleRSTStream(frame) -+ case *http2.SettingsFrame: -+ t.handleSettings(frame, false) -+ case *http2.PingFrame: -+ t.handlePing(frame) -+ case *http2.GoAwayFrame: -+ t.handleGoAway(frame) -+ case *http2.WindowUpdateFrame: -+ t.handleWindowUpdate(frame) -+ default: -+ if logger.V(logLevel) { -+ logger.Errorf("transport: http2Client.reader got unhandled frame type %v.", frame) -+ } -+ } -+ } -+} -+ -+func minTime(a, b time.Duration) time.Duration { -+ if a < b { -+ return a -+ } -+ return b -+} -+ -+// keepalive running in a separate goroutine makes sure the connection is alive by sending pings. -+func (t *http2Client) keepalive() { -+ p := &ping{data: [8]byte{}} -+ // True iff a ping has been sent, and no data has been received since then. -+ outstandingPing := false -+ // Amount of time remaining before which we should receive an ACK for the -+ // last sent ping. -+ timeoutLeft := time.Duration(0) -+ // Records the last value of t.lastRead before we go block on the timer. -+ // This is required to check for read activity since then. -+ prevNano := time.Now().UnixNano() -+ timer := time.NewTimer(t.kp.Time) -+ for { -+ select { -+ case <-timer.C: -+ lastRead := atomic.LoadInt64(&t.lastRead) -+ if lastRead > prevNano { -+ // There has been read activity since the last time we were here. -+ outstandingPing = false -+ // Next timer should fire at kp.Time seconds from lastRead time. -+ timer.Reset(time.Duration(lastRead) + t.kp.Time - time.Duration(time.Now().UnixNano())) -+ prevNano = lastRead -+ continue -+ } -+ if outstandingPing && timeoutLeft <= 0 { -+ t.Close(connectionErrorf(true, nil, "keepalive ping failed to receive ACK within timeout")) -+ return -+ } -+ t.mu.Lock() -+ if t.state == closing { -+ // If the transport is closing, we should exit from the -+ // keepalive goroutine here. If not, we could have a race -+ // between the call to Signal() from Close() and the call to -+ // Wait() here, whereby the keepalive goroutine ends up -+ // blocking on the condition variable which will never be -+ // signalled again. -+ t.mu.Unlock() -+ return -+ } -+ if len(t.activeStreams) < 1 && !t.kp.PermitWithoutStream { -+ // If a ping was sent out previously (because there were active -+ // streams at that point) which wasn't acked and its timeout -+ // hadn't fired, but we got here and are about to go dormant, -+ // we should make sure that we unconditionally send a ping once -+ // we awaken. -+ outstandingPing = false -+ t.kpDormant = true -+ t.kpDormancyCond.Wait() -+ } -+ t.kpDormant = false -+ t.mu.Unlock() -+ -+ // We get here either because we were dormant and a new stream was -+ // created which unblocked the Wait() call, or because the -+ // keepalive timer expired. In both cases, we need to send a ping. -+ if !outstandingPing { -+ if channelz.IsOn() { -+ atomic.AddInt64(&t.czData.kpCount, 1) -+ } -+ t.controlBuf.put(p) -+ timeoutLeft = t.kp.Timeout -+ outstandingPing = true -+ } -+ // The amount of time to sleep here is the minimum of kp.Time and -+ // timeoutLeft. This will ensure that we wait only for kp.Time -+ // before sending out the next ping (for cases where the ping is -+ // acked). -+ sleepDuration := minTime(t.kp.Time, timeoutLeft) -+ timeoutLeft -= sleepDuration -+ timer.Reset(sleepDuration) -+ case <-t.ctx.Done(): -+ if !timer.Stop() { -+ <-timer.C -+ } -+ return -+ } -+ } -+} -+ -+func (t *http2Client) Error() <-chan struct{} { -+ return t.ctx.Done() -+} -+ -+func (t *http2Client) GoAway() <-chan struct{} { -+ return t.goAway -+} -+ -+func (t *http2Client) ChannelzMetric() *channelz.SocketInternalMetric { -+ s := channelz.SocketInternalMetric{ -+ StreamsStarted: atomic.LoadInt64(&t.czData.streamsStarted), -+ StreamsSucceeded: atomic.LoadInt64(&t.czData.streamsSucceeded), -+ StreamsFailed: atomic.LoadInt64(&t.czData.streamsFailed), -+ MessagesSent: atomic.LoadInt64(&t.czData.msgSent), -+ MessagesReceived: atomic.LoadInt64(&t.czData.msgRecv), -+ KeepAlivesSent: atomic.LoadInt64(&t.czData.kpCount), -+ LastLocalStreamCreatedTimestamp: time.Unix(0, atomic.LoadInt64(&t.czData.lastStreamCreatedTime)), -+ LastMessageSentTimestamp: time.Unix(0, atomic.LoadInt64(&t.czData.lastMsgSentTime)), -+ LastMessageReceivedTimestamp: time.Unix(0, atomic.LoadInt64(&t.czData.lastMsgRecvTime)), -+ LocalFlowControlWindow: int64(t.fc.getSize()), -+ SocketOptions: channelz.GetSocketOption(t.conn), -+ LocalAddr: t.localAddr, -+ RemoteAddr: t.remoteAddr, -+ // RemoteName : -+ } -+ if au, ok := t.authInfo.(credentials.ChannelzSecurityInfo); ok { -+ s.Security = au.GetSecurityValue() -+ } -+ s.RemoteFlowControlWindow = t.getOutFlowWindow() -+ return &s -+} -+ -+func (t *http2Client) RemoteAddr() net.Addr { return t.remoteAddr } -+ -+func (t *http2Client) IncrMsgSent() { -+ atomic.AddInt64(&t.czData.msgSent, 1) -+ atomic.StoreInt64(&t.czData.lastMsgSentTime, time.Now().UnixNano()) -+} -+ -+func (t *http2Client) IncrMsgRecv() { -+ atomic.AddInt64(&t.czData.msgRecv, 1) -+ atomic.StoreInt64(&t.czData.lastMsgRecvTime, time.Now().UnixNano()) -+} -+ -+func (t *http2Client) getOutFlowWindow() int64 { -+ resp := make(chan uint32, 1) -+ timer := time.NewTimer(time.Second) -+ defer timer.Stop() -+ t.controlBuf.put(&outFlowControlSizeRequest{resp}) -+ select { -+ case sz := <-resp: -+ return int64(sz) -+ case <-t.ctxDone: -+ return -1 -+ case <-timer.C: -+ return -2 -+ } -+} -+ -+func (t *http2Client) stateForTesting() transportState { -+ t.mu.Lock() -+ defer t.mu.Unlock() -+ return t.state -+} -diff --git a/vendor/google.golang.org/grpc/internal/transport/http2_server.go b/vendor/google.golang.org/grpc/internal/transport/http2_server.go -new file mode 100755 -index 0000000..0bc7a7d ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/transport/http2_server.go -@@ -0,0 +1,1464 @@ -+/* -+ * -+ * 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 ( -+ "bytes" -+ "context" -+ "errors" -+ "fmt" -+ "io" -+ "math" -+ "net" -+ "net/http" -+ "strconv" -+ "sync" -+ "sync/atomic" -+ "time" -+ -+ "github.com/golang/protobuf/proto" -+ "golang.org/x/net/http2" -+ "golang.org/x/net/http2/hpack" -+ "google.golang.org/grpc/internal/grpclog" -+ "google.golang.org/grpc/internal/grpcutil" -+ "google.golang.org/grpc/internal/pretty" -+ "google.golang.org/grpc/internal/syscall" -+ -+ "google.golang.org/grpc/codes" -+ "google.golang.org/grpc/credentials" -+ "google.golang.org/grpc/internal/channelz" -+ "google.golang.org/grpc/internal/grpcrand" -+ "google.golang.org/grpc/internal/grpcsync" -+ "google.golang.org/grpc/keepalive" -+ "google.golang.org/grpc/metadata" -+ "google.golang.org/grpc/peer" -+ "google.golang.org/grpc/stats" -+ "google.golang.org/grpc/status" -+ "google.golang.org/grpc/tap" -+) -+ -+var ( -+ // ErrIllegalHeaderWrite indicates that setting header is illegal because of -+ // the stream's state. -+ ErrIllegalHeaderWrite = status.Error(codes.Internal, "transport: SendHeader called multiple times") -+ // ErrHeaderListSizeLimitViolation indicates that the header list size is larger -+ // than the limit set by peer. -+ ErrHeaderListSizeLimitViolation = status.Error(codes.Internal, "transport: trying to send header list size larger than the limit set by peer") -+) -+ -+// serverConnectionCounter counts the number of connections a server has seen -+// (equal to the number of http2Servers created). Must be accessed atomically. -+var serverConnectionCounter uint64 -+ -+// http2Server implements the ServerTransport interface with HTTP2. -+type http2Server struct { -+ lastRead int64 // Keep this field 64-bit aligned. Accessed atomically. -+ ctx context.Context -+ done chan struct{} -+ conn net.Conn -+ loopy *loopyWriter -+ readerDone chan struct{} // sync point to enable testing. -+ writerDone chan struct{} // sync point to enable testing. -+ remoteAddr net.Addr -+ localAddr net.Addr -+ authInfo credentials.AuthInfo // auth info about the connection -+ inTapHandle tap.ServerInHandle -+ framer *framer -+ // The max number of concurrent streams. -+ maxStreams uint32 -+ // controlBuf delivers all the control related tasks (e.g., window -+ // updates, reset streams, and various settings) to the controller. -+ controlBuf *controlBuffer -+ fc *trInFlow -+ stats []stats.Handler -+ // Keepalive and max-age parameters for the server. -+ kp keepalive.ServerParameters -+ // Keepalive enforcement policy. -+ kep keepalive.EnforcementPolicy -+ // The time instance last ping was received. -+ lastPingAt time.Time -+ // Number of times the client has violated keepalive ping policy so far. -+ pingStrikes uint8 -+ // Flag to signify that number of ping strikes should be reset to 0. -+ // This is set whenever data or header frames are sent. -+ // 1 means yes. -+ resetPingStrikes uint32 // Accessed atomically. -+ initialWindowSize int32 -+ bdpEst *bdpEstimator -+ maxSendHeaderListSize *uint32 -+ -+ mu sync.Mutex // guard the following -+ -+ // drainEvent is initialized when Drain() is called the first time. After -+ // which the server writes out the first GoAway(with ID 2^31-1) frame. Then -+ // an independent goroutine will be launched to later send the second -+ // GoAway. During this time we don't want to write another first GoAway(with -+ // ID 2^31 -1) frame. Thus call to Drain() will be a no-op if drainEvent is -+ // already initialized since draining is already underway. -+ drainEvent *grpcsync.Event -+ state transportState -+ activeStreams map[uint32]*Stream -+ // idle is the time instant when the connection went idle. -+ // This is either the beginning of the connection or when the number of -+ // RPCs go down to 0. -+ // When the connection is busy, this value is set to 0. -+ idle time.Time -+ -+ // Fields below are for channelz metric collection. -+ channelzID *channelz.Identifier -+ czData *channelzData -+ bufferPool *bufferPool -+ -+ connectionID uint64 -+ -+ // maxStreamMu guards the maximum stream ID -+ // This lock may not be taken if mu is already held. -+ maxStreamMu sync.Mutex -+ maxStreamID uint32 // max stream ID ever seen -+ -+ logger *grpclog.PrefixLogger -+} -+ -+// NewServerTransport creates a http2 transport with conn and configuration -+// options from config. -+// -+// It returns a non-nil transport and a nil error on success. On failure, it -+// returns a nil transport and a non-nil error. For a special case where the -+// underlying conn gets closed before the client preface could be read, it -+// returns a nil transport and a nil error. -+func NewServerTransport(conn net.Conn, config *ServerConfig) (_ ServerTransport, err error) { -+ var authInfo credentials.AuthInfo -+ rawConn := conn -+ if config.Credentials != nil { -+ var err error -+ conn, authInfo, err = config.Credentials.ServerHandshake(rawConn) -+ if err != nil { -+ // ErrConnDispatched means that the connection was dispatched away -+ // from gRPC; those connections should be left open. io.EOF means -+ // the connection was closed before handshaking completed, which can -+ // happen naturally from probers. Return these errors directly. -+ if err == credentials.ErrConnDispatched || err == io.EOF { -+ return nil, err -+ } -+ return nil, connectionErrorf(false, err, "ServerHandshake(%q) failed: %v", rawConn.RemoteAddr(), err) -+ } -+ } -+ writeBufSize := config.WriteBufferSize -+ readBufSize := config.ReadBufferSize -+ maxHeaderListSize := defaultServerMaxHeaderListSize -+ if config.MaxHeaderListSize != nil { -+ maxHeaderListSize = *config.MaxHeaderListSize -+ } -+ framer := newFramer(conn, writeBufSize, readBufSize, maxHeaderListSize) -+ // Send initial settings as connection preface to client. -+ isettings := []http2.Setting{{ -+ ID: http2.SettingMaxFrameSize, -+ Val: http2MaxFrameLen, -+ }} -+ if config.MaxStreams != math.MaxUint32 { -+ isettings = append(isettings, http2.Setting{ -+ ID: http2.SettingMaxConcurrentStreams, -+ Val: config.MaxStreams, -+ }) -+ } -+ dynamicWindow := true -+ iwz := int32(initialWindowSize) -+ if config.InitialWindowSize >= defaultWindowSize { -+ iwz = config.InitialWindowSize -+ dynamicWindow = false -+ } -+ icwz := int32(initialWindowSize) -+ if config.InitialConnWindowSize >= defaultWindowSize { -+ icwz = config.InitialConnWindowSize -+ dynamicWindow = false -+ } -+ if iwz != defaultWindowSize { -+ isettings = append(isettings, http2.Setting{ -+ ID: http2.SettingInitialWindowSize, -+ Val: uint32(iwz)}) -+ } -+ if config.MaxHeaderListSize != nil { -+ isettings = append(isettings, http2.Setting{ -+ ID: http2.SettingMaxHeaderListSize, -+ Val: *config.MaxHeaderListSize, -+ }) -+ } -+ if config.HeaderTableSize != nil { -+ isettings = append(isettings, http2.Setting{ -+ ID: http2.SettingHeaderTableSize, -+ Val: *config.HeaderTableSize, -+ }) -+ } -+ if err := framer.fr.WriteSettings(isettings...); err != nil { -+ return nil, connectionErrorf(false, err, "transport: %v", err) -+ } -+ // Adjust the connection flow control window if needed. -+ if delta := uint32(icwz - defaultWindowSize); delta > 0 { -+ if err := framer.fr.WriteWindowUpdate(0, delta); err != nil { -+ return nil, connectionErrorf(false, err, "transport: %v", err) -+ } -+ } -+ kp := config.KeepaliveParams -+ if kp.MaxConnectionIdle == 0 { -+ kp.MaxConnectionIdle = defaultMaxConnectionIdle -+ } -+ if kp.MaxConnectionAge == 0 { -+ kp.MaxConnectionAge = defaultMaxConnectionAge -+ } -+ // Add a jitter to MaxConnectionAge. -+ kp.MaxConnectionAge += getJitter(kp.MaxConnectionAge) -+ if kp.MaxConnectionAgeGrace == 0 { -+ kp.MaxConnectionAgeGrace = defaultMaxConnectionAgeGrace -+ } -+ if kp.Time == 0 { -+ kp.Time = defaultServerKeepaliveTime -+ } -+ if kp.Timeout == 0 { -+ kp.Timeout = defaultServerKeepaliveTimeout -+ } -+ if kp.Time != infinity { -+ if err = syscall.SetTCPUserTimeout(rawConn, kp.Timeout); err != nil { -+ return nil, connectionErrorf(false, err, "transport: failed to set TCP_USER_TIMEOUT: %v", err) -+ } -+ } -+ kep := config.KeepalivePolicy -+ if kep.MinTime == 0 { -+ kep.MinTime = defaultKeepalivePolicyMinTime -+ } -+ -+ done := make(chan struct{}) -+ t := &http2Server{ -+ ctx: setConnection(context.Background(), rawConn), -+ done: done, -+ conn: conn, -+ remoteAddr: conn.RemoteAddr(), -+ localAddr: conn.LocalAddr(), -+ authInfo: authInfo, -+ framer: framer, -+ readerDone: make(chan struct{}), -+ writerDone: make(chan struct{}), -+ maxStreams: config.MaxStreams, -+ inTapHandle: config.InTapHandle, -+ fc: &trInFlow{limit: uint32(icwz)}, -+ state: reachable, -+ activeStreams: make(map[uint32]*Stream), -+ stats: config.StatsHandlers, -+ kp: kp, -+ idle: time.Now(), -+ kep: kep, -+ initialWindowSize: iwz, -+ czData: new(channelzData), -+ bufferPool: newBufferPool(), -+ } -+ t.logger = prefixLoggerForServerTransport(t) -+ // Add peer information to the http2server context. -+ t.ctx = peer.NewContext(t.ctx, t.getPeer()) -+ -+ t.controlBuf = newControlBuffer(t.done) -+ if dynamicWindow { -+ t.bdpEst = &bdpEstimator{ -+ bdp: initialWindowSize, -+ updateFlowControl: t.updateFlowControl, -+ } -+ } -+ for _, sh := range t.stats { -+ t.ctx = sh.TagConn(t.ctx, &stats.ConnTagInfo{ -+ RemoteAddr: t.remoteAddr, -+ LocalAddr: t.localAddr, -+ }) -+ connBegin := &stats.ConnBegin{} -+ sh.HandleConn(t.ctx, connBegin) -+ } -+ t.channelzID, err = channelz.RegisterNormalSocket(t, config.ChannelzParentID, fmt.Sprintf("%s -> %s", t.remoteAddr, t.localAddr)) -+ if err != nil { -+ return nil, err -+ } -+ -+ t.connectionID = atomic.AddUint64(&serverConnectionCounter, 1) -+ t.framer.writer.Flush() -+ -+ defer func() { -+ if err != nil { -+ t.Close(err) -+ } -+ }() -+ -+ // Check the validity of client preface. -+ preface := make([]byte, len(clientPreface)) -+ if _, err := io.ReadFull(t.conn, preface); err != nil { -+ // In deployments where a gRPC server runs behind a cloud load balancer -+ // which performs regular TCP level health checks, the connection is -+ // closed immediately by the latter. Returning io.EOF here allows the -+ // grpc server implementation to recognize this scenario and suppress -+ // logging to reduce spam. -+ if err == io.EOF { -+ return nil, io.EOF -+ } -+ return nil, connectionErrorf(false, err, "transport: http2Server.HandleStreams failed to receive the preface from client: %v", err) -+ } -+ if !bytes.Equal(preface, clientPreface) { -+ return nil, connectionErrorf(false, nil, "transport: http2Server.HandleStreams received bogus greeting from client: %q", preface) -+ } -+ -+ frame, err := t.framer.fr.ReadFrame() -+ if err == io.EOF || err == io.ErrUnexpectedEOF { -+ return nil, err -+ } -+ if err != nil { -+ return nil, connectionErrorf(false, err, "transport: http2Server.HandleStreams failed to read initial settings frame: %v", err) -+ } -+ atomic.StoreInt64(&t.lastRead, time.Now().UnixNano()) -+ sf, ok := frame.(*http2.SettingsFrame) -+ if !ok { -+ return nil, connectionErrorf(false, nil, "transport: http2Server.HandleStreams saw invalid preface type %T from client", frame) -+ } -+ t.handleSettings(sf) -+ -+ go func() { -+ t.loopy = newLoopyWriter(serverSide, t.framer, t.controlBuf, t.bdpEst, t.conn, t.logger) -+ t.loopy.ssGoAwayHandler = t.outgoingGoAwayHandler -+ t.loopy.run() -+ close(t.writerDone) -+ }() -+ go t.keepalive() -+ return t, nil -+} -+ -+// operateHeaders takes action on the decoded headers. Returns an error if fatal -+// error encountered and transport needs to close, otherwise returns nil. -+func (t *http2Server) operateHeaders(frame *http2.MetaHeadersFrame, handle func(*Stream), traceCtx func(context.Context, string) context.Context) error { -+ // Acquire max stream ID lock for entire duration -+ t.maxStreamMu.Lock() -+ defer t.maxStreamMu.Unlock() -+ -+ streamID := frame.Header().StreamID -+ -+ // frame.Truncated is set to true when framer detects that the current header -+ // list size hits MaxHeaderListSize limit. -+ if frame.Truncated { -+ t.controlBuf.put(&cleanupStream{ -+ streamID: streamID, -+ rst: true, -+ rstCode: http2.ErrCodeFrameSize, -+ onWrite: func() {}, -+ }) -+ return nil -+ } -+ -+ if streamID%2 != 1 || streamID <= t.maxStreamID { -+ // illegal gRPC stream id. -+ return fmt.Errorf("received an illegal stream id: %v. headers frame: %+v", streamID, frame) -+ } -+ t.maxStreamID = streamID -+ -+ buf := newRecvBuffer() -+ s := &Stream{ -+ id: streamID, -+ st: t, -+ buf: buf, -+ fc: &inFlow{limit: uint32(t.initialWindowSize)}, -+ } -+ var ( -+ // if false, content-type was missing or invalid -+ isGRPC = false -+ contentType = "" -+ mdata = make(metadata.MD, len(frame.Fields)) -+ httpMethod string -+ // these are set if an error is encountered while parsing the headers -+ protocolError bool -+ headerError *status.Status -+ -+ timeoutSet bool -+ timeout time.Duration -+ ) -+ -+ for _, hf := range frame.Fields { -+ switch hf.Name { -+ case "content-type": -+ contentSubtype, validContentType := grpcutil.ContentSubtype(hf.Value) -+ if !validContentType { -+ contentType = hf.Value -+ break -+ } -+ mdata[hf.Name] = append(mdata[hf.Name], hf.Value) -+ s.contentSubtype = contentSubtype -+ isGRPC = true -+ -+ case "grpc-accept-encoding": -+ mdata[hf.Name] = append(mdata[hf.Name], hf.Value) -+ if hf.Value == "" { -+ continue -+ } -+ compressors := hf.Value -+ if s.clientAdvertisedCompressors != "" { -+ compressors = s.clientAdvertisedCompressors + "," + compressors -+ } -+ s.clientAdvertisedCompressors = compressors -+ case "grpc-encoding": -+ s.recvCompress = hf.Value -+ case ":method": -+ httpMethod = hf.Value -+ case ":path": -+ s.method = hf.Value -+ case "grpc-timeout": -+ timeoutSet = true -+ var err error -+ if timeout, err = decodeTimeout(hf.Value); err != nil { -+ headerError = status.Newf(codes.Internal, "malformed grpc-timeout: %v", err) -+ } -+ // "Transports must consider requests containing the Connection header -+ // as malformed." - A41 -+ case "connection": -+ if t.logger.V(logLevel) { -+ t.logger.Infof("Received a HEADERS frame with a :connection header which makes the request malformed, as per the HTTP/2 spec") -+ } -+ protocolError = true -+ default: -+ if isReservedHeader(hf.Name) && !isWhitelistedHeader(hf.Name) { -+ break -+ } -+ v, err := decodeMetadataHeader(hf.Name, hf.Value) -+ if err != nil { -+ headerError = status.Newf(codes.Internal, "malformed binary metadata %q in header %q: %v", hf.Value, hf.Name, err) -+ t.logger.Warningf("Failed to decode metadata header (%q, %q): %v", hf.Name, hf.Value, err) -+ break -+ } -+ mdata[hf.Name] = append(mdata[hf.Name], v) -+ } -+ } -+ -+ // "If multiple Host headers or multiple :authority headers are present, the -+ // request must be rejected with an HTTP status code 400 as required by Host -+ // validation in RFC 7230 §5.4, gRPC status code INTERNAL, or RST_STREAM -+ // with HTTP/2 error code PROTOCOL_ERROR." - A41. Since this is a HTTP/2 -+ // error, this takes precedence over a client not speaking gRPC. -+ if len(mdata[":authority"]) > 1 || len(mdata["host"]) > 1 { -+ errMsg := fmt.Sprintf("num values of :authority: %v, num values of host: %v, both must only have 1 value as per HTTP/2 spec", len(mdata[":authority"]), len(mdata["host"])) -+ if t.logger.V(logLevel) { -+ t.logger.Infof("Aborting the stream early: %v", errMsg) -+ } -+ t.controlBuf.put(&earlyAbortStream{ -+ httpStatus: http.StatusBadRequest, -+ streamID: streamID, -+ contentSubtype: s.contentSubtype, -+ status: status.New(codes.Internal, errMsg), -+ rst: !frame.StreamEnded(), -+ }) -+ return nil -+ } -+ -+ if protocolError { -+ t.controlBuf.put(&cleanupStream{ -+ streamID: streamID, -+ rst: true, -+ rstCode: http2.ErrCodeProtocol, -+ onWrite: func() {}, -+ }) -+ return nil -+ } -+ if !isGRPC { -+ t.controlBuf.put(&earlyAbortStream{ -+ httpStatus: http.StatusUnsupportedMediaType, -+ streamID: streamID, -+ contentSubtype: s.contentSubtype, -+ status: status.Newf(codes.InvalidArgument, "invalid gRPC request content-type %q", contentType), -+ rst: !frame.StreamEnded(), -+ }) -+ return nil -+ } -+ if headerError != nil { -+ t.controlBuf.put(&earlyAbortStream{ -+ httpStatus: http.StatusBadRequest, -+ streamID: streamID, -+ contentSubtype: s.contentSubtype, -+ status: headerError, -+ rst: !frame.StreamEnded(), -+ }) -+ return nil -+ } -+ -+ // "If :authority is missing, Host must be renamed to :authority." - A41 -+ if len(mdata[":authority"]) == 0 { -+ // No-op if host isn't present, no eventual :authority header is a valid -+ // RPC. -+ if host, ok := mdata["host"]; ok { -+ mdata[":authority"] = host -+ delete(mdata, "host") -+ } -+ } else { -+ // "If :authority is present, Host must be discarded" - A41 -+ delete(mdata, "host") -+ } -+ -+ if frame.StreamEnded() { -+ // s is just created by the caller. No lock needed. -+ s.state = streamReadDone -+ } -+ if timeoutSet { -+ s.ctx, s.cancel = context.WithTimeout(t.ctx, timeout) -+ } else { -+ s.ctx, s.cancel = context.WithCancel(t.ctx) -+ } -+ -+ // Attach the received metadata to the context. -+ if len(mdata) > 0 { -+ s.ctx = metadata.NewIncomingContext(s.ctx, mdata) -+ if statsTags := mdata["grpc-tags-bin"]; len(statsTags) > 0 { -+ s.ctx = stats.SetIncomingTags(s.ctx, []byte(statsTags[len(statsTags)-1])) -+ } -+ if statsTrace := mdata["grpc-trace-bin"]; len(statsTrace) > 0 { -+ s.ctx = stats.SetIncomingTrace(s.ctx, []byte(statsTrace[len(statsTrace)-1])) -+ } -+ } -+ t.mu.Lock() -+ if t.state != reachable { -+ t.mu.Unlock() -+ s.cancel() -+ return nil -+ } -+ if uint32(len(t.activeStreams)) >= t.maxStreams { -+ t.mu.Unlock() -+ t.controlBuf.put(&cleanupStream{ -+ streamID: streamID, -+ rst: true, -+ rstCode: http2.ErrCodeRefusedStream, -+ onWrite: func() {}, -+ }) -+ s.cancel() -+ return nil -+ } -+ if httpMethod != http.MethodPost { -+ t.mu.Unlock() -+ errMsg := fmt.Sprintf("Received a HEADERS frame with :method %q which should be POST", httpMethod) -+ if t.logger.V(logLevel) { -+ t.logger.Infof("Aborting the stream early: %v", errMsg) -+ } -+ t.controlBuf.put(&earlyAbortStream{ -+ httpStatus: 405, -+ streamID: streamID, -+ contentSubtype: s.contentSubtype, -+ status: status.New(codes.Internal, errMsg), -+ rst: !frame.StreamEnded(), -+ }) -+ s.cancel() -+ return nil -+ } -+ if t.inTapHandle != nil { -+ var err error -+ if s.ctx, err = t.inTapHandle(s.ctx, &tap.Info{FullMethodName: s.method}); err != nil { -+ t.mu.Unlock() -+ if t.logger.V(logLevel) { -+ t.logger.Infof("Aborting the stream early due to InTapHandle failure: %v", err) -+ } -+ stat, ok := status.FromError(err) -+ if !ok { -+ stat = status.New(codes.PermissionDenied, err.Error()) -+ } -+ t.controlBuf.put(&earlyAbortStream{ -+ httpStatus: 200, -+ streamID: s.id, -+ contentSubtype: s.contentSubtype, -+ status: stat, -+ rst: !frame.StreamEnded(), -+ }) -+ return nil -+ } -+ } -+ t.activeStreams[streamID] = s -+ if len(t.activeStreams) == 1 { -+ t.idle = time.Time{} -+ } -+ t.mu.Unlock() -+ if channelz.IsOn() { -+ atomic.AddInt64(&t.czData.streamsStarted, 1) -+ atomic.StoreInt64(&t.czData.lastStreamCreatedTime, time.Now().UnixNano()) -+ } -+ s.requestRead = func(n int) { -+ t.adjustWindow(s, uint32(n)) -+ } -+ s.ctx = traceCtx(s.ctx, s.method) -+ for _, sh := range t.stats { -+ s.ctx = sh.TagRPC(s.ctx, &stats.RPCTagInfo{FullMethodName: s.method}) -+ inHeader := &stats.InHeader{ -+ FullMethod: s.method, -+ RemoteAddr: t.remoteAddr, -+ LocalAddr: t.localAddr, -+ Compression: s.recvCompress, -+ WireLength: int(frame.Header().Length), -+ Header: mdata.Copy(), -+ } -+ sh.HandleRPC(s.ctx, inHeader) -+ } -+ s.ctxDone = s.ctx.Done() -+ s.wq = newWriteQuota(defaultWriteQuota, s.ctxDone) -+ s.trReader = &transportReader{ -+ reader: &recvBufferReader{ -+ ctx: s.ctx, -+ ctxDone: s.ctxDone, -+ recv: s.buf, -+ freeBuffer: t.bufferPool.put, -+ }, -+ windowHandler: func(n int) { -+ t.updateWindow(s, uint32(n)) -+ }, -+ } -+ // Register the stream with loopy. -+ t.controlBuf.put(®isterStream{ -+ streamID: s.id, -+ wq: s.wq, -+ }) -+ handle(s) -+ return nil -+} -+ -+// HandleStreams receives incoming streams using the given handler. This is -+// typically run in a separate goroutine. -+// traceCtx attaches trace to ctx and returns the new context. -+func (t *http2Server) HandleStreams(handle func(*Stream), traceCtx func(context.Context, string) context.Context) { -+ defer close(t.readerDone) -+ for { -+ t.controlBuf.throttle() -+ frame, err := t.framer.fr.ReadFrame() -+ atomic.StoreInt64(&t.lastRead, time.Now().UnixNano()) -+ if err != nil { -+ if se, ok := err.(http2.StreamError); ok { -+ if t.logger.V(logLevel) { -+ t.logger.Warningf("Encountered http2.StreamError: %v", se) -+ } -+ t.mu.Lock() -+ s := t.activeStreams[se.StreamID] -+ t.mu.Unlock() -+ if s != nil { -+ t.closeStream(s, true, se.Code, false) -+ } else { -+ t.controlBuf.put(&cleanupStream{ -+ streamID: se.StreamID, -+ rst: true, -+ rstCode: se.Code, -+ onWrite: func() {}, -+ }) -+ } -+ continue -+ } -+ if err == io.EOF || err == io.ErrUnexpectedEOF { -+ t.Close(err) -+ return -+ } -+ t.Close(err) -+ return -+ } -+ switch frame := frame.(type) { -+ case *http2.MetaHeadersFrame: -+ if err := t.operateHeaders(frame, handle, traceCtx); err != nil { -+ t.Close(err) -+ break -+ } -+ case *http2.DataFrame: -+ t.handleData(frame) -+ case *http2.RSTStreamFrame: -+ t.handleRSTStream(frame) -+ case *http2.SettingsFrame: -+ t.handleSettings(frame) -+ case *http2.PingFrame: -+ t.handlePing(frame) -+ case *http2.WindowUpdateFrame: -+ t.handleWindowUpdate(frame) -+ case *http2.GoAwayFrame: -+ // TODO: Handle GoAway from the client appropriately. -+ default: -+ if t.logger.V(logLevel) { -+ t.logger.Infof("Received unsupported frame type %T", frame) -+ } -+ } -+ } -+} -+ -+func (t *http2Server) getStream(f http2.Frame) (*Stream, bool) { -+ t.mu.Lock() -+ defer t.mu.Unlock() -+ if t.activeStreams == nil { -+ // The transport is closing. -+ return nil, false -+ } -+ s, ok := t.activeStreams[f.Header().StreamID] -+ if !ok { -+ // The stream is already done. -+ return nil, false -+ } -+ return s, true -+} -+ -+// adjustWindow sends out extra window update over the initial window size -+// of stream if the application is requesting data larger in size than -+// the window. -+func (t *http2Server) adjustWindow(s *Stream, n uint32) { -+ if w := s.fc.maybeAdjust(n); w > 0 { -+ t.controlBuf.put(&outgoingWindowUpdate{streamID: s.id, increment: w}) -+ } -+ -+} -+ -+// updateWindow adjusts the inbound quota for the stream and the transport. -+// Window updates will deliver to the controller for sending when -+// the cumulative quota exceeds the corresponding threshold. -+func (t *http2Server) updateWindow(s *Stream, n uint32) { -+ if w := s.fc.onRead(n); w > 0 { -+ t.controlBuf.put(&outgoingWindowUpdate{streamID: s.id, -+ increment: w, -+ }) -+ } -+} -+ -+// updateFlowControl updates the incoming flow control windows -+// for the transport and the stream based on the current bdp -+// estimation. -+func (t *http2Server) updateFlowControl(n uint32) { -+ t.mu.Lock() -+ for _, s := range t.activeStreams { -+ s.fc.newLimit(n) -+ } -+ t.initialWindowSize = int32(n) -+ t.mu.Unlock() -+ t.controlBuf.put(&outgoingWindowUpdate{ -+ streamID: 0, -+ increment: t.fc.newLimit(n), -+ }) -+ t.controlBuf.put(&outgoingSettings{ -+ ss: []http2.Setting{ -+ { -+ ID: http2.SettingInitialWindowSize, -+ Val: n, -+ }, -+ }, -+ }) -+ -+} -+ -+func (t *http2Server) handleData(f *http2.DataFrame) { -+ size := f.Header().Length -+ var sendBDPPing bool -+ if t.bdpEst != nil { -+ sendBDPPing = t.bdpEst.add(size) -+ } -+ // Decouple connection's flow control from application's read. -+ // An update on connection's flow control should not depend on -+ // whether user application has read the data or not. Such a -+ // restriction is already imposed on the stream's flow control, -+ // and therefore the sender will be blocked anyways. -+ // Decoupling the connection flow control will prevent other -+ // active(fast) streams from starving in presence of slow or -+ // inactive streams. -+ if w := t.fc.onData(size); w > 0 { -+ t.controlBuf.put(&outgoingWindowUpdate{ -+ streamID: 0, -+ increment: w, -+ }) -+ } -+ if sendBDPPing { -+ // Avoid excessive ping detection (e.g. in an L7 proxy) -+ // by sending a window update prior to the BDP ping. -+ if w := t.fc.reset(); w > 0 { -+ t.controlBuf.put(&outgoingWindowUpdate{ -+ streamID: 0, -+ increment: w, -+ }) -+ } -+ t.controlBuf.put(bdpPing) -+ } -+ // Select the right stream to dispatch. -+ s, ok := t.getStream(f) -+ if !ok { -+ return -+ } -+ if s.getState() == streamReadDone { -+ t.closeStream(s, true, http2.ErrCodeStreamClosed, false) -+ return -+ } -+ if size > 0 { -+ if err := s.fc.onData(size); err != nil { -+ t.closeStream(s, true, http2.ErrCodeFlowControl, false) -+ return -+ } -+ if f.Header().Flags.Has(http2.FlagDataPadded) { -+ if w := s.fc.onRead(size - uint32(len(f.Data()))); w > 0 { -+ t.controlBuf.put(&outgoingWindowUpdate{s.id, w}) -+ } -+ } -+ // TODO(bradfitz, zhaoq): A copy is required here because there is no -+ // guarantee f.Data() is consumed before the arrival of next frame. -+ // Can this copy be eliminated? -+ if len(f.Data()) > 0 { -+ buffer := t.bufferPool.get() -+ buffer.Reset() -+ buffer.Write(f.Data()) -+ s.write(recvMsg{buffer: buffer}) -+ } -+ } -+ if f.StreamEnded() { -+ // Received the end of stream from the client. -+ s.compareAndSwapState(streamActive, streamReadDone) -+ s.write(recvMsg{err: io.EOF}) -+ } -+} -+ -+func (t *http2Server) handleRSTStream(f *http2.RSTStreamFrame) { -+ // If the stream is not deleted from the transport's active streams map, then do a regular close stream. -+ if s, ok := t.getStream(f); ok { -+ t.closeStream(s, false, 0, false) -+ return -+ } -+ // If the stream is already deleted from the active streams map, then put a cleanupStream item into controlbuf to delete the stream from loopy writer's established streams map. -+ t.controlBuf.put(&cleanupStream{ -+ streamID: f.Header().StreamID, -+ rst: false, -+ rstCode: 0, -+ onWrite: func() {}, -+ }) -+} -+ -+func (t *http2Server) handleSettings(f *http2.SettingsFrame) { -+ if f.IsAck() { -+ return -+ } -+ var ss []http2.Setting -+ var updateFuncs []func() -+ f.ForeachSetting(func(s http2.Setting) error { -+ switch s.ID { -+ case http2.SettingMaxHeaderListSize: -+ updateFuncs = append(updateFuncs, func() { -+ t.maxSendHeaderListSize = new(uint32) -+ *t.maxSendHeaderListSize = s.Val -+ }) -+ default: -+ ss = append(ss, s) -+ } -+ return nil -+ }) -+ t.controlBuf.executeAndPut(func(interface{}) bool { -+ for _, f := range updateFuncs { -+ f() -+ } -+ return true -+ }, &incomingSettings{ -+ ss: ss, -+ }) -+} -+ -+const ( -+ maxPingStrikes = 2 -+ defaultPingTimeout = 2 * time.Hour -+) -+ -+func (t *http2Server) handlePing(f *http2.PingFrame) { -+ if f.IsAck() { -+ if f.Data == goAwayPing.data && t.drainEvent != nil { -+ t.drainEvent.Fire() -+ return -+ } -+ // Maybe it's a BDP ping. -+ if t.bdpEst != nil { -+ t.bdpEst.calculate(f.Data) -+ } -+ return -+ } -+ pingAck := &ping{ack: true} -+ copy(pingAck.data[:], f.Data[:]) -+ t.controlBuf.put(pingAck) -+ -+ now := time.Now() -+ defer func() { -+ t.lastPingAt = now -+ }() -+ // A reset ping strikes means that we don't need to check for policy -+ // violation for this ping and the pingStrikes counter should be set -+ // to 0. -+ if atomic.CompareAndSwapUint32(&t.resetPingStrikes, 1, 0) { -+ t.pingStrikes = 0 -+ return -+ } -+ t.mu.Lock() -+ ns := len(t.activeStreams) -+ t.mu.Unlock() -+ if ns < 1 && !t.kep.PermitWithoutStream { -+ // Keepalive shouldn't be active thus, this new ping should -+ // have come after at least defaultPingTimeout. -+ if t.lastPingAt.Add(defaultPingTimeout).After(now) { -+ t.pingStrikes++ -+ } -+ } else { -+ // Check if keepalive policy is respected. -+ if t.lastPingAt.Add(t.kep.MinTime).After(now) { -+ t.pingStrikes++ -+ } -+ } -+ -+ if t.pingStrikes > maxPingStrikes { -+ // Send goaway and close the connection. -+ t.controlBuf.put(&goAway{code: http2.ErrCodeEnhanceYourCalm, debugData: []byte("too_many_pings"), closeConn: errors.New("got too many pings from the client")}) -+ } -+} -+ -+func (t *http2Server) handleWindowUpdate(f *http2.WindowUpdateFrame) { -+ t.controlBuf.put(&incomingWindowUpdate{ -+ streamID: f.Header().StreamID, -+ increment: f.Increment, -+ }) -+} -+ -+func appendHeaderFieldsFromMD(headerFields []hpack.HeaderField, md metadata.MD) []hpack.HeaderField { -+ for k, vv := range md { -+ if isReservedHeader(k) { -+ // Clients don't tolerate reading restricted headers after some non restricted ones were sent. -+ continue -+ } -+ for _, v := range vv { -+ headerFields = append(headerFields, hpack.HeaderField{Name: k, Value: encodeMetadataHeader(k, v)}) -+ } -+ } -+ return headerFields -+} -+ -+func (t *http2Server) checkForHeaderListSize(it interface{}) bool { -+ if t.maxSendHeaderListSize == nil { -+ return true -+ } -+ hdrFrame := it.(*headerFrame) -+ var sz int64 -+ for _, f := range hdrFrame.hf { -+ if sz += int64(f.Size()); sz > int64(*t.maxSendHeaderListSize) { -+ if t.logger.V(logLevel) { -+ t.logger.Infof("Header list size to send violates the maximum size (%d bytes) set by client", *t.maxSendHeaderListSize) -+ } -+ return false -+ } -+ } -+ return true -+} -+ -+func (t *http2Server) streamContextErr(s *Stream) error { -+ select { -+ case <-t.done: -+ return ErrConnClosing -+ default: -+ } -+ return ContextErr(s.ctx.Err()) -+} -+ -+// WriteHeader sends the header metadata md back to the client. -+func (t *http2Server) WriteHeader(s *Stream, md metadata.MD) error { -+ s.hdrMu.Lock() -+ defer s.hdrMu.Unlock() -+ if s.getState() == streamDone { -+ return t.streamContextErr(s) -+ } -+ -+ if s.updateHeaderSent() { -+ return ErrIllegalHeaderWrite -+ } -+ -+ if md.Len() > 0 { -+ if s.header.Len() > 0 { -+ s.header = metadata.Join(s.header, md) -+ } else { -+ s.header = md -+ } -+ } -+ if err := t.writeHeaderLocked(s); err != nil { -+ return status.Convert(err).Err() -+ } -+ return nil -+} -+ -+func (t *http2Server) setResetPingStrikes() { -+ atomic.StoreUint32(&t.resetPingStrikes, 1) -+} -+ -+func (t *http2Server) writeHeaderLocked(s *Stream) error { -+ // TODO(mmukhi): Benchmark if the performance gets better if count the metadata and other header fields -+ // first and create a slice of that exact size. -+ headerFields := make([]hpack.HeaderField, 0, 2) // at least :status, content-type will be there if none else. -+ headerFields = append(headerFields, hpack.HeaderField{Name: ":status", Value: "200"}) -+ headerFields = append(headerFields, hpack.HeaderField{Name: "content-type", Value: grpcutil.ContentType(s.contentSubtype)}) -+ if s.sendCompress != "" { -+ headerFields = append(headerFields, hpack.HeaderField{Name: "grpc-encoding", Value: s.sendCompress}) -+ } -+ headerFields = appendHeaderFieldsFromMD(headerFields, s.header) -+ success, err := t.controlBuf.executeAndPut(t.checkForHeaderListSize, &headerFrame{ -+ streamID: s.id, -+ hf: headerFields, -+ endStream: false, -+ onWrite: t.setResetPingStrikes, -+ }) -+ if !success { -+ if err != nil { -+ return err -+ } -+ t.closeStream(s, true, http2.ErrCodeInternal, false) -+ return ErrHeaderListSizeLimitViolation -+ } -+ for _, sh := range t.stats { -+ // Note: Headers are compressed with hpack after this call returns. -+ // No WireLength field is set here. -+ outHeader := &stats.OutHeader{ -+ Header: s.header.Copy(), -+ Compression: s.sendCompress, -+ } -+ sh.HandleRPC(s.Context(), outHeader) -+ } -+ return nil -+} -+ -+// WriteStatus sends stream status to the client and terminates the stream. -+// There is no further I/O operations being able to perform on this stream. -+// TODO(zhaoq): Now it indicates the end of entire stream. Revisit if early -+// OK is adopted. -+func (t *http2Server) WriteStatus(s *Stream, st *status.Status) error { -+ s.hdrMu.Lock() -+ defer s.hdrMu.Unlock() -+ -+ if s.getState() == streamDone { -+ return nil -+ } -+ -+ // TODO(mmukhi): Benchmark if the performance gets better if count the metadata and other header fields -+ // first and create a slice of that exact size. -+ headerFields := make([]hpack.HeaderField, 0, 2) // grpc-status and grpc-message will be there if none else. -+ if !s.updateHeaderSent() { // No headers have been sent. -+ if len(s.header) > 0 { // Send a separate header frame. -+ if err := t.writeHeaderLocked(s); err != nil { -+ return err -+ } -+ } else { // Send a trailer only response. -+ headerFields = append(headerFields, hpack.HeaderField{Name: ":status", Value: "200"}) -+ headerFields = append(headerFields, hpack.HeaderField{Name: "content-type", Value: grpcutil.ContentType(s.contentSubtype)}) -+ } -+ } -+ headerFields = append(headerFields, hpack.HeaderField{Name: "grpc-status", Value: strconv.Itoa(int(st.Code()))}) -+ headerFields = append(headerFields, hpack.HeaderField{Name: "grpc-message", Value: encodeGrpcMessage(st.Message())}) -+ -+ if p := st.Proto(); p != nil && len(p.Details) > 0 { -+ stBytes, err := proto.Marshal(p) -+ if err != nil { -+ // TODO: return error instead, when callers are able to handle it. -+ t.logger.Errorf("Failed to marshal rpc status: %s, error: %v", pretty.ToJSON(p), err) -+ } else { -+ headerFields = append(headerFields, hpack.HeaderField{Name: "grpc-status-details-bin", Value: encodeBinHeader(stBytes)}) -+ } -+ } -+ -+ // Attach the trailer metadata. -+ headerFields = appendHeaderFieldsFromMD(headerFields, s.trailer) -+ trailingHeader := &headerFrame{ -+ streamID: s.id, -+ hf: headerFields, -+ endStream: true, -+ onWrite: t.setResetPingStrikes, -+ } -+ -+ success, err := t.controlBuf.execute(t.checkForHeaderListSize, trailingHeader) -+ if !success { -+ if err != nil { -+ return err -+ } -+ t.closeStream(s, true, http2.ErrCodeInternal, false) -+ return ErrHeaderListSizeLimitViolation -+ } -+ // Send a RST_STREAM after the trailers if the client has not already half-closed. -+ rst := s.getState() == streamActive -+ t.finishStream(s, rst, http2.ErrCodeNo, trailingHeader, true) -+ for _, sh := range t.stats { -+ // Note: The trailer fields are compressed with hpack after this call returns. -+ // No WireLength field is set here. -+ sh.HandleRPC(s.Context(), &stats.OutTrailer{ -+ Trailer: s.trailer.Copy(), -+ }) -+ } -+ return nil -+} -+ -+// Write converts the data into HTTP2 data frame and sends it out. Non-nil error -+// is returns if it fails (e.g., framing error, transport error). -+func (t *http2Server) Write(s *Stream, hdr []byte, data []byte, opts *Options) error { -+ if !s.isHeaderSent() { // Headers haven't been written yet. -+ if err := t.WriteHeader(s, nil); err != nil { -+ return err -+ } -+ } else { -+ // Writing headers checks for this condition. -+ if s.getState() == streamDone { -+ return t.streamContextErr(s) -+ } -+ } -+ df := &dataFrame{ -+ streamID: s.id, -+ h: hdr, -+ d: data, -+ onEachWrite: t.setResetPingStrikes, -+ } -+ if err := s.wq.get(int32(len(hdr) + len(data))); err != nil { -+ return t.streamContextErr(s) -+ } -+ return t.controlBuf.put(df) -+} -+ -+// keepalive running in a separate goroutine does the following: -+// 1. Gracefully closes an idle connection after a duration of keepalive.MaxConnectionIdle. -+// 2. Gracefully closes any connection after a duration of keepalive.MaxConnectionAge. -+// 3. Forcibly closes a connection after an additive period of keepalive.MaxConnectionAgeGrace over keepalive.MaxConnectionAge. -+// 4. Makes sure a connection is alive by sending pings with a frequency of keepalive.Time and closes a non-responsive connection -+// after an additional duration of keepalive.Timeout. -+func (t *http2Server) keepalive() { -+ p := &ping{} -+ // True iff a ping has been sent, and no data has been received since then. -+ outstandingPing := false -+ // Amount of time remaining before which we should receive an ACK for the -+ // last sent ping. -+ kpTimeoutLeft := time.Duration(0) -+ // Records the last value of t.lastRead before we go block on the timer. -+ // This is required to check for read activity since then. -+ prevNano := time.Now().UnixNano() -+ // Initialize the different timers to their default values. -+ idleTimer := time.NewTimer(t.kp.MaxConnectionIdle) -+ ageTimer := time.NewTimer(t.kp.MaxConnectionAge) -+ kpTimer := time.NewTimer(t.kp.Time) -+ defer func() { -+ // We need to drain the underlying channel in these timers after a call -+ // to Stop(), only if we are interested in resetting them. Clearly we -+ // are not interested in resetting them here. -+ idleTimer.Stop() -+ ageTimer.Stop() -+ kpTimer.Stop() -+ }() -+ -+ for { -+ select { -+ case <-idleTimer.C: -+ t.mu.Lock() -+ idle := t.idle -+ if idle.IsZero() { // The connection is non-idle. -+ t.mu.Unlock() -+ idleTimer.Reset(t.kp.MaxConnectionIdle) -+ continue -+ } -+ val := t.kp.MaxConnectionIdle - time.Since(idle) -+ t.mu.Unlock() -+ if val <= 0 { -+ // The connection has been idle for a duration of keepalive.MaxConnectionIdle or more. -+ // Gracefully close the connection. -+ t.Drain("max_idle") -+ return -+ } -+ idleTimer.Reset(val) -+ case <-ageTimer.C: -+ t.Drain("max_age") -+ ageTimer.Reset(t.kp.MaxConnectionAgeGrace) -+ select { -+ case <-ageTimer.C: -+ // Close the connection after grace period. -+ if t.logger.V(logLevel) { -+ t.logger.Infof("Closing server transport due to maximum connection age") -+ } -+ t.controlBuf.put(closeConnection{}) -+ case <-t.done: -+ } -+ return -+ case <-kpTimer.C: -+ lastRead := atomic.LoadInt64(&t.lastRead) -+ if lastRead > prevNano { -+ // There has been read activity since the last time we were -+ // here. Setup the timer to fire at kp.Time seconds from -+ // lastRead time and continue. -+ outstandingPing = false -+ kpTimer.Reset(time.Duration(lastRead) + t.kp.Time - time.Duration(time.Now().UnixNano())) -+ prevNano = lastRead -+ continue -+ } -+ if outstandingPing && kpTimeoutLeft <= 0 { -+ t.Close(fmt.Errorf("keepalive ping not acked within timeout %s", t.kp.Time)) -+ return -+ } -+ if !outstandingPing { -+ if channelz.IsOn() { -+ atomic.AddInt64(&t.czData.kpCount, 1) -+ } -+ t.controlBuf.put(p) -+ kpTimeoutLeft = t.kp.Timeout -+ outstandingPing = true -+ } -+ // The amount of time to sleep here is the minimum of kp.Time and -+ // timeoutLeft. This will ensure that we wait only for kp.Time -+ // before sending out the next ping (for cases where the ping is -+ // acked). -+ sleepDuration := minTime(t.kp.Time, kpTimeoutLeft) -+ kpTimeoutLeft -= sleepDuration -+ kpTimer.Reset(sleepDuration) -+ case <-t.done: -+ return -+ } -+ } -+} -+ -+// Close starts shutting down the http2Server transport. -+// TODO(zhaoq): Now the destruction is not blocked on any pending streams. This -+// could cause some resource issue. Revisit this later. -+func (t *http2Server) Close(err error) { -+ t.mu.Lock() -+ if t.state == closing { -+ t.mu.Unlock() -+ return -+ } -+ if t.logger.V(logLevel) { -+ t.logger.Infof("Closing: %v", err) -+ } -+ t.state = closing -+ streams := t.activeStreams -+ t.activeStreams = nil -+ t.mu.Unlock() -+ t.controlBuf.finish() -+ close(t.done) -+ if err := t.conn.Close(); err != nil && t.logger.V(logLevel) { -+ t.logger.Infof("Error closing underlying net.Conn during Close: %v", err) -+ } -+ channelz.RemoveEntry(t.channelzID) -+ // Cancel all active streams. -+ for _, s := range streams { -+ s.cancel() -+ } -+ for _, sh := range t.stats { -+ connEnd := &stats.ConnEnd{} -+ sh.HandleConn(t.ctx, connEnd) -+ } -+} -+ -+// deleteStream deletes the stream s from transport's active streams. -+func (t *http2Server) deleteStream(s *Stream, eosReceived bool) { -+ -+ t.mu.Lock() -+ if _, ok := t.activeStreams[s.id]; ok { -+ delete(t.activeStreams, s.id) -+ if len(t.activeStreams) == 0 { -+ t.idle = time.Now() -+ } -+ } -+ t.mu.Unlock() -+ -+ if channelz.IsOn() { -+ if eosReceived { -+ atomic.AddInt64(&t.czData.streamsSucceeded, 1) -+ } else { -+ atomic.AddInt64(&t.czData.streamsFailed, 1) -+ } -+ } -+} -+ -+// finishStream closes the stream and puts the trailing headerFrame into controlbuf. -+func (t *http2Server) finishStream(s *Stream, rst bool, rstCode http2.ErrCode, hdr *headerFrame, eosReceived bool) { -+ // In case stream sending and receiving are invoked in separate -+ // goroutines (e.g., bi-directional streaming), cancel needs to be -+ // called to interrupt the potential blocking on other goroutines. -+ s.cancel() -+ -+ oldState := s.swapState(streamDone) -+ if oldState == streamDone { -+ // If the stream was already done, return. -+ return -+ } -+ -+ hdr.cleanup = &cleanupStream{ -+ streamID: s.id, -+ rst: rst, -+ rstCode: rstCode, -+ onWrite: func() { -+ t.deleteStream(s, eosReceived) -+ }, -+ } -+ t.controlBuf.put(hdr) -+} -+ -+// closeStream clears the footprint of a stream when the stream is not needed any more. -+func (t *http2Server) closeStream(s *Stream, rst bool, rstCode http2.ErrCode, eosReceived bool) { -+ // In case stream sending and receiving are invoked in separate -+ // goroutines (e.g., bi-directional streaming), cancel needs to be -+ // called to interrupt the potential blocking on other goroutines. -+ s.cancel() -+ -+ s.swapState(streamDone) -+ t.deleteStream(s, eosReceived) -+ -+ t.controlBuf.put(&cleanupStream{ -+ streamID: s.id, -+ rst: rst, -+ rstCode: rstCode, -+ onWrite: func() {}, -+ }) -+} -+ -+func (t *http2Server) RemoteAddr() net.Addr { -+ return t.remoteAddr -+} -+ -+func (t *http2Server) Drain(debugData string) { -+ t.mu.Lock() -+ defer t.mu.Unlock() -+ if t.drainEvent != nil { -+ return -+ } -+ t.drainEvent = grpcsync.NewEvent() -+ t.controlBuf.put(&goAway{code: http2.ErrCodeNo, debugData: []byte(debugData), headsUp: true}) -+} -+ -+var goAwayPing = &ping{data: [8]byte{1, 6, 1, 8, 0, 3, 3, 9}} -+ -+// Handles outgoing GoAway and returns true if loopy needs to put itself -+// in draining mode. -+func (t *http2Server) outgoingGoAwayHandler(g *goAway) (bool, error) { -+ t.maxStreamMu.Lock() -+ t.mu.Lock() -+ if t.state == closing { // TODO(mmukhi): This seems unnecessary. -+ t.mu.Unlock() -+ t.maxStreamMu.Unlock() -+ // The transport is closing. -+ return false, ErrConnClosing -+ } -+ if !g.headsUp { -+ // Stop accepting more streams now. -+ t.state = draining -+ sid := t.maxStreamID -+ retErr := g.closeConn -+ if len(t.activeStreams) == 0 { -+ retErr = errors.New("second GOAWAY written and no active streams left to process") -+ } -+ t.mu.Unlock() -+ t.maxStreamMu.Unlock() -+ if err := t.framer.fr.WriteGoAway(sid, g.code, g.debugData); err != nil { -+ return false, err -+ } -+ if retErr != nil { -+ return false, retErr -+ } -+ return true, nil -+ } -+ t.mu.Unlock() -+ t.maxStreamMu.Unlock() -+ // For a graceful close, send out a GoAway with stream ID of MaxUInt32, -+ // Follow that with a ping and wait for the ack to come back or a timer -+ // to expire. During this time accept new streams since they might have -+ // originated before the GoAway reaches the client. -+ // After getting the ack or timer expiration send out another GoAway this -+ // time with an ID of the max stream server intends to process. -+ if err := t.framer.fr.WriteGoAway(math.MaxUint32, http2.ErrCodeNo, g.debugData); err != nil { -+ return false, err -+ } -+ if err := t.framer.fr.WritePing(false, goAwayPing.data); err != nil { -+ return false, err -+ } -+ go func() { -+ timer := time.NewTimer(time.Minute) -+ defer timer.Stop() -+ select { -+ case <-t.drainEvent.Done(): -+ case <-timer.C: -+ case <-t.done: -+ return -+ } -+ t.controlBuf.put(&goAway{code: g.code, debugData: g.debugData}) -+ }() -+ return false, nil -+} -+ -+func (t *http2Server) ChannelzMetric() *channelz.SocketInternalMetric { -+ s := channelz.SocketInternalMetric{ -+ StreamsStarted: atomic.LoadInt64(&t.czData.streamsStarted), -+ StreamsSucceeded: atomic.LoadInt64(&t.czData.streamsSucceeded), -+ StreamsFailed: atomic.LoadInt64(&t.czData.streamsFailed), -+ MessagesSent: atomic.LoadInt64(&t.czData.msgSent), -+ MessagesReceived: atomic.LoadInt64(&t.czData.msgRecv), -+ KeepAlivesSent: atomic.LoadInt64(&t.czData.kpCount), -+ LastRemoteStreamCreatedTimestamp: time.Unix(0, atomic.LoadInt64(&t.czData.lastStreamCreatedTime)), -+ LastMessageSentTimestamp: time.Unix(0, atomic.LoadInt64(&t.czData.lastMsgSentTime)), -+ LastMessageReceivedTimestamp: time.Unix(0, atomic.LoadInt64(&t.czData.lastMsgRecvTime)), -+ LocalFlowControlWindow: int64(t.fc.getSize()), -+ SocketOptions: channelz.GetSocketOption(t.conn), -+ LocalAddr: t.localAddr, -+ RemoteAddr: t.remoteAddr, -+ // RemoteName : -+ } -+ if au, ok := t.authInfo.(credentials.ChannelzSecurityInfo); ok { -+ s.Security = au.GetSecurityValue() -+ } -+ s.RemoteFlowControlWindow = t.getOutFlowWindow() -+ return &s -+} -+ -+func (t *http2Server) IncrMsgSent() { -+ atomic.AddInt64(&t.czData.msgSent, 1) -+ atomic.StoreInt64(&t.czData.lastMsgSentTime, time.Now().UnixNano()) -+} -+ -+func (t *http2Server) IncrMsgRecv() { -+ atomic.AddInt64(&t.czData.msgRecv, 1) -+ atomic.StoreInt64(&t.czData.lastMsgRecvTime, time.Now().UnixNano()) -+} -+ -+func (t *http2Server) getOutFlowWindow() int64 { -+ resp := make(chan uint32, 1) -+ timer := time.NewTimer(time.Second) -+ defer timer.Stop() -+ t.controlBuf.put(&outFlowControlSizeRequest{resp}) -+ select { -+ case sz := <-resp: -+ return int64(sz) -+ case <-t.done: -+ return -1 -+ case <-timer.C: -+ return -2 -+ } -+} -+ -+func (t *http2Server) getPeer() *peer.Peer { -+ return &peer.Peer{ -+ Addr: t.remoteAddr, -+ AuthInfo: t.authInfo, // Can be nil -+ } -+} -+ -+func getJitter(v time.Duration) time.Duration { -+ if v == infinity { -+ return 0 -+ } -+ // Generate a jitter between +/- 10% of the value. -+ r := int64(v / 10) -+ j := grpcrand.Int63n(2*r) - r -+ return time.Duration(j) -+} -+ -+type connectionKey struct{} -+ -+// GetConnection gets the connection from the context. -+func GetConnection(ctx context.Context) net.Conn { -+ conn, _ := ctx.Value(connectionKey{}).(net.Conn) -+ return conn -+} -+ -+// SetConnection adds the connection to the context to be able to get -+// information about the destination ip and port for an incoming RPC. This also -+// allows any unary or streaming interceptors to see the connection. -+func setConnection(ctx context.Context, conn net.Conn) context.Context { -+ return context.WithValue(ctx, connectionKey{}, conn) -+} -diff --git a/vendor/google.golang.org/grpc/internal/transport/http_util.go b/vendor/google.golang.org/grpc/internal/transport/http_util.go -new file mode 100755 -index 0000000..19cbb18 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/transport/http_util.go -@@ -0,0 +1,432 @@ -+/* -+ * -+ * 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" -+ "encoding/base64" -+ "errors" -+ "fmt" -+ "io" -+ "math" -+ "net" -+ "net/http" -+ "net/url" -+ "strconv" -+ "strings" -+ "time" -+ "unicode/utf8" -+ -+ "github.com/golang/protobuf/proto" -+ "golang.org/x/net/http2" -+ "golang.org/x/net/http2/hpack" -+ spb "google.golang.org/genproto/googleapis/rpc/status" -+ "google.golang.org/grpc/codes" -+ "google.golang.org/grpc/status" -+) -+ -+const ( -+ // http2MaxFrameLen specifies the max length of a HTTP2 frame. -+ http2MaxFrameLen = 16384 // 16KB frame -+ // https://httpwg.org/specs/rfc7540.html#SettingValues -+ http2InitHeaderTableSize = 4096 -+) -+ -+var ( -+ clientPreface = []byte(http2.ClientPreface) -+ http2ErrConvTab = map[http2.ErrCode]codes.Code{ -+ http2.ErrCodeNo: codes.Internal, -+ http2.ErrCodeProtocol: codes.Internal, -+ http2.ErrCodeInternal: codes.Internal, -+ http2.ErrCodeFlowControl: codes.ResourceExhausted, -+ http2.ErrCodeSettingsTimeout: codes.Internal, -+ http2.ErrCodeStreamClosed: codes.Internal, -+ http2.ErrCodeFrameSize: codes.Internal, -+ http2.ErrCodeRefusedStream: codes.Unavailable, -+ http2.ErrCodeCancel: codes.Canceled, -+ http2.ErrCodeCompression: codes.Internal, -+ http2.ErrCodeConnect: codes.Internal, -+ http2.ErrCodeEnhanceYourCalm: codes.ResourceExhausted, -+ http2.ErrCodeInadequateSecurity: codes.PermissionDenied, -+ http2.ErrCodeHTTP11Required: codes.Internal, -+ } -+ // HTTPStatusConvTab is the HTTP status code to gRPC error code conversion table. -+ HTTPStatusConvTab = map[int]codes.Code{ -+ // 400 Bad Request - INTERNAL. -+ http.StatusBadRequest: codes.Internal, -+ // 401 Unauthorized - UNAUTHENTICATED. -+ http.StatusUnauthorized: codes.Unauthenticated, -+ // 403 Forbidden - PERMISSION_DENIED. -+ http.StatusForbidden: codes.PermissionDenied, -+ // 404 Not Found - UNIMPLEMENTED. -+ http.StatusNotFound: codes.Unimplemented, -+ // 429 Too Many Requests - UNAVAILABLE. -+ http.StatusTooManyRequests: codes.Unavailable, -+ // 502 Bad Gateway - UNAVAILABLE. -+ http.StatusBadGateway: codes.Unavailable, -+ // 503 Service Unavailable - UNAVAILABLE. -+ http.StatusServiceUnavailable: codes.Unavailable, -+ // 504 Gateway timeout - UNAVAILABLE. -+ http.StatusGatewayTimeout: codes.Unavailable, -+ } -+) -+ -+// isReservedHeader checks whether hdr belongs to HTTP2 headers -+// reserved by gRPC protocol. Any other headers are classified as the -+// user-specified metadata. -+func isReservedHeader(hdr string) bool { -+ if hdr != "" && hdr[0] == ':' { -+ return true -+ } -+ switch hdr { -+ case "content-type", -+ "user-agent", -+ "grpc-message-type", -+ "grpc-encoding", -+ "grpc-message", -+ "grpc-status", -+ "grpc-timeout", -+ "grpc-status-details-bin", -+ // Intentionally exclude grpc-previous-rpc-attempts and -+ // grpc-retry-pushback-ms, which are "reserved", but their API -+ // intentionally works via metadata. -+ "te": -+ return true -+ default: -+ return false -+ } -+} -+ -+// isWhitelistedHeader checks whether hdr should be propagated into metadata -+// visible to users, even though it is classified as "reserved", above. -+func isWhitelistedHeader(hdr string) bool { -+ switch hdr { -+ case ":authority", "user-agent": -+ return true -+ default: -+ return false -+ } -+} -+ -+const binHdrSuffix = "-bin" -+ -+func encodeBinHeader(v []byte) string { -+ return base64.RawStdEncoding.EncodeToString(v) -+} -+ -+func decodeBinHeader(v string) ([]byte, error) { -+ if len(v)%4 == 0 { -+ // Input was padded, or padding was not necessary. -+ return base64.StdEncoding.DecodeString(v) -+ } -+ return base64.RawStdEncoding.DecodeString(v) -+} -+ -+func encodeMetadataHeader(k, v string) string { -+ if strings.HasSuffix(k, binHdrSuffix) { -+ return encodeBinHeader(([]byte)(v)) -+ } -+ return v -+} -+ -+func decodeMetadataHeader(k, v string) (string, error) { -+ if strings.HasSuffix(k, binHdrSuffix) { -+ b, err := decodeBinHeader(v) -+ return string(b), err -+ } -+ return v, nil -+} -+ -+func decodeGRPCStatusDetails(rawDetails string) (*status.Status, error) { -+ v, err := decodeBinHeader(rawDetails) -+ if err != nil { -+ return nil, err -+ } -+ st := &spb.Status{} -+ if err = proto.Unmarshal(v, st); err != nil { -+ return nil, err -+ } -+ return status.FromProto(st), nil -+} -+ -+type timeoutUnit uint8 -+ -+const ( -+ hour timeoutUnit = 'H' -+ minute timeoutUnit = 'M' -+ second timeoutUnit = 'S' -+ millisecond timeoutUnit = 'm' -+ microsecond timeoutUnit = 'u' -+ nanosecond timeoutUnit = 'n' -+) -+ -+func timeoutUnitToDuration(u timeoutUnit) (d time.Duration, ok bool) { -+ switch u { -+ case hour: -+ return time.Hour, true -+ case minute: -+ return time.Minute, true -+ case second: -+ return time.Second, true -+ case millisecond: -+ return time.Millisecond, true -+ case microsecond: -+ return time.Microsecond, true -+ case nanosecond: -+ return time.Nanosecond, true -+ default: -+ } -+ return -+} -+ -+func decodeTimeout(s string) (time.Duration, error) { -+ size := len(s) -+ if size < 2 { -+ return 0, fmt.Errorf("transport: timeout string is too short: %q", s) -+ } -+ if size > 9 { -+ // Spec allows for 8 digits plus the unit. -+ return 0, fmt.Errorf("transport: timeout string is too long: %q", s) -+ } -+ unit := timeoutUnit(s[size-1]) -+ d, ok := timeoutUnitToDuration(unit) -+ if !ok { -+ return 0, fmt.Errorf("transport: timeout unit is not recognized: %q", s) -+ } -+ t, err := strconv.ParseInt(s[:size-1], 10, 64) -+ if err != nil { -+ return 0, err -+ } -+ const maxHours = math.MaxInt64 / int64(time.Hour) -+ if d == time.Hour && t > maxHours { -+ // This timeout would overflow math.MaxInt64; clamp it. -+ return time.Duration(math.MaxInt64), nil -+ } -+ return d * time.Duration(t), nil -+} -+ -+const ( -+ spaceByte = ' ' -+ tildeByte = '~' -+ percentByte = '%' -+) -+ -+// encodeGrpcMessage is used to encode status code in header field -+// "grpc-message". It does percent encoding and also replaces invalid utf-8 -+// characters with Unicode replacement character. -+// -+// It checks to see if each individual byte in msg is an allowable byte, and -+// then either percent encoding or passing it through. When percent encoding, -+// the byte is converted into hexadecimal notation with a '%' prepended. -+func encodeGrpcMessage(msg string) string { -+ if msg == "" { -+ return "" -+ } -+ lenMsg := len(msg) -+ for i := 0; i < lenMsg; i++ { -+ c := msg[i] -+ if !(c >= spaceByte && c <= tildeByte && c != percentByte) { -+ return encodeGrpcMessageUnchecked(msg) -+ } -+ } -+ return msg -+} -+ -+func encodeGrpcMessageUnchecked(msg string) string { -+ var sb strings.Builder -+ for len(msg) > 0 { -+ r, size := utf8.DecodeRuneInString(msg) -+ for _, b := range []byte(string(r)) { -+ if size > 1 { -+ // If size > 1, r is not ascii. Always do percent encoding. -+ fmt.Fprintf(&sb, "%%%02X", b) -+ continue -+ } -+ -+ // The for loop is necessary even if size == 1. r could be -+ // utf8.RuneError. -+ // -+ // fmt.Sprintf("%%%02X", utf8.RuneError) gives "%FFFD". -+ if b >= spaceByte && b <= tildeByte && b != percentByte { -+ sb.WriteByte(b) -+ } else { -+ fmt.Fprintf(&sb, "%%%02X", b) -+ } -+ } -+ msg = msg[size:] -+ } -+ return sb.String() -+} -+ -+// decodeGrpcMessage decodes the msg encoded by encodeGrpcMessage. -+func decodeGrpcMessage(msg string) string { -+ if msg == "" { -+ return "" -+ } -+ lenMsg := len(msg) -+ for i := 0; i < lenMsg; i++ { -+ if msg[i] == percentByte && i+2 < lenMsg { -+ return decodeGrpcMessageUnchecked(msg) -+ } -+ } -+ return msg -+} -+ -+func decodeGrpcMessageUnchecked(msg string) string { -+ var sb strings.Builder -+ lenMsg := len(msg) -+ for i := 0; i < lenMsg; i++ { -+ c := msg[i] -+ if c == percentByte && i+2 < lenMsg { -+ parsed, err := strconv.ParseUint(msg[i+1:i+3], 16, 8) -+ if err != nil { -+ sb.WriteByte(c) -+ } else { -+ sb.WriteByte(byte(parsed)) -+ i += 2 -+ } -+ } else { -+ sb.WriteByte(c) -+ } -+ } -+ return sb.String() -+} -+ -+type bufWriter struct { -+ buf []byte -+ offset int -+ batchSize int -+ conn net.Conn -+ err error -+} -+ -+func newBufWriter(conn net.Conn, batchSize int) *bufWriter { -+ return &bufWriter{ -+ buf: make([]byte, batchSize*2), -+ batchSize: batchSize, -+ conn: conn, -+ } -+} -+ -+func (w *bufWriter) Write(b []byte) (n int, err error) { -+ if w.err != nil { -+ return 0, w.err -+ } -+ if w.batchSize == 0 { // Buffer has been disabled. -+ n, err = w.conn.Write(b) -+ return n, toIOError(err) -+ } -+ for len(b) > 0 { -+ nn := copy(w.buf[w.offset:], b) -+ b = b[nn:] -+ w.offset += nn -+ n += nn -+ if w.offset >= w.batchSize { -+ err = w.Flush() -+ } -+ } -+ return n, err -+} -+ -+func (w *bufWriter) Flush() error { -+ if w.err != nil { -+ return w.err -+ } -+ if w.offset == 0 { -+ return nil -+ } -+ _, w.err = w.conn.Write(w.buf[:w.offset]) -+ w.err = toIOError(w.err) -+ w.offset = 0 -+ return w.err -+} -+ -+type ioError struct { -+ error -+} -+ -+func (i ioError) Unwrap() error { -+ return i.error -+} -+ -+func isIOError(err error) bool { -+ return errors.As(err, &ioError{}) -+} -+ -+func toIOError(err error) error { -+ if err == nil { -+ return nil -+ } -+ return ioError{error: err} -+} -+ -+type framer struct { -+ writer *bufWriter -+ fr *http2.Framer -+} -+ -+func newFramer(conn net.Conn, writeBufferSize, readBufferSize int, maxHeaderListSize uint32) *framer { -+ if writeBufferSize < 0 { -+ writeBufferSize = 0 -+ } -+ var r io.Reader = conn -+ if readBufferSize > 0 { -+ r = bufio.NewReaderSize(r, readBufferSize) -+ } -+ w := newBufWriter(conn, writeBufferSize) -+ f := &framer{ -+ writer: w, -+ fr: http2.NewFramer(w, r), -+ } -+ f.fr.SetMaxReadFrameSize(http2MaxFrameLen) -+ // Opt-in to Frame reuse API on framer to reduce garbage. -+ // Frames aren't safe to read from after a subsequent call to ReadFrame. -+ f.fr.SetReuseFrames() -+ f.fr.MaxHeaderListSize = maxHeaderListSize -+ f.fr.ReadMetaHeaders = hpack.NewDecoder(http2InitHeaderTableSize, nil) -+ return f -+} -+ -+// parseDialTarget returns the network and address to pass to dialer. -+func parseDialTarget(target string) (string, string) { -+ net := "tcp" -+ m1 := strings.Index(target, ":") -+ m2 := strings.Index(target, ":/") -+ // handle unix:addr which will fail with url.Parse -+ if m1 >= 0 && m2 < 0 { -+ if n := target[0:m1]; n == "unix" { -+ return n, target[m1+1:] -+ } -+ } -+ if m2 >= 0 { -+ t, err := url.Parse(target) -+ if err != nil { -+ return net, target -+ } -+ scheme := t.Scheme -+ addr := t.Path -+ if scheme == "unix" { -+ if addr == "" { -+ addr = t.Host -+ } -+ return scheme, addr -+ } -+ } -+ return net, target -+} -diff --git a/vendor/google.golang.org/grpc/internal/transport/logging.go b/vendor/google.golang.org/grpc/internal/transport/logging.go -new file mode 100755 -index 0000000..42ed2b0 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/transport/logging.go -@@ -0,0 +1,40 @@ -+/* -+ * -+ * Copyright 2023 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" -+ -+ "google.golang.org/grpc/grpclog" -+ internalgrpclog "google.golang.org/grpc/internal/grpclog" -+) -+ -+var logger = grpclog.Component("transport") -+ -+func prefixLoggerForServerTransport(p *http2Server) *internalgrpclog.PrefixLogger { -+ return internalgrpclog.NewPrefixLogger(logger, fmt.Sprintf("[server-transport %p] ", p)) -+} -+ -+func prefixLoggerForServerHandlerTransport(p *serverHandlerTransport) *internalgrpclog.PrefixLogger { -+ return internalgrpclog.NewPrefixLogger(logger, fmt.Sprintf("[server-handler-transport %p] ", p)) -+} -+ -+func prefixLoggerForClientTransport(p *http2Client) *internalgrpclog.PrefixLogger { -+ return internalgrpclog.NewPrefixLogger(logger, fmt.Sprintf("[client-transport %p] ", p)) -+} -diff --git a/vendor/google.golang.org/grpc/internal/transport/networktype/networktype.go b/vendor/google.golang.org/grpc/internal/transport/networktype/networktype.go -new file mode 100755 -index 0000000..c11b527 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/transport/networktype/networktype.go -@@ -0,0 +1,46 @@ -+/* -+ * -+ * Copyright 2020 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 networktype declares the network type to be used in the default -+// dialer. Attribute of a resolver.Address. -+package networktype -+ -+import ( -+ "google.golang.org/grpc/resolver" -+) -+ -+// keyType is the key to use for storing State in Attributes. -+type keyType string -+ -+const key = keyType("grpc.internal.transport.networktype") -+ -+// Set returns a copy of the provided address with attributes containing networkType. -+func Set(address resolver.Address, networkType string) resolver.Address { -+ address.Attributes = address.Attributes.WithValue(key, networkType) -+ return address -+} -+ -+// Get returns the network type in the resolver.Address and true, or "", false -+// if not present. -+func Get(address resolver.Address) (string, bool) { -+ v := address.Attributes.Value(key) -+ if v == nil { -+ return "", false -+ } -+ return v.(string), true -+} -diff --git a/vendor/google.golang.org/grpc/internal/transport/proxy.go b/vendor/google.golang.org/grpc/internal/transport/proxy.go -new file mode 100755 -index 0000000..4159619 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/transport/proxy.go -@@ -0,0 +1,142 @@ -+/* -+ * -+ * 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 transport -+ -+import ( -+ "bufio" -+ "context" -+ "encoding/base64" -+ "fmt" -+ "io" -+ "net" -+ "net/http" -+ "net/http/httputil" -+ "net/url" -+) -+ -+const proxyAuthHeaderKey = "Proxy-Authorization" -+ -+var ( -+ // The following variable will be overwritten in the tests. -+ httpProxyFromEnvironment = http.ProxyFromEnvironment -+) -+ -+func mapAddress(address string) (*url.URL, error) { -+ req := &http.Request{ -+ URL: &url.URL{ -+ Scheme: "https", -+ Host: address, -+ }, -+ } -+ url, err := httpProxyFromEnvironment(req) -+ if err != nil { -+ return nil, err -+ } -+ return url, nil -+} -+ -+// To read a response from a net.Conn, http.ReadResponse() takes a bufio.Reader. -+// It's possible that this reader reads more than what's need for the response and stores -+// those bytes in the buffer. -+// bufConn wraps the original net.Conn and the bufio.Reader to make sure we don't lose the -+// bytes in the buffer. -+type bufConn struct { -+ net.Conn -+ r io.Reader -+} -+ -+func (c *bufConn) Read(b []byte) (int, error) { -+ return c.r.Read(b) -+} -+ -+func basicAuth(username, password string) string { -+ auth := username + ":" + password -+ return base64.StdEncoding.EncodeToString([]byte(auth)) -+} -+ -+func doHTTPConnectHandshake(ctx context.Context, conn net.Conn, backendAddr string, proxyURL *url.URL, grpcUA string) (_ net.Conn, err error) { -+ defer func() { -+ if err != nil { -+ conn.Close() -+ } -+ }() -+ -+ req := &http.Request{ -+ Method: http.MethodConnect, -+ URL: &url.URL{Host: backendAddr}, -+ Header: map[string][]string{"User-Agent": {grpcUA}}, -+ } -+ if t := proxyURL.User; t != nil { -+ u := t.Username() -+ p, _ := t.Password() -+ req.Header.Add(proxyAuthHeaderKey, "Basic "+basicAuth(u, p)) -+ } -+ -+ if err := sendHTTPRequest(ctx, req, conn); err != nil { -+ return nil, fmt.Errorf("failed to write the HTTP request: %v", err) -+ } -+ -+ r := bufio.NewReader(conn) -+ resp, err := http.ReadResponse(r, req) -+ if err != nil { -+ return nil, fmt.Errorf("reading server HTTP response: %v", err) -+ } -+ defer resp.Body.Close() -+ if resp.StatusCode != http.StatusOK { -+ dump, err := httputil.DumpResponse(resp, true) -+ if err != nil { -+ return nil, fmt.Errorf("failed to do connect handshake, status code: %s", resp.Status) -+ } -+ return nil, fmt.Errorf("failed to do connect handshake, response: %q", dump) -+ } -+ -+ return &bufConn{Conn: conn, r: r}, nil -+} -+ -+// proxyDial dials, connecting to a proxy first if necessary. Checks if a proxy -+// is necessary, dials, does the HTTP CONNECT handshake, and returns the -+// connection. -+func proxyDial(ctx context.Context, addr string, grpcUA string) (conn net.Conn, err error) { -+ newAddr := addr -+ proxyURL, err := mapAddress(addr) -+ if err != nil { -+ return nil, err -+ } -+ if proxyURL != nil { -+ newAddr = proxyURL.Host -+ } -+ -+ conn, err = (&net.Dialer{}).DialContext(ctx, "tcp", newAddr) -+ if err != nil { -+ return -+ } -+ if proxyURL != nil { -+ // proxy is disabled if proxyURL is nil. -+ conn, err = doHTTPConnectHandshake(ctx, conn, addr, proxyURL, grpcUA) -+ } -+ return -+} -+ -+func sendHTTPRequest(ctx context.Context, req *http.Request, conn net.Conn) error { -+ req = req.WithContext(ctx) -+ if err := req.Write(conn); err != nil { -+ return fmt.Errorf("failed to write the HTTP request: %v", err) -+ } -+ return nil -+} -diff --git a/vendor/google.golang.org/grpc/internal/transport/transport.go b/vendor/google.golang.org/grpc/internal/transport/transport.go -new file mode 100755 -index 0000000..aa1c896 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/transport/transport.go -@@ -0,0 +1,842 @@ -+/* -+ * -+ * 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 defines and implements message oriented communication -+// channel to complete various transactions (e.g., an RPC). It is meant for -+// grpc-internal usage and is not intended to be imported directly by users. -+package transport -+ -+import ( -+ "bytes" -+ "context" -+ "errors" -+ "fmt" -+ "io" -+ "net" -+ "sync" -+ "sync/atomic" -+ "time" -+ -+ "google.golang.org/grpc/codes" -+ "google.golang.org/grpc/credentials" -+ "google.golang.org/grpc/internal/channelz" -+ "google.golang.org/grpc/keepalive" -+ "google.golang.org/grpc/metadata" -+ "google.golang.org/grpc/resolver" -+ "google.golang.org/grpc/stats" -+ "google.golang.org/grpc/status" -+ "google.golang.org/grpc/tap" -+) -+ -+// ErrNoHeaders is used as a signal that a trailers only response was received, -+// and is not a real error. -+var ErrNoHeaders = errors.New("stream has no headers") -+ -+const logLevel = 2 -+ -+type bufferPool struct { -+ pool sync.Pool -+} -+ -+func newBufferPool() *bufferPool { -+ return &bufferPool{ -+ pool: sync.Pool{ -+ New: func() interface{} { -+ return new(bytes.Buffer) -+ }, -+ }, -+ } -+} -+ -+func (p *bufferPool) get() *bytes.Buffer { -+ return p.pool.Get().(*bytes.Buffer) -+} -+ -+func (p *bufferPool) put(b *bytes.Buffer) { -+ p.pool.Put(b) -+} -+ -+// recvMsg represents the received msg from the transport. All transport -+// protocol specific info has been removed. -+type recvMsg struct { -+ buffer *bytes.Buffer -+ // nil: received some data -+ // io.EOF: stream is completed. data is nil. -+ // other non-nil error: transport failure. data is nil. -+ err error -+} -+ -+// recvBuffer is an unbounded channel of recvMsg structs. -+// -+// Note: recvBuffer differs from buffer.Unbounded only in the fact that it -+// holds a channel of recvMsg structs instead of objects implementing "item" -+// interface. recvBuffer is written to much more often and using strict recvMsg -+// structs helps avoid allocation in "recvBuffer.put" -+type recvBuffer struct { -+ c chan recvMsg -+ mu sync.Mutex -+ backlog []recvMsg -+ err error -+} -+ -+func newRecvBuffer() *recvBuffer { -+ b := &recvBuffer{ -+ c: make(chan recvMsg, 1), -+ } -+ return b -+} -+ -+func (b *recvBuffer) put(r recvMsg) { -+ b.mu.Lock() -+ if b.err != nil { -+ b.mu.Unlock() -+ // An error had occurred earlier, don't accept more -+ // data or errors. -+ return -+ } -+ b.err = r.err -+ if len(b.backlog) == 0 { -+ select { -+ case b.c <- r: -+ b.mu.Unlock() -+ return -+ default: -+ } -+ } -+ b.backlog = append(b.backlog, r) -+ b.mu.Unlock() -+} -+ -+func (b *recvBuffer) load() { -+ b.mu.Lock() -+ if len(b.backlog) > 0 { -+ select { -+ case b.c <- b.backlog[0]: -+ b.backlog[0] = recvMsg{} -+ b.backlog = b.backlog[1:] -+ default: -+ } -+ } -+ b.mu.Unlock() -+} -+ -+// get returns the channel that receives a recvMsg in the buffer. -+// -+// Upon receipt of a recvMsg, the caller should call load to send another -+// recvMsg onto the channel if there is any. -+func (b *recvBuffer) get() <-chan recvMsg { -+ return b.c -+} -+ -+// recvBufferReader implements io.Reader interface to read the data from -+// recvBuffer. -+type recvBufferReader struct { -+ closeStream func(error) // Closes the client transport stream with the given error and nil trailer metadata. -+ ctx context.Context -+ ctxDone <-chan struct{} // cache of ctx.Done() (for performance). -+ recv *recvBuffer -+ last *bytes.Buffer // Stores the remaining data in the previous calls. -+ err error -+ freeBuffer func(*bytes.Buffer) -+} -+ -+// Read reads the next len(p) bytes from last. If last is drained, it tries to -+// read additional data from recv. It blocks if there no additional data available -+// in recv. If Read returns any non-nil error, it will continue to return that error. -+func (r *recvBufferReader) Read(p []byte) (n int, err error) { -+ if r.err != nil { -+ return 0, r.err -+ } -+ if r.last != nil { -+ // Read remaining data left in last call. -+ copied, _ := r.last.Read(p) -+ if r.last.Len() == 0 { -+ r.freeBuffer(r.last) -+ r.last = nil -+ } -+ return copied, nil -+ } -+ if r.closeStream != nil { -+ n, r.err = r.readClient(p) -+ } else { -+ n, r.err = r.read(p) -+ } -+ return n, r.err -+} -+ -+func (r *recvBufferReader) read(p []byte) (n int, err error) { -+ select { -+ case <-r.ctxDone: -+ return 0, ContextErr(r.ctx.Err()) -+ case m := <-r.recv.get(): -+ return r.readAdditional(m, p) -+ } -+} -+ -+func (r *recvBufferReader) readClient(p []byte) (n int, err error) { -+ // If the context is canceled, then closes the stream with nil metadata. -+ // closeStream writes its error parameter to r.recv as a recvMsg. -+ // r.readAdditional acts on that message and returns the necessary error. -+ select { -+ case <-r.ctxDone: -+ // Note that this adds the ctx error to the end of recv buffer, and -+ // reads from the head. This will delay the error until recv buffer is -+ // empty, thus will delay ctx cancellation in Recv(). -+ // -+ // It's done this way to fix a race between ctx cancel and trailer. The -+ // race was, stream.Recv() may return ctx error if ctxDone wins the -+ // race, but stream.Trailer() may return a non-nil md because the stream -+ // was not marked as done when trailer is received. This closeStream -+ // call will mark stream as done, thus fix the race. -+ // -+ // TODO: delaying ctx error seems like a unnecessary side effect. What -+ // we really want is to mark the stream as done, and return ctx error -+ // faster. -+ r.closeStream(ContextErr(r.ctx.Err())) -+ m := <-r.recv.get() -+ return r.readAdditional(m, p) -+ case m := <-r.recv.get(): -+ return r.readAdditional(m, p) -+ } -+} -+ -+func (r *recvBufferReader) readAdditional(m recvMsg, p []byte) (n int, err error) { -+ r.recv.load() -+ if m.err != nil { -+ return 0, m.err -+ } -+ copied, _ := m.buffer.Read(p) -+ if m.buffer.Len() == 0 { -+ r.freeBuffer(m.buffer) -+ r.last = nil -+ } else { -+ r.last = m.buffer -+ } -+ return copied, nil -+} -+ -+type streamState uint32 -+ -+const ( -+ streamActive streamState = iota -+ streamWriteDone // EndStream sent -+ streamReadDone // EndStream received -+ streamDone // the entire stream is finished. -+) -+ -+// Stream represents an RPC in the transport layer. -+type Stream struct { -+ id uint32 -+ st ServerTransport // nil for client side Stream -+ ct *http2Client // nil for server side Stream -+ ctx context.Context // the associated context of the stream -+ cancel context.CancelFunc // always nil for client side Stream -+ done chan struct{} // closed at the end of stream to unblock writers. On the client side. -+ doneFunc func() // invoked at the end of stream on client side. -+ ctxDone <-chan struct{} // same as done chan but for server side. Cache of ctx.Done() (for performance) -+ method string // the associated RPC method of the stream -+ recvCompress string -+ sendCompress string -+ buf *recvBuffer -+ trReader io.Reader -+ fc *inFlow -+ wq *writeQuota -+ -+ // Holds compressor names passed in grpc-accept-encoding metadata from the -+ // client. This is empty for the client side stream. -+ clientAdvertisedCompressors string -+ // Callback to state application's intentions to read data. This -+ // is used to adjust flow control, if needed. -+ requestRead func(int) -+ -+ headerChan chan struct{} // closed to indicate the end of header metadata. -+ headerChanClosed uint32 // set when headerChan is closed. Used to avoid closing headerChan multiple times. -+ // headerValid indicates whether a valid header was received. Only -+ // meaningful after headerChan is closed (always call waitOnHeader() before -+ // reading its value). Not valid on server side. -+ headerValid bool -+ -+ // hdrMu protects header and trailer metadata on the server-side. -+ hdrMu sync.Mutex -+ // On client side, header keeps the received header metadata. -+ // -+ // On server side, header keeps the header set by SetHeader(). The complete -+ // header will merged into this after t.WriteHeader() is called. -+ header metadata.MD -+ trailer metadata.MD // the key-value map of trailer metadata. -+ -+ noHeaders bool // set if the client never received headers (set only after the stream is done). -+ -+ // On the server-side, headerSent is atomically set to 1 when the headers are sent out. -+ headerSent uint32 -+ -+ state streamState -+ -+ // On client-side it is the status error received from the server. -+ // On server-side it is unused. -+ status *status.Status -+ -+ bytesReceived uint32 // indicates whether any bytes have been received on this stream -+ unprocessed uint32 // set if the server sends a refused stream or GOAWAY including this stream -+ -+ // contentSubtype is the content-subtype for requests. -+ // this must be lowercase or the behavior is undefined. -+ contentSubtype string -+} -+ -+// isHeaderSent is only valid on the server-side. -+func (s *Stream) isHeaderSent() bool { -+ return atomic.LoadUint32(&s.headerSent) == 1 -+} -+ -+// updateHeaderSent updates headerSent and returns true -+// if it was alreay set. It is valid only on server-side. -+func (s *Stream) updateHeaderSent() bool { -+ return atomic.SwapUint32(&s.headerSent, 1) == 1 -+} -+ -+func (s *Stream) swapState(st streamState) streamState { -+ return streamState(atomic.SwapUint32((*uint32)(&s.state), uint32(st))) -+} -+ -+func (s *Stream) compareAndSwapState(oldState, newState streamState) bool { -+ return atomic.CompareAndSwapUint32((*uint32)(&s.state), uint32(oldState), uint32(newState)) -+} -+ -+func (s *Stream) getState() streamState { -+ return streamState(atomic.LoadUint32((*uint32)(&s.state))) -+} -+ -+func (s *Stream) waitOnHeader() { -+ if s.headerChan == nil { -+ // On the server headerChan is always nil since a stream originates -+ // only after having received headers. -+ return -+ } -+ select { -+ case <-s.ctx.Done(): -+ // Close the stream to prevent headers/trailers from changing after -+ // this function returns. -+ s.ct.CloseStream(s, ContextErr(s.ctx.Err())) -+ // headerChan could possibly not be closed yet if closeStream raced -+ // with operateHeaders; wait until it is closed explicitly here. -+ <-s.headerChan -+ case <-s.headerChan: -+ } -+} -+ -+// RecvCompress returns the compression algorithm applied to the inbound -+// message. It is empty string if there is no compression applied. -+func (s *Stream) RecvCompress() string { -+ s.waitOnHeader() -+ return s.recvCompress -+} -+ -+// SetSendCompress sets the compression algorithm to the stream. -+func (s *Stream) SetSendCompress(name string) error { -+ if s.isHeaderSent() || s.getState() == streamDone { -+ return errors.New("transport: set send compressor called after headers sent or stream done") -+ } -+ -+ s.sendCompress = name -+ return nil -+} -+ -+// SendCompress returns the send compressor name. -+func (s *Stream) SendCompress() string { -+ return s.sendCompress -+} -+ -+// ClientAdvertisedCompressors returns the compressor names advertised by the -+// client via grpc-accept-encoding header. -+func (s *Stream) ClientAdvertisedCompressors() string { -+ return s.clientAdvertisedCompressors -+} -+ -+// Done returns a channel which is closed when it receives the final status -+// from the server. -+func (s *Stream) Done() <-chan struct{} { -+ return s.done -+} -+ -+// Header returns the header metadata of the stream. -+// -+// On client side, it acquires the key-value pairs of header metadata once it is -+// available. It blocks until i) the metadata is ready or ii) there is no header -+// metadata or iii) the stream is canceled/expired. -+// -+// On server side, it returns the out header after t.WriteHeader is called. It -+// does not block and must not be called until after WriteHeader. -+func (s *Stream) Header() (metadata.MD, error) { -+ if s.headerChan == nil { -+ // On server side, return the header in stream. It will be the out -+ // header after t.WriteHeader is called. -+ return s.header.Copy(), nil -+ } -+ s.waitOnHeader() -+ -+ if !s.headerValid { -+ return nil, s.status.Err() -+ } -+ -+ if s.noHeaders { -+ return nil, ErrNoHeaders -+ } -+ -+ return s.header.Copy(), nil -+} -+ -+// TrailersOnly blocks until a header or trailers-only frame is received and -+// then returns true if the stream was trailers-only. If the stream ends -+// before headers are received, returns true, nil. Client-side only. -+func (s *Stream) TrailersOnly() bool { -+ s.waitOnHeader() -+ return s.noHeaders -+} -+ -+// Trailer returns the cached trailer metedata. Note that if it is not called -+// after the entire stream is done, it could return an empty MD. Client -+// side only. -+// It can be safely read only after stream has ended that is either read -+// or write have returned io.EOF. -+func (s *Stream) Trailer() metadata.MD { -+ c := s.trailer.Copy() -+ return c -+} -+ -+// ContentSubtype returns the content-subtype for a request. For example, a -+// content-subtype of "proto" will result in a content-type of -+// "application/grpc+proto". This will always be lowercase. See -+// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests for -+// more details. -+func (s *Stream) ContentSubtype() string { -+ return s.contentSubtype -+} -+ -+// Context returns the context of the stream. -+func (s *Stream) Context() context.Context { -+ return s.ctx -+} -+ -+// Method returns the method for the stream. -+func (s *Stream) Method() string { -+ return s.method -+} -+ -+// Status returns the status received from the server. -+// Status can be read safely only after the stream has ended, -+// that is, after Done() is closed. -+func (s *Stream) Status() *status.Status { -+ return s.status -+} -+ -+// SetHeader sets the header metadata. This can be called multiple times. -+// Server side only. -+// This should not be called in parallel to other data writes. -+func (s *Stream) SetHeader(md metadata.MD) error { -+ if md.Len() == 0 { -+ return nil -+ } -+ if s.isHeaderSent() || s.getState() == streamDone { -+ return ErrIllegalHeaderWrite -+ } -+ s.hdrMu.Lock() -+ s.header = metadata.Join(s.header, md) -+ s.hdrMu.Unlock() -+ return nil -+} -+ -+// SendHeader sends the given header metadata. The given metadata is -+// combined with any metadata set by previous calls to SetHeader and -+// then written to the transport stream. -+func (s *Stream) SendHeader(md metadata.MD) error { -+ return s.st.WriteHeader(s, md) -+} -+ -+// SetTrailer sets the trailer metadata which will be sent with the RPC status -+// by the server. This can be called multiple times. Server side only. -+// This should not be called parallel to other data writes. -+func (s *Stream) SetTrailer(md metadata.MD) error { -+ if md.Len() == 0 { -+ return nil -+ } -+ if s.getState() == streamDone { -+ return ErrIllegalHeaderWrite -+ } -+ s.hdrMu.Lock() -+ s.trailer = metadata.Join(s.trailer, md) -+ s.hdrMu.Unlock() -+ return nil -+} -+ -+func (s *Stream) write(m recvMsg) { -+ s.buf.put(m) -+} -+ -+// Read reads all p bytes from the wire for this stream. -+func (s *Stream) Read(p []byte) (n int, err error) { -+ // Don't request a read if there was an error earlier -+ if er := s.trReader.(*transportReader).er; er != nil { -+ return 0, er -+ } -+ s.requestRead(len(p)) -+ return io.ReadFull(s.trReader, p) -+} -+ -+// tranportReader reads all the data available for this Stream from the transport and -+// passes them into the decoder, which converts them into a gRPC message stream. -+// The error is io.EOF when the stream is done or another non-nil error if -+// the stream broke. -+type transportReader struct { -+ reader io.Reader -+ // The handler to control the window update procedure for both this -+ // particular stream and the associated transport. -+ windowHandler func(int) -+ er error -+} -+ -+func (t *transportReader) Read(p []byte) (n int, err error) { -+ n, err = t.reader.Read(p) -+ if err != nil { -+ t.er = err -+ return -+ } -+ t.windowHandler(n) -+ return -+} -+ -+// BytesReceived indicates whether any bytes have been received on this stream. -+func (s *Stream) BytesReceived() bool { -+ return atomic.LoadUint32(&s.bytesReceived) == 1 -+} -+ -+// Unprocessed indicates whether the server did not process this stream -- -+// i.e. it sent a refused stream or GOAWAY including this stream ID. -+func (s *Stream) Unprocessed() bool { -+ return atomic.LoadUint32(&s.unprocessed) == 1 -+} -+ -+// GoString is implemented by Stream so context.String() won't -+// race when printing %#v. -+func (s *Stream) GoString() string { -+ return fmt.Sprintf("", s, s.method) -+} -+ -+// state of transport -+type transportState int -+ -+const ( -+ reachable transportState = iota -+ closing -+ draining -+) -+ -+// ServerConfig consists of all the configurations to establish a server transport. -+type ServerConfig struct { -+ MaxStreams uint32 -+ ConnectionTimeout time.Duration -+ Credentials credentials.TransportCredentials -+ InTapHandle tap.ServerInHandle -+ StatsHandlers []stats.Handler -+ KeepaliveParams keepalive.ServerParameters -+ KeepalivePolicy keepalive.EnforcementPolicy -+ InitialWindowSize int32 -+ InitialConnWindowSize int32 -+ WriteBufferSize int -+ ReadBufferSize int -+ ChannelzParentID *channelz.Identifier -+ MaxHeaderListSize *uint32 -+ HeaderTableSize *uint32 -+} -+ -+// ConnectOptions covers all relevant options for communicating with the server. -+type ConnectOptions struct { -+ // UserAgent is the application user agent. -+ UserAgent string -+ // Dialer specifies how to dial a network address. -+ Dialer func(context.Context, string) (net.Conn, error) -+ // FailOnNonTempDialError specifies if gRPC fails on non-temporary dial errors. -+ FailOnNonTempDialError bool -+ // PerRPCCredentials stores the PerRPCCredentials required to issue RPCs. -+ PerRPCCredentials []credentials.PerRPCCredentials -+ // TransportCredentials stores the Authenticator required to setup a client -+ // connection. Only one of TransportCredentials and CredsBundle is non-nil. -+ TransportCredentials credentials.TransportCredentials -+ // CredsBundle is the credentials bundle to be used. Only one of -+ // TransportCredentials and CredsBundle is non-nil. -+ CredsBundle credentials.Bundle -+ // KeepaliveParams stores the keepalive parameters. -+ KeepaliveParams keepalive.ClientParameters -+ // StatsHandlers stores the handler for stats. -+ StatsHandlers []stats.Handler -+ // InitialWindowSize sets the initial window size for a stream. -+ InitialWindowSize int32 -+ // InitialConnWindowSize sets the initial window size for a connection. -+ InitialConnWindowSize int32 -+ // WriteBufferSize sets the size of write buffer which in turn determines how much data can be batched before it's written on the wire. -+ WriteBufferSize int -+ // ReadBufferSize sets the size of read buffer, which in turn determines how much data can be read at most for one read syscall. -+ ReadBufferSize int -+ // ChannelzParentID sets the addrConn id which initiate the creation of this client transport. -+ ChannelzParentID *channelz.Identifier -+ // MaxHeaderListSize sets the max (uncompressed) size of header list that is prepared to be received. -+ MaxHeaderListSize *uint32 -+ // UseProxy specifies if a proxy should be used. -+ UseProxy bool -+} -+ -+// NewClientTransport establishes the transport with the required ConnectOptions -+// and returns it to the caller. -+func NewClientTransport(connectCtx, ctx context.Context, addr resolver.Address, opts ConnectOptions, onClose func(GoAwayReason)) (ClientTransport, error) { -+ return newHTTP2Client(connectCtx, ctx, addr, opts, onClose) -+} -+ -+// Options provides additional hints and information for message -+// transmission. -+type Options struct { -+ // Last indicates whether this write is the last piece for -+ // this stream. -+ Last bool -+} -+ -+// CallHdr carries the information of a particular RPC. -+type CallHdr struct { -+ // Host specifies the peer's host. -+ Host string -+ -+ // Method specifies the operation to perform. -+ Method string -+ -+ // SendCompress specifies the compression algorithm applied on -+ // outbound message. -+ SendCompress string -+ -+ // Creds specifies credentials.PerRPCCredentials for a call. -+ Creds credentials.PerRPCCredentials -+ -+ // ContentSubtype specifies the content-subtype for a request. For example, a -+ // content-subtype of "proto" will result in a content-type of -+ // "application/grpc+proto". The value of ContentSubtype must be all -+ // lowercase, otherwise the behavior is undefined. See -+ // https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests -+ // for more details. -+ ContentSubtype string -+ -+ PreviousAttempts int // value of grpc-previous-rpc-attempts header to set -+ -+ DoneFunc func() // called when the stream is finished -+} -+ -+// ClientTransport is the common interface for all gRPC client-side transport -+// implementations. -+type ClientTransport interface { -+ // Close tears down this transport. Once it returns, the transport -+ // should not be accessed any more. The caller must make sure this -+ // is called only once. -+ Close(err error) -+ -+ // GracefulClose starts to tear down the transport: the transport will stop -+ // accepting new RPCs and NewStream will return error. Once all streams are -+ // finished, the transport will close. -+ // -+ // It does not block. -+ GracefulClose() -+ -+ // Write sends the data for the given stream. A nil stream indicates -+ // the write is to be performed on the transport as a whole. -+ Write(s *Stream, hdr []byte, data []byte, opts *Options) error -+ -+ // NewStream creates a Stream for an RPC. -+ NewStream(ctx context.Context, callHdr *CallHdr) (*Stream, error) -+ -+ // CloseStream clears the footprint of a stream when the stream is -+ // not needed any more. The err indicates the error incurred when -+ // CloseStream is called. Must be called when a stream is finished -+ // unless the associated transport is closing. -+ CloseStream(stream *Stream, err error) -+ -+ // Error returns a channel that is closed when some I/O error -+ // happens. Typically the caller should have a goroutine to monitor -+ // this in order to take action (e.g., close the current transport -+ // and create a new one) in error case. It should not return nil -+ // once the transport is initiated. -+ Error() <-chan struct{} -+ -+ // GoAway returns a channel that is closed when ClientTransport -+ // receives the draining signal from the server (e.g., GOAWAY frame in -+ // HTTP/2). -+ GoAway() <-chan struct{} -+ -+ // GetGoAwayReason returns the reason why GoAway frame was received, along -+ // with a human readable string with debug info. -+ GetGoAwayReason() (GoAwayReason, string) -+ -+ // RemoteAddr returns the remote network address. -+ RemoteAddr() net.Addr -+ -+ // IncrMsgSent increments the number of message sent through this transport. -+ IncrMsgSent() -+ -+ // IncrMsgRecv increments the number of message received through this transport. -+ IncrMsgRecv() -+} -+ -+// ServerTransport is the common interface for all gRPC server-side transport -+// implementations. -+// -+// Methods may be called concurrently from multiple goroutines, but -+// Write methods for a given Stream will be called serially. -+type ServerTransport interface { -+ // HandleStreams receives incoming streams using the given handler. -+ HandleStreams(func(*Stream), func(context.Context, string) context.Context) -+ -+ // WriteHeader sends the header metadata for the given stream. -+ // WriteHeader may not be called on all streams. -+ WriteHeader(s *Stream, md metadata.MD) error -+ -+ // Write sends the data for the given stream. -+ // Write may not be called on all streams. -+ Write(s *Stream, hdr []byte, data []byte, opts *Options) error -+ -+ // WriteStatus sends the status of a stream to the client. WriteStatus is -+ // the final call made on a stream and always occurs. -+ WriteStatus(s *Stream, st *status.Status) error -+ -+ // Close tears down the transport. Once it is called, the transport -+ // should not be accessed any more. All the pending streams and their -+ // handlers will be terminated asynchronously. -+ Close(err error) -+ -+ // RemoteAddr returns the remote network address. -+ RemoteAddr() net.Addr -+ -+ // Drain notifies the client this ServerTransport stops accepting new RPCs. -+ Drain(debugData string) -+ -+ // IncrMsgSent increments the number of message sent through this transport. -+ IncrMsgSent() -+ -+ // IncrMsgRecv increments the number of message received through this transport. -+ IncrMsgRecv() -+} -+ -+// connectionErrorf creates an ConnectionError with the specified error description. -+func connectionErrorf(temp bool, e error, format string, a ...interface{}) ConnectionError { -+ return ConnectionError{ -+ Desc: fmt.Sprintf(format, a...), -+ temp: temp, -+ err: e, -+ } -+} -+ -+// ConnectionError is an error that results in the termination of the -+// entire connection and the retry of all the active streams. -+type ConnectionError struct { -+ Desc string -+ temp bool -+ err error -+} -+ -+func (e ConnectionError) Error() string { -+ return fmt.Sprintf("connection error: desc = %q", e.Desc) -+} -+ -+// Temporary indicates if this connection error is temporary or fatal. -+func (e ConnectionError) Temporary() bool { -+ return e.temp -+} -+ -+// Origin returns the original error of this connection error. -+func (e ConnectionError) Origin() error { -+ // Never return nil error here. -+ // If the original error is nil, return itself. -+ if e.err == nil { -+ return e -+ } -+ return e.err -+} -+ -+// Unwrap returns the original error of this connection error or nil when the -+// origin is nil. -+func (e ConnectionError) Unwrap() error { -+ return e.err -+} -+ -+var ( -+ // ErrConnClosing indicates that the transport is closing. -+ ErrConnClosing = connectionErrorf(true, nil, "transport is closing") -+ // errStreamDrain indicates that the stream is rejected because the -+ // connection is draining. This could be caused by goaway or balancer -+ // removing the address. -+ errStreamDrain = status.Error(codes.Unavailable, "the connection is draining") -+ // errStreamDone is returned from write at the client side to indiacte application -+ // layer of an error. -+ errStreamDone = errors.New("the stream is done") -+ // StatusGoAway indicates that the server sent a GOAWAY that included this -+ // stream's ID in unprocessed RPCs. -+ statusGoAway = status.New(codes.Unavailable, "the stream is rejected because server is draining the connection") -+) -+ -+// GoAwayReason contains the reason for the GoAway frame received. -+type GoAwayReason uint8 -+ -+const ( -+ // GoAwayInvalid indicates that no GoAway frame is received. -+ GoAwayInvalid GoAwayReason = 0 -+ // GoAwayNoReason is the default value when GoAway frame is received. -+ GoAwayNoReason GoAwayReason = 1 -+ // GoAwayTooManyPings indicates that a GoAway frame with -+ // ErrCodeEnhanceYourCalm was received and that the debug data said -+ // "too_many_pings". -+ GoAwayTooManyPings GoAwayReason = 2 -+) -+ -+// channelzData is used to store channelz related data for http2Client and http2Server. -+// These fields cannot be embedded in the original structs (e.g. http2Client), since to do atomic -+// operation on int64 variable on 32-bit machine, user is responsible to enforce memory alignment. -+// Here, by grouping those int64 fields inside a struct, we are enforcing the alignment. -+type channelzData struct { -+ kpCount int64 -+ // The number of streams that have started, including already finished ones. -+ streamsStarted int64 -+ // Client side: The number of streams that have ended successfully by receiving -+ // EoS bit set frame from server. -+ // Server side: The number of streams that have ended successfully by sending -+ // frame with EoS bit set. -+ streamsSucceeded int64 -+ streamsFailed int64 -+ // lastStreamCreatedTime stores the timestamp that the last stream gets created. It is of int64 type -+ // instead of time.Time since it's more costly to atomically update time.Time variable than int64 -+ // variable. The same goes for lastMsgSentTime and lastMsgRecvTime. -+ lastStreamCreatedTime int64 -+ msgSent int64 -+ msgRecv int64 -+ lastMsgSentTime int64 -+ lastMsgRecvTime int64 -+} -+ -+// ContextErr converts the error from context package into a status error. -+func ContextErr(err error) error { -+ switch err { -+ case context.DeadlineExceeded: -+ return status.Error(codes.DeadlineExceeded, err.Error()) -+ case context.Canceled: -+ return status.Error(codes.Canceled, err.Error()) -+ } -+ return status.Errorf(codes.Internal, "Unexpected error from context packet: %v", err) -+} -diff --git a/vendor/google.golang.org/grpc/internal/xds_handshake_cluster.go b/vendor/google.golang.org/grpc/internal/xds_handshake_cluster.go -new file mode 100755 -index 0000000..e8b4927 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/internal/xds_handshake_cluster.go -@@ -0,0 +1,40 @@ -+/* -+ * Copyright 2021 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 internal -+ -+import ( -+ "google.golang.org/grpc/attributes" -+ "google.golang.org/grpc/resolver" -+) -+ -+// handshakeClusterNameKey is the type used as the key to store cluster name in -+// the Attributes field of resolver.Address. -+type handshakeClusterNameKey struct{} -+ -+// SetXDSHandshakeClusterName returns a copy of addr in which the Attributes field -+// is updated with the cluster name. -+func SetXDSHandshakeClusterName(addr resolver.Address, clusterName string) resolver.Address { -+ addr.Attributes = addr.Attributes.WithValue(handshakeClusterNameKey{}, clusterName) -+ return addr -+} -+ -+// GetXDSHandshakeClusterName returns cluster name stored in attr. -+func GetXDSHandshakeClusterName(attr *attributes.Attributes) (string, bool) { -+ v := attr.Value(handshakeClusterNameKey{}) -+ name, ok := v.(string) -+ return name, ok -+} -diff --git a/vendor/google.golang.org/grpc/keepalive/keepalive.go b/vendor/google.golang.org/grpc/keepalive/keepalive.go -new file mode 100755 -index 0000000..34d31b5 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/keepalive/keepalive.go -@@ -0,0 +1,85 @@ -+/* -+ * -+ * 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 keepalive defines configurable parameters for point-to-point -+// healthcheck. -+package keepalive -+ -+import ( -+ "time" -+) -+ -+// ClientParameters is used to set keepalive parameters on the client-side. -+// These configure how the client will actively probe to notice when a -+// connection is broken and send pings so intermediaries will be aware of the -+// liveness of the connection. Make sure these parameters are set in -+// coordination with the keepalive policy on the server, as incompatible -+// settings can result in closing of connection. -+type ClientParameters struct { -+ // After a duration of this time if the client doesn't see any activity it -+ // pings the server to see if the transport is still alive. -+ // If set below 10s, a minimum value of 10s will be used instead. -+ Time time.Duration // The current default value is infinity. -+ // After having pinged for keepalive check, the client waits for a duration -+ // of Timeout and if no activity is seen even after that the connection is -+ // closed. -+ Timeout time.Duration // The current default value is 20 seconds. -+ // If true, client sends keepalive pings even with no active RPCs. If false, -+ // when there are no active RPCs, Time and Timeout will be ignored and no -+ // keepalive pings will be sent. -+ PermitWithoutStream bool // false by default. -+} -+ -+// ServerParameters is used to set keepalive and max-age parameters on the -+// server-side. -+type ServerParameters struct { -+ // MaxConnectionIdle is a duration for the amount of time after which an -+ // idle connection would be closed by sending a GoAway. Idleness duration is -+ // defined since the most recent time the number of outstanding RPCs became -+ // zero or the connection establishment. -+ MaxConnectionIdle time.Duration // The current default value is infinity. -+ // MaxConnectionAge is a duration for the maximum amount of time a -+ // connection may exist before it will be closed by sending a GoAway. A -+ // random jitter of +/-10% will be added to MaxConnectionAge to spread out -+ // connection storms. -+ MaxConnectionAge time.Duration // The current default value is infinity. -+ // MaxConnectionAgeGrace is an additive period after MaxConnectionAge after -+ // which the connection will be forcibly closed. -+ MaxConnectionAgeGrace time.Duration // The current default value is infinity. -+ // After a duration of this time if the server doesn't see any activity it -+ // pings the client to see if the transport is still alive. -+ // If set below 1s, a minimum value of 1s will be used instead. -+ Time time.Duration // The current default value is 2 hours. -+ // After having pinged for keepalive check, the server waits for a duration -+ // of Timeout and if no activity is seen even after that the connection is -+ // closed. -+ Timeout time.Duration // The current default value is 20 seconds. -+} -+ -+// EnforcementPolicy is used to set keepalive enforcement policy on the -+// server-side. Server will close connection with a client that violates this -+// policy. -+type EnforcementPolicy struct { -+ // MinTime is the minimum amount of time a client should wait before sending -+ // a keepalive ping. -+ MinTime time.Duration // The current default value is 5 minutes. -+ // If true, server allows keepalive pings even when there are no active -+ // streams(RPCs). If false, and client sends ping when there are no active -+ // streams, server will send GOAWAY and close the connection. -+ PermitWithoutStream bool // false by default. -+} -diff --git a/vendor/google.golang.org/grpc/metadata/metadata.go b/vendor/google.golang.org/grpc/metadata/metadata.go -new file mode 100755 -index 0000000..a2cdcaf ---- /dev/null -+++ b/vendor/google.golang.org/grpc/metadata/metadata.go -@@ -0,0 +1,295 @@ -+/* -+ * -+ * 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 define the structure of the metadata supported by gRPC library. -+// Please refer to https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md -+// for more information about custom-metadata. -+package metadata // import "google.golang.org/grpc/metadata" -+ -+import ( -+ "context" -+ "fmt" -+ "strings" -+) -+ -+// DecodeKeyValue returns k, v, nil. -+// -+// Deprecated: use k and v directly instead. -+func DecodeKeyValue(k, v string) (string, string, error) { -+ return k, v, nil -+} -+ -+// MD is a mapping from metadata keys to values. Users should use the following -+// two convenience functions New and Pairs to generate MD. -+type MD map[string][]string -+ -+// New creates an MD from a given key-value map. -+// -+// Only the following ASCII characters are allowed in keys: -+// - digits: 0-9 -+// - uppercase letters: A-Z (normalized to lower) -+// - lowercase letters: a-z -+// - special characters: -_. -+// -+// Uppercase letters are automatically converted to lowercase. -+// -+// Keys beginning with "grpc-" are reserved for grpc-internal use only and may -+// result in errors if set in metadata. -+func New(m map[string]string) MD { -+ md := make(MD, len(m)) -+ for k, val := range m { -+ key := strings.ToLower(k) -+ md[key] = append(md[key], val) -+ } -+ return md -+} -+ -+// Pairs returns an MD formed by the mapping of key, value ... -+// Pairs panics if len(kv) is odd. -+// -+// Only the following ASCII characters are allowed in keys: -+// - digits: 0-9 -+// - uppercase letters: A-Z (normalized to lower) -+// - lowercase letters: a-z -+// - special characters: -_. -+// -+// Uppercase letters are automatically converted to lowercase. -+// -+// Keys beginning with "grpc-" are reserved for grpc-internal use only and may -+// result in errors if set in metadata. -+func Pairs(kv ...string) MD { -+ if len(kv)%2 == 1 { -+ panic(fmt.Sprintf("metadata: Pairs got the odd number of input pairs for metadata: %d", len(kv))) -+ } -+ md := make(MD, len(kv)/2) -+ for i := 0; i < len(kv); i += 2 { -+ key := strings.ToLower(kv[i]) -+ md[key] = append(md[key], kv[i+1]) -+ } -+ return md -+} -+ -+// Len returns the number of items in md. -+func (md MD) Len() int { -+ return len(md) -+} -+ -+// Copy returns a copy of md. -+func (md MD) Copy() MD { -+ out := make(MD, len(md)) -+ for k, v := range md { -+ out[k] = copyOf(v) -+ } -+ return out -+} -+ -+// Get obtains the values for a given key. -+// -+// k is converted to lowercase before searching in md. -+func (md MD) Get(k string) []string { -+ k = strings.ToLower(k) -+ return md[k] -+} -+ -+// Set sets the value of a given key with a slice of values. -+// -+// k is converted to lowercase before storing in md. -+func (md MD) Set(k string, vals ...string) { -+ if len(vals) == 0 { -+ return -+ } -+ k = strings.ToLower(k) -+ md[k] = vals -+} -+ -+// Append adds the values to key k, not overwriting what was already stored at -+// that key. -+// -+// k is converted to lowercase before storing in md. -+func (md MD) Append(k string, vals ...string) { -+ if len(vals) == 0 { -+ return -+ } -+ k = strings.ToLower(k) -+ md[k] = append(md[k], vals...) -+} -+ -+// Delete removes the values for a given key k which is converted to lowercase -+// before removing it from md. -+func (md MD) Delete(k string) { -+ k = strings.ToLower(k) -+ delete(md, k) -+} -+ -+// Join joins any number of mds into a single MD. -+// -+// The order of values for each key is determined by the order in which the mds -+// containing those values are presented to Join. -+func Join(mds ...MD) MD { -+ out := MD{} -+ for _, md := range mds { -+ for k, v := range md { -+ out[k] = append(out[k], v...) -+ } -+ } -+ return out -+} -+ -+type mdIncomingKey struct{} -+type mdOutgoingKey struct{} -+ -+// NewIncomingContext creates a new context with incoming md attached. -+func NewIncomingContext(ctx context.Context, md MD) context.Context { -+ return context.WithValue(ctx, mdIncomingKey{}, md) -+} -+ -+// NewOutgoingContext creates a new context with outgoing md attached. If used -+// in conjunction with AppendToOutgoingContext, NewOutgoingContext will -+// overwrite any previously-appended metadata. -+func NewOutgoingContext(ctx context.Context, md MD) context.Context { -+ return context.WithValue(ctx, mdOutgoingKey{}, rawMD{md: md}) -+} -+ -+// AppendToOutgoingContext returns a new context with the provided kv merged -+// with any existing metadata in the context. Please refer to the documentation -+// of Pairs for a description of kv. -+func AppendToOutgoingContext(ctx context.Context, kv ...string) context.Context { -+ if len(kv)%2 == 1 { -+ panic(fmt.Sprintf("metadata: AppendToOutgoingContext got an odd number of input pairs for metadata: %d", len(kv))) -+ } -+ md, _ := ctx.Value(mdOutgoingKey{}).(rawMD) -+ added := make([][]string, len(md.added)+1) -+ copy(added, md.added) -+ kvCopy := make([]string, 0, len(kv)) -+ for i := 0; i < len(kv); i += 2 { -+ kvCopy = append(kvCopy, strings.ToLower(kv[i]), kv[i+1]) -+ } -+ added[len(added)-1] = kvCopy -+ return context.WithValue(ctx, mdOutgoingKey{}, rawMD{md: md.md, added: added}) -+} -+ -+// FromIncomingContext returns the incoming metadata in ctx if it exists. -+// -+// All keys in the returned MD are lowercase. -+func FromIncomingContext(ctx context.Context) (MD, bool) { -+ md, ok := ctx.Value(mdIncomingKey{}).(MD) -+ if !ok { -+ return nil, false -+ } -+ out := make(MD, len(md)) -+ for k, v := range md { -+ // We need to manually convert all keys to lower case, because MD is a -+ // map, and there's no guarantee that the MD attached to the context is -+ // created using our helper functions. -+ key := strings.ToLower(k) -+ out[key] = copyOf(v) -+ } -+ return out, true -+} -+ -+// ValueFromIncomingContext returns the metadata value corresponding to the metadata -+// key from the incoming metadata if it exists. Key must be lower-case. -+// -+// # Experimental -+// -+// Notice: This API is EXPERIMENTAL and may be changed or removed in a -+// later release. -+func ValueFromIncomingContext(ctx context.Context, key string) []string { -+ md, ok := ctx.Value(mdIncomingKey{}).(MD) -+ if !ok { -+ return nil -+ } -+ -+ if v, ok := md[key]; ok { -+ return copyOf(v) -+ } -+ for k, v := range md { -+ // We need to manually convert all keys to lower case, because MD is a -+ // map, and there's no guarantee that the MD attached to the context is -+ // created using our helper functions. -+ if strings.ToLower(k) == key { -+ return copyOf(v) -+ } -+ } -+ return nil -+} -+ -+// the returned slice must not be modified in place -+func copyOf(v []string) []string { -+ vals := make([]string, len(v)) -+ copy(vals, v) -+ return vals -+} -+ -+// FromOutgoingContextRaw returns the un-merged, intermediary contents of rawMD. -+// -+// Remember to perform strings.ToLower on the keys, for both the returned MD (MD -+// is a map, there's no guarantee it's created using our helper functions) and -+// the extra kv pairs (AppendToOutgoingContext doesn't turn them into -+// lowercase). -+// -+// This is intended for gRPC-internal use ONLY. Users should use -+// FromOutgoingContext instead. -+func FromOutgoingContextRaw(ctx context.Context) (MD, [][]string, bool) { -+ raw, ok := ctx.Value(mdOutgoingKey{}).(rawMD) -+ if !ok { -+ return nil, nil, false -+ } -+ -+ return raw.md, raw.added, true -+} -+ -+// FromOutgoingContext returns the outgoing metadata in ctx if it exists. -+// -+// All keys in the returned MD are lowercase. -+func FromOutgoingContext(ctx context.Context) (MD, bool) { -+ raw, ok := ctx.Value(mdOutgoingKey{}).(rawMD) -+ if !ok { -+ return nil, false -+ } -+ -+ mdSize := len(raw.md) -+ for i := range raw.added { -+ mdSize += len(raw.added[i]) / 2 -+ } -+ -+ out := make(MD, mdSize) -+ for k, v := range raw.md { -+ // We need to manually convert all keys to lower case, because MD is a -+ // map, and there's no guarantee that the MD attached to the context is -+ // created using our helper functions. -+ key := strings.ToLower(k) -+ out[key] = copyOf(v) -+ } -+ for _, added := range raw.added { -+ if len(added)%2 == 1 { -+ panic(fmt.Sprintf("metadata: FromOutgoingContext got an odd number of input pairs for metadata: %d", len(added))) -+ } -+ -+ for i := 0; i < len(added); i += 2 { -+ key := strings.ToLower(added[i]) -+ out[key] = append(out[key], added[i+1]) -+ } -+ } -+ return out, ok -+} -+ -+type rawMD struct { -+ md MD -+ added [][]string -+} -diff --git a/vendor/google.golang.org/grpc/peer/peer.go b/vendor/google.golang.org/grpc/peer/peer.go -new file mode 100755 -index 0000000..e01d219 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/peer/peer.go -@@ -0,0 +1,51 @@ -+/* -+ * -+ * 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 peer defines various peer information associated with RPCs and -+// corresponding utils. -+package peer -+ -+import ( -+ "context" -+ "net" -+ -+ "google.golang.org/grpc/credentials" -+) -+ -+// Peer contains the information of the peer for an RPC, such as the address -+// and authentication information. -+type Peer struct { -+ // Addr is the peer address. -+ Addr net.Addr -+ // AuthInfo is the authentication information of the transport. -+ // It is nil if there is no transport security being used. -+ AuthInfo credentials.AuthInfo -+} -+ -+type peerKey struct{} -+ -+// NewContext creates a new context with peer information attached. -+func NewContext(ctx context.Context, p *Peer) context.Context { -+ return context.WithValue(ctx, peerKey{}, p) -+} -+ -+// FromContext returns the peer information in ctx if it exists. -+func FromContext(ctx context.Context) (p *Peer, ok bool) { -+ p, ok = ctx.Value(peerKey{}).(*Peer) -+ return -+} -diff --git a/vendor/google.golang.org/grpc/picker_wrapper.go b/vendor/google.golang.org/grpc/picker_wrapper.go -new file mode 100755 -index 0000000..02f9759 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/picker_wrapper.go -@@ -0,0 +1,216 @@ -+/* -+ * -+ * 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 ( -+ "context" -+ "io" -+ "sync" -+ -+ "google.golang.org/grpc/balancer" -+ "google.golang.org/grpc/codes" -+ "google.golang.org/grpc/internal/channelz" -+ istatus "google.golang.org/grpc/internal/status" -+ "google.golang.org/grpc/internal/transport" -+ "google.golang.org/grpc/status" -+) -+ -+// pickerWrapper is a wrapper of balancer.Picker. It blocks on certain pick -+// actions and unblock when there's a picker update. -+type pickerWrapper struct { -+ mu sync.Mutex -+ done bool -+ idle bool -+ blockingCh chan struct{} -+ picker balancer.Picker -+} -+ -+func newPickerWrapper() *pickerWrapper { -+ return &pickerWrapper{blockingCh: make(chan struct{})} -+} -+ -+// updatePicker is called by UpdateBalancerState. It unblocks all blocked pick. -+func (pw *pickerWrapper) updatePicker(p balancer.Picker) { -+ pw.mu.Lock() -+ if pw.done || pw.idle { -+ // There is a small window where a picker update from the LB policy can -+ // race with the channel going to idle mode. If the picker is idle here, -+ // it is because the channel asked it to do so, and therefore it is sage -+ // to ignore the update from the LB policy. -+ pw.mu.Unlock() -+ return -+ } -+ pw.picker = p -+ // pw.blockingCh should never be nil. -+ close(pw.blockingCh) -+ pw.blockingCh = make(chan struct{}) -+ pw.mu.Unlock() -+} -+ -+// doneChannelzWrapper performs the following: -+// - increments the calls started channelz counter -+// - wraps the done function in the passed in result to increment the calls -+// failed or calls succeeded channelz counter before invoking the actual -+// done function. -+func doneChannelzWrapper(acbw *acBalancerWrapper, result *balancer.PickResult) { -+ ac := acbw.ac -+ ac.incrCallsStarted() -+ done := result.Done -+ result.Done = func(b balancer.DoneInfo) { -+ if b.Err != nil && b.Err != io.EOF { -+ ac.incrCallsFailed() -+ } else { -+ ac.incrCallsSucceeded() -+ } -+ if done != nil { -+ done(b) -+ } -+ } -+} -+ -+// pick returns the transport that will be used for the RPC. -+// It may block in the following cases: -+// - there's no picker -+// - the current picker returns ErrNoSubConnAvailable -+// - the current picker returns other errors and failfast is false. -+// - the subConn returned by the current picker is not READY -+// When one of these situations happens, pick blocks until the picker gets updated. -+func (pw *pickerWrapper) pick(ctx context.Context, failfast bool, info balancer.PickInfo) (transport.ClientTransport, balancer.PickResult, error) { -+ var ch chan struct{} -+ -+ var lastPickErr error -+ for { -+ pw.mu.Lock() -+ if pw.done { -+ pw.mu.Unlock() -+ return nil, balancer.PickResult{}, ErrClientConnClosing -+ } -+ -+ if pw.picker == nil { -+ ch = pw.blockingCh -+ } -+ if ch == pw.blockingCh { -+ // This could happen when either: -+ // - pw.picker is nil (the previous if condition), or -+ // - has called pick on the current picker. -+ pw.mu.Unlock() -+ select { -+ case <-ctx.Done(): -+ var errStr string -+ if lastPickErr != nil { -+ errStr = "latest balancer error: " + lastPickErr.Error() -+ } else { -+ errStr = ctx.Err().Error() -+ } -+ switch ctx.Err() { -+ case context.DeadlineExceeded: -+ return nil, balancer.PickResult{}, status.Error(codes.DeadlineExceeded, errStr) -+ case context.Canceled: -+ return nil, balancer.PickResult{}, status.Error(codes.Canceled, errStr) -+ } -+ case <-ch: -+ } -+ continue -+ } -+ -+ ch = pw.blockingCh -+ p := pw.picker -+ pw.mu.Unlock() -+ -+ pickResult, err := p.Pick(info) -+ if err != nil { -+ if err == balancer.ErrNoSubConnAvailable { -+ continue -+ } -+ if st, ok := status.FromError(err); ok { -+ // Status error: end the RPC unconditionally with this status. -+ // First restrict the code to the list allowed by gRFC A54. -+ if istatus.IsRestrictedControlPlaneCode(st) { -+ err = status.Errorf(codes.Internal, "received picker error with illegal status: %v", err) -+ } -+ return nil, balancer.PickResult{}, dropError{error: err} -+ } -+ // For all other errors, wait for ready RPCs should block and other -+ // RPCs should fail with unavailable. -+ if !failfast { -+ lastPickErr = err -+ continue -+ } -+ return nil, balancer.PickResult{}, status.Error(codes.Unavailable, err.Error()) -+ } -+ -+ acbw, ok := pickResult.SubConn.(*acBalancerWrapper) -+ if !ok { -+ logger.Errorf("subconn returned from pick is type %T, not *acBalancerWrapper", pickResult.SubConn) -+ continue -+ } -+ if t := acbw.ac.getReadyTransport(); t != nil { -+ if channelz.IsOn() { -+ doneChannelzWrapper(acbw, &pickResult) -+ return t, pickResult, nil -+ } -+ return t, pickResult, nil -+ } -+ if pickResult.Done != nil { -+ // Calling done with nil error, no bytes sent and no bytes received. -+ // DoneInfo with default value works. -+ pickResult.Done(balancer.DoneInfo{}) -+ } -+ logger.Infof("blockingPicker: the picked transport is not ready, loop back to repick") -+ // If ok == false, ac.state is not READY. -+ // A valid picker always returns READY subConn. This means the state of ac -+ // just changed, and picker will be updated shortly. -+ // continue back to the beginning of the for loop to repick. -+ } -+} -+ -+func (pw *pickerWrapper) close() { -+ pw.mu.Lock() -+ defer pw.mu.Unlock() -+ if pw.done { -+ return -+ } -+ pw.done = true -+ close(pw.blockingCh) -+} -+ -+func (pw *pickerWrapper) enterIdleMode() { -+ pw.mu.Lock() -+ defer pw.mu.Unlock() -+ if pw.done { -+ return -+ } -+ pw.idle = true -+} -+ -+func (pw *pickerWrapper) exitIdleMode() { -+ pw.mu.Lock() -+ defer pw.mu.Unlock() -+ if pw.done { -+ return -+ } -+ pw.blockingCh = make(chan struct{}) -+ pw.idle = false -+} -+ -+// dropError is a wrapper error that indicates the LB policy wishes to drop the -+// RPC and not retry it. -+type dropError struct { -+ error -+} -diff --git a/vendor/google.golang.org/grpc/pickfirst.go b/vendor/google.golang.org/grpc/pickfirst.go -new file mode 100755 -index 0000000..abe266b ---- /dev/null -+++ b/vendor/google.golang.org/grpc/pickfirst.go -@@ -0,0 +1,227 @@ -+/* -+ * -+ * 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 ( -+ "encoding/json" -+ "errors" -+ "fmt" -+ -+ "google.golang.org/grpc/balancer" -+ "google.golang.org/grpc/connectivity" -+ "google.golang.org/grpc/internal/envconfig" -+ "google.golang.org/grpc/internal/grpcrand" -+ "google.golang.org/grpc/serviceconfig" -+) -+ -+// PickFirstBalancerName is the name of the pick_first balancer. -+const PickFirstBalancerName = "pick_first" -+ -+func newPickfirstBuilder() balancer.Builder { -+ return &pickfirstBuilder{} -+} -+ -+type pickfirstBuilder struct{} -+ -+func (*pickfirstBuilder) Build(cc balancer.ClientConn, opt balancer.BuildOptions) balancer.Balancer { -+ return &pickfirstBalancer{cc: cc} -+} -+ -+func (*pickfirstBuilder) Name() string { -+ return PickFirstBalancerName -+} -+ -+type pfConfig struct { -+ serviceconfig.LoadBalancingConfig `json:"-"` -+ -+ // If set to true, instructs the LB policy to shuffle the order of the list -+ // of addresses received from the name resolver before attempting to -+ // connect to them. -+ ShuffleAddressList bool `json:"shuffleAddressList"` -+} -+ -+func (*pickfirstBuilder) ParseConfig(js json.RawMessage) (serviceconfig.LoadBalancingConfig, error) { -+ cfg := &pfConfig{} -+ if err := json.Unmarshal(js, cfg); err != nil { -+ return nil, fmt.Errorf("pickfirst: unable to unmarshal LB policy config: %s, error: %v", string(js), err) -+ } -+ return cfg, nil -+} -+ -+type pickfirstBalancer struct { -+ state connectivity.State -+ cc balancer.ClientConn -+ subConn balancer.SubConn -+ cfg *pfConfig -+} -+ -+func (b *pickfirstBalancer) ResolverError(err error) { -+ if logger.V(2) { -+ logger.Infof("pickfirstBalancer: ResolverError called with error: %v", err) -+ } -+ if b.subConn == nil { -+ b.state = connectivity.TransientFailure -+ } -+ -+ if b.state != connectivity.TransientFailure { -+ // The picker will not change since the balancer does not currently -+ // report an error. -+ return -+ } -+ b.cc.UpdateState(balancer.State{ -+ ConnectivityState: connectivity.TransientFailure, -+ Picker: &picker{err: fmt.Errorf("name resolver error: %v", err)}, -+ }) -+} -+ -+func (b *pickfirstBalancer) UpdateClientConnState(state balancer.ClientConnState) error { -+ addrs := state.ResolverState.Addresses -+ if len(addrs) == 0 { -+ // The resolver reported an empty address list. Treat it like an error by -+ // calling b.ResolverError. -+ if b.subConn != nil { -+ // Remove the old subConn. All addresses were removed, so it is no longer -+ // valid. -+ b.cc.RemoveSubConn(b.subConn) -+ b.subConn = nil -+ } -+ b.ResolverError(errors.New("produced zero addresses")) -+ return balancer.ErrBadResolverState -+ } -+ -+ if state.BalancerConfig != nil { -+ cfg, ok := state.BalancerConfig.(*pfConfig) -+ if !ok { -+ return fmt.Errorf("pickfirstBalancer: received nil or illegal BalancerConfig (type %T): %v", state.BalancerConfig, state.BalancerConfig) -+ } -+ b.cfg = cfg -+ } -+ -+ if envconfig.PickFirstLBConfig && b.cfg != nil && b.cfg.ShuffleAddressList { -+ grpcrand.Shuffle(len(addrs), func(i, j int) { addrs[i], addrs[j] = addrs[j], addrs[i] }) -+ } -+ if b.subConn != nil { -+ b.cc.UpdateAddresses(b.subConn, addrs) -+ return nil -+ } -+ -+ subConn, err := b.cc.NewSubConn(addrs, balancer.NewSubConnOptions{}) -+ if err != nil { -+ if logger.V(2) { -+ logger.Errorf("pickfirstBalancer: failed to NewSubConn: %v", err) -+ } -+ b.state = connectivity.TransientFailure -+ b.cc.UpdateState(balancer.State{ -+ ConnectivityState: connectivity.TransientFailure, -+ Picker: &picker{err: fmt.Errorf("error creating connection: %v", err)}, -+ }) -+ return balancer.ErrBadResolverState -+ } -+ b.subConn = subConn -+ b.state = connectivity.Idle -+ b.cc.UpdateState(balancer.State{ -+ ConnectivityState: connectivity.Connecting, -+ Picker: &picker{err: balancer.ErrNoSubConnAvailable}, -+ }) -+ b.subConn.Connect() -+ return nil -+} -+ -+func (b *pickfirstBalancer) UpdateSubConnState(subConn balancer.SubConn, state balancer.SubConnState) { -+ if logger.V(2) { -+ logger.Infof("pickfirstBalancer: UpdateSubConnState: %p, %v", subConn, state) -+ } -+ if b.subConn != subConn { -+ if logger.V(2) { -+ logger.Infof("pickfirstBalancer: ignored state change because subConn is not recognized") -+ } -+ return -+ } -+ if state.ConnectivityState == connectivity.Shutdown { -+ b.subConn = nil -+ return -+ } -+ -+ switch state.ConnectivityState { -+ case connectivity.Ready: -+ b.cc.UpdateState(balancer.State{ -+ ConnectivityState: state.ConnectivityState, -+ Picker: &picker{result: balancer.PickResult{SubConn: subConn}}, -+ }) -+ case connectivity.Connecting: -+ if b.state == connectivity.TransientFailure { -+ // We stay in TransientFailure until we are Ready. See A62. -+ return -+ } -+ b.cc.UpdateState(balancer.State{ -+ ConnectivityState: state.ConnectivityState, -+ Picker: &picker{err: balancer.ErrNoSubConnAvailable}, -+ }) -+ case connectivity.Idle: -+ if b.state == connectivity.TransientFailure { -+ // We stay in TransientFailure until we are Ready. Also kick the -+ // subConn out of Idle into Connecting. See A62. -+ b.subConn.Connect() -+ return -+ } -+ b.cc.UpdateState(balancer.State{ -+ ConnectivityState: state.ConnectivityState, -+ Picker: &idlePicker{subConn: subConn}, -+ }) -+ case connectivity.TransientFailure: -+ b.cc.UpdateState(balancer.State{ -+ ConnectivityState: state.ConnectivityState, -+ Picker: &picker{err: state.ConnectionError}, -+ }) -+ } -+ b.state = state.ConnectivityState -+} -+ -+func (b *pickfirstBalancer) Close() { -+} -+ -+func (b *pickfirstBalancer) ExitIdle() { -+ if b.subConn != nil && b.state == connectivity.Idle { -+ b.subConn.Connect() -+ } -+} -+ -+type picker struct { -+ result balancer.PickResult -+ err error -+} -+ -+func (p *picker) Pick(balancer.PickInfo) (balancer.PickResult, error) { -+ return p.result, p.err -+} -+ -+// idlePicker is used when the SubConn is IDLE and kicks the SubConn into -+// CONNECTING when Pick is called. -+type idlePicker struct { -+ subConn balancer.SubConn -+} -+ -+func (i *idlePicker) Pick(balancer.PickInfo) (balancer.PickResult, error) { -+ i.subConn.Connect() -+ return balancer.PickResult{}, balancer.ErrNoSubConnAvailable -+} -+ -+func init() { -+ balancer.Register(newPickfirstBuilder()) -+} -diff --git a/vendor/google.golang.org/grpc/preloader.go b/vendor/google.golang.org/grpc/preloader.go -new file mode 100755 -index 0000000..cd45547 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/preloader.go -@@ -0,0 +1,67 @@ -+/* -+ * -+ * Copyright 2019 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 ( -+ "google.golang.org/grpc/codes" -+ "google.golang.org/grpc/status" -+) -+ -+// PreparedMsg is responsible for creating a Marshalled and Compressed object. -+// -+// # Experimental -+// -+// Notice: This type is EXPERIMENTAL and may be changed or removed in a -+// later release. -+type PreparedMsg struct { -+ // Struct for preparing msg before sending them -+ encodedData []byte -+ hdr []byte -+ payload []byte -+} -+ -+// Encode marshalls and compresses the message using the codec and compressor for the stream. -+func (p *PreparedMsg) Encode(s Stream, msg interface{}) error { -+ ctx := s.Context() -+ rpcInfo, ok := rpcInfoFromContext(ctx) -+ if !ok { -+ return status.Errorf(codes.Internal, "grpc: unable to get rpcInfo") -+ } -+ -+ // check if the context has the relevant information to prepareMsg -+ if rpcInfo.preloaderInfo == nil { -+ return status.Errorf(codes.Internal, "grpc: rpcInfo.preloaderInfo is nil") -+ } -+ if rpcInfo.preloaderInfo.codec == nil { -+ return status.Errorf(codes.Internal, "grpc: rpcInfo.preloaderInfo.codec is nil") -+ } -+ -+ // prepare the msg -+ data, err := encode(rpcInfo.preloaderInfo.codec, msg) -+ if err != nil { -+ return err -+ } -+ p.encodedData = data -+ compData, err := compress(data, rpcInfo.preloaderInfo.cp, rpcInfo.preloaderInfo.comp) -+ if err != nil { -+ return err -+ } -+ p.hdr, p.payload = msgHeader(data, compData) -+ return nil -+} -diff --git a/vendor/google.golang.org/grpc/regenerate.sh b/vendor/google.golang.org/grpc/regenerate.sh -new file mode 100755 -index 0000000..a6f26c8 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/regenerate.sh -@@ -0,0 +1,123 @@ -+#!/bin/bash -+# Copyright 2020 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. -+ -+set -eu -o pipefail -+ -+WORKDIR=$(mktemp -d) -+ -+function finish { -+ rm -rf "$WORKDIR" -+} -+trap finish EXIT -+ -+export GOBIN=${WORKDIR}/bin -+export PATH=${GOBIN}:${PATH} -+mkdir -p ${GOBIN} -+ -+echo "remove existing generated files" -+# grpc_testing_not_regenerate/*.pb.go is not re-generated, -+# see grpc_testing_not_regenerate/README.md for details. -+rm -f $(find . -name '*.pb.go' | grep -v 'grpc_testing_not_regenerate') -+ -+echo "go install google.golang.org/protobuf/cmd/protoc-gen-go" -+(cd test/tools && go install google.golang.org/protobuf/cmd/protoc-gen-go) -+ -+echo "go install cmd/protoc-gen-go-grpc" -+(cd cmd/protoc-gen-go-grpc && go install .) -+ -+echo "git clone https://github.com/grpc/grpc-proto" -+git clone --quiet https://github.com/grpc/grpc-proto ${WORKDIR}/grpc-proto -+ -+echo "git clone https://github.com/protocolbuffers/protobuf" -+git clone --quiet https://github.com/protocolbuffers/protobuf ${WORKDIR}/protobuf -+ -+# Pull in code.proto as a proto dependency -+mkdir -p ${WORKDIR}/googleapis/google/rpc -+echo "curl https://raw.githubusercontent.com/googleapis/googleapis/master/google/rpc/code.proto" -+curl --silent https://raw.githubusercontent.com/googleapis/googleapis/master/google/rpc/code.proto > ${WORKDIR}/googleapis/google/rpc/code.proto -+ -+mkdir -p ${WORKDIR}/out -+ -+# Generates sources without the embed requirement -+LEGACY_SOURCES=( -+ ${WORKDIR}/grpc-proto/grpc/binlog/v1/binarylog.proto -+ ${WORKDIR}/grpc-proto/grpc/channelz/v1/channelz.proto -+ ${WORKDIR}/grpc-proto/grpc/health/v1/health.proto -+ ${WORKDIR}/grpc-proto/grpc/lb/v1/load_balancer.proto -+ profiling/proto/service.proto -+ ${WORKDIR}/grpc-proto/grpc/reflection/v1alpha/reflection.proto -+ ${WORKDIR}/grpc-proto/grpc/reflection/v1/reflection.proto -+) -+ -+# Generates only the new gRPC Service symbols -+SOURCES=( -+ $(git ls-files --exclude-standard --cached --others "*.proto" | grep -v '^\(profiling/proto/service.proto\|reflection/grpc_reflection_v1alpha/reflection.proto\)$') -+ ${WORKDIR}/grpc-proto/grpc/gcp/altscontext.proto -+ ${WORKDIR}/grpc-proto/grpc/gcp/handshaker.proto -+ ${WORKDIR}/grpc-proto/grpc/gcp/transport_security_common.proto -+ ${WORKDIR}/grpc-proto/grpc/lookup/v1/rls.proto -+ ${WORKDIR}/grpc-proto/grpc/lookup/v1/rls_config.proto -+ ${WORKDIR}/grpc-proto/grpc/testing/*.proto -+ ${WORKDIR}/grpc-proto/grpc/core/*.proto -+) -+ -+# These options of the form 'Mfoo.proto=bar' instruct the codegen to use an -+# import path of 'bar' in the generated code when 'foo.proto' is imported in -+# one of the sources. -+# -+# Note that the protos listed here are all for testing purposes. All protos to -+# be used externally should have a go_package option (and they don't need to be -+# listed here). -+OPTS=Mgrpc/core/stats.proto=google.golang.org/grpc/interop/grpc_testing/core,\ -+Mgrpc/testing/benchmark_service.proto=google.golang.org/grpc/interop/grpc_testing,\ -+Mgrpc/testing/stats.proto=google.golang.org/grpc/interop/grpc_testing,\ -+Mgrpc/testing/report_qps_scenario_service.proto=google.golang.org/grpc/interop/grpc_testing,\ -+Mgrpc/testing/messages.proto=google.golang.org/grpc/interop/grpc_testing,\ -+Mgrpc/testing/worker_service.proto=google.golang.org/grpc/interop/grpc_testing,\ -+Mgrpc/testing/control.proto=google.golang.org/grpc/interop/grpc_testing,\ -+Mgrpc/testing/test.proto=google.golang.org/grpc/interop/grpc_testing,\ -+Mgrpc/testing/payloads.proto=google.golang.org/grpc/interop/grpc_testing,\ -+Mgrpc/testing/empty.proto=google.golang.org/grpc/interop/grpc_testing -+ -+for src in ${SOURCES[@]}; do -+ echo "protoc ${src}" -+ protoc --go_out=${OPTS}:${WORKDIR}/out --go-grpc_out=${OPTS}:${WORKDIR}/out \ -+ -I"." \ -+ -I${WORKDIR}/grpc-proto \ -+ -I${WORKDIR}/googleapis \ -+ -I${WORKDIR}/protobuf/src \ -+ ${src} -+done -+ -+for src in ${LEGACY_SOURCES[@]}; do -+ echo "protoc ${src}" -+ protoc --go_out=${OPTS}:${WORKDIR}/out --go-grpc_out=${OPTS},require_unimplemented_servers=false:${WORKDIR}/out \ -+ -I"." \ -+ -I${WORKDIR}/grpc-proto \ -+ -I${WORKDIR}/googleapis \ -+ -I${WORKDIR}/protobuf/src \ -+ ${src} -+done -+ -+# The go_package option in grpc/lookup/v1/rls.proto doesn't match the -+# current location. Move it into the right place. -+mkdir -p ${WORKDIR}/out/google.golang.org/grpc/internal/proto/grpc_lookup_v1 -+mv ${WORKDIR}/out/google.golang.org/grpc/lookup/grpc_lookup_v1/* ${WORKDIR}/out/google.golang.org/grpc/internal/proto/grpc_lookup_v1 -+ -+# grpc_testing_not_regenerate/*.pb.go are not re-generated, -+# see grpc_testing_not_regenerate/README.md for details. -+rm ${WORKDIR}/out/google.golang.org/grpc/reflection/grpc_testing_not_regenerate/*.pb.go -+ -+cp -R ${WORKDIR}/out/google.golang.org/grpc/* . -diff --git a/vendor/google.golang.org/grpc/resolver/map.go b/vendor/google.golang.org/grpc/resolver/map.go -new file mode 100755 -index 0000000..efcb7f3 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/resolver/map.go -@@ -0,0 +1,138 @@ -+/* -+ * -+ * Copyright 2021 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 resolver -+ -+type addressMapEntry struct { -+ addr Address -+ value interface{} -+} -+ -+// AddressMap is a map of addresses to arbitrary values taking into account -+// Attributes. BalancerAttributes are ignored, as are Metadata and Type. -+// Multiple accesses may not be performed concurrently. Must be created via -+// NewAddressMap; do not construct directly. -+type AddressMap struct { -+ // The underlying map is keyed by an Address with fields that we don't care -+ // about being set to their zero values. The only fields that we care about -+ // are `Addr`, `ServerName` and `Attributes`. Since we need to be able to -+ // distinguish between addresses with same `Addr` and `ServerName`, but -+ // different `Attributes`, we cannot store the `Attributes` in the map key. -+ // -+ // The comparison operation for structs work as follows: -+ // Struct values are comparable if all their fields are comparable. Two -+ // struct values are equal if their corresponding non-blank fields are equal. -+ // -+ // The value type of the map contains a slice of addresses which match the key -+ // in their `Addr` and `ServerName` fields and contain the corresponding value -+ // associated with them. -+ m map[Address]addressMapEntryList -+} -+ -+func toMapKey(addr *Address) Address { -+ return Address{Addr: addr.Addr, ServerName: addr.ServerName} -+} -+ -+type addressMapEntryList []*addressMapEntry -+ -+// NewAddressMap creates a new AddressMap. -+func NewAddressMap() *AddressMap { -+ return &AddressMap{m: make(map[Address]addressMapEntryList)} -+} -+ -+// find returns the index of addr in the addressMapEntry slice, or -1 if not -+// present. -+func (l addressMapEntryList) find(addr Address) int { -+ for i, entry := range l { -+ // Attributes are the only thing to match on here, since `Addr` and -+ // `ServerName` are already equal. -+ if entry.addr.Attributes.Equal(addr.Attributes) { -+ return i -+ } -+ } -+ return -1 -+} -+ -+// Get returns the value for the address in the map, if present. -+func (a *AddressMap) Get(addr Address) (value interface{}, ok bool) { -+ addrKey := toMapKey(&addr) -+ entryList := a.m[addrKey] -+ if entry := entryList.find(addr); entry != -1 { -+ return entryList[entry].value, true -+ } -+ return nil, false -+} -+ -+// Set updates or adds the value to the address in the map. -+func (a *AddressMap) Set(addr Address, value interface{}) { -+ addrKey := toMapKey(&addr) -+ entryList := a.m[addrKey] -+ if entry := entryList.find(addr); entry != -1 { -+ entryList[entry].value = value -+ return -+ } -+ a.m[addrKey] = append(entryList, &addressMapEntry{addr: addr, value: value}) -+} -+ -+// Delete removes addr from the map. -+func (a *AddressMap) Delete(addr Address) { -+ addrKey := toMapKey(&addr) -+ entryList := a.m[addrKey] -+ entry := entryList.find(addr) -+ if entry == -1 { -+ return -+ } -+ if len(entryList) == 1 { -+ entryList = nil -+ } else { -+ copy(entryList[entry:], entryList[entry+1:]) -+ entryList = entryList[:len(entryList)-1] -+ } -+ a.m[addrKey] = entryList -+} -+ -+// Len returns the number of entries in the map. -+func (a *AddressMap) Len() int { -+ ret := 0 -+ for _, entryList := range a.m { -+ ret += len(entryList) -+ } -+ return ret -+} -+ -+// Keys returns a slice of all current map keys. -+func (a *AddressMap) Keys() []Address { -+ ret := make([]Address, 0, a.Len()) -+ for _, entryList := range a.m { -+ for _, entry := range entryList { -+ ret = append(ret, entry.addr) -+ } -+ } -+ return ret -+} -+ -+// Values returns a slice of all current map values. -+func (a *AddressMap) Values() []interface{} { -+ ret := make([]interface{}, 0, a.Len()) -+ for _, entryList := range a.m { -+ for _, entry := range entryList { -+ ret = append(ret, entry.value) -+ } -+ } -+ return ret -+} -diff --git a/vendor/google.golang.org/grpc/resolver/resolver.go b/vendor/google.golang.org/grpc/resolver/resolver.go -new file mode 100755 -index 0000000..d8db6f5 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/resolver/resolver.go -@@ -0,0 +1,330 @@ -+/* -+ * -+ * 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 resolver defines APIs for name resolution in gRPC. -+// All APIs in this package are experimental. -+package resolver -+ -+import ( -+ "context" -+ "fmt" -+ "net" -+ "net/url" -+ "strings" -+ -+ "google.golang.org/grpc/attributes" -+ "google.golang.org/grpc/credentials" -+ "google.golang.org/grpc/serviceconfig" -+) -+ -+var ( -+ // m is a map from scheme to resolver builder. -+ m = make(map[string]Builder) -+ // defaultScheme is the default scheme to use. -+ defaultScheme = "passthrough" -+) -+ -+// TODO(bar) install dns resolver in init(){}. -+ -+// Register registers the resolver builder to the resolver map. b.Scheme will -+// be used as the scheme registered with this builder. The registry is case -+// sensitive, and schemes should not contain any uppercase characters. -+// -+// NOTE: this function must only be called during initialization time (i.e. in -+// an init() function), and is not thread-safe. If multiple Resolvers are -+// registered with the same name, the one registered last will take effect. -+func Register(b Builder) { -+ m[b.Scheme()] = b -+} -+ -+// Get returns the resolver builder registered with the given scheme. -+// -+// If no builder is register with the scheme, nil will be returned. -+func Get(scheme string) Builder { -+ if b, ok := m[scheme]; ok { -+ return b -+ } -+ return nil -+} -+ -+// SetDefaultScheme sets the default scheme that will be used. The default -+// default scheme is "passthrough". -+// -+// NOTE: this function must only be called during initialization time (i.e. in -+// an init() function), and is not thread-safe. The scheme set last overrides -+// previously set values. -+func SetDefaultScheme(scheme string) { -+ defaultScheme = scheme -+} -+ -+// GetDefaultScheme gets the default scheme that will be used. -+func GetDefaultScheme() string { -+ return defaultScheme -+} -+ -+// AddressType indicates the address type returned by name resolution. -+// -+// Deprecated: use Attributes in Address instead. -+type AddressType uint8 -+ -+const ( -+ // Backend indicates the address is for a backend server. -+ // -+ // Deprecated: use Attributes in Address instead. -+ Backend AddressType = iota -+ // GRPCLB indicates the address is for a grpclb load balancer. -+ // -+ // Deprecated: to select the GRPCLB load balancing policy, use a service -+ // config with a corresponding loadBalancingConfig. To supply balancer -+ // addresses to the GRPCLB load balancing policy, set State.Attributes -+ // using balancer/grpclb/state.Set. -+ GRPCLB -+) -+ -+// Address represents a server the client connects to. -+// -+// # Experimental -+// -+// Notice: This type is EXPERIMENTAL and may be changed or removed in a -+// later release. -+type Address struct { -+ // Addr is the server address on which a connection will be established. -+ Addr string -+ -+ // ServerName is the name of this address. -+ // If non-empty, the ServerName is used as the transport certification authority for -+ // the address, instead of the hostname from the Dial target string. In most cases, -+ // this should not be set. -+ // -+ // If Type is GRPCLB, ServerName should be the name of the remote load -+ // balancer, not the name of the backend. -+ // -+ // WARNING: ServerName must only be populated with trusted values. It -+ // is insecure to populate it with data from untrusted inputs since untrusted -+ // values could be used to bypass the authority checks performed by TLS. -+ ServerName string -+ -+ // Attributes contains arbitrary data about this address intended for -+ // consumption by the SubConn. -+ Attributes *attributes.Attributes -+ -+ // BalancerAttributes contains arbitrary data about this address intended -+ // for consumption by the LB policy. These attributes do not affect SubConn -+ // creation, connection establishment, handshaking, etc. -+ BalancerAttributes *attributes.Attributes -+ -+ // Type is the type of this address. -+ // -+ // Deprecated: use Attributes instead. -+ Type AddressType -+ -+ // Metadata is the information associated with Addr, which may be used -+ // to make load balancing decision. -+ // -+ // Deprecated: use Attributes instead. -+ Metadata interface{} -+} -+ -+// Equal returns whether a and o are identical. Metadata is compared directly, -+// not with any recursive introspection. -+// -+// This method compares all fields of the address. When used to tell apart -+// addresses during subchannel creation or connection establishment, it might be -+// more appropriate for the caller to implement custom equality logic. -+func (a Address) Equal(o Address) bool { -+ return a.Addr == o.Addr && a.ServerName == o.ServerName && -+ a.Attributes.Equal(o.Attributes) && -+ a.BalancerAttributes.Equal(o.BalancerAttributes) && -+ a.Type == o.Type && a.Metadata == o.Metadata -+} -+ -+// String returns JSON formatted string representation of the address. -+func (a Address) String() string { -+ var sb strings.Builder -+ sb.WriteString(fmt.Sprintf("{Addr: %q, ", a.Addr)) -+ sb.WriteString(fmt.Sprintf("ServerName: %q, ", a.ServerName)) -+ if a.Attributes != nil { -+ sb.WriteString(fmt.Sprintf("Attributes: %v, ", a.Attributes.String())) -+ } -+ if a.BalancerAttributes != nil { -+ sb.WriteString(fmt.Sprintf("BalancerAttributes: %v", a.BalancerAttributes.String())) -+ } -+ sb.WriteString("}") -+ return sb.String() -+} -+ -+// BuildOptions includes additional information for the builder to create -+// the resolver. -+type BuildOptions struct { -+ // DisableServiceConfig indicates whether a resolver implementation should -+ // fetch service config data. -+ DisableServiceConfig bool -+ // DialCreds is the transport credentials used by the ClientConn for -+ // communicating with the target gRPC service (set via -+ // WithTransportCredentials). In cases where a name resolution service -+ // requires the same credentials, the resolver may use this field. In most -+ // cases though, it is not appropriate, and this field may be ignored. -+ DialCreds credentials.TransportCredentials -+ // CredsBundle is the credentials bundle used by the ClientConn for -+ // communicating with the target gRPC service (set via -+ // WithCredentialsBundle). In cases where a name resolution service -+ // requires the same credentials, the resolver may use this field. In most -+ // cases though, it is not appropriate, and this field may be ignored. -+ CredsBundle credentials.Bundle -+ // Dialer is the custom dialer used by the ClientConn for dialling the -+ // target gRPC service (set via WithDialer). In cases where a name -+ // resolution service requires the same dialer, the resolver may use this -+ // field. In most cases though, it is not appropriate, and this field may -+ // be ignored. -+ Dialer func(context.Context, string) (net.Conn, error) -+} -+ -+// State contains the current Resolver state relevant to the ClientConn. -+type State struct { -+ // Addresses is the latest set of resolved addresses for the target. -+ Addresses []Address -+ -+ // ServiceConfig contains the result from parsing the latest service -+ // config. If it is nil, it indicates no service config is present or the -+ // resolver does not provide service configs. -+ ServiceConfig *serviceconfig.ParseResult -+ -+ // Attributes contains arbitrary data about the resolver intended for -+ // consumption by the load balancing policy. -+ Attributes *attributes.Attributes -+} -+ -+// ClientConn contains the callbacks for resolver to notify any updates -+// to the gRPC ClientConn. -+// -+// This interface is to be implemented by gRPC. Users should not need a -+// brand new implementation of this interface. For the situations like -+// testing, the new implementation should embed this interface. This allows -+// gRPC to add new methods to this interface. -+type ClientConn interface { -+ // UpdateState updates the state of the ClientConn appropriately. -+ // -+ // If an error is returned, the resolver should try to resolve the -+ // target again. The resolver should use a backoff timer to prevent -+ // overloading the server with requests. If a resolver is certain that -+ // reresolving will not change the result, e.g. because it is -+ // a watch-based resolver, returned errors can be ignored. -+ // -+ // If the resolved State is the same as the last reported one, calling -+ // UpdateState can be omitted. -+ UpdateState(State) error -+ // ReportError notifies the ClientConn that the Resolver encountered an -+ // error. The ClientConn will notify the load balancer and begin calling -+ // ResolveNow on the Resolver with exponential backoff. -+ ReportError(error) -+ // NewAddress is called by resolver to notify ClientConn a new list -+ // of resolved addresses. -+ // The address list should be the complete list of resolved addresses. -+ // -+ // Deprecated: Use UpdateState instead. -+ NewAddress(addresses []Address) -+ // NewServiceConfig is called by resolver to notify ClientConn a new -+ // service config. The service config should be provided as a json string. -+ // -+ // Deprecated: Use UpdateState instead. -+ NewServiceConfig(serviceConfig string) -+ // ParseServiceConfig parses the provided service config and returns an -+ // object that provides the parsed config. -+ ParseServiceConfig(serviceConfigJSON string) *serviceconfig.ParseResult -+} -+ -+// Target represents a target for gRPC, as specified in: -+// https://github.com/grpc/grpc/blob/master/doc/naming.md. -+// It is parsed from the target string that gets passed into Dial or DialContext -+// by the user. And gRPC passes it to the resolver and the balancer. -+// -+// If the target follows the naming spec, and the parsed scheme is registered -+// with gRPC, we will parse the target string according to the spec. If the -+// target does not contain a scheme or if the parsed scheme is not registered -+// (i.e. no corresponding resolver available to resolve the endpoint), we will -+// apply the default scheme, and will attempt to reparse it. -+// -+// Examples: -+// -+// - "dns://some_authority/foo.bar" -+// Target{Scheme: "dns", Authority: "some_authority", Endpoint: "foo.bar"} -+// - "foo.bar" -+// Target{Scheme: resolver.GetDefaultScheme(), Endpoint: "foo.bar"} -+// - "unknown_scheme://authority/endpoint" -+// Target{Scheme: resolver.GetDefaultScheme(), Endpoint: "unknown_scheme://authority/endpoint"} -+type Target struct { -+ // URL contains the parsed dial target with an optional default scheme added -+ // to it if the original dial target contained no scheme or contained an -+ // unregistered scheme. Any query params specified in the original dial -+ // target can be accessed from here. -+ URL url.URL -+} -+ -+// Endpoint retrieves endpoint without leading "/" from either `URL.Path` -+// or `URL.Opaque`. The latter is used when the former is empty. -+func (t Target) Endpoint() string { -+ endpoint := t.URL.Path -+ if endpoint == "" { -+ endpoint = t.URL.Opaque -+ } -+ // For targets of the form "[scheme]://[authority]/endpoint, the endpoint -+ // value returned from url.Parse() contains a leading "/". Although this is -+ // in accordance with RFC 3986, we do not want to break existing resolver -+ // implementations which expect the endpoint without the leading "/". So, we -+ // end up stripping the leading "/" here. But this will result in an -+ // incorrect parsing for something like "unix:///path/to/socket". Since we -+ // own the "unix" resolver, we can workaround in the unix resolver by using -+ // the `URL` field. -+ return strings.TrimPrefix(endpoint, "/") -+} -+ -+// Builder creates a resolver that will be used to watch name resolution updates. -+type Builder interface { -+ // Build creates a new resolver for the given target. -+ // -+ // gRPC dial calls Build synchronously, and fails if the returned error is -+ // not nil. -+ Build(target Target, cc ClientConn, opts BuildOptions) (Resolver, error) -+ // Scheme returns the scheme supported by this resolver. Scheme is defined -+ // at https://github.com/grpc/grpc/blob/master/doc/naming.md. The returned -+ // string should not contain uppercase characters, as they will not match -+ // the parsed target's scheme as defined in RFC 3986. -+ Scheme() string -+} -+ -+// ResolveNowOptions includes additional information for ResolveNow. -+type ResolveNowOptions struct{} -+ -+// Resolver watches for the updates on the specified target. -+// Updates include address updates and service config updates. -+type Resolver interface { -+ // ResolveNow will be called by gRPC to try to resolve the target name -+ // again. It's just a hint, resolver can ignore this if it's not necessary. -+ // -+ // It could be called multiple times concurrently. -+ ResolveNow(ResolveNowOptions) -+ // Close closes the resolver. -+ Close() -+} -+ -+// UnregisterForTesting removes the resolver builder with the given scheme from the -+// resolver map. -+// This function is for testing only. -+func UnregisterForTesting(scheme string) { -+ delete(m, scheme) -+} -diff --git a/vendor/google.golang.org/grpc/resolver_conn_wrapper.go b/vendor/google.golang.org/grpc/resolver_conn_wrapper.go -new file mode 100755 -index 0000000..b408b36 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/resolver_conn_wrapper.go -@@ -0,0 +1,239 @@ -+/* -+ * -+ * 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 ( -+ "context" -+ "strings" -+ "sync" -+ -+ "google.golang.org/grpc/balancer" -+ "google.golang.org/grpc/internal/channelz" -+ "google.golang.org/grpc/internal/grpcsync" -+ "google.golang.org/grpc/internal/pretty" -+ "google.golang.org/grpc/resolver" -+ "google.golang.org/grpc/serviceconfig" -+) -+ -+// resolverStateUpdater wraps the single method used by ccResolverWrapper to -+// report a state update from the actual resolver implementation. -+type resolverStateUpdater interface { -+ updateResolverState(s resolver.State, err error) error -+} -+ -+// ccResolverWrapper is a wrapper on top of cc for resolvers. -+// It implements resolver.ClientConn interface. -+type ccResolverWrapper struct { -+ // The following fields are initialized when the wrapper is created and are -+ // read-only afterwards, and therefore can be accessed without a mutex. -+ cc resolverStateUpdater -+ channelzID *channelz.Identifier -+ ignoreServiceConfig bool -+ opts ccResolverWrapperOpts -+ serializer *grpcsync.CallbackSerializer // To serialize all incoming calls. -+ serializerCancel context.CancelFunc // To close the serializer, accessed only from close(). -+ -+ // All incoming (resolver --> gRPC) calls are guaranteed to execute in a -+ // mutually exclusive manner as they are scheduled on the serializer. -+ // Fields accessed *only* in these serializer callbacks, can therefore be -+ // accessed without a mutex. -+ curState resolver.State -+ -+ // mu guards access to the below fields. -+ mu sync.Mutex -+ closed bool -+ resolver resolver.Resolver // Accessed only from outgoing calls. -+} -+ -+// ccResolverWrapperOpts wraps the arguments to be passed when creating a new -+// ccResolverWrapper. -+type ccResolverWrapperOpts struct { -+ target resolver.Target // User specified dial target to resolve. -+ builder resolver.Builder // Resolver builder to use. -+ bOpts resolver.BuildOptions // Resolver build options to use. -+ channelzID *channelz.Identifier // Channelz identifier for the channel. -+} -+ -+// newCCResolverWrapper uses the resolver.Builder to build a Resolver and -+// returns a ccResolverWrapper object which wraps the newly built resolver. -+func newCCResolverWrapper(cc resolverStateUpdater, opts ccResolverWrapperOpts) (*ccResolverWrapper, error) { -+ ctx, cancel := context.WithCancel(context.Background()) -+ ccr := &ccResolverWrapper{ -+ cc: cc, -+ channelzID: opts.channelzID, -+ ignoreServiceConfig: opts.bOpts.DisableServiceConfig, -+ opts: opts, -+ serializer: grpcsync.NewCallbackSerializer(ctx), -+ serializerCancel: cancel, -+ } -+ -+ // Cannot hold the lock at build time because the resolver can send an -+ // update or error inline and these incoming calls grab the lock to schedule -+ // a callback in the serializer. -+ r, err := opts.builder.Build(opts.target, ccr, opts.bOpts) -+ if err != nil { -+ cancel() -+ return nil, err -+ } -+ -+ // Any error reported by the resolver at build time that leads to a -+ // re-resolution request from the balancer is dropped by grpc until we -+ // return from this function. So, we don't have to handle pending resolveNow -+ // requests here. -+ ccr.mu.Lock() -+ ccr.resolver = r -+ ccr.mu.Unlock() -+ -+ return ccr, nil -+} -+ -+func (ccr *ccResolverWrapper) resolveNow(o resolver.ResolveNowOptions) { -+ ccr.mu.Lock() -+ defer ccr.mu.Unlock() -+ -+ // ccr.resolver field is set only after the call to Build() returns. But in -+ // the process of building, the resolver may send an error update which when -+ // propagated to the balancer may result in a re-resolution request. -+ if ccr.closed || ccr.resolver == nil { -+ return -+ } -+ ccr.resolver.ResolveNow(o) -+} -+ -+func (ccr *ccResolverWrapper) close() { -+ ccr.mu.Lock() -+ if ccr.closed { -+ ccr.mu.Unlock() -+ return -+ } -+ -+ channelz.Info(logger, ccr.channelzID, "Closing the name resolver") -+ -+ // Close the serializer to ensure that no more calls from the resolver are -+ // handled, before actually closing the resolver. -+ ccr.serializerCancel() -+ ccr.closed = true -+ r := ccr.resolver -+ ccr.mu.Unlock() -+ -+ // Give enqueued callbacks a chance to finish. -+ <-ccr.serializer.Done -+ -+ // Spawn a goroutine to close the resolver (since it may block trying to -+ // cleanup all allocated resources) and return early. -+ go r.Close() -+} -+ -+// serializerScheduleLocked is a convenience method to schedule a function to be -+// run on the serializer while holding ccr.mu. -+func (ccr *ccResolverWrapper) serializerScheduleLocked(f func(context.Context)) { -+ ccr.mu.Lock() -+ ccr.serializer.Schedule(f) -+ ccr.mu.Unlock() -+} -+ -+// UpdateState is called by resolver implementations to report new state to gRPC -+// which includes addresses and service config. -+func (ccr *ccResolverWrapper) UpdateState(s resolver.State) error { -+ errCh := make(chan error, 1) -+ ok := ccr.serializer.Schedule(func(context.Context) { -+ ccr.addChannelzTraceEvent(s) -+ ccr.curState = s -+ if err := ccr.cc.updateResolverState(ccr.curState, nil); err == balancer.ErrBadResolverState { -+ errCh <- balancer.ErrBadResolverState -+ return -+ } -+ errCh <- nil -+ }) -+ if !ok { -+ // The only time when Schedule() fail to add the callback to the -+ // serializer is when the serializer is closed, and this happens only -+ // when the resolver wrapper is closed. -+ return nil -+ } -+ return <-errCh -+} -+ -+// ReportError is called by resolver implementations to report errors -+// encountered during name resolution to gRPC. -+func (ccr *ccResolverWrapper) ReportError(err error) { -+ ccr.serializerScheduleLocked(func(_ context.Context) { -+ channelz.Warningf(logger, ccr.channelzID, "ccResolverWrapper: reporting error to cc: %v", err) -+ ccr.cc.updateResolverState(resolver.State{}, err) -+ }) -+} -+ -+// NewAddress is called by the resolver implementation to send addresses to -+// gRPC. -+func (ccr *ccResolverWrapper) NewAddress(addrs []resolver.Address) { -+ ccr.serializerScheduleLocked(func(_ context.Context) { -+ ccr.addChannelzTraceEvent(resolver.State{Addresses: addrs, ServiceConfig: ccr.curState.ServiceConfig}) -+ ccr.curState.Addresses = addrs -+ ccr.cc.updateResolverState(ccr.curState, nil) -+ }) -+} -+ -+// NewServiceConfig is called by the resolver implementation to send service -+// configs to gRPC. -+func (ccr *ccResolverWrapper) NewServiceConfig(sc string) { -+ ccr.serializerScheduleLocked(func(_ context.Context) { -+ channelz.Infof(logger, ccr.channelzID, "ccResolverWrapper: got new service config: %s", sc) -+ if ccr.ignoreServiceConfig { -+ channelz.Info(logger, ccr.channelzID, "Service config lookups disabled; ignoring config") -+ return -+ } -+ scpr := parseServiceConfig(sc) -+ if scpr.Err != nil { -+ channelz.Warningf(logger, ccr.channelzID, "ccResolverWrapper: error parsing service config: %v", scpr.Err) -+ return -+ } -+ ccr.addChannelzTraceEvent(resolver.State{Addresses: ccr.curState.Addresses, ServiceConfig: scpr}) -+ ccr.curState.ServiceConfig = scpr -+ ccr.cc.updateResolverState(ccr.curState, nil) -+ }) -+} -+ -+// ParseServiceConfig is called by resolver implementations to parse a JSON -+// representation of the service config. -+func (ccr *ccResolverWrapper) ParseServiceConfig(scJSON string) *serviceconfig.ParseResult { -+ return parseServiceConfig(scJSON) -+} -+ -+// addChannelzTraceEvent adds a channelz trace event containing the new -+// state received from resolver implementations. -+func (ccr *ccResolverWrapper) addChannelzTraceEvent(s resolver.State) { -+ var updates []string -+ var oldSC, newSC *ServiceConfig -+ var oldOK, newOK bool -+ if ccr.curState.ServiceConfig != nil { -+ oldSC, oldOK = ccr.curState.ServiceConfig.Config.(*ServiceConfig) -+ } -+ if s.ServiceConfig != nil { -+ newSC, newOK = s.ServiceConfig.Config.(*ServiceConfig) -+ } -+ if oldOK != newOK || (oldOK && newOK && oldSC.rawJSONString != newSC.rawJSONString) { -+ updates = append(updates, "service config updated") -+ } -+ if len(ccr.curState.Addresses) > 0 && len(s.Addresses) == 0 { -+ updates = append(updates, "resolver returned an empty address list") -+ } else if len(ccr.curState.Addresses) == 0 && len(s.Addresses) > 0 { -+ updates = append(updates, "resolver returned new addresses") -+ } -+ channelz.Infof(logger, ccr.channelzID, "Resolver state updated: %s (%v)", pretty.ToJSON(s), strings.Join(updates, "; ")) -+} -diff --git a/vendor/google.golang.org/grpc/rpc_util.go b/vendor/google.golang.org/grpc/rpc_util.go -new file mode 100755 -index 0000000..a844d28 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/rpc_util.go -@@ -0,0 +1,956 @@ -+/* -+ * -+ * 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" -+ "compress/gzip" -+ "context" -+ "encoding/binary" -+ "fmt" -+ "io" -+ "math" -+ "strings" -+ "sync" -+ "time" -+ -+ "google.golang.org/grpc/codes" -+ "google.golang.org/grpc/credentials" -+ "google.golang.org/grpc/encoding" -+ "google.golang.org/grpc/encoding/proto" -+ "google.golang.org/grpc/internal/transport" -+ "google.golang.org/grpc/metadata" -+ "google.golang.org/grpc/peer" -+ "google.golang.org/grpc/stats" -+ "google.golang.org/grpc/status" -+) -+ -+// Compressor defines the interface gRPC uses to compress a message. -+// -+// Deprecated: use package encoding. -+type Compressor interface { -+ // Do compresses p into w. -+ Do(w io.Writer, p []byte) error -+ // Type returns the compression algorithm the Compressor uses. -+ Type() string -+} -+ -+type gzipCompressor struct { -+ pool sync.Pool -+} -+ -+// NewGZIPCompressor creates a Compressor based on GZIP. -+// -+// Deprecated: use package encoding/gzip. -+func NewGZIPCompressor() Compressor { -+ c, _ := NewGZIPCompressorWithLevel(gzip.DefaultCompression) -+ return c -+} -+ -+// NewGZIPCompressorWithLevel is like NewGZIPCompressor but specifies the gzip compression level instead -+// of assuming DefaultCompression. -+// -+// The error returned will be nil if the level is valid. -+// -+// Deprecated: use package encoding/gzip. -+func NewGZIPCompressorWithLevel(level int) (Compressor, error) { -+ if level < gzip.DefaultCompression || level > gzip.BestCompression { -+ return nil, fmt.Errorf("grpc: invalid compression level: %d", level) -+ } -+ return &gzipCompressor{ -+ pool: sync.Pool{ -+ New: func() interface{} { -+ w, err := gzip.NewWriterLevel(io.Discard, level) -+ if err != nil { -+ panic(err) -+ } -+ return w -+ }, -+ }, -+ }, nil -+} -+ -+func (c *gzipCompressor) Do(w io.Writer, p []byte) error { -+ z := c.pool.Get().(*gzip.Writer) -+ defer c.pool.Put(z) -+ z.Reset(w) -+ if _, err := z.Write(p); err != nil { -+ return err -+ } -+ return z.Close() -+} -+ -+func (c *gzipCompressor) Type() string { -+ return "gzip" -+} -+ -+// Decompressor defines the interface gRPC uses to decompress a message. -+// -+// Deprecated: use package encoding. -+type Decompressor interface { -+ // Do reads the data from r and uncompress them. -+ Do(r io.Reader) ([]byte, error) -+ // Type returns the compression algorithm the Decompressor uses. -+ Type() string -+} -+ -+type gzipDecompressor struct { -+ pool sync.Pool -+} -+ -+// NewGZIPDecompressor creates a Decompressor based on GZIP. -+// -+// Deprecated: use package encoding/gzip. -+func NewGZIPDecompressor() Decompressor { -+ return &gzipDecompressor{} -+} -+ -+func (d *gzipDecompressor) Do(r io.Reader) ([]byte, error) { -+ var z *gzip.Reader -+ switch maybeZ := d.pool.Get().(type) { -+ case nil: -+ newZ, err := gzip.NewReader(r) -+ if err != nil { -+ return nil, err -+ } -+ z = newZ -+ case *gzip.Reader: -+ z = maybeZ -+ if err := z.Reset(r); err != nil { -+ d.pool.Put(z) -+ return nil, err -+ } -+ } -+ -+ defer func() { -+ z.Close() -+ d.pool.Put(z) -+ }() -+ return io.ReadAll(z) -+} -+ -+func (d *gzipDecompressor) Type() string { -+ return "gzip" -+} -+ -+// callInfo contains all related configuration and information about an RPC. -+type callInfo struct { -+ compressorType string -+ failFast bool -+ maxReceiveMessageSize *int -+ maxSendMessageSize *int -+ creds credentials.PerRPCCredentials -+ contentSubtype string -+ codec baseCodec -+ maxRetryRPCBufferSize int -+ onFinish []func(err error) -+} -+ -+func defaultCallInfo() *callInfo { -+ return &callInfo{ -+ failFast: true, -+ maxRetryRPCBufferSize: 256 * 1024, // 256KB -+ } -+} -+ -+// CallOption configures a Call before it starts or extracts information from -+// a Call after it completes. -+type CallOption interface { -+ // before is called before the call is sent to any server. If before -+ // returns a non-nil error, the RPC fails with that error. -+ before(*callInfo) error -+ -+ // after is called after the call has completed. after cannot return an -+ // error, so any failures should be reported via output parameters. -+ after(*callInfo, *csAttempt) -+} -+ -+// EmptyCallOption does not alter the Call configuration. -+// It can be embedded in another structure to carry satellite data for use -+// by interceptors. -+type EmptyCallOption struct{} -+ -+func (EmptyCallOption) before(*callInfo) error { return nil } -+func (EmptyCallOption) after(*callInfo, *csAttempt) {} -+ -+// Header returns a CallOptions that retrieves the header metadata -+// for a unary RPC. -+func Header(md *metadata.MD) CallOption { -+ return HeaderCallOption{HeaderAddr: md} -+} -+ -+// HeaderCallOption is a CallOption for collecting response header metadata. -+// The metadata field will be populated *after* the RPC completes. -+// -+// # Experimental -+// -+// Notice: This type is EXPERIMENTAL and may be changed or removed in a -+// later release. -+type HeaderCallOption struct { -+ HeaderAddr *metadata.MD -+} -+ -+func (o HeaderCallOption) before(c *callInfo) error { return nil } -+func (o HeaderCallOption) after(c *callInfo, attempt *csAttempt) { -+ *o.HeaderAddr, _ = attempt.s.Header() -+} -+ -+// Trailer returns a CallOptions that retrieves the trailer metadata -+// for a unary RPC. -+func Trailer(md *metadata.MD) CallOption { -+ return TrailerCallOption{TrailerAddr: md} -+} -+ -+// TrailerCallOption is a CallOption for collecting response trailer metadata. -+// The metadata field will be populated *after* the RPC completes. -+// -+// # Experimental -+// -+// Notice: This type is EXPERIMENTAL and may be changed or removed in a -+// later release. -+type TrailerCallOption struct { -+ TrailerAddr *metadata.MD -+} -+ -+func (o TrailerCallOption) before(c *callInfo) error { return nil } -+func (o TrailerCallOption) after(c *callInfo, attempt *csAttempt) { -+ *o.TrailerAddr = attempt.s.Trailer() -+} -+ -+// Peer returns a CallOption that retrieves peer information for a unary RPC. -+// The peer field will be populated *after* the RPC completes. -+func Peer(p *peer.Peer) CallOption { -+ return PeerCallOption{PeerAddr: p} -+} -+ -+// PeerCallOption is a CallOption for collecting the identity of the remote -+// peer. The peer field will be populated *after* the RPC completes. -+// -+// # Experimental -+// -+// Notice: This type is EXPERIMENTAL and may be changed or removed in a -+// later release. -+type PeerCallOption struct { -+ PeerAddr *peer.Peer -+} -+ -+func (o PeerCallOption) before(c *callInfo) error { return nil } -+func (o PeerCallOption) after(c *callInfo, attempt *csAttempt) { -+ if x, ok := peer.FromContext(attempt.s.Context()); ok { -+ *o.PeerAddr = *x -+ } -+} -+ -+// WaitForReady configures the action to take when an RPC is attempted on broken -+// connections or unreachable servers. If waitForReady is false and the -+// connection is in the TRANSIENT_FAILURE state, the RPC will fail -+// immediately. Otherwise, the RPC client will block the call until a -+// connection is available (or the call is canceled or times out) and will -+// retry the call if it fails due to a transient error. gRPC will not retry if -+// data was written to the wire unless the server indicates it did not process -+// the data. Please refer to -+// https://github.com/grpc/grpc/blob/master/doc/wait-for-ready.md. -+// -+// By default, RPCs don't "wait for ready". -+func WaitForReady(waitForReady bool) CallOption { -+ return FailFastCallOption{FailFast: !waitForReady} -+} -+ -+// FailFast is the opposite of WaitForReady. -+// -+// Deprecated: use WaitForReady. -+func FailFast(failFast bool) CallOption { -+ return FailFastCallOption{FailFast: failFast} -+} -+ -+// FailFastCallOption is a CallOption for indicating whether an RPC should fail -+// fast or not. -+// -+// # Experimental -+// -+// Notice: This type is EXPERIMENTAL and may be changed or removed in a -+// later release. -+type FailFastCallOption struct { -+ FailFast bool -+} -+ -+func (o FailFastCallOption) before(c *callInfo) error { -+ c.failFast = o.FailFast -+ return nil -+} -+func (o FailFastCallOption) after(c *callInfo, attempt *csAttempt) {} -+ -+// OnFinish returns a CallOption that configures a callback to be called when -+// the call completes. The error passed to the callback is the status of the -+// RPC, and may be nil. The onFinish callback provided will only be called once -+// by gRPC. This is mainly used to be used by streaming interceptors, to be -+// notified when the RPC completes along with information about the status of -+// the RPC. -+// -+// # Experimental -+// -+// Notice: This API is EXPERIMENTAL and may be changed or removed in a -+// later release. -+func OnFinish(onFinish func(err error)) CallOption { -+ return OnFinishCallOption{ -+ OnFinish: onFinish, -+ } -+} -+ -+// OnFinishCallOption is CallOption that indicates a callback to be called when -+// the call completes. -+// -+// # Experimental -+// -+// Notice: This type is EXPERIMENTAL and may be changed or removed in a -+// later release. -+type OnFinishCallOption struct { -+ OnFinish func(error) -+} -+ -+func (o OnFinishCallOption) before(c *callInfo) error { -+ c.onFinish = append(c.onFinish, o.OnFinish) -+ return nil -+} -+ -+func (o OnFinishCallOption) after(c *callInfo, attempt *csAttempt) {} -+ -+// MaxCallRecvMsgSize returns a CallOption which sets the maximum message size -+// in bytes the client can receive. If this is not set, gRPC uses the default -+// 4MB. -+func MaxCallRecvMsgSize(bytes int) CallOption { -+ return MaxRecvMsgSizeCallOption{MaxRecvMsgSize: bytes} -+} -+ -+// MaxRecvMsgSizeCallOption is a CallOption that indicates the maximum message -+// size in bytes the client can receive. -+// -+// # Experimental -+// -+// Notice: This type is EXPERIMENTAL and may be changed or removed in a -+// later release. -+type MaxRecvMsgSizeCallOption struct { -+ MaxRecvMsgSize int -+} -+ -+func (o MaxRecvMsgSizeCallOption) before(c *callInfo) error { -+ c.maxReceiveMessageSize = &o.MaxRecvMsgSize -+ return nil -+} -+func (o MaxRecvMsgSizeCallOption) after(c *callInfo, attempt *csAttempt) {} -+ -+// MaxCallSendMsgSize returns a CallOption which sets the maximum message size -+// in bytes the client can send. If this is not set, gRPC uses the default -+// `math.MaxInt32`. -+func MaxCallSendMsgSize(bytes int) CallOption { -+ return MaxSendMsgSizeCallOption{MaxSendMsgSize: bytes} -+} -+ -+// MaxSendMsgSizeCallOption is a CallOption that indicates the maximum message -+// size in bytes the client can send. -+// -+// # Experimental -+// -+// Notice: This type is EXPERIMENTAL and may be changed or removed in a -+// later release. -+type MaxSendMsgSizeCallOption struct { -+ MaxSendMsgSize int -+} -+ -+func (o MaxSendMsgSizeCallOption) before(c *callInfo) error { -+ c.maxSendMessageSize = &o.MaxSendMsgSize -+ return nil -+} -+func (o MaxSendMsgSizeCallOption) after(c *callInfo, attempt *csAttempt) {} -+ -+// PerRPCCredentials returns a CallOption that sets credentials.PerRPCCredentials -+// for a call. -+func PerRPCCredentials(creds credentials.PerRPCCredentials) CallOption { -+ return PerRPCCredsCallOption{Creds: creds} -+} -+ -+// PerRPCCredsCallOption is a CallOption that indicates the per-RPC -+// credentials to use for the call. -+// -+// # Experimental -+// -+// Notice: This type is EXPERIMENTAL and may be changed or removed in a -+// later release. -+type PerRPCCredsCallOption struct { -+ Creds credentials.PerRPCCredentials -+} -+ -+func (o PerRPCCredsCallOption) before(c *callInfo) error { -+ c.creds = o.Creds -+ return nil -+} -+func (o PerRPCCredsCallOption) after(c *callInfo, attempt *csAttempt) {} -+ -+// UseCompressor returns a CallOption which sets the compressor used when -+// sending the request. If WithCompressor is also set, UseCompressor has -+// higher priority. -+// -+// # Experimental -+// -+// Notice: This API is EXPERIMENTAL and may be changed or removed in a -+// later release. -+func UseCompressor(name string) CallOption { -+ return CompressorCallOption{CompressorType: name} -+} -+ -+// CompressorCallOption is a CallOption that indicates the compressor to use. -+// -+// # Experimental -+// -+// Notice: This type is EXPERIMENTAL and may be changed or removed in a -+// later release. -+type CompressorCallOption struct { -+ CompressorType string -+} -+ -+func (o CompressorCallOption) before(c *callInfo) error { -+ c.compressorType = o.CompressorType -+ return nil -+} -+func (o CompressorCallOption) after(c *callInfo, attempt *csAttempt) {} -+ -+// CallContentSubtype returns a CallOption that will set the content-subtype -+// for a call. For example, if content-subtype is "json", the Content-Type over -+// the wire will be "application/grpc+json". The content-subtype is converted -+// to lowercase before being included in Content-Type. See Content-Type on -+// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests for -+// more details. -+// -+// If ForceCodec is not also used, the content-subtype will be used to look up -+// the Codec to use in the registry controlled by RegisterCodec. See the -+// documentation on RegisterCodec for details on registration. The lookup of -+// content-subtype is case-insensitive. If no such Codec is found, the call -+// will result in an error with code codes.Internal. -+// -+// If ForceCodec is also used, that Codec will be used for all request and -+// response messages, with the content-subtype set to the given contentSubtype -+// here for requests. -+func CallContentSubtype(contentSubtype string) CallOption { -+ return ContentSubtypeCallOption{ContentSubtype: strings.ToLower(contentSubtype)} -+} -+ -+// ContentSubtypeCallOption is a CallOption that indicates the content-subtype -+// used for marshaling messages. -+// -+// # Experimental -+// -+// Notice: This type is EXPERIMENTAL and may be changed or removed in a -+// later release. -+type ContentSubtypeCallOption struct { -+ ContentSubtype string -+} -+ -+func (o ContentSubtypeCallOption) before(c *callInfo) error { -+ c.contentSubtype = o.ContentSubtype -+ return nil -+} -+func (o ContentSubtypeCallOption) after(c *callInfo, attempt *csAttempt) {} -+ -+// ForceCodec returns a CallOption that will set codec to be used for all -+// request and response messages for a call. The result of calling Name() will -+// be used as the content-subtype after converting to lowercase, unless -+// CallContentSubtype is also used. -+// -+// See Content-Type on -+// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests for -+// more details. Also see the documentation on RegisterCodec and -+// CallContentSubtype for more details on the interaction between Codec and -+// content-subtype. -+// -+// This function is provided for advanced users; prefer to use only -+// CallContentSubtype to select a registered codec instead. -+// -+// # Experimental -+// -+// Notice: This API is EXPERIMENTAL and may be changed or removed in a -+// later release. -+func ForceCodec(codec encoding.Codec) CallOption { -+ return ForceCodecCallOption{Codec: codec} -+} -+ -+// ForceCodecCallOption is a CallOption that indicates the codec used for -+// marshaling messages. -+// -+// # Experimental -+// -+// Notice: This type is EXPERIMENTAL and may be changed or removed in a -+// later release. -+type ForceCodecCallOption struct { -+ Codec encoding.Codec -+} -+ -+func (o ForceCodecCallOption) before(c *callInfo) error { -+ c.codec = o.Codec -+ return nil -+} -+func (o ForceCodecCallOption) after(c *callInfo, attempt *csAttempt) {} -+ -+// CallCustomCodec behaves like ForceCodec, but accepts a grpc.Codec instead of -+// an encoding.Codec. -+// -+// Deprecated: use ForceCodec instead. -+func CallCustomCodec(codec Codec) CallOption { -+ return CustomCodecCallOption{Codec: codec} -+} -+ -+// CustomCodecCallOption is a CallOption that indicates the codec used for -+// marshaling messages. -+// -+// # Experimental -+// -+// Notice: This type is EXPERIMENTAL and may be changed or removed in a -+// later release. -+type CustomCodecCallOption struct { -+ Codec Codec -+} -+ -+func (o CustomCodecCallOption) before(c *callInfo) error { -+ c.codec = o.Codec -+ return nil -+} -+func (o CustomCodecCallOption) after(c *callInfo, attempt *csAttempt) {} -+ -+// MaxRetryRPCBufferSize returns a CallOption that limits the amount of memory -+// used for buffering this RPC's requests for retry purposes. -+// -+// # Experimental -+// -+// Notice: This API is EXPERIMENTAL and may be changed or removed in a -+// later release. -+func MaxRetryRPCBufferSize(bytes int) CallOption { -+ return MaxRetryRPCBufferSizeCallOption{bytes} -+} -+ -+// MaxRetryRPCBufferSizeCallOption is a CallOption indicating the amount of -+// memory to be used for caching this RPC for retry purposes. -+// -+// # Experimental -+// -+// Notice: This type is EXPERIMENTAL and may be changed or removed in a -+// later release. -+type MaxRetryRPCBufferSizeCallOption struct { -+ MaxRetryRPCBufferSize int -+} -+ -+func (o MaxRetryRPCBufferSizeCallOption) before(c *callInfo) error { -+ c.maxRetryRPCBufferSize = o.MaxRetryRPCBufferSize -+ return nil -+} -+func (o MaxRetryRPCBufferSizeCallOption) after(c *callInfo, attempt *csAttempt) {} -+ -+// The format of the payload: compressed or not? -+type payloadFormat uint8 -+ -+const ( -+ compressionNone payloadFormat = 0 // no compression -+ compressionMade payloadFormat = 1 // compressed -+) -+ -+// parser reads complete gRPC messages from the underlying reader. -+type parser struct { -+ // r is the underlying reader. -+ // See the comment on recvMsg for the permissible -+ // error types. -+ r io.Reader -+ -+ // The header of a gRPC message. Find more detail at -+ // https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md -+ header [5]byte -+ -+ // recvBufferPool is the pool of shared receive buffers. -+ recvBufferPool SharedBufferPool -+} -+ -+// recvMsg reads a complete gRPC message from the stream. -+// -+// It returns the message and its payload (compression/encoding) -+// format. The caller owns the returned msg memory. -+// -+// If there is an error, possible values are: -+// - io.EOF, when no messages remain -+// - io.ErrUnexpectedEOF -+// - of type transport.ConnectionError -+// - an error from the status package -+// -+// No other error values or types must be returned, which also means -+// that the underlying io.Reader must not return an incompatible -+// error. -+func (p *parser) recvMsg(maxReceiveMessageSize int) (pf payloadFormat, msg []byte, err error) { -+ if _, err := p.r.Read(p.header[:]); err != nil { -+ return 0, nil, err -+ } -+ -+ pf = payloadFormat(p.header[0]) -+ length := binary.BigEndian.Uint32(p.header[1:]) -+ -+ if length == 0 { -+ return pf, nil, nil -+ } -+ if int64(length) > int64(maxInt) { -+ return 0, nil, status.Errorf(codes.ResourceExhausted, "grpc: received message larger than max length allowed on current machine (%d vs. %d)", length, maxInt) -+ } -+ if int(length) > maxReceiveMessageSize { -+ return 0, nil, status.Errorf(codes.ResourceExhausted, "grpc: received message larger than max (%d vs. %d)", length, maxReceiveMessageSize) -+ } -+ msg = p.recvBufferPool.Get(int(length)) -+ if _, err := p.r.Read(msg); err != nil { -+ if err == io.EOF { -+ err = io.ErrUnexpectedEOF -+ } -+ return 0, nil, err -+ } -+ return pf, msg, nil -+} -+ -+// encode serializes msg and returns a buffer containing the message, or an -+// error if it is too large to be transmitted by grpc. If msg is nil, it -+// generates an empty message. -+func encode(c baseCodec, msg interface{}) ([]byte, error) { -+ if msg == nil { // NOTE: typed nils will not be caught by this check -+ return nil, nil -+ } -+ b, err := c.Marshal(msg) -+ if err != nil { -+ return nil, status.Errorf(codes.Internal, "grpc: error while marshaling: %v", err.Error()) -+ } -+ if uint(len(b)) > math.MaxUint32 { -+ return nil, status.Errorf(codes.ResourceExhausted, "grpc: message too large (%d bytes)", len(b)) -+ } -+ return b, nil -+} -+ -+// compress returns the input bytes compressed by compressor or cp. If both -+// compressors are nil, returns nil. -+// -+// TODO(dfawley): eliminate cp parameter by wrapping Compressor in an encoding.Compressor. -+func compress(in []byte, cp Compressor, compressor encoding.Compressor) ([]byte, error) { -+ if compressor == nil && cp == nil { -+ return nil, nil -+ } -+ wrapErr := func(err error) error { -+ return status.Errorf(codes.Internal, "grpc: error while compressing: %v", err.Error()) -+ } -+ cbuf := &bytes.Buffer{} -+ if compressor != nil { -+ z, err := compressor.Compress(cbuf) -+ if err != nil { -+ return nil, wrapErr(err) -+ } -+ if _, err := z.Write(in); err != nil { -+ return nil, wrapErr(err) -+ } -+ if err := z.Close(); err != nil { -+ return nil, wrapErr(err) -+ } -+ } else { -+ if err := cp.Do(cbuf, in); err != nil { -+ return nil, wrapErr(err) -+ } -+ } -+ return cbuf.Bytes(), nil -+} -+ -+const ( -+ payloadLen = 1 -+ sizeLen = 4 -+ headerLen = payloadLen + sizeLen -+) -+ -+// msgHeader returns a 5-byte header for the message being transmitted and the -+// payload, which is compData if non-nil or data otherwise. -+func msgHeader(data, compData []byte) (hdr []byte, payload []byte) { -+ hdr = make([]byte, headerLen) -+ if compData != nil { -+ hdr[0] = byte(compressionMade) -+ data = compData -+ } else { -+ hdr[0] = byte(compressionNone) -+ } -+ -+ // Write length of payload into buf -+ binary.BigEndian.PutUint32(hdr[payloadLen:], uint32(len(data))) -+ return hdr, data -+} -+ -+func outPayload(client bool, msg interface{}, data, payload []byte, t time.Time) *stats.OutPayload { -+ return &stats.OutPayload{ -+ Client: client, -+ Payload: msg, -+ Data: data, -+ Length: len(data), -+ WireLength: len(payload) + headerLen, -+ CompressedLength: len(payload), -+ SentTime: t, -+ } -+} -+ -+func checkRecvPayload(pf payloadFormat, recvCompress string, haveCompressor bool) *status.Status { -+ switch pf { -+ case compressionNone: -+ case compressionMade: -+ if recvCompress == "" || recvCompress == encoding.Identity { -+ return status.New(codes.Internal, "grpc: compressed flag set with identity or empty encoding") -+ } -+ if !haveCompressor { -+ return status.Newf(codes.Unimplemented, "grpc: Decompressor is not installed for grpc-encoding %q", recvCompress) -+ } -+ default: -+ return status.Newf(codes.Internal, "grpc: received unexpected payload format %d", pf) -+ } -+ return nil -+} -+ -+type payloadInfo struct { -+ compressedLength int // The compressed length got from wire. -+ uncompressedBytes []byte -+} -+ -+func recvAndDecompress(p *parser, s *transport.Stream, dc Decompressor, maxReceiveMessageSize int, payInfo *payloadInfo, compressor encoding.Compressor) ([]byte, error) { -+ pf, buf, err := p.recvMsg(maxReceiveMessageSize) -+ if err != nil { -+ return nil, err -+ } -+ if payInfo != nil { -+ payInfo.compressedLength = len(buf) -+ } -+ -+ if st := checkRecvPayload(pf, s.RecvCompress(), compressor != nil || dc != nil); st != nil { -+ return nil, st.Err() -+ } -+ -+ var size int -+ if pf == compressionMade { -+ // To match legacy behavior, if the decompressor is set by WithDecompressor or RPCDecompressor, -+ // use this decompressor as the default. -+ if dc != nil { -+ buf, err = dc.Do(bytes.NewReader(buf)) -+ size = len(buf) -+ } else { -+ buf, size, err = decompress(compressor, buf, maxReceiveMessageSize) -+ } -+ if err != nil { -+ return nil, status.Errorf(codes.Internal, "grpc: failed to decompress the received message: %v", err) -+ } -+ if size > maxReceiveMessageSize { -+ // TODO: Revisit the error code. Currently keep it consistent with java -+ // implementation. -+ return nil, status.Errorf(codes.ResourceExhausted, "grpc: received message after decompression larger than max (%d vs. %d)", size, maxReceiveMessageSize) -+ } -+ } -+ return buf, nil -+} -+ -+// Using compressor, decompress d, returning data and size. -+// Optionally, if data will be over maxReceiveMessageSize, just return the size. -+func decompress(compressor encoding.Compressor, d []byte, maxReceiveMessageSize int) ([]byte, int, error) { -+ dcReader, err := compressor.Decompress(bytes.NewReader(d)) -+ if err != nil { -+ return nil, 0, err -+ } -+ if sizer, ok := compressor.(interface { -+ DecompressedSize(compressedBytes []byte) int -+ }); ok { -+ if size := sizer.DecompressedSize(d); size >= 0 { -+ if size > maxReceiveMessageSize { -+ return nil, size, nil -+ } -+ // size is used as an estimate to size the buffer, but we -+ // will read more data if available. -+ // +MinRead so ReadFrom will not reallocate if size is correct. -+ buf := bytes.NewBuffer(make([]byte, 0, size+bytes.MinRead)) -+ bytesRead, err := buf.ReadFrom(io.LimitReader(dcReader, int64(maxReceiveMessageSize)+1)) -+ return buf.Bytes(), int(bytesRead), err -+ } -+ } -+ // Read from LimitReader with limit max+1. So if the underlying -+ // reader is over limit, the result will be bigger than max. -+ d, err = io.ReadAll(io.LimitReader(dcReader, int64(maxReceiveMessageSize)+1)) -+ return d, len(d), err -+} -+ -+// For the two compressor parameters, both should not be set, but if they are, -+// dc takes precedence over compressor. -+// TODO(dfawley): wrap the old compressor/decompressor using the new API? -+func recv(p *parser, c baseCodec, s *transport.Stream, dc Decompressor, m interface{}, maxReceiveMessageSize int, payInfo *payloadInfo, compressor encoding.Compressor) error { -+ buf, err := recvAndDecompress(p, s, dc, maxReceiveMessageSize, payInfo, compressor) -+ if err != nil { -+ return err -+ } -+ if err := c.Unmarshal(buf, m); err != nil { -+ return status.Errorf(codes.Internal, "grpc: failed to unmarshal the received message: %v", err) -+ } -+ if payInfo != nil { -+ payInfo.uncompressedBytes = buf -+ } else { -+ p.recvBufferPool.Put(&buf) -+ } -+ return nil -+} -+ -+// Information about RPC -+type rpcInfo struct { -+ failfast bool -+ preloaderInfo *compressorInfo -+} -+ -+// Information about Preloader -+// Responsible for storing codec, and compressors -+// If stream (s) has context s.Context which stores rpcInfo that has non nil -+// pointers to codec, and compressors, then we can use preparedMsg for Async message prep -+// and reuse marshalled bytes -+type compressorInfo struct { -+ codec baseCodec -+ cp Compressor -+ comp encoding.Compressor -+} -+ -+type rpcInfoContextKey struct{} -+ -+func newContextWithRPCInfo(ctx context.Context, failfast bool, codec baseCodec, cp Compressor, comp encoding.Compressor) context.Context { -+ return context.WithValue(ctx, rpcInfoContextKey{}, &rpcInfo{ -+ failfast: failfast, -+ preloaderInfo: &compressorInfo{ -+ codec: codec, -+ cp: cp, -+ comp: comp, -+ }, -+ }) -+} -+ -+func rpcInfoFromContext(ctx context.Context) (s *rpcInfo, ok bool) { -+ s, ok = ctx.Value(rpcInfoContextKey{}).(*rpcInfo) -+ return -+} -+ -+// Code returns the error code for err if it was produced by the rpc system. -+// Otherwise, it returns codes.Unknown. -+// -+// Deprecated: use status.Code instead. -+func Code(err error) codes.Code { -+ return status.Code(err) -+} -+ -+// ErrorDesc returns the error description of err if it was produced by the rpc system. -+// Otherwise, it returns err.Error() or empty string when err is nil. -+// -+// Deprecated: use status.Convert and Message method instead. -+func ErrorDesc(err error) string { -+ return status.Convert(err).Message() -+} -+ -+// Errorf returns an error containing an error code and a description; -+// Errorf returns nil if c is OK. -+// -+// Deprecated: use status.Errorf instead. -+func Errorf(c codes.Code, format string, a ...interface{}) error { -+ return status.Errorf(c, format, a...) -+} -+ -+// toRPCErr converts an error into an error from the status package. -+func toRPCErr(err error) error { -+ switch err { -+ case nil, io.EOF: -+ return err -+ case context.DeadlineExceeded: -+ return status.Error(codes.DeadlineExceeded, err.Error()) -+ case context.Canceled: -+ return status.Error(codes.Canceled, err.Error()) -+ case io.ErrUnexpectedEOF: -+ return status.Error(codes.Internal, err.Error()) -+ } -+ -+ switch e := err.(type) { -+ case transport.ConnectionError: -+ return status.Error(codes.Unavailable, e.Desc) -+ case *transport.NewStreamError: -+ return toRPCErr(e.Err) -+ } -+ -+ if _, ok := status.FromError(err); ok { -+ return err -+ } -+ -+ return status.Error(codes.Unknown, err.Error()) -+} -+ -+// setCallInfoCodec should only be called after CallOptions have been applied. -+func setCallInfoCodec(c *callInfo) error { -+ if c.codec != nil { -+ // codec was already set by a CallOption; use it, but set the content -+ // subtype if it is not set. -+ if c.contentSubtype == "" { -+ // c.codec is a baseCodec to hide the difference between grpc.Codec and -+ // encoding.Codec (Name vs. String method name). We only support -+ // setting content subtype from encoding.Codec to avoid a behavior -+ // change with the deprecated version. -+ if ec, ok := c.codec.(encoding.Codec); ok { -+ c.contentSubtype = strings.ToLower(ec.Name()) -+ } -+ } -+ return nil -+ } -+ -+ if c.contentSubtype == "" { -+ // No codec specified in CallOptions; use proto by default. -+ c.codec = encoding.GetCodec(proto.Name) -+ return nil -+ } -+ -+ // c.contentSubtype is already lowercased in CallContentSubtype -+ c.codec = encoding.GetCodec(c.contentSubtype) -+ if c.codec == nil { -+ return status.Errorf(codes.Internal, "no codec registered for content-subtype %s", c.contentSubtype) -+ } -+ return nil -+} -+ -+// channelzData is used to store channelz related data for ClientConn, addrConn and Server. -+// These fields cannot be embedded in the original structs (e.g. ClientConn), since to do atomic -+// operation on int64 variable on 32-bit machine, user is responsible to enforce memory alignment. -+// Here, by grouping those int64 fields inside a struct, we are enforcing the alignment. -+type channelzData struct { -+ callsStarted int64 -+ callsFailed int64 -+ callsSucceeded int64 -+ // lastCallStartedTime stores the timestamp that last call starts. It is of int64 type instead of -+ // time.Time since it's more costly to atomically update time.Time variable than int64 variable. -+ lastCallStartedTime int64 -+} -+ -+// The SupportPackageIsVersion variables are referenced from generated protocol -+// buffer files to ensure compatibility with the gRPC version used. The latest -+// support package version is 7. -+// -+// Older versions are kept for compatibility. -+// -+// These constants should not be referenced from any other code. -+const ( -+ SupportPackageIsVersion3 = true -+ SupportPackageIsVersion4 = true -+ SupportPackageIsVersion5 = true -+ SupportPackageIsVersion6 = true -+ SupportPackageIsVersion7 = true -+) -+ -+const grpcUA = "grpc-go/" + Version -diff --git a/vendor/google.golang.org/grpc/server.go b/vendor/google.golang.org/grpc/server.go -new file mode 100755 -index 0000000..b44c7e8 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/server.go -@@ -0,0 +1,2104 @@ -+/* -+ * -+ * 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 ( -+ "context" -+ "errors" -+ "fmt" -+ "io" -+ "math" -+ "net" -+ "net/http" -+ "reflect" -+ "runtime" -+ "strings" -+ "sync" -+ "sync/atomic" -+ "time" -+ -+ "golang.org/x/net/trace" -+ -+ "google.golang.org/grpc/codes" -+ "google.golang.org/grpc/credentials" -+ "google.golang.org/grpc/encoding" -+ "google.golang.org/grpc/encoding/proto" -+ "google.golang.org/grpc/grpclog" -+ "google.golang.org/grpc/internal" -+ "google.golang.org/grpc/internal/binarylog" -+ "google.golang.org/grpc/internal/channelz" -+ "google.golang.org/grpc/internal/grpcsync" -+ "google.golang.org/grpc/internal/grpcutil" -+ "google.golang.org/grpc/internal/transport" -+ "google.golang.org/grpc/keepalive" -+ "google.golang.org/grpc/metadata" -+ "google.golang.org/grpc/peer" -+ "google.golang.org/grpc/stats" -+ "google.golang.org/grpc/status" -+ "google.golang.org/grpc/tap" -+) -+ -+const ( -+ defaultServerMaxReceiveMessageSize = 1024 * 1024 * 4 -+ defaultServerMaxSendMessageSize = math.MaxInt32 -+ -+ // Server transports are tracked in a map which is keyed on listener -+ // address. For regular gRPC traffic, connections are accepted in Serve() -+ // through a call to Accept(), and we use the actual listener address as key -+ // when we add it to the map. But for connections received through -+ // ServeHTTP(), we do not have a listener and hence use this dummy value. -+ listenerAddressForServeHTTP = "listenerAddressForServeHTTP" -+) -+ -+func init() { -+ internal.GetServerCredentials = func(srv *Server) credentials.TransportCredentials { -+ return srv.opts.creds -+ } -+ internal.DrainServerTransports = func(srv *Server, addr string) { -+ srv.drainServerTransports(addr) -+ } -+ internal.AddGlobalServerOptions = func(opt ...ServerOption) { -+ globalServerOptions = append(globalServerOptions, opt...) -+ } -+ internal.ClearGlobalServerOptions = func() { -+ globalServerOptions = nil -+ } -+ internal.BinaryLogger = binaryLogger -+ internal.JoinServerOptions = newJoinServerOption -+} -+ -+var statusOK = status.New(codes.OK, "") -+var logger = grpclog.Component("core") -+ -+type methodHandler func(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor UnaryServerInterceptor) (interface{}, error) -+ -+// MethodDesc represents an RPC service's method specification. -+type MethodDesc struct { -+ MethodName string -+ Handler methodHandler -+} -+ -+// ServiceDesc represents an RPC service's specification. -+type ServiceDesc struct { -+ ServiceName string -+ // The pointer to the service interface. Used to check whether the user -+ // provided implementation satisfies the interface requirements. -+ HandlerType interface{} -+ Methods []MethodDesc -+ Streams []StreamDesc -+ Metadata interface{} -+} -+ -+// serviceInfo wraps information about a service. It is very similar to -+// ServiceDesc and is constructed from it for internal purposes. -+type serviceInfo struct { -+ // Contains the implementation for the methods in this service. -+ serviceImpl interface{} -+ methods map[string]*MethodDesc -+ streams map[string]*StreamDesc -+ mdata interface{} -+} -+ -+// Server is a gRPC server to serve RPC requests. -+type Server struct { -+ opts serverOptions -+ -+ mu sync.Mutex // guards following -+ lis map[net.Listener]bool -+ // conns contains all active server transports. It is a map keyed on a -+ // listener address with the value being the set of active transports -+ // belonging to that listener. -+ conns map[string]map[transport.ServerTransport]bool -+ serve bool -+ drain bool -+ cv *sync.Cond // signaled when connections close for GracefulStop -+ services map[string]*serviceInfo // service name -> service info -+ events trace.EventLog -+ -+ quit *grpcsync.Event -+ done *grpcsync.Event -+ channelzRemoveOnce sync.Once -+ serveWG sync.WaitGroup // counts active Serve goroutines for GracefulStop -+ -+ channelzID *channelz.Identifier -+ czData *channelzData -+ -+ serverWorkerChannel chan func() -+} -+ -+type serverOptions struct { -+ creds credentials.TransportCredentials -+ codec baseCodec -+ cp Compressor -+ dc Decompressor -+ unaryInt UnaryServerInterceptor -+ streamInt StreamServerInterceptor -+ chainUnaryInts []UnaryServerInterceptor -+ chainStreamInts []StreamServerInterceptor -+ binaryLogger binarylog.Logger -+ inTapHandle tap.ServerInHandle -+ statsHandlers []stats.Handler -+ maxConcurrentStreams uint32 -+ maxReceiveMessageSize int -+ maxSendMessageSize int -+ unknownStreamDesc *StreamDesc -+ keepaliveParams keepalive.ServerParameters -+ keepalivePolicy keepalive.EnforcementPolicy -+ initialWindowSize int32 -+ initialConnWindowSize int32 -+ writeBufferSize int -+ readBufferSize int -+ connectionTimeout time.Duration -+ maxHeaderListSize *uint32 -+ headerTableSize *uint32 -+ numServerWorkers uint32 -+ recvBufferPool SharedBufferPool -+} -+ -+var defaultServerOptions = serverOptions{ -+ maxConcurrentStreams: math.MaxUint32, -+ maxReceiveMessageSize: defaultServerMaxReceiveMessageSize, -+ maxSendMessageSize: defaultServerMaxSendMessageSize, -+ connectionTimeout: 120 * time.Second, -+ writeBufferSize: defaultWriteBufSize, -+ readBufferSize: defaultReadBufSize, -+ recvBufferPool: nopBufferPool{}, -+} -+var globalServerOptions []ServerOption -+ -+// A ServerOption sets options such as credentials, codec and keepalive parameters, etc. -+type ServerOption interface { -+ apply(*serverOptions) -+} -+ -+// EmptyServerOption does not alter the server configuration. It can be embedded -+// in another structure to build custom server options. -+// -+// # Experimental -+// -+// Notice: This type is EXPERIMENTAL and may be changed or removed in a -+// later release. -+type EmptyServerOption struct{} -+ -+func (EmptyServerOption) apply(*serverOptions) {} -+ -+// funcServerOption wraps a function that modifies serverOptions into an -+// implementation of the ServerOption interface. -+type funcServerOption struct { -+ f func(*serverOptions) -+} -+ -+func (fdo *funcServerOption) apply(do *serverOptions) { -+ fdo.f(do) -+} -+ -+func newFuncServerOption(f func(*serverOptions)) *funcServerOption { -+ return &funcServerOption{ -+ f: f, -+ } -+} -+ -+// joinServerOption provides a way to combine arbitrary number of server -+// options into one. -+type joinServerOption struct { -+ opts []ServerOption -+} -+ -+func (mdo *joinServerOption) apply(do *serverOptions) { -+ for _, opt := range mdo.opts { -+ opt.apply(do) -+ } -+} -+ -+func newJoinServerOption(opts ...ServerOption) ServerOption { -+ return &joinServerOption{opts: opts} -+} -+ -+// WriteBufferSize determines how much data can be batched before doing a write -+// on the wire. The corresponding memory allocation for this buffer will be -+// twice the size to keep syscalls low. The default value for this buffer is -+// 32KB. Zero or negative values will disable the write buffer such that each -+// write will be on underlying connection. -+// Note: A Send call may not directly translate to a write. -+func WriteBufferSize(s int) ServerOption { -+ return newFuncServerOption(func(o *serverOptions) { -+ o.writeBufferSize = s -+ }) -+} -+ -+// ReadBufferSize lets you set the size of read buffer, this determines how much -+// data can be read at most for one read syscall. The default value for this -+// buffer is 32KB. Zero or negative values will disable read buffer for a -+// connection so data framer can access the underlying conn directly. -+func ReadBufferSize(s int) ServerOption { -+ return newFuncServerOption(func(o *serverOptions) { -+ o.readBufferSize = s -+ }) -+} -+ -+// InitialWindowSize returns a ServerOption that sets window size for stream. -+// The lower bound for window size is 64K and any value smaller than that will be ignored. -+func InitialWindowSize(s int32) ServerOption { -+ return newFuncServerOption(func(o *serverOptions) { -+ o.initialWindowSize = s -+ }) -+} -+ -+// InitialConnWindowSize returns a ServerOption that sets window size for a connection. -+// The lower bound for window size is 64K and any value smaller than that will be ignored. -+func InitialConnWindowSize(s int32) ServerOption { -+ return newFuncServerOption(func(o *serverOptions) { -+ o.initialConnWindowSize = s -+ }) -+} -+ -+// KeepaliveParams returns a ServerOption that sets keepalive and max-age parameters for the server. -+func KeepaliveParams(kp keepalive.ServerParameters) ServerOption { -+ if kp.Time > 0 && kp.Time < time.Second { -+ logger.Warning("Adjusting keepalive ping interval to minimum period of 1s") -+ kp.Time = time.Second -+ } -+ -+ return newFuncServerOption(func(o *serverOptions) { -+ o.keepaliveParams = kp -+ }) -+} -+ -+// KeepaliveEnforcementPolicy returns a ServerOption that sets keepalive enforcement policy for the server. -+func KeepaliveEnforcementPolicy(kep keepalive.EnforcementPolicy) ServerOption { -+ return newFuncServerOption(func(o *serverOptions) { -+ o.keepalivePolicy = kep -+ }) -+} -+ -+// CustomCodec returns a ServerOption that sets a codec for message marshaling and unmarshaling. -+// -+// This will override any lookups by content-subtype for Codecs registered with RegisterCodec. -+// -+// Deprecated: register codecs using encoding.RegisterCodec. The server will -+// automatically use registered codecs based on the incoming requests' headers. -+// See also -+// https://github.com/grpc/grpc-go/blob/master/Documentation/encoding.md#using-a-codec. -+// Will be supported throughout 1.x. -+func CustomCodec(codec Codec) ServerOption { -+ return newFuncServerOption(func(o *serverOptions) { -+ o.codec = codec -+ }) -+} -+ -+// ForceServerCodec returns a ServerOption that sets a codec for message -+// marshaling and unmarshaling. -+// -+// This will override any lookups by content-subtype for Codecs registered -+// with RegisterCodec. -+// -+// See Content-Type on -+// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests for -+// more details. Also see the documentation on RegisterCodec and -+// CallContentSubtype for more details on the interaction between encoding.Codec -+// and content-subtype. -+// -+// This function is provided for advanced users; prefer to register codecs -+// using encoding.RegisterCodec. -+// The server will automatically use registered codecs based on the incoming -+// requests' headers. See also -+// https://github.com/grpc/grpc-go/blob/master/Documentation/encoding.md#using-a-codec. -+// Will be supported throughout 1.x. -+// -+// # Experimental -+// -+// Notice: This API is EXPERIMENTAL and may be changed or removed in a -+// later release. -+func ForceServerCodec(codec encoding.Codec) ServerOption { -+ return newFuncServerOption(func(o *serverOptions) { -+ o.codec = codec -+ }) -+} -+ -+// RPCCompressor returns a ServerOption that sets a compressor for outbound -+// messages. For backward compatibility, all outbound messages will be sent -+// using this compressor, regardless of incoming message compression. By -+// default, server messages will be sent using the same compressor with which -+// request messages were sent. -+// -+// Deprecated: use encoding.RegisterCompressor instead. Will be supported -+// throughout 1.x. -+func RPCCompressor(cp Compressor) ServerOption { -+ return newFuncServerOption(func(o *serverOptions) { -+ o.cp = cp -+ }) -+} -+ -+// RPCDecompressor returns a ServerOption that sets a decompressor for inbound -+// messages. It has higher priority than decompressors registered via -+// encoding.RegisterCompressor. -+// -+// Deprecated: use encoding.RegisterCompressor instead. Will be supported -+// throughout 1.x. -+func RPCDecompressor(dc Decompressor) ServerOption { -+ return newFuncServerOption(func(o *serverOptions) { -+ o.dc = dc -+ }) -+} -+ -+// MaxMsgSize returns a ServerOption to set the max message size in bytes the server can receive. -+// If this is not set, gRPC uses the default limit. -+// -+// Deprecated: use MaxRecvMsgSize instead. Will be supported throughout 1.x. -+func MaxMsgSize(m int) ServerOption { -+ return MaxRecvMsgSize(m) -+} -+ -+// MaxRecvMsgSize returns a ServerOption to set the max message size in bytes the server can receive. -+// If this is not set, gRPC uses the default 4MB. -+func MaxRecvMsgSize(m int) ServerOption { -+ return newFuncServerOption(func(o *serverOptions) { -+ o.maxReceiveMessageSize = m -+ }) -+} -+ -+// MaxSendMsgSize returns a ServerOption to set the max message size in bytes the server can send. -+// If this is not set, gRPC uses the default `math.MaxInt32`. -+func MaxSendMsgSize(m int) ServerOption { -+ return newFuncServerOption(func(o *serverOptions) { -+ o.maxSendMessageSize = m -+ }) -+} -+ -+// MaxConcurrentStreams returns a ServerOption that will apply a limit on the number -+// of concurrent streams to each ServerTransport. -+func MaxConcurrentStreams(n uint32) ServerOption { -+ if n == 0 { -+ n = math.MaxUint32 -+ } -+ return newFuncServerOption(func(o *serverOptions) { -+ o.maxConcurrentStreams = n -+ }) -+} -+ -+// Creds returns a ServerOption that sets credentials for server connections. -+func Creds(c credentials.TransportCredentials) ServerOption { -+ return newFuncServerOption(func(o *serverOptions) { -+ o.creds = c -+ }) -+} -+ -+// UnaryInterceptor returns a ServerOption that sets the UnaryServerInterceptor for the -+// server. Only one unary interceptor can be installed. The construction of multiple -+// interceptors (e.g., chaining) can be implemented at the caller. -+func UnaryInterceptor(i UnaryServerInterceptor) ServerOption { -+ return newFuncServerOption(func(o *serverOptions) { -+ if o.unaryInt != nil { -+ panic("The unary server interceptor was already set and may not be reset.") -+ } -+ o.unaryInt = i -+ }) -+} -+ -+// ChainUnaryInterceptor returns a ServerOption that specifies the chained interceptor -+// for unary RPCs. The first interceptor will be the outer most, -+// while the last interceptor will be the inner most wrapper around the real call. -+// All unary interceptors added by this method will be chained. -+func ChainUnaryInterceptor(interceptors ...UnaryServerInterceptor) ServerOption { -+ return newFuncServerOption(func(o *serverOptions) { -+ o.chainUnaryInts = append(o.chainUnaryInts, interceptors...) -+ }) -+} -+ -+// StreamInterceptor returns a ServerOption that sets the StreamServerInterceptor for the -+// server. Only one stream interceptor can be installed. -+func StreamInterceptor(i StreamServerInterceptor) ServerOption { -+ return newFuncServerOption(func(o *serverOptions) { -+ if o.streamInt != nil { -+ panic("The stream server interceptor was already set and may not be reset.") -+ } -+ o.streamInt = i -+ }) -+} -+ -+// ChainStreamInterceptor returns a ServerOption that specifies the chained interceptor -+// for streaming RPCs. The first interceptor will be the outer most, -+// while the last interceptor will be the inner most wrapper around the real call. -+// All stream interceptors added by this method will be chained. -+func ChainStreamInterceptor(interceptors ...StreamServerInterceptor) ServerOption { -+ return newFuncServerOption(func(o *serverOptions) { -+ o.chainStreamInts = append(o.chainStreamInts, interceptors...) -+ }) -+} -+ -+// InTapHandle returns a ServerOption that sets the tap handle for all the server -+// transport to be created. Only one can be installed. -+// -+// # Experimental -+// -+// Notice: This API is EXPERIMENTAL and may be changed or removed in a -+// later release. -+func InTapHandle(h tap.ServerInHandle) ServerOption { -+ return newFuncServerOption(func(o *serverOptions) { -+ if o.inTapHandle != nil { -+ panic("The tap handle was already set and may not be reset.") -+ } -+ o.inTapHandle = h -+ }) -+} -+ -+// StatsHandler returns a ServerOption that sets the stats handler for the server. -+func StatsHandler(h stats.Handler) ServerOption { -+ return newFuncServerOption(func(o *serverOptions) { -+ if h == nil { -+ logger.Error("ignoring nil parameter in grpc.StatsHandler ServerOption") -+ // Do not allow a nil stats handler, which would otherwise cause -+ // panics. -+ return -+ } -+ o.statsHandlers = append(o.statsHandlers, h) -+ }) -+} -+ -+// binaryLogger returns a ServerOption that can set the binary logger for the -+// server. -+func binaryLogger(bl binarylog.Logger) ServerOption { -+ return newFuncServerOption(func(o *serverOptions) { -+ o.binaryLogger = bl -+ }) -+} -+ -+// UnknownServiceHandler returns a ServerOption that allows for adding a custom -+// unknown service handler. The provided method is a bidi-streaming RPC service -+// handler that will be invoked instead of returning the "unimplemented" gRPC -+// error whenever a request is received for an unregistered service or method. -+// The handling function and stream interceptor (if set) have full access to -+// the ServerStream, including its Context. -+func UnknownServiceHandler(streamHandler StreamHandler) ServerOption { -+ return newFuncServerOption(func(o *serverOptions) { -+ o.unknownStreamDesc = &StreamDesc{ -+ StreamName: "unknown_service_handler", -+ Handler: streamHandler, -+ // We need to assume that the users of the streamHandler will want to use both. -+ ClientStreams: true, -+ ServerStreams: true, -+ } -+ }) -+} -+ -+// ConnectionTimeout returns a ServerOption that sets the timeout for -+// connection establishment (up to and including HTTP/2 handshaking) for all -+// new connections. If this is not set, the default is 120 seconds. A zero or -+// negative value will result in an immediate timeout. -+// -+// # Experimental -+// -+// Notice: This API is EXPERIMENTAL and may be changed or removed in a -+// later release. -+func ConnectionTimeout(d time.Duration) ServerOption { -+ return newFuncServerOption(func(o *serverOptions) { -+ o.connectionTimeout = d -+ }) -+} -+ -+// MaxHeaderListSize returns a ServerOption that sets the max (uncompressed) size -+// of header list that the server is prepared to accept. -+func MaxHeaderListSize(s uint32) ServerOption { -+ return newFuncServerOption(func(o *serverOptions) { -+ o.maxHeaderListSize = &s -+ }) -+} -+ -+// HeaderTableSize returns a ServerOption that sets the size of dynamic -+// header table for stream. -+// -+// # Experimental -+// -+// Notice: This API is EXPERIMENTAL and may be changed or removed in a -+// later release. -+func HeaderTableSize(s uint32) ServerOption { -+ return newFuncServerOption(func(o *serverOptions) { -+ o.headerTableSize = &s -+ }) -+} -+ -+// NumStreamWorkers returns a ServerOption that sets the number of worker -+// goroutines that should be used to process incoming streams. Setting this to -+// zero (default) will disable workers and spawn a new goroutine for each -+// stream. -+// -+// # Experimental -+// -+// Notice: This API is EXPERIMENTAL and may be changed or removed in a -+// later release. -+func NumStreamWorkers(numServerWorkers uint32) ServerOption { -+ // TODO: If/when this API gets stabilized (i.e. stream workers become the -+ // only way streams are processed), change the behavior of the zero value to -+ // a sane default. Preliminary experiments suggest that a value equal to the -+ // number of CPUs available is most performant; requires thorough testing. -+ return newFuncServerOption(func(o *serverOptions) { -+ o.numServerWorkers = numServerWorkers -+ }) -+} -+ -+// RecvBufferPool returns a ServerOption that configures the server -+// to use the provided shared buffer pool for parsing incoming messages. Depending -+// on the application's workload, this could result in reduced memory allocation. -+// -+// If you are unsure about how to implement a memory pool but want to utilize one, -+// begin with grpc.NewSharedBufferPool. -+// -+// Note: The shared buffer pool feature will not be active if any of the following -+// options are used: StatsHandler, EnableTracing, or binary logging. In such -+// cases, the shared buffer pool will be ignored. -+// -+// # Experimental -+// -+// Notice: This API is EXPERIMENTAL and may be changed or removed in a -+// later release. -+func RecvBufferPool(bufferPool SharedBufferPool) ServerOption { -+ return newFuncServerOption(func(o *serverOptions) { -+ o.recvBufferPool = bufferPool -+ }) -+} -+ -+// serverWorkerResetThreshold defines how often the stack must be reset. Every -+// N requests, by spawning a new goroutine in its place, a worker can reset its -+// stack so that large stacks don't live in memory forever. 2^16 should allow -+// each goroutine stack to live for at least a few seconds in a typical -+// workload (assuming a QPS of a few thousand requests/sec). -+const serverWorkerResetThreshold = 1 << 16 -+ -+// serverWorkers blocks on a *transport.Stream channel forever and waits for -+// data to be fed by serveStreams. This allows multiple requests to be -+// processed by the same goroutine, removing the need for expensive stack -+// re-allocations (see the runtime.morestack problem [1]). -+// -+// [1] https://github.com/golang/go/issues/18138 -+func (s *Server) serverWorker() { -+ for completed := 0; completed < serverWorkerResetThreshold; completed++ { -+ f, ok := <-s.serverWorkerChannel -+ if !ok { -+ return -+ } -+ f() -+ } -+ go s.serverWorker() -+} -+ -+// initServerWorkers creates worker goroutines and a channel to process incoming -+// connections to reduce the time spent overall on runtime.morestack. -+func (s *Server) initServerWorkers() { -+ s.serverWorkerChannel = make(chan func()) -+ for i := uint32(0); i < s.opts.numServerWorkers; i++ { -+ go s.serverWorker() -+ } -+} -+ -+func (s *Server) stopServerWorkers() { -+ close(s.serverWorkerChannel) -+} -+ -+// NewServer creates a gRPC server which has no service registered and has not -+// started to accept requests yet. -+func NewServer(opt ...ServerOption) *Server { -+ opts := defaultServerOptions -+ for _, o := range globalServerOptions { -+ o.apply(&opts) -+ } -+ for _, o := range opt { -+ o.apply(&opts) -+ } -+ s := &Server{ -+ lis: make(map[net.Listener]bool), -+ opts: opts, -+ conns: make(map[string]map[transport.ServerTransport]bool), -+ services: make(map[string]*serviceInfo), -+ quit: grpcsync.NewEvent(), -+ done: grpcsync.NewEvent(), -+ czData: new(channelzData), -+ } -+ chainUnaryServerInterceptors(s) -+ chainStreamServerInterceptors(s) -+ s.cv = sync.NewCond(&s.mu) -+ if EnableTracing { -+ _, file, line, _ := runtime.Caller(1) -+ s.events = trace.NewEventLog("grpc.Server", fmt.Sprintf("%s:%d", file, line)) -+ } -+ -+ if s.opts.numServerWorkers > 0 { -+ s.initServerWorkers() -+ } -+ -+ s.channelzID = channelz.RegisterServer(&channelzServer{s}, "") -+ channelz.Info(logger, s.channelzID, "Server created") -+ return s -+} -+ -+// printf records an event in s's event log, unless s has been stopped. -+// REQUIRES s.mu is held. -+func (s *Server) printf(format string, a ...interface{}) { -+ if s.events != nil { -+ s.events.Printf(format, a...) -+ } -+} -+ -+// errorf records an error in s's event log, unless s has been stopped. -+// REQUIRES s.mu is held. -+func (s *Server) errorf(format string, a ...interface{}) { -+ if s.events != nil { -+ s.events.Errorf(format, a...) -+ } -+} -+ -+// ServiceRegistrar wraps a single method that supports service registration. It -+// enables users to pass concrete types other than grpc.Server to the service -+// registration methods exported by the IDL generated code. -+type ServiceRegistrar interface { -+ // RegisterService registers a service and its implementation to the -+ // concrete type implementing this interface. It may not be called -+ // once the server has started serving. -+ // desc describes the service and its methods and handlers. impl is the -+ // service implementation which is passed to the method handlers. -+ RegisterService(desc *ServiceDesc, impl interface{}) -+} -+ -+// RegisterService registers a service and its implementation to the gRPC -+// server. It is called from the IDL generated code. This must be called before -+// invoking Serve. If ss is non-nil (for legacy code), its type is checked to -+// ensure it implements sd.HandlerType. -+func (s *Server) RegisterService(sd *ServiceDesc, ss interface{}) { -+ if ss != nil { -+ ht := reflect.TypeOf(sd.HandlerType).Elem() -+ st := reflect.TypeOf(ss) -+ if !st.Implements(ht) { -+ logger.Fatalf("grpc: Server.RegisterService found the handler of type %v that does not satisfy %v", st, ht) -+ } -+ } -+ s.register(sd, ss) -+} -+ -+func (s *Server) register(sd *ServiceDesc, ss interface{}) { -+ s.mu.Lock() -+ defer s.mu.Unlock() -+ s.printf("RegisterService(%q)", sd.ServiceName) -+ if s.serve { -+ logger.Fatalf("grpc: Server.RegisterService after Server.Serve for %q", sd.ServiceName) -+ } -+ if _, ok := s.services[sd.ServiceName]; ok { -+ logger.Fatalf("grpc: Server.RegisterService found duplicate service registration for %q", sd.ServiceName) -+ } -+ info := &serviceInfo{ -+ serviceImpl: ss, -+ methods: make(map[string]*MethodDesc), -+ streams: make(map[string]*StreamDesc), -+ mdata: sd.Metadata, -+ } -+ for i := range sd.Methods { -+ d := &sd.Methods[i] -+ info.methods[d.MethodName] = d -+ } -+ for i := range sd.Streams { -+ d := &sd.Streams[i] -+ info.streams[d.StreamName] = d -+ } -+ s.services[sd.ServiceName] = info -+} -+ -+// MethodInfo contains the information of an RPC including its method name and type. -+type MethodInfo struct { -+ // Name is the method name only, without the service name or package name. -+ Name string -+ // IsClientStream indicates whether the RPC is a client streaming RPC. -+ IsClientStream bool -+ // IsServerStream indicates whether the RPC is a server streaming RPC. -+ IsServerStream bool -+} -+ -+// ServiceInfo contains unary RPC method info, streaming RPC method info and metadata for a service. -+type ServiceInfo struct { -+ Methods []MethodInfo -+ // Metadata is the metadata specified in ServiceDesc when registering service. -+ Metadata interface{} -+} -+ -+// GetServiceInfo returns a map from service names to ServiceInfo. -+// Service names include the package names, in the form of .. -+func (s *Server) GetServiceInfo() map[string]ServiceInfo { -+ ret := make(map[string]ServiceInfo) -+ for n, srv := range s.services { -+ methods := make([]MethodInfo, 0, len(srv.methods)+len(srv.streams)) -+ for m := range srv.methods { -+ methods = append(methods, MethodInfo{ -+ Name: m, -+ IsClientStream: false, -+ IsServerStream: false, -+ }) -+ } -+ for m, d := range srv.streams { -+ methods = append(methods, MethodInfo{ -+ Name: m, -+ IsClientStream: d.ClientStreams, -+ IsServerStream: d.ServerStreams, -+ }) -+ } -+ -+ ret[n] = ServiceInfo{ -+ Methods: methods, -+ Metadata: srv.mdata, -+ } -+ } -+ return ret -+} -+ -+// ErrServerStopped indicates that the operation is now illegal because of -+// the server being stopped. -+var ErrServerStopped = errors.New("grpc: the server has been stopped") -+ -+type listenSocket struct { -+ net.Listener -+ channelzID *channelz.Identifier -+} -+ -+func (l *listenSocket) ChannelzMetric() *channelz.SocketInternalMetric { -+ return &channelz.SocketInternalMetric{ -+ SocketOptions: channelz.GetSocketOption(l.Listener), -+ LocalAddr: l.Listener.Addr(), -+ } -+} -+ -+func (l *listenSocket) Close() error { -+ err := l.Listener.Close() -+ channelz.RemoveEntry(l.channelzID) -+ channelz.Info(logger, l.channelzID, "ListenSocket deleted") -+ return err -+} -+ -+// Serve accepts incoming connections on the listener lis, creating a new -+// ServerTransport and service goroutine for each. The service goroutines -+// read gRPC requests and then call the registered handlers to reply to them. -+// Serve returns when lis.Accept fails with fatal errors. lis will be closed when -+// this method returns. -+// Serve will return a non-nil error unless Stop or GracefulStop is called. -+func (s *Server) Serve(lis net.Listener) error { -+ s.mu.Lock() -+ s.printf("serving") -+ s.serve = true -+ if s.lis == nil { -+ // Serve called after Stop or GracefulStop. -+ s.mu.Unlock() -+ lis.Close() -+ return ErrServerStopped -+ } -+ -+ s.serveWG.Add(1) -+ defer func() { -+ s.serveWG.Done() -+ if s.quit.HasFired() { -+ // Stop or GracefulStop called; block until done and return nil. -+ <-s.done.Done() -+ } -+ }() -+ -+ ls := &listenSocket{Listener: lis} -+ s.lis[ls] = true -+ -+ defer func() { -+ s.mu.Lock() -+ if s.lis != nil && s.lis[ls] { -+ ls.Close() -+ delete(s.lis, ls) -+ } -+ s.mu.Unlock() -+ }() -+ -+ var err error -+ ls.channelzID, err = channelz.RegisterListenSocket(ls, s.channelzID, lis.Addr().String()) -+ if err != nil { -+ s.mu.Unlock() -+ return err -+ } -+ s.mu.Unlock() -+ channelz.Info(logger, ls.channelzID, "ListenSocket created") -+ -+ var tempDelay time.Duration // how long to sleep on accept failure -+ for { -+ rawConn, err := lis.Accept() -+ if err != nil { -+ if ne, ok := err.(interface { -+ Temporary() bool -+ }); ok && ne.Temporary() { -+ if tempDelay == 0 { -+ tempDelay = 5 * time.Millisecond -+ } else { -+ tempDelay *= 2 -+ } -+ if max := 1 * time.Second; tempDelay > max { -+ tempDelay = max -+ } -+ s.mu.Lock() -+ s.printf("Accept error: %v; retrying in %v", err, tempDelay) -+ s.mu.Unlock() -+ timer := time.NewTimer(tempDelay) -+ select { -+ case <-timer.C: -+ case <-s.quit.Done(): -+ timer.Stop() -+ return nil -+ } -+ continue -+ } -+ s.mu.Lock() -+ s.printf("done serving; Accept = %v", err) -+ s.mu.Unlock() -+ -+ if s.quit.HasFired() { -+ return nil -+ } -+ return err -+ } -+ tempDelay = 0 -+ // Start a new goroutine to deal with rawConn so we don't stall this Accept -+ // loop goroutine. -+ // -+ // Make sure we account for the goroutine so GracefulStop doesn't nil out -+ // s.conns before this conn can be added. -+ s.serveWG.Add(1) -+ go func() { -+ s.handleRawConn(lis.Addr().String(), rawConn) -+ s.serveWG.Done() -+ }() -+ } -+} -+ -+// handleRawConn forks a goroutine to handle a just-accepted connection that -+// has not had any I/O performed on it yet. -+func (s *Server) handleRawConn(lisAddr string, rawConn net.Conn) { -+ if s.quit.HasFired() { -+ rawConn.Close() -+ return -+ } -+ rawConn.SetDeadline(time.Now().Add(s.opts.connectionTimeout)) -+ -+ // Finish handshaking (HTTP2) -+ st := s.newHTTP2Transport(rawConn) -+ rawConn.SetDeadline(time.Time{}) -+ if st == nil { -+ return -+ } -+ -+ if !s.addConn(lisAddr, st) { -+ return -+ } -+ go func() { -+ s.serveStreams(st) -+ s.removeConn(lisAddr, st) -+ }() -+} -+ -+func (s *Server) drainServerTransports(addr string) { -+ s.mu.Lock() -+ conns := s.conns[addr] -+ for st := range conns { -+ st.Drain("") -+ } -+ s.mu.Unlock() -+} -+ -+// newHTTP2Transport sets up a http/2 transport (using the -+// gRPC http2 server transport in transport/http2_server.go). -+func (s *Server) newHTTP2Transport(c net.Conn) transport.ServerTransport { -+ config := &transport.ServerConfig{ -+ MaxStreams: s.opts.maxConcurrentStreams, -+ ConnectionTimeout: s.opts.connectionTimeout, -+ Credentials: s.opts.creds, -+ InTapHandle: s.opts.inTapHandle, -+ StatsHandlers: s.opts.statsHandlers, -+ KeepaliveParams: s.opts.keepaliveParams, -+ KeepalivePolicy: s.opts.keepalivePolicy, -+ InitialWindowSize: s.opts.initialWindowSize, -+ InitialConnWindowSize: s.opts.initialConnWindowSize, -+ WriteBufferSize: s.opts.writeBufferSize, -+ ReadBufferSize: s.opts.readBufferSize, -+ ChannelzParentID: s.channelzID, -+ MaxHeaderListSize: s.opts.maxHeaderListSize, -+ HeaderTableSize: s.opts.headerTableSize, -+ } -+ st, err := transport.NewServerTransport(c, config) -+ if err != nil { -+ s.mu.Lock() -+ s.errorf("NewServerTransport(%q) failed: %v", c.RemoteAddr(), err) -+ s.mu.Unlock() -+ // ErrConnDispatched means that the connection was dispatched away from -+ // gRPC; those connections should be left open. -+ if err != credentials.ErrConnDispatched { -+ // Don't log on ErrConnDispatched and io.EOF to prevent log spam. -+ if err != io.EOF { -+ channelz.Info(logger, s.channelzID, "grpc: Server.Serve failed to create ServerTransport: ", err) -+ } -+ c.Close() -+ } -+ return nil -+ } -+ -+ return st -+} -+ -+func (s *Server) serveStreams(st transport.ServerTransport) { -+ defer st.Close(errors.New("finished serving streams for the server transport")) -+ var wg sync.WaitGroup -+ -+ streamQuota := newHandlerQuota(s.opts.maxConcurrentStreams) -+ st.HandleStreams(func(stream *transport.Stream) { -+ wg.Add(1) -+ -+ streamQuota.acquire() -+ f := func() { -+ defer streamQuota.release() -+ defer wg.Done() -+ s.handleStream(st, stream, s.traceInfo(st, stream)) -+ } -+ -+ if s.opts.numServerWorkers > 0 { -+ select { -+ case s.serverWorkerChannel <- f: -+ return -+ default: -+ // If all stream workers are busy, fallback to the default code path. -+ } -+ } -+ go f() -+ }, func(ctx context.Context, method string) context.Context { -+ if !EnableTracing { -+ return ctx -+ } -+ tr := trace.New("grpc.Recv."+methodFamily(method), method) -+ return trace.NewContext(ctx, tr) -+ }) -+ wg.Wait() -+} -+ -+var _ http.Handler = (*Server)(nil) -+ -+// ServeHTTP implements the Go standard library's http.Handler -+// interface by responding to the gRPC request r, by looking up -+// the requested gRPC method in the gRPC server s. -+// -+// The provided HTTP request must have arrived on an HTTP/2 -+// connection. When using the Go standard library's server, -+// practically this means that the Request must also have arrived -+// over TLS. -+// -+// To share one port (such as 443 for https) between gRPC and an -+// existing http.Handler, use a root http.Handler such as: -+// -+// if r.ProtoMajor == 2 && strings.HasPrefix( -+// r.Header.Get("Content-Type"), "application/grpc") { -+// grpcServer.ServeHTTP(w, r) -+// } else { -+// yourMux.ServeHTTP(w, r) -+// } -+// -+// Note that ServeHTTP uses Go's HTTP/2 server implementation which is totally -+// separate from grpc-go's HTTP/2 server. Performance and features may vary -+// between the two paths. ServeHTTP does not support some gRPC features -+// available through grpc-go's HTTP/2 server. -+// -+// # Experimental -+// -+// Notice: This API is EXPERIMENTAL and may be changed or removed in a -+// later release. -+func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { -+ st, err := transport.NewServerHandlerTransport(w, r, s.opts.statsHandlers) -+ if err != nil { -+ // Errors returned from transport.NewServerHandlerTransport have -+ // already been written to w. -+ return -+ } -+ if !s.addConn(listenerAddressForServeHTTP, st) { -+ return -+ } -+ defer s.removeConn(listenerAddressForServeHTTP, st) -+ s.serveStreams(st) -+} -+ -+// traceInfo returns a traceInfo and associates it with stream, if tracing is enabled. -+// If tracing is not enabled, it returns nil. -+func (s *Server) traceInfo(st transport.ServerTransport, stream *transport.Stream) (trInfo *traceInfo) { -+ if !EnableTracing { -+ return nil -+ } -+ tr, ok := trace.FromContext(stream.Context()) -+ if !ok { -+ return nil -+ } -+ -+ trInfo = &traceInfo{ -+ tr: tr, -+ firstLine: firstLine{ -+ client: false, -+ remoteAddr: st.RemoteAddr(), -+ }, -+ } -+ if dl, ok := stream.Context().Deadline(); ok { -+ trInfo.firstLine.deadline = time.Until(dl) -+ } -+ return trInfo -+} -+ -+func (s *Server) addConn(addr string, st transport.ServerTransport) bool { -+ s.mu.Lock() -+ defer s.mu.Unlock() -+ if s.conns == nil { -+ st.Close(errors.New("Server.addConn called when server has already been stopped")) -+ return false -+ } -+ if s.drain { -+ // Transport added after we drained our existing conns: drain it -+ // immediately. -+ st.Drain("") -+ } -+ -+ if s.conns[addr] == nil { -+ // Create a map entry if this is the first connection on this listener. -+ s.conns[addr] = make(map[transport.ServerTransport]bool) -+ } -+ s.conns[addr][st] = true -+ return true -+} -+ -+func (s *Server) removeConn(addr string, st transport.ServerTransport) { -+ s.mu.Lock() -+ defer s.mu.Unlock() -+ -+ conns := s.conns[addr] -+ if conns != nil { -+ delete(conns, st) -+ if len(conns) == 0 { -+ // If the last connection for this address is being removed, also -+ // remove the map entry corresponding to the address. This is used -+ // in GracefulStop() when waiting for all connections to be closed. -+ delete(s.conns, addr) -+ } -+ s.cv.Broadcast() -+ } -+} -+ -+func (s *Server) channelzMetric() *channelz.ServerInternalMetric { -+ return &channelz.ServerInternalMetric{ -+ CallsStarted: atomic.LoadInt64(&s.czData.callsStarted), -+ CallsSucceeded: atomic.LoadInt64(&s.czData.callsSucceeded), -+ CallsFailed: atomic.LoadInt64(&s.czData.callsFailed), -+ LastCallStartedTimestamp: time.Unix(0, atomic.LoadInt64(&s.czData.lastCallStartedTime)), -+ } -+} -+ -+func (s *Server) incrCallsStarted() { -+ atomic.AddInt64(&s.czData.callsStarted, 1) -+ atomic.StoreInt64(&s.czData.lastCallStartedTime, time.Now().UnixNano()) -+} -+ -+func (s *Server) incrCallsSucceeded() { -+ atomic.AddInt64(&s.czData.callsSucceeded, 1) -+} -+ -+func (s *Server) incrCallsFailed() { -+ atomic.AddInt64(&s.czData.callsFailed, 1) -+} -+ -+func (s *Server) sendResponse(t transport.ServerTransport, stream *transport.Stream, msg interface{}, cp Compressor, opts *transport.Options, comp encoding.Compressor) error { -+ data, err := encode(s.getCodec(stream.ContentSubtype()), msg) -+ if err != nil { -+ channelz.Error(logger, s.channelzID, "grpc: server failed to encode response: ", err) -+ return err -+ } -+ compData, err := compress(data, cp, comp) -+ if err != nil { -+ channelz.Error(logger, s.channelzID, "grpc: server failed to compress response: ", err) -+ return err -+ } -+ hdr, payload := msgHeader(data, compData) -+ // TODO(dfawley): should we be checking len(data) instead? -+ if len(payload) > s.opts.maxSendMessageSize { -+ return status.Errorf(codes.ResourceExhausted, "grpc: trying to send message larger than max (%d vs. %d)", len(payload), s.opts.maxSendMessageSize) -+ } -+ err = t.Write(stream, hdr, payload, opts) -+ if err == nil { -+ for _, sh := range s.opts.statsHandlers { -+ sh.HandleRPC(stream.Context(), outPayload(false, msg, data, payload, time.Now())) -+ } -+ } -+ return err -+} -+ -+// chainUnaryServerInterceptors chains all unary server interceptors into one. -+func chainUnaryServerInterceptors(s *Server) { -+ // Prepend opts.unaryInt to the chaining interceptors if it exists, since unaryInt will -+ // be executed before any other chained interceptors. -+ interceptors := s.opts.chainUnaryInts -+ if s.opts.unaryInt != nil { -+ interceptors = append([]UnaryServerInterceptor{s.opts.unaryInt}, s.opts.chainUnaryInts...) -+ } -+ -+ var chainedInt UnaryServerInterceptor -+ if len(interceptors) == 0 { -+ chainedInt = nil -+ } else if len(interceptors) == 1 { -+ chainedInt = interceptors[0] -+ } else { -+ chainedInt = chainUnaryInterceptors(interceptors) -+ } -+ -+ s.opts.unaryInt = chainedInt -+} -+ -+func chainUnaryInterceptors(interceptors []UnaryServerInterceptor) UnaryServerInterceptor { -+ return func(ctx context.Context, req interface{}, info *UnaryServerInfo, handler UnaryHandler) (interface{}, error) { -+ return interceptors[0](ctx, req, info, getChainUnaryHandler(interceptors, 0, info, handler)) -+ } -+} -+ -+func getChainUnaryHandler(interceptors []UnaryServerInterceptor, curr int, info *UnaryServerInfo, finalHandler UnaryHandler) UnaryHandler { -+ if curr == len(interceptors)-1 { -+ return finalHandler -+ } -+ return func(ctx context.Context, req interface{}) (interface{}, error) { -+ return interceptors[curr+1](ctx, req, info, getChainUnaryHandler(interceptors, curr+1, info, finalHandler)) -+ } -+} -+ -+func (s *Server) processUnaryRPC(t transport.ServerTransport, stream *transport.Stream, info *serviceInfo, md *MethodDesc, trInfo *traceInfo) (err error) { -+ shs := s.opts.statsHandlers -+ if len(shs) != 0 || trInfo != nil || channelz.IsOn() { -+ if channelz.IsOn() { -+ s.incrCallsStarted() -+ } -+ var statsBegin *stats.Begin -+ for _, sh := range shs { -+ beginTime := time.Now() -+ statsBegin = &stats.Begin{ -+ BeginTime: beginTime, -+ IsClientStream: false, -+ IsServerStream: false, -+ } -+ sh.HandleRPC(stream.Context(), statsBegin) -+ } -+ if trInfo != nil { -+ trInfo.tr.LazyLog(&trInfo.firstLine, false) -+ } -+ // The deferred error handling for tracing, stats handler and channelz are -+ // combined into one function to reduce stack usage -- a defer takes ~56-64 -+ // bytes on the stack, so overflowing the stack will require a stack -+ // re-allocation, which is expensive. -+ // -+ // To maintain behavior similar to separate deferred statements, statements -+ // should be executed in the reverse order. That is, tracing first, stats -+ // handler second, and channelz last. Note that panics *within* defers will -+ // lead to different behavior, but that's an acceptable compromise; that -+ // would be undefined behavior territory anyway. -+ defer func() { -+ if trInfo != nil { -+ if err != nil && err != io.EOF { -+ trInfo.tr.LazyLog(&fmtStringer{"%v", []interface{}{err}}, true) -+ trInfo.tr.SetError() -+ } -+ trInfo.tr.Finish() -+ } -+ -+ for _, sh := range shs { -+ end := &stats.End{ -+ BeginTime: statsBegin.BeginTime, -+ EndTime: time.Now(), -+ } -+ if err != nil && err != io.EOF { -+ end.Error = toRPCErr(err) -+ } -+ sh.HandleRPC(stream.Context(), end) -+ } -+ -+ if channelz.IsOn() { -+ if err != nil && err != io.EOF { -+ s.incrCallsFailed() -+ } else { -+ s.incrCallsSucceeded() -+ } -+ } -+ }() -+ } -+ var binlogs []binarylog.MethodLogger -+ if ml := binarylog.GetMethodLogger(stream.Method()); ml != nil { -+ binlogs = append(binlogs, ml) -+ } -+ if s.opts.binaryLogger != nil { -+ if ml := s.opts.binaryLogger.GetMethodLogger(stream.Method()); ml != nil { -+ binlogs = append(binlogs, ml) -+ } -+ } -+ if len(binlogs) != 0 { -+ ctx := stream.Context() -+ md, _ := metadata.FromIncomingContext(ctx) -+ logEntry := &binarylog.ClientHeader{ -+ Header: md, -+ MethodName: stream.Method(), -+ PeerAddr: nil, -+ } -+ if deadline, ok := ctx.Deadline(); ok { -+ logEntry.Timeout = time.Until(deadline) -+ if logEntry.Timeout < 0 { -+ logEntry.Timeout = 0 -+ } -+ } -+ if a := md[":authority"]; len(a) > 0 { -+ logEntry.Authority = a[0] -+ } -+ if peer, ok := peer.FromContext(ctx); ok { -+ logEntry.PeerAddr = peer.Addr -+ } -+ for _, binlog := range binlogs { -+ binlog.Log(ctx, logEntry) -+ } -+ } -+ -+ // comp and cp are used for compression. decomp and dc are used for -+ // decompression. If comp and decomp are both set, they are the same; -+ // however they are kept separate to ensure that at most one of the -+ // compressor/decompressor variable pairs are set for use later. -+ var comp, decomp encoding.Compressor -+ var cp Compressor -+ var dc Decompressor -+ var sendCompressorName string -+ -+ // If dc is set and matches the stream's compression, use it. Otherwise, try -+ // to find a matching registered compressor for decomp. -+ if rc := stream.RecvCompress(); s.opts.dc != nil && s.opts.dc.Type() == rc { -+ dc = s.opts.dc -+ } else if rc != "" && rc != encoding.Identity { -+ decomp = encoding.GetCompressor(rc) -+ if decomp == nil { -+ st := status.Newf(codes.Unimplemented, "grpc: Decompressor is not installed for grpc-encoding %q", rc) -+ t.WriteStatus(stream, st) -+ return st.Err() -+ } -+ } -+ -+ // If cp is set, use it. Otherwise, attempt to compress the response using -+ // the incoming message compression method. -+ // -+ // NOTE: this needs to be ahead of all handling, https://github.com/grpc/grpc-go/issues/686. -+ if s.opts.cp != nil { -+ cp = s.opts.cp -+ sendCompressorName = cp.Type() -+ } else if rc := stream.RecvCompress(); rc != "" && rc != encoding.Identity { -+ // Legacy compressor not specified; attempt to respond with same encoding. -+ comp = encoding.GetCompressor(rc) -+ if comp != nil { -+ sendCompressorName = comp.Name() -+ } -+ } -+ -+ if sendCompressorName != "" { -+ if err := stream.SetSendCompress(sendCompressorName); err != nil { -+ return status.Errorf(codes.Internal, "grpc: failed to set send compressor: %v", err) -+ } -+ } -+ -+ var payInfo *payloadInfo -+ if len(shs) != 0 || len(binlogs) != 0 { -+ payInfo = &payloadInfo{} -+ } -+ d, err := recvAndDecompress(&parser{r: stream, recvBufferPool: s.opts.recvBufferPool}, stream, dc, s.opts.maxReceiveMessageSize, payInfo, decomp) -+ if err != nil { -+ if e := t.WriteStatus(stream, status.Convert(err)); e != nil { -+ channelz.Warningf(logger, s.channelzID, "grpc: Server.processUnaryRPC failed to write status: %v", e) -+ } -+ return err -+ } -+ if channelz.IsOn() { -+ t.IncrMsgRecv() -+ } -+ df := func(v interface{}) error { -+ if err := s.getCodec(stream.ContentSubtype()).Unmarshal(d, v); err != nil { -+ return status.Errorf(codes.Internal, "grpc: error unmarshalling request: %v", err) -+ } -+ for _, sh := range shs { -+ sh.HandleRPC(stream.Context(), &stats.InPayload{ -+ RecvTime: time.Now(), -+ Payload: v, -+ Length: len(d), -+ WireLength: payInfo.compressedLength + headerLen, -+ CompressedLength: payInfo.compressedLength, -+ Data: d, -+ }) -+ } -+ if len(binlogs) != 0 { -+ cm := &binarylog.ClientMessage{ -+ Message: d, -+ } -+ for _, binlog := range binlogs { -+ binlog.Log(stream.Context(), cm) -+ } -+ } -+ if trInfo != nil { -+ trInfo.tr.LazyLog(&payload{sent: false, msg: v}, true) -+ } -+ return nil -+ } -+ ctx := NewContextWithServerTransportStream(stream.Context(), stream) -+ reply, appErr := md.Handler(info.serviceImpl, ctx, df, s.opts.unaryInt) -+ if appErr != nil { -+ appStatus, ok := status.FromError(appErr) -+ if !ok { -+ // Convert non-status application error to a status error with code -+ // Unknown, but handle context errors specifically. -+ appStatus = status.FromContextError(appErr) -+ appErr = appStatus.Err() -+ } -+ if trInfo != nil { -+ trInfo.tr.LazyLog(stringer(appStatus.Message()), true) -+ trInfo.tr.SetError() -+ } -+ if e := t.WriteStatus(stream, appStatus); e != nil { -+ channelz.Warningf(logger, s.channelzID, "grpc: Server.processUnaryRPC failed to write status: %v", e) -+ } -+ if len(binlogs) != 0 { -+ if h, _ := stream.Header(); h.Len() > 0 { -+ // Only log serverHeader if there was header. Otherwise it can -+ // be trailer only. -+ sh := &binarylog.ServerHeader{ -+ Header: h, -+ } -+ for _, binlog := range binlogs { -+ binlog.Log(stream.Context(), sh) -+ } -+ } -+ st := &binarylog.ServerTrailer{ -+ Trailer: stream.Trailer(), -+ Err: appErr, -+ } -+ for _, binlog := range binlogs { -+ binlog.Log(stream.Context(), st) -+ } -+ } -+ return appErr -+ } -+ if trInfo != nil { -+ trInfo.tr.LazyLog(stringer("OK"), false) -+ } -+ opts := &transport.Options{Last: true} -+ -+ // Server handler could have set new compressor by calling SetSendCompressor. -+ // In case it is set, we need to use it for compressing outbound message. -+ if stream.SendCompress() != sendCompressorName { -+ comp = encoding.GetCompressor(stream.SendCompress()) -+ } -+ if err := s.sendResponse(t, stream, reply, cp, opts, comp); err != nil { -+ if err == io.EOF { -+ // The entire stream is done (for unary RPC only). -+ return err -+ } -+ if sts, ok := status.FromError(err); ok { -+ if e := t.WriteStatus(stream, sts); e != nil { -+ channelz.Warningf(logger, s.channelzID, "grpc: Server.processUnaryRPC failed to write status: %v", e) -+ } -+ } else { -+ switch st := err.(type) { -+ case transport.ConnectionError: -+ // Nothing to do here. -+ default: -+ panic(fmt.Sprintf("grpc: Unexpected error (%T) from sendResponse: %v", st, st)) -+ } -+ } -+ if len(binlogs) != 0 { -+ h, _ := stream.Header() -+ sh := &binarylog.ServerHeader{ -+ Header: h, -+ } -+ st := &binarylog.ServerTrailer{ -+ Trailer: stream.Trailer(), -+ Err: appErr, -+ } -+ for _, binlog := range binlogs { -+ binlog.Log(stream.Context(), sh) -+ binlog.Log(stream.Context(), st) -+ } -+ } -+ return err -+ } -+ if len(binlogs) != 0 { -+ h, _ := stream.Header() -+ sh := &binarylog.ServerHeader{ -+ Header: h, -+ } -+ sm := &binarylog.ServerMessage{ -+ Message: reply, -+ } -+ for _, binlog := range binlogs { -+ binlog.Log(stream.Context(), sh) -+ binlog.Log(stream.Context(), sm) -+ } -+ } -+ if channelz.IsOn() { -+ t.IncrMsgSent() -+ } -+ if trInfo != nil { -+ trInfo.tr.LazyLog(&payload{sent: true, msg: reply}, true) -+ } -+ // TODO: Should we be logging if writing status failed here, like above? -+ // Should the logging be in WriteStatus? Should we ignore the WriteStatus -+ // error or allow the stats handler to see it? -+ if len(binlogs) != 0 { -+ st := &binarylog.ServerTrailer{ -+ Trailer: stream.Trailer(), -+ Err: appErr, -+ } -+ for _, binlog := range binlogs { -+ binlog.Log(stream.Context(), st) -+ } -+ } -+ return t.WriteStatus(stream, statusOK) -+} -+ -+// chainStreamServerInterceptors chains all stream server interceptors into one. -+func chainStreamServerInterceptors(s *Server) { -+ // Prepend opts.streamInt to the chaining interceptors if it exists, since streamInt will -+ // be executed before any other chained interceptors. -+ interceptors := s.opts.chainStreamInts -+ if s.opts.streamInt != nil { -+ interceptors = append([]StreamServerInterceptor{s.opts.streamInt}, s.opts.chainStreamInts...) -+ } -+ -+ var chainedInt StreamServerInterceptor -+ if len(interceptors) == 0 { -+ chainedInt = nil -+ } else if len(interceptors) == 1 { -+ chainedInt = interceptors[0] -+ } else { -+ chainedInt = chainStreamInterceptors(interceptors) -+ } -+ -+ s.opts.streamInt = chainedInt -+} -+ -+func chainStreamInterceptors(interceptors []StreamServerInterceptor) StreamServerInterceptor { -+ return func(srv interface{}, ss ServerStream, info *StreamServerInfo, handler StreamHandler) error { -+ return interceptors[0](srv, ss, info, getChainStreamHandler(interceptors, 0, info, handler)) -+ } -+} -+ -+func getChainStreamHandler(interceptors []StreamServerInterceptor, curr int, info *StreamServerInfo, finalHandler StreamHandler) StreamHandler { -+ if curr == len(interceptors)-1 { -+ return finalHandler -+ } -+ return func(srv interface{}, stream ServerStream) error { -+ return interceptors[curr+1](srv, stream, info, getChainStreamHandler(interceptors, curr+1, info, finalHandler)) -+ } -+} -+ -+func (s *Server) processStreamingRPC(t transport.ServerTransport, stream *transport.Stream, info *serviceInfo, sd *StreamDesc, trInfo *traceInfo) (err error) { -+ if channelz.IsOn() { -+ s.incrCallsStarted() -+ } -+ shs := s.opts.statsHandlers -+ var statsBegin *stats.Begin -+ if len(shs) != 0 { -+ beginTime := time.Now() -+ statsBegin = &stats.Begin{ -+ BeginTime: beginTime, -+ IsClientStream: sd.ClientStreams, -+ IsServerStream: sd.ServerStreams, -+ } -+ for _, sh := range shs { -+ sh.HandleRPC(stream.Context(), statsBegin) -+ } -+ } -+ ctx := NewContextWithServerTransportStream(stream.Context(), stream) -+ ss := &serverStream{ -+ ctx: ctx, -+ t: t, -+ s: stream, -+ p: &parser{r: stream, recvBufferPool: s.opts.recvBufferPool}, -+ codec: s.getCodec(stream.ContentSubtype()), -+ maxReceiveMessageSize: s.opts.maxReceiveMessageSize, -+ maxSendMessageSize: s.opts.maxSendMessageSize, -+ trInfo: trInfo, -+ statsHandler: shs, -+ } -+ -+ if len(shs) != 0 || trInfo != nil || channelz.IsOn() { -+ // See comment in processUnaryRPC on defers. -+ defer func() { -+ if trInfo != nil { -+ ss.mu.Lock() -+ if err != nil && err != io.EOF { -+ ss.trInfo.tr.LazyLog(&fmtStringer{"%v", []interface{}{err}}, true) -+ ss.trInfo.tr.SetError() -+ } -+ ss.trInfo.tr.Finish() -+ ss.trInfo.tr = nil -+ ss.mu.Unlock() -+ } -+ -+ if len(shs) != 0 { -+ end := &stats.End{ -+ BeginTime: statsBegin.BeginTime, -+ EndTime: time.Now(), -+ } -+ if err != nil && err != io.EOF { -+ end.Error = toRPCErr(err) -+ } -+ for _, sh := range shs { -+ sh.HandleRPC(stream.Context(), end) -+ } -+ } -+ -+ if channelz.IsOn() { -+ if err != nil && err != io.EOF { -+ s.incrCallsFailed() -+ } else { -+ s.incrCallsSucceeded() -+ } -+ } -+ }() -+ } -+ -+ if ml := binarylog.GetMethodLogger(stream.Method()); ml != nil { -+ ss.binlogs = append(ss.binlogs, ml) -+ } -+ if s.opts.binaryLogger != nil { -+ if ml := s.opts.binaryLogger.GetMethodLogger(stream.Method()); ml != nil { -+ ss.binlogs = append(ss.binlogs, ml) -+ } -+ } -+ if len(ss.binlogs) != 0 { -+ md, _ := metadata.FromIncomingContext(ctx) -+ logEntry := &binarylog.ClientHeader{ -+ Header: md, -+ MethodName: stream.Method(), -+ PeerAddr: nil, -+ } -+ if deadline, ok := ctx.Deadline(); ok { -+ logEntry.Timeout = time.Until(deadline) -+ if logEntry.Timeout < 0 { -+ logEntry.Timeout = 0 -+ } -+ } -+ if a := md[":authority"]; len(a) > 0 { -+ logEntry.Authority = a[0] -+ } -+ if peer, ok := peer.FromContext(ss.Context()); ok { -+ logEntry.PeerAddr = peer.Addr -+ } -+ for _, binlog := range ss.binlogs { -+ binlog.Log(stream.Context(), logEntry) -+ } -+ } -+ -+ // If dc is set and matches the stream's compression, use it. Otherwise, try -+ // to find a matching registered compressor for decomp. -+ if rc := stream.RecvCompress(); s.opts.dc != nil && s.opts.dc.Type() == rc { -+ ss.dc = s.opts.dc -+ } else if rc != "" && rc != encoding.Identity { -+ ss.decomp = encoding.GetCompressor(rc) -+ if ss.decomp == nil { -+ st := status.Newf(codes.Unimplemented, "grpc: Decompressor is not installed for grpc-encoding %q", rc) -+ t.WriteStatus(ss.s, st) -+ return st.Err() -+ } -+ } -+ -+ // If cp is set, use it. Otherwise, attempt to compress the response using -+ // the incoming message compression method. -+ // -+ // NOTE: this needs to be ahead of all handling, https://github.com/grpc/grpc-go/issues/686. -+ if s.opts.cp != nil { -+ ss.cp = s.opts.cp -+ ss.sendCompressorName = s.opts.cp.Type() -+ } else if rc := stream.RecvCompress(); rc != "" && rc != encoding.Identity { -+ // Legacy compressor not specified; attempt to respond with same encoding. -+ ss.comp = encoding.GetCompressor(rc) -+ if ss.comp != nil { -+ ss.sendCompressorName = rc -+ } -+ } -+ -+ if ss.sendCompressorName != "" { -+ if err := stream.SetSendCompress(ss.sendCompressorName); err != nil { -+ return status.Errorf(codes.Internal, "grpc: failed to set send compressor: %v", err) -+ } -+ } -+ -+ ss.ctx = newContextWithRPCInfo(ss.ctx, false, ss.codec, ss.cp, ss.comp) -+ -+ if trInfo != nil { -+ trInfo.tr.LazyLog(&trInfo.firstLine, false) -+ } -+ var appErr error -+ var server interface{} -+ if info != nil { -+ server = info.serviceImpl -+ } -+ if s.opts.streamInt == nil { -+ appErr = sd.Handler(server, ss) -+ } else { -+ info := &StreamServerInfo{ -+ FullMethod: stream.Method(), -+ IsClientStream: sd.ClientStreams, -+ IsServerStream: sd.ServerStreams, -+ } -+ appErr = s.opts.streamInt(server, ss, info, sd.Handler) -+ } -+ if appErr != nil { -+ appStatus, ok := status.FromError(appErr) -+ if !ok { -+ // Convert non-status application error to a status error with code -+ // Unknown, but handle context errors specifically. -+ appStatus = status.FromContextError(appErr) -+ appErr = appStatus.Err() -+ } -+ if trInfo != nil { -+ ss.mu.Lock() -+ ss.trInfo.tr.LazyLog(stringer(appStatus.Message()), true) -+ ss.trInfo.tr.SetError() -+ ss.mu.Unlock() -+ } -+ if len(ss.binlogs) != 0 { -+ st := &binarylog.ServerTrailer{ -+ Trailer: ss.s.Trailer(), -+ Err: appErr, -+ } -+ for _, binlog := range ss.binlogs { -+ binlog.Log(stream.Context(), st) -+ } -+ } -+ t.WriteStatus(ss.s, appStatus) -+ // TODO: Should we log an error from WriteStatus here and below? -+ return appErr -+ } -+ if trInfo != nil { -+ ss.mu.Lock() -+ ss.trInfo.tr.LazyLog(stringer("OK"), false) -+ ss.mu.Unlock() -+ } -+ if len(ss.binlogs) != 0 { -+ st := &binarylog.ServerTrailer{ -+ Trailer: ss.s.Trailer(), -+ Err: appErr, -+ } -+ for _, binlog := range ss.binlogs { -+ binlog.Log(stream.Context(), st) -+ } -+ } -+ return t.WriteStatus(ss.s, statusOK) -+} -+ -+func (s *Server) handleStream(t transport.ServerTransport, stream *transport.Stream, trInfo *traceInfo) { -+ sm := stream.Method() -+ if sm != "" && sm[0] == '/' { -+ sm = sm[1:] -+ } -+ pos := strings.LastIndex(sm, "/") -+ if pos == -1 { -+ if trInfo != nil { -+ trInfo.tr.LazyLog(&fmtStringer{"Malformed method name %q", []interface{}{sm}}, true) -+ trInfo.tr.SetError() -+ } -+ errDesc := fmt.Sprintf("malformed method name: %q", stream.Method()) -+ if err := t.WriteStatus(stream, status.New(codes.Unimplemented, errDesc)); err != nil { -+ if trInfo != nil { -+ trInfo.tr.LazyLog(&fmtStringer{"%v", []interface{}{err}}, true) -+ trInfo.tr.SetError() -+ } -+ channelz.Warningf(logger, s.channelzID, "grpc: Server.handleStream failed to write status: %v", err) -+ } -+ if trInfo != nil { -+ trInfo.tr.Finish() -+ } -+ return -+ } -+ service := sm[:pos] -+ method := sm[pos+1:] -+ -+ srv, knownService := s.services[service] -+ if knownService { -+ if md, ok := srv.methods[method]; ok { -+ s.processUnaryRPC(t, stream, srv, md, trInfo) -+ return -+ } -+ if sd, ok := srv.streams[method]; ok { -+ s.processStreamingRPC(t, stream, srv, sd, trInfo) -+ return -+ } -+ } -+ // Unknown service, or known server unknown method. -+ if unknownDesc := s.opts.unknownStreamDesc; unknownDesc != nil { -+ s.processStreamingRPC(t, stream, nil, unknownDesc, trInfo) -+ return -+ } -+ var errDesc string -+ if !knownService { -+ errDesc = fmt.Sprintf("unknown service %v", service) -+ } else { -+ errDesc = fmt.Sprintf("unknown method %v for service %v", method, service) -+ } -+ if trInfo != nil { -+ trInfo.tr.LazyPrintf("%s", errDesc) -+ trInfo.tr.SetError() -+ } -+ if err := t.WriteStatus(stream, status.New(codes.Unimplemented, errDesc)); err != nil { -+ if trInfo != nil { -+ trInfo.tr.LazyLog(&fmtStringer{"%v", []interface{}{err}}, true) -+ trInfo.tr.SetError() -+ } -+ channelz.Warningf(logger, s.channelzID, "grpc: Server.handleStream failed to write status: %v", err) -+ } -+ if trInfo != nil { -+ trInfo.tr.Finish() -+ } -+} -+ -+// The key to save ServerTransportStream in the context. -+type streamKey struct{} -+ -+// NewContextWithServerTransportStream creates a new context from ctx and -+// attaches stream to it. -+// -+// # Experimental -+// -+// Notice: This API is EXPERIMENTAL and may be changed or removed in a -+// later release. -+func NewContextWithServerTransportStream(ctx context.Context, stream ServerTransportStream) context.Context { -+ return context.WithValue(ctx, streamKey{}, stream) -+} -+ -+// ServerTransportStream is a minimal interface that a transport stream must -+// implement. This can be used to mock an actual transport stream for tests of -+// handler code that use, for example, grpc.SetHeader (which requires some -+// stream to be in context). -+// -+// See also NewContextWithServerTransportStream. -+// -+// # Experimental -+// -+// Notice: This type is EXPERIMENTAL and may be changed or removed in a -+// later release. -+type ServerTransportStream interface { -+ Method() string -+ SetHeader(md metadata.MD) error -+ SendHeader(md metadata.MD) error -+ SetTrailer(md metadata.MD) error -+} -+ -+// ServerTransportStreamFromContext returns the ServerTransportStream saved in -+// ctx. Returns nil if the given context has no stream associated with it -+// (which implies it is not an RPC invocation context). -+// -+// # Experimental -+// -+// Notice: This API is EXPERIMENTAL and may be changed or removed in a -+// later release. -+func ServerTransportStreamFromContext(ctx context.Context) ServerTransportStream { -+ s, _ := ctx.Value(streamKey{}).(ServerTransportStream) -+ return s -+} -+ -+// Stop stops the gRPC server. It immediately closes all open -+// connections and listeners. -+// It cancels all active RPCs on the server side and the corresponding -+// pending RPCs on the client side will get notified by connection -+// errors. -+func (s *Server) Stop() { -+ s.quit.Fire() -+ -+ defer func() { -+ s.serveWG.Wait() -+ s.done.Fire() -+ }() -+ -+ s.channelzRemoveOnce.Do(func() { channelz.RemoveEntry(s.channelzID) }) -+ -+ s.mu.Lock() -+ listeners := s.lis -+ s.lis = nil -+ conns := s.conns -+ s.conns = nil -+ // interrupt GracefulStop if Stop and GracefulStop are called concurrently. -+ s.cv.Broadcast() -+ s.mu.Unlock() -+ -+ for lis := range listeners { -+ lis.Close() -+ } -+ for _, cs := range conns { -+ for st := range cs { -+ st.Close(errors.New("Server.Stop called")) -+ } -+ } -+ if s.opts.numServerWorkers > 0 { -+ s.stopServerWorkers() -+ } -+ -+ s.mu.Lock() -+ if s.events != nil { -+ s.events.Finish() -+ s.events = nil -+ } -+ s.mu.Unlock() -+} -+ -+// GracefulStop stops the gRPC server gracefully. It stops the server from -+// accepting new connections and RPCs and blocks until all the pending RPCs are -+// finished. -+func (s *Server) GracefulStop() { -+ s.quit.Fire() -+ defer s.done.Fire() -+ -+ s.channelzRemoveOnce.Do(func() { channelz.RemoveEntry(s.channelzID) }) -+ s.mu.Lock() -+ if s.conns == nil { -+ s.mu.Unlock() -+ return -+ } -+ -+ for lis := range s.lis { -+ lis.Close() -+ } -+ s.lis = nil -+ if !s.drain { -+ for _, conns := range s.conns { -+ for st := range conns { -+ st.Drain("graceful_stop") -+ } -+ } -+ s.drain = true -+ } -+ -+ // Wait for serving threads to be ready to exit. Only then can we be sure no -+ // new conns will be created. -+ s.mu.Unlock() -+ s.serveWG.Wait() -+ s.mu.Lock() -+ -+ for len(s.conns) != 0 { -+ s.cv.Wait() -+ } -+ s.conns = nil -+ if s.events != nil { -+ s.events.Finish() -+ s.events = nil -+ } -+ s.mu.Unlock() -+} -+ -+// contentSubtype must be lowercase -+// cannot return nil -+func (s *Server) getCodec(contentSubtype string) baseCodec { -+ if s.opts.codec != nil { -+ return s.opts.codec -+ } -+ if contentSubtype == "" { -+ return encoding.GetCodec(proto.Name) -+ } -+ codec := encoding.GetCodec(contentSubtype) -+ if codec == nil { -+ return encoding.GetCodec(proto.Name) -+ } -+ return codec -+} -+ -+// SetHeader sets the header metadata to be sent from the server to the client. -+// The context provided must be the context passed to the server's handler. -+// -+// Streaming RPCs should prefer the SetHeader method of the ServerStream. -+// -+// When called multiple times, all the provided metadata will be merged. All -+// the metadata will be sent out when one of the following happens: -+// -+// - grpc.SendHeader is called, or for streaming handlers, stream.SendHeader. -+// - The first response message is sent. For unary handlers, this occurs when -+// the handler returns; for streaming handlers, this can happen when stream's -+// SendMsg method is called. -+// - An RPC status is sent out (error or success). This occurs when the handler -+// returns. -+// -+// SetHeader will fail if called after any of the events above. -+// -+// The error returned is compatible with the status package. However, the -+// status code will often not match the RPC status as seen by the client -+// application, and therefore, should not be relied upon for this purpose. -+func SetHeader(ctx context.Context, md metadata.MD) error { -+ if md.Len() == 0 { -+ return nil -+ } -+ stream := ServerTransportStreamFromContext(ctx) -+ if stream == nil { -+ return status.Errorf(codes.Internal, "grpc: failed to fetch the stream from the context %v", ctx) -+ } -+ return stream.SetHeader(md) -+} -+ -+// SendHeader sends header metadata. It may be called at most once, and may not -+// be called after any event that causes headers to be sent (see SetHeader for -+// a complete list). The provided md and headers set by SetHeader() will be -+// sent. -+// -+// The error returned is compatible with the status package. However, the -+// status code will often not match the RPC status as seen by the client -+// application, and therefore, should not be relied upon for this purpose. -+func SendHeader(ctx context.Context, md metadata.MD) error { -+ stream := ServerTransportStreamFromContext(ctx) -+ if stream == nil { -+ return status.Errorf(codes.Internal, "grpc: failed to fetch the stream from the context %v", ctx) -+ } -+ if err := stream.SendHeader(md); err != nil { -+ return toRPCErr(err) -+ } -+ return nil -+} -+ -+// SetSendCompressor sets a compressor for outbound messages from the server. -+// It must not be called after any event that causes headers to be sent -+// (see ServerStream.SetHeader for the complete list). Provided compressor is -+// used when below conditions are met: -+// -+// - compressor is registered via encoding.RegisterCompressor -+// - compressor name must exist in the client advertised compressor names -+// sent in grpc-accept-encoding header. Use ClientSupportedCompressors to -+// get client supported compressor names. -+// -+// The context provided must be the context passed to the server's handler. -+// It must be noted that compressor name encoding.Identity disables the -+// outbound compression. -+// By default, server messages will be sent using the same compressor with -+// which request messages were sent. -+// -+// It is not safe to call SetSendCompressor concurrently with SendHeader and -+// SendMsg. -+// -+// # Experimental -+// -+// Notice: This function is EXPERIMENTAL and may be changed or removed in a -+// later release. -+func SetSendCompressor(ctx context.Context, name string) error { -+ stream, ok := ServerTransportStreamFromContext(ctx).(*transport.Stream) -+ if !ok || stream == nil { -+ return fmt.Errorf("failed to fetch the stream from the given context") -+ } -+ -+ if err := validateSendCompressor(name, stream.ClientAdvertisedCompressors()); err != nil { -+ return fmt.Errorf("unable to set send compressor: %w", err) -+ } -+ -+ return stream.SetSendCompress(name) -+} -+ -+// ClientSupportedCompressors returns compressor names advertised by the client -+// via grpc-accept-encoding header. -+// -+// The context provided must be the context passed to the server's handler. -+// -+// # Experimental -+// -+// Notice: This function is EXPERIMENTAL and may be changed or removed in a -+// later release. -+func ClientSupportedCompressors(ctx context.Context) ([]string, error) { -+ stream, ok := ServerTransportStreamFromContext(ctx).(*transport.Stream) -+ if !ok || stream == nil { -+ return nil, fmt.Errorf("failed to fetch the stream from the given context %v", ctx) -+ } -+ -+ return strings.Split(stream.ClientAdvertisedCompressors(), ","), nil -+} -+ -+// SetTrailer sets the trailer metadata that will be sent when an RPC returns. -+// When called more than once, all the provided metadata will be merged. -+// -+// The error returned is compatible with the status package. However, the -+// status code will often not match the RPC status as seen by the client -+// application, and therefore, should not be relied upon for this purpose. -+func SetTrailer(ctx context.Context, md metadata.MD) error { -+ if md.Len() == 0 { -+ return nil -+ } -+ stream := ServerTransportStreamFromContext(ctx) -+ if stream == nil { -+ return status.Errorf(codes.Internal, "grpc: failed to fetch the stream from the context %v", ctx) -+ } -+ return stream.SetTrailer(md) -+} -+ -+// Method returns the method string for the server context. The returned -+// string is in the format of "/service/method". -+func Method(ctx context.Context) (string, bool) { -+ s := ServerTransportStreamFromContext(ctx) -+ if s == nil { -+ return "", false -+ } -+ return s.Method(), true -+} -+ -+type channelzServer struct { -+ s *Server -+} -+ -+func (c *channelzServer) ChannelzMetric() *channelz.ServerInternalMetric { -+ return c.s.channelzMetric() -+} -+ -+// validateSendCompressor returns an error when given compressor name cannot be -+// handled by the server or the client based on the advertised compressors. -+func validateSendCompressor(name, clientCompressors string) error { -+ if name == encoding.Identity { -+ return nil -+ } -+ -+ if !grpcutil.IsCompressorNameRegistered(name) { -+ return fmt.Errorf("compressor not registered %q", name) -+ } -+ -+ for _, c := range strings.Split(clientCompressors, ",") { -+ if c == name { -+ return nil // found match -+ } -+ } -+ return fmt.Errorf("client does not support compressor %q", name) -+} -+ -+// atomicSemaphore implements a blocking, counting semaphore. acquire should be -+// called synchronously; release may be called asynchronously. -+type atomicSemaphore struct { -+ n int64 // accessed atomically -+ wait chan struct{} -+} -+ -+func (q *atomicSemaphore) acquire() { -+ if atomic.AddInt64(&q.n, -1) < 0 { -+ // We ran out of quota. Block until a release happens. -+ <-q.wait -+ } -+} -+ -+func (q *atomicSemaphore) release() { -+ // N.B. the "<= 0" check below should allow for this to work with multiple -+ // concurrent calls to acquire, but also note that with synchronous calls to -+ // acquire, as our system does, n will never be less than -1. There are -+ // fairness issues (queuing) to consider if this was to be generalized. -+ if atomic.AddInt64(&q.n, -1) <= 0 { -+ // An acquire was waiting on us. Unblock it. -+ q.wait <- struct{}{} -+ } -+} -+ -+func newHandlerQuota(n uint32) *atomicSemaphore { -+ return &atomicSemaphore{n: int64(n), wait: make(chan struct{}, 1)} -+} -diff --git a/vendor/google.golang.org/grpc/service_config.go b/vendor/google.golang.org/grpc/service_config.go -new file mode 100755 -index 0000000..0df11fc ---- /dev/null -+++ b/vendor/google.golang.org/grpc/service_config.go -@@ -0,0 +1,347 @@ -+/* -+ * -+ * 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 ( -+ "encoding/json" -+ "errors" -+ "fmt" -+ "reflect" -+ "time" -+ -+ "google.golang.org/grpc/codes" -+ "google.golang.org/grpc/internal" -+ internalserviceconfig "google.golang.org/grpc/internal/serviceconfig" -+ "google.golang.org/grpc/serviceconfig" -+) -+ -+const maxInt = int(^uint(0) >> 1) -+ -+// MethodConfig defines the configuration recommended by the service providers for a -+// particular method. -+// -+// Deprecated: Users should not use this struct. Service config should be received -+// through name resolver, as specified here -+// https://github.com/grpc/grpc/blob/master/doc/service_config.md -+type MethodConfig = internalserviceconfig.MethodConfig -+ -+type lbConfig struct { -+ name string -+ cfg serviceconfig.LoadBalancingConfig -+} -+ -+// ServiceConfig is provided by the service provider and contains parameters for how -+// clients that connect to the service should behave. -+// -+// Deprecated: Users should not use this struct. Service config should be received -+// through name resolver, as specified here -+// https://github.com/grpc/grpc/blob/master/doc/service_config.md -+type ServiceConfig struct { -+ serviceconfig.Config -+ -+ // LB is the load balancer the service providers recommends. This is -+ // deprecated; lbConfigs is preferred. If lbConfig and LB are both present, -+ // lbConfig will be used. -+ LB *string -+ -+ // lbConfig is the service config's load balancing configuration. If -+ // lbConfig and LB are both present, lbConfig will be used. -+ lbConfig *lbConfig -+ -+ // Methods contains a map for the methods in this service. If there is an -+ // exact match for a method (i.e. /service/method) in the map, use the -+ // corresponding MethodConfig. If there's no exact match, look for the -+ // default config for the service (/service/) and use the corresponding -+ // MethodConfig if it exists. Otherwise, the method has no MethodConfig to -+ // use. -+ Methods map[string]MethodConfig -+ -+ // If a retryThrottlingPolicy is provided, gRPC will automatically throttle -+ // retry attempts and hedged RPCs when the client’s ratio of failures to -+ // successes exceeds a threshold. -+ // -+ // For each server name, the gRPC client will maintain a token_count which is -+ // initially set to maxTokens, and can take values between 0 and maxTokens. -+ // -+ // Every outgoing RPC (regardless of service or method invoked) will change -+ // token_count as follows: -+ // -+ // - Every failed RPC will decrement the token_count by 1. -+ // - Every successful RPC will increment the token_count by tokenRatio. -+ // -+ // If token_count is less than or equal to maxTokens / 2, then RPCs will not -+ // be retried and hedged RPCs will not be sent. -+ retryThrottling *retryThrottlingPolicy -+ // healthCheckConfig must be set as one of the requirement to enable LB channel -+ // health check. -+ healthCheckConfig *healthCheckConfig -+ // rawJSONString stores service config json string that get parsed into -+ // this service config struct. -+ rawJSONString string -+} -+ -+// healthCheckConfig defines the go-native version of the LB channel health check config. -+type healthCheckConfig struct { -+ // serviceName is the service name to use in the health-checking request. -+ ServiceName string -+} -+ -+type jsonRetryPolicy struct { -+ MaxAttempts int -+ InitialBackoff internalserviceconfig.Duration -+ MaxBackoff internalserviceconfig.Duration -+ BackoffMultiplier float64 -+ RetryableStatusCodes []codes.Code -+} -+ -+// retryThrottlingPolicy defines the go-native version of the retry throttling -+// policy defined by the service config here: -+// https://github.com/grpc/proposal/blob/master/A6-client-retries.md#integration-with-service-config -+type retryThrottlingPolicy struct { -+ // The number of tokens starts at maxTokens. The token_count will always be -+ // between 0 and maxTokens. -+ // -+ // This field is required and must be greater than zero. -+ MaxTokens float64 -+ // The amount of tokens to add on each successful RPC. Typically this will -+ // be some number between 0 and 1, e.g., 0.1. -+ // -+ // This field is required and must be greater than zero. Up to 3 decimal -+ // places are supported. -+ TokenRatio float64 -+} -+ -+type jsonName struct { -+ Service string -+ Method string -+} -+ -+var ( -+ errDuplicatedName = errors.New("duplicated name") -+ errEmptyServiceNonEmptyMethod = errors.New("cannot combine empty 'service' and non-empty 'method'") -+) -+ -+func (j jsonName) generatePath() (string, error) { -+ if j.Service == "" { -+ if j.Method != "" { -+ return "", errEmptyServiceNonEmptyMethod -+ } -+ return "", nil -+ } -+ res := "/" + j.Service + "/" -+ if j.Method != "" { -+ res += j.Method -+ } -+ return res, nil -+} -+ -+// TODO(lyuxuan): delete this struct after cleaning up old service config implementation. -+type jsonMC struct { -+ Name *[]jsonName -+ WaitForReady *bool -+ Timeout *internalserviceconfig.Duration -+ MaxRequestMessageBytes *int64 -+ MaxResponseMessageBytes *int64 -+ RetryPolicy *jsonRetryPolicy -+} -+ -+// TODO(lyuxuan): delete this struct after cleaning up old service config implementation. -+type jsonSC struct { -+ LoadBalancingPolicy *string -+ LoadBalancingConfig *internalserviceconfig.BalancerConfig -+ MethodConfig *[]jsonMC -+ RetryThrottling *retryThrottlingPolicy -+ HealthCheckConfig *healthCheckConfig -+} -+ -+func init() { -+ internal.ParseServiceConfig = parseServiceConfig -+} -+func parseServiceConfig(js string) *serviceconfig.ParseResult { -+ if len(js) == 0 { -+ return &serviceconfig.ParseResult{Err: fmt.Errorf("no JSON service config provided")} -+ } -+ var rsc jsonSC -+ err := json.Unmarshal([]byte(js), &rsc) -+ if err != nil { -+ logger.Warningf("grpc: unmarshaling service config %s: %v", js, err) -+ return &serviceconfig.ParseResult{Err: err} -+ } -+ sc := ServiceConfig{ -+ LB: rsc.LoadBalancingPolicy, -+ Methods: make(map[string]MethodConfig), -+ retryThrottling: rsc.RetryThrottling, -+ healthCheckConfig: rsc.HealthCheckConfig, -+ rawJSONString: js, -+ } -+ if c := rsc.LoadBalancingConfig; c != nil { -+ sc.lbConfig = &lbConfig{ -+ name: c.Name, -+ cfg: c.Config, -+ } -+ } -+ -+ if rsc.MethodConfig == nil { -+ return &serviceconfig.ParseResult{Config: &sc} -+ } -+ -+ paths := map[string]struct{}{} -+ for _, m := range *rsc.MethodConfig { -+ if m.Name == nil { -+ continue -+ } -+ -+ mc := MethodConfig{ -+ WaitForReady: m.WaitForReady, -+ Timeout: (*time.Duration)(m.Timeout), -+ } -+ if mc.RetryPolicy, err = convertRetryPolicy(m.RetryPolicy); err != nil { -+ logger.Warningf("grpc: unmarshaling service config %s: %v", js, err) -+ return &serviceconfig.ParseResult{Err: err} -+ } -+ if m.MaxRequestMessageBytes != nil { -+ if *m.MaxRequestMessageBytes > int64(maxInt) { -+ mc.MaxReqSize = newInt(maxInt) -+ } else { -+ mc.MaxReqSize = newInt(int(*m.MaxRequestMessageBytes)) -+ } -+ } -+ if m.MaxResponseMessageBytes != nil { -+ if *m.MaxResponseMessageBytes > int64(maxInt) { -+ mc.MaxRespSize = newInt(maxInt) -+ } else { -+ mc.MaxRespSize = newInt(int(*m.MaxResponseMessageBytes)) -+ } -+ } -+ for i, n := range *m.Name { -+ path, err := n.generatePath() -+ if err != nil { -+ logger.Warningf("grpc: error unmarshaling service config %s due to methodConfig[%d]: %v", js, i, err) -+ return &serviceconfig.ParseResult{Err: err} -+ } -+ -+ if _, ok := paths[path]; ok { -+ err = errDuplicatedName -+ logger.Warningf("grpc: error unmarshaling service config %s due to methodConfig[%d]: %v", js, i, err) -+ return &serviceconfig.ParseResult{Err: err} -+ } -+ paths[path] = struct{}{} -+ sc.Methods[path] = mc -+ } -+ } -+ -+ if sc.retryThrottling != nil { -+ if mt := sc.retryThrottling.MaxTokens; mt <= 0 || mt > 1000 { -+ return &serviceconfig.ParseResult{Err: fmt.Errorf("invalid retry throttling config: maxTokens (%v) out of range (0, 1000]", mt)} -+ } -+ if tr := sc.retryThrottling.TokenRatio; tr <= 0 { -+ return &serviceconfig.ParseResult{Err: fmt.Errorf("invalid retry throttling config: tokenRatio (%v) may not be negative", tr)} -+ } -+ } -+ return &serviceconfig.ParseResult{Config: &sc} -+} -+ -+func convertRetryPolicy(jrp *jsonRetryPolicy) (p *internalserviceconfig.RetryPolicy, err error) { -+ if jrp == nil { -+ return nil, nil -+ } -+ -+ if jrp.MaxAttempts <= 1 || -+ jrp.InitialBackoff <= 0 || -+ jrp.MaxBackoff <= 0 || -+ jrp.BackoffMultiplier <= 0 || -+ len(jrp.RetryableStatusCodes) == 0 { -+ logger.Warningf("grpc: ignoring retry policy %v due to illegal configuration", jrp) -+ return nil, nil -+ } -+ -+ rp := &internalserviceconfig.RetryPolicy{ -+ MaxAttempts: jrp.MaxAttempts, -+ InitialBackoff: time.Duration(jrp.InitialBackoff), -+ MaxBackoff: time.Duration(jrp.MaxBackoff), -+ BackoffMultiplier: jrp.BackoffMultiplier, -+ RetryableStatusCodes: make(map[codes.Code]bool), -+ } -+ if rp.MaxAttempts > 5 { -+ // TODO(retry): Make the max maxAttempts configurable. -+ rp.MaxAttempts = 5 -+ } -+ for _, code := range jrp.RetryableStatusCodes { -+ rp.RetryableStatusCodes[code] = true -+ } -+ return rp, nil -+} -+ -+func min(a, b *int) *int { -+ if *a < *b { -+ return a -+ } -+ return b -+} -+ -+func getMaxSize(mcMax, doptMax *int, defaultVal int) *int { -+ if mcMax == nil && doptMax == nil { -+ return &defaultVal -+ } -+ if mcMax != nil && doptMax != nil { -+ return min(mcMax, doptMax) -+ } -+ if mcMax != nil { -+ return mcMax -+ } -+ return doptMax -+} -+ -+func newInt(b int) *int { -+ return &b -+} -+ -+func init() { -+ internal.EqualServiceConfigForTesting = equalServiceConfig -+} -+ -+// equalServiceConfig compares two configs. The rawJSONString field is ignored, -+// because they may diff in white spaces. -+// -+// If any of them is NOT *ServiceConfig, return false. -+func equalServiceConfig(a, b serviceconfig.Config) bool { -+ if a == nil && b == nil { -+ return true -+ } -+ aa, ok := a.(*ServiceConfig) -+ if !ok { -+ return false -+ } -+ bb, ok := b.(*ServiceConfig) -+ if !ok { -+ return false -+ } -+ aaRaw := aa.rawJSONString -+ aa.rawJSONString = "" -+ bbRaw := bb.rawJSONString -+ bb.rawJSONString = "" -+ defer func() { -+ aa.rawJSONString = aaRaw -+ bb.rawJSONString = bbRaw -+ }() -+ // Using reflect.DeepEqual instead of cmp.Equal because many balancer -+ // configs are unexported, and cmp.Equal cannot compare unexported fields -+ // from unexported structs. -+ return reflect.DeepEqual(aa, bb) -+} -diff --git a/vendor/google.golang.org/grpc/serviceconfig/serviceconfig.go b/vendor/google.golang.org/grpc/serviceconfig/serviceconfig.go -new file mode 100755 -index 0000000..35e7a20 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/serviceconfig/serviceconfig.go -@@ -0,0 +1,44 @@ -+/* -+ * -+ * Copyright 2019 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 serviceconfig defines types and methods for operating on gRPC -+// service configs. -+// -+// # Experimental -+// -+// Notice: This package is EXPERIMENTAL and may be changed or removed in a -+// later release. -+package serviceconfig -+ -+// Config represents an opaque data structure holding a service config. -+type Config interface { -+ isServiceConfig() -+} -+ -+// LoadBalancingConfig represents an opaque data structure holding a load -+// balancing config. -+type LoadBalancingConfig interface { -+ isLoadBalancingConfig() -+} -+ -+// ParseResult contains a service config or an error. Exactly one must be -+// non-nil. -+type ParseResult struct { -+ Config Config -+ Err error -+} -diff --git a/vendor/google.golang.org/grpc/shared_buffer_pool.go b/vendor/google.golang.org/grpc/shared_buffer_pool.go -new file mode 100755 -index 0000000..c3a5a9a ---- /dev/null -+++ b/vendor/google.golang.org/grpc/shared_buffer_pool.go -@@ -0,0 +1,154 @@ -+/* -+ * -+ * Copyright 2023 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 "sync" -+ -+// SharedBufferPool is a pool of buffers that can be shared, resulting in -+// decreased memory allocation. Currently, in gRPC-go, it is only utilized -+// for parsing incoming messages. -+// -+// # Experimental -+// -+// Notice: This API is EXPERIMENTAL and may be changed or removed in a -+// later release. -+type SharedBufferPool interface { -+ // Get returns a buffer with specified length from the pool. -+ // -+ // The returned byte slice may be not zero initialized. -+ Get(length int) []byte -+ -+ // Put returns a buffer to the pool. -+ Put(*[]byte) -+} -+ -+// NewSharedBufferPool creates a simple SharedBufferPool with buckets -+// of different sizes to optimize memory usage. This prevents the pool from -+// wasting large amounts of memory, even when handling messages of varying sizes. -+// -+// # Experimental -+// -+// Notice: This API is EXPERIMENTAL and may be changed or removed in a -+// later release. -+func NewSharedBufferPool() SharedBufferPool { -+ return &simpleSharedBufferPool{ -+ pools: [poolArraySize]simpleSharedBufferChildPool{ -+ newBytesPool(level0PoolMaxSize), -+ newBytesPool(level1PoolMaxSize), -+ newBytesPool(level2PoolMaxSize), -+ newBytesPool(level3PoolMaxSize), -+ newBytesPool(level4PoolMaxSize), -+ newBytesPool(0), -+ }, -+ } -+} -+ -+// simpleSharedBufferPool is a simple implementation of SharedBufferPool. -+type simpleSharedBufferPool struct { -+ pools [poolArraySize]simpleSharedBufferChildPool -+} -+ -+func (p *simpleSharedBufferPool) Get(size int) []byte { -+ return p.pools[p.poolIdx(size)].Get(size) -+} -+ -+func (p *simpleSharedBufferPool) Put(bs *[]byte) { -+ p.pools[p.poolIdx(cap(*bs))].Put(bs) -+} -+ -+func (p *simpleSharedBufferPool) poolIdx(size int) int { -+ switch { -+ case size <= level0PoolMaxSize: -+ return level0PoolIdx -+ case size <= level1PoolMaxSize: -+ return level1PoolIdx -+ case size <= level2PoolMaxSize: -+ return level2PoolIdx -+ case size <= level3PoolMaxSize: -+ return level3PoolIdx -+ case size <= level4PoolMaxSize: -+ return level4PoolIdx -+ default: -+ return levelMaxPoolIdx -+ } -+} -+ -+const ( -+ level0PoolMaxSize = 16 // 16 B -+ level1PoolMaxSize = level0PoolMaxSize * 16 // 256 B -+ level2PoolMaxSize = level1PoolMaxSize * 16 // 4 KB -+ level3PoolMaxSize = level2PoolMaxSize * 16 // 64 KB -+ level4PoolMaxSize = level3PoolMaxSize * 16 // 1 MB -+) -+ -+const ( -+ level0PoolIdx = iota -+ level1PoolIdx -+ level2PoolIdx -+ level3PoolIdx -+ level4PoolIdx -+ levelMaxPoolIdx -+ poolArraySize -+) -+ -+type simpleSharedBufferChildPool interface { -+ Get(size int) []byte -+ Put(interface{}) -+} -+ -+type bufferPool struct { -+ sync.Pool -+ -+ defaultSize int -+} -+ -+func (p *bufferPool) Get(size int) []byte { -+ bs := p.Pool.Get().(*[]byte) -+ -+ if cap(*bs) < size { -+ p.Pool.Put(bs) -+ -+ return make([]byte, size) -+ } -+ -+ return (*bs)[:size] -+} -+ -+func newBytesPool(size int) simpleSharedBufferChildPool { -+ return &bufferPool{ -+ Pool: sync.Pool{ -+ New: func() interface{} { -+ bs := make([]byte, size) -+ return &bs -+ }, -+ }, -+ defaultSize: size, -+ } -+} -+ -+// nopBufferPool is a buffer pool just makes new buffer without pooling. -+type nopBufferPool struct { -+} -+ -+func (nopBufferPool) Get(length int) []byte { -+ return make([]byte, length) -+} -+ -+func (nopBufferPool) Put(*[]byte) { -+} -diff --git a/vendor/google.golang.org/grpc/stats/handlers.go b/vendor/google.golang.org/grpc/stats/handlers.go -new file mode 100755 -index 0000000..dc03731 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/stats/handlers.go -@@ -0,0 +1,63 @@ -+/* -+ * -+ * 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 -+ -+import ( -+ "context" -+ "net" -+) -+ -+// ConnTagInfo defines the relevant information needed by connection context tagger. -+type ConnTagInfo struct { -+ // RemoteAddr is the remote address of the corresponding connection. -+ RemoteAddr net.Addr -+ // LocalAddr is the local address of the corresponding connection. -+ LocalAddr net.Addr -+} -+ -+// RPCTagInfo defines the relevant information needed by RPC context tagger. -+type RPCTagInfo struct { -+ // FullMethodName is the RPC method in the format of /package.service/method. -+ FullMethodName string -+ // FailFast indicates if this RPC is failfast. -+ // This field is only valid on client side, it's always false on server side. -+ FailFast bool -+} -+ -+// Handler defines the interface for the related stats handling (e.g., RPCs, connections). -+type Handler interface { -+ // TagRPC can attach some information to the given context. -+ // The context used for the rest lifetime of the RPC will be derived from -+ // the returned context. -+ TagRPC(context.Context, *RPCTagInfo) context.Context -+ // HandleRPC processes the RPC stats. -+ HandleRPC(context.Context, RPCStats) -+ -+ // TagConn can attach some information to the given context. -+ // The returned context will be used for stats handling. -+ // For conn stats handling, the context used in HandleConn for this -+ // connection will be derived from the context returned. -+ // For RPC stats handling, -+ // - On server side, the context used in HandleRPC for all RPCs on this -+ // connection will be derived from the context returned. -+ // - On client side, the context is not derived from the context returned. -+ TagConn(context.Context, *ConnTagInfo) context.Context -+ // HandleConn processes the Conn stats. -+ HandleConn(context.Context, ConnStats) -+} -diff --git a/vendor/google.golang.org/grpc/stats/stats.go b/vendor/google.golang.org/grpc/stats/stats.go -new file mode 100755 -index 0000000..7a552a9 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/stats/stats.go -@@ -0,0 +1,333 @@ -+/* -+ * -+ * 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 is for collecting and reporting various network and RPC stats. -+// This package is for monitoring purpose only. All fields are read-only. -+// All APIs are experimental. -+package stats // import "google.golang.org/grpc/stats" -+ -+import ( -+ "context" -+ "net" -+ "time" -+ -+ "google.golang.org/grpc/metadata" -+) -+ -+// RPCStats contains stats information about RPCs. -+type RPCStats interface { -+ isRPCStats() -+ // IsClient returns true if this RPCStats is from client side. -+ IsClient() bool -+} -+ -+// Begin contains stats when an RPC attempt begins. -+// FailFast is only valid if this Begin is from client side. -+type Begin struct { -+ // Client is true if this Begin is from client side. -+ Client bool -+ // BeginTime is the time when the RPC attempt begins. -+ BeginTime time.Time -+ // FailFast indicates if this RPC is failfast. -+ FailFast bool -+ // IsClientStream indicates whether the RPC is a client streaming RPC. -+ IsClientStream bool -+ // IsServerStream indicates whether the RPC is a server streaming RPC. -+ IsServerStream bool -+ // IsTransparentRetryAttempt indicates whether this attempt was initiated -+ // due to transparently retrying a previous attempt. -+ IsTransparentRetryAttempt bool -+} -+ -+// IsClient indicates if the stats information is from client side. -+func (s *Begin) IsClient() bool { return s.Client } -+ -+func (s *Begin) isRPCStats() {} -+ -+// InPayload contains the information for an incoming payload. -+type InPayload struct { -+ // Client is true if this InPayload is from client side. -+ Client bool -+ // Payload is the payload with original type. -+ Payload interface{} -+ // Data is the serialized message payload. -+ Data []byte -+ -+ // Length is the size of the uncompressed payload data. Does not include any -+ // framing (gRPC or HTTP/2). -+ Length int -+ // CompressedLength is the size of the compressed payload data. Does not -+ // include any framing (gRPC or HTTP/2). Same as Length if compression not -+ // enabled. -+ CompressedLength int -+ // WireLength is the size of the compressed payload data plus gRPC framing. -+ // Does not include HTTP/2 framing. -+ WireLength int -+ -+ // RecvTime is the time when the payload is received. -+ RecvTime time.Time -+} -+ -+// IsClient indicates if the stats information is from client side. -+func (s *InPayload) IsClient() bool { return s.Client } -+ -+func (s *InPayload) isRPCStats() {} -+ -+// InHeader contains stats when a header is received. -+type InHeader struct { -+ // Client is true if this InHeader is from client side. -+ Client bool -+ // WireLength is the wire length of header. -+ WireLength int -+ // Compression is the compression algorithm used for the RPC. -+ Compression string -+ // Header contains the header metadata received. -+ Header metadata.MD -+ -+ // The following fields are valid only if Client is false. -+ // FullMethod is the full RPC method string, i.e., /package.service/method. -+ FullMethod string -+ // RemoteAddr is the remote address of the corresponding connection. -+ RemoteAddr net.Addr -+ // LocalAddr is the local address of the corresponding connection. -+ LocalAddr net.Addr -+} -+ -+// IsClient indicates if the stats information is from client side. -+func (s *InHeader) IsClient() bool { return s.Client } -+ -+func (s *InHeader) isRPCStats() {} -+ -+// InTrailer contains stats when a trailer is received. -+type InTrailer struct { -+ // Client is true if this InTrailer is from client side. -+ Client bool -+ // WireLength is the wire length of trailer. -+ WireLength int -+ // Trailer contains the trailer metadata received from the server. This -+ // field is only valid if this InTrailer is from the client side. -+ Trailer metadata.MD -+} -+ -+// IsClient indicates if the stats information is from client side. -+func (s *InTrailer) IsClient() bool { return s.Client } -+ -+func (s *InTrailer) isRPCStats() {} -+ -+// OutPayload contains the information for an outgoing payload. -+type OutPayload struct { -+ // Client is true if this OutPayload is from client side. -+ Client bool -+ // Payload is the payload with original type. -+ Payload interface{} -+ // Data is the serialized message payload. -+ Data []byte -+ // Length is the size of the uncompressed payload data. Does not include any -+ // framing (gRPC or HTTP/2). -+ Length int -+ // CompressedLength is the size of the compressed payload data. Does not -+ // include any framing (gRPC or HTTP/2). Same as Length if compression not -+ // enabled. -+ CompressedLength int -+ // WireLength is the size of the compressed payload data plus gRPC framing. -+ // Does not include HTTP/2 framing. -+ WireLength int -+ // SentTime is the time when the payload is sent. -+ SentTime time.Time -+} -+ -+// IsClient indicates if this stats information is from client side. -+func (s *OutPayload) IsClient() bool { return s.Client } -+ -+func (s *OutPayload) isRPCStats() {} -+ -+// OutHeader contains stats when a header is sent. -+type OutHeader struct { -+ // Client is true if this OutHeader is from client side. -+ Client bool -+ // Compression is the compression algorithm used for the RPC. -+ Compression string -+ // Header contains the header metadata sent. -+ Header metadata.MD -+ -+ // The following fields are valid only if Client is true. -+ // FullMethod is the full RPC method string, i.e., /package.service/method. -+ FullMethod string -+ // RemoteAddr is the remote address of the corresponding connection. -+ RemoteAddr net.Addr -+ // LocalAddr is the local address of the corresponding connection. -+ LocalAddr net.Addr -+} -+ -+// IsClient indicates if this stats information is from client side. -+func (s *OutHeader) IsClient() bool { return s.Client } -+ -+func (s *OutHeader) isRPCStats() {} -+ -+// OutTrailer contains stats when a trailer is sent. -+type OutTrailer struct { -+ // Client is true if this OutTrailer is from client side. -+ Client bool -+ // WireLength is the wire length of trailer. -+ // -+ // Deprecated: This field is never set. The length is not known when this message is -+ // emitted because the trailer fields are compressed with hpack after that. -+ WireLength int -+ // Trailer contains the trailer metadata sent to the client. This -+ // field is only valid if this OutTrailer is from the server side. -+ Trailer metadata.MD -+} -+ -+// IsClient indicates if this stats information is from client side. -+func (s *OutTrailer) IsClient() bool { return s.Client } -+ -+func (s *OutTrailer) isRPCStats() {} -+ -+// End contains stats when an RPC ends. -+type End struct { -+ // Client is true if this End is from client side. -+ Client bool -+ // BeginTime is the time when the RPC began. -+ BeginTime time.Time -+ // EndTime is the time when the RPC ends. -+ EndTime time.Time -+ // Trailer contains the trailer metadata received from the server. This -+ // field is only valid if this End is from the client side. -+ // Deprecated: use Trailer in InTrailer instead. -+ Trailer metadata.MD -+ // Error is the error the RPC ended with. It is an error generated from -+ // status.Status and can be converted back to status.Status using -+ // status.FromError if non-nil. -+ Error error -+} -+ -+// IsClient indicates if this is from client side. -+func (s *End) IsClient() bool { return s.Client } -+ -+func (s *End) isRPCStats() {} -+ -+// ConnStats contains stats information about connections. -+type ConnStats interface { -+ isConnStats() -+ // IsClient returns true if this ConnStats is from client side. -+ IsClient() bool -+} -+ -+// ConnBegin contains the stats of a connection when it is established. -+type ConnBegin struct { -+ // Client is true if this ConnBegin is from client side. -+ Client bool -+} -+ -+// IsClient indicates if this is from client side. -+func (s *ConnBegin) IsClient() bool { return s.Client } -+ -+func (s *ConnBegin) isConnStats() {} -+ -+// ConnEnd contains the stats of a connection when it ends. -+type ConnEnd struct { -+ // Client is true if this ConnEnd is from client side. -+ Client bool -+} -+ -+// IsClient indicates if this is from client side. -+func (s *ConnEnd) IsClient() bool { return s.Client } -+ -+func (s *ConnEnd) isConnStats() {} -+ -+type incomingTagsKey struct{} -+type outgoingTagsKey struct{} -+ -+// SetTags attaches stats tagging data to the context, which will be sent in -+// the outgoing RPC with the header grpc-tags-bin. Subsequent calls to -+// SetTags will overwrite the values from earlier calls. -+// -+// NOTE: this is provided only for backward compatibility with existing clients -+// and will likely be removed in an upcoming release. New uses should transmit -+// this type of data using metadata with a different, non-reserved (i.e. does -+// not begin with "grpc-") header name. -+func SetTags(ctx context.Context, b []byte) context.Context { -+ return context.WithValue(ctx, outgoingTagsKey{}, b) -+} -+ -+// Tags returns the tags from the context for the inbound RPC. -+// -+// NOTE: this is provided only for backward compatibility with existing clients -+// and will likely be removed in an upcoming release. New uses should transmit -+// this type of data using metadata with a different, non-reserved (i.e. does -+// not begin with "grpc-") header name. -+func Tags(ctx context.Context) []byte { -+ b, _ := ctx.Value(incomingTagsKey{}).([]byte) -+ return b -+} -+ -+// SetIncomingTags attaches stats tagging data to the context, to be read by -+// the application (not sent in outgoing RPCs). -+// -+// This is intended for gRPC-internal use ONLY. -+func SetIncomingTags(ctx context.Context, b []byte) context.Context { -+ return context.WithValue(ctx, incomingTagsKey{}, b) -+} -+ -+// OutgoingTags returns the tags from the context for the outbound RPC. -+// -+// This is intended for gRPC-internal use ONLY. -+func OutgoingTags(ctx context.Context) []byte { -+ b, _ := ctx.Value(outgoingTagsKey{}).([]byte) -+ return b -+} -+ -+type incomingTraceKey struct{} -+type outgoingTraceKey struct{} -+ -+// SetTrace attaches stats tagging data to the context, which will be sent in -+// the outgoing RPC with the header grpc-trace-bin. Subsequent calls to -+// SetTrace will overwrite the values from earlier calls. -+// -+// NOTE: this is provided only for backward compatibility with existing clients -+// and will likely be removed in an upcoming release. New uses should transmit -+// this type of data using metadata with a different, non-reserved (i.e. does -+// not begin with "grpc-") header name. -+func SetTrace(ctx context.Context, b []byte) context.Context { -+ return context.WithValue(ctx, outgoingTraceKey{}, b) -+} -+ -+// Trace returns the trace from the context for the inbound RPC. -+// -+// NOTE: this is provided only for backward compatibility with existing clients -+// and will likely be removed in an upcoming release. New uses should transmit -+// this type of data using metadata with a different, non-reserved (i.e. does -+// not begin with "grpc-") header name. -+func Trace(ctx context.Context) []byte { -+ b, _ := ctx.Value(incomingTraceKey{}).([]byte) -+ return b -+} -+ -+// SetIncomingTrace attaches stats tagging data to the context, to be read by -+// the application (not sent in outgoing RPCs). It is intended for -+// gRPC-internal use. -+func SetIncomingTrace(ctx context.Context, b []byte) context.Context { -+ return context.WithValue(ctx, incomingTraceKey{}, b) -+} -+ -+// OutgoingTrace returns the trace from the context for the outbound RPC. It is -+// intended for gRPC-internal use. -+func OutgoingTrace(ctx context.Context) []byte { -+ b, _ := ctx.Value(outgoingTraceKey{}).([]byte) -+ return b -+} -diff --git a/vendor/google.golang.org/grpc/status/status.go b/vendor/google.golang.org/grpc/status/status.go -new file mode 100755 -index 0000000..bcf2e4d ---- /dev/null -+++ b/vendor/google.golang.org/grpc/status/status.go -@@ -0,0 +1,160 @@ -+/* -+ * -+ * 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 implements errors returned by gRPC. These errors are -+// serialized and transmitted on the wire between server and client, and allow -+// for additional data to be transmitted via the Details field in the status -+// proto. gRPC service handlers should return an error created by this -+// package, and gRPC clients should expect a corresponding error to be -+// returned from the RPC call. -+// -+// This package upholds the invariants that a non-nil error may not -+// contain an OK code, and an OK code must result in a nil error. -+package status -+ -+import ( -+ "context" -+ "errors" -+ "fmt" -+ -+ spb "google.golang.org/genproto/googleapis/rpc/status" -+ -+ "google.golang.org/grpc/codes" -+ "google.golang.org/grpc/internal/status" -+) -+ -+// Status references google.golang.org/grpc/internal/status. It represents an -+// RPC status code, message, and details. It is immutable and should be -+// created with New, Newf, or FromProto. -+// https://godoc.org/google.golang.org/grpc/internal/status -+type Status = status.Status -+ -+// New returns a Status representing c and msg. -+func New(c codes.Code, msg string) *Status { -+ return status.New(c, msg) -+} -+ -+// Newf returns New(c, fmt.Sprintf(format, a...)). -+func Newf(c codes.Code, format string, a ...interface{}) *Status { -+ return New(c, fmt.Sprintf(format, a...)) -+} -+ -+// Error returns an error representing c and msg. If c is OK, returns nil. -+func Error(c codes.Code, msg string) error { -+ return New(c, msg).Err() -+} -+ -+// Errorf returns Error(c, fmt.Sprintf(format, a...)). -+func Errorf(c codes.Code, format string, a ...interface{}) error { -+ return Error(c, fmt.Sprintf(format, a...)) -+} -+ -+// ErrorProto returns an error representing s. If s.Code is OK, returns nil. -+func ErrorProto(s *spb.Status) error { -+ return FromProto(s).Err() -+} -+ -+// FromProto returns a Status representing s. -+func FromProto(s *spb.Status) *Status { -+ return status.FromProto(s) -+} -+ -+// FromError returns a Status representation of err. -+// -+// - If err was produced by this package or implements the method `GRPCStatus() -+// *Status` and `GRPCStatus()` does not return nil, or if err wraps a type -+// satisfying this, the Status from `GRPCStatus()` is returned. For wrapped -+// errors, the message returned contains the entire err.Error() text and not -+// just the wrapped status. In that case, ok is true. -+// -+// - If err is nil, a Status is returned with codes.OK and no message, and ok -+// is true. -+// -+// - If err implements the method `GRPCStatus() *Status` and `GRPCStatus()` -+// returns nil (which maps to Codes.OK), or if err wraps a type -+// satisfying this, a Status is returned with codes.Unknown and err's -+// Error() message, and ok is false. -+// -+// - Otherwise, err is an error not compatible with this package. In this -+// case, a Status is returned with codes.Unknown and err's Error() message, -+// and ok is false. -+func FromError(err error) (s *Status, ok bool) { -+ if err == nil { -+ return nil, true -+ } -+ type grpcstatus interface{ GRPCStatus() *Status } -+ if gs, ok := err.(grpcstatus); ok { -+ if gs.GRPCStatus() == nil { -+ // Error has status nil, which maps to codes.OK. There -+ // is no sensible behavior for this, so we turn it into -+ // an error with codes.Unknown and discard the existing -+ // status. -+ return New(codes.Unknown, err.Error()), false -+ } -+ return gs.GRPCStatus(), true -+ } -+ var gs grpcstatus -+ if errors.As(err, &gs) { -+ if gs.GRPCStatus() == nil { -+ // Error wraps an error that has status nil, which maps -+ // to codes.OK. There is no sensible behavior for this, -+ // so we turn it into an error with codes.Unknown and -+ // discard the existing status. -+ return New(codes.Unknown, err.Error()), false -+ } -+ p := gs.GRPCStatus().Proto() -+ p.Message = err.Error() -+ return status.FromProto(p), true -+ } -+ return New(codes.Unknown, err.Error()), false -+} -+ -+// Convert is a convenience function which removes the need to handle the -+// boolean return value from FromError. -+func Convert(err error) *Status { -+ s, _ := FromError(err) -+ return s -+} -+ -+// Code returns the Code of the error if it is a Status error or if it wraps a -+// Status error. If that is not the case, it returns codes.OK if err is nil, or -+// codes.Unknown otherwise. -+func Code(err error) codes.Code { -+ // Don't use FromError to avoid allocation of OK status. -+ if err == nil { -+ return codes.OK -+ } -+ -+ return Convert(err).Code() -+} -+ -+// FromContextError converts a context error or wrapped context error into a -+// Status. It returns a Status with codes.OK if err is nil, or a Status with -+// codes.Unknown if err is non-nil and not a context error. -+func FromContextError(err error) *Status { -+ if err == nil { -+ return nil -+ } -+ if errors.Is(err, context.DeadlineExceeded) { -+ return New(codes.DeadlineExceeded, err.Error()) -+ } -+ if errors.Is(err, context.Canceled) { -+ return New(codes.Canceled, err.Error()) -+ } -+ return New(codes.Unknown, err.Error()) -+} -diff --git a/vendor/google.golang.org/grpc/stream.go b/vendor/google.golang.org/grpc/stream.go -new file mode 100755 -index 0000000..de32a75 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/stream.go -@@ -0,0 +1,1776 @@ -+/* -+ * -+ * 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 ( -+ "context" -+ "errors" -+ "io" -+ "math" -+ "strconv" -+ "sync" -+ "time" -+ -+ "golang.org/x/net/trace" -+ "google.golang.org/grpc/balancer" -+ "google.golang.org/grpc/codes" -+ "google.golang.org/grpc/encoding" -+ "google.golang.org/grpc/internal/balancerload" -+ "google.golang.org/grpc/internal/binarylog" -+ "google.golang.org/grpc/internal/channelz" -+ "google.golang.org/grpc/internal/grpcrand" -+ "google.golang.org/grpc/internal/grpcutil" -+ imetadata "google.golang.org/grpc/internal/metadata" -+ iresolver "google.golang.org/grpc/internal/resolver" -+ "google.golang.org/grpc/internal/serviceconfig" -+ istatus "google.golang.org/grpc/internal/status" -+ "google.golang.org/grpc/internal/transport" -+ "google.golang.org/grpc/metadata" -+ "google.golang.org/grpc/peer" -+ "google.golang.org/grpc/stats" -+ "google.golang.org/grpc/status" -+) -+ -+// StreamHandler defines the handler called by gRPC server to complete the -+// execution of a streaming RPC. -+// -+// If a StreamHandler returns an error, it should either be produced by the -+// status package, or be one of the context errors. Otherwise, gRPC will use -+// codes.Unknown as the status code and err.Error() as the status message of the -+// RPC. -+type StreamHandler func(srv interface{}, stream ServerStream) error -+ -+// StreamDesc represents a streaming RPC service's method specification. Used -+// on the server when registering services and on the client when initiating -+// new streams. -+type StreamDesc struct { -+ // StreamName and Handler are only used when registering handlers on a -+ // server. -+ StreamName string // the name of the method excluding the service -+ Handler StreamHandler // the handler called for the method -+ -+ // ServerStreams and ClientStreams are used for registering handlers on a -+ // server as well as defining RPC behavior when passed to NewClientStream -+ // and ClientConn.NewStream. At least one must be true. -+ ServerStreams bool // indicates the server can perform streaming sends -+ ClientStreams bool // indicates the client can perform streaming sends -+} -+ -+// Stream defines the common interface a client or server stream has to satisfy. -+// -+// Deprecated: See ClientStream and ServerStream documentation instead. -+type Stream interface { -+ // Deprecated: See ClientStream and ServerStream documentation instead. -+ Context() context.Context -+ // Deprecated: See ClientStream and ServerStream documentation instead. -+ SendMsg(m interface{}) error -+ // Deprecated: See ClientStream and ServerStream documentation instead. -+ RecvMsg(m interface{}) error -+} -+ -+// ClientStream defines the client-side behavior of a streaming RPC. -+// -+// All errors returned from ClientStream methods are compatible with the -+// status package. -+type ClientStream interface { -+ // Header returns the header metadata received from the server if there -+ // is any. It blocks if the metadata is not ready to read. -+ Header() (metadata.MD, error) -+ // Trailer returns the trailer metadata from the server, if there is any. -+ // It must only be called after stream.CloseAndRecv has returned, or -+ // stream.Recv has returned a non-nil error (including io.EOF). -+ Trailer() metadata.MD -+ // CloseSend closes the send direction of the stream. It closes the stream -+ // when non-nil error is met. It is also not safe to call CloseSend -+ // concurrently with SendMsg. -+ CloseSend() error -+ // Context returns the context for this stream. -+ // -+ // It should not be called until after Header or RecvMsg has returned. Once -+ // called, subsequent client-side retries are disabled. -+ Context() context.Context -+ // SendMsg is generally called by generated code. On error, SendMsg aborts -+ // the stream. If the error was generated by the client, the status is -+ // returned directly; otherwise, io.EOF is returned and the status of -+ // the stream may be discovered using RecvMsg. -+ // -+ // SendMsg blocks until: -+ // - There is sufficient flow control to schedule m with the transport, or -+ // - The stream is done, or -+ // - The stream breaks. -+ // -+ // SendMsg does not wait until the message is received by the server. An -+ // untimely stream closure may result in lost messages. To ensure delivery, -+ // users should ensure the RPC completed successfully using RecvMsg. -+ // -+ // It is safe to have a goroutine calling SendMsg and another goroutine -+ // calling RecvMsg on the same stream at the same time, but it is not safe -+ // to call SendMsg on the same stream in different goroutines. It is also -+ // not safe to call CloseSend concurrently with SendMsg. -+ // -+ // It is not safe to modify the message after calling SendMsg. Tracing -+ // libraries and stats handlers may use the message lazily. -+ SendMsg(m interface{}) error -+ // RecvMsg blocks until it receives a message into m or the stream is -+ // done. It returns io.EOF when the stream completes successfully. On -+ // any other error, the stream is aborted and the error contains the RPC -+ // status. -+ // -+ // It is safe to have a goroutine calling SendMsg and another goroutine -+ // calling RecvMsg on the same stream at the same time, but it is not -+ // safe to call RecvMsg on the same stream in different goroutines. -+ RecvMsg(m interface{}) error -+} -+ -+// NewStream creates a new Stream for the client side. This is typically -+// called by generated code. ctx is used for the lifetime of the stream. -+// -+// To ensure resources are not leaked due to the stream returned, one of the following -+// actions must be performed: -+// -+// 1. Call Close on the ClientConn. -+// 2. Cancel the context provided. -+// 3. Call RecvMsg until a non-nil error is returned. A protobuf-generated -+// client-streaming RPC, for instance, might use the helper function -+// CloseAndRecv (note that CloseSend does not Recv, therefore is not -+// guaranteed to release all resources). -+// 4. Receive a non-nil, non-io.EOF error from Header or SendMsg. -+// -+// If none of the above happen, a goroutine and a context will be leaked, and grpc -+// will not call the optionally-configured stats handler with a stats.End message. -+func (cc *ClientConn) NewStream(ctx context.Context, desc *StreamDesc, method string, opts ...CallOption) (ClientStream, error) { -+ if err := cc.idlenessMgr.onCallBegin(); err != nil { -+ return nil, err -+ } -+ defer cc.idlenessMgr.onCallEnd() -+ -+ // allow interceptor to see all applicable call options, which means those -+ // configured as defaults from dial option as well as per-call options -+ opts = combine(cc.dopts.callOptions, opts) -+ -+ if cc.dopts.streamInt != nil { -+ return cc.dopts.streamInt(ctx, desc, cc, method, newClientStream, opts...) -+ } -+ return newClientStream(ctx, desc, cc, method, opts...) -+} -+ -+// NewClientStream is a wrapper for ClientConn.NewStream. -+func NewClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, method string, opts ...CallOption) (ClientStream, error) { -+ return cc.NewStream(ctx, desc, method, opts...) -+} -+ -+func newClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, method string, opts ...CallOption) (_ ClientStream, err error) { -+ if md, added, ok := metadata.FromOutgoingContextRaw(ctx); ok { -+ // validate md -+ if err := imetadata.Validate(md); err != nil { -+ return nil, status.Error(codes.Internal, err.Error()) -+ } -+ // validate added -+ for _, kvs := range added { -+ for i := 0; i < len(kvs); i += 2 { -+ if err := imetadata.ValidatePair(kvs[i], kvs[i+1]); err != nil { -+ return nil, status.Error(codes.Internal, err.Error()) -+ } -+ } -+ } -+ } -+ if channelz.IsOn() { -+ cc.incrCallsStarted() -+ defer func() { -+ if err != nil { -+ cc.incrCallsFailed() -+ } -+ }() -+ } -+ // Provide an opportunity for the first RPC to see the first service config -+ // provided by the resolver. -+ if err := cc.waitForResolvedAddrs(ctx); err != nil { -+ return nil, err -+ } -+ -+ var mc serviceconfig.MethodConfig -+ var onCommit func() -+ var newStream = func(ctx context.Context, done func()) (iresolver.ClientStream, error) { -+ return newClientStreamWithParams(ctx, desc, cc, method, mc, onCommit, done, opts...) -+ } -+ -+ rpcInfo := iresolver.RPCInfo{Context: ctx, Method: method} -+ rpcConfig, err := cc.safeConfigSelector.SelectConfig(rpcInfo) -+ if err != nil { -+ if st, ok := status.FromError(err); ok { -+ // Restrict the code to the list allowed by gRFC A54. -+ if istatus.IsRestrictedControlPlaneCode(st) { -+ err = status.Errorf(codes.Internal, "config selector returned illegal status: %v", err) -+ } -+ return nil, err -+ } -+ return nil, toRPCErr(err) -+ } -+ -+ if rpcConfig != nil { -+ if rpcConfig.Context != nil { -+ ctx = rpcConfig.Context -+ } -+ mc = rpcConfig.MethodConfig -+ onCommit = rpcConfig.OnCommitted -+ if rpcConfig.Interceptor != nil { -+ rpcInfo.Context = nil -+ ns := newStream -+ newStream = func(ctx context.Context, done func()) (iresolver.ClientStream, error) { -+ cs, err := rpcConfig.Interceptor.NewStream(ctx, rpcInfo, done, ns) -+ if err != nil { -+ return nil, toRPCErr(err) -+ } -+ return cs, nil -+ } -+ } -+ } -+ -+ return newStream(ctx, func() {}) -+} -+ -+func newClientStreamWithParams(ctx context.Context, desc *StreamDesc, cc *ClientConn, method string, mc serviceconfig.MethodConfig, onCommit, doneFunc func(), opts ...CallOption) (_ iresolver.ClientStream, err error) { -+ c := defaultCallInfo() -+ if mc.WaitForReady != nil { -+ c.failFast = !*mc.WaitForReady -+ } -+ -+ // Possible context leak: -+ // The cancel function for the child context we create will only be called -+ // when RecvMsg returns a non-nil error, if the ClientConn is closed, or if -+ // an error is generated by SendMsg. -+ // https://github.com/grpc/grpc-go/issues/1818. -+ var cancel context.CancelFunc -+ if mc.Timeout != nil && *mc.Timeout >= 0 { -+ ctx, cancel = context.WithTimeout(ctx, *mc.Timeout) -+ } else { -+ ctx, cancel = context.WithCancel(ctx) -+ } -+ defer func() { -+ if err != nil { -+ cancel() -+ } -+ }() -+ -+ for _, o := range opts { -+ if err := o.before(c); err != nil { -+ return nil, toRPCErr(err) -+ } -+ } -+ c.maxSendMessageSize = getMaxSize(mc.MaxReqSize, c.maxSendMessageSize, defaultClientMaxSendMessageSize) -+ c.maxReceiveMessageSize = getMaxSize(mc.MaxRespSize, c.maxReceiveMessageSize, defaultClientMaxReceiveMessageSize) -+ if err := setCallInfoCodec(c); err != nil { -+ return nil, err -+ } -+ -+ callHdr := &transport.CallHdr{ -+ Host: cc.authority, -+ Method: method, -+ ContentSubtype: c.contentSubtype, -+ DoneFunc: doneFunc, -+ } -+ -+ // Set our outgoing compression according to the UseCompressor CallOption, if -+ // set. In that case, also find the compressor from the encoding package. -+ // Otherwise, use the compressor configured by the WithCompressor DialOption, -+ // if set. -+ var cp Compressor -+ var comp encoding.Compressor -+ if ct := c.compressorType; ct != "" { -+ callHdr.SendCompress = ct -+ if ct != encoding.Identity { -+ comp = encoding.GetCompressor(ct) -+ if comp == nil { -+ return nil, status.Errorf(codes.Internal, "grpc: Compressor is not installed for requested grpc-encoding %q", ct) -+ } -+ } -+ } else if cc.dopts.cp != nil { -+ callHdr.SendCompress = cc.dopts.cp.Type() -+ cp = cc.dopts.cp -+ } -+ if c.creds != nil { -+ callHdr.Creds = c.creds -+ } -+ -+ cs := &clientStream{ -+ callHdr: callHdr, -+ ctx: ctx, -+ methodConfig: &mc, -+ opts: opts, -+ callInfo: c, -+ cc: cc, -+ desc: desc, -+ codec: c.codec, -+ cp: cp, -+ comp: comp, -+ cancel: cancel, -+ firstAttempt: true, -+ onCommit: onCommit, -+ } -+ if !cc.dopts.disableRetry { -+ cs.retryThrottler = cc.retryThrottler.Load().(*retryThrottler) -+ } -+ if ml := binarylog.GetMethodLogger(method); ml != nil { -+ cs.binlogs = append(cs.binlogs, ml) -+ } -+ if cc.dopts.binaryLogger != nil { -+ if ml := cc.dopts.binaryLogger.GetMethodLogger(method); ml != nil { -+ cs.binlogs = append(cs.binlogs, ml) -+ } -+ } -+ -+ // Pick the transport to use and create a new stream on the transport. -+ // Assign cs.attempt upon success. -+ op := func(a *csAttempt) error { -+ if err := a.getTransport(); err != nil { -+ return err -+ } -+ if err := a.newStream(); err != nil { -+ return err -+ } -+ // Because this operation is always called either here (while creating -+ // the clientStream) or by the retry code while locked when replaying -+ // the operation, it is safe to access cs.attempt directly. -+ cs.attempt = a -+ return nil -+ } -+ if err := cs.withRetry(op, func() { cs.bufferForRetryLocked(0, op) }); err != nil { -+ return nil, err -+ } -+ -+ if len(cs.binlogs) != 0 { -+ md, _ := metadata.FromOutgoingContext(ctx) -+ logEntry := &binarylog.ClientHeader{ -+ OnClientSide: true, -+ Header: md, -+ MethodName: method, -+ Authority: cs.cc.authority, -+ } -+ if deadline, ok := ctx.Deadline(); ok { -+ logEntry.Timeout = time.Until(deadline) -+ if logEntry.Timeout < 0 { -+ logEntry.Timeout = 0 -+ } -+ } -+ for _, binlog := range cs.binlogs { -+ binlog.Log(cs.ctx, logEntry) -+ } -+ } -+ -+ if desc != unaryStreamDesc { -+ // Listen on cc and stream contexts to cleanup when the user closes the -+ // ClientConn or cancels the stream context. In all other cases, an error -+ // should already be injected into the recv buffer by the transport, which -+ // the client will eventually receive, and then we will cancel the stream's -+ // context in clientStream.finish. -+ go func() { -+ select { -+ case <-cc.ctx.Done(): -+ cs.finish(ErrClientConnClosing) -+ case <-ctx.Done(): -+ cs.finish(toRPCErr(ctx.Err())) -+ } -+ }() -+ } -+ return cs, nil -+} -+ -+// newAttemptLocked creates a new csAttempt without a transport or stream. -+func (cs *clientStream) newAttemptLocked(isTransparent bool) (*csAttempt, error) { -+ if err := cs.ctx.Err(); err != nil { -+ return nil, toRPCErr(err) -+ } -+ if err := cs.cc.ctx.Err(); err != nil { -+ return nil, ErrClientConnClosing -+ } -+ -+ ctx := newContextWithRPCInfo(cs.ctx, cs.callInfo.failFast, cs.callInfo.codec, cs.cp, cs.comp) -+ method := cs.callHdr.Method -+ var beginTime time.Time -+ shs := cs.cc.dopts.copts.StatsHandlers -+ for _, sh := range shs { -+ ctx = sh.TagRPC(ctx, &stats.RPCTagInfo{FullMethodName: method, FailFast: cs.callInfo.failFast}) -+ beginTime = time.Now() -+ begin := &stats.Begin{ -+ Client: true, -+ BeginTime: beginTime, -+ FailFast: cs.callInfo.failFast, -+ IsClientStream: cs.desc.ClientStreams, -+ IsServerStream: cs.desc.ServerStreams, -+ IsTransparentRetryAttempt: isTransparent, -+ } -+ sh.HandleRPC(ctx, begin) -+ } -+ -+ var trInfo *traceInfo -+ if EnableTracing { -+ trInfo = &traceInfo{ -+ tr: trace.New("grpc.Sent."+methodFamily(method), method), -+ firstLine: firstLine{ -+ client: true, -+ }, -+ } -+ if deadline, ok := ctx.Deadline(); ok { -+ trInfo.firstLine.deadline = time.Until(deadline) -+ } -+ trInfo.tr.LazyLog(&trInfo.firstLine, false) -+ ctx = trace.NewContext(ctx, trInfo.tr) -+ } -+ -+ if cs.cc.parsedTarget.URL.Scheme == "xds" { -+ // Add extra metadata (metadata that will be added by transport) to context -+ // so the balancer can see them. -+ ctx = grpcutil.WithExtraMetadata(ctx, metadata.Pairs( -+ "content-type", grpcutil.ContentType(cs.callHdr.ContentSubtype), -+ )) -+ } -+ -+ return &csAttempt{ -+ ctx: ctx, -+ beginTime: beginTime, -+ cs: cs, -+ dc: cs.cc.dopts.dc, -+ statsHandlers: shs, -+ trInfo: trInfo, -+ }, nil -+} -+ -+func (a *csAttempt) getTransport() error { -+ cs := a.cs -+ -+ var err error -+ a.t, a.pickResult, err = cs.cc.getTransport(a.ctx, cs.callInfo.failFast, cs.callHdr.Method) -+ if err != nil { -+ if de, ok := err.(dropError); ok { -+ err = de.error -+ a.drop = true -+ } -+ return err -+ } -+ if a.trInfo != nil { -+ a.trInfo.firstLine.SetRemoteAddr(a.t.RemoteAddr()) -+ } -+ return nil -+} -+ -+func (a *csAttempt) newStream() error { -+ cs := a.cs -+ cs.callHdr.PreviousAttempts = cs.numRetries -+ -+ // Merge metadata stored in PickResult, if any, with existing call metadata. -+ // It is safe to overwrite the csAttempt's context here, since all state -+ // maintained in it are local to the attempt. When the attempt has to be -+ // retried, a new instance of csAttempt will be created. -+ if a.pickResult.Metadata != nil { -+ // We currently do not have a function it the metadata package which -+ // merges given metadata with existing metadata in a context. Existing -+ // function `AppendToOutgoingContext()` takes a variadic argument of key -+ // value pairs. -+ // -+ // TODO: Make it possible to retrieve key value pairs from metadata.MD -+ // in a form passable to AppendToOutgoingContext(), or create a version -+ // of AppendToOutgoingContext() that accepts a metadata.MD. -+ md, _ := metadata.FromOutgoingContext(a.ctx) -+ md = metadata.Join(md, a.pickResult.Metadata) -+ a.ctx = metadata.NewOutgoingContext(a.ctx, md) -+ } -+ -+ s, err := a.t.NewStream(a.ctx, cs.callHdr) -+ if err != nil { -+ nse, ok := err.(*transport.NewStreamError) -+ if !ok { -+ // Unexpected. -+ return err -+ } -+ -+ if nse.AllowTransparentRetry { -+ a.allowTransparentRetry = true -+ } -+ -+ // Unwrap and convert error. -+ return toRPCErr(nse.Err) -+ } -+ a.s = s -+ a.p = &parser{r: s, recvBufferPool: a.cs.cc.dopts.recvBufferPool} -+ return nil -+} -+ -+// clientStream implements a client side Stream. -+type clientStream struct { -+ callHdr *transport.CallHdr -+ opts []CallOption -+ callInfo *callInfo -+ cc *ClientConn -+ desc *StreamDesc -+ -+ codec baseCodec -+ cp Compressor -+ comp encoding.Compressor -+ -+ cancel context.CancelFunc // cancels all attempts -+ -+ sentLast bool // sent an end stream -+ -+ methodConfig *MethodConfig -+ -+ ctx context.Context // the application's context, wrapped by stats/tracing -+ -+ retryThrottler *retryThrottler // The throttler active when the RPC began. -+ -+ binlogs []binarylog.MethodLogger -+ // serverHeaderBinlogged is a boolean for whether server header has been -+ // logged. Server header will be logged when the first time one of those -+ // happens: stream.Header(), stream.Recv(). -+ // -+ // It's only read and used by Recv() and Header(), so it doesn't need to be -+ // synchronized. -+ serverHeaderBinlogged bool -+ -+ mu sync.Mutex -+ firstAttempt bool // if true, transparent retry is valid -+ numRetries int // exclusive of transparent retry attempt(s) -+ numRetriesSincePushback int // retries since pushback; to reset backoff -+ finished bool // TODO: replace with atomic cmpxchg or sync.Once? -+ // attempt is the active client stream attempt. -+ // The only place where it is written is the newAttemptLocked method and this method never writes nil. -+ // So, attempt can be nil only inside newClientStream function when clientStream is first created. -+ // One of the first things done after clientStream's creation, is to call newAttemptLocked which either -+ // assigns a non nil value to the attempt or returns an error. If an error is returned from newAttemptLocked, -+ // then newClientStream calls finish on the clientStream and returns. So, finish method is the only -+ // place where we need to check if the attempt is nil. -+ attempt *csAttempt -+ // TODO(hedging): hedging will have multiple attempts simultaneously. -+ committed bool // active attempt committed for retry? -+ onCommit func() -+ buffer []func(a *csAttempt) error // operations to replay on retry -+ bufferSize int // current size of buffer -+} -+ -+// csAttempt implements a single transport stream attempt within a -+// clientStream. -+type csAttempt struct { -+ ctx context.Context -+ cs *clientStream -+ t transport.ClientTransport -+ s *transport.Stream -+ p *parser -+ pickResult balancer.PickResult -+ -+ finished bool -+ dc Decompressor -+ decomp encoding.Compressor -+ decompSet bool -+ -+ mu sync.Mutex // guards trInfo.tr -+ // trInfo may be nil (if EnableTracing is false). -+ // trInfo.tr is set when created (if EnableTracing is true), -+ // and cleared when the finish method is called. -+ trInfo *traceInfo -+ -+ statsHandlers []stats.Handler -+ beginTime time.Time -+ -+ // set for newStream errors that may be transparently retried -+ allowTransparentRetry bool -+ // set for pick errors that are returned as a status -+ drop bool -+} -+ -+func (cs *clientStream) commitAttemptLocked() { -+ if !cs.committed && cs.onCommit != nil { -+ cs.onCommit() -+ } -+ cs.committed = true -+ cs.buffer = nil -+} -+ -+func (cs *clientStream) commitAttempt() { -+ cs.mu.Lock() -+ cs.commitAttemptLocked() -+ cs.mu.Unlock() -+} -+ -+// shouldRetry returns nil if the RPC should be retried; otherwise it returns -+// the error that should be returned by the operation. If the RPC should be -+// retried, the bool indicates whether it is being retried transparently. -+func (a *csAttempt) shouldRetry(err error) (bool, error) { -+ cs := a.cs -+ -+ if cs.finished || cs.committed || a.drop { -+ // RPC is finished or committed or was dropped by the picker; cannot retry. -+ return false, err -+ } -+ if a.s == nil && a.allowTransparentRetry { -+ return true, nil -+ } -+ // Wait for the trailers. -+ unprocessed := false -+ if a.s != nil { -+ <-a.s.Done() -+ unprocessed = a.s.Unprocessed() -+ } -+ if cs.firstAttempt && unprocessed { -+ // First attempt, stream unprocessed: transparently retry. -+ return true, nil -+ } -+ if cs.cc.dopts.disableRetry { -+ return false, err -+ } -+ -+ pushback := 0 -+ hasPushback := false -+ if a.s != nil { -+ if !a.s.TrailersOnly() { -+ return false, err -+ } -+ -+ // TODO(retry): Move down if the spec changes to not check server pushback -+ // before considering this a failure for throttling. -+ sps := a.s.Trailer()["grpc-retry-pushback-ms"] -+ if len(sps) == 1 { -+ var e error -+ if pushback, e = strconv.Atoi(sps[0]); e != nil || pushback < 0 { -+ channelz.Infof(logger, cs.cc.channelzID, "Server retry pushback specified to abort (%q).", sps[0]) -+ cs.retryThrottler.throttle() // This counts as a failure for throttling. -+ return false, err -+ } -+ hasPushback = true -+ } else if len(sps) > 1 { -+ channelz.Warningf(logger, cs.cc.channelzID, "Server retry pushback specified multiple values (%q); not retrying.", sps) -+ cs.retryThrottler.throttle() // This counts as a failure for throttling. -+ return false, err -+ } -+ } -+ -+ var code codes.Code -+ if a.s != nil { -+ code = a.s.Status().Code() -+ } else { -+ code = status.Code(err) -+ } -+ -+ rp := cs.methodConfig.RetryPolicy -+ if rp == nil || !rp.RetryableStatusCodes[code] { -+ return false, err -+ } -+ -+ // Note: the ordering here is important; we count this as a failure -+ // only if the code matched a retryable code. -+ if cs.retryThrottler.throttle() { -+ return false, err -+ } -+ if cs.numRetries+1 >= rp.MaxAttempts { -+ return false, err -+ } -+ -+ var dur time.Duration -+ if hasPushback { -+ dur = time.Millisecond * time.Duration(pushback) -+ cs.numRetriesSincePushback = 0 -+ } else { -+ fact := math.Pow(rp.BackoffMultiplier, float64(cs.numRetriesSincePushback)) -+ cur := float64(rp.InitialBackoff) * fact -+ if max := float64(rp.MaxBackoff); cur > max { -+ cur = max -+ } -+ dur = time.Duration(grpcrand.Int63n(int64(cur))) -+ cs.numRetriesSincePushback++ -+ } -+ -+ // TODO(dfawley): we could eagerly fail here if dur puts us past the -+ // deadline, but unsure if it is worth doing. -+ t := time.NewTimer(dur) -+ select { -+ case <-t.C: -+ cs.numRetries++ -+ return false, nil -+ case <-cs.ctx.Done(): -+ t.Stop() -+ return false, status.FromContextError(cs.ctx.Err()).Err() -+ } -+} -+ -+// Returns nil if a retry was performed and succeeded; error otherwise. -+func (cs *clientStream) retryLocked(attempt *csAttempt, lastErr error) error { -+ for { -+ attempt.finish(toRPCErr(lastErr)) -+ isTransparent, err := attempt.shouldRetry(lastErr) -+ if err != nil { -+ cs.commitAttemptLocked() -+ return err -+ } -+ cs.firstAttempt = false -+ attempt, err = cs.newAttemptLocked(isTransparent) -+ if err != nil { -+ // Only returns error if the clientconn is closed or the context of -+ // the stream is canceled. -+ return err -+ } -+ // Note that the first op in the replay buffer always sets cs.attempt -+ // if it is able to pick a transport and create a stream. -+ if lastErr = cs.replayBufferLocked(attempt); lastErr == nil { -+ return nil -+ } -+ } -+} -+ -+func (cs *clientStream) Context() context.Context { -+ cs.commitAttempt() -+ // No need to lock before using attempt, since we know it is committed and -+ // cannot change. -+ if cs.attempt.s != nil { -+ return cs.attempt.s.Context() -+ } -+ return cs.ctx -+} -+ -+func (cs *clientStream) withRetry(op func(a *csAttempt) error, onSuccess func()) error { -+ cs.mu.Lock() -+ for { -+ if cs.committed { -+ cs.mu.Unlock() -+ // toRPCErr is used in case the error from the attempt comes from -+ // NewClientStream, which intentionally doesn't return a status -+ // error to allow for further inspection; all other errors should -+ // already be status errors. -+ return toRPCErr(op(cs.attempt)) -+ } -+ if len(cs.buffer) == 0 { -+ // For the first op, which controls creation of the stream and -+ // assigns cs.attempt, we need to create a new attempt inline -+ // before executing the first op. On subsequent ops, the attempt -+ // is created immediately before replaying the ops. -+ var err error -+ if cs.attempt, err = cs.newAttemptLocked(false /* isTransparent */); err != nil { -+ cs.mu.Unlock() -+ cs.finish(err) -+ return err -+ } -+ } -+ a := cs.attempt -+ cs.mu.Unlock() -+ err := op(a) -+ cs.mu.Lock() -+ if a != cs.attempt { -+ // We started another attempt already. -+ continue -+ } -+ if err == io.EOF { -+ <-a.s.Done() -+ } -+ if err == nil || (err == io.EOF && a.s.Status().Code() == codes.OK) { -+ onSuccess() -+ cs.mu.Unlock() -+ return err -+ } -+ if err := cs.retryLocked(a, err); err != nil { -+ cs.mu.Unlock() -+ return err -+ } -+ } -+} -+ -+func (cs *clientStream) Header() (metadata.MD, error) { -+ var m metadata.MD -+ noHeader := false -+ err := cs.withRetry(func(a *csAttempt) error { -+ var err error -+ m, err = a.s.Header() -+ if err == transport.ErrNoHeaders { -+ noHeader = true -+ return nil -+ } -+ return toRPCErr(err) -+ }, cs.commitAttemptLocked) -+ -+ if err != nil { -+ cs.finish(err) -+ return nil, err -+ } -+ -+ if len(cs.binlogs) != 0 && !cs.serverHeaderBinlogged && !noHeader { -+ // Only log if binary log is on and header has not been logged, and -+ // there is actually headers to log. -+ logEntry := &binarylog.ServerHeader{ -+ OnClientSide: true, -+ Header: m, -+ PeerAddr: nil, -+ } -+ if peer, ok := peer.FromContext(cs.Context()); ok { -+ logEntry.PeerAddr = peer.Addr -+ } -+ cs.serverHeaderBinlogged = true -+ for _, binlog := range cs.binlogs { -+ binlog.Log(cs.ctx, logEntry) -+ } -+ } -+ return m, nil -+} -+ -+func (cs *clientStream) Trailer() metadata.MD { -+ // On RPC failure, we never need to retry, because usage requires that -+ // RecvMsg() returned a non-nil error before calling this function is valid. -+ // We would have retried earlier if necessary. -+ // -+ // Commit the attempt anyway, just in case users are not following those -+ // directions -- it will prevent races and should not meaningfully impact -+ // performance. -+ cs.commitAttempt() -+ if cs.attempt.s == nil { -+ return nil -+ } -+ return cs.attempt.s.Trailer() -+} -+ -+func (cs *clientStream) replayBufferLocked(attempt *csAttempt) error { -+ for _, f := range cs.buffer { -+ if err := f(attempt); err != nil { -+ return err -+ } -+ } -+ return nil -+} -+ -+func (cs *clientStream) bufferForRetryLocked(sz int, op func(a *csAttempt) error) { -+ // Note: we still will buffer if retry is disabled (for transparent retries). -+ if cs.committed { -+ return -+ } -+ cs.bufferSize += sz -+ if cs.bufferSize > cs.callInfo.maxRetryRPCBufferSize { -+ cs.commitAttemptLocked() -+ return -+ } -+ cs.buffer = append(cs.buffer, op) -+} -+ -+func (cs *clientStream) SendMsg(m interface{}) (err error) { -+ defer func() { -+ if err != nil && err != io.EOF { -+ // Call finish on the client stream for errors generated by this SendMsg -+ // call, as these indicate problems created by this client. (Transport -+ // errors are converted to an io.EOF error in csAttempt.sendMsg; the real -+ // error will be returned from RecvMsg eventually in that case, or be -+ // retried.) -+ cs.finish(err) -+ } -+ }() -+ if cs.sentLast { -+ return status.Errorf(codes.Internal, "SendMsg called after CloseSend") -+ } -+ if !cs.desc.ClientStreams { -+ cs.sentLast = true -+ } -+ -+ // load hdr, payload, data -+ hdr, payload, data, err := prepareMsg(m, cs.codec, cs.cp, cs.comp) -+ if err != nil { -+ return err -+ } -+ -+ // TODO(dfawley): should we be checking len(data) instead? -+ if len(payload) > *cs.callInfo.maxSendMessageSize { -+ return status.Errorf(codes.ResourceExhausted, "trying to send message larger than max (%d vs. %d)", len(payload), *cs.callInfo.maxSendMessageSize) -+ } -+ op := func(a *csAttempt) error { -+ return a.sendMsg(m, hdr, payload, data) -+ } -+ err = cs.withRetry(op, func() { cs.bufferForRetryLocked(len(hdr)+len(payload), op) }) -+ if len(cs.binlogs) != 0 && err == nil { -+ cm := &binarylog.ClientMessage{ -+ OnClientSide: true, -+ Message: data, -+ } -+ for _, binlog := range cs.binlogs { -+ binlog.Log(cs.ctx, cm) -+ } -+ } -+ return err -+} -+ -+func (cs *clientStream) RecvMsg(m interface{}) error { -+ if len(cs.binlogs) != 0 && !cs.serverHeaderBinlogged { -+ // Call Header() to binary log header if it's not already logged. -+ cs.Header() -+ } -+ var recvInfo *payloadInfo -+ if len(cs.binlogs) != 0 { -+ recvInfo = &payloadInfo{} -+ } -+ err := cs.withRetry(func(a *csAttempt) error { -+ return a.recvMsg(m, recvInfo) -+ }, cs.commitAttemptLocked) -+ if len(cs.binlogs) != 0 && err == nil { -+ sm := &binarylog.ServerMessage{ -+ OnClientSide: true, -+ Message: recvInfo.uncompressedBytes, -+ } -+ for _, binlog := range cs.binlogs { -+ binlog.Log(cs.ctx, sm) -+ } -+ } -+ if err != nil || !cs.desc.ServerStreams { -+ // err != nil or non-server-streaming indicates end of stream. -+ cs.finish(err) -+ -+ if len(cs.binlogs) != 0 { -+ // finish will not log Trailer. Log Trailer here. -+ logEntry := &binarylog.ServerTrailer{ -+ OnClientSide: true, -+ Trailer: cs.Trailer(), -+ Err: err, -+ } -+ if logEntry.Err == io.EOF { -+ logEntry.Err = nil -+ } -+ if peer, ok := peer.FromContext(cs.Context()); ok { -+ logEntry.PeerAddr = peer.Addr -+ } -+ for _, binlog := range cs.binlogs { -+ binlog.Log(cs.ctx, logEntry) -+ } -+ } -+ } -+ return err -+} -+ -+func (cs *clientStream) CloseSend() error { -+ if cs.sentLast { -+ // TODO: return an error and finish the stream instead, due to API misuse? -+ return nil -+ } -+ cs.sentLast = true -+ op := func(a *csAttempt) error { -+ a.t.Write(a.s, nil, nil, &transport.Options{Last: true}) -+ // Always return nil; io.EOF is the only error that might make sense -+ // instead, but there is no need to signal the client to call RecvMsg -+ // as the only use left for the stream after CloseSend is to call -+ // RecvMsg. This also matches historical behavior. -+ return nil -+ } -+ cs.withRetry(op, func() { cs.bufferForRetryLocked(0, op) }) -+ if len(cs.binlogs) != 0 { -+ chc := &binarylog.ClientHalfClose{ -+ OnClientSide: true, -+ } -+ for _, binlog := range cs.binlogs { -+ binlog.Log(cs.ctx, chc) -+ } -+ } -+ // We never returned an error here for reasons. -+ return nil -+} -+ -+func (cs *clientStream) finish(err error) { -+ if err == io.EOF { -+ // Ending a stream with EOF indicates a success. -+ err = nil -+ } -+ cs.mu.Lock() -+ if cs.finished { -+ cs.mu.Unlock() -+ return -+ } -+ cs.finished = true -+ for _, onFinish := range cs.callInfo.onFinish { -+ onFinish(err) -+ } -+ cs.commitAttemptLocked() -+ if cs.attempt != nil { -+ cs.attempt.finish(err) -+ // after functions all rely upon having a stream. -+ if cs.attempt.s != nil { -+ for _, o := range cs.opts { -+ o.after(cs.callInfo, cs.attempt) -+ } -+ } -+ } -+ cs.mu.Unlock() -+ // For binary logging. only log cancel in finish (could be caused by RPC ctx -+ // canceled or ClientConn closed). Trailer will be logged in RecvMsg. -+ // -+ // Only one of cancel or trailer needs to be logged. In the cases where -+ // users don't call RecvMsg, users must have already canceled the RPC. -+ if len(cs.binlogs) != 0 && status.Code(err) == codes.Canceled { -+ c := &binarylog.Cancel{ -+ OnClientSide: true, -+ } -+ for _, binlog := range cs.binlogs { -+ binlog.Log(cs.ctx, c) -+ } -+ } -+ if err == nil { -+ cs.retryThrottler.successfulRPC() -+ } -+ if channelz.IsOn() { -+ if err != nil { -+ cs.cc.incrCallsFailed() -+ } else { -+ cs.cc.incrCallsSucceeded() -+ } -+ } -+ cs.cancel() -+} -+ -+func (a *csAttempt) sendMsg(m interface{}, hdr, payld, data []byte) error { -+ cs := a.cs -+ if a.trInfo != nil { -+ a.mu.Lock() -+ if a.trInfo.tr != nil { -+ a.trInfo.tr.LazyLog(&payload{sent: true, msg: m}, true) -+ } -+ a.mu.Unlock() -+ } -+ if err := a.t.Write(a.s, hdr, payld, &transport.Options{Last: !cs.desc.ClientStreams}); err != nil { -+ if !cs.desc.ClientStreams { -+ // For non-client-streaming RPCs, we return nil instead of EOF on error -+ // because the generated code requires it. finish is not called; RecvMsg() -+ // will call it with the stream's status independently. -+ return nil -+ } -+ return io.EOF -+ } -+ for _, sh := range a.statsHandlers { -+ sh.HandleRPC(a.ctx, outPayload(true, m, data, payld, time.Now())) -+ } -+ if channelz.IsOn() { -+ a.t.IncrMsgSent() -+ } -+ return nil -+} -+ -+func (a *csAttempt) recvMsg(m interface{}, payInfo *payloadInfo) (err error) { -+ cs := a.cs -+ if len(a.statsHandlers) != 0 && payInfo == nil { -+ payInfo = &payloadInfo{} -+ } -+ -+ if !a.decompSet { -+ // Block until we receive headers containing received message encoding. -+ if ct := a.s.RecvCompress(); ct != "" && ct != encoding.Identity { -+ if a.dc == nil || a.dc.Type() != ct { -+ // No configured decompressor, or it does not match the incoming -+ // message encoding; attempt to find a registered compressor that does. -+ a.dc = nil -+ a.decomp = encoding.GetCompressor(ct) -+ } -+ } else { -+ // No compression is used; disable our decompressor. -+ a.dc = nil -+ } -+ // Only initialize this state once per stream. -+ a.decompSet = true -+ } -+ err = recv(a.p, cs.codec, a.s, a.dc, m, *cs.callInfo.maxReceiveMessageSize, payInfo, a.decomp) -+ if err != nil { -+ if err == io.EOF { -+ if statusErr := a.s.Status().Err(); statusErr != nil { -+ return statusErr -+ } -+ return io.EOF // indicates successful end of stream. -+ } -+ -+ return toRPCErr(err) -+ } -+ if a.trInfo != nil { -+ a.mu.Lock() -+ if a.trInfo.tr != nil { -+ a.trInfo.tr.LazyLog(&payload{sent: false, msg: m}, true) -+ } -+ a.mu.Unlock() -+ } -+ for _, sh := range a.statsHandlers { -+ sh.HandleRPC(a.ctx, &stats.InPayload{ -+ Client: true, -+ RecvTime: time.Now(), -+ Payload: m, -+ // TODO truncate large payload. -+ Data: payInfo.uncompressedBytes, -+ WireLength: payInfo.compressedLength + headerLen, -+ CompressedLength: payInfo.compressedLength, -+ Length: len(payInfo.uncompressedBytes), -+ }) -+ } -+ if channelz.IsOn() { -+ a.t.IncrMsgRecv() -+ } -+ if cs.desc.ServerStreams { -+ // Subsequent messages should be received by subsequent RecvMsg calls. -+ return nil -+ } -+ // Special handling for non-server-stream rpcs. -+ // This recv expects EOF or errors, so we don't collect inPayload. -+ err = recv(a.p, cs.codec, a.s, a.dc, m, *cs.callInfo.maxReceiveMessageSize, nil, a.decomp) -+ if err == nil { -+ return toRPCErr(errors.New("grpc: client streaming protocol violation: get , want ")) -+ } -+ if err == io.EOF { -+ return a.s.Status().Err() // non-server streaming Recv returns nil on success -+ } -+ return toRPCErr(err) -+} -+ -+func (a *csAttempt) finish(err error) { -+ a.mu.Lock() -+ if a.finished { -+ a.mu.Unlock() -+ return -+ } -+ a.finished = true -+ if err == io.EOF { -+ // Ending a stream with EOF indicates a success. -+ err = nil -+ } -+ var tr metadata.MD -+ if a.s != nil { -+ a.t.CloseStream(a.s, err) -+ tr = a.s.Trailer() -+ } -+ -+ if a.pickResult.Done != nil { -+ br := false -+ if a.s != nil { -+ br = a.s.BytesReceived() -+ } -+ a.pickResult.Done(balancer.DoneInfo{ -+ Err: err, -+ Trailer: tr, -+ BytesSent: a.s != nil, -+ BytesReceived: br, -+ ServerLoad: balancerload.Parse(tr), -+ }) -+ } -+ for _, sh := range a.statsHandlers { -+ end := &stats.End{ -+ Client: true, -+ BeginTime: a.beginTime, -+ EndTime: time.Now(), -+ Trailer: tr, -+ Error: err, -+ } -+ sh.HandleRPC(a.ctx, end) -+ } -+ if a.trInfo != nil && a.trInfo.tr != nil { -+ if err == nil { -+ a.trInfo.tr.LazyPrintf("RPC: [OK]") -+ } else { -+ a.trInfo.tr.LazyPrintf("RPC: [%v]", err) -+ a.trInfo.tr.SetError() -+ } -+ a.trInfo.tr.Finish() -+ a.trInfo.tr = nil -+ } -+ a.mu.Unlock() -+} -+ -+// newClientStream creates a ClientStream with the specified transport, on the -+// given addrConn. -+// -+// It's expected that the given transport is either the same one in addrConn, or -+// is already closed. To avoid race, transport is specified separately, instead -+// of using ac.transpot. -+// -+// Main difference between this and ClientConn.NewStream: -+// - no retry -+// - no service config (or wait for service config) -+// - no tracing or stats -+func newNonRetryClientStream(ctx context.Context, desc *StreamDesc, method string, t transport.ClientTransport, ac *addrConn, opts ...CallOption) (_ ClientStream, err error) { -+ if t == nil { -+ // TODO: return RPC error here? -+ return nil, errors.New("transport provided is nil") -+ } -+ // defaultCallInfo contains unnecessary info(i.e. failfast, maxRetryRPCBufferSize), so we just initialize an empty struct. -+ c := &callInfo{} -+ -+ // Possible context leak: -+ // The cancel function for the child context we create will only be called -+ // when RecvMsg returns a non-nil error, if the ClientConn is closed, or if -+ // an error is generated by SendMsg. -+ // https://github.com/grpc/grpc-go/issues/1818. -+ ctx, cancel := context.WithCancel(ctx) -+ defer func() { -+ if err != nil { -+ cancel() -+ } -+ }() -+ -+ for _, o := range opts { -+ if err := o.before(c); err != nil { -+ return nil, toRPCErr(err) -+ } -+ } -+ c.maxReceiveMessageSize = getMaxSize(nil, c.maxReceiveMessageSize, defaultClientMaxReceiveMessageSize) -+ c.maxSendMessageSize = getMaxSize(nil, c.maxSendMessageSize, defaultServerMaxSendMessageSize) -+ if err := setCallInfoCodec(c); err != nil { -+ return nil, err -+ } -+ -+ callHdr := &transport.CallHdr{ -+ Host: ac.cc.authority, -+ Method: method, -+ ContentSubtype: c.contentSubtype, -+ } -+ -+ // Set our outgoing compression according to the UseCompressor CallOption, if -+ // set. In that case, also find the compressor from the encoding package. -+ // Otherwise, use the compressor configured by the WithCompressor DialOption, -+ // if set. -+ var cp Compressor -+ var comp encoding.Compressor -+ if ct := c.compressorType; ct != "" { -+ callHdr.SendCompress = ct -+ if ct != encoding.Identity { -+ comp = encoding.GetCompressor(ct) -+ if comp == nil { -+ return nil, status.Errorf(codes.Internal, "grpc: Compressor is not installed for requested grpc-encoding %q", ct) -+ } -+ } -+ } else if ac.cc.dopts.cp != nil { -+ callHdr.SendCompress = ac.cc.dopts.cp.Type() -+ cp = ac.cc.dopts.cp -+ } -+ if c.creds != nil { -+ callHdr.Creds = c.creds -+ } -+ -+ // Use a special addrConnStream to avoid retry. -+ as := &addrConnStream{ -+ callHdr: callHdr, -+ ac: ac, -+ ctx: ctx, -+ cancel: cancel, -+ opts: opts, -+ callInfo: c, -+ desc: desc, -+ codec: c.codec, -+ cp: cp, -+ comp: comp, -+ t: t, -+ } -+ -+ s, err := as.t.NewStream(as.ctx, as.callHdr) -+ if err != nil { -+ err = toRPCErr(err) -+ return nil, err -+ } -+ as.s = s -+ as.p = &parser{r: s, recvBufferPool: ac.dopts.recvBufferPool} -+ ac.incrCallsStarted() -+ if desc != unaryStreamDesc { -+ // Listen on stream context to cleanup when the stream context is -+ // canceled. Also listen for the addrConn's context in case the -+ // addrConn is closed or reconnects to a different address. In all -+ // other cases, an error should already be injected into the recv -+ // buffer by the transport, which the client will eventually receive, -+ // and then we will cancel the stream's context in -+ // addrConnStream.finish. -+ go func() { -+ ac.mu.Lock() -+ acCtx := ac.ctx -+ ac.mu.Unlock() -+ select { -+ case <-acCtx.Done(): -+ as.finish(status.Error(codes.Canceled, "grpc: the SubConn is closing")) -+ case <-ctx.Done(): -+ as.finish(toRPCErr(ctx.Err())) -+ } -+ }() -+ } -+ return as, nil -+} -+ -+type addrConnStream struct { -+ s *transport.Stream -+ ac *addrConn -+ callHdr *transport.CallHdr -+ cancel context.CancelFunc -+ opts []CallOption -+ callInfo *callInfo -+ t transport.ClientTransport -+ ctx context.Context -+ sentLast bool -+ desc *StreamDesc -+ codec baseCodec -+ cp Compressor -+ comp encoding.Compressor -+ decompSet bool -+ dc Decompressor -+ decomp encoding.Compressor -+ p *parser -+ mu sync.Mutex -+ finished bool -+} -+ -+func (as *addrConnStream) Header() (metadata.MD, error) { -+ m, err := as.s.Header() -+ if err != nil { -+ as.finish(toRPCErr(err)) -+ } -+ return m, err -+} -+ -+func (as *addrConnStream) Trailer() metadata.MD { -+ return as.s.Trailer() -+} -+ -+func (as *addrConnStream) CloseSend() error { -+ if as.sentLast { -+ // TODO: return an error and finish the stream instead, due to API misuse? -+ return nil -+ } -+ as.sentLast = true -+ -+ as.t.Write(as.s, nil, nil, &transport.Options{Last: true}) -+ // Always return nil; io.EOF is the only error that might make sense -+ // instead, but there is no need to signal the client to call RecvMsg -+ // as the only use left for the stream after CloseSend is to call -+ // RecvMsg. This also matches historical behavior. -+ return nil -+} -+ -+func (as *addrConnStream) Context() context.Context { -+ return as.s.Context() -+} -+ -+func (as *addrConnStream) SendMsg(m interface{}) (err error) { -+ defer func() { -+ if err != nil && err != io.EOF { -+ // Call finish on the client stream for errors generated by this SendMsg -+ // call, as these indicate problems created by this client. (Transport -+ // errors are converted to an io.EOF error in csAttempt.sendMsg; the real -+ // error will be returned from RecvMsg eventually in that case, or be -+ // retried.) -+ as.finish(err) -+ } -+ }() -+ if as.sentLast { -+ return status.Errorf(codes.Internal, "SendMsg called after CloseSend") -+ } -+ if !as.desc.ClientStreams { -+ as.sentLast = true -+ } -+ -+ // load hdr, payload, data -+ hdr, payld, _, err := prepareMsg(m, as.codec, as.cp, as.comp) -+ if err != nil { -+ return err -+ } -+ -+ // TODO(dfawley): should we be checking len(data) instead? -+ if len(payld) > *as.callInfo.maxSendMessageSize { -+ return status.Errorf(codes.ResourceExhausted, "trying to send message larger than max (%d vs. %d)", len(payld), *as.callInfo.maxSendMessageSize) -+ } -+ -+ if err := as.t.Write(as.s, hdr, payld, &transport.Options{Last: !as.desc.ClientStreams}); err != nil { -+ if !as.desc.ClientStreams { -+ // For non-client-streaming RPCs, we return nil instead of EOF on error -+ // because the generated code requires it. finish is not called; RecvMsg() -+ // will call it with the stream's status independently. -+ return nil -+ } -+ return io.EOF -+ } -+ -+ if channelz.IsOn() { -+ as.t.IncrMsgSent() -+ } -+ return nil -+} -+ -+func (as *addrConnStream) RecvMsg(m interface{}) (err error) { -+ defer func() { -+ if err != nil || !as.desc.ServerStreams { -+ // err != nil or non-server-streaming indicates end of stream. -+ as.finish(err) -+ } -+ }() -+ -+ if !as.decompSet { -+ // Block until we receive headers containing received message encoding. -+ if ct := as.s.RecvCompress(); ct != "" && ct != encoding.Identity { -+ if as.dc == nil || as.dc.Type() != ct { -+ // No configured decompressor, or it does not match the incoming -+ // message encoding; attempt to find a registered compressor that does. -+ as.dc = nil -+ as.decomp = encoding.GetCompressor(ct) -+ } -+ } else { -+ // No compression is used; disable our decompressor. -+ as.dc = nil -+ } -+ // Only initialize this state once per stream. -+ as.decompSet = true -+ } -+ err = recv(as.p, as.codec, as.s, as.dc, m, *as.callInfo.maxReceiveMessageSize, nil, as.decomp) -+ if err != nil { -+ if err == io.EOF { -+ if statusErr := as.s.Status().Err(); statusErr != nil { -+ return statusErr -+ } -+ return io.EOF // indicates successful end of stream. -+ } -+ return toRPCErr(err) -+ } -+ -+ if channelz.IsOn() { -+ as.t.IncrMsgRecv() -+ } -+ if as.desc.ServerStreams { -+ // Subsequent messages should be received by subsequent RecvMsg calls. -+ return nil -+ } -+ -+ // Special handling for non-server-stream rpcs. -+ // This recv expects EOF or errors, so we don't collect inPayload. -+ err = recv(as.p, as.codec, as.s, as.dc, m, *as.callInfo.maxReceiveMessageSize, nil, as.decomp) -+ if err == nil { -+ return toRPCErr(errors.New("grpc: client streaming protocol violation: get , want ")) -+ } -+ if err == io.EOF { -+ return as.s.Status().Err() // non-server streaming Recv returns nil on success -+ } -+ return toRPCErr(err) -+} -+ -+func (as *addrConnStream) finish(err error) { -+ as.mu.Lock() -+ if as.finished { -+ as.mu.Unlock() -+ return -+ } -+ as.finished = true -+ if err == io.EOF { -+ // Ending a stream with EOF indicates a success. -+ err = nil -+ } -+ if as.s != nil { -+ as.t.CloseStream(as.s, err) -+ } -+ -+ if err != nil { -+ as.ac.incrCallsFailed() -+ } else { -+ as.ac.incrCallsSucceeded() -+ } -+ as.cancel() -+ as.mu.Unlock() -+} -+ -+// ServerStream defines the server-side behavior of a streaming RPC. -+// -+// Errors returned from ServerStream methods are compatible with the status -+// package. However, the status code will often not match the RPC status as -+// seen by the client application, and therefore, should not be relied upon for -+// this purpose. -+type ServerStream interface { -+ // SetHeader sets the header metadata. It may be called multiple times. -+ // When call multiple times, all the provided metadata will be merged. -+ // All the metadata will be sent out when one of the following happens: -+ // - ServerStream.SendHeader() is called; -+ // - The first response is sent out; -+ // - An RPC status is sent out (error or success). -+ SetHeader(metadata.MD) error -+ // SendHeader sends the header metadata. -+ // The provided md and headers set by SetHeader() will be sent. -+ // It fails if called multiple times. -+ SendHeader(metadata.MD) error -+ // SetTrailer sets the trailer metadata which will be sent with the RPC status. -+ // When called more than once, all the provided metadata will be merged. -+ SetTrailer(metadata.MD) -+ // Context returns the context for this stream. -+ Context() context.Context -+ // SendMsg sends a message. On error, SendMsg aborts the stream and the -+ // error is returned directly. -+ // -+ // SendMsg blocks until: -+ // - There is sufficient flow control to schedule m with the transport, or -+ // - The stream is done, or -+ // - The stream breaks. -+ // -+ // SendMsg does not wait until the message is received by the client. An -+ // untimely stream closure may result in lost messages. -+ // -+ // It is safe to have a goroutine calling SendMsg and another goroutine -+ // calling RecvMsg on the same stream at the same time, but it is not safe -+ // to call SendMsg on the same stream in different goroutines. -+ // -+ // It is not safe to modify the message after calling SendMsg. Tracing -+ // libraries and stats handlers may use the message lazily. -+ SendMsg(m interface{}) error -+ // RecvMsg blocks until it receives a message into m or the stream is -+ // done. It returns io.EOF when the client has performed a CloseSend. On -+ // any non-EOF error, the stream is aborted and the error contains the -+ // RPC status. -+ // -+ // It is safe to have a goroutine calling SendMsg and another goroutine -+ // calling RecvMsg on the same stream at the same time, but it is not -+ // safe to call RecvMsg on the same stream in different goroutines. -+ RecvMsg(m interface{}) error -+} -+ -+// serverStream implements a server side Stream. -+type serverStream struct { -+ ctx context.Context -+ t transport.ServerTransport -+ s *transport.Stream -+ p *parser -+ codec baseCodec -+ -+ cp Compressor -+ dc Decompressor -+ comp encoding.Compressor -+ decomp encoding.Compressor -+ -+ sendCompressorName string -+ -+ maxReceiveMessageSize int -+ maxSendMessageSize int -+ trInfo *traceInfo -+ -+ statsHandler []stats.Handler -+ -+ binlogs []binarylog.MethodLogger -+ // serverHeaderBinlogged indicates whether server header has been logged. It -+ // will happen when one of the following two happens: stream.SendHeader(), -+ // stream.Send(). -+ // -+ // It's only checked in send and sendHeader, doesn't need to be -+ // synchronized. -+ serverHeaderBinlogged bool -+ -+ mu sync.Mutex // protects trInfo.tr after the service handler runs. -+} -+ -+func (ss *serverStream) Context() context.Context { -+ return ss.ctx -+} -+ -+func (ss *serverStream) SetHeader(md metadata.MD) error { -+ if md.Len() == 0 { -+ return nil -+ } -+ err := imetadata.Validate(md) -+ if err != nil { -+ return status.Error(codes.Internal, err.Error()) -+ } -+ return ss.s.SetHeader(md) -+} -+ -+func (ss *serverStream) SendHeader(md metadata.MD) error { -+ err := imetadata.Validate(md) -+ if err != nil { -+ return status.Error(codes.Internal, err.Error()) -+ } -+ -+ err = ss.t.WriteHeader(ss.s, md) -+ if len(ss.binlogs) != 0 && !ss.serverHeaderBinlogged { -+ h, _ := ss.s.Header() -+ sh := &binarylog.ServerHeader{ -+ Header: h, -+ } -+ ss.serverHeaderBinlogged = true -+ for _, binlog := range ss.binlogs { -+ binlog.Log(ss.ctx, sh) -+ } -+ } -+ return err -+} -+ -+func (ss *serverStream) SetTrailer(md metadata.MD) { -+ if md.Len() == 0 { -+ return -+ } -+ if err := imetadata.Validate(md); err != nil { -+ logger.Errorf("stream: failed to validate md when setting trailer, err: %v", err) -+ } -+ ss.s.SetTrailer(md) -+} -+ -+func (ss *serverStream) SendMsg(m interface{}) (err error) { -+ defer func() { -+ if ss.trInfo != nil { -+ ss.mu.Lock() -+ if ss.trInfo.tr != nil { -+ if err == nil { -+ ss.trInfo.tr.LazyLog(&payload{sent: true, msg: m}, true) -+ } else { -+ ss.trInfo.tr.LazyLog(&fmtStringer{"%v", []interface{}{err}}, true) -+ ss.trInfo.tr.SetError() -+ } -+ } -+ ss.mu.Unlock() -+ } -+ if err != nil && err != io.EOF { -+ st, _ := status.FromError(toRPCErr(err)) -+ ss.t.WriteStatus(ss.s, st) -+ // Non-user specified status was sent out. This should be an error -+ // case (as a server side Cancel maybe). -+ // -+ // This is not handled specifically now. User will return a final -+ // status from the service handler, we will log that error instead. -+ // This behavior is similar to an interceptor. -+ } -+ if channelz.IsOn() && err == nil { -+ ss.t.IncrMsgSent() -+ } -+ }() -+ -+ // Server handler could have set new compressor by calling SetSendCompressor. -+ // In case it is set, we need to use it for compressing outbound message. -+ if sendCompressorsName := ss.s.SendCompress(); sendCompressorsName != ss.sendCompressorName { -+ ss.comp = encoding.GetCompressor(sendCompressorsName) -+ ss.sendCompressorName = sendCompressorsName -+ } -+ -+ // load hdr, payload, data -+ hdr, payload, data, err := prepareMsg(m, ss.codec, ss.cp, ss.comp) -+ if err != nil { -+ return err -+ } -+ -+ // TODO(dfawley): should we be checking len(data) instead? -+ if len(payload) > ss.maxSendMessageSize { -+ return status.Errorf(codes.ResourceExhausted, "trying to send message larger than max (%d vs. %d)", len(payload), ss.maxSendMessageSize) -+ } -+ if err := ss.t.Write(ss.s, hdr, payload, &transport.Options{Last: false}); err != nil { -+ return toRPCErr(err) -+ } -+ if len(ss.binlogs) != 0 { -+ if !ss.serverHeaderBinlogged { -+ h, _ := ss.s.Header() -+ sh := &binarylog.ServerHeader{ -+ Header: h, -+ } -+ ss.serverHeaderBinlogged = true -+ for _, binlog := range ss.binlogs { -+ binlog.Log(ss.ctx, sh) -+ } -+ } -+ sm := &binarylog.ServerMessage{ -+ Message: data, -+ } -+ for _, binlog := range ss.binlogs { -+ binlog.Log(ss.ctx, sm) -+ } -+ } -+ if len(ss.statsHandler) != 0 { -+ for _, sh := range ss.statsHandler { -+ sh.HandleRPC(ss.s.Context(), outPayload(false, m, data, payload, time.Now())) -+ } -+ } -+ return nil -+} -+ -+func (ss *serverStream) RecvMsg(m interface{}) (err error) { -+ defer func() { -+ if ss.trInfo != nil { -+ ss.mu.Lock() -+ if ss.trInfo.tr != nil { -+ if err == nil { -+ ss.trInfo.tr.LazyLog(&payload{sent: false, msg: m}, true) -+ } else if err != io.EOF { -+ ss.trInfo.tr.LazyLog(&fmtStringer{"%v", []interface{}{err}}, true) -+ ss.trInfo.tr.SetError() -+ } -+ } -+ ss.mu.Unlock() -+ } -+ if err != nil && err != io.EOF { -+ st, _ := status.FromError(toRPCErr(err)) -+ ss.t.WriteStatus(ss.s, st) -+ // Non-user specified status was sent out. This should be an error -+ // case (as a server side Cancel maybe). -+ // -+ // This is not handled specifically now. User will return a final -+ // status from the service handler, we will log that error instead. -+ // This behavior is similar to an interceptor. -+ } -+ if channelz.IsOn() && err == nil { -+ ss.t.IncrMsgRecv() -+ } -+ }() -+ var payInfo *payloadInfo -+ if len(ss.statsHandler) != 0 || len(ss.binlogs) != 0 { -+ payInfo = &payloadInfo{} -+ } -+ if err := recv(ss.p, ss.codec, ss.s, ss.dc, m, ss.maxReceiveMessageSize, payInfo, ss.decomp); err != nil { -+ if err == io.EOF { -+ if len(ss.binlogs) != 0 { -+ chc := &binarylog.ClientHalfClose{} -+ for _, binlog := range ss.binlogs { -+ binlog.Log(ss.ctx, chc) -+ } -+ } -+ return err -+ } -+ if err == io.ErrUnexpectedEOF { -+ err = status.Errorf(codes.Internal, io.ErrUnexpectedEOF.Error()) -+ } -+ return toRPCErr(err) -+ } -+ if len(ss.statsHandler) != 0 { -+ for _, sh := range ss.statsHandler { -+ sh.HandleRPC(ss.s.Context(), &stats.InPayload{ -+ RecvTime: time.Now(), -+ Payload: m, -+ // TODO truncate large payload. -+ Data: payInfo.uncompressedBytes, -+ Length: len(payInfo.uncompressedBytes), -+ WireLength: payInfo.compressedLength + headerLen, -+ CompressedLength: payInfo.compressedLength, -+ }) -+ } -+ } -+ if len(ss.binlogs) != 0 { -+ cm := &binarylog.ClientMessage{ -+ Message: payInfo.uncompressedBytes, -+ } -+ for _, binlog := range ss.binlogs { -+ binlog.Log(ss.ctx, cm) -+ } -+ } -+ return nil -+} -+ -+// MethodFromServerStream returns the method string for the input stream. -+// The returned string is in the format of "/service/method". -+func MethodFromServerStream(stream ServerStream) (string, bool) { -+ return Method(stream.Context()) -+} -+ -+// prepareMsg returns the hdr, payload and data -+// using the compressors passed or using the -+// passed preparedmsg -+func prepareMsg(m interface{}, codec baseCodec, cp Compressor, comp encoding.Compressor) (hdr, payload, data []byte, err error) { -+ if preparedMsg, ok := m.(*PreparedMsg); ok { -+ return preparedMsg.hdr, preparedMsg.payload, preparedMsg.encodedData, nil -+ } -+ // The input interface is not a prepared msg. -+ // Marshal and Compress the data at this point -+ data, err = encode(codec, m) -+ if err != nil { -+ return nil, nil, nil, err -+ } -+ compData, err := compress(data, cp, comp) -+ if err != nil { -+ return nil, nil, nil, err -+ } -+ hdr, payload = msgHeader(data, compData) -+ return hdr, payload, data, nil -+} -diff --git a/vendor/google.golang.org/grpc/tap/tap.go b/vendor/google.golang.org/grpc/tap/tap.go -new file mode 100755 -index 0000000..bfa5dfa ---- /dev/null -+++ b/vendor/google.golang.org/grpc/tap/tap.go -@@ -0,0 +1,56 @@ -+/* -+ * -+ * 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 tap defines the function handles which are executed on the transport -+// layer of gRPC-Go and related information. -+// -+// # Experimental -+// -+// Notice: This API is EXPERIMENTAL and may be changed or removed in a -+// later release. -+package tap -+ -+import ( -+ "context" -+) -+ -+// Info defines the relevant information needed by the handles. -+type Info struct { -+ // FullMethodName is the string of grpc method (in the format of -+ // /package.service/method). -+ FullMethodName string -+ // TODO: More to be added. -+} -+ -+// ServerInHandle defines the function which runs before a new stream is -+// created on the server side. If it returns a non-nil error, the stream will -+// not be created and an error will be returned to the client. If the error -+// returned is a status error, that status code and message will be used, -+// otherwise PermissionDenied will be the code and err.Error() will be the -+// message. -+// -+// It's intended to be used in situations where you don't want to waste the -+// resources to accept the new stream (e.g. rate-limiting). For other general -+// usages, please use interceptors. -+// -+// Note that it is executed in the per-connection I/O goroutine(s) instead of -+// per-RPC goroutine. Therefore, users should NOT have any -+// blocking/time-consuming work in this handle. Otherwise all the RPCs would -+// slow down. Also, for the same reason, this handle won't be called -+// concurrently by gRPC. -+type ServerInHandle func(ctx context.Context, info *Info) (context.Context, error) -diff --git a/vendor/google.golang.org/grpc/trace.go b/vendor/google.golang.org/grpc/trace.go -new file mode 100755 -index 0000000..07a2d26 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/trace.go -@@ -0,0 +1,123 @@ -+/* -+ * -+ * 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 grpc -+ -+import ( -+ "bytes" -+ "fmt" -+ "io" -+ "net" -+ "strings" -+ "sync" -+ "time" -+ -+ "golang.org/x/net/trace" -+) -+ -+// EnableTracing controls whether to trace RPCs using the golang.org/x/net/trace package. -+// This should only be set before any RPCs are sent or received by this program. -+var EnableTracing bool -+ -+// methodFamily returns the trace family for the given method. -+// It turns "/pkg.Service/GetFoo" into "pkg.Service". -+func methodFamily(m string) string { -+ m = strings.TrimPrefix(m, "/") // remove leading slash -+ if i := strings.Index(m, "/"); i >= 0 { -+ m = m[:i] // remove everything from second slash -+ } -+ return m -+} -+ -+// traceInfo contains tracing information for an RPC. -+type traceInfo struct { -+ tr trace.Trace -+ firstLine firstLine -+} -+ -+// firstLine is the first line of an RPC trace. -+// It may be mutated after construction; remoteAddr specifically may change -+// during client-side use. -+type firstLine struct { -+ mu sync.Mutex -+ client bool // whether this is a client (outgoing) RPC -+ remoteAddr net.Addr -+ deadline time.Duration // may be zero -+} -+ -+func (f *firstLine) SetRemoteAddr(addr net.Addr) { -+ f.mu.Lock() -+ f.remoteAddr = addr -+ f.mu.Unlock() -+} -+ -+func (f *firstLine) String() string { -+ f.mu.Lock() -+ defer f.mu.Unlock() -+ -+ var line bytes.Buffer -+ io.WriteString(&line, "RPC: ") -+ if f.client { -+ io.WriteString(&line, "to") -+ } else { -+ io.WriteString(&line, "from") -+ } -+ fmt.Fprintf(&line, " %v deadline:", f.remoteAddr) -+ if f.deadline != 0 { -+ fmt.Fprint(&line, f.deadline) -+ } else { -+ io.WriteString(&line, "none") -+ } -+ return line.String() -+} -+ -+const truncateSize = 100 -+ -+func truncate(x string, l int) string { -+ if l > len(x) { -+ return x -+ } -+ return x[:l] -+} -+ -+// payload represents an RPC request or response payload. -+type payload struct { -+ sent bool // whether this is an outgoing payload -+ msg interface{} // e.g. a proto.Message -+ // TODO(dsymonds): add stringifying info to codec, and limit how much we hold here? -+} -+ -+func (p payload) String() string { -+ if p.sent { -+ return truncate(fmt.Sprintf("sent: %v", p.msg), truncateSize) -+ } -+ return truncate(fmt.Sprintf("recv: %v", p.msg), truncateSize) -+} -+ -+type fmtStringer struct { -+ format string -+ a []interface{} -+} -+ -+func (f *fmtStringer) String() string { -+ return fmt.Sprintf(f.format, f.a...) -+} -+ -+type stringer string -+ -+func (s stringer) String() string { return string(s) } -diff --git a/vendor/google.golang.org/grpc/version.go b/vendor/google.golang.org/grpc/version.go -new file mode 100755 -index 0000000..12a5a9d ---- /dev/null -+++ b/vendor/google.golang.org/grpc/version.go -@@ -0,0 +1,22 @@ -+/* -+ * -+ * 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 grpc -+ -+// Version is the current grpc version. -+const Version = "1.57.1" -diff --git a/vendor/google.golang.org/grpc/vet.sh b/vendor/google.golang.org/grpc/vet.sh -new file mode 100755 -index 0000000..a8e4732 ---- /dev/null -+++ b/vendor/google.golang.org/grpc/vet.sh -@@ -0,0 +1,208 @@ -+#!/bin/bash -+ -+set -ex # Exit on error; debugging enabled. -+set -o pipefail # Fail a pipe if any sub-command fails. -+ -+# not makes sure the command passed to it does not exit with a return code of 0. -+not() { -+ # This is required instead of the earlier (! $COMMAND) because subshells and -+ # pipefail don't work the same on Darwin as in Linux. -+ ! "$@" -+} -+ -+die() { -+ echo "$@" >&2 -+ exit 1 -+} -+ -+fail_on_output() { -+ tee /dev/stderr | not read -+} -+ -+# Check to make sure it's safe to modify the user's git repo. -+git status --porcelain | fail_on_output -+ -+# Undo any edits made by this script. -+cleanup() { -+ git reset --hard HEAD -+} -+trap cleanup EXIT -+ -+PATH="${HOME}/go/bin:${GOROOT}/bin:${PATH}" -+go version -+ -+if [[ "$1" = "-install" ]]; then -+ # Install the pinned versions as defined in module tools. -+ pushd ./test/tools -+ go install \ -+ golang.org/x/lint/golint \ -+ golang.org/x/tools/cmd/goimports \ -+ honnef.co/go/tools/cmd/staticcheck \ -+ github.com/client9/misspell/cmd/misspell -+ popd -+ if [[ -z "${VET_SKIP_PROTO}" ]]; then -+ if [[ "${GITHUB_ACTIONS}" = "true" ]]; then -+ PROTOBUF_VERSION=22.0 # a.k.a v4.22.0 in pb.go files. -+ PROTOC_FILENAME=protoc-${PROTOBUF_VERSION}-linux-x86_64.zip -+ pushd /home/runner/go -+ wget https://github.com/google/protobuf/releases/download/v${PROTOBUF_VERSION}/${PROTOC_FILENAME} -+ unzip ${PROTOC_FILENAME} -+ bin/protoc --version -+ popd -+ elif not which protoc > /dev/null; then -+ die "Please install protoc into your path" -+ fi -+ fi -+ exit 0 -+elif [[ "$#" -ne 0 ]]; then -+ die "Unknown argument(s): $*" -+fi -+ -+# - Check that generated proto files are up to date. -+if [[ -z "${VET_SKIP_PROTO}" ]]; then -+ make proto && git status --porcelain 2>&1 | fail_on_output || \ -+ (git status; git --no-pager diff; exit 1) -+fi -+ -+if [[ -n "${VET_ONLY_PROTO}" ]]; then -+ exit 0 -+fi -+ -+# - Ensure all source files contain a copyright message. -+# (Done in two parts because Darwin "git grep" has broken support for compound -+# exclusion matches.) -+(grep -L "DO NOT EDIT" $(git grep -L "\(Copyright [0-9]\{4,\} gRPC authors\)" -- '*.go') || true) | fail_on_output -+ -+# - Make sure all tests in grpc and grpc/test use leakcheck via Teardown. -+not grep 'func Test[^(]' *_test.go -+not grep 'func Test[^(]' test/*.go -+ -+# - Do not import x/net/context. -+not git grep -l 'x/net/context' -- "*.go" -+ -+# - Do not import math/rand for real library code. Use internal/grpcrand for -+# thread safety. -+git grep -l '"math/rand"' -- "*.go" 2>&1 | not grep -v '^examples\|^stress\|grpcrand\|^benchmark\|wrr_test' -+ -+# - Do not call grpclog directly. Use grpclog.Component instead. -+git grep -l -e 'grpclog.I' --or -e 'grpclog.W' --or -e 'grpclog.E' --or -e 'grpclog.F' --or -e 'grpclog.V' -- "*.go" | not grep -v '^grpclog/component.go\|^internal/grpctest/tlogger_test.go' -+ -+# - Ensure all ptypes proto packages are renamed when importing. -+not git grep "\(import \|^\s*\)\"github.com/golang/protobuf/ptypes/" -- "*.go" -+ -+# - Ensure all xds proto imports are renamed to *pb or *grpc. -+git grep '"github.com/envoyproxy/go-control-plane/envoy' -- '*.go' ':(exclude)*.pb.go' | not grep -v 'pb "\|grpc "' -+ -+misspell -error . -+ -+# - gofmt, goimports, golint (with exceptions for generated code), go vet, -+# go mod tidy. -+# Perform these checks on each module inside gRPC. -+for MOD_FILE in $(find . -name 'go.mod'); do -+ MOD_DIR=$(dirname ${MOD_FILE}) -+ pushd ${MOD_DIR} -+ go vet -all ./... | fail_on_output -+ gofmt -s -d -l . 2>&1 | fail_on_output -+ goimports -l . 2>&1 | not grep -vE "\.pb\.go" -+ golint ./... 2>&1 | not grep -vE "/grpc_testing_not_regenerate/.*\.pb\.go:" -+ -+ go mod tidy -compat=1.17 -+ git status --porcelain 2>&1 | fail_on_output || \ -+ (git status; git --no-pager diff; exit 1) -+ popd -+done -+ -+# - Collection of static analysis checks -+# -+# TODO(dfawley): don't use deprecated functions in examples or first-party -+# plugins. -+# TODO(dfawley): enable ST1019 (duplicate imports) but allow for protobufs. -+SC_OUT="$(mktemp)" -+staticcheck -go 1.19 -checks 'inherit,-ST1015,-ST1019,-SA1019' ./... > "${SC_OUT}" || true -+# Error if anything other than deprecation warnings are printed. -+not grep -v "is deprecated:.*SA1019" "${SC_OUT}" -+# Only ignore the following deprecated types/fields/functions. -+not grep -Fv '.CredsBundle -+.HeaderMap -+.Metadata is deprecated: use Attributes -+.NewAddress -+.NewServiceConfig -+.Type is deprecated: use Attributes -+BuildVersion is deprecated -+balancer.ErrTransientFailure -+balancer.Picker -+extDesc.Filename is deprecated -+github.com/golang/protobuf/jsonpb is deprecated -+grpc.CallCustomCodec -+grpc.Code -+grpc.Compressor -+grpc.CustomCodec -+grpc.Decompressor -+grpc.MaxMsgSize -+grpc.MethodConfig -+grpc.NewGZIPCompressor -+grpc.NewGZIPDecompressor -+grpc.RPCCompressor -+grpc.RPCDecompressor -+grpc.ServiceConfig -+grpc.WithCompressor -+grpc.WithDecompressor -+grpc.WithDialer -+grpc.WithMaxMsgSize -+grpc.WithServiceConfig -+grpc.WithTimeout -+http.CloseNotifier -+info.SecurityVersion -+proto is deprecated -+proto.InternalMessageInfo is deprecated -+proto.EnumName is deprecated -+proto.ErrInternalBadWireType is deprecated -+proto.FileDescriptor is deprecated -+proto.Marshaler is deprecated -+proto.MessageType is deprecated -+proto.RegisterEnum is deprecated -+proto.RegisterFile is deprecated -+proto.RegisterType is deprecated -+proto.RegisterExtension is deprecated -+proto.RegisteredExtension is deprecated -+proto.RegisteredExtensions is deprecated -+proto.RegisterMapType is deprecated -+proto.Unmarshaler is deprecated -+resolver.Backend -+resolver.GRPCLB -+Target is deprecated: Use the Target field in the BuildOptions instead. -+xxx_messageInfo_ -+' "${SC_OUT}" -+ -+# - special golint on package comments. -+lint_package_comment_per_package() { -+ # Number of files in this go package. -+ fileCount=$(go list -f '{{len .GoFiles}}' $1) -+ if [ ${fileCount} -eq 0 ]; then -+ return 0 -+ fi -+ # Number of package errors generated by golint. -+ lintPackageCommentErrorsCount=$(golint --min_confidence 0 $1 | grep -c "should have a package comment") -+ # golint complains about every file that's missing the package comment. If the -+ # number of files for this package is greater than the number of errors, there's -+ # at least one file with package comment, good. Otherwise, fail. -+ if [ ${fileCount} -le ${lintPackageCommentErrorsCount} ]; then -+ echo "Package $1 (with ${fileCount} files) is missing package comment" -+ return 1 -+ fi -+} -+lint_package_comment() { -+ set +ex -+ -+ count=0 -+ for i in $(go list ./...); do -+ lint_package_comment_per_package "$i" -+ ((count += $?)) -+ done -+ -+ set -ex -+ return $count -+} -+lint_package_comment -+ -+echo SUCCESS -diff --git a/vendor/google.golang.org/protobuf/LICENSE b/vendor/google.golang.org/protobuf/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/PATENTS b/vendor/google.golang.org/protobuf/PATENTS -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/encoding/protojson/decode.go b/vendor/google.golang.org/protobuf/encoding/protojson/decode.go -new file mode 100755 -index 0000000..5f28148 ---- /dev/null -+++ b/vendor/google.golang.org/protobuf/encoding/protojson/decode.go -@@ -0,0 +1,665 @@ -+// Copyright 2019 The Go Authors. All rights reserved. -+// Use of this source code is governed by a BSD-style -+// license that can be found in the LICENSE file. -+ -+package protojson -+ -+import ( -+ "encoding/base64" -+ "fmt" -+ "math" -+ "strconv" -+ "strings" -+ -+ "google.golang.org/protobuf/internal/encoding/json" -+ "google.golang.org/protobuf/internal/encoding/messageset" -+ "google.golang.org/protobuf/internal/errors" -+ "google.golang.org/protobuf/internal/flags" -+ "google.golang.org/protobuf/internal/genid" -+ "google.golang.org/protobuf/internal/pragma" -+ "google.golang.org/protobuf/internal/set" -+ "google.golang.org/protobuf/proto" -+ "google.golang.org/protobuf/reflect/protoreflect" -+ "google.golang.org/protobuf/reflect/protoregistry" -+) -+ -+// Unmarshal reads the given []byte into the given proto.Message. -+// The provided message must be mutable (e.g., a non-nil pointer to a message). -+func Unmarshal(b []byte, m proto.Message) error { -+ return UnmarshalOptions{}.Unmarshal(b, m) -+} -+ -+// UnmarshalOptions is a configurable JSON format parser. -+type UnmarshalOptions struct { -+ pragma.NoUnkeyedLiterals -+ -+ // If AllowPartial is set, input for messages that will result in missing -+ // required fields will not return an error. -+ AllowPartial bool -+ -+ // If DiscardUnknown is set, unknown fields are ignored. -+ DiscardUnknown bool -+ -+ // Resolver is used for looking up types when unmarshaling -+ // google.protobuf.Any messages or extension fields. -+ // If nil, this defaults to using protoregistry.GlobalTypes. -+ Resolver interface { -+ protoregistry.MessageTypeResolver -+ protoregistry.ExtensionTypeResolver -+ } -+} -+ -+// Unmarshal reads the given []byte and populates the given proto.Message -+// using options in the UnmarshalOptions object. -+// It will clear the message first before setting the fields. -+// If it returns an error, the given message may be partially set. -+// The provided message must be mutable (e.g., a non-nil pointer to a message). -+func (o UnmarshalOptions) Unmarshal(b []byte, m proto.Message) error { -+ return o.unmarshal(b, m) -+} -+ -+// unmarshal is a centralized function that all unmarshal operations go through. -+// For profiling purposes, avoid changing the name of this function or -+// introducing other code paths for unmarshal that do not go through this. -+func (o UnmarshalOptions) unmarshal(b []byte, m proto.Message) error { -+ proto.Reset(m) -+ -+ if o.Resolver == nil { -+ o.Resolver = protoregistry.GlobalTypes -+ } -+ -+ dec := decoder{json.NewDecoder(b), o} -+ if err := dec.unmarshalMessage(m.ProtoReflect(), false); err != nil { -+ return err -+ } -+ -+ // Check for EOF. -+ tok, err := dec.Read() -+ if err != nil { -+ return err -+ } -+ if tok.Kind() != json.EOF { -+ return dec.unexpectedTokenError(tok) -+ } -+ -+ if o.AllowPartial { -+ return nil -+ } -+ return proto.CheckInitialized(m) -+} -+ -+type decoder struct { -+ *json.Decoder -+ opts UnmarshalOptions -+} -+ -+// newError returns an error object with position info. -+func (d decoder) newError(pos int, f string, x ...interface{}) error { -+ line, column := d.Position(pos) -+ head := fmt.Sprintf("(line %d:%d): ", line, column) -+ return errors.New(head+f, x...) -+} -+ -+// unexpectedTokenError returns a syntax error for the given unexpected token. -+func (d decoder) unexpectedTokenError(tok json.Token) error { -+ return d.syntaxError(tok.Pos(), "unexpected token %s", tok.RawString()) -+} -+ -+// syntaxError returns a syntax error for given position. -+func (d decoder) syntaxError(pos int, f string, x ...interface{}) error { -+ line, column := d.Position(pos) -+ head := fmt.Sprintf("syntax error (line %d:%d): ", line, column) -+ return errors.New(head+f, x...) -+} -+ -+// unmarshalMessage unmarshals a message into the given protoreflect.Message. -+func (d decoder) unmarshalMessage(m protoreflect.Message, skipTypeURL bool) error { -+ if unmarshal := wellKnownTypeUnmarshaler(m.Descriptor().FullName()); unmarshal != nil { -+ return unmarshal(d, m) -+ } -+ -+ tok, err := d.Read() -+ if err != nil { -+ return err -+ } -+ if tok.Kind() != json.ObjectOpen { -+ return d.unexpectedTokenError(tok) -+ } -+ -+ messageDesc := m.Descriptor() -+ if !flags.ProtoLegacy && messageset.IsMessageSet(messageDesc) { -+ return errors.New("no support for proto1 MessageSets") -+ } -+ -+ var seenNums set.Ints -+ var seenOneofs set.Ints -+ fieldDescs := messageDesc.Fields() -+ for { -+ // Read field name. -+ tok, err := d.Read() -+ if err != nil { -+ return err -+ } -+ switch tok.Kind() { -+ default: -+ return d.unexpectedTokenError(tok) -+ case json.ObjectClose: -+ return nil -+ case json.Name: -+ // Continue below. -+ } -+ -+ name := tok.Name() -+ // Unmarshaling a non-custom embedded message in Any will contain the -+ // JSON field "@type" which should be skipped because it is not a field -+ // of the embedded message, but simply an artifact of the Any format. -+ if skipTypeURL && name == "@type" { -+ d.Read() -+ continue -+ } -+ -+ // Get the FieldDescriptor. -+ var fd protoreflect.FieldDescriptor -+ if strings.HasPrefix(name, "[") && strings.HasSuffix(name, "]") { -+ // Only extension names are in [name] format. -+ extName := protoreflect.FullName(name[1 : len(name)-1]) -+ extType, err := d.opts.Resolver.FindExtensionByName(extName) -+ if err != nil && err != protoregistry.NotFound { -+ return d.newError(tok.Pos(), "unable to resolve %s: %v", tok.RawString(), err) -+ } -+ if extType != nil { -+ fd = extType.TypeDescriptor() -+ if !messageDesc.ExtensionRanges().Has(fd.Number()) || fd.ContainingMessage().FullName() != messageDesc.FullName() { -+ return d.newError(tok.Pos(), "message %v cannot be extended by %v", messageDesc.FullName(), fd.FullName()) -+ } -+ } -+ } else { -+ // The name can either be the JSON name or the proto field name. -+ fd = fieldDescs.ByJSONName(name) -+ if fd == nil { -+ fd = fieldDescs.ByTextName(name) -+ } -+ } -+ if flags.ProtoLegacy { -+ if fd != nil && fd.IsWeak() && fd.Message().IsPlaceholder() { -+ fd = nil // reset since the weak reference is not linked in -+ } -+ } -+ -+ if fd == nil { -+ // Field is unknown. -+ if d.opts.DiscardUnknown { -+ if err := d.skipJSONValue(); err != nil { -+ return err -+ } -+ continue -+ } -+ return d.newError(tok.Pos(), "unknown field %v", tok.RawString()) -+ } -+ -+ // Do not allow duplicate fields. -+ num := uint64(fd.Number()) -+ if seenNums.Has(num) { -+ return d.newError(tok.Pos(), "duplicate field %v", tok.RawString()) -+ } -+ seenNums.Set(num) -+ -+ // No need to set values for JSON null unless the field type is -+ // google.protobuf.Value or google.protobuf.NullValue. -+ if tok, _ := d.Peek(); tok.Kind() == json.Null && !isKnownValue(fd) && !isNullValue(fd) { -+ d.Read() -+ continue -+ } -+ -+ switch { -+ case fd.IsList(): -+ list := m.Mutable(fd).List() -+ if err := d.unmarshalList(list, fd); err != nil { -+ return err -+ } -+ case fd.IsMap(): -+ mmap := m.Mutable(fd).Map() -+ if err := d.unmarshalMap(mmap, fd); err != nil { -+ return err -+ } -+ default: -+ // If field is a oneof, check if it has already been set. -+ if od := fd.ContainingOneof(); od != nil { -+ idx := uint64(od.Index()) -+ if seenOneofs.Has(idx) { -+ return d.newError(tok.Pos(), "error parsing %s, oneof %v is already set", tok.RawString(), od.FullName()) -+ } -+ seenOneofs.Set(idx) -+ } -+ -+ // Required or optional fields. -+ if err := d.unmarshalSingular(m, fd); err != nil { -+ return err -+ } -+ } -+ } -+} -+ -+func isKnownValue(fd protoreflect.FieldDescriptor) bool { -+ md := fd.Message() -+ return md != nil && md.FullName() == genid.Value_message_fullname -+} -+ -+func isNullValue(fd protoreflect.FieldDescriptor) bool { -+ ed := fd.Enum() -+ return ed != nil && ed.FullName() == genid.NullValue_enum_fullname -+} -+ -+// unmarshalSingular unmarshals to the non-repeated field specified -+// by the given FieldDescriptor. -+func (d decoder) unmarshalSingular(m protoreflect.Message, fd protoreflect.FieldDescriptor) error { -+ var val protoreflect.Value -+ var err error -+ switch fd.Kind() { -+ case protoreflect.MessageKind, protoreflect.GroupKind: -+ val = m.NewField(fd) -+ err = d.unmarshalMessage(val.Message(), false) -+ default: -+ val, err = d.unmarshalScalar(fd) -+ } -+ -+ if err != nil { -+ return err -+ } -+ m.Set(fd, val) -+ return nil -+} -+ -+// unmarshalScalar unmarshals to a scalar/enum protoreflect.Value specified by -+// the given FieldDescriptor. -+func (d decoder) unmarshalScalar(fd protoreflect.FieldDescriptor) (protoreflect.Value, error) { -+ const b32 int = 32 -+ const b64 int = 64 -+ -+ tok, err := d.Read() -+ if err != nil { -+ return protoreflect.Value{}, err -+ } -+ -+ kind := fd.Kind() -+ switch kind { -+ case protoreflect.BoolKind: -+ if tok.Kind() == json.Bool { -+ return protoreflect.ValueOfBool(tok.Bool()), nil -+ } -+ -+ case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind: -+ if v, ok := unmarshalInt(tok, b32); ok { -+ return v, nil -+ } -+ -+ case protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind: -+ if v, ok := unmarshalInt(tok, b64); ok { -+ return v, nil -+ } -+ -+ case protoreflect.Uint32Kind, protoreflect.Fixed32Kind: -+ if v, ok := unmarshalUint(tok, b32); ok { -+ return v, nil -+ } -+ -+ case protoreflect.Uint64Kind, protoreflect.Fixed64Kind: -+ if v, ok := unmarshalUint(tok, b64); ok { -+ return v, nil -+ } -+ -+ case protoreflect.FloatKind: -+ if v, ok := unmarshalFloat(tok, b32); ok { -+ return v, nil -+ } -+ -+ case protoreflect.DoubleKind: -+ if v, ok := unmarshalFloat(tok, b64); ok { -+ return v, nil -+ } -+ -+ case protoreflect.StringKind: -+ if tok.Kind() == json.String { -+ return protoreflect.ValueOfString(tok.ParsedString()), nil -+ } -+ -+ case protoreflect.BytesKind: -+ if v, ok := unmarshalBytes(tok); ok { -+ return v, nil -+ } -+ -+ case protoreflect.EnumKind: -+ if v, ok := unmarshalEnum(tok, fd); ok { -+ return v, nil -+ } -+ -+ default: -+ panic(fmt.Sprintf("unmarshalScalar: invalid scalar kind %v", kind)) -+ } -+ -+ return protoreflect.Value{}, d.newError(tok.Pos(), "invalid value for %v type: %v", kind, tok.RawString()) -+} -+ -+func unmarshalInt(tok json.Token, bitSize int) (protoreflect.Value, bool) { -+ switch tok.Kind() { -+ case json.Number: -+ return getInt(tok, bitSize) -+ -+ case json.String: -+ // Decode number from string. -+ s := strings.TrimSpace(tok.ParsedString()) -+ if len(s) != len(tok.ParsedString()) { -+ return protoreflect.Value{}, false -+ } -+ dec := json.NewDecoder([]byte(s)) -+ tok, err := dec.Read() -+ if err != nil { -+ return protoreflect.Value{}, false -+ } -+ return getInt(tok, bitSize) -+ } -+ return protoreflect.Value{}, false -+} -+ -+func getInt(tok json.Token, bitSize int) (protoreflect.Value, bool) { -+ n, ok := tok.Int(bitSize) -+ if !ok { -+ return protoreflect.Value{}, false -+ } -+ if bitSize == 32 { -+ return protoreflect.ValueOfInt32(int32(n)), true -+ } -+ return protoreflect.ValueOfInt64(n), true -+} -+ -+func unmarshalUint(tok json.Token, bitSize int) (protoreflect.Value, bool) { -+ switch tok.Kind() { -+ case json.Number: -+ return getUint(tok, bitSize) -+ -+ case json.String: -+ // Decode number from string. -+ s := strings.TrimSpace(tok.ParsedString()) -+ if len(s) != len(tok.ParsedString()) { -+ return protoreflect.Value{}, false -+ } -+ dec := json.NewDecoder([]byte(s)) -+ tok, err := dec.Read() -+ if err != nil { -+ return protoreflect.Value{}, false -+ } -+ return getUint(tok, bitSize) -+ } -+ return protoreflect.Value{}, false -+} -+ -+func getUint(tok json.Token, bitSize int) (protoreflect.Value, bool) { -+ n, ok := tok.Uint(bitSize) -+ if !ok { -+ return protoreflect.Value{}, false -+ } -+ if bitSize == 32 { -+ return protoreflect.ValueOfUint32(uint32(n)), true -+ } -+ return protoreflect.ValueOfUint64(n), true -+} -+ -+func unmarshalFloat(tok json.Token, bitSize int) (protoreflect.Value, bool) { -+ switch tok.Kind() { -+ case json.Number: -+ return getFloat(tok, bitSize) -+ -+ case json.String: -+ s := tok.ParsedString() -+ switch s { -+ case "NaN": -+ if bitSize == 32 { -+ return protoreflect.ValueOfFloat32(float32(math.NaN())), true -+ } -+ return protoreflect.ValueOfFloat64(math.NaN()), true -+ case "Infinity": -+ if bitSize == 32 { -+ return protoreflect.ValueOfFloat32(float32(math.Inf(+1))), true -+ } -+ return protoreflect.ValueOfFloat64(math.Inf(+1)), true -+ case "-Infinity": -+ if bitSize == 32 { -+ return protoreflect.ValueOfFloat32(float32(math.Inf(-1))), true -+ } -+ return protoreflect.ValueOfFloat64(math.Inf(-1)), true -+ } -+ -+ // Decode number from string. -+ if len(s) != len(strings.TrimSpace(s)) { -+ return protoreflect.Value{}, false -+ } -+ dec := json.NewDecoder([]byte(s)) -+ tok, err := dec.Read() -+ if err != nil { -+ return protoreflect.Value{}, false -+ } -+ return getFloat(tok, bitSize) -+ } -+ return protoreflect.Value{}, false -+} -+ -+func getFloat(tok json.Token, bitSize int) (protoreflect.Value, bool) { -+ n, ok := tok.Float(bitSize) -+ if !ok { -+ return protoreflect.Value{}, false -+ } -+ if bitSize == 32 { -+ return protoreflect.ValueOfFloat32(float32(n)), true -+ } -+ return protoreflect.ValueOfFloat64(n), true -+} -+ -+func unmarshalBytes(tok json.Token) (protoreflect.Value, bool) { -+ if tok.Kind() != json.String { -+ return protoreflect.Value{}, false -+ } -+ -+ s := tok.ParsedString() -+ enc := base64.StdEncoding -+ if strings.ContainsAny(s, "-_") { -+ enc = base64.URLEncoding -+ } -+ if len(s)%4 != 0 { -+ enc = enc.WithPadding(base64.NoPadding) -+ } -+ b, err := enc.DecodeString(s) -+ if err != nil { -+ return protoreflect.Value{}, false -+ } -+ return protoreflect.ValueOfBytes(b), true -+} -+ -+func unmarshalEnum(tok json.Token, fd protoreflect.FieldDescriptor) (protoreflect.Value, bool) { -+ switch tok.Kind() { -+ case json.String: -+ // Lookup EnumNumber based on name. -+ s := tok.ParsedString() -+ if enumVal := fd.Enum().Values().ByName(protoreflect.Name(s)); enumVal != nil { -+ return protoreflect.ValueOfEnum(enumVal.Number()), true -+ } -+ -+ case json.Number: -+ if n, ok := tok.Int(32); ok { -+ return protoreflect.ValueOfEnum(protoreflect.EnumNumber(n)), true -+ } -+ -+ case json.Null: -+ // This is only valid for google.protobuf.NullValue. -+ if isNullValue(fd) { -+ return protoreflect.ValueOfEnum(0), true -+ } -+ } -+ -+ return protoreflect.Value{}, false -+} -+ -+func (d decoder) unmarshalList(list protoreflect.List, fd protoreflect.FieldDescriptor) error { -+ tok, err := d.Read() -+ if err != nil { -+ return err -+ } -+ if tok.Kind() != json.ArrayOpen { -+ return d.unexpectedTokenError(tok) -+ } -+ -+ switch fd.Kind() { -+ case protoreflect.MessageKind, protoreflect.GroupKind: -+ for { -+ tok, err := d.Peek() -+ if err != nil { -+ return err -+ } -+ -+ if tok.Kind() == json.ArrayClose { -+ d.Read() -+ return nil -+ } -+ -+ val := list.NewElement() -+ if err := d.unmarshalMessage(val.Message(), false); err != nil { -+ return err -+ } -+ list.Append(val) -+ } -+ default: -+ for { -+ tok, err := d.Peek() -+ if err != nil { -+ return err -+ } -+ -+ if tok.Kind() == json.ArrayClose { -+ d.Read() -+ return nil -+ } -+ -+ val, err := d.unmarshalScalar(fd) -+ if err != nil { -+ return err -+ } -+ list.Append(val) -+ } -+ } -+ -+ return nil -+} -+ -+func (d decoder) unmarshalMap(mmap protoreflect.Map, fd protoreflect.FieldDescriptor) error { -+ tok, err := d.Read() -+ if err != nil { -+ return err -+ } -+ if tok.Kind() != json.ObjectOpen { -+ return d.unexpectedTokenError(tok) -+ } -+ -+ // Determine ahead whether map entry is a scalar type or a message type in -+ // order to call the appropriate unmarshalMapValue func inside the for loop -+ // below. -+ var unmarshalMapValue func() (protoreflect.Value, error) -+ switch fd.MapValue().Kind() { -+ case protoreflect.MessageKind, protoreflect.GroupKind: -+ unmarshalMapValue = func() (protoreflect.Value, error) { -+ val := mmap.NewValue() -+ if err := d.unmarshalMessage(val.Message(), false); err != nil { -+ return protoreflect.Value{}, err -+ } -+ return val, nil -+ } -+ default: -+ unmarshalMapValue = func() (protoreflect.Value, error) { -+ return d.unmarshalScalar(fd.MapValue()) -+ } -+ } -+ -+Loop: -+ for { -+ // Read field name. -+ tok, err := d.Read() -+ if err != nil { -+ return err -+ } -+ switch tok.Kind() { -+ default: -+ return d.unexpectedTokenError(tok) -+ case json.ObjectClose: -+ break Loop -+ case json.Name: -+ // Continue. -+ } -+ -+ // Unmarshal field name. -+ pkey, err := d.unmarshalMapKey(tok, fd.MapKey()) -+ if err != nil { -+ return err -+ } -+ -+ // Check for duplicate field name. -+ if mmap.Has(pkey) { -+ return d.newError(tok.Pos(), "duplicate map key %v", tok.RawString()) -+ } -+ -+ // Read and unmarshal field value. -+ pval, err := unmarshalMapValue() -+ if err != nil { -+ return err -+ } -+ -+ mmap.Set(pkey, pval) -+ } -+ -+ return nil -+} -+ -+// unmarshalMapKey converts given token of Name kind into a protoreflect.MapKey. -+// A map key type is any integral or string type. -+func (d decoder) unmarshalMapKey(tok json.Token, fd protoreflect.FieldDescriptor) (protoreflect.MapKey, error) { -+ const b32 = 32 -+ const b64 = 64 -+ const base10 = 10 -+ -+ name := tok.Name() -+ kind := fd.Kind() -+ switch kind { -+ case protoreflect.StringKind: -+ return protoreflect.ValueOfString(name).MapKey(), nil -+ -+ case protoreflect.BoolKind: -+ switch name { -+ case "true": -+ return protoreflect.ValueOfBool(true).MapKey(), nil -+ case "false": -+ return protoreflect.ValueOfBool(false).MapKey(), nil -+ } -+ -+ case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind: -+ if n, err := strconv.ParseInt(name, base10, b32); err == nil { -+ return protoreflect.ValueOfInt32(int32(n)).MapKey(), nil -+ } -+ -+ case protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind: -+ if n, err := strconv.ParseInt(name, base10, b64); err == nil { -+ return protoreflect.ValueOfInt64(int64(n)).MapKey(), nil -+ } -+ -+ case protoreflect.Uint32Kind, protoreflect.Fixed32Kind: -+ if n, err := strconv.ParseUint(name, base10, b32); err == nil { -+ return protoreflect.ValueOfUint32(uint32(n)).MapKey(), nil -+ } -+ -+ case protoreflect.Uint64Kind, protoreflect.Fixed64Kind: -+ if n, err := strconv.ParseUint(name, base10, b64); err == nil { -+ return protoreflect.ValueOfUint64(uint64(n)).MapKey(), nil -+ } -+ -+ default: -+ panic(fmt.Sprintf("invalid kind for map key: %v", kind)) -+ } -+ -+ return protoreflect.MapKey{}, d.newError(tok.Pos(), "invalid value for %v key: %s", kind, tok.RawString()) -+} -diff --git a/vendor/google.golang.org/protobuf/encoding/protojson/doc.go b/vendor/google.golang.org/protobuf/encoding/protojson/doc.go -new file mode 100755 -index 0000000..21d5d2c ---- /dev/null -+++ b/vendor/google.golang.org/protobuf/encoding/protojson/doc.go -@@ -0,0 +1,11 @@ -+// Copyright 2019 The Go Authors. All rights reserved. -+// Use of this source code is governed by a BSD-style -+// license that can be found in the LICENSE file. -+ -+// Package protojson marshals and unmarshals protocol buffer messages as JSON -+// format. It follows the guide at -+// https://protobuf.dev/programming-guides/proto3#json. -+// -+// This package produces a different output than the standard "encoding/json" -+// package, which does not operate correctly on protocol buffer messages. -+package protojson -diff --git a/vendor/google.golang.org/protobuf/encoding/protojson/encode.go b/vendor/google.golang.org/protobuf/encoding/protojson/encode.go -new file mode 100755 -index 0000000..66b9587 ---- /dev/null -+++ b/vendor/google.golang.org/protobuf/encoding/protojson/encode.go -@@ -0,0 +1,349 @@ -+// Copyright 2019 The Go Authors. All rights reserved. -+// Use of this source code is governed by a BSD-style -+// license that can be found in the LICENSE file. -+ -+package protojson -+ -+import ( -+ "encoding/base64" -+ "fmt" -+ -+ "google.golang.org/protobuf/internal/encoding/json" -+ "google.golang.org/protobuf/internal/encoding/messageset" -+ "google.golang.org/protobuf/internal/errors" -+ "google.golang.org/protobuf/internal/filedesc" -+ "google.golang.org/protobuf/internal/flags" -+ "google.golang.org/protobuf/internal/genid" -+ "google.golang.org/protobuf/internal/order" -+ "google.golang.org/protobuf/internal/pragma" -+ "google.golang.org/protobuf/proto" -+ "google.golang.org/protobuf/reflect/protoreflect" -+ "google.golang.org/protobuf/reflect/protoregistry" -+) -+ -+const defaultIndent = " " -+ -+// Format formats the message as a multiline string. -+// This function is only intended for human consumption and ignores errors. -+// Do not depend on the output being stable. It may change over time across -+// different versions of the program. -+func Format(m proto.Message) string { -+ return MarshalOptions{Multiline: true}.Format(m) -+} -+ -+// Marshal writes the given proto.Message in JSON format using default options. -+// Do not depend on the output being stable. It may change over time across -+// different versions of the program. -+func Marshal(m proto.Message) ([]byte, error) { -+ return MarshalOptions{}.Marshal(m) -+} -+ -+// MarshalOptions is a configurable JSON format marshaler. -+type MarshalOptions struct { -+ pragma.NoUnkeyedLiterals -+ -+ // Multiline specifies whether the marshaler should format the output in -+ // indented-form with every textual element on a new line. -+ // If Indent is an empty string, then an arbitrary indent is chosen. -+ Multiline bool -+ -+ // Indent specifies the set of indentation characters to use in a multiline -+ // formatted output such that every entry is preceded by Indent and -+ // terminated by a newline. If non-empty, then Multiline is treated as true. -+ // Indent can only be composed of space or tab characters. -+ Indent string -+ -+ // AllowPartial allows messages that have missing required fields to marshal -+ // without returning an error. If AllowPartial is false (the default), -+ // Marshal will return error if there are any missing required fields. -+ AllowPartial bool -+ -+ // UseProtoNames uses proto field name instead of lowerCamelCase name in JSON -+ // field names. -+ UseProtoNames bool -+ -+ // UseEnumNumbers emits enum values as numbers. -+ UseEnumNumbers bool -+ -+ // EmitUnpopulated specifies whether to emit unpopulated fields. It does not -+ // emit unpopulated oneof fields or unpopulated extension fields. -+ // The JSON value emitted for unpopulated fields are as follows: -+ // ╔═══════╤════════════════════════════╗ -+ // ║ JSON │ Protobuf field ║ -+ // ╠═══════╪════════════════════════════╣ -+ // ║ false │ proto3 boolean fields ║ -+ // ║ 0 │ proto3 numeric fields ║ -+ // ║ "" │ proto3 string/bytes fields ║ -+ // ║ null │ proto2 scalar fields ║ -+ // ║ null │ message fields ║ -+ // ║ [] │ list fields ║ -+ // ║ {} │ map fields ║ -+ // ╚═══════╧════════════════════════════╝ -+ EmitUnpopulated bool -+ -+ // Resolver is used for looking up types when expanding google.protobuf.Any -+ // messages. If nil, this defaults to using protoregistry.GlobalTypes. -+ Resolver interface { -+ protoregistry.ExtensionTypeResolver -+ protoregistry.MessageTypeResolver -+ } -+} -+ -+// Format formats the message as a string. -+// This method is only intended for human consumption and ignores errors. -+// Do not depend on the output being stable. It may change over time across -+// different versions of the program. -+func (o MarshalOptions) Format(m proto.Message) string { -+ if m == nil || !m.ProtoReflect().IsValid() { -+ return "" // invalid syntax, but okay since this is for debugging -+ } -+ o.AllowPartial = true -+ b, _ := o.Marshal(m) -+ return string(b) -+} -+ -+// Marshal marshals the given proto.Message in the JSON format using options in -+// MarshalOptions. Do not depend on the output being stable. It may change over -+// time across different versions of the program. -+func (o MarshalOptions) Marshal(m proto.Message) ([]byte, error) { -+ return o.marshal(nil, m) -+} -+ -+// MarshalAppend appends the JSON format encoding of m to b, -+// returning the result. -+func (o MarshalOptions) MarshalAppend(b []byte, m proto.Message) ([]byte, error) { -+ return o.marshal(b, m) -+} -+ -+// marshal is a centralized function that all marshal operations go through. -+// For profiling purposes, avoid changing the name of this function or -+// introducing other code paths for marshal that do not go through this. -+func (o MarshalOptions) marshal(b []byte, m proto.Message) ([]byte, error) { -+ if o.Multiline && o.Indent == "" { -+ o.Indent = defaultIndent -+ } -+ if o.Resolver == nil { -+ o.Resolver = protoregistry.GlobalTypes -+ } -+ -+ internalEnc, err := json.NewEncoder(b, o.Indent) -+ if err != nil { -+ return nil, err -+ } -+ -+ // Treat nil message interface as an empty message, -+ // in which case the output in an empty JSON object. -+ if m == nil { -+ return append(b, '{', '}'), nil -+ } -+ -+ enc := encoder{internalEnc, o} -+ if err := enc.marshalMessage(m.ProtoReflect(), ""); err != nil { -+ return nil, err -+ } -+ if o.AllowPartial { -+ return enc.Bytes(), nil -+ } -+ return enc.Bytes(), proto.CheckInitialized(m) -+} -+ -+type encoder struct { -+ *json.Encoder -+ opts MarshalOptions -+} -+ -+// typeFieldDesc is a synthetic field descriptor used for the "@type" field. -+var typeFieldDesc = func() protoreflect.FieldDescriptor { -+ var fd filedesc.Field -+ fd.L0.FullName = "@type" -+ fd.L0.Index = -1 -+ fd.L1.Cardinality = protoreflect.Optional -+ fd.L1.Kind = protoreflect.StringKind -+ return &fd -+}() -+ -+// typeURLFieldRanger wraps a protoreflect.Message and modifies its Range method -+// to additionally iterate over a synthetic field for the type URL. -+type typeURLFieldRanger struct { -+ order.FieldRanger -+ typeURL string -+} -+ -+func (m typeURLFieldRanger) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { -+ if !f(typeFieldDesc, protoreflect.ValueOfString(m.typeURL)) { -+ return -+ } -+ m.FieldRanger.Range(f) -+} -+ -+// unpopulatedFieldRanger wraps a protoreflect.Message and modifies its Range -+// method to additionally iterate over unpopulated fields. -+type unpopulatedFieldRanger struct{ protoreflect.Message } -+ -+func (m unpopulatedFieldRanger) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { -+ fds := m.Descriptor().Fields() -+ for i := 0; i < fds.Len(); i++ { -+ fd := fds.Get(i) -+ if m.Has(fd) || fd.ContainingOneof() != nil { -+ continue // ignore populated fields and fields within a oneofs -+ } -+ -+ v := m.Get(fd) -+ isProto2Scalar := fd.Syntax() == protoreflect.Proto2 && fd.Default().IsValid() -+ isSingularMessage := fd.Cardinality() != protoreflect.Repeated && fd.Message() != nil -+ if isProto2Scalar || isSingularMessage { -+ v = protoreflect.Value{} // use invalid value to emit null -+ } -+ if !f(fd, v) { -+ return -+ } -+ } -+ m.Message.Range(f) -+} -+ -+// marshalMessage marshals the fields in the given protoreflect.Message. -+// If the typeURL is non-empty, then a synthetic "@type" field is injected -+// containing the URL as the value. -+func (e encoder) marshalMessage(m protoreflect.Message, typeURL string) error { -+ if !flags.ProtoLegacy && messageset.IsMessageSet(m.Descriptor()) { -+ return errors.New("no support for proto1 MessageSets") -+ } -+ -+ if marshal := wellKnownTypeMarshaler(m.Descriptor().FullName()); marshal != nil { -+ return marshal(e, m) -+ } -+ -+ e.StartObject() -+ defer e.EndObject() -+ -+ var fields order.FieldRanger = m -+ if e.opts.EmitUnpopulated { -+ fields = unpopulatedFieldRanger{m} -+ } -+ if typeURL != "" { -+ fields = typeURLFieldRanger{fields, typeURL} -+ } -+ -+ var err error -+ order.RangeFields(fields, order.IndexNameFieldOrder, func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { -+ name := fd.JSONName() -+ if e.opts.UseProtoNames { -+ name = fd.TextName() -+ } -+ -+ if err = e.WriteName(name); err != nil { -+ return false -+ } -+ if err = e.marshalValue(v, fd); err != nil { -+ return false -+ } -+ return true -+ }) -+ return err -+} -+ -+// marshalValue marshals the given protoreflect.Value. -+func (e encoder) marshalValue(val protoreflect.Value, fd protoreflect.FieldDescriptor) error { -+ switch { -+ case fd.IsList(): -+ return e.marshalList(val.List(), fd) -+ case fd.IsMap(): -+ return e.marshalMap(val.Map(), fd) -+ default: -+ return e.marshalSingular(val, fd) -+ } -+} -+ -+// marshalSingular marshals the given non-repeated field value. This includes -+// all scalar types, enums, messages, and groups. -+func (e encoder) marshalSingular(val protoreflect.Value, fd protoreflect.FieldDescriptor) error { -+ if !val.IsValid() { -+ e.WriteNull() -+ return nil -+ } -+ -+ switch kind := fd.Kind(); kind { -+ case protoreflect.BoolKind: -+ e.WriteBool(val.Bool()) -+ -+ case protoreflect.StringKind: -+ if e.WriteString(val.String()) != nil { -+ return errors.InvalidUTF8(string(fd.FullName())) -+ } -+ -+ case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind: -+ e.WriteInt(val.Int()) -+ -+ case protoreflect.Uint32Kind, protoreflect.Fixed32Kind: -+ e.WriteUint(val.Uint()) -+ -+ case protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Uint64Kind, -+ protoreflect.Sfixed64Kind, protoreflect.Fixed64Kind: -+ // 64-bit integers are written out as JSON string. -+ e.WriteString(val.String()) -+ -+ case protoreflect.FloatKind: -+ // Encoder.WriteFloat handles the special numbers NaN and infinites. -+ e.WriteFloat(val.Float(), 32) -+ -+ case protoreflect.DoubleKind: -+ // Encoder.WriteFloat handles the special numbers NaN and infinites. -+ e.WriteFloat(val.Float(), 64) -+ -+ case protoreflect.BytesKind: -+ e.WriteString(base64.StdEncoding.EncodeToString(val.Bytes())) -+ -+ case protoreflect.EnumKind: -+ if fd.Enum().FullName() == genid.NullValue_enum_fullname { -+ e.WriteNull() -+ } else { -+ desc := fd.Enum().Values().ByNumber(val.Enum()) -+ if e.opts.UseEnumNumbers || desc == nil { -+ e.WriteInt(int64(val.Enum())) -+ } else { -+ e.WriteString(string(desc.Name())) -+ } -+ } -+ -+ case protoreflect.MessageKind, protoreflect.GroupKind: -+ if err := e.marshalMessage(val.Message(), ""); err != nil { -+ return err -+ } -+ -+ default: -+ panic(fmt.Sprintf("%v has unknown kind: %v", fd.FullName(), kind)) -+ } -+ return nil -+} -+ -+// marshalList marshals the given protoreflect.List. -+func (e encoder) marshalList(list protoreflect.List, fd protoreflect.FieldDescriptor) error { -+ e.StartArray() -+ defer e.EndArray() -+ -+ for i := 0; i < list.Len(); i++ { -+ item := list.Get(i) -+ if err := e.marshalSingular(item, fd); err != nil { -+ return err -+ } -+ } -+ return nil -+} -+ -+// marshalMap marshals given protoreflect.Map. -+func (e encoder) marshalMap(mmap protoreflect.Map, fd protoreflect.FieldDescriptor) error { -+ e.StartObject() -+ defer e.EndObject() -+ -+ var err error -+ order.RangeEntries(mmap, order.GenericKeyOrder, func(k protoreflect.MapKey, v protoreflect.Value) bool { -+ if err = e.WriteName(k.String()); err != nil { -+ return false -+ } -+ if err = e.marshalSingular(v, fd.MapValue()); err != nil { -+ return false -+ } -+ return true -+ }) -+ return err -+} -diff --git a/vendor/google.golang.org/protobuf/encoding/protojson/well_known_types.go b/vendor/google.golang.org/protobuf/encoding/protojson/well_known_types.go -new file mode 100755 -index 0000000..6c37d41 ---- /dev/null -+++ b/vendor/google.golang.org/protobuf/encoding/protojson/well_known_types.go -@@ -0,0 +1,895 @@ -+// Copyright 2019 The Go Authors. All rights reserved. -+// Use of this source code is governed by a BSD-style -+// license that can be found in the LICENSE file. -+ -+package protojson -+ -+import ( -+ "bytes" -+ "fmt" -+ "math" -+ "strconv" -+ "strings" -+ "time" -+ -+ "google.golang.org/protobuf/internal/encoding/json" -+ "google.golang.org/protobuf/internal/errors" -+ "google.golang.org/protobuf/internal/genid" -+ "google.golang.org/protobuf/internal/strs" -+ "google.golang.org/protobuf/proto" -+ "google.golang.org/protobuf/reflect/protoreflect" -+) -+ -+type marshalFunc func(encoder, protoreflect.Message) error -+ -+// wellKnownTypeMarshaler returns a marshal function if the message type -+// has specialized serialization behavior. It returns nil otherwise. -+func wellKnownTypeMarshaler(name protoreflect.FullName) marshalFunc { -+ if name.Parent() == genid.GoogleProtobuf_package { -+ switch name.Name() { -+ case genid.Any_message_name: -+ return encoder.marshalAny -+ case genid.Timestamp_message_name: -+ return encoder.marshalTimestamp -+ case genid.Duration_message_name: -+ return encoder.marshalDuration -+ case genid.BoolValue_message_name, -+ genid.Int32Value_message_name, -+ genid.Int64Value_message_name, -+ genid.UInt32Value_message_name, -+ genid.UInt64Value_message_name, -+ genid.FloatValue_message_name, -+ genid.DoubleValue_message_name, -+ genid.StringValue_message_name, -+ genid.BytesValue_message_name: -+ return encoder.marshalWrapperType -+ case genid.Struct_message_name: -+ return encoder.marshalStruct -+ case genid.ListValue_message_name: -+ return encoder.marshalListValue -+ case genid.Value_message_name: -+ return encoder.marshalKnownValue -+ case genid.FieldMask_message_name: -+ return encoder.marshalFieldMask -+ case genid.Empty_message_name: -+ return encoder.marshalEmpty -+ } -+ } -+ return nil -+} -+ -+type unmarshalFunc func(decoder, protoreflect.Message) error -+ -+// wellKnownTypeUnmarshaler returns a unmarshal function if the message type -+// has specialized serialization behavior. It returns nil otherwise. -+func wellKnownTypeUnmarshaler(name protoreflect.FullName) unmarshalFunc { -+ if name.Parent() == genid.GoogleProtobuf_package { -+ switch name.Name() { -+ case genid.Any_message_name: -+ return decoder.unmarshalAny -+ case genid.Timestamp_message_name: -+ return decoder.unmarshalTimestamp -+ case genid.Duration_message_name: -+ return decoder.unmarshalDuration -+ case genid.BoolValue_message_name, -+ genid.Int32Value_message_name, -+ genid.Int64Value_message_name, -+ genid.UInt32Value_message_name, -+ genid.UInt64Value_message_name, -+ genid.FloatValue_message_name, -+ genid.DoubleValue_message_name, -+ genid.StringValue_message_name, -+ genid.BytesValue_message_name: -+ return decoder.unmarshalWrapperType -+ case genid.Struct_message_name: -+ return decoder.unmarshalStruct -+ case genid.ListValue_message_name: -+ return decoder.unmarshalListValue -+ case genid.Value_message_name: -+ return decoder.unmarshalKnownValue -+ case genid.FieldMask_message_name: -+ return decoder.unmarshalFieldMask -+ case genid.Empty_message_name: -+ return decoder.unmarshalEmpty -+ } -+ } -+ return nil -+} -+ -+// The JSON representation of an Any message uses the regular representation of -+// the deserialized, embedded message, with an additional field `@type` which -+// contains the type URL. If the embedded message type is well-known and has a -+// custom JSON representation, that representation will be embedded adding a -+// field `value` which holds the custom JSON in addition to the `@type` field. -+ -+func (e encoder) marshalAny(m protoreflect.Message) error { -+ fds := m.Descriptor().Fields() -+ fdType := fds.ByNumber(genid.Any_TypeUrl_field_number) -+ fdValue := fds.ByNumber(genid.Any_Value_field_number) -+ -+ if !m.Has(fdType) { -+ if !m.Has(fdValue) { -+ // If message is empty, marshal out empty JSON object. -+ e.StartObject() -+ e.EndObject() -+ return nil -+ } else { -+ // Return error if type_url field is not set, but value is set. -+ return errors.New("%s: %v is not set", genid.Any_message_fullname, genid.Any_TypeUrl_field_name) -+ } -+ } -+ -+ typeVal := m.Get(fdType) -+ valueVal := m.Get(fdValue) -+ -+ // Resolve the type in order to unmarshal value field. -+ typeURL := typeVal.String() -+ emt, err := e.opts.Resolver.FindMessageByURL(typeURL) -+ if err != nil { -+ return errors.New("%s: unable to resolve %q: %v", genid.Any_message_fullname, typeURL, err) -+ } -+ -+ em := emt.New() -+ err = proto.UnmarshalOptions{ -+ AllowPartial: true, // never check required fields inside an Any -+ Resolver: e.opts.Resolver, -+ }.Unmarshal(valueVal.Bytes(), em.Interface()) -+ if err != nil { -+ return errors.New("%s: unable to unmarshal %q: %v", genid.Any_message_fullname, typeURL, err) -+ } -+ -+ // If type of value has custom JSON encoding, marshal out a field "value" -+ // with corresponding custom JSON encoding of the embedded message as a -+ // field. -+ if marshal := wellKnownTypeMarshaler(emt.Descriptor().FullName()); marshal != nil { -+ e.StartObject() -+ defer e.EndObject() -+ -+ // Marshal out @type field. -+ e.WriteName("@type") -+ if err := e.WriteString(typeURL); err != nil { -+ return err -+ } -+ -+ e.WriteName("value") -+ return marshal(e, em) -+ } -+ -+ // Else, marshal out the embedded message's fields in this Any object. -+ if err := e.marshalMessage(em, typeURL); err != nil { -+ return err -+ } -+ -+ return nil -+} -+ -+func (d decoder) unmarshalAny(m protoreflect.Message) error { -+ // Peek to check for json.ObjectOpen to avoid advancing a read. -+ start, err := d.Peek() -+ if err != nil { -+ return err -+ } -+ if start.Kind() != json.ObjectOpen { -+ return d.unexpectedTokenError(start) -+ } -+ -+ // Use another decoder to parse the unread bytes for @type field. This -+ // avoids advancing a read from current decoder because the current JSON -+ // object may contain the fields of the embedded type. -+ dec := decoder{d.Clone(), UnmarshalOptions{}} -+ tok, err := findTypeURL(dec) -+ switch err { -+ case errEmptyObject: -+ // An empty JSON object translates to an empty Any message. -+ d.Read() // Read json.ObjectOpen. -+ d.Read() // Read json.ObjectClose. -+ return nil -+ -+ case errMissingType: -+ if d.opts.DiscardUnknown { -+ // Treat all fields as unknowns, similar to an empty object. -+ return d.skipJSONValue() -+ } -+ // Use start.Pos() for line position. -+ return d.newError(start.Pos(), err.Error()) -+ -+ default: -+ if err != nil { -+ return err -+ } -+ } -+ -+ typeURL := tok.ParsedString() -+ emt, err := d.opts.Resolver.FindMessageByURL(typeURL) -+ if err != nil { -+ return d.newError(tok.Pos(), "unable to resolve %v: %q", tok.RawString(), err) -+ } -+ -+ // Create new message for the embedded message type and unmarshal into it. -+ em := emt.New() -+ if unmarshal := wellKnownTypeUnmarshaler(emt.Descriptor().FullName()); unmarshal != nil { -+ // If embedded message is a custom type, -+ // unmarshal the JSON "value" field into it. -+ if err := d.unmarshalAnyValue(unmarshal, em); err != nil { -+ return err -+ } -+ } else { -+ // Else unmarshal the current JSON object into it. -+ if err := d.unmarshalMessage(em, true); err != nil { -+ return err -+ } -+ } -+ // Serialize the embedded message and assign the resulting bytes to the -+ // proto value field. -+ b, err := proto.MarshalOptions{ -+ AllowPartial: true, // No need to check required fields inside an Any. -+ Deterministic: true, -+ }.Marshal(em.Interface()) -+ if err != nil { -+ return d.newError(start.Pos(), "error in marshaling Any.value field: %v", err) -+ } -+ -+ fds := m.Descriptor().Fields() -+ fdType := fds.ByNumber(genid.Any_TypeUrl_field_number) -+ fdValue := fds.ByNumber(genid.Any_Value_field_number) -+ -+ m.Set(fdType, protoreflect.ValueOfString(typeURL)) -+ m.Set(fdValue, protoreflect.ValueOfBytes(b)) -+ return nil -+} -+ -+var errEmptyObject = fmt.Errorf(`empty object`) -+var errMissingType = fmt.Errorf(`missing "@type" field`) -+ -+// findTypeURL returns the token for the "@type" field value from the given -+// JSON bytes. It is expected that the given bytes start with json.ObjectOpen. -+// It returns errEmptyObject if the JSON object is empty or errMissingType if -+// @type field does not exist. It returns other error if the @type field is not -+// valid or other decoding issues. -+func findTypeURL(d decoder) (json.Token, error) { -+ var typeURL string -+ var typeTok json.Token -+ numFields := 0 -+ // Skip start object. -+ d.Read() -+ -+Loop: -+ for { -+ tok, err := d.Read() -+ if err != nil { -+ return json.Token{}, err -+ } -+ -+ switch tok.Kind() { -+ case json.ObjectClose: -+ if typeURL == "" { -+ // Did not find @type field. -+ if numFields > 0 { -+ return json.Token{}, errMissingType -+ } -+ return json.Token{}, errEmptyObject -+ } -+ break Loop -+ -+ case json.Name: -+ numFields++ -+ if tok.Name() != "@type" { -+ // Skip value. -+ if err := d.skipJSONValue(); err != nil { -+ return json.Token{}, err -+ } -+ continue -+ } -+ -+ // Return error if this was previously set already. -+ if typeURL != "" { -+ return json.Token{}, d.newError(tok.Pos(), `duplicate "@type" field`) -+ } -+ // Read field value. -+ tok, err := d.Read() -+ if err != nil { -+ return json.Token{}, err -+ } -+ if tok.Kind() != json.String { -+ return json.Token{}, d.newError(tok.Pos(), `@type field value is not a string: %v`, tok.RawString()) -+ } -+ typeURL = tok.ParsedString() -+ if typeURL == "" { -+ return json.Token{}, d.newError(tok.Pos(), `@type field contains empty value`) -+ } -+ typeTok = tok -+ } -+ } -+ -+ return typeTok, nil -+} -+ -+// skipJSONValue parses a JSON value (null, boolean, string, number, object and -+// array) in order to advance the read to the next JSON value. It relies on -+// the decoder returning an error if the types are not in valid sequence. -+func (d decoder) skipJSONValue() error { -+ tok, err := d.Read() -+ if err != nil { -+ return err -+ } -+ // Only need to continue reading for objects and arrays. -+ switch tok.Kind() { -+ case json.ObjectOpen: -+ for { -+ tok, err := d.Read() -+ if err != nil { -+ return err -+ } -+ switch tok.Kind() { -+ case json.ObjectClose: -+ return nil -+ case json.Name: -+ // Skip object field value. -+ if err := d.skipJSONValue(); err != nil { -+ return err -+ } -+ } -+ } -+ -+ case json.ArrayOpen: -+ for { -+ tok, err := d.Peek() -+ if err != nil { -+ return err -+ } -+ switch tok.Kind() { -+ case json.ArrayClose: -+ d.Read() -+ return nil -+ default: -+ // Skip array item. -+ if err := d.skipJSONValue(); err != nil { -+ return err -+ } -+ } -+ } -+ } -+ return nil -+} -+ -+// unmarshalAnyValue unmarshals the given custom-type message from the JSON -+// object's "value" field. -+func (d decoder) unmarshalAnyValue(unmarshal unmarshalFunc, m protoreflect.Message) error { -+ // Skip ObjectOpen, and start reading the fields. -+ d.Read() -+ -+ var found bool // Used for detecting duplicate "value". -+ for { -+ tok, err := d.Read() -+ if err != nil { -+ return err -+ } -+ switch tok.Kind() { -+ case json.ObjectClose: -+ if !found { -+ return d.newError(tok.Pos(), `missing "value" field`) -+ } -+ return nil -+ -+ case json.Name: -+ switch tok.Name() { -+ case "@type": -+ // Skip the value as this was previously parsed already. -+ d.Read() -+ -+ case "value": -+ if found { -+ return d.newError(tok.Pos(), `duplicate "value" field`) -+ } -+ // Unmarshal the field value into the given message. -+ if err := unmarshal(d, m); err != nil { -+ return err -+ } -+ found = true -+ -+ default: -+ if d.opts.DiscardUnknown { -+ if err := d.skipJSONValue(); err != nil { -+ return err -+ } -+ continue -+ } -+ return d.newError(tok.Pos(), "unknown field %v", tok.RawString()) -+ } -+ } -+ } -+} -+ -+// Wrapper types are encoded as JSON primitives like string, number or boolean. -+ -+func (e encoder) marshalWrapperType(m protoreflect.Message) error { -+ fd := m.Descriptor().Fields().ByNumber(genid.WrapperValue_Value_field_number) -+ val := m.Get(fd) -+ return e.marshalSingular(val, fd) -+} -+ -+func (d decoder) unmarshalWrapperType(m protoreflect.Message) error { -+ fd := m.Descriptor().Fields().ByNumber(genid.WrapperValue_Value_field_number) -+ val, err := d.unmarshalScalar(fd) -+ if err != nil { -+ return err -+ } -+ m.Set(fd, val) -+ return nil -+} -+ -+// The JSON representation for Empty is an empty JSON object. -+ -+func (e encoder) marshalEmpty(protoreflect.Message) error { -+ e.StartObject() -+ e.EndObject() -+ return nil -+} -+ -+func (d decoder) unmarshalEmpty(protoreflect.Message) error { -+ tok, err := d.Read() -+ if err != nil { -+ return err -+ } -+ if tok.Kind() != json.ObjectOpen { -+ return d.unexpectedTokenError(tok) -+ } -+ -+ for { -+ tok, err := d.Read() -+ if err != nil { -+ return err -+ } -+ switch tok.Kind() { -+ case json.ObjectClose: -+ return nil -+ -+ case json.Name: -+ if d.opts.DiscardUnknown { -+ if err := d.skipJSONValue(); err != nil { -+ return err -+ } -+ continue -+ } -+ return d.newError(tok.Pos(), "unknown field %v", tok.RawString()) -+ -+ default: -+ return d.unexpectedTokenError(tok) -+ } -+ } -+} -+ -+// The JSON representation for Struct is a JSON object that contains the encoded -+// Struct.fields map and follows the serialization rules for a map. -+ -+func (e encoder) marshalStruct(m protoreflect.Message) error { -+ fd := m.Descriptor().Fields().ByNumber(genid.Struct_Fields_field_number) -+ return e.marshalMap(m.Get(fd).Map(), fd) -+} -+ -+func (d decoder) unmarshalStruct(m protoreflect.Message) error { -+ fd := m.Descriptor().Fields().ByNumber(genid.Struct_Fields_field_number) -+ return d.unmarshalMap(m.Mutable(fd).Map(), fd) -+} -+ -+// The JSON representation for ListValue is JSON array that contains the encoded -+// ListValue.values repeated field and follows the serialization rules for a -+// repeated field. -+ -+func (e encoder) marshalListValue(m protoreflect.Message) error { -+ fd := m.Descriptor().Fields().ByNumber(genid.ListValue_Values_field_number) -+ return e.marshalList(m.Get(fd).List(), fd) -+} -+ -+func (d decoder) unmarshalListValue(m protoreflect.Message) error { -+ fd := m.Descriptor().Fields().ByNumber(genid.ListValue_Values_field_number) -+ return d.unmarshalList(m.Mutable(fd).List(), fd) -+} -+ -+// The JSON representation for a Value is dependent on the oneof field that is -+// set. Each of the field in the oneof has its own custom serialization rule. A -+// Value message needs to be a oneof field set, else it is an error. -+ -+func (e encoder) marshalKnownValue(m protoreflect.Message) error { -+ od := m.Descriptor().Oneofs().ByName(genid.Value_Kind_oneof_name) -+ fd := m.WhichOneof(od) -+ if fd == nil { -+ return errors.New("%s: none of the oneof fields is set", genid.Value_message_fullname) -+ } -+ if fd.Number() == genid.Value_NumberValue_field_number { -+ if v := m.Get(fd).Float(); math.IsNaN(v) || math.IsInf(v, 0) { -+ return errors.New("%s: invalid %v value", genid.Value_NumberValue_field_fullname, v) -+ } -+ } -+ return e.marshalSingular(m.Get(fd), fd) -+} -+ -+func (d decoder) unmarshalKnownValue(m protoreflect.Message) error { -+ tok, err := d.Peek() -+ if err != nil { -+ return err -+ } -+ -+ var fd protoreflect.FieldDescriptor -+ var val protoreflect.Value -+ switch tok.Kind() { -+ case json.Null: -+ d.Read() -+ fd = m.Descriptor().Fields().ByNumber(genid.Value_NullValue_field_number) -+ val = protoreflect.ValueOfEnum(0) -+ -+ case json.Bool: -+ tok, err := d.Read() -+ if err != nil { -+ return err -+ } -+ fd = m.Descriptor().Fields().ByNumber(genid.Value_BoolValue_field_number) -+ val = protoreflect.ValueOfBool(tok.Bool()) -+ -+ case json.Number: -+ tok, err := d.Read() -+ if err != nil { -+ return err -+ } -+ fd = m.Descriptor().Fields().ByNumber(genid.Value_NumberValue_field_number) -+ var ok bool -+ val, ok = unmarshalFloat(tok, 64) -+ if !ok { -+ return d.newError(tok.Pos(), "invalid %v: %v", genid.Value_message_fullname, tok.RawString()) -+ } -+ -+ case json.String: -+ // A JSON string may have been encoded from the number_value field, -+ // e.g. "NaN", "Infinity", etc. Parsing a proto double type also allows -+ // for it to be in JSON string form. Given this custom encoding spec, -+ // however, there is no way to identify that and hence a JSON string is -+ // always assigned to the string_value field, which means that certain -+ // encoding cannot be parsed back to the same field. -+ tok, err := d.Read() -+ if err != nil { -+ return err -+ } -+ fd = m.Descriptor().Fields().ByNumber(genid.Value_StringValue_field_number) -+ val = protoreflect.ValueOfString(tok.ParsedString()) -+ -+ case json.ObjectOpen: -+ fd = m.Descriptor().Fields().ByNumber(genid.Value_StructValue_field_number) -+ val = m.NewField(fd) -+ if err := d.unmarshalStruct(val.Message()); err != nil { -+ return err -+ } -+ -+ case json.ArrayOpen: -+ fd = m.Descriptor().Fields().ByNumber(genid.Value_ListValue_field_number) -+ val = m.NewField(fd) -+ if err := d.unmarshalListValue(val.Message()); err != nil { -+ return err -+ } -+ -+ default: -+ return d.newError(tok.Pos(), "invalid %v: %v", genid.Value_message_fullname, tok.RawString()) -+ } -+ -+ m.Set(fd, val) -+ return nil -+} -+ -+// The JSON representation for a Duration is a JSON string that ends in the -+// suffix "s" (indicating seconds) and is preceded by the number of seconds, -+// with nanoseconds expressed as fractional seconds. -+// -+// Durations less than one second are represented with a 0 seconds field and a -+// positive or negative nanos field. For durations of one second or more, a -+// non-zero value for the nanos field must be of the same sign as the seconds -+// field. -+// -+// Duration.seconds must be from -315,576,000,000 to +315,576,000,000 inclusive. -+// Duration.nanos must be from -999,999,999 to +999,999,999 inclusive. -+ -+const ( -+ secondsInNanos = 999999999 -+ maxSecondsInDuration = 315576000000 -+) -+ -+func (e encoder) marshalDuration(m protoreflect.Message) error { -+ fds := m.Descriptor().Fields() -+ fdSeconds := fds.ByNumber(genid.Duration_Seconds_field_number) -+ fdNanos := fds.ByNumber(genid.Duration_Nanos_field_number) -+ -+ secsVal := m.Get(fdSeconds) -+ nanosVal := m.Get(fdNanos) -+ secs := secsVal.Int() -+ nanos := nanosVal.Int() -+ if secs < -maxSecondsInDuration || secs > maxSecondsInDuration { -+ return errors.New("%s: seconds out of range %v", genid.Duration_message_fullname, secs) -+ } -+ if nanos < -secondsInNanos || nanos > secondsInNanos { -+ return errors.New("%s: nanos out of range %v", genid.Duration_message_fullname, nanos) -+ } -+ if (secs > 0 && nanos < 0) || (secs < 0 && nanos > 0) { -+ return errors.New("%s: signs of seconds and nanos do not match", genid.Duration_message_fullname) -+ } -+ // Generated output always contains 0, 3, 6, or 9 fractional digits, -+ // depending on required precision, followed by the suffix "s". -+ var sign string -+ if secs < 0 || nanos < 0 { -+ sign, secs, nanos = "-", -1*secs, -1*nanos -+ } -+ x := fmt.Sprintf("%s%d.%09d", sign, secs, nanos) -+ x = strings.TrimSuffix(x, "000") -+ x = strings.TrimSuffix(x, "000") -+ x = strings.TrimSuffix(x, ".000") -+ e.WriteString(x + "s") -+ return nil -+} -+ -+func (d decoder) unmarshalDuration(m protoreflect.Message) error { -+ tok, err := d.Read() -+ if err != nil { -+ return err -+ } -+ if tok.Kind() != json.String { -+ return d.unexpectedTokenError(tok) -+ } -+ -+ secs, nanos, ok := parseDuration(tok.ParsedString()) -+ if !ok { -+ return d.newError(tok.Pos(), "invalid %v value %v", genid.Duration_message_fullname, tok.RawString()) -+ } -+ // Validate seconds. No need to validate nanos because parseDuration would -+ // have covered that already. -+ if secs < -maxSecondsInDuration || secs > maxSecondsInDuration { -+ return d.newError(tok.Pos(), "%v value out of range: %v", genid.Duration_message_fullname, tok.RawString()) -+ } -+ -+ fds := m.Descriptor().Fields() -+ fdSeconds := fds.ByNumber(genid.Duration_Seconds_field_number) -+ fdNanos := fds.ByNumber(genid.Duration_Nanos_field_number) -+ -+ m.Set(fdSeconds, protoreflect.ValueOfInt64(secs)) -+ m.Set(fdNanos, protoreflect.ValueOfInt32(nanos)) -+ return nil -+} -+ -+// parseDuration parses the given input string for seconds and nanoseconds value -+// for the Duration JSON format. The format is a decimal number with a suffix -+// 's'. It can have optional plus/minus sign. There needs to be at least an -+// integer or fractional part. Fractional part is limited to 9 digits only for -+// nanoseconds precision, regardless of whether there are trailing zero digits. -+// Example values are 1s, 0.1s, 1.s, .1s, +1s, -1s, -.1s. -+func parseDuration(input string) (int64, int32, bool) { -+ b := []byte(input) -+ size := len(b) -+ if size < 2 { -+ return 0, 0, false -+ } -+ if b[size-1] != 's' { -+ return 0, 0, false -+ } -+ b = b[:size-1] -+ -+ // Read optional plus/minus symbol. -+ var neg bool -+ switch b[0] { -+ case '-': -+ neg = true -+ b = b[1:] -+ case '+': -+ b = b[1:] -+ } -+ if len(b) == 0 { -+ return 0, 0, false -+ } -+ -+ // Read the integer part. -+ var intp []byte -+ switch { -+ case b[0] == '0': -+ b = b[1:] -+ -+ case '1' <= b[0] && b[0] <= '9': -+ intp = b[0:] -+ b = b[1:] -+ n := 1 -+ for len(b) > 0 && '0' <= b[0] && b[0] <= '9' { -+ n++ -+ b = b[1:] -+ } -+ intp = intp[:n] -+ -+ case b[0] == '.': -+ // Continue below. -+ -+ default: -+ return 0, 0, false -+ } -+ -+ hasFrac := false -+ var frac [9]byte -+ if len(b) > 0 { -+ if b[0] != '.' { -+ return 0, 0, false -+ } -+ // Read the fractional part. -+ b = b[1:] -+ n := 0 -+ for len(b) > 0 && n < 9 && '0' <= b[0] && b[0] <= '9' { -+ frac[n] = b[0] -+ n++ -+ b = b[1:] -+ } -+ // It is not valid if there are more bytes left. -+ if len(b) > 0 { -+ return 0, 0, false -+ } -+ // Pad fractional part with 0s. -+ for i := n; i < 9; i++ { -+ frac[i] = '0' -+ } -+ hasFrac = true -+ } -+ -+ var secs int64 -+ if len(intp) > 0 { -+ var err error -+ secs, err = strconv.ParseInt(string(intp), 10, 64) -+ if err != nil { -+ return 0, 0, false -+ } -+ } -+ -+ var nanos int64 -+ if hasFrac { -+ nanob := bytes.TrimLeft(frac[:], "0") -+ if len(nanob) > 0 { -+ var err error -+ nanos, err = strconv.ParseInt(string(nanob), 10, 32) -+ if err != nil { -+ return 0, 0, false -+ } -+ } -+ } -+ -+ if neg { -+ if secs > 0 { -+ secs = -secs -+ } -+ if nanos > 0 { -+ nanos = -nanos -+ } -+ } -+ return secs, int32(nanos), true -+} -+ -+// The JSON representation for a Timestamp is a JSON string in the RFC 3339 -+// format, i.e. "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" where -+// {year} is always expressed using four digits while {month}, {day}, {hour}, -+// {min}, and {sec} are zero-padded to two digits each. The fractional seconds, -+// which can go up to 9 digits, up to 1 nanosecond resolution, is optional. The -+// "Z" suffix indicates the timezone ("UTC"); the timezone is required. Encoding -+// should always use UTC (as indicated by "Z") and a decoder should be able to -+// accept both UTC and other timezones (as indicated by an offset). -+// -+// Timestamp.seconds must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z -+// inclusive. -+// Timestamp.nanos must be from 0 to 999,999,999 inclusive. -+ -+const ( -+ maxTimestampSeconds = 253402300799 -+ minTimestampSeconds = -62135596800 -+) -+ -+func (e encoder) marshalTimestamp(m protoreflect.Message) error { -+ fds := m.Descriptor().Fields() -+ fdSeconds := fds.ByNumber(genid.Timestamp_Seconds_field_number) -+ fdNanos := fds.ByNumber(genid.Timestamp_Nanos_field_number) -+ -+ secsVal := m.Get(fdSeconds) -+ nanosVal := m.Get(fdNanos) -+ secs := secsVal.Int() -+ nanos := nanosVal.Int() -+ if secs < minTimestampSeconds || secs > maxTimestampSeconds { -+ return errors.New("%s: seconds out of range %v", genid.Timestamp_message_fullname, secs) -+ } -+ if nanos < 0 || nanos > secondsInNanos { -+ return errors.New("%s: nanos out of range %v", genid.Timestamp_message_fullname, nanos) -+ } -+ // Uses RFC 3339, where generated output will be Z-normalized and uses 0, 3, -+ // 6 or 9 fractional digits. -+ t := time.Unix(secs, nanos).UTC() -+ x := t.Format("2006-01-02T15:04:05.000000000") -+ x = strings.TrimSuffix(x, "000") -+ x = strings.TrimSuffix(x, "000") -+ x = strings.TrimSuffix(x, ".000") -+ e.WriteString(x + "Z") -+ return nil -+} -+ -+func (d decoder) unmarshalTimestamp(m protoreflect.Message) error { -+ tok, err := d.Read() -+ if err != nil { -+ return err -+ } -+ if tok.Kind() != json.String { -+ return d.unexpectedTokenError(tok) -+ } -+ -+ s := tok.ParsedString() -+ t, err := time.Parse(time.RFC3339Nano, s) -+ if err != nil { -+ return d.newError(tok.Pos(), "invalid %v value %v", genid.Timestamp_message_fullname, tok.RawString()) -+ } -+ // Validate seconds. -+ secs := t.Unix() -+ if secs < minTimestampSeconds || secs > maxTimestampSeconds { -+ return d.newError(tok.Pos(), "%v value out of range: %v", genid.Timestamp_message_fullname, tok.RawString()) -+ } -+ // Validate subseconds. -+ i := strings.LastIndexByte(s, '.') // start of subsecond field -+ j := strings.LastIndexAny(s, "Z-+") // start of timezone field -+ if i >= 0 && j >= i && j-i > len(".999999999") { -+ return d.newError(tok.Pos(), "invalid %v value %v", genid.Timestamp_message_fullname, tok.RawString()) -+ } -+ -+ fds := m.Descriptor().Fields() -+ fdSeconds := fds.ByNumber(genid.Timestamp_Seconds_field_number) -+ fdNanos := fds.ByNumber(genid.Timestamp_Nanos_field_number) -+ -+ m.Set(fdSeconds, protoreflect.ValueOfInt64(secs)) -+ m.Set(fdNanos, protoreflect.ValueOfInt32(int32(t.Nanosecond()))) -+ return nil -+} -+ -+// The JSON representation for a FieldMask is a JSON string where paths are -+// separated by a comma. Fields name in each path are converted to/from -+// lower-camel naming conventions. Encoding should fail if the path name would -+// end up differently after a round-trip. -+ -+func (e encoder) marshalFieldMask(m protoreflect.Message) error { -+ fd := m.Descriptor().Fields().ByNumber(genid.FieldMask_Paths_field_number) -+ list := m.Get(fd).List() -+ paths := make([]string, 0, list.Len()) -+ -+ for i := 0; i < list.Len(); i++ { -+ s := list.Get(i).String() -+ if !protoreflect.FullName(s).IsValid() { -+ return errors.New("%s contains invalid path: %q", genid.FieldMask_Paths_field_fullname, s) -+ } -+ // Return error if conversion to camelCase is not reversible. -+ cc := strs.JSONCamelCase(s) -+ if s != strs.JSONSnakeCase(cc) { -+ return errors.New("%s contains irreversible value %q", genid.FieldMask_Paths_field_fullname, s) -+ } -+ paths = append(paths, cc) -+ } -+ -+ e.WriteString(strings.Join(paths, ",")) -+ return nil -+} -+ -+func (d decoder) unmarshalFieldMask(m protoreflect.Message) error { -+ tok, err := d.Read() -+ if err != nil { -+ return err -+ } -+ if tok.Kind() != json.String { -+ return d.unexpectedTokenError(tok) -+ } -+ str := strings.TrimSpace(tok.ParsedString()) -+ if str == "" { -+ return nil -+ } -+ paths := strings.Split(str, ",") -+ -+ fd := m.Descriptor().Fields().ByNumber(genid.FieldMask_Paths_field_number) -+ list := m.Mutable(fd).List() -+ -+ for _, s0 := range paths { -+ s := strs.JSONSnakeCase(s0) -+ if strings.Contains(s0, "_") || !protoreflect.FullName(s).IsValid() { -+ return d.newError(tok.Pos(), "%v contains invalid path: %q", genid.FieldMask_Paths_field_fullname, s0) -+ } -+ list.Append(protoreflect.ValueOfString(s)) -+ } -+ return nil -+} -diff --git a/vendor/google.golang.org/protobuf/encoding/prototext/decode.go b/vendor/google.golang.org/protobuf/encoding/prototext/decode.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/encoding/prototext/doc.go b/vendor/google.golang.org/protobuf/encoding/prototext/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/encoding/prototext/encode.go b/vendor/google.golang.org/protobuf/encoding/prototext/encode.go -old mode 100644 -new mode 100755 -index ebf6c65..722a7b4 ---- a/vendor/google.golang.org/protobuf/encoding/prototext/encode.go -+++ b/vendor/google.golang.org/protobuf/encoding/prototext/encode.go -@@ -101,13 +101,19 @@ func (o MarshalOptions) Format(m proto.Message) string { - // MarshalOptions object. Do not depend on the output being stable. It may - // change over time across different versions of the program. - func (o MarshalOptions) Marshal(m proto.Message) ([]byte, error) { -- return o.marshal(m) -+ return o.marshal(nil, m) -+} -+ -+// MarshalAppend appends the textproto format encoding of m to b, -+// returning the result. -+func (o MarshalOptions) MarshalAppend(b []byte, m proto.Message) ([]byte, error) { -+ return o.marshal(b, m) - } - - // marshal is a centralized function that all marshal operations go through. - // For profiling purposes, avoid changing the name of this function or - // introducing other code paths for marshal that do not go through this. --func (o MarshalOptions) marshal(m proto.Message) ([]byte, error) { -+func (o MarshalOptions) marshal(b []byte, m proto.Message) ([]byte, error) { - var delims = [2]byte{'{', '}'} - - if o.Multiline && o.Indent == "" { -@@ -117,7 +123,7 @@ func (o MarshalOptions) marshal(m proto.Message) ([]byte, error) { - o.Resolver = protoregistry.GlobalTypes - } - -- internalEnc, err := text.NewEncoder(o.Indent, delims, o.EmitASCII) -+ internalEnc, err := text.NewEncoder(b, o.Indent, delims, o.EmitASCII) - if err != nil { - return nil, err - } -@@ -125,7 +131,7 @@ func (o MarshalOptions) marshal(m proto.Message) ([]byte, error) { - // Treat nil message interface as an empty message, - // in which case there is nothing to output. - if m == nil { -- return []byte{}, nil -+ return b, nil - } - - enc := encoder{internalEnc, o} -diff --git a/vendor/google.golang.org/protobuf/encoding/protowire/wire.go b/vendor/google.golang.org/protobuf/encoding/protowire/wire.go -old mode 100644 -new mode 100755 -index ce57f57..f4b4686 ---- a/vendor/google.golang.org/protobuf/encoding/protowire/wire.go -+++ b/vendor/google.golang.org/protobuf/encoding/protowire/wire.go -@@ -3,7 +3,7 @@ - // license that can be found in the LICENSE file. - - // Package protowire parses and formats the raw wire encoding. --// See https://developers.google.com/protocol-buffers/docs/encoding. -+// See https://protobuf.dev/programming-guides/encoding. - // - // For marshaling and unmarshaling entire protobuf messages, - // use the "google.golang.org/protobuf/proto" package instead. -@@ -29,12 +29,8 @@ const ( - ) - - // IsValid reports whether the field number is semantically valid. --// --// Note that while numbers within the reserved range are semantically invalid, --// they are syntactically valid in the wire format. --// Implementations may treat records with reserved field numbers as unknown. - func (n Number) IsValid() bool { -- return MinValidNumber <= n && n < FirstReservedNumber || LastReservedNumber < n && n <= MaxValidNumber -+ return MinValidNumber <= n && n <= MaxValidNumber - } - - // Type represents the wire type. -diff --git a/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go b/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/descopts/options.go b/vendor/google.golang.org/protobuf/internal/descopts/options.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/detrand/rand.go b/vendor/google.golang.org/protobuf/internal/detrand/rand.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/encoding/defval/default.go b/vendor/google.golang.org/protobuf/internal/encoding/defval/default.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/encoding/json/decode.go b/vendor/google.golang.org/protobuf/internal/encoding/json/decode.go -new file mode 100755 -index 0000000..d043a6e ---- /dev/null -+++ b/vendor/google.golang.org/protobuf/internal/encoding/json/decode.go -@@ -0,0 +1,340 @@ -+// Copyright 2018 The Go Authors. All rights reserved. -+// Use of this source code is governed by a BSD-style -+// license that can be found in the LICENSE file. -+ -+package json -+ -+import ( -+ "bytes" -+ "fmt" -+ "io" -+ "regexp" -+ "unicode/utf8" -+ -+ "google.golang.org/protobuf/internal/errors" -+) -+ -+// call specifies which Decoder method was invoked. -+type call uint8 -+ -+const ( -+ readCall call = iota -+ peekCall -+) -+ -+const unexpectedFmt = "unexpected token %s" -+ -+// ErrUnexpectedEOF means that EOF was encountered in the middle of the input. -+var ErrUnexpectedEOF = errors.New("%v", io.ErrUnexpectedEOF) -+ -+// Decoder is a token-based JSON decoder. -+type Decoder struct { -+ // lastCall is last method called, either readCall or peekCall. -+ // Initial value is readCall. -+ lastCall call -+ -+ // lastToken contains the last read token. -+ lastToken Token -+ -+ // lastErr contains the last read error. -+ lastErr error -+ -+ // openStack is a stack containing ObjectOpen and ArrayOpen values. The -+ // top of stack represents the object or the array the current value is -+ // directly located in. -+ openStack []Kind -+ -+ // orig is used in reporting line and column. -+ orig []byte -+ // in contains the unconsumed input. -+ in []byte -+} -+ -+// NewDecoder returns a Decoder to read the given []byte. -+func NewDecoder(b []byte) *Decoder { -+ return &Decoder{orig: b, in: b} -+} -+ -+// Peek looks ahead and returns the next token kind without advancing a read. -+func (d *Decoder) Peek() (Token, error) { -+ defer func() { d.lastCall = peekCall }() -+ if d.lastCall == readCall { -+ d.lastToken, d.lastErr = d.Read() -+ } -+ return d.lastToken, d.lastErr -+} -+ -+// Read returns the next JSON token. -+// It will return an error if there is no valid token. -+func (d *Decoder) Read() (Token, error) { -+ const scalar = Null | Bool | Number | String -+ -+ defer func() { d.lastCall = readCall }() -+ if d.lastCall == peekCall { -+ return d.lastToken, d.lastErr -+ } -+ -+ tok, err := d.parseNext() -+ if err != nil { -+ return Token{}, err -+ } -+ -+ switch tok.kind { -+ case EOF: -+ if len(d.openStack) != 0 || -+ d.lastToken.kind&scalar|ObjectClose|ArrayClose == 0 { -+ return Token{}, ErrUnexpectedEOF -+ } -+ -+ case Null: -+ if !d.isValueNext() { -+ return Token{}, d.newSyntaxError(tok.pos, unexpectedFmt, tok.RawString()) -+ } -+ -+ case Bool, Number: -+ if !d.isValueNext() { -+ return Token{}, d.newSyntaxError(tok.pos, unexpectedFmt, tok.RawString()) -+ } -+ -+ case String: -+ if d.isValueNext() { -+ break -+ } -+ // This string token should only be for a field name. -+ if d.lastToken.kind&(ObjectOpen|comma) == 0 { -+ return Token{}, d.newSyntaxError(tok.pos, unexpectedFmt, tok.RawString()) -+ } -+ if len(d.in) == 0 { -+ return Token{}, ErrUnexpectedEOF -+ } -+ if c := d.in[0]; c != ':' { -+ return Token{}, d.newSyntaxError(d.currPos(), `unexpected character %s, missing ":" after field name`, string(c)) -+ } -+ tok.kind = Name -+ d.consume(1) -+ -+ case ObjectOpen, ArrayOpen: -+ if !d.isValueNext() { -+ return Token{}, d.newSyntaxError(tok.pos, unexpectedFmt, tok.RawString()) -+ } -+ d.openStack = append(d.openStack, tok.kind) -+ -+ case ObjectClose: -+ if len(d.openStack) == 0 || -+ d.lastToken.kind == comma || -+ d.openStack[len(d.openStack)-1] != ObjectOpen { -+ return Token{}, d.newSyntaxError(tok.pos, unexpectedFmt, tok.RawString()) -+ } -+ d.openStack = d.openStack[:len(d.openStack)-1] -+ -+ case ArrayClose: -+ if len(d.openStack) == 0 || -+ d.lastToken.kind == comma || -+ d.openStack[len(d.openStack)-1] != ArrayOpen { -+ return Token{}, d.newSyntaxError(tok.pos, unexpectedFmt, tok.RawString()) -+ } -+ d.openStack = d.openStack[:len(d.openStack)-1] -+ -+ case comma: -+ if len(d.openStack) == 0 || -+ d.lastToken.kind&(scalar|ObjectClose|ArrayClose) == 0 { -+ return Token{}, d.newSyntaxError(tok.pos, unexpectedFmt, tok.RawString()) -+ } -+ } -+ -+ // Update d.lastToken only after validating token to be in the right sequence. -+ d.lastToken = tok -+ -+ if d.lastToken.kind == comma { -+ return d.Read() -+ } -+ return tok, nil -+} -+ -+// Any sequence that looks like a non-delimiter (for error reporting). -+var errRegexp = regexp.MustCompile(`^([-+._a-zA-Z0-9]{1,32}|.)`) -+ -+// parseNext parses for the next JSON token. It returns a Token object for -+// different types, except for Name. It does not handle whether the next token -+// is in a valid sequence or not. -+func (d *Decoder) parseNext() (Token, error) { -+ // Trim leading spaces. -+ d.consume(0) -+ -+ in := d.in -+ if len(in) == 0 { -+ return d.consumeToken(EOF, 0), nil -+ } -+ -+ switch in[0] { -+ case 'n': -+ if n := matchWithDelim("null", in); n != 0 { -+ return d.consumeToken(Null, n), nil -+ } -+ -+ case 't': -+ if n := matchWithDelim("true", in); n != 0 { -+ return d.consumeBoolToken(true, n), nil -+ } -+ -+ case 'f': -+ if n := matchWithDelim("false", in); n != 0 { -+ return d.consumeBoolToken(false, n), nil -+ } -+ -+ case '-', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9': -+ if n, ok := parseNumber(in); ok { -+ return d.consumeToken(Number, n), nil -+ } -+ -+ case '"': -+ s, n, err := d.parseString(in) -+ if err != nil { -+ return Token{}, err -+ } -+ return d.consumeStringToken(s, n), nil -+ -+ case '{': -+ return d.consumeToken(ObjectOpen, 1), nil -+ -+ case '}': -+ return d.consumeToken(ObjectClose, 1), nil -+ -+ case '[': -+ return d.consumeToken(ArrayOpen, 1), nil -+ -+ case ']': -+ return d.consumeToken(ArrayClose, 1), nil -+ -+ case ',': -+ return d.consumeToken(comma, 1), nil -+ } -+ return Token{}, d.newSyntaxError(d.currPos(), "invalid value %s", errRegexp.Find(in)) -+} -+ -+// newSyntaxError returns an error with line and column information useful for -+// syntax errors. -+func (d *Decoder) newSyntaxError(pos int, f string, x ...interface{}) error { -+ e := errors.New(f, x...) -+ line, column := d.Position(pos) -+ return errors.New("syntax error (line %d:%d): %v", line, column, e) -+} -+ -+// Position returns line and column number of given index of the original input. -+// It will panic if index is out of range. -+func (d *Decoder) Position(idx int) (line int, column int) { -+ b := d.orig[:idx] -+ line = bytes.Count(b, []byte("\n")) + 1 -+ if i := bytes.LastIndexByte(b, '\n'); i >= 0 { -+ b = b[i+1:] -+ } -+ column = utf8.RuneCount(b) + 1 // ignore multi-rune characters -+ return line, column -+} -+ -+// currPos returns the current index position of d.in from d.orig. -+func (d *Decoder) currPos() int { -+ return len(d.orig) - len(d.in) -+} -+ -+// matchWithDelim matches s with the input b and verifies that the match -+// terminates with a delimiter of some form (e.g., r"[^-+_.a-zA-Z0-9]"). -+// As a special case, EOF is considered a delimiter. It returns the length of s -+// if there is a match, else 0. -+func matchWithDelim(s string, b []byte) int { -+ if !bytes.HasPrefix(b, []byte(s)) { -+ return 0 -+ } -+ -+ n := len(s) -+ if n < len(b) && isNotDelim(b[n]) { -+ return 0 -+ } -+ return n -+} -+ -+// isNotDelim returns true if given byte is a not delimiter character. -+func isNotDelim(c byte) bool { -+ return (c == '-' || c == '+' || c == '.' || c == '_' || -+ ('a' <= c && c <= 'z') || -+ ('A' <= c && c <= 'Z') || -+ ('0' <= c && c <= '9')) -+} -+ -+// consume consumes n bytes of input and any subsequent whitespace. -+func (d *Decoder) consume(n int) { -+ d.in = d.in[n:] -+ for len(d.in) > 0 { -+ switch d.in[0] { -+ case ' ', '\n', '\r', '\t': -+ d.in = d.in[1:] -+ default: -+ return -+ } -+ } -+} -+ -+// isValueNext returns true if next type should be a JSON value: Null, -+// Number, String or Bool. -+func (d *Decoder) isValueNext() bool { -+ if len(d.openStack) == 0 { -+ return d.lastToken.kind == 0 -+ } -+ -+ start := d.openStack[len(d.openStack)-1] -+ switch start { -+ case ObjectOpen: -+ return d.lastToken.kind&Name != 0 -+ case ArrayOpen: -+ return d.lastToken.kind&(ArrayOpen|comma) != 0 -+ } -+ panic(fmt.Sprintf( -+ "unreachable logic in Decoder.isValueNext, lastToken.kind: %v, openStack: %v", -+ d.lastToken.kind, start)) -+} -+ -+// consumeToken constructs a Token for given Kind with raw value derived from -+// current d.in and given size, and consumes the given size-length of it. -+func (d *Decoder) consumeToken(kind Kind, size int) Token { -+ tok := Token{ -+ kind: kind, -+ raw: d.in[:size], -+ pos: len(d.orig) - len(d.in), -+ } -+ d.consume(size) -+ return tok -+} -+ -+// consumeBoolToken constructs a Token for a Bool kind with raw value derived from -+// current d.in and given size. -+func (d *Decoder) consumeBoolToken(b bool, size int) Token { -+ tok := Token{ -+ kind: Bool, -+ raw: d.in[:size], -+ pos: len(d.orig) - len(d.in), -+ boo: b, -+ } -+ d.consume(size) -+ return tok -+} -+ -+// consumeStringToken constructs a Token for a String kind with raw value derived -+// from current d.in and given size. -+func (d *Decoder) consumeStringToken(s string, size int) Token { -+ tok := Token{ -+ kind: String, -+ raw: d.in[:size], -+ pos: len(d.orig) - len(d.in), -+ str: s, -+ } -+ d.consume(size) -+ return tok -+} -+ -+// Clone returns a copy of the Decoder for use in reading ahead the next JSON -+// object, array or other values without affecting current Decoder. -+func (d *Decoder) Clone() *Decoder { -+ ret := *d -+ ret.openStack = append([]Kind(nil), ret.openStack...) -+ return &ret -+} -diff --git a/vendor/google.golang.org/protobuf/internal/encoding/json/decode_number.go b/vendor/google.golang.org/protobuf/internal/encoding/json/decode_number.go -new file mode 100755 -index 0000000..2999d71 ---- /dev/null -+++ b/vendor/google.golang.org/protobuf/internal/encoding/json/decode_number.go -@@ -0,0 +1,254 @@ -+// Copyright 2018 The Go Authors. All rights reserved. -+// Use of this source code is governed by a BSD-style -+// license that can be found in the LICENSE file. -+ -+package json -+ -+import ( -+ "bytes" -+ "strconv" -+) -+ -+// parseNumber reads the given []byte for a valid JSON number. If it is valid, -+// it returns the number of bytes. Parsing logic follows the definition in -+// https://tools.ietf.org/html/rfc7159#section-6, and is based off -+// encoding/json.isValidNumber function. -+func parseNumber(input []byte) (int, bool) { -+ var n int -+ -+ s := input -+ if len(s) == 0 { -+ return 0, false -+ } -+ -+ // Optional - -+ if s[0] == '-' { -+ s = s[1:] -+ n++ -+ if len(s) == 0 { -+ return 0, false -+ } -+ } -+ -+ // Digits -+ switch { -+ case s[0] == '0': -+ s = s[1:] -+ n++ -+ -+ case '1' <= s[0] && s[0] <= '9': -+ s = s[1:] -+ n++ -+ for len(s) > 0 && '0' <= s[0] && s[0] <= '9' { -+ s = s[1:] -+ n++ -+ } -+ -+ default: -+ return 0, false -+ } -+ -+ // . followed by 1 or more digits. -+ if len(s) >= 2 && s[0] == '.' && '0' <= s[1] && s[1] <= '9' { -+ s = s[2:] -+ n += 2 -+ for len(s) > 0 && '0' <= s[0] && s[0] <= '9' { -+ s = s[1:] -+ n++ -+ } -+ } -+ -+ // e or E followed by an optional - or + and -+ // 1 or more digits. -+ if len(s) >= 2 && (s[0] == 'e' || s[0] == 'E') { -+ s = s[1:] -+ n++ -+ if s[0] == '+' || s[0] == '-' { -+ s = s[1:] -+ n++ -+ if len(s) == 0 { -+ return 0, false -+ } -+ } -+ for len(s) > 0 && '0' <= s[0] && s[0] <= '9' { -+ s = s[1:] -+ n++ -+ } -+ } -+ -+ // Check that next byte is a delimiter or it is at the end. -+ if n < len(input) && isNotDelim(input[n]) { -+ return 0, false -+ } -+ -+ return n, true -+} -+ -+// numberParts is the result of parsing out a valid JSON number. It contains -+// the parts of a number. The parts are used for integer conversion. -+type numberParts struct { -+ neg bool -+ intp []byte -+ frac []byte -+ exp []byte -+} -+ -+// parseNumber constructs numberParts from given []byte. The logic here is -+// similar to consumeNumber above with the difference of having to construct -+// numberParts. The slice fields in numberParts are subslices of the input. -+func parseNumberParts(input []byte) (numberParts, bool) { -+ var neg bool -+ var intp []byte -+ var frac []byte -+ var exp []byte -+ -+ s := input -+ if len(s) == 0 { -+ return numberParts{}, false -+ } -+ -+ // Optional - -+ if s[0] == '-' { -+ neg = true -+ s = s[1:] -+ if len(s) == 0 { -+ return numberParts{}, false -+ } -+ } -+ -+ // Digits -+ switch { -+ case s[0] == '0': -+ // Skip first 0 and no need to store. -+ s = s[1:] -+ -+ case '1' <= s[0] && s[0] <= '9': -+ intp = s -+ n := 1 -+ s = s[1:] -+ for len(s) > 0 && '0' <= s[0] && s[0] <= '9' { -+ s = s[1:] -+ n++ -+ } -+ intp = intp[:n] -+ -+ default: -+ return numberParts{}, false -+ } -+ -+ // . followed by 1 or more digits. -+ if len(s) >= 2 && s[0] == '.' && '0' <= s[1] && s[1] <= '9' { -+ frac = s[1:] -+ n := 1 -+ s = s[2:] -+ for len(s) > 0 && '0' <= s[0] && s[0] <= '9' { -+ s = s[1:] -+ n++ -+ } -+ frac = frac[:n] -+ } -+ -+ // e or E followed by an optional - or + and -+ // 1 or more digits. -+ if len(s) >= 2 && (s[0] == 'e' || s[0] == 'E') { -+ s = s[1:] -+ exp = s -+ n := 0 -+ if s[0] == '+' || s[0] == '-' { -+ s = s[1:] -+ n++ -+ if len(s) == 0 { -+ return numberParts{}, false -+ } -+ } -+ for len(s) > 0 && '0' <= s[0] && s[0] <= '9' { -+ s = s[1:] -+ n++ -+ } -+ exp = exp[:n] -+ } -+ -+ return numberParts{ -+ neg: neg, -+ intp: intp, -+ frac: bytes.TrimRight(frac, "0"), // Remove unnecessary 0s to the right. -+ exp: exp, -+ }, true -+} -+ -+// normalizeToIntString returns an integer string in normal form without the -+// E-notation for given numberParts. It will return false if it is not an -+// integer or if the exponent exceeds than max/min int value. -+func normalizeToIntString(n numberParts) (string, bool) { -+ intpSize := len(n.intp) -+ fracSize := len(n.frac) -+ -+ if intpSize == 0 && fracSize == 0 { -+ return "0", true -+ } -+ -+ var exp int -+ if len(n.exp) > 0 { -+ i, err := strconv.ParseInt(string(n.exp), 10, 32) -+ if err != nil { -+ return "", false -+ } -+ exp = int(i) -+ } -+ -+ var num []byte -+ if exp >= 0 { -+ // For positive E, shift fraction digits into integer part and also pad -+ // with zeroes as needed. -+ -+ // If there are more digits in fraction than the E value, then the -+ // number is not an integer. -+ if fracSize > exp { -+ return "", false -+ } -+ -+ // Make sure resulting digits are within max value limit to avoid -+ // unnecessarily constructing a large byte slice that may simply fail -+ // later on. -+ const maxDigits = 20 // Max uint64 value has 20 decimal digits. -+ if intpSize+exp > maxDigits { -+ return "", false -+ } -+ -+ // Set cap to make a copy of integer part when appended. -+ num = n.intp[:len(n.intp):len(n.intp)] -+ num = append(num, n.frac...) -+ for i := 0; i < exp-fracSize; i++ { -+ num = append(num, '0') -+ } -+ } else { -+ // For negative E, shift digits in integer part out. -+ -+ // If there are fractions, then the number is not an integer. -+ if fracSize > 0 { -+ return "", false -+ } -+ -+ // index is where the decimal point will be after adjusting for negative -+ // exponent. -+ index := intpSize + exp -+ if index < 0 { -+ return "", false -+ } -+ -+ num = n.intp -+ // If any of the digits being shifted to the right of the decimal point -+ // is non-zero, then the number is not an integer. -+ for i := index; i < intpSize; i++ { -+ if num[i] != '0' { -+ return "", false -+ } -+ } -+ num = num[:index] -+ } -+ -+ if n.neg { -+ return "-" + string(num), true -+ } -+ return string(num), true -+} -diff --git a/vendor/google.golang.org/protobuf/internal/encoding/json/decode_string.go b/vendor/google.golang.org/protobuf/internal/encoding/json/decode_string.go -new file mode 100755 -index 0000000..f7fea7d ---- /dev/null -+++ b/vendor/google.golang.org/protobuf/internal/encoding/json/decode_string.go -@@ -0,0 +1,91 @@ -+// Copyright 2018 The Go Authors. All rights reserved. -+// Use of this source code is governed by a BSD-style -+// license that can be found in the LICENSE file. -+ -+package json -+ -+import ( -+ "strconv" -+ "unicode" -+ "unicode/utf16" -+ "unicode/utf8" -+ -+ "google.golang.org/protobuf/internal/strs" -+) -+ -+func (d *Decoder) parseString(in []byte) (string, int, error) { -+ in0 := in -+ if len(in) == 0 { -+ return "", 0, ErrUnexpectedEOF -+ } -+ if in[0] != '"' { -+ return "", 0, d.newSyntaxError(d.currPos(), "invalid character %q at start of string", in[0]) -+ } -+ in = in[1:] -+ i := indexNeedEscapeInBytes(in) -+ in, out := in[i:], in[:i:i] // set cap to prevent mutations -+ for len(in) > 0 { -+ switch r, n := utf8.DecodeRune(in); { -+ case r == utf8.RuneError && n == 1: -+ return "", 0, d.newSyntaxError(d.currPos(), "invalid UTF-8 in string") -+ case r < ' ': -+ return "", 0, d.newSyntaxError(d.currPos(), "invalid character %q in string", r) -+ case r == '"': -+ in = in[1:] -+ n := len(in0) - len(in) -+ return string(out), n, nil -+ case r == '\\': -+ if len(in) < 2 { -+ return "", 0, ErrUnexpectedEOF -+ } -+ switch r := in[1]; r { -+ case '"', '\\', '/': -+ in, out = in[2:], append(out, r) -+ case 'b': -+ in, out = in[2:], append(out, '\b') -+ case 'f': -+ in, out = in[2:], append(out, '\f') -+ case 'n': -+ in, out = in[2:], append(out, '\n') -+ case 'r': -+ in, out = in[2:], append(out, '\r') -+ case 't': -+ in, out = in[2:], append(out, '\t') -+ case 'u': -+ if len(in) < 6 { -+ return "", 0, ErrUnexpectedEOF -+ } -+ v, err := strconv.ParseUint(string(in[2:6]), 16, 16) -+ if err != nil { -+ return "", 0, d.newSyntaxError(d.currPos(), "invalid escape code %q in string", in[:6]) -+ } -+ in = in[6:] -+ -+ r := rune(v) -+ if utf16.IsSurrogate(r) { -+ if len(in) < 6 { -+ return "", 0, ErrUnexpectedEOF -+ } -+ v, err := strconv.ParseUint(string(in[2:6]), 16, 16) -+ r = utf16.DecodeRune(r, rune(v)) -+ if in[0] != '\\' || in[1] != 'u' || -+ r == unicode.ReplacementChar || err != nil { -+ return "", 0, d.newSyntaxError(d.currPos(), "invalid escape code %q in string", in[:6]) -+ } -+ in = in[6:] -+ } -+ out = append(out, string(r)...) -+ default: -+ return "", 0, d.newSyntaxError(d.currPos(), "invalid escape code %q in string", in[:2]) -+ } -+ default: -+ i := indexNeedEscapeInBytes(in[n:]) -+ in, out = in[n+i:], append(out, in[:n+i]...) -+ } -+ } -+ return "", 0, ErrUnexpectedEOF -+} -+ -+// indexNeedEscapeInBytes returns the index of the character that needs -+// escaping. If no characters need escaping, this returns the input length. -+func indexNeedEscapeInBytes(b []byte) int { return indexNeedEscapeInString(strs.UnsafeString(b)) } -diff --git a/vendor/google.golang.org/protobuf/internal/encoding/json/decode_token.go b/vendor/google.golang.org/protobuf/internal/encoding/json/decode_token.go -new file mode 100755 -index 0000000..50578d6 ---- /dev/null -+++ b/vendor/google.golang.org/protobuf/internal/encoding/json/decode_token.go -@@ -0,0 +1,192 @@ -+// Copyright 2019 The Go Authors. All rights reserved. -+// Use of this source code is governed by a BSD-style -+// license that can be found in the LICENSE file. -+ -+package json -+ -+import ( -+ "bytes" -+ "fmt" -+ "strconv" -+) -+ -+// Kind represents a token kind expressible in the JSON format. -+type Kind uint16 -+ -+const ( -+ Invalid Kind = (1 << iota) / 2 -+ EOF -+ Null -+ Bool -+ Number -+ String -+ Name -+ ObjectOpen -+ ObjectClose -+ ArrayOpen -+ ArrayClose -+ -+ // comma is only for parsing in between tokens and -+ // does not need to be exported. -+ comma -+) -+ -+func (k Kind) String() string { -+ switch k { -+ case EOF: -+ return "eof" -+ case Null: -+ return "null" -+ case Bool: -+ return "bool" -+ case Number: -+ return "number" -+ case String: -+ return "string" -+ case ObjectOpen: -+ return "{" -+ case ObjectClose: -+ return "}" -+ case Name: -+ return "name" -+ case ArrayOpen: -+ return "[" -+ case ArrayClose: -+ return "]" -+ case comma: -+ return "," -+ } -+ return "" -+} -+ -+// Token provides a parsed token kind and value. -+// -+// Values are provided by the difference accessor methods. The accessor methods -+// Name, Bool, and ParsedString will panic if called on the wrong kind. There -+// are different accessor methods for the Number kind for converting to the -+// appropriate Go numeric type and those methods have the ok return value. -+type Token struct { -+ // Token kind. -+ kind Kind -+ // pos provides the position of the token in the original input. -+ pos int -+ // raw bytes of the serialized token. -+ // This is a subslice into the original input. -+ raw []byte -+ // boo is parsed boolean value. -+ boo bool -+ // str is parsed string value. -+ str string -+} -+ -+// Kind returns the token kind. -+func (t Token) Kind() Kind { -+ return t.kind -+} -+ -+// RawString returns the read value in string. -+func (t Token) RawString() string { -+ return string(t.raw) -+} -+ -+// Pos returns the token position from the input. -+func (t Token) Pos() int { -+ return t.pos -+} -+ -+// Name returns the object name if token is Name, else it panics. -+func (t Token) Name() string { -+ if t.kind == Name { -+ return t.str -+ } -+ panic(fmt.Sprintf("Token is not a Name: %v", t.RawString())) -+} -+ -+// Bool returns the bool value if token kind is Bool, else it panics. -+func (t Token) Bool() bool { -+ if t.kind == Bool { -+ return t.boo -+ } -+ panic(fmt.Sprintf("Token is not a Bool: %v", t.RawString())) -+} -+ -+// ParsedString returns the string value for a JSON string token or the read -+// value in string if token is not a string. -+func (t Token) ParsedString() string { -+ if t.kind == String { -+ return t.str -+ } -+ panic(fmt.Sprintf("Token is not a String: %v", t.RawString())) -+} -+ -+// Float returns the floating-point number if token kind is Number. -+// -+// The floating-point precision is specified by the bitSize parameter: 32 for -+// float32 or 64 for float64. If bitSize=32, the result still has type float64, -+// but it will be convertible to float32 without changing its value. It will -+// return false if the number exceeds the floating point limits for given -+// bitSize. -+func (t Token) Float(bitSize int) (float64, bool) { -+ if t.kind != Number { -+ return 0, false -+ } -+ f, err := strconv.ParseFloat(t.RawString(), bitSize) -+ if err != nil { -+ return 0, false -+ } -+ return f, true -+} -+ -+// Int returns the signed integer number if token is Number. -+// -+// The given bitSize specifies the integer type that the result must fit into. -+// It returns false if the number is not an integer value or if the result -+// exceeds the limits for given bitSize. -+func (t Token) Int(bitSize int) (int64, bool) { -+ s, ok := t.getIntStr() -+ if !ok { -+ return 0, false -+ } -+ n, err := strconv.ParseInt(s, 10, bitSize) -+ if err != nil { -+ return 0, false -+ } -+ return n, true -+} -+ -+// Uint returns the signed integer number if token is Number. -+// -+// The given bitSize specifies the unsigned integer type that the result must -+// fit into. It returns false if the number is not an unsigned integer value -+// or if the result exceeds the limits for given bitSize. -+func (t Token) Uint(bitSize int) (uint64, bool) { -+ s, ok := t.getIntStr() -+ if !ok { -+ return 0, false -+ } -+ n, err := strconv.ParseUint(s, 10, bitSize) -+ if err != nil { -+ return 0, false -+ } -+ return n, true -+} -+ -+func (t Token) getIntStr() (string, bool) { -+ if t.kind != Number { -+ return "", false -+ } -+ parts, ok := parseNumberParts(t.raw) -+ if !ok { -+ return "", false -+ } -+ return normalizeToIntString(parts) -+} -+ -+// TokenEquals returns true if given Tokens are equal, else false. -+func TokenEquals(x, y Token) bool { -+ return x.kind == y.kind && -+ x.pos == y.pos && -+ bytes.Equal(x.raw, y.raw) && -+ x.boo == y.boo && -+ x.str == y.str -+} -diff --git a/vendor/google.golang.org/protobuf/internal/encoding/json/encode.go b/vendor/google.golang.org/protobuf/internal/encoding/json/encode.go -new file mode 100755 -index 0000000..934f2dc ---- /dev/null -+++ b/vendor/google.golang.org/protobuf/internal/encoding/json/encode.go -@@ -0,0 +1,278 @@ -+// Copyright 2018 The Go Authors. All rights reserved. -+// Use of this source code is governed by a BSD-style -+// license that can be found in the LICENSE file. -+ -+package json -+ -+import ( -+ "math" -+ "math/bits" -+ "strconv" -+ "strings" -+ "unicode/utf8" -+ -+ "google.golang.org/protobuf/internal/detrand" -+ "google.golang.org/protobuf/internal/errors" -+) -+ -+// kind represents an encoding type. -+type kind uint8 -+ -+const ( -+ _ kind = (1 << iota) / 2 -+ name -+ scalar -+ objectOpen -+ objectClose -+ arrayOpen -+ arrayClose -+) -+ -+// Encoder provides methods to write out JSON constructs and values. The user is -+// responsible for producing valid sequences of JSON constructs and values. -+type Encoder struct { -+ indent string -+ lastKind kind -+ indents []byte -+ out []byte -+} -+ -+// NewEncoder returns an Encoder. -+// -+// If indent is a non-empty string, it causes every entry for an Array or Object -+// to be preceded by the indent and trailed by a newline. -+func NewEncoder(buf []byte, indent string) (*Encoder, error) { -+ e := &Encoder{ -+ out: buf, -+ } -+ if len(indent) > 0 { -+ if strings.Trim(indent, " \t") != "" { -+ return nil, errors.New("indent may only be composed of space or tab characters") -+ } -+ e.indent = indent -+ } -+ return e, nil -+} -+ -+// Bytes returns the content of the written bytes. -+func (e *Encoder) Bytes() []byte { -+ return e.out -+} -+ -+// WriteNull writes out the null value. -+func (e *Encoder) WriteNull() { -+ e.prepareNext(scalar) -+ e.out = append(e.out, "null"...) -+} -+ -+// WriteBool writes out the given boolean value. -+func (e *Encoder) WriteBool(b bool) { -+ e.prepareNext(scalar) -+ if b { -+ e.out = append(e.out, "true"...) -+ } else { -+ e.out = append(e.out, "false"...) -+ } -+} -+ -+// WriteString writes out the given string in JSON string value. Returns error -+// if input string contains invalid UTF-8. -+func (e *Encoder) WriteString(s string) error { -+ e.prepareNext(scalar) -+ var err error -+ if e.out, err = appendString(e.out, s); err != nil { -+ return err -+ } -+ return nil -+} -+ -+// Sentinel error used for indicating invalid UTF-8. -+var errInvalidUTF8 = errors.New("invalid UTF-8") -+ -+func appendString(out []byte, in string) ([]byte, error) { -+ out = append(out, '"') -+ i := indexNeedEscapeInString(in) -+ in, out = in[i:], append(out, in[:i]...) -+ for len(in) > 0 { -+ switch r, n := utf8.DecodeRuneInString(in); { -+ case r == utf8.RuneError && n == 1: -+ return out, errInvalidUTF8 -+ case r < ' ' || r == '"' || r == '\\': -+ out = append(out, '\\') -+ switch r { -+ case '"', '\\': -+ out = append(out, byte(r)) -+ case '\b': -+ out = append(out, 'b') -+ case '\f': -+ out = append(out, 'f') -+ case '\n': -+ out = append(out, 'n') -+ case '\r': -+ out = append(out, 'r') -+ case '\t': -+ out = append(out, 't') -+ default: -+ out = append(out, 'u') -+ out = append(out, "0000"[1+(bits.Len32(uint32(r))-1)/4:]...) -+ out = strconv.AppendUint(out, uint64(r), 16) -+ } -+ in = in[n:] -+ default: -+ i := indexNeedEscapeInString(in[n:]) -+ in, out = in[n+i:], append(out, in[:n+i]...) -+ } -+ } -+ out = append(out, '"') -+ return out, nil -+} -+ -+// indexNeedEscapeInString returns the index of the character that needs -+// escaping. If no characters need escaping, this returns the input length. -+func indexNeedEscapeInString(s string) int { -+ for i, r := range s { -+ if r < ' ' || r == '\\' || r == '"' || r == utf8.RuneError { -+ return i -+ } -+ } -+ return len(s) -+} -+ -+// WriteFloat writes out the given float and bitSize in JSON number value. -+func (e *Encoder) WriteFloat(n float64, bitSize int) { -+ e.prepareNext(scalar) -+ e.out = appendFloat(e.out, n, bitSize) -+} -+ -+// appendFloat formats given float in bitSize, and appends to the given []byte. -+func appendFloat(out []byte, n float64, bitSize int) []byte { -+ switch { -+ case math.IsNaN(n): -+ return append(out, `"NaN"`...) -+ case math.IsInf(n, +1): -+ return append(out, `"Infinity"`...) -+ case math.IsInf(n, -1): -+ return append(out, `"-Infinity"`...) -+ } -+ -+ // JSON number formatting logic based on encoding/json. -+ // See floatEncoder.encode for reference. -+ fmt := byte('f') -+ if abs := math.Abs(n); abs != 0 { -+ if bitSize == 64 && (abs < 1e-6 || abs >= 1e21) || -+ bitSize == 32 && (float32(abs) < 1e-6 || float32(abs) >= 1e21) { -+ fmt = 'e' -+ } -+ } -+ out = strconv.AppendFloat(out, n, fmt, -1, bitSize) -+ if fmt == 'e' { -+ n := len(out) -+ if n >= 4 && out[n-4] == 'e' && out[n-3] == '-' && out[n-2] == '0' { -+ out[n-2] = out[n-1] -+ out = out[:n-1] -+ } -+ } -+ return out -+} -+ -+// WriteInt writes out the given signed integer in JSON number value. -+func (e *Encoder) WriteInt(n int64) { -+ e.prepareNext(scalar) -+ e.out = strconv.AppendInt(e.out, n, 10) -+} -+ -+// WriteUint writes out the given unsigned integer in JSON number value. -+func (e *Encoder) WriteUint(n uint64) { -+ e.prepareNext(scalar) -+ e.out = strconv.AppendUint(e.out, n, 10) -+} -+ -+// StartObject writes out the '{' symbol. -+func (e *Encoder) StartObject() { -+ e.prepareNext(objectOpen) -+ e.out = append(e.out, '{') -+} -+ -+// EndObject writes out the '}' symbol. -+func (e *Encoder) EndObject() { -+ e.prepareNext(objectClose) -+ e.out = append(e.out, '}') -+} -+ -+// WriteName writes out the given string in JSON string value and the name -+// separator ':'. Returns error if input string contains invalid UTF-8, which -+// should not be likely as protobuf field names should be valid. -+func (e *Encoder) WriteName(s string) error { -+ e.prepareNext(name) -+ var err error -+ // Append to output regardless of error. -+ e.out, err = appendString(e.out, s) -+ e.out = append(e.out, ':') -+ return err -+} -+ -+// StartArray writes out the '[' symbol. -+func (e *Encoder) StartArray() { -+ e.prepareNext(arrayOpen) -+ e.out = append(e.out, '[') -+} -+ -+// EndArray writes out the ']' symbol. -+func (e *Encoder) EndArray() { -+ e.prepareNext(arrayClose) -+ e.out = append(e.out, ']') -+} -+ -+// prepareNext adds possible comma and indentation for the next value based -+// on last type and indent option. It also updates lastKind to next. -+func (e *Encoder) prepareNext(next kind) { -+ defer func() { -+ // Set lastKind to next. -+ e.lastKind = next -+ }() -+ -+ if len(e.indent) == 0 { -+ // Need to add comma on the following condition. -+ if e.lastKind&(scalar|objectClose|arrayClose) != 0 && -+ next&(name|scalar|objectOpen|arrayOpen) != 0 { -+ e.out = append(e.out, ',') -+ // For single-line output, add a random extra space after each -+ // comma to make output unstable. -+ if detrand.Bool() { -+ e.out = append(e.out, ' ') -+ } -+ } -+ return -+ } -+ -+ switch { -+ case e.lastKind&(objectOpen|arrayOpen) != 0: -+ // If next type is NOT closing, add indent and newline. -+ if next&(objectClose|arrayClose) == 0 { -+ e.indents = append(e.indents, e.indent...) -+ e.out = append(e.out, '\n') -+ e.out = append(e.out, e.indents...) -+ } -+ -+ case e.lastKind&(scalar|objectClose|arrayClose) != 0: -+ switch { -+ // If next type is either a value or name, add comma and newline. -+ case next&(name|scalar|objectOpen|arrayOpen) != 0: -+ e.out = append(e.out, ',', '\n') -+ -+ // If next type is a closing object or array, adjust indentation. -+ case next&(objectClose|arrayClose) != 0: -+ e.indents = e.indents[:len(e.indents)-len(e.indent)] -+ e.out = append(e.out, '\n') -+ } -+ e.out = append(e.out, e.indents...) -+ -+ case e.lastKind&name != 0: -+ e.out = append(e.out, ' ') -+ // For multi-line output, add a random extra space after key: to make -+ // output unstable. -+ if detrand.Bool() { -+ e.out = append(e.out, ' ') -+ } -+ } -+} -diff --git a/vendor/google.golang.org/protobuf/internal/encoding/messageset/messageset.go b/vendor/google.golang.org/protobuf/internal/encoding/messageset/messageset.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go b/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go b/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go -old mode 100644 -new mode 100755 -index 427c62d..87853e7 ---- a/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go -+++ b/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go -@@ -412,12 +412,13 @@ func (d *Decoder) parseFieldName() (tok Token, err error) { - // Field number. Identify if input is a valid number that is not negative - // and is decimal integer within 32-bit range. - if num := parseNumber(d.in); num.size > 0 { -+ str := num.string(d.in) - if !num.neg && num.kind == numDec { -- if _, err := strconv.ParseInt(string(d.in[:num.size]), 10, 32); err == nil { -+ if _, err := strconv.ParseInt(str, 10, 32); err == nil { - return d.consumeToken(Name, num.size, uint8(FieldNumber)), nil - } - } -- return Token{}, d.newSyntaxError("invalid field number: %s", d.in[:num.size]) -+ return Token{}, d.newSyntaxError("invalid field number: %s", str) - } - - return Token{}, d.newSyntaxError("invalid field name: %s", errId(d.in)) -diff --git a/vendor/google.golang.org/protobuf/internal/encoding/text/decode_number.go b/vendor/google.golang.org/protobuf/internal/encoding/text/decode_number.go -old mode 100644 -new mode 100755 -index 81a5d8c..45c81f0 ---- a/vendor/google.golang.org/protobuf/internal/encoding/text/decode_number.go -+++ b/vendor/google.golang.org/protobuf/internal/encoding/text/decode_number.go -@@ -15,17 +15,12 @@ func (d *Decoder) parseNumberValue() (Token, bool) { - if num.neg { - numAttrs |= isNegative - } -- strSize := num.size -- last := num.size - 1 -- if num.kind == numFloat && (d.in[last] == 'f' || d.in[last] == 'F') { -- strSize = last -- } - tok := Token{ - kind: Scalar, - attrs: numberValue, - pos: len(d.orig) - len(d.in), - raw: d.in[:num.size], -- str: string(d.in[:strSize]), -+ str: num.string(d.in), - numAttrs: numAttrs, - } - d.consume(num.size) -@@ -46,6 +41,27 @@ type number struct { - kind uint8 - neg bool - size int -+ // if neg, this is the length of whitespace and comments between -+ // the minus sign and the rest fo the number literal -+ sep int -+} -+ -+func (num number) string(data []byte) string { -+ strSize := num.size -+ last := num.size - 1 -+ if num.kind == numFloat && (data[last] == 'f' || data[last] == 'F') { -+ strSize = last -+ } -+ if num.neg && num.sep > 0 { -+ // strip whitespace/comments between negative sign and the rest -+ strLen := strSize - num.sep -+ str := make([]byte, strLen) -+ str[0] = data[0] -+ copy(str[1:], data[num.sep+1:strSize]) -+ return string(str) -+ } -+ return string(data[:strSize]) -+ - } - - // parseNumber constructs a number object from given input. It allows for the -@@ -67,19 +83,22 @@ func parseNumber(input []byte) number { - } - - // Optional - -+ var sep int - if s[0] == '-' { - neg = true - s = s[1:] - size++ -+ // Consume any whitespace or comments between the -+ // negative sign and the rest of the number -+ lenBefore := len(s) -+ s = consume(s, 0) -+ sep = lenBefore - len(s) -+ size += sep - if len(s) == 0 { - return number{} - } - } - -- // C++ allows for whitespace and comments in between the negative sign and -- // the rest of the number. This logic currently does not but is consistent -- // with v1. -- - switch { - case s[0] == '0': - if len(s) > 1 { -@@ -116,7 +135,7 @@ func parseNumber(input []byte) number { - if len(s) > 0 && !isDelim(s[0]) { - return number{} - } -- return number{kind: kind, neg: neg, size: size} -+ return number{kind: kind, neg: neg, size: size, sep: sep} - } - } - s = s[1:] -@@ -188,5 +207,5 @@ func parseNumber(input []byte) number { - return number{} - } - -- return number{kind: kind, neg: neg, size: size} -+ return number{kind: kind, neg: neg, size: size, sep: sep} - } -diff --git a/vendor/google.golang.org/protobuf/internal/encoding/text/decode_string.go b/vendor/google.golang.org/protobuf/internal/encoding/text/decode_string.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/encoding/text/decode_token.go b/vendor/google.golang.org/protobuf/internal/encoding/text/decode_token.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/encoding/text/doc.go b/vendor/google.golang.org/protobuf/internal/encoding/text/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/encoding/text/encode.go b/vendor/google.golang.org/protobuf/internal/encoding/text/encode.go -old mode 100644 -new mode 100755 -index da289cc..cf7aed7 ---- a/vendor/google.golang.org/protobuf/internal/encoding/text/encode.go -+++ b/vendor/google.golang.org/protobuf/internal/encoding/text/encode.go -@@ -53,8 +53,10 @@ type encoderState struct { - // If outputASCII is true, strings will be serialized in such a way that - // multi-byte UTF-8 sequences are escaped. This property ensures that the - // overall output is ASCII (as opposed to UTF-8). --func NewEncoder(indent string, delims [2]byte, outputASCII bool) (*Encoder, error) { -- e := &Encoder{} -+func NewEncoder(buf []byte, indent string, delims [2]byte, outputASCII bool) (*Encoder, error) { -+ e := &Encoder{ -+ encoderState: encoderState{out: buf}, -+ } - if len(indent) > 0 { - if strings.Trim(indent, " \t") != "" { - return nil, errors.New("indent may only be composed of space and tab characters") -@@ -195,13 +197,13 @@ func appendFloat(out []byte, n float64, bitSize int) []byte { - // WriteInt writes out the given signed integer value. - func (e *Encoder) WriteInt(n int64) { - e.prepareNext(scalar) -- e.out = append(e.out, strconv.FormatInt(n, 10)...) -+ e.out = strconv.AppendInt(e.out, n, 10) - } - - // WriteUint writes out the given unsigned integer value. - func (e *Encoder) WriteUint(n uint64) { - e.prepareNext(scalar) -- e.out = append(e.out, strconv.FormatUint(n, 10)...) -+ e.out = strconv.AppendUint(e.out, n, 10) - } - - // WriteLiteral writes out the given string as a literal value without quotes. -diff --git a/vendor/google.golang.org/protobuf/internal/errors/errors.go b/vendor/google.golang.org/protobuf/internal/errors/errors.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/errors/is_go112.go b/vendor/google.golang.org/protobuf/internal/errors/is_go112.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/errors/is_go113.go b/vendor/google.golang.org/protobuf/internal/errors/is_go113.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/build.go b/vendor/google.golang.org/protobuf/internal/filedesc/build.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/desc.go b/vendor/google.golang.org/protobuf/internal/filedesc/desc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go b/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go b/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/desc_list.go b/vendor/google.golang.org/protobuf/internal/filedesc/desc_list.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/desc_list_gen.go b/vendor/google.golang.org/protobuf/internal/filedesc/desc_list_gen.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/placeholder.go b/vendor/google.golang.org/protobuf/internal/filedesc/placeholder.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/filetype/build.go b/vendor/google.golang.org/protobuf/internal/filetype/build.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/flags/flags.go b/vendor/google.golang.org/protobuf/internal/flags/flags.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_disable.go b/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_disable.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_enable.go b/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_enable.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/genid/any_gen.go b/vendor/google.golang.org/protobuf/internal/genid/any_gen.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/genid/api_gen.go b/vendor/google.golang.org/protobuf/internal/genid/api_gen.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go b/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go -old mode 100644 -new mode 100755 -index e3cdf1c..136f1b2 ---- a/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go -+++ b/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go -@@ -50,6 +50,7 @@ const ( - FileDescriptorProto_Options_field_name protoreflect.Name = "options" - FileDescriptorProto_SourceCodeInfo_field_name protoreflect.Name = "source_code_info" - FileDescriptorProto_Syntax_field_name protoreflect.Name = "syntax" -+ FileDescriptorProto_Edition_field_name protoreflect.Name = "edition" - - FileDescriptorProto_Name_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.name" - FileDescriptorProto_Package_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.package" -@@ -63,6 +64,7 @@ const ( - FileDescriptorProto_Options_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.options" - FileDescriptorProto_SourceCodeInfo_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.source_code_info" - FileDescriptorProto_Syntax_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.syntax" -+ FileDescriptorProto_Edition_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.edition" - ) - - // Field numbers for google.protobuf.FileDescriptorProto. -@@ -79,6 +81,7 @@ const ( - FileDescriptorProto_Options_field_number protoreflect.FieldNumber = 8 - FileDescriptorProto_SourceCodeInfo_field_number protoreflect.FieldNumber = 9 - FileDescriptorProto_Syntax_field_number protoreflect.FieldNumber = 12 -+ FileDescriptorProto_Edition_field_number protoreflect.FieldNumber = 13 - ) - - // Names for google.protobuf.DescriptorProto. -@@ -180,13 +183,58 @@ const ( - // Field names for google.protobuf.ExtensionRangeOptions. - const ( - ExtensionRangeOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option" -+ ExtensionRangeOptions_Declaration_field_name protoreflect.Name = "declaration" -+ ExtensionRangeOptions_Verification_field_name protoreflect.Name = "verification" - - ExtensionRangeOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions.uninterpreted_option" -+ ExtensionRangeOptions_Declaration_field_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions.declaration" -+ ExtensionRangeOptions_Verification_field_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions.verification" - ) - - // Field numbers for google.protobuf.ExtensionRangeOptions. - const ( - ExtensionRangeOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999 -+ ExtensionRangeOptions_Declaration_field_number protoreflect.FieldNumber = 2 -+ ExtensionRangeOptions_Verification_field_number protoreflect.FieldNumber = 3 -+) -+ -+// Full and short names for google.protobuf.ExtensionRangeOptions.VerificationState. -+const ( -+ ExtensionRangeOptions_VerificationState_enum_fullname = "google.protobuf.ExtensionRangeOptions.VerificationState" -+ ExtensionRangeOptions_VerificationState_enum_name = "VerificationState" -+) -+ -+// Names for google.protobuf.ExtensionRangeOptions.Declaration. -+const ( -+ ExtensionRangeOptions_Declaration_message_name protoreflect.Name = "Declaration" -+ ExtensionRangeOptions_Declaration_message_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions.Declaration" -+) -+ -+// Field names for google.protobuf.ExtensionRangeOptions.Declaration. -+const ( -+ ExtensionRangeOptions_Declaration_Number_field_name protoreflect.Name = "number" -+ ExtensionRangeOptions_Declaration_FullName_field_name protoreflect.Name = "full_name" -+ ExtensionRangeOptions_Declaration_Type_field_name protoreflect.Name = "type" -+ ExtensionRangeOptions_Declaration_IsRepeated_field_name protoreflect.Name = "is_repeated" -+ ExtensionRangeOptions_Declaration_Reserved_field_name protoreflect.Name = "reserved" -+ ExtensionRangeOptions_Declaration_Repeated_field_name protoreflect.Name = "repeated" -+ -+ ExtensionRangeOptions_Declaration_Number_field_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions.Declaration.number" -+ ExtensionRangeOptions_Declaration_FullName_field_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions.Declaration.full_name" -+ ExtensionRangeOptions_Declaration_Type_field_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions.Declaration.type" -+ ExtensionRangeOptions_Declaration_IsRepeated_field_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions.Declaration.is_repeated" -+ ExtensionRangeOptions_Declaration_Reserved_field_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions.Declaration.reserved" -+ ExtensionRangeOptions_Declaration_Repeated_field_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions.Declaration.repeated" -+) -+ -+// Field numbers for google.protobuf.ExtensionRangeOptions.Declaration. -+const ( -+ ExtensionRangeOptions_Declaration_Number_field_number protoreflect.FieldNumber = 1 -+ ExtensionRangeOptions_Declaration_FullName_field_number protoreflect.FieldNumber = 2 -+ ExtensionRangeOptions_Declaration_Type_field_number protoreflect.FieldNumber = 3 -+ ExtensionRangeOptions_Declaration_IsRepeated_field_number protoreflect.FieldNumber = 4 -+ ExtensionRangeOptions_Declaration_Reserved_field_number protoreflect.FieldNumber = 5 -+ ExtensionRangeOptions_Declaration_Repeated_field_number protoreflect.FieldNumber = 6 - ) - - // Names for google.protobuf.FieldDescriptorProto. -@@ -494,26 +542,29 @@ const ( - - // Field names for google.protobuf.MessageOptions. - const ( -- MessageOptions_MessageSetWireFormat_field_name protoreflect.Name = "message_set_wire_format" -- MessageOptions_NoStandardDescriptorAccessor_field_name protoreflect.Name = "no_standard_descriptor_accessor" -- MessageOptions_Deprecated_field_name protoreflect.Name = "deprecated" -- MessageOptions_MapEntry_field_name protoreflect.Name = "map_entry" -- MessageOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option" -+ MessageOptions_MessageSetWireFormat_field_name protoreflect.Name = "message_set_wire_format" -+ MessageOptions_NoStandardDescriptorAccessor_field_name protoreflect.Name = "no_standard_descriptor_accessor" -+ MessageOptions_Deprecated_field_name protoreflect.Name = "deprecated" -+ MessageOptions_MapEntry_field_name protoreflect.Name = "map_entry" -+ MessageOptions_DeprecatedLegacyJsonFieldConflicts_field_name protoreflect.Name = "deprecated_legacy_json_field_conflicts" -+ MessageOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option" - -- MessageOptions_MessageSetWireFormat_field_fullname protoreflect.FullName = "google.protobuf.MessageOptions.message_set_wire_format" -- MessageOptions_NoStandardDescriptorAccessor_field_fullname protoreflect.FullName = "google.protobuf.MessageOptions.no_standard_descriptor_accessor" -- MessageOptions_Deprecated_field_fullname protoreflect.FullName = "google.protobuf.MessageOptions.deprecated" -- MessageOptions_MapEntry_field_fullname protoreflect.FullName = "google.protobuf.MessageOptions.map_entry" -- MessageOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.MessageOptions.uninterpreted_option" -+ MessageOptions_MessageSetWireFormat_field_fullname protoreflect.FullName = "google.protobuf.MessageOptions.message_set_wire_format" -+ MessageOptions_NoStandardDescriptorAccessor_field_fullname protoreflect.FullName = "google.protobuf.MessageOptions.no_standard_descriptor_accessor" -+ MessageOptions_Deprecated_field_fullname protoreflect.FullName = "google.protobuf.MessageOptions.deprecated" -+ MessageOptions_MapEntry_field_fullname protoreflect.FullName = "google.protobuf.MessageOptions.map_entry" -+ MessageOptions_DeprecatedLegacyJsonFieldConflicts_field_fullname protoreflect.FullName = "google.protobuf.MessageOptions.deprecated_legacy_json_field_conflicts" -+ MessageOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.MessageOptions.uninterpreted_option" - ) - - // Field numbers for google.protobuf.MessageOptions. - const ( -- MessageOptions_MessageSetWireFormat_field_number protoreflect.FieldNumber = 1 -- MessageOptions_NoStandardDescriptorAccessor_field_number protoreflect.FieldNumber = 2 -- MessageOptions_Deprecated_field_number protoreflect.FieldNumber = 3 -- MessageOptions_MapEntry_field_number protoreflect.FieldNumber = 7 -- MessageOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999 -+ MessageOptions_MessageSetWireFormat_field_number protoreflect.FieldNumber = 1 -+ MessageOptions_NoStandardDescriptorAccessor_field_number protoreflect.FieldNumber = 2 -+ MessageOptions_Deprecated_field_number protoreflect.FieldNumber = 3 -+ MessageOptions_MapEntry_field_number protoreflect.FieldNumber = 7 -+ MessageOptions_DeprecatedLegacyJsonFieldConflicts_field_number protoreflect.FieldNumber = 11 -+ MessageOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999 - ) - - // Names for google.protobuf.FieldOptions. -@@ -528,16 +579,26 @@ const ( - FieldOptions_Packed_field_name protoreflect.Name = "packed" - FieldOptions_Jstype_field_name protoreflect.Name = "jstype" - FieldOptions_Lazy_field_name protoreflect.Name = "lazy" -+ FieldOptions_UnverifiedLazy_field_name protoreflect.Name = "unverified_lazy" - FieldOptions_Deprecated_field_name protoreflect.Name = "deprecated" - FieldOptions_Weak_field_name protoreflect.Name = "weak" -+ FieldOptions_DebugRedact_field_name protoreflect.Name = "debug_redact" -+ FieldOptions_Retention_field_name protoreflect.Name = "retention" -+ FieldOptions_Target_field_name protoreflect.Name = "target" -+ FieldOptions_Targets_field_name protoreflect.Name = "targets" - FieldOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option" - - FieldOptions_Ctype_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.ctype" - FieldOptions_Packed_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.packed" - FieldOptions_Jstype_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.jstype" - FieldOptions_Lazy_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.lazy" -+ FieldOptions_UnverifiedLazy_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.unverified_lazy" - FieldOptions_Deprecated_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.deprecated" - FieldOptions_Weak_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.weak" -+ FieldOptions_DebugRedact_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.debug_redact" -+ FieldOptions_Retention_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.retention" -+ FieldOptions_Target_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.target" -+ FieldOptions_Targets_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.targets" - FieldOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.uninterpreted_option" - ) - -@@ -547,8 +608,13 @@ const ( - FieldOptions_Packed_field_number protoreflect.FieldNumber = 2 - FieldOptions_Jstype_field_number protoreflect.FieldNumber = 6 - FieldOptions_Lazy_field_number protoreflect.FieldNumber = 5 -+ FieldOptions_UnverifiedLazy_field_number protoreflect.FieldNumber = 15 - FieldOptions_Deprecated_field_number protoreflect.FieldNumber = 3 - FieldOptions_Weak_field_number protoreflect.FieldNumber = 10 -+ FieldOptions_DebugRedact_field_number protoreflect.FieldNumber = 16 -+ FieldOptions_Retention_field_number protoreflect.FieldNumber = 17 -+ FieldOptions_Target_field_number protoreflect.FieldNumber = 18 -+ FieldOptions_Targets_field_number protoreflect.FieldNumber = 19 - FieldOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999 - ) - -@@ -564,6 +630,18 @@ const ( - FieldOptions_JSType_enum_name = "JSType" - ) - -+// Full and short names for google.protobuf.FieldOptions.OptionRetention. -+const ( -+ FieldOptions_OptionRetention_enum_fullname = "google.protobuf.FieldOptions.OptionRetention" -+ FieldOptions_OptionRetention_enum_name = "OptionRetention" -+) -+ -+// Full and short names for google.protobuf.FieldOptions.OptionTargetType. -+const ( -+ FieldOptions_OptionTargetType_enum_fullname = "google.protobuf.FieldOptions.OptionTargetType" -+ FieldOptions_OptionTargetType_enum_name = "OptionTargetType" -+) -+ - // Names for google.protobuf.OneofOptions. - const ( - OneofOptions_message_name protoreflect.Name = "OneofOptions" -@@ -590,20 +668,23 @@ const ( - - // Field names for google.protobuf.EnumOptions. - const ( -- EnumOptions_AllowAlias_field_name protoreflect.Name = "allow_alias" -- EnumOptions_Deprecated_field_name protoreflect.Name = "deprecated" -- EnumOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option" -+ EnumOptions_AllowAlias_field_name protoreflect.Name = "allow_alias" -+ EnumOptions_Deprecated_field_name protoreflect.Name = "deprecated" -+ EnumOptions_DeprecatedLegacyJsonFieldConflicts_field_name protoreflect.Name = "deprecated_legacy_json_field_conflicts" -+ EnumOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option" - -- EnumOptions_AllowAlias_field_fullname protoreflect.FullName = "google.protobuf.EnumOptions.allow_alias" -- EnumOptions_Deprecated_field_fullname protoreflect.FullName = "google.protobuf.EnumOptions.deprecated" -- EnumOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.EnumOptions.uninterpreted_option" -+ EnumOptions_AllowAlias_field_fullname protoreflect.FullName = "google.protobuf.EnumOptions.allow_alias" -+ EnumOptions_Deprecated_field_fullname protoreflect.FullName = "google.protobuf.EnumOptions.deprecated" -+ EnumOptions_DeprecatedLegacyJsonFieldConflicts_field_fullname protoreflect.FullName = "google.protobuf.EnumOptions.deprecated_legacy_json_field_conflicts" -+ EnumOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.EnumOptions.uninterpreted_option" - ) - - // Field numbers for google.protobuf.EnumOptions. - const ( -- EnumOptions_AllowAlias_field_number protoreflect.FieldNumber = 2 -- EnumOptions_Deprecated_field_number protoreflect.FieldNumber = 3 -- EnumOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999 -+ EnumOptions_AllowAlias_field_number protoreflect.FieldNumber = 2 -+ EnumOptions_Deprecated_field_number protoreflect.FieldNumber = 3 -+ EnumOptions_DeprecatedLegacyJsonFieldConflicts_field_number protoreflect.FieldNumber = 6 -+ EnumOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999 - ) - - // Names for google.protobuf.EnumValueOptions. -@@ -813,11 +894,13 @@ const ( - GeneratedCodeInfo_Annotation_SourceFile_field_name protoreflect.Name = "source_file" - GeneratedCodeInfo_Annotation_Begin_field_name protoreflect.Name = "begin" - GeneratedCodeInfo_Annotation_End_field_name protoreflect.Name = "end" -+ GeneratedCodeInfo_Annotation_Semantic_field_name protoreflect.Name = "semantic" - - GeneratedCodeInfo_Annotation_Path_field_fullname protoreflect.FullName = "google.protobuf.GeneratedCodeInfo.Annotation.path" - GeneratedCodeInfo_Annotation_SourceFile_field_fullname protoreflect.FullName = "google.protobuf.GeneratedCodeInfo.Annotation.source_file" - GeneratedCodeInfo_Annotation_Begin_field_fullname protoreflect.FullName = "google.protobuf.GeneratedCodeInfo.Annotation.begin" - GeneratedCodeInfo_Annotation_End_field_fullname protoreflect.FullName = "google.protobuf.GeneratedCodeInfo.Annotation.end" -+ GeneratedCodeInfo_Annotation_Semantic_field_fullname protoreflect.FullName = "google.protobuf.GeneratedCodeInfo.Annotation.semantic" - ) - - // Field numbers for google.protobuf.GeneratedCodeInfo.Annotation. -@@ -826,4 +909,11 @@ const ( - GeneratedCodeInfo_Annotation_SourceFile_field_number protoreflect.FieldNumber = 2 - GeneratedCodeInfo_Annotation_Begin_field_number protoreflect.FieldNumber = 3 - GeneratedCodeInfo_Annotation_End_field_number protoreflect.FieldNumber = 4 -+ GeneratedCodeInfo_Annotation_Semantic_field_number protoreflect.FieldNumber = 5 -+) -+ -+// Full and short names for google.protobuf.GeneratedCodeInfo.Annotation.Semantic. -+const ( -+ GeneratedCodeInfo_Annotation_Semantic_enum_fullname = "google.protobuf.GeneratedCodeInfo.Annotation.Semantic" -+ GeneratedCodeInfo_Annotation_Semantic_enum_name = "Semantic" - ) -diff --git a/vendor/google.golang.org/protobuf/internal/genid/doc.go b/vendor/google.golang.org/protobuf/internal/genid/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/genid/duration_gen.go b/vendor/google.golang.org/protobuf/internal/genid/duration_gen.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/genid/empty_gen.go b/vendor/google.golang.org/protobuf/internal/genid/empty_gen.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/genid/field_mask_gen.go b/vendor/google.golang.org/protobuf/internal/genid/field_mask_gen.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/genid/goname.go b/vendor/google.golang.org/protobuf/internal/genid/goname.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/genid/map_entry.go b/vendor/google.golang.org/protobuf/internal/genid/map_entry.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/genid/source_context_gen.go b/vendor/google.golang.org/protobuf/internal/genid/source_context_gen.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/genid/struct_gen.go b/vendor/google.golang.org/protobuf/internal/genid/struct_gen.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/genid/timestamp_gen.go b/vendor/google.golang.org/protobuf/internal/genid/timestamp_gen.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/genid/type_gen.go b/vendor/google.golang.org/protobuf/internal/genid/type_gen.go -old mode 100644 -new mode 100755 -index 3bc7101..e0f75fe ---- a/vendor/google.golang.org/protobuf/internal/genid/type_gen.go -+++ b/vendor/google.golang.org/protobuf/internal/genid/type_gen.go -@@ -32,6 +32,7 @@ const ( - Type_Options_field_name protoreflect.Name = "options" - Type_SourceContext_field_name protoreflect.Name = "source_context" - Type_Syntax_field_name protoreflect.Name = "syntax" -+ Type_Edition_field_name protoreflect.Name = "edition" - - Type_Name_field_fullname protoreflect.FullName = "google.protobuf.Type.name" - Type_Fields_field_fullname protoreflect.FullName = "google.protobuf.Type.fields" -@@ -39,6 +40,7 @@ const ( - Type_Options_field_fullname protoreflect.FullName = "google.protobuf.Type.options" - Type_SourceContext_field_fullname protoreflect.FullName = "google.protobuf.Type.source_context" - Type_Syntax_field_fullname protoreflect.FullName = "google.protobuf.Type.syntax" -+ Type_Edition_field_fullname protoreflect.FullName = "google.protobuf.Type.edition" - ) - - // Field numbers for google.protobuf.Type. -@@ -49,6 +51,7 @@ const ( - Type_Options_field_number protoreflect.FieldNumber = 4 - Type_SourceContext_field_number protoreflect.FieldNumber = 5 - Type_Syntax_field_number protoreflect.FieldNumber = 6 -+ Type_Edition_field_number protoreflect.FieldNumber = 7 - ) - - // Names for google.protobuf.Field. -@@ -121,12 +124,14 @@ const ( - Enum_Options_field_name protoreflect.Name = "options" - Enum_SourceContext_field_name protoreflect.Name = "source_context" - Enum_Syntax_field_name protoreflect.Name = "syntax" -+ Enum_Edition_field_name protoreflect.Name = "edition" - - Enum_Name_field_fullname protoreflect.FullName = "google.protobuf.Enum.name" - Enum_Enumvalue_field_fullname protoreflect.FullName = "google.protobuf.Enum.enumvalue" - Enum_Options_field_fullname protoreflect.FullName = "google.protobuf.Enum.options" - Enum_SourceContext_field_fullname protoreflect.FullName = "google.protobuf.Enum.source_context" - Enum_Syntax_field_fullname protoreflect.FullName = "google.protobuf.Enum.syntax" -+ Enum_Edition_field_fullname protoreflect.FullName = "google.protobuf.Enum.edition" - ) - - // Field numbers for google.protobuf.Enum. -@@ -136,6 +141,7 @@ const ( - Enum_Options_field_number protoreflect.FieldNumber = 3 - Enum_SourceContext_field_number protoreflect.FieldNumber = 4 - Enum_Syntax_field_number protoreflect.FieldNumber = 5 -+ Enum_Edition_field_number protoreflect.FieldNumber = 6 - ) - - // Names for google.protobuf.EnumValue. -diff --git a/vendor/google.golang.org/protobuf/internal/genid/wrappers.go b/vendor/google.golang.org/protobuf/internal/genid/wrappers.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/genid/wrappers_gen.go b/vendor/google.golang.org/protobuf/internal/genid/wrappers_gen.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/impl/api_export.go b/vendor/google.golang.org/protobuf/internal/impl/api_export.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/impl/checkinit.go b/vendor/google.golang.org/protobuf/internal/impl/checkinit.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go b/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_field.go b/vendor/google.golang.org/protobuf/internal/impl/codec_field.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_gen.go b/vendor/google.golang.org/protobuf/internal/impl/codec_gen.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_map.go b/vendor/google.golang.org/protobuf/internal/impl/codec_map.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_map_go111.go b/vendor/google.golang.org/protobuf/internal/impl/codec_map_go111.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_map_go112.go b/vendor/google.golang.org/protobuf/internal/impl/codec_map_go112.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_message.go b/vendor/google.golang.org/protobuf/internal/impl/codec_message.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_messageset.go b/vendor/google.golang.org/protobuf/internal/impl/codec_messageset.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_reflect.go b/vendor/google.golang.org/protobuf/internal/impl/codec_reflect.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_tables.go b/vendor/google.golang.org/protobuf/internal/impl/codec_tables.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go b/vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/impl/convert.go b/vendor/google.golang.org/protobuf/internal/impl/convert.go -old mode 100644 -new mode 100755 -index 11a6128..185ef2e ---- a/vendor/google.golang.org/protobuf/internal/impl/convert.go -+++ b/vendor/google.golang.org/protobuf/internal/impl/convert.go -@@ -59,7 +59,6 @@ func NewConverter(t reflect.Type, fd protoreflect.FieldDescriptor) Converter { - default: - return newSingularConverter(t, fd) - } -- panic(fmt.Sprintf("invalid Go type %v for field %v", t, fd.FullName())) - } - - var ( -diff --git a/vendor/google.golang.org/protobuf/internal/impl/convert_list.go b/vendor/google.golang.org/protobuf/internal/impl/convert_list.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/impl/convert_map.go b/vendor/google.golang.org/protobuf/internal/impl/convert_map.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/impl/decode.go b/vendor/google.golang.org/protobuf/internal/impl/decode.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/impl/encode.go b/vendor/google.golang.org/protobuf/internal/impl/encode.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/impl/enum.go b/vendor/google.golang.org/protobuf/internal/impl/enum.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/impl/extension.go b/vendor/google.golang.org/protobuf/internal/impl/extension.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go b/vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/impl/legacy_export.go b/vendor/google.golang.org/protobuf/internal/impl/legacy_export.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go b/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/impl/legacy_file.go b/vendor/google.golang.org/protobuf/internal/impl/legacy_file.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go b/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/impl/merge.go b/vendor/google.golang.org/protobuf/internal/impl/merge.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/impl/merge_gen.go b/vendor/google.golang.org/protobuf/internal/impl/merge_gen.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/impl/message.go b/vendor/google.golang.org/protobuf/internal/impl/message.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go b/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go b/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go b/vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go b/vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go b/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/impl/validate.go b/vendor/google.golang.org/protobuf/internal/impl/validate.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/impl/weak.go b/vendor/google.golang.org/protobuf/internal/impl/weak.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/order/order.go b/vendor/google.golang.org/protobuf/internal/order/order.go -old mode 100644 -new mode 100755 -index 33745ed..dea522e ---- a/vendor/google.golang.org/protobuf/internal/order/order.go -+++ b/vendor/google.golang.org/protobuf/internal/order/order.go -@@ -33,7 +33,7 @@ var ( - return !inOneof(ox) && inOneof(oy) - } - // Fields in disjoint oneof sets are sorted by declaration index. -- if ox != nil && oy != nil && ox != oy { -+ if inOneof(ox) && inOneof(oy) && ox != oy { - return ox.Index() < oy.Index() - } - // Fields sorted by field number. -diff --git a/vendor/google.golang.org/protobuf/internal/order/range.go b/vendor/google.golang.org/protobuf/internal/order/range.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/pragma/pragma.go b/vendor/google.golang.org/protobuf/internal/pragma/pragma.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/set/ints.go b/vendor/google.golang.org/protobuf/internal/set/ints.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/strs/strings.go b/vendor/google.golang.org/protobuf/internal/strs/strings.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/strs/strings_pure.go b/vendor/google.golang.org/protobuf/internal/strs/strings_pure.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe.go b/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe.go -old mode 100644 -new mode 100755 -index fea589c..61a84d3 ---- a/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe.go -+++ b/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe.go -@@ -87,7 +87,7 @@ func (sb *Builder) grow(n int) { - // Unlike strings.Builder, we do not need to copy over the contents - // of the old buffer since our builder provides no API for - // retrieving previously created strings. -- sb.buf = make([]byte, 2*(cap(sb.buf)+n)) -+ sb.buf = make([]byte, 0, 2*(cap(sb.buf)+n)) - } - - func (sb *Builder) last(n int) string { -diff --git a/vendor/google.golang.org/protobuf/internal/version/version.go b/vendor/google.golang.org/protobuf/internal/version/version.go -old mode 100644 -new mode 100755 -index b480c50..0999f29 ---- a/vendor/google.golang.org/protobuf/internal/version/version.go -+++ b/vendor/google.golang.org/protobuf/internal/version/version.go -@@ -51,8 +51,8 @@ import ( - // 10. Send out the CL for review and submit it. - const ( - Major = 1 -- Minor = 28 -- Patch = 1 -+ Minor = 31 -+ Patch = 0 - PreRelease = "" - ) - -diff --git a/vendor/google.golang.org/protobuf/proto/checkinit.go b/vendor/google.golang.org/protobuf/proto/checkinit.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/proto/decode.go b/vendor/google.golang.org/protobuf/proto/decode.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/proto/decode_gen.go b/vendor/google.golang.org/protobuf/proto/decode_gen.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/proto/doc.go b/vendor/google.golang.org/protobuf/proto/doc.go -old mode 100644 -new mode 100755 -index 08d2a46..ec71e71 ---- a/vendor/google.golang.org/protobuf/proto/doc.go -+++ b/vendor/google.golang.org/protobuf/proto/doc.go -@@ -5,16 +5,13 @@ - // Package proto provides functions operating on protocol buffer messages. - // - // For documentation on protocol buffers in general, see: --// --// https://developers.google.com/protocol-buffers -+// https://protobuf.dev. - // - // For a tutorial on using protocol buffers with Go, see: --// --// https://developers.google.com/protocol-buffers/docs/gotutorial -+// https://protobuf.dev/getting-started/gotutorial. - // - // For a guide to generated Go protocol buffer code, see: --// --// https://developers.google.com/protocol-buffers/docs/reference/go-generated -+// https://protobuf.dev/reference/go/go-generated. - // - // # Binary serialization - // -diff --git a/vendor/google.golang.org/protobuf/proto/encode.go b/vendor/google.golang.org/protobuf/proto/encode.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/proto/encode_gen.go b/vendor/google.golang.org/protobuf/proto/encode_gen.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/proto/equal.go b/vendor/google.golang.org/protobuf/proto/equal.go -old mode 100644 -new mode 100755 -index 67948dd..1a0be1b ---- a/vendor/google.golang.org/protobuf/proto/equal.go -+++ b/vendor/google.golang.org/protobuf/proto/equal.go -@@ -5,30 +5,39 @@ - package proto - - import ( -- "bytes" -- "math" - "reflect" - -- "google.golang.org/protobuf/encoding/protowire" - "google.golang.org/protobuf/reflect/protoreflect" - ) - --// Equal reports whether two messages are equal. --// If two messages marshal to the same bytes under deterministic serialization, --// then Equal is guaranteed to report true. -+// Equal reports whether two messages are equal, -+// by recursively comparing the fields of the message. - // --// Two messages are equal if they belong to the same message descriptor, --// have the same set of populated known and extension field values, --// and the same set of unknown fields values. If either of the top-level --// messages are invalid, then Equal reports true only if both are invalid. -+// - Bytes fields are equal if they contain identical bytes. -+// Empty bytes (regardless of nil-ness) are considered equal. - // --// Scalar values are compared with the equivalent of the == operator in Go, --// except bytes values which are compared using bytes.Equal and --// floating point values which specially treat NaNs as equal. --// Message values are compared by recursively calling Equal. --// Lists are equal if each element value is also equal. --// Maps are equal if they have the same set of keys, where the pair of values --// for each key is also equal. -+// - Floating-point fields are equal if they contain the same value. -+// Unlike the == operator, a NaN is equal to another NaN. -+// -+// - Other scalar fields are equal if they contain the same value. -+// -+// - Message fields are equal if they have -+// the same set of populated known and extension field values, and -+// the same set of unknown fields values. -+// -+// - Lists are equal if they are the same length and -+// each corresponding element is equal. -+// -+// - Maps are equal if they have the same set of keys and -+// the corresponding value for each key is equal. -+// -+// An invalid message is not equal to a valid message. -+// An invalid message is only equal to another invalid message of the -+// same type. An invalid message often corresponds to a nil pointer -+// of the concrete message type. For example, (*pb.M)(nil) is not equal -+// to &pb.M{}. -+// If two valid messages marshal to the same bytes under deterministic -+// serialization, then Equal is guaranteed to report true. - func Equal(x, y Message) bool { - if x == nil || y == nil { - return x == nil && y == nil -@@ -42,130 +51,7 @@ func Equal(x, y Message) bool { - if mx.IsValid() != my.IsValid() { - return false - } -- return equalMessage(mx, my) --} -- --// equalMessage compares two messages. --func equalMessage(mx, my protoreflect.Message) bool { -- if mx.Descriptor() != my.Descriptor() { -- return false -- } -- -- nx := 0 -- equal := true -- mx.Range(func(fd protoreflect.FieldDescriptor, vx protoreflect.Value) bool { -- nx++ -- vy := my.Get(fd) -- equal = my.Has(fd) && equalField(fd, vx, vy) -- return equal -- }) -- if !equal { -- return false -- } -- ny := 0 -- my.Range(func(fd protoreflect.FieldDescriptor, vx protoreflect.Value) bool { -- ny++ -- return true -- }) -- if nx != ny { -- return false -- } -- -- return equalUnknown(mx.GetUnknown(), my.GetUnknown()) --} -- --// equalField compares two fields. --func equalField(fd protoreflect.FieldDescriptor, x, y protoreflect.Value) bool { -- switch { -- case fd.IsList(): -- return equalList(fd, x.List(), y.List()) -- case fd.IsMap(): -- return equalMap(fd, x.Map(), y.Map()) -- default: -- return equalValue(fd, x, y) -- } --} -- --// equalMap compares two maps. --func equalMap(fd protoreflect.FieldDescriptor, x, y protoreflect.Map) bool { -- if x.Len() != y.Len() { -- return false -- } -- equal := true -- x.Range(func(k protoreflect.MapKey, vx protoreflect.Value) bool { -- vy := y.Get(k) -- equal = y.Has(k) && equalValue(fd.MapValue(), vx, vy) -- return equal -- }) -- return equal --} -- --// equalList compares two lists. --func equalList(fd protoreflect.FieldDescriptor, x, y protoreflect.List) bool { -- if x.Len() != y.Len() { -- return false -- } -- for i := x.Len() - 1; i >= 0; i-- { -- if !equalValue(fd, x.Get(i), y.Get(i)) { -- return false -- } -- } -- return true --} -- --// equalValue compares two singular values. --func equalValue(fd protoreflect.FieldDescriptor, x, y protoreflect.Value) bool { -- switch fd.Kind() { -- case protoreflect.BoolKind: -- return x.Bool() == y.Bool() -- case protoreflect.EnumKind: -- return x.Enum() == y.Enum() -- case protoreflect.Int32Kind, protoreflect.Sint32Kind, -- protoreflect.Int64Kind, protoreflect.Sint64Kind, -- protoreflect.Sfixed32Kind, protoreflect.Sfixed64Kind: -- return x.Int() == y.Int() -- case protoreflect.Uint32Kind, protoreflect.Uint64Kind, -- protoreflect.Fixed32Kind, protoreflect.Fixed64Kind: -- return x.Uint() == y.Uint() -- case protoreflect.FloatKind, protoreflect.DoubleKind: -- fx := x.Float() -- fy := y.Float() -- if math.IsNaN(fx) || math.IsNaN(fy) { -- return math.IsNaN(fx) && math.IsNaN(fy) -- } -- return fx == fy -- case protoreflect.StringKind: -- return x.String() == y.String() -- case protoreflect.BytesKind: -- return bytes.Equal(x.Bytes(), y.Bytes()) -- case protoreflect.MessageKind, protoreflect.GroupKind: -- return equalMessage(x.Message(), y.Message()) -- default: -- return x.Interface() == y.Interface() -- } --} -- --// equalUnknown compares unknown fields by direct comparison on the raw bytes --// of each individual field number. --func equalUnknown(x, y protoreflect.RawFields) bool { -- if len(x) != len(y) { -- return false -- } -- if bytes.Equal([]byte(x), []byte(y)) { -- return true -- } -- -- mx := make(map[protoreflect.FieldNumber]protoreflect.RawFields) -- my := make(map[protoreflect.FieldNumber]protoreflect.RawFields) -- for len(x) > 0 { -- fnum, _, n := protowire.ConsumeField(x) -- mx[fnum] = append(mx[fnum], x[:n]...) -- x = x[n:] -- } -- for len(y) > 0 { -- fnum, _, n := protowire.ConsumeField(y) -- my[fnum] = append(my[fnum], y[:n]...) -- y = y[n:] -- } -- return reflect.DeepEqual(mx, my) -+ vx := protoreflect.ValueOfMessage(mx) -+ vy := protoreflect.ValueOfMessage(my) -+ return vx.Equal(vy) - } -diff --git a/vendor/google.golang.org/protobuf/proto/extension.go b/vendor/google.golang.org/protobuf/proto/extension.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/proto/merge.go b/vendor/google.golang.org/protobuf/proto/merge.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/proto/messageset.go b/vendor/google.golang.org/protobuf/proto/messageset.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/proto/proto.go b/vendor/google.golang.org/protobuf/proto/proto.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/proto/proto_methods.go b/vendor/google.golang.org/protobuf/proto/proto_methods.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/proto/proto_reflect.go b/vendor/google.golang.org/protobuf/proto/proto_reflect.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/proto/reset.go b/vendor/google.golang.org/protobuf/proto/reset.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/proto/size.go b/vendor/google.golang.org/protobuf/proto/size.go -old mode 100644 -new mode 100755 -index 554b9c6..f1692b4 ---- a/vendor/google.golang.org/protobuf/proto/size.go -+++ b/vendor/google.golang.org/protobuf/proto/size.go -@@ -73,23 +73,27 @@ func (o MarshalOptions) sizeField(fd protoreflect.FieldDescriptor, value protore - } - - func (o MarshalOptions) sizeList(num protowire.Number, fd protoreflect.FieldDescriptor, list protoreflect.List) (size int) { -+ sizeTag := protowire.SizeTag(num) -+ - if fd.IsPacked() && list.Len() > 0 { - content := 0 - for i, llen := 0, list.Len(); i < llen; i++ { - content += o.sizeSingular(num, fd.Kind(), list.Get(i)) - } -- return protowire.SizeTag(num) + protowire.SizeBytes(content) -+ return sizeTag + protowire.SizeBytes(content) - } - - for i, llen := 0, list.Len(); i < llen; i++ { -- size += protowire.SizeTag(num) + o.sizeSingular(num, fd.Kind(), list.Get(i)) -+ size += sizeTag + o.sizeSingular(num, fd.Kind(), list.Get(i)) - } - return size - } - - func (o MarshalOptions) sizeMap(num protowire.Number, fd protoreflect.FieldDescriptor, mapv protoreflect.Map) (size int) { -+ sizeTag := protowire.SizeTag(num) -+ - mapv.Range(func(key protoreflect.MapKey, value protoreflect.Value) bool { -- size += protowire.SizeTag(num) -+ size += sizeTag - size += protowire.SizeBytes(o.sizeField(fd.MapKey(), key.Value()) + o.sizeField(fd.MapValue(), value)) - return true - }) -diff --git a/vendor/google.golang.org/protobuf/proto/size_gen.go b/vendor/google.golang.org/protobuf/proto/size_gen.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/proto/wrappers.go b/vendor/google.golang.org/protobuf/proto/wrappers.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/reflect/protodesc/desc.go b/vendor/google.golang.org/protobuf/reflect/protodesc/desc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go b/vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/reflect/protodesc/desc_resolve.go b/vendor/google.golang.org/protobuf/reflect/protodesc/desc_resolve.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/reflect/protodesc/desc_validate.go b/vendor/google.golang.org/protobuf/reflect/protodesc/desc_validate.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/reflect/protodesc/proto.go b/vendor/google.golang.org/protobuf/reflect/protodesc/proto.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/source.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/source.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go -old mode 100644 -new mode 100755 -index b03c122..717b106 ---- a/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go -+++ b/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go -@@ -35,6 +35,8 @@ func (p *SourcePath) appendFileDescriptorProto(b []byte) []byte { - b = p.appendSingularField(b, "source_code_info", (*SourcePath).appendSourceCodeInfo) - case 12: - b = p.appendSingularField(b, "syntax", nil) -+ case 13: -+ b = p.appendSingularField(b, "edition", nil) - } - return b - } -@@ -236,6 +238,8 @@ func (p *SourcePath) appendMessageOptions(b []byte) []byte { - b = p.appendSingularField(b, "deprecated", nil) - case 7: - b = p.appendSingularField(b, "map_entry", nil) -+ case 11: -+ b = p.appendSingularField(b, "deprecated_legacy_json_field_conflicts", nil) - case 999: - b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption) - } -@@ -279,6 +283,8 @@ func (p *SourcePath) appendEnumOptions(b []byte) []byte { - b = p.appendSingularField(b, "allow_alias", nil) - case 3: - b = p.appendSingularField(b, "deprecated", nil) -+ case 6: -+ b = p.appendSingularField(b, "deprecated_legacy_json_field_conflicts", nil) - case 999: - b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption) - } -@@ -345,10 +351,20 @@ func (p *SourcePath) appendFieldOptions(b []byte) []byte { - b = p.appendSingularField(b, "jstype", nil) - case 5: - b = p.appendSingularField(b, "lazy", nil) -+ case 15: -+ b = p.appendSingularField(b, "unverified_lazy", nil) - case 3: - b = p.appendSingularField(b, "deprecated", nil) - case 10: - b = p.appendSingularField(b, "weak", nil) -+ case 16: -+ b = p.appendSingularField(b, "debug_redact", nil) -+ case 17: -+ b = p.appendSingularField(b, "retention", nil) -+ case 18: -+ b = p.appendSingularField(b, "target", nil) -+ case 19: -+ b = p.appendRepeatedField(b, "targets", nil) - case 999: - b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption) - } -@@ -404,6 +420,10 @@ func (p *SourcePath) appendExtensionRangeOptions(b []byte) []byte { - switch (*p)[0] { - case 999: - b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption) -+ case 2: -+ b = p.appendRepeatedField(b, "declaration", (*SourcePath).appendExtensionRangeOptions_Declaration) -+ case 3: -+ b = p.appendSingularField(b, "verification", nil) - } - return b - } -@@ -459,3 +479,24 @@ func (p *SourcePath) appendUninterpretedOption_NamePart(b []byte) []byte { - } - return b - } -+ -+func (p *SourcePath) appendExtensionRangeOptions_Declaration(b []byte) []byte { -+ if len(*p) == 0 { -+ return b -+ } -+ switch (*p)[0] { -+ case 1: -+ b = p.appendSingularField(b, "number", nil) -+ case 2: -+ b = p.appendSingularField(b, "full_name", nil) -+ case 3: -+ b = p.appendSingularField(b, "type", nil) -+ case 4: -+ b = p.appendSingularField(b, "is_repeated", nil) -+ case 5: -+ b = p.appendSingularField(b, "reserved", nil) -+ case 6: -+ b = p.appendSingularField(b, "repeated", nil) -+ } -+ return b -+} -diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/type.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/type.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/value.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/value.go -old mode 100644 -new mode 100755 -index f319810..37601b7 ---- a/vendor/google.golang.org/protobuf/reflect/protoreflect/value.go -+++ b/vendor/google.golang.org/protobuf/reflect/protoreflect/value.go -@@ -148,7 +148,7 @@ type Message interface { - // be preserved in marshaling or other operations. - IsValid() bool - -- // ProtoMethods returns optional fast-path implementions of various operations. -+ // ProtoMethods returns optional fast-path implementations of various operations. - // This method may return nil. - // - // The returned methods type is identical to -diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_equal.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/value_equal.go -new file mode 100755 -index 0000000..5916525 ---- /dev/null -+++ b/vendor/google.golang.org/protobuf/reflect/protoreflect/value_equal.go -@@ -0,0 +1,168 @@ -+// Copyright 2022 The Go Authors. All rights reserved. -+// Use of this source code is governed by a BSD-style -+// license that can be found in the LICENSE file. -+ -+package protoreflect -+ -+import ( -+ "bytes" -+ "fmt" -+ "math" -+ "reflect" -+ -+ "google.golang.org/protobuf/encoding/protowire" -+) -+ -+// Equal reports whether v1 and v2 are recursively equal. -+// -+// - Values of different types are always unequal. -+// -+// - Bytes values are equal if they contain identical bytes. -+// Empty bytes (regardless of nil-ness) are considered equal. -+// -+// - Floating point values are equal if they contain the same value. -+// Unlike the == operator, a NaN is equal to another NaN. -+// -+// - Enums are equal if they contain the same number. -+// Since Value does not contain an enum descriptor, -+// enum values do not consider the type of the enum. -+// -+// - Other scalar values are equal if they contain the same value. -+// -+// - Message values are equal if they belong to the same message descriptor, -+// have the same set of populated known and extension field values, -+// and the same set of unknown fields values. -+// -+// - Lists are equal if they are the same length and -+// each corresponding element is equal. -+// -+// - Maps are equal if they have the same set of keys and -+// the corresponding value for each key is equal. -+func (v1 Value) Equal(v2 Value) bool { -+ return equalValue(v1, v2) -+} -+ -+func equalValue(x, y Value) bool { -+ eqType := x.typ == y.typ -+ switch x.typ { -+ case nilType: -+ return eqType -+ case boolType: -+ return eqType && x.Bool() == y.Bool() -+ case int32Type, int64Type: -+ return eqType && x.Int() == y.Int() -+ case uint32Type, uint64Type: -+ return eqType && x.Uint() == y.Uint() -+ case float32Type, float64Type: -+ return eqType && equalFloat(x.Float(), y.Float()) -+ case stringType: -+ return eqType && x.String() == y.String() -+ case bytesType: -+ return eqType && bytes.Equal(x.Bytes(), y.Bytes()) -+ case enumType: -+ return eqType && x.Enum() == y.Enum() -+ default: -+ switch x := x.Interface().(type) { -+ case Message: -+ y, ok := y.Interface().(Message) -+ return ok && equalMessage(x, y) -+ case List: -+ y, ok := y.Interface().(List) -+ return ok && equalList(x, y) -+ case Map: -+ y, ok := y.Interface().(Map) -+ return ok && equalMap(x, y) -+ default: -+ panic(fmt.Sprintf("unknown type: %T", x)) -+ } -+ } -+} -+ -+// equalFloat compares two floats, where NaNs are treated as equal. -+func equalFloat(x, y float64) bool { -+ if math.IsNaN(x) || math.IsNaN(y) { -+ return math.IsNaN(x) && math.IsNaN(y) -+ } -+ return x == y -+} -+ -+// equalMessage compares two messages. -+func equalMessage(mx, my Message) bool { -+ if mx.Descriptor() != my.Descriptor() { -+ return false -+ } -+ -+ nx := 0 -+ equal := true -+ mx.Range(func(fd FieldDescriptor, vx Value) bool { -+ nx++ -+ vy := my.Get(fd) -+ equal = my.Has(fd) && equalValue(vx, vy) -+ return equal -+ }) -+ if !equal { -+ return false -+ } -+ ny := 0 -+ my.Range(func(fd FieldDescriptor, vx Value) bool { -+ ny++ -+ return true -+ }) -+ if nx != ny { -+ return false -+ } -+ -+ return equalUnknown(mx.GetUnknown(), my.GetUnknown()) -+} -+ -+// equalList compares two lists. -+func equalList(x, y List) bool { -+ if x.Len() != y.Len() { -+ return false -+ } -+ for i := x.Len() - 1; i >= 0; i-- { -+ if !equalValue(x.Get(i), y.Get(i)) { -+ return false -+ } -+ } -+ return true -+} -+ -+// equalMap compares two maps. -+func equalMap(x, y Map) bool { -+ if x.Len() != y.Len() { -+ return false -+ } -+ equal := true -+ x.Range(func(k MapKey, vx Value) bool { -+ vy := y.Get(k) -+ equal = y.Has(k) && equalValue(vx, vy) -+ return equal -+ }) -+ return equal -+} -+ -+// equalUnknown compares unknown fields by direct comparison on the raw bytes -+// of each individual field number. -+func equalUnknown(x, y RawFields) bool { -+ if len(x) != len(y) { -+ return false -+ } -+ if bytes.Equal([]byte(x), []byte(y)) { -+ return true -+ } -+ -+ mx := make(map[FieldNumber]RawFields) -+ my := make(map[FieldNumber]RawFields) -+ for len(x) > 0 { -+ fnum, _, n := protowire.ConsumeField(x) -+ mx[fnum] = append(mx[fnum], x[:n]...) -+ x = x[n:] -+ } -+ for len(y) > 0 { -+ fnum, _, n := protowire.ConsumeField(y) -+ my[fnum] = append(my[fnum], y[:n]...) -+ y = y[n:] -+ } -+ return reflect.DeepEqual(mx, my) -+} -diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_pure.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/value_pure.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go -old mode 100644 -new mode 100755 -index ca8e28c..08e5ef7 ---- a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go -+++ b/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go -@@ -54,11 +54,11 @@ import ( - // // Append a 0 to a "repeated int32" field. - // // Since the Value returned by Mutable is guaranteed to alias - // // the source message, modifying the Value modifies the message. --// message.Mutable(fieldDesc).(List).Append(protoreflect.ValueOfInt32(0)) -+// message.Mutable(fieldDesc).List().Append(protoreflect.ValueOfInt32(0)) - // - // // Assign [0] to a "repeated int32" field by creating a new Value, - // // modifying it, and assigning it. --// list := message.NewField(fieldDesc).(List) -+// list := message.NewField(fieldDesc).List() - // list.Append(protoreflect.ValueOfInt32(0)) - // message.Set(fieldDesc, list) - // // ERROR: Since it is not defined whether Set aliases the source, -diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go b/vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go -old mode 100644 -new mode 100755 -index 58352a6..aeb5597 ---- a/vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go -+++ b/vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go -@@ -46,7 +46,7 @@ var conflictPolicy = "panic" // "panic" | "warn" | "ignore" - // It is a variable so that the behavior is easily overridden in another file. - var ignoreConflict = func(d protoreflect.Descriptor, err error) bool { - const env = "GOLANG_PROTOBUF_REGISTRATION_CONFLICT" -- const faq = "https://developers.google.com/protocol-buffers/docs/reference/go/faq#namespace-conflict" -+ const faq = "https://protobuf.dev/reference/go/faq#namespace-conflict" - policy := conflictPolicy - if v := os.Getenv(env); v != "" { - policy = v -diff --git a/vendor/google.golang.org/protobuf/runtime/protoiface/legacy.go b/vendor/google.golang.org/protobuf/runtime/protoiface/legacy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/runtime/protoiface/methods.go b/vendor/google.golang.org/protobuf/runtime/protoiface/methods.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/runtime/protoimpl/impl.go b/vendor/google.golang.org/protobuf/runtime/protoimpl/impl.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/runtime/protoimpl/version.go b/vendor/google.golang.org/protobuf/runtime/protoimpl/version.go -old mode 100644 -new mode 100755 -diff --git a/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go b/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go -old mode 100644 -new mode 100755 -index abe4ab5..04c00f7 ---- a/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go -+++ b/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go -@@ -48,6 +48,64 @@ import ( - sync "sync" - ) - -+// The verification state of the extension range. -+type ExtensionRangeOptions_VerificationState int32 -+ -+const ( -+ // All the extensions of the range must be declared. -+ ExtensionRangeOptions_DECLARATION ExtensionRangeOptions_VerificationState = 0 -+ ExtensionRangeOptions_UNVERIFIED ExtensionRangeOptions_VerificationState = 1 -+) -+ -+// Enum value maps for ExtensionRangeOptions_VerificationState. -+var ( -+ ExtensionRangeOptions_VerificationState_name = map[int32]string{ -+ 0: "DECLARATION", -+ 1: "UNVERIFIED", -+ } -+ ExtensionRangeOptions_VerificationState_value = map[string]int32{ -+ "DECLARATION": 0, -+ "UNVERIFIED": 1, -+ } -+) -+ -+func (x ExtensionRangeOptions_VerificationState) Enum() *ExtensionRangeOptions_VerificationState { -+ p := new(ExtensionRangeOptions_VerificationState) -+ *p = x -+ return p -+} -+ -+func (x ExtensionRangeOptions_VerificationState) String() string { -+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -+} -+ -+func (ExtensionRangeOptions_VerificationState) Descriptor() protoreflect.EnumDescriptor { -+ return file_google_protobuf_descriptor_proto_enumTypes[0].Descriptor() -+} -+ -+func (ExtensionRangeOptions_VerificationState) Type() protoreflect.EnumType { -+ return &file_google_protobuf_descriptor_proto_enumTypes[0] -+} -+ -+func (x ExtensionRangeOptions_VerificationState) Number() protoreflect.EnumNumber { -+ return protoreflect.EnumNumber(x) -+} -+ -+// Deprecated: Do not use. -+func (x *ExtensionRangeOptions_VerificationState) UnmarshalJSON(b []byte) error { -+ num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) -+ if err != nil { -+ return err -+ } -+ *x = ExtensionRangeOptions_VerificationState(num) -+ return nil -+} -+ -+// Deprecated: Use ExtensionRangeOptions_VerificationState.Descriptor instead. -+func (ExtensionRangeOptions_VerificationState) EnumDescriptor() ([]byte, []int) { -+ return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{3, 0} -+} -+ - type FieldDescriptorProto_Type int32 - - const ( -@@ -137,11 +195,11 @@ func (x FieldDescriptorProto_Type) String() string { - } - - func (FieldDescriptorProto_Type) Descriptor() protoreflect.EnumDescriptor { -- return file_google_protobuf_descriptor_proto_enumTypes[0].Descriptor() -+ return file_google_protobuf_descriptor_proto_enumTypes[1].Descriptor() - } - - func (FieldDescriptorProto_Type) Type() protoreflect.EnumType { -- return &file_google_protobuf_descriptor_proto_enumTypes[0] -+ return &file_google_protobuf_descriptor_proto_enumTypes[1] - } - - func (x FieldDescriptorProto_Type) Number() protoreflect.EnumNumber { -@@ -197,11 +255,11 @@ func (x FieldDescriptorProto_Label) String() string { - } - - func (FieldDescriptorProto_Label) Descriptor() protoreflect.EnumDescriptor { -- return file_google_protobuf_descriptor_proto_enumTypes[1].Descriptor() -+ return file_google_protobuf_descriptor_proto_enumTypes[2].Descriptor() - } - - func (FieldDescriptorProto_Label) Type() protoreflect.EnumType { -- return &file_google_protobuf_descriptor_proto_enumTypes[1] -+ return &file_google_protobuf_descriptor_proto_enumTypes[2] - } - - func (x FieldDescriptorProto_Label) Number() protoreflect.EnumNumber { -@@ -258,11 +316,11 @@ func (x FileOptions_OptimizeMode) String() string { - } - - func (FileOptions_OptimizeMode) Descriptor() protoreflect.EnumDescriptor { -- return file_google_protobuf_descriptor_proto_enumTypes[2].Descriptor() -+ return file_google_protobuf_descriptor_proto_enumTypes[3].Descriptor() - } - - func (FileOptions_OptimizeMode) Type() protoreflect.EnumType { -- return &file_google_protobuf_descriptor_proto_enumTypes[2] -+ return &file_google_protobuf_descriptor_proto_enumTypes[3] - } - - func (x FileOptions_OptimizeMode) Number() protoreflect.EnumNumber { -@@ -288,7 +346,13 @@ type FieldOptions_CType int32 - - const ( - // Default mode. -- FieldOptions_STRING FieldOptions_CType = 0 -+ FieldOptions_STRING FieldOptions_CType = 0 -+ // The option [ctype=CORD] may be applied to a non-repeated field of type -+ // "bytes". It indicates that in C++, the data should be stored in a Cord -+ // instead of a string. For very large strings, this may reduce memory -+ // fragmentation. It may also allow better performance when parsing from a -+ // Cord, or when parsing with aliasing enabled, as the parsed Cord may then -+ // alias the original buffer. - FieldOptions_CORD FieldOptions_CType = 1 - FieldOptions_STRING_PIECE FieldOptions_CType = 2 - ) -@@ -318,11 +382,11 @@ func (x FieldOptions_CType) String() string { - } - - func (FieldOptions_CType) Descriptor() protoreflect.EnumDescriptor { -- return file_google_protobuf_descriptor_proto_enumTypes[3].Descriptor() -+ return file_google_protobuf_descriptor_proto_enumTypes[4].Descriptor() - } - - func (FieldOptions_CType) Type() protoreflect.EnumType { -- return &file_google_protobuf_descriptor_proto_enumTypes[3] -+ return &file_google_protobuf_descriptor_proto_enumTypes[4] - } - - func (x FieldOptions_CType) Number() protoreflect.EnumNumber { -@@ -380,11 +444,11 @@ func (x FieldOptions_JSType) String() string { - } - - func (FieldOptions_JSType) Descriptor() protoreflect.EnumDescriptor { -- return file_google_protobuf_descriptor_proto_enumTypes[4].Descriptor() -+ return file_google_protobuf_descriptor_proto_enumTypes[5].Descriptor() - } - - func (FieldOptions_JSType) Type() protoreflect.EnumType { -- return &file_google_protobuf_descriptor_proto_enumTypes[4] -+ return &file_google_protobuf_descriptor_proto_enumTypes[5] - } - - func (x FieldOptions_JSType) Number() protoreflect.EnumNumber { -@@ -406,6 +470,152 @@ func (FieldOptions_JSType) EnumDescriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{12, 1} - } - -+// If set to RETENTION_SOURCE, the option will be omitted from the binary. -+// Note: as of January 2023, support for this is in progress and does not yet -+// have an effect (b/264593489). -+type FieldOptions_OptionRetention int32 -+ -+const ( -+ FieldOptions_RETENTION_UNKNOWN FieldOptions_OptionRetention = 0 -+ FieldOptions_RETENTION_RUNTIME FieldOptions_OptionRetention = 1 -+ FieldOptions_RETENTION_SOURCE FieldOptions_OptionRetention = 2 -+) -+ -+// Enum value maps for FieldOptions_OptionRetention. -+var ( -+ FieldOptions_OptionRetention_name = map[int32]string{ -+ 0: "RETENTION_UNKNOWN", -+ 1: "RETENTION_RUNTIME", -+ 2: "RETENTION_SOURCE", -+ } -+ FieldOptions_OptionRetention_value = map[string]int32{ -+ "RETENTION_UNKNOWN": 0, -+ "RETENTION_RUNTIME": 1, -+ "RETENTION_SOURCE": 2, -+ } -+) -+ -+func (x FieldOptions_OptionRetention) Enum() *FieldOptions_OptionRetention { -+ p := new(FieldOptions_OptionRetention) -+ *p = x -+ return p -+} -+ -+func (x FieldOptions_OptionRetention) String() string { -+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -+} -+ -+func (FieldOptions_OptionRetention) Descriptor() protoreflect.EnumDescriptor { -+ return file_google_protobuf_descriptor_proto_enumTypes[6].Descriptor() -+} -+ -+func (FieldOptions_OptionRetention) Type() protoreflect.EnumType { -+ return &file_google_protobuf_descriptor_proto_enumTypes[6] -+} -+ -+func (x FieldOptions_OptionRetention) Number() protoreflect.EnumNumber { -+ return protoreflect.EnumNumber(x) -+} -+ -+// Deprecated: Do not use. -+func (x *FieldOptions_OptionRetention) UnmarshalJSON(b []byte) error { -+ num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) -+ if err != nil { -+ return err -+ } -+ *x = FieldOptions_OptionRetention(num) -+ return nil -+} -+ -+// Deprecated: Use FieldOptions_OptionRetention.Descriptor instead. -+func (FieldOptions_OptionRetention) EnumDescriptor() ([]byte, []int) { -+ return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{12, 2} -+} -+ -+// This indicates the types of entities that the field may apply to when used -+// as an option. If it is unset, then the field may be freely used as an -+// option on any kind of entity. Note: as of January 2023, support for this is -+// in progress and does not yet have an effect (b/264593489). -+type FieldOptions_OptionTargetType int32 -+ -+const ( -+ FieldOptions_TARGET_TYPE_UNKNOWN FieldOptions_OptionTargetType = 0 -+ FieldOptions_TARGET_TYPE_FILE FieldOptions_OptionTargetType = 1 -+ FieldOptions_TARGET_TYPE_EXTENSION_RANGE FieldOptions_OptionTargetType = 2 -+ FieldOptions_TARGET_TYPE_MESSAGE FieldOptions_OptionTargetType = 3 -+ FieldOptions_TARGET_TYPE_FIELD FieldOptions_OptionTargetType = 4 -+ FieldOptions_TARGET_TYPE_ONEOF FieldOptions_OptionTargetType = 5 -+ FieldOptions_TARGET_TYPE_ENUM FieldOptions_OptionTargetType = 6 -+ FieldOptions_TARGET_TYPE_ENUM_ENTRY FieldOptions_OptionTargetType = 7 -+ FieldOptions_TARGET_TYPE_SERVICE FieldOptions_OptionTargetType = 8 -+ FieldOptions_TARGET_TYPE_METHOD FieldOptions_OptionTargetType = 9 -+) -+ -+// Enum value maps for FieldOptions_OptionTargetType. -+var ( -+ FieldOptions_OptionTargetType_name = map[int32]string{ -+ 0: "TARGET_TYPE_UNKNOWN", -+ 1: "TARGET_TYPE_FILE", -+ 2: "TARGET_TYPE_EXTENSION_RANGE", -+ 3: "TARGET_TYPE_MESSAGE", -+ 4: "TARGET_TYPE_FIELD", -+ 5: "TARGET_TYPE_ONEOF", -+ 6: "TARGET_TYPE_ENUM", -+ 7: "TARGET_TYPE_ENUM_ENTRY", -+ 8: "TARGET_TYPE_SERVICE", -+ 9: "TARGET_TYPE_METHOD", -+ } -+ FieldOptions_OptionTargetType_value = map[string]int32{ -+ "TARGET_TYPE_UNKNOWN": 0, -+ "TARGET_TYPE_FILE": 1, -+ "TARGET_TYPE_EXTENSION_RANGE": 2, -+ "TARGET_TYPE_MESSAGE": 3, -+ "TARGET_TYPE_FIELD": 4, -+ "TARGET_TYPE_ONEOF": 5, -+ "TARGET_TYPE_ENUM": 6, -+ "TARGET_TYPE_ENUM_ENTRY": 7, -+ "TARGET_TYPE_SERVICE": 8, -+ "TARGET_TYPE_METHOD": 9, -+ } -+) -+ -+func (x FieldOptions_OptionTargetType) Enum() *FieldOptions_OptionTargetType { -+ p := new(FieldOptions_OptionTargetType) -+ *p = x -+ return p -+} -+ -+func (x FieldOptions_OptionTargetType) String() string { -+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -+} -+ -+func (FieldOptions_OptionTargetType) Descriptor() protoreflect.EnumDescriptor { -+ return file_google_protobuf_descriptor_proto_enumTypes[7].Descriptor() -+} -+ -+func (FieldOptions_OptionTargetType) Type() protoreflect.EnumType { -+ return &file_google_protobuf_descriptor_proto_enumTypes[7] -+} -+ -+func (x FieldOptions_OptionTargetType) Number() protoreflect.EnumNumber { -+ return protoreflect.EnumNumber(x) -+} -+ -+// Deprecated: Do not use. -+func (x *FieldOptions_OptionTargetType) UnmarshalJSON(b []byte) error { -+ num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) -+ if err != nil { -+ return err -+ } -+ *x = FieldOptions_OptionTargetType(num) -+ return nil -+} -+ -+// Deprecated: Use FieldOptions_OptionTargetType.Descriptor instead. -+func (FieldOptions_OptionTargetType) EnumDescriptor() ([]byte, []int) { -+ return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{12, 3} -+} -+ - // Is this method side-effect-free (or safe in HTTP parlance), or idempotent, - // or neither? HTTP based RPC implementation may choose GET verb for safe - // methods, and PUT verb for idempotent methods instead of the default POST. -@@ -442,11 +652,11 @@ func (x MethodOptions_IdempotencyLevel) String() string { - } - - func (MethodOptions_IdempotencyLevel) Descriptor() protoreflect.EnumDescriptor { -- return file_google_protobuf_descriptor_proto_enumTypes[5].Descriptor() -+ return file_google_protobuf_descriptor_proto_enumTypes[8].Descriptor() - } - - func (MethodOptions_IdempotencyLevel) Type() protoreflect.EnumType { -- return &file_google_protobuf_descriptor_proto_enumTypes[5] -+ return &file_google_protobuf_descriptor_proto_enumTypes[8] - } - - func (x MethodOptions_IdempotencyLevel) Number() protoreflect.EnumNumber { -@@ -468,6 +678,70 @@ func (MethodOptions_IdempotencyLevel) EnumDescriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{17, 0} - } - -+// Represents the identified object's effect on the element in the original -+// .proto file. -+type GeneratedCodeInfo_Annotation_Semantic int32 -+ -+const ( -+ // There is no effect or the effect is indescribable. -+ GeneratedCodeInfo_Annotation_NONE GeneratedCodeInfo_Annotation_Semantic = 0 -+ // The element is set or otherwise mutated. -+ GeneratedCodeInfo_Annotation_SET GeneratedCodeInfo_Annotation_Semantic = 1 -+ // An alias to the element is returned. -+ GeneratedCodeInfo_Annotation_ALIAS GeneratedCodeInfo_Annotation_Semantic = 2 -+) -+ -+// Enum value maps for GeneratedCodeInfo_Annotation_Semantic. -+var ( -+ GeneratedCodeInfo_Annotation_Semantic_name = map[int32]string{ -+ 0: "NONE", -+ 1: "SET", -+ 2: "ALIAS", -+ } -+ GeneratedCodeInfo_Annotation_Semantic_value = map[string]int32{ -+ "NONE": 0, -+ "SET": 1, -+ "ALIAS": 2, -+ } -+) -+ -+func (x GeneratedCodeInfo_Annotation_Semantic) Enum() *GeneratedCodeInfo_Annotation_Semantic { -+ p := new(GeneratedCodeInfo_Annotation_Semantic) -+ *p = x -+ return p -+} -+ -+func (x GeneratedCodeInfo_Annotation_Semantic) String() string { -+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -+} -+ -+func (GeneratedCodeInfo_Annotation_Semantic) Descriptor() protoreflect.EnumDescriptor { -+ return file_google_protobuf_descriptor_proto_enumTypes[9].Descriptor() -+} -+ -+func (GeneratedCodeInfo_Annotation_Semantic) Type() protoreflect.EnumType { -+ return &file_google_protobuf_descriptor_proto_enumTypes[9] -+} -+ -+func (x GeneratedCodeInfo_Annotation_Semantic) Number() protoreflect.EnumNumber { -+ return protoreflect.EnumNumber(x) -+} -+ -+// Deprecated: Do not use. -+func (x *GeneratedCodeInfo_Annotation_Semantic) UnmarshalJSON(b []byte) error { -+ num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) -+ if err != nil { -+ return err -+ } -+ *x = GeneratedCodeInfo_Annotation_Semantic(num) -+ return nil -+} -+ -+// Deprecated: Use GeneratedCodeInfo_Annotation_Semantic.Descriptor instead. -+func (GeneratedCodeInfo_Annotation_Semantic) EnumDescriptor() ([]byte, []int) { -+ return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{20, 0, 0} -+} -+ - // The protocol compiler can output a FileDescriptorSet containing the .proto - // files it parses. - type FileDescriptorSet struct { -@@ -544,8 +818,12 @@ type FileDescriptorProto struct { - // development tools. - SourceCodeInfo *SourceCodeInfo `protobuf:"bytes,9,opt,name=source_code_info,json=sourceCodeInfo" json:"source_code_info,omitempty"` - // The syntax of the proto file. -- // The supported values are "proto2" and "proto3". -+ // The supported values are "proto2", "proto3", and "editions". -+ // -+ // If `edition` is present, this value must be "editions". - Syntax *string `protobuf:"bytes,12,opt,name=syntax" json:"syntax,omitempty"` -+ // The edition of the proto file, which is an opaque string. -+ Edition *string `protobuf:"bytes,13,opt,name=edition" json:"edition,omitempty"` - } - - func (x *FileDescriptorProto) Reset() { -@@ -664,6 +942,13 @@ func (x *FileDescriptorProto) GetSyntax() string { - return "" - } - -+func (x *FileDescriptorProto) GetEdition() string { -+ if x != nil && x.Edition != nil { -+ return *x.Edition -+ } -+ return "" -+} -+ - // Describes a message type. - type DescriptorProto struct { - state protoimpl.MessageState -@@ -794,7 +1079,21 @@ type ExtensionRangeOptions struct { - - // The parser stores options it doesn't recognize here. See above. - UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"` --} -+ // go/protobuf-stripping-extension-declarations -+ // Like Metadata, but we use a repeated field to hold all extension -+ // declarations. This should avoid the size increases of transforming a large -+ // extension range into small ranges in generated binaries. -+ Declaration []*ExtensionRangeOptions_Declaration `protobuf:"bytes,2,rep,name=declaration" json:"declaration,omitempty"` -+ // The verification state of the range. -+ // TODO(b/278783756): flip the default to DECLARATION once all empty ranges -+ // are marked as UNVERIFIED. -+ Verification *ExtensionRangeOptions_VerificationState `protobuf:"varint,3,opt,name=verification,enum=google.protobuf.ExtensionRangeOptions_VerificationState,def=1" json:"verification,omitempty"` -+} -+ -+// Default values for ExtensionRangeOptions fields. -+const ( -+ Default_ExtensionRangeOptions_Verification = ExtensionRangeOptions_UNVERIFIED -+) - - func (x *ExtensionRangeOptions) Reset() { - *x = ExtensionRangeOptions{} -@@ -835,6 +1134,20 @@ func (x *ExtensionRangeOptions) GetUninterpretedOption() []*UninterpretedOption - return nil - } - -+func (x *ExtensionRangeOptions) GetDeclaration() []*ExtensionRangeOptions_Declaration { -+ if x != nil { -+ return x.Declaration -+ } -+ return nil -+} -+ -+func (x *ExtensionRangeOptions) GetVerification() ExtensionRangeOptions_VerificationState { -+ if x != nil && x.Verification != nil { -+ return *x.Verification -+ } -+ return Default_ExtensionRangeOptions_Verification -+} -+ - // Describes a field within a message. - type FieldDescriptorProto struct { - state protoimpl.MessageState -@@ -860,7 +1173,6 @@ type FieldDescriptorProto struct { - // For booleans, "true" or "false". - // For strings, contains the default text contents (not escaped in any way). - // For bytes, contains the C escaped value. All bytes >= 128 are escaped. -- // TODO(kenton): Base-64 encode? - DefaultValue *string `protobuf:"bytes,7,opt,name=default_value,json=defaultValue" json:"default_value,omitempty"` - // If set, gives the index of a oneof in the containing type's oneof_decl - // list. This field is a member of that oneof. -@@ -1382,22 +1694,22 @@ type FileOptions struct { - // inappropriate because proto packages do not normally start with backwards - // domain names. - JavaPackage *string `protobuf:"bytes,1,opt,name=java_package,json=javaPackage" json:"java_package,omitempty"` -- // If set, all the classes from the .proto file are wrapped in a single -- // outer class with the given name. This applies to both Proto1 -- // (equivalent to the old "--one_java_file" option) and Proto2 (where -- // a .proto always translates to a single class, but you may want to -- // explicitly choose the class name). -+ // Controls the name of the wrapper Java class generated for the .proto file. -+ // That class will always contain the .proto file's getDescriptor() method as -+ // well as any top-level extensions defined in the .proto file. -+ // If java_multiple_files is disabled, then all the other classes from the -+ // .proto file will be nested inside the single wrapper outer class. - JavaOuterClassname *string `protobuf:"bytes,8,opt,name=java_outer_classname,json=javaOuterClassname" json:"java_outer_classname,omitempty"` -- // If set true, then the Java code generator will generate a separate .java -+ // If enabled, then the Java code generator will generate a separate .java - // file for each top-level message, enum, and service defined in the .proto -- // file. Thus, these types will *not* be nested inside the outer class -- // named by java_outer_classname. However, the outer class will still be -+ // file. Thus, these types will *not* be nested inside the wrapper class -+ // named by java_outer_classname. However, the wrapper class will still be - // generated to contain the file's getDescriptor() method as well as any - // top-level extensions defined in the file. - JavaMultipleFiles *bool `protobuf:"varint,10,opt,name=java_multiple_files,json=javaMultipleFiles,def=0" json:"java_multiple_files,omitempty"` - // This option does nothing. - // -- // Deprecated: Do not use. -+ // Deprecated: Marked as deprecated in google/protobuf/descriptor.proto. - JavaGenerateEqualsAndHash *bool `protobuf:"varint,20,opt,name=java_generate_equals_and_hash,json=javaGenerateEqualsAndHash" json:"java_generate_equals_and_hash,omitempty"` - // If set true, then the Java2 code generator will generate code that - // throws an exception whenever an attempt is made to assign a non-UTF-8 -@@ -1531,7 +1843,7 @@ func (x *FileOptions) GetJavaMultipleFiles() bool { - return Default_FileOptions_JavaMultipleFiles - } - --// Deprecated: Do not use. -+// Deprecated: Marked as deprecated in google/protobuf/descriptor.proto. - func (x *FileOptions) GetJavaGenerateEqualsAndHash() bool { - if x != nil && x.JavaGenerateEqualsAndHash != nil { - return *x.JavaGenerateEqualsAndHash -@@ -1670,10 +1982,12 @@ type MessageOptions struct { - // efficient, has fewer features, and is more complicated. - // - // The message must be defined exactly as follows: -- // message Foo { -- // option message_set_wire_format = true; -- // extensions 4 to max; -- // } -+ // -+ // message Foo { -+ // option message_set_wire_format = true; -+ // extensions 4 to max; -+ // } -+ // - // Note that the message cannot have any defined fields; MessageSets only - // have extensions. - // -@@ -1692,28 +2006,44 @@ type MessageOptions struct { - // for the message, or it will be completely ignored; in the very least, - // this is a formalization for deprecating messages. - Deprecated *bool `protobuf:"varint,3,opt,name=deprecated,def=0" json:"deprecated,omitempty"` -+ // NOTE: Do not set the option in .proto files. Always use the maps syntax -+ // instead. The option should only be implicitly set by the proto compiler -+ // parser. -+ // - // Whether the message is an automatically generated map entry type for the - // maps field. - // - // For maps fields: -- // map map_field = 1; -+ // -+ // map map_field = 1; -+ // - // The parsed descriptor looks like: -- // message MapFieldEntry { -- // option map_entry = true; -- // optional KeyType key = 1; -- // optional ValueType value = 2; -- // } -- // repeated MapFieldEntry map_field = 1; -+ // -+ // message MapFieldEntry { -+ // option map_entry = true; -+ // optional KeyType key = 1; -+ // optional ValueType value = 2; -+ // } -+ // repeated MapFieldEntry map_field = 1; - // - // Implementations may choose not to generate the map_entry=true message, but - // use a native map in the target language to hold the keys and values. - // The reflection APIs in such implementations still need to work as - // if the field is a repeated message field. -- // -- // NOTE: Do not set the option in .proto files. Always use the maps syntax -- // instead. The option should only be implicitly set by the proto compiler -- // parser. - MapEntry *bool `protobuf:"varint,7,opt,name=map_entry,json=mapEntry" json:"map_entry,omitempty"` -+ // Enable the legacy handling of JSON field name conflicts. This lowercases -+ // and strips underscored from the fields before comparison in proto3 only. -+ // The new behavior takes `json_name` into account and applies to proto2 as -+ // well. -+ // -+ // This should only be used as a temporary measure against broken builds due -+ // to the change in behavior for JSON field name conflicts. -+ // -+ // TODO(b/261750190) This is legacy behavior we plan to remove once downstream -+ // teams have had time to migrate. -+ // -+ // Deprecated: Marked as deprecated in google/protobuf/descriptor.proto. -+ DeprecatedLegacyJsonFieldConflicts *bool `protobuf:"varint,11,opt,name=deprecated_legacy_json_field_conflicts,json=deprecatedLegacyJsonFieldConflicts" json:"deprecated_legacy_json_field_conflicts,omitempty"` - // The parser stores options it doesn't recognize here. See above. - UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"` - } -@@ -1785,6 +2115,14 @@ func (x *MessageOptions) GetMapEntry() bool { - return false - } - -+// Deprecated: Marked as deprecated in google/protobuf/descriptor.proto. -+func (x *MessageOptions) GetDeprecatedLegacyJsonFieldConflicts() bool { -+ if x != nil && x.DeprecatedLegacyJsonFieldConflicts != nil { -+ return *x.DeprecatedLegacyJsonFieldConflicts -+ } -+ return false -+} -+ - func (x *MessageOptions) GetUninterpretedOption() []*UninterpretedOption { - if x != nil { - return x.UninterpretedOption -@@ -1800,8 +2138,10 @@ type FieldOptions struct { - - // The ctype option instructs the C++ code generator to use a different - // representation of the field than it normally would. See the specific -- // options below. This option is not yet implemented in the open source -- // release -- sorry, we'll try to include it in a future version! -+ // options below. This option is only implemented to support use of -+ // [ctype=CORD] and [ctype=STRING] (the default) on non-repeated fields of -+ // type "bytes" in the open source release -- sorry, we'll try to include -+ // other types in a future version! - Ctype *FieldOptions_CType `protobuf:"varint,1,opt,name=ctype,enum=google.protobuf.FieldOptions_CType,def=0" json:"ctype,omitempty"` - // The packed option can be enabled for repeated primitive fields to enable - // a more efficient representation on the wire. Rather than repeatedly -@@ -1838,7 +2178,6 @@ type FieldOptions struct { - // call from multiple threads concurrently, while non-const methods continue - // to require exclusive access. - // -- // - // Note that implementations may choose not to check required fields within - // a lazy sub-message. That is, calling IsInitialized() on the outer message - // may return true even if the inner message has missing required fields. -@@ -1849,7 +2188,14 @@ type FieldOptions struct { - // implementation must either *always* check its required fields, or *never* - // check its required fields, regardless of whether or not the message has - // been parsed. -+ // -+ // As of May 2022, lazy verifies the contents of the byte stream during -+ // parsing. An invalid byte stream will cause the overall parsing to fail. - Lazy *bool `protobuf:"varint,5,opt,name=lazy,def=0" json:"lazy,omitempty"` -+ // unverified_lazy does no correctness checks on the byte stream. This should -+ // only be used where lazy with verification is prohibitive for performance -+ // reasons. -+ UnverifiedLazy *bool `protobuf:"varint,15,opt,name=unverified_lazy,json=unverifiedLazy,def=0" json:"unverified_lazy,omitempty"` - // Is this field deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for accessors, or it will be completely ignored; in the very least, this -@@ -1857,17 +2203,26 @@ type FieldOptions struct { - Deprecated *bool `protobuf:"varint,3,opt,name=deprecated,def=0" json:"deprecated,omitempty"` - // For Google-internal migration only. Do not use. - Weak *bool `protobuf:"varint,10,opt,name=weak,def=0" json:"weak,omitempty"` -+ // Indicate that the field value should not be printed out when using debug -+ // formats, e.g. when the field contains sensitive credentials. -+ DebugRedact *bool `protobuf:"varint,16,opt,name=debug_redact,json=debugRedact,def=0" json:"debug_redact,omitempty"` -+ Retention *FieldOptions_OptionRetention `protobuf:"varint,17,opt,name=retention,enum=google.protobuf.FieldOptions_OptionRetention" json:"retention,omitempty"` -+ // Deprecated: Marked as deprecated in google/protobuf/descriptor.proto. -+ Target *FieldOptions_OptionTargetType `protobuf:"varint,18,opt,name=target,enum=google.protobuf.FieldOptions_OptionTargetType" json:"target,omitempty"` -+ Targets []FieldOptions_OptionTargetType `protobuf:"varint,19,rep,name=targets,enum=google.protobuf.FieldOptions_OptionTargetType" json:"targets,omitempty"` - // The parser stores options it doesn't recognize here. See above. - UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"` - } - - // Default values for FieldOptions fields. - const ( -- Default_FieldOptions_Ctype = FieldOptions_STRING -- Default_FieldOptions_Jstype = FieldOptions_JS_NORMAL -- Default_FieldOptions_Lazy = bool(false) -- Default_FieldOptions_Deprecated = bool(false) -- Default_FieldOptions_Weak = bool(false) -+ Default_FieldOptions_Ctype = FieldOptions_STRING -+ Default_FieldOptions_Jstype = FieldOptions_JS_NORMAL -+ Default_FieldOptions_Lazy = bool(false) -+ Default_FieldOptions_UnverifiedLazy = bool(false) -+ Default_FieldOptions_Deprecated = bool(false) -+ Default_FieldOptions_Weak = bool(false) -+ Default_FieldOptions_DebugRedact = bool(false) - ) - - func (x *FieldOptions) Reset() { -@@ -1930,6 +2285,13 @@ func (x *FieldOptions) GetLazy() bool { - return Default_FieldOptions_Lazy - } - -+func (x *FieldOptions) GetUnverifiedLazy() bool { -+ if x != nil && x.UnverifiedLazy != nil { -+ return *x.UnverifiedLazy -+ } -+ return Default_FieldOptions_UnverifiedLazy -+} -+ - func (x *FieldOptions) GetDeprecated() bool { - if x != nil && x.Deprecated != nil { - return *x.Deprecated -@@ -1944,6 +2306,35 @@ func (x *FieldOptions) GetWeak() bool { - return Default_FieldOptions_Weak - } - -+func (x *FieldOptions) GetDebugRedact() bool { -+ if x != nil && x.DebugRedact != nil { -+ return *x.DebugRedact -+ } -+ return Default_FieldOptions_DebugRedact -+} -+ -+func (x *FieldOptions) GetRetention() FieldOptions_OptionRetention { -+ if x != nil && x.Retention != nil { -+ return *x.Retention -+ } -+ return FieldOptions_RETENTION_UNKNOWN -+} -+ -+// Deprecated: Marked as deprecated in google/protobuf/descriptor.proto. -+func (x *FieldOptions) GetTarget() FieldOptions_OptionTargetType { -+ if x != nil && x.Target != nil { -+ return *x.Target -+ } -+ return FieldOptions_TARGET_TYPE_UNKNOWN -+} -+ -+func (x *FieldOptions) GetTargets() []FieldOptions_OptionTargetType { -+ if x != nil { -+ return x.Targets -+ } -+ return nil -+} -+ - func (x *FieldOptions) GetUninterpretedOption() []*UninterpretedOption { - if x != nil { - return x.UninterpretedOption -@@ -2014,6 +2405,15 @@ type EnumOptions struct { - // for the enum, or it will be completely ignored; in the very least, this - // is a formalization for deprecating enums. - Deprecated *bool `protobuf:"varint,3,opt,name=deprecated,def=0" json:"deprecated,omitempty"` -+ // Enable the legacy handling of JSON field name conflicts. This lowercases -+ // and strips underscored from the fields before comparison in proto3 only. -+ // The new behavior takes `json_name` into account and applies to proto2 as -+ // well. -+ // TODO(b/261750190) Remove this legacy behavior once downstream teams have -+ // had time to migrate. -+ // -+ // Deprecated: Marked as deprecated in google/protobuf/descriptor.proto. -+ DeprecatedLegacyJsonFieldConflicts *bool `protobuf:"varint,6,opt,name=deprecated_legacy_json_field_conflicts,json=deprecatedLegacyJsonFieldConflicts" json:"deprecated_legacy_json_field_conflicts,omitempty"` - // The parser stores options it doesn't recognize here. See above. - UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"` - } -@@ -2069,6 +2469,14 @@ func (x *EnumOptions) GetDeprecated() bool { - return Default_EnumOptions_Deprecated - } - -+// Deprecated: Marked as deprecated in google/protobuf/descriptor.proto. -+func (x *EnumOptions) GetDeprecatedLegacyJsonFieldConflicts() bool { -+ if x != nil && x.DeprecatedLegacyJsonFieldConflicts != nil { -+ return *x.DeprecatedLegacyJsonFieldConflicts -+ } -+ return false -+} -+ - func (x *EnumOptions) GetUninterpretedOption() []*UninterpretedOption { - if x != nil { - return x.UninterpretedOption -@@ -2399,43 +2807,48 @@ type SourceCodeInfo struct { - // tools. - // - // For example, say we have a file like: -- // message Foo { -- // optional string foo = 1; -- // } -+ // -+ // message Foo { -+ // optional string foo = 1; -+ // } -+ // - // Let's look at just the field definition: -- // optional string foo = 1; -- // ^ ^^ ^^ ^ ^^^ -- // a bc de f ghi -+ // -+ // optional string foo = 1; -+ // ^ ^^ ^^ ^ ^^^ -+ // a bc de f ghi -+ // - // We have the following locations: -- // span path represents -- // [a,i) [ 4, 0, 2, 0 ] The whole field definition. -- // [a,b) [ 4, 0, 2, 0, 4 ] The label (optional). -- // [c,d) [ 4, 0, 2, 0, 5 ] The type (string). -- // [e,f) [ 4, 0, 2, 0, 1 ] The name (foo). -- // [g,h) [ 4, 0, 2, 0, 3 ] The number (1). -+ // -+ // span path represents -+ // [a,i) [ 4, 0, 2, 0 ] The whole field definition. -+ // [a,b) [ 4, 0, 2, 0, 4 ] The label (optional). -+ // [c,d) [ 4, 0, 2, 0, 5 ] The type (string). -+ // [e,f) [ 4, 0, 2, 0, 1 ] The name (foo). -+ // [g,h) [ 4, 0, 2, 0, 3 ] The number (1). - // - // Notes: -- // - A location may refer to a repeated field itself (i.e. not to any -- // particular index within it). This is used whenever a set of elements are -- // logically enclosed in a single code segment. For example, an entire -- // extend block (possibly containing multiple extension definitions) will -- // have an outer location whose path refers to the "extensions" repeated -- // field without an index. -- // - Multiple locations may have the same path. This happens when a single -- // logical declaration is spread out across multiple places. The most -- // obvious example is the "extend" block again -- there may be multiple -- // extend blocks in the same scope, each of which will have the same path. -- // - A location's span is not always a subset of its parent's span. For -- // example, the "extendee" of an extension declaration appears at the -- // beginning of the "extend" block and is shared by all extensions within -- // the block. -- // - Just because a location's span is a subset of some other location's span -- // does not mean that it is a descendant. For example, a "group" defines -- // both a type and a field in a single declaration. Thus, the locations -- // corresponding to the type and field and their components will overlap. -- // - Code which tries to interpret locations should probably be designed to -- // ignore those that it doesn't understand, as more types of locations could -- // be recorded in the future. -+ // - A location may refer to a repeated field itself (i.e. not to any -+ // particular index within it). This is used whenever a set of elements are -+ // logically enclosed in a single code segment. For example, an entire -+ // extend block (possibly containing multiple extension definitions) will -+ // have an outer location whose path refers to the "extensions" repeated -+ // field without an index. -+ // - Multiple locations may have the same path. This happens when a single -+ // logical declaration is spread out across multiple places. The most -+ // obvious example is the "extend" block again -- there may be multiple -+ // extend blocks in the same scope, each of which will have the same path. -+ // - A location's span is not always a subset of its parent's span. For -+ // example, the "extendee" of an extension declaration appears at the -+ // beginning of the "extend" block and is shared by all extensions within -+ // the block. -+ // - Just because a location's span is a subset of some other location's span -+ // does not mean that it is a descendant. For example, a "group" defines -+ // both a type and a field in a single declaration. Thus, the locations -+ // corresponding to the type and field and their components will overlap. -+ // - Code which tries to interpret locations should probably be designed to -+ // ignore those that it doesn't understand, as more types of locations could -+ // be recorded in the future. - Location []*SourceCodeInfo_Location `protobuf:"bytes,1,rep,name=location" json:"location,omitempty"` - } - -@@ -2651,6 +3064,108 @@ func (x *DescriptorProto_ReservedRange) GetEnd() int32 { - return 0 - } - -+type ExtensionRangeOptions_Declaration struct { -+ state protoimpl.MessageState -+ sizeCache protoimpl.SizeCache -+ unknownFields protoimpl.UnknownFields -+ -+ // The extension number declared within the extension range. -+ Number *int32 `protobuf:"varint,1,opt,name=number" json:"number,omitempty"` -+ // The fully-qualified name of the extension field. There must be a leading -+ // dot in front of the full name. -+ FullName *string `protobuf:"bytes,2,opt,name=full_name,json=fullName" json:"full_name,omitempty"` -+ // The fully-qualified type name of the extension field. Unlike -+ // Metadata.type, Declaration.type must have a leading dot for messages -+ // and enums. -+ Type *string `protobuf:"bytes,3,opt,name=type" json:"type,omitempty"` -+ // Deprecated. Please use "repeated". -+ // -+ // Deprecated: Marked as deprecated in google/protobuf/descriptor.proto. -+ IsRepeated *bool `protobuf:"varint,4,opt,name=is_repeated,json=isRepeated" json:"is_repeated,omitempty"` -+ // If true, indicates that the number is reserved in the extension range, -+ // and any extension field with the number will fail to compile. Set this -+ // when a declared extension field is deleted. -+ Reserved *bool `protobuf:"varint,5,opt,name=reserved" json:"reserved,omitempty"` -+ // If true, indicates that the extension must be defined as repeated. -+ // Otherwise the extension must be defined as optional. -+ Repeated *bool `protobuf:"varint,6,opt,name=repeated" json:"repeated,omitempty"` -+} -+ -+func (x *ExtensionRangeOptions_Declaration) Reset() { -+ *x = ExtensionRangeOptions_Declaration{} -+ if protoimpl.UnsafeEnabled { -+ mi := &file_google_protobuf_descriptor_proto_msgTypes[23] -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ ms.StoreMessageInfo(mi) -+ } -+} -+ -+func (x *ExtensionRangeOptions_Declaration) String() string { -+ return protoimpl.X.MessageStringOf(x) -+} -+ -+func (*ExtensionRangeOptions_Declaration) ProtoMessage() {} -+ -+func (x *ExtensionRangeOptions_Declaration) ProtoReflect() protoreflect.Message { -+ mi := &file_google_protobuf_descriptor_proto_msgTypes[23] -+ if protoimpl.UnsafeEnabled && x != nil { -+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) -+ if ms.LoadMessageInfo() == nil { -+ ms.StoreMessageInfo(mi) -+ } -+ return ms -+ } -+ return mi.MessageOf(x) -+} -+ -+// Deprecated: Use ExtensionRangeOptions_Declaration.ProtoReflect.Descriptor instead. -+func (*ExtensionRangeOptions_Declaration) Descriptor() ([]byte, []int) { -+ return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{3, 0} -+} -+ -+func (x *ExtensionRangeOptions_Declaration) GetNumber() int32 { -+ if x != nil && x.Number != nil { -+ return *x.Number -+ } -+ return 0 -+} -+ -+func (x *ExtensionRangeOptions_Declaration) GetFullName() string { -+ if x != nil && x.FullName != nil { -+ return *x.FullName -+ } -+ return "" -+} -+ -+func (x *ExtensionRangeOptions_Declaration) GetType() string { -+ if x != nil && x.Type != nil { -+ return *x.Type -+ } -+ return "" -+} -+ -+// Deprecated: Marked as deprecated in google/protobuf/descriptor.proto. -+func (x *ExtensionRangeOptions_Declaration) GetIsRepeated() bool { -+ if x != nil && x.IsRepeated != nil { -+ return *x.IsRepeated -+ } -+ return false -+} -+ -+func (x *ExtensionRangeOptions_Declaration) GetReserved() bool { -+ if x != nil && x.Reserved != nil { -+ return *x.Reserved -+ } -+ return false -+} -+ -+func (x *ExtensionRangeOptions_Declaration) GetRepeated() bool { -+ if x != nil && x.Repeated != nil { -+ return *x.Repeated -+ } -+ return false -+} -+ - // Range of reserved numeric values. Reserved values may not be used by - // entries in the same enum. Reserved ranges may not overlap. - // -@@ -2669,7 +3184,7 @@ type EnumDescriptorProto_EnumReservedRange struct { - func (x *EnumDescriptorProto_EnumReservedRange) Reset() { - *x = EnumDescriptorProto_EnumReservedRange{} - if protoimpl.UnsafeEnabled { -- mi := &file_google_protobuf_descriptor_proto_msgTypes[23] -+ mi := &file_google_protobuf_descriptor_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -@@ -2682,7 +3197,7 @@ func (x *EnumDescriptorProto_EnumReservedRange) String() string { - func (*EnumDescriptorProto_EnumReservedRange) ProtoMessage() {} - - func (x *EnumDescriptorProto_EnumReservedRange) ProtoReflect() protoreflect.Message { -- mi := &file_google_protobuf_descriptor_proto_msgTypes[23] -+ mi := &file_google_protobuf_descriptor_proto_msgTypes[24] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { -@@ -2715,8 +3230,8 @@ func (x *EnumDescriptorProto_EnumReservedRange) GetEnd() int32 { - // The name of the uninterpreted option. Each string represents a segment in - // a dot-separated name. is_extension is true iff a segment represents an - // extension (denoted with parentheses in options specs in .proto files). --// E.g.,{ ["foo", false], ["bar.baz", true], ["qux", false] } represents --// "foo.(bar.baz).qux". -+// E.g.,{ ["foo", false], ["bar.baz", true], ["moo", false] } represents -+// "foo.(bar.baz).moo". - type UninterpretedOption_NamePart struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache -@@ -2729,7 +3244,7 @@ type UninterpretedOption_NamePart struct { - func (x *UninterpretedOption_NamePart) Reset() { - *x = UninterpretedOption_NamePart{} - if protoimpl.UnsafeEnabled { -- mi := &file_google_protobuf_descriptor_proto_msgTypes[24] -+ mi := &file_google_protobuf_descriptor_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -@@ -2742,7 +3257,7 @@ func (x *UninterpretedOption_NamePart) String() string { - func (*UninterpretedOption_NamePart) ProtoMessage() {} - - func (x *UninterpretedOption_NamePart) ProtoReflect() protoreflect.Message { -- mi := &file_google_protobuf_descriptor_proto_msgTypes[24] -+ mi := &file_google_protobuf_descriptor_proto_msgTypes[25] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { -@@ -2781,23 +3296,34 @@ type SourceCodeInfo_Location struct { - // location. - // - // Each element is a field number or an index. They form a path from -- // the root FileDescriptorProto to the place where the definition. For -- // example, this path: -- // [ 4, 3, 2, 7, 1 ] -+ // the root FileDescriptorProto to the place where the definition occurs. -+ // For example, this path: -+ // -+ // [ 4, 3, 2, 7, 1 ] -+ // - // refers to: -- // file.message_type(3) // 4, 3 -- // .field(7) // 2, 7 -- // .name() // 1 -+ // -+ // file.message_type(3) // 4, 3 -+ // .field(7) // 2, 7 -+ // .name() // 1 -+ // - // This is because FileDescriptorProto.message_type has field number 4: -- // repeated DescriptorProto message_type = 4; -+ // -+ // repeated DescriptorProto message_type = 4; -+ // - // and DescriptorProto.field has field number 2: -- // repeated FieldDescriptorProto field = 2; -+ // -+ // repeated FieldDescriptorProto field = 2; -+ // - // and FieldDescriptorProto.name has field number 1: -- // optional string name = 1; -+ // -+ // optional string name = 1; - // - // Thus, the above path gives the location of a field name. If we removed - // the last element: -- // [ 4, 3, 2, 7 ] -+ // -+ // [ 4, 3, 2, 7 ] -+ // - // this path refers to the whole field declaration (from the beginning - // of the label to the terminating semicolon). - Path []int32 `protobuf:"varint,1,rep,packed,name=path" json:"path,omitempty"` -@@ -2826,34 +3352,34 @@ type SourceCodeInfo_Location struct { - // - // Examples: - // -- // optional int32 foo = 1; // Comment attached to foo. -- // // Comment attached to bar. -- // optional int32 bar = 2; -+ // optional int32 foo = 1; // Comment attached to foo. -+ // // Comment attached to bar. -+ // optional int32 bar = 2; - // -- // optional string baz = 3; -- // // Comment attached to baz. -- // // Another line attached to baz. -+ // optional string baz = 3; -+ // // Comment attached to baz. -+ // // Another line attached to baz. - // -- // // Comment attached to qux. -- // // -- // // Another line attached to qux. -- // optional double qux = 4; -+ // // Comment attached to moo. -+ // // -+ // // Another line attached to moo. -+ // optional double moo = 4; - // -- // // Detached comment for corge. This is not leading or trailing comments -- // // to qux or corge because there are blank lines separating it from -- // // both. -+ // // Detached comment for corge. This is not leading or trailing comments -+ // // to moo or corge because there are blank lines separating it from -+ // // both. - // -- // // Detached comment for corge paragraph 2. -+ // // Detached comment for corge paragraph 2. - // -- // optional string corge = 5; -- // /* Block comment attached -- // * to corge. Leading asterisks -- // * will be removed. */ -- // /* Block comment attached to -- // * grault. */ -- // optional int32 grault = 6; -+ // optional string corge = 5; -+ // /* Block comment attached -+ // * to corge. Leading asterisks -+ // * will be removed. */ -+ // /* Block comment attached to -+ // * grault. */ -+ // optional int32 grault = 6; - // -- // // ignored detached comments. -+ // // ignored detached comments. - LeadingComments *string `protobuf:"bytes,3,opt,name=leading_comments,json=leadingComments" json:"leading_comments,omitempty"` - TrailingComments *string `protobuf:"bytes,4,opt,name=trailing_comments,json=trailingComments" json:"trailing_comments,omitempty"` - LeadingDetachedComments []string `protobuf:"bytes,6,rep,name=leading_detached_comments,json=leadingDetachedComments" json:"leading_detached_comments,omitempty"` -@@ -2862,7 +3388,7 @@ type SourceCodeInfo_Location struct { - func (x *SourceCodeInfo_Location) Reset() { - *x = SourceCodeInfo_Location{} - if protoimpl.UnsafeEnabled { -- mi := &file_google_protobuf_descriptor_proto_msgTypes[25] -+ mi := &file_google_protobuf_descriptor_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -@@ -2875,7 +3401,7 @@ func (x *SourceCodeInfo_Location) String() string { - func (*SourceCodeInfo_Location) ProtoMessage() {} - - func (x *SourceCodeInfo_Location) ProtoReflect() protoreflect.Message { -- mi := &file_google_protobuf_descriptor_proto_msgTypes[25] -+ mi := &file_google_protobuf_descriptor_proto_msgTypes[26] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { -@@ -2940,15 +3466,16 @@ type GeneratedCodeInfo_Annotation struct { - // that relates to the identified object. - Begin *int32 `protobuf:"varint,3,opt,name=begin" json:"begin,omitempty"` - // Identifies the ending offset in bytes in the generated code that -- // relates to the identified offset. The end offset should be one past -+ // relates to the identified object. The end offset should be one past - // the last relevant byte (so the length of the text = end - begin). -- End *int32 `protobuf:"varint,4,opt,name=end" json:"end,omitempty"` -+ End *int32 `protobuf:"varint,4,opt,name=end" json:"end,omitempty"` -+ Semantic *GeneratedCodeInfo_Annotation_Semantic `protobuf:"varint,5,opt,name=semantic,enum=google.protobuf.GeneratedCodeInfo_Annotation_Semantic" json:"semantic,omitempty"` - } - - func (x *GeneratedCodeInfo_Annotation) Reset() { - *x = GeneratedCodeInfo_Annotation{} - if protoimpl.UnsafeEnabled { -- mi := &file_google_protobuf_descriptor_proto_msgTypes[26] -+ mi := &file_google_protobuf_descriptor_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -@@ -2961,7 +3488,7 @@ func (x *GeneratedCodeInfo_Annotation) String() string { - func (*GeneratedCodeInfo_Annotation) ProtoMessage() {} - - func (x *GeneratedCodeInfo_Annotation) ProtoReflect() protoreflect.Message { -- mi := &file_google_protobuf_descriptor_proto_msgTypes[26] -+ mi := &file_google_protobuf_descriptor_proto_msgTypes[27] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { -@@ -3005,6 +3532,13 @@ func (x *GeneratedCodeInfo_Annotation) GetEnd() int32 { - return 0 - } - -+func (x *GeneratedCodeInfo_Annotation) GetSemantic() GeneratedCodeInfo_Annotation_Semantic { -+ if x != nil && x.Semantic != nil { -+ return *x.Semantic -+ } -+ return GeneratedCodeInfo_Annotation_NONE -+} -+ - var File_google_protobuf_descriptor_proto protoreflect.FileDescriptor - - var file_google_protobuf_descriptor_proto_rawDesc = []byte{ -@@ -3016,7 +3550,7 @@ var file_google_protobuf_descriptor_proto_rawDesc = []byte{ - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x04, 0x66, 0x69, -- 0x6c, 0x65, 0x22, 0xe4, 0x04, 0x0a, 0x13, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, -+ 0x6c, 0x65, 0x22, 0xfe, 0x04, 0x0a, 0x13, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, - 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, -@@ -3054,330 +3588,423 @@ var file_google_protobuf_descriptor_proto_rawDesc = []byte{ - 0x75, 0x66, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x18, 0x0c, 0x20, 0x01, 0x28, -- 0x09, 0x52, 0x06, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x22, 0xb9, 0x06, 0x0a, 0x0f, 0x44, 0x65, -- 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, -- 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, -- 0x65, 0x12, 0x3b, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, -- 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, -- 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, -- 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x43, -- 0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, -- 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, -- 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, -- 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, -- 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x0b, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x79, -- 0x70, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, -- 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, -- 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0a, 0x6e, 0x65, 0x73, 0x74, -- 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x41, 0x0a, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x74, -- 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, -- 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, -- 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, -- 0x08, 0x65, 0x6e, 0x75, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x58, 0x0a, 0x0f, 0x65, 0x78, 0x74, -- 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x05, 0x20, 0x03, -- 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, -+ 0x09, 0x52, 0x06, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x64, 0x69, -+ 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x64, 0x69, 0x74, -+ 0x69, 0x6f, 0x6e, 0x22, 0xb9, 0x06, 0x0a, 0x0f, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, -+ 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, -+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x05, 0x66, -+ 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, -+ 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, -+ 0x6c, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, -+ 0x6f, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x43, 0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, -+ 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, -+ 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, -+ 0x65, 0x6c, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, -+ 0x74, 0x6f, 0x52, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, -+ 0x0b, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x03, -+ 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, -- 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, -- 0x6e, 0x67, 0x65, 0x52, 0x0e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, -- 0x6e, 0x67, 0x65, 0x12, 0x44, 0x0a, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x64, 0x65, 0x63, -- 0x6c, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, -- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x44, -- 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x09, -- 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x44, 0x65, 0x63, 0x6c, 0x12, 0x39, 0x0a, 0x07, 0x6f, 0x70, 0x74, -- 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, -- 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, -- 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, -- 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x55, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, -- 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, -+ 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0a, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, -+ 0x12, 0x41, 0x0a, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, -+ 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, -+ 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, -+ 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x08, 0x65, 0x6e, 0x75, 0x6d, 0x54, -+ 0x79, 0x70, 0x65, 0x12, 0x58, 0x0a, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, -+ 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, -- 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, -- 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0d, 0x72, 0x65, -- 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, -- 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x03, -- 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, -- 0x1a, 0x7a, 0x0a, 0x0e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, -- 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, -- 0x05, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, -- 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x40, 0x0a, 0x07, 0x6f, 0x70, -- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, -- 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x78, -- 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, -- 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x37, 0x0a, 0x0d, -- 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, -- 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, -- 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, -- 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, 0x7c, 0x0a, 0x15, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, -- 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58, -- 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, -- 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, -- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, -- 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, -- 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, -- 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, -- 0x80, 0x80, 0x02, 0x22, 0xc1, 0x06, 0x0a, 0x14, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x73, -- 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, -- 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, -- 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, -- 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x41, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, -- 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, -- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, -- 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, -- 0x61, 0x62, 0x65, 0x6c, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x3e, 0x0a, 0x04, 0x74, -- 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, -- 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, -- 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, -- 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, -- 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, -- 0x74, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x74, 0x65, -- 0x6e, 0x64, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x74, 0x65, -- 0x6e, 0x64, 0x65, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, -- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x66, -- 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, -- 0x6f, 0x66, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, -- 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1b, 0x0a, 0x09, 0x6a, 0x73, -- 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6a, -- 0x73, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, -- 0x6e, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, -- 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, -- 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, -- 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, -- 0x6e, 0x61, 0x6c, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x74, 0x6f, -- 0x33, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x22, 0xb6, 0x02, 0x0a, 0x04, 0x54, 0x79, -- 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x4f, 0x55, 0x42, 0x4c, -- 0x45, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x4c, 0x4f, 0x41, -- 0x54, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x36, -- 0x34, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x49, 0x4e, 0x54, -- 0x36, 0x34, 0x10, 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x54, -- 0x33, 0x32, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x49, 0x58, -- 0x45, 0x44, 0x36, 0x34, 0x10, 0x06, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, -- 0x49, 0x58, 0x45, 0x44, 0x33, 0x32, 0x10, 0x07, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x59, 0x50, 0x45, -- 0x5f, 0x42, 0x4f, 0x4f, 0x4c, 0x10, 0x08, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, -- 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x09, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, -- 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x0a, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, 0x50, 0x45, -- 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x0b, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, -- 0x50, 0x45, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x0c, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, -- 0x50, 0x45, 0x5f, 0x55, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x10, 0x0d, 0x12, 0x0d, 0x0a, 0x09, 0x54, -- 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x10, 0x0e, 0x12, 0x11, 0x0a, 0x0d, 0x54, 0x59, -- 0x50, 0x45, 0x5f, 0x53, 0x46, 0x49, 0x58, 0x45, 0x44, 0x33, 0x32, 0x10, 0x0f, 0x12, 0x11, 0x0a, -- 0x0d, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x46, 0x49, 0x58, 0x45, 0x44, 0x36, 0x34, 0x10, 0x10, -- 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x10, -- 0x11, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x49, 0x4e, 0x54, 0x36, 0x34, -- 0x10, 0x12, 0x22, 0x43, 0x0a, 0x05, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x0e, 0x4c, -- 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x10, 0x01, 0x12, -- 0x12, 0x0a, 0x0e, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, -- 0x44, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x52, 0x45, 0x50, -- 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0x03, 0x22, 0x63, 0x0a, 0x14, 0x4f, 0x6e, 0x65, 0x6f, 0x66, -- 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, -- 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, -- 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, -+ 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, -+ 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0e, 0x65, -+ 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x44, 0x0a, -+ 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x64, 0x65, 0x63, 0x6c, 0x18, 0x08, 0x20, 0x03, 0x28, -+ 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, -+ 0x62, 0x75, 0x66, 0x2e, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, -+ 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x09, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x44, -+ 0x65, 0x63, 0x6c, 0x12, 0x39, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, -+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, -+ 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, -+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x55, -+ 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, -+ 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, -+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, -+ 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, -+ 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, -+ 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, -+ 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, -+ 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x7a, 0x0a, 0x0e, 0x45, 0x78, -+ 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, -+ 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x61, -+ 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, -+ 0x03, 0x65, 0x6e, 0x64, 0x12, 0x40, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, -+ 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, -+ 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, -+ 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, -+ 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x37, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, -+ 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, -+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, -+ 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, -+ 0xad, 0x04, 0x0a, 0x15, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, -+ 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, -+ 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, -+ 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, -+ 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, -+ 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, -+ 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, -+ 0x69, 0x6f, 0x6e, 0x12, 0x59, 0x0a, 0x0b, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, -+ 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, -+ 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, -+ 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, -+ 0x2e, 0x44, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0x88, 0x01, -+ 0x02, 0x52, 0x0b, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x68, -+ 0x0a, 0x0c, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, -+ 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, -+ 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, -+ 0x52, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x56, 0x65, 0x72, -+ 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x3a, 0x0a, -+ 0x55, 0x4e, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x52, 0x0c, 0x76, 0x65, 0x72, 0x69, -+ 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xb3, 0x01, 0x0a, 0x0b, 0x44, 0x65, 0x63, -+ 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, -+ 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, -+ 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, -+ 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x75, 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, -+ 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, -+ 0x65, 0x12, 0x23, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, -+ 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0a, 0x69, 0x73, 0x52, 0x65, -+ 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, -+ 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, -+ 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x06, -+ 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x22, 0x34, -+ 0x0a, 0x11, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, -+ 0x61, 0x74, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x45, 0x43, 0x4c, 0x41, 0x52, 0x41, 0x54, 0x49, -+ 0x4f, 0x4e, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x55, 0x4e, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, -+ 0x45, 0x44, 0x10, 0x01, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, -+ 0xc1, 0x06, 0x0a, 0x14, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, -+ 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, -+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, -+ 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6e, 0x75, -+ 0x6d, 0x62, 0x65, 0x72, 0x12, 0x41, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x04, 0x20, -+ 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, -+ 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, -+ 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, -+ 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x3e, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, -+ 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, -+ 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x73, -+ 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x79, 0x70, -+ 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, -+ 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x79, 0x70, 0x65, -+ 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x65, -+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x65, -+ 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, -+ 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, -+ 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x69, -+ 0x6e, 0x64, 0x65, 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, -+ 0x66, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1b, 0x0a, 0x09, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x6e, -+ 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6a, 0x73, 0x6f, 0x6e, 0x4e, -+ 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, -- 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x4f, 0x70, 0x74, 0x69, -- 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xe3, 0x02, 0x0a, -- 0x13, 0x45, 0x6e, 0x75, 0x6d, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, -- 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, -- 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, -- 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, -- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, -- 0x6c, 0x75, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, -- 0x74, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x6f, 0x70, 0x74, -- 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, -- 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, -- 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, -- 0x73, 0x12, 0x5d, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x72, 0x61, -- 0x6e, 0x67, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, -- 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, -- 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, -- 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, -- 0x65, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, -- 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x6e, 0x61, 0x6d, -- 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, -- 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x3b, 0x0a, 0x11, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x65, 0x73, -- 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, -- 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, -- 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x65, -- 0x6e, 0x64, 0x22, 0x83, 0x01, 0x0a, 0x18, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, -+ 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, -+ 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x0a, 0x0f, -+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, -+ 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x4f, 0x70, 0x74, -+ 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x22, 0xb6, 0x02, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, -+ 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, -+ 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x10, 0x02, 0x12, -+ 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x03, 0x12, -+ 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x04, -+ 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x10, 0x05, -+ 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x49, 0x58, 0x45, 0x44, 0x36, 0x34, -+ 0x10, 0x06, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x49, 0x58, 0x45, 0x44, -+ 0x33, 0x32, 0x10, 0x07, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x4f, 0x4f, -+ 0x4c, 0x10, 0x08, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x49, -+ 0x4e, 0x47, 0x10, 0x09, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x52, 0x4f, -+ 0x55, 0x50, 0x10, 0x0a, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x53, -+ 0x53, 0x41, 0x47, 0x45, 0x10, 0x0b, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, -+ 0x59, 0x54, 0x45, 0x53, 0x10, 0x0c, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, -+ 0x49, 0x4e, 0x54, 0x33, 0x32, 0x10, 0x0d, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, -+ 0x45, 0x4e, 0x55, 0x4d, 0x10, 0x0e, 0x12, 0x11, 0x0a, 0x0d, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, -+ 0x46, 0x49, 0x58, 0x45, 0x44, 0x33, 0x32, 0x10, 0x0f, 0x12, 0x11, 0x0a, 0x0d, 0x54, 0x59, 0x50, -+ 0x45, 0x5f, 0x53, 0x46, 0x49, 0x58, 0x45, 0x44, 0x36, 0x34, 0x10, 0x10, 0x12, 0x0f, 0x0a, 0x0b, -+ 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x10, 0x11, 0x12, 0x0f, 0x0a, -+ 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x12, 0x22, 0x43, -+ 0x0a, 0x05, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x41, 0x42, 0x45, 0x4c, -+ 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x4c, -+ 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x44, 0x10, 0x02, 0x12, -+ 0x12, 0x0a, 0x0e, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x52, 0x45, 0x50, 0x45, 0x41, 0x54, 0x45, -+ 0x44, 0x10, 0x03, 0x22, 0x63, 0x0a, 0x14, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x44, 0x65, 0x73, 0x63, -+ 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, -+ 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, -+ 0x37, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, -+ 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, -+ 0x75, 0x66, 0x2e, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, -+ 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xe3, 0x02, 0x0a, 0x13, 0x45, 0x6e, 0x75, -+ 0x6d, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, -+ 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, -+ 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, -+ 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, -+ 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x44, -+ 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x05, -+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, -+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, -+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x4f, 0x70, 0x74, -+ 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5d, 0x0a, -+ 0x0e, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, -+ 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, -+ 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x44, 0x65, 0x73, 0x63, -+ 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x6e, 0x75, 0x6d, -+ 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0d, 0x72, -+ 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0d, -+ 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, -+ 0x03, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x4e, 0x61, 0x6d, -+ 0x65, 0x1a, 0x3b, 0x0a, 0x11, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, -+ 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, -+ 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, -+ 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, 0x83, -+ 0x01, 0x0a, 0x18, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x44, 0x65, 0x73, 0x63, -+ 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, -+ 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, -+ 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, -+ 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x3b, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, -+ 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, -+ 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, -+ 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, -+ 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xa7, 0x01, 0x0a, 0x16, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, -- 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, -- 0x01, 0x28, 0x05, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x3b, 0x0a, 0x07, 0x6f, -- 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, -- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, -- 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, -- 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xa7, 0x01, 0x0a, 0x16, 0x53, 0x65, 0x72, -- 0x76, 0x69, 0x63, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, -- 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, -- 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, -- 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, -- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, -- 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, -- 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x39, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, -- 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, -- 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, -- 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, -- 0x6e, 0x73, 0x22, 0x89, 0x02, 0x0a, 0x15, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x44, 0x65, 0x73, -- 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, -- 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, -- 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, -- 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, -- 0x1f, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, -- 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x54, 0x79, 0x70, 0x65, -- 0x12, 0x38, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, -- 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, -- 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, -- 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x10, 0x63, 0x6c, -- 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x18, 0x05, -- 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0f, 0x63, 0x6c, 0x69, -- 0x65, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x12, 0x30, 0x0a, 0x10, -- 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, -- 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0f, 0x73, -- 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x22, 0x91, -- 0x09, 0x0a, 0x0b, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, -- 0x0a, 0x0c, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x01, -- 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6a, 0x61, 0x76, 0x61, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, -- 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, -- 0x63, 0x6c, 0x61, 0x73, 0x73, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, -- 0x12, 0x6a, 0x61, 0x76, 0x61, 0x4f, 0x75, 0x74, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x6e, -- 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x13, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x6d, 0x75, 0x6c, 0x74, -- 0x69, 0x70, 0x6c, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, -- 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x11, 0x6a, 0x61, 0x76, 0x61, 0x4d, 0x75, 0x6c, -- 0x74, 0x69, 0x70, 0x6c, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x44, 0x0a, 0x1d, 0x6a, 0x61, -- 0x76, 0x61, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x65, 0x71, 0x75, 0x61, -- 0x6c, 0x73, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x14, 0x20, 0x01, 0x28, -- 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x19, 0x6a, 0x61, 0x76, 0x61, 0x47, 0x65, 0x6e, 0x65, 0x72, -- 0x61, 0x74, 0x65, 0x45, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x41, 0x6e, 0x64, 0x48, 0x61, 0x73, 0x68, -- 0x12, 0x3a, 0x0a, 0x16, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, -- 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x75, 0x74, 0x66, 0x38, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x08, -- 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x13, 0x6a, 0x61, 0x76, 0x61, 0x53, 0x74, 0x72, -- 0x69, 0x6e, 0x67, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x74, 0x66, 0x38, 0x12, 0x53, 0x0a, 0x0c, -- 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, -- 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, -- 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, -- 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x3a, 0x05, 0x53, -- 0x50, 0x45, 0x45, 0x44, 0x52, 0x0b, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x46, 0x6f, -- 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x6f, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, -- 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x6f, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, -- 0x12, 0x35, 0x0a, 0x13, 0x63, 0x63, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x73, -- 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, -- 0x61, 0x6c, 0x73, 0x65, 0x52, 0x11, 0x63, 0x63, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, -- 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x15, 0x6a, 0x61, 0x76, 0x61, 0x5f, -- 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, -- 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x13, 0x6a, -- 0x61, 0x76, 0x61, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, -- 0x65, 0x73, 0x12, 0x35, 0x0a, 0x13, 0x70, 0x79, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, -- 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x3a, -- 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x11, 0x70, 0x79, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, -- 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x37, 0x0a, 0x14, 0x70, 0x68, 0x70, -- 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, -- 0x73, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x12, -- 0x70, 0x68, 0x70, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, -- 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, -- 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, -- 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x10, 0x63, 0x63, 0x5f, -- 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x72, 0x65, 0x6e, 0x61, 0x73, 0x18, 0x1f, 0x20, -- 0x01, 0x28, 0x08, 0x3a, 0x04, 0x74, 0x72, 0x75, 0x65, 0x52, 0x0e, 0x63, 0x63, 0x45, 0x6e, 0x61, -- 0x62, 0x6c, 0x65, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x6f, 0x62, 0x6a, -- 0x63, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x24, -- 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6f, 0x62, 0x6a, 0x63, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x50, -- 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x73, 0x68, 0x61, 0x72, 0x70, 0x5f, -- 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x25, 0x20, 0x01, 0x28, 0x09, 0x52, -- 0x0f, 0x63, 0x73, 0x68, 0x61, 0x72, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, -- 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x77, 0x69, 0x66, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, -- 0x18, 0x27, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x77, 0x69, 0x66, 0x74, 0x50, 0x72, 0x65, -- 0x66, 0x69, 0x78, 0x12, 0x28, 0x0a, 0x10, 0x70, 0x68, 0x70, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, -- 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x28, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, -- 0x68, 0x70, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x23, 0x0a, -- 0x0d, 0x70, 0x68, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x29, -- 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x68, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, -- 0x63, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x70, 0x68, 0x70, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, -- 0x74, 0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x2c, 0x20, 0x01, -- 0x28, 0x09, 0x52, 0x14, 0x70, 0x68, 0x70, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4e, -- 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x75, 0x62, 0x79, -- 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, -- 0x72, 0x75, 0x62, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x58, 0x0a, 0x14, 0x75, -- 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, -- 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, -- 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, -- 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, -- 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, -- 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x0a, 0x0c, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, -- 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x50, 0x45, 0x45, 0x44, 0x10, 0x01, -- 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x02, 0x12, -- 0x10, 0x0a, 0x0c, 0x4c, 0x49, 0x54, 0x45, 0x5f, 0x52, 0x55, 0x4e, 0x54, 0x49, 0x4d, 0x45, 0x10, -- 0x03, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x4a, 0x04, 0x08, 0x26, -- 0x10, 0x27, 0x22, 0xd1, 0x02, 0x0a, 0x0e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, -- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3c, 0x0a, 0x17, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, -- 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x77, 0x69, 0x72, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, -- 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x14, 0x6d, -- 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x57, 0x69, 0x72, 0x65, 0x46, 0x6f, 0x72, -- 0x6d, 0x61, 0x74, 0x12, 0x4c, 0x0a, 0x1f, 0x6e, 0x6f, 0x5f, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, -- 0x72, 0x64, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x63, -- 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, -- 0x6c, 0x73, 0x65, 0x52, 0x1c, 0x6e, 0x6f, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x44, -- 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, -- 0x72, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, -- 0x03, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, -- 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x70, 0x5f, -- 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6d, 0x61, 0x70, -- 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, -- 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, -- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, -- 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, -- 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, -- 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, -- 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, -- 0x4a, 0x04, 0x08, 0x09, 0x10, 0x0a, 0x22, 0xe2, 0x03, 0x0a, 0x0c, 0x46, 0x69, 0x65, 0x6c, 0x64, -- 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x41, 0x0a, 0x05, 0x63, 0x74, 0x79, 0x70, 0x65, -- 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, -- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, -- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x43, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x06, 0x53, 0x54, 0x52, -- 0x49, 0x4e, 0x47, 0x52, 0x05, 0x63, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, -- 0x63, 0x6b, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x61, 0x63, 0x6b, -- 0x65, 0x64, 0x12, 0x47, 0x0a, 0x06, 0x6a, 0x73, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, -- 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, -+ 0x61, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, -+ 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, -+ 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x44, 0x65, 0x73, 0x63, -+ 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x06, 0x6d, 0x65, 0x74, -+ 0x68, 0x6f, 0x64, 0x12, 0x39, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, -+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, -+ 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, -+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x89, -+ 0x02, 0x0a, 0x15, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, -+ 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, -+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, -+ 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, -+ 0x52, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, -+ 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, -+ 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x38, 0x0a, 0x07, -+ 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, -+ 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, -+ 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, -+ 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x10, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, -+ 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, -+ 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, -+ 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x12, 0x30, 0x0a, 0x10, 0x73, 0x65, 0x72, 0x76, -+ 0x65, 0x72, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, -+ 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x65, -+ 0x72, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x22, 0x91, 0x09, 0x0a, 0x0b, 0x46, -+ 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6a, 0x61, -+ 0x76, 0x61, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, -+ 0x52, 0x0b, 0x6a, 0x61, 0x76, 0x61, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x30, 0x0a, -+ 0x14, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x61, 0x73, -+ 0x73, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6a, 0x61, 0x76, -+ 0x61, 0x4f, 0x75, 0x74, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x6e, 0x61, 0x6d, 0x65, 0x12, -+ 0x35, 0x0a, 0x13, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, -+ 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, -+ 0x6c, 0x73, 0x65, 0x52, 0x11, 0x6a, 0x61, 0x76, 0x61, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, -+ 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x44, 0x0a, 0x1d, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x67, -+ 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x5f, 0x61, -+ 0x6e, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, -+ 0x01, 0x52, 0x19, 0x6a, 0x61, 0x76, 0x61, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x45, -+ 0x71, 0x75, 0x61, 0x6c, 0x73, 0x41, 0x6e, 0x64, 0x48, 0x61, 0x73, 0x68, 0x12, 0x3a, 0x0a, 0x16, -+ 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x68, 0x65, 0x63, -+ 0x6b, 0x5f, 0x75, 0x74, 0x66, 0x38, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, -+ 0x6c, 0x73, 0x65, 0x52, 0x13, 0x6a, 0x61, 0x76, 0x61, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x43, -+ 0x68, 0x65, 0x63, 0x6b, 0x55, 0x74, 0x66, 0x38, 0x12, 0x53, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x69, -+ 0x6d, 0x69, 0x7a, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, -+ 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, -+ 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4f, 0x70, 0x74, -+ 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x3a, 0x05, 0x53, 0x50, 0x45, 0x45, 0x44, -+ 0x52, 0x0b, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x46, 0x6f, 0x72, 0x12, 0x1d, 0x0a, -+ 0x0a, 0x67, 0x6f, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, -+ 0x09, 0x52, 0x09, 0x67, 0x6f, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x35, 0x0a, 0x13, -+ 0x63, 0x63, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, -+ 0x63, 0x65, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, -+ 0x52, 0x11, 0x63, 0x63, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, -+ 0x63, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x15, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x67, 0x65, 0x6e, 0x65, -+ 0x72, 0x69, 0x63, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x11, 0x20, 0x01, -+ 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x13, 0x6a, 0x61, 0x76, 0x61, 0x47, -+ 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x35, -+ 0x0a, 0x13, 0x70, 0x79, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x65, 0x72, -+ 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, -+ 0x73, 0x65, 0x52, 0x11, 0x70, 0x79, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, 0x65, 0x72, -+ 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x37, 0x0a, 0x14, 0x70, 0x68, 0x70, 0x5f, 0x67, 0x65, 0x6e, -+ 0x65, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x2a, 0x20, -+ 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x12, 0x70, 0x68, 0x70, 0x47, -+ 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x25, -+ 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x17, 0x20, 0x01, -+ 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, -+ 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x10, 0x63, 0x63, 0x5f, 0x65, 0x6e, 0x61, 0x62, -+ 0x6c, 0x65, 0x5f, 0x61, 0x72, 0x65, 0x6e, 0x61, 0x73, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x08, 0x3a, -+ 0x04, 0x74, 0x72, 0x75, 0x65, 0x52, 0x0e, 0x63, 0x63, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, -+ 0x72, 0x65, 0x6e, 0x61, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x6f, 0x62, 0x6a, 0x63, 0x5f, 0x63, 0x6c, -+ 0x61, 0x73, 0x73, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x24, 0x20, 0x01, 0x28, 0x09, -+ 0x52, 0x0f, 0x6f, 0x62, 0x6a, 0x63, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69, -+ 0x78, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x73, 0x68, 0x61, 0x72, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, -+ 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x25, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x73, 0x68, -+ 0x61, 0x72, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, -+ 0x73, 0x77, 0x69, 0x66, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x27, 0x20, 0x01, -+ 0x28, 0x09, 0x52, 0x0b, 0x73, 0x77, 0x69, 0x66, 0x74, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, -+ 0x28, 0x0a, 0x10, 0x70, 0x68, 0x70, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x70, 0x72, 0x65, -+ 0x66, 0x69, 0x78, 0x18, 0x28, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x68, 0x70, 0x43, 0x6c, -+ 0x61, 0x73, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x68, 0x70, -+ 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x29, 0x20, 0x01, 0x28, 0x09, -+ 0x52, 0x0c, 0x70, 0x68, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x34, -+ 0x0a, 0x16, 0x70, 0x68, 0x70, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6e, -+ 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, -+ 0x70, 0x68, 0x70, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x73, -+ 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x75, 0x62, 0x79, 0x5f, 0x70, 0x61, 0x63, -+ 0x6b, 0x61, 0x67, 0x65, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x75, 0x62, 0x79, -+ 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, -+ 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, -+ 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, -+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, -+ 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, -+ 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, -+ 0x6e, 0x22, 0x3a, 0x0a, 0x0c, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x4d, 0x6f, 0x64, -+ 0x65, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x50, 0x45, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, -+ 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x4c, -+ 0x49, 0x54, 0x45, 0x5f, 0x52, 0x55, 0x4e, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x03, 0x2a, 0x09, 0x08, -+ 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x4a, 0x04, 0x08, 0x26, 0x10, 0x27, 0x22, 0xbb, -+ 0x03, 0x0a, 0x0e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, -+ 0x73, 0x12, 0x3c, 0x0a, 0x17, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, -+ 0x5f, 0x77, 0x69, 0x72, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, -+ 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x14, 0x6d, 0x65, 0x73, 0x73, 0x61, -+ 0x67, 0x65, 0x53, 0x65, 0x74, 0x57, 0x69, 0x72, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, -+ 0x4c, 0x0a, 0x1f, 0x6e, 0x6f, 0x5f, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x5f, 0x64, -+ 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, -+ 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, -+ 0x1c, 0x6e, 0x6f, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, -+ 0x69, 0x70, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x12, 0x25, 0x0a, -+ 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, -+ 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, -+ 0x61, 0x74, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x70, 0x5f, 0x65, 0x6e, 0x74, 0x72, -+ 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, -+ 0x79, 0x12, 0x56, 0x0a, 0x26, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, -+ 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x65, 0x6c, -+ 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, -+ 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x22, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, -+ 0x64, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x4a, 0x73, 0x6f, 0x6e, 0x46, 0x69, 0x65, 0x6c, 0x64, -+ 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, -+ 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, -+ 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, -+ 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, -+ 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, -+ 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, -+ 0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x4a, 0x04, -+ 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, -+ 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x4a, 0x04, 0x08, 0x09, 0x10, 0x0a, 0x22, 0x85, 0x09, 0x0a, -+ 0x0c, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x41, 0x0a, -+ 0x05, 0x63, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x67, -+ 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, -+ 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x43, 0x54, 0x79, 0x70, -+ 0x65, 0x3a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x52, 0x05, 0x63, 0x74, 0x79, 0x70, 0x65, -+ 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, -+ 0x52, 0x06, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x12, 0x47, 0x0a, 0x06, 0x6a, 0x73, 0x74, 0x79, -+ 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, -+ 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, -+ 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4a, 0x53, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x09, -+ 0x4a, 0x53, 0x5f, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x52, 0x06, 0x6a, 0x73, 0x74, 0x79, 0x70, -+ 0x65, 0x12, 0x19, 0x0a, 0x04, 0x6c, 0x61, 0x7a, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x3a, -+ 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x04, 0x6c, 0x61, 0x7a, 0x79, 0x12, 0x2e, 0x0a, 0x0f, -+ 0x75, 0x6e, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x6c, 0x61, 0x7a, 0x79, 0x18, -+ 0x0f, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0e, 0x75, 0x6e, -+ 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x4c, 0x61, 0x7a, 0x79, 0x12, 0x25, 0x0a, 0x0a, -+ 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, -+ 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, -+ 0x74, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x04, 0x77, 0x65, 0x61, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, -+ 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x04, 0x77, 0x65, 0x61, 0x6b, 0x12, 0x28, -+ 0x0a, 0x0c, 0x64, 0x65, 0x62, 0x75, 0x67, 0x5f, 0x72, 0x65, 0x64, 0x61, 0x63, 0x74, 0x18, 0x10, -+ 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x62, -+ 0x75, 0x67, 0x52, 0x65, 0x64, 0x61, 0x63, 0x74, 0x12, 0x4b, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x65, -+ 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x67, 0x6f, -+ 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, -+ 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, -+ 0x6e, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x72, 0x65, 0x74, 0x65, -+ 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, -+ 0x12, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, -+ 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, -+ 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, -+ 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, -+ 0x74, 0x12, 0x48, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x13, 0x20, 0x03, -+ 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, -- 0x73, 0x2e, 0x4a, 0x53, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x09, 0x4a, 0x53, 0x5f, 0x4e, 0x4f, 0x52, -- 0x4d, 0x41, 0x4c, 0x52, 0x06, 0x6a, 0x73, 0x74, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x04, 0x6c, -- 0x61, 0x7a, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, -- 0x52, 0x04, 0x6c, 0x61, 0x7a, 0x79, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, -- 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, -- 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x19, 0x0a, -- 0x04, 0x77, 0x65, 0x61, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, -- 0x73, 0x65, 0x52, 0x04, 0x77, 0x65, 0x61, 0x6b, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, -- 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, -- 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, -- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, -- 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, -- 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, -- 0x6f, 0x6e, 0x22, 0x2f, 0x0a, 0x05, 0x43, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x53, -- 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x43, 0x4f, 0x52, 0x44, 0x10, -- 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x49, 0x45, 0x43, -- 0x45, 0x10, 0x02, 0x22, 0x35, 0x0a, 0x06, 0x4a, 0x53, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0d, 0x0a, -- 0x09, 0x4a, 0x53, 0x5f, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, -- 0x4a, 0x53, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x4a, -- 0x53, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x02, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, -- 0x80, 0x80, 0x80, 0x80, 0x02, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x22, 0x73, 0x0a, 0x0c, 0x4f, -- 0x6e, 0x65, 0x6f, 0x66, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, -+ 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, -+ 0x70, 0x65, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, - 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, -- 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, -- 0x22, 0xc0, 0x01, 0x0a, 0x0b, 0x45, 0x6e, 0x75, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, -- 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, -- 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x41, 0x6c, 0x69, 0x61, -- 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, -- 0x03, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, -- 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, -- 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, -- 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, -- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, -- 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, -- 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, -- 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x4a, 0x04, 0x08, -- 0x05, 0x10, 0x06, 0x22, 0x9e, 0x01, 0x0a, 0x10, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, -+ 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x2f, 0x0a, 0x05, 0x43, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, -+ 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x43, 0x4f, -+ 0x52, 0x44, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x50, -+ 0x49, 0x45, 0x43, 0x45, 0x10, 0x02, 0x22, 0x35, 0x0a, 0x06, 0x4a, 0x53, 0x54, 0x79, 0x70, 0x65, -+ 0x12, 0x0d, 0x0a, 0x09, 0x4a, 0x53, 0x5f, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x10, 0x00, 0x12, -+ 0x0d, 0x0a, 0x09, 0x4a, 0x53, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0d, -+ 0x0a, 0x09, 0x4a, 0x53, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x02, 0x22, 0x55, 0x0a, -+ 0x0f, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, -+ 0x12, 0x15, 0x0a, 0x11, 0x52, 0x45, 0x54, 0x45, 0x4e, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, -+ 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x45, 0x54, 0x45, 0x4e, -+ 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x55, 0x4e, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x01, 0x12, 0x14, -+ 0x0a, 0x10, 0x52, 0x45, 0x54, 0x45, 0x4e, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x4f, 0x55, 0x52, -+ 0x43, 0x45, 0x10, 0x02, 0x22, 0x8c, 0x02, 0x0a, 0x10, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, -+ 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x41, 0x52, -+ 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, -+ 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, -+ 0x45, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x41, 0x52, 0x47, -+ 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, -+ 0x4e, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x41, 0x52, -+ 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, -+ 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, -+ 0x45, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x10, 0x04, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x41, 0x52, -+ 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x4e, 0x45, 0x4f, 0x46, 0x10, 0x05, -+ 0x12, 0x14, 0x0a, 0x10, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, -+ 0x45, 0x4e, 0x55, 0x4d, 0x10, 0x06, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, -+ 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, -+ 0x10, 0x07, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, -+ 0x45, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x10, 0x08, 0x12, 0x16, 0x0a, 0x12, 0x54, -+ 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, -+ 0x44, 0x10, 0x09, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x4a, 0x04, -+ 0x08, 0x04, 0x10, 0x05, 0x22, 0x73, 0x0a, 0x0c, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x4f, 0x70, 0x74, -+ 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, -+ 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, -+ 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, -+ 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, -+ 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, -+ 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, -+ 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0x98, 0x02, 0x0a, 0x0b, 0x45, 0x6e, -+ 0x75, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x6c, 0x6c, -+ 0x6f, 0x77, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, -+ 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, -+ 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, -+ 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, -+ 0x64, 0x12, 0x56, 0x0a, 0x26, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, -+ 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x65, 0x6c, -+ 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, -+ 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x22, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, -+ 0x64, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x4a, 0x73, 0x6f, 0x6e, 0x46, 0x69, 0x65, 0x6c, 0x64, -+ 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, -+ 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, -+ 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, -+ 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, -+ 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, -+ 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, -+ 0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x4a, 0x04, -+ 0x08, 0x05, 0x10, 0x06, 0x22, 0x9e, 0x01, 0x0a, 0x10, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, -+ 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, -+ 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, -+ 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, -+ 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, -+ 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, -+ 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, -+ 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, -+ 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, -+ 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, -+ 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0x9c, 0x01, 0x0a, 0x0e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, -- 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, -+ 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x21, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, - 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, - 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, - 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, -@@ -3385,97 +4012,95 @@ var file_google_protobuf_descriptor_proto_rawDesc = []byte{ - 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, - 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, -- 0x80, 0x80, 0x80, 0x02, 0x22, 0x9c, 0x01, 0x0a, 0x0e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, -- 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, -- 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x21, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, -- 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x58, -- 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, -- 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, -+ 0x80, 0x80, 0x80, 0x02, 0x22, 0xe0, 0x02, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, -+ 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, -+ 0x61, 0x74, 0x65, 0x64, 0x18, 0x21, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, -+ 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x71, 0x0a, -+ 0x11, 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6c, 0x65, 0x76, -+ 0x65, 0x6c, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, -+ 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, -+ 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x49, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, -+ 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x3a, 0x13, 0x49, 0x44, 0x45, 0x4d, 0x50, -+ 0x4f, 0x54, 0x45, 0x4e, 0x43, 0x59, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x52, 0x10, -+ 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, -+ 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, -+ 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, -+ 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, -+ 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, -+ 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, -+ 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x50, 0x0a, 0x10, 0x49, 0x64, -+ 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x17, -+ 0x0a, 0x13, 0x49, 0x44, 0x45, 0x4d, 0x50, 0x4f, 0x54, 0x45, 0x4e, 0x43, 0x59, 0x5f, 0x55, 0x4e, -+ 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4e, 0x4f, 0x5f, 0x53, 0x49, -+ 0x44, 0x45, 0x5f, 0x45, 0x46, 0x46, 0x45, 0x43, 0x54, 0x53, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, -+ 0x49, 0x44, 0x45, 0x4d, 0x50, 0x4f, 0x54, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x2a, 0x09, 0x08, 0xe8, -+ 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0x9a, 0x03, 0x0a, 0x13, 0x55, 0x6e, 0x69, 0x6e, -+ 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, -+ 0x41, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, -- 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, -- 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, -- 0x80, 0x80, 0x02, 0x22, 0xe0, 0x02, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, -- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, -- 0x74, 0x65, 0x64, 0x18, 0x21, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, -- 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x71, 0x0a, 0x11, -- 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6c, 0x65, 0x76, 0x65, -- 0x6c, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, -- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, -- 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x49, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, -- 0x6e, 0x63, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x3a, 0x13, 0x49, 0x44, 0x45, 0x4d, 0x50, 0x4f, -- 0x54, 0x45, 0x4e, 0x43, 0x59, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x52, 0x10, 0x69, -- 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, -- 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, -- 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, -- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, -- 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, -- 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, -- 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x50, 0x0a, 0x10, 0x49, 0x64, 0x65, -- 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x17, 0x0a, -- 0x13, 0x49, 0x44, 0x45, 0x4d, 0x50, 0x4f, 0x54, 0x45, 0x4e, 0x43, 0x59, 0x5f, 0x55, 0x4e, 0x4b, -- 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4e, 0x4f, 0x5f, 0x53, 0x49, 0x44, -- 0x45, 0x5f, 0x45, 0x46, 0x46, 0x45, 0x43, 0x54, 0x53, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x49, -- 0x44, 0x45, 0x4d, 0x50, 0x4f, 0x54, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x2a, 0x09, 0x08, 0xe8, 0x07, -- 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0x9a, 0x03, 0x0a, 0x13, 0x55, 0x6e, 0x69, 0x6e, 0x74, -- 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x41, -- 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, -- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, -- 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, -- 0x6f, 0x6e, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, -- 0x65, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x5f, -- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x69, 0x64, 0x65, -- 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2c, 0x0a, 0x12, -- 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, -- 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, -- 0x76, 0x65, 0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x6e, 0x65, -- 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, -- 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, -- 0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x6f, 0x75, 0x62, -- 0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, -- 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, -- 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, -- 0x0c, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x27, -- 0x0a, 0x0f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, -- 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, -- 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x4a, 0x0a, 0x08, 0x4e, 0x61, 0x6d, 0x65, 0x50, -- 0x61, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x74, -- 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, -- 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, -- 0x18, 0x02, 0x20, 0x02, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, -- 0x69, 0x6f, 0x6e, 0x22, 0xa7, 0x02, 0x0a, 0x0e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, -- 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x44, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, -- 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, -- 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, -- 0x65, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, -- 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xce, 0x01, 0x0a, -- 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x04, 0x70, 0x61, 0x74, -- 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x42, 0x02, 0x10, 0x01, 0x52, 0x04, 0x70, 0x61, 0x74, -- 0x68, 0x12, 0x16, 0x0a, 0x04, 0x73, 0x70, 0x61, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x42, -- 0x02, 0x10, 0x01, 0x52, 0x04, 0x73, 0x70, 0x61, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x6c, 0x65, 0x61, -- 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, -- 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6c, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6d, 0x6d, -- 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, -- 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, -- 0x10, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, -- 0x73, 0x12, 0x3a, 0x0a, 0x19, 0x6c, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x65, 0x74, -- 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x06, -- 0x20, 0x03, 0x28, 0x09, 0x52, 0x17, 0x6c, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x74, -- 0x61, 0x63, 0x68, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xd1, 0x01, -- 0x0a, 0x11, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x49, -- 0x6e, 0x66, 0x6f, 0x12, 0x4d, 0x0a, 0x0a, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, -- 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, -- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, -- 0x74, 0x65, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, -- 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, -- 0x6f, 0x6e, 0x1a, 0x6d, 0x0a, 0x0a, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, -- 0x12, 0x16, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x42, 0x02, -- 0x10, 0x01, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, -- 0x63, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, -- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x65, 0x67, -- 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x12, -- 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x65, 0x6e, -- 0x64, 0x42, 0x7e, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, -+ 0x69, 0x6f, 0x6e, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x52, 0x04, 0x6e, 0x61, -+ 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, -+ 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x69, 0x64, -+ 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2c, 0x0a, -+ 0x12, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x76, 0x61, -+ 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x70, 0x6f, 0x73, 0x69, 0x74, -+ 0x69, 0x76, 0x65, 0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x6e, -+ 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, -+ 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, -+ 0x65, 0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x6f, 0x75, -+ 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, -+ 0x0b, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x0a, 0x0c, -+ 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, -+ 0x28, 0x0c, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, -+ 0x27, 0x0a, 0x0f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x6c, -+ 0x75, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, -+ 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x4a, 0x0a, 0x08, 0x4e, 0x61, 0x6d, 0x65, -+ 0x50, 0x61, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x72, -+ 0x74, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x72, -+ 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, -+ 0x6e, 0x18, 0x02, 0x20, 0x02, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x45, 0x78, 0x74, 0x65, 0x6e, -+ 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xa7, 0x02, 0x0a, 0x0e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, -+ 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x44, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, -+ 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, -+ 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x6f, 0x75, 0x72, -+ 0x63, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, -+ 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xce, 0x01, -+ 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x04, 0x70, 0x61, -+ 0x74, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x42, 0x02, 0x10, 0x01, 0x52, 0x04, 0x70, 0x61, -+ 0x74, 0x68, 0x12, 0x16, 0x0a, 0x04, 0x73, 0x70, 0x61, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, -+ 0x42, 0x02, 0x10, 0x01, 0x52, 0x04, 0x73, 0x70, 0x61, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x6c, 0x65, -+ 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, -+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6c, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6d, -+ 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x69, 0x6e, -+ 0x67, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, -+ 0x52, 0x10, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, -+ 0x74, 0x73, 0x12, 0x3a, 0x0a, 0x19, 0x6c, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x65, -+ 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, -+ 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x17, 0x6c, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, -+ 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xd0, -+ 0x02, 0x0a, 0x11, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x64, 0x65, -+ 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x4d, 0x0a, 0x0a, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, -+ 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, -+ 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, -+ 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x6e, 0x6e, -+ 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, -+ 0x69, 0x6f, 0x6e, 0x1a, 0xeb, 0x01, 0x0a, 0x0a, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, -+ 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, -+ 0x42, 0x02, 0x10, 0x01, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6f, -+ 0x75, 0x72, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, -+ 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x62, -+ 0x65, 0x67, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x62, 0x65, 0x67, 0x69, -+ 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, -+ 0x65, 0x6e, 0x64, 0x12, 0x52, 0x0a, 0x08, 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x18, -+ 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, -+ 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, -+ 0x64, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, -+ 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x52, 0x08, 0x73, -+ 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x22, 0x28, 0x0a, 0x08, 0x53, 0x65, 0x6d, 0x61, 0x6e, -+ 0x74, 0x69, 0x63, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x07, 0x0a, -+ 0x03, 0x53, 0x45, 0x54, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x4c, 0x49, 0x41, 0x53, 0x10, -+ 0x02, 0x42, 0x7e, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x42, 0x10, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x48, 0x01, 0x5a, 0x2d, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, -@@ -3498,92 +4123,103 @@ func file_google_protobuf_descriptor_proto_rawDescGZIP() []byte { - return file_google_protobuf_descriptor_proto_rawDescData - } - --var file_google_protobuf_descriptor_proto_enumTypes = make([]protoimpl.EnumInfo, 6) --var file_google_protobuf_descriptor_proto_msgTypes = make([]protoimpl.MessageInfo, 27) -+var file_google_protobuf_descriptor_proto_enumTypes = make([]protoimpl.EnumInfo, 10) -+var file_google_protobuf_descriptor_proto_msgTypes = make([]protoimpl.MessageInfo, 28) - var file_google_protobuf_descriptor_proto_goTypes = []interface{}{ -- (FieldDescriptorProto_Type)(0), // 0: google.protobuf.FieldDescriptorProto.Type -- (FieldDescriptorProto_Label)(0), // 1: google.protobuf.FieldDescriptorProto.Label -- (FileOptions_OptimizeMode)(0), // 2: google.protobuf.FileOptions.OptimizeMode -- (FieldOptions_CType)(0), // 3: google.protobuf.FieldOptions.CType -- (FieldOptions_JSType)(0), // 4: google.protobuf.FieldOptions.JSType -- (MethodOptions_IdempotencyLevel)(0), // 5: google.protobuf.MethodOptions.IdempotencyLevel -- (*FileDescriptorSet)(nil), // 6: google.protobuf.FileDescriptorSet -- (*FileDescriptorProto)(nil), // 7: google.protobuf.FileDescriptorProto -- (*DescriptorProto)(nil), // 8: google.protobuf.DescriptorProto -- (*ExtensionRangeOptions)(nil), // 9: google.protobuf.ExtensionRangeOptions -- (*FieldDescriptorProto)(nil), // 10: google.protobuf.FieldDescriptorProto -- (*OneofDescriptorProto)(nil), // 11: google.protobuf.OneofDescriptorProto -- (*EnumDescriptorProto)(nil), // 12: google.protobuf.EnumDescriptorProto -- (*EnumValueDescriptorProto)(nil), // 13: google.protobuf.EnumValueDescriptorProto -- (*ServiceDescriptorProto)(nil), // 14: google.protobuf.ServiceDescriptorProto -- (*MethodDescriptorProto)(nil), // 15: google.protobuf.MethodDescriptorProto -- (*FileOptions)(nil), // 16: google.protobuf.FileOptions -- (*MessageOptions)(nil), // 17: google.protobuf.MessageOptions -- (*FieldOptions)(nil), // 18: google.protobuf.FieldOptions -- (*OneofOptions)(nil), // 19: google.protobuf.OneofOptions -- (*EnumOptions)(nil), // 20: google.protobuf.EnumOptions -- (*EnumValueOptions)(nil), // 21: google.protobuf.EnumValueOptions -- (*ServiceOptions)(nil), // 22: google.protobuf.ServiceOptions -- (*MethodOptions)(nil), // 23: google.protobuf.MethodOptions -- (*UninterpretedOption)(nil), // 24: google.protobuf.UninterpretedOption -- (*SourceCodeInfo)(nil), // 25: google.protobuf.SourceCodeInfo -- (*GeneratedCodeInfo)(nil), // 26: google.protobuf.GeneratedCodeInfo -- (*DescriptorProto_ExtensionRange)(nil), // 27: google.protobuf.DescriptorProto.ExtensionRange -- (*DescriptorProto_ReservedRange)(nil), // 28: google.protobuf.DescriptorProto.ReservedRange -- (*EnumDescriptorProto_EnumReservedRange)(nil), // 29: google.protobuf.EnumDescriptorProto.EnumReservedRange -- (*UninterpretedOption_NamePart)(nil), // 30: google.protobuf.UninterpretedOption.NamePart -- (*SourceCodeInfo_Location)(nil), // 31: google.protobuf.SourceCodeInfo.Location -- (*GeneratedCodeInfo_Annotation)(nil), // 32: google.protobuf.GeneratedCodeInfo.Annotation -+ (ExtensionRangeOptions_VerificationState)(0), // 0: google.protobuf.ExtensionRangeOptions.VerificationState -+ (FieldDescriptorProto_Type)(0), // 1: google.protobuf.FieldDescriptorProto.Type -+ (FieldDescriptorProto_Label)(0), // 2: google.protobuf.FieldDescriptorProto.Label -+ (FileOptions_OptimizeMode)(0), // 3: google.protobuf.FileOptions.OptimizeMode -+ (FieldOptions_CType)(0), // 4: google.protobuf.FieldOptions.CType -+ (FieldOptions_JSType)(0), // 5: google.protobuf.FieldOptions.JSType -+ (FieldOptions_OptionRetention)(0), // 6: google.protobuf.FieldOptions.OptionRetention -+ (FieldOptions_OptionTargetType)(0), // 7: google.protobuf.FieldOptions.OptionTargetType -+ (MethodOptions_IdempotencyLevel)(0), // 8: google.protobuf.MethodOptions.IdempotencyLevel -+ (GeneratedCodeInfo_Annotation_Semantic)(0), // 9: google.protobuf.GeneratedCodeInfo.Annotation.Semantic -+ (*FileDescriptorSet)(nil), // 10: google.protobuf.FileDescriptorSet -+ (*FileDescriptorProto)(nil), // 11: google.protobuf.FileDescriptorProto -+ (*DescriptorProto)(nil), // 12: google.protobuf.DescriptorProto -+ (*ExtensionRangeOptions)(nil), // 13: google.protobuf.ExtensionRangeOptions -+ (*FieldDescriptorProto)(nil), // 14: google.protobuf.FieldDescriptorProto -+ (*OneofDescriptorProto)(nil), // 15: google.protobuf.OneofDescriptorProto -+ (*EnumDescriptorProto)(nil), // 16: google.protobuf.EnumDescriptorProto -+ (*EnumValueDescriptorProto)(nil), // 17: google.protobuf.EnumValueDescriptorProto -+ (*ServiceDescriptorProto)(nil), // 18: google.protobuf.ServiceDescriptorProto -+ (*MethodDescriptorProto)(nil), // 19: google.protobuf.MethodDescriptorProto -+ (*FileOptions)(nil), // 20: google.protobuf.FileOptions -+ (*MessageOptions)(nil), // 21: google.protobuf.MessageOptions -+ (*FieldOptions)(nil), // 22: google.protobuf.FieldOptions -+ (*OneofOptions)(nil), // 23: google.protobuf.OneofOptions -+ (*EnumOptions)(nil), // 24: google.protobuf.EnumOptions -+ (*EnumValueOptions)(nil), // 25: google.protobuf.EnumValueOptions -+ (*ServiceOptions)(nil), // 26: google.protobuf.ServiceOptions -+ (*MethodOptions)(nil), // 27: google.protobuf.MethodOptions -+ (*UninterpretedOption)(nil), // 28: google.protobuf.UninterpretedOption -+ (*SourceCodeInfo)(nil), // 29: google.protobuf.SourceCodeInfo -+ (*GeneratedCodeInfo)(nil), // 30: google.protobuf.GeneratedCodeInfo -+ (*DescriptorProto_ExtensionRange)(nil), // 31: google.protobuf.DescriptorProto.ExtensionRange -+ (*DescriptorProto_ReservedRange)(nil), // 32: google.protobuf.DescriptorProto.ReservedRange -+ (*ExtensionRangeOptions_Declaration)(nil), // 33: google.protobuf.ExtensionRangeOptions.Declaration -+ (*EnumDescriptorProto_EnumReservedRange)(nil), // 34: google.protobuf.EnumDescriptorProto.EnumReservedRange -+ (*UninterpretedOption_NamePart)(nil), // 35: google.protobuf.UninterpretedOption.NamePart -+ (*SourceCodeInfo_Location)(nil), // 36: google.protobuf.SourceCodeInfo.Location -+ (*GeneratedCodeInfo_Annotation)(nil), // 37: google.protobuf.GeneratedCodeInfo.Annotation - } - var file_google_protobuf_descriptor_proto_depIdxs = []int32{ -- 7, // 0: google.protobuf.FileDescriptorSet.file:type_name -> google.protobuf.FileDescriptorProto -- 8, // 1: google.protobuf.FileDescriptorProto.message_type:type_name -> google.protobuf.DescriptorProto -- 12, // 2: google.protobuf.FileDescriptorProto.enum_type:type_name -> google.protobuf.EnumDescriptorProto -- 14, // 3: google.protobuf.FileDescriptorProto.service:type_name -> google.protobuf.ServiceDescriptorProto -- 10, // 4: google.protobuf.FileDescriptorProto.extension:type_name -> google.protobuf.FieldDescriptorProto -- 16, // 5: google.protobuf.FileDescriptorProto.options:type_name -> google.protobuf.FileOptions -- 25, // 6: google.protobuf.FileDescriptorProto.source_code_info:type_name -> google.protobuf.SourceCodeInfo -- 10, // 7: google.protobuf.DescriptorProto.field:type_name -> google.protobuf.FieldDescriptorProto -- 10, // 8: google.protobuf.DescriptorProto.extension:type_name -> google.protobuf.FieldDescriptorProto -- 8, // 9: google.protobuf.DescriptorProto.nested_type:type_name -> google.protobuf.DescriptorProto -- 12, // 10: google.protobuf.DescriptorProto.enum_type:type_name -> google.protobuf.EnumDescriptorProto -- 27, // 11: google.protobuf.DescriptorProto.extension_range:type_name -> google.protobuf.DescriptorProto.ExtensionRange -- 11, // 12: google.protobuf.DescriptorProto.oneof_decl:type_name -> google.protobuf.OneofDescriptorProto -- 17, // 13: google.protobuf.DescriptorProto.options:type_name -> google.protobuf.MessageOptions -- 28, // 14: google.protobuf.DescriptorProto.reserved_range:type_name -> google.protobuf.DescriptorProto.ReservedRange -- 24, // 15: google.protobuf.ExtensionRangeOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption -- 1, // 16: google.protobuf.FieldDescriptorProto.label:type_name -> google.protobuf.FieldDescriptorProto.Label -- 0, // 17: google.protobuf.FieldDescriptorProto.type:type_name -> google.protobuf.FieldDescriptorProto.Type -- 18, // 18: google.protobuf.FieldDescriptorProto.options:type_name -> google.protobuf.FieldOptions -- 19, // 19: google.protobuf.OneofDescriptorProto.options:type_name -> google.protobuf.OneofOptions -- 13, // 20: google.protobuf.EnumDescriptorProto.value:type_name -> google.protobuf.EnumValueDescriptorProto -- 20, // 21: google.protobuf.EnumDescriptorProto.options:type_name -> google.protobuf.EnumOptions -- 29, // 22: google.protobuf.EnumDescriptorProto.reserved_range:type_name -> google.protobuf.EnumDescriptorProto.EnumReservedRange -- 21, // 23: google.protobuf.EnumValueDescriptorProto.options:type_name -> google.protobuf.EnumValueOptions -- 15, // 24: google.protobuf.ServiceDescriptorProto.method:type_name -> google.protobuf.MethodDescriptorProto -- 22, // 25: google.protobuf.ServiceDescriptorProto.options:type_name -> google.protobuf.ServiceOptions -- 23, // 26: google.protobuf.MethodDescriptorProto.options:type_name -> google.protobuf.MethodOptions -- 2, // 27: google.protobuf.FileOptions.optimize_for:type_name -> google.protobuf.FileOptions.OptimizeMode -- 24, // 28: google.protobuf.FileOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption -- 24, // 29: google.protobuf.MessageOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption -- 3, // 30: google.protobuf.FieldOptions.ctype:type_name -> google.protobuf.FieldOptions.CType -- 4, // 31: google.protobuf.FieldOptions.jstype:type_name -> google.protobuf.FieldOptions.JSType -- 24, // 32: google.protobuf.FieldOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption -- 24, // 33: google.protobuf.OneofOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption -- 24, // 34: google.protobuf.EnumOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption -- 24, // 35: google.protobuf.EnumValueOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption -- 24, // 36: google.protobuf.ServiceOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption -- 5, // 37: google.protobuf.MethodOptions.idempotency_level:type_name -> google.protobuf.MethodOptions.IdempotencyLevel -- 24, // 38: google.protobuf.MethodOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption -- 30, // 39: google.protobuf.UninterpretedOption.name:type_name -> google.protobuf.UninterpretedOption.NamePart -- 31, // 40: google.protobuf.SourceCodeInfo.location:type_name -> google.protobuf.SourceCodeInfo.Location -- 32, // 41: google.protobuf.GeneratedCodeInfo.annotation:type_name -> google.protobuf.GeneratedCodeInfo.Annotation -- 9, // 42: google.protobuf.DescriptorProto.ExtensionRange.options:type_name -> google.protobuf.ExtensionRangeOptions -- 43, // [43:43] is the sub-list for method output_type -- 43, // [43:43] is the sub-list for method input_type -- 43, // [43:43] is the sub-list for extension type_name -- 43, // [43:43] is the sub-list for extension extendee -- 0, // [0:43] is the sub-list for field type_name -+ 11, // 0: google.protobuf.FileDescriptorSet.file:type_name -> google.protobuf.FileDescriptorProto -+ 12, // 1: google.protobuf.FileDescriptorProto.message_type:type_name -> google.protobuf.DescriptorProto -+ 16, // 2: google.protobuf.FileDescriptorProto.enum_type:type_name -> google.protobuf.EnumDescriptorProto -+ 18, // 3: google.protobuf.FileDescriptorProto.service:type_name -> google.protobuf.ServiceDescriptorProto -+ 14, // 4: google.protobuf.FileDescriptorProto.extension:type_name -> google.protobuf.FieldDescriptorProto -+ 20, // 5: google.protobuf.FileDescriptorProto.options:type_name -> google.protobuf.FileOptions -+ 29, // 6: google.protobuf.FileDescriptorProto.source_code_info:type_name -> google.protobuf.SourceCodeInfo -+ 14, // 7: google.protobuf.DescriptorProto.field:type_name -> google.protobuf.FieldDescriptorProto -+ 14, // 8: google.protobuf.DescriptorProto.extension:type_name -> google.protobuf.FieldDescriptorProto -+ 12, // 9: google.protobuf.DescriptorProto.nested_type:type_name -> google.protobuf.DescriptorProto -+ 16, // 10: google.protobuf.DescriptorProto.enum_type:type_name -> google.protobuf.EnumDescriptorProto -+ 31, // 11: google.protobuf.DescriptorProto.extension_range:type_name -> google.protobuf.DescriptorProto.ExtensionRange -+ 15, // 12: google.protobuf.DescriptorProto.oneof_decl:type_name -> google.protobuf.OneofDescriptorProto -+ 21, // 13: google.protobuf.DescriptorProto.options:type_name -> google.protobuf.MessageOptions -+ 32, // 14: google.protobuf.DescriptorProto.reserved_range:type_name -> google.protobuf.DescriptorProto.ReservedRange -+ 28, // 15: google.protobuf.ExtensionRangeOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption -+ 33, // 16: google.protobuf.ExtensionRangeOptions.declaration:type_name -> google.protobuf.ExtensionRangeOptions.Declaration -+ 0, // 17: google.protobuf.ExtensionRangeOptions.verification:type_name -> google.protobuf.ExtensionRangeOptions.VerificationState -+ 2, // 18: google.protobuf.FieldDescriptorProto.label:type_name -> google.protobuf.FieldDescriptorProto.Label -+ 1, // 19: google.protobuf.FieldDescriptorProto.type:type_name -> google.protobuf.FieldDescriptorProto.Type -+ 22, // 20: google.protobuf.FieldDescriptorProto.options:type_name -> google.protobuf.FieldOptions -+ 23, // 21: google.protobuf.OneofDescriptorProto.options:type_name -> google.protobuf.OneofOptions -+ 17, // 22: google.protobuf.EnumDescriptorProto.value:type_name -> google.protobuf.EnumValueDescriptorProto -+ 24, // 23: google.protobuf.EnumDescriptorProto.options:type_name -> google.protobuf.EnumOptions -+ 34, // 24: google.protobuf.EnumDescriptorProto.reserved_range:type_name -> google.protobuf.EnumDescriptorProto.EnumReservedRange -+ 25, // 25: google.protobuf.EnumValueDescriptorProto.options:type_name -> google.protobuf.EnumValueOptions -+ 19, // 26: google.protobuf.ServiceDescriptorProto.method:type_name -> google.protobuf.MethodDescriptorProto -+ 26, // 27: google.protobuf.ServiceDescriptorProto.options:type_name -> google.protobuf.ServiceOptions -+ 27, // 28: google.protobuf.MethodDescriptorProto.options:type_name -> google.protobuf.MethodOptions -+ 3, // 29: google.protobuf.FileOptions.optimize_for:type_name -> google.protobuf.FileOptions.OptimizeMode -+ 28, // 30: google.protobuf.FileOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption -+ 28, // 31: google.protobuf.MessageOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption -+ 4, // 32: google.protobuf.FieldOptions.ctype:type_name -> google.protobuf.FieldOptions.CType -+ 5, // 33: google.protobuf.FieldOptions.jstype:type_name -> google.protobuf.FieldOptions.JSType -+ 6, // 34: google.protobuf.FieldOptions.retention:type_name -> google.protobuf.FieldOptions.OptionRetention -+ 7, // 35: google.protobuf.FieldOptions.target:type_name -> google.protobuf.FieldOptions.OptionTargetType -+ 7, // 36: google.protobuf.FieldOptions.targets:type_name -> google.protobuf.FieldOptions.OptionTargetType -+ 28, // 37: google.protobuf.FieldOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption -+ 28, // 38: google.protobuf.OneofOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption -+ 28, // 39: google.protobuf.EnumOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption -+ 28, // 40: google.protobuf.EnumValueOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption -+ 28, // 41: google.protobuf.ServiceOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption -+ 8, // 42: google.protobuf.MethodOptions.idempotency_level:type_name -> google.protobuf.MethodOptions.IdempotencyLevel -+ 28, // 43: google.protobuf.MethodOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption -+ 35, // 44: google.protobuf.UninterpretedOption.name:type_name -> google.protobuf.UninterpretedOption.NamePart -+ 36, // 45: google.protobuf.SourceCodeInfo.location:type_name -> google.protobuf.SourceCodeInfo.Location -+ 37, // 46: google.protobuf.GeneratedCodeInfo.annotation:type_name -> google.protobuf.GeneratedCodeInfo.Annotation -+ 13, // 47: google.protobuf.DescriptorProto.ExtensionRange.options:type_name -> google.protobuf.ExtensionRangeOptions -+ 9, // 48: google.protobuf.GeneratedCodeInfo.Annotation.semantic:type_name -> google.protobuf.GeneratedCodeInfo.Annotation.Semantic -+ 49, // [49:49] is the sub-list for method output_type -+ 49, // [49:49] is the sub-list for method input_type -+ 49, // [49:49] is the sub-list for extension type_name -+ 49, // [49:49] is the sub-list for extension extendee -+ 0, // [0:49] is the sub-list for field type_name - } - - func init() { file_google_protobuf_descriptor_proto_init() } -@@ -3887,7 +4523,7 @@ func file_google_protobuf_descriptor_proto_init() { - } - } - file_google_protobuf_descriptor_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { -- switch v := v.(*EnumDescriptorProto_EnumReservedRange); i { -+ switch v := v.(*ExtensionRangeOptions_Declaration); i { - case 0: - return &v.state - case 1: -@@ -3899,7 +4535,7 @@ func file_google_protobuf_descriptor_proto_init() { - } - } - file_google_protobuf_descriptor_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { -- switch v := v.(*UninterpretedOption_NamePart); i { -+ switch v := v.(*EnumDescriptorProto_EnumReservedRange); i { - case 0: - return &v.state - case 1: -@@ -3911,7 +4547,7 @@ func file_google_protobuf_descriptor_proto_init() { - } - } - file_google_protobuf_descriptor_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { -- switch v := v.(*SourceCodeInfo_Location); i { -+ switch v := v.(*UninterpretedOption_NamePart); i { - case 0: - return &v.state - case 1: -@@ -3923,6 +4559,18 @@ func file_google_protobuf_descriptor_proto_init() { - } - } - file_google_protobuf_descriptor_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { -+ switch v := v.(*SourceCodeInfo_Location); i { -+ case 0: -+ return &v.state -+ case 1: -+ return &v.sizeCache -+ case 2: -+ return &v.unknownFields -+ default: -+ return nil -+ } -+ } -+ file_google_protobuf_descriptor_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GeneratedCodeInfo_Annotation); i { - case 0: - return &v.state -@@ -3940,8 +4588,8 @@ func file_google_protobuf_descriptor_proto_init() { - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_google_protobuf_descriptor_proto_rawDesc, -- NumEnums: 6, -- NumMessages: 27, -+ NumEnums: 10, -+ NumMessages: 28, - NumExtensions: 0, - NumServices: 0, - }, -diff --git a/vendor/google.golang.org/protobuf/types/known/anypb/any.pb.go b/vendor/google.golang.org/protobuf/types/known/anypb/any.pb.go -old mode 100644 -new mode 100755 -index 8c10797..580b232 ---- a/vendor/google.golang.org/protobuf/types/known/anypb/any.pb.go -+++ b/vendor/google.golang.org/protobuf/types/known/anypb/any.pb.go -@@ -37,8 +37,7 @@ - // It is functionally a tuple of the full name of the remote message type and - // the serialized bytes of the remote message value. - // --// --// Constructing an Any -+// # Constructing an Any - // - // An Any message containing another message value is constructed using New: - // -@@ -48,8 +47,7 @@ - // } - // ... // make use of any - // --// --// Unmarshaling an Any -+// # Unmarshaling an Any - // - // With a populated Any message, the underlying message can be serialized into - // a remote concrete message value in a few ways. -@@ -95,8 +93,7 @@ - // listed in the case clauses are linked into the Go binary and therefore also - // registered in the global registry. - // --// --// Type checking an Any -+// # Type checking an Any - // - // In order to type check whether an Any message represents some other message, - // then use the MessageIs method: -@@ -115,7 +112,6 @@ - // } - // ... // make use of m - // } --// - package anypb - - import ( -@@ -136,45 +132,49 @@ import ( - // - // Example 1: Pack and unpack a message in C++. - // --// Foo foo = ...; --// Any any; --// any.PackFrom(foo); --// ... --// if (any.UnpackTo(&foo)) { --// ... --// } -+// Foo foo = ...; -+// Any any; -+// any.PackFrom(foo); -+// ... -+// if (any.UnpackTo(&foo)) { -+// ... -+// } - // - // Example 2: Pack and unpack a message in Java. - // --// Foo foo = ...; --// Any any = Any.pack(foo); --// ... --// if (any.is(Foo.class)) { --// foo = any.unpack(Foo.class); --// } --// --// Example 3: Pack and unpack a message in Python. --// --// foo = Foo(...) --// any = Any() --// any.Pack(foo) --// ... --// if any.Is(Foo.DESCRIPTOR): --// any.Unpack(foo) --// ... --// --// Example 4: Pack and unpack a message in Go --// --// foo := &pb.Foo{...} --// any, err := anypb.New(foo) --// if err != nil { --// ... --// } --// ... --// foo := &pb.Foo{} --// if err := any.UnmarshalTo(foo); err != nil { --// ... --// } -+// Foo foo = ...; -+// Any any = Any.pack(foo); -+// ... -+// if (any.is(Foo.class)) { -+// foo = any.unpack(Foo.class); -+// } -+// // or ... -+// if (any.isSameTypeAs(Foo.getDefaultInstance())) { -+// foo = any.unpack(Foo.getDefaultInstance()); -+// } -+// -+// Example 3: Pack and unpack a message in Python. -+// -+// foo = Foo(...) -+// any = Any() -+// any.Pack(foo) -+// ... -+// if any.Is(Foo.DESCRIPTOR): -+// any.Unpack(foo) -+// ... -+// -+// Example 4: Pack and unpack a message in Go -+// -+// foo := &pb.Foo{...} -+// any, err := anypb.New(foo) -+// if err != nil { -+// ... -+// } -+// ... -+// foo := &pb.Foo{} -+// if err := any.UnmarshalTo(foo); err != nil { -+// ... -+// } - // - // The pack methods provided by protobuf library will by default use - // 'type.googleapis.com/full.type.name' as the type URL and the unpack -@@ -182,35 +182,33 @@ import ( - // in the type URL, for example "foo.bar.com/x/y.z" will yield type - // name "y.z". - // --// - // JSON - // ==== - // The JSON representation of an `Any` value uses the regular - // representation of the deserialized, embedded message, with an - // additional field `@type` which contains the type URL. Example: - // --// package google.profile; --// message Person { --// string first_name = 1; --// string last_name = 2; --// } -+// package google.profile; -+// message Person { -+// string first_name = 1; -+// string last_name = 2; -+// } - // --// { --// "@type": "type.googleapis.com/google.profile.Person", --// "firstName": , --// "lastName": --// } -+// { -+// "@type": "type.googleapis.com/google.profile.Person", -+// "firstName": , -+// "lastName": -+// } - // - // If the embedded message type is well-known and has a custom JSON - // representation, that representation will be embedded adding a field - // `value` which holds the custom JSON in addition to the `@type` - // field. Example (for message [google.protobuf.Duration][]): - // --// { --// "@type": "type.googleapis.com/google.protobuf.Duration", --// "value": "1.212s" --// } --// -+// { -+// "@type": "type.googleapis.com/google.protobuf.Duration", -+// "value": "1.212s" -+// } - type Any struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache -@@ -228,14 +226,14 @@ type Any struct { - // scheme `http`, `https`, or no scheme, one can optionally set up a type - // server that maps type URLs to message definitions as follows: - // -- // * If no scheme is provided, `https` is assumed. -- // * An HTTP GET on the URL must yield a [google.protobuf.Type][] -- // value in binary format, or produce an error. -- // * Applications are allowed to cache lookup results based on the -- // URL, or have them precompiled into a binary to avoid any -- // lookup. Therefore, binary compatibility needs to be preserved -- // on changes to types. (Use versioned type names to manage -- // breaking changes.) -+ // - If no scheme is provided, `https` is assumed. -+ // - An HTTP GET on the URL must yield a [google.protobuf.Type][] -+ // value in binary format, or produce an error. -+ // - Applications are allowed to cache lookup results based on the -+ // URL, or have them precompiled into a binary to avoid any -+ // lookup. Therefore, binary compatibility needs to be preserved -+ // on changes to types. (Use versioned type names to manage -+ // breaking changes.) - // - // Note: this functionality is not currently available in the official - // protobuf release, and it is not used for type URLs beginning with -@@ -243,7 +241,6 @@ type Any struct { - // - // Schemes other than `http`, `https` (or the empty scheme) might be - // used with implementation specific semantics. -- // - TypeUrl string `protobuf:"bytes,1,opt,name=type_url,json=typeUrl,proto3" json:"type_url,omitempty"` - // Must be a valid serialized protocol buffer of the above specified type. - Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` -diff --git a/vendor/google.golang.org/protobuf/types/known/durationpb/duration.pb.go b/vendor/google.golang.org/protobuf/types/known/durationpb/duration.pb.go -old mode 100644 -new mode 100755 -index a583ca2..df709a8 ---- a/vendor/google.golang.org/protobuf/types/known/durationpb/duration.pb.go -+++ b/vendor/google.golang.org/protobuf/types/known/durationpb/duration.pb.go -@@ -35,8 +35,7 @@ - // - // The Duration message represents a signed span of time. - // --// --// Conversion to a Go Duration -+// # Conversion to a Go Duration - // - // The AsDuration method can be used to convert a Duration message to a - // standard Go time.Duration value: -@@ -65,15 +64,13 @@ - // the resulting value to the closest representable value (e.g., math.MaxInt64 - // for positive overflow and math.MinInt64 for negative overflow). - // --// --// Conversion from a Go Duration -+// # Conversion from a Go Duration - // - // The durationpb.New function can be used to construct a Duration message - // from a standard Go time.Duration value: - // - // dur := durationpb.New(d) - // ... // make use of d as a *durationpb.Duration --// - package durationpb - - import ( -@@ -96,43 +93,43 @@ import ( - // - // Example 1: Compute Duration from two Timestamps in pseudo code. - // --// Timestamp start = ...; --// Timestamp end = ...; --// Duration duration = ...; -+// Timestamp start = ...; -+// Timestamp end = ...; -+// Duration duration = ...; - // --// duration.seconds = end.seconds - start.seconds; --// duration.nanos = end.nanos - start.nanos; -+// duration.seconds = end.seconds - start.seconds; -+// duration.nanos = end.nanos - start.nanos; - // --// if (duration.seconds < 0 && duration.nanos > 0) { --// duration.seconds += 1; --// duration.nanos -= 1000000000; --// } else if (duration.seconds > 0 && duration.nanos < 0) { --// duration.seconds -= 1; --// duration.nanos += 1000000000; --// } -+// if (duration.seconds < 0 && duration.nanos > 0) { -+// duration.seconds += 1; -+// duration.nanos -= 1000000000; -+// } else if (duration.seconds > 0 && duration.nanos < 0) { -+// duration.seconds -= 1; -+// duration.nanos += 1000000000; -+// } - // - // Example 2: Compute Timestamp from Timestamp + Duration in pseudo code. - // --// Timestamp start = ...; --// Duration duration = ...; --// Timestamp end = ...; -+// Timestamp start = ...; -+// Duration duration = ...; -+// Timestamp end = ...; - // --// end.seconds = start.seconds + duration.seconds; --// end.nanos = start.nanos + duration.nanos; -+// end.seconds = start.seconds + duration.seconds; -+// end.nanos = start.nanos + duration.nanos; - // --// if (end.nanos < 0) { --// end.seconds -= 1; --// end.nanos += 1000000000; --// } else if (end.nanos >= 1000000000) { --// end.seconds += 1; --// end.nanos -= 1000000000; --// } -+// if (end.nanos < 0) { -+// end.seconds -= 1; -+// end.nanos += 1000000000; -+// } else if (end.nanos >= 1000000000) { -+// end.seconds += 1; -+// end.nanos -= 1000000000; -+// } - // - // Example 3: Compute Duration from datetime.timedelta in Python. - // --// td = datetime.timedelta(days=3, minutes=10) --// duration = Duration() --// duration.FromTimedelta(td) -+// td = datetime.timedelta(days=3, minutes=10) -+// duration = Duration() -+// duration.FromTimedelta(td) - // - // # JSON Mapping - // -@@ -143,8 +140,6 @@ import ( - // encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should - // be expressed in JSON format as "3.000000001s", and 3 seconds and 1 - // microsecond should be expressed in JSON format as "3.000001s". --// --// - type Duration struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache -diff --git a/vendor/google.golang.org/protobuf/types/known/timestamppb/timestamp.pb.go b/vendor/google.golang.org/protobuf/types/known/timestamppb/timestamp.pb.go -old mode 100644 -new mode 100755 -index c9ae921..81511a3 ---- a/vendor/google.golang.org/protobuf/types/known/timestamppb/timestamp.pb.go -+++ b/vendor/google.golang.org/protobuf/types/known/timestamppb/timestamp.pb.go -@@ -36,8 +36,7 @@ - // The Timestamp message represents a timestamp, - // an instant in time since the Unix epoch (January 1st, 1970). - // --// --// Conversion to a Go Time -+// # Conversion to a Go Time - // - // The AsTime method can be used to convert a Timestamp message to a - // standard Go time.Time value in UTC: -@@ -59,8 +58,7 @@ - // ... // handle error - // } - // --// --// Conversion from a Go Time -+// # Conversion from a Go Time - // - // The timestamppb.New function can be used to construct a Timestamp message - // from a standard Go time.Time value: -@@ -72,7 +70,6 @@ - // - // ts := timestamppb.Now() - // ... // make use of ts as a *timestamppb.Timestamp --// - package timestamppb - - import ( -@@ -101,52 +98,50 @@ import ( - // - // Example 1: Compute Timestamp from POSIX `time()`. - // --// Timestamp timestamp; --// timestamp.set_seconds(time(NULL)); --// timestamp.set_nanos(0); -+// Timestamp timestamp; -+// timestamp.set_seconds(time(NULL)); -+// timestamp.set_nanos(0); - // - // Example 2: Compute Timestamp from POSIX `gettimeofday()`. - // --// struct timeval tv; --// gettimeofday(&tv, NULL); -+// struct timeval tv; -+// gettimeofday(&tv, NULL); - // --// Timestamp timestamp; --// timestamp.set_seconds(tv.tv_sec); --// timestamp.set_nanos(tv.tv_usec * 1000); -+// Timestamp timestamp; -+// timestamp.set_seconds(tv.tv_sec); -+// timestamp.set_nanos(tv.tv_usec * 1000); - // - // Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`. - // --// FILETIME ft; --// GetSystemTimeAsFileTime(&ft); --// UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime; -+// FILETIME ft; -+// GetSystemTimeAsFileTime(&ft); -+// UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime; - // --// // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z --// // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. --// Timestamp timestamp; --// timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); --// timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); -+// // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z -+// // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. -+// Timestamp timestamp; -+// timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); -+// timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); - // - // Example 4: Compute Timestamp from Java `System.currentTimeMillis()`. - // --// long millis = System.currentTimeMillis(); --// --// Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) --// .setNanos((int) ((millis % 1000) * 1000000)).build(); -+// long millis = System.currentTimeMillis(); - // -+// Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) -+// .setNanos((int) ((millis % 1000) * 1000000)).build(); - // - // Example 5: Compute Timestamp from Java `Instant.now()`. - // --// Instant now = Instant.now(); --// --// Timestamp timestamp = --// Timestamp.newBuilder().setSeconds(now.getEpochSecond()) --// .setNanos(now.getNano()).build(); -+// Instant now = Instant.now(); - // -+// Timestamp timestamp = -+// Timestamp.newBuilder().setSeconds(now.getEpochSecond()) -+// .setNanos(now.getNano()).build(); - // - // Example 6: Compute Timestamp from current time in Python. - // --// timestamp = Timestamp() --// timestamp.GetCurrentTime() -+// timestamp = Timestamp() -+// timestamp.GetCurrentTime() - // - // # JSON Mapping - // -@@ -172,10 +167,8 @@ import ( - // [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with - // the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use - // the Joda Time's [`ISODateTimeFormat.dateTime()`]( --// http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime%2D%2D -+// http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime() - // ) to obtain a formatter capable of generating timestamps in this format. --// --// - type Timestamp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache -diff --git a/vendor/gopkg.in/inf.v0/LICENSE b/vendor/gopkg.in/inf.v0/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/gopkg.in/inf.v0/dec.go b/vendor/gopkg.in/inf.v0/dec.go -old mode 100644 -new mode 100755 -diff --git a/vendor/gopkg.in/inf.v0/rounder.go b/vendor/gopkg.in/inf.v0/rounder.go -old mode 100644 -new mode 100755 -diff --git a/vendor/gopkg.in/yaml.v2/.travis.yml b/vendor/gopkg.in/yaml.v2/.travis.yml -old mode 100644 -new mode 100755 -diff --git a/vendor/gopkg.in/yaml.v2/LICENSE b/vendor/gopkg.in/yaml.v2/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/gopkg.in/yaml.v2/LICENSE.libyaml b/vendor/gopkg.in/yaml.v2/LICENSE.libyaml -old mode 100644 -new mode 100755 -diff --git a/vendor/gopkg.in/yaml.v2/NOTICE b/vendor/gopkg.in/yaml.v2/NOTICE -old mode 100644 -new mode 100755 -diff --git a/vendor/gopkg.in/yaml.v2/README.md b/vendor/gopkg.in/yaml.v2/README.md -old mode 100644 -new mode 100755 -diff --git a/vendor/gopkg.in/yaml.v2/apic.go b/vendor/gopkg.in/yaml.v2/apic.go -old mode 100644 -new mode 100755 -diff --git a/vendor/gopkg.in/yaml.v2/decode.go b/vendor/gopkg.in/yaml.v2/decode.go -old mode 100644 -new mode 100755 -diff --git a/vendor/gopkg.in/yaml.v2/emitterc.go b/vendor/gopkg.in/yaml.v2/emitterc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/gopkg.in/yaml.v2/encode.go b/vendor/gopkg.in/yaml.v2/encode.go -old mode 100644 -new mode 100755 -diff --git a/vendor/gopkg.in/yaml.v2/parserc.go b/vendor/gopkg.in/yaml.v2/parserc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/gopkg.in/yaml.v2/readerc.go b/vendor/gopkg.in/yaml.v2/readerc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/gopkg.in/yaml.v2/resolve.go b/vendor/gopkg.in/yaml.v2/resolve.go -old mode 100644 -new mode 100755 -diff --git a/vendor/gopkg.in/yaml.v2/scannerc.go b/vendor/gopkg.in/yaml.v2/scannerc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/gopkg.in/yaml.v2/sorter.go b/vendor/gopkg.in/yaml.v2/sorter.go -old mode 100644 -new mode 100755 -diff --git a/vendor/gopkg.in/yaml.v2/writerc.go b/vendor/gopkg.in/yaml.v2/writerc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/gopkg.in/yaml.v2/yaml.go b/vendor/gopkg.in/yaml.v2/yaml.go -old mode 100644 -new mode 100755 -diff --git a/vendor/gopkg.in/yaml.v2/yamlh.go b/vendor/gopkg.in/yaml.v2/yamlh.go -old mode 100644 -new mode 100755 -diff --git a/vendor/gopkg.in/yaml.v2/yamlprivateh.go b/vendor/gopkg.in/yaml.v2/yamlprivateh.go -old mode 100644 -new mode 100755 -diff --git a/vendor/gopkg.in/yaml.v3/LICENSE b/vendor/gopkg.in/yaml.v3/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/gopkg.in/yaml.v3/NOTICE b/vendor/gopkg.in/yaml.v3/NOTICE -old mode 100644 -new mode 100755 -diff --git a/vendor/gopkg.in/yaml.v3/README.md b/vendor/gopkg.in/yaml.v3/README.md -old mode 100644 -new mode 100755 -diff --git a/vendor/gopkg.in/yaml.v3/apic.go b/vendor/gopkg.in/yaml.v3/apic.go -old mode 100644 -new mode 100755 -diff --git a/vendor/gopkg.in/yaml.v3/decode.go b/vendor/gopkg.in/yaml.v3/decode.go -old mode 100644 -new mode 100755 -diff --git a/vendor/gopkg.in/yaml.v3/emitterc.go b/vendor/gopkg.in/yaml.v3/emitterc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/gopkg.in/yaml.v3/encode.go b/vendor/gopkg.in/yaml.v3/encode.go -old mode 100644 -new mode 100755 -diff --git a/vendor/gopkg.in/yaml.v3/parserc.go b/vendor/gopkg.in/yaml.v3/parserc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/gopkg.in/yaml.v3/readerc.go b/vendor/gopkg.in/yaml.v3/readerc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/gopkg.in/yaml.v3/resolve.go b/vendor/gopkg.in/yaml.v3/resolve.go -old mode 100644 -new mode 100755 -diff --git a/vendor/gopkg.in/yaml.v3/scannerc.go b/vendor/gopkg.in/yaml.v3/scannerc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/gopkg.in/yaml.v3/sorter.go b/vendor/gopkg.in/yaml.v3/sorter.go -old mode 100644 -new mode 100755 -diff --git a/vendor/gopkg.in/yaml.v3/writerc.go b/vendor/gopkg.in/yaml.v3/writerc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/gopkg.in/yaml.v3/yaml.go b/vendor/gopkg.in/yaml.v3/yaml.go -old mode 100644 -new mode 100755 -diff --git a/vendor/gopkg.in/yaml.v3/yamlh.go b/vendor/gopkg.in/yaml.v3/yamlh.go -old mode 100644 -new mode 100755 -diff --git a/vendor/gopkg.in/yaml.v3/yamlprivateh.go b/vendor/gopkg.in/yaml.v3/yamlprivateh.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/LICENSE b/vendor/k8s.io/api/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/admissionregistration/v1/doc.go b/vendor/k8s.io/api/admissionregistration/v1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/admissionregistration/v1/generated.pb.go b/vendor/k8s.io/api/admissionregistration/v1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/admissionregistration/v1/generated.proto b/vendor/k8s.io/api/admissionregistration/v1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/admissionregistration/v1/register.go b/vendor/k8s.io/api/admissionregistration/v1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/admissionregistration/v1/types.go b/vendor/k8s.io/api/admissionregistration/v1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/admissionregistration/v1/types_swagger_doc_generated.go b/vendor/k8s.io/api/admissionregistration/v1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/admissionregistration/v1/zz_generated.deepcopy.go b/vendor/k8s.io/api/admissionregistration/v1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/admissionregistration/v1beta1/doc.go b/vendor/k8s.io/api/admissionregistration/v1beta1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/admissionregistration/v1beta1/generated.pb.go b/vendor/k8s.io/api/admissionregistration/v1beta1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/admissionregistration/v1beta1/generated.proto b/vendor/k8s.io/api/admissionregistration/v1beta1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/admissionregistration/v1beta1/register.go b/vendor/k8s.io/api/admissionregistration/v1beta1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/admissionregistration/v1beta1/types.go b/vendor/k8s.io/api/admissionregistration/v1beta1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/admissionregistration/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/api/admissionregistration/v1beta1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/admissionregistration/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/admissionregistration/v1beta1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/admissionregistration/v1beta1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/admissionregistration/v1beta1/zz_generated.prerelease-lifecycle.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/apiserverinternal/v1alpha1/doc.go b/vendor/k8s.io/api/apiserverinternal/v1alpha1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/apiserverinternal/v1alpha1/generated.pb.go b/vendor/k8s.io/api/apiserverinternal/v1alpha1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/apiserverinternal/v1alpha1/generated.proto b/vendor/k8s.io/api/apiserverinternal/v1alpha1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/apiserverinternal/v1alpha1/register.go b/vendor/k8s.io/api/apiserverinternal/v1alpha1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/apiserverinternal/v1alpha1/types.go b/vendor/k8s.io/api/apiserverinternal/v1alpha1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/apiserverinternal/v1alpha1/types_swagger_doc_generated.go b/vendor/k8s.io/api/apiserverinternal/v1alpha1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/apiserverinternal/v1alpha1/zz_generated.deepcopy.go b/vendor/k8s.io/api/apiserverinternal/v1alpha1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/apps/v1/doc.go b/vendor/k8s.io/api/apps/v1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/apps/v1/generated.pb.go b/vendor/k8s.io/api/apps/v1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/apps/v1/generated.proto b/vendor/k8s.io/api/apps/v1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/apps/v1/register.go b/vendor/k8s.io/api/apps/v1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/apps/v1/types.go b/vendor/k8s.io/api/apps/v1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/apps/v1/types_swagger_doc_generated.go b/vendor/k8s.io/api/apps/v1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/apps/v1/zz_generated.deepcopy.go b/vendor/k8s.io/api/apps/v1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/apps/v1beta1/doc.go b/vendor/k8s.io/api/apps/v1beta1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/apps/v1beta1/generated.pb.go b/vendor/k8s.io/api/apps/v1beta1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/apps/v1beta1/generated.proto b/vendor/k8s.io/api/apps/v1beta1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/apps/v1beta1/register.go b/vendor/k8s.io/api/apps/v1beta1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/apps/v1beta1/types.go b/vendor/k8s.io/api/apps/v1beta1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/apps/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/api/apps/v1beta1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/apps/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/apps/v1beta1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/apps/v1beta1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/apps/v1beta1/zz_generated.prerelease-lifecycle.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/apps/v1beta2/doc.go b/vendor/k8s.io/api/apps/v1beta2/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/apps/v1beta2/generated.pb.go b/vendor/k8s.io/api/apps/v1beta2/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/apps/v1beta2/generated.proto b/vendor/k8s.io/api/apps/v1beta2/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/apps/v1beta2/register.go b/vendor/k8s.io/api/apps/v1beta2/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/apps/v1beta2/types.go b/vendor/k8s.io/api/apps/v1beta2/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/apps/v1beta2/types_swagger_doc_generated.go b/vendor/k8s.io/api/apps/v1beta2/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/apps/v1beta2/zz_generated.deepcopy.go b/vendor/k8s.io/api/apps/v1beta2/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/apps/v1beta2/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/apps/v1beta2/zz_generated.prerelease-lifecycle.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/authentication/v1/doc.go b/vendor/k8s.io/api/authentication/v1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/authentication/v1/generated.pb.go b/vendor/k8s.io/api/authentication/v1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/authentication/v1/generated.proto b/vendor/k8s.io/api/authentication/v1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/authentication/v1/register.go b/vendor/k8s.io/api/authentication/v1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/authentication/v1/types.go b/vendor/k8s.io/api/authentication/v1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/authentication/v1/types_swagger_doc_generated.go b/vendor/k8s.io/api/authentication/v1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/authentication/v1/zz_generated.deepcopy.go b/vendor/k8s.io/api/authentication/v1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/authentication/v1beta1/doc.go b/vendor/k8s.io/api/authentication/v1beta1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/authentication/v1beta1/generated.pb.go b/vendor/k8s.io/api/authentication/v1beta1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/authentication/v1beta1/generated.proto b/vendor/k8s.io/api/authentication/v1beta1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/authentication/v1beta1/register.go b/vendor/k8s.io/api/authentication/v1beta1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/authentication/v1beta1/types.go b/vendor/k8s.io/api/authentication/v1beta1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/authentication/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/api/authentication/v1beta1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/authentication/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/authentication/v1beta1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/authentication/v1beta1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/authentication/v1beta1/zz_generated.prerelease-lifecycle.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/authorization/v1/doc.go b/vendor/k8s.io/api/authorization/v1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/authorization/v1/generated.pb.go b/vendor/k8s.io/api/authorization/v1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/authorization/v1/generated.proto b/vendor/k8s.io/api/authorization/v1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/authorization/v1/register.go b/vendor/k8s.io/api/authorization/v1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/authorization/v1/types.go b/vendor/k8s.io/api/authorization/v1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/authorization/v1/types_swagger_doc_generated.go b/vendor/k8s.io/api/authorization/v1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/authorization/v1/zz_generated.deepcopy.go b/vendor/k8s.io/api/authorization/v1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/authorization/v1beta1/doc.go b/vendor/k8s.io/api/authorization/v1beta1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/authorization/v1beta1/generated.pb.go b/vendor/k8s.io/api/authorization/v1beta1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/authorization/v1beta1/generated.proto b/vendor/k8s.io/api/authorization/v1beta1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/authorization/v1beta1/register.go b/vendor/k8s.io/api/authorization/v1beta1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/authorization/v1beta1/types.go b/vendor/k8s.io/api/authorization/v1beta1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/authorization/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/api/authorization/v1beta1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/authorization/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/authorization/v1beta1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/authorization/v1beta1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/authorization/v1beta1/zz_generated.prerelease-lifecycle.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/autoscaling/v1/doc.go b/vendor/k8s.io/api/autoscaling/v1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/autoscaling/v1/generated.pb.go b/vendor/k8s.io/api/autoscaling/v1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/autoscaling/v1/generated.proto b/vendor/k8s.io/api/autoscaling/v1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/autoscaling/v1/register.go b/vendor/k8s.io/api/autoscaling/v1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/autoscaling/v1/types.go b/vendor/k8s.io/api/autoscaling/v1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/autoscaling/v1/types_swagger_doc_generated.go b/vendor/k8s.io/api/autoscaling/v1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/autoscaling/v1/zz_generated.deepcopy.go b/vendor/k8s.io/api/autoscaling/v1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/autoscaling/v2beta1/doc.go b/vendor/k8s.io/api/autoscaling/v2beta1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/autoscaling/v2beta1/generated.pb.go b/vendor/k8s.io/api/autoscaling/v2beta1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/autoscaling/v2beta1/generated.proto b/vendor/k8s.io/api/autoscaling/v2beta1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/autoscaling/v2beta1/register.go b/vendor/k8s.io/api/autoscaling/v2beta1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/autoscaling/v2beta1/types.go b/vendor/k8s.io/api/autoscaling/v2beta1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/autoscaling/v2beta1/types_swagger_doc_generated.go b/vendor/k8s.io/api/autoscaling/v2beta1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/autoscaling/v2beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/autoscaling/v2beta1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/autoscaling/v2beta1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/autoscaling/v2beta1/zz_generated.prerelease-lifecycle.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/autoscaling/v2beta2/doc.go b/vendor/k8s.io/api/autoscaling/v2beta2/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/autoscaling/v2beta2/generated.pb.go b/vendor/k8s.io/api/autoscaling/v2beta2/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/autoscaling/v2beta2/generated.proto b/vendor/k8s.io/api/autoscaling/v2beta2/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/autoscaling/v2beta2/register.go b/vendor/k8s.io/api/autoscaling/v2beta2/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/autoscaling/v2beta2/types.go b/vendor/k8s.io/api/autoscaling/v2beta2/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/autoscaling/v2beta2/types_swagger_doc_generated.go b/vendor/k8s.io/api/autoscaling/v2beta2/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/autoscaling/v2beta2/zz_generated.deepcopy.go b/vendor/k8s.io/api/autoscaling/v2beta2/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/autoscaling/v2beta2/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/autoscaling/v2beta2/zz_generated.prerelease-lifecycle.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/batch/v1/doc.go b/vendor/k8s.io/api/batch/v1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/batch/v1/generated.pb.go b/vendor/k8s.io/api/batch/v1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/batch/v1/generated.proto b/vendor/k8s.io/api/batch/v1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/batch/v1/register.go b/vendor/k8s.io/api/batch/v1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/batch/v1/types.go b/vendor/k8s.io/api/batch/v1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/batch/v1/types_swagger_doc_generated.go b/vendor/k8s.io/api/batch/v1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/batch/v1/zz_generated.deepcopy.go b/vendor/k8s.io/api/batch/v1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/batch/v1beta1/doc.go b/vendor/k8s.io/api/batch/v1beta1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/batch/v1beta1/generated.pb.go b/vendor/k8s.io/api/batch/v1beta1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/batch/v1beta1/generated.proto b/vendor/k8s.io/api/batch/v1beta1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/batch/v1beta1/register.go b/vendor/k8s.io/api/batch/v1beta1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/batch/v1beta1/types.go b/vendor/k8s.io/api/batch/v1beta1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/batch/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/api/batch/v1beta1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/batch/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/batch/v1beta1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/batch/v1beta1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/batch/v1beta1/zz_generated.prerelease-lifecycle.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/batch/v2alpha1/doc.go b/vendor/k8s.io/api/batch/v2alpha1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/batch/v2alpha1/generated.pb.go b/vendor/k8s.io/api/batch/v2alpha1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/batch/v2alpha1/generated.proto b/vendor/k8s.io/api/batch/v2alpha1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/batch/v2alpha1/register.go b/vendor/k8s.io/api/batch/v2alpha1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/batch/v2alpha1/types.go b/vendor/k8s.io/api/batch/v2alpha1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/batch/v2alpha1/types_swagger_doc_generated.go b/vendor/k8s.io/api/batch/v2alpha1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/batch/v2alpha1/zz_generated.deepcopy.go b/vendor/k8s.io/api/batch/v2alpha1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/certificates/v1/doc.go b/vendor/k8s.io/api/certificates/v1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/certificates/v1/generated.pb.go b/vendor/k8s.io/api/certificates/v1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/certificates/v1/generated.proto b/vendor/k8s.io/api/certificates/v1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/certificates/v1/register.go b/vendor/k8s.io/api/certificates/v1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/certificates/v1/types.go b/vendor/k8s.io/api/certificates/v1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/certificates/v1/types_swagger_doc_generated.go b/vendor/k8s.io/api/certificates/v1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/certificates/v1/zz_generated.deepcopy.go b/vendor/k8s.io/api/certificates/v1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/certificates/v1beta1/doc.go b/vendor/k8s.io/api/certificates/v1beta1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/certificates/v1beta1/generated.pb.go b/vendor/k8s.io/api/certificates/v1beta1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/certificates/v1beta1/generated.proto b/vendor/k8s.io/api/certificates/v1beta1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/certificates/v1beta1/register.go b/vendor/k8s.io/api/certificates/v1beta1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/certificates/v1beta1/types.go b/vendor/k8s.io/api/certificates/v1beta1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/certificates/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/api/certificates/v1beta1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/certificates/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/certificates/v1beta1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/certificates/v1beta1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/certificates/v1beta1/zz_generated.prerelease-lifecycle.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/coordination/v1/doc.go b/vendor/k8s.io/api/coordination/v1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/coordination/v1/generated.pb.go b/vendor/k8s.io/api/coordination/v1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/coordination/v1/generated.proto b/vendor/k8s.io/api/coordination/v1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/coordination/v1/register.go b/vendor/k8s.io/api/coordination/v1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/coordination/v1/types.go b/vendor/k8s.io/api/coordination/v1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/coordination/v1/types_swagger_doc_generated.go b/vendor/k8s.io/api/coordination/v1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/coordination/v1/zz_generated.deepcopy.go b/vendor/k8s.io/api/coordination/v1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/coordination/v1beta1/doc.go b/vendor/k8s.io/api/coordination/v1beta1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/coordination/v1beta1/generated.pb.go b/vendor/k8s.io/api/coordination/v1beta1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/coordination/v1beta1/generated.proto b/vendor/k8s.io/api/coordination/v1beta1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/coordination/v1beta1/register.go b/vendor/k8s.io/api/coordination/v1beta1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/coordination/v1beta1/types.go b/vendor/k8s.io/api/coordination/v1beta1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/coordination/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/api/coordination/v1beta1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/coordination/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/coordination/v1beta1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/coordination/v1beta1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/coordination/v1beta1/zz_generated.prerelease-lifecycle.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/core/v1/annotation_key_constants.go b/vendor/k8s.io/api/core/v1/annotation_key_constants.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/core/v1/doc.go b/vendor/k8s.io/api/core/v1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/core/v1/generated.pb.go b/vendor/k8s.io/api/core/v1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/core/v1/generated.proto b/vendor/k8s.io/api/core/v1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/core/v1/lifecycle.go b/vendor/k8s.io/api/core/v1/lifecycle.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/core/v1/objectreference.go b/vendor/k8s.io/api/core/v1/objectreference.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/core/v1/register.go b/vendor/k8s.io/api/core/v1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/core/v1/resource.go b/vendor/k8s.io/api/core/v1/resource.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/core/v1/taint.go b/vendor/k8s.io/api/core/v1/taint.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/core/v1/toleration.go b/vendor/k8s.io/api/core/v1/toleration.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/core/v1/types.go b/vendor/k8s.io/api/core/v1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/core/v1/types_swagger_doc_generated.go b/vendor/k8s.io/api/core/v1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/core/v1/well_known_labels.go b/vendor/k8s.io/api/core/v1/well_known_labels.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/core/v1/well_known_taints.go b/vendor/k8s.io/api/core/v1/well_known_taints.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/core/v1/zz_generated.deepcopy.go b/vendor/k8s.io/api/core/v1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/discovery/v1alpha1/doc.go b/vendor/k8s.io/api/discovery/v1alpha1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/discovery/v1alpha1/generated.pb.go b/vendor/k8s.io/api/discovery/v1alpha1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/discovery/v1alpha1/generated.proto b/vendor/k8s.io/api/discovery/v1alpha1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/discovery/v1alpha1/register.go b/vendor/k8s.io/api/discovery/v1alpha1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/discovery/v1alpha1/types.go b/vendor/k8s.io/api/discovery/v1alpha1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/discovery/v1alpha1/types_swagger_doc_generated.go b/vendor/k8s.io/api/discovery/v1alpha1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/discovery/v1alpha1/well_known_labels.go b/vendor/k8s.io/api/discovery/v1alpha1/well_known_labels.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/discovery/v1alpha1/zz_generated.deepcopy.go b/vendor/k8s.io/api/discovery/v1alpha1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/discovery/v1beta1/doc.go b/vendor/k8s.io/api/discovery/v1beta1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/discovery/v1beta1/generated.pb.go b/vendor/k8s.io/api/discovery/v1beta1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/discovery/v1beta1/generated.proto b/vendor/k8s.io/api/discovery/v1beta1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/discovery/v1beta1/register.go b/vendor/k8s.io/api/discovery/v1beta1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/discovery/v1beta1/types.go b/vendor/k8s.io/api/discovery/v1beta1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/discovery/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/api/discovery/v1beta1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/discovery/v1beta1/well_known_labels.go b/vendor/k8s.io/api/discovery/v1beta1/well_known_labels.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/discovery/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/discovery/v1beta1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/discovery/v1beta1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/discovery/v1beta1/zz_generated.prerelease-lifecycle.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/events/v1/doc.go b/vendor/k8s.io/api/events/v1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/events/v1/generated.pb.go b/vendor/k8s.io/api/events/v1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/events/v1/generated.proto b/vendor/k8s.io/api/events/v1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/events/v1/register.go b/vendor/k8s.io/api/events/v1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/events/v1/types.go b/vendor/k8s.io/api/events/v1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/events/v1/types_swagger_doc_generated.go b/vendor/k8s.io/api/events/v1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/events/v1/zz_generated.deepcopy.go b/vendor/k8s.io/api/events/v1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/events/v1beta1/doc.go b/vendor/k8s.io/api/events/v1beta1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/events/v1beta1/generated.pb.go b/vendor/k8s.io/api/events/v1beta1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/events/v1beta1/generated.proto b/vendor/k8s.io/api/events/v1beta1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/events/v1beta1/register.go b/vendor/k8s.io/api/events/v1beta1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/events/v1beta1/types.go b/vendor/k8s.io/api/events/v1beta1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/events/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/api/events/v1beta1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/events/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/events/v1beta1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/events/v1beta1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/events/v1beta1/zz_generated.prerelease-lifecycle.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/extensions/v1beta1/doc.go b/vendor/k8s.io/api/extensions/v1beta1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/extensions/v1beta1/generated.pb.go b/vendor/k8s.io/api/extensions/v1beta1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/extensions/v1beta1/generated.proto b/vendor/k8s.io/api/extensions/v1beta1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/extensions/v1beta1/register.go b/vendor/k8s.io/api/extensions/v1beta1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/extensions/v1beta1/types.go b/vendor/k8s.io/api/extensions/v1beta1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/extensions/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/api/extensions/v1beta1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/extensions/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/extensions/v1beta1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/extensions/v1beta1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/extensions/v1beta1/zz_generated.prerelease-lifecycle.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/flowcontrol/v1alpha1/doc.go b/vendor/k8s.io/api/flowcontrol/v1alpha1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/flowcontrol/v1alpha1/generated.pb.go b/vendor/k8s.io/api/flowcontrol/v1alpha1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/flowcontrol/v1alpha1/generated.proto b/vendor/k8s.io/api/flowcontrol/v1alpha1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/flowcontrol/v1alpha1/register.go b/vendor/k8s.io/api/flowcontrol/v1alpha1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/flowcontrol/v1alpha1/types.go b/vendor/k8s.io/api/flowcontrol/v1alpha1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/flowcontrol/v1alpha1/types_swagger_doc_generated.go b/vendor/k8s.io/api/flowcontrol/v1alpha1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/flowcontrol/v1alpha1/zz_generated.deepcopy.go b/vendor/k8s.io/api/flowcontrol/v1alpha1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/flowcontrol/v1alpha1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/flowcontrol/v1alpha1/zz_generated.prerelease-lifecycle.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/flowcontrol/v1beta1/doc.go b/vendor/k8s.io/api/flowcontrol/v1beta1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/flowcontrol/v1beta1/generated.pb.go b/vendor/k8s.io/api/flowcontrol/v1beta1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/flowcontrol/v1beta1/generated.proto b/vendor/k8s.io/api/flowcontrol/v1beta1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/flowcontrol/v1beta1/register.go b/vendor/k8s.io/api/flowcontrol/v1beta1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/flowcontrol/v1beta1/types.go b/vendor/k8s.io/api/flowcontrol/v1beta1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/flowcontrol/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/api/flowcontrol/v1beta1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/flowcontrol/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/flowcontrol/v1beta1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/flowcontrol/v1beta1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/flowcontrol/v1beta1/zz_generated.prerelease-lifecycle.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/networking/v1/doc.go b/vendor/k8s.io/api/networking/v1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/networking/v1/generated.pb.go b/vendor/k8s.io/api/networking/v1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/networking/v1/generated.proto b/vendor/k8s.io/api/networking/v1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/networking/v1/register.go b/vendor/k8s.io/api/networking/v1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/networking/v1/types.go b/vendor/k8s.io/api/networking/v1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/networking/v1/types_swagger_doc_generated.go b/vendor/k8s.io/api/networking/v1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/networking/v1/zz_generated.deepcopy.go b/vendor/k8s.io/api/networking/v1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/networking/v1beta1/doc.go b/vendor/k8s.io/api/networking/v1beta1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/networking/v1beta1/generated.pb.go b/vendor/k8s.io/api/networking/v1beta1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/networking/v1beta1/generated.proto b/vendor/k8s.io/api/networking/v1beta1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/networking/v1beta1/register.go b/vendor/k8s.io/api/networking/v1beta1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/networking/v1beta1/types.go b/vendor/k8s.io/api/networking/v1beta1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/networking/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/api/networking/v1beta1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/networking/v1beta1/well_known_annotations.go b/vendor/k8s.io/api/networking/v1beta1/well_known_annotations.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/networking/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/networking/v1beta1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/networking/v1beta1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/networking/v1beta1/zz_generated.prerelease-lifecycle.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/node/v1/doc.go b/vendor/k8s.io/api/node/v1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/node/v1/generated.pb.go b/vendor/k8s.io/api/node/v1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/node/v1/generated.proto b/vendor/k8s.io/api/node/v1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/node/v1/register.go b/vendor/k8s.io/api/node/v1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/node/v1/types.go b/vendor/k8s.io/api/node/v1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/node/v1/types_swagger_doc_generated.go b/vendor/k8s.io/api/node/v1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/node/v1/zz_generated.deepcopy.go b/vendor/k8s.io/api/node/v1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/node/v1alpha1/doc.go b/vendor/k8s.io/api/node/v1alpha1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/node/v1alpha1/generated.pb.go b/vendor/k8s.io/api/node/v1alpha1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/node/v1alpha1/generated.proto b/vendor/k8s.io/api/node/v1alpha1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/node/v1alpha1/register.go b/vendor/k8s.io/api/node/v1alpha1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/node/v1alpha1/types.go b/vendor/k8s.io/api/node/v1alpha1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/node/v1alpha1/types_swagger_doc_generated.go b/vendor/k8s.io/api/node/v1alpha1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/node/v1alpha1/zz_generated.deepcopy.go b/vendor/k8s.io/api/node/v1alpha1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/node/v1beta1/doc.go b/vendor/k8s.io/api/node/v1beta1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/node/v1beta1/generated.pb.go b/vendor/k8s.io/api/node/v1beta1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/node/v1beta1/generated.proto b/vendor/k8s.io/api/node/v1beta1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/node/v1beta1/register.go b/vendor/k8s.io/api/node/v1beta1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/node/v1beta1/types.go b/vendor/k8s.io/api/node/v1beta1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/node/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/api/node/v1beta1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/node/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/node/v1beta1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/node/v1beta1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/node/v1beta1/zz_generated.prerelease-lifecycle.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/policy/v1beta1/doc.go b/vendor/k8s.io/api/policy/v1beta1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/policy/v1beta1/generated.pb.go b/vendor/k8s.io/api/policy/v1beta1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/policy/v1beta1/generated.proto b/vendor/k8s.io/api/policy/v1beta1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/policy/v1beta1/register.go b/vendor/k8s.io/api/policy/v1beta1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/policy/v1beta1/types.go b/vendor/k8s.io/api/policy/v1beta1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/policy/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/api/policy/v1beta1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/policy/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/policy/v1beta1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/policy/v1beta1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/policy/v1beta1/zz_generated.prerelease-lifecycle.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/rbac/v1/doc.go b/vendor/k8s.io/api/rbac/v1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/rbac/v1/generated.pb.go b/vendor/k8s.io/api/rbac/v1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/rbac/v1/generated.proto b/vendor/k8s.io/api/rbac/v1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/rbac/v1/register.go b/vendor/k8s.io/api/rbac/v1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/rbac/v1/types.go b/vendor/k8s.io/api/rbac/v1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/rbac/v1/types_swagger_doc_generated.go b/vendor/k8s.io/api/rbac/v1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/rbac/v1/zz_generated.deepcopy.go b/vendor/k8s.io/api/rbac/v1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/rbac/v1alpha1/doc.go b/vendor/k8s.io/api/rbac/v1alpha1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/rbac/v1alpha1/generated.pb.go b/vendor/k8s.io/api/rbac/v1alpha1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/rbac/v1alpha1/generated.proto b/vendor/k8s.io/api/rbac/v1alpha1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/rbac/v1alpha1/register.go b/vendor/k8s.io/api/rbac/v1alpha1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/rbac/v1alpha1/types.go b/vendor/k8s.io/api/rbac/v1alpha1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/rbac/v1alpha1/types_swagger_doc_generated.go b/vendor/k8s.io/api/rbac/v1alpha1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/rbac/v1alpha1/zz_generated.deepcopy.go b/vendor/k8s.io/api/rbac/v1alpha1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/rbac/v1beta1/doc.go b/vendor/k8s.io/api/rbac/v1beta1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/rbac/v1beta1/generated.pb.go b/vendor/k8s.io/api/rbac/v1beta1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/rbac/v1beta1/generated.proto b/vendor/k8s.io/api/rbac/v1beta1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/rbac/v1beta1/register.go b/vendor/k8s.io/api/rbac/v1beta1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/rbac/v1beta1/types.go b/vendor/k8s.io/api/rbac/v1beta1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/rbac/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/api/rbac/v1beta1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/rbac/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/rbac/v1beta1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/rbac/v1beta1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/rbac/v1beta1/zz_generated.prerelease-lifecycle.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/scheduling/v1/doc.go b/vendor/k8s.io/api/scheduling/v1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/scheduling/v1/generated.pb.go b/vendor/k8s.io/api/scheduling/v1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/scheduling/v1/generated.proto b/vendor/k8s.io/api/scheduling/v1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/scheduling/v1/register.go b/vendor/k8s.io/api/scheduling/v1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/scheduling/v1/types.go b/vendor/k8s.io/api/scheduling/v1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/scheduling/v1/types_swagger_doc_generated.go b/vendor/k8s.io/api/scheduling/v1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/scheduling/v1/zz_generated.deepcopy.go b/vendor/k8s.io/api/scheduling/v1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/scheduling/v1alpha1/doc.go b/vendor/k8s.io/api/scheduling/v1alpha1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/scheduling/v1alpha1/generated.pb.go b/vendor/k8s.io/api/scheduling/v1alpha1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/scheduling/v1alpha1/generated.proto b/vendor/k8s.io/api/scheduling/v1alpha1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/scheduling/v1alpha1/register.go b/vendor/k8s.io/api/scheduling/v1alpha1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/scheduling/v1alpha1/types.go b/vendor/k8s.io/api/scheduling/v1alpha1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/scheduling/v1alpha1/types_swagger_doc_generated.go b/vendor/k8s.io/api/scheduling/v1alpha1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/scheduling/v1alpha1/zz_generated.deepcopy.go b/vendor/k8s.io/api/scheduling/v1alpha1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/scheduling/v1beta1/doc.go b/vendor/k8s.io/api/scheduling/v1beta1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/scheduling/v1beta1/generated.pb.go b/vendor/k8s.io/api/scheduling/v1beta1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/scheduling/v1beta1/generated.proto b/vendor/k8s.io/api/scheduling/v1beta1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/scheduling/v1beta1/register.go b/vendor/k8s.io/api/scheduling/v1beta1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/scheduling/v1beta1/types.go b/vendor/k8s.io/api/scheduling/v1beta1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/scheduling/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/api/scheduling/v1beta1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/scheduling/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/scheduling/v1beta1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/scheduling/v1beta1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/scheduling/v1beta1/zz_generated.prerelease-lifecycle.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/storage/v1/doc.go b/vendor/k8s.io/api/storage/v1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/storage/v1/generated.pb.go b/vendor/k8s.io/api/storage/v1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/storage/v1/generated.proto b/vendor/k8s.io/api/storage/v1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/storage/v1/register.go b/vendor/k8s.io/api/storage/v1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/storage/v1/types.go b/vendor/k8s.io/api/storage/v1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/storage/v1/types_swagger_doc_generated.go b/vendor/k8s.io/api/storage/v1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/storage/v1/zz_generated.deepcopy.go b/vendor/k8s.io/api/storage/v1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/storage/v1alpha1/doc.go b/vendor/k8s.io/api/storage/v1alpha1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/storage/v1alpha1/generated.pb.go b/vendor/k8s.io/api/storage/v1alpha1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/storage/v1alpha1/generated.proto b/vendor/k8s.io/api/storage/v1alpha1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/storage/v1alpha1/register.go b/vendor/k8s.io/api/storage/v1alpha1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/storage/v1alpha1/types.go b/vendor/k8s.io/api/storage/v1alpha1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/storage/v1alpha1/types_swagger_doc_generated.go b/vendor/k8s.io/api/storage/v1alpha1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/storage/v1alpha1/zz_generated.deepcopy.go b/vendor/k8s.io/api/storage/v1alpha1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/storage/v1beta1/doc.go b/vendor/k8s.io/api/storage/v1beta1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/storage/v1beta1/generated.pb.go b/vendor/k8s.io/api/storage/v1beta1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/storage/v1beta1/generated.proto b/vendor/k8s.io/api/storage/v1beta1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/storage/v1beta1/register.go b/vendor/k8s.io/api/storage/v1beta1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/storage/v1beta1/types.go b/vendor/k8s.io/api/storage/v1beta1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/storage/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/api/storage/v1beta1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/storage/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/storage/v1beta1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/api/storage/v1beta1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/storage/v1beta1/zz_generated.prerelease-lifecycle.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/LICENSE b/vendor/k8s.io/apimachinery/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/api/errors/OWNERS b/vendor/k8s.io/apimachinery/pkg/api/errors/OWNERS -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/api/errors/doc.go b/vendor/k8s.io/apimachinery/pkg/api/errors/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/api/errors/errors.go b/vendor/k8s.io/apimachinery/pkg/api/errors/errors.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/api/meta/OWNERS b/vendor/k8s.io/apimachinery/pkg/api/meta/OWNERS -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/api/meta/conditions.go b/vendor/k8s.io/apimachinery/pkg/api/meta/conditions.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/api/meta/doc.go b/vendor/k8s.io/apimachinery/pkg/api/meta/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/api/meta/errors.go b/vendor/k8s.io/apimachinery/pkg/api/meta/errors.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/api/meta/firsthit_restmapper.go b/vendor/k8s.io/apimachinery/pkg/api/meta/firsthit_restmapper.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/api/meta/help.go b/vendor/k8s.io/apimachinery/pkg/api/meta/help.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/api/meta/interfaces.go b/vendor/k8s.io/apimachinery/pkg/api/meta/interfaces.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/api/meta/lazy.go b/vendor/k8s.io/apimachinery/pkg/api/meta/lazy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/api/meta/meta.go b/vendor/k8s.io/apimachinery/pkg/api/meta/meta.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/api/meta/multirestmapper.go b/vendor/k8s.io/apimachinery/pkg/api/meta/multirestmapper.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/api/meta/priority.go b/vendor/k8s.io/apimachinery/pkg/api/meta/priority.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/api/meta/restmapper.go b/vendor/k8s.io/apimachinery/pkg/api/meta/restmapper.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/OWNERS b/vendor/k8s.io/apimachinery/pkg/api/resource/OWNERS -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/amount.go b/vendor/k8s.io/apimachinery/pkg/api/resource/amount.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/generated.pb.go b/vendor/k8s.io/apimachinery/pkg/api/resource/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/generated.proto b/vendor/k8s.io/apimachinery/pkg/api/resource/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/math.go b/vendor/k8s.io/apimachinery/pkg/api/resource/math.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/quantity.go b/vendor/k8s.io/apimachinery/pkg/api/resource/quantity.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/quantity_proto.go b/vendor/k8s.io/apimachinery/pkg/api/resource/quantity_proto.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/scale_int.go b/vendor/k8s.io/apimachinery/pkg/api/resource/scale_int.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/suffix.go b/vendor/k8s.io/apimachinery/pkg/api/resource/suffix.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/zz_generated.deepcopy.go b/vendor/k8s.io/apimachinery/pkg/api/resource/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/doc.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/register.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/types.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/zz_generated.conversion.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/zz_generated.conversion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/zz_generated.deepcopy.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/OWNERS b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/OWNERS -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/controller_ref.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/controller_ref.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/conversion.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/conversion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/deepcopy.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/doc.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/duration.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/duration.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.pb.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/group_version.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/group_version.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/helpers.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/helpers.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/labels.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/labels.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/meta.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/meta.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/micro_time.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/micro_time.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/micro_time_fuzz.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/micro_time_fuzz.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/micro_time_proto.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/micro_time_proto.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/register.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/time.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/time.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/time_fuzz.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/time_fuzz.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/time_proto.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/time_proto.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types_swagger_doc_generated.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/helpers.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/helpers.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructured.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructured.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructured_list.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructured_list.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/zz_generated.deepcopy.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/watch.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/watch.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.conversion.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.conversion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.deepcopy.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.defaults.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.defaults.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/conversion.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/conversion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/deepcopy.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/doc.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/generated.pb.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/generated.proto b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/register.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/types.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/types_swagger_doc_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/zz_generated.defaults.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/zz_generated.defaults.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/conversion/converter.go b/vendor/k8s.io/apimachinery/pkg/conversion/converter.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/conversion/deep_equal.go b/vendor/k8s.io/apimachinery/pkg/conversion/deep_equal.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/conversion/doc.go b/vendor/k8s.io/apimachinery/pkg/conversion/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/conversion/helper.go b/vendor/k8s.io/apimachinery/pkg/conversion/helper.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/conversion/queryparams/convert.go b/vendor/k8s.io/apimachinery/pkg/conversion/queryparams/convert.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/conversion/queryparams/doc.go b/vendor/k8s.io/apimachinery/pkg/conversion/queryparams/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/fields/doc.go b/vendor/k8s.io/apimachinery/pkg/fields/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/fields/fields.go b/vendor/k8s.io/apimachinery/pkg/fields/fields.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/fields/requirements.go b/vendor/k8s.io/apimachinery/pkg/fields/requirements.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/fields/selector.go b/vendor/k8s.io/apimachinery/pkg/fields/selector.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/labels/doc.go b/vendor/k8s.io/apimachinery/pkg/labels/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/labels/labels.go b/vendor/k8s.io/apimachinery/pkg/labels/labels.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/labels/selector.go b/vendor/k8s.io/apimachinery/pkg/labels/selector.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/labels/zz_generated.deepcopy.go b/vendor/k8s.io/apimachinery/pkg/labels/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/codec.go b/vendor/k8s.io/apimachinery/pkg/runtime/codec.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/codec_check.go b/vendor/k8s.io/apimachinery/pkg/runtime/codec_check.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/conversion.go b/vendor/k8s.io/apimachinery/pkg/runtime/conversion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/converter.go b/vendor/k8s.io/apimachinery/pkg/runtime/converter.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/doc.go b/vendor/k8s.io/apimachinery/pkg/runtime/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/embedded.go b/vendor/k8s.io/apimachinery/pkg/runtime/embedded.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/error.go b/vendor/k8s.io/apimachinery/pkg/runtime/error.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/extension.go b/vendor/k8s.io/apimachinery/pkg/runtime/extension.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/generated.pb.go b/vendor/k8s.io/apimachinery/pkg/runtime/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/generated.proto b/vendor/k8s.io/apimachinery/pkg/runtime/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/helper.go b/vendor/k8s.io/apimachinery/pkg/runtime/helper.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/interfaces.go b/vendor/k8s.io/apimachinery/pkg/runtime/interfaces.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/mapper.go b/vendor/k8s.io/apimachinery/pkg/runtime/mapper.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/negotiate.go b/vendor/k8s.io/apimachinery/pkg/runtime/negotiate.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/register.go b/vendor/k8s.io/apimachinery/pkg/runtime/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.pb.go b/vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.proto b/vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/schema/group_version.go b/vendor/k8s.io/apimachinery/pkg/runtime/schema/group_version.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/schema/interfaces.go b/vendor/k8s.io/apimachinery/pkg/runtime/schema/interfaces.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/scheme.go b/vendor/k8s.io/apimachinery/pkg/runtime/scheme.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/scheme_builder.go b/vendor/k8s.io/apimachinery/pkg/runtime/scheme_builder.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/codec_factory.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/codec_factory.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/json.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/json.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/meta.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/meta.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/negotiated_codec.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/negotiated_codec.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/protobuf/doc.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/protobuf/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/protobuf/protobuf.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/protobuf/protobuf.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer/recognizer.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer/recognizer.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming/streaming.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming/streaming.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning/versioning.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning/versioning.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/swagger_doc_generator.go b/vendor/k8s.io/apimachinery/pkg/runtime/swagger_doc_generator.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/types.go b/vendor/k8s.io/apimachinery/pkg/runtime/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/types_proto.go b/vendor/k8s.io/apimachinery/pkg/runtime/types_proto.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/zz_generated.deepcopy.go b/vendor/k8s.io/apimachinery/pkg/runtime/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/selection/operator.go b/vendor/k8s.io/apimachinery/pkg/selection/operator.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/types/doc.go b/vendor/k8s.io/apimachinery/pkg/types/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/types/namespacedname.go b/vendor/k8s.io/apimachinery/pkg/types/namespacedname.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/types/nodename.go b/vendor/k8s.io/apimachinery/pkg/types/nodename.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/types/patch.go b/vendor/k8s.io/apimachinery/pkg/types/patch.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/types/uid.go b/vendor/k8s.io/apimachinery/pkg/types/uid.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/util/cache/expiring.go b/vendor/k8s.io/apimachinery/pkg/util/cache/expiring.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/util/cache/lruexpirecache.go b/vendor/k8s.io/apimachinery/pkg/util/cache/lruexpirecache.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/util/clock/clock.go b/vendor/k8s.io/apimachinery/pkg/util/clock/clock.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/util/diff/diff.go b/vendor/k8s.io/apimachinery/pkg/util/diff/diff.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/util/errors/doc.go b/vendor/k8s.io/apimachinery/pkg/util/errors/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/util/errors/errors.go b/vendor/k8s.io/apimachinery/pkg/util/errors/errors.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/util/framer/framer.go b/vendor/k8s.io/apimachinery/pkg/util/framer/framer.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/util/intstr/generated.pb.go b/vendor/k8s.io/apimachinery/pkg/util/intstr/generated.pb.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/util/intstr/generated.proto b/vendor/k8s.io/apimachinery/pkg/util/intstr/generated.proto -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/util/intstr/instr_fuzz.go b/vendor/k8s.io/apimachinery/pkg/util/intstr/instr_fuzz.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/util/intstr/intstr.go b/vendor/k8s.io/apimachinery/pkg/util/intstr/intstr.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/util/json/json.go b/vendor/k8s.io/apimachinery/pkg/util/json/json.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/util/naming/from_stack.go b/vendor/k8s.io/apimachinery/pkg/util/naming/from_stack.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/util/net/http.go b/vendor/k8s.io/apimachinery/pkg/util/net/http.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/util/net/interface.go b/vendor/k8s.io/apimachinery/pkg/util/net/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/util/net/port_range.go b/vendor/k8s.io/apimachinery/pkg/util/net/port_range.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/util/net/port_split.go b/vendor/k8s.io/apimachinery/pkg/util/net/port_split.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/util/net/util.go b/vendor/k8s.io/apimachinery/pkg/util/net/util.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go b/vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/util/sets/byte.go b/vendor/k8s.io/apimachinery/pkg/util/sets/byte.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/util/sets/doc.go b/vendor/k8s.io/apimachinery/pkg/util/sets/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/util/sets/empty.go b/vendor/k8s.io/apimachinery/pkg/util/sets/empty.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/util/sets/int.go b/vendor/k8s.io/apimachinery/pkg/util/sets/int.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/util/sets/int32.go b/vendor/k8s.io/apimachinery/pkg/util/sets/int32.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/util/sets/int64.go b/vendor/k8s.io/apimachinery/pkg/util/sets/int64.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/util/sets/string.go b/vendor/k8s.io/apimachinery/pkg/util/sets/string.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/util/validation/field/errors.go b/vendor/k8s.io/apimachinery/pkg/util/validation/field/errors.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/util/validation/field/path.go b/vendor/k8s.io/apimachinery/pkg/util/validation/field/path.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/util/validation/validation.go b/vendor/k8s.io/apimachinery/pkg/util/validation/validation.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/util/wait/doc.go b/vendor/k8s.io/apimachinery/pkg/util/wait/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go b/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/util/yaml/decoder.go b/vendor/k8s.io/apimachinery/pkg/util/yaml/decoder.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/version/doc.go b/vendor/k8s.io/apimachinery/pkg/version/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/version/helpers.go b/vendor/k8s.io/apimachinery/pkg/version/helpers.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/version/types.go b/vendor/k8s.io/apimachinery/pkg/version/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/watch/doc.go b/vendor/k8s.io/apimachinery/pkg/watch/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/watch/filter.go b/vendor/k8s.io/apimachinery/pkg/watch/filter.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/watch/mux.go b/vendor/k8s.io/apimachinery/pkg/watch/mux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/watch/streamwatcher.go b/vendor/k8s.io/apimachinery/pkg/watch/streamwatcher.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/watch/watch.go b/vendor/k8s.io/apimachinery/pkg/watch/watch.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/pkg/watch/zz_generated.deepcopy.go b/vendor/k8s.io/apimachinery/pkg/watch/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect/deep_equal.go b/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect/deep_equal.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/LICENSE b/vendor/k8s.io/client-go/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/discovery/discovery_client.go b/vendor/k8s.io/client-go/discovery/discovery_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/discovery/doc.go b/vendor/k8s.io/client-go/discovery/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/discovery/helper.go b/vendor/k8s.io/client-go/discovery/helper.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/admissionregistration/interface.go b/vendor/k8s.io/client-go/informers/admissionregistration/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/admissionregistration/v1/interface.go b/vendor/k8s.io/client-go/informers/admissionregistration/v1/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/admissionregistration/v1/mutatingwebhookconfiguration.go b/vendor/k8s.io/client-go/informers/admissionregistration/v1/mutatingwebhookconfiguration.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/admissionregistration/v1/validatingwebhookconfiguration.go b/vendor/k8s.io/client-go/informers/admissionregistration/v1/validatingwebhookconfiguration.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/admissionregistration/v1beta1/interface.go b/vendor/k8s.io/client-go/informers/admissionregistration/v1beta1/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/admissionregistration/v1beta1/mutatingwebhookconfiguration.go b/vendor/k8s.io/client-go/informers/admissionregistration/v1beta1/mutatingwebhookconfiguration.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/admissionregistration/v1beta1/validatingwebhookconfiguration.go b/vendor/k8s.io/client-go/informers/admissionregistration/v1beta1/validatingwebhookconfiguration.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/apiserverinternal/interface.go b/vendor/k8s.io/client-go/informers/apiserverinternal/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/apiserverinternal/v1alpha1/interface.go b/vendor/k8s.io/client-go/informers/apiserverinternal/v1alpha1/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/apiserverinternal/v1alpha1/storageversion.go b/vendor/k8s.io/client-go/informers/apiserverinternal/v1alpha1/storageversion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/apps/interface.go b/vendor/k8s.io/client-go/informers/apps/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/apps/v1/controllerrevision.go b/vendor/k8s.io/client-go/informers/apps/v1/controllerrevision.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/apps/v1/daemonset.go b/vendor/k8s.io/client-go/informers/apps/v1/daemonset.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/apps/v1/deployment.go b/vendor/k8s.io/client-go/informers/apps/v1/deployment.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/apps/v1/interface.go b/vendor/k8s.io/client-go/informers/apps/v1/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/apps/v1/replicaset.go b/vendor/k8s.io/client-go/informers/apps/v1/replicaset.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/apps/v1/statefulset.go b/vendor/k8s.io/client-go/informers/apps/v1/statefulset.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/apps/v1beta1/controllerrevision.go b/vendor/k8s.io/client-go/informers/apps/v1beta1/controllerrevision.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/apps/v1beta1/deployment.go b/vendor/k8s.io/client-go/informers/apps/v1beta1/deployment.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/apps/v1beta1/interface.go b/vendor/k8s.io/client-go/informers/apps/v1beta1/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/apps/v1beta1/statefulset.go b/vendor/k8s.io/client-go/informers/apps/v1beta1/statefulset.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/apps/v1beta2/controllerrevision.go b/vendor/k8s.io/client-go/informers/apps/v1beta2/controllerrevision.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/apps/v1beta2/daemonset.go b/vendor/k8s.io/client-go/informers/apps/v1beta2/daemonset.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/apps/v1beta2/deployment.go b/vendor/k8s.io/client-go/informers/apps/v1beta2/deployment.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/apps/v1beta2/interface.go b/vendor/k8s.io/client-go/informers/apps/v1beta2/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/apps/v1beta2/replicaset.go b/vendor/k8s.io/client-go/informers/apps/v1beta2/replicaset.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/apps/v1beta2/statefulset.go b/vendor/k8s.io/client-go/informers/apps/v1beta2/statefulset.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/autoscaling/interface.go b/vendor/k8s.io/client-go/informers/autoscaling/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/autoscaling/v1/horizontalpodautoscaler.go b/vendor/k8s.io/client-go/informers/autoscaling/v1/horizontalpodautoscaler.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/autoscaling/v1/interface.go b/vendor/k8s.io/client-go/informers/autoscaling/v1/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/autoscaling/v2beta1/horizontalpodautoscaler.go b/vendor/k8s.io/client-go/informers/autoscaling/v2beta1/horizontalpodautoscaler.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/autoscaling/v2beta1/interface.go b/vendor/k8s.io/client-go/informers/autoscaling/v2beta1/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/autoscaling/v2beta2/horizontalpodautoscaler.go b/vendor/k8s.io/client-go/informers/autoscaling/v2beta2/horizontalpodautoscaler.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/autoscaling/v2beta2/interface.go b/vendor/k8s.io/client-go/informers/autoscaling/v2beta2/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/batch/interface.go b/vendor/k8s.io/client-go/informers/batch/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/batch/v1/interface.go b/vendor/k8s.io/client-go/informers/batch/v1/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/batch/v1/job.go b/vendor/k8s.io/client-go/informers/batch/v1/job.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/batch/v1beta1/cronjob.go b/vendor/k8s.io/client-go/informers/batch/v1beta1/cronjob.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/batch/v1beta1/interface.go b/vendor/k8s.io/client-go/informers/batch/v1beta1/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/batch/v2alpha1/cronjob.go b/vendor/k8s.io/client-go/informers/batch/v2alpha1/cronjob.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/batch/v2alpha1/interface.go b/vendor/k8s.io/client-go/informers/batch/v2alpha1/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/certificates/interface.go b/vendor/k8s.io/client-go/informers/certificates/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/certificates/v1/certificatesigningrequest.go b/vendor/k8s.io/client-go/informers/certificates/v1/certificatesigningrequest.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/certificates/v1/interface.go b/vendor/k8s.io/client-go/informers/certificates/v1/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/certificates/v1beta1/certificatesigningrequest.go b/vendor/k8s.io/client-go/informers/certificates/v1beta1/certificatesigningrequest.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/certificates/v1beta1/interface.go b/vendor/k8s.io/client-go/informers/certificates/v1beta1/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/coordination/interface.go b/vendor/k8s.io/client-go/informers/coordination/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/coordination/v1/interface.go b/vendor/k8s.io/client-go/informers/coordination/v1/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/coordination/v1/lease.go b/vendor/k8s.io/client-go/informers/coordination/v1/lease.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/coordination/v1beta1/interface.go b/vendor/k8s.io/client-go/informers/coordination/v1beta1/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/coordination/v1beta1/lease.go b/vendor/k8s.io/client-go/informers/coordination/v1beta1/lease.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/core/interface.go b/vendor/k8s.io/client-go/informers/core/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/core/v1/componentstatus.go b/vendor/k8s.io/client-go/informers/core/v1/componentstatus.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/core/v1/configmap.go b/vendor/k8s.io/client-go/informers/core/v1/configmap.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/core/v1/endpoints.go b/vendor/k8s.io/client-go/informers/core/v1/endpoints.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/core/v1/event.go b/vendor/k8s.io/client-go/informers/core/v1/event.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/core/v1/interface.go b/vendor/k8s.io/client-go/informers/core/v1/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/core/v1/limitrange.go b/vendor/k8s.io/client-go/informers/core/v1/limitrange.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/core/v1/namespace.go b/vendor/k8s.io/client-go/informers/core/v1/namespace.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/core/v1/node.go b/vendor/k8s.io/client-go/informers/core/v1/node.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/core/v1/persistentvolume.go b/vendor/k8s.io/client-go/informers/core/v1/persistentvolume.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/core/v1/persistentvolumeclaim.go b/vendor/k8s.io/client-go/informers/core/v1/persistentvolumeclaim.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/core/v1/pod.go b/vendor/k8s.io/client-go/informers/core/v1/pod.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/core/v1/podtemplate.go b/vendor/k8s.io/client-go/informers/core/v1/podtemplate.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/core/v1/replicationcontroller.go b/vendor/k8s.io/client-go/informers/core/v1/replicationcontroller.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/core/v1/resourcequota.go b/vendor/k8s.io/client-go/informers/core/v1/resourcequota.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/core/v1/secret.go b/vendor/k8s.io/client-go/informers/core/v1/secret.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/core/v1/service.go b/vendor/k8s.io/client-go/informers/core/v1/service.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/core/v1/serviceaccount.go b/vendor/k8s.io/client-go/informers/core/v1/serviceaccount.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/discovery/interface.go b/vendor/k8s.io/client-go/informers/discovery/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/discovery/v1alpha1/endpointslice.go b/vendor/k8s.io/client-go/informers/discovery/v1alpha1/endpointslice.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/discovery/v1alpha1/interface.go b/vendor/k8s.io/client-go/informers/discovery/v1alpha1/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/discovery/v1beta1/endpointslice.go b/vendor/k8s.io/client-go/informers/discovery/v1beta1/endpointslice.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/discovery/v1beta1/interface.go b/vendor/k8s.io/client-go/informers/discovery/v1beta1/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/events/interface.go b/vendor/k8s.io/client-go/informers/events/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/events/v1/event.go b/vendor/k8s.io/client-go/informers/events/v1/event.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/events/v1/interface.go b/vendor/k8s.io/client-go/informers/events/v1/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/events/v1beta1/event.go b/vendor/k8s.io/client-go/informers/events/v1beta1/event.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/events/v1beta1/interface.go b/vendor/k8s.io/client-go/informers/events/v1beta1/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/extensions/interface.go b/vendor/k8s.io/client-go/informers/extensions/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/extensions/v1beta1/daemonset.go b/vendor/k8s.io/client-go/informers/extensions/v1beta1/daemonset.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/extensions/v1beta1/deployment.go b/vendor/k8s.io/client-go/informers/extensions/v1beta1/deployment.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/extensions/v1beta1/ingress.go b/vendor/k8s.io/client-go/informers/extensions/v1beta1/ingress.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/extensions/v1beta1/interface.go b/vendor/k8s.io/client-go/informers/extensions/v1beta1/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/extensions/v1beta1/networkpolicy.go b/vendor/k8s.io/client-go/informers/extensions/v1beta1/networkpolicy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/extensions/v1beta1/podsecuritypolicy.go b/vendor/k8s.io/client-go/informers/extensions/v1beta1/podsecuritypolicy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/extensions/v1beta1/replicaset.go b/vendor/k8s.io/client-go/informers/extensions/v1beta1/replicaset.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/factory.go b/vendor/k8s.io/client-go/informers/factory.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/flowcontrol/interface.go b/vendor/k8s.io/client-go/informers/flowcontrol/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/flowcontrol/v1alpha1/flowschema.go b/vendor/k8s.io/client-go/informers/flowcontrol/v1alpha1/flowschema.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/flowcontrol/v1alpha1/interface.go b/vendor/k8s.io/client-go/informers/flowcontrol/v1alpha1/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/flowcontrol/v1alpha1/prioritylevelconfiguration.go b/vendor/k8s.io/client-go/informers/flowcontrol/v1alpha1/prioritylevelconfiguration.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/flowcontrol/v1beta1/flowschema.go b/vendor/k8s.io/client-go/informers/flowcontrol/v1beta1/flowschema.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/flowcontrol/v1beta1/interface.go b/vendor/k8s.io/client-go/informers/flowcontrol/v1beta1/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/flowcontrol/v1beta1/prioritylevelconfiguration.go b/vendor/k8s.io/client-go/informers/flowcontrol/v1beta1/prioritylevelconfiguration.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/generic.go b/vendor/k8s.io/client-go/informers/generic.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/internalinterfaces/factory_interfaces.go b/vendor/k8s.io/client-go/informers/internalinterfaces/factory_interfaces.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/networking/interface.go b/vendor/k8s.io/client-go/informers/networking/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/networking/v1/ingress.go b/vendor/k8s.io/client-go/informers/networking/v1/ingress.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/networking/v1/ingressclass.go b/vendor/k8s.io/client-go/informers/networking/v1/ingressclass.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/networking/v1/interface.go b/vendor/k8s.io/client-go/informers/networking/v1/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/networking/v1/networkpolicy.go b/vendor/k8s.io/client-go/informers/networking/v1/networkpolicy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/networking/v1beta1/ingress.go b/vendor/k8s.io/client-go/informers/networking/v1beta1/ingress.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/networking/v1beta1/ingressclass.go b/vendor/k8s.io/client-go/informers/networking/v1beta1/ingressclass.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/networking/v1beta1/interface.go b/vendor/k8s.io/client-go/informers/networking/v1beta1/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/node/interface.go b/vendor/k8s.io/client-go/informers/node/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/node/v1/interface.go b/vendor/k8s.io/client-go/informers/node/v1/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/node/v1/runtimeclass.go b/vendor/k8s.io/client-go/informers/node/v1/runtimeclass.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/node/v1alpha1/interface.go b/vendor/k8s.io/client-go/informers/node/v1alpha1/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/node/v1alpha1/runtimeclass.go b/vendor/k8s.io/client-go/informers/node/v1alpha1/runtimeclass.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/node/v1beta1/interface.go b/vendor/k8s.io/client-go/informers/node/v1beta1/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/node/v1beta1/runtimeclass.go b/vendor/k8s.io/client-go/informers/node/v1beta1/runtimeclass.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/policy/interface.go b/vendor/k8s.io/client-go/informers/policy/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/policy/v1beta1/interface.go b/vendor/k8s.io/client-go/informers/policy/v1beta1/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/policy/v1beta1/poddisruptionbudget.go b/vendor/k8s.io/client-go/informers/policy/v1beta1/poddisruptionbudget.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/policy/v1beta1/podsecuritypolicy.go b/vendor/k8s.io/client-go/informers/policy/v1beta1/podsecuritypolicy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/rbac/interface.go b/vendor/k8s.io/client-go/informers/rbac/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/rbac/v1/clusterrole.go b/vendor/k8s.io/client-go/informers/rbac/v1/clusterrole.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/rbac/v1/clusterrolebinding.go b/vendor/k8s.io/client-go/informers/rbac/v1/clusterrolebinding.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/rbac/v1/interface.go b/vendor/k8s.io/client-go/informers/rbac/v1/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/rbac/v1/role.go b/vendor/k8s.io/client-go/informers/rbac/v1/role.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/rbac/v1/rolebinding.go b/vendor/k8s.io/client-go/informers/rbac/v1/rolebinding.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/rbac/v1alpha1/clusterrole.go b/vendor/k8s.io/client-go/informers/rbac/v1alpha1/clusterrole.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/rbac/v1alpha1/clusterrolebinding.go b/vendor/k8s.io/client-go/informers/rbac/v1alpha1/clusterrolebinding.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/rbac/v1alpha1/interface.go b/vendor/k8s.io/client-go/informers/rbac/v1alpha1/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/rbac/v1alpha1/role.go b/vendor/k8s.io/client-go/informers/rbac/v1alpha1/role.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/rbac/v1alpha1/rolebinding.go b/vendor/k8s.io/client-go/informers/rbac/v1alpha1/rolebinding.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/rbac/v1beta1/clusterrole.go b/vendor/k8s.io/client-go/informers/rbac/v1beta1/clusterrole.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/rbac/v1beta1/clusterrolebinding.go b/vendor/k8s.io/client-go/informers/rbac/v1beta1/clusterrolebinding.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/rbac/v1beta1/interface.go b/vendor/k8s.io/client-go/informers/rbac/v1beta1/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/rbac/v1beta1/role.go b/vendor/k8s.io/client-go/informers/rbac/v1beta1/role.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/rbac/v1beta1/rolebinding.go b/vendor/k8s.io/client-go/informers/rbac/v1beta1/rolebinding.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/scheduling/interface.go b/vendor/k8s.io/client-go/informers/scheduling/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/scheduling/v1/interface.go b/vendor/k8s.io/client-go/informers/scheduling/v1/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/scheduling/v1/priorityclass.go b/vendor/k8s.io/client-go/informers/scheduling/v1/priorityclass.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/scheduling/v1alpha1/interface.go b/vendor/k8s.io/client-go/informers/scheduling/v1alpha1/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/scheduling/v1alpha1/priorityclass.go b/vendor/k8s.io/client-go/informers/scheduling/v1alpha1/priorityclass.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/scheduling/v1beta1/interface.go b/vendor/k8s.io/client-go/informers/scheduling/v1beta1/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/scheduling/v1beta1/priorityclass.go b/vendor/k8s.io/client-go/informers/scheduling/v1beta1/priorityclass.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/storage/interface.go b/vendor/k8s.io/client-go/informers/storage/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/storage/v1/csidriver.go b/vendor/k8s.io/client-go/informers/storage/v1/csidriver.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/storage/v1/csinode.go b/vendor/k8s.io/client-go/informers/storage/v1/csinode.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/storage/v1/interface.go b/vendor/k8s.io/client-go/informers/storage/v1/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/storage/v1/storageclass.go b/vendor/k8s.io/client-go/informers/storage/v1/storageclass.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/storage/v1/volumeattachment.go b/vendor/k8s.io/client-go/informers/storage/v1/volumeattachment.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/storage/v1alpha1/csistoragecapacity.go b/vendor/k8s.io/client-go/informers/storage/v1alpha1/csistoragecapacity.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/storage/v1alpha1/interface.go b/vendor/k8s.io/client-go/informers/storage/v1alpha1/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/storage/v1alpha1/volumeattachment.go b/vendor/k8s.io/client-go/informers/storage/v1alpha1/volumeattachment.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/storage/v1beta1/csidriver.go b/vendor/k8s.io/client-go/informers/storage/v1beta1/csidriver.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/storage/v1beta1/csinode.go b/vendor/k8s.io/client-go/informers/storage/v1beta1/csinode.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/storage/v1beta1/interface.go b/vendor/k8s.io/client-go/informers/storage/v1beta1/interface.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/storage/v1beta1/storageclass.go b/vendor/k8s.io/client-go/informers/storage/v1beta1/storageclass.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/informers/storage/v1beta1/volumeattachment.go b/vendor/k8s.io/client-go/informers/storage/v1beta1/volumeattachment.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/clientset.go b/vendor/k8s.io/client-go/kubernetes/clientset.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/doc.go b/vendor/k8s.io/client-go/kubernetes/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/import.go b/vendor/k8s.io/client-go/kubernetes/import.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/scheme/doc.go b/vendor/k8s.io/client-go/kubernetes/scheme/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/scheme/register.go b/vendor/k8s.io/client-go/kubernetes/scheme/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/admissionregistration_client.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/admissionregistration_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/mutatingwebhookconfiguration.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/mutatingwebhookconfiguration.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/validatingwebhookconfiguration.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/validatingwebhookconfiguration.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/admissionregistration_client.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/admissionregistration_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/mutatingwebhookconfiguration.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/mutatingwebhookconfiguration.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/validatingwebhookconfiguration.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/validatingwebhookconfiguration.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apiserverinternal/v1alpha1/apiserverinternal_client.go b/vendor/k8s.io/client-go/kubernetes/typed/apiserverinternal/v1alpha1/apiserverinternal_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apiserverinternal/v1alpha1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/apiserverinternal/v1alpha1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apiserverinternal/v1alpha1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/apiserverinternal/v1alpha1/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apiserverinternal/v1alpha1/storageversion.go b/vendor/k8s.io/client-go/kubernetes/typed/apiserverinternal/v1alpha1/storageversion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/apps_client.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/apps_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/controllerrevision.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/controllerrevision.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/daemonset.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/daemonset.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/deployment.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/deployment.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/replicaset.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/replicaset.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/statefulset.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/statefulset.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/apps_client.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/apps_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/controllerrevision.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/controllerrevision.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/deployment.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/deployment.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/statefulset.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/statefulset.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/apps_client.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/apps_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/controllerrevision.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/controllerrevision.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/daemonset.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/daemonset.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/deployment.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/deployment.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/replicaset.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/replicaset.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/statefulset.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/statefulset.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/authentication_client.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/authentication_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/tokenreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/tokenreview.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/authentication_client.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/authentication_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/tokenreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/tokenreview.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/authorization_client.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/authorization_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/localsubjectaccessreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/localsubjectaccessreview.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/selfsubjectaccessreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/selfsubjectaccessreview.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/selfsubjectrulesreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/selfsubjectrulesreview.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/subjectaccessreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/subjectaccessreview.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/authorization_client.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/authorization_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/localsubjectaccessreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/localsubjectaccessreview.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/selfsubjectaccessreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/selfsubjectaccessreview.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/selfsubjectrulesreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/selfsubjectrulesreview.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/subjectaccessreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/subjectaccessreview.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/autoscaling_client.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/autoscaling_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/horizontalpodautoscaler.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/horizontalpodautoscaler.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/autoscaling_client.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/autoscaling_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/horizontalpodautoscaler.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/horizontalpodautoscaler.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/autoscaling_client.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/autoscaling_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/horizontalpodautoscaler.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/horizontalpodautoscaler.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/batch_client.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/batch_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/job.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/job.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/batch_client.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/batch_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/cronjob.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/cronjob.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/batch_client.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/batch_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/cronjob.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/cronjob.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1/certificates_client.go b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1/certificates_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1/certificatesigningrequest.go b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1/certificatesigningrequest.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/certificates_client.go b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/certificates_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/certificatesigningrequest.go b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/certificatesigningrequest.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/certificatesigningrequest_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/certificatesigningrequest_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1/coordination_client.go b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1/coordination_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1/lease.go b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1/lease.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/coordination_client.go b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/coordination_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/lease.go b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/lease.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/componentstatus.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/componentstatus.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/configmap.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/configmap.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/core_client.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/core_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/endpoints.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/endpoints.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/event.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/event.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/event_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/event_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/limitrange.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/limitrange.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/namespace.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/namespace.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/namespace_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/namespace_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/node.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/node.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/node_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/node_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/persistentvolume.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/persistentvolume.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/persistentvolumeclaim.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/persistentvolumeclaim.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/pod.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/pod.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/pod_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/pod_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/podtemplate.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/podtemplate.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/replicationcontroller.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/replicationcontroller.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/resourcequota.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/resourcequota.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/secret.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/secret.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/service.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/service.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/service_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/service_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/serviceaccount.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/serviceaccount.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1alpha1/discovery_client.go b/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1alpha1/discovery_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1alpha1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1alpha1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1alpha1/endpointslice.go b/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1alpha1/endpointslice.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1alpha1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1alpha1/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1beta1/discovery_client.go b/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1beta1/discovery_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1beta1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1beta1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1beta1/endpointslice.go b/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1beta1/endpointslice.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1beta1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1beta1/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/events/v1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/events/v1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/events/v1/event.go b/vendor/k8s.io/client-go/kubernetes/typed/events/v1/event.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/events/v1/events_client.go b/vendor/k8s.io/client-go/kubernetes/typed/events/v1/events_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/events/v1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/events/v1/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/event.go b/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/event.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/event_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/event_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/events_client.go b/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/events_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/daemonset.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/daemonset.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/deployment.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/deployment.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/deployment_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/deployment_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/extensions_client.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/extensions_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/ingress.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/ingress.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/networkpolicy.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/networkpolicy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/podsecuritypolicy.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/podsecuritypolicy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/replicaset.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/replicaset.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1alpha1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1alpha1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1alpha1/flowcontrol_client.go b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1alpha1/flowcontrol_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1alpha1/flowschema.go b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1alpha1/flowschema.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1alpha1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1alpha1/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1alpha1/prioritylevelconfiguration.go b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1alpha1/prioritylevelconfiguration.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1/flowcontrol_client.go b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1/flowcontrol_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1/flowschema.go b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1/flowschema.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1/prioritylevelconfiguration.go b/vendor/k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1/prioritylevelconfiguration.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/ingress.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/ingress.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/ingressclass.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/ingressclass.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/networking_client.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/networking_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/networkpolicy.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/networkpolicy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/ingress.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/ingress.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/ingressclass.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/ingressclass.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/networking_client.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/networking_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/node/v1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/node/v1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/node/v1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/node/v1/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/node/v1/node_client.go b/vendor/k8s.io/client-go/kubernetes/typed/node/v1/node_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/node/v1/runtimeclass.go b/vendor/k8s.io/client-go/kubernetes/typed/node/v1/runtimeclass.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/node/v1alpha1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/node/v1alpha1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/node/v1alpha1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/node/v1alpha1/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/node/v1alpha1/node_client.go b/vendor/k8s.io/client-go/kubernetes/typed/node/v1alpha1/node_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/node/v1alpha1/runtimeclass.go b/vendor/k8s.io/client-go/kubernetes/typed/node/v1alpha1/runtimeclass.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/node/v1beta1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/node/v1beta1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/node/v1beta1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/node/v1beta1/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/node/v1beta1/node_client.go b/vendor/k8s.io/client-go/kubernetes/typed/node/v1beta1/node_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/node/v1beta1/runtimeclass.go b/vendor/k8s.io/client-go/kubernetes/typed/node/v1beta1/runtimeclass.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/eviction.go b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/eviction.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/eviction_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/eviction_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/poddisruptionbudget.go b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/poddisruptionbudget.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/podsecuritypolicy.go b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/podsecuritypolicy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/policy_client.go b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/policy_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/clusterrole.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/clusterrole.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/clusterrolebinding.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/clusterrolebinding.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/rbac_client.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/rbac_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/role.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/role.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/rolebinding.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/rolebinding.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/clusterrole.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/clusterrole.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/clusterrolebinding.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/clusterrolebinding.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/rbac_client.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/rbac_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/role.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/role.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/rolebinding.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/rolebinding.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/clusterrole.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/clusterrole.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/clusterrolebinding.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/clusterrolebinding.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/rbac_client.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/rbac_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/role.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/role.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/rolebinding.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/rolebinding.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1/priorityclass.go b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1/priorityclass.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1/scheduling_client.go b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1/scheduling_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/priorityclass.go b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/priorityclass.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/scheduling_client.go b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/scheduling_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/priorityclass.go b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/priorityclass.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/scheduling_client.go b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/scheduling_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/csidriver.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/csidriver.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/csinode.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/csinode.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/storage_client.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/storage_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/storageclass.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/storageclass.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/volumeattachment.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/volumeattachment.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/csistoragecapacity.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/csistoragecapacity.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/storage_client.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/storage_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/volumeattachment.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/volumeattachment.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/csidriver.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/csidriver.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/csinode.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/csinode.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/generated_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/storage_client.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/storage_client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/storageclass.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/storageclass.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/volumeattachment.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/volumeattachment.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/admissionregistration/v1/expansion_generated.go b/vendor/k8s.io/client-go/listers/admissionregistration/v1/expansion_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/admissionregistration/v1/mutatingwebhookconfiguration.go b/vendor/k8s.io/client-go/listers/admissionregistration/v1/mutatingwebhookconfiguration.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/admissionregistration/v1/validatingwebhookconfiguration.go b/vendor/k8s.io/client-go/listers/admissionregistration/v1/validatingwebhookconfiguration.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/admissionregistration/v1beta1/expansion_generated.go b/vendor/k8s.io/client-go/listers/admissionregistration/v1beta1/expansion_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/admissionregistration/v1beta1/mutatingwebhookconfiguration.go b/vendor/k8s.io/client-go/listers/admissionregistration/v1beta1/mutatingwebhookconfiguration.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/admissionregistration/v1beta1/validatingwebhookconfiguration.go b/vendor/k8s.io/client-go/listers/admissionregistration/v1beta1/validatingwebhookconfiguration.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/apiserverinternal/v1alpha1/expansion_generated.go b/vendor/k8s.io/client-go/listers/apiserverinternal/v1alpha1/expansion_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/apiserverinternal/v1alpha1/storageversion.go b/vendor/k8s.io/client-go/listers/apiserverinternal/v1alpha1/storageversion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/apps/v1/controllerrevision.go b/vendor/k8s.io/client-go/listers/apps/v1/controllerrevision.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/apps/v1/daemonset.go b/vendor/k8s.io/client-go/listers/apps/v1/daemonset.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/apps/v1/daemonset_expansion.go b/vendor/k8s.io/client-go/listers/apps/v1/daemonset_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/apps/v1/deployment.go b/vendor/k8s.io/client-go/listers/apps/v1/deployment.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/apps/v1/expansion_generated.go b/vendor/k8s.io/client-go/listers/apps/v1/expansion_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/apps/v1/replicaset.go b/vendor/k8s.io/client-go/listers/apps/v1/replicaset.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/apps/v1/replicaset_expansion.go b/vendor/k8s.io/client-go/listers/apps/v1/replicaset_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/apps/v1/statefulset.go b/vendor/k8s.io/client-go/listers/apps/v1/statefulset.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/apps/v1/statefulset_expansion.go b/vendor/k8s.io/client-go/listers/apps/v1/statefulset_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/apps/v1beta1/controllerrevision.go b/vendor/k8s.io/client-go/listers/apps/v1beta1/controllerrevision.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/apps/v1beta1/deployment.go b/vendor/k8s.io/client-go/listers/apps/v1beta1/deployment.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/apps/v1beta1/expansion_generated.go b/vendor/k8s.io/client-go/listers/apps/v1beta1/expansion_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/apps/v1beta1/statefulset.go b/vendor/k8s.io/client-go/listers/apps/v1beta1/statefulset.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/apps/v1beta1/statefulset_expansion.go b/vendor/k8s.io/client-go/listers/apps/v1beta1/statefulset_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/apps/v1beta2/controllerrevision.go b/vendor/k8s.io/client-go/listers/apps/v1beta2/controllerrevision.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/apps/v1beta2/daemonset.go b/vendor/k8s.io/client-go/listers/apps/v1beta2/daemonset.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/apps/v1beta2/daemonset_expansion.go b/vendor/k8s.io/client-go/listers/apps/v1beta2/daemonset_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/apps/v1beta2/deployment.go b/vendor/k8s.io/client-go/listers/apps/v1beta2/deployment.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/apps/v1beta2/expansion_generated.go b/vendor/k8s.io/client-go/listers/apps/v1beta2/expansion_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/apps/v1beta2/replicaset.go b/vendor/k8s.io/client-go/listers/apps/v1beta2/replicaset.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/apps/v1beta2/replicaset_expansion.go b/vendor/k8s.io/client-go/listers/apps/v1beta2/replicaset_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/apps/v1beta2/statefulset.go b/vendor/k8s.io/client-go/listers/apps/v1beta2/statefulset.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/apps/v1beta2/statefulset_expansion.go b/vendor/k8s.io/client-go/listers/apps/v1beta2/statefulset_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/autoscaling/v1/expansion_generated.go b/vendor/k8s.io/client-go/listers/autoscaling/v1/expansion_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/autoscaling/v1/horizontalpodautoscaler.go b/vendor/k8s.io/client-go/listers/autoscaling/v1/horizontalpodautoscaler.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/autoscaling/v2beta1/expansion_generated.go b/vendor/k8s.io/client-go/listers/autoscaling/v2beta1/expansion_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/autoscaling/v2beta1/horizontalpodautoscaler.go b/vendor/k8s.io/client-go/listers/autoscaling/v2beta1/horizontalpodautoscaler.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/autoscaling/v2beta2/expansion_generated.go b/vendor/k8s.io/client-go/listers/autoscaling/v2beta2/expansion_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/autoscaling/v2beta2/horizontalpodautoscaler.go b/vendor/k8s.io/client-go/listers/autoscaling/v2beta2/horizontalpodautoscaler.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/batch/v1/expansion_generated.go b/vendor/k8s.io/client-go/listers/batch/v1/expansion_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/batch/v1/job.go b/vendor/k8s.io/client-go/listers/batch/v1/job.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/batch/v1/job_expansion.go b/vendor/k8s.io/client-go/listers/batch/v1/job_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/batch/v1beta1/cronjob.go b/vendor/k8s.io/client-go/listers/batch/v1beta1/cronjob.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/batch/v1beta1/expansion_generated.go b/vendor/k8s.io/client-go/listers/batch/v1beta1/expansion_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/batch/v2alpha1/cronjob.go b/vendor/k8s.io/client-go/listers/batch/v2alpha1/cronjob.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/batch/v2alpha1/expansion_generated.go b/vendor/k8s.io/client-go/listers/batch/v2alpha1/expansion_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/certificates/v1/certificatesigningrequest.go b/vendor/k8s.io/client-go/listers/certificates/v1/certificatesigningrequest.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/certificates/v1/expansion_generated.go b/vendor/k8s.io/client-go/listers/certificates/v1/expansion_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/certificates/v1beta1/certificatesigningrequest.go b/vendor/k8s.io/client-go/listers/certificates/v1beta1/certificatesigningrequest.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/certificates/v1beta1/expansion_generated.go b/vendor/k8s.io/client-go/listers/certificates/v1beta1/expansion_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/coordination/v1/expansion_generated.go b/vendor/k8s.io/client-go/listers/coordination/v1/expansion_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/coordination/v1/lease.go b/vendor/k8s.io/client-go/listers/coordination/v1/lease.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/coordination/v1beta1/expansion_generated.go b/vendor/k8s.io/client-go/listers/coordination/v1beta1/expansion_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/coordination/v1beta1/lease.go b/vendor/k8s.io/client-go/listers/coordination/v1beta1/lease.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/core/v1/componentstatus.go b/vendor/k8s.io/client-go/listers/core/v1/componentstatus.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/core/v1/configmap.go b/vendor/k8s.io/client-go/listers/core/v1/configmap.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/core/v1/endpoints.go b/vendor/k8s.io/client-go/listers/core/v1/endpoints.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/core/v1/event.go b/vendor/k8s.io/client-go/listers/core/v1/event.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/core/v1/expansion_generated.go b/vendor/k8s.io/client-go/listers/core/v1/expansion_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/core/v1/limitrange.go b/vendor/k8s.io/client-go/listers/core/v1/limitrange.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/core/v1/namespace.go b/vendor/k8s.io/client-go/listers/core/v1/namespace.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/core/v1/node.go b/vendor/k8s.io/client-go/listers/core/v1/node.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/core/v1/persistentvolume.go b/vendor/k8s.io/client-go/listers/core/v1/persistentvolume.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/core/v1/persistentvolumeclaim.go b/vendor/k8s.io/client-go/listers/core/v1/persistentvolumeclaim.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/core/v1/pod.go b/vendor/k8s.io/client-go/listers/core/v1/pod.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/core/v1/podtemplate.go b/vendor/k8s.io/client-go/listers/core/v1/podtemplate.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/core/v1/replicationcontroller.go b/vendor/k8s.io/client-go/listers/core/v1/replicationcontroller.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/core/v1/replicationcontroller_expansion.go b/vendor/k8s.io/client-go/listers/core/v1/replicationcontroller_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/core/v1/resourcequota.go b/vendor/k8s.io/client-go/listers/core/v1/resourcequota.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/core/v1/secret.go b/vendor/k8s.io/client-go/listers/core/v1/secret.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/core/v1/service.go b/vendor/k8s.io/client-go/listers/core/v1/service.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/core/v1/serviceaccount.go b/vendor/k8s.io/client-go/listers/core/v1/serviceaccount.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/discovery/v1alpha1/endpointslice.go b/vendor/k8s.io/client-go/listers/discovery/v1alpha1/endpointslice.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/discovery/v1alpha1/expansion_generated.go b/vendor/k8s.io/client-go/listers/discovery/v1alpha1/expansion_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/discovery/v1beta1/endpointslice.go b/vendor/k8s.io/client-go/listers/discovery/v1beta1/endpointslice.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/discovery/v1beta1/expansion_generated.go b/vendor/k8s.io/client-go/listers/discovery/v1beta1/expansion_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/events/v1/event.go b/vendor/k8s.io/client-go/listers/events/v1/event.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/events/v1/expansion_generated.go b/vendor/k8s.io/client-go/listers/events/v1/expansion_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/events/v1beta1/event.go b/vendor/k8s.io/client-go/listers/events/v1beta1/event.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/events/v1beta1/expansion_generated.go b/vendor/k8s.io/client-go/listers/events/v1beta1/expansion_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/extensions/v1beta1/daemonset.go b/vendor/k8s.io/client-go/listers/extensions/v1beta1/daemonset.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/extensions/v1beta1/daemonset_expansion.go b/vendor/k8s.io/client-go/listers/extensions/v1beta1/daemonset_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/extensions/v1beta1/deployment.go b/vendor/k8s.io/client-go/listers/extensions/v1beta1/deployment.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/extensions/v1beta1/expansion_generated.go b/vendor/k8s.io/client-go/listers/extensions/v1beta1/expansion_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/extensions/v1beta1/ingress.go b/vendor/k8s.io/client-go/listers/extensions/v1beta1/ingress.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/extensions/v1beta1/networkpolicy.go b/vendor/k8s.io/client-go/listers/extensions/v1beta1/networkpolicy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/extensions/v1beta1/podsecuritypolicy.go b/vendor/k8s.io/client-go/listers/extensions/v1beta1/podsecuritypolicy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/extensions/v1beta1/replicaset.go b/vendor/k8s.io/client-go/listers/extensions/v1beta1/replicaset.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/extensions/v1beta1/replicaset_expansion.go b/vendor/k8s.io/client-go/listers/extensions/v1beta1/replicaset_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/flowcontrol/v1alpha1/expansion_generated.go b/vendor/k8s.io/client-go/listers/flowcontrol/v1alpha1/expansion_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/flowcontrol/v1alpha1/flowschema.go b/vendor/k8s.io/client-go/listers/flowcontrol/v1alpha1/flowschema.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/flowcontrol/v1alpha1/prioritylevelconfiguration.go b/vendor/k8s.io/client-go/listers/flowcontrol/v1alpha1/prioritylevelconfiguration.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/flowcontrol/v1beta1/expansion_generated.go b/vendor/k8s.io/client-go/listers/flowcontrol/v1beta1/expansion_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/flowcontrol/v1beta1/flowschema.go b/vendor/k8s.io/client-go/listers/flowcontrol/v1beta1/flowschema.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/flowcontrol/v1beta1/prioritylevelconfiguration.go b/vendor/k8s.io/client-go/listers/flowcontrol/v1beta1/prioritylevelconfiguration.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/networking/v1/expansion_generated.go b/vendor/k8s.io/client-go/listers/networking/v1/expansion_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/networking/v1/ingress.go b/vendor/k8s.io/client-go/listers/networking/v1/ingress.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/networking/v1/ingressclass.go b/vendor/k8s.io/client-go/listers/networking/v1/ingressclass.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/networking/v1/networkpolicy.go b/vendor/k8s.io/client-go/listers/networking/v1/networkpolicy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/networking/v1beta1/expansion_generated.go b/vendor/k8s.io/client-go/listers/networking/v1beta1/expansion_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/networking/v1beta1/ingress.go b/vendor/k8s.io/client-go/listers/networking/v1beta1/ingress.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/networking/v1beta1/ingressclass.go b/vendor/k8s.io/client-go/listers/networking/v1beta1/ingressclass.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/node/v1/expansion_generated.go b/vendor/k8s.io/client-go/listers/node/v1/expansion_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/node/v1/runtimeclass.go b/vendor/k8s.io/client-go/listers/node/v1/runtimeclass.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/node/v1alpha1/expansion_generated.go b/vendor/k8s.io/client-go/listers/node/v1alpha1/expansion_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/node/v1alpha1/runtimeclass.go b/vendor/k8s.io/client-go/listers/node/v1alpha1/runtimeclass.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/node/v1beta1/expansion_generated.go b/vendor/k8s.io/client-go/listers/node/v1beta1/expansion_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/node/v1beta1/runtimeclass.go b/vendor/k8s.io/client-go/listers/node/v1beta1/runtimeclass.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/policy/v1beta1/eviction.go b/vendor/k8s.io/client-go/listers/policy/v1beta1/eviction.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/policy/v1beta1/expansion_generated.go b/vendor/k8s.io/client-go/listers/policy/v1beta1/expansion_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/policy/v1beta1/poddisruptionbudget.go b/vendor/k8s.io/client-go/listers/policy/v1beta1/poddisruptionbudget.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/policy/v1beta1/poddisruptionbudget_expansion.go b/vendor/k8s.io/client-go/listers/policy/v1beta1/poddisruptionbudget_expansion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/policy/v1beta1/podsecuritypolicy.go b/vendor/k8s.io/client-go/listers/policy/v1beta1/podsecuritypolicy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/rbac/v1/clusterrole.go b/vendor/k8s.io/client-go/listers/rbac/v1/clusterrole.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/rbac/v1/clusterrolebinding.go b/vendor/k8s.io/client-go/listers/rbac/v1/clusterrolebinding.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/rbac/v1/expansion_generated.go b/vendor/k8s.io/client-go/listers/rbac/v1/expansion_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/rbac/v1/role.go b/vendor/k8s.io/client-go/listers/rbac/v1/role.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/rbac/v1/rolebinding.go b/vendor/k8s.io/client-go/listers/rbac/v1/rolebinding.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/rbac/v1alpha1/clusterrole.go b/vendor/k8s.io/client-go/listers/rbac/v1alpha1/clusterrole.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/rbac/v1alpha1/clusterrolebinding.go b/vendor/k8s.io/client-go/listers/rbac/v1alpha1/clusterrolebinding.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/rbac/v1alpha1/expansion_generated.go b/vendor/k8s.io/client-go/listers/rbac/v1alpha1/expansion_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/rbac/v1alpha1/role.go b/vendor/k8s.io/client-go/listers/rbac/v1alpha1/role.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/rbac/v1alpha1/rolebinding.go b/vendor/k8s.io/client-go/listers/rbac/v1alpha1/rolebinding.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/rbac/v1beta1/clusterrole.go b/vendor/k8s.io/client-go/listers/rbac/v1beta1/clusterrole.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/rbac/v1beta1/clusterrolebinding.go b/vendor/k8s.io/client-go/listers/rbac/v1beta1/clusterrolebinding.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/rbac/v1beta1/expansion_generated.go b/vendor/k8s.io/client-go/listers/rbac/v1beta1/expansion_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/rbac/v1beta1/role.go b/vendor/k8s.io/client-go/listers/rbac/v1beta1/role.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/rbac/v1beta1/rolebinding.go b/vendor/k8s.io/client-go/listers/rbac/v1beta1/rolebinding.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/scheduling/v1/expansion_generated.go b/vendor/k8s.io/client-go/listers/scheduling/v1/expansion_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/scheduling/v1/priorityclass.go b/vendor/k8s.io/client-go/listers/scheduling/v1/priorityclass.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/scheduling/v1alpha1/expansion_generated.go b/vendor/k8s.io/client-go/listers/scheduling/v1alpha1/expansion_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/scheduling/v1alpha1/priorityclass.go b/vendor/k8s.io/client-go/listers/scheduling/v1alpha1/priorityclass.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/scheduling/v1beta1/expansion_generated.go b/vendor/k8s.io/client-go/listers/scheduling/v1beta1/expansion_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/scheduling/v1beta1/priorityclass.go b/vendor/k8s.io/client-go/listers/scheduling/v1beta1/priorityclass.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/storage/v1/csidriver.go b/vendor/k8s.io/client-go/listers/storage/v1/csidriver.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/storage/v1/csinode.go b/vendor/k8s.io/client-go/listers/storage/v1/csinode.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/storage/v1/expansion_generated.go b/vendor/k8s.io/client-go/listers/storage/v1/expansion_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/storage/v1/storageclass.go b/vendor/k8s.io/client-go/listers/storage/v1/storageclass.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/storage/v1/volumeattachment.go b/vendor/k8s.io/client-go/listers/storage/v1/volumeattachment.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/storage/v1alpha1/csistoragecapacity.go b/vendor/k8s.io/client-go/listers/storage/v1alpha1/csistoragecapacity.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/storage/v1alpha1/expansion_generated.go b/vendor/k8s.io/client-go/listers/storage/v1alpha1/expansion_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/storage/v1alpha1/volumeattachment.go b/vendor/k8s.io/client-go/listers/storage/v1alpha1/volumeattachment.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/storage/v1beta1/csidriver.go b/vendor/k8s.io/client-go/listers/storage/v1beta1/csidriver.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/storage/v1beta1/csinode.go b/vendor/k8s.io/client-go/listers/storage/v1beta1/csinode.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/storage/v1beta1/expansion_generated.go b/vendor/k8s.io/client-go/listers/storage/v1beta1/expansion_generated.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/storage/v1beta1/storageclass.go b/vendor/k8s.io/client-go/listers/storage/v1beta1/storageclass.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/listers/storage/v1beta1/volumeattachment.go b/vendor/k8s.io/client-go/listers/storage/v1beta1/volumeattachment.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/pkg/apis/clientauthentication/OWNERS b/vendor/k8s.io/client-go/pkg/apis/clientauthentication/OWNERS -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/pkg/apis/clientauthentication/doc.go b/vendor/k8s.io/client-go/pkg/apis/clientauthentication/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/pkg/apis/clientauthentication/register.go b/vendor/k8s.io/client-go/pkg/apis/clientauthentication/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/pkg/apis/clientauthentication/types.go b/vendor/k8s.io/client-go/pkg/apis/clientauthentication/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/conversion.go b/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/conversion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/doc.go b/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/register.go b/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/types.go b/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/zz_generated.conversion.go b/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/zz_generated.conversion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/zz_generated.defaults.go b/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/zz_generated.defaults.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1beta1/conversion.go b/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1beta1/conversion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1beta1/doc.go b/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1beta1/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1beta1/register.go b/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1beta1/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1beta1/types.go b/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1beta1/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1beta1/zz_generated.conversion.go b/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1beta1/zz_generated.conversion.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1beta1/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1beta1/zz_generated.defaults.go b/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1beta1/zz_generated.defaults.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/pkg/apis/clientauthentication/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/pkg/apis/clientauthentication/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/pkg/version/.gitattributes b/vendor/k8s.io/client-go/pkg/version/.gitattributes -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/pkg/version/base.go b/vendor/k8s.io/client-go/pkg/version/base.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/pkg/version/def.bzl b/vendor/k8s.io/client-go/pkg/version/def.bzl -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/pkg/version/doc.go b/vendor/k8s.io/client-go/pkg/version/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/pkg/version/version.go b/vendor/k8s.io/client-go/pkg/version/version.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/plugin/pkg/client/auth/exec/exec.go b/vendor/k8s.io/client-go/plugin/pkg/client/auth/exec/exec.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/plugin/pkg/client/auth/exec/metrics.go b/vendor/k8s.io/client-go/plugin/pkg/client/auth/exec/metrics.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/rest/OWNERS b/vendor/k8s.io/client-go/rest/OWNERS -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/rest/client.go b/vendor/k8s.io/client-go/rest/client.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/rest/config.go b/vendor/k8s.io/client-go/rest/config.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/rest/exec.go b/vendor/k8s.io/client-go/rest/exec.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/rest/plugin.go b/vendor/k8s.io/client-go/rest/plugin.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/rest/request.go b/vendor/k8s.io/client-go/rest/request.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/rest/transport.go b/vendor/k8s.io/client-go/rest/transport.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/rest/url_utils.go b/vendor/k8s.io/client-go/rest/url_utils.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/rest/urlbackoff.go b/vendor/k8s.io/client-go/rest/urlbackoff.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/rest/warnings.go b/vendor/k8s.io/client-go/rest/warnings.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/rest/watch/decoder.go b/vendor/k8s.io/client-go/rest/watch/decoder.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/rest/watch/encoder.go b/vendor/k8s.io/client-go/rest/watch/encoder.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/rest/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/rest/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/tools/cache/OWNERS b/vendor/k8s.io/client-go/tools/cache/OWNERS -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/tools/cache/controller.go b/vendor/k8s.io/client-go/tools/cache/controller.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/tools/cache/delta_fifo.go b/vendor/k8s.io/client-go/tools/cache/delta_fifo.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/tools/cache/doc.go b/vendor/k8s.io/client-go/tools/cache/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/tools/cache/expiration_cache.go b/vendor/k8s.io/client-go/tools/cache/expiration_cache.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/tools/cache/expiration_cache_fakes.go b/vendor/k8s.io/client-go/tools/cache/expiration_cache_fakes.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/tools/cache/fake_custom_store.go b/vendor/k8s.io/client-go/tools/cache/fake_custom_store.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/tools/cache/fifo.go b/vendor/k8s.io/client-go/tools/cache/fifo.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/tools/cache/heap.go b/vendor/k8s.io/client-go/tools/cache/heap.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/tools/cache/index.go b/vendor/k8s.io/client-go/tools/cache/index.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/tools/cache/listers.go b/vendor/k8s.io/client-go/tools/cache/listers.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/tools/cache/listwatch.go b/vendor/k8s.io/client-go/tools/cache/listwatch.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/tools/cache/mutation_cache.go b/vendor/k8s.io/client-go/tools/cache/mutation_cache.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/tools/cache/mutation_detector.go b/vendor/k8s.io/client-go/tools/cache/mutation_detector.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/tools/cache/reflector.go b/vendor/k8s.io/client-go/tools/cache/reflector.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/tools/cache/reflector_metrics.go b/vendor/k8s.io/client-go/tools/cache/reflector_metrics.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/tools/cache/shared_informer.go b/vendor/k8s.io/client-go/tools/cache/shared_informer.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/tools/cache/store.go b/vendor/k8s.io/client-go/tools/cache/store.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/tools/cache/thread_safe_store.go b/vendor/k8s.io/client-go/tools/cache/thread_safe_store.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/tools/cache/undelta_store.go b/vendor/k8s.io/client-go/tools/cache/undelta_store.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/tools/clientcmd/api/doc.go b/vendor/k8s.io/client-go/tools/clientcmd/api/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/tools/clientcmd/api/helpers.go b/vendor/k8s.io/client-go/tools/clientcmd/api/helpers.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/tools/clientcmd/api/register.go b/vendor/k8s.io/client-go/tools/clientcmd/api/register.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/tools/clientcmd/api/types.go b/vendor/k8s.io/client-go/tools/clientcmd/api/types.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/tools/clientcmd/api/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/tools/clientcmd/api/zz_generated.deepcopy.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/tools/metrics/OWNERS b/vendor/k8s.io/client-go/tools/metrics/OWNERS -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/tools/metrics/metrics.go b/vendor/k8s.io/client-go/tools/metrics/metrics.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/tools/pager/pager.go b/vendor/k8s.io/client-go/tools/pager/pager.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/tools/reference/ref.go b/vendor/k8s.io/client-go/tools/reference/ref.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/transport/OWNERS b/vendor/k8s.io/client-go/transport/OWNERS -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/transport/cache.go b/vendor/k8s.io/client-go/transport/cache.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/transport/cert_rotation.go b/vendor/k8s.io/client-go/transport/cert_rotation.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/transport/config.go b/vendor/k8s.io/client-go/transport/config.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/transport/round_trippers.go b/vendor/k8s.io/client-go/transport/round_trippers.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/transport/token_source.go b/vendor/k8s.io/client-go/transport/token_source.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/transport/transport.go b/vendor/k8s.io/client-go/transport/transport.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/util/cert/OWNERS b/vendor/k8s.io/client-go/util/cert/OWNERS -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/util/cert/cert.go b/vendor/k8s.io/client-go/util/cert/cert.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/util/cert/csr.go b/vendor/k8s.io/client-go/util/cert/csr.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/util/cert/io.go b/vendor/k8s.io/client-go/util/cert/io.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/util/cert/pem.go b/vendor/k8s.io/client-go/util/cert/pem.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/util/cert/server_inspection.go b/vendor/k8s.io/client-go/util/cert/server_inspection.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/util/connrotation/connrotation.go b/vendor/k8s.io/client-go/util/connrotation/connrotation.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/util/flowcontrol/backoff.go b/vendor/k8s.io/client-go/util/flowcontrol/backoff.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/util/flowcontrol/throttle.go b/vendor/k8s.io/client-go/util/flowcontrol/throttle.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/util/keyutil/OWNERS b/vendor/k8s.io/client-go/util/keyutil/OWNERS -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/util/keyutil/key.go b/vendor/k8s.io/client-go/util/keyutil/key.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/util/workqueue/default_rate_limiters.go b/vendor/k8s.io/client-go/util/workqueue/default_rate_limiters.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/util/workqueue/delaying_queue.go b/vendor/k8s.io/client-go/util/workqueue/delaying_queue.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/util/workqueue/doc.go b/vendor/k8s.io/client-go/util/workqueue/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/util/workqueue/metrics.go b/vendor/k8s.io/client-go/util/workqueue/metrics.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/util/workqueue/parallelizer.go b/vendor/k8s.io/client-go/util/workqueue/parallelizer.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/util/workqueue/queue.go b/vendor/k8s.io/client-go/util/workqueue/queue.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/client-go/util/workqueue/rate_limiting_queue.go b/vendor/k8s.io/client-go/util/workqueue/rate_limiting_queue.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/cri-api/LICENSE b/vendor/k8s.io/cri-api/LICENSE -new file mode 100755 -index 0000000..8dada3e ---- /dev/null -+++ b/vendor/k8s.io/cri-api/LICENSE -@@ -0,0 +1,201 @@ -+ Apache License -+ Version 2.0, January 2004 -+ http://www.apache.org/licenses/ -+ -+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -+ -+ 1. Definitions. -+ -+ "License" shall mean the terms and conditions for use, reproduction, -+ and distribution as defined by Sections 1 through 9 of this document. -+ -+ "Licensor" shall mean the copyright owner or entity authorized by -+ the copyright owner that is granting the License. -+ -+ "Legal Entity" shall mean the union of the acting entity and all -+ other entities that control, are controlled by, or are under common -+ control with that entity. For the purposes of this definition, -+ "control" means (i) the power, direct or indirect, to cause the -+ direction or management of such entity, whether by contract or -+ otherwise, or (ii) ownership of fifty percent (50%) or more of the -+ outstanding shares, or (iii) beneficial ownership of such entity. -+ -+ "You" (or "Your") shall mean an individual or Legal Entity -+ exercising permissions granted by this License. -+ -+ "Source" form shall mean the preferred form for making modifications, -+ including but not limited to software source code, documentation -+ source, and configuration files. -+ -+ "Object" form shall mean any form resulting from mechanical -+ transformation or translation of a Source form, including but -+ not limited to compiled object code, generated documentation, -+ and conversions to other media types. -+ -+ "Work" shall mean the work of authorship, whether in Source or -+ Object form, made available under the License, as indicated by a -+ copyright notice that is included in or attached to the work -+ (an example is provided in the Appendix below). -+ -+ "Derivative Works" shall mean any work, whether in Source or Object -+ form, that is based on (or derived from) the Work and for which the -+ editorial revisions, annotations, elaborations, or other modifications -+ represent, as a whole, an original work of authorship. For the purposes -+ of this License, Derivative Works shall not include works that remain -+ separable from, or merely link (or bind by name) to the interfaces of, -+ the Work and Derivative Works thereof. -+ -+ "Contribution" shall mean any work of authorship, including -+ the original version of the Work and any modifications or additions -+ to that Work or Derivative Works thereof, that is intentionally -+ submitted to Licensor for inclusion in the Work by the copyright owner -+ or by an individual or Legal Entity authorized to submit on behalf of -+ the copyright owner. For the purposes of this definition, "submitted" -+ means any form of electronic, verbal, or written communication sent -+ to the Licensor or its representatives, including but not limited to -+ communication on electronic mailing lists, source code control systems, -+ and issue tracking systems that are managed by, or on behalf of, the -+ Licensor for the purpose of discussing and improving the Work, but -+ excluding communication that is conspicuously marked or otherwise -+ designated in writing by the copyright owner as "Not a Contribution." -+ -+ "Contributor" shall mean Licensor and any individual or Legal Entity -+ on behalf of whom a Contribution has been received by Licensor and -+ subsequently incorporated within the Work. -+ -+ 2. Grant of Copyright License. Subject to the terms and conditions of -+ this License, each Contributor hereby grants to You a perpetual, -+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable -+ copyright license to reproduce, prepare Derivative Works of, -+ publicly display, publicly perform, sublicense, and distribute the -+ Work and such Derivative Works in Source or Object form. -+ -+ 3. Grant of Patent License. Subject to the terms and conditions of -+ this License, each Contributor hereby grants to You a perpetual, -+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable -+ (except as stated in this section) patent license to make, have made, -+ use, offer to sell, sell, import, and otherwise transfer the Work, -+ where such license applies only to those patent claims licensable -+ by such Contributor that are necessarily infringed by their -+ Contribution(s) alone or by combination of their Contribution(s) -+ with the Work to which such Contribution(s) was submitted. If You -+ institute patent litigation against any entity (including a -+ cross-claim or counterclaim in a lawsuit) alleging that the Work -+ or a Contribution incorporated within the Work constitutes direct -+ or contributory patent infringement, then any patent licenses -+ granted to You under this License for that Work shall terminate -+ as of the date such litigation is filed. -+ -+ 4. Redistribution. You may reproduce and distribute copies of the -+ Work or Derivative Works thereof in any medium, with or without -+ modifications, and in Source or Object form, provided that You -+ meet the following conditions: -+ -+ (a) You must give any other recipients of the Work or -+ Derivative Works a copy of this License; and -+ -+ (b) You must cause any modified files to carry prominent notices -+ stating that You changed the files; and -+ -+ (c) You must retain, in the Source form of any Derivative Works -+ that You distribute, all copyright, patent, trademark, and -+ attribution notices from the Source form of the Work, -+ excluding those notices that do not pertain to any part of -+ the Derivative Works; and -+ -+ (d) If the Work includes a "NOTICE" text file as part of its -+ distribution, then any Derivative Works that You distribute must -+ include a readable copy of the attribution notices contained -+ within such NOTICE file, excluding those notices that do not -+ pertain to any part of the Derivative Works, in at least one -+ of the following places: within a NOTICE text file distributed -+ as part of the Derivative Works; within the Source form or -+ documentation, if provided along with the Derivative Works; or, -+ within a display generated by the Derivative Works, if and -+ wherever such third-party notices normally appear. The contents -+ of the NOTICE file are for informational purposes only and -+ do not modify the License. You may add Your own attribution -+ notices within Derivative Works that You distribute, alongside -+ or as an addendum to the NOTICE text from the Work, provided -+ that such additional attribution notices cannot be construed -+ as modifying the License. -+ -+ You may add Your own copyright statement to Your modifications and -+ may provide additional or different license terms and conditions -+ for use, reproduction, or distribution of Your modifications, or -+ for any such Derivative Works as a whole, provided Your use, -+ reproduction, and distribution of the Work otherwise complies with -+ the conditions stated in this License. -+ -+ 5. Submission of Contributions. Unless You explicitly state otherwise, -+ any Contribution intentionally submitted for inclusion in the Work -+ by You to the Licensor shall be under the terms and conditions of -+ this License, without any additional terms or conditions. -+ Notwithstanding the above, nothing herein shall supersede or modify -+ the terms of any separate license agreement you may have executed -+ with Licensor regarding such Contributions. -+ -+ 6. Trademarks. This License does not grant permission to use the trade -+ names, trademarks, service marks, or product names of the Licensor, -+ except as required for reasonable and customary use in describing the -+ origin of the Work and reproducing the content of the NOTICE file. -+ -+ 7. Disclaimer of Warranty. Unless required by applicable law or -+ agreed to in writing, Licensor provides the Work (and each -+ Contributor provides its Contributions) on an "AS IS" BASIS, -+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -+ implied, including, without limitation, any warranties or conditions -+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A -+ PARTICULAR PURPOSE. You are solely responsible for determining the -+ appropriateness of using or redistributing the Work and assume any -+ risks associated with Your exercise of permissions under this License. -+ -+ 8. Limitation of Liability. In no event and under no legal theory, -+ whether in tort (including negligence), contract, or otherwise, -+ unless required by applicable law (such as deliberate and grossly -+ negligent acts) or agreed to in writing, shall any Contributor be -+ liable to You for damages, including any direct, indirect, special, -+ incidental, or consequential damages of any character arising as a -+ result of this License or out of the use or inability to use the -+ Work (including but not limited to damages for loss of goodwill, -+ work stoppage, computer failure or malfunction, or any and all -+ other commercial damages or losses), even if such Contributor -+ has been advised of the possibility of such damages. -+ -+ 9. Accepting Warranty or Additional Liability. While redistributing -+ the Work or Derivative Works thereof, You may choose to offer, -+ and charge a fee for, acceptance of support, warranty, indemnity, -+ or other liability obligations and/or rights consistent with this -+ License. However, in accepting such obligations, You may act only -+ on Your own behalf and on Your sole responsibility, not on behalf -+ of any other Contributor, and only if You agree to indemnify, -+ defend, and hold each Contributor harmless for any liability -+ incurred by, or claims asserted against, such Contributor by reason -+ of your accepting any such warranty or additional liability. -+ -+ END OF TERMS AND CONDITIONS -+ -+ APPENDIX: How to apply the Apache License to your work. -+ -+ To apply the Apache License to your work, attach the following -+ boilerplate notice, with the fields enclosed by brackets "{}" -+ replaced with your own identifying information. (Don't include -+ the brackets!) The text should be enclosed in the appropriate -+ comment syntax for the file format. We also recommend that a -+ file or class name and description of purpose be included on the -+ same "printed page" as the copyright notice for easier -+ identification within third-party archives. -+ -+ Copyright {yyyy} {name of copyright owner} -+ -+ 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. -diff --git a/vendor/k8s.io/cri-api/pkg/apis/runtime/v1/api.pb.go b/vendor/k8s.io/cri-api/pkg/apis/runtime/v1/api.pb.go -new file mode 100755 -index 0000000..ca7f142 ---- /dev/null -+++ b/vendor/k8s.io/cri-api/pkg/apis/runtime/v1/api.pb.go -@@ -0,0 +1,40906 @@ -+/* -+Copyright The Kubernetes 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. -+*/ -+ -+// Code generated by protoc-gen-gogo. DO NOT EDIT. -+// source: api.proto -+ -+package v1 -+ -+import ( -+ context "context" -+ fmt "fmt" -+ _ "github.com/gogo/protobuf/gogoproto" -+ proto "github.com/gogo/protobuf/proto" -+ github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" -+ grpc "google.golang.org/grpc" -+ codes "google.golang.org/grpc/codes" -+ status "google.golang.org/grpc/status" -+ io "io" -+ math "math" -+ math_bits "math/bits" -+ reflect "reflect" -+ strings "strings" -+) -+ -+// 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.GoGoProtoPackageIsVersion3 // please upgrade the proto package -+ -+type Protocol int32 -+ -+const ( -+ Protocol_TCP Protocol = 0 -+ Protocol_UDP Protocol = 1 -+ Protocol_SCTP Protocol = 2 -+) -+ -+var Protocol_name = map[int32]string{ -+ 0: "TCP", -+ 1: "UDP", -+ 2: "SCTP", -+} -+ -+var Protocol_value = map[string]int32{ -+ "TCP": 0, -+ "UDP": 1, -+ "SCTP": 2, -+} -+ -+func (x Protocol) String() string { -+ return proto.EnumName(Protocol_name, int32(x)) -+} -+ -+func (Protocol) EnumDescriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{0} -+} -+ -+type MountPropagation int32 -+ -+const ( -+ // No mount propagation ("private" in Linux terminology). -+ MountPropagation_PROPAGATION_PRIVATE MountPropagation = 0 -+ // Mounts get propagated from the host to the container ("rslave" in Linux). -+ MountPropagation_PROPAGATION_HOST_TO_CONTAINER MountPropagation = 1 -+ // Mounts get propagated from the host to the container and from the -+ // container to the host ("rshared" in Linux). -+ MountPropagation_PROPAGATION_BIDIRECTIONAL MountPropagation = 2 -+) -+ -+var MountPropagation_name = map[int32]string{ -+ 0: "PROPAGATION_PRIVATE", -+ 1: "PROPAGATION_HOST_TO_CONTAINER", -+ 2: "PROPAGATION_BIDIRECTIONAL", -+} -+ -+var MountPropagation_value = map[string]int32{ -+ "PROPAGATION_PRIVATE": 0, -+ "PROPAGATION_HOST_TO_CONTAINER": 1, -+ "PROPAGATION_BIDIRECTIONAL": 2, -+} -+ -+func (x MountPropagation) String() string { -+ return proto.EnumName(MountPropagation_name, int32(x)) -+} -+ -+func (MountPropagation) EnumDescriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{1} -+} -+ -+// A NamespaceMode describes the intended namespace configuration for each -+// of the namespaces (Network, PID, IPC) in NamespaceOption. Runtimes should -+// map these modes as appropriate for the technology underlying the runtime. -+type NamespaceMode int32 -+ -+const ( -+ // A POD namespace is common to all containers in a pod. -+ // For example, a container with a PID namespace of POD expects to view -+ // all of the processes in all of the containers in the pod. -+ NamespaceMode_POD NamespaceMode = 0 -+ // A CONTAINER namespace is restricted to a single container. -+ // For example, a container with a PID namespace of CONTAINER expects to -+ // view only the processes in that container. -+ NamespaceMode_CONTAINER NamespaceMode = 1 -+ // A NODE namespace is the namespace of the Kubernetes node. -+ // For example, a container with a PID namespace of NODE expects to view -+ // all of the processes on the host running the kubelet. -+ NamespaceMode_NODE NamespaceMode = 2 -+ // TARGET targets the namespace of another container. When this is specified, -+ // a target_id must be specified in NamespaceOption and refer to a container -+ // previously created with NamespaceMode CONTAINER. This containers namespace -+ // will be made to match that of container target_id. -+ // For example, a container with a PID namespace of TARGET expects to view -+ // all of the processes that container target_id can view. -+ NamespaceMode_TARGET NamespaceMode = 3 -+) -+ -+var NamespaceMode_name = map[int32]string{ -+ 0: "POD", -+ 1: "CONTAINER", -+ 2: "NODE", -+ 3: "TARGET", -+} -+ -+var NamespaceMode_value = map[string]int32{ -+ "POD": 0, -+ "CONTAINER": 1, -+ "NODE": 2, -+ "TARGET": 3, -+} -+ -+func (x NamespaceMode) String() string { -+ return proto.EnumName(NamespaceMode_name, int32(x)) -+} -+ -+func (NamespaceMode) EnumDescriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{2} -+} -+ -+type PodSandboxState int32 -+ -+const ( -+ PodSandboxState_SANDBOX_READY PodSandboxState = 0 -+ PodSandboxState_SANDBOX_NOTREADY PodSandboxState = 1 -+) -+ -+var PodSandboxState_name = map[int32]string{ -+ 0: "SANDBOX_READY", -+ 1: "SANDBOX_NOTREADY", -+} -+ -+var PodSandboxState_value = map[string]int32{ -+ "SANDBOX_READY": 0, -+ "SANDBOX_NOTREADY": 1, -+} -+ -+func (x PodSandboxState) String() string { -+ return proto.EnumName(PodSandboxState_name, int32(x)) -+} -+ -+func (PodSandboxState) EnumDescriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{3} -+} -+ -+type ContainerState int32 -+ -+const ( -+ ContainerState_CONTAINER_CREATED ContainerState = 0 -+ ContainerState_CONTAINER_RUNNING ContainerState = 1 -+ ContainerState_CONTAINER_EXITED ContainerState = 2 -+ ContainerState_CONTAINER_UNKNOWN ContainerState = 3 -+) -+ -+var ContainerState_name = map[int32]string{ -+ 0: "CONTAINER_CREATED", -+ 1: "CONTAINER_RUNNING", -+ 2: "CONTAINER_EXITED", -+ 3: "CONTAINER_UNKNOWN", -+} -+ -+var ContainerState_value = map[string]int32{ -+ "CONTAINER_CREATED": 0, -+ "CONTAINER_RUNNING": 1, -+ "CONTAINER_EXITED": 2, -+ "CONTAINER_UNKNOWN": 3, -+} -+ -+func (x ContainerState) String() string { -+ return proto.EnumName(ContainerState_name, int32(x)) -+} -+ -+func (ContainerState) EnumDescriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{4} -+} -+ -+type ContainerEventType int32 -+ -+const ( -+ // Container created -+ ContainerEventType_CONTAINER_CREATED_EVENT ContainerEventType = 0 -+ // Container started -+ ContainerEventType_CONTAINER_STARTED_EVENT ContainerEventType = 1 -+ // Container stopped -+ ContainerEventType_CONTAINER_STOPPED_EVENT ContainerEventType = 2 -+ // Container deleted -+ ContainerEventType_CONTAINER_DELETED_EVENT ContainerEventType = 3 -+) -+ -+var ContainerEventType_name = map[int32]string{ -+ 0: "CONTAINER_CREATED_EVENT", -+ 1: "CONTAINER_STARTED_EVENT", -+ 2: "CONTAINER_STOPPED_EVENT", -+ 3: "CONTAINER_DELETED_EVENT", -+} -+ -+var ContainerEventType_value = map[string]int32{ -+ "CONTAINER_CREATED_EVENT": 0, -+ "CONTAINER_STARTED_EVENT": 1, -+ "CONTAINER_STOPPED_EVENT": 2, -+ "CONTAINER_DELETED_EVENT": 3, -+} -+ -+func (x ContainerEventType) String() string { -+ return proto.EnumName(ContainerEventType_name, int32(x)) -+} -+ -+func (ContainerEventType) EnumDescriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{5} -+} -+ -+// Available profile types. -+type SecurityProfile_ProfileType int32 -+ -+const ( -+ // The container runtime default profile should be used. -+ SecurityProfile_RuntimeDefault SecurityProfile_ProfileType = 0 -+ // Disable the feature for the sandbox or the container. -+ SecurityProfile_Unconfined SecurityProfile_ProfileType = 1 -+ // A pre-defined profile on the node should be used. -+ SecurityProfile_Localhost SecurityProfile_ProfileType = 2 -+) -+ -+var SecurityProfile_ProfileType_name = map[int32]string{ -+ 0: "RuntimeDefault", -+ 1: "Unconfined", -+ 2: "Localhost", -+} -+ -+var SecurityProfile_ProfileType_value = map[string]int32{ -+ "RuntimeDefault": 0, -+ "Unconfined": 1, -+ "Localhost": 2, -+} -+ -+func (x SecurityProfile_ProfileType) String() string { -+ return proto.EnumName(SecurityProfile_ProfileType_name, int32(x)) -+} -+ -+func (SecurityProfile_ProfileType) EnumDescriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{10, 0} -+} -+ -+type VersionRequest struct { -+ // Version of the kubelet runtime API. -+ Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *VersionRequest) Reset() { *m = VersionRequest{} } -+func (*VersionRequest) ProtoMessage() {} -+func (*VersionRequest) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{0} -+} -+func (m *VersionRequest) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *VersionRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_VersionRequest.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *VersionRequest) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_VersionRequest.Merge(m, src) -+} -+func (m *VersionRequest) XXX_Size() int { -+ return m.Size() -+} -+func (m *VersionRequest) XXX_DiscardUnknown() { -+ xxx_messageInfo_VersionRequest.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_VersionRequest proto.InternalMessageInfo -+ -+func (m *VersionRequest) GetVersion() string { -+ if m != nil { -+ return m.Version -+ } -+ return "" -+} -+ -+type VersionResponse struct { -+ // Version of the kubelet runtime API. -+ Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` -+ // Name of the container runtime. -+ RuntimeName string `protobuf:"bytes,2,opt,name=runtime_name,json=runtimeName,proto3" json:"runtime_name,omitempty"` -+ // Version of the container runtime. The string must be -+ // semver-compatible. -+ RuntimeVersion string `protobuf:"bytes,3,opt,name=runtime_version,json=runtimeVersion,proto3" json:"runtime_version,omitempty"` -+ // API version of the container runtime. The string must be -+ // semver-compatible. -+ RuntimeApiVersion string `protobuf:"bytes,4,opt,name=runtime_api_version,json=runtimeApiVersion,proto3" json:"runtime_api_version,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *VersionResponse) Reset() { *m = VersionResponse{} } -+func (*VersionResponse) ProtoMessage() {} -+func (*VersionResponse) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{1} -+} -+func (m *VersionResponse) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *VersionResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_VersionResponse.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *VersionResponse) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_VersionResponse.Merge(m, src) -+} -+func (m *VersionResponse) XXX_Size() int { -+ return m.Size() -+} -+func (m *VersionResponse) XXX_DiscardUnknown() { -+ xxx_messageInfo_VersionResponse.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_VersionResponse proto.InternalMessageInfo -+ -+func (m *VersionResponse) GetVersion() string { -+ if m != nil { -+ return m.Version -+ } -+ return "" -+} -+ -+func (m *VersionResponse) GetRuntimeName() string { -+ if m != nil { -+ return m.RuntimeName -+ } -+ return "" -+} -+ -+func (m *VersionResponse) GetRuntimeVersion() string { -+ if m != nil { -+ return m.RuntimeVersion -+ } -+ return "" -+} -+ -+func (m *VersionResponse) GetRuntimeApiVersion() string { -+ if m != nil { -+ return m.RuntimeApiVersion -+ } -+ return "" -+} -+ -+// DNSConfig specifies the DNS servers and search domains of a sandbox. -+type DNSConfig struct { -+ // List of DNS servers of the cluster. -+ Servers []string `protobuf:"bytes,1,rep,name=servers,proto3" json:"servers,omitempty"` -+ // List of DNS search domains of the cluster. -+ Searches []string `protobuf:"bytes,2,rep,name=searches,proto3" json:"searches,omitempty"` -+ // List of DNS options. See https://linux.die.net/man/5/resolv.conf -+ // for all available options. -+ Options []string `protobuf:"bytes,3,rep,name=options,proto3" json:"options,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *DNSConfig) Reset() { *m = DNSConfig{} } -+func (*DNSConfig) ProtoMessage() {} -+func (*DNSConfig) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{2} -+} -+func (m *DNSConfig) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *DNSConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_DNSConfig.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *DNSConfig) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_DNSConfig.Merge(m, src) -+} -+func (m *DNSConfig) XXX_Size() int { -+ return m.Size() -+} -+func (m *DNSConfig) XXX_DiscardUnknown() { -+ xxx_messageInfo_DNSConfig.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_DNSConfig proto.InternalMessageInfo -+ -+func (m *DNSConfig) GetServers() []string { -+ if m != nil { -+ return m.Servers -+ } -+ return nil -+} -+ -+func (m *DNSConfig) GetSearches() []string { -+ if m != nil { -+ return m.Searches -+ } -+ return nil -+} -+ -+func (m *DNSConfig) GetOptions() []string { -+ if m != nil { -+ return m.Options -+ } -+ return nil -+} -+ -+// PortMapping specifies the port mapping configurations of a sandbox. -+type PortMapping struct { -+ // Protocol of the port mapping. -+ Protocol Protocol `protobuf:"varint,1,opt,name=protocol,proto3,enum=runtime.v1.Protocol" json:"protocol,omitempty"` -+ // Port number within the container. Default: 0 (not specified). -+ ContainerPort int32 `protobuf:"varint,2,opt,name=container_port,json=containerPort,proto3" json:"container_port,omitempty"` -+ // Port number on the host. Default: 0 (not specified). -+ HostPort int32 `protobuf:"varint,3,opt,name=host_port,json=hostPort,proto3" json:"host_port,omitempty"` -+ // Host IP. -+ HostIp string `protobuf:"bytes,4,opt,name=host_ip,json=hostIp,proto3" json:"host_ip,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *PortMapping) Reset() { *m = PortMapping{} } -+func (*PortMapping) ProtoMessage() {} -+func (*PortMapping) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{3} -+} -+func (m *PortMapping) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *PortMapping) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_PortMapping.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *PortMapping) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_PortMapping.Merge(m, src) -+} -+func (m *PortMapping) XXX_Size() int { -+ return m.Size() -+} -+func (m *PortMapping) XXX_DiscardUnknown() { -+ xxx_messageInfo_PortMapping.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_PortMapping proto.InternalMessageInfo -+ -+func (m *PortMapping) GetProtocol() Protocol { -+ if m != nil { -+ return m.Protocol -+ } -+ return Protocol_TCP -+} -+ -+func (m *PortMapping) GetContainerPort() int32 { -+ if m != nil { -+ return m.ContainerPort -+ } -+ return 0 -+} -+ -+func (m *PortMapping) GetHostPort() int32 { -+ if m != nil { -+ return m.HostPort -+ } -+ return 0 -+} -+ -+func (m *PortMapping) GetHostIp() string { -+ if m != nil { -+ return m.HostIp -+ } -+ return "" -+} -+ -+// Mount specifies a host volume to mount into a container. -+type Mount struct { -+ // Path of the mount within the container. -+ ContainerPath string `protobuf:"bytes,1,opt,name=container_path,json=containerPath,proto3" json:"container_path,omitempty"` -+ // Path of the mount on the host. If the hostPath doesn't exist, then runtimes -+ // should report error. If the hostpath is a symbolic link, runtimes should -+ // follow the symlink and mount the real destination to container. -+ HostPath string `protobuf:"bytes,2,opt,name=host_path,json=hostPath,proto3" json:"host_path,omitempty"` -+ // If set, the mount is read-only. -+ Readonly bool `protobuf:"varint,3,opt,name=readonly,proto3" json:"readonly,omitempty"` -+ // If set, the mount needs SELinux relabeling. -+ SelinuxRelabel bool `protobuf:"varint,4,opt,name=selinux_relabel,json=selinuxRelabel,proto3" json:"selinux_relabel,omitempty"` -+ // Requested propagation mode. -+ Propagation MountPropagation `protobuf:"varint,5,opt,name=propagation,proto3,enum=runtime.v1.MountPropagation" json:"propagation,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *Mount) Reset() { *m = Mount{} } -+func (*Mount) ProtoMessage() {} -+func (*Mount) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{4} -+} -+func (m *Mount) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *Mount) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_Mount.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *Mount) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_Mount.Merge(m, src) -+} -+func (m *Mount) XXX_Size() int { -+ return m.Size() -+} -+func (m *Mount) XXX_DiscardUnknown() { -+ xxx_messageInfo_Mount.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_Mount proto.InternalMessageInfo -+ -+func (m *Mount) GetContainerPath() string { -+ if m != nil { -+ return m.ContainerPath -+ } -+ return "" -+} -+ -+func (m *Mount) GetHostPath() string { -+ if m != nil { -+ return m.HostPath -+ } -+ return "" -+} -+ -+func (m *Mount) GetReadonly() bool { -+ if m != nil { -+ return m.Readonly -+ } -+ return false -+} -+ -+func (m *Mount) GetSelinuxRelabel() bool { -+ if m != nil { -+ return m.SelinuxRelabel -+ } -+ return false -+} -+ -+func (m *Mount) GetPropagation() MountPropagation { -+ if m != nil { -+ return m.Propagation -+ } -+ return MountPropagation_PROPAGATION_PRIVATE -+} -+ -+// IDMapping describes host to container ID mappings for a pod sandbox. -+type IDMapping struct { -+ // HostId is the id on the host. -+ HostId uint32 `protobuf:"varint,1,opt,name=host_id,json=hostId,proto3" json:"host_id,omitempty"` -+ // ContainerId is the id in the container. -+ ContainerId uint32 `protobuf:"varint,2,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` -+ // Length is the size of the range to map. -+ Length uint32 `protobuf:"varint,3,opt,name=length,proto3" json:"length,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *IDMapping) Reset() { *m = IDMapping{} } -+func (*IDMapping) ProtoMessage() {} -+func (*IDMapping) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{5} -+} -+func (m *IDMapping) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *IDMapping) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_IDMapping.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *IDMapping) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_IDMapping.Merge(m, src) -+} -+func (m *IDMapping) XXX_Size() int { -+ return m.Size() -+} -+func (m *IDMapping) XXX_DiscardUnknown() { -+ xxx_messageInfo_IDMapping.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_IDMapping proto.InternalMessageInfo -+ -+func (m *IDMapping) GetHostId() uint32 { -+ if m != nil { -+ return m.HostId -+ } -+ return 0 -+} -+ -+func (m *IDMapping) GetContainerId() uint32 { -+ if m != nil { -+ return m.ContainerId -+ } -+ return 0 -+} -+ -+func (m *IDMapping) GetLength() uint32 { -+ if m != nil { -+ return m.Length -+ } -+ return 0 -+} -+ -+// UserNamespace describes the intended user namespace configuration for a pod sandbox. -+type UserNamespace struct { -+ // Mode is the NamespaceMode for this UserNamespace. -+ // Note: NamespaceMode for UserNamespace currently supports only POD and NODE, not CONTAINER OR TARGET. -+ Mode NamespaceMode `protobuf:"varint,1,opt,name=mode,proto3,enum=runtime.v1.NamespaceMode" json:"mode,omitempty"` -+ // Uids specifies the UID mappings for the user namespace. -+ Uids []*IDMapping `protobuf:"bytes,2,rep,name=uids,proto3" json:"uids,omitempty"` -+ // Gids specifies the GID mappings for the user namespace. -+ Gids []*IDMapping `protobuf:"bytes,3,rep,name=gids,proto3" json:"gids,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *UserNamespace) Reset() { *m = UserNamespace{} } -+func (*UserNamespace) ProtoMessage() {} -+func (*UserNamespace) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{6} -+} -+func (m *UserNamespace) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *UserNamespace) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_UserNamespace.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *UserNamespace) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_UserNamespace.Merge(m, src) -+} -+func (m *UserNamespace) XXX_Size() int { -+ return m.Size() -+} -+func (m *UserNamespace) XXX_DiscardUnknown() { -+ xxx_messageInfo_UserNamespace.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_UserNamespace proto.InternalMessageInfo -+ -+func (m *UserNamespace) GetMode() NamespaceMode { -+ if m != nil { -+ return m.Mode -+ } -+ return NamespaceMode_POD -+} -+ -+func (m *UserNamespace) GetUids() []*IDMapping { -+ if m != nil { -+ return m.Uids -+ } -+ return nil -+} -+ -+func (m *UserNamespace) GetGids() []*IDMapping { -+ if m != nil { -+ return m.Gids -+ } -+ return nil -+} -+ -+// NamespaceOption provides options for Linux namespaces. -+type NamespaceOption struct { -+ // Network namespace for this container/sandbox. -+ // Note: There is currently no way to set CONTAINER scoped network in the Kubernetes API. -+ // Namespaces currently set by the kubelet: POD, NODE -+ Network NamespaceMode `protobuf:"varint,1,opt,name=network,proto3,enum=runtime.v1.NamespaceMode" json:"network,omitempty"` -+ // PID namespace for this container/sandbox. -+ // Note: The CRI default is POD, but the v1.PodSpec default is CONTAINER. -+ // The kubelet's runtime manager will set this to CONTAINER explicitly for v1 pods. -+ // Namespaces currently set by the kubelet: POD, CONTAINER, NODE, TARGET -+ Pid NamespaceMode `protobuf:"varint,2,opt,name=pid,proto3,enum=runtime.v1.NamespaceMode" json:"pid,omitempty"` -+ // IPC namespace for this container/sandbox. -+ // Note: There is currently no way to set CONTAINER scoped IPC in the Kubernetes API. -+ // Namespaces currently set by the kubelet: POD, NODE -+ Ipc NamespaceMode `protobuf:"varint,3,opt,name=ipc,proto3,enum=runtime.v1.NamespaceMode" json:"ipc,omitempty"` -+ // Target Container ID for NamespaceMode of TARGET. This container must have been -+ // previously created in the same pod. It is not possible to specify different targets -+ // for each namespace. -+ TargetId string `protobuf:"bytes,4,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"` -+ // UsernsOptions for this pod sandbox. -+ // The Kubelet picks the user namespace configuration to use for the pod sandbox. The mappings -+ // are specified as part of the UserNamespace struct. If the struct is nil, then the POD mode -+ // must be assumed. This is done for backward compatibility with older Kubelet versions that -+ // do not set a user namespace. -+ UsernsOptions *UserNamespace `protobuf:"bytes,5,opt,name=userns_options,json=usernsOptions,proto3" json:"userns_options,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *NamespaceOption) Reset() { *m = NamespaceOption{} } -+func (*NamespaceOption) ProtoMessage() {} -+func (*NamespaceOption) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{7} -+} -+func (m *NamespaceOption) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *NamespaceOption) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_NamespaceOption.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *NamespaceOption) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_NamespaceOption.Merge(m, src) -+} -+func (m *NamespaceOption) XXX_Size() int { -+ return m.Size() -+} -+func (m *NamespaceOption) XXX_DiscardUnknown() { -+ xxx_messageInfo_NamespaceOption.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_NamespaceOption proto.InternalMessageInfo -+ -+func (m *NamespaceOption) GetNetwork() NamespaceMode { -+ if m != nil { -+ return m.Network -+ } -+ return NamespaceMode_POD -+} -+ -+func (m *NamespaceOption) GetPid() NamespaceMode { -+ if m != nil { -+ return m.Pid -+ } -+ return NamespaceMode_POD -+} -+ -+func (m *NamespaceOption) GetIpc() NamespaceMode { -+ if m != nil { -+ return m.Ipc -+ } -+ return NamespaceMode_POD -+} -+ -+func (m *NamespaceOption) GetTargetId() string { -+ if m != nil { -+ return m.TargetId -+ } -+ return "" -+} -+ -+func (m *NamespaceOption) GetUsernsOptions() *UserNamespace { -+ if m != nil { -+ return m.UsernsOptions -+ } -+ return nil -+} -+ -+// Int64Value is the wrapper of int64. -+type Int64Value struct { -+ // The value. -+ Value int64 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *Int64Value) Reset() { *m = Int64Value{} } -+func (*Int64Value) ProtoMessage() {} -+func (*Int64Value) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{8} -+} -+func (m *Int64Value) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *Int64Value) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_Int64Value.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *Int64Value) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_Int64Value.Merge(m, src) -+} -+func (m *Int64Value) XXX_Size() int { -+ return m.Size() -+} -+func (m *Int64Value) XXX_DiscardUnknown() { -+ xxx_messageInfo_Int64Value.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_Int64Value proto.InternalMessageInfo -+ -+func (m *Int64Value) GetValue() int64 { -+ if m != nil { -+ return m.Value -+ } -+ return 0 -+} -+ -+// LinuxSandboxSecurityContext holds linux security configuration that will be -+// applied to a sandbox. Note that: -+// 1. It does not apply to containers in the pods. -+// 2. It may not be applicable to a PodSandbox which does not contain any running -+// process. -+type LinuxSandboxSecurityContext struct { -+ // Configurations for the sandbox's namespaces. -+ // This will be used only if the PodSandbox uses namespace for isolation. -+ NamespaceOptions *NamespaceOption `protobuf:"bytes,1,opt,name=namespace_options,json=namespaceOptions,proto3" json:"namespace_options,omitempty"` -+ // Optional SELinux context to be applied. -+ SelinuxOptions *SELinuxOption `protobuf:"bytes,2,opt,name=selinux_options,json=selinuxOptions,proto3" json:"selinux_options,omitempty"` -+ // UID to run sandbox processes as, when applicable. -+ RunAsUser *Int64Value `protobuf:"bytes,3,opt,name=run_as_user,json=runAsUser,proto3" json:"run_as_user,omitempty"` -+ // GID to run sandbox processes as, when applicable. run_as_group should only -+ // be specified when run_as_user is specified; otherwise, the runtime MUST error. -+ RunAsGroup *Int64Value `protobuf:"bytes,8,opt,name=run_as_group,json=runAsGroup,proto3" json:"run_as_group,omitempty"` -+ // If set, the root filesystem of the sandbox is read-only. -+ ReadonlyRootfs bool `protobuf:"varint,4,opt,name=readonly_rootfs,json=readonlyRootfs,proto3" json:"readonly_rootfs,omitempty"` -+ // List of groups applied to the first process run in the sandbox, in -+ // addition to the sandbox's primary GID. -+ SupplementalGroups []int64 `protobuf:"varint,5,rep,packed,name=supplemental_groups,json=supplementalGroups,proto3" json:"supplemental_groups,omitempty"` -+ // Indicates whether the sandbox will be asked to run a privileged -+ // container. If a privileged container is to be executed within it, this -+ // MUST be true. -+ // This allows a sandbox to take additional security precautions if no -+ // privileged containers are expected to be run. -+ Privileged bool `protobuf:"varint,6,opt,name=privileged,proto3" json:"privileged,omitempty"` -+ // Seccomp profile for the sandbox. -+ Seccomp *SecurityProfile `protobuf:"bytes,9,opt,name=seccomp,proto3" json:"seccomp,omitempty"` -+ // AppArmor profile for the sandbox. -+ Apparmor *SecurityProfile `protobuf:"bytes,10,opt,name=apparmor,proto3" json:"apparmor,omitempty"` -+ // Seccomp profile for the sandbox, candidate values are: -+ // - runtime/default: the default profile for the container runtime -+ // - unconfined: unconfined profile, ie, no seccomp sandboxing -+ // - localhost/: the profile installed on the node. -+ // is the full path of the profile. -+ // -+ // Default: "", which is identical with unconfined. -+ SeccompProfilePath string `protobuf:"bytes,7,opt,name=seccomp_profile_path,json=seccompProfilePath,proto3" json:"seccomp_profile_path,omitempty"` // Deprecated: Do not use. -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *LinuxSandboxSecurityContext) Reset() { *m = LinuxSandboxSecurityContext{} } -+func (*LinuxSandboxSecurityContext) ProtoMessage() {} -+func (*LinuxSandboxSecurityContext) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{9} -+} -+func (m *LinuxSandboxSecurityContext) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *LinuxSandboxSecurityContext) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_LinuxSandboxSecurityContext.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *LinuxSandboxSecurityContext) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_LinuxSandboxSecurityContext.Merge(m, src) -+} -+func (m *LinuxSandboxSecurityContext) XXX_Size() int { -+ return m.Size() -+} -+func (m *LinuxSandboxSecurityContext) XXX_DiscardUnknown() { -+ xxx_messageInfo_LinuxSandboxSecurityContext.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_LinuxSandboxSecurityContext proto.InternalMessageInfo -+ -+func (m *LinuxSandboxSecurityContext) GetNamespaceOptions() *NamespaceOption { -+ if m != nil { -+ return m.NamespaceOptions -+ } -+ return nil -+} -+ -+func (m *LinuxSandboxSecurityContext) GetSelinuxOptions() *SELinuxOption { -+ if m != nil { -+ return m.SelinuxOptions -+ } -+ return nil -+} -+ -+func (m *LinuxSandboxSecurityContext) GetRunAsUser() *Int64Value { -+ if m != nil { -+ return m.RunAsUser -+ } -+ return nil -+} -+ -+func (m *LinuxSandboxSecurityContext) GetRunAsGroup() *Int64Value { -+ if m != nil { -+ return m.RunAsGroup -+ } -+ return nil -+} -+ -+func (m *LinuxSandboxSecurityContext) GetReadonlyRootfs() bool { -+ if m != nil { -+ return m.ReadonlyRootfs -+ } -+ return false -+} -+ -+func (m *LinuxSandboxSecurityContext) GetSupplementalGroups() []int64 { -+ if m != nil { -+ return m.SupplementalGroups -+ } -+ return nil -+} -+ -+func (m *LinuxSandboxSecurityContext) GetPrivileged() bool { -+ if m != nil { -+ return m.Privileged -+ } -+ return false -+} -+ -+func (m *LinuxSandboxSecurityContext) GetSeccomp() *SecurityProfile { -+ if m != nil { -+ return m.Seccomp -+ } -+ return nil -+} -+ -+func (m *LinuxSandboxSecurityContext) GetApparmor() *SecurityProfile { -+ if m != nil { -+ return m.Apparmor -+ } -+ return nil -+} -+ -+// Deprecated: Do not use. -+func (m *LinuxSandboxSecurityContext) GetSeccompProfilePath() string { -+ if m != nil { -+ return m.SeccompProfilePath -+ } -+ return "" -+} -+ -+// A security profile which can be used for sandboxes and containers. -+type SecurityProfile struct { -+ // Indicator which `ProfileType` should be applied. -+ ProfileType SecurityProfile_ProfileType `protobuf:"varint,1,opt,name=profile_type,json=profileType,proto3,enum=runtime.v1.SecurityProfile_ProfileType" json:"profile_type,omitempty"` -+ // Indicates that a pre-defined profile on the node should be used. -+ // Must only be set if `ProfileType` is `Localhost`. -+ // For seccomp, it must be an absolute path to the seccomp profile. -+ // For AppArmor, this field is the AppArmor `/` -+ LocalhostRef string `protobuf:"bytes,2,opt,name=localhost_ref,json=localhostRef,proto3" json:"localhost_ref,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *SecurityProfile) Reset() { *m = SecurityProfile{} } -+func (*SecurityProfile) ProtoMessage() {} -+func (*SecurityProfile) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{10} -+} -+func (m *SecurityProfile) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *SecurityProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_SecurityProfile.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *SecurityProfile) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_SecurityProfile.Merge(m, src) -+} -+func (m *SecurityProfile) XXX_Size() int { -+ return m.Size() -+} -+func (m *SecurityProfile) XXX_DiscardUnknown() { -+ xxx_messageInfo_SecurityProfile.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_SecurityProfile proto.InternalMessageInfo -+ -+func (m *SecurityProfile) GetProfileType() SecurityProfile_ProfileType { -+ if m != nil { -+ return m.ProfileType -+ } -+ return SecurityProfile_RuntimeDefault -+} -+ -+func (m *SecurityProfile) GetLocalhostRef() string { -+ if m != nil { -+ return m.LocalhostRef -+ } -+ return "" -+} -+ -+// LinuxPodSandboxConfig holds platform-specific configurations for Linux -+// host platforms and Linux-based containers. -+type LinuxPodSandboxConfig struct { -+ // Parent cgroup of the PodSandbox. -+ // The cgroupfs style syntax will be used, but the container runtime can -+ // convert it to systemd semantics if needed. -+ CgroupParent string `protobuf:"bytes,1,opt,name=cgroup_parent,json=cgroupParent,proto3" json:"cgroup_parent,omitempty"` -+ // LinuxSandboxSecurityContext holds sandbox security attributes. -+ SecurityContext *LinuxSandboxSecurityContext `protobuf:"bytes,2,opt,name=security_context,json=securityContext,proto3" json:"security_context,omitempty"` -+ // Sysctls holds linux sysctls config for the sandbox. -+ Sysctls map[string]string `protobuf:"bytes,3,rep,name=sysctls,proto3" json:"sysctls,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -+ // Optional overhead represents the overheads associated with this sandbox -+ Overhead *LinuxContainerResources `protobuf:"bytes,4,opt,name=overhead,proto3" json:"overhead,omitempty"` -+ // Optional resources represents the sum of container resources for this sandbox -+ Resources *LinuxContainerResources `protobuf:"bytes,5,opt,name=resources,proto3" json:"resources,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *LinuxPodSandboxConfig) Reset() { *m = LinuxPodSandboxConfig{} } -+func (*LinuxPodSandboxConfig) ProtoMessage() {} -+func (*LinuxPodSandboxConfig) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{11} -+} -+func (m *LinuxPodSandboxConfig) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *LinuxPodSandboxConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_LinuxPodSandboxConfig.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *LinuxPodSandboxConfig) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_LinuxPodSandboxConfig.Merge(m, src) -+} -+func (m *LinuxPodSandboxConfig) XXX_Size() int { -+ return m.Size() -+} -+func (m *LinuxPodSandboxConfig) XXX_DiscardUnknown() { -+ xxx_messageInfo_LinuxPodSandboxConfig.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_LinuxPodSandboxConfig proto.InternalMessageInfo -+ -+func (m *LinuxPodSandboxConfig) GetCgroupParent() string { -+ if m != nil { -+ return m.CgroupParent -+ } -+ return "" -+} -+ -+func (m *LinuxPodSandboxConfig) GetSecurityContext() *LinuxSandboxSecurityContext { -+ if m != nil { -+ return m.SecurityContext -+ } -+ return nil -+} -+ -+func (m *LinuxPodSandboxConfig) GetSysctls() map[string]string { -+ if m != nil { -+ return m.Sysctls -+ } -+ return nil -+} -+ -+func (m *LinuxPodSandboxConfig) GetOverhead() *LinuxContainerResources { -+ if m != nil { -+ return m.Overhead -+ } -+ return nil -+} -+ -+func (m *LinuxPodSandboxConfig) GetResources() *LinuxContainerResources { -+ if m != nil { -+ return m.Resources -+ } -+ return nil -+} -+ -+// PodSandboxMetadata holds all necessary information for building the sandbox name. -+// The container runtime is encouraged to expose the metadata associated with the -+// PodSandbox in its user interface for better user experience. For example, -+// the runtime can construct a unique PodSandboxName based on the metadata. -+type PodSandboxMetadata struct { -+ // Pod name of the sandbox. Same as the pod name in the Pod ObjectMeta. -+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` -+ // Pod UID of the sandbox. Same as the pod UID in the Pod ObjectMeta. -+ Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid,omitempty"` -+ // Pod namespace of the sandbox. Same as the pod namespace in the Pod ObjectMeta. -+ Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` -+ // Attempt number of creating the sandbox. Default: 0. -+ Attempt uint32 `protobuf:"varint,4,opt,name=attempt,proto3" json:"attempt,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *PodSandboxMetadata) Reset() { *m = PodSandboxMetadata{} } -+func (*PodSandboxMetadata) ProtoMessage() {} -+func (*PodSandboxMetadata) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{12} -+} -+func (m *PodSandboxMetadata) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *PodSandboxMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_PodSandboxMetadata.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *PodSandboxMetadata) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_PodSandboxMetadata.Merge(m, src) -+} -+func (m *PodSandboxMetadata) XXX_Size() int { -+ return m.Size() -+} -+func (m *PodSandboxMetadata) XXX_DiscardUnknown() { -+ xxx_messageInfo_PodSandboxMetadata.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_PodSandboxMetadata proto.InternalMessageInfo -+ -+func (m *PodSandboxMetadata) GetName() string { -+ if m != nil { -+ return m.Name -+ } -+ return "" -+} -+ -+func (m *PodSandboxMetadata) GetUid() string { -+ if m != nil { -+ return m.Uid -+ } -+ return "" -+} -+ -+func (m *PodSandboxMetadata) GetNamespace() string { -+ if m != nil { -+ return m.Namespace -+ } -+ return "" -+} -+ -+func (m *PodSandboxMetadata) GetAttempt() uint32 { -+ if m != nil { -+ return m.Attempt -+ } -+ return 0 -+} -+ -+// PodSandboxConfig holds all the required and optional fields for creating a -+// sandbox. -+type PodSandboxConfig struct { -+ // Metadata of the sandbox. This information will uniquely identify the -+ // sandbox, and the runtime should leverage this to ensure correct -+ // operation. The runtime may also use this information to improve UX, such -+ // as by constructing a readable name. -+ Metadata *PodSandboxMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` -+ // Hostname of the sandbox. Hostname could only be empty when the pod -+ // network namespace is NODE. -+ Hostname string `protobuf:"bytes,2,opt,name=hostname,proto3" json:"hostname,omitempty"` -+ // Path to the directory on the host in which container log files are -+ // stored. -+ // By default the log of a container going into the LogDirectory will be -+ // hooked up to STDOUT and STDERR. However, the LogDirectory may contain -+ // binary log files with structured logging data from the individual -+ // containers. For example, the files might be newline separated JSON -+ // structured logs, systemd-journald journal files, gRPC trace files, etc. -+ // E.g., -+ // -+ // PodSandboxConfig.LogDirectory = `/var/log/pods//` -+ // ContainerConfig.LogPath = `containerName/Instance#.log` -+ LogDirectory string `protobuf:"bytes,3,opt,name=log_directory,json=logDirectory,proto3" json:"log_directory,omitempty"` -+ // DNS config for the sandbox. -+ DnsConfig *DNSConfig `protobuf:"bytes,4,opt,name=dns_config,json=dnsConfig,proto3" json:"dns_config,omitempty"` -+ // Port mappings for the sandbox. -+ PortMappings []*PortMapping `protobuf:"bytes,5,rep,name=port_mappings,json=portMappings,proto3" json:"port_mappings,omitempty"` -+ // Key-value pairs that may be used to scope and select individual resources. -+ Labels map[string]string `protobuf:"bytes,6,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -+ // Unstructured key-value map that may be set by the kubelet to store and -+ // retrieve arbitrary metadata. This will include any annotations set on a -+ // pod through the Kubernetes API. -+ // -+ // Annotations MUST NOT be altered by the runtime; the annotations stored -+ // here MUST be returned in the PodSandboxStatus associated with the pod -+ // this PodSandboxConfig creates. -+ // -+ // In general, in order to preserve a well-defined interface between the -+ // kubelet and the container runtime, annotations SHOULD NOT influence -+ // runtime behaviour. -+ // -+ // Annotations can also be useful for runtime authors to experiment with -+ // new features that are opaque to the Kubernetes APIs (both user-facing -+ // and the CRI). Whenever possible, however, runtime authors SHOULD -+ // consider proposing new typed fields for any new features instead. -+ Annotations map[string]string `protobuf:"bytes,7,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -+ // Optional configurations specific to Linux hosts. -+ Linux *LinuxPodSandboxConfig `protobuf:"bytes,8,opt,name=linux,proto3" json:"linux,omitempty"` -+ // Optional configurations specific to Windows hosts. -+ Windows *WindowsPodSandboxConfig `protobuf:"bytes,9,opt,name=windows,proto3" json:"windows,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *PodSandboxConfig) Reset() { *m = PodSandboxConfig{} } -+func (*PodSandboxConfig) ProtoMessage() {} -+func (*PodSandboxConfig) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{13} -+} -+func (m *PodSandboxConfig) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *PodSandboxConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_PodSandboxConfig.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *PodSandboxConfig) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_PodSandboxConfig.Merge(m, src) -+} -+func (m *PodSandboxConfig) XXX_Size() int { -+ return m.Size() -+} -+func (m *PodSandboxConfig) XXX_DiscardUnknown() { -+ xxx_messageInfo_PodSandboxConfig.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_PodSandboxConfig proto.InternalMessageInfo -+ -+func (m *PodSandboxConfig) GetMetadata() *PodSandboxMetadata { -+ if m != nil { -+ return m.Metadata -+ } -+ return nil -+} -+ -+func (m *PodSandboxConfig) GetHostname() string { -+ if m != nil { -+ return m.Hostname -+ } -+ return "" -+} -+ -+func (m *PodSandboxConfig) GetLogDirectory() string { -+ if m != nil { -+ return m.LogDirectory -+ } -+ return "" -+} -+ -+func (m *PodSandboxConfig) GetDnsConfig() *DNSConfig { -+ if m != nil { -+ return m.DnsConfig -+ } -+ return nil -+} -+ -+func (m *PodSandboxConfig) GetPortMappings() []*PortMapping { -+ if m != nil { -+ return m.PortMappings -+ } -+ return nil -+} -+ -+func (m *PodSandboxConfig) GetLabels() map[string]string { -+ if m != nil { -+ return m.Labels -+ } -+ return nil -+} -+ -+func (m *PodSandboxConfig) GetAnnotations() map[string]string { -+ if m != nil { -+ return m.Annotations -+ } -+ return nil -+} -+ -+func (m *PodSandboxConfig) GetLinux() *LinuxPodSandboxConfig { -+ if m != nil { -+ return m.Linux -+ } -+ return nil -+} -+ -+func (m *PodSandboxConfig) GetWindows() *WindowsPodSandboxConfig { -+ if m != nil { -+ return m.Windows -+ } -+ return nil -+} -+ -+type RunPodSandboxRequest struct { -+ // Configuration for creating a PodSandbox. -+ Config *PodSandboxConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` -+ // Named runtime configuration to use for this PodSandbox. -+ // If the runtime handler is unknown, this request should be rejected. An -+ // empty string should select the default handler, equivalent to the -+ // behavior before this feature was added. -+ // See https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class -+ RuntimeHandler string `protobuf:"bytes,2,opt,name=runtime_handler,json=runtimeHandler,proto3" json:"runtime_handler,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *RunPodSandboxRequest) Reset() { *m = RunPodSandboxRequest{} } -+func (*RunPodSandboxRequest) ProtoMessage() {} -+func (*RunPodSandboxRequest) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{14} -+} -+func (m *RunPodSandboxRequest) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *RunPodSandboxRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_RunPodSandboxRequest.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *RunPodSandboxRequest) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_RunPodSandboxRequest.Merge(m, src) -+} -+func (m *RunPodSandboxRequest) XXX_Size() int { -+ return m.Size() -+} -+func (m *RunPodSandboxRequest) XXX_DiscardUnknown() { -+ xxx_messageInfo_RunPodSandboxRequest.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_RunPodSandboxRequest proto.InternalMessageInfo -+ -+func (m *RunPodSandboxRequest) GetConfig() *PodSandboxConfig { -+ if m != nil { -+ return m.Config -+ } -+ return nil -+} -+ -+func (m *RunPodSandboxRequest) GetRuntimeHandler() string { -+ if m != nil { -+ return m.RuntimeHandler -+ } -+ return "" -+} -+ -+type RunPodSandboxResponse struct { -+ // ID of the PodSandbox to run. -+ PodSandboxId string `protobuf:"bytes,1,opt,name=pod_sandbox_id,json=podSandboxId,proto3" json:"pod_sandbox_id,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *RunPodSandboxResponse) Reset() { *m = RunPodSandboxResponse{} } -+func (*RunPodSandboxResponse) ProtoMessage() {} -+func (*RunPodSandboxResponse) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{15} -+} -+func (m *RunPodSandboxResponse) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *RunPodSandboxResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_RunPodSandboxResponse.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *RunPodSandboxResponse) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_RunPodSandboxResponse.Merge(m, src) -+} -+func (m *RunPodSandboxResponse) XXX_Size() int { -+ return m.Size() -+} -+func (m *RunPodSandboxResponse) XXX_DiscardUnknown() { -+ xxx_messageInfo_RunPodSandboxResponse.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_RunPodSandboxResponse proto.InternalMessageInfo -+ -+func (m *RunPodSandboxResponse) GetPodSandboxId() string { -+ if m != nil { -+ return m.PodSandboxId -+ } -+ return "" -+} -+ -+type StopPodSandboxRequest struct { -+ // ID of the PodSandbox to stop. -+ PodSandboxId string `protobuf:"bytes,1,opt,name=pod_sandbox_id,json=podSandboxId,proto3" json:"pod_sandbox_id,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *StopPodSandboxRequest) Reset() { *m = StopPodSandboxRequest{} } -+func (*StopPodSandboxRequest) ProtoMessage() {} -+func (*StopPodSandboxRequest) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{16} -+} -+func (m *StopPodSandboxRequest) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *StopPodSandboxRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_StopPodSandboxRequest.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *StopPodSandboxRequest) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_StopPodSandboxRequest.Merge(m, src) -+} -+func (m *StopPodSandboxRequest) XXX_Size() int { -+ return m.Size() -+} -+func (m *StopPodSandboxRequest) XXX_DiscardUnknown() { -+ xxx_messageInfo_StopPodSandboxRequest.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_StopPodSandboxRequest proto.InternalMessageInfo -+ -+func (m *StopPodSandboxRequest) GetPodSandboxId() string { -+ if m != nil { -+ return m.PodSandboxId -+ } -+ return "" -+} -+ -+type StopPodSandboxResponse struct { -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *StopPodSandboxResponse) Reset() { *m = StopPodSandboxResponse{} } -+func (*StopPodSandboxResponse) ProtoMessage() {} -+func (*StopPodSandboxResponse) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{17} -+} -+func (m *StopPodSandboxResponse) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *StopPodSandboxResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_StopPodSandboxResponse.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *StopPodSandboxResponse) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_StopPodSandboxResponse.Merge(m, src) -+} -+func (m *StopPodSandboxResponse) XXX_Size() int { -+ return m.Size() -+} -+func (m *StopPodSandboxResponse) XXX_DiscardUnknown() { -+ xxx_messageInfo_StopPodSandboxResponse.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_StopPodSandboxResponse proto.InternalMessageInfo -+ -+type RemovePodSandboxRequest struct { -+ // ID of the PodSandbox to remove. -+ PodSandboxId string `protobuf:"bytes,1,opt,name=pod_sandbox_id,json=podSandboxId,proto3" json:"pod_sandbox_id,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *RemovePodSandboxRequest) Reset() { *m = RemovePodSandboxRequest{} } -+func (*RemovePodSandboxRequest) ProtoMessage() {} -+func (*RemovePodSandboxRequest) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{18} -+} -+func (m *RemovePodSandboxRequest) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *RemovePodSandboxRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_RemovePodSandboxRequest.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *RemovePodSandboxRequest) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_RemovePodSandboxRequest.Merge(m, src) -+} -+func (m *RemovePodSandboxRequest) XXX_Size() int { -+ return m.Size() -+} -+func (m *RemovePodSandboxRequest) XXX_DiscardUnknown() { -+ xxx_messageInfo_RemovePodSandboxRequest.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_RemovePodSandboxRequest proto.InternalMessageInfo -+ -+func (m *RemovePodSandboxRequest) GetPodSandboxId() string { -+ if m != nil { -+ return m.PodSandboxId -+ } -+ return "" -+} -+ -+type RemovePodSandboxResponse struct { -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *RemovePodSandboxResponse) Reset() { *m = RemovePodSandboxResponse{} } -+func (*RemovePodSandboxResponse) ProtoMessage() {} -+func (*RemovePodSandboxResponse) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{19} -+} -+func (m *RemovePodSandboxResponse) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *RemovePodSandboxResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_RemovePodSandboxResponse.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *RemovePodSandboxResponse) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_RemovePodSandboxResponse.Merge(m, src) -+} -+func (m *RemovePodSandboxResponse) XXX_Size() int { -+ return m.Size() -+} -+func (m *RemovePodSandboxResponse) XXX_DiscardUnknown() { -+ xxx_messageInfo_RemovePodSandboxResponse.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_RemovePodSandboxResponse proto.InternalMessageInfo -+ -+type PodSandboxStatusRequest struct { -+ // ID of the PodSandbox for which to retrieve status. -+ PodSandboxId string `protobuf:"bytes,1,opt,name=pod_sandbox_id,json=podSandboxId,proto3" json:"pod_sandbox_id,omitempty"` -+ // Verbose indicates whether to return extra information about the pod sandbox. -+ Verbose bool `protobuf:"varint,2,opt,name=verbose,proto3" json:"verbose,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *PodSandboxStatusRequest) Reset() { *m = PodSandboxStatusRequest{} } -+func (*PodSandboxStatusRequest) ProtoMessage() {} -+func (*PodSandboxStatusRequest) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{20} -+} -+func (m *PodSandboxStatusRequest) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *PodSandboxStatusRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_PodSandboxStatusRequest.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *PodSandboxStatusRequest) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_PodSandboxStatusRequest.Merge(m, src) -+} -+func (m *PodSandboxStatusRequest) XXX_Size() int { -+ return m.Size() -+} -+func (m *PodSandboxStatusRequest) XXX_DiscardUnknown() { -+ xxx_messageInfo_PodSandboxStatusRequest.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_PodSandboxStatusRequest proto.InternalMessageInfo -+ -+func (m *PodSandboxStatusRequest) GetPodSandboxId() string { -+ if m != nil { -+ return m.PodSandboxId -+ } -+ return "" -+} -+ -+func (m *PodSandboxStatusRequest) GetVerbose() bool { -+ if m != nil { -+ return m.Verbose -+ } -+ return false -+} -+ -+// PodIP represents an ip of a Pod -+type PodIP struct { -+ // an ip is a string representation of an IPv4 or an IPv6 -+ Ip string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *PodIP) Reset() { *m = PodIP{} } -+func (*PodIP) ProtoMessage() {} -+func (*PodIP) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{21} -+} -+func (m *PodIP) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *PodIP) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_PodIP.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *PodIP) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_PodIP.Merge(m, src) -+} -+func (m *PodIP) XXX_Size() int { -+ return m.Size() -+} -+func (m *PodIP) XXX_DiscardUnknown() { -+ xxx_messageInfo_PodIP.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_PodIP proto.InternalMessageInfo -+ -+func (m *PodIP) GetIp() string { -+ if m != nil { -+ return m.Ip -+ } -+ return "" -+} -+ -+// PodSandboxNetworkStatus is the status of the network for a PodSandbox. -+// Currently ignored for pods sharing the host networking namespace. -+type PodSandboxNetworkStatus struct { -+ // IP address of the PodSandbox. -+ Ip string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip,omitempty"` -+ // list of additional ips (not inclusive of PodSandboxNetworkStatus.Ip) of the PodSandBoxNetworkStatus -+ AdditionalIps []*PodIP `protobuf:"bytes,2,rep,name=additional_ips,json=additionalIps,proto3" json:"additional_ips,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *PodSandboxNetworkStatus) Reset() { *m = PodSandboxNetworkStatus{} } -+func (*PodSandboxNetworkStatus) ProtoMessage() {} -+func (*PodSandboxNetworkStatus) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{22} -+} -+func (m *PodSandboxNetworkStatus) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *PodSandboxNetworkStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_PodSandboxNetworkStatus.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *PodSandboxNetworkStatus) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_PodSandboxNetworkStatus.Merge(m, src) -+} -+func (m *PodSandboxNetworkStatus) XXX_Size() int { -+ return m.Size() -+} -+func (m *PodSandboxNetworkStatus) XXX_DiscardUnknown() { -+ xxx_messageInfo_PodSandboxNetworkStatus.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_PodSandboxNetworkStatus proto.InternalMessageInfo -+ -+func (m *PodSandboxNetworkStatus) GetIp() string { -+ if m != nil { -+ return m.Ip -+ } -+ return "" -+} -+ -+func (m *PodSandboxNetworkStatus) GetAdditionalIps() []*PodIP { -+ if m != nil { -+ return m.AdditionalIps -+ } -+ return nil -+} -+ -+// Namespace contains paths to the namespaces. -+type Namespace struct { -+ // Namespace options for Linux namespaces. -+ Options *NamespaceOption `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *Namespace) Reset() { *m = Namespace{} } -+func (*Namespace) ProtoMessage() {} -+func (*Namespace) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{23} -+} -+func (m *Namespace) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *Namespace) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_Namespace.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *Namespace) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_Namespace.Merge(m, src) -+} -+func (m *Namespace) XXX_Size() int { -+ return m.Size() -+} -+func (m *Namespace) XXX_DiscardUnknown() { -+ xxx_messageInfo_Namespace.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_Namespace proto.InternalMessageInfo -+ -+func (m *Namespace) GetOptions() *NamespaceOption { -+ if m != nil { -+ return m.Options -+ } -+ return nil -+} -+ -+// LinuxSandboxStatus contains status specific to Linux sandboxes. -+type LinuxPodSandboxStatus struct { -+ // Paths to the sandbox's namespaces. -+ Namespaces *Namespace `protobuf:"bytes,1,opt,name=namespaces,proto3" json:"namespaces,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *LinuxPodSandboxStatus) Reset() { *m = LinuxPodSandboxStatus{} } -+func (*LinuxPodSandboxStatus) ProtoMessage() {} -+func (*LinuxPodSandboxStatus) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{24} -+} -+func (m *LinuxPodSandboxStatus) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *LinuxPodSandboxStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_LinuxPodSandboxStatus.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *LinuxPodSandboxStatus) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_LinuxPodSandboxStatus.Merge(m, src) -+} -+func (m *LinuxPodSandboxStatus) XXX_Size() int { -+ return m.Size() -+} -+func (m *LinuxPodSandboxStatus) XXX_DiscardUnknown() { -+ xxx_messageInfo_LinuxPodSandboxStatus.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_LinuxPodSandboxStatus proto.InternalMessageInfo -+ -+func (m *LinuxPodSandboxStatus) GetNamespaces() *Namespace { -+ if m != nil { -+ return m.Namespaces -+ } -+ return nil -+} -+ -+// PodSandboxStatus contains the status of the PodSandbox. -+type PodSandboxStatus struct { -+ // ID of the sandbox. -+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` -+ // Metadata of the sandbox. -+ Metadata *PodSandboxMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` -+ // State of the sandbox. -+ State PodSandboxState `protobuf:"varint,3,opt,name=state,proto3,enum=runtime.v1.PodSandboxState" json:"state,omitempty"` -+ // Creation timestamp of the sandbox in nanoseconds. Must be > 0. -+ CreatedAt int64 `protobuf:"varint,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` -+ // Network contains network status if network is handled by the runtime. -+ Network *PodSandboxNetworkStatus `protobuf:"bytes,5,opt,name=network,proto3" json:"network,omitempty"` -+ // Linux-specific status to a pod sandbox. -+ Linux *LinuxPodSandboxStatus `protobuf:"bytes,6,opt,name=linux,proto3" json:"linux,omitempty"` -+ // Labels are key-value pairs that may be used to scope and select individual resources. -+ Labels map[string]string `protobuf:"bytes,7,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -+ // Unstructured key-value map holding arbitrary metadata. -+ // Annotations MUST NOT be altered by the runtime; the value of this field -+ // MUST be identical to that of the corresponding PodSandboxConfig used to -+ // instantiate the pod sandbox this status represents. -+ Annotations map[string]string `protobuf:"bytes,8,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -+ // runtime configuration used for this PodSandbox. -+ RuntimeHandler string `protobuf:"bytes,9,opt,name=runtime_handler,json=runtimeHandler,proto3" json:"runtime_handler,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *PodSandboxStatus) Reset() { *m = PodSandboxStatus{} } -+func (*PodSandboxStatus) ProtoMessage() {} -+func (*PodSandboxStatus) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{25} -+} -+func (m *PodSandboxStatus) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *PodSandboxStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_PodSandboxStatus.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *PodSandboxStatus) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_PodSandboxStatus.Merge(m, src) -+} -+func (m *PodSandboxStatus) XXX_Size() int { -+ return m.Size() -+} -+func (m *PodSandboxStatus) XXX_DiscardUnknown() { -+ xxx_messageInfo_PodSandboxStatus.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_PodSandboxStatus proto.InternalMessageInfo -+ -+func (m *PodSandboxStatus) GetId() string { -+ if m != nil { -+ return m.Id -+ } -+ return "" -+} -+ -+func (m *PodSandboxStatus) GetMetadata() *PodSandboxMetadata { -+ if m != nil { -+ return m.Metadata -+ } -+ return nil -+} -+ -+func (m *PodSandboxStatus) GetState() PodSandboxState { -+ if m != nil { -+ return m.State -+ } -+ return PodSandboxState_SANDBOX_READY -+} -+ -+func (m *PodSandboxStatus) GetCreatedAt() int64 { -+ if m != nil { -+ return m.CreatedAt -+ } -+ return 0 -+} -+ -+func (m *PodSandboxStatus) GetNetwork() *PodSandboxNetworkStatus { -+ if m != nil { -+ return m.Network -+ } -+ return nil -+} -+ -+func (m *PodSandboxStatus) GetLinux() *LinuxPodSandboxStatus { -+ if m != nil { -+ return m.Linux -+ } -+ return nil -+} -+ -+func (m *PodSandboxStatus) GetLabels() map[string]string { -+ if m != nil { -+ return m.Labels -+ } -+ return nil -+} -+ -+func (m *PodSandboxStatus) GetAnnotations() map[string]string { -+ if m != nil { -+ return m.Annotations -+ } -+ return nil -+} -+ -+func (m *PodSandboxStatus) GetRuntimeHandler() string { -+ if m != nil { -+ return m.RuntimeHandler -+ } -+ return "" -+} -+ -+type PodSandboxStatusResponse struct { -+ // Status of the PodSandbox. -+ Status *PodSandboxStatus `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` -+ // Info is extra information of the PodSandbox. The key could be arbitrary string, and -+ // value should be in json format. The information could include anything useful for -+ // debug, e.g. network namespace for linux container based container runtime. -+ // It should only be returned non-empty when Verbose is true. -+ Info map[string]string `protobuf:"bytes,2,rep,name=info,proto3" json:"info,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *PodSandboxStatusResponse) Reset() { *m = PodSandboxStatusResponse{} } -+func (*PodSandboxStatusResponse) ProtoMessage() {} -+func (*PodSandboxStatusResponse) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{26} -+} -+func (m *PodSandboxStatusResponse) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *PodSandboxStatusResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_PodSandboxStatusResponse.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *PodSandboxStatusResponse) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_PodSandboxStatusResponse.Merge(m, src) -+} -+func (m *PodSandboxStatusResponse) XXX_Size() int { -+ return m.Size() -+} -+func (m *PodSandboxStatusResponse) XXX_DiscardUnknown() { -+ xxx_messageInfo_PodSandboxStatusResponse.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_PodSandboxStatusResponse proto.InternalMessageInfo -+ -+func (m *PodSandboxStatusResponse) GetStatus() *PodSandboxStatus { -+ if m != nil { -+ return m.Status -+ } -+ return nil -+} -+ -+func (m *PodSandboxStatusResponse) GetInfo() map[string]string { -+ if m != nil { -+ return m.Info -+ } -+ return nil -+} -+ -+// PodSandboxStateValue is the wrapper of PodSandboxState. -+type PodSandboxStateValue struct { -+ // State of the sandbox. -+ State PodSandboxState `protobuf:"varint,1,opt,name=state,proto3,enum=runtime.v1.PodSandboxState" json:"state,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *PodSandboxStateValue) Reset() { *m = PodSandboxStateValue{} } -+func (*PodSandboxStateValue) ProtoMessage() {} -+func (*PodSandboxStateValue) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{27} -+} -+func (m *PodSandboxStateValue) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *PodSandboxStateValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_PodSandboxStateValue.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *PodSandboxStateValue) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_PodSandboxStateValue.Merge(m, src) -+} -+func (m *PodSandboxStateValue) XXX_Size() int { -+ return m.Size() -+} -+func (m *PodSandboxStateValue) XXX_DiscardUnknown() { -+ xxx_messageInfo_PodSandboxStateValue.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_PodSandboxStateValue proto.InternalMessageInfo -+ -+func (m *PodSandboxStateValue) GetState() PodSandboxState { -+ if m != nil { -+ return m.State -+ } -+ return PodSandboxState_SANDBOX_READY -+} -+ -+// PodSandboxFilter is used to filter a list of PodSandboxes. -+// All those fields are combined with 'AND' -+type PodSandboxFilter struct { -+ // ID of the sandbox. -+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` -+ // State of the sandbox. -+ State *PodSandboxStateValue `protobuf:"bytes,2,opt,name=state,proto3" json:"state,omitempty"` -+ // LabelSelector to select matches. -+ // Only api.MatchLabels is supported for now and the requirements -+ // are ANDed. MatchExpressions is not supported yet. -+ LabelSelector map[string]string `protobuf:"bytes,3,rep,name=label_selector,json=labelSelector,proto3" json:"label_selector,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *PodSandboxFilter) Reset() { *m = PodSandboxFilter{} } -+func (*PodSandboxFilter) ProtoMessage() {} -+func (*PodSandboxFilter) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{28} -+} -+func (m *PodSandboxFilter) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *PodSandboxFilter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_PodSandboxFilter.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *PodSandboxFilter) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_PodSandboxFilter.Merge(m, src) -+} -+func (m *PodSandboxFilter) XXX_Size() int { -+ return m.Size() -+} -+func (m *PodSandboxFilter) XXX_DiscardUnknown() { -+ xxx_messageInfo_PodSandboxFilter.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_PodSandboxFilter proto.InternalMessageInfo -+ -+func (m *PodSandboxFilter) GetId() string { -+ if m != nil { -+ return m.Id -+ } -+ return "" -+} -+ -+func (m *PodSandboxFilter) GetState() *PodSandboxStateValue { -+ if m != nil { -+ return m.State -+ } -+ return nil -+} -+ -+func (m *PodSandboxFilter) GetLabelSelector() map[string]string { -+ if m != nil { -+ return m.LabelSelector -+ } -+ return nil -+} -+ -+type ListPodSandboxRequest struct { -+ // PodSandboxFilter to filter a list of PodSandboxes. -+ Filter *PodSandboxFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *ListPodSandboxRequest) Reset() { *m = ListPodSandboxRequest{} } -+func (*ListPodSandboxRequest) ProtoMessage() {} -+func (*ListPodSandboxRequest) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{29} -+} -+func (m *ListPodSandboxRequest) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *ListPodSandboxRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_ListPodSandboxRequest.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *ListPodSandboxRequest) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_ListPodSandboxRequest.Merge(m, src) -+} -+func (m *ListPodSandboxRequest) XXX_Size() int { -+ return m.Size() -+} -+func (m *ListPodSandboxRequest) XXX_DiscardUnknown() { -+ xxx_messageInfo_ListPodSandboxRequest.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_ListPodSandboxRequest proto.InternalMessageInfo -+ -+func (m *ListPodSandboxRequest) GetFilter() *PodSandboxFilter { -+ if m != nil { -+ return m.Filter -+ } -+ return nil -+} -+ -+// PodSandbox contains minimal information about a sandbox. -+type PodSandbox struct { -+ // ID of the PodSandbox. -+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` -+ // Metadata of the PodSandbox. -+ Metadata *PodSandboxMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` -+ // State of the PodSandbox. -+ State PodSandboxState `protobuf:"varint,3,opt,name=state,proto3,enum=runtime.v1.PodSandboxState" json:"state,omitempty"` -+ // Creation timestamps of the PodSandbox in nanoseconds. Must be > 0. -+ CreatedAt int64 `protobuf:"varint,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` -+ // Labels of the PodSandbox. -+ Labels map[string]string `protobuf:"bytes,5,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -+ // Unstructured key-value map holding arbitrary metadata. -+ // Annotations MUST NOT be altered by the runtime; the value of this field -+ // MUST be identical to that of the corresponding PodSandboxConfig used to -+ // instantiate this PodSandbox. -+ Annotations map[string]string `protobuf:"bytes,6,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -+ // runtime configuration used for this PodSandbox. -+ RuntimeHandler string `protobuf:"bytes,7,opt,name=runtime_handler,json=runtimeHandler,proto3" json:"runtime_handler,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *PodSandbox) Reset() { *m = PodSandbox{} } -+func (*PodSandbox) ProtoMessage() {} -+func (*PodSandbox) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{30} -+} -+func (m *PodSandbox) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *PodSandbox) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_PodSandbox.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *PodSandbox) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_PodSandbox.Merge(m, src) -+} -+func (m *PodSandbox) XXX_Size() int { -+ return m.Size() -+} -+func (m *PodSandbox) XXX_DiscardUnknown() { -+ xxx_messageInfo_PodSandbox.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_PodSandbox proto.InternalMessageInfo -+ -+func (m *PodSandbox) GetId() string { -+ if m != nil { -+ return m.Id -+ } -+ return "" -+} -+ -+func (m *PodSandbox) GetMetadata() *PodSandboxMetadata { -+ if m != nil { -+ return m.Metadata -+ } -+ return nil -+} -+ -+func (m *PodSandbox) GetState() PodSandboxState { -+ if m != nil { -+ return m.State -+ } -+ return PodSandboxState_SANDBOX_READY -+} -+ -+func (m *PodSandbox) GetCreatedAt() int64 { -+ if m != nil { -+ return m.CreatedAt -+ } -+ return 0 -+} -+ -+func (m *PodSandbox) GetLabels() map[string]string { -+ if m != nil { -+ return m.Labels -+ } -+ return nil -+} -+ -+func (m *PodSandbox) GetAnnotations() map[string]string { -+ if m != nil { -+ return m.Annotations -+ } -+ return nil -+} -+ -+func (m *PodSandbox) GetRuntimeHandler() string { -+ if m != nil { -+ return m.RuntimeHandler -+ } -+ return "" -+} -+ -+type ListPodSandboxResponse struct { -+ // List of PodSandboxes. -+ Items []*PodSandbox `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *ListPodSandboxResponse) Reset() { *m = ListPodSandboxResponse{} } -+func (*ListPodSandboxResponse) ProtoMessage() {} -+func (*ListPodSandboxResponse) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{31} -+} -+func (m *ListPodSandboxResponse) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *ListPodSandboxResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_ListPodSandboxResponse.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *ListPodSandboxResponse) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_ListPodSandboxResponse.Merge(m, src) -+} -+func (m *ListPodSandboxResponse) XXX_Size() int { -+ return m.Size() -+} -+func (m *ListPodSandboxResponse) XXX_DiscardUnknown() { -+ xxx_messageInfo_ListPodSandboxResponse.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_ListPodSandboxResponse proto.InternalMessageInfo -+ -+func (m *ListPodSandboxResponse) GetItems() []*PodSandbox { -+ if m != nil { -+ return m.Items -+ } -+ return nil -+} -+ -+type PodSandboxStatsRequest struct { -+ // ID of the pod sandbox for which to retrieve stats. -+ PodSandboxId string `protobuf:"bytes,1,opt,name=pod_sandbox_id,json=podSandboxId,proto3" json:"pod_sandbox_id,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *PodSandboxStatsRequest) Reset() { *m = PodSandboxStatsRequest{} } -+func (*PodSandboxStatsRequest) ProtoMessage() {} -+func (*PodSandboxStatsRequest) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{32} -+} -+func (m *PodSandboxStatsRequest) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *PodSandboxStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_PodSandboxStatsRequest.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *PodSandboxStatsRequest) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_PodSandboxStatsRequest.Merge(m, src) -+} -+func (m *PodSandboxStatsRequest) XXX_Size() int { -+ return m.Size() -+} -+func (m *PodSandboxStatsRequest) XXX_DiscardUnknown() { -+ xxx_messageInfo_PodSandboxStatsRequest.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_PodSandboxStatsRequest proto.InternalMessageInfo -+ -+func (m *PodSandboxStatsRequest) GetPodSandboxId() string { -+ if m != nil { -+ return m.PodSandboxId -+ } -+ return "" -+} -+ -+type PodSandboxStatsResponse struct { -+ Stats *PodSandboxStats `protobuf:"bytes,1,opt,name=stats,proto3" json:"stats,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *PodSandboxStatsResponse) Reset() { *m = PodSandboxStatsResponse{} } -+func (*PodSandboxStatsResponse) ProtoMessage() {} -+func (*PodSandboxStatsResponse) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{33} -+} -+func (m *PodSandboxStatsResponse) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *PodSandboxStatsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_PodSandboxStatsResponse.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *PodSandboxStatsResponse) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_PodSandboxStatsResponse.Merge(m, src) -+} -+func (m *PodSandboxStatsResponse) XXX_Size() int { -+ return m.Size() -+} -+func (m *PodSandboxStatsResponse) XXX_DiscardUnknown() { -+ xxx_messageInfo_PodSandboxStatsResponse.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_PodSandboxStatsResponse proto.InternalMessageInfo -+ -+func (m *PodSandboxStatsResponse) GetStats() *PodSandboxStats { -+ if m != nil { -+ return m.Stats -+ } -+ return nil -+} -+ -+// PodSandboxStatsFilter is used to filter the list of pod sandboxes to retrieve stats for. -+// All those fields are combined with 'AND'. -+type PodSandboxStatsFilter struct { -+ // ID of the pod sandbox. -+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` -+ // LabelSelector to select matches. -+ // Only api.MatchLabels is supported for now and the requirements -+ // are ANDed. MatchExpressions is not supported yet. -+ LabelSelector map[string]string `protobuf:"bytes,2,rep,name=label_selector,json=labelSelector,proto3" json:"label_selector,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *PodSandboxStatsFilter) Reset() { *m = PodSandboxStatsFilter{} } -+func (*PodSandboxStatsFilter) ProtoMessage() {} -+func (*PodSandboxStatsFilter) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{34} -+} -+func (m *PodSandboxStatsFilter) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *PodSandboxStatsFilter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_PodSandboxStatsFilter.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *PodSandboxStatsFilter) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_PodSandboxStatsFilter.Merge(m, src) -+} -+func (m *PodSandboxStatsFilter) XXX_Size() int { -+ return m.Size() -+} -+func (m *PodSandboxStatsFilter) XXX_DiscardUnknown() { -+ xxx_messageInfo_PodSandboxStatsFilter.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_PodSandboxStatsFilter proto.InternalMessageInfo -+ -+func (m *PodSandboxStatsFilter) GetId() string { -+ if m != nil { -+ return m.Id -+ } -+ return "" -+} -+ -+func (m *PodSandboxStatsFilter) GetLabelSelector() map[string]string { -+ if m != nil { -+ return m.LabelSelector -+ } -+ return nil -+} -+ -+type ListPodSandboxStatsRequest struct { -+ // Filter for the list request. -+ Filter *PodSandboxStatsFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *ListPodSandboxStatsRequest) Reset() { *m = ListPodSandboxStatsRequest{} } -+func (*ListPodSandboxStatsRequest) ProtoMessage() {} -+func (*ListPodSandboxStatsRequest) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{35} -+} -+func (m *ListPodSandboxStatsRequest) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *ListPodSandboxStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_ListPodSandboxStatsRequest.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *ListPodSandboxStatsRequest) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_ListPodSandboxStatsRequest.Merge(m, src) -+} -+func (m *ListPodSandboxStatsRequest) XXX_Size() int { -+ return m.Size() -+} -+func (m *ListPodSandboxStatsRequest) XXX_DiscardUnknown() { -+ xxx_messageInfo_ListPodSandboxStatsRequest.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_ListPodSandboxStatsRequest proto.InternalMessageInfo -+ -+func (m *ListPodSandboxStatsRequest) GetFilter() *PodSandboxStatsFilter { -+ if m != nil { -+ return m.Filter -+ } -+ return nil -+} -+ -+type ListPodSandboxStatsResponse struct { -+ // Stats of the pod sandbox. -+ Stats []*PodSandboxStats `protobuf:"bytes,1,rep,name=stats,proto3" json:"stats,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *ListPodSandboxStatsResponse) Reset() { *m = ListPodSandboxStatsResponse{} } -+func (*ListPodSandboxStatsResponse) ProtoMessage() {} -+func (*ListPodSandboxStatsResponse) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{36} -+} -+func (m *ListPodSandboxStatsResponse) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *ListPodSandboxStatsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_ListPodSandboxStatsResponse.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *ListPodSandboxStatsResponse) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_ListPodSandboxStatsResponse.Merge(m, src) -+} -+func (m *ListPodSandboxStatsResponse) XXX_Size() int { -+ return m.Size() -+} -+func (m *ListPodSandboxStatsResponse) XXX_DiscardUnknown() { -+ xxx_messageInfo_ListPodSandboxStatsResponse.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_ListPodSandboxStatsResponse proto.InternalMessageInfo -+ -+func (m *ListPodSandboxStatsResponse) GetStats() []*PodSandboxStats { -+ if m != nil { -+ return m.Stats -+ } -+ return nil -+} -+ -+// PodSandboxAttributes provides basic information of the pod sandbox. -+type PodSandboxAttributes struct { -+ // ID of the pod sandbox. -+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` -+ // Metadata of the pod sandbox. -+ Metadata *PodSandboxMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` -+ // Key-value pairs that may be used to scope and select individual resources. -+ Labels map[string]string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -+ // Unstructured key-value map holding arbitrary metadata. -+ // Annotations MUST NOT be altered by the runtime; the value of this field -+ // MUST be identical to that of the corresponding PodSandboxStatus used to -+ // instantiate the PodSandbox this status represents. -+ Annotations map[string]string `protobuf:"bytes,4,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *PodSandboxAttributes) Reset() { *m = PodSandboxAttributes{} } -+func (*PodSandboxAttributes) ProtoMessage() {} -+func (*PodSandboxAttributes) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{37} -+} -+func (m *PodSandboxAttributes) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *PodSandboxAttributes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_PodSandboxAttributes.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *PodSandboxAttributes) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_PodSandboxAttributes.Merge(m, src) -+} -+func (m *PodSandboxAttributes) XXX_Size() int { -+ return m.Size() -+} -+func (m *PodSandboxAttributes) XXX_DiscardUnknown() { -+ xxx_messageInfo_PodSandboxAttributes.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_PodSandboxAttributes proto.InternalMessageInfo -+ -+func (m *PodSandboxAttributes) GetId() string { -+ if m != nil { -+ return m.Id -+ } -+ return "" -+} -+ -+func (m *PodSandboxAttributes) GetMetadata() *PodSandboxMetadata { -+ if m != nil { -+ return m.Metadata -+ } -+ return nil -+} -+ -+func (m *PodSandboxAttributes) GetLabels() map[string]string { -+ if m != nil { -+ return m.Labels -+ } -+ return nil -+} -+ -+func (m *PodSandboxAttributes) GetAnnotations() map[string]string { -+ if m != nil { -+ return m.Annotations -+ } -+ return nil -+} -+ -+// PodSandboxStats provides the resource usage statistics for a pod. -+// The linux or windows field will be populated depending on the platform. -+type PodSandboxStats struct { -+ // Information of the pod. -+ Attributes *PodSandboxAttributes `protobuf:"bytes,1,opt,name=attributes,proto3" json:"attributes,omitempty"` -+ // Stats from linux. -+ Linux *LinuxPodSandboxStats `protobuf:"bytes,2,opt,name=linux,proto3" json:"linux,omitempty"` -+ // Stats from windows. -+ Windows *WindowsPodSandboxStats `protobuf:"bytes,3,opt,name=windows,proto3" json:"windows,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *PodSandboxStats) Reset() { *m = PodSandboxStats{} } -+func (*PodSandboxStats) ProtoMessage() {} -+func (*PodSandboxStats) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{38} -+} -+func (m *PodSandboxStats) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *PodSandboxStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_PodSandboxStats.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *PodSandboxStats) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_PodSandboxStats.Merge(m, src) -+} -+func (m *PodSandboxStats) XXX_Size() int { -+ return m.Size() -+} -+func (m *PodSandboxStats) XXX_DiscardUnknown() { -+ xxx_messageInfo_PodSandboxStats.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_PodSandboxStats proto.InternalMessageInfo -+ -+func (m *PodSandboxStats) GetAttributes() *PodSandboxAttributes { -+ if m != nil { -+ return m.Attributes -+ } -+ return nil -+} -+ -+func (m *PodSandboxStats) GetLinux() *LinuxPodSandboxStats { -+ if m != nil { -+ return m.Linux -+ } -+ return nil -+} -+ -+func (m *PodSandboxStats) GetWindows() *WindowsPodSandboxStats { -+ if m != nil { -+ return m.Windows -+ } -+ return nil -+} -+ -+// LinuxPodSandboxStats provides the resource usage statistics for a pod sandbox on linux. -+type LinuxPodSandboxStats struct { -+ // CPU usage gathered for the pod sandbox. -+ Cpu *CpuUsage `protobuf:"bytes,1,opt,name=cpu,proto3" json:"cpu,omitempty"` -+ // Memory usage gathered for the pod sandbox. -+ Memory *MemoryUsage `protobuf:"bytes,2,opt,name=memory,proto3" json:"memory,omitempty"` -+ // Network usage gathered for the pod sandbox -+ Network *NetworkUsage `protobuf:"bytes,3,opt,name=network,proto3" json:"network,omitempty"` -+ // Stats pertaining to processes in the pod sandbox. -+ Process *ProcessUsage `protobuf:"bytes,4,opt,name=process,proto3" json:"process,omitempty"` -+ // Stats of containers in the measured pod sandbox. -+ Containers []*ContainerStats `protobuf:"bytes,5,rep,name=containers,proto3" json:"containers,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *LinuxPodSandboxStats) Reset() { *m = LinuxPodSandboxStats{} } -+func (*LinuxPodSandboxStats) ProtoMessage() {} -+func (*LinuxPodSandboxStats) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{39} -+} -+func (m *LinuxPodSandboxStats) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *LinuxPodSandboxStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_LinuxPodSandboxStats.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *LinuxPodSandboxStats) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_LinuxPodSandboxStats.Merge(m, src) -+} -+func (m *LinuxPodSandboxStats) XXX_Size() int { -+ return m.Size() -+} -+func (m *LinuxPodSandboxStats) XXX_DiscardUnknown() { -+ xxx_messageInfo_LinuxPodSandboxStats.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_LinuxPodSandboxStats proto.InternalMessageInfo -+ -+func (m *LinuxPodSandboxStats) GetCpu() *CpuUsage { -+ if m != nil { -+ return m.Cpu -+ } -+ return nil -+} -+ -+func (m *LinuxPodSandboxStats) GetMemory() *MemoryUsage { -+ if m != nil { -+ return m.Memory -+ } -+ return nil -+} -+ -+func (m *LinuxPodSandboxStats) GetNetwork() *NetworkUsage { -+ if m != nil { -+ return m.Network -+ } -+ return nil -+} -+ -+func (m *LinuxPodSandboxStats) GetProcess() *ProcessUsage { -+ if m != nil { -+ return m.Process -+ } -+ return nil -+} -+ -+func (m *LinuxPodSandboxStats) GetContainers() []*ContainerStats { -+ if m != nil { -+ return m.Containers -+ } -+ return nil -+} -+ -+// WindowsPodSandboxStats provides the resource usage statistics for a pod sandbox on windows -+type WindowsPodSandboxStats struct { -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *WindowsPodSandboxStats) Reset() { *m = WindowsPodSandboxStats{} } -+func (*WindowsPodSandboxStats) ProtoMessage() {} -+func (*WindowsPodSandboxStats) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{40} -+} -+func (m *WindowsPodSandboxStats) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *WindowsPodSandboxStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_WindowsPodSandboxStats.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *WindowsPodSandboxStats) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_WindowsPodSandboxStats.Merge(m, src) -+} -+func (m *WindowsPodSandboxStats) XXX_Size() int { -+ return m.Size() -+} -+func (m *WindowsPodSandboxStats) XXX_DiscardUnknown() { -+ xxx_messageInfo_WindowsPodSandboxStats.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_WindowsPodSandboxStats proto.InternalMessageInfo -+ -+// NetworkUsage contains data about network resources. -+type NetworkUsage struct { -+ // The time at which these stats were updated. -+ Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` -+ // Stats for the default network interface. -+ DefaultInterface *NetworkInterfaceUsage `protobuf:"bytes,2,opt,name=default_interface,json=defaultInterface,proto3" json:"default_interface,omitempty"` -+ // Stats for all found network interfaces, excluding the default. -+ Interfaces []*NetworkInterfaceUsage `protobuf:"bytes,3,rep,name=interfaces,proto3" json:"interfaces,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *NetworkUsage) Reset() { *m = NetworkUsage{} } -+func (*NetworkUsage) ProtoMessage() {} -+func (*NetworkUsage) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{41} -+} -+func (m *NetworkUsage) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *NetworkUsage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_NetworkUsage.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *NetworkUsage) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_NetworkUsage.Merge(m, src) -+} -+func (m *NetworkUsage) XXX_Size() int { -+ return m.Size() -+} -+func (m *NetworkUsage) XXX_DiscardUnknown() { -+ xxx_messageInfo_NetworkUsage.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_NetworkUsage proto.InternalMessageInfo -+ -+func (m *NetworkUsage) GetTimestamp() int64 { -+ if m != nil { -+ return m.Timestamp -+ } -+ return 0 -+} -+ -+func (m *NetworkUsage) GetDefaultInterface() *NetworkInterfaceUsage { -+ if m != nil { -+ return m.DefaultInterface -+ } -+ return nil -+} -+ -+func (m *NetworkUsage) GetInterfaces() []*NetworkInterfaceUsage { -+ if m != nil { -+ return m.Interfaces -+ } -+ return nil -+} -+ -+// NetworkInterfaceUsage contains resource value data about a network interface. -+type NetworkInterfaceUsage struct { -+ // The name of the network interface. -+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` -+ // Cumulative count of bytes received. -+ RxBytes *UInt64Value `protobuf:"bytes,2,opt,name=rx_bytes,json=rxBytes,proto3" json:"rx_bytes,omitempty"` -+ // Cumulative count of receive errors encountered. -+ RxErrors *UInt64Value `protobuf:"bytes,3,opt,name=rx_errors,json=rxErrors,proto3" json:"rx_errors,omitempty"` -+ // Cumulative count of bytes transmitted. -+ TxBytes *UInt64Value `protobuf:"bytes,4,opt,name=tx_bytes,json=txBytes,proto3" json:"tx_bytes,omitempty"` -+ // Cumulative count of transmit errors encountered. -+ TxErrors *UInt64Value `protobuf:"bytes,5,opt,name=tx_errors,json=txErrors,proto3" json:"tx_errors,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *NetworkInterfaceUsage) Reset() { *m = NetworkInterfaceUsage{} } -+func (*NetworkInterfaceUsage) ProtoMessage() {} -+func (*NetworkInterfaceUsage) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{42} -+} -+func (m *NetworkInterfaceUsage) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *NetworkInterfaceUsage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_NetworkInterfaceUsage.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *NetworkInterfaceUsage) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_NetworkInterfaceUsage.Merge(m, src) -+} -+func (m *NetworkInterfaceUsage) XXX_Size() int { -+ return m.Size() -+} -+func (m *NetworkInterfaceUsage) XXX_DiscardUnknown() { -+ xxx_messageInfo_NetworkInterfaceUsage.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_NetworkInterfaceUsage proto.InternalMessageInfo -+ -+func (m *NetworkInterfaceUsage) GetName() string { -+ if m != nil { -+ return m.Name -+ } -+ return "" -+} -+ -+func (m *NetworkInterfaceUsage) GetRxBytes() *UInt64Value { -+ if m != nil { -+ return m.RxBytes -+ } -+ return nil -+} -+ -+func (m *NetworkInterfaceUsage) GetRxErrors() *UInt64Value { -+ if m != nil { -+ return m.RxErrors -+ } -+ return nil -+} -+ -+func (m *NetworkInterfaceUsage) GetTxBytes() *UInt64Value { -+ if m != nil { -+ return m.TxBytes -+ } -+ return nil -+} -+ -+func (m *NetworkInterfaceUsage) GetTxErrors() *UInt64Value { -+ if m != nil { -+ return m.TxErrors -+ } -+ return nil -+} -+ -+// ProcessUsage are stats pertaining to processes. -+type ProcessUsage struct { -+ // The time at which these stats were updated. -+ Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` -+ // Number of processes. -+ ProcessCount *UInt64Value `protobuf:"bytes,2,opt,name=process_count,json=processCount,proto3" json:"process_count,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *ProcessUsage) Reset() { *m = ProcessUsage{} } -+func (*ProcessUsage) ProtoMessage() {} -+func (*ProcessUsage) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{43} -+} -+func (m *ProcessUsage) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *ProcessUsage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_ProcessUsage.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *ProcessUsage) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_ProcessUsage.Merge(m, src) -+} -+func (m *ProcessUsage) XXX_Size() int { -+ return m.Size() -+} -+func (m *ProcessUsage) XXX_DiscardUnknown() { -+ xxx_messageInfo_ProcessUsage.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_ProcessUsage proto.InternalMessageInfo -+ -+func (m *ProcessUsage) GetTimestamp() int64 { -+ if m != nil { -+ return m.Timestamp -+ } -+ return 0 -+} -+ -+func (m *ProcessUsage) GetProcessCount() *UInt64Value { -+ if m != nil { -+ return m.ProcessCount -+ } -+ return nil -+} -+ -+// ImageSpec is an internal representation of an image. -+type ImageSpec struct { -+ // Container's Image field (e.g. imageID or imageDigest). -+ Image string `protobuf:"bytes,1,opt,name=image,proto3" json:"image,omitempty"` -+ // Unstructured key-value map holding arbitrary metadata. -+ // ImageSpec Annotations can be used to help the runtime target specific -+ // images in multi-arch images. -+ Annotations map[string]string `protobuf:"bytes,2,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *ImageSpec) Reset() { *m = ImageSpec{} } -+func (*ImageSpec) ProtoMessage() {} -+func (*ImageSpec) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{44} -+} -+func (m *ImageSpec) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *ImageSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_ImageSpec.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *ImageSpec) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_ImageSpec.Merge(m, src) -+} -+func (m *ImageSpec) XXX_Size() int { -+ return m.Size() -+} -+func (m *ImageSpec) XXX_DiscardUnknown() { -+ xxx_messageInfo_ImageSpec.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_ImageSpec proto.InternalMessageInfo -+ -+func (m *ImageSpec) GetImage() string { -+ if m != nil { -+ return m.Image -+ } -+ return "" -+} -+ -+func (m *ImageSpec) GetAnnotations() map[string]string { -+ if m != nil { -+ return m.Annotations -+ } -+ return nil -+} -+ -+type KeyValue struct { -+ Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` -+ Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *KeyValue) Reset() { *m = KeyValue{} } -+func (*KeyValue) ProtoMessage() {} -+func (*KeyValue) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{45} -+} -+func (m *KeyValue) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *KeyValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_KeyValue.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *KeyValue) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_KeyValue.Merge(m, src) -+} -+func (m *KeyValue) XXX_Size() int { -+ return m.Size() -+} -+func (m *KeyValue) XXX_DiscardUnknown() { -+ xxx_messageInfo_KeyValue.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_KeyValue proto.InternalMessageInfo -+ -+func (m *KeyValue) GetKey() string { -+ if m != nil { -+ return m.Key -+ } -+ return "" -+} -+ -+func (m *KeyValue) GetValue() string { -+ if m != nil { -+ return m.Value -+ } -+ return "" -+} -+ -+// LinuxContainerResources specifies Linux specific configuration for -+// resources. -+type LinuxContainerResources struct { -+ // CPU CFS (Completely Fair Scheduler) period. Default: 0 (not specified). -+ CpuPeriod int64 `protobuf:"varint,1,opt,name=cpu_period,json=cpuPeriod,proto3" json:"cpu_period,omitempty"` -+ // CPU CFS (Completely Fair Scheduler) quota. Default: 0 (not specified). -+ CpuQuota int64 `protobuf:"varint,2,opt,name=cpu_quota,json=cpuQuota,proto3" json:"cpu_quota,omitempty"` -+ // CPU shares (relative weight vs. other containers). Default: 0 (not specified). -+ CpuShares int64 `protobuf:"varint,3,opt,name=cpu_shares,json=cpuShares,proto3" json:"cpu_shares,omitempty"` -+ // Memory limit in bytes. Default: 0 (not specified). -+ MemoryLimitInBytes int64 `protobuf:"varint,4,opt,name=memory_limit_in_bytes,json=memoryLimitInBytes,proto3" json:"memory_limit_in_bytes,omitempty"` -+ // OOMScoreAdj adjusts the oom-killer score. Default: 0 (not specified). -+ OomScoreAdj int64 `protobuf:"varint,5,opt,name=oom_score_adj,json=oomScoreAdj,proto3" json:"oom_score_adj,omitempty"` -+ // CpusetCpus constrains the allowed set of logical CPUs. Default: "" (not specified). -+ CpusetCpus string `protobuf:"bytes,6,opt,name=cpuset_cpus,json=cpusetCpus,proto3" json:"cpuset_cpus,omitempty"` -+ // CpusetMems constrains the allowed set of memory nodes. Default: "" (not specified). -+ CpusetMems string `protobuf:"bytes,7,opt,name=cpuset_mems,json=cpusetMems,proto3" json:"cpuset_mems,omitempty"` -+ // List of HugepageLimits to limit the HugeTLB usage of container per page size. Default: nil (not specified). -+ HugepageLimits []*HugepageLimit `protobuf:"bytes,8,rep,name=hugepage_limits,json=hugepageLimits,proto3" json:"hugepage_limits,omitempty"` -+ // Unified resources for cgroup v2. Default: nil (not specified). -+ // Each key/value in the map refers to the cgroup v2. -+ // e.g. "memory.max": "6937202688" or "io.weight": "default 100". -+ Unified map[string]string `protobuf:"bytes,9,rep,name=unified,proto3" json:"unified,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -+ // Memory swap limit in bytes. Default 0 (not specified). -+ MemorySwapLimitInBytes int64 `protobuf:"varint,10,opt,name=memory_swap_limit_in_bytes,json=memorySwapLimitInBytes,proto3" json:"memory_swap_limit_in_bytes,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *LinuxContainerResources) Reset() { *m = LinuxContainerResources{} } -+func (*LinuxContainerResources) ProtoMessage() {} -+func (*LinuxContainerResources) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{46} -+} -+func (m *LinuxContainerResources) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *LinuxContainerResources) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_LinuxContainerResources.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *LinuxContainerResources) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_LinuxContainerResources.Merge(m, src) -+} -+func (m *LinuxContainerResources) XXX_Size() int { -+ return m.Size() -+} -+func (m *LinuxContainerResources) XXX_DiscardUnknown() { -+ xxx_messageInfo_LinuxContainerResources.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_LinuxContainerResources proto.InternalMessageInfo -+ -+func (m *LinuxContainerResources) GetCpuPeriod() int64 { -+ if m != nil { -+ return m.CpuPeriod -+ } -+ return 0 -+} -+ -+func (m *LinuxContainerResources) GetCpuQuota() int64 { -+ if m != nil { -+ return m.CpuQuota -+ } -+ return 0 -+} -+ -+func (m *LinuxContainerResources) GetCpuShares() int64 { -+ if m != nil { -+ return m.CpuShares -+ } -+ return 0 -+} -+ -+func (m *LinuxContainerResources) GetMemoryLimitInBytes() int64 { -+ if m != nil { -+ return m.MemoryLimitInBytes -+ } -+ return 0 -+} -+ -+func (m *LinuxContainerResources) GetOomScoreAdj() int64 { -+ if m != nil { -+ return m.OomScoreAdj -+ } -+ return 0 -+} -+ -+func (m *LinuxContainerResources) GetCpusetCpus() string { -+ if m != nil { -+ return m.CpusetCpus -+ } -+ return "" -+} -+ -+func (m *LinuxContainerResources) GetCpusetMems() string { -+ if m != nil { -+ return m.CpusetMems -+ } -+ return "" -+} -+ -+func (m *LinuxContainerResources) GetHugepageLimits() []*HugepageLimit { -+ if m != nil { -+ return m.HugepageLimits -+ } -+ return nil -+} -+ -+func (m *LinuxContainerResources) GetUnified() map[string]string { -+ if m != nil { -+ return m.Unified -+ } -+ return nil -+} -+ -+func (m *LinuxContainerResources) GetMemorySwapLimitInBytes() int64 { -+ if m != nil { -+ return m.MemorySwapLimitInBytes -+ } -+ return 0 -+} -+ -+// HugepageLimit corresponds to the file`hugetlb..limit_in_byte` in container level cgroup. -+// For example, `PageSize=1GB`, `Limit=1073741824` means setting `1073741824` bytes to hugetlb.1GB.limit_in_bytes. -+type HugepageLimit struct { -+ // The value of PageSize has the format B (2MB, 1GB), -+ // and must match the of the corresponding control file found in `hugetlb..limit_in_bytes`. -+ // The values of are intended to be parsed using base 1024("1KB" = 1024, "1MB" = 1048576, etc). -+ PageSize string `protobuf:"bytes,1,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` -+ // limit in bytes of hugepagesize HugeTLB usage. -+ Limit uint64 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *HugepageLimit) Reset() { *m = HugepageLimit{} } -+func (*HugepageLimit) ProtoMessage() {} -+func (*HugepageLimit) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{47} -+} -+func (m *HugepageLimit) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *HugepageLimit) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_HugepageLimit.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *HugepageLimit) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_HugepageLimit.Merge(m, src) -+} -+func (m *HugepageLimit) XXX_Size() int { -+ return m.Size() -+} -+func (m *HugepageLimit) XXX_DiscardUnknown() { -+ xxx_messageInfo_HugepageLimit.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_HugepageLimit proto.InternalMessageInfo -+ -+func (m *HugepageLimit) GetPageSize() string { -+ if m != nil { -+ return m.PageSize -+ } -+ return "" -+} -+ -+func (m *HugepageLimit) GetLimit() uint64 { -+ if m != nil { -+ return m.Limit -+ } -+ return 0 -+} -+ -+// SELinuxOption are the labels to be applied to the container. -+type SELinuxOption struct { -+ User string `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` -+ Role string `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"` -+ Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` -+ Level string `protobuf:"bytes,4,opt,name=level,proto3" json:"level,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *SELinuxOption) Reset() { *m = SELinuxOption{} } -+func (*SELinuxOption) ProtoMessage() {} -+func (*SELinuxOption) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{48} -+} -+func (m *SELinuxOption) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *SELinuxOption) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_SELinuxOption.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *SELinuxOption) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_SELinuxOption.Merge(m, src) -+} -+func (m *SELinuxOption) XXX_Size() int { -+ return m.Size() -+} -+func (m *SELinuxOption) XXX_DiscardUnknown() { -+ xxx_messageInfo_SELinuxOption.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_SELinuxOption proto.InternalMessageInfo -+ -+func (m *SELinuxOption) GetUser() string { -+ if m != nil { -+ return m.User -+ } -+ return "" -+} -+ -+func (m *SELinuxOption) GetRole() string { -+ if m != nil { -+ return m.Role -+ } -+ return "" -+} -+ -+func (m *SELinuxOption) GetType() string { -+ if m != nil { -+ return m.Type -+ } -+ return "" -+} -+ -+func (m *SELinuxOption) GetLevel() string { -+ if m != nil { -+ return m.Level -+ } -+ return "" -+} -+ -+// Capability contains the container capabilities to add or drop -+// Dropping a capability will drop it from all sets. -+// If a capability is added to only the add_capabilities list then it gets added to permitted, -+// inheritable, effective and bounding sets, i.e. all sets except the ambient set. -+// If a capability is added to only the add_ambient_capabilities list then it gets added to all sets, i.e permitted -+// inheritable, effective, bounding and ambient sets. -+// If a capability is added to add_capabilities and add_ambient_capabilities lists then it gets added to all sets, i.e. -+// permitted, inheritable, effective, bounding and ambient sets. -+type Capability struct { -+ // List of capabilities to add. -+ AddCapabilities []string `protobuf:"bytes,1,rep,name=add_capabilities,json=addCapabilities,proto3" json:"add_capabilities,omitempty"` -+ // List of capabilities to drop. -+ DropCapabilities []string `protobuf:"bytes,2,rep,name=drop_capabilities,json=dropCapabilities,proto3" json:"drop_capabilities,omitempty"` -+ // List of ambient capabilities to add. -+ AddAmbientCapabilities []string `protobuf:"bytes,3,rep,name=add_ambient_capabilities,json=addAmbientCapabilities,proto3" json:"add_ambient_capabilities,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *Capability) Reset() { *m = Capability{} } -+func (*Capability) ProtoMessage() {} -+func (*Capability) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{49} -+} -+func (m *Capability) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *Capability) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_Capability.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *Capability) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_Capability.Merge(m, src) -+} -+func (m *Capability) XXX_Size() int { -+ return m.Size() -+} -+func (m *Capability) XXX_DiscardUnknown() { -+ xxx_messageInfo_Capability.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_Capability proto.InternalMessageInfo -+ -+func (m *Capability) GetAddCapabilities() []string { -+ if m != nil { -+ return m.AddCapabilities -+ } -+ return nil -+} -+ -+func (m *Capability) GetDropCapabilities() []string { -+ if m != nil { -+ return m.DropCapabilities -+ } -+ return nil -+} -+ -+func (m *Capability) GetAddAmbientCapabilities() []string { -+ if m != nil { -+ return m.AddAmbientCapabilities -+ } -+ return nil -+} -+ -+// LinuxContainerSecurityContext holds linux security configuration that will be applied to a container. -+type LinuxContainerSecurityContext struct { -+ // Capabilities to add or drop. -+ Capabilities *Capability `protobuf:"bytes,1,opt,name=capabilities,proto3" json:"capabilities,omitempty"` -+ // If set, run container in privileged mode. -+ // Privileged mode is incompatible with the following options. If -+ // privileged is set, the following features MAY have no effect: -+ // 1. capabilities -+ // 2. selinux_options -+ // 4. seccomp -+ // 5. apparmor -+ // -+ // Privileged mode implies the following specific options are applied: -+ // 1. All capabilities are added. -+ // 2. Sensitive paths, such as kernel module paths within sysfs, are not masked. -+ // 3. Any sysfs and procfs mounts are mounted RW. -+ // 4. AppArmor confinement is not applied. -+ // 5. Seccomp restrictions are not applied. -+ // 6. The device cgroup does not restrict access to any devices. -+ // 7. All devices from the host's /dev are available within the container. -+ // 8. SELinux restrictions are not applied (e.g. label=disabled). -+ Privileged bool `protobuf:"varint,2,opt,name=privileged,proto3" json:"privileged,omitempty"` -+ // Configurations for the container's namespaces. -+ // Only used if the container uses namespace for isolation. -+ NamespaceOptions *NamespaceOption `protobuf:"bytes,3,opt,name=namespace_options,json=namespaceOptions,proto3" json:"namespace_options,omitempty"` -+ // SELinux context to be optionally applied. -+ SelinuxOptions *SELinuxOption `protobuf:"bytes,4,opt,name=selinux_options,json=selinuxOptions,proto3" json:"selinux_options,omitempty"` -+ // UID to run the container process as. Only one of run_as_user and -+ // run_as_username can be specified at a time. -+ RunAsUser *Int64Value `protobuf:"bytes,5,opt,name=run_as_user,json=runAsUser,proto3" json:"run_as_user,omitempty"` -+ // GID to run the container process as. run_as_group should only be specified -+ // when run_as_user or run_as_username is specified; otherwise, the runtime -+ // MUST error. -+ RunAsGroup *Int64Value `protobuf:"bytes,12,opt,name=run_as_group,json=runAsGroup,proto3" json:"run_as_group,omitempty"` -+ // User name to run the container process as. If specified, the user MUST -+ // exist in the container image (i.e. in the /etc/passwd inside the image), -+ // and be resolved there by the runtime; otherwise, the runtime MUST error. -+ RunAsUsername string `protobuf:"bytes,6,opt,name=run_as_username,json=runAsUsername,proto3" json:"run_as_username,omitempty"` -+ // If set, the root filesystem of the container is read-only. -+ ReadonlyRootfs bool `protobuf:"varint,7,opt,name=readonly_rootfs,json=readonlyRootfs,proto3" json:"readonly_rootfs,omitempty"` -+ // List of groups applied to the first process run in the container, in -+ // addition to the container's primary GID. -+ SupplementalGroups []int64 `protobuf:"varint,8,rep,packed,name=supplemental_groups,json=supplementalGroups,proto3" json:"supplemental_groups,omitempty"` -+ // no_new_privs defines if the flag for no_new_privs should be set on the -+ // container. -+ NoNewPrivs bool `protobuf:"varint,11,opt,name=no_new_privs,json=noNewPrivs,proto3" json:"no_new_privs,omitempty"` -+ // masked_paths is a slice of paths that should be masked by the container -+ // runtime, this can be passed directly to the OCI spec. -+ MaskedPaths []string `protobuf:"bytes,13,rep,name=masked_paths,json=maskedPaths,proto3" json:"masked_paths,omitempty"` -+ // readonly_paths is a slice of paths that should be set as readonly by the -+ // container runtime, this can be passed directly to the OCI spec. -+ ReadonlyPaths []string `protobuf:"bytes,14,rep,name=readonly_paths,json=readonlyPaths,proto3" json:"readonly_paths,omitempty"` -+ // Seccomp profile for the container. -+ Seccomp *SecurityProfile `protobuf:"bytes,15,opt,name=seccomp,proto3" json:"seccomp,omitempty"` -+ // AppArmor profile for the container. -+ Apparmor *SecurityProfile `protobuf:"bytes,16,opt,name=apparmor,proto3" json:"apparmor,omitempty"` -+ // AppArmor profile for the container, candidate values are: -+ // - runtime/default: equivalent to not specifying a profile. -+ // - unconfined: no profiles are loaded -+ // - localhost/: profile loaded on the node -+ // (localhost) by name. The possible profile names are detailed at -+ // https://gitlab.com/apparmor/apparmor/-/wikis/AppArmor_Core_Policy_Reference -+ ApparmorProfile string `protobuf:"bytes,9,opt,name=apparmor_profile,json=apparmorProfile,proto3" json:"apparmor_profile,omitempty"` // Deprecated: Do not use. -+ // Seccomp profile for the container, candidate values are: -+ // - runtime/default: the default profile for the container runtime -+ // - unconfined: unconfined profile, ie, no seccomp sandboxing -+ // - localhost/: the profile installed on the node. -+ // is the full path of the profile. -+ // -+ // Default: "", which is identical with unconfined. -+ SeccompProfilePath string `protobuf:"bytes,10,opt,name=seccomp_profile_path,json=seccompProfilePath,proto3" json:"seccomp_profile_path,omitempty"` // Deprecated: Do not use. -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *LinuxContainerSecurityContext) Reset() { *m = LinuxContainerSecurityContext{} } -+func (*LinuxContainerSecurityContext) ProtoMessage() {} -+func (*LinuxContainerSecurityContext) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{50} -+} -+func (m *LinuxContainerSecurityContext) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *LinuxContainerSecurityContext) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_LinuxContainerSecurityContext.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *LinuxContainerSecurityContext) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_LinuxContainerSecurityContext.Merge(m, src) -+} -+func (m *LinuxContainerSecurityContext) XXX_Size() int { -+ return m.Size() -+} -+func (m *LinuxContainerSecurityContext) XXX_DiscardUnknown() { -+ xxx_messageInfo_LinuxContainerSecurityContext.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_LinuxContainerSecurityContext proto.InternalMessageInfo -+ -+func (m *LinuxContainerSecurityContext) GetCapabilities() *Capability { -+ if m != nil { -+ return m.Capabilities -+ } -+ return nil -+} -+ -+func (m *LinuxContainerSecurityContext) GetPrivileged() bool { -+ if m != nil { -+ return m.Privileged -+ } -+ return false -+} -+ -+func (m *LinuxContainerSecurityContext) GetNamespaceOptions() *NamespaceOption { -+ if m != nil { -+ return m.NamespaceOptions -+ } -+ return nil -+} -+ -+func (m *LinuxContainerSecurityContext) GetSelinuxOptions() *SELinuxOption { -+ if m != nil { -+ return m.SelinuxOptions -+ } -+ return nil -+} -+ -+func (m *LinuxContainerSecurityContext) GetRunAsUser() *Int64Value { -+ if m != nil { -+ return m.RunAsUser -+ } -+ return nil -+} -+ -+func (m *LinuxContainerSecurityContext) GetRunAsGroup() *Int64Value { -+ if m != nil { -+ return m.RunAsGroup -+ } -+ return nil -+} -+ -+func (m *LinuxContainerSecurityContext) GetRunAsUsername() string { -+ if m != nil { -+ return m.RunAsUsername -+ } -+ return "" -+} -+ -+func (m *LinuxContainerSecurityContext) GetReadonlyRootfs() bool { -+ if m != nil { -+ return m.ReadonlyRootfs -+ } -+ return false -+} -+ -+func (m *LinuxContainerSecurityContext) GetSupplementalGroups() []int64 { -+ if m != nil { -+ return m.SupplementalGroups -+ } -+ return nil -+} -+ -+func (m *LinuxContainerSecurityContext) GetNoNewPrivs() bool { -+ if m != nil { -+ return m.NoNewPrivs -+ } -+ return false -+} -+ -+func (m *LinuxContainerSecurityContext) GetMaskedPaths() []string { -+ if m != nil { -+ return m.MaskedPaths -+ } -+ return nil -+} -+ -+func (m *LinuxContainerSecurityContext) GetReadonlyPaths() []string { -+ if m != nil { -+ return m.ReadonlyPaths -+ } -+ return nil -+} -+ -+func (m *LinuxContainerSecurityContext) GetSeccomp() *SecurityProfile { -+ if m != nil { -+ return m.Seccomp -+ } -+ return nil -+} -+ -+func (m *LinuxContainerSecurityContext) GetApparmor() *SecurityProfile { -+ if m != nil { -+ return m.Apparmor -+ } -+ return nil -+} -+ -+// Deprecated: Do not use. -+func (m *LinuxContainerSecurityContext) GetApparmorProfile() string { -+ if m != nil { -+ return m.ApparmorProfile -+ } -+ return "" -+} -+ -+// Deprecated: Do not use. -+func (m *LinuxContainerSecurityContext) GetSeccompProfilePath() string { -+ if m != nil { -+ return m.SeccompProfilePath -+ } -+ return "" -+} -+ -+// LinuxContainerConfig contains platform-specific configuration for -+// Linux-based containers. -+type LinuxContainerConfig struct { -+ // Resources specification for the container. -+ Resources *LinuxContainerResources `protobuf:"bytes,1,opt,name=resources,proto3" json:"resources,omitempty"` -+ // LinuxContainerSecurityContext configuration for the container. -+ SecurityContext *LinuxContainerSecurityContext `protobuf:"bytes,2,opt,name=security_context,json=securityContext,proto3" json:"security_context,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *LinuxContainerConfig) Reset() { *m = LinuxContainerConfig{} } -+func (*LinuxContainerConfig) ProtoMessage() {} -+func (*LinuxContainerConfig) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{51} -+} -+func (m *LinuxContainerConfig) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *LinuxContainerConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_LinuxContainerConfig.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *LinuxContainerConfig) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_LinuxContainerConfig.Merge(m, src) -+} -+func (m *LinuxContainerConfig) XXX_Size() int { -+ return m.Size() -+} -+func (m *LinuxContainerConfig) XXX_DiscardUnknown() { -+ xxx_messageInfo_LinuxContainerConfig.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_LinuxContainerConfig proto.InternalMessageInfo -+ -+func (m *LinuxContainerConfig) GetResources() *LinuxContainerResources { -+ if m != nil { -+ return m.Resources -+ } -+ return nil -+} -+ -+func (m *LinuxContainerConfig) GetSecurityContext() *LinuxContainerSecurityContext { -+ if m != nil { -+ return m.SecurityContext -+ } -+ return nil -+} -+ -+// WindowsSandboxSecurityContext holds platform-specific configurations that will be -+// applied to a sandbox. -+// These settings will only apply to the sandbox container. -+type WindowsSandboxSecurityContext struct { -+ // User name to run the container process as. If specified, the user MUST -+ // exist in the container image and be resolved there by the runtime; -+ // otherwise, the runtime MUST return error. -+ RunAsUsername string `protobuf:"bytes,1,opt,name=run_as_username,json=runAsUsername,proto3" json:"run_as_username,omitempty"` -+ // The contents of the GMSA credential spec to use to run this container. -+ CredentialSpec string `protobuf:"bytes,2,opt,name=credential_spec,json=credentialSpec,proto3" json:"credential_spec,omitempty"` -+ // Indicates whether the container requested to run as a HostProcess container. -+ HostProcess bool `protobuf:"varint,3,opt,name=host_process,json=hostProcess,proto3" json:"host_process,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *WindowsSandboxSecurityContext) Reset() { *m = WindowsSandboxSecurityContext{} } -+func (*WindowsSandboxSecurityContext) ProtoMessage() {} -+func (*WindowsSandboxSecurityContext) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{52} -+} -+func (m *WindowsSandboxSecurityContext) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *WindowsSandboxSecurityContext) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_WindowsSandboxSecurityContext.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *WindowsSandboxSecurityContext) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_WindowsSandboxSecurityContext.Merge(m, src) -+} -+func (m *WindowsSandboxSecurityContext) XXX_Size() int { -+ return m.Size() -+} -+func (m *WindowsSandboxSecurityContext) XXX_DiscardUnknown() { -+ xxx_messageInfo_WindowsSandboxSecurityContext.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_WindowsSandboxSecurityContext proto.InternalMessageInfo -+ -+func (m *WindowsSandboxSecurityContext) GetRunAsUsername() string { -+ if m != nil { -+ return m.RunAsUsername -+ } -+ return "" -+} -+ -+func (m *WindowsSandboxSecurityContext) GetCredentialSpec() string { -+ if m != nil { -+ return m.CredentialSpec -+ } -+ return "" -+} -+ -+func (m *WindowsSandboxSecurityContext) GetHostProcess() bool { -+ if m != nil { -+ return m.HostProcess -+ } -+ return false -+} -+ -+// WindowsPodSandboxConfig holds platform-specific configurations for Windows -+// host platforms and Windows-based containers. -+type WindowsPodSandboxConfig struct { -+ // WindowsSandboxSecurityContext holds sandbox security attributes. -+ SecurityContext *WindowsSandboxSecurityContext `protobuf:"bytes,1,opt,name=security_context,json=securityContext,proto3" json:"security_context,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *WindowsPodSandboxConfig) Reset() { *m = WindowsPodSandboxConfig{} } -+func (*WindowsPodSandboxConfig) ProtoMessage() {} -+func (*WindowsPodSandboxConfig) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{53} -+} -+func (m *WindowsPodSandboxConfig) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *WindowsPodSandboxConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_WindowsPodSandboxConfig.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *WindowsPodSandboxConfig) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_WindowsPodSandboxConfig.Merge(m, src) -+} -+func (m *WindowsPodSandboxConfig) XXX_Size() int { -+ return m.Size() -+} -+func (m *WindowsPodSandboxConfig) XXX_DiscardUnknown() { -+ xxx_messageInfo_WindowsPodSandboxConfig.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_WindowsPodSandboxConfig proto.InternalMessageInfo -+ -+func (m *WindowsPodSandboxConfig) GetSecurityContext() *WindowsSandboxSecurityContext { -+ if m != nil { -+ return m.SecurityContext -+ } -+ return nil -+} -+ -+// WindowsContainerSecurityContext holds windows security configuration that will be applied to a container. -+type WindowsContainerSecurityContext struct { -+ // User name to run the container process as. If specified, the user MUST -+ // exist in the container image and be resolved there by the runtime; -+ // otherwise, the runtime MUST return error. -+ RunAsUsername string `protobuf:"bytes,1,opt,name=run_as_username,json=runAsUsername,proto3" json:"run_as_username,omitempty"` -+ // The contents of the GMSA credential spec to use to run this container. -+ CredentialSpec string `protobuf:"bytes,2,opt,name=credential_spec,json=credentialSpec,proto3" json:"credential_spec,omitempty"` -+ // Indicates whether a container is to be run as a HostProcess container. -+ HostProcess bool `protobuf:"varint,3,opt,name=host_process,json=hostProcess,proto3" json:"host_process,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *WindowsContainerSecurityContext) Reset() { *m = WindowsContainerSecurityContext{} } -+func (*WindowsContainerSecurityContext) ProtoMessage() {} -+func (*WindowsContainerSecurityContext) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{54} -+} -+func (m *WindowsContainerSecurityContext) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *WindowsContainerSecurityContext) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_WindowsContainerSecurityContext.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *WindowsContainerSecurityContext) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_WindowsContainerSecurityContext.Merge(m, src) -+} -+func (m *WindowsContainerSecurityContext) XXX_Size() int { -+ return m.Size() -+} -+func (m *WindowsContainerSecurityContext) XXX_DiscardUnknown() { -+ xxx_messageInfo_WindowsContainerSecurityContext.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_WindowsContainerSecurityContext proto.InternalMessageInfo -+ -+func (m *WindowsContainerSecurityContext) GetRunAsUsername() string { -+ if m != nil { -+ return m.RunAsUsername -+ } -+ return "" -+} -+ -+func (m *WindowsContainerSecurityContext) GetCredentialSpec() string { -+ if m != nil { -+ return m.CredentialSpec -+ } -+ return "" -+} -+ -+func (m *WindowsContainerSecurityContext) GetHostProcess() bool { -+ if m != nil { -+ return m.HostProcess -+ } -+ return false -+} -+ -+// WindowsContainerConfig contains platform-specific configuration for -+// Windows-based containers. -+type WindowsContainerConfig struct { -+ // Resources specification for the container. -+ Resources *WindowsContainerResources `protobuf:"bytes,1,opt,name=resources,proto3" json:"resources,omitempty"` -+ // WindowsContainerSecurityContext configuration for the container. -+ SecurityContext *WindowsContainerSecurityContext `protobuf:"bytes,2,opt,name=security_context,json=securityContext,proto3" json:"security_context,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *WindowsContainerConfig) Reset() { *m = WindowsContainerConfig{} } -+func (*WindowsContainerConfig) ProtoMessage() {} -+func (*WindowsContainerConfig) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{55} -+} -+func (m *WindowsContainerConfig) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *WindowsContainerConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_WindowsContainerConfig.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *WindowsContainerConfig) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_WindowsContainerConfig.Merge(m, src) -+} -+func (m *WindowsContainerConfig) XXX_Size() int { -+ return m.Size() -+} -+func (m *WindowsContainerConfig) XXX_DiscardUnknown() { -+ xxx_messageInfo_WindowsContainerConfig.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_WindowsContainerConfig proto.InternalMessageInfo -+ -+func (m *WindowsContainerConfig) GetResources() *WindowsContainerResources { -+ if m != nil { -+ return m.Resources -+ } -+ return nil -+} -+ -+func (m *WindowsContainerConfig) GetSecurityContext() *WindowsContainerSecurityContext { -+ if m != nil { -+ return m.SecurityContext -+ } -+ return nil -+} -+ -+// WindowsContainerResources specifies Windows specific configuration for -+// resources. -+type WindowsContainerResources struct { -+ // CPU shares (relative weight vs. other containers). Default: 0 (not specified). -+ CpuShares int64 `protobuf:"varint,1,opt,name=cpu_shares,json=cpuShares,proto3" json:"cpu_shares,omitempty"` -+ // Number of CPUs available to the container. Default: 0 (not specified). -+ CpuCount int64 `protobuf:"varint,2,opt,name=cpu_count,json=cpuCount,proto3" json:"cpu_count,omitempty"` -+ // Specifies the portion of processor cycles that this container can use as a percentage times 100. -+ CpuMaximum int64 `protobuf:"varint,3,opt,name=cpu_maximum,json=cpuMaximum,proto3" json:"cpu_maximum,omitempty"` -+ // Memory limit in bytes. Default: 0 (not specified). -+ MemoryLimitInBytes int64 `protobuf:"varint,4,opt,name=memory_limit_in_bytes,json=memoryLimitInBytes,proto3" json:"memory_limit_in_bytes,omitempty"` -+ // Specifies the size of the rootfs / scratch space in bytes to be configured for this container. Default: 0 (not specified). -+ RootfsSizeInBytes int64 `protobuf:"varint,5,opt,name=rootfs_size_in_bytes,json=rootfsSizeInBytes,proto3" json:"rootfs_size_in_bytes,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *WindowsContainerResources) Reset() { *m = WindowsContainerResources{} } -+func (*WindowsContainerResources) ProtoMessage() {} -+func (*WindowsContainerResources) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{56} -+} -+func (m *WindowsContainerResources) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *WindowsContainerResources) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_WindowsContainerResources.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *WindowsContainerResources) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_WindowsContainerResources.Merge(m, src) -+} -+func (m *WindowsContainerResources) XXX_Size() int { -+ return m.Size() -+} -+func (m *WindowsContainerResources) XXX_DiscardUnknown() { -+ xxx_messageInfo_WindowsContainerResources.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_WindowsContainerResources proto.InternalMessageInfo -+ -+func (m *WindowsContainerResources) GetCpuShares() int64 { -+ if m != nil { -+ return m.CpuShares -+ } -+ return 0 -+} -+ -+func (m *WindowsContainerResources) GetCpuCount() int64 { -+ if m != nil { -+ return m.CpuCount -+ } -+ return 0 -+} -+ -+func (m *WindowsContainerResources) GetCpuMaximum() int64 { -+ if m != nil { -+ return m.CpuMaximum -+ } -+ return 0 -+} -+ -+func (m *WindowsContainerResources) GetMemoryLimitInBytes() int64 { -+ if m != nil { -+ return m.MemoryLimitInBytes -+ } -+ return 0 -+} -+ -+func (m *WindowsContainerResources) GetRootfsSizeInBytes() int64 { -+ if m != nil { -+ return m.RootfsSizeInBytes -+ } -+ return 0 -+} -+ -+// ContainerMetadata holds all necessary information for building the container -+// name. The container runtime is encouraged to expose the metadata in its user -+// interface for better user experience. E.g., runtime can construct a unique -+// container name based on the metadata. Note that (name, attempt) is unique -+// within a sandbox for the entire lifetime of the sandbox. -+type ContainerMetadata struct { -+ // Name of the container. Same as the container name in the PodSpec. -+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` -+ // Attempt number of creating the container. Default: 0. -+ Attempt uint32 `protobuf:"varint,2,opt,name=attempt,proto3" json:"attempt,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *ContainerMetadata) Reset() { *m = ContainerMetadata{} } -+func (*ContainerMetadata) ProtoMessage() {} -+func (*ContainerMetadata) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{57} -+} -+func (m *ContainerMetadata) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *ContainerMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_ContainerMetadata.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *ContainerMetadata) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_ContainerMetadata.Merge(m, src) -+} -+func (m *ContainerMetadata) XXX_Size() int { -+ return m.Size() -+} -+func (m *ContainerMetadata) XXX_DiscardUnknown() { -+ xxx_messageInfo_ContainerMetadata.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_ContainerMetadata proto.InternalMessageInfo -+ -+func (m *ContainerMetadata) GetName() string { -+ if m != nil { -+ return m.Name -+ } -+ return "" -+} -+ -+func (m *ContainerMetadata) GetAttempt() uint32 { -+ if m != nil { -+ return m.Attempt -+ } -+ return 0 -+} -+ -+// Device specifies a host device to mount into a container. -+type Device struct { -+ // Path of the device within the container. -+ ContainerPath string `protobuf:"bytes,1,opt,name=container_path,json=containerPath,proto3" json:"container_path,omitempty"` -+ // Path of the device on the host. -+ HostPath string `protobuf:"bytes,2,opt,name=host_path,json=hostPath,proto3" json:"host_path,omitempty"` -+ // Cgroups permissions of the device, candidates are one or more of -+ // * r - allows container to read from the specified device. -+ // * w - allows container to write to the specified device. -+ // * m - allows container to create device files that do not yet exist. -+ Permissions string `protobuf:"bytes,3,opt,name=permissions,proto3" json:"permissions,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *Device) Reset() { *m = Device{} } -+func (*Device) ProtoMessage() {} -+func (*Device) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{58} -+} -+func (m *Device) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *Device) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_Device.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *Device) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_Device.Merge(m, src) -+} -+func (m *Device) XXX_Size() int { -+ return m.Size() -+} -+func (m *Device) XXX_DiscardUnknown() { -+ xxx_messageInfo_Device.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_Device proto.InternalMessageInfo -+ -+func (m *Device) GetContainerPath() string { -+ if m != nil { -+ return m.ContainerPath -+ } -+ return "" -+} -+ -+func (m *Device) GetHostPath() string { -+ if m != nil { -+ return m.HostPath -+ } -+ return "" -+} -+ -+func (m *Device) GetPermissions() string { -+ if m != nil { -+ return m.Permissions -+ } -+ return "" -+} -+ -+// ContainerConfig holds all the required and optional fields for creating a -+// container. -+type ContainerConfig struct { -+ // Metadata of the container. This information will uniquely identify the -+ // container, and the runtime should leverage this to ensure correct -+ // operation. The runtime may also use this information to improve UX, such -+ // as by constructing a readable name. -+ Metadata *ContainerMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` -+ // Image to use. -+ Image *ImageSpec `protobuf:"bytes,2,opt,name=image,proto3" json:"image,omitempty"` -+ // Command to execute (i.e., entrypoint for docker) -+ Command []string `protobuf:"bytes,3,rep,name=command,proto3" json:"command,omitempty"` -+ // Args for the Command (i.e., command for docker) -+ Args []string `protobuf:"bytes,4,rep,name=args,proto3" json:"args,omitempty"` -+ // Current working directory of the command. -+ WorkingDir string `protobuf:"bytes,5,opt,name=working_dir,json=workingDir,proto3" json:"working_dir,omitempty"` -+ // List of environment variable to set in the container. -+ Envs []*KeyValue `protobuf:"bytes,6,rep,name=envs,proto3" json:"envs,omitempty"` -+ // Mounts for the container. -+ Mounts []*Mount `protobuf:"bytes,7,rep,name=mounts,proto3" json:"mounts,omitempty"` -+ // Devices for the container. -+ Devices []*Device `protobuf:"bytes,8,rep,name=devices,proto3" json:"devices,omitempty"` -+ // Key-value pairs that may be used to scope and select individual resources. -+ // Label keys are of the form: -+ // -+ // label-key ::= prefixed-name | name -+ // prefixed-name ::= prefix '/' name -+ // prefix ::= DNS_SUBDOMAIN -+ // name ::= DNS_LABEL -+ Labels map[string]string `protobuf:"bytes,9,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -+ // Unstructured key-value map that may be used by the kubelet to store and -+ // retrieve arbitrary metadata. -+ // -+ // Annotations MUST NOT be altered by the runtime; the annotations stored -+ // here MUST be returned in the ContainerStatus associated with the container -+ // this ContainerConfig creates. -+ // -+ // In general, in order to preserve a well-defined interface between the -+ // kubelet and the container runtime, annotations SHOULD NOT influence -+ // runtime behaviour. -+ Annotations map[string]string `protobuf:"bytes,10,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -+ // Path relative to PodSandboxConfig.LogDirectory for container to store -+ // the log (STDOUT and STDERR) on the host. -+ // E.g., -+ // -+ // PodSandboxConfig.LogDirectory = `/var/log/pods//` -+ // ContainerConfig.LogPath = `containerName/Instance#.log` -+ // -+ // WARNING: Log management and how kubelet should interface with the -+ // container logs are under active discussion in -+ // https://issues.k8s.io/24677. There *may* be future change of direction -+ // for logging as the discussion carries on. -+ LogPath string `protobuf:"bytes,11,opt,name=log_path,json=logPath,proto3" json:"log_path,omitempty"` -+ // Variables for interactive containers, these have very specialized -+ // use-cases (e.g. debugging). -+ Stdin bool `protobuf:"varint,12,opt,name=stdin,proto3" json:"stdin,omitempty"` -+ StdinOnce bool `protobuf:"varint,13,opt,name=stdin_once,json=stdinOnce,proto3" json:"stdin_once,omitempty"` -+ Tty bool `protobuf:"varint,14,opt,name=tty,proto3" json:"tty,omitempty"` -+ // Configuration specific to Linux containers. -+ Linux *LinuxContainerConfig `protobuf:"bytes,15,opt,name=linux,proto3" json:"linux,omitempty"` -+ // Configuration specific to Windows containers. -+ Windows *WindowsContainerConfig `protobuf:"bytes,16,opt,name=windows,proto3" json:"windows,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *ContainerConfig) Reset() { *m = ContainerConfig{} } -+func (*ContainerConfig) ProtoMessage() {} -+func (*ContainerConfig) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{59} -+} -+func (m *ContainerConfig) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *ContainerConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_ContainerConfig.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *ContainerConfig) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_ContainerConfig.Merge(m, src) -+} -+func (m *ContainerConfig) XXX_Size() int { -+ return m.Size() -+} -+func (m *ContainerConfig) XXX_DiscardUnknown() { -+ xxx_messageInfo_ContainerConfig.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_ContainerConfig proto.InternalMessageInfo -+ -+func (m *ContainerConfig) GetMetadata() *ContainerMetadata { -+ if m != nil { -+ return m.Metadata -+ } -+ return nil -+} -+ -+func (m *ContainerConfig) GetImage() *ImageSpec { -+ if m != nil { -+ return m.Image -+ } -+ return nil -+} -+ -+func (m *ContainerConfig) GetCommand() []string { -+ if m != nil { -+ return m.Command -+ } -+ return nil -+} -+ -+func (m *ContainerConfig) GetArgs() []string { -+ if m != nil { -+ return m.Args -+ } -+ return nil -+} -+ -+func (m *ContainerConfig) GetWorkingDir() string { -+ if m != nil { -+ return m.WorkingDir -+ } -+ return "" -+} -+ -+func (m *ContainerConfig) GetEnvs() []*KeyValue { -+ if m != nil { -+ return m.Envs -+ } -+ return nil -+} -+ -+func (m *ContainerConfig) GetMounts() []*Mount { -+ if m != nil { -+ return m.Mounts -+ } -+ return nil -+} -+ -+func (m *ContainerConfig) GetDevices() []*Device { -+ if m != nil { -+ return m.Devices -+ } -+ return nil -+} -+ -+func (m *ContainerConfig) GetLabels() map[string]string { -+ if m != nil { -+ return m.Labels -+ } -+ return nil -+} -+ -+func (m *ContainerConfig) GetAnnotations() map[string]string { -+ if m != nil { -+ return m.Annotations -+ } -+ return nil -+} -+ -+func (m *ContainerConfig) GetLogPath() string { -+ if m != nil { -+ return m.LogPath -+ } -+ return "" -+} -+ -+func (m *ContainerConfig) GetStdin() bool { -+ if m != nil { -+ return m.Stdin -+ } -+ return false -+} -+ -+func (m *ContainerConfig) GetStdinOnce() bool { -+ if m != nil { -+ return m.StdinOnce -+ } -+ return false -+} -+ -+func (m *ContainerConfig) GetTty() bool { -+ if m != nil { -+ return m.Tty -+ } -+ return false -+} -+ -+func (m *ContainerConfig) GetLinux() *LinuxContainerConfig { -+ if m != nil { -+ return m.Linux -+ } -+ return nil -+} -+ -+func (m *ContainerConfig) GetWindows() *WindowsContainerConfig { -+ if m != nil { -+ return m.Windows -+ } -+ return nil -+} -+ -+type CreateContainerRequest struct { -+ // ID of the PodSandbox in which the container should be created. -+ PodSandboxId string `protobuf:"bytes,1,opt,name=pod_sandbox_id,json=podSandboxId,proto3" json:"pod_sandbox_id,omitempty"` -+ // Config of the container. -+ Config *ContainerConfig `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"` -+ // Config of the PodSandbox. This is the same config that was passed -+ // to RunPodSandboxRequest to create the PodSandbox. It is passed again -+ // here just for easy reference. The PodSandboxConfig is immutable and -+ // remains the same throughout the lifetime of the pod. -+ SandboxConfig *PodSandboxConfig `protobuf:"bytes,3,opt,name=sandbox_config,json=sandboxConfig,proto3" json:"sandbox_config,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *CreateContainerRequest) Reset() { *m = CreateContainerRequest{} } -+func (*CreateContainerRequest) ProtoMessage() {} -+func (*CreateContainerRequest) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{60} -+} -+func (m *CreateContainerRequest) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *CreateContainerRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_CreateContainerRequest.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *CreateContainerRequest) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_CreateContainerRequest.Merge(m, src) -+} -+func (m *CreateContainerRequest) XXX_Size() int { -+ return m.Size() -+} -+func (m *CreateContainerRequest) XXX_DiscardUnknown() { -+ xxx_messageInfo_CreateContainerRequest.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_CreateContainerRequest proto.InternalMessageInfo -+ -+func (m *CreateContainerRequest) GetPodSandboxId() string { -+ if m != nil { -+ return m.PodSandboxId -+ } -+ return "" -+} -+ -+func (m *CreateContainerRequest) GetConfig() *ContainerConfig { -+ if m != nil { -+ return m.Config -+ } -+ return nil -+} -+ -+func (m *CreateContainerRequest) GetSandboxConfig() *PodSandboxConfig { -+ if m != nil { -+ return m.SandboxConfig -+ } -+ return nil -+} -+ -+type CreateContainerResponse struct { -+ // ID of the created container. -+ ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *CreateContainerResponse) Reset() { *m = CreateContainerResponse{} } -+func (*CreateContainerResponse) ProtoMessage() {} -+func (*CreateContainerResponse) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{61} -+} -+func (m *CreateContainerResponse) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *CreateContainerResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_CreateContainerResponse.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *CreateContainerResponse) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_CreateContainerResponse.Merge(m, src) -+} -+func (m *CreateContainerResponse) XXX_Size() int { -+ return m.Size() -+} -+func (m *CreateContainerResponse) XXX_DiscardUnknown() { -+ xxx_messageInfo_CreateContainerResponse.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_CreateContainerResponse proto.InternalMessageInfo -+ -+func (m *CreateContainerResponse) GetContainerId() string { -+ if m != nil { -+ return m.ContainerId -+ } -+ return "" -+} -+ -+type StartContainerRequest struct { -+ // ID of the container to start. -+ ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *StartContainerRequest) Reset() { *m = StartContainerRequest{} } -+func (*StartContainerRequest) ProtoMessage() {} -+func (*StartContainerRequest) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{62} -+} -+func (m *StartContainerRequest) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *StartContainerRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_StartContainerRequest.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *StartContainerRequest) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_StartContainerRequest.Merge(m, src) -+} -+func (m *StartContainerRequest) XXX_Size() int { -+ return m.Size() -+} -+func (m *StartContainerRequest) XXX_DiscardUnknown() { -+ xxx_messageInfo_StartContainerRequest.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_StartContainerRequest proto.InternalMessageInfo -+ -+func (m *StartContainerRequest) GetContainerId() string { -+ if m != nil { -+ return m.ContainerId -+ } -+ return "" -+} -+ -+type StartContainerResponse struct { -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *StartContainerResponse) Reset() { *m = StartContainerResponse{} } -+func (*StartContainerResponse) ProtoMessage() {} -+func (*StartContainerResponse) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{63} -+} -+func (m *StartContainerResponse) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *StartContainerResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_StartContainerResponse.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *StartContainerResponse) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_StartContainerResponse.Merge(m, src) -+} -+func (m *StartContainerResponse) XXX_Size() int { -+ return m.Size() -+} -+func (m *StartContainerResponse) XXX_DiscardUnknown() { -+ xxx_messageInfo_StartContainerResponse.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_StartContainerResponse proto.InternalMessageInfo -+ -+type StopContainerRequest struct { -+ // ID of the container to stop. -+ ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` -+ // Timeout in seconds to wait for the container to stop before forcibly -+ // terminating it. Default: 0 (forcibly terminate the container immediately) -+ Timeout int64 `protobuf:"varint,2,opt,name=timeout,proto3" json:"timeout,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *StopContainerRequest) Reset() { *m = StopContainerRequest{} } -+func (*StopContainerRequest) ProtoMessage() {} -+func (*StopContainerRequest) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{64} -+} -+func (m *StopContainerRequest) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *StopContainerRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_StopContainerRequest.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *StopContainerRequest) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_StopContainerRequest.Merge(m, src) -+} -+func (m *StopContainerRequest) XXX_Size() int { -+ return m.Size() -+} -+func (m *StopContainerRequest) XXX_DiscardUnknown() { -+ xxx_messageInfo_StopContainerRequest.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_StopContainerRequest proto.InternalMessageInfo -+ -+func (m *StopContainerRequest) GetContainerId() string { -+ if m != nil { -+ return m.ContainerId -+ } -+ return "" -+} -+ -+func (m *StopContainerRequest) GetTimeout() int64 { -+ if m != nil { -+ return m.Timeout -+ } -+ return 0 -+} -+ -+type StopContainerResponse struct { -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *StopContainerResponse) Reset() { *m = StopContainerResponse{} } -+func (*StopContainerResponse) ProtoMessage() {} -+func (*StopContainerResponse) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{65} -+} -+func (m *StopContainerResponse) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *StopContainerResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_StopContainerResponse.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *StopContainerResponse) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_StopContainerResponse.Merge(m, src) -+} -+func (m *StopContainerResponse) XXX_Size() int { -+ return m.Size() -+} -+func (m *StopContainerResponse) XXX_DiscardUnknown() { -+ xxx_messageInfo_StopContainerResponse.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_StopContainerResponse proto.InternalMessageInfo -+ -+type RemoveContainerRequest struct { -+ // ID of the container to remove. -+ ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *RemoveContainerRequest) Reset() { *m = RemoveContainerRequest{} } -+func (*RemoveContainerRequest) ProtoMessage() {} -+func (*RemoveContainerRequest) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{66} -+} -+func (m *RemoveContainerRequest) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *RemoveContainerRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_RemoveContainerRequest.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *RemoveContainerRequest) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_RemoveContainerRequest.Merge(m, src) -+} -+func (m *RemoveContainerRequest) XXX_Size() int { -+ return m.Size() -+} -+func (m *RemoveContainerRequest) XXX_DiscardUnknown() { -+ xxx_messageInfo_RemoveContainerRequest.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_RemoveContainerRequest proto.InternalMessageInfo -+ -+func (m *RemoveContainerRequest) GetContainerId() string { -+ if m != nil { -+ return m.ContainerId -+ } -+ return "" -+} -+ -+type RemoveContainerResponse struct { -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *RemoveContainerResponse) Reset() { *m = RemoveContainerResponse{} } -+func (*RemoveContainerResponse) ProtoMessage() {} -+func (*RemoveContainerResponse) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{67} -+} -+func (m *RemoveContainerResponse) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *RemoveContainerResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_RemoveContainerResponse.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *RemoveContainerResponse) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_RemoveContainerResponse.Merge(m, src) -+} -+func (m *RemoveContainerResponse) XXX_Size() int { -+ return m.Size() -+} -+func (m *RemoveContainerResponse) XXX_DiscardUnknown() { -+ xxx_messageInfo_RemoveContainerResponse.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_RemoveContainerResponse proto.InternalMessageInfo -+ -+// ContainerStateValue is the wrapper of ContainerState. -+type ContainerStateValue struct { -+ // State of the container. -+ State ContainerState `protobuf:"varint,1,opt,name=state,proto3,enum=runtime.v1.ContainerState" json:"state,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *ContainerStateValue) Reset() { *m = ContainerStateValue{} } -+func (*ContainerStateValue) ProtoMessage() {} -+func (*ContainerStateValue) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{68} -+} -+func (m *ContainerStateValue) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *ContainerStateValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_ContainerStateValue.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *ContainerStateValue) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_ContainerStateValue.Merge(m, src) -+} -+func (m *ContainerStateValue) XXX_Size() int { -+ return m.Size() -+} -+func (m *ContainerStateValue) XXX_DiscardUnknown() { -+ xxx_messageInfo_ContainerStateValue.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_ContainerStateValue proto.InternalMessageInfo -+ -+func (m *ContainerStateValue) GetState() ContainerState { -+ if m != nil { -+ return m.State -+ } -+ return ContainerState_CONTAINER_CREATED -+} -+ -+// ContainerFilter is used to filter containers. -+// All those fields are combined with 'AND' -+type ContainerFilter struct { -+ // ID of the container. -+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` -+ // State of the container. -+ State *ContainerStateValue `protobuf:"bytes,2,opt,name=state,proto3" json:"state,omitempty"` -+ // ID of the PodSandbox. -+ PodSandboxId string `protobuf:"bytes,3,opt,name=pod_sandbox_id,json=podSandboxId,proto3" json:"pod_sandbox_id,omitempty"` -+ // LabelSelector to select matches. -+ // Only api.MatchLabels is supported for now and the requirements -+ // are ANDed. MatchExpressions is not supported yet. -+ LabelSelector map[string]string `protobuf:"bytes,4,rep,name=label_selector,json=labelSelector,proto3" json:"label_selector,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *ContainerFilter) Reset() { *m = ContainerFilter{} } -+func (*ContainerFilter) ProtoMessage() {} -+func (*ContainerFilter) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{69} -+} -+func (m *ContainerFilter) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *ContainerFilter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_ContainerFilter.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *ContainerFilter) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_ContainerFilter.Merge(m, src) -+} -+func (m *ContainerFilter) XXX_Size() int { -+ return m.Size() -+} -+func (m *ContainerFilter) XXX_DiscardUnknown() { -+ xxx_messageInfo_ContainerFilter.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_ContainerFilter proto.InternalMessageInfo -+ -+func (m *ContainerFilter) GetId() string { -+ if m != nil { -+ return m.Id -+ } -+ return "" -+} -+ -+func (m *ContainerFilter) GetState() *ContainerStateValue { -+ if m != nil { -+ return m.State -+ } -+ return nil -+} -+ -+func (m *ContainerFilter) GetPodSandboxId() string { -+ if m != nil { -+ return m.PodSandboxId -+ } -+ return "" -+} -+ -+func (m *ContainerFilter) GetLabelSelector() map[string]string { -+ if m != nil { -+ return m.LabelSelector -+ } -+ return nil -+} -+ -+type ListContainersRequest struct { -+ Filter *ContainerFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *ListContainersRequest) Reset() { *m = ListContainersRequest{} } -+func (*ListContainersRequest) ProtoMessage() {} -+func (*ListContainersRequest) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{70} -+} -+func (m *ListContainersRequest) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *ListContainersRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_ListContainersRequest.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *ListContainersRequest) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_ListContainersRequest.Merge(m, src) -+} -+func (m *ListContainersRequest) XXX_Size() int { -+ return m.Size() -+} -+func (m *ListContainersRequest) XXX_DiscardUnknown() { -+ xxx_messageInfo_ListContainersRequest.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_ListContainersRequest proto.InternalMessageInfo -+ -+func (m *ListContainersRequest) GetFilter() *ContainerFilter { -+ if m != nil { -+ return m.Filter -+ } -+ return nil -+} -+ -+// Container provides the runtime information for a container, such as ID, hash, -+// state of the container. -+type Container struct { -+ // ID of the container, used by the container runtime to identify -+ // a container. -+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` -+ // ID of the sandbox to which this container belongs. -+ PodSandboxId string `protobuf:"bytes,2,opt,name=pod_sandbox_id,json=podSandboxId,proto3" json:"pod_sandbox_id,omitempty"` -+ // Metadata of the container. -+ Metadata *ContainerMetadata `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata,omitempty"` -+ // Spec of the image. -+ Image *ImageSpec `protobuf:"bytes,4,opt,name=image,proto3" json:"image,omitempty"` -+ // Reference to the image in use. For most runtimes, this should be an -+ // image ID. -+ ImageRef string `protobuf:"bytes,5,opt,name=image_ref,json=imageRef,proto3" json:"image_ref,omitempty"` -+ // State of the container. -+ State ContainerState `protobuf:"varint,6,opt,name=state,proto3,enum=runtime.v1.ContainerState" json:"state,omitempty"` -+ // Creation time of the container in nanoseconds. -+ CreatedAt int64 `protobuf:"varint,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` -+ // Key-value pairs that may be used to scope and select individual resources. -+ Labels map[string]string `protobuf:"bytes,8,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -+ // Unstructured key-value map holding arbitrary metadata. -+ // Annotations MUST NOT be altered by the runtime; the value of this field -+ // MUST be identical to that of the corresponding ContainerConfig used to -+ // instantiate this Container. -+ Annotations map[string]string `protobuf:"bytes,9,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *Container) Reset() { *m = Container{} } -+func (*Container) ProtoMessage() {} -+func (*Container) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{71} -+} -+func (m *Container) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *Container) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_Container.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *Container) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_Container.Merge(m, src) -+} -+func (m *Container) XXX_Size() int { -+ return m.Size() -+} -+func (m *Container) XXX_DiscardUnknown() { -+ xxx_messageInfo_Container.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_Container proto.InternalMessageInfo -+ -+func (m *Container) GetId() string { -+ if m != nil { -+ return m.Id -+ } -+ return "" -+} -+ -+func (m *Container) GetPodSandboxId() string { -+ if m != nil { -+ return m.PodSandboxId -+ } -+ return "" -+} -+ -+func (m *Container) GetMetadata() *ContainerMetadata { -+ if m != nil { -+ return m.Metadata -+ } -+ return nil -+} -+ -+func (m *Container) GetImage() *ImageSpec { -+ if m != nil { -+ return m.Image -+ } -+ return nil -+} -+ -+func (m *Container) GetImageRef() string { -+ if m != nil { -+ return m.ImageRef -+ } -+ return "" -+} -+ -+func (m *Container) GetState() ContainerState { -+ if m != nil { -+ return m.State -+ } -+ return ContainerState_CONTAINER_CREATED -+} -+ -+func (m *Container) GetCreatedAt() int64 { -+ if m != nil { -+ return m.CreatedAt -+ } -+ return 0 -+} -+ -+func (m *Container) GetLabels() map[string]string { -+ if m != nil { -+ return m.Labels -+ } -+ return nil -+} -+ -+func (m *Container) GetAnnotations() map[string]string { -+ if m != nil { -+ return m.Annotations -+ } -+ return nil -+} -+ -+type ListContainersResponse struct { -+ // List of containers. -+ Containers []*Container `protobuf:"bytes,1,rep,name=containers,proto3" json:"containers,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *ListContainersResponse) Reset() { *m = ListContainersResponse{} } -+func (*ListContainersResponse) ProtoMessage() {} -+func (*ListContainersResponse) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{72} -+} -+func (m *ListContainersResponse) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *ListContainersResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_ListContainersResponse.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *ListContainersResponse) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_ListContainersResponse.Merge(m, src) -+} -+func (m *ListContainersResponse) XXX_Size() int { -+ return m.Size() -+} -+func (m *ListContainersResponse) XXX_DiscardUnknown() { -+ xxx_messageInfo_ListContainersResponse.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_ListContainersResponse proto.InternalMessageInfo -+ -+func (m *ListContainersResponse) GetContainers() []*Container { -+ if m != nil { -+ return m.Containers -+ } -+ return nil -+} -+ -+type ContainerStatusRequest struct { -+ // ID of the container for which to retrieve status. -+ ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` -+ // Verbose indicates whether to return extra information about the container. -+ Verbose bool `protobuf:"varint,2,opt,name=verbose,proto3" json:"verbose,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *ContainerStatusRequest) Reset() { *m = ContainerStatusRequest{} } -+func (*ContainerStatusRequest) ProtoMessage() {} -+func (*ContainerStatusRequest) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{73} -+} -+func (m *ContainerStatusRequest) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *ContainerStatusRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_ContainerStatusRequest.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *ContainerStatusRequest) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_ContainerStatusRequest.Merge(m, src) -+} -+func (m *ContainerStatusRequest) XXX_Size() int { -+ return m.Size() -+} -+func (m *ContainerStatusRequest) XXX_DiscardUnknown() { -+ xxx_messageInfo_ContainerStatusRequest.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_ContainerStatusRequest proto.InternalMessageInfo -+ -+func (m *ContainerStatusRequest) GetContainerId() string { -+ if m != nil { -+ return m.ContainerId -+ } -+ return "" -+} -+ -+func (m *ContainerStatusRequest) GetVerbose() bool { -+ if m != nil { -+ return m.Verbose -+ } -+ return false -+} -+ -+// ContainerStatus represents the status of a container. -+type ContainerStatus struct { -+ // ID of the container. -+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` -+ // Metadata of the container. -+ Metadata *ContainerMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` -+ // Status of the container. -+ State ContainerState `protobuf:"varint,3,opt,name=state,proto3,enum=runtime.v1.ContainerState" json:"state,omitempty"` -+ // Creation time of the container in nanoseconds. -+ CreatedAt int64 `protobuf:"varint,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` -+ // Start time of the container in nanoseconds. Default: 0 (not specified). -+ StartedAt int64 `protobuf:"varint,5,opt,name=started_at,json=startedAt,proto3" json:"started_at,omitempty"` -+ // Finish time of the container in nanoseconds. Default: 0 (not specified). -+ FinishedAt int64 `protobuf:"varint,6,opt,name=finished_at,json=finishedAt,proto3" json:"finished_at,omitempty"` -+ // Exit code of the container. Only required when finished_at != 0. Default: 0. -+ ExitCode int32 `protobuf:"varint,7,opt,name=exit_code,json=exitCode,proto3" json:"exit_code,omitempty"` -+ // Spec of the image. -+ Image *ImageSpec `protobuf:"bytes,8,opt,name=image,proto3" json:"image,omitempty"` -+ // Reference to the image in use. For most runtimes, this should be an -+ // image ID -+ ImageRef string `protobuf:"bytes,9,opt,name=image_ref,json=imageRef,proto3" json:"image_ref,omitempty"` -+ // Brief CamelCase string explaining why container is in its current state. -+ Reason string `protobuf:"bytes,10,opt,name=reason,proto3" json:"reason,omitempty"` -+ // Human-readable message indicating details about why container is in its -+ // current state. -+ Message string `protobuf:"bytes,11,opt,name=message,proto3" json:"message,omitempty"` -+ // Key-value pairs that may be used to scope and select individual resources. -+ Labels map[string]string `protobuf:"bytes,12,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -+ // Unstructured key-value map holding arbitrary metadata. -+ // Annotations MUST NOT be altered by the runtime; the value of this field -+ // MUST be identical to that of the corresponding ContainerConfig used to -+ // instantiate the Container this status represents. -+ Annotations map[string]string `protobuf:"bytes,13,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -+ // Mounts for the container. -+ Mounts []*Mount `protobuf:"bytes,14,rep,name=mounts,proto3" json:"mounts,omitempty"` -+ // Log path of container. -+ LogPath string `protobuf:"bytes,15,opt,name=log_path,json=logPath,proto3" json:"log_path,omitempty"` -+ // Resource limits configuration of the container. -+ Resources *ContainerResources `protobuf:"bytes,16,opt,name=resources,proto3" json:"resources,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *ContainerStatus) Reset() { *m = ContainerStatus{} } -+func (*ContainerStatus) ProtoMessage() {} -+func (*ContainerStatus) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{74} -+} -+func (m *ContainerStatus) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *ContainerStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_ContainerStatus.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *ContainerStatus) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_ContainerStatus.Merge(m, src) -+} -+func (m *ContainerStatus) XXX_Size() int { -+ return m.Size() -+} -+func (m *ContainerStatus) XXX_DiscardUnknown() { -+ xxx_messageInfo_ContainerStatus.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_ContainerStatus proto.InternalMessageInfo -+ -+func (m *ContainerStatus) GetId() string { -+ if m != nil { -+ return m.Id -+ } -+ return "" -+} -+ -+func (m *ContainerStatus) GetMetadata() *ContainerMetadata { -+ if m != nil { -+ return m.Metadata -+ } -+ return nil -+} -+ -+func (m *ContainerStatus) GetState() ContainerState { -+ if m != nil { -+ return m.State -+ } -+ return ContainerState_CONTAINER_CREATED -+} -+ -+func (m *ContainerStatus) GetCreatedAt() int64 { -+ if m != nil { -+ return m.CreatedAt -+ } -+ return 0 -+} -+ -+func (m *ContainerStatus) GetStartedAt() int64 { -+ if m != nil { -+ return m.StartedAt -+ } -+ return 0 -+} -+ -+func (m *ContainerStatus) GetFinishedAt() int64 { -+ if m != nil { -+ return m.FinishedAt -+ } -+ return 0 -+} -+ -+func (m *ContainerStatus) GetExitCode() int32 { -+ if m != nil { -+ return m.ExitCode -+ } -+ return 0 -+} -+ -+func (m *ContainerStatus) GetImage() *ImageSpec { -+ if m != nil { -+ return m.Image -+ } -+ return nil -+} -+ -+func (m *ContainerStatus) GetImageRef() string { -+ if m != nil { -+ return m.ImageRef -+ } -+ return "" -+} -+ -+func (m *ContainerStatus) GetReason() string { -+ if m != nil { -+ return m.Reason -+ } -+ return "" -+} -+ -+func (m *ContainerStatus) GetMessage() string { -+ if m != nil { -+ return m.Message -+ } -+ return "" -+} -+ -+func (m *ContainerStatus) GetLabels() map[string]string { -+ if m != nil { -+ return m.Labels -+ } -+ return nil -+} -+ -+func (m *ContainerStatus) GetAnnotations() map[string]string { -+ if m != nil { -+ return m.Annotations -+ } -+ return nil -+} -+ -+func (m *ContainerStatus) GetMounts() []*Mount { -+ if m != nil { -+ return m.Mounts -+ } -+ return nil -+} -+ -+func (m *ContainerStatus) GetLogPath() string { -+ if m != nil { -+ return m.LogPath -+ } -+ return "" -+} -+ -+func (m *ContainerStatus) GetResources() *ContainerResources { -+ if m != nil { -+ return m.Resources -+ } -+ return nil -+} -+ -+type ContainerStatusResponse struct { -+ // Status of the container. -+ Status *ContainerStatus `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` -+ // Info is extra information of the Container. The key could be arbitrary string, and -+ // value should be in json format. The information could include anything useful for -+ // debug, e.g. pid for linux container based container runtime. -+ // It should only be returned non-empty when Verbose is true. -+ Info map[string]string `protobuf:"bytes,2,rep,name=info,proto3" json:"info,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *ContainerStatusResponse) Reset() { *m = ContainerStatusResponse{} } -+func (*ContainerStatusResponse) ProtoMessage() {} -+func (*ContainerStatusResponse) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{75} -+} -+func (m *ContainerStatusResponse) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *ContainerStatusResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_ContainerStatusResponse.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *ContainerStatusResponse) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_ContainerStatusResponse.Merge(m, src) -+} -+func (m *ContainerStatusResponse) XXX_Size() int { -+ return m.Size() -+} -+func (m *ContainerStatusResponse) XXX_DiscardUnknown() { -+ xxx_messageInfo_ContainerStatusResponse.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_ContainerStatusResponse proto.InternalMessageInfo -+ -+func (m *ContainerStatusResponse) GetStatus() *ContainerStatus { -+ if m != nil { -+ return m.Status -+ } -+ return nil -+} -+ -+func (m *ContainerStatusResponse) GetInfo() map[string]string { -+ if m != nil { -+ return m.Info -+ } -+ return nil -+} -+ -+// ContainerResources holds resource limits configuration for a container. -+type ContainerResources struct { -+ // Resource limits configuration specific to Linux container. -+ Linux *LinuxContainerResources `protobuf:"bytes,1,opt,name=linux,proto3" json:"linux,omitempty"` -+ // Resource limits configuration specific to Windows container. -+ Windows *WindowsContainerResources `protobuf:"bytes,2,opt,name=windows,proto3" json:"windows,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *ContainerResources) Reset() { *m = ContainerResources{} } -+func (*ContainerResources) ProtoMessage() {} -+func (*ContainerResources) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{76} -+} -+func (m *ContainerResources) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *ContainerResources) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_ContainerResources.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *ContainerResources) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_ContainerResources.Merge(m, src) -+} -+func (m *ContainerResources) XXX_Size() int { -+ return m.Size() -+} -+func (m *ContainerResources) XXX_DiscardUnknown() { -+ xxx_messageInfo_ContainerResources.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_ContainerResources proto.InternalMessageInfo -+ -+func (m *ContainerResources) GetLinux() *LinuxContainerResources { -+ if m != nil { -+ return m.Linux -+ } -+ return nil -+} -+ -+func (m *ContainerResources) GetWindows() *WindowsContainerResources { -+ if m != nil { -+ return m.Windows -+ } -+ return nil -+} -+ -+type UpdateContainerResourcesRequest struct { -+ // ID of the container to update. -+ ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` -+ // Resource configuration specific to Linux containers. -+ Linux *LinuxContainerResources `protobuf:"bytes,2,opt,name=linux,proto3" json:"linux,omitempty"` -+ // Resource configuration specific to Windows containers. -+ Windows *WindowsContainerResources `protobuf:"bytes,3,opt,name=windows,proto3" json:"windows,omitempty"` -+ // Unstructured key-value map holding arbitrary additional information for -+ // container resources updating. This can be used for specifying experimental -+ // resources to update or other options to use when updating the container. -+ Annotations map[string]string `protobuf:"bytes,4,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *UpdateContainerResourcesRequest) Reset() { *m = UpdateContainerResourcesRequest{} } -+func (*UpdateContainerResourcesRequest) ProtoMessage() {} -+func (*UpdateContainerResourcesRequest) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{77} -+} -+func (m *UpdateContainerResourcesRequest) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *UpdateContainerResourcesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_UpdateContainerResourcesRequest.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *UpdateContainerResourcesRequest) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_UpdateContainerResourcesRequest.Merge(m, src) -+} -+func (m *UpdateContainerResourcesRequest) XXX_Size() int { -+ return m.Size() -+} -+func (m *UpdateContainerResourcesRequest) XXX_DiscardUnknown() { -+ xxx_messageInfo_UpdateContainerResourcesRequest.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_UpdateContainerResourcesRequest proto.InternalMessageInfo -+ -+func (m *UpdateContainerResourcesRequest) GetContainerId() string { -+ if m != nil { -+ return m.ContainerId -+ } -+ return "" -+} -+ -+func (m *UpdateContainerResourcesRequest) GetLinux() *LinuxContainerResources { -+ if m != nil { -+ return m.Linux -+ } -+ return nil -+} -+ -+func (m *UpdateContainerResourcesRequest) GetWindows() *WindowsContainerResources { -+ if m != nil { -+ return m.Windows -+ } -+ return nil -+} -+ -+func (m *UpdateContainerResourcesRequest) GetAnnotations() map[string]string { -+ if m != nil { -+ return m.Annotations -+ } -+ return nil -+} -+ -+type UpdateContainerResourcesResponse struct { -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *UpdateContainerResourcesResponse) Reset() { *m = UpdateContainerResourcesResponse{} } -+func (*UpdateContainerResourcesResponse) ProtoMessage() {} -+func (*UpdateContainerResourcesResponse) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{78} -+} -+func (m *UpdateContainerResourcesResponse) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *UpdateContainerResourcesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_UpdateContainerResourcesResponse.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *UpdateContainerResourcesResponse) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_UpdateContainerResourcesResponse.Merge(m, src) -+} -+func (m *UpdateContainerResourcesResponse) XXX_Size() int { -+ return m.Size() -+} -+func (m *UpdateContainerResourcesResponse) XXX_DiscardUnknown() { -+ xxx_messageInfo_UpdateContainerResourcesResponse.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_UpdateContainerResourcesResponse proto.InternalMessageInfo -+ -+type ExecSyncRequest struct { -+ // ID of the container. -+ ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` -+ // Command to execute. -+ Cmd []string `protobuf:"bytes,2,rep,name=cmd,proto3" json:"cmd,omitempty"` -+ // Timeout in seconds to stop the command. Default: 0 (run forever). -+ Timeout int64 `protobuf:"varint,3,opt,name=timeout,proto3" json:"timeout,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *ExecSyncRequest) Reset() { *m = ExecSyncRequest{} } -+func (*ExecSyncRequest) ProtoMessage() {} -+func (*ExecSyncRequest) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{79} -+} -+func (m *ExecSyncRequest) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *ExecSyncRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_ExecSyncRequest.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *ExecSyncRequest) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_ExecSyncRequest.Merge(m, src) -+} -+func (m *ExecSyncRequest) XXX_Size() int { -+ return m.Size() -+} -+func (m *ExecSyncRequest) XXX_DiscardUnknown() { -+ xxx_messageInfo_ExecSyncRequest.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_ExecSyncRequest proto.InternalMessageInfo -+ -+func (m *ExecSyncRequest) GetContainerId() string { -+ if m != nil { -+ return m.ContainerId -+ } -+ return "" -+} -+ -+func (m *ExecSyncRequest) GetCmd() []string { -+ if m != nil { -+ return m.Cmd -+ } -+ return nil -+} -+ -+func (m *ExecSyncRequest) GetTimeout() int64 { -+ if m != nil { -+ return m.Timeout -+ } -+ return 0 -+} -+ -+type ExecSyncResponse struct { -+ // Captured command stdout output. -+ Stdout []byte `protobuf:"bytes,1,opt,name=stdout,proto3" json:"stdout,omitempty"` -+ // Captured command stderr output. -+ Stderr []byte `protobuf:"bytes,2,opt,name=stderr,proto3" json:"stderr,omitempty"` -+ // Exit code the command finished with. Default: 0 (success). -+ ExitCode int32 `protobuf:"varint,3,opt,name=exit_code,json=exitCode,proto3" json:"exit_code,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *ExecSyncResponse) Reset() { *m = ExecSyncResponse{} } -+func (*ExecSyncResponse) ProtoMessage() {} -+func (*ExecSyncResponse) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{80} -+} -+func (m *ExecSyncResponse) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *ExecSyncResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_ExecSyncResponse.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *ExecSyncResponse) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_ExecSyncResponse.Merge(m, src) -+} -+func (m *ExecSyncResponse) XXX_Size() int { -+ return m.Size() -+} -+func (m *ExecSyncResponse) XXX_DiscardUnknown() { -+ xxx_messageInfo_ExecSyncResponse.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_ExecSyncResponse proto.InternalMessageInfo -+ -+func (m *ExecSyncResponse) GetStdout() []byte { -+ if m != nil { -+ return m.Stdout -+ } -+ return nil -+} -+ -+func (m *ExecSyncResponse) GetStderr() []byte { -+ if m != nil { -+ return m.Stderr -+ } -+ return nil -+} -+ -+func (m *ExecSyncResponse) GetExitCode() int32 { -+ if m != nil { -+ return m.ExitCode -+ } -+ return 0 -+} -+ -+type ExecRequest struct { -+ // ID of the container in which to execute the command. -+ ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` -+ // Command to execute. -+ Cmd []string `protobuf:"bytes,2,rep,name=cmd,proto3" json:"cmd,omitempty"` -+ // Whether to exec the command in a TTY. -+ Tty bool `protobuf:"varint,3,opt,name=tty,proto3" json:"tty,omitempty"` -+ // Whether to stream stdin. -+ // One of `stdin`, `stdout`, and `stderr` MUST be true. -+ Stdin bool `protobuf:"varint,4,opt,name=stdin,proto3" json:"stdin,omitempty"` -+ // Whether to stream stdout. -+ // One of `stdin`, `stdout`, and `stderr` MUST be true. -+ Stdout bool `protobuf:"varint,5,opt,name=stdout,proto3" json:"stdout,omitempty"` -+ // Whether to stream stderr. -+ // One of `stdin`, `stdout`, and `stderr` MUST be true. -+ // If `tty` is true, `stderr` MUST be false. Multiplexing is not supported -+ // in this case. The output of stdout and stderr will be combined to a -+ // single stream. -+ Stderr bool `protobuf:"varint,6,opt,name=stderr,proto3" json:"stderr,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *ExecRequest) Reset() { *m = ExecRequest{} } -+func (*ExecRequest) ProtoMessage() {} -+func (*ExecRequest) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{81} -+} -+func (m *ExecRequest) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *ExecRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_ExecRequest.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *ExecRequest) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_ExecRequest.Merge(m, src) -+} -+func (m *ExecRequest) XXX_Size() int { -+ return m.Size() -+} -+func (m *ExecRequest) XXX_DiscardUnknown() { -+ xxx_messageInfo_ExecRequest.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_ExecRequest proto.InternalMessageInfo -+ -+func (m *ExecRequest) GetContainerId() string { -+ if m != nil { -+ return m.ContainerId -+ } -+ return "" -+} -+ -+func (m *ExecRequest) GetCmd() []string { -+ if m != nil { -+ return m.Cmd -+ } -+ return nil -+} -+ -+func (m *ExecRequest) GetTty() bool { -+ if m != nil { -+ return m.Tty -+ } -+ return false -+} -+ -+func (m *ExecRequest) GetStdin() bool { -+ if m != nil { -+ return m.Stdin -+ } -+ return false -+} -+ -+func (m *ExecRequest) GetStdout() bool { -+ if m != nil { -+ return m.Stdout -+ } -+ return false -+} -+ -+func (m *ExecRequest) GetStderr() bool { -+ if m != nil { -+ return m.Stderr -+ } -+ return false -+} -+ -+type ExecResponse struct { -+ // Fully qualified URL of the exec streaming server. -+ Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *ExecResponse) Reset() { *m = ExecResponse{} } -+func (*ExecResponse) ProtoMessage() {} -+func (*ExecResponse) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{82} -+} -+func (m *ExecResponse) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *ExecResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_ExecResponse.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *ExecResponse) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_ExecResponse.Merge(m, src) -+} -+func (m *ExecResponse) XXX_Size() int { -+ return m.Size() -+} -+func (m *ExecResponse) XXX_DiscardUnknown() { -+ xxx_messageInfo_ExecResponse.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_ExecResponse proto.InternalMessageInfo -+ -+func (m *ExecResponse) GetUrl() string { -+ if m != nil { -+ return m.Url -+ } -+ return "" -+} -+ -+type AttachRequest struct { -+ // ID of the container to which to attach. -+ ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` -+ // Whether to stream stdin. -+ // One of `stdin`, `stdout`, and `stderr` MUST be true. -+ Stdin bool `protobuf:"varint,2,opt,name=stdin,proto3" json:"stdin,omitempty"` -+ // Whether the process being attached is running in a TTY. -+ // This must match the TTY setting in the ContainerConfig. -+ Tty bool `protobuf:"varint,3,opt,name=tty,proto3" json:"tty,omitempty"` -+ // Whether to stream stdout. -+ // One of `stdin`, `stdout`, and `stderr` MUST be true. -+ Stdout bool `protobuf:"varint,4,opt,name=stdout,proto3" json:"stdout,omitempty"` -+ // Whether to stream stderr. -+ // One of `stdin`, `stdout`, and `stderr` MUST be true. -+ // If `tty` is true, `stderr` MUST be false. Multiplexing is not supported -+ // in this case. The output of stdout and stderr will be combined to a -+ // single stream. -+ Stderr bool `protobuf:"varint,5,opt,name=stderr,proto3" json:"stderr,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *AttachRequest) Reset() { *m = AttachRequest{} } -+func (*AttachRequest) ProtoMessage() {} -+func (*AttachRequest) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{83} -+} -+func (m *AttachRequest) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *AttachRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_AttachRequest.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *AttachRequest) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_AttachRequest.Merge(m, src) -+} -+func (m *AttachRequest) XXX_Size() int { -+ return m.Size() -+} -+func (m *AttachRequest) XXX_DiscardUnknown() { -+ xxx_messageInfo_AttachRequest.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_AttachRequest proto.InternalMessageInfo -+ -+func (m *AttachRequest) GetContainerId() string { -+ if m != nil { -+ return m.ContainerId -+ } -+ return "" -+} -+ -+func (m *AttachRequest) GetStdin() bool { -+ if m != nil { -+ return m.Stdin -+ } -+ return false -+} -+ -+func (m *AttachRequest) GetTty() bool { -+ if m != nil { -+ return m.Tty -+ } -+ return false -+} -+ -+func (m *AttachRequest) GetStdout() bool { -+ if m != nil { -+ return m.Stdout -+ } -+ return false -+} -+ -+func (m *AttachRequest) GetStderr() bool { -+ if m != nil { -+ return m.Stderr -+ } -+ return false -+} -+ -+type AttachResponse struct { -+ // Fully qualified URL of the attach streaming server. -+ Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *AttachResponse) Reset() { *m = AttachResponse{} } -+func (*AttachResponse) ProtoMessage() {} -+func (*AttachResponse) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{84} -+} -+func (m *AttachResponse) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *AttachResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_AttachResponse.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *AttachResponse) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_AttachResponse.Merge(m, src) -+} -+func (m *AttachResponse) XXX_Size() int { -+ return m.Size() -+} -+func (m *AttachResponse) XXX_DiscardUnknown() { -+ xxx_messageInfo_AttachResponse.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_AttachResponse proto.InternalMessageInfo -+ -+func (m *AttachResponse) GetUrl() string { -+ if m != nil { -+ return m.Url -+ } -+ return "" -+} -+ -+type PortForwardRequest struct { -+ // ID of the container to which to forward the port. -+ PodSandboxId string `protobuf:"bytes,1,opt,name=pod_sandbox_id,json=podSandboxId,proto3" json:"pod_sandbox_id,omitempty"` -+ // Port to forward. -+ Port []int32 `protobuf:"varint,2,rep,packed,name=port,proto3" json:"port,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *PortForwardRequest) Reset() { *m = PortForwardRequest{} } -+func (*PortForwardRequest) ProtoMessage() {} -+func (*PortForwardRequest) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{85} -+} -+func (m *PortForwardRequest) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *PortForwardRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_PortForwardRequest.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *PortForwardRequest) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_PortForwardRequest.Merge(m, src) -+} -+func (m *PortForwardRequest) XXX_Size() int { -+ return m.Size() -+} -+func (m *PortForwardRequest) XXX_DiscardUnknown() { -+ xxx_messageInfo_PortForwardRequest.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_PortForwardRequest proto.InternalMessageInfo -+ -+func (m *PortForwardRequest) GetPodSandboxId() string { -+ if m != nil { -+ return m.PodSandboxId -+ } -+ return "" -+} -+ -+func (m *PortForwardRequest) GetPort() []int32 { -+ if m != nil { -+ return m.Port -+ } -+ return nil -+} -+ -+type PortForwardResponse struct { -+ // Fully qualified URL of the port-forward streaming server. -+ Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *PortForwardResponse) Reset() { *m = PortForwardResponse{} } -+func (*PortForwardResponse) ProtoMessage() {} -+func (*PortForwardResponse) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{86} -+} -+func (m *PortForwardResponse) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *PortForwardResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_PortForwardResponse.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *PortForwardResponse) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_PortForwardResponse.Merge(m, src) -+} -+func (m *PortForwardResponse) XXX_Size() int { -+ return m.Size() -+} -+func (m *PortForwardResponse) XXX_DiscardUnknown() { -+ xxx_messageInfo_PortForwardResponse.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_PortForwardResponse proto.InternalMessageInfo -+ -+func (m *PortForwardResponse) GetUrl() string { -+ if m != nil { -+ return m.Url -+ } -+ return "" -+} -+ -+type ImageFilter struct { -+ // Spec of the image. -+ Image *ImageSpec `protobuf:"bytes,1,opt,name=image,proto3" json:"image,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *ImageFilter) Reset() { *m = ImageFilter{} } -+func (*ImageFilter) ProtoMessage() {} -+func (*ImageFilter) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{87} -+} -+func (m *ImageFilter) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *ImageFilter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_ImageFilter.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *ImageFilter) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_ImageFilter.Merge(m, src) -+} -+func (m *ImageFilter) XXX_Size() int { -+ return m.Size() -+} -+func (m *ImageFilter) XXX_DiscardUnknown() { -+ xxx_messageInfo_ImageFilter.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_ImageFilter proto.InternalMessageInfo -+ -+func (m *ImageFilter) GetImage() *ImageSpec { -+ if m != nil { -+ return m.Image -+ } -+ return nil -+} -+ -+type ListImagesRequest struct { -+ // Filter to list images. -+ Filter *ImageFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *ListImagesRequest) Reset() { *m = ListImagesRequest{} } -+func (*ListImagesRequest) ProtoMessage() {} -+func (*ListImagesRequest) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{88} -+} -+func (m *ListImagesRequest) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *ListImagesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_ListImagesRequest.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *ListImagesRequest) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_ListImagesRequest.Merge(m, src) -+} -+func (m *ListImagesRequest) XXX_Size() int { -+ return m.Size() -+} -+func (m *ListImagesRequest) XXX_DiscardUnknown() { -+ xxx_messageInfo_ListImagesRequest.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_ListImagesRequest proto.InternalMessageInfo -+ -+func (m *ListImagesRequest) GetFilter() *ImageFilter { -+ if m != nil { -+ return m.Filter -+ } -+ return nil -+} -+ -+// Basic information about a container image. -+type Image struct { -+ // ID of the image. -+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` -+ // Other names by which this image is known. -+ RepoTags []string `protobuf:"bytes,2,rep,name=repo_tags,json=repoTags,proto3" json:"repo_tags,omitempty"` -+ // Digests by which this image is known. -+ RepoDigests []string `protobuf:"bytes,3,rep,name=repo_digests,json=repoDigests,proto3" json:"repo_digests,omitempty"` -+ // Size of the image in bytes. Must be > 0. -+ Size_ uint64 `protobuf:"varint,4,opt,name=size,proto3" json:"size,omitempty"` -+ // UID that will run the command(s). This is used as a default if no user is -+ // specified when creating the container. UID and the following user name -+ // are mutually exclusive. -+ Uid *Int64Value `protobuf:"bytes,5,opt,name=uid,proto3" json:"uid,omitempty"` -+ // User name that will run the command(s). This is used if UID is not set -+ // and no user is specified when creating container. -+ Username string `protobuf:"bytes,6,opt,name=username,proto3" json:"username,omitempty"` -+ // ImageSpec for image which includes annotations -+ Spec *ImageSpec `protobuf:"bytes,7,opt,name=spec,proto3" json:"spec,omitempty"` -+ // Recommendation on whether this image should be exempt from garbage collection. -+ // It must only be treated as a recommendation -- the client can still request that the image be deleted, -+ // and the runtime must oblige. -+ Pinned bool `protobuf:"varint,8,opt,name=pinned,proto3" json:"pinned,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *Image) Reset() { *m = Image{} } -+func (*Image) ProtoMessage() {} -+func (*Image) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{89} -+} -+func (m *Image) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *Image) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_Image.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *Image) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_Image.Merge(m, src) -+} -+func (m *Image) XXX_Size() int { -+ return m.Size() -+} -+func (m *Image) XXX_DiscardUnknown() { -+ xxx_messageInfo_Image.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_Image proto.InternalMessageInfo -+ -+func (m *Image) GetId() string { -+ if m != nil { -+ return m.Id -+ } -+ return "" -+} -+ -+func (m *Image) GetRepoTags() []string { -+ if m != nil { -+ return m.RepoTags -+ } -+ return nil -+} -+ -+func (m *Image) GetRepoDigests() []string { -+ if m != nil { -+ return m.RepoDigests -+ } -+ return nil -+} -+ -+func (m *Image) GetSize_() uint64 { -+ if m != nil { -+ return m.Size_ -+ } -+ return 0 -+} -+ -+func (m *Image) GetUid() *Int64Value { -+ if m != nil { -+ return m.Uid -+ } -+ return nil -+} -+ -+func (m *Image) GetUsername() string { -+ if m != nil { -+ return m.Username -+ } -+ return "" -+} -+ -+func (m *Image) GetSpec() *ImageSpec { -+ if m != nil { -+ return m.Spec -+ } -+ return nil -+} -+ -+func (m *Image) GetPinned() bool { -+ if m != nil { -+ return m.Pinned -+ } -+ return false -+} -+ -+type ListImagesResponse struct { -+ // List of images. -+ Images []*Image `protobuf:"bytes,1,rep,name=images,proto3" json:"images,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *ListImagesResponse) Reset() { *m = ListImagesResponse{} } -+func (*ListImagesResponse) ProtoMessage() {} -+func (*ListImagesResponse) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{90} -+} -+func (m *ListImagesResponse) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *ListImagesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_ListImagesResponse.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *ListImagesResponse) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_ListImagesResponse.Merge(m, src) -+} -+func (m *ListImagesResponse) XXX_Size() int { -+ return m.Size() -+} -+func (m *ListImagesResponse) XXX_DiscardUnknown() { -+ xxx_messageInfo_ListImagesResponse.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_ListImagesResponse proto.InternalMessageInfo -+ -+func (m *ListImagesResponse) GetImages() []*Image { -+ if m != nil { -+ return m.Images -+ } -+ return nil -+} -+ -+type ImageStatusRequest struct { -+ // Spec of the image. -+ Image *ImageSpec `protobuf:"bytes,1,opt,name=image,proto3" json:"image,omitempty"` -+ // Verbose indicates whether to return extra information about the image. -+ Verbose bool `protobuf:"varint,2,opt,name=verbose,proto3" json:"verbose,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *ImageStatusRequest) Reset() { *m = ImageStatusRequest{} } -+func (*ImageStatusRequest) ProtoMessage() {} -+func (*ImageStatusRequest) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{91} -+} -+func (m *ImageStatusRequest) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *ImageStatusRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_ImageStatusRequest.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *ImageStatusRequest) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_ImageStatusRequest.Merge(m, src) -+} -+func (m *ImageStatusRequest) XXX_Size() int { -+ return m.Size() -+} -+func (m *ImageStatusRequest) XXX_DiscardUnknown() { -+ xxx_messageInfo_ImageStatusRequest.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_ImageStatusRequest proto.InternalMessageInfo -+ -+func (m *ImageStatusRequest) GetImage() *ImageSpec { -+ if m != nil { -+ return m.Image -+ } -+ return nil -+} -+ -+func (m *ImageStatusRequest) GetVerbose() bool { -+ if m != nil { -+ return m.Verbose -+ } -+ return false -+} -+ -+type ImageStatusResponse struct { -+ // Status of the image. -+ Image *Image `protobuf:"bytes,1,opt,name=image,proto3" json:"image,omitempty"` -+ // Info is extra information of the Image. The key could be arbitrary string, and -+ // value should be in json format. The information could include anything useful -+ // for debug, e.g. image config for oci image based container runtime. -+ // It should only be returned non-empty when Verbose is true. -+ Info map[string]string `protobuf:"bytes,2,rep,name=info,proto3" json:"info,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *ImageStatusResponse) Reset() { *m = ImageStatusResponse{} } -+func (*ImageStatusResponse) ProtoMessage() {} -+func (*ImageStatusResponse) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{92} -+} -+func (m *ImageStatusResponse) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *ImageStatusResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_ImageStatusResponse.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *ImageStatusResponse) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_ImageStatusResponse.Merge(m, src) -+} -+func (m *ImageStatusResponse) XXX_Size() int { -+ return m.Size() -+} -+func (m *ImageStatusResponse) XXX_DiscardUnknown() { -+ xxx_messageInfo_ImageStatusResponse.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_ImageStatusResponse proto.InternalMessageInfo -+ -+func (m *ImageStatusResponse) GetImage() *Image { -+ if m != nil { -+ return m.Image -+ } -+ return nil -+} -+ -+func (m *ImageStatusResponse) GetInfo() map[string]string { -+ if m != nil { -+ return m.Info -+ } -+ return nil -+} -+ -+// AuthConfig contains authorization information for connecting to a registry. -+type AuthConfig struct { -+ Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` -+ Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"` -+ Auth string `protobuf:"bytes,3,opt,name=auth,proto3" json:"auth,omitempty"` -+ ServerAddress string `protobuf:"bytes,4,opt,name=server_address,json=serverAddress,proto3" json:"server_address,omitempty"` -+ // IdentityToken is used to authenticate the user and get -+ // an access token for the registry. -+ IdentityToken string `protobuf:"bytes,5,opt,name=identity_token,json=identityToken,proto3" json:"identity_token,omitempty"` -+ // RegistryToken is a bearer token to be sent to a registry -+ RegistryToken string `protobuf:"bytes,6,opt,name=registry_token,json=registryToken,proto3" json:"registry_token,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *AuthConfig) Reset() { *m = AuthConfig{} } -+func (*AuthConfig) ProtoMessage() {} -+func (*AuthConfig) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{93} -+} -+func (m *AuthConfig) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *AuthConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_AuthConfig.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *AuthConfig) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_AuthConfig.Merge(m, src) -+} -+func (m *AuthConfig) XXX_Size() int { -+ return m.Size() -+} -+func (m *AuthConfig) XXX_DiscardUnknown() { -+ xxx_messageInfo_AuthConfig.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_AuthConfig proto.InternalMessageInfo -+ -+func (m *AuthConfig) GetUsername() string { -+ if m != nil { -+ return m.Username -+ } -+ return "" -+} -+ -+func (m *AuthConfig) GetPassword() string { -+ if m != nil { -+ return m.Password -+ } -+ return "" -+} -+ -+func (m *AuthConfig) GetAuth() string { -+ if m != nil { -+ return m.Auth -+ } -+ return "" -+} -+ -+func (m *AuthConfig) GetServerAddress() string { -+ if m != nil { -+ return m.ServerAddress -+ } -+ return "" -+} -+ -+func (m *AuthConfig) GetIdentityToken() string { -+ if m != nil { -+ return m.IdentityToken -+ } -+ return "" -+} -+ -+func (m *AuthConfig) GetRegistryToken() string { -+ if m != nil { -+ return m.RegistryToken -+ } -+ return "" -+} -+ -+type PullImageRequest struct { -+ // Spec of the image. -+ Image *ImageSpec `protobuf:"bytes,1,opt,name=image,proto3" json:"image,omitempty"` -+ // Authentication configuration for pulling the image. -+ Auth *AuthConfig `protobuf:"bytes,2,opt,name=auth,proto3" json:"auth,omitempty"` -+ // Config of the PodSandbox, which is used to pull image in PodSandbox context. -+ SandboxConfig *PodSandboxConfig `protobuf:"bytes,3,opt,name=sandbox_config,json=sandboxConfig,proto3" json:"sandbox_config,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *PullImageRequest) Reset() { *m = PullImageRequest{} } -+func (*PullImageRequest) ProtoMessage() {} -+func (*PullImageRequest) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{94} -+} -+func (m *PullImageRequest) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *PullImageRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_PullImageRequest.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *PullImageRequest) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_PullImageRequest.Merge(m, src) -+} -+func (m *PullImageRequest) XXX_Size() int { -+ return m.Size() -+} -+func (m *PullImageRequest) XXX_DiscardUnknown() { -+ xxx_messageInfo_PullImageRequest.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_PullImageRequest proto.InternalMessageInfo -+ -+func (m *PullImageRequest) GetImage() *ImageSpec { -+ if m != nil { -+ return m.Image -+ } -+ return nil -+} -+ -+func (m *PullImageRequest) GetAuth() *AuthConfig { -+ if m != nil { -+ return m.Auth -+ } -+ return nil -+} -+ -+func (m *PullImageRequest) GetSandboxConfig() *PodSandboxConfig { -+ if m != nil { -+ return m.SandboxConfig -+ } -+ return nil -+} -+ -+type PullImageResponse struct { -+ // Reference to the image in use. For most runtimes, this should be an -+ // image ID or digest. -+ ImageRef string `protobuf:"bytes,1,opt,name=image_ref,json=imageRef,proto3" json:"image_ref,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *PullImageResponse) Reset() { *m = PullImageResponse{} } -+func (*PullImageResponse) ProtoMessage() {} -+func (*PullImageResponse) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{95} -+} -+func (m *PullImageResponse) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *PullImageResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_PullImageResponse.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *PullImageResponse) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_PullImageResponse.Merge(m, src) -+} -+func (m *PullImageResponse) XXX_Size() int { -+ return m.Size() -+} -+func (m *PullImageResponse) XXX_DiscardUnknown() { -+ xxx_messageInfo_PullImageResponse.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_PullImageResponse proto.InternalMessageInfo -+ -+func (m *PullImageResponse) GetImageRef() string { -+ if m != nil { -+ return m.ImageRef -+ } -+ return "" -+} -+ -+type RemoveImageRequest struct { -+ // Spec of the image to remove. -+ Image *ImageSpec `protobuf:"bytes,1,opt,name=image,proto3" json:"image,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *RemoveImageRequest) Reset() { *m = RemoveImageRequest{} } -+func (*RemoveImageRequest) ProtoMessage() {} -+func (*RemoveImageRequest) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{96} -+} -+func (m *RemoveImageRequest) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *RemoveImageRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_RemoveImageRequest.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *RemoveImageRequest) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_RemoveImageRequest.Merge(m, src) -+} -+func (m *RemoveImageRequest) XXX_Size() int { -+ return m.Size() -+} -+func (m *RemoveImageRequest) XXX_DiscardUnknown() { -+ xxx_messageInfo_RemoveImageRequest.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_RemoveImageRequest proto.InternalMessageInfo -+ -+func (m *RemoveImageRequest) GetImage() *ImageSpec { -+ if m != nil { -+ return m.Image -+ } -+ return nil -+} -+ -+type RemoveImageResponse struct { -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *RemoveImageResponse) Reset() { *m = RemoveImageResponse{} } -+func (*RemoveImageResponse) ProtoMessage() {} -+func (*RemoveImageResponse) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{97} -+} -+func (m *RemoveImageResponse) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *RemoveImageResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_RemoveImageResponse.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *RemoveImageResponse) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_RemoveImageResponse.Merge(m, src) -+} -+func (m *RemoveImageResponse) XXX_Size() int { -+ return m.Size() -+} -+func (m *RemoveImageResponse) XXX_DiscardUnknown() { -+ xxx_messageInfo_RemoveImageResponse.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_RemoveImageResponse proto.InternalMessageInfo -+ -+type NetworkConfig struct { -+ // CIDR to use for pod IP addresses. If the CIDR is empty, runtimes -+ // should omit it. -+ PodCidr string `protobuf:"bytes,1,opt,name=pod_cidr,json=podCidr,proto3" json:"pod_cidr,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *NetworkConfig) Reset() { *m = NetworkConfig{} } -+func (*NetworkConfig) ProtoMessage() {} -+func (*NetworkConfig) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{98} -+} -+func (m *NetworkConfig) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *NetworkConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_NetworkConfig.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *NetworkConfig) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_NetworkConfig.Merge(m, src) -+} -+func (m *NetworkConfig) XXX_Size() int { -+ return m.Size() -+} -+func (m *NetworkConfig) XXX_DiscardUnknown() { -+ xxx_messageInfo_NetworkConfig.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_NetworkConfig proto.InternalMessageInfo -+ -+func (m *NetworkConfig) GetPodCidr() string { -+ if m != nil { -+ return m.PodCidr -+ } -+ return "" -+} -+ -+type RuntimeConfig struct { -+ NetworkConfig *NetworkConfig `protobuf:"bytes,1,opt,name=network_config,json=networkConfig,proto3" json:"network_config,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *RuntimeConfig) Reset() { *m = RuntimeConfig{} } -+func (*RuntimeConfig) ProtoMessage() {} -+func (*RuntimeConfig) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{99} -+} -+func (m *RuntimeConfig) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *RuntimeConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_RuntimeConfig.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *RuntimeConfig) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_RuntimeConfig.Merge(m, src) -+} -+func (m *RuntimeConfig) XXX_Size() int { -+ return m.Size() -+} -+func (m *RuntimeConfig) XXX_DiscardUnknown() { -+ xxx_messageInfo_RuntimeConfig.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_RuntimeConfig proto.InternalMessageInfo -+ -+func (m *RuntimeConfig) GetNetworkConfig() *NetworkConfig { -+ if m != nil { -+ return m.NetworkConfig -+ } -+ return nil -+} -+ -+type UpdateRuntimeConfigRequest struct { -+ RuntimeConfig *RuntimeConfig `protobuf:"bytes,1,opt,name=runtime_config,json=runtimeConfig,proto3" json:"runtime_config,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *UpdateRuntimeConfigRequest) Reset() { *m = UpdateRuntimeConfigRequest{} } -+func (*UpdateRuntimeConfigRequest) ProtoMessage() {} -+func (*UpdateRuntimeConfigRequest) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{100} -+} -+func (m *UpdateRuntimeConfigRequest) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *UpdateRuntimeConfigRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_UpdateRuntimeConfigRequest.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *UpdateRuntimeConfigRequest) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_UpdateRuntimeConfigRequest.Merge(m, src) -+} -+func (m *UpdateRuntimeConfigRequest) XXX_Size() int { -+ return m.Size() -+} -+func (m *UpdateRuntimeConfigRequest) XXX_DiscardUnknown() { -+ xxx_messageInfo_UpdateRuntimeConfigRequest.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_UpdateRuntimeConfigRequest proto.InternalMessageInfo -+ -+func (m *UpdateRuntimeConfigRequest) GetRuntimeConfig() *RuntimeConfig { -+ if m != nil { -+ return m.RuntimeConfig -+ } -+ return nil -+} -+ -+type UpdateRuntimeConfigResponse struct { -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *UpdateRuntimeConfigResponse) Reset() { *m = UpdateRuntimeConfigResponse{} } -+func (*UpdateRuntimeConfigResponse) ProtoMessage() {} -+func (*UpdateRuntimeConfigResponse) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{101} -+} -+func (m *UpdateRuntimeConfigResponse) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *UpdateRuntimeConfigResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_UpdateRuntimeConfigResponse.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *UpdateRuntimeConfigResponse) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_UpdateRuntimeConfigResponse.Merge(m, src) -+} -+func (m *UpdateRuntimeConfigResponse) XXX_Size() int { -+ return m.Size() -+} -+func (m *UpdateRuntimeConfigResponse) XXX_DiscardUnknown() { -+ xxx_messageInfo_UpdateRuntimeConfigResponse.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_UpdateRuntimeConfigResponse proto.InternalMessageInfo -+ -+// RuntimeCondition contains condition information for the runtime. -+// There are 2 kinds of runtime conditions: -+// 1. Required conditions: Conditions are required for kubelet to work -+// properly. If any required condition is unmet, the node will be not ready. -+// The required conditions include: -+// - RuntimeReady: RuntimeReady means the runtime is up and ready to accept -+// basic containers e.g. container only needs host network. -+// - NetworkReady: NetworkReady means the runtime network is up and ready to -+// accept containers which require container network. -+// -+// 2. Optional conditions: Conditions are informative to the user, but kubelet -+// will not rely on. Since condition type is an arbitrary string, all conditions -+// not required are optional. These conditions will be exposed to users to help -+// them understand the status of the system. -+type RuntimeCondition struct { -+ // Type of runtime condition. -+ Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` -+ // Status of the condition, one of true/false. Default: false. -+ Status bool `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"` -+ // Brief CamelCase string containing reason for the condition's last transition. -+ Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"` -+ // Human-readable message indicating details about last transition. -+ Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *RuntimeCondition) Reset() { *m = RuntimeCondition{} } -+func (*RuntimeCondition) ProtoMessage() {} -+func (*RuntimeCondition) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{102} -+} -+func (m *RuntimeCondition) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *RuntimeCondition) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_RuntimeCondition.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *RuntimeCondition) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_RuntimeCondition.Merge(m, src) -+} -+func (m *RuntimeCondition) XXX_Size() int { -+ return m.Size() -+} -+func (m *RuntimeCondition) XXX_DiscardUnknown() { -+ xxx_messageInfo_RuntimeCondition.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_RuntimeCondition proto.InternalMessageInfo -+ -+func (m *RuntimeCondition) GetType() string { -+ if m != nil { -+ return m.Type -+ } -+ return "" -+} -+ -+func (m *RuntimeCondition) GetStatus() bool { -+ if m != nil { -+ return m.Status -+ } -+ return false -+} -+ -+func (m *RuntimeCondition) GetReason() string { -+ if m != nil { -+ return m.Reason -+ } -+ return "" -+} -+ -+func (m *RuntimeCondition) GetMessage() string { -+ if m != nil { -+ return m.Message -+ } -+ return "" -+} -+ -+// RuntimeStatus is information about the current status of the runtime. -+type RuntimeStatus struct { -+ // List of current observed runtime conditions. -+ Conditions []*RuntimeCondition `protobuf:"bytes,1,rep,name=conditions,proto3" json:"conditions,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *RuntimeStatus) Reset() { *m = RuntimeStatus{} } -+func (*RuntimeStatus) ProtoMessage() {} -+func (*RuntimeStatus) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{103} -+} -+func (m *RuntimeStatus) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *RuntimeStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_RuntimeStatus.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *RuntimeStatus) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_RuntimeStatus.Merge(m, src) -+} -+func (m *RuntimeStatus) XXX_Size() int { -+ return m.Size() -+} -+func (m *RuntimeStatus) XXX_DiscardUnknown() { -+ xxx_messageInfo_RuntimeStatus.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_RuntimeStatus proto.InternalMessageInfo -+ -+func (m *RuntimeStatus) GetConditions() []*RuntimeCondition { -+ if m != nil { -+ return m.Conditions -+ } -+ return nil -+} -+ -+type StatusRequest struct { -+ // Verbose indicates whether to return extra information about the runtime. -+ Verbose bool `protobuf:"varint,1,opt,name=verbose,proto3" json:"verbose,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *StatusRequest) Reset() { *m = StatusRequest{} } -+func (*StatusRequest) ProtoMessage() {} -+func (*StatusRequest) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{104} -+} -+func (m *StatusRequest) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *StatusRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_StatusRequest.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *StatusRequest) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_StatusRequest.Merge(m, src) -+} -+func (m *StatusRequest) XXX_Size() int { -+ return m.Size() -+} -+func (m *StatusRequest) XXX_DiscardUnknown() { -+ xxx_messageInfo_StatusRequest.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_StatusRequest proto.InternalMessageInfo -+ -+func (m *StatusRequest) GetVerbose() bool { -+ if m != nil { -+ return m.Verbose -+ } -+ return false -+} -+ -+type StatusResponse struct { -+ // Status of the Runtime. -+ Status *RuntimeStatus `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` -+ // Info is extra information of the Runtime. The key could be arbitrary string, and -+ // value should be in json format. The information could include anything useful for -+ // debug, e.g. plugins used by the container runtime. -+ // It should only be returned non-empty when Verbose is true. -+ Info map[string]string `protobuf:"bytes,2,rep,name=info,proto3" json:"info,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *StatusResponse) Reset() { *m = StatusResponse{} } -+func (*StatusResponse) ProtoMessage() {} -+func (*StatusResponse) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{105} -+} -+func (m *StatusResponse) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *StatusResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_StatusResponse.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *StatusResponse) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_StatusResponse.Merge(m, src) -+} -+func (m *StatusResponse) XXX_Size() int { -+ return m.Size() -+} -+func (m *StatusResponse) XXX_DiscardUnknown() { -+ xxx_messageInfo_StatusResponse.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_StatusResponse proto.InternalMessageInfo -+ -+func (m *StatusResponse) GetStatus() *RuntimeStatus { -+ if m != nil { -+ return m.Status -+ } -+ return nil -+} -+ -+func (m *StatusResponse) GetInfo() map[string]string { -+ if m != nil { -+ return m.Info -+ } -+ return nil -+} -+ -+type ImageFsInfoRequest struct { -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *ImageFsInfoRequest) Reset() { *m = ImageFsInfoRequest{} } -+func (*ImageFsInfoRequest) ProtoMessage() {} -+func (*ImageFsInfoRequest) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{106} -+} -+func (m *ImageFsInfoRequest) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *ImageFsInfoRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_ImageFsInfoRequest.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *ImageFsInfoRequest) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_ImageFsInfoRequest.Merge(m, src) -+} -+func (m *ImageFsInfoRequest) XXX_Size() int { -+ return m.Size() -+} -+func (m *ImageFsInfoRequest) XXX_DiscardUnknown() { -+ xxx_messageInfo_ImageFsInfoRequest.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_ImageFsInfoRequest proto.InternalMessageInfo -+ -+// UInt64Value is the wrapper of uint64. -+type UInt64Value struct { -+ // The value. -+ Value uint64 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *UInt64Value) Reset() { *m = UInt64Value{} } -+func (*UInt64Value) ProtoMessage() {} -+func (*UInt64Value) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{107} -+} -+func (m *UInt64Value) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *UInt64Value) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_UInt64Value.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *UInt64Value) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_UInt64Value.Merge(m, src) -+} -+func (m *UInt64Value) XXX_Size() int { -+ return m.Size() -+} -+func (m *UInt64Value) XXX_DiscardUnknown() { -+ xxx_messageInfo_UInt64Value.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_UInt64Value proto.InternalMessageInfo -+ -+func (m *UInt64Value) GetValue() uint64 { -+ if m != nil { -+ return m.Value -+ } -+ return 0 -+} -+ -+// FilesystemIdentifier uniquely identify the filesystem. -+type FilesystemIdentifier struct { -+ // Mountpoint of a filesystem. -+ Mountpoint string `protobuf:"bytes,1,opt,name=mountpoint,proto3" json:"mountpoint,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *FilesystemIdentifier) Reset() { *m = FilesystemIdentifier{} } -+func (*FilesystemIdentifier) ProtoMessage() {} -+func (*FilesystemIdentifier) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{108} -+} -+func (m *FilesystemIdentifier) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *FilesystemIdentifier) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_FilesystemIdentifier.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *FilesystemIdentifier) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_FilesystemIdentifier.Merge(m, src) -+} -+func (m *FilesystemIdentifier) XXX_Size() int { -+ return m.Size() -+} -+func (m *FilesystemIdentifier) XXX_DiscardUnknown() { -+ xxx_messageInfo_FilesystemIdentifier.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_FilesystemIdentifier proto.InternalMessageInfo -+ -+func (m *FilesystemIdentifier) GetMountpoint() string { -+ if m != nil { -+ return m.Mountpoint -+ } -+ return "" -+} -+ -+// FilesystemUsage provides the filesystem usage information. -+type FilesystemUsage struct { -+ // Timestamp in nanoseconds at which the information were collected. Must be > 0. -+ Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` -+ // The unique identifier of the filesystem. -+ FsId *FilesystemIdentifier `protobuf:"bytes,2,opt,name=fs_id,json=fsId,proto3" json:"fs_id,omitempty"` -+ // UsedBytes represents the bytes used for images on the filesystem. -+ // This may differ from the total bytes used on the filesystem and may not -+ // equal CapacityBytes - AvailableBytes. -+ UsedBytes *UInt64Value `protobuf:"bytes,3,opt,name=used_bytes,json=usedBytes,proto3" json:"used_bytes,omitempty"` -+ // InodesUsed represents the inodes used by the images. -+ // This may not equal InodesCapacity - InodesAvailable because the underlying -+ // filesystem may also be used for purposes other than storing images. -+ InodesUsed *UInt64Value `protobuf:"bytes,4,opt,name=inodes_used,json=inodesUsed,proto3" json:"inodes_used,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *FilesystemUsage) Reset() { *m = FilesystemUsage{} } -+func (*FilesystemUsage) ProtoMessage() {} -+func (*FilesystemUsage) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{109} -+} -+func (m *FilesystemUsage) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *FilesystemUsage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_FilesystemUsage.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *FilesystemUsage) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_FilesystemUsage.Merge(m, src) -+} -+func (m *FilesystemUsage) XXX_Size() int { -+ return m.Size() -+} -+func (m *FilesystemUsage) XXX_DiscardUnknown() { -+ xxx_messageInfo_FilesystemUsage.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_FilesystemUsage proto.InternalMessageInfo -+ -+func (m *FilesystemUsage) GetTimestamp() int64 { -+ if m != nil { -+ return m.Timestamp -+ } -+ return 0 -+} -+ -+func (m *FilesystemUsage) GetFsId() *FilesystemIdentifier { -+ if m != nil { -+ return m.FsId -+ } -+ return nil -+} -+ -+func (m *FilesystemUsage) GetUsedBytes() *UInt64Value { -+ if m != nil { -+ return m.UsedBytes -+ } -+ return nil -+} -+ -+func (m *FilesystemUsage) GetInodesUsed() *UInt64Value { -+ if m != nil { -+ return m.InodesUsed -+ } -+ return nil -+} -+ -+type ImageFsInfoResponse struct { -+ // Information of image filesystem(s). -+ ImageFilesystems []*FilesystemUsage `protobuf:"bytes,1,rep,name=image_filesystems,json=imageFilesystems,proto3" json:"image_filesystems,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *ImageFsInfoResponse) Reset() { *m = ImageFsInfoResponse{} } -+func (*ImageFsInfoResponse) ProtoMessage() {} -+func (*ImageFsInfoResponse) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{110} -+} -+func (m *ImageFsInfoResponse) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *ImageFsInfoResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_ImageFsInfoResponse.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *ImageFsInfoResponse) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_ImageFsInfoResponse.Merge(m, src) -+} -+func (m *ImageFsInfoResponse) XXX_Size() int { -+ return m.Size() -+} -+func (m *ImageFsInfoResponse) XXX_DiscardUnknown() { -+ xxx_messageInfo_ImageFsInfoResponse.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_ImageFsInfoResponse proto.InternalMessageInfo -+ -+func (m *ImageFsInfoResponse) GetImageFilesystems() []*FilesystemUsage { -+ if m != nil { -+ return m.ImageFilesystems -+ } -+ return nil -+} -+ -+type ContainerStatsRequest struct { -+ // ID of the container for which to retrieve stats. -+ ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *ContainerStatsRequest) Reset() { *m = ContainerStatsRequest{} } -+func (*ContainerStatsRequest) ProtoMessage() {} -+func (*ContainerStatsRequest) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{111} -+} -+func (m *ContainerStatsRequest) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *ContainerStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_ContainerStatsRequest.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *ContainerStatsRequest) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_ContainerStatsRequest.Merge(m, src) -+} -+func (m *ContainerStatsRequest) XXX_Size() int { -+ return m.Size() -+} -+func (m *ContainerStatsRequest) XXX_DiscardUnknown() { -+ xxx_messageInfo_ContainerStatsRequest.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_ContainerStatsRequest proto.InternalMessageInfo -+ -+func (m *ContainerStatsRequest) GetContainerId() string { -+ if m != nil { -+ return m.ContainerId -+ } -+ return "" -+} -+ -+type ContainerStatsResponse struct { -+ // Stats of the container. -+ Stats *ContainerStats `protobuf:"bytes,1,opt,name=stats,proto3" json:"stats,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *ContainerStatsResponse) Reset() { *m = ContainerStatsResponse{} } -+func (*ContainerStatsResponse) ProtoMessage() {} -+func (*ContainerStatsResponse) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{112} -+} -+func (m *ContainerStatsResponse) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *ContainerStatsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_ContainerStatsResponse.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *ContainerStatsResponse) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_ContainerStatsResponse.Merge(m, src) -+} -+func (m *ContainerStatsResponse) XXX_Size() int { -+ return m.Size() -+} -+func (m *ContainerStatsResponse) XXX_DiscardUnknown() { -+ xxx_messageInfo_ContainerStatsResponse.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_ContainerStatsResponse proto.InternalMessageInfo -+ -+func (m *ContainerStatsResponse) GetStats() *ContainerStats { -+ if m != nil { -+ return m.Stats -+ } -+ return nil -+} -+ -+type ListContainerStatsRequest struct { -+ // Filter for the list request. -+ Filter *ContainerStatsFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *ListContainerStatsRequest) Reset() { *m = ListContainerStatsRequest{} } -+func (*ListContainerStatsRequest) ProtoMessage() {} -+func (*ListContainerStatsRequest) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{113} -+} -+func (m *ListContainerStatsRequest) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *ListContainerStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_ListContainerStatsRequest.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *ListContainerStatsRequest) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_ListContainerStatsRequest.Merge(m, src) -+} -+func (m *ListContainerStatsRequest) XXX_Size() int { -+ return m.Size() -+} -+func (m *ListContainerStatsRequest) XXX_DiscardUnknown() { -+ xxx_messageInfo_ListContainerStatsRequest.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_ListContainerStatsRequest proto.InternalMessageInfo -+ -+func (m *ListContainerStatsRequest) GetFilter() *ContainerStatsFilter { -+ if m != nil { -+ return m.Filter -+ } -+ return nil -+} -+ -+// ContainerStatsFilter is used to filter containers. -+// All those fields are combined with 'AND' -+type ContainerStatsFilter struct { -+ // ID of the container. -+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` -+ // ID of the PodSandbox. -+ PodSandboxId string `protobuf:"bytes,2,opt,name=pod_sandbox_id,json=podSandboxId,proto3" json:"pod_sandbox_id,omitempty"` -+ // LabelSelector to select matches. -+ // Only api.MatchLabels is supported for now and the requirements -+ // are ANDed. MatchExpressions is not supported yet. -+ LabelSelector map[string]string `protobuf:"bytes,3,rep,name=label_selector,json=labelSelector,proto3" json:"label_selector,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *ContainerStatsFilter) Reset() { *m = ContainerStatsFilter{} } -+func (*ContainerStatsFilter) ProtoMessage() {} -+func (*ContainerStatsFilter) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{114} -+} -+func (m *ContainerStatsFilter) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *ContainerStatsFilter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_ContainerStatsFilter.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *ContainerStatsFilter) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_ContainerStatsFilter.Merge(m, src) -+} -+func (m *ContainerStatsFilter) XXX_Size() int { -+ return m.Size() -+} -+func (m *ContainerStatsFilter) XXX_DiscardUnknown() { -+ xxx_messageInfo_ContainerStatsFilter.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_ContainerStatsFilter proto.InternalMessageInfo -+ -+func (m *ContainerStatsFilter) GetId() string { -+ if m != nil { -+ return m.Id -+ } -+ return "" -+} -+ -+func (m *ContainerStatsFilter) GetPodSandboxId() string { -+ if m != nil { -+ return m.PodSandboxId -+ } -+ return "" -+} -+ -+func (m *ContainerStatsFilter) GetLabelSelector() map[string]string { -+ if m != nil { -+ return m.LabelSelector -+ } -+ return nil -+} -+ -+type ListContainerStatsResponse struct { -+ // Stats of the container. -+ Stats []*ContainerStats `protobuf:"bytes,1,rep,name=stats,proto3" json:"stats,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *ListContainerStatsResponse) Reset() { *m = ListContainerStatsResponse{} } -+func (*ListContainerStatsResponse) ProtoMessage() {} -+func (*ListContainerStatsResponse) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{115} -+} -+func (m *ListContainerStatsResponse) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *ListContainerStatsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_ListContainerStatsResponse.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *ListContainerStatsResponse) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_ListContainerStatsResponse.Merge(m, src) -+} -+func (m *ListContainerStatsResponse) XXX_Size() int { -+ return m.Size() -+} -+func (m *ListContainerStatsResponse) XXX_DiscardUnknown() { -+ xxx_messageInfo_ListContainerStatsResponse.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_ListContainerStatsResponse proto.InternalMessageInfo -+ -+func (m *ListContainerStatsResponse) GetStats() []*ContainerStats { -+ if m != nil { -+ return m.Stats -+ } -+ return nil -+} -+ -+// ContainerAttributes provides basic information of the container. -+type ContainerAttributes struct { -+ // ID of the container. -+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` -+ // Metadata of the container. -+ Metadata *ContainerMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` -+ // Key-value pairs that may be used to scope and select individual resources. -+ Labels map[string]string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -+ // Unstructured key-value map holding arbitrary metadata. -+ // Annotations MUST NOT be altered by the runtime; the value of this field -+ // MUST be identical to that of the corresponding ContainerConfig used to -+ // instantiate the Container this status represents. -+ Annotations map[string]string `protobuf:"bytes,4,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *ContainerAttributes) Reset() { *m = ContainerAttributes{} } -+func (*ContainerAttributes) ProtoMessage() {} -+func (*ContainerAttributes) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{116} -+} -+func (m *ContainerAttributes) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *ContainerAttributes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_ContainerAttributes.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *ContainerAttributes) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_ContainerAttributes.Merge(m, src) -+} -+func (m *ContainerAttributes) XXX_Size() int { -+ return m.Size() -+} -+func (m *ContainerAttributes) XXX_DiscardUnknown() { -+ xxx_messageInfo_ContainerAttributes.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_ContainerAttributes proto.InternalMessageInfo -+ -+func (m *ContainerAttributes) GetId() string { -+ if m != nil { -+ return m.Id -+ } -+ return "" -+} -+ -+func (m *ContainerAttributes) GetMetadata() *ContainerMetadata { -+ if m != nil { -+ return m.Metadata -+ } -+ return nil -+} -+ -+func (m *ContainerAttributes) GetLabels() map[string]string { -+ if m != nil { -+ return m.Labels -+ } -+ return nil -+} -+ -+func (m *ContainerAttributes) GetAnnotations() map[string]string { -+ if m != nil { -+ return m.Annotations -+ } -+ return nil -+} -+ -+// ContainerStats provides the resource usage statistics for a container. -+type ContainerStats struct { -+ // Information of the container. -+ Attributes *ContainerAttributes `protobuf:"bytes,1,opt,name=attributes,proto3" json:"attributes,omitempty"` -+ // CPU usage gathered from the container. -+ Cpu *CpuUsage `protobuf:"bytes,2,opt,name=cpu,proto3" json:"cpu,omitempty"` -+ // Memory usage gathered from the container. -+ Memory *MemoryUsage `protobuf:"bytes,3,opt,name=memory,proto3" json:"memory,omitempty"` -+ // Usage of the writable layer. -+ WritableLayer *FilesystemUsage `protobuf:"bytes,4,opt,name=writable_layer,json=writableLayer,proto3" json:"writable_layer,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *ContainerStats) Reset() { *m = ContainerStats{} } -+func (*ContainerStats) ProtoMessage() {} -+func (*ContainerStats) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{117} -+} -+func (m *ContainerStats) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *ContainerStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_ContainerStats.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *ContainerStats) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_ContainerStats.Merge(m, src) -+} -+func (m *ContainerStats) XXX_Size() int { -+ return m.Size() -+} -+func (m *ContainerStats) XXX_DiscardUnknown() { -+ xxx_messageInfo_ContainerStats.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_ContainerStats proto.InternalMessageInfo -+ -+func (m *ContainerStats) GetAttributes() *ContainerAttributes { -+ if m != nil { -+ return m.Attributes -+ } -+ return nil -+} -+ -+func (m *ContainerStats) GetCpu() *CpuUsage { -+ if m != nil { -+ return m.Cpu -+ } -+ return nil -+} -+ -+func (m *ContainerStats) GetMemory() *MemoryUsage { -+ if m != nil { -+ return m.Memory -+ } -+ return nil -+} -+ -+func (m *ContainerStats) GetWritableLayer() *FilesystemUsage { -+ if m != nil { -+ return m.WritableLayer -+ } -+ return nil -+} -+ -+// CpuUsage provides the CPU usage information. -+type CpuUsage struct { -+ // Timestamp in nanoseconds at which the information were collected. Must be > 0. -+ Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` -+ // Cumulative CPU usage (sum across all cores) since object creation. -+ UsageCoreNanoSeconds *UInt64Value `protobuf:"bytes,2,opt,name=usage_core_nano_seconds,json=usageCoreNanoSeconds,proto3" json:"usage_core_nano_seconds,omitempty"` -+ // Total CPU usage (sum of all cores) averaged over the sample window. -+ // The "core" unit can be interpreted as CPU core-nanoseconds per second. -+ UsageNanoCores *UInt64Value `protobuf:"bytes,3,opt,name=usage_nano_cores,json=usageNanoCores,proto3" json:"usage_nano_cores,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *CpuUsage) Reset() { *m = CpuUsage{} } -+func (*CpuUsage) ProtoMessage() {} -+func (*CpuUsage) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{118} -+} -+func (m *CpuUsage) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *CpuUsage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_CpuUsage.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *CpuUsage) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_CpuUsage.Merge(m, src) -+} -+func (m *CpuUsage) XXX_Size() int { -+ return m.Size() -+} -+func (m *CpuUsage) XXX_DiscardUnknown() { -+ xxx_messageInfo_CpuUsage.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_CpuUsage proto.InternalMessageInfo -+ -+func (m *CpuUsage) GetTimestamp() int64 { -+ if m != nil { -+ return m.Timestamp -+ } -+ return 0 -+} -+ -+func (m *CpuUsage) GetUsageCoreNanoSeconds() *UInt64Value { -+ if m != nil { -+ return m.UsageCoreNanoSeconds -+ } -+ return nil -+} -+ -+func (m *CpuUsage) GetUsageNanoCores() *UInt64Value { -+ if m != nil { -+ return m.UsageNanoCores -+ } -+ return nil -+} -+ -+// MemoryUsage provides the memory usage information. -+type MemoryUsage struct { -+ // Timestamp in nanoseconds at which the information were collected. Must be > 0. -+ Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` -+ // The amount of working set memory in bytes. -+ WorkingSetBytes *UInt64Value `protobuf:"bytes,2,opt,name=working_set_bytes,json=workingSetBytes,proto3" json:"working_set_bytes,omitempty"` -+ // Available memory for use. This is defined as the memory limit - workingSetBytes. -+ AvailableBytes *UInt64Value `protobuf:"bytes,3,opt,name=available_bytes,json=availableBytes,proto3" json:"available_bytes,omitempty"` -+ // Total memory in use. This includes all memory regardless of when it was accessed. -+ UsageBytes *UInt64Value `protobuf:"bytes,4,opt,name=usage_bytes,json=usageBytes,proto3" json:"usage_bytes,omitempty"` -+ // The amount of anonymous and swap cache memory (includes transparent hugepages). -+ RssBytes *UInt64Value `protobuf:"bytes,5,opt,name=rss_bytes,json=rssBytes,proto3" json:"rss_bytes,omitempty"` -+ // Cumulative number of minor page faults. -+ PageFaults *UInt64Value `protobuf:"bytes,6,opt,name=page_faults,json=pageFaults,proto3" json:"page_faults,omitempty"` -+ // Cumulative number of major page faults. -+ MajorPageFaults *UInt64Value `protobuf:"bytes,7,opt,name=major_page_faults,json=majorPageFaults,proto3" json:"major_page_faults,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *MemoryUsage) Reset() { *m = MemoryUsage{} } -+func (*MemoryUsage) ProtoMessage() {} -+func (*MemoryUsage) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{119} -+} -+func (m *MemoryUsage) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *MemoryUsage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_MemoryUsage.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *MemoryUsage) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_MemoryUsage.Merge(m, src) -+} -+func (m *MemoryUsage) XXX_Size() int { -+ return m.Size() -+} -+func (m *MemoryUsage) XXX_DiscardUnknown() { -+ xxx_messageInfo_MemoryUsage.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_MemoryUsage proto.InternalMessageInfo -+ -+func (m *MemoryUsage) GetTimestamp() int64 { -+ if m != nil { -+ return m.Timestamp -+ } -+ return 0 -+} -+ -+func (m *MemoryUsage) GetWorkingSetBytes() *UInt64Value { -+ if m != nil { -+ return m.WorkingSetBytes -+ } -+ return nil -+} -+ -+func (m *MemoryUsage) GetAvailableBytes() *UInt64Value { -+ if m != nil { -+ return m.AvailableBytes -+ } -+ return nil -+} -+ -+func (m *MemoryUsage) GetUsageBytes() *UInt64Value { -+ if m != nil { -+ return m.UsageBytes -+ } -+ return nil -+} -+ -+func (m *MemoryUsage) GetRssBytes() *UInt64Value { -+ if m != nil { -+ return m.RssBytes -+ } -+ return nil -+} -+ -+func (m *MemoryUsage) GetPageFaults() *UInt64Value { -+ if m != nil { -+ return m.PageFaults -+ } -+ return nil -+} -+ -+func (m *MemoryUsage) GetMajorPageFaults() *UInt64Value { -+ if m != nil { -+ return m.MajorPageFaults -+ } -+ return nil -+} -+ -+type ReopenContainerLogRequest struct { -+ // ID of the container for which to reopen the log. -+ ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *ReopenContainerLogRequest) Reset() { *m = ReopenContainerLogRequest{} } -+func (*ReopenContainerLogRequest) ProtoMessage() {} -+func (*ReopenContainerLogRequest) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{120} -+} -+func (m *ReopenContainerLogRequest) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *ReopenContainerLogRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_ReopenContainerLogRequest.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *ReopenContainerLogRequest) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_ReopenContainerLogRequest.Merge(m, src) -+} -+func (m *ReopenContainerLogRequest) XXX_Size() int { -+ return m.Size() -+} -+func (m *ReopenContainerLogRequest) XXX_DiscardUnknown() { -+ xxx_messageInfo_ReopenContainerLogRequest.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_ReopenContainerLogRequest proto.InternalMessageInfo -+ -+func (m *ReopenContainerLogRequest) GetContainerId() string { -+ if m != nil { -+ return m.ContainerId -+ } -+ return "" -+} -+ -+type ReopenContainerLogResponse struct { -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *ReopenContainerLogResponse) Reset() { *m = ReopenContainerLogResponse{} } -+func (*ReopenContainerLogResponse) ProtoMessage() {} -+func (*ReopenContainerLogResponse) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{121} -+} -+func (m *ReopenContainerLogResponse) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *ReopenContainerLogResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_ReopenContainerLogResponse.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *ReopenContainerLogResponse) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_ReopenContainerLogResponse.Merge(m, src) -+} -+func (m *ReopenContainerLogResponse) XXX_Size() int { -+ return m.Size() -+} -+func (m *ReopenContainerLogResponse) XXX_DiscardUnknown() { -+ xxx_messageInfo_ReopenContainerLogResponse.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_ReopenContainerLogResponse proto.InternalMessageInfo -+ -+type CheckpointContainerRequest struct { -+ // ID of the container to be checkpointed. -+ ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` -+ // Location of the checkpoint archive used for export -+ Location string `protobuf:"bytes,2,opt,name=location,proto3" json:"location,omitempty"` -+ // Timeout in seconds for the checkpoint to complete. -+ // Timeout of zero means to use the CRI default. -+ // Timeout > 0 means to use the user specified timeout. -+ Timeout int64 `protobuf:"varint,3,opt,name=timeout,proto3" json:"timeout,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *CheckpointContainerRequest) Reset() { *m = CheckpointContainerRequest{} } -+func (*CheckpointContainerRequest) ProtoMessage() {} -+func (*CheckpointContainerRequest) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{122} -+} -+func (m *CheckpointContainerRequest) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *CheckpointContainerRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_CheckpointContainerRequest.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *CheckpointContainerRequest) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_CheckpointContainerRequest.Merge(m, src) -+} -+func (m *CheckpointContainerRequest) XXX_Size() int { -+ return m.Size() -+} -+func (m *CheckpointContainerRequest) XXX_DiscardUnknown() { -+ xxx_messageInfo_CheckpointContainerRequest.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_CheckpointContainerRequest proto.InternalMessageInfo -+ -+func (m *CheckpointContainerRequest) GetContainerId() string { -+ if m != nil { -+ return m.ContainerId -+ } -+ return "" -+} -+ -+func (m *CheckpointContainerRequest) GetLocation() string { -+ if m != nil { -+ return m.Location -+ } -+ return "" -+} -+ -+func (m *CheckpointContainerRequest) GetTimeout() int64 { -+ if m != nil { -+ return m.Timeout -+ } -+ return 0 -+} -+ -+type CheckpointContainerResponse struct { -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *CheckpointContainerResponse) Reset() { *m = CheckpointContainerResponse{} } -+func (*CheckpointContainerResponse) ProtoMessage() {} -+func (*CheckpointContainerResponse) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{123} -+} -+func (m *CheckpointContainerResponse) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *CheckpointContainerResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_CheckpointContainerResponse.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *CheckpointContainerResponse) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_CheckpointContainerResponse.Merge(m, src) -+} -+func (m *CheckpointContainerResponse) XXX_Size() int { -+ return m.Size() -+} -+func (m *CheckpointContainerResponse) XXX_DiscardUnknown() { -+ xxx_messageInfo_CheckpointContainerResponse.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_CheckpointContainerResponse proto.InternalMessageInfo -+ -+type GetEventsRequest struct { -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *GetEventsRequest) Reset() { *m = GetEventsRequest{} } -+func (*GetEventsRequest) ProtoMessage() {} -+func (*GetEventsRequest) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{124} -+} -+func (m *GetEventsRequest) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *GetEventsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_GetEventsRequest.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *GetEventsRequest) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_GetEventsRequest.Merge(m, src) -+} -+func (m *GetEventsRequest) XXX_Size() int { -+ return m.Size() -+} -+func (m *GetEventsRequest) XXX_DiscardUnknown() { -+ xxx_messageInfo_GetEventsRequest.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_GetEventsRequest proto.InternalMessageInfo -+ -+type ContainerEventResponse struct { -+ // ID of the container -+ ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` -+ // Type of the container event -+ ContainerEventType ContainerEventType `protobuf:"varint,2,opt,name=container_event_type,json=containerEventType,proto3,enum=runtime.v1.ContainerEventType" json:"container_event_type,omitempty"` -+ // Creation timestamp of this event -+ CreatedAt int64 `protobuf:"varint,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` -+ // ID of the sandbox container -+ PodSandboxMetadata *PodSandboxMetadata `protobuf:"bytes,4,opt,name=pod_sandbox_metadata,json=podSandboxMetadata,proto3" json:"pod_sandbox_metadata,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *ContainerEventResponse) Reset() { *m = ContainerEventResponse{} } -+func (*ContainerEventResponse) ProtoMessage() {} -+func (*ContainerEventResponse) Descriptor() ([]byte, []int) { -+ return fileDescriptor_00212fb1f9d3bf1c, []int{125} -+} -+func (m *ContainerEventResponse) XXX_Unmarshal(b []byte) error { -+ return m.Unmarshal(b) -+} -+func (m *ContainerEventResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ if deterministic { -+ return xxx_messageInfo_ContainerEventResponse.Marshal(b, m, deterministic) -+ } else { -+ b = b[:cap(b)] -+ n, err := m.MarshalToSizedBuffer(b) -+ if err != nil { -+ return nil, err -+ } -+ return b[:n], nil -+ } -+} -+func (m *ContainerEventResponse) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_ContainerEventResponse.Merge(m, src) -+} -+func (m *ContainerEventResponse) XXX_Size() int { -+ return m.Size() -+} -+func (m *ContainerEventResponse) XXX_DiscardUnknown() { -+ xxx_messageInfo_ContainerEventResponse.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_ContainerEventResponse proto.InternalMessageInfo -+ -+func (m *ContainerEventResponse) GetContainerId() string { -+ if m != nil { -+ return m.ContainerId -+ } -+ return "" -+} -+ -+func (m *ContainerEventResponse) GetContainerEventType() ContainerEventType { -+ if m != nil { -+ return m.ContainerEventType -+ } -+ return ContainerEventType_CONTAINER_CREATED_EVENT -+} -+ -+func (m *ContainerEventResponse) GetCreatedAt() int64 { -+ if m != nil { -+ return m.CreatedAt -+ } -+ return 0 -+} -+ -+func (m *ContainerEventResponse) GetPodSandboxMetadata() *PodSandboxMetadata { -+ if m != nil { -+ return m.PodSandboxMetadata -+ } -+ return nil -+} -+ -+func init() { -+ proto.RegisterEnum("runtime.v1.Protocol", Protocol_name, Protocol_value) -+ proto.RegisterEnum("runtime.v1.MountPropagation", MountPropagation_name, MountPropagation_value) -+ proto.RegisterEnum("runtime.v1.NamespaceMode", NamespaceMode_name, NamespaceMode_value) -+ proto.RegisterEnum("runtime.v1.PodSandboxState", PodSandboxState_name, PodSandboxState_value) -+ proto.RegisterEnum("runtime.v1.ContainerState", ContainerState_name, ContainerState_value) -+ proto.RegisterEnum("runtime.v1.ContainerEventType", ContainerEventType_name, ContainerEventType_value) -+ proto.RegisterEnum("runtime.v1.SecurityProfile_ProfileType", SecurityProfile_ProfileType_name, SecurityProfile_ProfileType_value) -+ proto.RegisterType((*VersionRequest)(nil), "runtime.v1.VersionRequest") -+ proto.RegisterType((*VersionResponse)(nil), "runtime.v1.VersionResponse") -+ proto.RegisterType((*DNSConfig)(nil), "runtime.v1.DNSConfig") -+ proto.RegisterType((*PortMapping)(nil), "runtime.v1.PortMapping") -+ proto.RegisterType((*Mount)(nil), "runtime.v1.Mount") -+ proto.RegisterType((*IDMapping)(nil), "runtime.v1.IDMapping") -+ proto.RegisterType((*UserNamespace)(nil), "runtime.v1.UserNamespace") -+ proto.RegisterType((*NamespaceOption)(nil), "runtime.v1.NamespaceOption") -+ proto.RegisterType((*Int64Value)(nil), "runtime.v1.Int64Value") -+ proto.RegisterType((*LinuxSandboxSecurityContext)(nil), "runtime.v1.LinuxSandboxSecurityContext") -+ proto.RegisterType((*SecurityProfile)(nil), "runtime.v1.SecurityProfile") -+ proto.RegisterType((*LinuxPodSandboxConfig)(nil), "runtime.v1.LinuxPodSandboxConfig") -+ proto.RegisterMapType((map[string]string)(nil), "runtime.v1.LinuxPodSandboxConfig.SysctlsEntry") -+ proto.RegisterType((*PodSandboxMetadata)(nil), "runtime.v1.PodSandboxMetadata") -+ proto.RegisterType((*PodSandboxConfig)(nil), "runtime.v1.PodSandboxConfig") -+ proto.RegisterMapType((map[string]string)(nil), "runtime.v1.PodSandboxConfig.AnnotationsEntry") -+ proto.RegisterMapType((map[string]string)(nil), "runtime.v1.PodSandboxConfig.LabelsEntry") -+ proto.RegisterType((*RunPodSandboxRequest)(nil), "runtime.v1.RunPodSandboxRequest") -+ proto.RegisterType((*RunPodSandboxResponse)(nil), "runtime.v1.RunPodSandboxResponse") -+ proto.RegisterType((*StopPodSandboxRequest)(nil), "runtime.v1.StopPodSandboxRequest") -+ proto.RegisterType((*StopPodSandboxResponse)(nil), "runtime.v1.StopPodSandboxResponse") -+ proto.RegisterType((*RemovePodSandboxRequest)(nil), "runtime.v1.RemovePodSandboxRequest") -+ proto.RegisterType((*RemovePodSandboxResponse)(nil), "runtime.v1.RemovePodSandboxResponse") -+ proto.RegisterType((*PodSandboxStatusRequest)(nil), "runtime.v1.PodSandboxStatusRequest") -+ proto.RegisterType((*PodIP)(nil), "runtime.v1.PodIP") -+ proto.RegisterType((*PodSandboxNetworkStatus)(nil), "runtime.v1.PodSandboxNetworkStatus") -+ proto.RegisterType((*Namespace)(nil), "runtime.v1.Namespace") -+ proto.RegisterType((*LinuxPodSandboxStatus)(nil), "runtime.v1.LinuxPodSandboxStatus") -+ proto.RegisterType((*PodSandboxStatus)(nil), "runtime.v1.PodSandboxStatus") -+ proto.RegisterMapType((map[string]string)(nil), "runtime.v1.PodSandboxStatus.AnnotationsEntry") -+ proto.RegisterMapType((map[string]string)(nil), "runtime.v1.PodSandboxStatus.LabelsEntry") -+ proto.RegisterType((*PodSandboxStatusResponse)(nil), "runtime.v1.PodSandboxStatusResponse") -+ proto.RegisterMapType((map[string]string)(nil), "runtime.v1.PodSandboxStatusResponse.InfoEntry") -+ proto.RegisterType((*PodSandboxStateValue)(nil), "runtime.v1.PodSandboxStateValue") -+ proto.RegisterType((*PodSandboxFilter)(nil), "runtime.v1.PodSandboxFilter") -+ proto.RegisterMapType((map[string]string)(nil), "runtime.v1.PodSandboxFilter.LabelSelectorEntry") -+ proto.RegisterType((*ListPodSandboxRequest)(nil), "runtime.v1.ListPodSandboxRequest") -+ proto.RegisterType((*PodSandbox)(nil), "runtime.v1.PodSandbox") -+ proto.RegisterMapType((map[string]string)(nil), "runtime.v1.PodSandbox.AnnotationsEntry") -+ proto.RegisterMapType((map[string]string)(nil), "runtime.v1.PodSandbox.LabelsEntry") -+ proto.RegisterType((*ListPodSandboxResponse)(nil), "runtime.v1.ListPodSandboxResponse") -+ proto.RegisterType((*PodSandboxStatsRequest)(nil), "runtime.v1.PodSandboxStatsRequest") -+ proto.RegisterType((*PodSandboxStatsResponse)(nil), "runtime.v1.PodSandboxStatsResponse") -+ proto.RegisterType((*PodSandboxStatsFilter)(nil), "runtime.v1.PodSandboxStatsFilter") -+ proto.RegisterMapType((map[string]string)(nil), "runtime.v1.PodSandboxStatsFilter.LabelSelectorEntry") -+ proto.RegisterType((*ListPodSandboxStatsRequest)(nil), "runtime.v1.ListPodSandboxStatsRequest") -+ proto.RegisterType((*ListPodSandboxStatsResponse)(nil), "runtime.v1.ListPodSandboxStatsResponse") -+ proto.RegisterType((*PodSandboxAttributes)(nil), "runtime.v1.PodSandboxAttributes") -+ proto.RegisterMapType((map[string]string)(nil), "runtime.v1.PodSandboxAttributes.AnnotationsEntry") -+ proto.RegisterMapType((map[string]string)(nil), "runtime.v1.PodSandboxAttributes.LabelsEntry") -+ proto.RegisterType((*PodSandboxStats)(nil), "runtime.v1.PodSandboxStats") -+ proto.RegisterType((*LinuxPodSandboxStats)(nil), "runtime.v1.LinuxPodSandboxStats") -+ proto.RegisterType((*WindowsPodSandboxStats)(nil), "runtime.v1.WindowsPodSandboxStats") -+ proto.RegisterType((*NetworkUsage)(nil), "runtime.v1.NetworkUsage") -+ proto.RegisterType((*NetworkInterfaceUsage)(nil), "runtime.v1.NetworkInterfaceUsage") -+ proto.RegisterType((*ProcessUsage)(nil), "runtime.v1.ProcessUsage") -+ proto.RegisterType((*ImageSpec)(nil), "runtime.v1.ImageSpec") -+ proto.RegisterMapType((map[string]string)(nil), "runtime.v1.ImageSpec.AnnotationsEntry") -+ proto.RegisterType((*KeyValue)(nil), "runtime.v1.KeyValue") -+ proto.RegisterType((*LinuxContainerResources)(nil), "runtime.v1.LinuxContainerResources") -+ proto.RegisterMapType((map[string]string)(nil), "runtime.v1.LinuxContainerResources.UnifiedEntry") -+ proto.RegisterType((*HugepageLimit)(nil), "runtime.v1.HugepageLimit") -+ proto.RegisterType((*SELinuxOption)(nil), "runtime.v1.SELinuxOption") -+ proto.RegisterType((*Capability)(nil), "runtime.v1.Capability") -+ proto.RegisterType((*LinuxContainerSecurityContext)(nil), "runtime.v1.LinuxContainerSecurityContext") -+ proto.RegisterType((*LinuxContainerConfig)(nil), "runtime.v1.LinuxContainerConfig") -+ proto.RegisterType((*WindowsSandboxSecurityContext)(nil), "runtime.v1.WindowsSandboxSecurityContext") -+ proto.RegisterType((*WindowsPodSandboxConfig)(nil), "runtime.v1.WindowsPodSandboxConfig") -+ proto.RegisterType((*WindowsContainerSecurityContext)(nil), "runtime.v1.WindowsContainerSecurityContext") -+ proto.RegisterType((*WindowsContainerConfig)(nil), "runtime.v1.WindowsContainerConfig") -+ proto.RegisterType((*WindowsContainerResources)(nil), "runtime.v1.WindowsContainerResources") -+ proto.RegisterType((*ContainerMetadata)(nil), "runtime.v1.ContainerMetadata") -+ proto.RegisterType((*Device)(nil), "runtime.v1.Device") -+ proto.RegisterType((*ContainerConfig)(nil), "runtime.v1.ContainerConfig") -+ proto.RegisterMapType((map[string]string)(nil), "runtime.v1.ContainerConfig.AnnotationsEntry") -+ proto.RegisterMapType((map[string]string)(nil), "runtime.v1.ContainerConfig.LabelsEntry") -+ proto.RegisterType((*CreateContainerRequest)(nil), "runtime.v1.CreateContainerRequest") -+ proto.RegisterType((*CreateContainerResponse)(nil), "runtime.v1.CreateContainerResponse") -+ proto.RegisterType((*StartContainerRequest)(nil), "runtime.v1.StartContainerRequest") -+ proto.RegisterType((*StartContainerResponse)(nil), "runtime.v1.StartContainerResponse") -+ proto.RegisterType((*StopContainerRequest)(nil), "runtime.v1.StopContainerRequest") -+ proto.RegisterType((*StopContainerResponse)(nil), "runtime.v1.StopContainerResponse") -+ proto.RegisterType((*RemoveContainerRequest)(nil), "runtime.v1.RemoveContainerRequest") -+ proto.RegisterType((*RemoveContainerResponse)(nil), "runtime.v1.RemoveContainerResponse") -+ proto.RegisterType((*ContainerStateValue)(nil), "runtime.v1.ContainerStateValue") -+ proto.RegisterType((*ContainerFilter)(nil), "runtime.v1.ContainerFilter") -+ proto.RegisterMapType((map[string]string)(nil), "runtime.v1.ContainerFilter.LabelSelectorEntry") -+ proto.RegisterType((*ListContainersRequest)(nil), "runtime.v1.ListContainersRequest") -+ proto.RegisterType((*Container)(nil), "runtime.v1.Container") -+ proto.RegisterMapType((map[string]string)(nil), "runtime.v1.Container.AnnotationsEntry") -+ proto.RegisterMapType((map[string]string)(nil), "runtime.v1.Container.LabelsEntry") -+ proto.RegisterType((*ListContainersResponse)(nil), "runtime.v1.ListContainersResponse") -+ proto.RegisterType((*ContainerStatusRequest)(nil), "runtime.v1.ContainerStatusRequest") -+ proto.RegisterType((*ContainerStatus)(nil), "runtime.v1.ContainerStatus") -+ proto.RegisterMapType((map[string]string)(nil), "runtime.v1.ContainerStatus.AnnotationsEntry") -+ proto.RegisterMapType((map[string]string)(nil), "runtime.v1.ContainerStatus.LabelsEntry") -+ proto.RegisterType((*ContainerStatusResponse)(nil), "runtime.v1.ContainerStatusResponse") -+ proto.RegisterMapType((map[string]string)(nil), "runtime.v1.ContainerStatusResponse.InfoEntry") -+ proto.RegisterType((*ContainerResources)(nil), "runtime.v1.ContainerResources") -+ proto.RegisterType((*UpdateContainerResourcesRequest)(nil), "runtime.v1.UpdateContainerResourcesRequest") -+ proto.RegisterMapType((map[string]string)(nil), "runtime.v1.UpdateContainerResourcesRequest.AnnotationsEntry") -+ proto.RegisterType((*UpdateContainerResourcesResponse)(nil), "runtime.v1.UpdateContainerResourcesResponse") -+ proto.RegisterType((*ExecSyncRequest)(nil), "runtime.v1.ExecSyncRequest") -+ proto.RegisterType((*ExecSyncResponse)(nil), "runtime.v1.ExecSyncResponse") -+ proto.RegisterType((*ExecRequest)(nil), "runtime.v1.ExecRequest") -+ proto.RegisterType((*ExecResponse)(nil), "runtime.v1.ExecResponse") -+ proto.RegisterType((*AttachRequest)(nil), "runtime.v1.AttachRequest") -+ proto.RegisterType((*AttachResponse)(nil), "runtime.v1.AttachResponse") -+ proto.RegisterType((*PortForwardRequest)(nil), "runtime.v1.PortForwardRequest") -+ proto.RegisterType((*PortForwardResponse)(nil), "runtime.v1.PortForwardResponse") -+ proto.RegisterType((*ImageFilter)(nil), "runtime.v1.ImageFilter") -+ proto.RegisterType((*ListImagesRequest)(nil), "runtime.v1.ListImagesRequest") -+ proto.RegisterType((*Image)(nil), "runtime.v1.Image") -+ proto.RegisterType((*ListImagesResponse)(nil), "runtime.v1.ListImagesResponse") -+ proto.RegisterType((*ImageStatusRequest)(nil), "runtime.v1.ImageStatusRequest") -+ proto.RegisterType((*ImageStatusResponse)(nil), "runtime.v1.ImageStatusResponse") -+ proto.RegisterMapType((map[string]string)(nil), "runtime.v1.ImageStatusResponse.InfoEntry") -+ proto.RegisterType((*AuthConfig)(nil), "runtime.v1.AuthConfig") -+ proto.RegisterType((*PullImageRequest)(nil), "runtime.v1.PullImageRequest") -+ proto.RegisterType((*PullImageResponse)(nil), "runtime.v1.PullImageResponse") -+ proto.RegisterType((*RemoveImageRequest)(nil), "runtime.v1.RemoveImageRequest") -+ proto.RegisterType((*RemoveImageResponse)(nil), "runtime.v1.RemoveImageResponse") -+ proto.RegisterType((*NetworkConfig)(nil), "runtime.v1.NetworkConfig") -+ proto.RegisterType((*RuntimeConfig)(nil), "runtime.v1.RuntimeConfig") -+ proto.RegisterType((*UpdateRuntimeConfigRequest)(nil), "runtime.v1.UpdateRuntimeConfigRequest") -+ proto.RegisterType((*UpdateRuntimeConfigResponse)(nil), "runtime.v1.UpdateRuntimeConfigResponse") -+ proto.RegisterType((*RuntimeCondition)(nil), "runtime.v1.RuntimeCondition") -+ proto.RegisterType((*RuntimeStatus)(nil), "runtime.v1.RuntimeStatus") -+ proto.RegisterType((*StatusRequest)(nil), "runtime.v1.StatusRequest") -+ proto.RegisterType((*StatusResponse)(nil), "runtime.v1.StatusResponse") -+ proto.RegisterMapType((map[string]string)(nil), "runtime.v1.StatusResponse.InfoEntry") -+ proto.RegisterType((*ImageFsInfoRequest)(nil), "runtime.v1.ImageFsInfoRequest") -+ proto.RegisterType((*UInt64Value)(nil), "runtime.v1.UInt64Value") -+ proto.RegisterType((*FilesystemIdentifier)(nil), "runtime.v1.FilesystemIdentifier") -+ proto.RegisterType((*FilesystemUsage)(nil), "runtime.v1.FilesystemUsage") -+ proto.RegisterType((*ImageFsInfoResponse)(nil), "runtime.v1.ImageFsInfoResponse") -+ proto.RegisterType((*ContainerStatsRequest)(nil), "runtime.v1.ContainerStatsRequest") -+ proto.RegisterType((*ContainerStatsResponse)(nil), "runtime.v1.ContainerStatsResponse") -+ proto.RegisterType((*ListContainerStatsRequest)(nil), "runtime.v1.ListContainerStatsRequest") -+ proto.RegisterType((*ContainerStatsFilter)(nil), "runtime.v1.ContainerStatsFilter") -+ proto.RegisterMapType((map[string]string)(nil), "runtime.v1.ContainerStatsFilter.LabelSelectorEntry") -+ proto.RegisterType((*ListContainerStatsResponse)(nil), "runtime.v1.ListContainerStatsResponse") -+ proto.RegisterType((*ContainerAttributes)(nil), "runtime.v1.ContainerAttributes") -+ proto.RegisterMapType((map[string]string)(nil), "runtime.v1.ContainerAttributes.AnnotationsEntry") -+ proto.RegisterMapType((map[string]string)(nil), "runtime.v1.ContainerAttributes.LabelsEntry") -+ proto.RegisterType((*ContainerStats)(nil), "runtime.v1.ContainerStats") -+ proto.RegisterType((*CpuUsage)(nil), "runtime.v1.CpuUsage") -+ proto.RegisterType((*MemoryUsage)(nil), "runtime.v1.MemoryUsage") -+ proto.RegisterType((*ReopenContainerLogRequest)(nil), "runtime.v1.ReopenContainerLogRequest") -+ proto.RegisterType((*ReopenContainerLogResponse)(nil), "runtime.v1.ReopenContainerLogResponse") -+ proto.RegisterType((*CheckpointContainerRequest)(nil), "runtime.v1.CheckpointContainerRequest") -+ proto.RegisterType((*CheckpointContainerResponse)(nil), "runtime.v1.CheckpointContainerResponse") -+ proto.RegisterType((*GetEventsRequest)(nil), "runtime.v1.GetEventsRequest") -+ proto.RegisterType((*ContainerEventResponse)(nil), "runtime.v1.ContainerEventResponse") -+} -+ -+func init() { proto.RegisterFile("api.proto", fileDescriptor_00212fb1f9d3bf1c) } -+ -+var fileDescriptor_00212fb1f9d3bf1c = []byte{ -+ // 5988 bytes of a gzipped FileDescriptorProto -+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x7c, 0x4d, 0x70, 0x1b, 0xc9, -+ 0x75, 0x30, 0x07, 0x00, 0x49, 0xe0, 0x81, 0x00, 0xc1, 0x16, 0x45, 0x42, 0xa0, 0xa4, 0x95, 0x46, -+ 0xde, 0x1f, 0x49, 0xbb, 0x94, 0x56, 0xab, 0x5d, 0x4b, 0xb2, 0x76, 0x57, 0x10, 0xc9, 0xd5, 0x72, -+ 0x2d, 0x91, 0xf0, 0x80, 0x94, 0xff, 0xbe, 0xf2, 0x7c, 0x23, 0x4c, 0x13, 0x9c, 0x15, 0x30, 0x33, -+ 0x9e, 0x19, 0x48, 0xa2, 0x4f, 0xdf, 0xf1, 0x4b, 0x4e, 0xae, 0x72, 0x1c, 0x57, 0xb9, 0x52, 0x49, -+ 0xe5, 0x94, 0x43, 0x0e, 0xce, 0x25, 0xa9, 0x54, 0xa5, 0x92, 0x5c, 0x52, 0x2e, 0x27, 0x55, 0xae, -+ 0xf2, 0x25, 0x55, 0x3e, 0xa4, 0x2a, 0xf6, 0xe6, 0x96, 0x43, 0x4e, 0x3e, 0xe4, 0x14, 0xa7, 0xfa, -+ 0x6f, 0x66, 0x7a, 0x66, 0x30, 0x00, 0xb9, 0x6b, 0xef, 0x9e, 0x80, 0x79, 0xfd, 0xde, 0xeb, 0xd7, -+ 0xaf, 0x5f, 0xbf, 0x7e, 0xdd, 0xef, 0xcd, 0x40, 0xc5, 0x70, 0xad, 0x75, 0xd7, 0x73, 0x02, 0x07, -+ 0x81, 0x37, 0xb2, 0x03, 0x6b, 0x88, 0xd7, 0x9f, 0xbd, 0xd9, 0x7a, 0xa3, 0x6f, 0x05, 0x87, 0xa3, -+ 0x27, 0xeb, 0x3d, 0x67, 0x78, 0xad, 0xef, 0xf4, 0x9d, 0x6b, 0x14, 0xe5, 0xc9, 0xe8, 0x80, 0x3e, -+ 0xd1, 0x07, 0xfa, 0x8f, 0x91, 0xaa, 0x57, 0xa0, 0xfe, 0x18, 0x7b, 0xbe, 0xe5, 0xd8, 0x1a, 0xfe, -+ 0xee, 0x08, 0xfb, 0x01, 0x6a, 0xc2, 0xfc, 0x33, 0x06, 0x69, 0x2a, 0x17, 0x94, 0xd7, 0x2a, 0x9a, -+ 0x78, 0x54, 0xff, 0x42, 0x81, 0xc5, 0x10, 0xd9, 0x77, 0x1d, 0xdb, 0xc7, 0xe3, 0xb1, 0xd1, 0x45, -+ 0x58, 0xe0, 0x62, 0xe9, 0xb6, 0x31, 0xc4, 0xcd, 0x02, 0x6d, 0xae, 0x72, 0xd8, 0x8e, 0x31, 0xc4, -+ 0xe8, 0x55, 0x58, 0x14, 0x28, 0x82, 0x49, 0x91, 0x62, 0xd5, 0x39, 0x98, 0xf7, 0x86, 0xd6, 0xe1, -+ 0x94, 0x40, 0x34, 0x5c, 0x2b, 0x44, 0x2e, 0x51, 0xe4, 0x25, 0xde, 0xd4, 0x76, 0x2d, 0x8e, 0xaf, -+ 0x7e, 0x1b, 0x2a, 0x9b, 0x3b, 0xdd, 0x0d, 0xc7, 0x3e, 0xb0, 0xfa, 0x44, 0x44, 0x1f, 0x7b, 0x84, -+ 0xa6, 0xa9, 0x5c, 0x28, 0x12, 0x11, 0xf9, 0x23, 0x6a, 0x41, 0xd9, 0xc7, 0x86, 0xd7, 0x3b, 0xc4, -+ 0x7e, 0xb3, 0x40, 0x9b, 0xc2, 0x67, 0x42, 0xe5, 0xb8, 0x81, 0xe5, 0xd8, 0x7e, 0xb3, 0xc8, 0xa8, -+ 0xf8, 0xa3, 0xfa, 0x27, 0x0a, 0x54, 0x3b, 0x8e, 0x17, 0x3c, 0x32, 0x5c, 0xd7, 0xb2, 0xfb, 0xe8, -+ 0x3a, 0x94, 0xa9, 0x2e, 0x7b, 0xce, 0x80, 0xea, 0xa0, 0x7e, 0x63, 0x79, 0x3d, 0x9a, 0x90, 0xf5, -+ 0x0e, 0x6f, 0xd3, 0x42, 0x2c, 0xf4, 0x32, 0xd4, 0x7b, 0x8e, 0x1d, 0x18, 0x96, 0x8d, 0x3d, 0xdd, -+ 0x75, 0xbc, 0x80, 0x2a, 0x67, 0x56, 0xab, 0x85, 0x50, 0xc2, 0x1f, 0xad, 0x41, 0xe5, 0xd0, 0xf1, -+ 0x03, 0x86, 0x51, 0xa4, 0x18, 0x65, 0x02, 0xa0, 0x8d, 0xab, 0x30, 0x4f, 0x1b, 0x2d, 0x97, 0xab, -+ 0x61, 0x8e, 0x3c, 0x6e, 0xbb, 0xea, 0x2f, 0x14, 0x98, 0x7d, 0xe4, 0x8c, 0xec, 0x20, 0xd1, 0x8d, -+ 0x11, 0x1c, 0xf2, 0x29, 0x8a, 0x75, 0x63, 0x04, 0x87, 0x51, 0x37, 0x04, 0x83, 0xcd, 0x12, 0xeb, -+ 0x86, 0x34, 0xb6, 0xa0, 0xec, 0x61, 0xc3, 0x74, 0xec, 0xc1, 0x11, 0x15, 0xa1, 0xac, 0x85, 0xcf, -+ 0x64, 0xfa, 0x7c, 0x3c, 0xb0, 0xec, 0xd1, 0x0b, 0xdd, 0xc3, 0x03, 0xe3, 0x09, 0x1e, 0x50, 0x51, -+ 0xca, 0x5a, 0x9d, 0x83, 0x35, 0x06, 0x45, 0xef, 0x41, 0xd5, 0xf5, 0x1c, 0xd7, 0xe8, 0x1b, 0x44, -+ 0x83, 0xcd, 0x59, 0xaa, 0xa4, 0xb3, 0x71, 0x25, 0x51, 0x81, 0x3b, 0x11, 0x8e, 0x16, 0x27, 0x50, -+ 0x75, 0xa8, 0x6c, 0x6f, 0x0a, 0x75, 0x87, 0x03, 0x37, 0xe9, 0x70, 0x6a, 0x7c, 0xe0, 0x26, 0x31, -+ 0xb8, 0x68, 0xb8, 0x96, 0x49, 0x87, 0x52, 0xd3, 0xaa, 0x21, 0x6c, 0xdb, 0x44, 0x2b, 0x30, 0x37, -+ 0xc0, 0x76, 0x3f, 0x38, 0xa4, 0x63, 0xa9, 0x69, 0xfc, 0x49, 0xfd, 0x23, 0x05, 0x6a, 0xfb, 0x3e, -+ 0xf6, 0x88, 0x55, 0xfa, 0xae, 0xd1, 0xc3, 0xe8, 0x0d, 0x28, 0x0d, 0x1d, 0x13, 0xf3, 0x09, 0x3d, -+ 0x13, 0x97, 0x35, 0x44, 0x7a, 0xe4, 0x98, 0x58, 0xa3, 0x68, 0xe8, 0x32, 0x94, 0x46, 0x96, 0xc9, -+ 0xac, 0xa8, 0x7a, 0xe3, 0x74, 0x1c, 0x3d, 0x94, 0x5c, 0xa3, 0x28, 0x04, 0xb5, 0x4f, 0x50, 0x8b, -+ 0xb9, 0xa8, 0x04, 0x45, 0xfd, 0xad, 0x02, 0x8b, 0x61, 0x6f, 0xbb, 0xd4, 0xfc, 0xd0, 0x5b, 0x30, -+ 0x6f, 0xe3, 0xe0, 0xb9, 0xe3, 0x3d, 0x9d, 0x2c, 0x9b, 0xc0, 0x44, 0x57, 0xa1, 0xe8, 0x72, 0x8d, -+ 0xe4, 0x12, 0x10, 0x2c, 0x82, 0x6c, 0xb9, 0x3d, 0xaa, 0xa1, 0x7c, 0x64, 0xcb, 0xed, 0x11, 0xe3, -+ 0x09, 0x0c, 0xaf, 0x8f, 0xe9, 0x7c, 0x30, 0x43, 0x2c, 0x33, 0xc0, 0xb6, 0x89, 0xee, 0x41, 0x7d, -+ 0xe4, 0x63, 0xcf, 0xf6, 0x75, 0xb1, 0x94, 0xc8, 0xd4, 0x57, 0x65, 0xa6, 0x92, 0xde, 0xb5, 0x1a, -+ 0x23, 0xd8, 0xe5, 0x6b, 0x4d, 0x05, 0xd8, 0xb6, 0x83, 0x77, 0x6e, 0x3e, 0x36, 0x06, 0x23, 0x8c, -+ 0x96, 0x61, 0xf6, 0x19, 0xf9, 0x43, 0x47, 0x5e, 0xd4, 0xd8, 0x83, 0xfa, 0xf7, 0x25, 0x58, 0x7b, -+ 0x48, 0xcc, 0xad, 0x6b, 0xd8, 0xe6, 0x13, 0xe7, 0x45, 0x17, 0xf7, 0x46, 0x9e, 0x15, 0x1c, 0x6d, -+ 0x38, 0x76, 0x80, 0x5f, 0x04, 0xe8, 0x43, 0x58, 0xb2, 0x05, 0xff, 0x50, 0x10, 0x85, 0x0a, 0xb2, -+ 0x96, 0x39, 0x3a, 0xd6, 0xb9, 0xd6, 0xb0, 0x65, 0x80, 0x8f, 0xee, 0x47, 0x06, 0x2f, 0xf8, 0x14, -+ 0xd2, 0x03, 0xea, 0x6e, 0x51, 0x69, 0x38, 0x17, 0xb1, 0x16, 0x04, 0x8f, 0x77, 0x80, 0xb8, 0x40, -+ 0xdd, 0xf0, 0x75, 0x32, 0x52, 0xaa, 0xe5, 0xea, 0x8d, 0x15, 0xc9, 0x0a, 0xc2, 0x01, 0x6b, 0x15, -+ 0x6f, 0x64, 0xb7, 0x7d, 0xa2, 0x21, 0x74, 0x8b, 0xba, 0x53, 0x42, 0xd7, 0xf7, 0x9c, 0x91, 0xdb, -+ 0x2c, 0xe7, 0x12, 0x02, 0x25, 0x7c, 0x40, 0x30, 0xa9, 0x97, 0xe5, 0x4b, 0x56, 0xf7, 0x1c, 0x27, -+ 0x38, 0xf0, 0xc5, 0x32, 0x15, 0x60, 0x8d, 0x42, 0xd1, 0x35, 0x38, 0xe5, 0x8f, 0x5c, 0x77, 0x80, -+ 0x87, 0xd8, 0x0e, 0x8c, 0x01, 0xeb, 0x88, 0xcc, 0x59, 0xf1, 0xb5, 0xa2, 0x86, 0xe2, 0x4d, 0x94, -+ 0xb1, 0x8f, 0xce, 0x03, 0xb8, 0x9e, 0xf5, 0xcc, 0x1a, 0xe0, 0x3e, 0x36, 0x9b, 0x73, 0x94, 0x69, -+ 0x0c, 0x82, 0xde, 0x26, 0x9e, 0xb7, 0xd7, 0x73, 0x86, 0x6e, 0xb3, 0x92, 0xd6, 0xb7, 0x98, 0xa7, -+ 0x8e, 0xe7, 0x1c, 0x58, 0x03, 0xac, 0x09, 0x5c, 0xf4, 0x65, 0x28, 0x1b, 0xae, 0x6b, 0x78, 0x43, -+ 0xc7, 0x6b, 0xc2, 0x64, 0xba, 0x10, 0x19, 0xdd, 0x84, 0x65, 0xce, 0x43, 0x77, 0x59, 0x23, 0x73, -+ 0x6a, 0xf3, 0xc4, 0x2e, 0xef, 0x17, 0x9a, 0x8a, 0x86, 0x78, 0x3b, 0xa7, 0x25, 0x2e, 0x4e, 0xfd, -+ 0x27, 0x05, 0x16, 0x13, 0x3c, 0xd1, 0x47, 0xb0, 0x20, 0x38, 0x04, 0x47, 0xae, 0x70, 0x03, 0xaf, -+ 0xe6, 0x88, 0xb1, 0xce, 0x7f, 0xf7, 0x8e, 0x5c, 0x4c, 0xbd, 0x97, 0x78, 0x40, 0x97, 0xa0, 0x36, -+ 0x70, 0x7a, 0xc6, 0x80, 0x7a, 0x2d, 0x0f, 0x1f, 0x70, 0x1f, 0xbb, 0x10, 0x02, 0x35, 0x7c, 0xa0, -+ 0xde, 0x83, 0x6a, 0x8c, 0x01, 0x42, 0x50, 0xd7, 0x58, 0x57, 0x9b, 0xf8, 0xc0, 0x18, 0x0d, 0x82, -+ 0xc6, 0x0c, 0xaa, 0x03, 0xec, 0xdb, 0x3d, 0xb2, 0xa7, 0xd9, 0xd8, 0x6c, 0x28, 0xa8, 0x06, 0x95, -+ 0x87, 0x82, 0x45, 0xa3, 0xa0, 0xfe, 0xb8, 0x08, 0xa7, 0xa9, 0xe1, 0x75, 0x1c, 0x93, 0xaf, 0x04, -+ 0xbe, 0x01, 0x5e, 0x82, 0x5a, 0x8f, 0xce, 0xa5, 0xee, 0x1a, 0x1e, 0xb6, 0x03, 0xbe, 0x0d, 0x2c, -+ 0x30, 0x60, 0x87, 0xc2, 0x90, 0x06, 0x0d, 0x9f, 0x8f, 0x48, 0xef, 0xb1, 0x95, 0xc3, 0x8d, 0x5b, -+ 0x1a, 0x75, 0xce, 0x42, 0xd3, 0x16, 0xfd, 0xd4, 0xca, 0x9b, 0xf7, 0x8f, 0xfc, 0x5e, 0x30, 0x10, -+ 0xde, 0x6e, 0x3d, 0xc5, 0x2a, 0x29, 0xec, 0x7a, 0x97, 0x11, 0x6c, 0xd9, 0x81, 0x77, 0xa4, 0x09, -+ 0x72, 0xf4, 0x3e, 0x94, 0x9d, 0x67, 0xd8, 0x3b, 0xc4, 0x06, 0xf3, 0x32, 0xd5, 0x1b, 0x97, 0x52, -+ 0xac, 0x36, 0x84, 0xa3, 0xd7, 0xb0, 0xef, 0x8c, 0xbc, 0x1e, 0xf6, 0xb5, 0x90, 0x08, 0xb5, 0xa1, -+ 0xe2, 0x09, 0x30, 0xf7, 0x42, 0x53, 0x71, 0x88, 0xa8, 0x5a, 0x77, 0x60, 0x21, 0x2e, 0x1c, 0x6a, -+ 0x40, 0xf1, 0x29, 0x3e, 0xe2, 0xca, 0x24, 0x7f, 0x23, 0xff, 0xc4, 0x66, 0x98, 0x3d, 0xdc, 0x29, -+ 0xdc, 0x52, 0x54, 0x0f, 0x50, 0x34, 0xd2, 0x47, 0x38, 0x30, 0x4c, 0x23, 0x30, 0x10, 0x82, 0x12, -+ 0x0d, 0x8d, 0x18, 0x0b, 0xfa, 0x9f, 0x70, 0x1d, 0x71, 0x57, 0x5d, 0xd1, 0xc8, 0x5f, 0x74, 0x16, -+ 0x2a, 0xa1, 0x27, 0xe2, 0xf1, 0x51, 0x04, 0x20, 0x71, 0x8a, 0x11, 0x04, 0x78, 0xe8, 0x06, 0x54, -+ 0x31, 0x35, 0x4d, 0x3c, 0xaa, 0x7f, 0x30, 0x0b, 0x8d, 0x94, 0x2d, 0xdc, 0x81, 0xf2, 0x90, 0x77, -+ 0xcf, 0x7d, 0xe0, 0x79, 0x29, 0x58, 0x49, 0x09, 0xa9, 0x85, 0xf8, 0x24, 0x16, 0x20, 0xb6, 0x16, -+ 0x8b, 0xe6, 0xc2, 0x67, 0x66, 0xe4, 0x7d, 0xdd, 0xb4, 0x3c, 0xdc, 0x0b, 0x1c, 0xef, 0x88, 0x0b, -+ 0xba, 0x30, 0x70, 0xfa, 0x9b, 0x02, 0x86, 0x6e, 0x02, 0x98, 0xb6, 0xaf, 0x53, 0x1b, 0xee, 0xf3, -+ 0x79, 0x94, 0x36, 0xc0, 0x30, 0x68, 0xd3, 0x2a, 0xa6, 0xed, 0x73, 0x91, 0xef, 0x42, 0x8d, 0x44, -+ 0x40, 0xfa, 0x90, 0xed, 0x8d, 0xcc, 0x21, 0x55, 0x6f, 0xac, 0xca, 0x72, 0x87, 0xf1, 0x98, 0xb6, -+ 0xe0, 0x46, 0x0f, 0x3e, 0xba, 0x07, 0x73, 0x34, 0x08, 0xf1, 0x9b, 0x73, 0x94, 0xec, 0xb5, 0xec, -+ 0xe1, 0x72, 0xeb, 0x7b, 0x48, 0x51, 0x99, 0xf1, 0x71, 0x3a, 0xb4, 0x0b, 0x55, 0xc3, 0xb6, 0x9d, -+ 0xc0, 0x60, 0x1e, 0x7f, 0x9e, 0xb2, 0x79, 0x23, 0x97, 0x4d, 0x3b, 0xc2, 0x67, 0xbc, 0xe2, 0x1c, -+ 0xd0, 0x97, 0x61, 0x96, 0x6e, 0x09, 0xdc, 0x87, 0x5f, 0x9c, 0xb8, 0x28, 0x34, 0x86, 0x8f, 0xde, -+ 0x85, 0xf9, 0xe7, 0x96, 0x6d, 0x3a, 0xcf, 0x7d, 0xee, 0x4f, 0x25, 0x13, 0xfe, 0x3a, 0x6b, 0x4a, -+ 0x11, 0x0b, 0x9a, 0xd6, 0x6d, 0xa8, 0xc6, 0xc6, 0x77, 0x1c, 0xfb, 0x6d, 0xbd, 0x07, 0x8d, 0xe4, -+ 0x98, 0x8e, 0x65, 0xff, 0x23, 0x58, 0xd6, 0x46, 0x76, 0x24, 0x9a, 0x38, 0x6c, 0xdc, 0x84, 0x39, -+ 0x6e, 0x0d, 0xcc, 0x18, 0xcf, 0xe6, 0xa9, 0x55, 0xe3, 0xb8, 0xf1, 0x73, 0xc3, 0xa1, 0x61, 0x9b, -+ 0x03, 0xec, 0xf1, 0x1e, 0xc5, 0xb9, 0xe1, 0x43, 0x06, 0x55, 0xdf, 0x85, 0xd3, 0x89, 0x6e, 0xf9, -+ 0xb1, 0xe5, 0x4b, 0x50, 0x77, 0x1d, 0x53, 0xf7, 0x19, 0x58, 0xc4, 0x92, 0x15, 0x62, 0x3b, 0x02, -+ 0x77, 0xdb, 0x24, 0xe4, 0xdd, 0xc0, 0x71, 0xd3, 0x62, 0x4f, 0x47, 0xde, 0x84, 0x95, 0x24, 0x39, -+ 0xeb, 0x5e, 0x7d, 0x1f, 0x56, 0x35, 0x3c, 0x74, 0x9e, 0xe1, 0x93, 0xb2, 0x6e, 0x41, 0x33, 0xcd, -+ 0x80, 0x33, 0xff, 0x26, 0xac, 0x46, 0xd0, 0x6e, 0x60, 0x04, 0x23, 0xff, 0x58, 0xcc, 0xf9, 0x99, -+ 0xee, 0x89, 0xe3, 0xb3, 0x89, 0x2c, 0x6b, 0xe2, 0x51, 0x5d, 0x85, 0xd9, 0x8e, 0x63, 0x6e, 0x77, -+ 0x50, 0x1d, 0x0a, 0x96, 0xcb, 0x89, 0x0b, 0x96, 0xab, 0xf6, 0xe2, 0x7d, 0xee, 0xb0, 0xa8, 0x93, -+ 0x75, 0x9d, 0x44, 0x45, 0xb7, 0xa0, 0x6e, 0x98, 0xa6, 0x45, 0x0c, 0xc9, 0x18, 0xe8, 0x96, 0x2b, -+ 0x82, 0xe6, 0xa5, 0xc4, 0xd4, 0x6f, 0x77, 0xb4, 0x5a, 0x84, 0xb8, 0xed, 0xfa, 0xea, 0x7d, 0xa8, -+ 0x44, 0x01, 0xfa, 0xdb, 0xd1, 0xf9, 0xac, 0x30, 0x39, 0x96, 0x0b, 0x0f, 0x6f, 0x3b, 0xa9, 0x4d, -+ 0x92, 0x8b, 0xf9, 0x36, 0x40, 0xe8, 0x54, 0x45, 0x78, 0x78, 0x3a, 0x93, 0xa5, 0x16, 0x43, 0x54, -+ 0xff, 0xbd, 0x14, 0x77, 0xb2, 0xb1, 0x21, 0x9b, 0xe1, 0x90, 0x4d, 0xc9, 0xe9, 0x16, 0x8e, 0xe9, -+ 0x74, 0xdf, 0x84, 0x59, 0x3f, 0x30, 0x02, 0xcc, 0xe3, 0xf1, 0xb5, 0x6c, 0x42, 0xd2, 0x31, 0xd6, -+ 0x18, 0x26, 0x3a, 0x07, 0xd0, 0xf3, 0xb0, 0x11, 0x60, 0x53, 0x37, 0xd8, 0xae, 0x50, 0xd4, 0x2a, -+ 0x1c, 0xd2, 0x0e, 0x88, 0x17, 0x11, 0x27, 0x88, 0x8c, 0x8d, 0x70, 0xcc, 0x34, 0x46, 0x67, 0x89, -+ 0xd0, 0x7b, 0xcd, 0x4d, 0xf4, 0x5e, 0x9c, 0x94, 0x7b, 0xaf, 0xc8, 0x13, 0xcf, 0xe7, 0x79, 0x62, -+ 0x46, 0x34, 0x8d, 0x27, 0x2e, 0xe7, 0x79, 0x62, 0xce, 0x26, 0xdf, 0x13, 0x67, 0x38, 0x92, 0x4a, -+ 0x96, 0x23, 0xf9, 0x3c, 0x5d, 0xe7, 0xcf, 0x15, 0x68, 0xa6, 0xd7, 0x33, 0xf7, 0x63, 0x37, 0x61, -+ 0xce, 0xa7, 0x90, 0x7c, 0xff, 0xc9, 0xa9, 0x38, 0x2e, 0xba, 0x0f, 0x25, 0xcb, 0x3e, 0x70, 0xf8, -+ 0xc2, 0x5b, 0xcf, 0xa5, 0xe1, 0x3d, 0xad, 0x6f, 0xdb, 0x07, 0x0e, 0xd3, 0x20, 0xa5, 0x6d, 0x7d, -+ 0x19, 0x2a, 0x21, 0xe8, 0x58, 0xe3, 0xd9, 0x86, 0xe5, 0x84, 0xdd, 0xb2, 0xc3, 0x5d, 0x68, 0xe8, -+ 0xca, 0xb4, 0x86, 0xae, 0xfe, 0x46, 0x89, 0x2f, 0xbe, 0x0f, 0xac, 0x41, 0x80, 0xbd, 0xd4, 0xe2, -+ 0x7b, 0x47, 0xf0, 0x65, 0x2b, 0xef, 0x42, 0x0e, 0x5f, 0x76, 0x76, 0xe2, 0xab, 0xe8, 0x31, 0xd4, -+ 0xa9, 0xd9, 0xe9, 0x3e, 0x1e, 0xd0, 0xf8, 0x85, 0xc7, 0xb0, 0xd7, 0xb2, 0x19, 0xb0, 0xde, 0x99, -+ 0xd9, 0x76, 0x39, 0x05, 0xd3, 0x57, 0x6d, 0x10, 0x87, 0xb5, 0xee, 0x01, 0x4a, 0x23, 0x1d, 0x4b, -+ 0x83, 0x8f, 0x88, 0x0f, 0xf3, 0x83, 0xcc, 0xdd, 0xf4, 0x80, 0x8a, 0x91, 0x6f, 0x0d, 0x4c, 0x54, -+ 0x8d, 0xe3, 0xaa, 0xff, 0x5a, 0x04, 0x88, 0x1a, 0xbf, 0xe0, 0xce, 0xeb, 0x4e, 0xe8, 0x44, 0x58, -+ 0x14, 0xa8, 0x66, 0xb3, 0xcc, 0x74, 0x1f, 0xdb, 0xb2, 0xfb, 0x60, 0xf1, 0xe0, 0xab, 0x63, 0x18, -+ 0x1c, 0xdb, 0x71, 0xcc, 0x7f, 0xd1, 0x1c, 0xc7, 0x07, 0xb0, 0x92, 0x34, 0x13, 0xee, 0x35, 0x5e, -+ 0x87, 0x59, 0x2b, 0xc0, 0x43, 0x76, 0x1f, 0x9a, 0xb8, 0x44, 0x88, 0xa1, 0x33, 0x24, 0xf5, 0x3d, -+ 0x58, 0x91, 0xe7, 0xea, 0x78, 0xe1, 0x84, 0xfa, 0x30, 0x19, 0x8f, 0x44, 0xee, 0x8b, 0xdb, 0x47, -+ 0xe6, 0x75, 0x4c, 0x92, 0x86, 0x61, 0xaa, 0x3f, 0x55, 0xe0, 0x74, 0xa2, 0x69, 0xcc, 0xc2, 0xff, -+ 0x76, 0x6a, 0x01, 0x33, 0x7f, 0x77, 0x33, 0xa7, 0x97, 0xdf, 0xe3, 0x2a, 0xfe, 0x3a, 0xb4, 0xe4, -+ 0xe9, 0x91, 0x54, 0x7b, 0x3b, 0xb1, 0x94, 0x2f, 0x4e, 0x14, 0x3a, 0x5c, 0xcf, 0x1d, 0x58, 0xcb, -+ 0x64, 0x9c, 0xd6, 0x79, 0x71, 0x4a, 0x9d, 0xff, 0x77, 0x21, 0xee, 0xb3, 0xdb, 0x41, 0xe0, 0x59, -+ 0x4f, 0x46, 0x01, 0xfe, 0x6c, 0x03, 0x9d, 0xcd, 0x70, 0x65, 0x33, 0x3f, 0xfb, 0x7a, 0x36, 0x65, -+ 0xd4, 0x7b, 0xe6, 0x1a, 0xef, 0xca, 0x6b, 0xbc, 0x44, 0x59, 0xbd, 0x39, 0x91, 0x55, 0xee, 0x6a, -+ 0xff, 0x3c, 0x17, 0xf1, 0x3f, 0x2b, 0xb0, 0x98, 0x98, 0x15, 0x74, 0x0f, 0xc0, 0x08, 0x45, 0xe7, -+ 0xf6, 0x71, 0x61, 0xd2, 0x10, 0xb5, 0x18, 0x0d, 0xd9, 0x13, 0x59, 0x0c, 0x97, 0xb1, 0x27, 0x66, -+ 0xc4, 0x70, 0x61, 0x08, 0x77, 0x37, 0x3a, 0x80, 0xb2, 0x8b, 0x4b, 0x35, 0xf7, 0x00, 0xca, 0x68, -+ 0x05, 0x89, 0xfa, 0x83, 0x02, 0x2c, 0x67, 0x71, 0x47, 0xaf, 0x40, 0xb1, 0xe7, 0x8e, 0xf8, 0x48, -+ 0xa4, 0xe4, 0xc9, 0x86, 0x3b, 0xda, 0xf7, 0x8d, 0x3e, 0xd6, 0x08, 0x02, 0xba, 0x06, 0x73, 0x43, -+ 0x3c, 0x74, 0xbc, 0x23, 0x2e, 0xb7, 0x74, 0x05, 0xf0, 0x88, 0xb6, 0x30, 0x6c, 0x8e, 0x86, 0x6e, -+ 0x44, 0xa1, 0x2e, 0x93, 0xb7, 0x29, 0x45, 0xf4, 0xac, 0x89, 0x91, 0x84, 0xf1, 0xed, 0x0d, 0x98, -+ 0x77, 0x3d, 0xa7, 0x87, 0x7d, 0x9f, 0xdf, 0x50, 0x34, 0x13, 0xd9, 0x1c, 0xd2, 0xc4, 0x69, 0x38, -+ 0x22, 0xba, 0x03, 0x10, 0xa6, 0x19, 0xc4, 0xce, 0xd4, 0x92, 0xc6, 0x21, 0x5a, 0x99, 0x4a, 0x62, -+ 0xd8, 0xe4, 0x94, 0x98, 0xad, 0x38, 0xf5, 0x1f, 0x15, 0x58, 0x88, 0xcb, 0x88, 0xce, 0x42, 0x85, -+ 0x30, 0xf4, 0x03, 0x63, 0xe8, 0xf2, 0x3b, 0xf0, 0x08, 0x80, 0x76, 0x60, 0xc9, 0x64, 0x97, 0x85, -+ 0xba, 0x65, 0x07, 0xd8, 0x3b, 0x30, 0x7a, 0x22, 0xe8, 0xb9, 0x98, 0x31, 0xec, 0x6d, 0x81, 0xc3, -+ 0xc6, 0xd2, 0xe0, 0xb4, 0x21, 0x18, 0xb5, 0x01, 0x42, 0x3e, 0x62, 0x51, 0x4e, 0xc1, 0x28, 0x46, -+ 0xa4, 0xfe, 0x56, 0x81, 0xd3, 0x99, 0x58, 0x99, 0x57, 0x5f, 0x37, 0xa0, 0xec, 0xbd, 0xd0, 0x9f, -+ 0x1c, 0x05, 0xd8, 0xcf, 0x9a, 0xe0, 0xfd, 0xd8, 0xfd, 0xf6, 0xbc, 0xf7, 0xe2, 0x3e, 0xc1, 0x43, -+ 0x37, 0xa1, 0xe2, 0xbd, 0xd0, 0xb1, 0xe7, 0x39, 0x9e, 0xb0, 0xc9, 0xb1, 0x44, 0x65, 0xef, 0xc5, -+ 0x16, 0x45, 0x24, 0x3d, 0x05, 0xa2, 0xa7, 0xd2, 0x84, 0x9e, 0x82, 0xa8, 0xa7, 0x20, 0xec, 0x69, -+ 0x76, 0x42, 0x4f, 0x01, 0xef, 0x49, 0xfd, 0x18, 0x16, 0xe2, 0x26, 0x33, 0x61, 0x0a, 0xef, 0x42, -+ 0x8d, 0x9b, 0x94, 0xde, 0x73, 0x46, 0x76, 0x30, 0x49, 0x0d, 0x0b, 0x1c, 0x7b, 0x83, 0x20, 0xab, -+ 0x7f, 0xa9, 0x40, 0x65, 0x7b, 0x68, 0xf4, 0x71, 0xd7, 0xc5, 0x3d, 0xe2, 0x53, 0x2c, 0xf2, 0xc0, -+ 0x55, 0xcc, 0x1e, 0xd0, 0x87, 0xb2, 0x7f, 0x64, 0x3b, 0xe2, 0x2b, 0x52, 0x16, 0x41, 0x70, 0x98, -+ 0xe0, 0x14, 0x3f, 0xad, 0x67, 0xbb, 0x01, 0xe5, 0xaf, 0xe2, 0x23, 0x16, 0xfb, 0x4f, 0x49, 0xa7, -+ 0xfe, 0xb0, 0x04, 0xab, 0x63, 0x6e, 0x6a, 0x69, 0xe0, 0xe8, 0x8e, 0x74, 0x17, 0x7b, 0x96, 0x63, -+ 0x0a, 0xd5, 0xf6, 0xdc, 0x51, 0x87, 0x02, 0xd0, 0x1a, 0x90, 0x07, 0xfd, 0xbb, 0x23, 0x87, 0xef, -+ 0x4d, 0x45, 0xad, 0xdc, 0x73, 0x47, 0x5f, 0x23, 0xcf, 0x82, 0xd6, 0x3f, 0x34, 0x3c, 0xcc, 0xcc, -+ 0x88, 0xd1, 0x76, 0x29, 0x00, 0xbd, 0x09, 0xa7, 0x99, 0x43, 0xd1, 0x07, 0xd6, 0xd0, 0x22, 0xcb, -+ 0x2b, 0x66, 0x3b, 0x45, 0x0d, 0xb1, 0xc6, 0x87, 0xa4, 0x6d, 0xdb, 0x66, 0xd6, 0xa2, 0x42, 0xcd, -+ 0x71, 0x86, 0xba, 0xdf, 0x73, 0x3c, 0xac, 0x1b, 0xe6, 0xc7, 0xd4, 0x62, 0x8a, 0x5a, 0xd5, 0x71, -+ 0x86, 0x5d, 0x02, 0x6b, 0x9b, 0x1f, 0xa3, 0x97, 0xa0, 0xda, 0x73, 0x47, 0x3e, 0x0e, 0x74, 0xf2, -+ 0x43, 0xcf, 0xd3, 0x15, 0x0d, 0x18, 0x68, 0xc3, 0x1d, 0xf9, 0x31, 0x84, 0x21, 0x89, 0xd6, 0xe6, -+ 0xe3, 0x08, 0x8f, 0xf0, 0x90, 0x26, 0xa4, 0x0e, 0x47, 0x7d, 0xec, 0x1a, 0x7d, 0xcc, 0x44, 0x13, -+ 0x87, 0x62, 0x29, 0x21, 0xf5, 0x21, 0x47, 0xa1, 0x02, 0x6a, 0xf5, 0xc3, 0xf8, 0xa3, 0x8f, 0x3e, -+ 0x82, 0xf9, 0x91, 0x6d, 0x1d, 0x58, 0xd8, 0x6c, 0x56, 0x28, 0xed, 0xf5, 0x29, 0xee, 0xc5, 0xd7, -+ 0xf7, 0x19, 0x09, 0xbf, 0xa6, 0xe7, 0x0c, 0xd0, 0x1d, 0x68, 0x71, 0x45, 0xf9, 0xcf, 0x0d, 0x37, -+ 0xa9, 0x2d, 0xa0, 0x2a, 0x58, 0x61, 0x18, 0xdd, 0xe7, 0x86, 0x1b, 0xd7, 0x58, 0xeb, 0x0e, 0x2c, -+ 0xc4, 0x99, 0x1e, 0xcb, 0x96, 0xee, 0x43, 0x4d, 0x1a, 0x24, 0x99, 0x6d, 0xaa, 0x14, 0xdf, 0xfa, -+ 0x9e, 0x58, 0x00, 0x65, 0x02, 0xe8, 0x5a, 0xdf, 0xa3, 0x69, 0x44, 0x2a, 0x19, 0xe5, 0x53, 0xd2, -+ 0xd8, 0x83, 0x6a, 0x40, 0x4d, 0xca, 0xdc, 0x11, 0x17, 0x45, 0x53, 0x74, 0xdc, 0x45, 0x91, 0xff, -+ 0x04, 0xe6, 0x39, 0x03, 0x21, 0x01, 0xfd, 0x4f, 0x60, 0x34, 0x47, 0xc4, 0x6e, 0xbc, 0xe9, 0x7f, -+ 0xda, 0x05, 0x7e, 0xc6, 0x13, 0xe2, 0x15, 0x8d, 0x3d, 0xa8, 0x7f, 0xaa, 0x00, 0x6c, 0x18, 0xae, -+ 0xf1, 0xc4, 0x1a, 0x58, 0xc1, 0x11, 0xba, 0x0c, 0x0d, 0xc3, 0x34, 0xf5, 0x9e, 0x80, 0x58, 0x58, -+ 0x54, 0x28, 0x2c, 0x1a, 0xa6, 0xb9, 0x11, 0x03, 0xa3, 0xab, 0xb0, 0x64, 0x7a, 0x8e, 0x2b, 0xe3, -+ 0xb2, 0x92, 0x85, 0x06, 0x69, 0x90, 0x90, 0x6f, 0x41, 0x93, 0xf0, 0x35, 0x86, 0x4f, 0x2c, 0x6c, -+ 0x07, 0x32, 0x0d, 0xab, 0x65, 0x58, 0x31, 0x4c, 0xb3, 0xcd, 0x9a, 0xe3, 0x94, 0xea, 0x3f, 0xcc, -+ 0xc1, 0x39, 0x79, 0xc6, 0x93, 0xc9, 0xd4, 0x3b, 0xb0, 0x90, 0x90, 0x37, 0x95, 0x86, 0x8c, 0x46, -+ 0xa8, 0x49, 0xb8, 0x89, 0x74, 0x61, 0x21, 0x95, 0x2e, 0xcc, 0x4c, 0xd4, 0x16, 0x3f, 0xa3, 0x44, -+ 0x6d, 0xe9, 0x53, 0x26, 0x6a, 0x67, 0x4f, 0x9a, 0xa8, 0x5d, 0x98, 0x3a, 0x51, 0xfb, 0x0a, 0x3d, -+ 0x54, 0x8a, 0x1e, 0xe9, 0xf6, 0xc8, 0x7c, 0x42, 0x2d, 0xe4, 0x6e, 0x8b, 0xb2, 0x99, 0x44, 0x42, -+ 0x77, 0xfe, 0x38, 0x09, 0xdd, 0xf2, 0xd8, 0x84, 0xee, 0x05, 0x58, 0xb0, 0x1d, 0xdd, 0xc6, 0xcf, -+ 0x75, 0x32, 0x2d, 0x7e, 0xb3, 0xca, 0xe6, 0xc8, 0x76, 0x76, 0xf0, 0xf3, 0x0e, 0x81, 0xa0, 0x8b, -+ 0xb0, 0x30, 0x34, 0xfc, 0xa7, 0xd8, 0xa4, 0x99, 0x55, 0xbf, 0x59, 0xa3, 0xf6, 0x54, 0x65, 0xb0, -+ 0x0e, 0x01, 0xa1, 0x97, 0x21, 0x94, 0x83, 0x23, 0xd5, 0x29, 0x52, 0x4d, 0x40, 0x19, 0x5a, 0x2c, -+ 0x39, 0xbc, 0x78, 0xc2, 0xe4, 0x70, 0xe3, 0x38, 0xc9, 0xe1, 0x37, 0xa0, 0x21, 0xfe, 0x8b, 0xec, -+ 0x30, 0xbb, 0xec, 0xa3, 0x89, 0xe1, 0x45, 0xd1, 0x26, 0x32, 0xc0, 0xe3, 0x72, 0xc9, 0x90, 0x9b, -+ 0x4b, 0xfe, 0x89, 0xc2, 0x43, 0xdc, 0x70, 0x01, 0xf1, 0x24, 0x96, 0x94, 0x7f, 0x54, 0x4e, 0x92, -+ 0x7f, 0x44, 0x7b, 0x63, 0x33, 0xb4, 0x97, 0xc7, 0x73, 0x9a, 0x94, 0xa3, 0x55, 0x7f, 0xa0, 0xc0, -+ 0x39, 0x1e, 0x7f, 0x8e, 0xa9, 0x9f, 0xc8, 0x30, 0x4b, 0x65, 0x8c, 0x59, 0xf6, 0x3c, 0x6c, 0x62, -+ 0x3b, 0xb0, 0x8c, 0x81, 0xee, 0xbb, 0xb8, 0x27, 0xb2, 0x32, 0x11, 0x98, 0x46, 0x26, 0x17, 0x61, -+ 0x81, 0x15, 0x1c, 0xf1, 0x30, 0x9b, 0xd5, 0x15, 0x55, 0x69, 0xcd, 0x11, 0x03, 0xa9, 0x0e, 0xac, -+ 0x8e, 0x49, 0x67, 0x65, 0xaa, 0x41, 0x49, 0xab, 0x21, 0x77, 0x4c, 0x69, 0x35, 0xfc, 0x50, 0x81, -+ 0x97, 0x38, 0xc9, 0x58, 0xdf, 0xf7, 0x79, 0x28, 0xe2, 0xaf, 0x95, 0xf0, 0x78, 0x90, 0x34, 0xa9, -+ 0x8d, 0xb4, 0x49, 0xbd, 0x9c, 0xa1, 0x81, 0x7c, 0xa3, 0x7a, 0x3c, 0xd6, 0xa8, 0xae, 0xe6, 0xf1, -+ 0x9a, 0xa8, 0xcf, 0x7f, 0x53, 0xe0, 0xcc, 0x58, 0x01, 0x12, 0xf1, 0x96, 0x92, 0x8c, 0xb7, 0x78, -+ 0xac, 0x16, 0x85, 0xc0, 0x2c, 0x56, 0xa3, 0x51, 0x2e, 0x0f, 0x8a, 0xf4, 0xa1, 0xf1, 0xc2, 0x1a, -+ 0x8e, 0x86, 0x3c, 0x58, 0x23, 0xec, 0x1e, 0x31, 0xc8, 0x49, 0xa2, 0xb5, 0x6b, 0xb0, 0xcc, 0x1c, -+ 0x29, 0x0d, 0x18, 0x22, 0x0a, 0x16, 0xb4, 0x2d, 0xb1, 0x36, 0x12, 0x3b, 0x70, 0x02, 0xb5, 0x0d, -+ 0x4b, 0xe1, 0xb0, 0x72, 0xd3, 0xf9, 0xb1, 0xf4, 0x7c, 0x41, 0x4e, 0xcf, 0xdb, 0x30, 0xb7, 0x89, -+ 0x9f, 0x59, 0x3d, 0xfc, 0x99, 0xd4, 0xe9, 0x5d, 0x80, 0xaa, 0x8b, 0xbd, 0xa1, 0xe5, 0xfb, 0xe1, -+ 0xae, 0x59, 0xd1, 0xe2, 0x20, 0xf5, 0x27, 0x73, 0xb0, 0x98, 0x34, 0xa1, 0xdb, 0xa9, 0x6a, 0x80, -+ 0x73, 0x99, 0xa7, 0xd6, 0x8c, 0xeb, 0x9a, 0xab, 0xe2, 0x78, 0x51, 0x48, 0xa7, 0xca, 0xc2, 0x23, -+ 0x84, 0x38, 0x75, 0x34, 0x61, 0xbe, 0xe7, 0x0c, 0x87, 0x86, 0x6d, 0x8a, 0x62, 0x4a, 0xfe, 0x48, -+ 0x74, 0x66, 0x78, 0x7d, 0x76, 0x51, 0x53, 0xd1, 0xe8, 0x7f, 0x32, 0xc3, 0xe4, 0xc4, 0x68, 0xd9, -+ 0xb4, 0x9e, 0x80, 0x4e, 0x42, 0x45, 0x03, 0x0e, 0xda, 0xb4, 0x3c, 0xf4, 0x1a, 0x94, 0xb0, 0xfd, -+ 0x4c, 0xdc, 0xe0, 0x4a, 0x17, 0x06, 0xe2, 0x48, 0xa1, 0x51, 0x0c, 0x74, 0x19, 0xe6, 0x86, 0xc4, -+ 0x6a, 0x44, 0xce, 0x69, 0x29, 0x55, 0x74, 0xa8, 0x71, 0x04, 0xf4, 0x3a, 0xcc, 0x9b, 0x74, 0x3e, -+ 0x44, 0x0c, 0x8d, 0xa4, 0xca, 0x04, 0xda, 0xa4, 0x09, 0x14, 0xf4, 0x7e, 0x78, 0x5b, 0x55, 0x49, -+ 0x5f, 0x23, 0x27, 0xd4, 0x9c, 0x79, 0x51, 0xb5, 0x23, 0x1f, 0xc4, 0x20, 0x7d, 0xe7, 0x95, 0xe4, -+ 0x92, 0x7f, 0x23, 0x7d, 0x06, 0xca, 0x03, 0xa7, 0xcf, 0x8c, 0xa3, 0xca, 0x2a, 0x71, 0x07, 0x4e, -+ 0x9f, 0xda, 0xc6, 0x32, 0xcc, 0xfa, 0x81, 0x69, 0xd9, 0x34, 0x14, 0x29, 0x6b, 0xec, 0x81, 0xac, -+ 0x41, 0xfa, 0x47, 0x77, 0xec, 0x1e, 0x6e, 0xd6, 0x68, 0x53, 0x85, 0x42, 0x76, 0xed, 0x1e, 0x3d, -+ 0x92, 0x05, 0xc1, 0x51, 0xb3, 0x4e, 0xe1, 0xe4, 0x6f, 0x74, 0x69, 0xb4, 0x38, 0xe6, 0xd2, 0x28, -+ 0x21, 0x70, 0xc6, 0xa5, 0x51, 0x63, 0xec, 0xa5, 0x51, 0x92, 0xf6, 0x8b, 0x50, 0xb4, 0xf0, 0xb7, -+ 0x0a, 0xac, 0x6c, 0xd0, 0xcc, 0x43, 0xcc, 0x85, 0x1d, 0x27, 0x91, 0xfe, 0x56, 0x58, 0xdd, 0x90, -+ 0x91, 0xa2, 0x4e, 0x8e, 0x58, 0x14, 0x37, 0x6c, 0x40, 0x5d, 0xb0, 0xe5, 0xc4, 0xc5, 0x29, 0x4a, -+ 0x23, 0x6a, 0x7e, 0xfc, 0x51, 0xbd, 0x0b, 0xab, 0x29, 0xc9, 0xf9, 0xfd, 0x6f, 0xb2, 0x4c, 0x96, -+ 0x09, 0x1e, 0x2f, 0x93, 0x55, 0xef, 0xc0, 0xe9, 0x6e, 0x60, 0x78, 0x41, 0x6a, 0xd8, 0x53, 0xd0, -+ 0xd2, 0xa2, 0x07, 0x99, 0x96, 0xd7, 0x25, 0x74, 0x61, 0xb9, 0x1b, 0x38, 0xee, 0x09, 0x98, 0x12, -+ 0xff, 0x41, 0x46, 0xee, 0x8c, 0xc4, 0x76, 0x20, 0x1e, 0xd5, 0x55, 0x56, 0xa2, 0x91, 0xee, 0xed, -+ 0x2b, 0xb0, 0xc2, 0x2a, 0x24, 0x4e, 0x32, 0x88, 0x33, 0xa2, 0x3e, 0x23, 0xcd, 0xf7, 0x01, 0x9c, -+ 0x92, 0x2e, 0xf3, 0x78, 0xf6, 0xf2, 0xba, 0x9c, 0xbd, 0x1c, 0x7f, 0xf9, 0x17, 0x26, 0x2f, 0x7f, -+ 0x54, 0x88, 0xf9, 0xe3, 0x31, 0x29, 0x8c, 0xb7, 0xe5, 0xdc, 0xe5, 0x4b, 0xe3, 0xb9, 0x4a, 0xa9, -+ 0xcb, 0xb4, 0x75, 0x16, 0x33, 0xac, 0x73, 0x3f, 0x95, 0x1f, 0x29, 0xa5, 0xf3, 0xc1, 0x09, 0x09, -+ 0x7f, 0x2f, 0x99, 0x91, 0x87, 0x2c, 0xbf, 0x19, 0x76, 0x1d, 0x26, 0x45, 0xde, 0x4a, 0x24, 0x45, -+ 0xd6, 0x72, 0x24, 0x0d, 0xd3, 0x21, 0x3f, 0x2a, 0x41, 0x25, 0x6c, 0x4b, 0x69, 0x38, 0xad, 0xaa, -+ 0x42, 0x86, 0xaa, 0xe2, 0xfb, 0x64, 0xf1, 0x84, 0xfb, 0x64, 0x69, 0x8a, 0x7d, 0x72, 0x0d, 0x2a, -+ 0xf4, 0x0f, 0x2d, 0x13, 0x65, 0xfb, 0x5e, 0x99, 0x02, 0x34, 0x7c, 0x10, 0x99, 0xd8, 0xdc, 0x94, -+ 0x26, 0x96, 0xc8, 0xa5, 0xce, 0x27, 0x73, 0xa9, 0xb7, 0xc3, 0x3d, 0xac, 0x9c, 0xbe, 0xdc, 0x0d, -+ 0x39, 0x66, 0xee, 0x5e, 0x89, 0x6b, 0xc4, 0x4a, 0xfa, 0x1a, 0x31, 0xa2, 0xff, 0xc2, 0xe6, 0x56, -+ 0x76, 0x59, 0x82, 0x34, 0x6e, 0x67, 0xdc, 0x47, 0xbe, 0x2d, 0xdd, 0xe7, 0x2b, 0xe9, 0x4a, 0xfd, -+ 0xc8, 0x2f, 0xc4, 0xaf, 0xf2, 0xf7, 0x61, 0x45, 0x9a, 0x88, 0xa8, 0xf0, 0x6a, 0x3a, 0x1f, 0x37, -+ 0xa6, 0xea, 0xea, 0x8f, 0xe3, 0x91, 0xdb, 0x98, 0x12, 0xa3, 0xdb, 0xa9, 0xcc, 0xdb, 0xd4, 0x16, -+ 0x7a, 0x5d, 0x4e, 0xd2, 0x1f, 0xdb, 0xae, 0x52, 0x39, 0x7a, 0x1a, 0x59, 0x18, 0x1e, 0x6f, 0x66, -+ 0x31, 0x74, 0x85, 0x43, 0xda, 0x34, 0x80, 0x3f, 0xb0, 0x6c, 0xcb, 0x3f, 0x64, 0xed, 0x73, 0x2c, -+ 0x80, 0x17, 0xa0, 0x36, 0xbd, 0xbc, 0xc3, 0x2f, 0xac, 0x40, 0xef, 0x39, 0x26, 0xa6, 0x56, 0x3b, -+ 0xab, 0x95, 0x09, 0x60, 0xc3, 0x31, 0x71, 0xb4, 0x9e, 0xca, 0xc7, 0x5d, 0x4f, 0x95, 0xc4, 0x7a, -+ 0x5a, 0x81, 0x39, 0x0f, 0x1b, 0xbe, 0x63, 0xb3, 0x33, 0xbd, 0xc6, 0x9f, 0xc8, 0x44, 0x0c, 0xb1, -+ 0xef, 0x93, 0x3e, 0x78, 0x20, 0xc5, 0x1f, 0x63, 0x41, 0xdf, 0x42, 0x4e, 0xd0, 0x97, 0x53, 0xc0, -+ 0x94, 0x08, 0xfa, 0x6a, 0x39, 0x41, 0xdf, 0x54, 0xf5, 0x4b, 0x51, 0x78, 0x5b, 0x9f, 0x14, 0xde, -+ 0xc6, 0xe3, 0xc3, 0x45, 0x39, 0x3e, 0xbc, 0x1b, 0x3f, 0x48, 0x36, 0xd2, 0x69, 0xdb, 0xfc, 0xb2, -+ 0xe8, 0xcf, 0x71, 0x01, 0xff, 0x8b, 0x02, 0xab, 0xa9, 0x05, 0xc7, 0x97, 0xf0, 0x5b, 0x89, 0xca, -+ 0xa8, 0xb5, 0x1c, 0x2d, 0x87, 0x85, 0x51, 0x6d, 0xa9, 0x30, 0xea, 0x8d, 0x3c, 0x92, 0xcf, 0xbc, -+ 0x2e, 0xea, 0xfb, 0x0a, 0xa0, 0x8c, 0xa3, 0xf2, 0x6d, 0x11, 0x75, 0x1f, 0xe3, 0xd2, 0x88, 0x07, -+ 0xde, 0xef, 0x47, 0x81, 0x77, 0xe1, 0x38, 0xd7, 0x03, 0x61, 0xc2, 0xf6, 0x57, 0x05, 0x78, 0x69, -+ 0xdf, 0x35, 0x13, 0x61, 0x24, 0xc7, 0x9a, 0xde, 0xb3, 0xdd, 0x96, 0xb3, 0xcd, 0x27, 0x1c, 0x42, -+ 0xf1, 0x24, 0x43, 0x40, 0xdf, 0xc9, 0xaa, 0x07, 0xb8, 0x2b, 0xe5, 0xd3, 0xf2, 0x07, 0xf8, 0x3b, -+ 0xce, 0x82, 0xa9, 0x70, 0x61, 0xbc, 0x00, 0x3c, 0xe4, 0xfc, 0xbf, 0xb0, 0xb8, 0xf5, 0x02, 0xf7, -+ 0xba, 0x47, 0x76, 0xef, 0x18, 0x5a, 0x6f, 0x40, 0xb1, 0x37, 0x34, 0x79, 0x92, 0x80, 0xfc, 0x8d, -+ 0x47, 0xd1, 0x45, 0x39, 0x8a, 0xd6, 0xa1, 0x11, 0xf5, 0xc0, 0x17, 0xd0, 0x0a, 0x59, 0x40, 0x26, -+ 0x41, 0x26, 0xcc, 0x17, 0x34, 0xfe, 0xc4, 0xe1, 0xd8, 0x63, 0x35, 0xd7, 0x0c, 0x8e, 0x3d, 0x4f, -+ 0xf6, 0xda, 0x45, 0xd9, 0x6b, 0xab, 0x3f, 0x56, 0xa0, 0x4a, 0x7a, 0xf8, 0x54, 0xf2, 0xf3, 0x23, -+ 0x69, 0x31, 0x3a, 0x92, 0x86, 0x27, 0xdb, 0x52, 0xfc, 0x64, 0x1b, 0x49, 0x3e, 0x4b, 0xc1, 0x69, -+ 0xc9, 0xe7, 0x42, 0x38, 0xf6, 0x3c, 0xf5, 0x02, 0x2c, 0x30, 0xd9, 0xf8, 0xc8, 0x1b, 0x50, 0x1c, -+ 0x79, 0x03, 0x31, 0x7f, 0x23, 0x6f, 0xa0, 0xfe, 0xa1, 0x02, 0xb5, 0x76, 0x10, 0x18, 0xbd, 0xc3, -+ 0x63, 0x0c, 0x20, 0x14, 0xae, 0x10, 0x17, 0x2e, 0x3d, 0x88, 0x48, 0xdc, 0xd2, 0x18, 0x71, 0x67, -+ 0x25, 0x71, 0x55, 0xa8, 0x0b, 0x59, 0xc6, 0x0a, 0xbc, 0x03, 0xa8, 0xe3, 0x78, 0xc1, 0x07, 0x8e, -+ 0xf7, 0xdc, 0xf0, 0xcc, 0xe3, 0x9d, 0x5a, 0x11, 0x94, 0xf8, 0x3b, 0xa9, 0xc5, 0xd7, 0x66, 0x35, -+ 0xfa, 0x5f, 0x7d, 0x15, 0x4e, 0x49, 0xfc, 0xc6, 0x76, 0x7c, 0x07, 0xaa, 0x74, 0x17, 0xe6, 0x07, -+ 0x9a, 0xab, 0xf1, 0x24, 0xf4, 0x84, 0xdd, 0x5a, 0xdd, 0x84, 0x25, 0x12, 0x8f, 0x51, 0x78, 0xe8, -+ 0x5f, 0xae, 0x25, 0x62, 0xfe, 0xd5, 0x14, 0x8b, 0x44, 0xbc, 0xff, 0x1b, 0x05, 0x66, 0x29, 0x3c, -+ 0x15, 0x23, 0xad, 0x91, 0x7d, 0xce, 0x75, 0xf4, 0xc0, 0xe8, 0x87, 0xef, 0xfb, 0x12, 0xc0, 0x9e, -+ 0xd1, 0xa7, 0x89, 0x0d, 0xda, 0x68, 0x5a, 0x7d, 0xec, 0x07, 0x22, 0x51, 0x56, 0x25, 0xb0, 0x4d, -+ 0x06, 0x22, 0x8a, 0xa1, 0xf9, 0xc4, 0x12, 0x4d, 0x1b, 0xd2, 0xff, 0xe8, 0x35, 0xf6, 0xba, 0x4e, -+ 0x7e, 0x76, 0x88, 0xbe, 0xc6, 0xd3, 0x82, 0x72, 0x22, 0xad, 0x13, 0x3e, 0xa3, 0xcb, 0x50, 0xa2, -+ 0xd7, 0xc4, 0xf3, 0x79, 0x5a, 0xa2, 0x28, 0xc4, 0x2a, 0x5c, 0xcb, 0xb6, 0xb1, 0x49, 0x03, 0xa0, -+ 0xb2, 0xc6, 0x9f, 0xd4, 0xf7, 0x01, 0xc5, 0x95, 0xc7, 0x27, 0xe8, 0x32, 0xcc, 0x51, 0xdd, 0x8a, -+ 0x20, 0x76, 0x29, 0xc5, 0x5a, 0xe3, 0x08, 0xea, 0xb7, 0x01, 0xb1, 0xbe, 0xa4, 0xc0, 0xf5, 0x38, -+ 0x13, 0x98, 0x13, 0xc2, 0xfe, 0x8d, 0x02, 0xa7, 0x24, 0xee, 0x5c, 0xbe, 0x57, 0x65, 0xf6, 0x19, -+ 0xe2, 0x71, 0xd6, 0xef, 0x4a, 0x3b, 0xf3, 0xe5, 0xb4, 0x18, 0xbf, 0xa3, 0x5d, 0xf9, 0xe7, 0x0a, -+ 0x40, 0x7b, 0x14, 0x1c, 0xf2, 0x0b, 0xd3, 0xf8, 0x24, 0x2a, 0x89, 0x49, 0x6c, 0x41, 0xd9, 0x35, -+ 0x7c, 0xff, 0xb9, 0xe3, 0x89, 0x43, 0x64, 0xf8, 0x4c, 0xaf, 0x39, 0x47, 0xfc, 0xb5, 0xe3, 0x8a, -+ 0x46, 0xff, 0xa3, 0x97, 0xa1, 0xce, 0x5e, 0x44, 0xd7, 0x0d, 0xd3, 0xf4, 0x44, 0xbd, 0x51, 0x45, -+ 0xab, 0x31, 0x68, 0x9b, 0x01, 0x09, 0x9a, 0x45, 0x93, 0x06, 0xc1, 0x91, 0x1e, 0x38, 0x4f, 0xb1, -+ 0xcd, 0x0f, 0x86, 0x35, 0x01, 0xdd, 0x23, 0x40, 0x96, 0x75, 0xeb, 0x5b, 0x7e, 0xe0, 0x09, 0x34, -+ 0x91, 0x3b, 0xe4, 0x50, 0x8a, 0xa6, 0xfe, 0x95, 0x02, 0x8d, 0xce, 0x68, 0x30, 0x60, 0xca, 0x3d, -+ 0xc9, 0x24, 0x5f, 0xe1, 0x43, 0x29, 0xa4, 0x4d, 0x3e, 0x52, 0x14, 0x1f, 0xe2, 0x67, 0x72, 0x97, -+ 0x75, 0x1d, 0x96, 0x62, 0x12, 0x73, 0xc3, 0x91, 0x22, 0x7b, 0x45, 0x8e, 0xec, 0xd5, 0x36, 0x20, -+ 0x76, 0x7d, 0x73, 0xe2, 0x51, 0xaa, 0xa7, 0xe1, 0x94, 0xc4, 0x82, 0x6f, 0xc5, 0x57, 0xa0, 0xc6, -+ 0xeb, 0x99, 0xb8, 0x41, 0x9c, 0x81, 0x32, 0x71, 0xa9, 0x3d, 0xcb, 0x14, 0x85, 0x02, 0xf3, 0xae, -+ 0x63, 0x6e, 0x58, 0xa6, 0xa7, 0x7e, 0x0d, 0x6a, 0xfc, 0x1d, 0x4e, 0x8e, 0x7b, 0x0f, 0xea, 0xbc, -+ 0xc8, 0x4c, 0x97, 0x5e, 0x7a, 0x3a, 0x93, 0x51, 0x54, 0x25, 0x54, 0x61, 0xc7, 0x1f, 0xd5, 0xef, -+ 0x40, 0x8b, 0x45, 0x0b, 0x12, 0x63, 0x31, 0xc0, 0x7b, 0x20, 0xaa, 0x8f, 0x73, 0xf8, 0xcb, 0x94, -+ 0x35, 0x2f, 0xfe, 0xa8, 0x9e, 0x83, 0xb5, 0x4c, 0xfe, 0x7c, 0xf4, 0x2e, 0x34, 0xa2, 0x06, 0xf6, -+ 0x66, 0x4e, 0x58, 0xfd, 0xa0, 0xc4, 0xaa, 0x1f, 0x56, 0xc2, 0xd8, 0xbb, 0x20, 0x76, 0x2e, 0x1a, -+ 0x5e, 0x47, 0x27, 0xae, 0xe2, 0xb8, 0x13, 0x57, 0x49, 0x3a, 0x71, 0xa9, 0x8f, 0x42, 0x1d, 0xf2, -+ 0x73, 0xef, 0x5d, 0x7a, 0x32, 0x67, 0x7d, 0x0b, 0xa7, 0x76, 0x36, 0x7b, 0x7c, 0x0c, 0x49, 0x8b, -+ 0xe1, 0xab, 0x97, 0xa1, 0x26, 0xbb, 0xb7, 0x98, 0xc7, 0x52, 0x52, 0x1e, 0xab, 0x9e, 0x70, 0x56, -+ 0x6f, 0x26, 0x8e, 0x14, 0x59, 0x7a, 0x4d, 0x1c, 0x28, 0x6e, 0x49, 0x6e, 0xeb, 0x4b, 0x52, 0xa6, -+ 0xfa, 0x77, 0xe4, 0xb1, 0x96, 0xb9, 0x1f, 0xff, 0xc0, 0x27, 0xf4, 0x7c, 0xa0, 0xea, 0x25, 0xa8, -+ 0xee, 0x8f, 0x7b, 0x93, 0xbe, 0x24, 0xca, 0xab, 0xde, 0x81, 0xe5, 0x0f, 0xac, 0x01, 0xf6, 0x8f, -+ 0xfc, 0x00, 0x0f, 0xb7, 0xa9, 0x7b, 0x39, 0xb0, 0xb0, 0x87, 0xce, 0x03, 0xd0, 0x53, 0xa4, 0xeb, -+ 0x58, 0xe1, 0xdb, 0xc3, 0x31, 0x88, 0xfa, 0x4b, 0x05, 0x16, 0x23, 0xc2, 0x69, 0x0a, 0xdd, 0xde, -+ 0x86, 0xd9, 0x03, 0x5f, 0xdc, 0xb6, 0x25, 0x72, 0x09, 0x59, 0x22, 0x68, 0xa5, 0x03, 0x7f, 0xdb, -+ 0x44, 0xef, 0x00, 0x8c, 0x7c, 0x6c, 0xf2, 0xec, 0xdc, 0x84, 0x72, 0xbf, 0x0a, 0x41, 0x65, 0xf9, -+ 0xbd, 0x5b, 0x50, 0xb5, 0x6c, 0xc7, 0xc4, 0x34, 0x73, 0x6b, 0x4e, 0x2a, 0xf9, 0x03, 0x86, 0xbb, -+ 0xef, 0x63, 0x53, 0xd5, 0xf9, 0xbe, 0x25, 0xb4, 0xc9, 0x4d, 0xe1, 0x43, 0x58, 0x62, 0xee, 0xe7, -+ 0x20, 0x14, 0x36, 0xb3, 0xa0, 0x3a, 0xa1, 0x15, 0xad, 0x61, 0xf1, 0x88, 0x45, 0x10, 0xa9, 0x77, -+ 0xe0, 0x74, 0xa2, 0x38, 0x74, 0xfa, 0x6b, 0xea, 0x8f, 0x12, 0xf7, 0x4d, 0x91, 0xa9, 0x5e, 0x97, -+ 0x0b, 0xeb, 0xf3, 0x6a, 0x51, 0x79, 0x8d, 0xf7, 0x3e, 0x9c, 0x91, 0x2e, 0xc3, 0x24, 0x59, 0x6e, -+ 0x25, 0x82, 0xb0, 0x0b, 0xe3, 0xf9, 0x25, 0xa2, 0xb1, 0xff, 0x54, 0x60, 0x39, 0x0b, 0xe1, 0x84, -+ 0x17, 0xb1, 0xdf, 0x1a, 0xf3, 0x52, 0xce, 0x5b, 0x93, 0x04, 0xfa, 0xbd, 0x5c, 0x5c, 0xef, 0xb0, -+ 0x92, 0xfe, 0xc9, 0x73, 0x52, 0x9c, 0x6e, 0x4e, 0x7e, 0x53, 0x88, 0x25, 0x1b, 0x72, 0xca, 0xee, -+ 0x3f, 0xc5, 0xe5, 0xdf, 0x46, 0xa2, 0xea, 0xfe, 0x6a, 0x26, 0xe1, 0x84, 0xa2, 0x7b, 0x2d, 0xeb, -+ 0x90, 0x7d, 0x7d, 0x12, 0xa7, 0x2f, 0xec, 0xbd, 0xf0, 0x7f, 0x29, 0x50, 0x97, 0x27, 0x04, 0xbd, -+ 0x9f, 0x51, 0x72, 0xff, 0xd2, 0x84, 0x01, 0x4a, 0x15, 0xf7, 0xbc, 0xc4, 0xbd, 0x30, 0x7d, 0x89, -+ 0x7b, 0x71, 0xba, 0x12, 0xf7, 0xfb, 0x50, 0x7f, 0xee, 0x59, 0x81, 0xf1, 0x64, 0x80, 0xf5, 0x81, -+ 0x71, 0x84, 0x3d, 0xee, 0xdd, 0x72, 0xdd, 0x50, 0x4d, 0x90, 0x3c, 0x24, 0x14, 0xea, 0xdf, 0x29, -+ 0x50, 0x16, 0x62, 0x4c, 0x2c, 0x32, 0x5f, 0x1d, 0x11, 0x34, 0x9d, 0x16, 0xb6, 0xda, 0x86, 0xed, -+ 0xe8, 0x3e, 0x26, 0x3b, 0xec, 0xc4, 0x92, 0xed, 0x65, 0x4a, 0xb7, 0xe1, 0x78, 0x78, 0xc7, 0xb0, -+ 0x9d, 0x2e, 0x23, 0x42, 0x6d, 0x68, 0x30, 0x7e, 0x94, 0x15, 0x61, 0x3a, 0xd1, 0xaf, 0xd7, 0x29, -+ 0x01, 0x61, 0x42, 0x98, 0xf9, 0xea, 0x9f, 0x17, 0xa1, 0x1a, 0xd3, 0xcc, 0x84, 0x01, 0x6c, 0xc0, -+ 0x92, 0x28, 0x2e, 0xf0, 0x71, 0x30, 0x5d, 0xb5, 0xf9, 0x22, 0xa7, 0xe8, 0xe2, 0x80, 0xed, 0x27, -+ 0xf7, 0x60, 0xd1, 0x78, 0x66, 0x58, 0x03, 0xaa, 0xf5, 0xa9, 0x36, 0xa3, 0x7a, 0x88, 0x1f, 0xee, -+ 0x48, 0x6c, 0xdc, 0x53, 0x15, 0xa1, 0x03, 0xc5, 0x8d, 0x2a, 0xde, 0x7d, 0x3f, 0x56, 0xa0, 0x92, -+ 0x5b, 0xf1, 0xee, 0xfb, 0x61, 0x7f, 0xb4, 0x20, 0x96, 0xd6, 0xf8, 0xfb, 0xfc, 0xdd, 0xdd, 0xf1, -+ 0xfd, 0x11, 0xdc, 0x0f, 0x28, 0x2a, 0x51, 0xd8, 0xd0, 0xf8, 0xd8, 0xf1, 0xf4, 0x38, 0xfd, 0xfc, -+ 0x04, 0x85, 0x51, 0x8a, 0x4e, 0xc8, 0x44, 0x7d, 0x0f, 0xce, 0x68, 0xd8, 0x71, 0xb1, 0x1d, 0xae, -+ 0x93, 0x87, 0x4e, 0xff, 0x18, 0x3b, 0xdd, 0x59, 0x68, 0x65, 0xd1, 0xf3, 0xb8, 0x74, 0x04, 0xad, -+ 0x8d, 0x43, 0xdc, 0x7b, 0x4a, 0xa3, 0x91, 0x93, 0xe4, 0x97, 0x5b, 0x50, 0x1e, 0x38, 0x3d, 0xf6, -+ 0x75, 0x2a, 0x7e, 0x74, 0x13, 0xcf, 0x39, 0xb7, 0x66, 0xe7, 0x60, 0x2d, 0xb3, 0x5b, 0x2e, 0x15, -+ 0x82, 0xc6, 0x03, 0x1c, 0x6c, 0x3d, 0xc3, 0x76, 0xb8, 0x91, 0xaa, 0xff, 0xa3, 0xc4, 0xb6, 0x6c, -+ 0xda, 0x74, 0x8c, 0xbc, 0x3c, 0xea, 0xc0, 0x72, 0x84, 0x82, 0x09, 0x35, 0xfb, 0x3a, 0x0d, 0xfb, -+ 0xae, 0x53, 0xf6, 0x9d, 0x3d, 0xed, 0x84, 0x7e, 0x94, 0x06, 0xf5, 0x52, 0xb0, 0x44, 0x26, 0xa7, -+ 0x98, 0xcc, 0xe4, 0x74, 0x60, 0x39, 0xbe, 0x29, 0x87, 0x9b, 0x4c, 0x69, 0xaa, 0x77, 0xbb, 0x90, -+ 0x9b, 0x82, 0x5d, 0x79, 0x05, 0xca, 0xe2, 0x83, 0x68, 0x68, 0x1e, 0x8a, 0x7b, 0x1b, 0x9d, 0xc6, -+ 0x0c, 0xf9, 0xb3, 0xbf, 0xd9, 0x69, 0x28, 0xa8, 0x0c, 0xa5, 0xee, 0xc6, 0x5e, 0xa7, 0x51, 0xb8, -+ 0x32, 0x84, 0x46, 0xf2, 0x9b, 0x60, 0x68, 0x15, 0x4e, 0x75, 0xb4, 0xdd, 0x4e, 0xfb, 0x41, 0x7b, -+ 0x6f, 0x7b, 0x77, 0x47, 0xef, 0x68, 0xdb, 0x8f, 0xdb, 0x7b, 0x5b, 0x8d, 0x19, 0x74, 0x11, 0xce, -+ 0xc5, 0x1b, 0x3e, 0xdc, 0xed, 0xee, 0xe9, 0x7b, 0xbb, 0xfa, 0xc6, 0xee, 0xce, 0x5e, 0x7b, 0x7b, -+ 0x67, 0x4b, 0x6b, 0x28, 0xe8, 0x1c, 0x9c, 0x89, 0xa3, 0xdc, 0xdf, 0xde, 0xdc, 0xd6, 0xb6, 0x36, -+ 0xc8, 0xff, 0xf6, 0xc3, 0x46, 0xe1, 0xca, 0xbb, 0x50, 0x93, 0x3e, 0x6e, 0x45, 0x44, 0xea, 0xec, -+ 0x6e, 0x36, 0x66, 0x50, 0x0d, 0x2a, 0x71, 0x3e, 0x65, 0x28, 0xed, 0xec, 0x6e, 0x6e, 0x35, 0x0a, -+ 0x08, 0x60, 0x6e, 0xaf, 0xad, 0x3d, 0xd8, 0xda, 0x6b, 0x14, 0xaf, 0xdc, 0x49, 0xbe, 0xa4, 0x85, -+ 0xd1, 0x12, 0xd4, 0xba, 0xed, 0x9d, 0xcd, 0xfb, 0xbb, 0xdf, 0xd0, 0xb5, 0xad, 0xf6, 0xe6, 0x37, -+ 0x1b, 0x33, 0x68, 0x19, 0x1a, 0x02, 0xb4, 0xb3, 0xbb, 0xc7, 0xa0, 0xca, 0x95, 0xa7, 0x89, 0xcd, -+ 0x06, 0xa3, 0xd3, 0xb0, 0x14, 0x76, 0xa9, 0x6f, 0x68, 0x5b, 0xed, 0xbd, 0x2d, 0x22, 0x89, 0x04, -+ 0xd6, 0xf6, 0x77, 0x76, 0xb6, 0x77, 0x1e, 0x34, 0x14, 0xc2, 0x35, 0x02, 0x6f, 0x7d, 0x63, 0x9b, -+ 0x20, 0x17, 0x64, 0xe4, 0xfd, 0x9d, 0xaf, 0xee, 0xec, 0x7e, 0x7d, 0xa7, 0x51, 0xbc, 0xf2, 0xff, -+ 0xe3, 0x49, 0x86, 0xc8, 0x0c, 0xd6, 0x60, 0x35, 0xd5, 0xa3, 0xbe, 0xf5, 0x78, 0x6b, 0x67, 0xaf, -+ 0x31, 0x23, 0x37, 0x76, 0xf7, 0xda, 0x5a, 0xd4, 0xa8, 0x24, 0x1b, 0x77, 0x3b, 0x9d, 0xb0, 0xb1, -+ 0x20, 0x37, 0x6e, 0x6e, 0x3d, 0xdc, 0x8a, 0x28, 0x8b, 0x37, 0x7e, 0x1a, 0x7d, 0xe3, 0xa8, 0x8b, -+ 0x3d, 0x5a, 0x08, 0xb7, 0x09, 0xf3, 0xe2, 0x8b, 0x7f, 0x52, 0x74, 0x24, 0x7f, 0xa1, 0xb0, 0xb5, -+ 0x96, 0xd9, 0xc6, 0x57, 0xdd, 0x0c, 0x7a, 0x4c, 0xcf, 0x8c, 0xb1, 0x37, 0x9a, 0x2f, 0x24, 0xce, -+ 0x69, 0xa9, 0x17, 0xa7, 0x5b, 0x17, 0x73, 0x30, 0x42, 0xbe, 0xdf, 0x24, 0x07, 0xc2, 0xf8, 0xe7, -+ 0x3c, 0xd0, 0x45, 0xf9, 0x3c, 0x97, 0xf1, 0xa5, 0x90, 0x96, 0x9a, 0x87, 0x12, 0xb2, 0xd6, 0xa1, -+ 0x91, 0xfc, 0x9c, 0x07, 0x92, 0xd2, 0x24, 0x63, 0xbe, 0x16, 0xd2, 0xfa, 0x52, 0x3e, 0x52, 0xbc, -+ 0x83, 0xd4, 0x57, 0x2a, 0x2e, 0xe5, 0xbf, 0xf7, 0x9f, 0xd1, 0xc1, 0xb8, 0x8f, 0x03, 0x30, 0xe5, -+ 0xc8, 0x2f, 0x9d, 0xa2, 0xc4, 0x87, 0x21, 0x32, 0xde, 0x57, 0x97, 0x95, 0x93, 0xfd, 0xae, 0xb2, -+ 0x3a, 0x83, 0xfe, 0x0f, 0x2c, 0x26, 0x6a, 0x99, 0x90, 0x44, 0x98, 0x5d, 0xa2, 0xd5, 0xba, 0x94, -+ 0x8b, 0x23, 0xcf, 0x6a, 0xbc, 0x5e, 0x29, 0x39, 0xab, 0x19, 0x75, 0x50, 0xc9, 0x59, 0xcd, 0x2c, -+ 0x77, 0xa2, 0x86, 0x28, 0xd5, 0x26, 0xc9, 0x86, 0x98, 0x55, 0x0b, 0xd5, 0xba, 0x98, 0x83, 0x11, -+ 0x57, 0x48, 0xa2, 0x3a, 0x49, 0x56, 0x48, 0x76, 0xdd, 0x53, 0xeb, 0x52, 0x2e, 0x4e, 0x72, 0x26, -+ 0xa3, 0xaa, 0x88, 0xf4, 0x4c, 0xa6, 0x2a, 0x73, 0xd2, 0x33, 0x99, 0x2e, 0xaa, 0xe0, 0x33, 0x99, -+ 0xa8, 0x63, 0x50, 0x73, 0x73, 0xac, 0x59, 0x33, 0x99, 0x9d, 0x87, 0x55, 0x67, 0xd0, 0x73, 0x68, -+ 0x8e, 0x4b, 0xa5, 0xa1, 0xab, 0xc7, 0xc8, 0xf8, 0xb5, 0x5e, 0x9f, 0x0e, 0x39, 0xec, 0x18, 0x03, -+ 0x4a, 0x07, 0x27, 0xe8, 0x65, 0x59, 0xdd, 0x63, 0x82, 0x9f, 0xd6, 0x2b, 0x93, 0xd0, 0xc2, 0x6e, -+ 0x1e, 0x40, 0x59, 0x24, 0xe9, 0x90, 0xe4, 0x02, 0x13, 0xc9, 0xc1, 0xd6, 0xd9, 0xec, 0xc6, 0x90, -+ 0xd1, 0x57, 0xa0, 0x44, 0xa0, 0x68, 0x35, 0x89, 0x27, 0x18, 0x34, 0xd3, 0x0d, 0x21, 0x71, 0x1b, -+ 0xe6, 0x58, 0xf6, 0x09, 0x49, 0xd7, 0x5f, 0x52, 0x76, 0xac, 0xd5, 0xca, 0x6a, 0x0a, 0x59, 0x74, -+ 0xd8, 0xf7, 0x53, 0x79, 0x32, 0x09, 0x9d, 0x4f, 0x7e, 0xc8, 0x4b, 0xce, 0x5a, 0xb5, 0x5e, 0x1a, -+ 0xdb, 0x1e, 0xb7, 0xd9, 0xc4, 0x81, 0xed, 0x62, 0xce, 0xe9, 0x3a, 0xcb, 0x66, 0xb3, 0xcf, 0xec, -+ 0x6c, 0x72, 0xd3, 0x67, 0x7a, 0x79, 0x72, 0xc7, 0xde, 0x9b, 0xc8, 0x93, 0x3b, 0xfe, 0x6a, 0x80, -+ 0x2d, 0x8d, 0xe4, 0x5b, 0xd1, 0x6a, 0xde, 0x9b, 0xf9, 0x59, 0x4b, 0x63, 0xcc, 0x1b, 0xff, 0xea, -+ 0x0c, 0x3a, 0x84, 0x53, 0x19, 0x9f, 0x04, 0x40, 0xaf, 0x8c, 0xf7, 0xbf, 0x52, 0x2f, 0xaf, 0x4e, -+ 0xc4, 0x8b, 0xf7, 0x94, 0x71, 0x83, 0x2c, 0xf7, 0x34, 0xfe, 0x0a, 0x5b, 0xee, 0x29, 0xef, 0x2a, -+ 0x9a, 0x1a, 0x22, 0xf7, 0x21, 0x67, 0xb2, 0xae, 0x55, 0x33, 0x0c, 0x31, 0xe5, 0x31, 0x0e, 0xe1, -+ 0x54, 0x46, 0x00, 0x2f, 0x0b, 0x3b, 0xfe, 0x60, 0x21, 0x0b, 0x9b, 0x77, 0x12, 0x98, 0x41, 0xdf, -+ 0x02, 0xf4, 0x00, 0x07, 0x72, 0xe4, 0xe5, 0x23, 0x69, 0xa1, 0x26, 0xcf, 0x0a, 0x63, 0xec, 0x53, -+ 0x3a, 0x34, 0xa8, 0x33, 0xd7, 0x95, 0x1b, 0x7f, 0x56, 0x84, 0x05, 0x96, 0xbf, 0xe0, 0x61, 0xd4, -+ 0x23, 0x80, 0x28, 0x15, 0x88, 0xce, 0x25, 0x27, 0x4f, 0xca, 0xaf, 0xb6, 0xce, 0x8f, 0x6b, 0x8e, -+ 0x2f, 0xd7, 0x58, 0x8a, 0x4d, 0x5e, 0xae, 0xe9, 0x8c, 0xa1, 0xbc, 0x5c, 0x33, 0x72, 0x73, 0xea, -+ 0x0c, 0xfa, 0x08, 0x2a, 0x61, 0x46, 0x47, 0x56, 0x42, 0x32, 0x35, 0xd5, 0x3a, 0x37, 0xa6, 0x35, -+ 0x2e, 0x5d, 0x2c, 0x51, 0x23, 0x4b, 0x97, 0x4e, 0x02, 0xc9, 0xd2, 0x65, 0x65, 0x78, 0xa2, 0xf1, -+ 0xb2, 0x2b, 0xdf, 0x8c, 0xf1, 0x4a, 0x37, 0xeb, 0x19, 0xe3, 0x95, 0xef, 0x8a, 0xd5, 0x99, 0xfb, -+ 0xf7, 0x7e, 0xf6, 0xeb, 0xf3, 0xca, 0x2f, 0x7f, 0x7d, 0x7e, 0xe6, 0xff, 0x7d, 0x72, 0x5e, 0xf9, -+ 0xd9, 0x27, 0xe7, 0x95, 0x5f, 0x7c, 0x72, 0x5e, 0xf9, 0xd5, 0x27, 0xe7, 0x95, 0xef, 0xff, 0xc7, -+ 0xf9, 0x99, 0x6f, 0xa9, 0x4f, 0x6f, 0xf9, 0xeb, 0x96, 0x73, 0xad, 0xe7, 0x59, 0x6f, 0x18, 0xae, -+ 0x75, 0xcd, 0x7d, 0xda, 0xbf, 0x66, 0xb8, 0x96, 0x7f, 0x8d, 0xf3, 0xbd, 0xf6, 0xec, 0xcd, 0x27, -+ 0x73, 0xf4, 0xdb, 0xd1, 0x6f, 0xfd, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x94, 0xf5, 0x05, 0x82, -+ 0xf5, 0x5b, 0x00, 0x00, -+} -+ -+// 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 -+ -+// RuntimeServiceClient is the client API for RuntimeService service. -+// -+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -+type RuntimeServiceClient interface { -+ // Version returns the runtime name, runtime version, and runtime API version. -+ Version(ctx context.Context, in *VersionRequest, opts ...grpc.CallOption) (*VersionResponse, error) -+ // RunPodSandbox creates and starts a pod-level sandbox. Runtimes must ensure -+ // the sandbox is in the ready state on success. -+ RunPodSandbox(ctx context.Context, in *RunPodSandboxRequest, opts ...grpc.CallOption) (*RunPodSandboxResponse, error) -+ // StopPodSandbox stops any running process that is part of the sandbox and -+ // reclaims network resources (e.g., IP addresses) allocated to the sandbox. -+ // If there are any running containers in the sandbox, they must be forcibly -+ // terminated. -+ // This call is idempotent, and must not return an error if all relevant -+ // resources have already been reclaimed. kubelet will call StopPodSandbox -+ // at least once before calling RemovePodSandbox. It will also attempt to -+ // reclaim resources eagerly, as soon as a sandbox is not needed. Hence, -+ // multiple StopPodSandbox calls are expected. -+ StopPodSandbox(ctx context.Context, in *StopPodSandboxRequest, opts ...grpc.CallOption) (*StopPodSandboxResponse, error) -+ // RemovePodSandbox removes the sandbox. If there are any running containers -+ // in the sandbox, they must be forcibly terminated and removed. -+ // This call is idempotent, and must not return an error if the sandbox has -+ // already been removed. -+ RemovePodSandbox(ctx context.Context, in *RemovePodSandboxRequest, opts ...grpc.CallOption) (*RemovePodSandboxResponse, error) -+ // PodSandboxStatus returns the status of the PodSandbox. If the PodSandbox is not -+ // present, returns an error. -+ PodSandboxStatus(ctx context.Context, in *PodSandboxStatusRequest, opts ...grpc.CallOption) (*PodSandboxStatusResponse, error) -+ // ListPodSandbox returns a list of PodSandboxes. -+ ListPodSandbox(ctx context.Context, in *ListPodSandboxRequest, opts ...grpc.CallOption) (*ListPodSandboxResponse, error) -+ // CreateContainer creates a new container in specified PodSandbox -+ CreateContainer(ctx context.Context, in *CreateContainerRequest, opts ...grpc.CallOption) (*CreateContainerResponse, error) -+ // StartContainer starts the container. -+ StartContainer(ctx context.Context, in *StartContainerRequest, opts ...grpc.CallOption) (*StartContainerResponse, error) -+ // StopContainer stops a running container with a grace period (i.e., timeout). -+ // This call is idempotent, and must not return an error if the container has -+ // already been stopped. -+ // The runtime must forcibly kill the container after the grace period is -+ // reached. -+ StopContainer(ctx context.Context, in *StopContainerRequest, opts ...grpc.CallOption) (*StopContainerResponse, error) -+ // RemoveContainer removes the container. If the container is running, the -+ // container must be forcibly removed. -+ // This call is idempotent, and must not return an error if the container has -+ // already been removed. -+ RemoveContainer(ctx context.Context, in *RemoveContainerRequest, opts ...grpc.CallOption) (*RemoveContainerResponse, error) -+ // ListContainers lists all containers by filters. -+ ListContainers(ctx context.Context, in *ListContainersRequest, opts ...grpc.CallOption) (*ListContainersResponse, error) -+ // ContainerStatus returns status of the container. If the container is not -+ // present, returns an error. -+ ContainerStatus(ctx context.Context, in *ContainerStatusRequest, opts ...grpc.CallOption) (*ContainerStatusResponse, error) -+ // UpdateContainerResources updates ContainerConfig of the container synchronously. -+ // If runtime fails to transactionally update the requested resources, an error is returned. -+ UpdateContainerResources(ctx context.Context, in *UpdateContainerResourcesRequest, opts ...grpc.CallOption) (*UpdateContainerResourcesResponse, error) -+ // ReopenContainerLog asks runtime to reopen the stdout/stderr log file -+ // for the container. This is often called after the log file has been -+ // rotated. If the container is not running, container runtime can choose -+ // to either create a new log file and return nil, or return an error. -+ // Once it returns error, new container log file MUST NOT be created. -+ ReopenContainerLog(ctx context.Context, in *ReopenContainerLogRequest, opts ...grpc.CallOption) (*ReopenContainerLogResponse, error) -+ // ExecSync runs a command in a container synchronously. -+ ExecSync(ctx context.Context, in *ExecSyncRequest, opts ...grpc.CallOption) (*ExecSyncResponse, error) -+ // Exec prepares a streaming endpoint to execute a command in the container. -+ Exec(ctx context.Context, in *ExecRequest, opts ...grpc.CallOption) (*ExecResponse, error) -+ // Attach prepares a streaming endpoint to attach to a running container. -+ Attach(ctx context.Context, in *AttachRequest, opts ...grpc.CallOption) (*AttachResponse, error) -+ // PortForward prepares a streaming endpoint to forward ports from a PodSandbox. -+ PortForward(ctx context.Context, in *PortForwardRequest, opts ...grpc.CallOption) (*PortForwardResponse, error) -+ // ContainerStats returns stats of the container. If the container does not -+ // exist, the call returns an error. -+ ContainerStats(ctx context.Context, in *ContainerStatsRequest, opts ...grpc.CallOption) (*ContainerStatsResponse, error) -+ // ListContainerStats returns stats of all running containers. -+ ListContainerStats(ctx context.Context, in *ListContainerStatsRequest, opts ...grpc.CallOption) (*ListContainerStatsResponse, error) -+ // PodSandboxStats returns stats of the pod sandbox. If the pod sandbox does not -+ // exist, the call returns an error. -+ PodSandboxStats(ctx context.Context, in *PodSandboxStatsRequest, opts ...grpc.CallOption) (*PodSandboxStatsResponse, error) -+ // ListPodSandboxStats returns stats of the pod sandboxes matching a filter. -+ ListPodSandboxStats(ctx context.Context, in *ListPodSandboxStatsRequest, opts ...grpc.CallOption) (*ListPodSandboxStatsResponse, error) -+ // UpdateRuntimeConfig updates the runtime configuration based on the given request. -+ UpdateRuntimeConfig(ctx context.Context, in *UpdateRuntimeConfigRequest, opts ...grpc.CallOption) (*UpdateRuntimeConfigResponse, error) -+ // Status returns the status of the runtime. -+ Status(ctx context.Context, in *StatusRequest, opts ...grpc.CallOption) (*StatusResponse, error) -+ // CheckpointContainer checkpoints a container -+ CheckpointContainer(ctx context.Context, in *CheckpointContainerRequest, opts ...grpc.CallOption) (*CheckpointContainerResponse, error) -+ // GetContainerEvents gets container events from the CRI runtime -+ GetContainerEvents(ctx context.Context, in *GetEventsRequest, opts ...grpc.CallOption) (RuntimeService_GetContainerEventsClient, error) -+} -+ -+type runtimeServiceClient struct { -+ cc *grpc.ClientConn -+} -+ -+func NewRuntimeServiceClient(cc *grpc.ClientConn) RuntimeServiceClient { -+ return &runtimeServiceClient{cc} -+} -+ -+func (c *runtimeServiceClient) Version(ctx context.Context, in *VersionRequest, opts ...grpc.CallOption) (*VersionResponse, error) { -+ out := new(VersionResponse) -+ err := c.cc.Invoke(ctx, "/runtime.v1.RuntimeService/Version", in, out, opts...) -+ if err != nil { -+ return nil, err -+ } -+ return out, nil -+} -+ -+func (c *runtimeServiceClient) RunPodSandbox(ctx context.Context, in *RunPodSandboxRequest, opts ...grpc.CallOption) (*RunPodSandboxResponse, error) { -+ out := new(RunPodSandboxResponse) -+ err := c.cc.Invoke(ctx, "/runtime.v1.RuntimeService/RunPodSandbox", in, out, opts...) -+ if err != nil { -+ return nil, err -+ } -+ return out, nil -+} -+ -+func (c *runtimeServiceClient) StopPodSandbox(ctx context.Context, in *StopPodSandboxRequest, opts ...grpc.CallOption) (*StopPodSandboxResponse, error) { -+ out := new(StopPodSandboxResponse) -+ err := c.cc.Invoke(ctx, "/runtime.v1.RuntimeService/StopPodSandbox", in, out, opts...) -+ if err != nil { -+ return nil, err -+ } -+ return out, nil -+} -+ -+func (c *runtimeServiceClient) RemovePodSandbox(ctx context.Context, in *RemovePodSandboxRequest, opts ...grpc.CallOption) (*RemovePodSandboxResponse, error) { -+ out := new(RemovePodSandboxResponse) -+ err := c.cc.Invoke(ctx, "/runtime.v1.RuntimeService/RemovePodSandbox", in, out, opts...) -+ if err != nil { -+ return nil, err -+ } -+ return out, nil -+} -+ -+func (c *runtimeServiceClient) PodSandboxStatus(ctx context.Context, in *PodSandboxStatusRequest, opts ...grpc.CallOption) (*PodSandboxStatusResponse, error) { -+ out := new(PodSandboxStatusResponse) -+ err := c.cc.Invoke(ctx, "/runtime.v1.RuntimeService/PodSandboxStatus", in, out, opts...) -+ if err != nil { -+ return nil, err -+ } -+ return out, nil -+} -+ -+func (c *runtimeServiceClient) ListPodSandbox(ctx context.Context, in *ListPodSandboxRequest, opts ...grpc.CallOption) (*ListPodSandboxResponse, error) { -+ out := new(ListPodSandboxResponse) -+ err := c.cc.Invoke(ctx, "/runtime.v1.RuntimeService/ListPodSandbox", in, out, opts...) -+ if err != nil { -+ return nil, err -+ } -+ return out, nil -+} -+ -+func (c *runtimeServiceClient) CreateContainer(ctx context.Context, in *CreateContainerRequest, opts ...grpc.CallOption) (*CreateContainerResponse, error) { -+ out := new(CreateContainerResponse) -+ err := c.cc.Invoke(ctx, "/runtime.v1.RuntimeService/CreateContainer", in, out, opts...) -+ if err != nil { -+ return nil, err -+ } -+ return out, nil -+} -+ -+func (c *runtimeServiceClient) StartContainer(ctx context.Context, in *StartContainerRequest, opts ...grpc.CallOption) (*StartContainerResponse, error) { -+ out := new(StartContainerResponse) -+ err := c.cc.Invoke(ctx, "/runtime.v1.RuntimeService/StartContainer", in, out, opts...) -+ if err != nil { -+ return nil, err -+ } -+ return out, nil -+} -+ -+func (c *runtimeServiceClient) StopContainer(ctx context.Context, in *StopContainerRequest, opts ...grpc.CallOption) (*StopContainerResponse, error) { -+ out := new(StopContainerResponse) -+ err := c.cc.Invoke(ctx, "/runtime.v1.RuntimeService/StopContainer", in, out, opts...) -+ if err != nil { -+ return nil, err -+ } -+ return out, nil -+} -+ -+func (c *runtimeServiceClient) RemoveContainer(ctx context.Context, in *RemoveContainerRequest, opts ...grpc.CallOption) (*RemoveContainerResponse, error) { -+ out := new(RemoveContainerResponse) -+ err := c.cc.Invoke(ctx, "/runtime.v1.RuntimeService/RemoveContainer", in, out, opts...) -+ if err != nil { -+ return nil, err -+ } -+ return out, nil -+} -+ -+func (c *runtimeServiceClient) ListContainers(ctx context.Context, in *ListContainersRequest, opts ...grpc.CallOption) (*ListContainersResponse, error) { -+ out := new(ListContainersResponse) -+ err := c.cc.Invoke(ctx, "/runtime.v1.RuntimeService/ListContainers", in, out, opts...) -+ if err != nil { -+ return nil, err -+ } -+ return out, nil -+} -+ -+func (c *runtimeServiceClient) ContainerStatus(ctx context.Context, in *ContainerStatusRequest, opts ...grpc.CallOption) (*ContainerStatusResponse, error) { -+ out := new(ContainerStatusResponse) -+ err := c.cc.Invoke(ctx, "/runtime.v1.RuntimeService/ContainerStatus", in, out, opts...) -+ if err != nil { -+ return nil, err -+ } -+ return out, nil -+} -+ -+func (c *runtimeServiceClient) UpdateContainerResources(ctx context.Context, in *UpdateContainerResourcesRequest, opts ...grpc.CallOption) (*UpdateContainerResourcesResponse, error) { -+ out := new(UpdateContainerResourcesResponse) -+ err := c.cc.Invoke(ctx, "/runtime.v1.RuntimeService/UpdateContainerResources", in, out, opts...) -+ if err != nil { -+ return nil, err -+ } -+ return out, nil -+} -+ -+func (c *runtimeServiceClient) ReopenContainerLog(ctx context.Context, in *ReopenContainerLogRequest, opts ...grpc.CallOption) (*ReopenContainerLogResponse, error) { -+ out := new(ReopenContainerLogResponse) -+ err := c.cc.Invoke(ctx, "/runtime.v1.RuntimeService/ReopenContainerLog", in, out, opts...) -+ if err != nil { -+ return nil, err -+ } -+ return out, nil -+} -+ -+func (c *runtimeServiceClient) ExecSync(ctx context.Context, in *ExecSyncRequest, opts ...grpc.CallOption) (*ExecSyncResponse, error) { -+ out := new(ExecSyncResponse) -+ err := c.cc.Invoke(ctx, "/runtime.v1.RuntimeService/ExecSync", in, out, opts...) -+ if err != nil { -+ return nil, err -+ } -+ return out, nil -+} -+ -+func (c *runtimeServiceClient) Exec(ctx context.Context, in *ExecRequest, opts ...grpc.CallOption) (*ExecResponse, error) { -+ out := new(ExecResponse) -+ err := c.cc.Invoke(ctx, "/runtime.v1.RuntimeService/Exec", in, out, opts...) -+ if err != nil { -+ return nil, err -+ } -+ return out, nil -+} -+ -+func (c *runtimeServiceClient) Attach(ctx context.Context, in *AttachRequest, opts ...grpc.CallOption) (*AttachResponse, error) { -+ out := new(AttachResponse) -+ err := c.cc.Invoke(ctx, "/runtime.v1.RuntimeService/Attach", in, out, opts...) -+ if err != nil { -+ return nil, err -+ } -+ return out, nil -+} -+ -+func (c *runtimeServiceClient) PortForward(ctx context.Context, in *PortForwardRequest, opts ...grpc.CallOption) (*PortForwardResponse, error) { -+ out := new(PortForwardResponse) -+ err := c.cc.Invoke(ctx, "/runtime.v1.RuntimeService/PortForward", in, out, opts...) -+ if err != nil { -+ return nil, err -+ } -+ return out, nil -+} -+ -+func (c *runtimeServiceClient) ContainerStats(ctx context.Context, in *ContainerStatsRequest, opts ...grpc.CallOption) (*ContainerStatsResponse, error) { -+ out := new(ContainerStatsResponse) -+ err := c.cc.Invoke(ctx, "/runtime.v1.RuntimeService/ContainerStats", in, out, opts...) -+ if err != nil { -+ return nil, err -+ } -+ return out, nil -+} -+ -+func (c *runtimeServiceClient) ListContainerStats(ctx context.Context, in *ListContainerStatsRequest, opts ...grpc.CallOption) (*ListContainerStatsResponse, error) { -+ out := new(ListContainerStatsResponse) -+ err := c.cc.Invoke(ctx, "/runtime.v1.RuntimeService/ListContainerStats", in, out, opts...) -+ if err != nil { -+ return nil, err -+ } -+ return out, nil -+} -+ -+func (c *runtimeServiceClient) PodSandboxStats(ctx context.Context, in *PodSandboxStatsRequest, opts ...grpc.CallOption) (*PodSandboxStatsResponse, error) { -+ out := new(PodSandboxStatsResponse) -+ err := c.cc.Invoke(ctx, "/runtime.v1.RuntimeService/PodSandboxStats", in, out, opts...) -+ if err != nil { -+ return nil, err -+ } -+ return out, nil -+} -+ -+func (c *runtimeServiceClient) ListPodSandboxStats(ctx context.Context, in *ListPodSandboxStatsRequest, opts ...grpc.CallOption) (*ListPodSandboxStatsResponse, error) { -+ out := new(ListPodSandboxStatsResponse) -+ err := c.cc.Invoke(ctx, "/runtime.v1.RuntimeService/ListPodSandboxStats", in, out, opts...) -+ if err != nil { -+ return nil, err -+ } -+ return out, nil -+} -+ -+func (c *runtimeServiceClient) UpdateRuntimeConfig(ctx context.Context, in *UpdateRuntimeConfigRequest, opts ...grpc.CallOption) (*UpdateRuntimeConfigResponse, error) { -+ out := new(UpdateRuntimeConfigResponse) -+ err := c.cc.Invoke(ctx, "/runtime.v1.RuntimeService/UpdateRuntimeConfig", in, out, opts...) -+ if err != nil { -+ return nil, err -+ } -+ return out, nil -+} -+ -+func (c *runtimeServiceClient) Status(ctx context.Context, in *StatusRequest, opts ...grpc.CallOption) (*StatusResponse, error) { -+ out := new(StatusResponse) -+ err := c.cc.Invoke(ctx, "/runtime.v1.RuntimeService/Status", in, out, opts...) -+ if err != nil { -+ return nil, err -+ } -+ return out, nil -+} -+ -+func (c *runtimeServiceClient) CheckpointContainer(ctx context.Context, in *CheckpointContainerRequest, opts ...grpc.CallOption) (*CheckpointContainerResponse, error) { -+ out := new(CheckpointContainerResponse) -+ err := c.cc.Invoke(ctx, "/runtime.v1.RuntimeService/CheckpointContainer", in, out, opts...) -+ if err != nil { -+ return nil, err -+ } -+ return out, nil -+} -+ -+func (c *runtimeServiceClient) GetContainerEvents(ctx context.Context, in *GetEventsRequest, opts ...grpc.CallOption) (RuntimeService_GetContainerEventsClient, error) { -+ stream, err := c.cc.NewStream(ctx, &_RuntimeService_serviceDesc.Streams[0], "/runtime.v1.RuntimeService/GetContainerEvents", opts...) -+ if err != nil { -+ return nil, err -+ } -+ x := &runtimeServiceGetContainerEventsClient{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 RuntimeService_GetContainerEventsClient interface { -+ Recv() (*ContainerEventResponse, error) -+ grpc.ClientStream -+} -+ -+type runtimeServiceGetContainerEventsClient struct { -+ grpc.ClientStream -+} -+ -+func (x *runtimeServiceGetContainerEventsClient) Recv() (*ContainerEventResponse, error) { -+ m := new(ContainerEventResponse) -+ if err := x.ClientStream.RecvMsg(m); err != nil { -+ return nil, err -+ } -+ return m, nil -+} -+ -+// RuntimeServiceServer is the server API for RuntimeService service. -+type RuntimeServiceServer interface { -+ // Version returns the runtime name, runtime version, and runtime API version. -+ Version(context.Context, *VersionRequest) (*VersionResponse, error) -+ // RunPodSandbox creates and starts a pod-level sandbox. Runtimes must ensure -+ // the sandbox is in the ready state on success. -+ RunPodSandbox(context.Context, *RunPodSandboxRequest) (*RunPodSandboxResponse, error) -+ // StopPodSandbox stops any running process that is part of the sandbox and -+ // reclaims network resources (e.g., IP addresses) allocated to the sandbox. -+ // If there are any running containers in the sandbox, they must be forcibly -+ // terminated. -+ // This call is idempotent, and must not return an error if all relevant -+ // resources have already been reclaimed. kubelet will call StopPodSandbox -+ // at least once before calling RemovePodSandbox. It will also attempt to -+ // reclaim resources eagerly, as soon as a sandbox is not needed. Hence, -+ // multiple StopPodSandbox calls are expected. -+ StopPodSandbox(context.Context, *StopPodSandboxRequest) (*StopPodSandboxResponse, error) -+ // RemovePodSandbox removes the sandbox. If there are any running containers -+ // in the sandbox, they must be forcibly terminated and removed. -+ // This call is idempotent, and must not return an error if the sandbox has -+ // already been removed. -+ RemovePodSandbox(context.Context, *RemovePodSandboxRequest) (*RemovePodSandboxResponse, error) -+ // PodSandboxStatus returns the status of the PodSandbox. If the PodSandbox is not -+ // present, returns an error. -+ PodSandboxStatus(context.Context, *PodSandboxStatusRequest) (*PodSandboxStatusResponse, error) -+ // ListPodSandbox returns a list of PodSandboxes. -+ ListPodSandbox(context.Context, *ListPodSandboxRequest) (*ListPodSandboxResponse, error) -+ // CreateContainer creates a new container in specified PodSandbox -+ CreateContainer(context.Context, *CreateContainerRequest) (*CreateContainerResponse, error) -+ // StartContainer starts the container. -+ StartContainer(context.Context, *StartContainerRequest) (*StartContainerResponse, error) -+ // StopContainer stops a running container with a grace period (i.e., timeout). -+ // This call is idempotent, and must not return an error if the container has -+ // already been stopped. -+ // The runtime must forcibly kill the container after the grace period is -+ // reached. -+ StopContainer(context.Context, *StopContainerRequest) (*StopContainerResponse, error) -+ // RemoveContainer removes the container. If the container is running, the -+ // container must be forcibly removed. -+ // This call is idempotent, and must not return an error if the container has -+ // already been removed. -+ RemoveContainer(context.Context, *RemoveContainerRequest) (*RemoveContainerResponse, error) -+ // ListContainers lists all containers by filters. -+ ListContainers(context.Context, *ListContainersRequest) (*ListContainersResponse, error) -+ // ContainerStatus returns status of the container. If the container is not -+ // present, returns an error. -+ ContainerStatus(context.Context, *ContainerStatusRequest) (*ContainerStatusResponse, error) -+ // UpdateContainerResources updates ContainerConfig of the container synchronously. -+ // If runtime fails to transactionally update the requested resources, an error is returned. -+ UpdateContainerResources(context.Context, *UpdateContainerResourcesRequest) (*UpdateContainerResourcesResponse, error) -+ // ReopenContainerLog asks runtime to reopen the stdout/stderr log file -+ // for the container. This is often called after the log file has been -+ // rotated. If the container is not running, container runtime can choose -+ // to either create a new log file and return nil, or return an error. -+ // Once it returns error, new container log file MUST NOT be created. -+ ReopenContainerLog(context.Context, *ReopenContainerLogRequest) (*ReopenContainerLogResponse, error) -+ // ExecSync runs a command in a container synchronously. -+ ExecSync(context.Context, *ExecSyncRequest) (*ExecSyncResponse, error) -+ // Exec prepares a streaming endpoint to execute a command in the container. -+ Exec(context.Context, *ExecRequest) (*ExecResponse, error) -+ // Attach prepares a streaming endpoint to attach to a running container. -+ Attach(context.Context, *AttachRequest) (*AttachResponse, error) -+ // PortForward prepares a streaming endpoint to forward ports from a PodSandbox. -+ PortForward(context.Context, *PortForwardRequest) (*PortForwardResponse, error) -+ // ContainerStats returns stats of the container. If the container does not -+ // exist, the call returns an error. -+ ContainerStats(context.Context, *ContainerStatsRequest) (*ContainerStatsResponse, error) -+ // ListContainerStats returns stats of all running containers. -+ ListContainerStats(context.Context, *ListContainerStatsRequest) (*ListContainerStatsResponse, error) -+ // PodSandboxStats returns stats of the pod sandbox. If the pod sandbox does not -+ // exist, the call returns an error. -+ PodSandboxStats(context.Context, *PodSandboxStatsRequest) (*PodSandboxStatsResponse, error) -+ // ListPodSandboxStats returns stats of the pod sandboxes matching a filter. -+ ListPodSandboxStats(context.Context, *ListPodSandboxStatsRequest) (*ListPodSandboxStatsResponse, error) -+ // UpdateRuntimeConfig updates the runtime configuration based on the given request. -+ UpdateRuntimeConfig(context.Context, *UpdateRuntimeConfigRequest) (*UpdateRuntimeConfigResponse, error) -+ // Status returns the status of the runtime. -+ Status(context.Context, *StatusRequest) (*StatusResponse, error) -+ // CheckpointContainer checkpoints a container -+ CheckpointContainer(context.Context, *CheckpointContainerRequest) (*CheckpointContainerResponse, error) -+ // GetContainerEvents gets container events from the CRI runtime -+ GetContainerEvents(*GetEventsRequest, RuntimeService_GetContainerEventsServer) error -+} -+ -+// UnimplementedRuntimeServiceServer can be embedded to have forward compatible implementations. -+type UnimplementedRuntimeServiceServer struct { -+} -+ -+func (*UnimplementedRuntimeServiceServer) Version(ctx context.Context, req *VersionRequest) (*VersionResponse, error) { -+ return nil, status.Errorf(codes.Unimplemented, "method Version not implemented") -+} -+func (*UnimplementedRuntimeServiceServer) RunPodSandbox(ctx context.Context, req *RunPodSandboxRequest) (*RunPodSandboxResponse, error) { -+ return nil, status.Errorf(codes.Unimplemented, "method RunPodSandbox not implemented") -+} -+func (*UnimplementedRuntimeServiceServer) StopPodSandbox(ctx context.Context, req *StopPodSandboxRequest) (*StopPodSandboxResponse, error) { -+ return nil, status.Errorf(codes.Unimplemented, "method StopPodSandbox not implemented") -+} -+func (*UnimplementedRuntimeServiceServer) RemovePodSandbox(ctx context.Context, req *RemovePodSandboxRequest) (*RemovePodSandboxResponse, error) { -+ return nil, status.Errorf(codes.Unimplemented, "method RemovePodSandbox not implemented") -+} -+func (*UnimplementedRuntimeServiceServer) PodSandboxStatus(ctx context.Context, req *PodSandboxStatusRequest) (*PodSandboxStatusResponse, error) { -+ return nil, status.Errorf(codes.Unimplemented, "method PodSandboxStatus not implemented") -+} -+func (*UnimplementedRuntimeServiceServer) ListPodSandbox(ctx context.Context, req *ListPodSandboxRequest) (*ListPodSandboxResponse, error) { -+ return nil, status.Errorf(codes.Unimplemented, "method ListPodSandbox not implemented") -+} -+func (*UnimplementedRuntimeServiceServer) CreateContainer(ctx context.Context, req *CreateContainerRequest) (*CreateContainerResponse, error) { -+ return nil, status.Errorf(codes.Unimplemented, "method CreateContainer not implemented") -+} -+func (*UnimplementedRuntimeServiceServer) StartContainer(ctx context.Context, req *StartContainerRequest) (*StartContainerResponse, error) { -+ return nil, status.Errorf(codes.Unimplemented, "method StartContainer not implemented") -+} -+func (*UnimplementedRuntimeServiceServer) StopContainer(ctx context.Context, req *StopContainerRequest) (*StopContainerResponse, error) { -+ return nil, status.Errorf(codes.Unimplemented, "method StopContainer not implemented") -+} -+func (*UnimplementedRuntimeServiceServer) RemoveContainer(ctx context.Context, req *RemoveContainerRequest) (*RemoveContainerResponse, error) { -+ return nil, status.Errorf(codes.Unimplemented, "method RemoveContainer not implemented") -+} -+func (*UnimplementedRuntimeServiceServer) ListContainers(ctx context.Context, req *ListContainersRequest) (*ListContainersResponse, error) { -+ return nil, status.Errorf(codes.Unimplemented, "method ListContainers not implemented") -+} -+func (*UnimplementedRuntimeServiceServer) ContainerStatus(ctx context.Context, req *ContainerStatusRequest) (*ContainerStatusResponse, error) { -+ return nil, status.Errorf(codes.Unimplemented, "method ContainerStatus not implemented") -+} -+func (*UnimplementedRuntimeServiceServer) UpdateContainerResources(ctx context.Context, req *UpdateContainerResourcesRequest) (*UpdateContainerResourcesResponse, error) { -+ return nil, status.Errorf(codes.Unimplemented, "method UpdateContainerResources not implemented") -+} -+func (*UnimplementedRuntimeServiceServer) ReopenContainerLog(ctx context.Context, req *ReopenContainerLogRequest) (*ReopenContainerLogResponse, error) { -+ return nil, status.Errorf(codes.Unimplemented, "method ReopenContainerLog not implemented") -+} -+func (*UnimplementedRuntimeServiceServer) ExecSync(ctx context.Context, req *ExecSyncRequest) (*ExecSyncResponse, error) { -+ return nil, status.Errorf(codes.Unimplemented, "method ExecSync not implemented") -+} -+func (*UnimplementedRuntimeServiceServer) Exec(ctx context.Context, req *ExecRequest) (*ExecResponse, error) { -+ return nil, status.Errorf(codes.Unimplemented, "method Exec not implemented") -+} -+func (*UnimplementedRuntimeServiceServer) Attach(ctx context.Context, req *AttachRequest) (*AttachResponse, error) { -+ return nil, status.Errorf(codes.Unimplemented, "method Attach not implemented") -+} -+func (*UnimplementedRuntimeServiceServer) PortForward(ctx context.Context, req *PortForwardRequest) (*PortForwardResponse, error) { -+ return nil, status.Errorf(codes.Unimplemented, "method PortForward not implemented") -+} -+func (*UnimplementedRuntimeServiceServer) ContainerStats(ctx context.Context, req *ContainerStatsRequest) (*ContainerStatsResponse, error) { -+ return nil, status.Errorf(codes.Unimplemented, "method ContainerStats not implemented") -+} -+func (*UnimplementedRuntimeServiceServer) ListContainerStats(ctx context.Context, req *ListContainerStatsRequest) (*ListContainerStatsResponse, error) { -+ return nil, status.Errorf(codes.Unimplemented, "method ListContainerStats not implemented") -+} -+func (*UnimplementedRuntimeServiceServer) PodSandboxStats(ctx context.Context, req *PodSandboxStatsRequest) (*PodSandboxStatsResponse, error) { -+ return nil, status.Errorf(codes.Unimplemented, "method PodSandboxStats not implemented") -+} -+func (*UnimplementedRuntimeServiceServer) ListPodSandboxStats(ctx context.Context, req *ListPodSandboxStatsRequest) (*ListPodSandboxStatsResponse, error) { -+ return nil, status.Errorf(codes.Unimplemented, "method ListPodSandboxStats not implemented") -+} -+func (*UnimplementedRuntimeServiceServer) UpdateRuntimeConfig(ctx context.Context, req *UpdateRuntimeConfigRequest) (*UpdateRuntimeConfigResponse, error) { -+ return nil, status.Errorf(codes.Unimplemented, "method UpdateRuntimeConfig not implemented") -+} -+func (*UnimplementedRuntimeServiceServer) Status(ctx context.Context, req *StatusRequest) (*StatusResponse, error) { -+ return nil, status.Errorf(codes.Unimplemented, "method Status not implemented") -+} -+func (*UnimplementedRuntimeServiceServer) CheckpointContainer(ctx context.Context, req *CheckpointContainerRequest) (*CheckpointContainerResponse, error) { -+ return nil, status.Errorf(codes.Unimplemented, "method CheckpointContainer not implemented") -+} -+func (*UnimplementedRuntimeServiceServer) GetContainerEvents(req *GetEventsRequest, srv RuntimeService_GetContainerEventsServer) error { -+ return status.Errorf(codes.Unimplemented, "method GetContainerEvents not implemented") -+} -+ -+func RegisterRuntimeServiceServer(s *grpc.Server, srv RuntimeServiceServer) { -+ s.RegisterService(&_RuntimeService_serviceDesc, srv) -+} -+ -+func _RuntimeService_Version_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { -+ in := new(VersionRequest) -+ if err := dec(in); err != nil { -+ return nil, err -+ } -+ if interceptor == nil { -+ return srv.(RuntimeServiceServer).Version(ctx, in) -+ } -+ info := &grpc.UnaryServerInfo{ -+ Server: srv, -+ FullMethod: "/runtime.v1.RuntimeService/Version", -+ } -+ handler := func(ctx context.Context, req interface{}) (interface{}, error) { -+ return srv.(RuntimeServiceServer).Version(ctx, req.(*VersionRequest)) -+ } -+ return interceptor(ctx, in, info, handler) -+} -+ -+func _RuntimeService_RunPodSandbox_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { -+ in := new(RunPodSandboxRequest) -+ if err := dec(in); err != nil { -+ return nil, err -+ } -+ if interceptor == nil { -+ return srv.(RuntimeServiceServer).RunPodSandbox(ctx, in) -+ } -+ info := &grpc.UnaryServerInfo{ -+ Server: srv, -+ FullMethod: "/runtime.v1.RuntimeService/RunPodSandbox", -+ } -+ handler := func(ctx context.Context, req interface{}) (interface{}, error) { -+ return srv.(RuntimeServiceServer).RunPodSandbox(ctx, req.(*RunPodSandboxRequest)) -+ } -+ return interceptor(ctx, in, info, handler) -+} -+ -+func _RuntimeService_StopPodSandbox_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { -+ in := new(StopPodSandboxRequest) -+ if err := dec(in); err != nil { -+ return nil, err -+ } -+ if interceptor == nil { -+ return srv.(RuntimeServiceServer).StopPodSandbox(ctx, in) -+ } -+ info := &grpc.UnaryServerInfo{ -+ Server: srv, -+ FullMethod: "/runtime.v1.RuntimeService/StopPodSandbox", -+ } -+ handler := func(ctx context.Context, req interface{}) (interface{}, error) { -+ return srv.(RuntimeServiceServer).StopPodSandbox(ctx, req.(*StopPodSandboxRequest)) -+ } -+ return interceptor(ctx, in, info, handler) -+} -+ -+func _RuntimeService_RemovePodSandbox_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { -+ in := new(RemovePodSandboxRequest) -+ if err := dec(in); err != nil { -+ return nil, err -+ } -+ if interceptor == nil { -+ return srv.(RuntimeServiceServer).RemovePodSandbox(ctx, in) -+ } -+ info := &grpc.UnaryServerInfo{ -+ Server: srv, -+ FullMethod: "/runtime.v1.RuntimeService/RemovePodSandbox", -+ } -+ handler := func(ctx context.Context, req interface{}) (interface{}, error) { -+ return srv.(RuntimeServiceServer).RemovePodSandbox(ctx, req.(*RemovePodSandboxRequest)) -+ } -+ return interceptor(ctx, in, info, handler) -+} -+ -+func _RuntimeService_PodSandboxStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { -+ in := new(PodSandboxStatusRequest) -+ if err := dec(in); err != nil { -+ return nil, err -+ } -+ if interceptor == nil { -+ return srv.(RuntimeServiceServer).PodSandboxStatus(ctx, in) -+ } -+ info := &grpc.UnaryServerInfo{ -+ Server: srv, -+ FullMethod: "/runtime.v1.RuntimeService/PodSandboxStatus", -+ } -+ handler := func(ctx context.Context, req interface{}) (interface{}, error) { -+ return srv.(RuntimeServiceServer).PodSandboxStatus(ctx, req.(*PodSandboxStatusRequest)) -+ } -+ return interceptor(ctx, in, info, handler) -+} -+ -+func _RuntimeService_ListPodSandbox_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { -+ in := new(ListPodSandboxRequest) -+ if err := dec(in); err != nil { -+ return nil, err -+ } -+ if interceptor == nil { -+ return srv.(RuntimeServiceServer).ListPodSandbox(ctx, in) -+ } -+ info := &grpc.UnaryServerInfo{ -+ Server: srv, -+ FullMethod: "/runtime.v1.RuntimeService/ListPodSandbox", -+ } -+ handler := func(ctx context.Context, req interface{}) (interface{}, error) { -+ return srv.(RuntimeServiceServer).ListPodSandbox(ctx, req.(*ListPodSandboxRequest)) -+ } -+ return interceptor(ctx, in, info, handler) -+} -+ -+func _RuntimeService_CreateContainer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { -+ in := new(CreateContainerRequest) -+ if err := dec(in); err != nil { -+ return nil, err -+ } -+ if interceptor == nil { -+ return srv.(RuntimeServiceServer).CreateContainer(ctx, in) -+ } -+ info := &grpc.UnaryServerInfo{ -+ Server: srv, -+ FullMethod: "/runtime.v1.RuntimeService/CreateContainer", -+ } -+ handler := func(ctx context.Context, req interface{}) (interface{}, error) { -+ return srv.(RuntimeServiceServer).CreateContainer(ctx, req.(*CreateContainerRequest)) -+ } -+ return interceptor(ctx, in, info, handler) -+} -+ -+func _RuntimeService_StartContainer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { -+ in := new(StartContainerRequest) -+ if err := dec(in); err != nil { -+ return nil, err -+ } -+ if interceptor == nil { -+ return srv.(RuntimeServiceServer).StartContainer(ctx, in) -+ } -+ info := &grpc.UnaryServerInfo{ -+ Server: srv, -+ FullMethod: "/runtime.v1.RuntimeService/StartContainer", -+ } -+ handler := func(ctx context.Context, req interface{}) (interface{}, error) { -+ return srv.(RuntimeServiceServer).StartContainer(ctx, req.(*StartContainerRequest)) -+ } -+ return interceptor(ctx, in, info, handler) -+} -+ -+func _RuntimeService_StopContainer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { -+ in := new(StopContainerRequest) -+ if err := dec(in); err != nil { -+ return nil, err -+ } -+ if interceptor == nil { -+ return srv.(RuntimeServiceServer).StopContainer(ctx, in) -+ } -+ info := &grpc.UnaryServerInfo{ -+ Server: srv, -+ FullMethod: "/runtime.v1.RuntimeService/StopContainer", -+ } -+ handler := func(ctx context.Context, req interface{}) (interface{}, error) { -+ return srv.(RuntimeServiceServer).StopContainer(ctx, req.(*StopContainerRequest)) -+ } -+ return interceptor(ctx, in, info, handler) -+} -+ -+func _RuntimeService_RemoveContainer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { -+ in := new(RemoveContainerRequest) -+ if err := dec(in); err != nil { -+ return nil, err -+ } -+ if interceptor == nil { -+ return srv.(RuntimeServiceServer).RemoveContainer(ctx, in) -+ } -+ info := &grpc.UnaryServerInfo{ -+ Server: srv, -+ FullMethod: "/runtime.v1.RuntimeService/RemoveContainer", -+ } -+ handler := func(ctx context.Context, req interface{}) (interface{}, error) { -+ return srv.(RuntimeServiceServer).RemoveContainer(ctx, req.(*RemoveContainerRequest)) -+ } -+ return interceptor(ctx, in, info, handler) -+} -+ -+func _RuntimeService_ListContainers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { -+ in := new(ListContainersRequest) -+ if err := dec(in); err != nil { -+ return nil, err -+ } -+ if interceptor == nil { -+ return srv.(RuntimeServiceServer).ListContainers(ctx, in) -+ } -+ info := &grpc.UnaryServerInfo{ -+ Server: srv, -+ FullMethod: "/runtime.v1.RuntimeService/ListContainers", -+ } -+ handler := func(ctx context.Context, req interface{}) (interface{}, error) { -+ return srv.(RuntimeServiceServer).ListContainers(ctx, req.(*ListContainersRequest)) -+ } -+ return interceptor(ctx, in, info, handler) -+} -+ -+func _RuntimeService_ContainerStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { -+ in := new(ContainerStatusRequest) -+ if err := dec(in); err != nil { -+ return nil, err -+ } -+ if interceptor == nil { -+ return srv.(RuntimeServiceServer).ContainerStatus(ctx, in) -+ } -+ info := &grpc.UnaryServerInfo{ -+ Server: srv, -+ FullMethod: "/runtime.v1.RuntimeService/ContainerStatus", -+ } -+ handler := func(ctx context.Context, req interface{}) (interface{}, error) { -+ return srv.(RuntimeServiceServer).ContainerStatus(ctx, req.(*ContainerStatusRequest)) -+ } -+ return interceptor(ctx, in, info, handler) -+} -+ -+func _RuntimeService_UpdateContainerResources_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { -+ in := new(UpdateContainerResourcesRequest) -+ if err := dec(in); err != nil { -+ return nil, err -+ } -+ if interceptor == nil { -+ return srv.(RuntimeServiceServer).UpdateContainerResources(ctx, in) -+ } -+ info := &grpc.UnaryServerInfo{ -+ Server: srv, -+ FullMethod: "/runtime.v1.RuntimeService/UpdateContainerResources", -+ } -+ handler := func(ctx context.Context, req interface{}) (interface{}, error) { -+ return srv.(RuntimeServiceServer).UpdateContainerResources(ctx, req.(*UpdateContainerResourcesRequest)) -+ } -+ return interceptor(ctx, in, info, handler) -+} -+ -+func _RuntimeService_ReopenContainerLog_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { -+ in := new(ReopenContainerLogRequest) -+ if err := dec(in); err != nil { -+ return nil, err -+ } -+ if interceptor == nil { -+ return srv.(RuntimeServiceServer).ReopenContainerLog(ctx, in) -+ } -+ info := &grpc.UnaryServerInfo{ -+ Server: srv, -+ FullMethod: "/runtime.v1.RuntimeService/ReopenContainerLog", -+ } -+ handler := func(ctx context.Context, req interface{}) (interface{}, error) { -+ return srv.(RuntimeServiceServer).ReopenContainerLog(ctx, req.(*ReopenContainerLogRequest)) -+ } -+ return interceptor(ctx, in, info, handler) -+} -+ -+func _RuntimeService_ExecSync_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { -+ in := new(ExecSyncRequest) -+ if err := dec(in); err != nil { -+ return nil, err -+ } -+ if interceptor == nil { -+ return srv.(RuntimeServiceServer).ExecSync(ctx, in) -+ } -+ info := &grpc.UnaryServerInfo{ -+ Server: srv, -+ FullMethod: "/runtime.v1.RuntimeService/ExecSync", -+ } -+ handler := func(ctx context.Context, req interface{}) (interface{}, error) { -+ return srv.(RuntimeServiceServer).ExecSync(ctx, req.(*ExecSyncRequest)) -+ } -+ return interceptor(ctx, in, info, handler) -+} -+ -+func _RuntimeService_Exec_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { -+ in := new(ExecRequest) -+ if err := dec(in); err != nil { -+ return nil, err -+ } -+ if interceptor == nil { -+ return srv.(RuntimeServiceServer).Exec(ctx, in) -+ } -+ info := &grpc.UnaryServerInfo{ -+ Server: srv, -+ FullMethod: "/runtime.v1.RuntimeService/Exec", -+ } -+ handler := func(ctx context.Context, req interface{}) (interface{}, error) { -+ return srv.(RuntimeServiceServer).Exec(ctx, req.(*ExecRequest)) -+ } -+ return interceptor(ctx, in, info, handler) -+} -+ -+func _RuntimeService_Attach_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { -+ in := new(AttachRequest) -+ if err := dec(in); err != nil { -+ return nil, err -+ } -+ if interceptor == nil { -+ return srv.(RuntimeServiceServer).Attach(ctx, in) -+ } -+ info := &grpc.UnaryServerInfo{ -+ Server: srv, -+ FullMethod: "/runtime.v1.RuntimeService/Attach", -+ } -+ handler := func(ctx context.Context, req interface{}) (interface{}, error) { -+ return srv.(RuntimeServiceServer).Attach(ctx, req.(*AttachRequest)) -+ } -+ return interceptor(ctx, in, info, handler) -+} -+ -+func _RuntimeService_PortForward_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { -+ in := new(PortForwardRequest) -+ if err := dec(in); err != nil { -+ return nil, err -+ } -+ if interceptor == nil { -+ return srv.(RuntimeServiceServer).PortForward(ctx, in) -+ } -+ info := &grpc.UnaryServerInfo{ -+ Server: srv, -+ FullMethod: "/runtime.v1.RuntimeService/PortForward", -+ } -+ handler := func(ctx context.Context, req interface{}) (interface{}, error) { -+ return srv.(RuntimeServiceServer).PortForward(ctx, req.(*PortForwardRequest)) -+ } -+ return interceptor(ctx, in, info, handler) -+} -+ -+func _RuntimeService_ContainerStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { -+ in := new(ContainerStatsRequest) -+ if err := dec(in); err != nil { -+ return nil, err -+ } -+ if interceptor == nil { -+ return srv.(RuntimeServiceServer).ContainerStats(ctx, in) -+ } -+ info := &grpc.UnaryServerInfo{ -+ Server: srv, -+ FullMethod: "/runtime.v1.RuntimeService/ContainerStats", -+ } -+ handler := func(ctx context.Context, req interface{}) (interface{}, error) { -+ return srv.(RuntimeServiceServer).ContainerStats(ctx, req.(*ContainerStatsRequest)) -+ } -+ return interceptor(ctx, in, info, handler) -+} -+ -+func _RuntimeService_ListContainerStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { -+ in := new(ListContainerStatsRequest) -+ if err := dec(in); err != nil { -+ return nil, err -+ } -+ if interceptor == nil { -+ return srv.(RuntimeServiceServer).ListContainerStats(ctx, in) -+ } -+ info := &grpc.UnaryServerInfo{ -+ Server: srv, -+ FullMethod: "/runtime.v1.RuntimeService/ListContainerStats", -+ } -+ handler := func(ctx context.Context, req interface{}) (interface{}, error) { -+ return srv.(RuntimeServiceServer).ListContainerStats(ctx, req.(*ListContainerStatsRequest)) -+ } -+ return interceptor(ctx, in, info, handler) -+} -+ -+func _RuntimeService_PodSandboxStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { -+ in := new(PodSandboxStatsRequest) -+ if err := dec(in); err != nil { -+ return nil, err -+ } -+ if interceptor == nil { -+ return srv.(RuntimeServiceServer).PodSandboxStats(ctx, in) -+ } -+ info := &grpc.UnaryServerInfo{ -+ Server: srv, -+ FullMethod: "/runtime.v1.RuntimeService/PodSandboxStats", -+ } -+ handler := func(ctx context.Context, req interface{}) (interface{}, error) { -+ return srv.(RuntimeServiceServer).PodSandboxStats(ctx, req.(*PodSandboxStatsRequest)) -+ } -+ return interceptor(ctx, in, info, handler) -+} -+ -+func _RuntimeService_ListPodSandboxStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { -+ in := new(ListPodSandboxStatsRequest) -+ if err := dec(in); err != nil { -+ return nil, err -+ } -+ if interceptor == nil { -+ return srv.(RuntimeServiceServer).ListPodSandboxStats(ctx, in) -+ } -+ info := &grpc.UnaryServerInfo{ -+ Server: srv, -+ FullMethod: "/runtime.v1.RuntimeService/ListPodSandboxStats", -+ } -+ handler := func(ctx context.Context, req interface{}) (interface{}, error) { -+ return srv.(RuntimeServiceServer).ListPodSandboxStats(ctx, req.(*ListPodSandboxStatsRequest)) -+ } -+ return interceptor(ctx, in, info, handler) -+} -+ -+func _RuntimeService_UpdateRuntimeConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { -+ in := new(UpdateRuntimeConfigRequest) -+ if err := dec(in); err != nil { -+ return nil, err -+ } -+ if interceptor == nil { -+ return srv.(RuntimeServiceServer).UpdateRuntimeConfig(ctx, in) -+ } -+ info := &grpc.UnaryServerInfo{ -+ Server: srv, -+ FullMethod: "/runtime.v1.RuntimeService/UpdateRuntimeConfig", -+ } -+ handler := func(ctx context.Context, req interface{}) (interface{}, error) { -+ return srv.(RuntimeServiceServer).UpdateRuntimeConfig(ctx, req.(*UpdateRuntimeConfigRequest)) -+ } -+ return interceptor(ctx, in, info, handler) -+} -+ -+func _RuntimeService_Status_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { -+ in := new(StatusRequest) -+ if err := dec(in); err != nil { -+ return nil, err -+ } -+ if interceptor == nil { -+ return srv.(RuntimeServiceServer).Status(ctx, in) -+ } -+ info := &grpc.UnaryServerInfo{ -+ Server: srv, -+ FullMethod: "/runtime.v1.RuntimeService/Status", -+ } -+ handler := func(ctx context.Context, req interface{}) (interface{}, error) { -+ return srv.(RuntimeServiceServer).Status(ctx, req.(*StatusRequest)) -+ } -+ return interceptor(ctx, in, info, handler) -+} -+ -+func _RuntimeService_CheckpointContainer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { -+ in := new(CheckpointContainerRequest) -+ if err := dec(in); err != nil { -+ return nil, err -+ } -+ if interceptor == nil { -+ return srv.(RuntimeServiceServer).CheckpointContainer(ctx, in) -+ } -+ info := &grpc.UnaryServerInfo{ -+ Server: srv, -+ FullMethod: "/runtime.v1.RuntimeService/CheckpointContainer", -+ } -+ handler := func(ctx context.Context, req interface{}) (interface{}, error) { -+ return srv.(RuntimeServiceServer).CheckpointContainer(ctx, req.(*CheckpointContainerRequest)) -+ } -+ return interceptor(ctx, in, info, handler) -+} -+ -+func _RuntimeService_GetContainerEvents_Handler(srv interface{}, stream grpc.ServerStream) error { -+ m := new(GetEventsRequest) -+ if err := stream.RecvMsg(m); err != nil { -+ return err -+ } -+ return srv.(RuntimeServiceServer).GetContainerEvents(m, &runtimeServiceGetContainerEventsServer{stream}) -+} -+ -+type RuntimeService_GetContainerEventsServer interface { -+ Send(*ContainerEventResponse) error -+ grpc.ServerStream -+} -+ -+type runtimeServiceGetContainerEventsServer struct { -+ grpc.ServerStream -+} -+ -+func (x *runtimeServiceGetContainerEventsServer) Send(m *ContainerEventResponse) error { -+ return x.ServerStream.SendMsg(m) -+} -+ -+var _RuntimeService_serviceDesc = grpc.ServiceDesc{ -+ ServiceName: "runtime.v1.RuntimeService", -+ HandlerType: (*RuntimeServiceServer)(nil), -+ Methods: []grpc.MethodDesc{ -+ { -+ MethodName: "Version", -+ Handler: _RuntimeService_Version_Handler, -+ }, -+ { -+ MethodName: "RunPodSandbox", -+ Handler: _RuntimeService_RunPodSandbox_Handler, -+ }, -+ { -+ MethodName: "StopPodSandbox", -+ Handler: _RuntimeService_StopPodSandbox_Handler, -+ }, -+ { -+ MethodName: "RemovePodSandbox", -+ Handler: _RuntimeService_RemovePodSandbox_Handler, -+ }, -+ { -+ MethodName: "PodSandboxStatus", -+ Handler: _RuntimeService_PodSandboxStatus_Handler, -+ }, -+ { -+ MethodName: "ListPodSandbox", -+ Handler: _RuntimeService_ListPodSandbox_Handler, -+ }, -+ { -+ MethodName: "CreateContainer", -+ Handler: _RuntimeService_CreateContainer_Handler, -+ }, -+ { -+ MethodName: "StartContainer", -+ Handler: _RuntimeService_StartContainer_Handler, -+ }, -+ { -+ MethodName: "StopContainer", -+ Handler: _RuntimeService_StopContainer_Handler, -+ }, -+ { -+ MethodName: "RemoveContainer", -+ Handler: _RuntimeService_RemoveContainer_Handler, -+ }, -+ { -+ MethodName: "ListContainers", -+ Handler: _RuntimeService_ListContainers_Handler, -+ }, -+ { -+ MethodName: "ContainerStatus", -+ Handler: _RuntimeService_ContainerStatus_Handler, -+ }, -+ { -+ MethodName: "UpdateContainerResources", -+ Handler: _RuntimeService_UpdateContainerResources_Handler, -+ }, -+ { -+ MethodName: "ReopenContainerLog", -+ Handler: _RuntimeService_ReopenContainerLog_Handler, -+ }, -+ { -+ MethodName: "ExecSync", -+ Handler: _RuntimeService_ExecSync_Handler, -+ }, -+ { -+ MethodName: "Exec", -+ Handler: _RuntimeService_Exec_Handler, -+ }, -+ { -+ MethodName: "Attach", -+ Handler: _RuntimeService_Attach_Handler, -+ }, -+ { -+ MethodName: "PortForward", -+ Handler: _RuntimeService_PortForward_Handler, -+ }, -+ { -+ MethodName: "ContainerStats", -+ Handler: _RuntimeService_ContainerStats_Handler, -+ }, -+ { -+ MethodName: "ListContainerStats", -+ Handler: _RuntimeService_ListContainerStats_Handler, -+ }, -+ { -+ MethodName: "PodSandboxStats", -+ Handler: _RuntimeService_PodSandboxStats_Handler, -+ }, -+ { -+ MethodName: "ListPodSandboxStats", -+ Handler: _RuntimeService_ListPodSandboxStats_Handler, -+ }, -+ { -+ MethodName: "UpdateRuntimeConfig", -+ Handler: _RuntimeService_UpdateRuntimeConfig_Handler, -+ }, -+ { -+ MethodName: "Status", -+ Handler: _RuntimeService_Status_Handler, -+ }, -+ { -+ MethodName: "CheckpointContainer", -+ Handler: _RuntimeService_CheckpointContainer_Handler, -+ }, -+ }, -+ Streams: []grpc.StreamDesc{ -+ { -+ StreamName: "GetContainerEvents", -+ Handler: _RuntimeService_GetContainerEvents_Handler, -+ ServerStreams: true, -+ }, -+ }, -+ Metadata: "api.proto", -+} -+ -+// ImageServiceClient is the client API for ImageService service. -+// -+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -+type ImageServiceClient interface { -+ // ListImages lists existing images. -+ ListImages(ctx context.Context, in *ListImagesRequest, opts ...grpc.CallOption) (*ListImagesResponse, error) -+ // ImageStatus returns the status of the image. If the image is not -+ // present, returns a response with ImageStatusResponse.Image set to -+ // nil. -+ ImageStatus(ctx context.Context, in *ImageStatusRequest, opts ...grpc.CallOption) (*ImageStatusResponse, error) -+ // PullImage pulls an image with authentication config. -+ PullImage(ctx context.Context, in *PullImageRequest, opts ...grpc.CallOption) (*PullImageResponse, error) -+ // RemoveImage removes the image. -+ // This call is idempotent, and must not return an error if the image has -+ // already been removed. -+ RemoveImage(ctx context.Context, in *RemoveImageRequest, opts ...grpc.CallOption) (*RemoveImageResponse, error) -+ // ImageFSInfo returns information of the filesystem that is used to store images. -+ ImageFsInfo(ctx context.Context, in *ImageFsInfoRequest, opts ...grpc.CallOption) (*ImageFsInfoResponse, error) -+} -+ -+type imageServiceClient struct { -+ cc *grpc.ClientConn -+} -+ -+func NewImageServiceClient(cc *grpc.ClientConn) ImageServiceClient { -+ return &imageServiceClient{cc} -+} -+ -+func (c *imageServiceClient) ListImages(ctx context.Context, in *ListImagesRequest, opts ...grpc.CallOption) (*ListImagesResponse, error) { -+ out := new(ListImagesResponse) -+ err := c.cc.Invoke(ctx, "/runtime.v1.ImageService/ListImages", in, out, opts...) -+ if err != nil { -+ return nil, err -+ } -+ return out, nil -+} -+ -+func (c *imageServiceClient) ImageStatus(ctx context.Context, in *ImageStatusRequest, opts ...grpc.CallOption) (*ImageStatusResponse, error) { -+ out := new(ImageStatusResponse) -+ err := c.cc.Invoke(ctx, "/runtime.v1.ImageService/ImageStatus", in, out, opts...) -+ if err != nil { -+ return nil, err -+ } -+ return out, nil -+} -+ -+func (c *imageServiceClient) PullImage(ctx context.Context, in *PullImageRequest, opts ...grpc.CallOption) (*PullImageResponse, error) { -+ out := new(PullImageResponse) -+ err := c.cc.Invoke(ctx, "/runtime.v1.ImageService/PullImage", in, out, opts...) -+ if err != nil { -+ return nil, err -+ } -+ return out, nil -+} -+ -+func (c *imageServiceClient) RemoveImage(ctx context.Context, in *RemoveImageRequest, opts ...grpc.CallOption) (*RemoveImageResponse, error) { -+ out := new(RemoveImageResponse) -+ err := c.cc.Invoke(ctx, "/runtime.v1.ImageService/RemoveImage", in, out, opts...) -+ if err != nil { -+ return nil, err -+ } -+ return out, nil -+} -+ -+func (c *imageServiceClient) ImageFsInfo(ctx context.Context, in *ImageFsInfoRequest, opts ...grpc.CallOption) (*ImageFsInfoResponse, error) { -+ out := new(ImageFsInfoResponse) -+ err := c.cc.Invoke(ctx, "/runtime.v1.ImageService/ImageFsInfo", in, out, opts...) -+ if err != nil { -+ return nil, err -+ } -+ return out, nil -+} -+ -+// ImageServiceServer is the server API for ImageService service. -+type ImageServiceServer interface { -+ // ListImages lists existing images. -+ ListImages(context.Context, *ListImagesRequest) (*ListImagesResponse, error) -+ // ImageStatus returns the status of the image. If the image is not -+ // present, returns a response with ImageStatusResponse.Image set to -+ // nil. -+ ImageStatus(context.Context, *ImageStatusRequest) (*ImageStatusResponse, error) -+ // PullImage pulls an image with authentication config. -+ PullImage(context.Context, *PullImageRequest) (*PullImageResponse, error) -+ // RemoveImage removes the image. -+ // This call is idempotent, and must not return an error if the image has -+ // already been removed. -+ RemoveImage(context.Context, *RemoveImageRequest) (*RemoveImageResponse, error) -+ // ImageFSInfo returns information of the filesystem that is used to store images. -+ ImageFsInfo(context.Context, *ImageFsInfoRequest) (*ImageFsInfoResponse, error) -+} -+ -+// UnimplementedImageServiceServer can be embedded to have forward compatible implementations. -+type UnimplementedImageServiceServer struct { -+} -+ -+func (*UnimplementedImageServiceServer) ListImages(ctx context.Context, req *ListImagesRequest) (*ListImagesResponse, error) { -+ return nil, status.Errorf(codes.Unimplemented, "method ListImages not implemented") -+} -+func (*UnimplementedImageServiceServer) ImageStatus(ctx context.Context, req *ImageStatusRequest) (*ImageStatusResponse, error) { -+ return nil, status.Errorf(codes.Unimplemented, "method ImageStatus not implemented") -+} -+func (*UnimplementedImageServiceServer) PullImage(ctx context.Context, req *PullImageRequest) (*PullImageResponse, error) { -+ return nil, status.Errorf(codes.Unimplemented, "method PullImage not implemented") -+} -+func (*UnimplementedImageServiceServer) RemoveImage(ctx context.Context, req *RemoveImageRequest) (*RemoveImageResponse, error) { -+ return nil, status.Errorf(codes.Unimplemented, "method RemoveImage not implemented") -+} -+func (*UnimplementedImageServiceServer) ImageFsInfo(ctx context.Context, req *ImageFsInfoRequest) (*ImageFsInfoResponse, error) { -+ return nil, status.Errorf(codes.Unimplemented, "method ImageFsInfo not implemented") -+} -+ -+func RegisterImageServiceServer(s *grpc.Server, srv ImageServiceServer) { -+ s.RegisterService(&_ImageService_serviceDesc, srv) -+} -+ -+func _ImageService_ListImages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { -+ in := new(ListImagesRequest) -+ if err := dec(in); err != nil { -+ return nil, err -+ } -+ if interceptor == nil { -+ return srv.(ImageServiceServer).ListImages(ctx, in) -+ } -+ info := &grpc.UnaryServerInfo{ -+ Server: srv, -+ FullMethod: "/runtime.v1.ImageService/ListImages", -+ } -+ handler := func(ctx context.Context, req interface{}) (interface{}, error) { -+ return srv.(ImageServiceServer).ListImages(ctx, req.(*ListImagesRequest)) -+ } -+ return interceptor(ctx, in, info, handler) -+} -+ -+func _ImageService_ImageStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { -+ in := new(ImageStatusRequest) -+ if err := dec(in); err != nil { -+ return nil, err -+ } -+ if interceptor == nil { -+ return srv.(ImageServiceServer).ImageStatus(ctx, in) -+ } -+ info := &grpc.UnaryServerInfo{ -+ Server: srv, -+ FullMethod: "/runtime.v1.ImageService/ImageStatus", -+ } -+ handler := func(ctx context.Context, req interface{}) (interface{}, error) { -+ return srv.(ImageServiceServer).ImageStatus(ctx, req.(*ImageStatusRequest)) -+ } -+ return interceptor(ctx, in, info, handler) -+} -+ -+func _ImageService_PullImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { -+ in := new(PullImageRequest) -+ if err := dec(in); err != nil { -+ return nil, err -+ } -+ if interceptor == nil { -+ return srv.(ImageServiceServer).PullImage(ctx, in) -+ } -+ info := &grpc.UnaryServerInfo{ -+ Server: srv, -+ FullMethod: "/runtime.v1.ImageService/PullImage", -+ } -+ handler := func(ctx context.Context, req interface{}) (interface{}, error) { -+ return srv.(ImageServiceServer).PullImage(ctx, req.(*PullImageRequest)) -+ } -+ return interceptor(ctx, in, info, handler) -+} -+ -+func _ImageService_RemoveImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { -+ in := new(RemoveImageRequest) -+ if err := dec(in); err != nil { -+ return nil, err -+ } -+ if interceptor == nil { -+ return srv.(ImageServiceServer).RemoveImage(ctx, in) -+ } -+ info := &grpc.UnaryServerInfo{ -+ Server: srv, -+ FullMethod: "/runtime.v1.ImageService/RemoveImage", -+ } -+ handler := func(ctx context.Context, req interface{}) (interface{}, error) { -+ return srv.(ImageServiceServer).RemoveImage(ctx, req.(*RemoveImageRequest)) -+ } -+ return interceptor(ctx, in, info, handler) -+} -+ -+func _ImageService_ImageFsInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { -+ in := new(ImageFsInfoRequest) -+ if err := dec(in); err != nil { -+ return nil, err -+ } -+ if interceptor == nil { -+ return srv.(ImageServiceServer).ImageFsInfo(ctx, in) -+ } -+ info := &grpc.UnaryServerInfo{ -+ Server: srv, -+ FullMethod: "/runtime.v1.ImageService/ImageFsInfo", -+ } -+ handler := func(ctx context.Context, req interface{}) (interface{}, error) { -+ return srv.(ImageServiceServer).ImageFsInfo(ctx, req.(*ImageFsInfoRequest)) -+ } -+ return interceptor(ctx, in, info, handler) -+} -+ -+var _ImageService_serviceDesc = grpc.ServiceDesc{ -+ ServiceName: "runtime.v1.ImageService", -+ HandlerType: (*ImageServiceServer)(nil), -+ Methods: []grpc.MethodDesc{ -+ { -+ MethodName: "ListImages", -+ Handler: _ImageService_ListImages_Handler, -+ }, -+ { -+ MethodName: "ImageStatus", -+ Handler: _ImageService_ImageStatus_Handler, -+ }, -+ { -+ MethodName: "PullImage", -+ Handler: _ImageService_PullImage_Handler, -+ }, -+ { -+ MethodName: "RemoveImage", -+ Handler: _ImageService_RemoveImage_Handler, -+ }, -+ { -+ MethodName: "ImageFsInfo", -+ Handler: _ImageService_ImageFsInfo_Handler, -+ }, -+ }, -+ Streams: []grpc.StreamDesc{}, -+ Metadata: "api.proto", -+} -+ -+func (m *VersionRequest) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *VersionRequest) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *VersionRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.Version) > 0 { -+ i -= len(m.Version) -+ copy(dAtA[i:], m.Version) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Version))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *VersionResponse) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *VersionResponse) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *VersionResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.RuntimeApiVersion) > 0 { -+ i -= len(m.RuntimeApiVersion) -+ copy(dAtA[i:], m.RuntimeApiVersion) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.RuntimeApiVersion))) -+ i-- -+ dAtA[i] = 0x22 -+ } -+ if len(m.RuntimeVersion) > 0 { -+ i -= len(m.RuntimeVersion) -+ copy(dAtA[i:], m.RuntimeVersion) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.RuntimeVersion))) -+ i-- -+ dAtA[i] = 0x1a -+ } -+ if len(m.RuntimeName) > 0 { -+ i -= len(m.RuntimeName) -+ copy(dAtA[i:], m.RuntimeName) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.RuntimeName))) -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if len(m.Version) > 0 { -+ i -= len(m.Version) -+ copy(dAtA[i:], m.Version) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Version))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *DNSConfig) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *DNSConfig) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *DNSConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.Options) > 0 { -+ for iNdEx := len(m.Options) - 1; iNdEx >= 0; iNdEx-- { -+ i -= len(m.Options[iNdEx]) -+ copy(dAtA[i:], m.Options[iNdEx]) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Options[iNdEx]))) -+ i-- -+ dAtA[i] = 0x1a -+ } -+ } -+ if len(m.Searches) > 0 { -+ for iNdEx := len(m.Searches) - 1; iNdEx >= 0; iNdEx-- { -+ i -= len(m.Searches[iNdEx]) -+ copy(dAtA[i:], m.Searches[iNdEx]) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Searches[iNdEx]))) -+ i-- -+ dAtA[i] = 0x12 -+ } -+ } -+ if len(m.Servers) > 0 { -+ for iNdEx := len(m.Servers) - 1; iNdEx >= 0; iNdEx-- { -+ i -= len(m.Servers[iNdEx]) -+ copy(dAtA[i:], m.Servers[iNdEx]) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Servers[iNdEx]))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *PortMapping) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *PortMapping) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *PortMapping) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.HostIp) > 0 { -+ i -= len(m.HostIp) -+ copy(dAtA[i:], m.HostIp) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.HostIp))) -+ i-- -+ dAtA[i] = 0x22 -+ } -+ if m.HostPort != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.HostPort)) -+ i-- -+ dAtA[i] = 0x18 -+ } -+ if m.ContainerPort != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.ContainerPort)) -+ i-- -+ dAtA[i] = 0x10 -+ } -+ if m.Protocol != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.Protocol)) -+ i-- -+ dAtA[i] = 0x8 -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *Mount) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *Mount) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *Mount) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.Propagation != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.Propagation)) -+ i-- -+ dAtA[i] = 0x28 -+ } -+ if m.SelinuxRelabel { -+ i-- -+ if m.SelinuxRelabel { -+ dAtA[i] = 1 -+ } else { -+ dAtA[i] = 0 -+ } -+ i-- -+ dAtA[i] = 0x20 -+ } -+ if m.Readonly { -+ i-- -+ if m.Readonly { -+ dAtA[i] = 1 -+ } else { -+ dAtA[i] = 0 -+ } -+ i-- -+ dAtA[i] = 0x18 -+ } -+ if len(m.HostPath) > 0 { -+ i -= len(m.HostPath) -+ copy(dAtA[i:], m.HostPath) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.HostPath))) -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if len(m.ContainerPath) > 0 { -+ i -= len(m.ContainerPath) -+ copy(dAtA[i:], m.ContainerPath) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.ContainerPath))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *IDMapping) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *IDMapping) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *IDMapping) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.Length != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.Length)) -+ i-- -+ dAtA[i] = 0x18 -+ } -+ if m.ContainerId != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.ContainerId)) -+ i-- -+ dAtA[i] = 0x10 -+ } -+ if m.HostId != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.HostId)) -+ i-- -+ dAtA[i] = 0x8 -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *UserNamespace) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *UserNamespace) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *UserNamespace) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.Gids) > 0 { -+ for iNdEx := len(m.Gids) - 1; iNdEx >= 0; iNdEx-- { -+ { -+ size, err := m.Gids[iNdEx].MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x1a -+ } -+ } -+ if len(m.Uids) > 0 { -+ for iNdEx := len(m.Uids) - 1; iNdEx >= 0; iNdEx-- { -+ { -+ size, err := m.Uids[iNdEx].MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x12 -+ } -+ } -+ if m.Mode != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.Mode)) -+ i-- -+ dAtA[i] = 0x8 -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *NamespaceOption) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *NamespaceOption) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *NamespaceOption) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.UsernsOptions != nil { -+ { -+ size, err := m.UsernsOptions.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x2a -+ } -+ if len(m.TargetId) > 0 { -+ i -= len(m.TargetId) -+ copy(dAtA[i:], m.TargetId) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.TargetId))) -+ i-- -+ dAtA[i] = 0x22 -+ } -+ if m.Ipc != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.Ipc)) -+ i-- -+ dAtA[i] = 0x18 -+ } -+ if m.Pid != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.Pid)) -+ i-- -+ dAtA[i] = 0x10 -+ } -+ if m.Network != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.Network)) -+ i-- -+ dAtA[i] = 0x8 -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *Int64Value) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *Int64Value) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *Int64Value) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.Value != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.Value)) -+ i-- -+ dAtA[i] = 0x8 -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *LinuxSandboxSecurityContext) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *LinuxSandboxSecurityContext) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *LinuxSandboxSecurityContext) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.Apparmor != nil { -+ { -+ size, err := m.Apparmor.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x52 -+ } -+ if m.Seccomp != nil { -+ { -+ size, err := m.Seccomp.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x4a -+ } -+ if m.RunAsGroup != nil { -+ { -+ size, err := m.RunAsGroup.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x42 -+ } -+ if len(m.SeccompProfilePath) > 0 { -+ i -= len(m.SeccompProfilePath) -+ copy(dAtA[i:], m.SeccompProfilePath) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.SeccompProfilePath))) -+ i-- -+ dAtA[i] = 0x3a -+ } -+ if m.Privileged { -+ i-- -+ if m.Privileged { -+ dAtA[i] = 1 -+ } else { -+ dAtA[i] = 0 -+ } -+ i-- -+ dAtA[i] = 0x30 -+ } -+ if len(m.SupplementalGroups) > 0 { -+ dAtA6 := make([]byte, len(m.SupplementalGroups)*10) -+ var j5 int -+ for _, num1 := range m.SupplementalGroups { -+ num := uint64(num1) -+ for num >= 1<<7 { -+ dAtA6[j5] = uint8(uint64(num)&0x7f | 0x80) -+ num >>= 7 -+ j5++ -+ } -+ dAtA6[j5] = uint8(num) -+ j5++ -+ } -+ i -= j5 -+ copy(dAtA[i:], dAtA6[:j5]) -+ i = encodeVarintApi(dAtA, i, uint64(j5)) -+ i-- -+ dAtA[i] = 0x2a -+ } -+ if m.ReadonlyRootfs { -+ i-- -+ if m.ReadonlyRootfs { -+ dAtA[i] = 1 -+ } else { -+ dAtA[i] = 0 -+ } -+ i-- -+ dAtA[i] = 0x20 -+ } -+ if m.RunAsUser != nil { -+ { -+ size, err := m.RunAsUser.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x1a -+ } -+ if m.SelinuxOptions != nil { -+ { -+ size, err := m.SelinuxOptions.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if m.NamespaceOptions != nil { -+ { -+ size, err := m.NamespaceOptions.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *SecurityProfile) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *SecurityProfile) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *SecurityProfile) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.LocalhostRef) > 0 { -+ i -= len(m.LocalhostRef) -+ copy(dAtA[i:], m.LocalhostRef) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.LocalhostRef))) -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if m.ProfileType != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.ProfileType)) -+ i-- -+ dAtA[i] = 0x8 -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *LinuxPodSandboxConfig) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *LinuxPodSandboxConfig) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *LinuxPodSandboxConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.Resources != nil { -+ { -+ size, err := m.Resources.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x2a -+ } -+ if m.Overhead != nil { -+ { -+ size, err := m.Overhead.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x22 -+ } -+ if len(m.Sysctls) > 0 { -+ for k := range m.Sysctls { -+ v := m.Sysctls[k] -+ baseI := i -+ i -= len(v) -+ copy(dAtA[i:], v) -+ i = encodeVarintApi(dAtA, i, uint64(len(v))) -+ i-- -+ dAtA[i] = 0x12 -+ i -= len(k) -+ copy(dAtA[i:], k) -+ i = encodeVarintApi(dAtA, i, uint64(len(k))) -+ i-- -+ dAtA[i] = 0xa -+ i = encodeVarintApi(dAtA, i, uint64(baseI-i)) -+ i-- -+ dAtA[i] = 0x1a -+ } -+ } -+ if m.SecurityContext != nil { -+ { -+ size, err := m.SecurityContext.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if len(m.CgroupParent) > 0 { -+ i -= len(m.CgroupParent) -+ copy(dAtA[i:], m.CgroupParent) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.CgroupParent))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *PodSandboxMetadata) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *PodSandboxMetadata) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *PodSandboxMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.Attempt != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.Attempt)) -+ i-- -+ dAtA[i] = 0x20 -+ } -+ if len(m.Namespace) > 0 { -+ i -= len(m.Namespace) -+ copy(dAtA[i:], m.Namespace) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Namespace))) -+ i-- -+ dAtA[i] = 0x1a -+ } -+ if len(m.Uid) > 0 { -+ i -= len(m.Uid) -+ copy(dAtA[i:], m.Uid) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Uid))) -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if len(m.Name) > 0 { -+ i -= len(m.Name) -+ copy(dAtA[i:], m.Name) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Name))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *PodSandboxConfig) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *PodSandboxConfig) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *PodSandboxConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.Windows != nil { -+ { -+ size, err := m.Windows.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x4a -+ } -+ if m.Linux != nil { -+ { -+ size, err := m.Linux.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x42 -+ } -+ if len(m.Annotations) > 0 { -+ for k := range m.Annotations { -+ v := m.Annotations[k] -+ baseI := i -+ i -= len(v) -+ copy(dAtA[i:], v) -+ i = encodeVarintApi(dAtA, i, uint64(len(v))) -+ i-- -+ dAtA[i] = 0x12 -+ i -= len(k) -+ copy(dAtA[i:], k) -+ i = encodeVarintApi(dAtA, i, uint64(len(k))) -+ i-- -+ dAtA[i] = 0xa -+ i = encodeVarintApi(dAtA, i, uint64(baseI-i)) -+ i-- -+ dAtA[i] = 0x3a -+ } -+ } -+ if len(m.Labels) > 0 { -+ for k := range m.Labels { -+ v := m.Labels[k] -+ baseI := i -+ i -= len(v) -+ copy(dAtA[i:], v) -+ i = encodeVarintApi(dAtA, i, uint64(len(v))) -+ i-- -+ dAtA[i] = 0x12 -+ i -= len(k) -+ copy(dAtA[i:], k) -+ i = encodeVarintApi(dAtA, i, uint64(len(k))) -+ i-- -+ dAtA[i] = 0xa -+ i = encodeVarintApi(dAtA, i, uint64(baseI-i)) -+ i-- -+ dAtA[i] = 0x32 -+ } -+ } -+ if len(m.PortMappings) > 0 { -+ for iNdEx := len(m.PortMappings) - 1; iNdEx >= 0; iNdEx-- { -+ { -+ size, err := m.PortMappings[iNdEx].MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x2a -+ } -+ } -+ if m.DnsConfig != nil { -+ { -+ size, err := m.DnsConfig.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x22 -+ } -+ if len(m.LogDirectory) > 0 { -+ i -= len(m.LogDirectory) -+ copy(dAtA[i:], m.LogDirectory) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.LogDirectory))) -+ i-- -+ dAtA[i] = 0x1a -+ } -+ if len(m.Hostname) > 0 { -+ i -= len(m.Hostname) -+ copy(dAtA[i:], m.Hostname) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Hostname))) -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if m.Metadata != nil { -+ { -+ size, err := m.Metadata.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *RunPodSandboxRequest) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *RunPodSandboxRequest) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *RunPodSandboxRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.RuntimeHandler) > 0 { -+ i -= len(m.RuntimeHandler) -+ copy(dAtA[i:], m.RuntimeHandler) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.RuntimeHandler))) -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if m.Config != nil { -+ { -+ size, err := m.Config.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *RunPodSandboxResponse) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *RunPodSandboxResponse) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *RunPodSandboxResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.PodSandboxId) > 0 { -+ i -= len(m.PodSandboxId) -+ copy(dAtA[i:], m.PodSandboxId) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.PodSandboxId))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *StopPodSandboxRequest) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *StopPodSandboxRequest) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *StopPodSandboxRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.PodSandboxId) > 0 { -+ i -= len(m.PodSandboxId) -+ copy(dAtA[i:], m.PodSandboxId) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.PodSandboxId))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *StopPodSandboxResponse) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *StopPodSandboxResponse) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *StopPodSandboxResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ return len(dAtA) - i, nil -+} -+ -+func (m *RemovePodSandboxRequest) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *RemovePodSandboxRequest) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *RemovePodSandboxRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.PodSandboxId) > 0 { -+ i -= len(m.PodSandboxId) -+ copy(dAtA[i:], m.PodSandboxId) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.PodSandboxId))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *RemovePodSandboxResponse) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *RemovePodSandboxResponse) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *RemovePodSandboxResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ return len(dAtA) - i, nil -+} -+ -+func (m *PodSandboxStatusRequest) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *PodSandboxStatusRequest) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *PodSandboxStatusRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.Verbose { -+ i-- -+ if m.Verbose { -+ dAtA[i] = 1 -+ } else { -+ dAtA[i] = 0 -+ } -+ i-- -+ dAtA[i] = 0x10 -+ } -+ if len(m.PodSandboxId) > 0 { -+ i -= len(m.PodSandboxId) -+ copy(dAtA[i:], m.PodSandboxId) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.PodSandboxId))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *PodIP) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *PodIP) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *PodIP) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.Ip) > 0 { -+ i -= len(m.Ip) -+ copy(dAtA[i:], m.Ip) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Ip))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *PodSandboxNetworkStatus) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *PodSandboxNetworkStatus) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *PodSandboxNetworkStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.AdditionalIps) > 0 { -+ for iNdEx := len(m.AdditionalIps) - 1; iNdEx >= 0; iNdEx-- { -+ { -+ size, err := m.AdditionalIps[iNdEx].MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x12 -+ } -+ } -+ if len(m.Ip) > 0 { -+ i -= len(m.Ip) -+ copy(dAtA[i:], m.Ip) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Ip))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *Namespace) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *Namespace) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *Namespace) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.Options != nil { -+ { -+ size, err := m.Options.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x12 -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *LinuxPodSandboxStatus) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *LinuxPodSandboxStatus) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *LinuxPodSandboxStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.Namespaces != nil { -+ { -+ size, err := m.Namespaces.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *PodSandboxStatus) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *PodSandboxStatus) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *PodSandboxStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.RuntimeHandler) > 0 { -+ i -= len(m.RuntimeHandler) -+ copy(dAtA[i:], m.RuntimeHandler) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.RuntimeHandler))) -+ i-- -+ dAtA[i] = 0x4a -+ } -+ if len(m.Annotations) > 0 { -+ for k := range m.Annotations { -+ v := m.Annotations[k] -+ baseI := i -+ i -= len(v) -+ copy(dAtA[i:], v) -+ i = encodeVarintApi(dAtA, i, uint64(len(v))) -+ i-- -+ dAtA[i] = 0x12 -+ i -= len(k) -+ copy(dAtA[i:], k) -+ i = encodeVarintApi(dAtA, i, uint64(len(k))) -+ i-- -+ dAtA[i] = 0xa -+ i = encodeVarintApi(dAtA, i, uint64(baseI-i)) -+ i-- -+ dAtA[i] = 0x42 -+ } -+ } -+ if len(m.Labels) > 0 { -+ for k := range m.Labels { -+ v := m.Labels[k] -+ baseI := i -+ i -= len(v) -+ copy(dAtA[i:], v) -+ i = encodeVarintApi(dAtA, i, uint64(len(v))) -+ i-- -+ dAtA[i] = 0x12 -+ i -= len(k) -+ copy(dAtA[i:], k) -+ i = encodeVarintApi(dAtA, i, uint64(len(k))) -+ i-- -+ dAtA[i] = 0xa -+ i = encodeVarintApi(dAtA, i, uint64(baseI-i)) -+ i-- -+ dAtA[i] = 0x3a -+ } -+ } -+ if m.Linux != nil { -+ { -+ size, err := m.Linux.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x32 -+ } -+ if m.Network != nil { -+ { -+ size, err := m.Network.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x2a -+ } -+ if m.CreatedAt != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.CreatedAt)) -+ i-- -+ dAtA[i] = 0x20 -+ } -+ if m.State != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.State)) -+ i-- -+ dAtA[i] = 0x18 -+ } -+ if m.Metadata != nil { -+ { -+ size, err := m.Metadata.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if len(m.Id) > 0 { -+ i -= len(m.Id) -+ copy(dAtA[i:], m.Id) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Id))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *PodSandboxStatusResponse) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *PodSandboxStatusResponse) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *PodSandboxStatusResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.Info) > 0 { -+ for k := range m.Info { -+ v := m.Info[k] -+ baseI := i -+ i -= len(v) -+ copy(dAtA[i:], v) -+ i = encodeVarintApi(dAtA, i, uint64(len(v))) -+ i-- -+ dAtA[i] = 0x12 -+ i -= len(k) -+ copy(dAtA[i:], k) -+ i = encodeVarintApi(dAtA, i, uint64(len(k))) -+ i-- -+ dAtA[i] = 0xa -+ i = encodeVarintApi(dAtA, i, uint64(baseI-i)) -+ i-- -+ dAtA[i] = 0x12 -+ } -+ } -+ if m.Status != nil { -+ { -+ size, err := m.Status.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *PodSandboxStateValue) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *PodSandboxStateValue) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *PodSandboxStateValue) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.State != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.State)) -+ i-- -+ dAtA[i] = 0x8 -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *PodSandboxFilter) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *PodSandboxFilter) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *PodSandboxFilter) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.LabelSelector) > 0 { -+ for k := range m.LabelSelector { -+ v := m.LabelSelector[k] -+ baseI := i -+ i -= len(v) -+ copy(dAtA[i:], v) -+ i = encodeVarintApi(dAtA, i, uint64(len(v))) -+ i-- -+ dAtA[i] = 0x12 -+ i -= len(k) -+ copy(dAtA[i:], k) -+ i = encodeVarintApi(dAtA, i, uint64(len(k))) -+ i-- -+ dAtA[i] = 0xa -+ i = encodeVarintApi(dAtA, i, uint64(baseI-i)) -+ i-- -+ dAtA[i] = 0x1a -+ } -+ } -+ if m.State != nil { -+ { -+ size, err := m.State.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if len(m.Id) > 0 { -+ i -= len(m.Id) -+ copy(dAtA[i:], m.Id) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Id))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *ListPodSandboxRequest) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *ListPodSandboxRequest) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *ListPodSandboxRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.Filter != nil { -+ { -+ size, err := m.Filter.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *PodSandbox) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *PodSandbox) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *PodSandbox) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.RuntimeHandler) > 0 { -+ i -= len(m.RuntimeHandler) -+ copy(dAtA[i:], m.RuntimeHandler) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.RuntimeHandler))) -+ i-- -+ dAtA[i] = 0x3a -+ } -+ if len(m.Annotations) > 0 { -+ for k := range m.Annotations { -+ v := m.Annotations[k] -+ baseI := i -+ i -= len(v) -+ copy(dAtA[i:], v) -+ i = encodeVarintApi(dAtA, i, uint64(len(v))) -+ i-- -+ dAtA[i] = 0x12 -+ i -= len(k) -+ copy(dAtA[i:], k) -+ i = encodeVarintApi(dAtA, i, uint64(len(k))) -+ i-- -+ dAtA[i] = 0xa -+ i = encodeVarintApi(dAtA, i, uint64(baseI-i)) -+ i-- -+ dAtA[i] = 0x32 -+ } -+ } -+ if len(m.Labels) > 0 { -+ for k := range m.Labels { -+ v := m.Labels[k] -+ baseI := i -+ i -= len(v) -+ copy(dAtA[i:], v) -+ i = encodeVarintApi(dAtA, i, uint64(len(v))) -+ i-- -+ dAtA[i] = 0x12 -+ i -= len(k) -+ copy(dAtA[i:], k) -+ i = encodeVarintApi(dAtA, i, uint64(len(k))) -+ i-- -+ dAtA[i] = 0xa -+ i = encodeVarintApi(dAtA, i, uint64(baseI-i)) -+ i-- -+ dAtA[i] = 0x2a -+ } -+ } -+ if m.CreatedAt != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.CreatedAt)) -+ i-- -+ dAtA[i] = 0x20 -+ } -+ if m.State != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.State)) -+ i-- -+ dAtA[i] = 0x18 -+ } -+ if m.Metadata != nil { -+ { -+ size, err := m.Metadata.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if len(m.Id) > 0 { -+ i -= len(m.Id) -+ copy(dAtA[i:], m.Id) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Id))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *ListPodSandboxResponse) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *ListPodSandboxResponse) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *ListPodSandboxResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.Items) > 0 { -+ for iNdEx := len(m.Items) - 1; iNdEx >= 0; iNdEx-- { -+ { -+ size, err := m.Items[iNdEx].MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0xa -+ } -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *PodSandboxStatsRequest) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *PodSandboxStatsRequest) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *PodSandboxStatsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.PodSandboxId) > 0 { -+ i -= len(m.PodSandboxId) -+ copy(dAtA[i:], m.PodSandboxId) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.PodSandboxId))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *PodSandboxStatsResponse) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *PodSandboxStatsResponse) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *PodSandboxStatsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.Stats != nil { -+ { -+ size, err := m.Stats.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *PodSandboxStatsFilter) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *PodSandboxStatsFilter) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *PodSandboxStatsFilter) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.LabelSelector) > 0 { -+ for k := range m.LabelSelector { -+ v := m.LabelSelector[k] -+ baseI := i -+ i -= len(v) -+ copy(dAtA[i:], v) -+ i = encodeVarintApi(dAtA, i, uint64(len(v))) -+ i-- -+ dAtA[i] = 0x12 -+ i -= len(k) -+ copy(dAtA[i:], k) -+ i = encodeVarintApi(dAtA, i, uint64(len(k))) -+ i-- -+ dAtA[i] = 0xa -+ i = encodeVarintApi(dAtA, i, uint64(baseI-i)) -+ i-- -+ dAtA[i] = 0x12 -+ } -+ } -+ if len(m.Id) > 0 { -+ i -= len(m.Id) -+ copy(dAtA[i:], m.Id) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Id))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *ListPodSandboxStatsRequest) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *ListPodSandboxStatsRequest) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *ListPodSandboxStatsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.Filter != nil { -+ { -+ size, err := m.Filter.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *ListPodSandboxStatsResponse) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *ListPodSandboxStatsResponse) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *ListPodSandboxStatsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.Stats) > 0 { -+ for iNdEx := len(m.Stats) - 1; iNdEx >= 0; iNdEx-- { -+ { -+ size, err := m.Stats[iNdEx].MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0xa -+ } -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *PodSandboxAttributes) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *PodSandboxAttributes) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *PodSandboxAttributes) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.Annotations) > 0 { -+ for k := range m.Annotations { -+ v := m.Annotations[k] -+ baseI := i -+ i -= len(v) -+ copy(dAtA[i:], v) -+ i = encodeVarintApi(dAtA, i, uint64(len(v))) -+ i-- -+ dAtA[i] = 0x12 -+ i -= len(k) -+ copy(dAtA[i:], k) -+ i = encodeVarintApi(dAtA, i, uint64(len(k))) -+ i-- -+ dAtA[i] = 0xa -+ i = encodeVarintApi(dAtA, i, uint64(baseI-i)) -+ i-- -+ dAtA[i] = 0x22 -+ } -+ } -+ if len(m.Labels) > 0 { -+ for k := range m.Labels { -+ v := m.Labels[k] -+ baseI := i -+ i -= len(v) -+ copy(dAtA[i:], v) -+ i = encodeVarintApi(dAtA, i, uint64(len(v))) -+ i-- -+ dAtA[i] = 0x12 -+ i -= len(k) -+ copy(dAtA[i:], k) -+ i = encodeVarintApi(dAtA, i, uint64(len(k))) -+ i-- -+ dAtA[i] = 0xa -+ i = encodeVarintApi(dAtA, i, uint64(baseI-i)) -+ i-- -+ dAtA[i] = 0x1a -+ } -+ } -+ if m.Metadata != nil { -+ { -+ size, err := m.Metadata.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if len(m.Id) > 0 { -+ i -= len(m.Id) -+ copy(dAtA[i:], m.Id) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Id))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *PodSandboxStats) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *PodSandboxStats) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *PodSandboxStats) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.Windows != nil { -+ { -+ size, err := m.Windows.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x1a -+ } -+ if m.Linux != nil { -+ { -+ size, err := m.Linux.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if m.Attributes != nil { -+ { -+ size, err := m.Attributes.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *LinuxPodSandboxStats) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *LinuxPodSandboxStats) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *LinuxPodSandboxStats) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.Containers) > 0 { -+ for iNdEx := len(m.Containers) - 1; iNdEx >= 0; iNdEx-- { -+ { -+ size, err := m.Containers[iNdEx].MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x2a -+ } -+ } -+ if m.Process != nil { -+ { -+ size, err := m.Process.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x22 -+ } -+ if m.Network != nil { -+ { -+ size, err := m.Network.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x1a -+ } -+ if m.Memory != nil { -+ { -+ size, err := m.Memory.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if m.Cpu != nil { -+ { -+ size, err := m.Cpu.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *WindowsPodSandboxStats) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *WindowsPodSandboxStats) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *WindowsPodSandboxStats) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ return len(dAtA) - i, nil -+} -+ -+func (m *NetworkUsage) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *NetworkUsage) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *NetworkUsage) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.Interfaces) > 0 { -+ for iNdEx := len(m.Interfaces) - 1; iNdEx >= 0; iNdEx-- { -+ { -+ size, err := m.Interfaces[iNdEx].MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x1a -+ } -+ } -+ if m.DefaultInterface != nil { -+ { -+ size, err := m.DefaultInterface.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if m.Timestamp != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.Timestamp)) -+ i-- -+ dAtA[i] = 0x8 -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *NetworkInterfaceUsage) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *NetworkInterfaceUsage) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *NetworkInterfaceUsage) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.TxErrors != nil { -+ { -+ size, err := m.TxErrors.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x2a -+ } -+ if m.TxBytes != nil { -+ { -+ size, err := m.TxBytes.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x22 -+ } -+ if m.RxErrors != nil { -+ { -+ size, err := m.RxErrors.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x1a -+ } -+ if m.RxBytes != nil { -+ { -+ size, err := m.RxBytes.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if len(m.Name) > 0 { -+ i -= len(m.Name) -+ copy(dAtA[i:], m.Name) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Name))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *ProcessUsage) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *ProcessUsage) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *ProcessUsage) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.ProcessCount != nil { -+ { -+ size, err := m.ProcessCount.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if m.Timestamp != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.Timestamp)) -+ i-- -+ dAtA[i] = 0x8 -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *ImageSpec) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *ImageSpec) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *ImageSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.Annotations) > 0 { -+ for k := range m.Annotations { -+ v := m.Annotations[k] -+ baseI := i -+ i -= len(v) -+ copy(dAtA[i:], v) -+ i = encodeVarintApi(dAtA, i, uint64(len(v))) -+ i-- -+ dAtA[i] = 0x12 -+ i -= len(k) -+ copy(dAtA[i:], k) -+ i = encodeVarintApi(dAtA, i, uint64(len(k))) -+ i-- -+ dAtA[i] = 0xa -+ i = encodeVarintApi(dAtA, i, uint64(baseI-i)) -+ i-- -+ dAtA[i] = 0x12 -+ } -+ } -+ if len(m.Image) > 0 { -+ i -= len(m.Image) -+ copy(dAtA[i:], m.Image) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Image))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *KeyValue) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *KeyValue) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *KeyValue) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.Value) > 0 { -+ i -= len(m.Value) -+ copy(dAtA[i:], m.Value) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Value))) -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if len(m.Key) > 0 { -+ i -= len(m.Key) -+ copy(dAtA[i:], m.Key) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Key))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *LinuxContainerResources) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *LinuxContainerResources) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *LinuxContainerResources) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.MemorySwapLimitInBytes != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.MemorySwapLimitInBytes)) -+ i-- -+ dAtA[i] = 0x50 -+ } -+ if len(m.Unified) > 0 { -+ for k := range m.Unified { -+ v := m.Unified[k] -+ baseI := i -+ i -= len(v) -+ copy(dAtA[i:], v) -+ i = encodeVarintApi(dAtA, i, uint64(len(v))) -+ i-- -+ dAtA[i] = 0x12 -+ i -= len(k) -+ copy(dAtA[i:], k) -+ i = encodeVarintApi(dAtA, i, uint64(len(k))) -+ i-- -+ dAtA[i] = 0xa -+ i = encodeVarintApi(dAtA, i, uint64(baseI-i)) -+ i-- -+ dAtA[i] = 0x4a -+ } -+ } -+ if len(m.HugepageLimits) > 0 { -+ for iNdEx := len(m.HugepageLimits) - 1; iNdEx >= 0; iNdEx-- { -+ { -+ size, err := m.HugepageLimits[iNdEx].MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x42 -+ } -+ } -+ if len(m.CpusetMems) > 0 { -+ i -= len(m.CpusetMems) -+ copy(dAtA[i:], m.CpusetMems) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.CpusetMems))) -+ i-- -+ dAtA[i] = 0x3a -+ } -+ if len(m.CpusetCpus) > 0 { -+ i -= len(m.CpusetCpus) -+ copy(dAtA[i:], m.CpusetCpus) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.CpusetCpus))) -+ i-- -+ dAtA[i] = 0x32 -+ } -+ if m.OomScoreAdj != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.OomScoreAdj)) -+ i-- -+ dAtA[i] = 0x28 -+ } -+ if m.MemoryLimitInBytes != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.MemoryLimitInBytes)) -+ i-- -+ dAtA[i] = 0x20 -+ } -+ if m.CpuShares != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.CpuShares)) -+ i-- -+ dAtA[i] = 0x18 -+ } -+ if m.CpuQuota != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.CpuQuota)) -+ i-- -+ dAtA[i] = 0x10 -+ } -+ if m.CpuPeriod != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.CpuPeriod)) -+ i-- -+ dAtA[i] = 0x8 -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *HugepageLimit) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *HugepageLimit) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *HugepageLimit) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.Limit != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.Limit)) -+ i-- -+ dAtA[i] = 0x10 -+ } -+ if len(m.PageSize) > 0 { -+ i -= len(m.PageSize) -+ copy(dAtA[i:], m.PageSize) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.PageSize))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *SELinuxOption) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *SELinuxOption) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *SELinuxOption) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.Level) > 0 { -+ i -= len(m.Level) -+ copy(dAtA[i:], m.Level) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Level))) -+ i-- -+ dAtA[i] = 0x22 -+ } -+ if len(m.Type) > 0 { -+ i -= len(m.Type) -+ copy(dAtA[i:], m.Type) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Type))) -+ i-- -+ dAtA[i] = 0x1a -+ } -+ if len(m.Role) > 0 { -+ i -= len(m.Role) -+ copy(dAtA[i:], m.Role) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Role))) -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if len(m.User) > 0 { -+ i -= len(m.User) -+ copy(dAtA[i:], m.User) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.User))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *Capability) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *Capability) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *Capability) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.AddAmbientCapabilities) > 0 { -+ for iNdEx := len(m.AddAmbientCapabilities) - 1; iNdEx >= 0; iNdEx-- { -+ i -= len(m.AddAmbientCapabilities[iNdEx]) -+ copy(dAtA[i:], m.AddAmbientCapabilities[iNdEx]) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.AddAmbientCapabilities[iNdEx]))) -+ i-- -+ dAtA[i] = 0x1a -+ } -+ } -+ if len(m.DropCapabilities) > 0 { -+ for iNdEx := len(m.DropCapabilities) - 1; iNdEx >= 0; iNdEx-- { -+ i -= len(m.DropCapabilities[iNdEx]) -+ copy(dAtA[i:], m.DropCapabilities[iNdEx]) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.DropCapabilities[iNdEx]))) -+ i-- -+ dAtA[i] = 0x12 -+ } -+ } -+ if len(m.AddCapabilities) > 0 { -+ for iNdEx := len(m.AddCapabilities) - 1; iNdEx >= 0; iNdEx-- { -+ i -= len(m.AddCapabilities[iNdEx]) -+ copy(dAtA[i:], m.AddCapabilities[iNdEx]) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.AddCapabilities[iNdEx]))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *LinuxContainerSecurityContext) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *LinuxContainerSecurityContext) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *LinuxContainerSecurityContext) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.Apparmor != nil { -+ { -+ size, err := m.Apparmor.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x1 -+ i-- -+ dAtA[i] = 0x82 -+ } -+ if m.Seccomp != nil { -+ { -+ size, err := m.Seccomp.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x7a -+ } -+ if len(m.ReadonlyPaths) > 0 { -+ for iNdEx := len(m.ReadonlyPaths) - 1; iNdEx >= 0; iNdEx-- { -+ i -= len(m.ReadonlyPaths[iNdEx]) -+ copy(dAtA[i:], m.ReadonlyPaths[iNdEx]) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.ReadonlyPaths[iNdEx]))) -+ i-- -+ dAtA[i] = 0x72 -+ } -+ } -+ if len(m.MaskedPaths) > 0 { -+ for iNdEx := len(m.MaskedPaths) - 1; iNdEx >= 0; iNdEx-- { -+ i -= len(m.MaskedPaths[iNdEx]) -+ copy(dAtA[i:], m.MaskedPaths[iNdEx]) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.MaskedPaths[iNdEx]))) -+ i-- -+ dAtA[i] = 0x6a -+ } -+ } -+ if m.RunAsGroup != nil { -+ { -+ size, err := m.RunAsGroup.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x62 -+ } -+ if m.NoNewPrivs { -+ i-- -+ if m.NoNewPrivs { -+ dAtA[i] = 1 -+ } else { -+ dAtA[i] = 0 -+ } -+ i-- -+ dAtA[i] = 0x58 -+ } -+ if len(m.SeccompProfilePath) > 0 { -+ i -= len(m.SeccompProfilePath) -+ copy(dAtA[i:], m.SeccompProfilePath) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.SeccompProfilePath))) -+ i-- -+ dAtA[i] = 0x52 -+ } -+ if len(m.ApparmorProfile) > 0 { -+ i -= len(m.ApparmorProfile) -+ copy(dAtA[i:], m.ApparmorProfile) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.ApparmorProfile))) -+ i-- -+ dAtA[i] = 0x4a -+ } -+ if len(m.SupplementalGroups) > 0 { -+ dAtA47 := make([]byte, len(m.SupplementalGroups)*10) -+ var j46 int -+ for _, num1 := range m.SupplementalGroups { -+ num := uint64(num1) -+ for num >= 1<<7 { -+ dAtA47[j46] = uint8(uint64(num)&0x7f | 0x80) -+ num >>= 7 -+ j46++ -+ } -+ dAtA47[j46] = uint8(num) -+ j46++ -+ } -+ i -= j46 -+ copy(dAtA[i:], dAtA47[:j46]) -+ i = encodeVarintApi(dAtA, i, uint64(j46)) -+ i-- -+ dAtA[i] = 0x42 -+ } -+ if m.ReadonlyRootfs { -+ i-- -+ if m.ReadonlyRootfs { -+ dAtA[i] = 1 -+ } else { -+ dAtA[i] = 0 -+ } -+ i-- -+ dAtA[i] = 0x38 -+ } -+ if len(m.RunAsUsername) > 0 { -+ i -= len(m.RunAsUsername) -+ copy(dAtA[i:], m.RunAsUsername) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.RunAsUsername))) -+ i-- -+ dAtA[i] = 0x32 -+ } -+ if m.RunAsUser != nil { -+ { -+ size, err := m.RunAsUser.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x2a -+ } -+ if m.SelinuxOptions != nil { -+ { -+ size, err := m.SelinuxOptions.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x22 -+ } -+ if m.NamespaceOptions != nil { -+ { -+ size, err := m.NamespaceOptions.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x1a -+ } -+ if m.Privileged { -+ i-- -+ if m.Privileged { -+ dAtA[i] = 1 -+ } else { -+ dAtA[i] = 0 -+ } -+ i-- -+ dAtA[i] = 0x10 -+ } -+ if m.Capabilities != nil { -+ { -+ size, err := m.Capabilities.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *LinuxContainerConfig) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *LinuxContainerConfig) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *LinuxContainerConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.SecurityContext != nil { -+ { -+ size, err := m.SecurityContext.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if m.Resources != nil { -+ { -+ size, err := m.Resources.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *WindowsSandboxSecurityContext) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *WindowsSandboxSecurityContext) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *WindowsSandboxSecurityContext) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.HostProcess { -+ i-- -+ if m.HostProcess { -+ dAtA[i] = 1 -+ } else { -+ dAtA[i] = 0 -+ } -+ i-- -+ dAtA[i] = 0x18 -+ } -+ if len(m.CredentialSpec) > 0 { -+ i -= len(m.CredentialSpec) -+ copy(dAtA[i:], m.CredentialSpec) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.CredentialSpec))) -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if len(m.RunAsUsername) > 0 { -+ i -= len(m.RunAsUsername) -+ copy(dAtA[i:], m.RunAsUsername) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.RunAsUsername))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *WindowsPodSandboxConfig) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *WindowsPodSandboxConfig) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *WindowsPodSandboxConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.SecurityContext != nil { -+ { -+ size, err := m.SecurityContext.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *WindowsContainerSecurityContext) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *WindowsContainerSecurityContext) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *WindowsContainerSecurityContext) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.HostProcess { -+ i-- -+ if m.HostProcess { -+ dAtA[i] = 1 -+ } else { -+ dAtA[i] = 0 -+ } -+ i-- -+ dAtA[i] = 0x18 -+ } -+ if len(m.CredentialSpec) > 0 { -+ i -= len(m.CredentialSpec) -+ copy(dAtA[i:], m.CredentialSpec) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.CredentialSpec))) -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if len(m.RunAsUsername) > 0 { -+ i -= len(m.RunAsUsername) -+ copy(dAtA[i:], m.RunAsUsername) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.RunAsUsername))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *WindowsContainerConfig) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *WindowsContainerConfig) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *WindowsContainerConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.SecurityContext != nil { -+ { -+ size, err := m.SecurityContext.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if m.Resources != nil { -+ { -+ size, err := m.Resources.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *WindowsContainerResources) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *WindowsContainerResources) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *WindowsContainerResources) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.RootfsSizeInBytes != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.RootfsSizeInBytes)) -+ i-- -+ dAtA[i] = 0x28 -+ } -+ if m.MemoryLimitInBytes != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.MemoryLimitInBytes)) -+ i-- -+ dAtA[i] = 0x20 -+ } -+ if m.CpuMaximum != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.CpuMaximum)) -+ i-- -+ dAtA[i] = 0x18 -+ } -+ if m.CpuCount != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.CpuCount)) -+ i-- -+ dAtA[i] = 0x10 -+ } -+ if m.CpuShares != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.CpuShares)) -+ i-- -+ dAtA[i] = 0x8 -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *ContainerMetadata) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *ContainerMetadata) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *ContainerMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.Attempt != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.Attempt)) -+ i-- -+ dAtA[i] = 0x10 -+ } -+ if len(m.Name) > 0 { -+ i -= len(m.Name) -+ copy(dAtA[i:], m.Name) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Name))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *Device) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *Device) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *Device) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.Permissions) > 0 { -+ i -= len(m.Permissions) -+ copy(dAtA[i:], m.Permissions) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Permissions))) -+ i-- -+ dAtA[i] = 0x1a -+ } -+ if len(m.HostPath) > 0 { -+ i -= len(m.HostPath) -+ copy(dAtA[i:], m.HostPath) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.HostPath))) -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if len(m.ContainerPath) > 0 { -+ i -= len(m.ContainerPath) -+ copy(dAtA[i:], m.ContainerPath) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.ContainerPath))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *ContainerConfig) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *ContainerConfig) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *ContainerConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.Windows != nil { -+ { -+ size, err := m.Windows.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x1 -+ i-- -+ dAtA[i] = 0x82 -+ } -+ if m.Linux != nil { -+ { -+ size, err := m.Linux.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x7a -+ } -+ if m.Tty { -+ i-- -+ if m.Tty { -+ dAtA[i] = 1 -+ } else { -+ dAtA[i] = 0 -+ } -+ i-- -+ dAtA[i] = 0x70 -+ } -+ if m.StdinOnce { -+ i-- -+ if m.StdinOnce { -+ dAtA[i] = 1 -+ } else { -+ dAtA[i] = 0 -+ } -+ i-- -+ dAtA[i] = 0x68 -+ } -+ if m.Stdin { -+ i-- -+ if m.Stdin { -+ dAtA[i] = 1 -+ } else { -+ dAtA[i] = 0 -+ } -+ i-- -+ dAtA[i] = 0x60 -+ } -+ if len(m.LogPath) > 0 { -+ i -= len(m.LogPath) -+ copy(dAtA[i:], m.LogPath) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.LogPath))) -+ i-- -+ dAtA[i] = 0x5a -+ } -+ if len(m.Annotations) > 0 { -+ for k := range m.Annotations { -+ v := m.Annotations[k] -+ baseI := i -+ i -= len(v) -+ copy(dAtA[i:], v) -+ i = encodeVarintApi(dAtA, i, uint64(len(v))) -+ i-- -+ dAtA[i] = 0x12 -+ i -= len(k) -+ copy(dAtA[i:], k) -+ i = encodeVarintApi(dAtA, i, uint64(len(k))) -+ i-- -+ dAtA[i] = 0xa -+ i = encodeVarintApi(dAtA, i, uint64(baseI-i)) -+ i-- -+ dAtA[i] = 0x52 -+ } -+ } -+ if len(m.Labels) > 0 { -+ for k := range m.Labels { -+ v := m.Labels[k] -+ baseI := i -+ i -= len(v) -+ copy(dAtA[i:], v) -+ i = encodeVarintApi(dAtA, i, uint64(len(v))) -+ i-- -+ dAtA[i] = 0x12 -+ i -= len(k) -+ copy(dAtA[i:], k) -+ i = encodeVarintApi(dAtA, i, uint64(len(k))) -+ i-- -+ dAtA[i] = 0xa -+ i = encodeVarintApi(dAtA, i, uint64(baseI-i)) -+ i-- -+ dAtA[i] = 0x4a -+ } -+ } -+ if len(m.Devices) > 0 { -+ for iNdEx := len(m.Devices) - 1; iNdEx >= 0; iNdEx-- { -+ { -+ size, err := m.Devices[iNdEx].MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x42 -+ } -+ } -+ if len(m.Mounts) > 0 { -+ for iNdEx := len(m.Mounts) - 1; iNdEx >= 0; iNdEx-- { -+ { -+ size, err := m.Mounts[iNdEx].MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x3a -+ } -+ } -+ if len(m.Envs) > 0 { -+ for iNdEx := len(m.Envs) - 1; iNdEx >= 0; iNdEx-- { -+ { -+ size, err := m.Envs[iNdEx].MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x32 -+ } -+ } -+ if len(m.WorkingDir) > 0 { -+ i -= len(m.WorkingDir) -+ copy(dAtA[i:], m.WorkingDir) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.WorkingDir))) -+ i-- -+ dAtA[i] = 0x2a -+ } -+ if len(m.Args) > 0 { -+ for iNdEx := len(m.Args) - 1; iNdEx >= 0; iNdEx-- { -+ i -= len(m.Args[iNdEx]) -+ copy(dAtA[i:], m.Args[iNdEx]) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Args[iNdEx]))) -+ i-- -+ dAtA[i] = 0x22 -+ } -+ } -+ if len(m.Command) > 0 { -+ for iNdEx := len(m.Command) - 1; iNdEx >= 0; iNdEx-- { -+ i -= len(m.Command[iNdEx]) -+ copy(dAtA[i:], m.Command[iNdEx]) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Command[iNdEx]))) -+ i-- -+ dAtA[i] = 0x1a -+ } -+ } -+ if m.Image != nil { -+ { -+ size, err := m.Image.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if m.Metadata != nil { -+ { -+ size, err := m.Metadata.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *CreateContainerRequest) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *CreateContainerRequest) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *CreateContainerRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.SandboxConfig != nil { -+ { -+ size, err := m.SandboxConfig.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x1a -+ } -+ if m.Config != nil { -+ { -+ size, err := m.Config.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if len(m.PodSandboxId) > 0 { -+ i -= len(m.PodSandboxId) -+ copy(dAtA[i:], m.PodSandboxId) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.PodSandboxId))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *CreateContainerResponse) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *CreateContainerResponse) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *CreateContainerResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.ContainerId) > 0 { -+ i -= len(m.ContainerId) -+ copy(dAtA[i:], m.ContainerId) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.ContainerId))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *StartContainerRequest) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *StartContainerRequest) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *StartContainerRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.ContainerId) > 0 { -+ i -= len(m.ContainerId) -+ copy(dAtA[i:], m.ContainerId) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.ContainerId))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *StartContainerResponse) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *StartContainerResponse) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *StartContainerResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ return len(dAtA) - i, nil -+} -+ -+func (m *StopContainerRequest) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *StopContainerRequest) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *StopContainerRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.Timeout != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.Timeout)) -+ i-- -+ dAtA[i] = 0x10 -+ } -+ if len(m.ContainerId) > 0 { -+ i -= len(m.ContainerId) -+ copy(dAtA[i:], m.ContainerId) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.ContainerId))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *StopContainerResponse) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *StopContainerResponse) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *StopContainerResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ return len(dAtA) - i, nil -+} -+ -+func (m *RemoveContainerRequest) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *RemoveContainerRequest) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *RemoveContainerRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.ContainerId) > 0 { -+ i -= len(m.ContainerId) -+ copy(dAtA[i:], m.ContainerId) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.ContainerId))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *RemoveContainerResponse) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *RemoveContainerResponse) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *RemoveContainerResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ return len(dAtA) - i, nil -+} -+ -+func (m *ContainerStateValue) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *ContainerStateValue) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *ContainerStateValue) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.State != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.State)) -+ i-- -+ dAtA[i] = 0x8 -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *ContainerFilter) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *ContainerFilter) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *ContainerFilter) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.LabelSelector) > 0 { -+ for k := range m.LabelSelector { -+ v := m.LabelSelector[k] -+ baseI := i -+ i -= len(v) -+ copy(dAtA[i:], v) -+ i = encodeVarintApi(dAtA, i, uint64(len(v))) -+ i-- -+ dAtA[i] = 0x12 -+ i -= len(k) -+ copy(dAtA[i:], k) -+ i = encodeVarintApi(dAtA, i, uint64(len(k))) -+ i-- -+ dAtA[i] = 0xa -+ i = encodeVarintApi(dAtA, i, uint64(baseI-i)) -+ i-- -+ dAtA[i] = 0x22 -+ } -+ } -+ if len(m.PodSandboxId) > 0 { -+ i -= len(m.PodSandboxId) -+ copy(dAtA[i:], m.PodSandboxId) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.PodSandboxId))) -+ i-- -+ dAtA[i] = 0x1a -+ } -+ if m.State != nil { -+ { -+ size, err := m.State.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if len(m.Id) > 0 { -+ i -= len(m.Id) -+ copy(dAtA[i:], m.Id) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Id))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *ListContainersRequest) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *ListContainersRequest) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *ListContainersRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.Filter != nil { -+ { -+ size, err := m.Filter.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *Container) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *Container) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *Container) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.Annotations) > 0 { -+ for k := range m.Annotations { -+ v := m.Annotations[k] -+ baseI := i -+ i -= len(v) -+ copy(dAtA[i:], v) -+ i = encodeVarintApi(dAtA, i, uint64(len(v))) -+ i-- -+ dAtA[i] = 0x12 -+ i -= len(k) -+ copy(dAtA[i:], k) -+ i = encodeVarintApi(dAtA, i, uint64(len(k))) -+ i-- -+ dAtA[i] = 0xa -+ i = encodeVarintApi(dAtA, i, uint64(baseI-i)) -+ i-- -+ dAtA[i] = 0x4a -+ } -+ } -+ if len(m.Labels) > 0 { -+ for k := range m.Labels { -+ v := m.Labels[k] -+ baseI := i -+ i -= len(v) -+ copy(dAtA[i:], v) -+ i = encodeVarintApi(dAtA, i, uint64(len(v))) -+ i-- -+ dAtA[i] = 0x12 -+ i -= len(k) -+ copy(dAtA[i:], k) -+ i = encodeVarintApi(dAtA, i, uint64(len(k))) -+ i-- -+ dAtA[i] = 0xa -+ i = encodeVarintApi(dAtA, i, uint64(baseI-i)) -+ i-- -+ dAtA[i] = 0x42 -+ } -+ } -+ if m.CreatedAt != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.CreatedAt)) -+ i-- -+ dAtA[i] = 0x38 -+ } -+ if m.State != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.State)) -+ i-- -+ dAtA[i] = 0x30 -+ } -+ if len(m.ImageRef) > 0 { -+ i -= len(m.ImageRef) -+ copy(dAtA[i:], m.ImageRef) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.ImageRef))) -+ i-- -+ dAtA[i] = 0x2a -+ } -+ if m.Image != nil { -+ { -+ size, err := m.Image.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x22 -+ } -+ if m.Metadata != nil { -+ { -+ size, err := m.Metadata.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x1a -+ } -+ if len(m.PodSandboxId) > 0 { -+ i -= len(m.PodSandboxId) -+ copy(dAtA[i:], m.PodSandboxId) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.PodSandboxId))) -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if len(m.Id) > 0 { -+ i -= len(m.Id) -+ copy(dAtA[i:], m.Id) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Id))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *ListContainersResponse) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *ListContainersResponse) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *ListContainersResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.Containers) > 0 { -+ for iNdEx := len(m.Containers) - 1; iNdEx >= 0; iNdEx-- { -+ { -+ size, err := m.Containers[iNdEx].MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0xa -+ } -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *ContainerStatusRequest) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *ContainerStatusRequest) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *ContainerStatusRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.Verbose { -+ i-- -+ if m.Verbose { -+ dAtA[i] = 1 -+ } else { -+ dAtA[i] = 0 -+ } -+ i-- -+ dAtA[i] = 0x10 -+ } -+ if len(m.ContainerId) > 0 { -+ i -= len(m.ContainerId) -+ copy(dAtA[i:], m.ContainerId) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.ContainerId))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *ContainerStatus) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *ContainerStatus) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *ContainerStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.Resources != nil { -+ { -+ size, err := m.Resources.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x1 -+ i-- -+ dAtA[i] = 0x82 -+ } -+ if len(m.LogPath) > 0 { -+ i -= len(m.LogPath) -+ copy(dAtA[i:], m.LogPath) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.LogPath))) -+ i-- -+ dAtA[i] = 0x7a -+ } -+ if len(m.Mounts) > 0 { -+ for iNdEx := len(m.Mounts) - 1; iNdEx >= 0; iNdEx-- { -+ { -+ size, err := m.Mounts[iNdEx].MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x72 -+ } -+ } -+ if len(m.Annotations) > 0 { -+ for k := range m.Annotations { -+ v := m.Annotations[k] -+ baseI := i -+ i -= len(v) -+ copy(dAtA[i:], v) -+ i = encodeVarintApi(dAtA, i, uint64(len(v))) -+ i-- -+ dAtA[i] = 0x12 -+ i -= len(k) -+ copy(dAtA[i:], k) -+ i = encodeVarintApi(dAtA, i, uint64(len(k))) -+ i-- -+ dAtA[i] = 0xa -+ i = encodeVarintApi(dAtA, i, uint64(baseI-i)) -+ i-- -+ dAtA[i] = 0x6a -+ } -+ } -+ if len(m.Labels) > 0 { -+ for k := range m.Labels { -+ v := m.Labels[k] -+ baseI := i -+ i -= len(v) -+ copy(dAtA[i:], v) -+ i = encodeVarintApi(dAtA, i, uint64(len(v))) -+ i-- -+ dAtA[i] = 0x12 -+ i -= len(k) -+ copy(dAtA[i:], k) -+ i = encodeVarintApi(dAtA, i, uint64(len(k))) -+ i-- -+ dAtA[i] = 0xa -+ i = encodeVarintApi(dAtA, i, uint64(baseI-i)) -+ i-- -+ dAtA[i] = 0x62 -+ } -+ } -+ if len(m.Message) > 0 { -+ i -= len(m.Message) -+ copy(dAtA[i:], m.Message) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Message))) -+ i-- -+ dAtA[i] = 0x5a -+ } -+ if len(m.Reason) > 0 { -+ i -= len(m.Reason) -+ copy(dAtA[i:], m.Reason) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Reason))) -+ i-- -+ dAtA[i] = 0x52 -+ } -+ if len(m.ImageRef) > 0 { -+ i -= len(m.ImageRef) -+ copy(dAtA[i:], m.ImageRef) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.ImageRef))) -+ i-- -+ dAtA[i] = 0x4a -+ } -+ if m.Image != nil { -+ { -+ size, err := m.Image.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x42 -+ } -+ if m.ExitCode != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.ExitCode)) -+ i-- -+ dAtA[i] = 0x38 -+ } -+ if m.FinishedAt != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.FinishedAt)) -+ i-- -+ dAtA[i] = 0x30 -+ } -+ if m.StartedAt != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.StartedAt)) -+ i-- -+ dAtA[i] = 0x28 -+ } -+ if m.CreatedAt != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.CreatedAt)) -+ i-- -+ dAtA[i] = 0x20 -+ } -+ if m.State != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.State)) -+ i-- -+ dAtA[i] = 0x18 -+ } -+ if m.Metadata != nil { -+ { -+ size, err := m.Metadata.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if len(m.Id) > 0 { -+ i -= len(m.Id) -+ copy(dAtA[i:], m.Id) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Id))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *ContainerStatusResponse) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *ContainerStatusResponse) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *ContainerStatusResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.Info) > 0 { -+ for k := range m.Info { -+ v := m.Info[k] -+ baseI := i -+ i -= len(v) -+ copy(dAtA[i:], v) -+ i = encodeVarintApi(dAtA, i, uint64(len(v))) -+ i-- -+ dAtA[i] = 0x12 -+ i -= len(k) -+ copy(dAtA[i:], k) -+ i = encodeVarintApi(dAtA, i, uint64(len(k))) -+ i-- -+ dAtA[i] = 0xa -+ i = encodeVarintApi(dAtA, i, uint64(baseI-i)) -+ i-- -+ dAtA[i] = 0x12 -+ } -+ } -+ if m.Status != nil { -+ { -+ size, err := m.Status.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *ContainerResources) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *ContainerResources) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *ContainerResources) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.Windows != nil { -+ { -+ size, err := m.Windows.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if m.Linux != nil { -+ { -+ size, err := m.Linux.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *UpdateContainerResourcesRequest) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *UpdateContainerResourcesRequest) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *UpdateContainerResourcesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.Annotations) > 0 { -+ for k := range m.Annotations { -+ v := m.Annotations[k] -+ baseI := i -+ i -= len(v) -+ copy(dAtA[i:], v) -+ i = encodeVarintApi(dAtA, i, uint64(len(v))) -+ i-- -+ dAtA[i] = 0x12 -+ i -= len(k) -+ copy(dAtA[i:], k) -+ i = encodeVarintApi(dAtA, i, uint64(len(k))) -+ i-- -+ dAtA[i] = 0xa -+ i = encodeVarintApi(dAtA, i, uint64(baseI-i)) -+ i-- -+ dAtA[i] = 0x22 -+ } -+ } -+ if m.Windows != nil { -+ { -+ size, err := m.Windows.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x1a -+ } -+ if m.Linux != nil { -+ { -+ size, err := m.Linux.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if len(m.ContainerId) > 0 { -+ i -= len(m.ContainerId) -+ copy(dAtA[i:], m.ContainerId) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.ContainerId))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *UpdateContainerResourcesResponse) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *UpdateContainerResourcesResponse) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *UpdateContainerResourcesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ return len(dAtA) - i, nil -+} -+ -+func (m *ExecSyncRequest) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *ExecSyncRequest) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *ExecSyncRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.Timeout != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.Timeout)) -+ i-- -+ dAtA[i] = 0x18 -+ } -+ if len(m.Cmd) > 0 { -+ for iNdEx := len(m.Cmd) - 1; iNdEx >= 0; iNdEx-- { -+ i -= len(m.Cmd[iNdEx]) -+ copy(dAtA[i:], m.Cmd[iNdEx]) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Cmd[iNdEx]))) -+ i-- -+ dAtA[i] = 0x12 -+ } -+ } -+ if len(m.ContainerId) > 0 { -+ i -= len(m.ContainerId) -+ copy(dAtA[i:], m.ContainerId) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.ContainerId))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *ExecSyncResponse) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *ExecSyncResponse) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *ExecSyncResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.ExitCode != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.ExitCode)) -+ i-- -+ dAtA[i] = 0x18 -+ } -+ if len(m.Stderr) > 0 { -+ i -= len(m.Stderr) -+ copy(dAtA[i:], m.Stderr) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Stderr))) -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if len(m.Stdout) > 0 { -+ i -= len(m.Stdout) -+ copy(dAtA[i:], m.Stdout) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Stdout))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *ExecRequest) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *ExecRequest) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *ExecRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.Stderr { -+ i-- -+ if m.Stderr { -+ dAtA[i] = 1 -+ } else { -+ dAtA[i] = 0 -+ } -+ i-- -+ dAtA[i] = 0x30 -+ } -+ if m.Stdout { -+ i-- -+ if m.Stdout { -+ dAtA[i] = 1 -+ } else { -+ dAtA[i] = 0 -+ } -+ i-- -+ dAtA[i] = 0x28 -+ } -+ if m.Stdin { -+ i-- -+ if m.Stdin { -+ dAtA[i] = 1 -+ } else { -+ dAtA[i] = 0 -+ } -+ i-- -+ dAtA[i] = 0x20 -+ } -+ if m.Tty { -+ i-- -+ if m.Tty { -+ dAtA[i] = 1 -+ } else { -+ dAtA[i] = 0 -+ } -+ i-- -+ dAtA[i] = 0x18 -+ } -+ if len(m.Cmd) > 0 { -+ for iNdEx := len(m.Cmd) - 1; iNdEx >= 0; iNdEx-- { -+ i -= len(m.Cmd[iNdEx]) -+ copy(dAtA[i:], m.Cmd[iNdEx]) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Cmd[iNdEx]))) -+ i-- -+ dAtA[i] = 0x12 -+ } -+ } -+ if len(m.ContainerId) > 0 { -+ i -= len(m.ContainerId) -+ copy(dAtA[i:], m.ContainerId) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.ContainerId))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *ExecResponse) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *ExecResponse) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *ExecResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.Url) > 0 { -+ i -= len(m.Url) -+ copy(dAtA[i:], m.Url) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Url))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *AttachRequest) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *AttachRequest) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *AttachRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.Stderr { -+ i-- -+ if m.Stderr { -+ dAtA[i] = 1 -+ } else { -+ dAtA[i] = 0 -+ } -+ i-- -+ dAtA[i] = 0x28 -+ } -+ if m.Stdout { -+ i-- -+ if m.Stdout { -+ dAtA[i] = 1 -+ } else { -+ dAtA[i] = 0 -+ } -+ i-- -+ dAtA[i] = 0x20 -+ } -+ if m.Tty { -+ i-- -+ if m.Tty { -+ dAtA[i] = 1 -+ } else { -+ dAtA[i] = 0 -+ } -+ i-- -+ dAtA[i] = 0x18 -+ } -+ if m.Stdin { -+ i-- -+ if m.Stdin { -+ dAtA[i] = 1 -+ } else { -+ dAtA[i] = 0 -+ } -+ i-- -+ dAtA[i] = 0x10 -+ } -+ if len(m.ContainerId) > 0 { -+ i -= len(m.ContainerId) -+ copy(dAtA[i:], m.ContainerId) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.ContainerId))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *AttachResponse) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *AttachResponse) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *AttachResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.Url) > 0 { -+ i -= len(m.Url) -+ copy(dAtA[i:], m.Url) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Url))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *PortForwardRequest) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *PortForwardRequest) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *PortForwardRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.Port) > 0 { -+ dAtA76 := make([]byte, len(m.Port)*10) -+ var j75 int -+ for _, num1 := range m.Port { -+ num := uint64(num1) -+ for num >= 1<<7 { -+ dAtA76[j75] = uint8(uint64(num)&0x7f | 0x80) -+ num >>= 7 -+ j75++ -+ } -+ dAtA76[j75] = uint8(num) -+ j75++ -+ } -+ i -= j75 -+ copy(dAtA[i:], dAtA76[:j75]) -+ i = encodeVarintApi(dAtA, i, uint64(j75)) -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if len(m.PodSandboxId) > 0 { -+ i -= len(m.PodSandboxId) -+ copy(dAtA[i:], m.PodSandboxId) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.PodSandboxId))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *PortForwardResponse) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *PortForwardResponse) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *PortForwardResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.Url) > 0 { -+ i -= len(m.Url) -+ copy(dAtA[i:], m.Url) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Url))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *ImageFilter) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *ImageFilter) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *ImageFilter) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.Image != nil { -+ { -+ size, err := m.Image.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *ListImagesRequest) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *ListImagesRequest) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *ListImagesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.Filter != nil { -+ { -+ size, err := m.Filter.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *Image) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *Image) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *Image) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.Pinned { -+ i-- -+ if m.Pinned { -+ dAtA[i] = 1 -+ } else { -+ dAtA[i] = 0 -+ } -+ i-- -+ dAtA[i] = 0x40 -+ } -+ if m.Spec != nil { -+ { -+ size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x3a -+ } -+ if len(m.Username) > 0 { -+ i -= len(m.Username) -+ copy(dAtA[i:], m.Username) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Username))) -+ i-- -+ dAtA[i] = 0x32 -+ } -+ if m.Uid != nil { -+ { -+ size, err := m.Uid.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x2a -+ } -+ if m.Size_ != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.Size_)) -+ i-- -+ dAtA[i] = 0x20 -+ } -+ if len(m.RepoDigests) > 0 { -+ for iNdEx := len(m.RepoDigests) - 1; iNdEx >= 0; iNdEx-- { -+ i -= len(m.RepoDigests[iNdEx]) -+ copy(dAtA[i:], m.RepoDigests[iNdEx]) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.RepoDigests[iNdEx]))) -+ i-- -+ dAtA[i] = 0x1a -+ } -+ } -+ if len(m.RepoTags) > 0 { -+ for iNdEx := len(m.RepoTags) - 1; iNdEx >= 0; iNdEx-- { -+ i -= len(m.RepoTags[iNdEx]) -+ copy(dAtA[i:], m.RepoTags[iNdEx]) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.RepoTags[iNdEx]))) -+ i-- -+ dAtA[i] = 0x12 -+ } -+ } -+ if len(m.Id) > 0 { -+ i -= len(m.Id) -+ copy(dAtA[i:], m.Id) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Id))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *ListImagesResponse) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *ListImagesResponse) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *ListImagesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.Images) > 0 { -+ for iNdEx := len(m.Images) - 1; iNdEx >= 0; iNdEx-- { -+ { -+ size, err := m.Images[iNdEx].MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0xa -+ } -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *ImageStatusRequest) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *ImageStatusRequest) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *ImageStatusRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.Verbose { -+ i-- -+ if m.Verbose { -+ dAtA[i] = 1 -+ } else { -+ dAtA[i] = 0 -+ } -+ i-- -+ dAtA[i] = 0x10 -+ } -+ if m.Image != nil { -+ { -+ size, err := m.Image.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *ImageStatusResponse) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *ImageStatusResponse) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *ImageStatusResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.Info) > 0 { -+ for k := range m.Info { -+ v := m.Info[k] -+ baseI := i -+ i -= len(v) -+ copy(dAtA[i:], v) -+ i = encodeVarintApi(dAtA, i, uint64(len(v))) -+ i-- -+ dAtA[i] = 0x12 -+ i -= len(k) -+ copy(dAtA[i:], k) -+ i = encodeVarintApi(dAtA, i, uint64(len(k))) -+ i-- -+ dAtA[i] = 0xa -+ i = encodeVarintApi(dAtA, i, uint64(baseI-i)) -+ i-- -+ dAtA[i] = 0x12 -+ } -+ } -+ if m.Image != nil { -+ { -+ size, err := m.Image.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *AuthConfig) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *AuthConfig) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *AuthConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.RegistryToken) > 0 { -+ i -= len(m.RegistryToken) -+ copy(dAtA[i:], m.RegistryToken) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.RegistryToken))) -+ i-- -+ dAtA[i] = 0x32 -+ } -+ if len(m.IdentityToken) > 0 { -+ i -= len(m.IdentityToken) -+ copy(dAtA[i:], m.IdentityToken) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.IdentityToken))) -+ i-- -+ dAtA[i] = 0x2a -+ } -+ if len(m.ServerAddress) > 0 { -+ i -= len(m.ServerAddress) -+ copy(dAtA[i:], m.ServerAddress) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.ServerAddress))) -+ i-- -+ dAtA[i] = 0x22 -+ } -+ if len(m.Auth) > 0 { -+ i -= len(m.Auth) -+ copy(dAtA[i:], m.Auth) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Auth))) -+ i-- -+ dAtA[i] = 0x1a -+ } -+ if len(m.Password) > 0 { -+ i -= len(m.Password) -+ copy(dAtA[i:], m.Password) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Password))) -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if len(m.Username) > 0 { -+ i -= len(m.Username) -+ copy(dAtA[i:], m.Username) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Username))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *PullImageRequest) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *PullImageRequest) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *PullImageRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.SandboxConfig != nil { -+ { -+ size, err := m.SandboxConfig.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x1a -+ } -+ if m.Auth != nil { -+ { -+ size, err := m.Auth.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if m.Image != nil { -+ { -+ size, err := m.Image.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *PullImageResponse) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *PullImageResponse) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *PullImageResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.ImageRef) > 0 { -+ i -= len(m.ImageRef) -+ copy(dAtA[i:], m.ImageRef) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.ImageRef))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *RemoveImageRequest) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *RemoveImageRequest) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *RemoveImageRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.Image != nil { -+ { -+ size, err := m.Image.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *RemoveImageResponse) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *RemoveImageResponse) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *RemoveImageResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ return len(dAtA) - i, nil -+} -+ -+func (m *NetworkConfig) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *NetworkConfig) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *NetworkConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.PodCidr) > 0 { -+ i -= len(m.PodCidr) -+ copy(dAtA[i:], m.PodCidr) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.PodCidr))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *RuntimeConfig) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *RuntimeConfig) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *RuntimeConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.NetworkConfig != nil { -+ { -+ size, err := m.NetworkConfig.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *UpdateRuntimeConfigRequest) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *UpdateRuntimeConfigRequest) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *UpdateRuntimeConfigRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.RuntimeConfig != nil { -+ { -+ size, err := m.RuntimeConfig.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *UpdateRuntimeConfigResponse) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *UpdateRuntimeConfigResponse) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *UpdateRuntimeConfigResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ return len(dAtA) - i, nil -+} -+ -+func (m *RuntimeCondition) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *RuntimeCondition) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *RuntimeCondition) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.Message) > 0 { -+ i -= len(m.Message) -+ copy(dAtA[i:], m.Message) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Message))) -+ i-- -+ dAtA[i] = 0x22 -+ } -+ if len(m.Reason) > 0 { -+ i -= len(m.Reason) -+ copy(dAtA[i:], m.Reason) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Reason))) -+ i-- -+ dAtA[i] = 0x1a -+ } -+ if m.Status { -+ i-- -+ if m.Status { -+ dAtA[i] = 1 -+ } else { -+ dAtA[i] = 0 -+ } -+ i-- -+ dAtA[i] = 0x10 -+ } -+ if len(m.Type) > 0 { -+ i -= len(m.Type) -+ copy(dAtA[i:], m.Type) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Type))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *RuntimeStatus) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *RuntimeStatus) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *RuntimeStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.Conditions) > 0 { -+ for iNdEx := len(m.Conditions) - 1; iNdEx >= 0; iNdEx-- { -+ { -+ size, err := m.Conditions[iNdEx].MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0xa -+ } -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *StatusRequest) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *StatusRequest) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *StatusRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.Verbose { -+ i-- -+ if m.Verbose { -+ dAtA[i] = 1 -+ } else { -+ dAtA[i] = 0 -+ } -+ i-- -+ dAtA[i] = 0x8 -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *StatusResponse) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *StatusResponse) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *StatusResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.Info) > 0 { -+ for k := range m.Info { -+ v := m.Info[k] -+ baseI := i -+ i -= len(v) -+ copy(dAtA[i:], v) -+ i = encodeVarintApi(dAtA, i, uint64(len(v))) -+ i-- -+ dAtA[i] = 0x12 -+ i -= len(k) -+ copy(dAtA[i:], k) -+ i = encodeVarintApi(dAtA, i, uint64(len(k))) -+ i-- -+ dAtA[i] = 0xa -+ i = encodeVarintApi(dAtA, i, uint64(baseI-i)) -+ i-- -+ dAtA[i] = 0x12 -+ } -+ } -+ if m.Status != nil { -+ { -+ size, err := m.Status.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *ImageFsInfoRequest) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *ImageFsInfoRequest) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *ImageFsInfoRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ return len(dAtA) - i, nil -+} -+ -+func (m *UInt64Value) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *UInt64Value) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *UInt64Value) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.Value != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.Value)) -+ i-- -+ dAtA[i] = 0x8 -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *FilesystemIdentifier) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *FilesystemIdentifier) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *FilesystemIdentifier) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.Mountpoint) > 0 { -+ i -= len(m.Mountpoint) -+ copy(dAtA[i:], m.Mountpoint) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Mountpoint))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *FilesystemUsage) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *FilesystemUsage) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *FilesystemUsage) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.InodesUsed != nil { -+ { -+ size, err := m.InodesUsed.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x22 -+ } -+ if m.UsedBytes != nil { -+ { -+ size, err := m.UsedBytes.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x1a -+ } -+ if m.FsId != nil { -+ { -+ size, err := m.FsId.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if m.Timestamp != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.Timestamp)) -+ i-- -+ dAtA[i] = 0x8 -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *ImageFsInfoResponse) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *ImageFsInfoResponse) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *ImageFsInfoResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.ImageFilesystems) > 0 { -+ for iNdEx := len(m.ImageFilesystems) - 1; iNdEx >= 0; iNdEx-- { -+ { -+ size, err := m.ImageFilesystems[iNdEx].MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0xa -+ } -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *ContainerStatsRequest) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *ContainerStatsRequest) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *ContainerStatsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.ContainerId) > 0 { -+ i -= len(m.ContainerId) -+ copy(dAtA[i:], m.ContainerId) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.ContainerId))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *ContainerStatsResponse) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *ContainerStatsResponse) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *ContainerStatsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.Stats != nil { -+ { -+ size, err := m.Stats.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *ListContainerStatsRequest) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *ListContainerStatsRequest) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *ListContainerStatsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.Filter != nil { -+ { -+ size, err := m.Filter.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *ContainerStatsFilter) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *ContainerStatsFilter) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *ContainerStatsFilter) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.LabelSelector) > 0 { -+ for k := range m.LabelSelector { -+ v := m.LabelSelector[k] -+ baseI := i -+ i -= len(v) -+ copy(dAtA[i:], v) -+ i = encodeVarintApi(dAtA, i, uint64(len(v))) -+ i-- -+ dAtA[i] = 0x12 -+ i -= len(k) -+ copy(dAtA[i:], k) -+ i = encodeVarintApi(dAtA, i, uint64(len(k))) -+ i-- -+ dAtA[i] = 0xa -+ i = encodeVarintApi(dAtA, i, uint64(baseI-i)) -+ i-- -+ dAtA[i] = 0x1a -+ } -+ } -+ if len(m.PodSandboxId) > 0 { -+ i -= len(m.PodSandboxId) -+ copy(dAtA[i:], m.PodSandboxId) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.PodSandboxId))) -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if len(m.Id) > 0 { -+ i -= len(m.Id) -+ copy(dAtA[i:], m.Id) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Id))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *ListContainerStatsResponse) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *ListContainerStatsResponse) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *ListContainerStatsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.Stats) > 0 { -+ for iNdEx := len(m.Stats) - 1; iNdEx >= 0; iNdEx-- { -+ { -+ size, err := m.Stats[iNdEx].MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0xa -+ } -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *ContainerAttributes) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *ContainerAttributes) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *ContainerAttributes) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.Annotations) > 0 { -+ for k := range m.Annotations { -+ v := m.Annotations[k] -+ baseI := i -+ i -= len(v) -+ copy(dAtA[i:], v) -+ i = encodeVarintApi(dAtA, i, uint64(len(v))) -+ i-- -+ dAtA[i] = 0x12 -+ i -= len(k) -+ copy(dAtA[i:], k) -+ i = encodeVarintApi(dAtA, i, uint64(len(k))) -+ i-- -+ dAtA[i] = 0xa -+ i = encodeVarintApi(dAtA, i, uint64(baseI-i)) -+ i-- -+ dAtA[i] = 0x22 -+ } -+ } -+ if len(m.Labels) > 0 { -+ for k := range m.Labels { -+ v := m.Labels[k] -+ baseI := i -+ i -= len(v) -+ copy(dAtA[i:], v) -+ i = encodeVarintApi(dAtA, i, uint64(len(v))) -+ i-- -+ dAtA[i] = 0x12 -+ i -= len(k) -+ copy(dAtA[i:], k) -+ i = encodeVarintApi(dAtA, i, uint64(len(k))) -+ i-- -+ dAtA[i] = 0xa -+ i = encodeVarintApi(dAtA, i, uint64(baseI-i)) -+ i-- -+ dAtA[i] = 0x1a -+ } -+ } -+ if m.Metadata != nil { -+ { -+ size, err := m.Metadata.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if len(m.Id) > 0 { -+ i -= len(m.Id) -+ copy(dAtA[i:], m.Id) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Id))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *ContainerStats) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *ContainerStats) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *ContainerStats) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.WritableLayer != nil { -+ { -+ size, err := m.WritableLayer.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x22 -+ } -+ if m.Memory != nil { -+ { -+ size, err := m.Memory.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x1a -+ } -+ if m.Cpu != nil { -+ { -+ size, err := m.Cpu.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if m.Attributes != nil { -+ { -+ size, err := m.Attributes.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *CpuUsage) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *CpuUsage) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *CpuUsage) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.UsageNanoCores != nil { -+ { -+ size, err := m.UsageNanoCores.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x1a -+ } -+ if m.UsageCoreNanoSeconds != nil { -+ { -+ size, err := m.UsageCoreNanoSeconds.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if m.Timestamp != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.Timestamp)) -+ i-- -+ dAtA[i] = 0x8 -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *MemoryUsage) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *MemoryUsage) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *MemoryUsage) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.MajorPageFaults != nil { -+ { -+ size, err := m.MajorPageFaults.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x3a -+ } -+ if m.PageFaults != nil { -+ { -+ size, err := m.PageFaults.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x32 -+ } -+ if m.RssBytes != nil { -+ { -+ size, err := m.RssBytes.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x2a -+ } -+ if m.UsageBytes != nil { -+ { -+ size, err := m.UsageBytes.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x22 -+ } -+ if m.AvailableBytes != nil { -+ { -+ size, err := m.AvailableBytes.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x1a -+ } -+ if m.WorkingSetBytes != nil { -+ { -+ size, err := m.WorkingSetBytes.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if m.Timestamp != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.Timestamp)) -+ i-- -+ dAtA[i] = 0x8 -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *ReopenContainerLogRequest) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *ReopenContainerLogRequest) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *ReopenContainerLogRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if len(m.ContainerId) > 0 { -+ i -= len(m.ContainerId) -+ copy(dAtA[i:], m.ContainerId) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.ContainerId))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *ReopenContainerLogResponse) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *ReopenContainerLogResponse) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *ReopenContainerLogResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ return len(dAtA) - i, nil -+} -+ -+func (m *CheckpointContainerRequest) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *CheckpointContainerRequest) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *CheckpointContainerRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.Timeout != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.Timeout)) -+ i-- -+ dAtA[i] = 0x18 -+ } -+ if len(m.Location) > 0 { -+ i -= len(m.Location) -+ copy(dAtA[i:], m.Location) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.Location))) -+ i-- -+ dAtA[i] = 0x12 -+ } -+ if len(m.ContainerId) > 0 { -+ i -= len(m.ContainerId) -+ copy(dAtA[i:], m.ContainerId) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.ContainerId))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func (m *CheckpointContainerResponse) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *CheckpointContainerResponse) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *CheckpointContainerResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ return len(dAtA) - i, nil -+} -+ -+func (m *GetEventsRequest) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *GetEventsRequest) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *GetEventsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ return len(dAtA) - i, nil -+} -+ -+func (m *ContainerEventResponse) Marshal() (dAtA []byte, err error) { -+ size := m.Size() -+ dAtA = make([]byte, size) -+ n, err := m.MarshalToSizedBuffer(dAtA[:size]) -+ if err != nil { -+ return nil, err -+ } -+ return dAtA[:n], nil -+} -+ -+func (m *ContainerEventResponse) MarshalTo(dAtA []byte) (int, error) { -+ size := m.Size() -+ return m.MarshalToSizedBuffer(dAtA[:size]) -+} -+ -+func (m *ContainerEventResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { -+ i := len(dAtA) -+ _ = i -+ var l int -+ _ = l -+ if m.PodSandboxMetadata != nil { -+ { -+ size, err := m.PodSandboxMetadata.MarshalToSizedBuffer(dAtA[:i]) -+ if err != nil { -+ return 0, err -+ } -+ i -= size -+ i = encodeVarintApi(dAtA, i, uint64(size)) -+ } -+ i-- -+ dAtA[i] = 0x22 -+ } -+ if m.CreatedAt != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.CreatedAt)) -+ i-- -+ dAtA[i] = 0x18 -+ } -+ if m.ContainerEventType != 0 { -+ i = encodeVarintApi(dAtA, i, uint64(m.ContainerEventType)) -+ i-- -+ dAtA[i] = 0x10 -+ } -+ if len(m.ContainerId) > 0 { -+ i -= len(m.ContainerId) -+ copy(dAtA[i:], m.ContainerId) -+ i = encodeVarintApi(dAtA, i, uint64(len(m.ContainerId))) -+ i-- -+ dAtA[i] = 0xa -+ } -+ return len(dAtA) - i, nil -+} -+ -+func encodeVarintApi(dAtA []byte, offset int, v uint64) int { -+ offset -= sovApi(v) -+ base := offset -+ for v >= 1<<7 { -+ dAtA[offset] = uint8(v&0x7f | 0x80) -+ v >>= 7 -+ offset++ -+ } -+ dAtA[offset] = uint8(v) -+ return base -+} -+func (m *VersionRequest) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.Version) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *VersionResponse) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.Version) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ l = len(m.RuntimeName) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ l = len(m.RuntimeVersion) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ l = len(m.RuntimeApiVersion) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *DNSConfig) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if len(m.Servers) > 0 { -+ for _, s := range m.Servers { -+ l = len(s) -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ } -+ if len(m.Searches) > 0 { -+ for _, s := range m.Searches { -+ l = len(s) -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ } -+ if len(m.Options) > 0 { -+ for _, s := range m.Options { -+ l = len(s) -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ } -+ return n -+} -+ -+func (m *PortMapping) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.Protocol != 0 { -+ n += 1 + sovApi(uint64(m.Protocol)) -+ } -+ if m.ContainerPort != 0 { -+ n += 1 + sovApi(uint64(m.ContainerPort)) -+ } -+ if m.HostPort != 0 { -+ n += 1 + sovApi(uint64(m.HostPort)) -+ } -+ l = len(m.HostIp) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *Mount) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.ContainerPath) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ l = len(m.HostPath) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Readonly { -+ n += 2 -+ } -+ if m.SelinuxRelabel { -+ n += 2 -+ } -+ if m.Propagation != 0 { -+ n += 1 + sovApi(uint64(m.Propagation)) -+ } -+ return n -+} -+ -+func (m *IDMapping) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.HostId != 0 { -+ n += 1 + sovApi(uint64(m.HostId)) -+ } -+ if m.ContainerId != 0 { -+ n += 1 + sovApi(uint64(m.ContainerId)) -+ } -+ if m.Length != 0 { -+ n += 1 + sovApi(uint64(m.Length)) -+ } -+ return n -+} -+ -+func (m *UserNamespace) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.Mode != 0 { -+ n += 1 + sovApi(uint64(m.Mode)) -+ } -+ if len(m.Uids) > 0 { -+ for _, e := range m.Uids { -+ l = e.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ } -+ if len(m.Gids) > 0 { -+ for _, e := range m.Gids { -+ l = e.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ } -+ return n -+} -+ -+func (m *NamespaceOption) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.Network != 0 { -+ n += 1 + sovApi(uint64(m.Network)) -+ } -+ if m.Pid != 0 { -+ n += 1 + sovApi(uint64(m.Pid)) -+ } -+ if m.Ipc != 0 { -+ n += 1 + sovApi(uint64(m.Ipc)) -+ } -+ l = len(m.TargetId) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.UsernsOptions != nil { -+ l = m.UsernsOptions.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *Int64Value) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.Value != 0 { -+ n += 1 + sovApi(uint64(m.Value)) -+ } -+ return n -+} -+ -+func (m *LinuxSandboxSecurityContext) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.NamespaceOptions != nil { -+ l = m.NamespaceOptions.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.SelinuxOptions != nil { -+ l = m.SelinuxOptions.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.RunAsUser != nil { -+ l = m.RunAsUser.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.ReadonlyRootfs { -+ n += 2 -+ } -+ if len(m.SupplementalGroups) > 0 { -+ l = 0 -+ for _, e := range m.SupplementalGroups { -+ l += sovApi(uint64(e)) -+ } -+ n += 1 + sovApi(uint64(l)) + l -+ } -+ if m.Privileged { -+ n += 2 -+ } -+ l = len(m.SeccompProfilePath) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.RunAsGroup != nil { -+ l = m.RunAsGroup.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Seccomp != nil { -+ l = m.Seccomp.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Apparmor != nil { -+ l = m.Apparmor.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *SecurityProfile) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.ProfileType != 0 { -+ n += 1 + sovApi(uint64(m.ProfileType)) -+ } -+ l = len(m.LocalhostRef) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *LinuxPodSandboxConfig) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.CgroupParent) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.SecurityContext != nil { -+ l = m.SecurityContext.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if len(m.Sysctls) > 0 { -+ for k, v := range m.Sysctls { -+ _ = k -+ _ = v -+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v))) -+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize)) -+ } -+ } -+ if m.Overhead != nil { -+ l = m.Overhead.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Resources != nil { -+ l = m.Resources.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *PodSandboxMetadata) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.Name) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ l = len(m.Uid) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ l = len(m.Namespace) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Attempt != 0 { -+ n += 1 + sovApi(uint64(m.Attempt)) -+ } -+ return n -+} -+ -+func (m *PodSandboxConfig) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.Metadata != nil { -+ l = m.Metadata.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ l = len(m.Hostname) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ l = len(m.LogDirectory) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.DnsConfig != nil { -+ l = m.DnsConfig.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if len(m.PortMappings) > 0 { -+ for _, e := range m.PortMappings { -+ l = e.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ } -+ if len(m.Labels) > 0 { -+ for k, v := range m.Labels { -+ _ = k -+ _ = v -+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v))) -+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize)) -+ } -+ } -+ if len(m.Annotations) > 0 { -+ for k, v := range m.Annotations { -+ _ = k -+ _ = v -+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v))) -+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize)) -+ } -+ } -+ if m.Linux != nil { -+ l = m.Linux.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Windows != nil { -+ l = m.Windows.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *RunPodSandboxRequest) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.Config != nil { -+ l = m.Config.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ l = len(m.RuntimeHandler) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *RunPodSandboxResponse) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.PodSandboxId) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *StopPodSandboxRequest) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.PodSandboxId) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *StopPodSandboxResponse) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ return n -+} -+ -+func (m *RemovePodSandboxRequest) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.PodSandboxId) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *RemovePodSandboxResponse) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ return n -+} -+ -+func (m *PodSandboxStatusRequest) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.PodSandboxId) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Verbose { -+ n += 2 -+ } -+ return n -+} -+ -+func (m *PodIP) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.Ip) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *PodSandboxNetworkStatus) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.Ip) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if len(m.AdditionalIps) > 0 { -+ for _, e := range m.AdditionalIps { -+ l = e.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ } -+ return n -+} -+ -+func (m *Namespace) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.Options != nil { -+ l = m.Options.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *LinuxPodSandboxStatus) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.Namespaces != nil { -+ l = m.Namespaces.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *PodSandboxStatus) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.Id) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Metadata != nil { -+ l = m.Metadata.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.State != 0 { -+ n += 1 + sovApi(uint64(m.State)) -+ } -+ if m.CreatedAt != 0 { -+ n += 1 + sovApi(uint64(m.CreatedAt)) -+ } -+ if m.Network != nil { -+ l = m.Network.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Linux != nil { -+ l = m.Linux.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if len(m.Labels) > 0 { -+ for k, v := range m.Labels { -+ _ = k -+ _ = v -+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v))) -+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize)) -+ } -+ } -+ if len(m.Annotations) > 0 { -+ for k, v := range m.Annotations { -+ _ = k -+ _ = v -+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v))) -+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize)) -+ } -+ } -+ l = len(m.RuntimeHandler) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *PodSandboxStatusResponse) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.Status != nil { -+ l = m.Status.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if len(m.Info) > 0 { -+ for k, v := range m.Info { -+ _ = k -+ _ = v -+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v))) -+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize)) -+ } -+ } -+ return n -+} -+ -+func (m *PodSandboxStateValue) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.State != 0 { -+ n += 1 + sovApi(uint64(m.State)) -+ } -+ return n -+} -+ -+func (m *PodSandboxFilter) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.Id) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.State != nil { -+ l = m.State.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if len(m.LabelSelector) > 0 { -+ for k, v := range m.LabelSelector { -+ _ = k -+ _ = v -+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v))) -+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize)) -+ } -+ } -+ return n -+} -+ -+func (m *ListPodSandboxRequest) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.Filter != nil { -+ l = m.Filter.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *PodSandbox) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.Id) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Metadata != nil { -+ l = m.Metadata.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.State != 0 { -+ n += 1 + sovApi(uint64(m.State)) -+ } -+ if m.CreatedAt != 0 { -+ n += 1 + sovApi(uint64(m.CreatedAt)) -+ } -+ if len(m.Labels) > 0 { -+ for k, v := range m.Labels { -+ _ = k -+ _ = v -+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v))) -+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize)) -+ } -+ } -+ if len(m.Annotations) > 0 { -+ for k, v := range m.Annotations { -+ _ = k -+ _ = v -+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v))) -+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize)) -+ } -+ } -+ l = len(m.RuntimeHandler) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *ListPodSandboxResponse) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if len(m.Items) > 0 { -+ for _, e := range m.Items { -+ l = e.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ } -+ return n -+} -+ -+func (m *PodSandboxStatsRequest) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.PodSandboxId) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *PodSandboxStatsResponse) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.Stats != nil { -+ l = m.Stats.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *PodSandboxStatsFilter) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.Id) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if len(m.LabelSelector) > 0 { -+ for k, v := range m.LabelSelector { -+ _ = k -+ _ = v -+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v))) -+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize)) -+ } -+ } -+ return n -+} -+ -+func (m *ListPodSandboxStatsRequest) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.Filter != nil { -+ l = m.Filter.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *ListPodSandboxStatsResponse) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if len(m.Stats) > 0 { -+ for _, e := range m.Stats { -+ l = e.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ } -+ return n -+} -+ -+func (m *PodSandboxAttributes) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.Id) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Metadata != nil { -+ l = m.Metadata.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if len(m.Labels) > 0 { -+ for k, v := range m.Labels { -+ _ = k -+ _ = v -+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v))) -+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize)) -+ } -+ } -+ if len(m.Annotations) > 0 { -+ for k, v := range m.Annotations { -+ _ = k -+ _ = v -+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v))) -+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize)) -+ } -+ } -+ return n -+} -+ -+func (m *PodSandboxStats) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.Attributes != nil { -+ l = m.Attributes.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Linux != nil { -+ l = m.Linux.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Windows != nil { -+ l = m.Windows.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *LinuxPodSandboxStats) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.Cpu != nil { -+ l = m.Cpu.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Memory != nil { -+ l = m.Memory.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Network != nil { -+ l = m.Network.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Process != nil { -+ l = m.Process.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if len(m.Containers) > 0 { -+ for _, e := range m.Containers { -+ l = e.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ } -+ return n -+} -+ -+func (m *WindowsPodSandboxStats) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ return n -+} -+ -+func (m *NetworkUsage) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.Timestamp != 0 { -+ n += 1 + sovApi(uint64(m.Timestamp)) -+ } -+ if m.DefaultInterface != nil { -+ l = m.DefaultInterface.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if len(m.Interfaces) > 0 { -+ for _, e := range m.Interfaces { -+ l = e.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ } -+ return n -+} -+ -+func (m *NetworkInterfaceUsage) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.Name) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.RxBytes != nil { -+ l = m.RxBytes.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.RxErrors != nil { -+ l = m.RxErrors.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.TxBytes != nil { -+ l = m.TxBytes.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.TxErrors != nil { -+ l = m.TxErrors.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *ProcessUsage) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.Timestamp != 0 { -+ n += 1 + sovApi(uint64(m.Timestamp)) -+ } -+ if m.ProcessCount != nil { -+ l = m.ProcessCount.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *ImageSpec) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.Image) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if len(m.Annotations) > 0 { -+ for k, v := range m.Annotations { -+ _ = k -+ _ = v -+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v))) -+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize)) -+ } -+ } -+ return n -+} -+ -+func (m *KeyValue) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.Key) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ l = len(m.Value) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *LinuxContainerResources) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.CpuPeriod != 0 { -+ n += 1 + sovApi(uint64(m.CpuPeriod)) -+ } -+ if m.CpuQuota != 0 { -+ n += 1 + sovApi(uint64(m.CpuQuota)) -+ } -+ if m.CpuShares != 0 { -+ n += 1 + sovApi(uint64(m.CpuShares)) -+ } -+ if m.MemoryLimitInBytes != 0 { -+ n += 1 + sovApi(uint64(m.MemoryLimitInBytes)) -+ } -+ if m.OomScoreAdj != 0 { -+ n += 1 + sovApi(uint64(m.OomScoreAdj)) -+ } -+ l = len(m.CpusetCpus) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ l = len(m.CpusetMems) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if len(m.HugepageLimits) > 0 { -+ for _, e := range m.HugepageLimits { -+ l = e.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ } -+ if len(m.Unified) > 0 { -+ for k, v := range m.Unified { -+ _ = k -+ _ = v -+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v))) -+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize)) -+ } -+ } -+ if m.MemorySwapLimitInBytes != 0 { -+ n += 1 + sovApi(uint64(m.MemorySwapLimitInBytes)) -+ } -+ return n -+} -+ -+func (m *HugepageLimit) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.PageSize) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Limit != 0 { -+ n += 1 + sovApi(uint64(m.Limit)) -+ } -+ return n -+} -+ -+func (m *SELinuxOption) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.User) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ l = len(m.Role) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ l = len(m.Type) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ l = len(m.Level) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *Capability) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if len(m.AddCapabilities) > 0 { -+ for _, s := range m.AddCapabilities { -+ l = len(s) -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ } -+ if len(m.DropCapabilities) > 0 { -+ for _, s := range m.DropCapabilities { -+ l = len(s) -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ } -+ if len(m.AddAmbientCapabilities) > 0 { -+ for _, s := range m.AddAmbientCapabilities { -+ l = len(s) -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ } -+ return n -+} -+ -+func (m *LinuxContainerSecurityContext) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.Capabilities != nil { -+ l = m.Capabilities.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Privileged { -+ n += 2 -+ } -+ if m.NamespaceOptions != nil { -+ l = m.NamespaceOptions.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.SelinuxOptions != nil { -+ l = m.SelinuxOptions.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.RunAsUser != nil { -+ l = m.RunAsUser.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ l = len(m.RunAsUsername) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.ReadonlyRootfs { -+ n += 2 -+ } -+ if len(m.SupplementalGroups) > 0 { -+ l = 0 -+ for _, e := range m.SupplementalGroups { -+ l += sovApi(uint64(e)) -+ } -+ n += 1 + sovApi(uint64(l)) + l -+ } -+ l = len(m.ApparmorProfile) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ l = len(m.SeccompProfilePath) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.NoNewPrivs { -+ n += 2 -+ } -+ if m.RunAsGroup != nil { -+ l = m.RunAsGroup.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if len(m.MaskedPaths) > 0 { -+ for _, s := range m.MaskedPaths { -+ l = len(s) -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ } -+ if len(m.ReadonlyPaths) > 0 { -+ for _, s := range m.ReadonlyPaths { -+ l = len(s) -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ } -+ if m.Seccomp != nil { -+ l = m.Seccomp.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Apparmor != nil { -+ l = m.Apparmor.Size() -+ n += 2 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *LinuxContainerConfig) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.Resources != nil { -+ l = m.Resources.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.SecurityContext != nil { -+ l = m.SecurityContext.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *WindowsSandboxSecurityContext) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.RunAsUsername) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ l = len(m.CredentialSpec) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.HostProcess { -+ n += 2 -+ } -+ return n -+} -+ -+func (m *WindowsPodSandboxConfig) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.SecurityContext != nil { -+ l = m.SecurityContext.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *WindowsContainerSecurityContext) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.RunAsUsername) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ l = len(m.CredentialSpec) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.HostProcess { -+ n += 2 -+ } -+ return n -+} -+ -+func (m *WindowsContainerConfig) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.Resources != nil { -+ l = m.Resources.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.SecurityContext != nil { -+ l = m.SecurityContext.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *WindowsContainerResources) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.CpuShares != 0 { -+ n += 1 + sovApi(uint64(m.CpuShares)) -+ } -+ if m.CpuCount != 0 { -+ n += 1 + sovApi(uint64(m.CpuCount)) -+ } -+ if m.CpuMaximum != 0 { -+ n += 1 + sovApi(uint64(m.CpuMaximum)) -+ } -+ if m.MemoryLimitInBytes != 0 { -+ n += 1 + sovApi(uint64(m.MemoryLimitInBytes)) -+ } -+ if m.RootfsSizeInBytes != 0 { -+ n += 1 + sovApi(uint64(m.RootfsSizeInBytes)) -+ } -+ return n -+} -+ -+func (m *ContainerMetadata) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.Name) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Attempt != 0 { -+ n += 1 + sovApi(uint64(m.Attempt)) -+ } -+ return n -+} -+ -+func (m *Device) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.ContainerPath) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ l = len(m.HostPath) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ l = len(m.Permissions) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *ContainerConfig) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.Metadata != nil { -+ l = m.Metadata.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Image != nil { -+ l = m.Image.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if len(m.Command) > 0 { -+ for _, s := range m.Command { -+ l = len(s) -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ } -+ if len(m.Args) > 0 { -+ for _, s := range m.Args { -+ l = len(s) -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ } -+ l = len(m.WorkingDir) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if len(m.Envs) > 0 { -+ for _, e := range m.Envs { -+ l = e.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ } -+ if len(m.Mounts) > 0 { -+ for _, e := range m.Mounts { -+ l = e.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ } -+ if len(m.Devices) > 0 { -+ for _, e := range m.Devices { -+ l = e.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ } -+ if len(m.Labels) > 0 { -+ for k, v := range m.Labels { -+ _ = k -+ _ = v -+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v))) -+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize)) -+ } -+ } -+ if len(m.Annotations) > 0 { -+ for k, v := range m.Annotations { -+ _ = k -+ _ = v -+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v))) -+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize)) -+ } -+ } -+ l = len(m.LogPath) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Stdin { -+ n += 2 -+ } -+ if m.StdinOnce { -+ n += 2 -+ } -+ if m.Tty { -+ n += 2 -+ } -+ if m.Linux != nil { -+ l = m.Linux.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Windows != nil { -+ l = m.Windows.Size() -+ n += 2 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *CreateContainerRequest) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.PodSandboxId) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Config != nil { -+ l = m.Config.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.SandboxConfig != nil { -+ l = m.SandboxConfig.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *CreateContainerResponse) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.ContainerId) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *StartContainerRequest) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.ContainerId) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *StartContainerResponse) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ return n -+} -+ -+func (m *StopContainerRequest) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.ContainerId) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Timeout != 0 { -+ n += 1 + sovApi(uint64(m.Timeout)) -+ } -+ return n -+} -+ -+func (m *StopContainerResponse) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ return n -+} -+ -+func (m *RemoveContainerRequest) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.ContainerId) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *RemoveContainerResponse) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ return n -+} -+ -+func (m *ContainerStateValue) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.State != 0 { -+ n += 1 + sovApi(uint64(m.State)) -+ } -+ return n -+} -+ -+func (m *ContainerFilter) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.Id) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.State != nil { -+ l = m.State.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ l = len(m.PodSandboxId) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if len(m.LabelSelector) > 0 { -+ for k, v := range m.LabelSelector { -+ _ = k -+ _ = v -+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v))) -+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize)) -+ } -+ } -+ return n -+} -+ -+func (m *ListContainersRequest) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.Filter != nil { -+ l = m.Filter.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *Container) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.Id) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ l = len(m.PodSandboxId) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Metadata != nil { -+ l = m.Metadata.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Image != nil { -+ l = m.Image.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ l = len(m.ImageRef) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.State != 0 { -+ n += 1 + sovApi(uint64(m.State)) -+ } -+ if m.CreatedAt != 0 { -+ n += 1 + sovApi(uint64(m.CreatedAt)) -+ } -+ if len(m.Labels) > 0 { -+ for k, v := range m.Labels { -+ _ = k -+ _ = v -+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v))) -+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize)) -+ } -+ } -+ if len(m.Annotations) > 0 { -+ for k, v := range m.Annotations { -+ _ = k -+ _ = v -+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v))) -+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize)) -+ } -+ } -+ return n -+} -+ -+func (m *ListContainersResponse) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if len(m.Containers) > 0 { -+ for _, e := range m.Containers { -+ l = e.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ } -+ return n -+} -+ -+func (m *ContainerStatusRequest) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.ContainerId) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Verbose { -+ n += 2 -+ } -+ return n -+} -+ -+func (m *ContainerStatus) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.Id) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Metadata != nil { -+ l = m.Metadata.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.State != 0 { -+ n += 1 + sovApi(uint64(m.State)) -+ } -+ if m.CreatedAt != 0 { -+ n += 1 + sovApi(uint64(m.CreatedAt)) -+ } -+ if m.StartedAt != 0 { -+ n += 1 + sovApi(uint64(m.StartedAt)) -+ } -+ if m.FinishedAt != 0 { -+ n += 1 + sovApi(uint64(m.FinishedAt)) -+ } -+ if m.ExitCode != 0 { -+ n += 1 + sovApi(uint64(m.ExitCode)) -+ } -+ if m.Image != nil { -+ l = m.Image.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ l = len(m.ImageRef) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ l = len(m.Reason) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ l = len(m.Message) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if len(m.Labels) > 0 { -+ for k, v := range m.Labels { -+ _ = k -+ _ = v -+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v))) -+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize)) -+ } -+ } -+ if len(m.Annotations) > 0 { -+ for k, v := range m.Annotations { -+ _ = k -+ _ = v -+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v))) -+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize)) -+ } -+ } -+ if len(m.Mounts) > 0 { -+ for _, e := range m.Mounts { -+ l = e.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ } -+ l = len(m.LogPath) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Resources != nil { -+ l = m.Resources.Size() -+ n += 2 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *ContainerStatusResponse) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.Status != nil { -+ l = m.Status.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if len(m.Info) > 0 { -+ for k, v := range m.Info { -+ _ = k -+ _ = v -+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v))) -+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize)) -+ } -+ } -+ return n -+} -+ -+func (m *ContainerResources) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.Linux != nil { -+ l = m.Linux.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Windows != nil { -+ l = m.Windows.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *UpdateContainerResourcesRequest) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.ContainerId) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Linux != nil { -+ l = m.Linux.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Windows != nil { -+ l = m.Windows.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if len(m.Annotations) > 0 { -+ for k, v := range m.Annotations { -+ _ = k -+ _ = v -+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v))) -+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize)) -+ } -+ } -+ return n -+} -+ -+func (m *UpdateContainerResourcesResponse) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ return n -+} -+ -+func (m *ExecSyncRequest) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.ContainerId) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if len(m.Cmd) > 0 { -+ for _, s := range m.Cmd { -+ l = len(s) -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ } -+ if m.Timeout != 0 { -+ n += 1 + sovApi(uint64(m.Timeout)) -+ } -+ return n -+} -+ -+func (m *ExecSyncResponse) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.Stdout) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ l = len(m.Stderr) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.ExitCode != 0 { -+ n += 1 + sovApi(uint64(m.ExitCode)) -+ } -+ return n -+} -+ -+func (m *ExecRequest) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.ContainerId) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if len(m.Cmd) > 0 { -+ for _, s := range m.Cmd { -+ l = len(s) -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ } -+ if m.Tty { -+ n += 2 -+ } -+ if m.Stdin { -+ n += 2 -+ } -+ if m.Stdout { -+ n += 2 -+ } -+ if m.Stderr { -+ n += 2 -+ } -+ return n -+} -+ -+func (m *ExecResponse) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.Url) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *AttachRequest) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.ContainerId) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Stdin { -+ n += 2 -+ } -+ if m.Tty { -+ n += 2 -+ } -+ if m.Stdout { -+ n += 2 -+ } -+ if m.Stderr { -+ n += 2 -+ } -+ return n -+} -+ -+func (m *AttachResponse) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.Url) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *PortForwardRequest) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.PodSandboxId) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if len(m.Port) > 0 { -+ l = 0 -+ for _, e := range m.Port { -+ l += sovApi(uint64(e)) -+ } -+ n += 1 + sovApi(uint64(l)) + l -+ } -+ return n -+} -+ -+func (m *PortForwardResponse) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.Url) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *ImageFilter) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.Image != nil { -+ l = m.Image.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *ListImagesRequest) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.Filter != nil { -+ l = m.Filter.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *Image) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.Id) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if len(m.RepoTags) > 0 { -+ for _, s := range m.RepoTags { -+ l = len(s) -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ } -+ if len(m.RepoDigests) > 0 { -+ for _, s := range m.RepoDigests { -+ l = len(s) -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ } -+ if m.Size_ != 0 { -+ n += 1 + sovApi(uint64(m.Size_)) -+ } -+ if m.Uid != nil { -+ l = m.Uid.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ l = len(m.Username) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Spec != nil { -+ l = m.Spec.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Pinned { -+ n += 2 -+ } -+ return n -+} -+ -+func (m *ListImagesResponse) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if len(m.Images) > 0 { -+ for _, e := range m.Images { -+ l = e.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ } -+ return n -+} -+ -+func (m *ImageStatusRequest) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.Image != nil { -+ l = m.Image.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Verbose { -+ n += 2 -+ } -+ return n -+} -+ -+func (m *ImageStatusResponse) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.Image != nil { -+ l = m.Image.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if len(m.Info) > 0 { -+ for k, v := range m.Info { -+ _ = k -+ _ = v -+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v))) -+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize)) -+ } -+ } -+ return n -+} -+ -+func (m *AuthConfig) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.Username) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ l = len(m.Password) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ l = len(m.Auth) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ l = len(m.ServerAddress) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ l = len(m.IdentityToken) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ l = len(m.RegistryToken) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *PullImageRequest) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.Image != nil { -+ l = m.Image.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Auth != nil { -+ l = m.Auth.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.SandboxConfig != nil { -+ l = m.SandboxConfig.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *PullImageResponse) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.ImageRef) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *RemoveImageRequest) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.Image != nil { -+ l = m.Image.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *RemoveImageResponse) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ return n -+} -+ -+func (m *NetworkConfig) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.PodCidr) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *RuntimeConfig) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.NetworkConfig != nil { -+ l = m.NetworkConfig.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *UpdateRuntimeConfigRequest) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.RuntimeConfig != nil { -+ l = m.RuntimeConfig.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *UpdateRuntimeConfigResponse) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ return n -+} -+ -+func (m *RuntimeCondition) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.Type) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Status { -+ n += 2 -+ } -+ l = len(m.Reason) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ l = len(m.Message) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *RuntimeStatus) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if len(m.Conditions) > 0 { -+ for _, e := range m.Conditions { -+ l = e.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ } -+ return n -+} -+ -+func (m *StatusRequest) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.Verbose { -+ n += 2 -+ } -+ return n -+} -+ -+func (m *StatusResponse) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.Status != nil { -+ l = m.Status.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if len(m.Info) > 0 { -+ for k, v := range m.Info { -+ _ = k -+ _ = v -+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v))) -+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize)) -+ } -+ } -+ return n -+} -+ -+func (m *ImageFsInfoRequest) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ return n -+} -+ -+func (m *UInt64Value) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.Value != 0 { -+ n += 1 + sovApi(uint64(m.Value)) -+ } -+ return n -+} -+ -+func (m *FilesystemIdentifier) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.Mountpoint) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *FilesystemUsage) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.Timestamp != 0 { -+ n += 1 + sovApi(uint64(m.Timestamp)) -+ } -+ if m.FsId != nil { -+ l = m.FsId.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.UsedBytes != nil { -+ l = m.UsedBytes.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.InodesUsed != nil { -+ l = m.InodesUsed.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *ImageFsInfoResponse) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if len(m.ImageFilesystems) > 0 { -+ for _, e := range m.ImageFilesystems { -+ l = e.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ } -+ return n -+} -+ -+func (m *ContainerStatsRequest) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.ContainerId) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *ContainerStatsResponse) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.Stats != nil { -+ l = m.Stats.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *ListContainerStatsRequest) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.Filter != nil { -+ l = m.Filter.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *ContainerStatsFilter) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.Id) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ l = len(m.PodSandboxId) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if len(m.LabelSelector) > 0 { -+ for k, v := range m.LabelSelector { -+ _ = k -+ _ = v -+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v))) -+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize)) -+ } -+ } -+ return n -+} -+ -+func (m *ListContainerStatsResponse) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if len(m.Stats) > 0 { -+ for _, e := range m.Stats { -+ l = e.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ } -+ return n -+} -+ -+func (m *ContainerAttributes) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.Id) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Metadata != nil { -+ l = m.Metadata.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if len(m.Labels) > 0 { -+ for k, v := range m.Labels { -+ _ = k -+ _ = v -+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v))) -+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize)) -+ } -+ } -+ if len(m.Annotations) > 0 { -+ for k, v := range m.Annotations { -+ _ = k -+ _ = v -+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v))) -+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize)) -+ } -+ } -+ return n -+} -+ -+func (m *ContainerStats) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.Attributes != nil { -+ l = m.Attributes.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Cpu != nil { -+ l = m.Cpu.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Memory != nil { -+ l = m.Memory.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.WritableLayer != nil { -+ l = m.WritableLayer.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *CpuUsage) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.Timestamp != 0 { -+ n += 1 + sovApi(uint64(m.Timestamp)) -+ } -+ if m.UsageCoreNanoSeconds != nil { -+ l = m.UsageCoreNanoSeconds.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.UsageNanoCores != nil { -+ l = m.UsageNanoCores.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *MemoryUsage) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ if m.Timestamp != 0 { -+ n += 1 + sovApi(uint64(m.Timestamp)) -+ } -+ if m.WorkingSetBytes != nil { -+ l = m.WorkingSetBytes.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.AvailableBytes != nil { -+ l = m.AvailableBytes.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.UsageBytes != nil { -+ l = m.UsageBytes.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.RssBytes != nil { -+ l = m.RssBytes.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.PageFaults != nil { -+ l = m.PageFaults.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.MajorPageFaults != nil { -+ l = m.MajorPageFaults.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *ReopenContainerLogRequest) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.ContainerId) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func (m *ReopenContainerLogResponse) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ return n -+} -+ -+func (m *CheckpointContainerRequest) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.ContainerId) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ l = len(m.Location) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.Timeout != 0 { -+ n += 1 + sovApi(uint64(m.Timeout)) -+ } -+ return n -+} -+ -+func (m *CheckpointContainerResponse) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ return n -+} -+ -+func (m *GetEventsRequest) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ return n -+} -+ -+func (m *ContainerEventResponse) Size() (n int) { -+ if m == nil { -+ return 0 -+ } -+ var l int -+ _ = l -+ l = len(m.ContainerId) -+ if l > 0 { -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ if m.ContainerEventType != 0 { -+ n += 1 + sovApi(uint64(m.ContainerEventType)) -+ } -+ if m.CreatedAt != 0 { -+ n += 1 + sovApi(uint64(m.CreatedAt)) -+ } -+ if m.PodSandboxMetadata != nil { -+ l = m.PodSandboxMetadata.Size() -+ n += 1 + l + sovApi(uint64(l)) -+ } -+ return n -+} -+ -+func sovApi(x uint64) (n int) { -+ return (math_bits.Len64(x|1) + 6) / 7 -+} -+func sozApi(x uint64) (n int) { -+ return sovApi(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -+} -+func (this *VersionRequest) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&VersionRequest{`, -+ `Version:` + fmt.Sprintf("%v", this.Version) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *VersionResponse) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&VersionResponse{`, -+ `Version:` + fmt.Sprintf("%v", this.Version) + `,`, -+ `RuntimeName:` + fmt.Sprintf("%v", this.RuntimeName) + `,`, -+ `RuntimeVersion:` + fmt.Sprintf("%v", this.RuntimeVersion) + `,`, -+ `RuntimeApiVersion:` + fmt.Sprintf("%v", this.RuntimeApiVersion) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *DNSConfig) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&DNSConfig{`, -+ `Servers:` + fmt.Sprintf("%v", this.Servers) + `,`, -+ `Searches:` + fmt.Sprintf("%v", this.Searches) + `,`, -+ `Options:` + fmt.Sprintf("%v", this.Options) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *PortMapping) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&PortMapping{`, -+ `Protocol:` + fmt.Sprintf("%v", this.Protocol) + `,`, -+ `ContainerPort:` + fmt.Sprintf("%v", this.ContainerPort) + `,`, -+ `HostPort:` + fmt.Sprintf("%v", this.HostPort) + `,`, -+ `HostIp:` + fmt.Sprintf("%v", this.HostIp) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *Mount) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&Mount{`, -+ `ContainerPath:` + fmt.Sprintf("%v", this.ContainerPath) + `,`, -+ `HostPath:` + fmt.Sprintf("%v", this.HostPath) + `,`, -+ `Readonly:` + fmt.Sprintf("%v", this.Readonly) + `,`, -+ `SelinuxRelabel:` + fmt.Sprintf("%v", this.SelinuxRelabel) + `,`, -+ `Propagation:` + fmt.Sprintf("%v", this.Propagation) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *IDMapping) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&IDMapping{`, -+ `HostId:` + fmt.Sprintf("%v", this.HostId) + `,`, -+ `ContainerId:` + fmt.Sprintf("%v", this.ContainerId) + `,`, -+ `Length:` + fmt.Sprintf("%v", this.Length) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *UserNamespace) String() string { -+ if this == nil { -+ return "nil" -+ } -+ repeatedStringForUids := "[]*IDMapping{" -+ for _, f := range this.Uids { -+ repeatedStringForUids += strings.Replace(f.String(), "IDMapping", "IDMapping", 1) + "," -+ } -+ repeatedStringForUids += "}" -+ repeatedStringForGids := "[]*IDMapping{" -+ for _, f := range this.Gids { -+ repeatedStringForGids += strings.Replace(f.String(), "IDMapping", "IDMapping", 1) + "," -+ } -+ repeatedStringForGids += "}" -+ s := strings.Join([]string{`&UserNamespace{`, -+ `Mode:` + fmt.Sprintf("%v", this.Mode) + `,`, -+ `Uids:` + repeatedStringForUids + `,`, -+ `Gids:` + repeatedStringForGids + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *NamespaceOption) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&NamespaceOption{`, -+ `Network:` + fmt.Sprintf("%v", this.Network) + `,`, -+ `Pid:` + fmt.Sprintf("%v", this.Pid) + `,`, -+ `Ipc:` + fmt.Sprintf("%v", this.Ipc) + `,`, -+ `TargetId:` + fmt.Sprintf("%v", this.TargetId) + `,`, -+ `UsernsOptions:` + strings.Replace(this.UsernsOptions.String(), "UserNamespace", "UserNamespace", 1) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *Int64Value) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&Int64Value{`, -+ `Value:` + fmt.Sprintf("%v", this.Value) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *LinuxSandboxSecurityContext) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&LinuxSandboxSecurityContext{`, -+ `NamespaceOptions:` + strings.Replace(this.NamespaceOptions.String(), "NamespaceOption", "NamespaceOption", 1) + `,`, -+ `SelinuxOptions:` + strings.Replace(this.SelinuxOptions.String(), "SELinuxOption", "SELinuxOption", 1) + `,`, -+ `RunAsUser:` + strings.Replace(this.RunAsUser.String(), "Int64Value", "Int64Value", 1) + `,`, -+ `ReadonlyRootfs:` + fmt.Sprintf("%v", this.ReadonlyRootfs) + `,`, -+ `SupplementalGroups:` + fmt.Sprintf("%v", this.SupplementalGroups) + `,`, -+ `Privileged:` + fmt.Sprintf("%v", this.Privileged) + `,`, -+ `SeccompProfilePath:` + fmt.Sprintf("%v", this.SeccompProfilePath) + `,`, -+ `RunAsGroup:` + strings.Replace(this.RunAsGroup.String(), "Int64Value", "Int64Value", 1) + `,`, -+ `Seccomp:` + strings.Replace(this.Seccomp.String(), "SecurityProfile", "SecurityProfile", 1) + `,`, -+ `Apparmor:` + strings.Replace(this.Apparmor.String(), "SecurityProfile", "SecurityProfile", 1) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *SecurityProfile) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&SecurityProfile{`, -+ `ProfileType:` + fmt.Sprintf("%v", this.ProfileType) + `,`, -+ `LocalhostRef:` + fmt.Sprintf("%v", this.LocalhostRef) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *LinuxPodSandboxConfig) String() string { -+ if this == nil { -+ return "nil" -+ } -+ keysForSysctls := make([]string, 0, len(this.Sysctls)) -+ for k := range this.Sysctls { -+ keysForSysctls = append(keysForSysctls, k) -+ } -+ github_com_gogo_protobuf_sortkeys.Strings(keysForSysctls) -+ mapStringForSysctls := "map[string]string{" -+ for _, k := range keysForSysctls { -+ mapStringForSysctls += fmt.Sprintf("%v: %v,", k, this.Sysctls[k]) -+ } -+ mapStringForSysctls += "}" -+ s := strings.Join([]string{`&LinuxPodSandboxConfig{`, -+ `CgroupParent:` + fmt.Sprintf("%v", this.CgroupParent) + `,`, -+ `SecurityContext:` + strings.Replace(this.SecurityContext.String(), "LinuxSandboxSecurityContext", "LinuxSandboxSecurityContext", 1) + `,`, -+ `Sysctls:` + mapStringForSysctls + `,`, -+ `Overhead:` + strings.Replace(this.Overhead.String(), "LinuxContainerResources", "LinuxContainerResources", 1) + `,`, -+ `Resources:` + strings.Replace(this.Resources.String(), "LinuxContainerResources", "LinuxContainerResources", 1) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *PodSandboxMetadata) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&PodSandboxMetadata{`, -+ `Name:` + fmt.Sprintf("%v", this.Name) + `,`, -+ `Uid:` + fmt.Sprintf("%v", this.Uid) + `,`, -+ `Namespace:` + fmt.Sprintf("%v", this.Namespace) + `,`, -+ `Attempt:` + fmt.Sprintf("%v", this.Attempt) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *PodSandboxConfig) String() string { -+ if this == nil { -+ return "nil" -+ } -+ repeatedStringForPortMappings := "[]*PortMapping{" -+ for _, f := range this.PortMappings { -+ repeatedStringForPortMappings += strings.Replace(f.String(), "PortMapping", "PortMapping", 1) + "," -+ } -+ repeatedStringForPortMappings += "}" -+ keysForLabels := make([]string, 0, len(this.Labels)) -+ for k := range this.Labels { -+ keysForLabels = append(keysForLabels, k) -+ } -+ github_com_gogo_protobuf_sortkeys.Strings(keysForLabels) -+ mapStringForLabels := "map[string]string{" -+ for _, k := range keysForLabels { -+ mapStringForLabels += fmt.Sprintf("%v: %v,", k, this.Labels[k]) -+ } -+ mapStringForLabels += "}" -+ keysForAnnotations := make([]string, 0, len(this.Annotations)) -+ for k := range this.Annotations { -+ keysForAnnotations = append(keysForAnnotations, k) -+ } -+ github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations) -+ mapStringForAnnotations := "map[string]string{" -+ for _, k := range keysForAnnotations { -+ mapStringForAnnotations += fmt.Sprintf("%v: %v,", k, this.Annotations[k]) -+ } -+ mapStringForAnnotations += "}" -+ s := strings.Join([]string{`&PodSandboxConfig{`, -+ `Metadata:` + strings.Replace(this.Metadata.String(), "PodSandboxMetadata", "PodSandboxMetadata", 1) + `,`, -+ `Hostname:` + fmt.Sprintf("%v", this.Hostname) + `,`, -+ `LogDirectory:` + fmt.Sprintf("%v", this.LogDirectory) + `,`, -+ `DnsConfig:` + strings.Replace(this.DnsConfig.String(), "DNSConfig", "DNSConfig", 1) + `,`, -+ `PortMappings:` + repeatedStringForPortMappings + `,`, -+ `Labels:` + mapStringForLabels + `,`, -+ `Annotations:` + mapStringForAnnotations + `,`, -+ `Linux:` + strings.Replace(this.Linux.String(), "LinuxPodSandboxConfig", "LinuxPodSandboxConfig", 1) + `,`, -+ `Windows:` + strings.Replace(this.Windows.String(), "WindowsPodSandboxConfig", "WindowsPodSandboxConfig", 1) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *RunPodSandboxRequest) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&RunPodSandboxRequest{`, -+ `Config:` + strings.Replace(this.Config.String(), "PodSandboxConfig", "PodSandboxConfig", 1) + `,`, -+ `RuntimeHandler:` + fmt.Sprintf("%v", this.RuntimeHandler) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *RunPodSandboxResponse) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&RunPodSandboxResponse{`, -+ `PodSandboxId:` + fmt.Sprintf("%v", this.PodSandboxId) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *StopPodSandboxRequest) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&StopPodSandboxRequest{`, -+ `PodSandboxId:` + fmt.Sprintf("%v", this.PodSandboxId) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *StopPodSandboxResponse) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&StopPodSandboxResponse{`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *RemovePodSandboxRequest) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&RemovePodSandboxRequest{`, -+ `PodSandboxId:` + fmt.Sprintf("%v", this.PodSandboxId) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *RemovePodSandboxResponse) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&RemovePodSandboxResponse{`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *PodSandboxStatusRequest) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&PodSandboxStatusRequest{`, -+ `PodSandboxId:` + fmt.Sprintf("%v", this.PodSandboxId) + `,`, -+ `Verbose:` + fmt.Sprintf("%v", this.Verbose) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *PodIP) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&PodIP{`, -+ `Ip:` + fmt.Sprintf("%v", this.Ip) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *PodSandboxNetworkStatus) String() string { -+ if this == nil { -+ return "nil" -+ } -+ repeatedStringForAdditionalIps := "[]*PodIP{" -+ for _, f := range this.AdditionalIps { -+ repeatedStringForAdditionalIps += strings.Replace(f.String(), "PodIP", "PodIP", 1) + "," -+ } -+ repeatedStringForAdditionalIps += "}" -+ s := strings.Join([]string{`&PodSandboxNetworkStatus{`, -+ `Ip:` + fmt.Sprintf("%v", this.Ip) + `,`, -+ `AdditionalIps:` + repeatedStringForAdditionalIps + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *Namespace) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&Namespace{`, -+ `Options:` + strings.Replace(this.Options.String(), "NamespaceOption", "NamespaceOption", 1) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *LinuxPodSandboxStatus) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&LinuxPodSandboxStatus{`, -+ `Namespaces:` + strings.Replace(this.Namespaces.String(), "Namespace", "Namespace", 1) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *PodSandboxStatus) String() string { -+ if this == nil { -+ return "nil" -+ } -+ keysForLabels := make([]string, 0, len(this.Labels)) -+ for k := range this.Labels { -+ keysForLabels = append(keysForLabels, k) -+ } -+ github_com_gogo_protobuf_sortkeys.Strings(keysForLabels) -+ mapStringForLabels := "map[string]string{" -+ for _, k := range keysForLabels { -+ mapStringForLabels += fmt.Sprintf("%v: %v,", k, this.Labels[k]) -+ } -+ mapStringForLabels += "}" -+ keysForAnnotations := make([]string, 0, len(this.Annotations)) -+ for k := range this.Annotations { -+ keysForAnnotations = append(keysForAnnotations, k) -+ } -+ github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations) -+ mapStringForAnnotations := "map[string]string{" -+ for _, k := range keysForAnnotations { -+ mapStringForAnnotations += fmt.Sprintf("%v: %v,", k, this.Annotations[k]) -+ } -+ mapStringForAnnotations += "}" -+ s := strings.Join([]string{`&PodSandboxStatus{`, -+ `Id:` + fmt.Sprintf("%v", this.Id) + `,`, -+ `Metadata:` + strings.Replace(this.Metadata.String(), "PodSandboxMetadata", "PodSandboxMetadata", 1) + `,`, -+ `State:` + fmt.Sprintf("%v", this.State) + `,`, -+ `CreatedAt:` + fmt.Sprintf("%v", this.CreatedAt) + `,`, -+ `Network:` + strings.Replace(this.Network.String(), "PodSandboxNetworkStatus", "PodSandboxNetworkStatus", 1) + `,`, -+ `Linux:` + strings.Replace(this.Linux.String(), "LinuxPodSandboxStatus", "LinuxPodSandboxStatus", 1) + `,`, -+ `Labels:` + mapStringForLabels + `,`, -+ `Annotations:` + mapStringForAnnotations + `,`, -+ `RuntimeHandler:` + fmt.Sprintf("%v", this.RuntimeHandler) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *PodSandboxStatusResponse) String() string { -+ if this == nil { -+ return "nil" -+ } -+ keysForInfo := make([]string, 0, len(this.Info)) -+ for k := range this.Info { -+ keysForInfo = append(keysForInfo, k) -+ } -+ github_com_gogo_protobuf_sortkeys.Strings(keysForInfo) -+ mapStringForInfo := "map[string]string{" -+ for _, k := range keysForInfo { -+ mapStringForInfo += fmt.Sprintf("%v: %v,", k, this.Info[k]) -+ } -+ mapStringForInfo += "}" -+ s := strings.Join([]string{`&PodSandboxStatusResponse{`, -+ `Status:` + strings.Replace(this.Status.String(), "PodSandboxStatus", "PodSandboxStatus", 1) + `,`, -+ `Info:` + mapStringForInfo + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *PodSandboxStateValue) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&PodSandboxStateValue{`, -+ `State:` + fmt.Sprintf("%v", this.State) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *PodSandboxFilter) String() string { -+ if this == nil { -+ return "nil" -+ } -+ keysForLabelSelector := make([]string, 0, len(this.LabelSelector)) -+ for k := range this.LabelSelector { -+ keysForLabelSelector = append(keysForLabelSelector, k) -+ } -+ github_com_gogo_protobuf_sortkeys.Strings(keysForLabelSelector) -+ mapStringForLabelSelector := "map[string]string{" -+ for _, k := range keysForLabelSelector { -+ mapStringForLabelSelector += fmt.Sprintf("%v: %v,", k, this.LabelSelector[k]) -+ } -+ mapStringForLabelSelector += "}" -+ s := strings.Join([]string{`&PodSandboxFilter{`, -+ `Id:` + fmt.Sprintf("%v", this.Id) + `,`, -+ `State:` + strings.Replace(this.State.String(), "PodSandboxStateValue", "PodSandboxStateValue", 1) + `,`, -+ `LabelSelector:` + mapStringForLabelSelector + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *ListPodSandboxRequest) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&ListPodSandboxRequest{`, -+ `Filter:` + strings.Replace(this.Filter.String(), "PodSandboxFilter", "PodSandboxFilter", 1) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *PodSandbox) String() string { -+ if this == nil { -+ return "nil" -+ } -+ keysForLabels := make([]string, 0, len(this.Labels)) -+ for k := range this.Labels { -+ keysForLabels = append(keysForLabels, k) -+ } -+ github_com_gogo_protobuf_sortkeys.Strings(keysForLabels) -+ mapStringForLabels := "map[string]string{" -+ for _, k := range keysForLabels { -+ mapStringForLabels += fmt.Sprintf("%v: %v,", k, this.Labels[k]) -+ } -+ mapStringForLabels += "}" -+ keysForAnnotations := make([]string, 0, len(this.Annotations)) -+ for k := range this.Annotations { -+ keysForAnnotations = append(keysForAnnotations, k) -+ } -+ github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations) -+ mapStringForAnnotations := "map[string]string{" -+ for _, k := range keysForAnnotations { -+ mapStringForAnnotations += fmt.Sprintf("%v: %v,", k, this.Annotations[k]) -+ } -+ mapStringForAnnotations += "}" -+ s := strings.Join([]string{`&PodSandbox{`, -+ `Id:` + fmt.Sprintf("%v", this.Id) + `,`, -+ `Metadata:` + strings.Replace(this.Metadata.String(), "PodSandboxMetadata", "PodSandboxMetadata", 1) + `,`, -+ `State:` + fmt.Sprintf("%v", this.State) + `,`, -+ `CreatedAt:` + fmt.Sprintf("%v", this.CreatedAt) + `,`, -+ `Labels:` + mapStringForLabels + `,`, -+ `Annotations:` + mapStringForAnnotations + `,`, -+ `RuntimeHandler:` + fmt.Sprintf("%v", this.RuntimeHandler) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *ListPodSandboxResponse) String() string { -+ if this == nil { -+ return "nil" -+ } -+ repeatedStringForItems := "[]*PodSandbox{" -+ for _, f := range this.Items { -+ repeatedStringForItems += strings.Replace(f.String(), "PodSandbox", "PodSandbox", 1) + "," -+ } -+ repeatedStringForItems += "}" -+ s := strings.Join([]string{`&ListPodSandboxResponse{`, -+ `Items:` + repeatedStringForItems + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *PodSandboxStatsRequest) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&PodSandboxStatsRequest{`, -+ `PodSandboxId:` + fmt.Sprintf("%v", this.PodSandboxId) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *PodSandboxStatsResponse) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&PodSandboxStatsResponse{`, -+ `Stats:` + strings.Replace(this.Stats.String(), "PodSandboxStats", "PodSandboxStats", 1) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *PodSandboxStatsFilter) String() string { -+ if this == nil { -+ return "nil" -+ } -+ keysForLabelSelector := make([]string, 0, len(this.LabelSelector)) -+ for k := range this.LabelSelector { -+ keysForLabelSelector = append(keysForLabelSelector, k) -+ } -+ github_com_gogo_protobuf_sortkeys.Strings(keysForLabelSelector) -+ mapStringForLabelSelector := "map[string]string{" -+ for _, k := range keysForLabelSelector { -+ mapStringForLabelSelector += fmt.Sprintf("%v: %v,", k, this.LabelSelector[k]) -+ } -+ mapStringForLabelSelector += "}" -+ s := strings.Join([]string{`&PodSandboxStatsFilter{`, -+ `Id:` + fmt.Sprintf("%v", this.Id) + `,`, -+ `LabelSelector:` + mapStringForLabelSelector + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *ListPodSandboxStatsRequest) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&ListPodSandboxStatsRequest{`, -+ `Filter:` + strings.Replace(this.Filter.String(), "PodSandboxStatsFilter", "PodSandboxStatsFilter", 1) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *ListPodSandboxStatsResponse) String() string { -+ if this == nil { -+ return "nil" -+ } -+ repeatedStringForStats := "[]*PodSandboxStats{" -+ for _, f := range this.Stats { -+ repeatedStringForStats += strings.Replace(f.String(), "PodSandboxStats", "PodSandboxStats", 1) + "," -+ } -+ repeatedStringForStats += "}" -+ s := strings.Join([]string{`&ListPodSandboxStatsResponse{`, -+ `Stats:` + repeatedStringForStats + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *PodSandboxAttributes) String() string { -+ if this == nil { -+ return "nil" -+ } -+ keysForLabels := make([]string, 0, len(this.Labels)) -+ for k := range this.Labels { -+ keysForLabels = append(keysForLabels, k) -+ } -+ github_com_gogo_protobuf_sortkeys.Strings(keysForLabels) -+ mapStringForLabels := "map[string]string{" -+ for _, k := range keysForLabels { -+ mapStringForLabels += fmt.Sprintf("%v: %v,", k, this.Labels[k]) -+ } -+ mapStringForLabels += "}" -+ keysForAnnotations := make([]string, 0, len(this.Annotations)) -+ for k := range this.Annotations { -+ keysForAnnotations = append(keysForAnnotations, k) -+ } -+ github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations) -+ mapStringForAnnotations := "map[string]string{" -+ for _, k := range keysForAnnotations { -+ mapStringForAnnotations += fmt.Sprintf("%v: %v,", k, this.Annotations[k]) -+ } -+ mapStringForAnnotations += "}" -+ s := strings.Join([]string{`&PodSandboxAttributes{`, -+ `Id:` + fmt.Sprintf("%v", this.Id) + `,`, -+ `Metadata:` + strings.Replace(this.Metadata.String(), "PodSandboxMetadata", "PodSandboxMetadata", 1) + `,`, -+ `Labels:` + mapStringForLabels + `,`, -+ `Annotations:` + mapStringForAnnotations + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *PodSandboxStats) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&PodSandboxStats{`, -+ `Attributes:` + strings.Replace(this.Attributes.String(), "PodSandboxAttributes", "PodSandboxAttributes", 1) + `,`, -+ `Linux:` + strings.Replace(this.Linux.String(), "LinuxPodSandboxStats", "LinuxPodSandboxStats", 1) + `,`, -+ `Windows:` + strings.Replace(this.Windows.String(), "WindowsPodSandboxStats", "WindowsPodSandboxStats", 1) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *LinuxPodSandboxStats) String() string { -+ if this == nil { -+ return "nil" -+ } -+ repeatedStringForContainers := "[]*ContainerStats{" -+ for _, f := range this.Containers { -+ repeatedStringForContainers += strings.Replace(f.String(), "ContainerStats", "ContainerStats", 1) + "," -+ } -+ repeatedStringForContainers += "}" -+ s := strings.Join([]string{`&LinuxPodSandboxStats{`, -+ `Cpu:` + strings.Replace(this.Cpu.String(), "CpuUsage", "CpuUsage", 1) + `,`, -+ `Memory:` + strings.Replace(this.Memory.String(), "MemoryUsage", "MemoryUsage", 1) + `,`, -+ `Network:` + strings.Replace(this.Network.String(), "NetworkUsage", "NetworkUsage", 1) + `,`, -+ `Process:` + strings.Replace(this.Process.String(), "ProcessUsage", "ProcessUsage", 1) + `,`, -+ `Containers:` + repeatedStringForContainers + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *WindowsPodSandboxStats) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&WindowsPodSandboxStats{`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *NetworkUsage) String() string { -+ if this == nil { -+ return "nil" -+ } -+ repeatedStringForInterfaces := "[]*NetworkInterfaceUsage{" -+ for _, f := range this.Interfaces { -+ repeatedStringForInterfaces += strings.Replace(f.String(), "NetworkInterfaceUsage", "NetworkInterfaceUsage", 1) + "," -+ } -+ repeatedStringForInterfaces += "}" -+ s := strings.Join([]string{`&NetworkUsage{`, -+ `Timestamp:` + fmt.Sprintf("%v", this.Timestamp) + `,`, -+ `DefaultInterface:` + strings.Replace(this.DefaultInterface.String(), "NetworkInterfaceUsage", "NetworkInterfaceUsage", 1) + `,`, -+ `Interfaces:` + repeatedStringForInterfaces + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *NetworkInterfaceUsage) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&NetworkInterfaceUsage{`, -+ `Name:` + fmt.Sprintf("%v", this.Name) + `,`, -+ `RxBytes:` + strings.Replace(this.RxBytes.String(), "UInt64Value", "UInt64Value", 1) + `,`, -+ `RxErrors:` + strings.Replace(this.RxErrors.String(), "UInt64Value", "UInt64Value", 1) + `,`, -+ `TxBytes:` + strings.Replace(this.TxBytes.String(), "UInt64Value", "UInt64Value", 1) + `,`, -+ `TxErrors:` + strings.Replace(this.TxErrors.String(), "UInt64Value", "UInt64Value", 1) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *ProcessUsage) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&ProcessUsage{`, -+ `Timestamp:` + fmt.Sprintf("%v", this.Timestamp) + `,`, -+ `ProcessCount:` + strings.Replace(this.ProcessCount.String(), "UInt64Value", "UInt64Value", 1) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *ImageSpec) String() string { -+ if this == nil { -+ return "nil" -+ } -+ keysForAnnotations := make([]string, 0, len(this.Annotations)) -+ for k := range this.Annotations { -+ keysForAnnotations = append(keysForAnnotations, k) -+ } -+ github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations) -+ mapStringForAnnotations := "map[string]string{" -+ for _, k := range keysForAnnotations { -+ mapStringForAnnotations += fmt.Sprintf("%v: %v,", k, this.Annotations[k]) -+ } -+ mapStringForAnnotations += "}" -+ s := strings.Join([]string{`&ImageSpec{`, -+ `Image:` + fmt.Sprintf("%v", this.Image) + `,`, -+ `Annotations:` + mapStringForAnnotations + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *KeyValue) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&KeyValue{`, -+ `Key:` + fmt.Sprintf("%v", this.Key) + `,`, -+ `Value:` + fmt.Sprintf("%v", this.Value) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *LinuxContainerResources) String() string { -+ if this == nil { -+ return "nil" -+ } -+ repeatedStringForHugepageLimits := "[]*HugepageLimit{" -+ for _, f := range this.HugepageLimits { -+ repeatedStringForHugepageLimits += strings.Replace(f.String(), "HugepageLimit", "HugepageLimit", 1) + "," -+ } -+ repeatedStringForHugepageLimits += "}" -+ keysForUnified := make([]string, 0, len(this.Unified)) -+ for k := range this.Unified { -+ keysForUnified = append(keysForUnified, k) -+ } -+ github_com_gogo_protobuf_sortkeys.Strings(keysForUnified) -+ mapStringForUnified := "map[string]string{" -+ for _, k := range keysForUnified { -+ mapStringForUnified += fmt.Sprintf("%v: %v,", k, this.Unified[k]) -+ } -+ mapStringForUnified += "}" -+ s := strings.Join([]string{`&LinuxContainerResources{`, -+ `CpuPeriod:` + fmt.Sprintf("%v", this.CpuPeriod) + `,`, -+ `CpuQuota:` + fmt.Sprintf("%v", this.CpuQuota) + `,`, -+ `CpuShares:` + fmt.Sprintf("%v", this.CpuShares) + `,`, -+ `MemoryLimitInBytes:` + fmt.Sprintf("%v", this.MemoryLimitInBytes) + `,`, -+ `OomScoreAdj:` + fmt.Sprintf("%v", this.OomScoreAdj) + `,`, -+ `CpusetCpus:` + fmt.Sprintf("%v", this.CpusetCpus) + `,`, -+ `CpusetMems:` + fmt.Sprintf("%v", this.CpusetMems) + `,`, -+ `HugepageLimits:` + repeatedStringForHugepageLimits + `,`, -+ `Unified:` + mapStringForUnified + `,`, -+ `MemorySwapLimitInBytes:` + fmt.Sprintf("%v", this.MemorySwapLimitInBytes) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *HugepageLimit) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&HugepageLimit{`, -+ `PageSize:` + fmt.Sprintf("%v", this.PageSize) + `,`, -+ `Limit:` + fmt.Sprintf("%v", this.Limit) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *SELinuxOption) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&SELinuxOption{`, -+ `User:` + fmt.Sprintf("%v", this.User) + `,`, -+ `Role:` + fmt.Sprintf("%v", this.Role) + `,`, -+ `Type:` + fmt.Sprintf("%v", this.Type) + `,`, -+ `Level:` + fmt.Sprintf("%v", this.Level) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *Capability) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&Capability{`, -+ `AddCapabilities:` + fmt.Sprintf("%v", this.AddCapabilities) + `,`, -+ `DropCapabilities:` + fmt.Sprintf("%v", this.DropCapabilities) + `,`, -+ `AddAmbientCapabilities:` + fmt.Sprintf("%v", this.AddAmbientCapabilities) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *LinuxContainerSecurityContext) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&LinuxContainerSecurityContext{`, -+ `Capabilities:` + strings.Replace(this.Capabilities.String(), "Capability", "Capability", 1) + `,`, -+ `Privileged:` + fmt.Sprintf("%v", this.Privileged) + `,`, -+ `NamespaceOptions:` + strings.Replace(this.NamespaceOptions.String(), "NamespaceOption", "NamespaceOption", 1) + `,`, -+ `SelinuxOptions:` + strings.Replace(this.SelinuxOptions.String(), "SELinuxOption", "SELinuxOption", 1) + `,`, -+ `RunAsUser:` + strings.Replace(this.RunAsUser.String(), "Int64Value", "Int64Value", 1) + `,`, -+ `RunAsUsername:` + fmt.Sprintf("%v", this.RunAsUsername) + `,`, -+ `ReadonlyRootfs:` + fmt.Sprintf("%v", this.ReadonlyRootfs) + `,`, -+ `SupplementalGroups:` + fmt.Sprintf("%v", this.SupplementalGroups) + `,`, -+ `ApparmorProfile:` + fmt.Sprintf("%v", this.ApparmorProfile) + `,`, -+ `SeccompProfilePath:` + fmt.Sprintf("%v", this.SeccompProfilePath) + `,`, -+ `NoNewPrivs:` + fmt.Sprintf("%v", this.NoNewPrivs) + `,`, -+ `RunAsGroup:` + strings.Replace(this.RunAsGroup.String(), "Int64Value", "Int64Value", 1) + `,`, -+ `MaskedPaths:` + fmt.Sprintf("%v", this.MaskedPaths) + `,`, -+ `ReadonlyPaths:` + fmt.Sprintf("%v", this.ReadonlyPaths) + `,`, -+ `Seccomp:` + strings.Replace(this.Seccomp.String(), "SecurityProfile", "SecurityProfile", 1) + `,`, -+ `Apparmor:` + strings.Replace(this.Apparmor.String(), "SecurityProfile", "SecurityProfile", 1) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *LinuxContainerConfig) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&LinuxContainerConfig{`, -+ `Resources:` + strings.Replace(this.Resources.String(), "LinuxContainerResources", "LinuxContainerResources", 1) + `,`, -+ `SecurityContext:` + strings.Replace(this.SecurityContext.String(), "LinuxContainerSecurityContext", "LinuxContainerSecurityContext", 1) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *WindowsSandboxSecurityContext) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&WindowsSandboxSecurityContext{`, -+ `RunAsUsername:` + fmt.Sprintf("%v", this.RunAsUsername) + `,`, -+ `CredentialSpec:` + fmt.Sprintf("%v", this.CredentialSpec) + `,`, -+ `HostProcess:` + fmt.Sprintf("%v", this.HostProcess) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *WindowsPodSandboxConfig) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&WindowsPodSandboxConfig{`, -+ `SecurityContext:` + strings.Replace(this.SecurityContext.String(), "WindowsSandboxSecurityContext", "WindowsSandboxSecurityContext", 1) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *WindowsContainerSecurityContext) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&WindowsContainerSecurityContext{`, -+ `RunAsUsername:` + fmt.Sprintf("%v", this.RunAsUsername) + `,`, -+ `CredentialSpec:` + fmt.Sprintf("%v", this.CredentialSpec) + `,`, -+ `HostProcess:` + fmt.Sprintf("%v", this.HostProcess) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *WindowsContainerConfig) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&WindowsContainerConfig{`, -+ `Resources:` + strings.Replace(this.Resources.String(), "WindowsContainerResources", "WindowsContainerResources", 1) + `,`, -+ `SecurityContext:` + strings.Replace(this.SecurityContext.String(), "WindowsContainerSecurityContext", "WindowsContainerSecurityContext", 1) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *WindowsContainerResources) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&WindowsContainerResources{`, -+ `CpuShares:` + fmt.Sprintf("%v", this.CpuShares) + `,`, -+ `CpuCount:` + fmt.Sprintf("%v", this.CpuCount) + `,`, -+ `CpuMaximum:` + fmt.Sprintf("%v", this.CpuMaximum) + `,`, -+ `MemoryLimitInBytes:` + fmt.Sprintf("%v", this.MemoryLimitInBytes) + `,`, -+ `RootfsSizeInBytes:` + fmt.Sprintf("%v", this.RootfsSizeInBytes) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *ContainerMetadata) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&ContainerMetadata{`, -+ `Name:` + fmt.Sprintf("%v", this.Name) + `,`, -+ `Attempt:` + fmt.Sprintf("%v", this.Attempt) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *Device) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&Device{`, -+ `ContainerPath:` + fmt.Sprintf("%v", this.ContainerPath) + `,`, -+ `HostPath:` + fmt.Sprintf("%v", this.HostPath) + `,`, -+ `Permissions:` + fmt.Sprintf("%v", this.Permissions) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *ContainerConfig) String() string { -+ if this == nil { -+ return "nil" -+ } -+ repeatedStringForEnvs := "[]*KeyValue{" -+ for _, f := range this.Envs { -+ repeatedStringForEnvs += strings.Replace(f.String(), "KeyValue", "KeyValue", 1) + "," -+ } -+ repeatedStringForEnvs += "}" -+ repeatedStringForMounts := "[]*Mount{" -+ for _, f := range this.Mounts { -+ repeatedStringForMounts += strings.Replace(f.String(), "Mount", "Mount", 1) + "," -+ } -+ repeatedStringForMounts += "}" -+ repeatedStringForDevices := "[]*Device{" -+ for _, f := range this.Devices { -+ repeatedStringForDevices += strings.Replace(f.String(), "Device", "Device", 1) + "," -+ } -+ repeatedStringForDevices += "}" -+ keysForLabels := make([]string, 0, len(this.Labels)) -+ for k := range this.Labels { -+ keysForLabels = append(keysForLabels, k) -+ } -+ github_com_gogo_protobuf_sortkeys.Strings(keysForLabels) -+ mapStringForLabels := "map[string]string{" -+ for _, k := range keysForLabels { -+ mapStringForLabels += fmt.Sprintf("%v: %v,", k, this.Labels[k]) -+ } -+ mapStringForLabels += "}" -+ keysForAnnotations := make([]string, 0, len(this.Annotations)) -+ for k := range this.Annotations { -+ keysForAnnotations = append(keysForAnnotations, k) -+ } -+ github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations) -+ mapStringForAnnotations := "map[string]string{" -+ for _, k := range keysForAnnotations { -+ mapStringForAnnotations += fmt.Sprintf("%v: %v,", k, this.Annotations[k]) -+ } -+ mapStringForAnnotations += "}" -+ s := strings.Join([]string{`&ContainerConfig{`, -+ `Metadata:` + strings.Replace(this.Metadata.String(), "ContainerMetadata", "ContainerMetadata", 1) + `,`, -+ `Image:` + strings.Replace(this.Image.String(), "ImageSpec", "ImageSpec", 1) + `,`, -+ `Command:` + fmt.Sprintf("%v", this.Command) + `,`, -+ `Args:` + fmt.Sprintf("%v", this.Args) + `,`, -+ `WorkingDir:` + fmt.Sprintf("%v", this.WorkingDir) + `,`, -+ `Envs:` + repeatedStringForEnvs + `,`, -+ `Mounts:` + repeatedStringForMounts + `,`, -+ `Devices:` + repeatedStringForDevices + `,`, -+ `Labels:` + mapStringForLabels + `,`, -+ `Annotations:` + mapStringForAnnotations + `,`, -+ `LogPath:` + fmt.Sprintf("%v", this.LogPath) + `,`, -+ `Stdin:` + fmt.Sprintf("%v", this.Stdin) + `,`, -+ `StdinOnce:` + fmt.Sprintf("%v", this.StdinOnce) + `,`, -+ `Tty:` + fmt.Sprintf("%v", this.Tty) + `,`, -+ `Linux:` + strings.Replace(this.Linux.String(), "LinuxContainerConfig", "LinuxContainerConfig", 1) + `,`, -+ `Windows:` + strings.Replace(this.Windows.String(), "WindowsContainerConfig", "WindowsContainerConfig", 1) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *CreateContainerRequest) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&CreateContainerRequest{`, -+ `PodSandboxId:` + fmt.Sprintf("%v", this.PodSandboxId) + `,`, -+ `Config:` + strings.Replace(this.Config.String(), "ContainerConfig", "ContainerConfig", 1) + `,`, -+ `SandboxConfig:` + strings.Replace(this.SandboxConfig.String(), "PodSandboxConfig", "PodSandboxConfig", 1) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *CreateContainerResponse) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&CreateContainerResponse{`, -+ `ContainerId:` + fmt.Sprintf("%v", this.ContainerId) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *StartContainerRequest) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&StartContainerRequest{`, -+ `ContainerId:` + fmt.Sprintf("%v", this.ContainerId) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *StartContainerResponse) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&StartContainerResponse{`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *StopContainerRequest) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&StopContainerRequest{`, -+ `ContainerId:` + fmt.Sprintf("%v", this.ContainerId) + `,`, -+ `Timeout:` + fmt.Sprintf("%v", this.Timeout) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *StopContainerResponse) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&StopContainerResponse{`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *RemoveContainerRequest) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&RemoveContainerRequest{`, -+ `ContainerId:` + fmt.Sprintf("%v", this.ContainerId) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *RemoveContainerResponse) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&RemoveContainerResponse{`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *ContainerStateValue) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&ContainerStateValue{`, -+ `State:` + fmt.Sprintf("%v", this.State) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *ContainerFilter) String() string { -+ if this == nil { -+ return "nil" -+ } -+ keysForLabelSelector := make([]string, 0, len(this.LabelSelector)) -+ for k := range this.LabelSelector { -+ keysForLabelSelector = append(keysForLabelSelector, k) -+ } -+ github_com_gogo_protobuf_sortkeys.Strings(keysForLabelSelector) -+ mapStringForLabelSelector := "map[string]string{" -+ for _, k := range keysForLabelSelector { -+ mapStringForLabelSelector += fmt.Sprintf("%v: %v,", k, this.LabelSelector[k]) -+ } -+ mapStringForLabelSelector += "}" -+ s := strings.Join([]string{`&ContainerFilter{`, -+ `Id:` + fmt.Sprintf("%v", this.Id) + `,`, -+ `State:` + strings.Replace(this.State.String(), "ContainerStateValue", "ContainerStateValue", 1) + `,`, -+ `PodSandboxId:` + fmt.Sprintf("%v", this.PodSandboxId) + `,`, -+ `LabelSelector:` + mapStringForLabelSelector + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *ListContainersRequest) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&ListContainersRequest{`, -+ `Filter:` + strings.Replace(this.Filter.String(), "ContainerFilter", "ContainerFilter", 1) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *Container) String() string { -+ if this == nil { -+ return "nil" -+ } -+ keysForLabels := make([]string, 0, len(this.Labels)) -+ for k := range this.Labels { -+ keysForLabels = append(keysForLabels, k) -+ } -+ github_com_gogo_protobuf_sortkeys.Strings(keysForLabels) -+ mapStringForLabels := "map[string]string{" -+ for _, k := range keysForLabels { -+ mapStringForLabels += fmt.Sprintf("%v: %v,", k, this.Labels[k]) -+ } -+ mapStringForLabels += "}" -+ keysForAnnotations := make([]string, 0, len(this.Annotations)) -+ for k := range this.Annotations { -+ keysForAnnotations = append(keysForAnnotations, k) -+ } -+ github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations) -+ mapStringForAnnotations := "map[string]string{" -+ for _, k := range keysForAnnotations { -+ mapStringForAnnotations += fmt.Sprintf("%v: %v,", k, this.Annotations[k]) -+ } -+ mapStringForAnnotations += "}" -+ s := strings.Join([]string{`&Container{`, -+ `Id:` + fmt.Sprintf("%v", this.Id) + `,`, -+ `PodSandboxId:` + fmt.Sprintf("%v", this.PodSandboxId) + `,`, -+ `Metadata:` + strings.Replace(this.Metadata.String(), "ContainerMetadata", "ContainerMetadata", 1) + `,`, -+ `Image:` + strings.Replace(this.Image.String(), "ImageSpec", "ImageSpec", 1) + `,`, -+ `ImageRef:` + fmt.Sprintf("%v", this.ImageRef) + `,`, -+ `State:` + fmt.Sprintf("%v", this.State) + `,`, -+ `CreatedAt:` + fmt.Sprintf("%v", this.CreatedAt) + `,`, -+ `Labels:` + mapStringForLabels + `,`, -+ `Annotations:` + mapStringForAnnotations + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *ListContainersResponse) String() string { -+ if this == nil { -+ return "nil" -+ } -+ repeatedStringForContainers := "[]*Container{" -+ for _, f := range this.Containers { -+ repeatedStringForContainers += strings.Replace(f.String(), "Container", "Container", 1) + "," -+ } -+ repeatedStringForContainers += "}" -+ s := strings.Join([]string{`&ListContainersResponse{`, -+ `Containers:` + repeatedStringForContainers + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *ContainerStatusRequest) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&ContainerStatusRequest{`, -+ `ContainerId:` + fmt.Sprintf("%v", this.ContainerId) + `,`, -+ `Verbose:` + fmt.Sprintf("%v", this.Verbose) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *ContainerStatus) String() string { -+ if this == nil { -+ return "nil" -+ } -+ repeatedStringForMounts := "[]*Mount{" -+ for _, f := range this.Mounts { -+ repeatedStringForMounts += strings.Replace(f.String(), "Mount", "Mount", 1) + "," -+ } -+ repeatedStringForMounts += "}" -+ keysForLabels := make([]string, 0, len(this.Labels)) -+ for k := range this.Labels { -+ keysForLabels = append(keysForLabels, k) -+ } -+ github_com_gogo_protobuf_sortkeys.Strings(keysForLabels) -+ mapStringForLabels := "map[string]string{" -+ for _, k := range keysForLabels { -+ mapStringForLabels += fmt.Sprintf("%v: %v,", k, this.Labels[k]) -+ } -+ mapStringForLabels += "}" -+ keysForAnnotations := make([]string, 0, len(this.Annotations)) -+ for k := range this.Annotations { -+ keysForAnnotations = append(keysForAnnotations, k) -+ } -+ github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations) -+ mapStringForAnnotations := "map[string]string{" -+ for _, k := range keysForAnnotations { -+ mapStringForAnnotations += fmt.Sprintf("%v: %v,", k, this.Annotations[k]) -+ } -+ mapStringForAnnotations += "}" -+ s := strings.Join([]string{`&ContainerStatus{`, -+ `Id:` + fmt.Sprintf("%v", this.Id) + `,`, -+ `Metadata:` + strings.Replace(this.Metadata.String(), "ContainerMetadata", "ContainerMetadata", 1) + `,`, -+ `State:` + fmt.Sprintf("%v", this.State) + `,`, -+ `CreatedAt:` + fmt.Sprintf("%v", this.CreatedAt) + `,`, -+ `StartedAt:` + fmt.Sprintf("%v", this.StartedAt) + `,`, -+ `FinishedAt:` + fmt.Sprintf("%v", this.FinishedAt) + `,`, -+ `ExitCode:` + fmt.Sprintf("%v", this.ExitCode) + `,`, -+ `Image:` + strings.Replace(this.Image.String(), "ImageSpec", "ImageSpec", 1) + `,`, -+ `ImageRef:` + fmt.Sprintf("%v", this.ImageRef) + `,`, -+ `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, -+ `Message:` + fmt.Sprintf("%v", this.Message) + `,`, -+ `Labels:` + mapStringForLabels + `,`, -+ `Annotations:` + mapStringForAnnotations + `,`, -+ `Mounts:` + repeatedStringForMounts + `,`, -+ `LogPath:` + fmt.Sprintf("%v", this.LogPath) + `,`, -+ `Resources:` + strings.Replace(this.Resources.String(), "ContainerResources", "ContainerResources", 1) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *ContainerStatusResponse) String() string { -+ if this == nil { -+ return "nil" -+ } -+ keysForInfo := make([]string, 0, len(this.Info)) -+ for k := range this.Info { -+ keysForInfo = append(keysForInfo, k) -+ } -+ github_com_gogo_protobuf_sortkeys.Strings(keysForInfo) -+ mapStringForInfo := "map[string]string{" -+ for _, k := range keysForInfo { -+ mapStringForInfo += fmt.Sprintf("%v: %v,", k, this.Info[k]) -+ } -+ mapStringForInfo += "}" -+ s := strings.Join([]string{`&ContainerStatusResponse{`, -+ `Status:` + strings.Replace(this.Status.String(), "ContainerStatus", "ContainerStatus", 1) + `,`, -+ `Info:` + mapStringForInfo + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *ContainerResources) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&ContainerResources{`, -+ `Linux:` + strings.Replace(this.Linux.String(), "LinuxContainerResources", "LinuxContainerResources", 1) + `,`, -+ `Windows:` + strings.Replace(this.Windows.String(), "WindowsContainerResources", "WindowsContainerResources", 1) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *UpdateContainerResourcesRequest) String() string { -+ if this == nil { -+ return "nil" -+ } -+ keysForAnnotations := make([]string, 0, len(this.Annotations)) -+ for k := range this.Annotations { -+ keysForAnnotations = append(keysForAnnotations, k) -+ } -+ github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations) -+ mapStringForAnnotations := "map[string]string{" -+ for _, k := range keysForAnnotations { -+ mapStringForAnnotations += fmt.Sprintf("%v: %v,", k, this.Annotations[k]) -+ } -+ mapStringForAnnotations += "}" -+ s := strings.Join([]string{`&UpdateContainerResourcesRequest{`, -+ `ContainerId:` + fmt.Sprintf("%v", this.ContainerId) + `,`, -+ `Linux:` + strings.Replace(this.Linux.String(), "LinuxContainerResources", "LinuxContainerResources", 1) + `,`, -+ `Windows:` + strings.Replace(this.Windows.String(), "WindowsContainerResources", "WindowsContainerResources", 1) + `,`, -+ `Annotations:` + mapStringForAnnotations + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *UpdateContainerResourcesResponse) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&UpdateContainerResourcesResponse{`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *ExecSyncRequest) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&ExecSyncRequest{`, -+ `ContainerId:` + fmt.Sprintf("%v", this.ContainerId) + `,`, -+ `Cmd:` + fmt.Sprintf("%v", this.Cmd) + `,`, -+ `Timeout:` + fmt.Sprintf("%v", this.Timeout) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *ExecSyncResponse) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&ExecSyncResponse{`, -+ `Stdout:` + fmt.Sprintf("%v", this.Stdout) + `,`, -+ `Stderr:` + fmt.Sprintf("%v", this.Stderr) + `,`, -+ `ExitCode:` + fmt.Sprintf("%v", this.ExitCode) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *ExecRequest) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&ExecRequest{`, -+ `ContainerId:` + fmt.Sprintf("%v", this.ContainerId) + `,`, -+ `Cmd:` + fmt.Sprintf("%v", this.Cmd) + `,`, -+ `Tty:` + fmt.Sprintf("%v", this.Tty) + `,`, -+ `Stdin:` + fmt.Sprintf("%v", this.Stdin) + `,`, -+ `Stdout:` + fmt.Sprintf("%v", this.Stdout) + `,`, -+ `Stderr:` + fmt.Sprintf("%v", this.Stderr) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *ExecResponse) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&ExecResponse{`, -+ `Url:` + fmt.Sprintf("%v", this.Url) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *AttachRequest) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&AttachRequest{`, -+ `ContainerId:` + fmt.Sprintf("%v", this.ContainerId) + `,`, -+ `Stdin:` + fmt.Sprintf("%v", this.Stdin) + `,`, -+ `Tty:` + fmt.Sprintf("%v", this.Tty) + `,`, -+ `Stdout:` + fmt.Sprintf("%v", this.Stdout) + `,`, -+ `Stderr:` + fmt.Sprintf("%v", this.Stderr) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *AttachResponse) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&AttachResponse{`, -+ `Url:` + fmt.Sprintf("%v", this.Url) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *PortForwardRequest) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&PortForwardRequest{`, -+ `PodSandboxId:` + fmt.Sprintf("%v", this.PodSandboxId) + `,`, -+ `Port:` + fmt.Sprintf("%v", this.Port) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *PortForwardResponse) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&PortForwardResponse{`, -+ `Url:` + fmt.Sprintf("%v", this.Url) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *ImageFilter) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&ImageFilter{`, -+ `Image:` + strings.Replace(this.Image.String(), "ImageSpec", "ImageSpec", 1) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *ListImagesRequest) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&ListImagesRequest{`, -+ `Filter:` + strings.Replace(this.Filter.String(), "ImageFilter", "ImageFilter", 1) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *Image) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&Image{`, -+ `Id:` + fmt.Sprintf("%v", this.Id) + `,`, -+ `RepoTags:` + fmt.Sprintf("%v", this.RepoTags) + `,`, -+ `RepoDigests:` + fmt.Sprintf("%v", this.RepoDigests) + `,`, -+ `Size_:` + fmt.Sprintf("%v", this.Size_) + `,`, -+ `Uid:` + strings.Replace(this.Uid.String(), "Int64Value", "Int64Value", 1) + `,`, -+ `Username:` + fmt.Sprintf("%v", this.Username) + `,`, -+ `Spec:` + strings.Replace(this.Spec.String(), "ImageSpec", "ImageSpec", 1) + `,`, -+ `Pinned:` + fmt.Sprintf("%v", this.Pinned) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *ListImagesResponse) String() string { -+ if this == nil { -+ return "nil" -+ } -+ repeatedStringForImages := "[]*Image{" -+ for _, f := range this.Images { -+ repeatedStringForImages += strings.Replace(f.String(), "Image", "Image", 1) + "," -+ } -+ repeatedStringForImages += "}" -+ s := strings.Join([]string{`&ListImagesResponse{`, -+ `Images:` + repeatedStringForImages + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *ImageStatusRequest) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&ImageStatusRequest{`, -+ `Image:` + strings.Replace(this.Image.String(), "ImageSpec", "ImageSpec", 1) + `,`, -+ `Verbose:` + fmt.Sprintf("%v", this.Verbose) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *ImageStatusResponse) String() string { -+ if this == nil { -+ return "nil" -+ } -+ keysForInfo := make([]string, 0, len(this.Info)) -+ for k := range this.Info { -+ keysForInfo = append(keysForInfo, k) -+ } -+ github_com_gogo_protobuf_sortkeys.Strings(keysForInfo) -+ mapStringForInfo := "map[string]string{" -+ for _, k := range keysForInfo { -+ mapStringForInfo += fmt.Sprintf("%v: %v,", k, this.Info[k]) -+ } -+ mapStringForInfo += "}" -+ s := strings.Join([]string{`&ImageStatusResponse{`, -+ `Image:` + strings.Replace(this.Image.String(), "Image", "Image", 1) + `,`, -+ `Info:` + mapStringForInfo + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *AuthConfig) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&AuthConfig{`, -+ `Username:` + fmt.Sprintf("%v", this.Username) + `,`, -+ `Password:` + fmt.Sprintf("%v", this.Password) + `,`, -+ `Auth:` + fmt.Sprintf("%v", this.Auth) + `,`, -+ `ServerAddress:` + fmt.Sprintf("%v", this.ServerAddress) + `,`, -+ `IdentityToken:` + fmt.Sprintf("%v", this.IdentityToken) + `,`, -+ `RegistryToken:` + fmt.Sprintf("%v", this.RegistryToken) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *PullImageRequest) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&PullImageRequest{`, -+ `Image:` + strings.Replace(this.Image.String(), "ImageSpec", "ImageSpec", 1) + `,`, -+ `Auth:` + strings.Replace(this.Auth.String(), "AuthConfig", "AuthConfig", 1) + `,`, -+ `SandboxConfig:` + strings.Replace(this.SandboxConfig.String(), "PodSandboxConfig", "PodSandboxConfig", 1) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *PullImageResponse) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&PullImageResponse{`, -+ `ImageRef:` + fmt.Sprintf("%v", this.ImageRef) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *RemoveImageRequest) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&RemoveImageRequest{`, -+ `Image:` + strings.Replace(this.Image.String(), "ImageSpec", "ImageSpec", 1) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *RemoveImageResponse) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&RemoveImageResponse{`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *NetworkConfig) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&NetworkConfig{`, -+ `PodCidr:` + fmt.Sprintf("%v", this.PodCidr) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *RuntimeConfig) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&RuntimeConfig{`, -+ `NetworkConfig:` + strings.Replace(this.NetworkConfig.String(), "NetworkConfig", "NetworkConfig", 1) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *UpdateRuntimeConfigRequest) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&UpdateRuntimeConfigRequest{`, -+ `RuntimeConfig:` + strings.Replace(this.RuntimeConfig.String(), "RuntimeConfig", "RuntimeConfig", 1) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *UpdateRuntimeConfigResponse) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&UpdateRuntimeConfigResponse{`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *RuntimeCondition) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&RuntimeCondition{`, -+ `Type:` + fmt.Sprintf("%v", this.Type) + `,`, -+ `Status:` + fmt.Sprintf("%v", this.Status) + `,`, -+ `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, -+ `Message:` + fmt.Sprintf("%v", this.Message) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *RuntimeStatus) String() string { -+ if this == nil { -+ return "nil" -+ } -+ repeatedStringForConditions := "[]*RuntimeCondition{" -+ for _, f := range this.Conditions { -+ repeatedStringForConditions += strings.Replace(f.String(), "RuntimeCondition", "RuntimeCondition", 1) + "," -+ } -+ repeatedStringForConditions += "}" -+ s := strings.Join([]string{`&RuntimeStatus{`, -+ `Conditions:` + repeatedStringForConditions + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *StatusRequest) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&StatusRequest{`, -+ `Verbose:` + fmt.Sprintf("%v", this.Verbose) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *StatusResponse) String() string { -+ if this == nil { -+ return "nil" -+ } -+ keysForInfo := make([]string, 0, len(this.Info)) -+ for k := range this.Info { -+ keysForInfo = append(keysForInfo, k) -+ } -+ github_com_gogo_protobuf_sortkeys.Strings(keysForInfo) -+ mapStringForInfo := "map[string]string{" -+ for _, k := range keysForInfo { -+ mapStringForInfo += fmt.Sprintf("%v: %v,", k, this.Info[k]) -+ } -+ mapStringForInfo += "}" -+ s := strings.Join([]string{`&StatusResponse{`, -+ `Status:` + strings.Replace(this.Status.String(), "RuntimeStatus", "RuntimeStatus", 1) + `,`, -+ `Info:` + mapStringForInfo + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *ImageFsInfoRequest) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&ImageFsInfoRequest{`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *UInt64Value) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&UInt64Value{`, -+ `Value:` + fmt.Sprintf("%v", this.Value) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *FilesystemIdentifier) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&FilesystemIdentifier{`, -+ `Mountpoint:` + fmt.Sprintf("%v", this.Mountpoint) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *FilesystemUsage) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&FilesystemUsage{`, -+ `Timestamp:` + fmt.Sprintf("%v", this.Timestamp) + `,`, -+ `FsId:` + strings.Replace(this.FsId.String(), "FilesystemIdentifier", "FilesystemIdentifier", 1) + `,`, -+ `UsedBytes:` + strings.Replace(this.UsedBytes.String(), "UInt64Value", "UInt64Value", 1) + `,`, -+ `InodesUsed:` + strings.Replace(this.InodesUsed.String(), "UInt64Value", "UInt64Value", 1) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *ImageFsInfoResponse) String() string { -+ if this == nil { -+ return "nil" -+ } -+ repeatedStringForImageFilesystems := "[]*FilesystemUsage{" -+ for _, f := range this.ImageFilesystems { -+ repeatedStringForImageFilesystems += strings.Replace(f.String(), "FilesystemUsage", "FilesystemUsage", 1) + "," -+ } -+ repeatedStringForImageFilesystems += "}" -+ s := strings.Join([]string{`&ImageFsInfoResponse{`, -+ `ImageFilesystems:` + repeatedStringForImageFilesystems + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *ContainerStatsRequest) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&ContainerStatsRequest{`, -+ `ContainerId:` + fmt.Sprintf("%v", this.ContainerId) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *ContainerStatsResponse) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&ContainerStatsResponse{`, -+ `Stats:` + strings.Replace(this.Stats.String(), "ContainerStats", "ContainerStats", 1) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *ListContainerStatsRequest) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&ListContainerStatsRequest{`, -+ `Filter:` + strings.Replace(this.Filter.String(), "ContainerStatsFilter", "ContainerStatsFilter", 1) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *ContainerStatsFilter) String() string { -+ if this == nil { -+ return "nil" -+ } -+ keysForLabelSelector := make([]string, 0, len(this.LabelSelector)) -+ for k := range this.LabelSelector { -+ keysForLabelSelector = append(keysForLabelSelector, k) -+ } -+ github_com_gogo_protobuf_sortkeys.Strings(keysForLabelSelector) -+ mapStringForLabelSelector := "map[string]string{" -+ for _, k := range keysForLabelSelector { -+ mapStringForLabelSelector += fmt.Sprintf("%v: %v,", k, this.LabelSelector[k]) -+ } -+ mapStringForLabelSelector += "}" -+ s := strings.Join([]string{`&ContainerStatsFilter{`, -+ `Id:` + fmt.Sprintf("%v", this.Id) + `,`, -+ `PodSandboxId:` + fmt.Sprintf("%v", this.PodSandboxId) + `,`, -+ `LabelSelector:` + mapStringForLabelSelector + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *ListContainerStatsResponse) String() string { -+ if this == nil { -+ return "nil" -+ } -+ repeatedStringForStats := "[]*ContainerStats{" -+ for _, f := range this.Stats { -+ repeatedStringForStats += strings.Replace(f.String(), "ContainerStats", "ContainerStats", 1) + "," -+ } -+ repeatedStringForStats += "}" -+ s := strings.Join([]string{`&ListContainerStatsResponse{`, -+ `Stats:` + repeatedStringForStats + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *ContainerAttributes) String() string { -+ if this == nil { -+ return "nil" -+ } -+ keysForLabels := make([]string, 0, len(this.Labels)) -+ for k := range this.Labels { -+ keysForLabels = append(keysForLabels, k) -+ } -+ github_com_gogo_protobuf_sortkeys.Strings(keysForLabels) -+ mapStringForLabels := "map[string]string{" -+ for _, k := range keysForLabels { -+ mapStringForLabels += fmt.Sprintf("%v: %v,", k, this.Labels[k]) -+ } -+ mapStringForLabels += "}" -+ keysForAnnotations := make([]string, 0, len(this.Annotations)) -+ for k := range this.Annotations { -+ keysForAnnotations = append(keysForAnnotations, k) -+ } -+ github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations) -+ mapStringForAnnotations := "map[string]string{" -+ for _, k := range keysForAnnotations { -+ mapStringForAnnotations += fmt.Sprintf("%v: %v,", k, this.Annotations[k]) -+ } -+ mapStringForAnnotations += "}" -+ s := strings.Join([]string{`&ContainerAttributes{`, -+ `Id:` + fmt.Sprintf("%v", this.Id) + `,`, -+ `Metadata:` + strings.Replace(this.Metadata.String(), "ContainerMetadata", "ContainerMetadata", 1) + `,`, -+ `Labels:` + mapStringForLabels + `,`, -+ `Annotations:` + mapStringForAnnotations + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *ContainerStats) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&ContainerStats{`, -+ `Attributes:` + strings.Replace(this.Attributes.String(), "ContainerAttributes", "ContainerAttributes", 1) + `,`, -+ `Cpu:` + strings.Replace(this.Cpu.String(), "CpuUsage", "CpuUsage", 1) + `,`, -+ `Memory:` + strings.Replace(this.Memory.String(), "MemoryUsage", "MemoryUsage", 1) + `,`, -+ `WritableLayer:` + strings.Replace(this.WritableLayer.String(), "FilesystemUsage", "FilesystemUsage", 1) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *CpuUsage) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&CpuUsage{`, -+ `Timestamp:` + fmt.Sprintf("%v", this.Timestamp) + `,`, -+ `UsageCoreNanoSeconds:` + strings.Replace(this.UsageCoreNanoSeconds.String(), "UInt64Value", "UInt64Value", 1) + `,`, -+ `UsageNanoCores:` + strings.Replace(this.UsageNanoCores.String(), "UInt64Value", "UInt64Value", 1) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *MemoryUsage) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&MemoryUsage{`, -+ `Timestamp:` + fmt.Sprintf("%v", this.Timestamp) + `,`, -+ `WorkingSetBytes:` + strings.Replace(this.WorkingSetBytes.String(), "UInt64Value", "UInt64Value", 1) + `,`, -+ `AvailableBytes:` + strings.Replace(this.AvailableBytes.String(), "UInt64Value", "UInt64Value", 1) + `,`, -+ `UsageBytes:` + strings.Replace(this.UsageBytes.String(), "UInt64Value", "UInt64Value", 1) + `,`, -+ `RssBytes:` + strings.Replace(this.RssBytes.String(), "UInt64Value", "UInt64Value", 1) + `,`, -+ `PageFaults:` + strings.Replace(this.PageFaults.String(), "UInt64Value", "UInt64Value", 1) + `,`, -+ `MajorPageFaults:` + strings.Replace(this.MajorPageFaults.String(), "UInt64Value", "UInt64Value", 1) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *ReopenContainerLogRequest) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&ReopenContainerLogRequest{`, -+ `ContainerId:` + fmt.Sprintf("%v", this.ContainerId) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *ReopenContainerLogResponse) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&ReopenContainerLogResponse{`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *CheckpointContainerRequest) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&CheckpointContainerRequest{`, -+ `ContainerId:` + fmt.Sprintf("%v", this.ContainerId) + `,`, -+ `Location:` + fmt.Sprintf("%v", this.Location) + `,`, -+ `Timeout:` + fmt.Sprintf("%v", this.Timeout) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *CheckpointContainerResponse) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&CheckpointContainerResponse{`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *GetEventsRequest) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&GetEventsRequest{`, -+ `}`, -+ }, "") -+ return s -+} -+func (this *ContainerEventResponse) String() string { -+ if this == nil { -+ return "nil" -+ } -+ s := strings.Join([]string{`&ContainerEventResponse{`, -+ `ContainerId:` + fmt.Sprintf("%v", this.ContainerId) + `,`, -+ `ContainerEventType:` + fmt.Sprintf("%v", this.ContainerEventType) + `,`, -+ `CreatedAt:` + fmt.Sprintf("%v", this.CreatedAt) + `,`, -+ `PodSandboxMetadata:` + strings.Replace(this.PodSandboxMetadata.String(), "PodSandboxMetadata", "PodSandboxMetadata", 1) + `,`, -+ `}`, -+ }, "") -+ return s -+} -+func valueToStringApi(v interface{}) string { -+ rv := reflect.ValueOf(v) -+ if rv.IsNil() { -+ return "nil" -+ } -+ pv := reflect.Indirect(rv).Interface() -+ return fmt.Sprintf("*%v", pv) -+} -+func (m *VersionRequest) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: VersionRequest: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: VersionRequest: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Version = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *VersionResponse) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: VersionResponse: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: VersionResponse: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Version = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field RuntimeName", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.RuntimeName = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 3: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field RuntimeVersion", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.RuntimeVersion = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 4: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field RuntimeApiVersion", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.RuntimeApiVersion = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *DNSConfig) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: DNSConfig: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: DNSConfig: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Servers", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Servers = append(m.Servers, string(dAtA[iNdEx:postIndex])) -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Searches", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Searches = append(m.Searches, string(dAtA[iNdEx:postIndex])) -+ iNdEx = postIndex -+ case 3: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Options", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Options = append(m.Options, string(dAtA[iNdEx:postIndex])) -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *PortMapping) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: PortMapping: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: PortMapping: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Protocol", wireType) -+ } -+ m.Protocol = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.Protocol |= Protocol(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ case 2: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field ContainerPort", wireType) -+ } -+ m.ContainerPort = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.ContainerPort |= int32(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ case 3: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field HostPort", wireType) -+ } -+ m.HostPort = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.HostPort |= int32(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ case 4: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field HostIp", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.HostIp = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *Mount) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: Mount: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: Mount: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field ContainerPath", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.ContainerPath = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field HostPath", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.HostPath = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 3: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Readonly", wireType) -+ } -+ var v int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ v |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ m.Readonly = bool(v != 0) -+ case 4: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field SelinuxRelabel", wireType) -+ } -+ var v int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ v |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ m.SelinuxRelabel = bool(v != 0) -+ case 5: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Propagation", wireType) -+ } -+ m.Propagation = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.Propagation |= MountPropagation(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *IDMapping) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: IDMapping: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: IDMapping: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field HostId", wireType) -+ } -+ m.HostId = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.HostId |= uint32(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ case 2: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field ContainerId", wireType) -+ } -+ m.ContainerId = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.ContainerId |= uint32(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ case 3: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Length", wireType) -+ } -+ m.Length = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.Length |= uint32(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *UserNamespace) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: UserNamespace: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: UserNamespace: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Mode", wireType) -+ } -+ m.Mode = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.Mode |= NamespaceMode(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Uids", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Uids = append(m.Uids, &IDMapping{}) -+ if err := m.Uids[len(m.Uids)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 3: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Gids", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Gids = append(m.Gids, &IDMapping{}) -+ if err := m.Gids[len(m.Gids)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *NamespaceOption) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: NamespaceOption: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: NamespaceOption: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Network", wireType) -+ } -+ m.Network = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.Network |= NamespaceMode(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ case 2: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Pid", wireType) -+ } -+ m.Pid = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.Pid |= NamespaceMode(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ case 3: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Ipc", wireType) -+ } -+ m.Ipc = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.Ipc |= NamespaceMode(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ case 4: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field TargetId", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.TargetId = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 5: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field UsernsOptions", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.UsernsOptions == nil { -+ m.UsernsOptions = &UserNamespace{} -+ } -+ if err := m.UsernsOptions.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *Int64Value) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: Int64Value: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: Int64Value: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) -+ } -+ m.Value = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.Value |= int64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *LinuxSandboxSecurityContext) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: LinuxSandboxSecurityContext: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: LinuxSandboxSecurityContext: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field NamespaceOptions", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.NamespaceOptions == nil { -+ m.NamespaceOptions = &NamespaceOption{} -+ } -+ if err := m.NamespaceOptions.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field SelinuxOptions", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.SelinuxOptions == nil { -+ m.SelinuxOptions = &SELinuxOption{} -+ } -+ if err := m.SelinuxOptions.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 3: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field RunAsUser", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.RunAsUser == nil { -+ m.RunAsUser = &Int64Value{} -+ } -+ if err := m.RunAsUser.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 4: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field ReadonlyRootfs", wireType) -+ } -+ var v int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ v |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ m.ReadonlyRootfs = bool(v != 0) -+ case 5: -+ if wireType == 0 { -+ var v int64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ v |= int64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ m.SupplementalGroups = append(m.SupplementalGroups, v) -+ } else if wireType == 2 { -+ var packedLen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ packedLen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if packedLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + packedLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ var elementCount int -+ var count int -+ for _, integer := range dAtA[iNdEx:postIndex] { -+ if integer < 128 { -+ count++ -+ } -+ } -+ elementCount = count -+ if elementCount != 0 && len(m.SupplementalGroups) == 0 { -+ m.SupplementalGroups = make([]int64, 0, elementCount) -+ } -+ for iNdEx < postIndex { -+ var v int64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ v |= int64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ m.SupplementalGroups = append(m.SupplementalGroups, v) -+ } -+ } else { -+ return fmt.Errorf("proto: wrong wireType = %d for field SupplementalGroups", wireType) -+ } -+ case 6: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Privileged", wireType) -+ } -+ var v int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ v |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ m.Privileged = bool(v != 0) -+ case 7: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field SeccompProfilePath", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.SeccompProfilePath = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 8: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field RunAsGroup", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.RunAsGroup == nil { -+ m.RunAsGroup = &Int64Value{} -+ } -+ if err := m.RunAsGroup.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 9: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Seccomp", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Seccomp == nil { -+ m.Seccomp = &SecurityProfile{} -+ } -+ if err := m.Seccomp.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 10: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Apparmor", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Apparmor == nil { -+ m.Apparmor = &SecurityProfile{} -+ } -+ if err := m.Apparmor.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *SecurityProfile) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: SecurityProfile: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: SecurityProfile: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field ProfileType", wireType) -+ } -+ m.ProfileType = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.ProfileType |= SecurityProfile_ProfileType(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field LocalhostRef", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.LocalhostRef = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *LinuxPodSandboxConfig) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: LinuxPodSandboxConfig: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: LinuxPodSandboxConfig: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field CgroupParent", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.CgroupParent = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field SecurityContext", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.SecurityContext == nil { -+ m.SecurityContext = &LinuxSandboxSecurityContext{} -+ } -+ if err := m.SecurityContext.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 3: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Sysctls", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Sysctls == nil { -+ m.Sysctls = make(map[string]string) -+ } -+ var mapkey string -+ var mapvalue string -+ for iNdEx < postIndex { -+ entryPreIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ if fieldNum == 1 { -+ var stringLenmapkey uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapkey |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapkey := int(stringLenmapkey) -+ if intStringLenmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapkey := iNdEx + intStringLenmapkey -+ if postStringIndexmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapkey > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) -+ iNdEx = postStringIndexmapkey -+ } else if fieldNum == 2 { -+ var stringLenmapvalue uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapvalue |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapvalue := int(stringLenmapvalue) -+ if intStringLenmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue -+ if postStringIndexmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapvalue > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) -+ iNdEx = postStringIndexmapvalue -+ } else { -+ iNdEx = entryPreIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > postIndex { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ m.Sysctls[mapkey] = mapvalue -+ iNdEx = postIndex -+ case 4: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Overhead", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Overhead == nil { -+ m.Overhead = &LinuxContainerResources{} -+ } -+ if err := m.Overhead.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 5: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Resources", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Resources == nil { -+ m.Resources = &LinuxContainerResources{} -+ } -+ if err := m.Resources.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *PodSandboxMetadata) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: PodSandboxMetadata: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: PodSandboxMetadata: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Name = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Uid", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Uid = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 3: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Namespace = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 4: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Attempt", wireType) -+ } -+ m.Attempt = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.Attempt |= uint32(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *PodSandboxConfig) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: PodSandboxConfig: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: PodSandboxConfig: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Metadata == nil { -+ m.Metadata = &PodSandboxMetadata{} -+ } -+ if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Hostname", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Hostname = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 3: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field LogDirectory", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.LogDirectory = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 4: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field DnsConfig", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.DnsConfig == nil { -+ m.DnsConfig = &DNSConfig{} -+ } -+ if err := m.DnsConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 5: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field PortMappings", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.PortMappings = append(m.PortMappings, &PortMapping{}) -+ if err := m.PortMappings[len(m.PortMappings)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 6: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Labels", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Labels == nil { -+ m.Labels = make(map[string]string) -+ } -+ var mapkey string -+ var mapvalue string -+ for iNdEx < postIndex { -+ entryPreIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ if fieldNum == 1 { -+ var stringLenmapkey uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapkey |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapkey := int(stringLenmapkey) -+ if intStringLenmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapkey := iNdEx + intStringLenmapkey -+ if postStringIndexmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapkey > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) -+ iNdEx = postStringIndexmapkey -+ } else if fieldNum == 2 { -+ var stringLenmapvalue uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapvalue |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapvalue := int(stringLenmapvalue) -+ if intStringLenmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue -+ if postStringIndexmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapvalue > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) -+ iNdEx = postStringIndexmapvalue -+ } else { -+ iNdEx = entryPreIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > postIndex { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ m.Labels[mapkey] = mapvalue -+ iNdEx = postIndex -+ case 7: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Annotations", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Annotations == nil { -+ m.Annotations = make(map[string]string) -+ } -+ var mapkey string -+ var mapvalue string -+ for iNdEx < postIndex { -+ entryPreIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ if fieldNum == 1 { -+ var stringLenmapkey uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapkey |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapkey := int(stringLenmapkey) -+ if intStringLenmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapkey := iNdEx + intStringLenmapkey -+ if postStringIndexmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapkey > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) -+ iNdEx = postStringIndexmapkey -+ } else if fieldNum == 2 { -+ var stringLenmapvalue uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapvalue |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapvalue := int(stringLenmapvalue) -+ if intStringLenmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue -+ if postStringIndexmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapvalue > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) -+ iNdEx = postStringIndexmapvalue -+ } else { -+ iNdEx = entryPreIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > postIndex { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ m.Annotations[mapkey] = mapvalue -+ iNdEx = postIndex -+ case 8: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Linux", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Linux == nil { -+ m.Linux = &LinuxPodSandboxConfig{} -+ } -+ if err := m.Linux.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 9: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Windows", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Windows == nil { -+ m.Windows = &WindowsPodSandboxConfig{} -+ } -+ if err := m.Windows.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *RunPodSandboxRequest) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: RunPodSandboxRequest: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: RunPodSandboxRequest: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Config", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Config == nil { -+ m.Config = &PodSandboxConfig{} -+ } -+ if err := m.Config.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field RuntimeHandler", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.RuntimeHandler = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *RunPodSandboxResponse) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: RunPodSandboxResponse: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: RunPodSandboxResponse: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field PodSandboxId", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.PodSandboxId = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *StopPodSandboxRequest) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: StopPodSandboxRequest: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: StopPodSandboxRequest: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field PodSandboxId", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.PodSandboxId = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *StopPodSandboxResponse) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: StopPodSandboxResponse: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: StopPodSandboxResponse: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *RemovePodSandboxRequest) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: RemovePodSandboxRequest: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: RemovePodSandboxRequest: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field PodSandboxId", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.PodSandboxId = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *RemovePodSandboxResponse) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: RemovePodSandboxResponse: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: RemovePodSandboxResponse: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *PodSandboxStatusRequest) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: PodSandboxStatusRequest: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: PodSandboxStatusRequest: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field PodSandboxId", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.PodSandboxId = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 2: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Verbose", wireType) -+ } -+ var v int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ v |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ m.Verbose = bool(v != 0) -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *PodIP) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: PodIP: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: PodIP: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Ip", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Ip = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *PodSandboxNetworkStatus) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: PodSandboxNetworkStatus: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: PodSandboxNetworkStatus: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Ip", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Ip = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field AdditionalIps", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.AdditionalIps = append(m.AdditionalIps, &PodIP{}) -+ if err := m.AdditionalIps[len(m.AdditionalIps)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *Namespace) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: Namespace: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: Namespace: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Options", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Options == nil { -+ m.Options = &NamespaceOption{} -+ } -+ if err := m.Options.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *LinuxPodSandboxStatus) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: LinuxPodSandboxStatus: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: LinuxPodSandboxStatus: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Namespaces", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Namespaces == nil { -+ m.Namespaces = &Namespace{} -+ } -+ if err := m.Namespaces.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *PodSandboxStatus) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: PodSandboxStatus: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: PodSandboxStatus: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Id = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Metadata == nil { -+ m.Metadata = &PodSandboxMetadata{} -+ } -+ if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 3: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field State", wireType) -+ } -+ m.State = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.State |= PodSandboxState(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ case 4: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field CreatedAt", wireType) -+ } -+ m.CreatedAt = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.CreatedAt |= int64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ case 5: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Network", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Network == nil { -+ m.Network = &PodSandboxNetworkStatus{} -+ } -+ if err := m.Network.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 6: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Linux", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Linux == nil { -+ m.Linux = &LinuxPodSandboxStatus{} -+ } -+ if err := m.Linux.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 7: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Labels", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Labels == nil { -+ m.Labels = make(map[string]string) -+ } -+ var mapkey string -+ var mapvalue string -+ for iNdEx < postIndex { -+ entryPreIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ if fieldNum == 1 { -+ var stringLenmapkey uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapkey |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapkey := int(stringLenmapkey) -+ if intStringLenmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapkey := iNdEx + intStringLenmapkey -+ if postStringIndexmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapkey > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) -+ iNdEx = postStringIndexmapkey -+ } else if fieldNum == 2 { -+ var stringLenmapvalue uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapvalue |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapvalue := int(stringLenmapvalue) -+ if intStringLenmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue -+ if postStringIndexmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapvalue > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) -+ iNdEx = postStringIndexmapvalue -+ } else { -+ iNdEx = entryPreIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > postIndex { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ m.Labels[mapkey] = mapvalue -+ iNdEx = postIndex -+ case 8: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Annotations", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Annotations == nil { -+ m.Annotations = make(map[string]string) -+ } -+ var mapkey string -+ var mapvalue string -+ for iNdEx < postIndex { -+ entryPreIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ if fieldNum == 1 { -+ var stringLenmapkey uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapkey |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapkey := int(stringLenmapkey) -+ if intStringLenmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapkey := iNdEx + intStringLenmapkey -+ if postStringIndexmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapkey > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) -+ iNdEx = postStringIndexmapkey -+ } else if fieldNum == 2 { -+ var stringLenmapvalue uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapvalue |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapvalue := int(stringLenmapvalue) -+ if intStringLenmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue -+ if postStringIndexmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapvalue > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) -+ iNdEx = postStringIndexmapvalue -+ } else { -+ iNdEx = entryPreIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > postIndex { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ m.Annotations[mapkey] = mapvalue -+ iNdEx = postIndex -+ case 9: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field RuntimeHandler", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.RuntimeHandler = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *PodSandboxStatusResponse) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: PodSandboxStatusResponse: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: PodSandboxStatusResponse: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Status == nil { -+ m.Status = &PodSandboxStatus{} -+ } -+ if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Info", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Info == nil { -+ m.Info = make(map[string]string) -+ } -+ var mapkey string -+ var mapvalue string -+ for iNdEx < postIndex { -+ entryPreIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ if fieldNum == 1 { -+ var stringLenmapkey uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapkey |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapkey := int(stringLenmapkey) -+ if intStringLenmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapkey := iNdEx + intStringLenmapkey -+ if postStringIndexmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapkey > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) -+ iNdEx = postStringIndexmapkey -+ } else if fieldNum == 2 { -+ var stringLenmapvalue uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapvalue |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapvalue := int(stringLenmapvalue) -+ if intStringLenmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue -+ if postStringIndexmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapvalue > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) -+ iNdEx = postStringIndexmapvalue -+ } else { -+ iNdEx = entryPreIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > postIndex { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ m.Info[mapkey] = mapvalue -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *PodSandboxStateValue) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: PodSandboxStateValue: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: PodSandboxStateValue: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field State", wireType) -+ } -+ m.State = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.State |= PodSandboxState(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *PodSandboxFilter) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: PodSandboxFilter: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: PodSandboxFilter: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Id = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field State", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.State == nil { -+ m.State = &PodSandboxStateValue{} -+ } -+ if err := m.State.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 3: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field LabelSelector", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.LabelSelector == nil { -+ m.LabelSelector = make(map[string]string) -+ } -+ var mapkey string -+ var mapvalue string -+ for iNdEx < postIndex { -+ entryPreIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ if fieldNum == 1 { -+ var stringLenmapkey uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapkey |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapkey := int(stringLenmapkey) -+ if intStringLenmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapkey := iNdEx + intStringLenmapkey -+ if postStringIndexmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapkey > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) -+ iNdEx = postStringIndexmapkey -+ } else if fieldNum == 2 { -+ var stringLenmapvalue uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapvalue |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapvalue := int(stringLenmapvalue) -+ if intStringLenmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue -+ if postStringIndexmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapvalue > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) -+ iNdEx = postStringIndexmapvalue -+ } else { -+ iNdEx = entryPreIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > postIndex { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ m.LabelSelector[mapkey] = mapvalue -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *ListPodSandboxRequest) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: ListPodSandboxRequest: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: ListPodSandboxRequest: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Filter", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Filter == nil { -+ m.Filter = &PodSandboxFilter{} -+ } -+ if err := m.Filter.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *PodSandbox) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: PodSandbox: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: PodSandbox: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Id = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Metadata == nil { -+ m.Metadata = &PodSandboxMetadata{} -+ } -+ if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 3: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field State", wireType) -+ } -+ m.State = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.State |= PodSandboxState(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ case 4: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field CreatedAt", wireType) -+ } -+ m.CreatedAt = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.CreatedAt |= int64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ case 5: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Labels", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Labels == nil { -+ m.Labels = make(map[string]string) -+ } -+ var mapkey string -+ var mapvalue string -+ for iNdEx < postIndex { -+ entryPreIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ if fieldNum == 1 { -+ var stringLenmapkey uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapkey |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapkey := int(stringLenmapkey) -+ if intStringLenmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapkey := iNdEx + intStringLenmapkey -+ if postStringIndexmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapkey > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) -+ iNdEx = postStringIndexmapkey -+ } else if fieldNum == 2 { -+ var stringLenmapvalue uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapvalue |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapvalue := int(stringLenmapvalue) -+ if intStringLenmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue -+ if postStringIndexmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapvalue > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) -+ iNdEx = postStringIndexmapvalue -+ } else { -+ iNdEx = entryPreIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > postIndex { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ m.Labels[mapkey] = mapvalue -+ iNdEx = postIndex -+ case 6: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Annotations", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Annotations == nil { -+ m.Annotations = make(map[string]string) -+ } -+ var mapkey string -+ var mapvalue string -+ for iNdEx < postIndex { -+ entryPreIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ if fieldNum == 1 { -+ var stringLenmapkey uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapkey |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapkey := int(stringLenmapkey) -+ if intStringLenmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapkey := iNdEx + intStringLenmapkey -+ if postStringIndexmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapkey > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) -+ iNdEx = postStringIndexmapkey -+ } else if fieldNum == 2 { -+ var stringLenmapvalue uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapvalue |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapvalue := int(stringLenmapvalue) -+ if intStringLenmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue -+ if postStringIndexmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapvalue > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) -+ iNdEx = postStringIndexmapvalue -+ } else { -+ iNdEx = entryPreIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > postIndex { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ m.Annotations[mapkey] = mapvalue -+ iNdEx = postIndex -+ case 7: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field RuntimeHandler", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.RuntimeHandler = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *ListPodSandboxResponse) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: ListPodSandboxResponse: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: ListPodSandboxResponse: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Items = append(m.Items, &PodSandbox{}) -+ if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *PodSandboxStatsRequest) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: PodSandboxStatsRequest: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: PodSandboxStatsRequest: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field PodSandboxId", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.PodSandboxId = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *PodSandboxStatsResponse) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: PodSandboxStatsResponse: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: PodSandboxStatsResponse: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Stats", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Stats == nil { -+ m.Stats = &PodSandboxStats{} -+ } -+ if err := m.Stats.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *PodSandboxStatsFilter) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: PodSandboxStatsFilter: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: PodSandboxStatsFilter: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Id = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field LabelSelector", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.LabelSelector == nil { -+ m.LabelSelector = make(map[string]string) -+ } -+ var mapkey string -+ var mapvalue string -+ for iNdEx < postIndex { -+ entryPreIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ if fieldNum == 1 { -+ var stringLenmapkey uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapkey |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapkey := int(stringLenmapkey) -+ if intStringLenmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapkey := iNdEx + intStringLenmapkey -+ if postStringIndexmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapkey > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) -+ iNdEx = postStringIndexmapkey -+ } else if fieldNum == 2 { -+ var stringLenmapvalue uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapvalue |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapvalue := int(stringLenmapvalue) -+ if intStringLenmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue -+ if postStringIndexmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapvalue > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) -+ iNdEx = postStringIndexmapvalue -+ } else { -+ iNdEx = entryPreIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > postIndex { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ m.LabelSelector[mapkey] = mapvalue -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *ListPodSandboxStatsRequest) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: ListPodSandboxStatsRequest: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: ListPodSandboxStatsRequest: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Filter", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Filter == nil { -+ m.Filter = &PodSandboxStatsFilter{} -+ } -+ if err := m.Filter.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *ListPodSandboxStatsResponse) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: ListPodSandboxStatsResponse: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: ListPodSandboxStatsResponse: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Stats", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Stats = append(m.Stats, &PodSandboxStats{}) -+ if err := m.Stats[len(m.Stats)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *PodSandboxAttributes) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: PodSandboxAttributes: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: PodSandboxAttributes: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Id = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Metadata == nil { -+ m.Metadata = &PodSandboxMetadata{} -+ } -+ if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 3: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Labels", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Labels == nil { -+ m.Labels = make(map[string]string) -+ } -+ var mapkey string -+ var mapvalue string -+ for iNdEx < postIndex { -+ entryPreIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ if fieldNum == 1 { -+ var stringLenmapkey uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapkey |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapkey := int(stringLenmapkey) -+ if intStringLenmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapkey := iNdEx + intStringLenmapkey -+ if postStringIndexmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapkey > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) -+ iNdEx = postStringIndexmapkey -+ } else if fieldNum == 2 { -+ var stringLenmapvalue uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapvalue |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapvalue := int(stringLenmapvalue) -+ if intStringLenmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue -+ if postStringIndexmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapvalue > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) -+ iNdEx = postStringIndexmapvalue -+ } else { -+ iNdEx = entryPreIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > postIndex { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ m.Labels[mapkey] = mapvalue -+ iNdEx = postIndex -+ case 4: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Annotations", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Annotations == nil { -+ m.Annotations = make(map[string]string) -+ } -+ var mapkey string -+ var mapvalue string -+ for iNdEx < postIndex { -+ entryPreIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ if fieldNum == 1 { -+ var stringLenmapkey uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapkey |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapkey := int(stringLenmapkey) -+ if intStringLenmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapkey := iNdEx + intStringLenmapkey -+ if postStringIndexmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapkey > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) -+ iNdEx = postStringIndexmapkey -+ } else if fieldNum == 2 { -+ var stringLenmapvalue uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapvalue |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapvalue := int(stringLenmapvalue) -+ if intStringLenmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue -+ if postStringIndexmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapvalue > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) -+ iNdEx = postStringIndexmapvalue -+ } else { -+ iNdEx = entryPreIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > postIndex { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ m.Annotations[mapkey] = mapvalue -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *PodSandboxStats) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: PodSandboxStats: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: PodSandboxStats: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Attributes", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Attributes == nil { -+ m.Attributes = &PodSandboxAttributes{} -+ } -+ if err := m.Attributes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Linux", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Linux == nil { -+ m.Linux = &LinuxPodSandboxStats{} -+ } -+ if err := m.Linux.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 3: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Windows", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Windows == nil { -+ m.Windows = &WindowsPodSandboxStats{} -+ } -+ if err := m.Windows.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *LinuxPodSandboxStats) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: LinuxPodSandboxStats: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: LinuxPodSandboxStats: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Cpu", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Cpu == nil { -+ m.Cpu = &CpuUsage{} -+ } -+ if err := m.Cpu.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Memory", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Memory == nil { -+ m.Memory = &MemoryUsage{} -+ } -+ if err := m.Memory.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 3: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Network", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Network == nil { -+ m.Network = &NetworkUsage{} -+ } -+ if err := m.Network.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 4: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Process", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Process == nil { -+ m.Process = &ProcessUsage{} -+ } -+ if err := m.Process.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 5: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Containers", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Containers = append(m.Containers, &ContainerStats{}) -+ if err := m.Containers[len(m.Containers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *WindowsPodSandboxStats) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: WindowsPodSandboxStats: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: WindowsPodSandboxStats: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *NetworkUsage) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: NetworkUsage: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: NetworkUsage: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Timestamp", wireType) -+ } -+ m.Timestamp = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.Timestamp |= int64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field DefaultInterface", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.DefaultInterface == nil { -+ m.DefaultInterface = &NetworkInterfaceUsage{} -+ } -+ if err := m.DefaultInterface.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 3: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Interfaces", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Interfaces = append(m.Interfaces, &NetworkInterfaceUsage{}) -+ if err := m.Interfaces[len(m.Interfaces)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *NetworkInterfaceUsage) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: NetworkInterfaceUsage: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: NetworkInterfaceUsage: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Name = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field RxBytes", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.RxBytes == nil { -+ m.RxBytes = &UInt64Value{} -+ } -+ if err := m.RxBytes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 3: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field RxErrors", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.RxErrors == nil { -+ m.RxErrors = &UInt64Value{} -+ } -+ if err := m.RxErrors.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 4: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field TxBytes", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.TxBytes == nil { -+ m.TxBytes = &UInt64Value{} -+ } -+ if err := m.TxBytes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 5: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field TxErrors", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.TxErrors == nil { -+ m.TxErrors = &UInt64Value{} -+ } -+ if err := m.TxErrors.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *ProcessUsage) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: ProcessUsage: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: ProcessUsage: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Timestamp", wireType) -+ } -+ m.Timestamp = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.Timestamp |= int64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field ProcessCount", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.ProcessCount == nil { -+ m.ProcessCount = &UInt64Value{} -+ } -+ if err := m.ProcessCount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *ImageSpec) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: ImageSpec: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: ImageSpec: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Image", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Image = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Annotations", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Annotations == nil { -+ m.Annotations = make(map[string]string) -+ } -+ var mapkey string -+ var mapvalue string -+ for iNdEx < postIndex { -+ entryPreIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ if fieldNum == 1 { -+ var stringLenmapkey uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapkey |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapkey := int(stringLenmapkey) -+ if intStringLenmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapkey := iNdEx + intStringLenmapkey -+ if postStringIndexmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapkey > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) -+ iNdEx = postStringIndexmapkey -+ } else if fieldNum == 2 { -+ var stringLenmapvalue uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapvalue |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapvalue := int(stringLenmapvalue) -+ if intStringLenmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue -+ if postStringIndexmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapvalue > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) -+ iNdEx = postStringIndexmapvalue -+ } else { -+ iNdEx = entryPreIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > postIndex { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ m.Annotations[mapkey] = mapvalue -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *KeyValue) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: KeyValue: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: KeyValue: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Key = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Value = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *LinuxContainerResources) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: LinuxContainerResources: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: LinuxContainerResources: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field CpuPeriod", wireType) -+ } -+ m.CpuPeriod = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.CpuPeriod |= int64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ case 2: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field CpuQuota", wireType) -+ } -+ m.CpuQuota = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.CpuQuota |= int64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ case 3: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field CpuShares", wireType) -+ } -+ m.CpuShares = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.CpuShares |= int64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ case 4: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field MemoryLimitInBytes", wireType) -+ } -+ m.MemoryLimitInBytes = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.MemoryLimitInBytes |= int64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ case 5: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field OomScoreAdj", wireType) -+ } -+ m.OomScoreAdj = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.OomScoreAdj |= int64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ case 6: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field CpusetCpus", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.CpusetCpus = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 7: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field CpusetMems", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.CpusetMems = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 8: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field HugepageLimits", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.HugepageLimits = append(m.HugepageLimits, &HugepageLimit{}) -+ if err := m.HugepageLimits[len(m.HugepageLimits)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 9: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Unified", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Unified == nil { -+ m.Unified = make(map[string]string) -+ } -+ var mapkey string -+ var mapvalue string -+ for iNdEx < postIndex { -+ entryPreIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ if fieldNum == 1 { -+ var stringLenmapkey uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapkey |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapkey := int(stringLenmapkey) -+ if intStringLenmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapkey := iNdEx + intStringLenmapkey -+ if postStringIndexmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapkey > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) -+ iNdEx = postStringIndexmapkey -+ } else if fieldNum == 2 { -+ var stringLenmapvalue uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapvalue |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapvalue := int(stringLenmapvalue) -+ if intStringLenmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue -+ if postStringIndexmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapvalue > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) -+ iNdEx = postStringIndexmapvalue -+ } else { -+ iNdEx = entryPreIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > postIndex { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ m.Unified[mapkey] = mapvalue -+ iNdEx = postIndex -+ case 10: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field MemorySwapLimitInBytes", wireType) -+ } -+ m.MemorySwapLimitInBytes = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.MemorySwapLimitInBytes |= int64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *HugepageLimit) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: HugepageLimit: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: HugepageLimit: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field PageSize", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.PageSize = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 2: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Limit", wireType) -+ } -+ m.Limit = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.Limit |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *SELinuxOption) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: SELinuxOption: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: SELinuxOption: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field User", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.User = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Role", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Role = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 3: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Type = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 4: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Level", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Level = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *Capability) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: Capability: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: Capability: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field AddCapabilities", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.AddCapabilities = append(m.AddCapabilities, string(dAtA[iNdEx:postIndex])) -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field DropCapabilities", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.DropCapabilities = append(m.DropCapabilities, string(dAtA[iNdEx:postIndex])) -+ iNdEx = postIndex -+ case 3: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field AddAmbientCapabilities", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.AddAmbientCapabilities = append(m.AddAmbientCapabilities, string(dAtA[iNdEx:postIndex])) -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *LinuxContainerSecurityContext) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: LinuxContainerSecurityContext: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: LinuxContainerSecurityContext: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Capabilities", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Capabilities == nil { -+ m.Capabilities = &Capability{} -+ } -+ if err := m.Capabilities.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 2: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Privileged", wireType) -+ } -+ var v int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ v |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ m.Privileged = bool(v != 0) -+ case 3: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field NamespaceOptions", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.NamespaceOptions == nil { -+ m.NamespaceOptions = &NamespaceOption{} -+ } -+ if err := m.NamespaceOptions.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 4: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field SelinuxOptions", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.SelinuxOptions == nil { -+ m.SelinuxOptions = &SELinuxOption{} -+ } -+ if err := m.SelinuxOptions.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 5: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field RunAsUser", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.RunAsUser == nil { -+ m.RunAsUser = &Int64Value{} -+ } -+ if err := m.RunAsUser.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 6: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field RunAsUsername", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.RunAsUsername = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 7: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field ReadonlyRootfs", wireType) -+ } -+ var v int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ v |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ m.ReadonlyRootfs = bool(v != 0) -+ case 8: -+ if wireType == 0 { -+ var v int64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ v |= int64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ m.SupplementalGroups = append(m.SupplementalGroups, v) -+ } else if wireType == 2 { -+ var packedLen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ packedLen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if packedLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + packedLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ var elementCount int -+ var count int -+ for _, integer := range dAtA[iNdEx:postIndex] { -+ if integer < 128 { -+ count++ -+ } -+ } -+ elementCount = count -+ if elementCount != 0 && len(m.SupplementalGroups) == 0 { -+ m.SupplementalGroups = make([]int64, 0, elementCount) -+ } -+ for iNdEx < postIndex { -+ var v int64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ v |= int64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ m.SupplementalGroups = append(m.SupplementalGroups, v) -+ } -+ } else { -+ return fmt.Errorf("proto: wrong wireType = %d for field SupplementalGroups", wireType) -+ } -+ case 9: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field ApparmorProfile", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.ApparmorProfile = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 10: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field SeccompProfilePath", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.SeccompProfilePath = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 11: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field NoNewPrivs", wireType) -+ } -+ var v int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ v |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ m.NoNewPrivs = bool(v != 0) -+ case 12: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field RunAsGroup", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.RunAsGroup == nil { -+ m.RunAsGroup = &Int64Value{} -+ } -+ if err := m.RunAsGroup.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 13: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field MaskedPaths", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.MaskedPaths = append(m.MaskedPaths, string(dAtA[iNdEx:postIndex])) -+ iNdEx = postIndex -+ case 14: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field ReadonlyPaths", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.ReadonlyPaths = append(m.ReadonlyPaths, string(dAtA[iNdEx:postIndex])) -+ iNdEx = postIndex -+ case 15: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Seccomp", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Seccomp == nil { -+ m.Seccomp = &SecurityProfile{} -+ } -+ if err := m.Seccomp.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 16: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Apparmor", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Apparmor == nil { -+ m.Apparmor = &SecurityProfile{} -+ } -+ if err := m.Apparmor.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *LinuxContainerConfig) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: LinuxContainerConfig: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: LinuxContainerConfig: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Resources", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Resources == nil { -+ m.Resources = &LinuxContainerResources{} -+ } -+ if err := m.Resources.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field SecurityContext", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.SecurityContext == nil { -+ m.SecurityContext = &LinuxContainerSecurityContext{} -+ } -+ if err := m.SecurityContext.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *WindowsSandboxSecurityContext) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: WindowsSandboxSecurityContext: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: WindowsSandboxSecurityContext: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field RunAsUsername", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.RunAsUsername = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field CredentialSpec", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.CredentialSpec = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 3: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field HostProcess", wireType) -+ } -+ var v int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ v |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ m.HostProcess = bool(v != 0) -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *WindowsPodSandboxConfig) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: WindowsPodSandboxConfig: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: WindowsPodSandboxConfig: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field SecurityContext", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.SecurityContext == nil { -+ m.SecurityContext = &WindowsSandboxSecurityContext{} -+ } -+ if err := m.SecurityContext.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *WindowsContainerSecurityContext) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: WindowsContainerSecurityContext: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: WindowsContainerSecurityContext: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field RunAsUsername", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.RunAsUsername = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field CredentialSpec", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.CredentialSpec = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 3: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field HostProcess", wireType) -+ } -+ var v int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ v |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ m.HostProcess = bool(v != 0) -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *WindowsContainerConfig) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: WindowsContainerConfig: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: WindowsContainerConfig: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Resources", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Resources == nil { -+ m.Resources = &WindowsContainerResources{} -+ } -+ if err := m.Resources.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field SecurityContext", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.SecurityContext == nil { -+ m.SecurityContext = &WindowsContainerSecurityContext{} -+ } -+ if err := m.SecurityContext.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *WindowsContainerResources) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: WindowsContainerResources: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: WindowsContainerResources: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field CpuShares", wireType) -+ } -+ m.CpuShares = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.CpuShares |= int64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ case 2: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field CpuCount", wireType) -+ } -+ m.CpuCount = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.CpuCount |= int64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ case 3: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field CpuMaximum", wireType) -+ } -+ m.CpuMaximum = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.CpuMaximum |= int64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ case 4: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field MemoryLimitInBytes", wireType) -+ } -+ m.MemoryLimitInBytes = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.MemoryLimitInBytes |= int64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ case 5: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field RootfsSizeInBytes", wireType) -+ } -+ m.RootfsSizeInBytes = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.RootfsSizeInBytes |= int64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *ContainerMetadata) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: ContainerMetadata: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: ContainerMetadata: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Name = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 2: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Attempt", wireType) -+ } -+ m.Attempt = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.Attempt |= uint32(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *Device) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: Device: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: Device: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field ContainerPath", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.ContainerPath = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field HostPath", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.HostPath = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 3: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Permissions", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Permissions = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *ContainerConfig) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: ContainerConfig: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: ContainerConfig: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Metadata == nil { -+ m.Metadata = &ContainerMetadata{} -+ } -+ if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Image", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Image == nil { -+ m.Image = &ImageSpec{} -+ } -+ if err := m.Image.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 3: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Command", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Command = append(m.Command, string(dAtA[iNdEx:postIndex])) -+ iNdEx = postIndex -+ case 4: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Args", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Args = append(m.Args, string(dAtA[iNdEx:postIndex])) -+ iNdEx = postIndex -+ case 5: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field WorkingDir", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.WorkingDir = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 6: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Envs", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Envs = append(m.Envs, &KeyValue{}) -+ if err := m.Envs[len(m.Envs)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 7: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Mounts", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Mounts = append(m.Mounts, &Mount{}) -+ if err := m.Mounts[len(m.Mounts)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 8: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Devices", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Devices = append(m.Devices, &Device{}) -+ if err := m.Devices[len(m.Devices)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 9: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Labels", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Labels == nil { -+ m.Labels = make(map[string]string) -+ } -+ var mapkey string -+ var mapvalue string -+ for iNdEx < postIndex { -+ entryPreIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ if fieldNum == 1 { -+ var stringLenmapkey uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapkey |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapkey := int(stringLenmapkey) -+ if intStringLenmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapkey := iNdEx + intStringLenmapkey -+ if postStringIndexmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapkey > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) -+ iNdEx = postStringIndexmapkey -+ } else if fieldNum == 2 { -+ var stringLenmapvalue uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapvalue |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapvalue := int(stringLenmapvalue) -+ if intStringLenmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue -+ if postStringIndexmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapvalue > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) -+ iNdEx = postStringIndexmapvalue -+ } else { -+ iNdEx = entryPreIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > postIndex { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ m.Labels[mapkey] = mapvalue -+ iNdEx = postIndex -+ case 10: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Annotations", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Annotations == nil { -+ m.Annotations = make(map[string]string) -+ } -+ var mapkey string -+ var mapvalue string -+ for iNdEx < postIndex { -+ entryPreIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ if fieldNum == 1 { -+ var stringLenmapkey uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapkey |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapkey := int(stringLenmapkey) -+ if intStringLenmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapkey := iNdEx + intStringLenmapkey -+ if postStringIndexmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapkey > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) -+ iNdEx = postStringIndexmapkey -+ } else if fieldNum == 2 { -+ var stringLenmapvalue uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapvalue |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapvalue := int(stringLenmapvalue) -+ if intStringLenmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue -+ if postStringIndexmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapvalue > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) -+ iNdEx = postStringIndexmapvalue -+ } else { -+ iNdEx = entryPreIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > postIndex { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ m.Annotations[mapkey] = mapvalue -+ iNdEx = postIndex -+ case 11: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field LogPath", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.LogPath = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 12: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Stdin", wireType) -+ } -+ var v int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ v |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ m.Stdin = bool(v != 0) -+ case 13: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field StdinOnce", wireType) -+ } -+ var v int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ v |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ m.StdinOnce = bool(v != 0) -+ case 14: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Tty", wireType) -+ } -+ var v int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ v |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ m.Tty = bool(v != 0) -+ case 15: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Linux", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Linux == nil { -+ m.Linux = &LinuxContainerConfig{} -+ } -+ if err := m.Linux.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 16: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Windows", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Windows == nil { -+ m.Windows = &WindowsContainerConfig{} -+ } -+ if err := m.Windows.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *CreateContainerRequest) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: CreateContainerRequest: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: CreateContainerRequest: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field PodSandboxId", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.PodSandboxId = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Config", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Config == nil { -+ m.Config = &ContainerConfig{} -+ } -+ if err := m.Config.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 3: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field SandboxConfig", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.SandboxConfig == nil { -+ m.SandboxConfig = &PodSandboxConfig{} -+ } -+ if err := m.SandboxConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *CreateContainerResponse) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: CreateContainerResponse: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: CreateContainerResponse: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field ContainerId", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.ContainerId = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *StartContainerRequest) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: StartContainerRequest: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: StartContainerRequest: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field ContainerId", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.ContainerId = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *StartContainerResponse) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: StartContainerResponse: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: StartContainerResponse: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *StopContainerRequest) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: StopContainerRequest: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: StopContainerRequest: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field ContainerId", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.ContainerId = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 2: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Timeout", wireType) -+ } -+ m.Timeout = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.Timeout |= int64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *StopContainerResponse) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: StopContainerResponse: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: StopContainerResponse: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *RemoveContainerRequest) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: RemoveContainerRequest: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: RemoveContainerRequest: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field ContainerId", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.ContainerId = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *RemoveContainerResponse) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: RemoveContainerResponse: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: RemoveContainerResponse: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *ContainerStateValue) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: ContainerStateValue: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: ContainerStateValue: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field State", wireType) -+ } -+ m.State = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.State |= ContainerState(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *ContainerFilter) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: ContainerFilter: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: ContainerFilter: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Id = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field State", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.State == nil { -+ m.State = &ContainerStateValue{} -+ } -+ if err := m.State.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 3: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field PodSandboxId", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.PodSandboxId = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 4: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field LabelSelector", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.LabelSelector == nil { -+ m.LabelSelector = make(map[string]string) -+ } -+ var mapkey string -+ var mapvalue string -+ for iNdEx < postIndex { -+ entryPreIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ if fieldNum == 1 { -+ var stringLenmapkey uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapkey |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapkey := int(stringLenmapkey) -+ if intStringLenmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapkey := iNdEx + intStringLenmapkey -+ if postStringIndexmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapkey > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) -+ iNdEx = postStringIndexmapkey -+ } else if fieldNum == 2 { -+ var stringLenmapvalue uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapvalue |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapvalue := int(stringLenmapvalue) -+ if intStringLenmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue -+ if postStringIndexmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapvalue > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) -+ iNdEx = postStringIndexmapvalue -+ } else { -+ iNdEx = entryPreIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > postIndex { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ m.LabelSelector[mapkey] = mapvalue -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *ListContainersRequest) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: ListContainersRequest: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: ListContainersRequest: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Filter", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Filter == nil { -+ m.Filter = &ContainerFilter{} -+ } -+ if err := m.Filter.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *Container) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: Container: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: Container: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Id = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field PodSandboxId", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.PodSandboxId = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 3: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Metadata == nil { -+ m.Metadata = &ContainerMetadata{} -+ } -+ if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 4: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Image", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Image == nil { -+ m.Image = &ImageSpec{} -+ } -+ if err := m.Image.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 5: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field ImageRef", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.ImageRef = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 6: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field State", wireType) -+ } -+ m.State = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.State |= ContainerState(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ case 7: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field CreatedAt", wireType) -+ } -+ m.CreatedAt = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.CreatedAt |= int64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ case 8: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Labels", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Labels == nil { -+ m.Labels = make(map[string]string) -+ } -+ var mapkey string -+ var mapvalue string -+ for iNdEx < postIndex { -+ entryPreIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ if fieldNum == 1 { -+ var stringLenmapkey uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapkey |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapkey := int(stringLenmapkey) -+ if intStringLenmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapkey := iNdEx + intStringLenmapkey -+ if postStringIndexmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapkey > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) -+ iNdEx = postStringIndexmapkey -+ } else if fieldNum == 2 { -+ var stringLenmapvalue uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapvalue |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapvalue := int(stringLenmapvalue) -+ if intStringLenmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue -+ if postStringIndexmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapvalue > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) -+ iNdEx = postStringIndexmapvalue -+ } else { -+ iNdEx = entryPreIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > postIndex { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ m.Labels[mapkey] = mapvalue -+ iNdEx = postIndex -+ case 9: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Annotations", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Annotations == nil { -+ m.Annotations = make(map[string]string) -+ } -+ var mapkey string -+ var mapvalue string -+ for iNdEx < postIndex { -+ entryPreIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ if fieldNum == 1 { -+ var stringLenmapkey uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapkey |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapkey := int(stringLenmapkey) -+ if intStringLenmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapkey := iNdEx + intStringLenmapkey -+ if postStringIndexmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapkey > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) -+ iNdEx = postStringIndexmapkey -+ } else if fieldNum == 2 { -+ var stringLenmapvalue uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapvalue |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapvalue := int(stringLenmapvalue) -+ if intStringLenmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue -+ if postStringIndexmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapvalue > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) -+ iNdEx = postStringIndexmapvalue -+ } else { -+ iNdEx = entryPreIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > postIndex { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ m.Annotations[mapkey] = mapvalue -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *ListContainersResponse) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: ListContainersResponse: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: ListContainersResponse: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Containers", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Containers = append(m.Containers, &Container{}) -+ if err := m.Containers[len(m.Containers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *ContainerStatusRequest) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: ContainerStatusRequest: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: ContainerStatusRequest: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field ContainerId", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.ContainerId = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 2: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Verbose", wireType) -+ } -+ var v int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ v |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ m.Verbose = bool(v != 0) -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *ContainerStatus) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: ContainerStatus: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: ContainerStatus: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Id = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Metadata == nil { -+ m.Metadata = &ContainerMetadata{} -+ } -+ if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 3: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field State", wireType) -+ } -+ m.State = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.State |= ContainerState(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ case 4: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field CreatedAt", wireType) -+ } -+ m.CreatedAt = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.CreatedAt |= int64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ case 5: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field StartedAt", wireType) -+ } -+ m.StartedAt = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.StartedAt |= int64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ case 6: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field FinishedAt", wireType) -+ } -+ m.FinishedAt = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.FinishedAt |= int64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ case 7: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field ExitCode", wireType) -+ } -+ m.ExitCode = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.ExitCode |= int32(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ case 8: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Image", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Image == nil { -+ m.Image = &ImageSpec{} -+ } -+ if err := m.Image.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 9: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field ImageRef", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.ImageRef = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 10: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Reason = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 11: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Message = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 12: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Labels", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Labels == nil { -+ m.Labels = make(map[string]string) -+ } -+ var mapkey string -+ var mapvalue string -+ for iNdEx < postIndex { -+ entryPreIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ if fieldNum == 1 { -+ var stringLenmapkey uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapkey |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapkey := int(stringLenmapkey) -+ if intStringLenmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapkey := iNdEx + intStringLenmapkey -+ if postStringIndexmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapkey > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) -+ iNdEx = postStringIndexmapkey -+ } else if fieldNum == 2 { -+ var stringLenmapvalue uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapvalue |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapvalue := int(stringLenmapvalue) -+ if intStringLenmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue -+ if postStringIndexmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapvalue > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) -+ iNdEx = postStringIndexmapvalue -+ } else { -+ iNdEx = entryPreIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > postIndex { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ m.Labels[mapkey] = mapvalue -+ iNdEx = postIndex -+ case 13: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Annotations", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Annotations == nil { -+ m.Annotations = make(map[string]string) -+ } -+ var mapkey string -+ var mapvalue string -+ for iNdEx < postIndex { -+ entryPreIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ if fieldNum == 1 { -+ var stringLenmapkey uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapkey |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapkey := int(stringLenmapkey) -+ if intStringLenmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapkey := iNdEx + intStringLenmapkey -+ if postStringIndexmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapkey > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) -+ iNdEx = postStringIndexmapkey -+ } else if fieldNum == 2 { -+ var stringLenmapvalue uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapvalue |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapvalue := int(stringLenmapvalue) -+ if intStringLenmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue -+ if postStringIndexmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapvalue > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) -+ iNdEx = postStringIndexmapvalue -+ } else { -+ iNdEx = entryPreIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > postIndex { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ m.Annotations[mapkey] = mapvalue -+ iNdEx = postIndex -+ case 14: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Mounts", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Mounts = append(m.Mounts, &Mount{}) -+ if err := m.Mounts[len(m.Mounts)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 15: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field LogPath", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.LogPath = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 16: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Resources", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Resources == nil { -+ m.Resources = &ContainerResources{} -+ } -+ if err := m.Resources.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *ContainerStatusResponse) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: ContainerStatusResponse: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: ContainerStatusResponse: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Status == nil { -+ m.Status = &ContainerStatus{} -+ } -+ if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Info", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Info == nil { -+ m.Info = make(map[string]string) -+ } -+ var mapkey string -+ var mapvalue string -+ for iNdEx < postIndex { -+ entryPreIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ if fieldNum == 1 { -+ var stringLenmapkey uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapkey |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapkey := int(stringLenmapkey) -+ if intStringLenmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapkey := iNdEx + intStringLenmapkey -+ if postStringIndexmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapkey > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) -+ iNdEx = postStringIndexmapkey -+ } else if fieldNum == 2 { -+ var stringLenmapvalue uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapvalue |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapvalue := int(stringLenmapvalue) -+ if intStringLenmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue -+ if postStringIndexmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapvalue > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) -+ iNdEx = postStringIndexmapvalue -+ } else { -+ iNdEx = entryPreIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > postIndex { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ m.Info[mapkey] = mapvalue -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *ContainerResources) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: ContainerResources: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: ContainerResources: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Linux", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Linux == nil { -+ m.Linux = &LinuxContainerResources{} -+ } -+ if err := m.Linux.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Windows", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Windows == nil { -+ m.Windows = &WindowsContainerResources{} -+ } -+ if err := m.Windows.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *UpdateContainerResourcesRequest) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: UpdateContainerResourcesRequest: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: UpdateContainerResourcesRequest: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field ContainerId", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.ContainerId = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Linux", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Linux == nil { -+ m.Linux = &LinuxContainerResources{} -+ } -+ if err := m.Linux.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 3: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Windows", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Windows == nil { -+ m.Windows = &WindowsContainerResources{} -+ } -+ if err := m.Windows.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 4: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Annotations", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Annotations == nil { -+ m.Annotations = make(map[string]string) -+ } -+ var mapkey string -+ var mapvalue string -+ for iNdEx < postIndex { -+ entryPreIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ if fieldNum == 1 { -+ var stringLenmapkey uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapkey |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapkey := int(stringLenmapkey) -+ if intStringLenmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapkey := iNdEx + intStringLenmapkey -+ if postStringIndexmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapkey > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) -+ iNdEx = postStringIndexmapkey -+ } else if fieldNum == 2 { -+ var stringLenmapvalue uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapvalue |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapvalue := int(stringLenmapvalue) -+ if intStringLenmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue -+ if postStringIndexmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapvalue > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) -+ iNdEx = postStringIndexmapvalue -+ } else { -+ iNdEx = entryPreIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > postIndex { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ m.Annotations[mapkey] = mapvalue -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *UpdateContainerResourcesResponse) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: UpdateContainerResourcesResponse: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: UpdateContainerResourcesResponse: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *ExecSyncRequest) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: ExecSyncRequest: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: ExecSyncRequest: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field ContainerId", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.ContainerId = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Cmd", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Cmd = append(m.Cmd, string(dAtA[iNdEx:postIndex])) -+ iNdEx = postIndex -+ case 3: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Timeout", wireType) -+ } -+ m.Timeout = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.Timeout |= int64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *ExecSyncResponse) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: ExecSyncResponse: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: ExecSyncResponse: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Stdout", wireType) -+ } -+ var byteLen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ byteLen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if byteLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + byteLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Stdout = append(m.Stdout[:0], dAtA[iNdEx:postIndex]...) -+ if m.Stdout == nil { -+ m.Stdout = []byte{} -+ } -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Stderr", wireType) -+ } -+ var byteLen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ byteLen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if byteLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + byteLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Stderr = append(m.Stderr[:0], dAtA[iNdEx:postIndex]...) -+ if m.Stderr == nil { -+ m.Stderr = []byte{} -+ } -+ iNdEx = postIndex -+ case 3: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field ExitCode", wireType) -+ } -+ m.ExitCode = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.ExitCode |= int32(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *ExecRequest) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: ExecRequest: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: ExecRequest: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field ContainerId", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.ContainerId = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Cmd", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Cmd = append(m.Cmd, string(dAtA[iNdEx:postIndex])) -+ iNdEx = postIndex -+ case 3: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Tty", wireType) -+ } -+ var v int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ v |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ m.Tty = bool(v != 0) -+ case 4: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Stdin", wireType) -+ } -+ var v int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ v |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ m.Stdin = bool(v != 0) -+ case 5: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Stdout", wireType) -+ } -+ var v int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ v |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ m.Stdout = bool(v != 0) -+ case 6: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Stderr", wireType) -+ } -+ var v int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ v |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ m.Stderr = bool(v != 0) -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *ExecResponse) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: ExecResponse: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: ExecResponse: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Url", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Url = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *AttachRequest) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: AttachRequest: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: AttachRequest: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field ContainerId", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.ContainerId = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 2: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Stdin", wireType) -+ } -+ var v int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ v |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ m.Stdin = bool(v != 0) -+ case 3: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Tty", wireType) -+ } -+ var v int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ v |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ m.Tty = bool(v != 0) -+ case 4: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Stdout", wireType) -+ } -+ var v int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ v |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ m.Stdout = bool(v != 0) -+ case 5: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Stderr", wireType) -+ } -+ var v int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ v |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ m.Stderr = bool(v != 0) -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *AttachResponse) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: AttachResponse: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: AttachResponse: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Url", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Url = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *PortForwardRequest) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: PortForwardRequest: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: PortForwardRequest: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field PodSandboxId", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.PodSandboxId = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 2: -+ if wireType == 0 { -+ var v int32 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ v |= int32(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ m.Port = append(m.Port, v) -+ } else if wireType == 2 { -+ var packedLen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ packedLen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if packedLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + packedLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ var elementCount int -+ var count int -+ for _, integer := range dAtA[iNdEx:postIndex] { -+ if integer < 128 { -+ count++ -+ } -+ } -+ elementCount = count -+ if elementCount != 0 && len(m.Port) == 0 { -+ m.Port = make([]int32, 0, elementCount) -+ } -+ for iNdEx < postIndex { -+ var v int32 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ v |= int32(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ m.Port = append(m.Port, v) -+ } -+ } else { -+ return fmt.Errorf("proto: wrong wireType = %d for field Port", wireType) -+ } -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *PortForwardResponse) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: PortForwardResponse: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: PortForwardResponse: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Url", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Url = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *ImageFilter) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: ImageFilter: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: ImageFilter: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Image", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Image == nil { -+ m.Image = &ImageSpec{} -+ } -+ if err := m.Image.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *ListImagesRequest) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: ListImagesRequest: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: ListImagesRequest: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Filter", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Filter == nil { -+ m.Filter = &ImageFilter{} -+ } -+ if err := m.Filter.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *Image) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: Image: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: Image: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Id = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field RepoTags", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.RepoTags = append(m.RepoTags, string(dAtA[iNdEx:postIndex])) -+ iNdEx = postIndex -+ case 3: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field RepoDigests", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.RepoDigests = append(m.RepoDigests, string(dAtA[iNdEx:postIndex])) -+ iNdEx = postIndex -+ case 4: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Size_", wireType) -+ } -+ m.Size_ = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.Size_ |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ case 5: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Uid", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Uid == nil { -+ m.Uid = &Int64Value{} -+ } -+ if err := m.Uid.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 6: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Username", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Username = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 7: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Spec == nil { -+ m.Spec = &ImageSpec{} -+ } -+ if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 8: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Pinned", wireType) -+ } -+ var v int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ v |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ m.Pinned = bool(v != 0) -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *ListImagesResponse) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: ListImagesResponse: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: ListImagesResponse: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Images", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Images = append(m.Images, &Image{}) -+ if err := m.Images[len(m.Images)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *ImageStatusRequest) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: ImageStatusRequest: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: ImageStatusRequest: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Image", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Image == nil { -+ m.Image = &ImageSpec{} -+ } -+ if err := m.Image.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 2: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Verbose", wireType) -+ } -+ var v int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ v |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ m.Verbose = bool(v != 0) -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *ImageStatusResponse) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: ImageStatusResponse: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: ImageStatusResponse: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Image", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Image == nil { -+ m.Image = &Image{} -+ } -+ if err := m.Image.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Info", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Info == nil { -+ m.Info = make(map[string]string) -+ } -+ var mapkey string -+ var mapvalue string -+ for iNdEx < postIndex { -+ entryPreIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ if fieldNum == 1 { -+ var stringLenmapkey uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapkey |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapkey := int(stringLenmapkey) -+ if intStringLenmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapkey := iNdEx + intStringLenmapkey -+ if postStringIndexmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapkey > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) -+ iNdEx = postStringIndexmapkey -+ } else if fieldNum == 2 { -+ var stringLenmapvalue uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapvalue |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapvalue := int(stringLenmapvalue) -+ if intStringLenmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue -+ if postStringIndexmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapvalue > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) -+ iNdEx = postStringIndexmapvalue -+ } else { -+ iNdEx = entryPreIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > postIndex { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ m.Info[mapkey] = mapvalue -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *AuthConfig) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: AuthConfig: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: AuthConfig: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Username", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Username = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Password", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Password = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 3: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Auth", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Auth = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 4: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field ServerAddress", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.ServerAddress = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 5: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field IdentityToken", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.IdentityToken = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 6: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field RegistryToken", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.RegistryToken = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *PullImageRequest) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: PullImageRequest: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: PullImageRequest: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Image", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Image == nil { -+ m.Image = &ImageSpec{} -+ } -+ if err := m.Image.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Auth", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Auth == nil { -+ m.Auth = &AuthConfig{} -+ } -+ if err := m.Auth.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 3: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field SandboxConfig", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.SandboxConfig == nil { -+ m.SandboxConfig = &PodSandboxConfig{} -+ } -+ if err := m.SandboxConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *PullImageResponse) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: PullImageResponse: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: PullImageResponse: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field ImageRef", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.ImageRef = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *RemoveImageRequest) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: RemoveImageRequest: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: RemoveImageRequest: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Image", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Image == nil { -+ m.Image = &ImageSpec{} -+ } -+ if err := m.Image.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *RemoveImageResponse) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: RemoveImageResponse: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: RemoveImageResponse: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *NetworkConfig) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: NetworkConfig: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: NetworkConfig: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field PodCidr", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.PodCidr = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *RuntimeConfig) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: RuntimeConfig: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: RuntimeConfig: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field NetworkConfig", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.NetworkConfig == nil { -+ m.NetworkConfig = &NetworkConfig{} -+ } -+ if err := m.NetworkConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *UpdateRuntimeConfigRequest) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: UpdateRuntimeConfigRequest: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: UpdateRuntimeConfigRequest: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field RuntimeConfig", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.RuntimeConfig == nil { -+ m.RuntimeConfig = &RuntimeConfig{} -+ } -+ if err := m.RuntimeConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *UpdateRuntimeConfigResponse) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: UpdateRuntimeConfigResponse: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: UpdateRuntimeConfigResponse: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *RuntimeCondition) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: RuntimeCondition: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: RuntimeCondition: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Type = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 2: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) -+ } -+ var v int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ v |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ m.Status = bool(v != 0) -+ case 3: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Reason = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 4: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Message = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *RuntimeStatus) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: RuntimeStatus: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: RuntimeStatus: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Conditions", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Conditions = append(m.Conditions, &RuntimeCondition{}) -+ if err := m.Conditions[len(m.Conditions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *StatusRequest) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: StatusRequest: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: StatusRequest: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Verbose", wireType) -+ } -+ var v int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ v |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ m.Verbose = bool(v != 0) -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *StatusResponse) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: StatusResponse: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: StatusResponse: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Status == nil { -+ m.Status = &RuntimeStatus{} -+ } -+ if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Info", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Info == nil { -+ m.Info = make(map[string]string) -+ } -+ var mapkey string -+ var mapvalue string -+ for iNdEx < postIndex { -+ entryPreIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ if fieldNum == 1 { -+ var stringLenmapkey uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapkey |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapkey := int(stringLenmapkey) -+ if intStringLenmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapkey := iNdEx + intStringLenmapkey -+ if postStringIndexmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapkey > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) -+ iNdEx = postStringIndexmapkey -+ } else if fieldNum == 2 { -+ var stringLenmapvalue uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapvalue |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapvalue := int(stringLenmapvalue) -+ if intStringLenmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue -+ if postStringIndexmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapvalue > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) -+ iNdEx = postStringIndexmapvalue -+ } else { -+ iNdEx = entryPreIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > postIndex { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ m.Info[mapkey] = mapvalue -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *ImageFsInfoRequest) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: ImageFsInfoRequest: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: ImageFsInfoRequest: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *UInt64Value) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: UInt64Value: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: UInt64Value: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) -+ } -+ m.Value = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.Value |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *FilesystemIdentifier) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: FilesystemIdentifier: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: FilesystemIdentifier: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Mountpoint", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Mountpoint = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *FilesystemUsage) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: FilesystemUsage: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: FilesystemUsage: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Timestamp", wireType) -+ } -+ m.Timestamp = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.Timestamp |= int64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field FsId", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.FsId == nil { -+ m.FsId = &FilesystemIdentifier{} -+ } -+ if err := m.FsId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 3: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field UsedBytes", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.UsedBytes == nil { -+ m.UsedBytes = &UInt64Value{} -+ } -+ if err := m.UsedBytes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 4: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field InodesUsed", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.InodesUsed == nil { -+ m.InodesUsed = &UInt64Value{} -+ } -+ if err := m.InodesUsed.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *ImageFsInfoResponse) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: ImageFsInfoResponse: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: ImageFsInfoResponse: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field ImageFilesystems", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.ImageFilesystems = append(m.ImageFilesystems, &FilesystemUsage{}) -+ if err := m.ImageFilesystems[len(m.ImageFilesystems)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *ContainerStatsRequest) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: ContainerStatsRequest: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: ContainerStatsRequest: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field ContainerId", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.ContainerId = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *ContainerStatsResponse) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: ContainerStatsResponse: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: ContainerStatsResponse: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Stats", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Stats == nil { -+ m.Stats = &ContainerStats{} -+ } -+ if err := m.Stats.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *ListContainerStatsRequest) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: ListContainerStatsRequest: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: ListContainerStatsRequest: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Filter", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Filter == nil { -+ m.Filter = &ContainerStatsFilter{} -+ } -+ if err := m.Filter.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *ContainerStatsFilter) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: ContainerStatsFilter: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: ContainerStatsFilter: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Id = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field PodSandboxId", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.PodSandboxId = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 3: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field LabelSelector", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.LabelSelector == nil { -+ m.LabelSelector = make(map[string]string) -+ } -+ var mapkey string -+ var mapvalue string -+ for iNdEx < postIndex { -+ entryPreIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ if fieldNum == 1 { -+ var stringLenmapkey uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapkey |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapkey := int(stringLenmapkey) -+ if intStringLenmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapkey := iNdEx + intStringLenmapkey -+ if postStringIndexmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapkey > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) -+ iNdEx = postStringIndexmapkey -+ } else if fieldNum == 2 { -+ var stringLenmapvalue uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapvalue |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapvalue := int(stringLenmapvalue) -+ if intStringLenmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue -+ if postStringIndexmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapvalue > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) -+ iNdEx = postStringIndexmapvalue -+ } else { -+ iNdEx = entryPreIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > postIndex { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ m.LabelSelector[mapkey] = mapvalue -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *ListContainerStatsResponse) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: ListContainerStatsResponse: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: ListContainerStatsResponse: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Stats", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Stats = append(m.Stats, &ContainerStats{}) -+ if err := m.Stats[len(m.Stats)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *ContainerAttributes) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: ContainerAttributes: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: ContainerAttributes: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Id = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Metadata == nil { -+ m.Metadata = &ContainerMetadata{} -+ } -+ if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 3: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Labels", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Labels == nil { -+ m.Labels = make(map[string]string) -+ } -+ var mapkey string -+ var mapvalue string -+ for iNdEx < postIndex { -+ entryPreIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ if fieldNum == 1 { -+ var stringLenmapkey uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapkey |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapkey := int(stringLenmapkey) -+ if intStringLenmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapkey := iNdEx + intStringLenmapkey -+ if postStringIndexmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapkey > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) -+ iNdEx = postStringIndexmapkey -+ } else if fieldNum == 2 { -+ var stringLenmapvalue uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapvalue |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapvalue := int(stringLenmapvalue) -+ if intStringLenmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue -+ if postStringIndexmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapvalue > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) -+ iNdEx = postStringIndexmapvalue -+ } else { -+ iNdEx = entryPreIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > postIndex { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ m.Labels[mapkey] = mapvalue -+ iNdEx = postIndex -+ case 4: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Annotations", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Annotations == nil { -+ m.Annotations = make(map[string]string) -+ } -+ var mapkey string -+ var mapvalue string -+ for iNdEx < postIndex { -+ entryPreIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ if fieldNum == 1 { -+ var stringLenmapkey uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapkey |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapkey := int(stringLenmapkey) -+ if intStringLenmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapkey := iNdEx + intStringLenmapkey -+ if postStringIndexmapkey < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapkey > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) -+ iNdEx = postStringIndexmapkey -+ } else if fieldNum == 2 { -+ var stringLenmapvalue uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLenmapvalue |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLenmapvalue := int(stringLenmapvalue) -+ if intStringLenmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue -+ if postStringIndexmapvalue < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postStringIndexmapvalue > l { -+ return io.ErrUnexpectedEOF -+ } -+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) -+ iNdEx = postStringIndexmapvalue -+ } else { -+ iNdEx = entryPreIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > postIndex { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ m.Annotations[mapkey] = mapvalue -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *ContainerStats) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: ContainerStats: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: ContainerStats: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Attributes", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Attributes == nil { -+ m.Attributes = &ContainerAttributes{} -+ } -+ if err := m.Attributes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Cpu", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Cpu == nil { -+ m.Cpu = &CpuUsage{} -+ } -+ if err := m.Cpu.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 3: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Memory", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.Memory == nil { -+ m.Memory = &MemoryUsage{} -+ } -+ if err := m.Memory.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 4: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field WritableLayer", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.WritableLayer == nil { -+ m.WritableLayer = &FilesystemUsage{} -+ } -+ if err := m.WritableLayer.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *CpuUsage) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: CpuUsage: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: CpuUsage: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Timestamp", wireType) -+ } -+ m.Timestamp = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.Timestamp |= int64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field UsageCoreNanoSeconds", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.UsageCoreNanoSeconds == nil { -+ m.UsageCoreNanoSeconds = &UInt64Value{} -+ } -+ if err := m.UsageCoreNanoSeconds.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 3: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field UsageNanoCores", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.UsageNanoCores == nil { -+ m.UsageNanoCores = &UInt64Value{} -+ } -+ if err := m.UsageNanoCores.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *MemoryUsage) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: MemoryUsage: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: MemoryUsage: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Timestamp", wireType) -+ } -+ m.Timestamp = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.Timestamp |= int64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field WorkingSetBytes", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.WorkingSetBytes == nil { -+ m.WorkingSetBytes = &UInt64Value{} -+ } -+ if err := m.WorkingSetBytes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 3: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field AvailableBytes", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.AvailableBytes == nil { -+ m.AvailableBytes = &UInt64Value{} -+ } -+ if err := m.AvailableBytes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 4: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field UsageBytes", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.UsageBytes == nil { -+ m.UsageBytes = &UInt64Value{} -+ } -+ if err := m.UsageBytes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 5: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field RssBytes", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.RssBytes == nil { -+ m.RssBytes = &UInt64Value{} -+ } -+ if err := m.RssBytes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 6: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field PageFaults", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.PageFaults == nil { -+ m.PageFaults = &UInt64Value{} -+ } -+ if err := m.PageFaults.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ case 7: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field MajorPageFaults", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.MajorPageFaults == nil { -+ m.MajorPageFaults = &UInt64Value{} -+ } -+ if err := m.MajorPageFaults.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *ReopenContainerLogRequest) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: ReopenContainerLogRequest: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: ReopenContainerLogRequest: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field ContainerId", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.ContainerId = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *ReopenContainerLogResponse) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: ReopenContainerLogResponse: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: ReopenContainerLogResponse: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *CheckpointContainerRequest) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: CheckpointContainerRequest: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: CheckpointContainerRequest: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field ContainerId", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.ContainerId = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 2: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Location", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.Location = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 3: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field Timeout", wireType) -+ } -+ m.Timeout = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.Timeout |= int64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *CheckpointContainerResponse) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: CheckpointContainerResponse: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: CheckpointContainerResponse: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *GetEventsRequest) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: GetEventsRequest: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: GetEventsRequest: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func (m *ContainerEventResponse) Unmarshal(dAtA []byte) error { -+ l := len(dAtA) -+ iNdEx := 0 -+ for iNdEx < l { -+ preIndex := iNdEx -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ fieldNum := int32(wire >> 3) -+ wireType := int(wire & 0x7) -+ if wireType == 4 { -+ return fmt.Errorf("proto: ContainerEventResponse: wiretype end group for non-group") -+ } -+ if fieldNum <= 0 { -+ return fmt.Errorf("proto: ContainerEventResponse: illegal tag %d (wire type %d)", fieldNum, wire) -+ } -+ switch fieldNum { -+ case 1: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field ContainerId", wireType) -+ } -+ var stringLen uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ stringLen |= uint64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ intStringLen := int(stringLen) -+ if intStringLen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + intStringLen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ m.ContainerId = string(dAtA[iNdEx:postIndex]) -+ iNdEx = postIndex -+ case 2: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field ContainerEventType", wireType) -+ } -+ m.ContainerEventType = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.ContainerEventType |= ContainerEventType(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ case 3: -+ if wireType != 0 { -+ return fmt.Errorf("proto: wrong wireType = %d for field CreatedAt", wireType) -+ } -+ m.CreatedAt = 0 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ m.CreatedAt |= int64(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ case 4: -+ if wireType != 2 { -+ return fmt.Errorf("proto: wrong wireType = %d for field PodSandboxMetadata", wireType) -+ } -+ var msglen int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ msglen |= int(b&0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if msglen < 0 { -+ return ErrInvalidLengthApi -+ } -+ postIndex := iNdEx + msglen -+ if postIndex < 0 { -+ return ErrInvalidLengthApi -+ } -+ if postIndex > l { -+ return io.ErrUnexpectedEOF -+ } -+ if m.PodSandboxMetadata == nil { -+ m.PodSandboxMetadata = &PodSandboxMetadata{} -+ } -+ if err := m.PodSandboxMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { -+ return err -+ } -+ iNdEx = postIndex -+ default: -+ iNdEx = preIndex -+ skippy, err := skipApi(dAtA[iNdEx:]) -+ if err != nil { -+ return err -+ } -+ if (skippy < 0) || (iNdEx+skippy) < 0 { -+ return ErrInvalidLengthApi -+ } -+ if (iNdEx + skippy) > l { -+ return io.ErrUnexpectedEOF -+ } -+ iNdEx += skippy -+ } -+ } -+ -+ if iNdEx > l { -+ return io.ErrUnexpectedEOF -+ } -+ return nil -+} -+func skipApi(dAtA []byte) (n int, err error) { -+ l := len(dAtA) -+ iNdEx := 0 -+ depth := 0 -+ for iNdEx < l { -+ var wire uint64 -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return 0, ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return 0, io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ wire |= (uint64(b) & 0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ wireType := int(wire & 0x7) -+ switch wireType { -+ case 0: -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return 0, ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return 0, io.ErrUnexpectedEOF -+ } -+ iNdEx++ -+ if dAtA[iNdEx-1] < 0x80 { -+ break -+ } -+ } -+ case 1: -+ iNdEx += 8 -+ case 2: -+ var length int -+ for shift := uint(0); ; shift += 7 { -+ if shift >= 64 { -+ return 0, ErrIntOverflowApi -+ } -+ if iNdEx >= l { -+ return 0, io.ErrUnexpectedEOF -+ } -+ b := dAtA[iNdEx] -+ iNdEx++ -+ length |= (int(b) & 0x7F) << shift -+ if b < 0x80 { -+ break -+ } -+ } -+ if length < 0 { -+ return 0, ErrInvalidLengthApi -+ } -+ iNdEx += length -+ case 3: -+ depth++ -+ case 4: -+ if depth == 0 { -+ return 0, ErrUnexpectedEndOfGroupApi -+ } -+ depth-- -+ case 5: -+ iNdEx += 4 -+ default: -+ return 0, fmt.Errorf("proto: illegal wireType %d", wireType) -+ } -+ if iNdEx < 0 { -+ return 0, ErrInvalidLengthApi -+ } -+ if depth == 0 { -+ return iNdEx, nil -+ } -+ } -+ return 0, io.ErrUnexpectedEOF -+} -+ -+var ( -+ ErrInvalidLengthApi = fmt.Errorf("proto: negative length found during unmarshaling") -+ ErrIntOverflowApi = fmt.Errorf("proto: integer overflow") -+ ErrUnexpectedEndOfGroupApi = fmt.Errorf("proto: unexpected end of group") -+) -diff --git a/vendor/k8s.io/cri-api/pkg/apis/runtime/v1/api.proto b/vendor/k8s.io/cri-api/pkg/apis/runtime/v1/api.proto -new file mode 100755 -index 0000000..9feb4b2 ---- /dev/null -+++ b/vendor/k8s.io/cri-api/pkg/apis/runtime/v1/api.proto -@@ -0,0 +1,1606 @@ -+/* -+Copyright 2020 The Kubernetes 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 regenerate api.pb.go run hack/update-generated-runtime.sh -+syntax = "proto3"; -+ -+package runtime.v1; -+option go_package = "k8s.io/cri-api/pkg/apis/runtime/v1"; -+ -+import "github.com/gogo/protobuf/gogoproto/gogo.proto"; -+ -+option (gogoproto.goproto_stringer_all) = false; -+option (gogoproto.stringer_all) = true; -+option (gogoproto.goproto_getters_all) = true; -+option (gogoproto.marshaler_all) = true; -+option (gogoproto.sizer_all) = true; -+option (gogoproto.unmarshaler_all) = true; -+option (gogoproto.goproto_unrecognized_all) = false; -+ -+// Runtime service defines the public APIs for remote container runtimes -+service RuntimeService { -+ // Version returns the runtime name, runtime version, and runtime API version. -+ rpc Version(VersionRequest) returns (VersionResponse) {} -+ -+ // RunPodSandbox creates and starts a pod-level sandbox. Runtimes must ensure -+ // the sandbox is in the ready state on success. -+ rpc RunPodSandbox(RunPodSandboxRequest) returns (RunPodSandboxResponse) {} -+ // StopPodSandbox stops any running process that is part of the sandbox and -+ // reclaims network resources (e.g., IP addresses) allocated to the sandbox. -+ // If there are any running containers in the sandbox, they must be forcibly -+ // terminated. -+ // This call is idempotent, and must not return an error if all relevant -+ // resources have already been reclaimed. kubelet will call StopPodSandbox -+ // at least once before calling RemovePodSandbox. It will also attempt to -+ // reclaim resources eagerly, as soon as a sandbox is not needed. Hence, -+ // multiple StopPodSandbox calls are expected. -+ rpc StopPodSandbox(StopPodSandboxRequest) returns (StopPodSandboxResponse) {} -+ // RemovePodSandbox removes the sandbox. If there are any running containers -+ // in the sandbox, they must be forcibly terminated and removed. -+ // This call is idempotent, and must not return an error if the sandbox has -+ // already been removed. -+ rpc RemovePodSandbox(RemovePodSandboxRequest) returns (RemovePodSandboxResponse) {} -+ // PodSandboxStatus returns the status of the PodSandbox. If the PodSandbox is not -+ // present, returns an error. -+ rpc PodSandboxStatus(PodSandboxStatusRequest) returns (PodSandboxStatusResponse) {} -+ // ListPodSandbox returns a list of PodSandboxes. -+ rpc ListPodSandbox(ListPodSandboxRequest) returns (ListPodSandboxResponse) {} -+ -+ // CreateContainer creates a new container in specified PodSandbox -+ rpc CreateContainer(CreateContainerRequest) returns (CreateContainerResponse) {} -+ // StartContainer starts the container. -+ rpc StartContainer(StartContainerRequest) returns (StartContainerResponse) {} -+ // StopContainer stops a running container with a grace period (i.e., timeout). -+ // This call is idempotent, and must not return an error if the container has -+ // already been stopped. -+ // The runtime must forcibly kill the container after the grace period is -+ // reached. -+ rpc StopContainer(StopContainerRequest) returns (StopContainerResponse) {} -+ // RemoveContainer removes the container. If the container is running, the -+ // container must be forcibly removed. -+ // This call is idempotent, and must not return an error if the container has -+ // already been removed. -+ rpc RemoveContainer(RemoveContainerRequest) returns (RemoveContainerResponse) {} -+ // ListContainers lists all containers by filters. -+ rpc ListContainers(ListContainersRequest) returns (ListContainersResponse) {} -+ // ContainerStatus returns status of the container. If the container is not -+ // present, returns an error. -+ rpc ContainerStatus(ContainerStatusRequest) returns (ContainerStatusResponse) {} -+ // UpdateContainerResources updates ContainerConfig of the container synchronously. -+ // If runtime fails to transactionally update the requested resources, an error is returned. -+ rpc UpdateContainerResources(UpdateContainerResourcesRequest) returns (UpdateContainerResourcesResponse) {} -+ // ReopenContainerLog asks runtime to reopen the stdout/stderr log file -+ // for the container. This is often called after the log file has been -+ // rotated. If the container is not running, container runtime can choose -+ // to either create a new log file and return nil, or return an error. -+ // Once it returns error, new container log file MUST NOT be created. -+ rpc ReopenContainerLog(ReopenContainerLogRequest) returns (ReopenContainerLogResponse) {} -+ -+ // ExecSync runs a command in a container synchronously. -+ rpc ExecSync(ExecSyncRequest) returns (ExecSyncResponse) {} -+ // Exec prepares a streaming endpoint to execute a command in the container. -+ rpc Exec(ExecRequest) returns (ExecResponse) {} -+ // Attach prepares a streaming endpoint to attach to a running container. -+ rpc Attach(AttachRequest) returns (AttachResponse) {} -+ // PortForward prepares a streaming endpoint to forward ports from a PodSandbox. -+ rpc PortForward(PortForwardRequest) returns (PortForwardResponse) {} -+ -+ // ContainerStats returns stats of the container. If the container does not -+ // exist, the call returns an error. -+ rpc ContainerStats(ContainerStatsRequest) returns (ContainerStatsResponse) {} -+ // ListContainerStats returns stats of all running containers. -+ rpc ListContainerStats(ListContainerStatsRequest) returns (ListContainerStatsResponse) {} -+ -+ // PodSandboxStats returns stats of the pod sandbox. If the pod sandbox does not -+ // exist, the call returns an error. -+ rpc PodSandboxStats(PodSandboxStatsRequest) returns (PodSandboxStatsResponse) {} -+ // ListPodSandboxStats returns stats of the pod sandboxes matching a filter. -+ rpc ListPodSandboxStats(ListPodSandboxStatsRequest) returns (ListPodSandboxStatsResponse) {} -+ -+ // UpdateRuntimeConfig updates the runtime configuration based on the given request. -+ rpc UpdateRuntimeConfig(UpdateRuntimeConfigRequest) returns (UpdateRuntimeConfigResponse) {} -+ -+ // Status returns the status of the runtime. -+ rpc Status(StatusRequest) returns (StatusResponse) {} -+ -+ // CheckpointContainer checkpoints a container -+ rpc CheckpointContainer(CheckpointContainerRequest) returns (CheckpointContainerResponse) {} -+ -+ // GetContainerEvents gets container events from the CRI runtime -+ rpc GetContainerEvents(GetEventsRequest) returns (stream ContainerEventResponse) {} -+ -+} -+ -+// ImageService defines the public APIs for managing images. -+service ImageService { -+ // ListImages lists existing images. -+ rpc ListImages(ListImagesRequest) returns (ListImagesResponse) {} -+ // ImageStatus returns the status of the image. If the image is not -+ // present, returns a response with ImageStatusResponse.Image set to -+ // nil. -+ rpc ImageStatus(ImageStatusRequest) returns (ImageStatusResponse) {} -+ // PullImage pulls an image with authentication config. -+ rpc PullImage(PullImageRequest) returns (PullImageResponse) {} -+ // RemoveImage removes the image. -+ // This call is idempotent, and must not return an error if the image has -+ // already been removed. -+ rpc RemoveImage(RemoveImageRequest) returns (RemoveImageResponse) {} -+ // ImageFSInfo returns information of the filesystem that is used to store images. -+ rpc ImageFsInfo(ImageFsInfoRequest) returns (ImageFsInfoResponse) {} -+} -+ -+message VersionRequest { -+ // Version of the kubelet runtime API. -+ string version = 1; -+} -+ -+message VersionResponse { -+ // Version of the kubelet runtime API. -+ string version = 1; -+ // Name of the container runtime. -+ string runtime_name = 2; -+ // Version of the container runtime. The string must be -+ // semver-compatible. -+ string runtime_version = 3; -+ // API version of the container runtime. The string must be -+ // semver-compatible. -+ string runtime_api_version = 4; -+} -+ -+// DNSConfig specifies the DNS servers and search domains of a sandbox. -+message DNSConfig { -+ // List of DNS servers of the cluster. -+ repeated string servers = 1; -+ // List of DNS search domains of the cluster. -+ repeated string searches = 2; -+ // List of DNS options. See https://linux.die.net/man/5/resolv.conf -+ // for all available options. -+ repeated string options = 3; -+} -+ -+enum Protocol { -+ TCP = 0; -+ UDP = 1; -+ SCTP = 2; -+} -+ -+// PortMapping specifies the port mapping configurations of a sandbox. -+message PortMapping { -+ // Protocol of the port mapping. -+ Protocol protocol = 1; -+ // Port number within the container. Default: 0 (not specified). -+ int32 container_port = 2; -+ // Port number on the host. Default: 0 (not specified). -+ int32 host_port = 3; -+ // Host IP. -+ string host_ip = 4; -+} -+ -+enum MountPropagation { -+ // No mount propagation ("private" in Linux terminology). -+ PROPAGATION_PRIVATE = 0; -+ // Mounts get propagated from the host to the container ("rslave" in Linux). -+ PROPAGATION_HOST_TO_CONTAINER = 1; -+ // Mounts get propagated from the host to the container and from the -+ // container to the host ("rshared" in Linux). -+ PROPAGATION_BIDIRECTIONAL = 2; -+} -+ -+// Mount specifies a host volume to mount into a container. -+message Mount { -+ // Path of the mount within the container. -+ string container_path = 1; -+ // Path of the mount on the host. If the hostPath doesn't exist, then runtimes -+ // should report error. If the hostpath is a symbolic link, runtimes should -+ // follow the symlink and mount the real destination to container. -+ string host_path = 2; -+ // If set, the mount is read-only. -+ bool readonly = 3; -+ // If set, the mount needs SELinux relabeling. -+ bool selinux_relabel = 4; -+ // Requested propagation mode. -+ MountPropagation propagation = 5; -+} -+ -+// IDMapping describes host to container ID mappings for a pod sandbox. -+message IDMapping { -+ // HostId is the id on the host. -+ uint32 host_id = 1; -+ // ContainerId is the id in the container. -+ uint32 container_id = 2; -+ // Length is the size of the range to map. -+ uint32 length = 3; -+} -+ -+// A NamespaceMode describes the intended namespace configuration for each -+// of the namespaces (Network, PID, IPC) in NamespaceOption. Runtimes should -+// map these modes as appropriate for the technology underlying the runtime. -+enum NamespaceMode { -+ // A POD namespace is common to all containers in a pod. -+ // For example, a container with a PID namespace of POD expects to view -+ // all of the processes in all of the containers in the pod. -+ POD = 0; -+ // A CONTAINER namespace is restricted to a single container. -+ // For example, a container with a PID namespace of CONTAINER expects to -+ // view only the processes in that container. -+ CONTAINER = 1; -+ // A NODE namespace is the namespace of the Kubernetes node. -+ // For example, a container with a PID namespace of NODE expects to view -+ // all of the processes on the host running the kubelet. -+ NODE = 2; -+ // TARGET targets the namespace of another container. When this is specified, -+ // a target_id must be specified in NamespaceOption and refer to a container -+ // previously created with NamespaceMode CONTAINER. This containers namespace -+ // will be made to match that of container target_id. -+ // For example, a container with a PID namespace of TARGET expects to view -+ // all of the processes that container target_id can view. -+ TARGET = 3; -+} -+ -+// UserNamespace describes the intended user namespace configuration for a pod sandbox. -+message UserNamespace { -+ // Mode is the NamespaceMode for this UserNamespace. -+ // Note: NamespaceMode for UserNamespace currently supports only POD and NODE, not CONTAINER OR TARGET. -+ NamespaceMode mode = 1; -+ -+ // Uids specifies the UID mappings for the user namespace. -+ repeated IDMapping uids = 2; -+ -+ // Gids specifies the GID mappings for the user namespace. -+ repeated IDMapping gids = 3; -+} -+ -+// NamespaceOption provides options for Linux namespaces. -+message NamespaceOption { -+ // Network namespace for this container/sandbox. -+ // Note: There is currently no way to set CONTAINER scoped network in the Kubernetes API. -+ // Namespaces currently set by the kubelet: POD, NODE -+ NamespaceMode network = 1; -+ // PID namespace for this container/sandbox. -+ // Note: The CRI default is POD, but the v1.PodSpec default is CONTAINER. -+ // The kubelet's runtime manager will set this to CONTAINER explicitly for v1 pods. -+ // Namespaces currently set by the kubelet: POD, CONTAINER, NODE, TARGET -+ NamespaceMode pid = 2; -+ // IPC namespace for this container/sandbox. -+ // Note: There is currently no way to set CONTAINER scoped IPC in the Kubernetes API. -+ // Namespaces currently set by the kubelet: POD, NODE -+ NamespaceMode ipc = 3; -+ // Target Container ID for NamespaceMode of TARGET. This container must have been -+ // previously created in the same pod. It is not possible to specify different targets -+ // for each namespace. -+ string target_id = 4; -+ // UsernsOptions for this pod sandbox. -+ // The Kubelet picks the user namespace configuration to use for the pod sandbox. The mappings -+ // are specified as part of the UserNamespace struct. If the struct is nil, then the POD mode -+ // must be assumed. This is done for backward compatibility with older Kubelet versions that -+ // do not set a user namespace. -+ UserNamespace userns_options = 5; -+} -+ -+// Int64Value is the wrapper of int64. -+message Int64Value { -+ // The value. -+ int64 value = 1; -+} -+ -+// LinuxSandboxSecurityContext holds linux security configuration that will be -+// applied to a sandbox. Note that: -+// 1) It does not apply to containers in the pods. -+// 2) It may not be applicable to a PodSandbox which does not contain any running -+// process. -+message LinuxSandboxSecurityContext { -+ // Configurations for the sandbox's namespaces. -+ // This will be used only if the PodSandbox uses namespace for isolation. -+ NamespaceOption namespace_options = 1; -+ // Optional SELinux context to be applied. -+ SELinuxOption selinux_options = 2; -+ // UID to run sandbox processes as, when applicable. -+ Int64Value run_as_user = 3; -+ // GID to run sandbox processes as, when applicable. run_as_group should only -+ // be specified when run_as_user is specified; otherwise, the runtime MUST error. -+ Int64Value run_as_group = 8; -+ // If set, the root filesystem of the sandbox is read-only. -+ bool readonly_rootfs = 4; -+ // List of groups applied to the first process run in the sandbox, in -+ // addition to the sandbox's primary GID. -+ repeated int64 supplemental_groups = 5; -+ // Indicates whether the sandbox will be asked to run a privileged -+ // container. If a privileged container is to be executed within it, this -+ // MUST be true. -+ // This allows a sandbox to take additional security precautions if no -+ // privileged containers are expected to be run. -+ bool privileged = 6; -+ // Seccomp profile for the sandbox. -+ SecurityProfile seccomp = 9; -+ // AppArmor profile for the sandbox. -+ SecurityProfile apparmor = 10; -+ // Seccomp profile for the sandbox, candidate values are: -+ // * runtime/default: the default profile for the container runtime -+ // * unconfined: unconfined profile, ie, no seccomp sandboxing -+ // * localhost/: the profile installed on the node. -+ // is the full path of the profile. -+ // Default: "", which is identical with unconfined. -+ string seccomp_profile_path = 7 [deprecated=true]; -+} -+ -+// A security profile which can be used for sandboxes and containers. -+message SecurityProfile { -+ // Available profile types. -+ enum ProfileType { -+ // The container runtime default profile should be used. -+ RuntimeDefault = 0; -+ // Disable the feature for the sandbox or the container. -+ Unconfined = 1; -+ // A pre-defined profile on the node should be used. -+ Localhost = 2; -+ } -+ // Indicator which `ProfileType` should be applied. -+ ProfileType profile_type = 1; -+ // Indicates that a pre-defined profile on the node should be used. -+ // Must only be set if `ProfileType` is `Localhost`. -+ // For seccomp, it must be an absolute path to the seccomp profile. -+ // For AppArmor, this field is the AppArmor `/` -+ string localhost_ref = 2; -+} -+ -+// LinuxPodSandboxConfig holds platform-specific configurations for Linux -+// host platforms and Linux-based containers. -+message LinuxPodSandboxConfig { -+ // Parent cgroup of the PodSandbox. -+ // The cgroupfs style syntax will be used, but the container runtime can -+ // convert it to systemd semantics if needed. -+ string cgroup_parent = 1; -+ // LinuxSandboxSecurityContext holds sandbox security attributes. -+ LinuxSandboxSecurityContext security_context = 2; -+ // Sysctls holds linux sysctls config for the sandbox. -+ map sysctls = 3; -+ // Optional overhead represents the overheads associated with this sandbox -+ LinuxContainerResources overhead = 4; -+ // Optional resources represents the sum of container resources for this sandbox -+ LinuxContainerResources resources = 5; -+} -+ -+// PodSandboxMetadata holds all necessary information for building the sandbox name. -+// The container runtime is encouraged to expose the metadata associated with the -+// PodSandbox in its user interface for better user experience. For example, -+// the runtime can construct a unique PodSandboxName based on the metadata. -+message PodSandboxMetadata { -+ // Pod name of the sandbox. Same as the pod name in the Pod ObjectMeta. -+ string name = 1; -+ // Pod UID of the sandbox. Same as the pod UID in the Pod ObjectMeta. -+ string uid = 2; -+ // Pod namespace of the sandbox. Same as the pod namespace in the Pod ObjectMeta. -+ string namespace = 3; -+ // Attempt number of creating the sandbox. Default: 0. -+ uint32 attempt = 4; -+} -+ -+// PodSandboxConfig holds all the required and optional fields for creating a -+// sandbox. -+message PodSandboxConfig { -+ // Metadata of the sandbox. This information will uniquely identify the -+ // sandbox, and the runtime should leverage this to ensure correct -+ // operation. The runtime may also use this information to improve UX, such -+ // as by constructing a readable name. -+ PodSandboxMetadata metadata = 1; -+ // Hostname of the sandbox. Hostname could only be empty when the pod -+ // network namespace is NODE. -+ string hostname = 2; -+ // Path to the directory on the host in which container log files are -+ // stored. -+ // By default the log of a container going into the LogDirectory will be -+ // hooked up to STDOUT and STDERR. However, the LogDirectory may contain -+ // binary log files with structured logging data from the individual -+ // containers. For example, the files might be newline separated JSON -+ // structured logs, systemd-journald journal files, gRPC trace files, etc. -+ // E.g., -+ // PodSandboxConfig.LogDirectory = `/var/log/pods//` -+ // ContainerConfig.LogPath = `containerName/Instance#.log` -+ string log_directory = 3; -+ // DNS config for the sandbox. -+ DNSConfig dns_config = 4; -+ // Port mappings for the sandbox. -+ repeated PortMapping port_mappings = 5; -+ // Key-value pairs that may be used to scope and select individual resources. -+ map labels = 6; -+ // Unstructured key-value map that may be set by the kubelet to store and -+ // retrieve arbitrary metadata. This will include any annotations set on a -+ // pod through the Kubernetes API. -+ // -+ // Annotations MUST NOT be altered by the runtime; the annotations stored -+ // here MUST be returned in the PodSandboxStatus associated with the pod -+ // this PodSandboxConfig creates. -+ // -+ // In general, in order to preserve a well-defined interface between the -+ // kubelet and the container runtime, annotations SHOULD NOT influence -+ // runtime behaviour. -+ // -+ // Annotations can also be useful for runtime authors to experiment with -+ // new features that are opaque to the Kubernetes APIs (both user-facing -+ // and the CRI). Whenever possible, however, runtime authors SHOULD -+ // consider proposing new typed fields for any new features instead. -+ map annotations = 7; -+ // Optional configurations specific to Linux hosts. -+ LinuxPodSandboxConfig linux = 8; -+ // Optional configurations specific to Windows hosts. -+ WindowsPodSandboxConfig windows = 9; -+} -+ -+message RunPodSandboxRequest { -+ // Configuration for creating a PodSandbox. -+ PodSandboxConfig config = 1; -+ // Named runtime configuration to use for this PodSandbox. -+ // If the runtime handler is unknown, this request should be rejected. An -+ // empty string should select the default handler, equivalent to the -+ // behavior before this feature was added. -+ // See https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class -+ string runtime_handler = 2; -+} -+ -+message RunPodSandboxResponse { -+ // ID of the PodSandbox to run. -+ string pod_sandbox_id = 1; -+} -+ -+message StopPodSandboxRequest { -+ // ID of the PodSandbox to stop. -+ string pod_sandbox_id = 1; -+} -+ -+message StopPodSandboxResponse {} -+ -+message RemovePodSandboxRequest { -+ // ID of the PodSandbox to remove. -+ string pod_sandbox_id = 1; -+} -+ -+message RemovePodSandboxResponse {} -+ -+message PodSandboxStatusRequest { -+ // ID of the PodSandbox for which to retrieve status. -+ string pod_sandbox_id = 1; -+ // Verbose indicates whether to return extra information about the pod sandbox. -+ bool verbose = 2; -+} -+ -+// PodIP represents an ip of a Pod -+message PodIP{ -+ // an ip is a string representation of an IPv4 or an IPv6 -+ string ip = 1; -+} -+// PodSandboxNetworkStatus is the status of the network for a PodSandbox. -+// Currently ignored for pods sharing the host networking namespace. -+message PodSandboxNetworkStatus { -+ // IP address of the PodSandbox. -+ string ip = 1; -+ // list of additional ips (not inclusive of PodSandboxNetworkStatus.Ip) of the PodSandBoxNetworkStatus -+ repeated PodIP additional_ips = 2; -+} -+ -+// Namespace contains paths to the namespaces. -+message Namespace { -+ // Namespace options for Linux namespaces. -+ NamespaceOption options = 2; -+} -+ -+// LinuxSandboxStatus contains status specific to Linux sandboxes. -+message LinuxPodSandboxStatus { -+ // Paths to the sandbox's namespaces. -+ Namespace namespaces = 1; -+} -+ -+enum PodSandboxState { -+ SANDBOX_READY = 0; -+ SANDBOX_NOTREADY = 1; -+} -+ -+// PodSandboxStatus contains the status of the PodSandbox. -+message PodSandboxStatus { -+ // ID of the sandbox. -+ string id = 1; -+ // Metadata of the sandbox. -+ PodSandboxMetadata metadata = 2; -+ // State of the sandbox. -+ PodSandboxState state = 3; -+ // Creation timestamp of the sandbox in nanoseconds. Must be > 0. -+ int64 created_at = 4; -+ // Network contains network status if network is handled by the runtime. -+ PodSandboxNetworkStatus network = 5; -+ // Linux-specific status to a pod sandbox. -+ LinuxPodSandboxStatus linux = 6; -+ // Labels are key-value pairs that may be used to scope and select individual resources. -+ map labels = 7; -+ // Unstructured key-value map holding arbitrary metadata. -+ // Annotations MUST NOT be altered by the runtime; the value of this field -+ // MUST be identical to that of the corresponding PodSandboxConfig used to -+ // instantiate the pod sandbox this status represents. -+ map annotations = 8; -+ // runtime configuration used for this PodSandbox. -+ string runtime_handler = 9; -+} -+ -+message PodSandboxStatusResponse { -+ // Status of the PodSandbox. -+ PodSandboxStatus status = 1; -+ // Info is extra information of the PodSandbox. The key could be arbitrary string, and -+ // value should be in json format. The information could include anything useful for -+ // debug, e.g. network namespace for linux container based container runtime. -+ // It should only be returned non-empty when Verbose is true. -+ map info = 2; -+} -+ -+// PodSandboxStateValue is the wrapper of PodSandboxState. -+message PodSandboxStateValue { -+ // State of the sandbox. -+ PodSandboxState state = 1; -+} -+ -+// PodSandboxFilter is used to filter a list of PodSandboxes. -+// All those fields are combined with 'AND' -+message PodSandboxFilter { -+ // ID of the sandbox. -+ string id = 1; -+ // State of the sandbox. -+ PodSandboxStateValue state = 2; -+ // LabelSelector to select matches. -+ // Only api.MatchLabels is supported for now and the requirements -+ // are ANDed. MatchExpressions is not supported yet. -+ map label_selector = 3; -+} -+ -+message ListPodSandboxRequest { -+ // PodSandboxFilter to filter a list of PodSandboxes. -+ PodSandboxFilter filter = 1; -+} -+ -+ -+// PodSandbox contains minimal information about a sandbox. -+message PodSandbox { -+ // ID of the PodSandbox. -+ string id = 1; -+ // Metadata of the PodSandbox. -+ PodSandboxMetadata metadata = 2; -+ // State of the PodSandbox. -+ PodSandboxState state = 3; -+ // Creation timestamps of the PodSandbox in nanoseconds. Must be > 0. -+ int64 created_at = 4; -+ // Labels of the PodSandbox. -+ map labels = 5; -+ // Unstructured key-value map holding arbitrary metadata. -+ // Annotations MUST NOT be altered by the runtime; the value of this field -+ // MUST be identical to that of the corresponding PodSandboxConfig used to -+ // instantiate this PodSandbox. -+ map annotations = 6; -+ // runtime configuration used for this PodSandbox. -+ string runtime_handler = 7; -+} -+ -+message ListPodSandboxResponse { -+ // List of PodSandboxes. -+ repeated PodSandbox items = 1; -+} -+ -+message PodSandboxStatsRequest { -+ // ID of the pod sandbox for which to retrieve stats. -+ string pod_sandbox_id = 1; -+} -+ -+message PodSandboxStatsResponse { -+ PodSandboxStats stats = 1; -+} -+ -+// PodSandboxStatsFilter is used to filter the list of pod sandboxes to retrieve stats for. -+// All those fields are combined with 'AND'. -+message PodSandboxStatsFilter { -+ // ID of the pod sandbox. -+ string id = 1; -+ // LabelSelector to select matches. -+ // Only api.MatchLabels is supported for now and the requirements -+ // are ANDed. MatchExpressions is not supported yet. -+ map label_selector = 2; -+} -+ -+message ListPodSandboxStatsRequest { -+ // Filter for the list request. -+ PodSandboxStatsFilter filter = 1; -+} -+ -+message ListPodSandboxStatsResponse { -+ // Stats of the pod sandbox. -+ repeated PodSandboxStats stats = 1; -+} -+ -+// PodSandboxAttributes provides basic information of the pod sandbox. -+message PodSandboxAttributes { -+ // ID of the pod sandbox. -+ string id = 1; -+ // Metadata of the pod sandbox. -+ PodSandboxMetadata metadata = 2; -+ // Key-value pairs that may be used to scope and select individual resources. -+ map labels = 3; -+ // Unstructured key-value map holding arbitrary metadata. -+ // Annotations MUST NOT be altered by the runtime; the value of this field -+ // MUST be identical to that of the corresponding PodSandboxStatus used to -+ // instantiate the PodSandbox this status represents. -+ map annotations = 4; -+} -+ -+// PodSandboxStats provides the resource usage statistics for a pod. -+// The linux or windows field will be populated depending on the platform. -+message PodSandboxStats { -+ // Information of the pod. -+ PodSandboxAttributes attributes = 1; -+ // Stats from linux. -+ LinuxPodSandboxStats linux = 2; -+ // Stats from windows. -+ WindowsPodSandboxStats windows = 3; -+} -+ -+// LinuxPodSandboxStats provides the resource usage statistics for a pod sandbox on linux. -+message LinuxPodSandboxStats { -+ // CPU usage gathered for the pod sandbox. -+ CpuUsage cpu = 1; -+ // Memory usage gathered for the pod sandbox. -+ MemoryUsage memory = 2; -+ // Network usage gathered for the pod sandbox -+ NetworkUsage network = 3; -+ // Stats pertaining to processes in the pod sandbox. -+ ProcessUsage process = 4; -+ // Stats of containers in the measured pod sandbox. -+ repeated ContainerStats containers = 5; -+} -+ -+// WindowsPodSandboxStats provides the resource usage statistics for a pod sandbox on windows -+message WindowsPodSandboxStats { -+ // TODO: Add stats relevant to windows. -+} -+ -+// NetworkUsage contains data about network resources. -+message NetworkUsage { -+ // The time at which these stats were updated. -+ int64 timestamp = 1; -+ // Stats for the default network interface. -+ NetworkInterfaceUsage default_interface = 2; -+ // Stats for all found network interfaces, excluding the default. -+ repeated NetworkInterfaceUsage interfaces = 3; -+} -+ -+// NetworkInterfaceUsage contains resource value data about a network interface. -+message NetworkInterfaceUsage { -+ // The name of the network interface. -+ string name = 1; -+ // Cumulative count of bytes received. -+ UInt64Value rx_bytes = 2; -+ // Cumulative count of receive errors encountered. -+ UInt64Value rx_errors = 3; -+ // Cumulative count of bytes transmitted. -+ UInt64Value tx_bytes = 4; -+ // Cumulative count of transmit errors encountered. -+ UInt64Value tx_errors = 5; -+} -+ -+// ProcessUsage are stats pertaining to processes. -+message ProcessUsage { -+ // The time at which these stats were updated. -+ int64 timestamp = 1; -+ // Number of processes. -+ UInt64Value process_count = 2; -+} -+ -+// ImageSpec is an internal representation of an image. -+message ImageSpec { -+ // Container's Image field (e.g. imageID or imageDigest). -+ string image = 1; -+ // Unstructured key-value map holding arbitrary metadata. -+ // ImageSpec Annotations can be used to help the runtime target specific -+ // images in multi-arch images. -+ map annotations = 2; -+} -+ -+message KeyValue { -+ string key = 1; -+ string value = 2; -+} -+ -+// LinuxContainerResources specifies Linux specific configuration for -+// resources. -+message LinuxContainerResources { -+ // CPU CFS (Completely Fair Scheduler) period. Default: 0 (not specified). -+ int64 cpu_period = 1; -+ // CPU CFS (Completely Fair Scheduler) quota. Default: 0 (not specified). -+ int64 cpu_quota = 2; -+ // CPU shares (relative weight vs. other containers). Default: 0 (not specified). -+ int64 cpu_shares = 3; -+ // Memory limit in bytes. Default: 0 (not specified). -+ int64 memory_limit_in_bytes = 4; -+ // OOMScoreAdj adjusts the oom-killer score. Default: 0 (not specified). -+ int64 oom_score_adj = 5; -+ // CpusetCpus constrains the allowed set of logical CPUs. Default: "" (not specified). -+ string cpuset_cpus = 6; -+ // CpusetMems constrains the allowed set of memory nodes. Default: "" (not specified). -+ string cpuset_mems = 7; -+ // List of HugepageLimits to limit the HugeTLB usage of container per page size. Default: nil (not specified). -+ repeated HugepageLimit hugepage_limits = 8; -+ // Unified resources for cgroup v2. Default: nil (not specified). -+ // Each key/value in the map refers to the cgroup v2. -+ // e.g. "memory.max": "6937202688" or "io.weight": "default 100". -+ map unified = 9; -+ // Memory swap limit in bytes. Default 0 (not specified). -+ int64 memory_swap_limit_in_bytes = 10; -+} -+ -+// HugepageLimit corresponds to the file`hugetlb..limit_in_byte` in container level cgroup. -+// For example, `PageSize=1GB`, `Limit=1073741824` means setting `1073741824` bytes to hugetlb.1GB.limit_in_bytes. -+message HugepageLimit { -+ // The value of PageSize has the format B (2MB, 1GB), -+ // and must match the of the corresponding control file found in `hugetlb..limit_in_bytes`. -+ // The values of are intended to be parsed using base 1024("1KB" = 1024, "1MB" = 1048576, etc). -+ string page_size = 1; -+ // limit in bytes of hugepagesize HugeTLB usage. -+ uint64 limit = 2; -+} -+ -+// SELinuxOption are the labels to be applied to the container. -+message SELinuxOption { -+ string user = 1; -+ string role = 2; -+ string type = 3; -+ string level = 4; -+} -+ -+// Capability contains the container capabilities to add or drop -+// Dropping a capability will drop it from all sets. -+// If a capability is added to only the add_capabilities list then it gets added to permitted, -+// inheritable, effective and bounding sets, i.e. all sets except the ambient set. -+// If a capability is added to only the add_ambient_capabilities list then it gets added to all sets, i.e permitted -+// inheritable, effective, bounding and ambient sets. -+// If a capability is added to add_capabilities and add_ambient_capabilities lists then it gets added to all sets, i.e. -+// permitted, inheritable, effective, bounding and ambient sets. -+message Capability { -+ // List of capabilities to add. -+ repeated string add_capabilities = 1; -+ // List of capabilities to drop. -+ repeated string drop_capabilities = 2; -+ // List of ambient capabilities to add. -+ repeated string add_ambient_capabilities = 3; -+} -+ -+// LinuxContainerSecurityContext holds linux security configuration that will be applied to a container. -+message LinuxContainerSecurityContext { -+ // Capabilities to add or drop. -+ Capability capabilities = 1; -+ // If set, run container in privileged mode. -+ // Privileged mode is incompatible with the following options. If -+ // privileged is set, the following features MAY have no effect: -+ // 1. capabilities -+ // 2. selinux_options -+ // 4. seccomp -+ // 5. apparmor -+ // -+ // Privileged mode implies the following specific options are applied: -+ // 1. All capabilities are added. -+ // 2. Sensitive paths, such as kernel module paths within sysfs, are not masked. -+ // 3. Any sysfs and procfs mounts are mounted RW. -+ // 4. AppArmor confinement is not applied. -+ // 5. Seccomp restrictions are not applied. -+ // 6. The device cgroup does not restrict access to any devices. -+ // 7. All devices from the host's /dev are available within the container. -+ // 8. SELinux restrictions are not applied (e.g. label=disabled). -+ bool privileged = 2; -+ // Configurations for the container's namespaces. -+ // Only used if the container uses namespace for isolation. -+ NamespaceOption namespace_options = 3; -+ // SELinux context to be optionally applied. -+ SELinuxOption selinux_options = 4; -+ // UID to run the container process as. Only one of run_as_user and -+ // run_as_username can be specified at a time. -+ Int64Value run_as_user = 5; -+ // GID to run the container process as. run_as_group should only be specified -+ // when run_as_user or run_as_username is specified; otherwise, the runtime -+ // MUST error. -+ Int64Value run_as_group = 12; -+ // User name to run the container process as. If specified, the user MUST -+ // exist in the container image (i.e. in the /etc/passwd inside the image), -+ // and be resolved there by the runtime; otherwise, the runtime MUST error. -+ string run_as_username = 6; -+ // If set, the root filesystem of the container is read-only. -+ bool readonly_rootfs = 7; -+ // List of groups applied to the first process run in the container, in -+ // addition to the container's primary GID. -+ repeated int64 supplemental_groups = 8; -+ // no_new_privs defines if the flag for no_new_privs should be set on the -+ // container. -+ bool no_new_privs = 11; -+ // masked_paths is a slice of paths that should be masked by the container -+ // runtime, this can be passed directly to the OCI spec. -+ repeated string masked_paths = 13; -+ // readonly_paths is a slice of paths that should be set as readonly by the -+ // container runtime, this can be passed directly to the OCI spec. -+ repeated string readonly_paths = 14; -+ // Seccomp profile for the container. -+ SecurityProfile seccomp = 15; -+ // AppArmor profile for the container. -+ SecurityProfile apparmor = 16; -+ // AppArmor profile for the container, candidate values are: -+ // * runtime/default: equivalent to not specifying a profile. -+ // * unconfined: no profiles are loaded -+ // * localhost/: profile loaded on the node -+ // (localhost) by name. The possible profile names are detailed at -+ // https://gitlab.com/apparmor/apparmor/-/wikis/AppArmor_Core_Policy_Reference -+ string apparmor_profile = 9 [deprecated=true]; -+ // Seccomp profile for the container, candidate values are: -+ // * runtime/default: the default profile for the container runtime -+ // * unconfined: unconfined profile, ie, no seccomp sandboxing -+ // * localhost/: the profile installed on the node. -+ // is the full path of the profile. -+ // Default: "", which is identical with unconfined. -+ string seccomp_profile_path = 10 [deprecated=true]; -+} -+ -+// LinuxContainerConfig contains platform-specific configuration for -+// Linux-based containers. -+message LinuxContainerConfig { -+ // Resources specification for the container. -+ LinuxContainerResources resources = 1; -+ // LinuxContainerSecurityContext configuration for the container. -+ LinuxContainerSecurityContext security_context = 2; -+} -+ -+// WindowsSandboxSecurityContext holds platform-specific configurations that will be -+// applied to a sandbox. -+// These settings will only apply to the sandbox container. -+message WindowsSandboxSecurityContext { -+ // User name to run the container process as. If specified, the user MUST -+ // exist in the container image and be resolved there by the runtime; -+ // otherwise, the runtime MUST return error. -+ string run_as_username = 1; -+ -+ // The contents of the GMSA credential spec to use to run this container. -+ string credential_spec = 2; -+ -+ // Indicates whether the container requested to run as a HostProcess container. -+ bool host_process = 3; -+} -+ -+// WindowsPodSandboxConfig holds platform-specific configurations for Windows -+// host platforms and Windows-based containers. -+message WindowsPodSandboxConfig { -+ // WindowsSandboxSecurityContext holds sandbox security attributes. -+ WindowsSandboxSecurityContext security_context = 1; -+} -+ -+// WindowsContainerSecurityContext holds windows security configuration that will be applied to a container. -+message WindowsContainerSecurityContext { -+ // User name to run the container process as. If specified, the user MUST -+ // exist in the container image and be resolved there by the runtime; -+ // otherwise, the runtime MUST return error. -+ string run_as_username = 1; -+ -+ // The contents of the GMSA credential spec to use to run this container. -+ string credential_spec = 2; -+ -+ // Indicates whether a container is to be run as a HostProcess container. -+ bool host_process = 3; -+} -+ -+// WindowsContainerConfig contains platform-specific configuration for -+// Windows-based containers. -+message WindowsContainerConfig { -+ // Resources specification for the container. -+ WindowsContainerResources resources = 1; -+ // WindowsContainerSecurityContext configuration for the container. -+ WindowsContainerSecurityContext security_context = 2; -+} -+ -+// WindowsContainerResources specifies Windows specific configuration for -+// resources. -+message WindowsContainerResources { -+ // CPU shares (relative weight vs. other containers). Default: 0 (not specified). -+ int64 cpu_shares = 1; -+ // Number of CPUs available to the container. Default: 0 (not specified). -+ int64 cpu_count = 2; -+ // Specifies the portion of processor cycles that this container can use as a percentage times 100. -+ int64 cpu_maximum = 3; -+ // Memory limit in bytes. Default: 0 (not specified). -+ int64 memory_limit_in_bytes = 4; -+ // Specifies the size of the rootfs / scratch space in bytes to be configured for this container. Default: 0 (not specified). -+ int64 rootfs_size_in_bytes = 5; -+} -+ -+// ContainerMetadata holds all necessary information for building the container -+// name. The container runtime is encouraged to expose the metadata in its user -+// interface for better user experience. E.g., runtime can construct a unique -+// container name based on the metadata. Note that (name, attempt) is unique -+// within a sandbox for the entire lifetime of the sandbox. -+message ContainerMetadata { -+ // Name of the container. Same as the container name in the PodSpec. -+ string name = 1; -+ // Attempt number of creating the container. Default: 0. -+ uint32 attempt = 2; -+} -+ -+// Device specifies a host device to mount into a container. -+message Device { -+ // Path of the device within the container. -+ string container_path = 1; -+ // Path of the device on the host. -+ string host_path = 2; -+ // Cgroups permissions of the device, candidates are one or more of -+ // * r - allows container to read from the specified device. -+ // * w - allows container to write to the specified device. -+ // * m - allows container to create device files that do not yet exist. -+ string permissions = 3; -+} -+ -+// ContainerConfig holds all the required and optional fields for creating a -+// container. -+message ContainerConfig { -+ // Metadata of the container. This information will uniquely identify the -+ // container, and the runtime should leverage this to ensure correct -+ // operation. The runtime may also use this information to improve UX, such -+ // as by constructing a readable name. -+ ContainerMetadata metadata = 1 ; -+ // Image to use. -+ ImageSpec image = 2; -+ // Command to execute (i.e., entrypoint for docker) -+ repeated string command = 3; -+ // Args for the Command (i.e., command for docker) -+ repeated string args = 4; -+ // Current working directory of the command. -+ string working_dir = 5; -+ // List of environment variable to set in the container. -+ repeated KeyValue envs = 6; -+ // Mounts for the container. -+ repeated Mount mounts = 7; -+ // Devices for the container. -+ repeated Device devices = 8; -+ // Key-value pairs that may be used to scope and select individual resources. -+ // Label keys are of the form: -+ // label-key ::= prefixed-name | name -+ // prefixed-name ::= prefix '/' name -+ // prefix ::= DNS_SUBDOMAIN -+ // name ::= DNS_LABEL -+ map labels = 9; -+ // Unstructured key-value map that may be used by the kubelet to store and -+ // retrieve arbitrary metadata. -+ // -+ // Annotations MUST NOT be altered by the runtime; the annotations stored -+ // here MUST be returned in the ContainerStatus associated with the container -+ // this ContainerConfig creates. -+ // -+ // In general, in order to preserve a well-defined interface between the -+ // kubelet and the container runtime, annotations SHOULD NOT influence -+ // runtime behaviour. -+ map annotations = 10; -+ // Path relative to PodSandboxConfig.LogDirectory for container to store -+ // the log (STDOUT and STDERR) on the host. -+ // E.g., -+ // PodSandboxConfig.LogDirectory = `/var/log/pods//` -+ // ContainerConfig.LogPath = `containerName/Instance#.log` -+ // -+ // WARNING: Log management and how kubelet should interface with the -+ // container logs are under active discussion in -+ // https://issues.k8s.io/24677. There *may* be future change of direction -+ // for logging as the discussion carries on. -+ string log_path = 11; -+ -+ // Variables for interactive containers, these have very specialized -+ // use-cases (e.g. debugging). -+ bool stdin = 12; -+ bool stdin_once = 13; -+ bool tty = 14; -+ -+ // Configuration specific to Linux containers. -+ LinuxContainerConfig linux = 15; -+ // Configuration specific to Windows containers. -+ WindowsContainerConfig windows = 16; -+} -+ -+message CreateContainerRequest { -+ // ID of the PodSandbox in which the container should be created. -+ string pod_sandbox_id = 1; -+ // Config of the container. -+ ContainerConfig config = 2; -+ // Config of the PodSandbox. This is the same config that was passed -+ // to RunPodSandboxRequest to create the PodSandbox. It is passed again -+ // here just for easy reference. The PodSandboxConfig is immutable and -+ // remains the same throughout the lifetime of the pod. -+ PodSandboxConfig sandbox_config = 3; -+} -+ -+message CreateContainerResponse { -+ // ID of the created container. -+ string container_id = 1; -+} -+ -+message StartContainerRequest { -+ // ID of the container to start. -+ string container_id = 1; -+} -+ -+message StartContainerResponse {} -+ -+message StopContainerRequest { -+ // ID of the container to stop. -+ string container_id = 1; -+ // Timeout in seconds to wait for the container to stop before forcibly -+ // terminating it. Default: 0 (forcibly terminate the container immediately) -+ int64 timeout = 2; -+} -+ -+message StopContainerResponse {} -+ -+message RemoveContainerRequest { -+ // ID of the container to remove. -+ string container_id = 1; -+} -+ -+message RemoveContainerResponse {} -+ -+enum ContainerState { -+ CONTAINER_CREATED = 0; -+ CONTAINER_RUNNING = 1; -+ CONTAINER_EXITED = 2; -+ CONTAINER_UNKNOWN = 3; -+} -+ -+// ContainerStateValue is the wrapper of ContainerState. -+message ContainerStateValue { -+ // State of the container. -+ ContainerState state = 1; -+} -+ -+// ContainerFilter is used to filter containers. -+// All those fields are combined with 'AND' -+message ContainerFilter { -+ // ID of the container. -+ string id = 1; -+ // State of the container. -+ ContainerStateValue state = 2; -+ // ID of the PodSandbox. -+ string pod_sandbox_id = 3; -+ // LabelSelector to select matches. -+ // Only api.MatchLabels is supported for now and the requirements -+ // are ANDed. MatchExpressions is not supported yet. -+ map label_selector = 4; -+} -+ -+message ListContainersRequest { -+ ContainerFilter filter = 1; -+} -+ -+// Container provides the runtime information for a container, such as ID, hash, -+// state of the container. -+message Container { -+ // ID of the container, used by the container runtime to identify -+ // a container. -+ string id = 1; -+ // ID of the sandbox to which this container belongs. -+ string pod_sandbox_id = 2; -+ // Metadata of the container. -+ ContainerMetadata metadata = 3; -+ // Spec of the image. -+ ImageSpec image = 4; -+ // Reference to the image in use. For most runtimes, this should be an -+ // image ID. -+ string image_ref = 5; -+ // State of the container. -+ ContainerState state = 6; -+ // Creation time of the container in nanoseconds. -+ int64 created_at = 7; -+ // Key-value pairs that may be used to scope and select individual resources. -+ map labels = 8; -+ // Unstructured key-value map holding arbitrary metadata. -+ // Annotations MUST NOT be altered by the runtime; the value of this field -+ // MUST be identical to that of the corresponding ContainerConfig used to -+ // instantiate this Container. -+ map annotations = 9; -+} -+ -+message ListContainersResponse { -+ // List of containers. -+ repeated Container containers = 1; -+} -+ -+message ContainerStatusRequest { -+ // ID of the container for which to retrieve status. -+ string container_id = 1; -+ // Verbose indicates whether to return extra information about the container. -+ bool verbose = 2; -+} -+ -+// ContainerStatus represents the status of a container. -+message ContainerStatus { -+ // ID of the container. -+ string id = 1; -+ // Metadata of the container. -+ ContainerMetadata metadata = 2; -+ // Status of the container. -+ ContainerState state = 3; -+ // Creation time of the container in nanoseconds. -+ int64 created_at = 4; -+ // Start time of the container in nanoseconds. Default: 0 (not specified). -+ int64 started_at = 5; -+ // Finish time of the container in nanoseconds. Default: 0 (not specified). -+ int64 finished_at = 6; -+ // Exit code of the container. Only required when finished_at != 0. Default: 0. -+ int32 exit_code = 7; -+ // Spec of the image. -+ ImageSpec image = 8; -+ // Reference to the image in use. For most runtimes, this should be an -+ // image ID -+ string image_ref = 9; -+ // Brief CamelCase string explaining why container is in its current state. -+ string reason = 10; -+ // Human-readable message indicating details about why container is in its -+ // current state. -+ string message = 11; -+ // Key-value pairs that may be used to scope and select individual resources. -+ map labels = 12; -+ // Unstructured key-value map holding arbitrary metadata. -+ // Annotations MUST NOT be altered by the runtime; the value of this field -+ // MUST be identical to that of the corresponding ContainerConfig used to -+ // instantiate the Container this status represents. -+ map annotations = 13; -+ // Mounts for the container. -+ repeated Mount mounts = 14; -+ // Log path of container. -+ string log_path = 15; -+ // Resource limits configuration of the container. -+ ContainerResources resources = 16; -+} -+ -+message ContainerStatusResponse { -+ // Status of the container. -+ ContainerStatus status = 1; -+ // Info is extra information of the Container. The key could be arbitrary string, and -+ // value should be in json format. The information could include anything useful for -+ // debug, e.g. pid for linux container based container runtime. -+ // It should only be returned non-empty when Verbose is true. -+ map info = 2; -+} -+ -+// ContainerResources holds resource limits configuration for a container. -+message ContainerResources { -+ // Resource limits configuration specific to Linux container. -+ LinuxContainerResources linux = 1; -+ // Resource limits configuration specific to Windows container. -+ WindowsContainerResources windows = 2; -+} -+ -+message UpdateContainerResourcesRequest { -+ // ID of the container to update. -+ string container_id = 1; -+ // Resource configuration specific to Linux containers. -+ LinuxContainerResources linux = 2; -+ // Resource configuration specific to Windows containers. -+ WindowsContainerResources windows = 3; -+ // Unstructured key-value map holding arbitrary additional information for -+ // container resources updating. This can be used for specifying experimental -+ // resources to update or other options to use when updating the container. -+ map annotations = 4; -+} -+ -+message UpdateContainerResourcesResponse {} -+ -+message ExecSyncRequest { -+ // ID of the container. -+ string container_id = 1; -+ // Command to execute. -+ repeated string cmd = 2; -+ // Timeout in seconds to stop the command. Default: 0 (run forever). -+ int64 timeout = 3; -+} -+ -+message ExecSyncResponse { -+ // Captured command stdout output. -+ bytes stdout = 1; -+ // Captured command stderr output. -+ bytes stderr = 2; -+ // Exit code the command finished with. Default: 0 (success). -+ int32 exit_code = 3; -+} -+ -+message ExecRequest { -+ // ID of the container in which to execute the command. -+ string container_id = 1; -+ // Command to execute. -+ repeated string cmd = 2; -+ // Whether to exec the command in a TTY. -+ bool tty = 3; -+ // Whether to stream stdin. -+ // One of `stdin`, `stdout`, and `stderr` MUST be true. -+ bool stdin = 4; -+ // Whether to stream stdout. -+ // One of `stdin`, `stdout`, and `stderr` MUST be true. -+ bool stdout = 5; -+ // Whether to stream stderr. -+ // One of `stdin`, `stdout`, and `stderr` MUST be true. -+ // If `tty` is true, `stderr` MUST be false. Multiplexing is not supported -+ // in this case. The output of stdout and stderr will be combined to a -+ // single stream. -+ bool stderr = 6; -+} -+ -+message ExecResponse { -+ // Fully qualified URL of the exec streaming server. -+ string url = 1; -+} -+ -+message AttachRequest { -+ // ID of the container to which to attach. -+ string container_id = 1; -+ // Whether to stream stdin. -+ // One of `stdin`, `stdout`, and `stderr` MUST be true. -+ bool stdin = 2; -+ // Whether the process being attached is running in a TTY. -+ // This must match the TTY setting in the ContainerConfig. -+ bool tty = 3; -+ // Whether to stream stdout. -+ // One of `stdin`, `stdout`, and `stderr` MUST be true. -+ bool stdout = 4; -+ // Whether to stream stderr. -+ // One of `stdin`, `stdout`, and `stderr` MUST be true. -+ // If `tty` is true, `stderr` MUST be false. Multiplexing is not supported -+ // in this case. The output of stdout and stderr will be combined to a -+ // single stream. -+ bool stderr = 5; -+} -+ -+message AttachResponse { -+ // Fully qualified URL of the attach streaming server. -+ string url = 1; -+} -+ -+message PortForwardRequest { -+ // ID of the container to which to forward the port. -+ string pod_sandbox_id = 1; -+ // Port to forward. -+ repeated int32 port = 2; -+} -+ -+message PortForwardResponse { -+ // Fully qualified URL of the port-forward streaming server. -+ string url = 1; -+} -+ -+message ImageFilter { -+ // Spec of the image. -+ ImageSpec image = 1; -+} -+ -+message ListImagesRequest { -+ // Filter to list images. -+ ImageFilter filter = 1; -+} -+ -+// Basic information about a container image. -+message Image { -+ // ID of the image. -+ string id = 1; -+ // Other names by which this image is known. -+ repeated string repo_tags = 2; -+ // Digests by which this image is known. -+ repeated string repo_digests = 3; -+ // Size of the image in bytes. Must be > 0. -+ uint64 size = 4; -+ // UID that will run the command(s). This is used as a default if no user is -+ // specified when creating the container. UID and the following user name -+ // are mutually exclusive. -+ Int64Value uid = 5; -+ // User name that will run the command(s). This is used if UID is not set -+ // and no user is specified when creating container. -+ string username = 6; -+ // ImageSpec for image which includes annotations -+ ImageSpec spec = 7; -+ // Recommendation on whether this image should be exempt from garbage collection. -+ // It must only be treated as a recommendation -- the client can still request that the image be deleted, -+ // and the runtime must oblige. -+ bool pinned = 8; -+} -+ -+message ListImagesResponse { -+ // List of images. -+ repeated Image images = 1; -+} -+ -+message ImageStatusRequest { -+ // Spec of the image. -+ ImageSpec image = 1; -+ // Verbose indicates whether to return extra information about the image. -+ bool verbose = 2; -+} -+ -+message ImageStatusResponse { -+ // Status of the image. -+ Image image = 1; -+ // Info is extra information of the Image. The key could be arbitrary string, and -+ // value should be in json format. The information could include anything useful -+ // for debug, e.g. image config for oci image based container runtime. -+ // It should only be returned non-empty when Verbose is true. -+ map info = 2; -+} -+ -+// AuthConfig contains authorization information for connecting to a registry. -+message AuthConfig { -+ string username = 1; -+ string password = 2; -+ string auth = 3; -+ string server_address = 4; -+ // IdentityToken is used to authenticate the user and get -+ // an access token for the registry. -+ string identity_token = 5; -+ // RegistryToken is a bearer token to be sent to a registry -+ string registry_token = 6; -+} -+ -+message PullImageRequest { -+ // Spec of the image. -+ ImageSpec image = 1; -+ // Authentication configuration for pulling the image. -+ AuthConfig auth = 2; -+ // Config of the PodSandbox, which is used to pull image in PodSandbox context. -+ PodSandboxConfig sandbox_config = 3; -+} -+ -+message PullImageResponse { -+ // Reference to the image in use. For most runtimes, this should be an -+ // image ID or digest. -+ string image_ref = 1; -+} -+ -+message RemoveImageRequest { -+ // Spec of the image to remove. -+ ImageSpec image = 1; -+} -+ -+message RemoveImageResponse {} -+ -+message NetworkConfig { -+ // CIDR to use for pod IP addresses. If the CIDR is empty, runtimes -+ // should omit it. -+ string pod_cidr = 1; -+} -+ -+message RuntimeConfig { -+ NetworkConfig network_config = 1; -+} -+ -+message UpdateRuntimeConfigRequest { -+ RuntimeConfig runtime_config = 1; -+} -+ -+message UpdateRuntimeConfigResponse {} -+ -+// RuntimeCondition contains condition information for the runtime. -+// There are 2 kinds of runtime conditions: -+// 1. Required conditions: Conditions are required for kubelet to work -+// properly. If any required condition is unmet, the node will be not ready. -+// The required conditions include: -+// * RuntimeReady: RuntimeReady means the runtime is up and ready to accept -+// basic containers e.g. container only needs host network. -+// * NetworkReady: NetworkReady means the runtime network is up and ready to -+// accept containers which require container network. -+// 2. Optional conditions: Conditions are informative to the user, but kubelet -+// will not rely on. Since condition type is an arbitrary string, all conditions -+// not required are optional. These conditions will be exposed to users to help -+// them understand the status of the system. -+message RuntimeCondition { -+ // Type of runtime condition. -+ string type = 1; -+ // Status of the condition, one of true/false. Default: false. -+ bool status = 2; -+ // Brief CamelCase string containing reason for the condition's last transition. -+ string reason = 3; -+ // Human-readable message indicating details about last transition. -+ string message = 4; -+} -+ -+// RuntimeStatus is information about the current status of the runtime. -+message RuntimeStatus { -+ // List of current observed runtime conditions. -+ repeated RuntimeCondition conditions = 1; -+} -+ -+message StatusRequest { -+ // Verbose indicates whether to return extra information about the runtime. -+ bool verbose = 1; -+} -+ -+message StatusResponse { -+ // Status of the Runtime. -+ RuntimeStatus status = 1; -+ // Info is extra information of the Runtime. The key could be arbitrary string, and -+ // value should be in json format. The information could include anything useful for -+ // debug, e.g. plugins used by the container runtime. -+ // It should only be returned non-empty when Verbose is true. -+ map info = 2; -+} -+ -+message ImageFsInfoRequest {} -+ -+// UInt64Value is the wrapper of uint64. -+message UInt64Value { -+ // The value. -+ uint64 value = 1; -+} -+ -+// FilesystemIdentifier uniquely identify the filesystem. -+message FilesystemIdentifier{ -+ // Mountpoint of a filesystem. -+ string mountpoint = 1; -+} -+ -+// FilesystemUsage provides the filesystem usage information. -+message FilesystemUsage { -+ // Timestamp in nanoseconds at which the information were collected. Must be > 0. -+ int64 timestamp = 1; -+ // The unique identifier of the filesystem. -+ FilesystemIdentifier fs_id = 2; -+ // UsedBytes represents the bytes used for images on the filesystem. -+ // This may differ from the total bytes used on the filesystem and may not -+ // equal CapacityBytes - AvailableBytes. -+ UInt64Value used_bytes = 3; -+ // InodesUsed represents the inodes used by the images. -+ // This may not equal InodesCapacity - InodesAvailable because the underlying -+ // filesystem may also be used for purposes other than storing images. -+ UInt64Value inodes_used = 4; -+} -+ -+message ImageFsInfoResponse { -+ // Information of image filesystem(s). -+ repeated FilesystemUsage image_filesystems = 1; -+} -+ -+message ContainerStatsRequest{ -+ // ID of the container for which to retrieve stats. -+ string container_id = 1; -+} -+ -+message ContainerStatsResponse { -+ // Stats of the container. -+ ContainerStats stats = 1; -+} -+ -+message ListContainerStatsRequest{ -+ // Filter for the list request. -+ ContainerStatsFilter filter = 1; -+} -+ -+// ContainerStatsFilter is used to filter containers. -+// All those fields are combined with 'AND' -+message ContainerStatsFilter { -+ // ID of the container. -+ string id = 1; -+ // ID of the PodSandbox. -+ string pod_sandbox_id = 2; -+ // LabelSelector to select matches. -+ // Only api.MatchLabels is supported for now and the requirements -+ // are ANDed. MatchExpressions is not supported yet. -+ map label_selector = 3; -+} -+ -+message ListContainerStatsResponse { -+ // Stats of the container. -+ repeated ContainerStats stats = 1; -+} -+ -+// ContainerAttributes provides basic information of the container. -+message ContainerAttributes { -+ // ID of the container. -+ string id = 1; -+ // Metadata of the container. -+ ContainerMetadata metadata = 2; -+ // Key-value pairs that may be used to scope and select individual resources. -+ map labels = 3; -+ // Unstructured key-value map holding arbitrary metadata. -+ // Annotations MUST NOT be altered by the runtime; the value of this field -+ // MUST be identical to that of the corresponding ContainerConfig used to -+ // instantiate the Container this status represents. -+ map annotations = 4; -+} -+ -+// ContainerStats provides the resource usage statistics for a container. -+message ContainerStats { -+ // Information of the container. -+ ContainerAttributes attributes = 1; -+ // CPU usage gathered from the container. -+ CpuUsage cpu = 2; -+ // Memory usage gathered from the container. -+ MemoryUsage memory = 3; -+ // Usage of the writable layer. -+ FilesystemUsage writable_layer = 4; -+} -+ -+// CpuUsage provides the CPU usage information. -+message CpuUsage { -+ // Timestamp in nanoseconds at which the information were collected. Must be > 0. -+ int64 timestamp = 1; -+ // Cumulative CPU usage (sum across all cores) since object creation. -+ UInt64Value usage_core_nano_seconds = 2; -+ // Total CPU usage (sum of all cores) averaged over the sample window. -+ // The "core" unit can be interpreted as CPU core-nanoseconds per second. -+ UInt64Value usage_nano_cores = 3; -+} -+ -+// MemoryUsage provides the memory usage information. -+message MemoryUsage { -+ // Timestamp in nanoseconds at which the information were collected. Must be > 0. -+ int64 timestamp = 1; -+ // The amount of working set memory in bytes. -+ UInt64Value working_set_bytes = 2; -+ // Available memory for use. This is defined as the memory limit - workingSetBytes. -+ UInt64Value available_bytes = 3; -+ // Total memory in use. This includes all memory regardless of when it was accessed. -+ UInt64Value usage_bytes = 4; -+ // The amount of anonymous and swap cache memory (includes transparent hugepages). -+ UInt64Value rss_bytes = 5; -+ // Cumulative number of minor page faults. -+ UInt64Value page_faults = 6; -+ // Cumulative number of major page faults. -+ UInt64Value major_page_faults = 7; -+} -+ -+message ReopenContainerLogRequest { -+ // ID of the container for which to reopen the log. -+ string container_id = 1; -+} -+ -+message ReopenContainerLogResponse{ -+} -+ -+message CheckpointContainerRequest { -+ // ID of the container to be checkpointed. -+ string container_id = 1; -+ // Location of the checkpoint archive used for export -+ string location = 2; -+ // Timeout in seconds for the checkpoint to complete. -+ // Timeout of zero means to use the CRI default. -+ // Timeout > 0 means to use the user specified timeout. -+ int64 timeout = 3; -+} -+ -+message CheckpointContainerResponse {} -+ -+message GetEventsRequest {} -+ -+message ContainerEventResponse { -+ // ID of the container -+ string container_id = 1; -+ -+ // Type of the container event -+ ContainerEventType container_event_type = 2; -+ -+ // Creation timestamp of this event -+ int64 created_at = 3; -+ -+ // ID of the sandbox container -+ PodSandboxMetadata pod_sandbox_metadata = 4; -+} -+ -+enum ContainerEventType { -+ // Container created -+ CONTAINER_CREATED_EVENT = 0; -+ -+ // Container started -+ CONTAINER_STARTED_EVENT = 1; -+ -+ // Container stopped -+ CONTAINER_STOPPED_EVENT = 2; -+ -+ // Container deleted -+ CONTAINER_DELETED_EVENT = 3; -+} -diff --git a/vendor/k8s.io/cri-api/pkg/apis/runtime/v1/constants.go b/vendor/k8s.io/cri-api/pkg/apis/runtime/v1/constants.go -new file mode 100755 -index 0000000..6f9ad59 ---- /dev/null -+++ b/vendor/k8s.io/cri-api/pkg/apis/runtime/v1/constants.go -@@ -0,0 +1,55 @@ -+/* -+Copyright 2020 The Kubernetes 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 v1 -+ -+// This file contains all constants defined in CRI. -+ -+// Required runtime condition type. -+const ( -+ // RuntimeReady means the runtime is up and ready to accept basic containers. -+ RuntimeReady = "RuntimeReady" -+ // NetworkReady means the runtime network is up and ready to accept containers which require network. -+ NetworkReady = "NetworkReady" -+) -+ -+// LogStreamType is the type of the stream in CRI container log. -+type LogStreamType string -+ -+const ( -+ // Stdout is the stream type for stdout. -+ Stdout LogStreamType = "stdout" -+ // Stderr is the stream type for stderr. -+ Stderr LogStreamType = "stderr" -+) -+ -+// LogTag is the tag of a log line in CRI container log. -+// Currently defined log tags: -+// * First tag: Partial/Full - P/F. -+// The field in the container log format can be extended to include multiple -+// tags by using a delimiter, but changes should be rare. If it becomes clear -+// that better extensibility is desired, a more extensible format (e.g., json) -+// should be adopted as a replacement and/or addition. -+type LogTag string -+ -+const ( -+ // LogTagPartial means the line is part of multiple lines. -+ LogTagPartial LogTag = "P" -+ // LogTagFull means the line is a single full line or the end of multiple lines. -+ LogTagFull LogTag = "F" -+ // LogTagDelimiter is the delimiter for different log tags. -+ LogTagDelimiter = ":" -+) -diff --git a/vendor/k8s.io/klog/v2/.gitignore b/vendor/k8s.io/klog/v2/.gitignore -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/klog/v2/CONTRIBUTING.md b/vendor/k8s.io/klog/v2/CONTRIBUTING.md -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/klog/v2/LICENSE b/vendor/k8s.io/klog/v2/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/klog/v2/OWNERS b/vendor/k8s.io/klog/v2/OWNERS -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/klog/v2/README.md b/vendor/k8s.io/klog/v2/README.md -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/klog/v2/RELEASE.md b/vendor/k8s.io/klog/v2/RELEASE.md -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/klog/v2/SECURITY.md b/vendor/k8s.io/klog/v2/SECURITY.md -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/klog/v2/SECURITY_CONTACTS b/vendor/k8s.io/klog/v2/SECURITY_CONTACTS -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/klog/v2/code-of-conduct.md b/vendor/k8s.io/klog/v2/code-of-conduct.md -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/klog/v2/contextual.go b/vendor/k8s.io/klog/v2/contextual.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/klog/v2/exit.go b/vendor/k8s.io/klog/v2/exit.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/klog/v2/imports.go b/vendor/k8s.io/klog/v2/imports.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/klog/v2/internal/buffer/buffer.go b/vendor/k8s.io/klog/v2/internal/buffer/buffer.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/klog/v2/internal/clock/README.md b/vendor/k8s.io/klog/v2/internal/clock/README.md -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/klog/v2/internal/clock/clock.go b/vendor/k8s.io/klog/v2/internal/clock/clock.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/klog/v2/internal/dbg/dbg.go b/vendor/k8s.io/klog/v2/internal/dbg/dbg.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/klog/v2/internal/serialize/keyvalues.go b/vendor/k8s.io/klog/v2/internal/serialize/keyvalues.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/klog/v2/internal/severity/severity.go b/vendor/k8s.io/klog/v2/internal/severity/severity.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/klog/v2/k8s_references.go b/vendor/k8s.io/klog/v2/k8s_references.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/klog/v2/klog.go b/vendor/k8s.io/klog/v2/klog.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/klog/v2/klog_file.go b/vendor/k8s.io/klog/v2/klog_file.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/klog/v2/klog_file_others.go b/vendor/k8s.io/klog/v2/klog_file_others.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/klog/v2/klog_file_windows.go b/vendor/k8s.io/klog/v2/klog_file_windows.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/klog/v2/klogr.go b/vendor/k8s.io/klog/v2/klogr.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/utils/LICENSE b/vendor/k8s.io/utils/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/utils/buffer/ring_growing.go b/vendor/k8s.io/utils/buffer/ring_growing.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/utils/clock/README.md b/vendor/k8s.io/utils/clock/README.md -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/utils/clock/clock.go b/vendor/k8s.io/utils/clock/clock.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/utils/inotify/LICENSE b/vendor/k8s.io/utils/inotify/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/utils/inotify/PATENTS b/vendor/k8s.io/utils/inotify/PATENTS -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/utils/inotify/README.md b/vendor/k8s.io/utils/inotify/README.md -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/utils/inotify/inotify.go b/vendor/k8s.io/utils/inotify/inotify.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/utils/inotify/inotify_linux.go b/vendor/k8s.io/utils/inotify/inotify_linux.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/utils/inotify/inotify_others.go b/vendor/k8s.io/utils/inotify/inotify_others.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/utils/integer/integer.go b/vendor/k8s.io/utils/integer/integer.go -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/utils/trace/README.md b/vendor/k8s.io/utils/trace/README.md -old mode 100644 -new mode 100755 -diff --git a/vendor/k8s.io/utils/trace/trace.go b/vendor/k8s.io/utils/trace/trace.go -old mode 100644 -new mode 100755 -diff --git a/vendor/modules.txt b/vendor/modules.txt -old mode 100644 -new mode 100755 -index f9e8a91..6d24bdf ---- a/vendor/modules.txt -+++ b/vendor/modules.txt -@@ -1,3 +1,9 @@ -+# github.com/beorn7/perks v1.0.1 -+## explicit; go 1.11 -+github.com/beorn7/perks/quantile -+# github.com/cespare/xxhash/v2 v2.2.0 -+## explicit; go 1.11 -+github.com/cespare/xxhash/v2 - # github.com/checkpoint-restore/go-criu/v5 v5.3.0 - ## explicit; go 1.13 - github.com/checkpoint-restore/go-criu/v5 -@@ -13,6 +19,16 @@ github.com/cilium/ebpf/link - # github.com/containerd/console v1.0.3 - ## explicit; go 1.13 - github.com/containerd/console -+# github.com/containerd/nri v0.6.1 -+## explicit; go 1.19 -+github.com/containerd/nri/pkg/api -+github.com/containerd/nri/pkg/log -+github.com/containerd/nri/pkg/net -+github.com/containerd/nri/pkg/net/multiplex -+github.com/containerd/nri/pkg/stub -+# github.com/containerd/ttrpc v1.2.3 -+## explicit; go 1.19 -+github.com/containerd/ttrpc - # github.com/coreos/go-systemd/v22 v22.3.2 - ## explicit; go 1.12 - github.com/coreos/go-systemd/v22/dbus -@@ -28,7 +44,7 @@ github.com/docker/go-units - # github.com/euank/go-kmsg-parser v2.0.0+incompatible - ## explicit - github.com/euank/go-kmsg-parser/kmsgparser --# github.com/go-logr/logr v1.2.0 -+# github.com/go-logr/logr v1.2.3 - ## explicit; go 1.16 - github.com/go-logr/logr - # github.com/godbus/dbus/v5 v5.0.6 -@@ -36,10 +52,13 @@ github.com/go-logr/logr - github.com/godbus/dbus/v5 - # github.com/gogo/protobuf v1.3.2 - ## explicit; go 1.15 -+github.com/gogo/protobuf/gogoproto - github.com/gogo/protobuf/proto -+github.com/gogo/protobuf/protoc-gen-gogo/descriptor - github.com/gogo/protobuf/sortkeys --# github.com/golang/protobuf v1.5.2 -+# github.com/golang/protobuf v1.5.3 - ## explicit; go 1.9 -+github.com/golang/protobuf/jsonpb - github.com/golang/protobuf/proto - github.com/golang/protobuf/ptypes - github.com/golang/protobuf/ptypes/any -@@ -75,7 +94,7 @@ github.com/google/cadvisor/utils/sysfs - github.com/google/cadvisor/utils/sysinfo - github.com/google/cadvisor/version - github.com/google/cadvisor/watcher --# github.com/google/go-cmp v0.5.8 -+# github.com/google/go-cmp v0.5.9 - ## explicit; go 1.13 - github.com/google/go-cmp/cmp - github.com/google/go-cmp/cmp/internal/diff -@@ -85,7 +104,7 @@ github.com/google/go-cmp/cmp/internal/value - # github.com/google/gofuzz v1.1.0 - ## explicit; go 1.12 - github.com/google/gofuzz --# github.com/google/uuid v1.1.2 -+# github.com/google/uuid v1.3.0 - ## explicit - github.com/google/uuid - # github.com/googleapis/gnostic v0.4.1 -@@ -163,6 +182,11 @@ github.com/pkg/errors - # github.com/pmezard/go-difflib v1.0.0 - ## explicit - github.com/pmezard/go-difflib/difflib -+# github.com/prometheus/client_golang v1.14.0 -+## explicit; go 1.17 -+github.com/prometheus/client_golang/prometheus -+github.com/prometheus/client_golang/prometheus/internal -+github.com/prometheus/client_golang/prometheus/promhttp - # github.com/prometheus/client_model v0.3.0 - ## explicit; go 1.9 - github.com/prometheus/client_model/go -@@ -171,6 +195,11 @@ github.com/prometheus/client_model/go - github.com/prometheus/common/expfmt - github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg - github.com/prometheus/common/model -+# github.com/prometheus/procfs v0.8.0 -+## explicit; go 1.17 -+github.com/prometheus/procfs -+github.com/prometheus/procfs/internal/fs -+github.com/prometheus/procfs/internal/util - # github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646 - ## explicit; go 1.14 - github.com/seccomp/libseccomp-golang -@@ -190,33 +219,33 @@ github.com/vishvananda/netlink/nl - # github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df - ## explicit; go 1.12 - github.com/vishvananda/netns --# golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 -+# golang.org/x/crypto v0.14.0 - ## explicit; go 1.17 - golang.org/x/crypto/ssh/terminal --# golang.org/x/net v0.4.0 -+# golang.org/x/net v0.17.0 - ## explicit; go 1.17 - golang.org/x/net/bpf - golang.org/x/net/context --golang.org/x/net/context/ctxhttp - golang.org/x/net/http/httpguts - golang.org/x/net/http2 - golang.org/x/net/http2/hpack - golang.org/x/net/idna --# golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b --## explicit; go 1.11 -+golang.org/x/net/internal/timeseries -+golang.org/x/net/trace -+# golang.org/x/oauth2 v0.7.0 -+## explicit; go 1.17 - golang.org/x/oauth2 - golang.org/x/oauth2/internal --# golang.org/x/sys v0.3.0 -+# golang.org/x/sys v0.13.0 - ## explicit; go 1.17 --golang.org/x/sys/internal/unsafeheader - golang.org/x/sys/plan9 - golang.org/x/sys/unix - golang.org/x/sys/windows - golang.org/x/sys/windows/registry --# golang.org/x/term v0.3.0 -+# golang.org/x/term v0.13.0 - ## explicit; go 1.17 - golang.org/x/term --# golang.org/x/text v0.5.0 -+# golang.org/x/text v0.13.0 - ## explicit; go 1.17 - golang.org/x/text/secure/bidirule - golang.org/x/text/transform -@@ -234,14 +263,69 @@ google.golang.org/appengine/internal/log - google.golang.org/appengine/internal/remote_api - google.golang.org/appengine/internal/urlfetch - google.golang.org/appengine/urlfetch --# google.golang.org/protobuf v1.28.1 -+# google.golang.org/genproto/googleapis/rpc v0.0.0-20230731190214-cbb8c96f2d6d -+## explicit; go 1.19 -+google.golang.org/genproto/googleapis/rpc/status -+# google.golang.org/grpc v1.57.1 -+## explicit; go 1.17 -+google.golang.org/grpc -+google.golang.org/grpc/attributes -+google.golang.org/grpc/backoff -+google.golang.org/grpc/balancer -+google.golang.org/grpc/balancer/base -+google.golang.org/grpc/balancer/grpclb/state -+google.golang.org/grpc/balancer/roundrobin -+google.golang.org/grpc/binarylog/grpc_binarylog_v1 -+google.golang.org/grpc/channelz -+google.golang.org/grpc/codes -+google.golang.org/grpc/connectivity -+google.golang.org/grpc/credentials -+google.golang.org/grpc/credentials/insecure -+google.golang.org/grpc/encoding -+google.golang.org/grpc/encoding/proto -+google.golang.org/grpc/grpclog -+google.golang.org/grpc/internal -+google.golang.org/grpc/internal/backoff -+google.golang.org/grpc/internal/balancer/gracefulswitch -+google.golang.org/grpc/internal/balancerload -+google.golang.org/grpc/internal/binarylog -+google.golang.org/grpc/internal/buffer -+google.golang.org/grpc/internal/channelz -+google.golang.org/grpc/internal/credentials -+google.golang.org/grpc/internal/envconfig -+google.golang.org/grpc/internal/grpclog -+google.golang.org/grpc/internal/grpcrand -+google.golang.org/grpc/internal/grpcsync -+google.golang.org/grpc/internal/grpcutil -+google.golang.org/grpc/internal/metadata -+google.golang.org/grpc/internal/pretty -+google.golang.org/grpc/internal/resolver -+google.golang.org/grpc/internal/resolver/dns -+google.golang.org/grpc/internal/resolver/passthrough -+google.golang.org/grpc/internal/resolver/unix -+google.golang.org/grpc/internal/serviceconfig -+google.golang.org/grpc/internal/status -+google.golang.org/grpc/internal/syscall -+google.golang.org/grpc/internal/transport -+google.golang.org/grpc/internal/transport/networktype -+google.golang.org/grpc/keepalive -+google.golang.org/grpc/metadata -+google.golang.org/grpc/peer -+google.golang.org/grpc/resolver -+google.golang.org/grpc/serviceconfig -+google.golang.org/grpc/stats -+google.golang.org/grpc/status -+google.golang.org/grpc/tap -+# google.golang.org/protobuf v1.31.0 - ## explicit; go 1.11 -+google.golang.org/protobuf/encoding/protojson - google.golang.org/protobuf/encoding/prototext - google.golang.org/protobuf/encoding/protowire - google.golang.org/protobuf/internal/descfmt - google.golang.org/protobuf/internal/descopts - google.golang.org/protobuf/internal/detrand - google.golang.org/protobuf/internal/encoding/defval -+google.golang.org/protobuf/internal/encoding/json - google.golang.org/protobuf/internal/encoding/messageset - google.golang.org/protobuf/internal/encoding/tag - google.golang.org/protobuf/internal/encoding/text -@@ -525,6 +609,9 @@ k8s.io/client-go/util/connrotation - k8s.io/client-go/util/flowcontrol - k8s.io/client-go/util/keyutil - k8s.io/client-go/util/workqueue -+# k8s.io/cri-api v0.25.3 -+## explicit; go 1.19 -+k8s.io/cri-api/pkg/apis/runtime/v1 - # k8s.io/klog/v2 v2.80.1 - ## explicit; go 1.13 - k8s.io/klog/v2 -@@ -543,7 +630,7 @@ k8s.io/utils/trace - # sigs.k8s.io/structured-merge-diff/v4 v4.0.2 - ## explicit; go 1.13 - sigs.k8s.io/structured-merge-diff/v4/value --# sigs.k8s.io/yaml v1.2.0 -+# sigs.k8s.io/yaml v1.3.0 - ## explicit; go 1.12 - sigs.k8s.io/yaml - # github.com/cyphar/filepath-securejoin => github.com/cyphar/filepath-securejoin v0.2.2 -diff --git a/vendor/sigs.k8s.io/structured-merge-diff/v4/LICENSE b/vendor/sigs.k8s.io/structured-merge-diff/v4/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/sigs.k8s.io/structured-merge-diff/v4/value/allocator.go b/vendor/sigs.k8s.io/structured-merge-diff/v4/value/allocator.go -old mode 100644 -new mode 100755 -diff --git a/vendor/sigs.k8s.io/structured-merge-diff/v4/value/doc.go b/vendor/sigs.k8s.io/structured-merge-diff/v4/value/doc.go -old mode 100644 -new mode 100755 -diff --git a/vendor/sigs.k8s.io/structured-merge-diff/v4/value/fields.go b/vendor/sigs.k8s.io/structured-merge-diff/v4/value/fields.go -old mode 100644 -new mode 100755 -diff --git a/vendor/sigs.k8s.io/structured-merge-diff/v4/value/jsontagutil.go b/vendor/sigs.k8s.io/structured-merge-diff/v4/value/jsontagutil.go -old mode 100644 -new mode 100755 -diff --git a/vendor/sigs.k8s.io/structured-merge-diff/v4/value/list.go b/vendor/sigs.k8s.io/structured-merge-diff/v4/value/list.go -old mode 100644 -new mode 100755 -diff --git a/vendor/sigs.k8s.io/structured-merge-diff/v4/value/listreflect.go b/vendor/sigs.k8s.io/structured-merge-diff/v4/value/listreflect.go -old mode 100644 -new mode 100755 -diff --git a/vendor/sigs.k8s.io/structured-merge-diff/v4/value/listunstructured.go b/vendor/sigs.k8s.io/structured-merge-diff/v4/value/listunstructured.go -old mode 100644 -new mode 100755 -diff --git a/vendor/sigs.k8s.io/structured-merge-diff/v4/value/map.go b/vendor/sigs.k8s.io/structured-merge-diff/v4/value/map.go -old mode 100644 -new mode 100755 -diff --git a/vendor/sigs.k8s.io/structured-merge-diff/v4/value/mapreflect.go b/vendor/sigs.k8s.io/structured-merge-diff/v4/value/mapreflect.go -old mode 100644 -new mode 100755 -diff --git a/vendor/sigs.k8s.io/structured-merge-diff/v4/value/mapunstructured.go b/vendor/sigs.k8s.io/structured-merge-diff/v4/value/mapunstructured.go -old mode 100644 -new mode 100755 -diff --git a/vendor/sigs.k8s.io/structured-merge-diff/v4/value/reflectcache.go b/vendor/sigs.k8s.io/structured-merge-diff/v4/value/reflectcache.go -old mode 100644 -new mode 100755 -diff --git a/vendor/sigs.k8s.io/structured-merge-diff/v4/value/scalar.go b/vendor/sigs.k8s.io/structured-merge-diff/v4/value/scalar.go -old mode 100644 -new mode 100755 -diff --git a/vendor/sigs.k8s.io/structured-merge-diff/v4/value/structreflect.go b/vendor/sigs.k8s.io/structured-merge-diff/v4/value/structreflect.go -old mode 100644 -new mode 100755 -diff --git a/vendor/sigs.k8s.io/structured-merge-diff/v4/value/value.go b/vendor/sigs.k8s.io/structured-merge-diff/v4/value/value.go -old mode 100644 -new mode 100755 -diff --git a/vendor/sigs.k8s.io/structured-merge-diff/v4/value/valuereflect.go b/vendor/sigs.k8s.io/structured-merge-diff/v4/value/valuereflect.go -old mode 100644 -new mode 100755 -diff --git a/vendor/sigs.k8s.io/structured-merge-diff/v4/value/valueunstructured.go b/vendor/sigs.k8s.io/structured-merge-diff/v4/value/valueunstructured.go -old mode 100644 -new mode 100755 -diff --git a/vendor/sigs.k8s.io/yaml/.gitignore b/vendor/sigs.k8s.io/yaml/.gitignore -old mode 100644 -new mode 100755 -index e256a31..2dc9290 ---- a/vendor/sigs.k8s.io/yaml/.gitignore -+++ b/vendor/sigs.k8s.io/yaml/.gitignore -@@ -6,6 +6,10 @@ - .project - .settings/** - -+# Idea files -+.idea/** -+.idea/ -+ - # Emacs save files - *~ - -diff --git a/vendor/sigs.k8s.io/yaml/.travis.yml b/vendor/sigs.k8s.io/yaml/.travis.yml -old mode 100644 -new mode 100755 -index d20e23e..54ed8f9 ---- a/vendor/sigs.k8s.io/yaml/.travis.yml -+++ b/vendor/sigs.k8s.io/yaml/.travis.yml -@@ -1,8 +1,7 @@ - language: go --dist: xenial --go: -- - 1.12.x -- - 1.13.x -+arch: arm64 -+dist: focal -+go: 1.15.x - script: - - diff -u <(echo -n) <(gofmt -d *.go) - - diff -u <(echo -n) <(golint $(go list -e ./...) | grep -v YAMLToJSON) -diff --git a/vendor/sigs.k8s.io/yaml/CONTRIBUTING.md b/vendor/sigs.k8s.io/yaml/CONTRIBUTING.md -old mode 100644 -new mode 100755 -diff --git a/vendor/sigs.k8s.io/yaml/LICENSE b/vendor/sigs.k8s.io/yaml/LICENSE -old mode 100644 -new mode 100755 -diff --git a/vendor/sigs.k8s.io/yaml/OWNERS b/vendor/sigs.k8s.io/yaml/OWNERS -old mode 100644 -new mode 100755 -diff --git a/vendor/sigs.k8s.io/yaml/README.md b/vendor/sigs.k8s.io/yaml/README.md -old mode 100644 -new mode 100755 -index 5a651d9..e81cc42 ---- a/vendor/sigs.k8s.io/yaml/README.md -+++ b/vendor/sigs.k8s.io/yaml/README.md -@@ -107,8 +107,8 @@ func main() { - } - fmt.Println(string(y)) - /* Output: -- name: John - age: 30 -+ name: John - */ - j2, err := yaml.YAMLToJSON(y) - if err != nil { -diff --git a/vendor/sigs.k8s.io/yaml/RELEASE.md b/vendor/sigs.k8s.io/yaml/RELEASE.md -old mode 100644 -new mode 100755 -diff --git a/vendor/sigs.k8s.io/yaml/SECURITY_CONTACTS b/vendor/sigs.k8s.io/yaml/SECURITY_CONTACTS -old mode 100644 -new mode 100755 -diff --git a/vendor/sigs.k8s.io/yaml/code-of-conduct.md b/vendor/sigs.k8s.io/yaml/code-of-conduct.md -old mode 100644 -new mode 100755 -diff --git a/vendor/sigs.k8s.io/yaml/fields.go b/vendor/sigs.k8s.io/yaml/fields.go -old mode 100644 -new mode 100755 -diff --git a/vendor/sigs.k8s.io/yaml/yaml.go b/vendor/sigs.k8s.io/yaml/yaml.go -old mode 100644 -new mode 100755 -diff --git a/vendor/sigs.k8s.io/yaml/yaml_go110.go b/vendor/sigs.k8s.io/yaml/yaml_go110.go -old mode 100644 -new mode 100755 --- -2.41.0 - diff --git a/patch/0014-update-pkg-podmanager-podmanager.go.patch b/patch/0014-update-pkg-podmanager-podmanager.go.patch deleted file mode 100644 index a190617..0000000 --- a/patch/0014-update-pkg-podmanager-podmanager.go.patch +++ /dev/null @@ -1,44 +0,0 @@ -From f7f84f78b3ec4d19e712404c80757f208a86b18a Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?=E5=B0=8F=E8=8D=89=E5=84=BF=E8=A6=81=E7=9D=A1=E8=A7=89?= - <18503470247@163.com> -Date: Wed, 4 Sep 2024 07:47:35 +0000 -Subject: [PATCH 1/2] =?UTF-8?q?update=20pkg/podmanager/podmanager.go.=20?= - =?UTF-8?q?=E4=BF=AE=E5=A4=8Dpodmanager.go=E4=B8=ADeventToNRIRawContainers?= - =?UTF-8?q?=E5=8F=82=E6=95=B0=E9=94=99=E8=AF=AF=20toRawContainerPointer?= - =?UTF-8?q?=E7=9A=84=E5=85=A5=E5=8F=82=E5=BA=94=E4=B8=BAcontainer=20,conta?= - =?UTF-8?q?iners=E9=81=8D=E5=8E=86=E7=9A=84=E5=AD=90=E9=A1=B9=E4=B9=9F?= - =?UTF-8?q?=E5=BA=94=E8=AF=A5=E6=98=AFcontainer?= -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Signed-off-by: 小草儿要睡觉 <18503470247@163.com> ---- - pkg/podmanager/podmanager.go | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/pkg/podmanager/podmanager.go b/pkg/podmanager/podmanager.go -index d415018..17f95d3 100644 ---- a/pkg/podmanager/podmanager.go -+++ b/pkg/podmanager/podmanager.go -@@ -173,13 +173,13 @@ func eventToNRIRawContainers(e typedef.Event) ([]*typedef.NRIRawContainer, error - if !ok { - return nil, fmt.Errorf("fail to get *typedef.NRIRawContainer which type is %T", e) - } -- toRawContainerPointer := func(pod nriapi.Container) *typedef.NRIRawContainer { -- tmp := typedef.NRIRawContainer(pod) -+ toRawContainerPointer := func(container nriapi.Container) *typedef.NRIRawContainer { -+ tmp := typedef.NRIRawContainer(container) - return &tmp - } - var pointerContainers []*typedef.NRIRawContainer -- for _, pod := range containers { -- pointerContainers = append(pointerContainers, toRawContainerPointer(*pod)) -+ for _, container := range containers { -+ pointerContainers = append(pointerContainers, toRawContainerPointer(*container)) - } - return pointerContainers, nil - } --- -2.46.0 - diff --git a/patch/0015-rubik-set-container-engine-when-getting-container-id.patch b/patch/0015-rubik-set-container-engine-when-getting-container-id.patch deleted file mode 100644 index 39cf07a..0000000 --- a/patch/0015-rubik-set-container-engine-when-getting-container-id.patch +++ /dev/null @@ -1,485 +0,0 @@ -From fe585042518f7c1a1da09028fe56177fa573ebbc Mon Sep 17 00:00:00 2001 -From: vegbir -Date: Wed, 4 Sep 2024 10:35:50 +0800 -Subject: [PATCH 2/2] rubik: set container engine when getting container id - -reason: -bugfix: `/proc/self/cgroup` is not a sure way to get container engine because of the different cgroup path format. -So we have two approaches to get container engines: `proc/self/cgroup` or containerdID passed by k8s. -reconstruct: We abstract the cgroup driver, i.e., systemd &cgroupfs, to simplify the code for splicing cgroup paths. -Currently, only the path to the apiserver has been simplified, and the nri method needs to be reconstructed. - -Signed-off-by: vegbir ---- - pkg/core/typedef/cgroup/cgroupfs/driver.go | 37 +++++++++ - pkg/core/typedef/cgroup/common.go | 5 -- - pkg/core/typedef/cgroup/driver.go | 48 +++++++++++ - pkg/core/typedef/cgroup/systemd/driver.go | 51 ++++++++++++ - pkg/core/typedef/containerinfo.go | 34 ++++---- - pkg/core/typedef/nrirawpod.go | 63 +-------------- - pkg/core/typedef/rawpod.go | 92 ++++++---------------- - 7 files changed, 175 insertions(+), 155 deletions(-) - create mode 100644 pkg/core/typedef/cgroup/cgroupfs/driver.go - create mode 100644 pkg/core/typedef/cgroup/driver.go - create mode 100644 pkg/core/typedef/cgroup/systemd/driver.go - -diff --git a/pkg/core/typedef/cgroup/cgroupfs/driver.go b/pkg/core/typedef/cgroup/cgroupfs/driver.go -new file mode 100644 -index 0000000..4256deb ---- /dev/null -+++ b/pkg/core/typedef/cgroup/cgroupfs/driver.go -@@ -0,0 +1,37 @@ -+// Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. -+// rubik licensed under the Mulan PSL v2. -+// You can use this software according to the terms and conditions of the Mulan PSL v2. -+// You may obtain a copy of Mulan PSL v2 at: -+// http://license.coscl.org.cn/MulanPSL2 -+// THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR -+// IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR -+// PURPOSE. -+// See the Mulan PSL v2 for more details. -+// Author: Jiaqi Yang -+// Date: 2024-09-03 -+// Description: This file is used for cgroupfs driver -+ -+package cgroupfs -+ -+import ( -+ "path/filepath" -+ -+ "isula.org/rubik/pkg/common/constant" -+) -+ -+const Name = "cgroupfs" -+ -+type Driver struct{} -+ -+func (d *Driver) Name() string { -+ return Name -+} -+ -+func (d *Driver) ConcatPodCgroupPath(qosClass string, id string) string { -+ // When using cgroupfs as cgroup driver: -+ // 1. The Burstable path looks like: kubepods/burstable/pod34152897-dbaf-11ea-8cb9-0653660051c3 -+ // 2. The BestEffort path is in the form: kubepods/bestEffort/pod34152897-dbaf-11ea-8cb9-0653660051c3 -+ // 3. The Guaranteed path is in the form: kubepods/pod34152897-dbaf-11ea-8cb9-0653660051c3 -+ -+ return filepath.Join(constant.KubepodsCgroup, qosClass, constant.PodCgroupNamePrefix+id) -+} -diff --git a/pkg/core/typedef/cgroup/common.go b/pkg/core/typedef/cgroup/common.go -index 668f951..5252e7d 100644 ---- a/pkg/core/typedef/cgroup/common.go -+++ b/pkg/core/typedef/cgroup/common.go -@@ -27,11 +27,6 @@ import ( - var rootDir = constant.DefaultCgroupRoot - var cgroupDriver = constant.CgroupDriverCgroupfs - --// SetCgroupDriver is the setter of global cgroup driver --func SetCgroupDriver(driver string) { -- cgroupDriver = driver --} -- - // GetCgroupDriver is the getter of global cgroup driver - func GetCgroupDriver() string { - return cgroupDriver -diff --git a/pkg/core/typedef/cgroup/driver.go b/pkg/core/typedef/cgroup/driver.go -new file mode 100644 -index 0000000..b8cd4d5 ---- /dev/null -+++ b/pkg/core/typedef/cgroup/driver.go -@@ -0,0 +1,48 @@ -+// Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. -+// rubik licensed under the Mulan PSL v2. -+// You can use this software according to the terms and conditions of the Mulan PSL v2. -+// You may obtain a copy of Mulan PSL v2 at: -+// http://license.coscl.org.cn/MulanPSL2 -+// THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR -+// IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR -+// PURPOSE. -+// See the Mulan PSL v2 for more details. -+// Author: Jiaqi Yang -+// Date: 2024-09-03 -+// Description: This file is used for cgroup driver -+ -+package cgroup -+ -+import ( -+ "isula.org/rubik/pkg/core/typedef/cgroup/cgroupfs" -+ "isula.org/rubik/pkg/core/typedef/cgroup/systemd" -+) -+ -+type Driver interface { -+ Name() string -+ ConcatPodCgroupPath(qosClass string, id string) string -+} -+ -+var driver Driver = &cgroupfs.Driver{} -+ -+// SetCgroupDriver is the setter of global cgroup driver -+func SetCgroupDriver(driverTyp string) { -+ cgroupDriver = driverTyp -+ switch driverTyp { -+ case systemd.Name: -+ driver = &systemd.Driver{} -+ case cgroupfs.Name: -+ driver = &cgroupfs.Driver{} -+ } -+} -+ -+func Type() string { -+ return driver.Name() -+} -+func ConcatPodCgroupPath(qosClass, id string) string { -+ return driver.ConcatPodCgroupPath(qosClass, id) -+} -+ -+func ConcatContainerCgroupPath(podCgroupPath string, containerScope string) string { -+ return driver.ConcatPodCgroupPath(podCgroupPath, containerScope) -+} -diff --git a/pkg/core/typedef/cgroup/systemd/driver.go b/pkg/core/typedef/cgroup/systemd/driver.go -new file mode 100644 -index 0000000..740b7ba ---- /dev/null -+++ b/pkg/core/typedef/cgroup/systemd/driver.go -@@ -0,0 +1,51 @@ -+// Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. -+// rubik licensed under the Mulan PSL v2. -+// You can use this software according to the terms and conditions of the Mulan PSL v2. -+// You may obtain a copy of Mulan PSL v2 at: -+// http://license.coscl.org.cn/MulanPSL2 -+// THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR -+// IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR -+// PURPOSE. -+// See the Mulan PSL v2 for more details. -+// Author: Jiaqi Yang -+// Date: 2024-09-03 -+// Description: This file is used for system cgroup driver -+ -+package systemd -+ -+import ( -+ "path/filepath" -+ "strings" -+ -+ "isula.org/rubik/pkg/common/constant" -+) -+ -+const Name = "systemd" -+ -+type Driver struct{} -+ -+func (d *Driver) Name() string { -+ return Name -+} -+ -+func (d *Driver) ConcatPodCgroupPath(qosClass string, id string) string { -+ // When using systemd as cgroup driver: -+ // 1. The Burstable path looks like: kubepods.slice/kubepods-burstable.slice/kubepods-burstable-podb895995a_e7e5_413e_9bc1_3c3895b3f233.slice -+ // 2. The BestEffort path is in the form: kubepods.slice/kubepods-besteffort.slice/kubepods-besteffort-podb895995a_e7e5_413e_9bc1_3c3895b3f233.slice -+ // 3. The Guaranteed path is in the form: kubepods.slice/kubepods-podb895995a_e7e5_413e_9bc1_3c3895b3f233.slice/ -+ const suffix = ".slice" -+ var ( -+ prefix = constant.KubepodsCgroup -+ podPath = constant.KubepodsCgroup + suffix -+ ) -+ if qosClass != "" { -+ podPath = filepath.Join(podPath, constant.KubepodsCgroup+"-"+qosClass+suffix) -+ prefix = strings.Join([]string{prefix, qosClass}, "-") -+ } -+ return filepath.Join(podPath, -+ strings.Join([]string{prefix, constant.PodCgroupNamePrefix + strings.Replace(id, "-", "_", -1) + suffix}, "-")) -+} -+ -+func (d *Driver) ConcatContainerCgroupPath(podCgroupPath string, containerScope string) string { -+ return filepath.Join(podCgroupPath, containerScope+".scope") -+} -diff --git a/pkg/core/typedef/containerinfo.go b/pkg/core/typedef/containerinfo.go -index 841c800..ec04ed8 100644 ---- a/pkg/core/typedef/containerinfo.go -+++ b/pkg/core/typedef/containerinfo.go -@@ -85,33 +85,30 @@ type ContainerInfo struct { - PodSandboxId string `json:"podisandid,omitempty"` - } - -+func containerPath(id, podCgroupPath string) string { -+ if cgroup.Type() == constant.CgroupDriverSystemd { -+ return filepath.Join(podCgroupPath, containerEngineScopes[currentContainerEngines]+"-"+id+".scope") -+ } -+ // In the case of cgroupfs, the path of crio contains a special prefix -+ if containerEngineScopes[currentContainerEngines] == constant.ContainerEngineCrio { -+ return filepath.Join(podCgroupPath, constant.ContainerEngineCrio+"-"+id) -+ } -+ return filepath.Join(podCgroupPath, id) -+} -+ - // NewContainerInfo creates a ContainerInfo instance - func NewContainerInfo(id, podCgroupPath string, rawContainer *RawContainer) *ContainerInfo { -- scopeName := containerEngineScopes[currentContainerEngines] - requests, limits := rawContainer.GetResourceMaps() -- var path string -- if cgroup.GetCgroupDriver() == constant.CgroupDriverSystemd { -- switch containerEngineScopes[currentContainerEngines] { -- case constant.ContainerEngineContainerd, constant.ContainerEngineCrio, constant.ContainerEngineDocker, constant.ContainerEngineIsula: -- path = filepath.Join(podCgroupPath, scopeName+"-"+id+".scope") -- } -- } else { -- switch containerEngineScopes[currentContainerEngines] { -- case constant.ContainerEngineContainerd, constant.ContainerEngineDocker, constant.ContainerEngineIsula: -- path = filepath.Join(podCgroupPath, id) -- case constant.ContainerEngineCrio: -- path = filepath.Join(podCgroupPath, scopeName+"-"+id) -- } -- } - return &ContainerInfo{ - Name: rawContainer.status.Name, - ID: id, -- Hierarchy: cgroup.Hierarchy{Path: path}, -+ Hierarchy: cgroup.Hierarchy{Path: containerPath(id, podCgroupPath)}, - RequestResources: requests, -- LimitResources: limits} -+ LimitResources: limits, -+ } - } - --func fixContainerEngine(containerID string) { -+func getEngineFromContainerID(containerID string) { - for engine, prefix := range supportEnginesPrefixMap { - if strings.HasPrefix(containerID, prefix) { - currentContainerEngines = engine -@@ -119,7 +116,6 @@ func fixContainerEngine(containerID string) { - return - } - } -- currentContainerEngines = UNDEFINED - } - - // DeepCopy returns deepcopy object. -diff --git a/pkg/core/typedef/nrirawpod.go b/pkg/core/typedef/nrirawpod.go -index 0749c8a..d060923 100644 ---- a/pkg/core/typedef/nrirawpod.go -+++ b/pkg/core/typedef/nrirawpod.go -@@ -49,10 +49,6 @@ const ( - fileMode os.FileMode = 0666 - ) - --func init() { -- setContainerEnginesOnce.Do(FixContainerEngine) --} -- - // convert NRIRawPod structure to PodInfo structure - func (pod *NRIRawPod) ConvertNRIRawPod2PodInfo() *PodInfo { - if pod == nil { -@@ -87,7 +83,6 @@ func (pod *NRIRawPod) GetQosClass() string { - - // get pod cgroupPath - func (pod *NRIRawPod) CgroupPath() string { -- var path string - id := pod.Uid - - qosClassPath := "" -@@ -100,61 +95,7 @@ func (pod *NRIRawPod) CgroupPath() string { - default: - return "" - } -- /* -- Kubernetes defines three different pods: -- 1. Burstable: pod requests are less than the value of limits and not 0; -- 2. BestEffort: pod requests and limits are both 0; -- 3. Guaranteed: pod requests are equal to the value set by limits; -- -- When using cgroupfs as cgroup driver, -- 1. The Burstable path looks like: kubepods/burstable/pod34152897-dbaf-11ea-8cb9-0653660051c3 -- 2. The BestEffort path is in the form: kubepods/besteffort/pod34152897-dbaf-11ea-8cb9-0653660051c3 -- 3. The Guaranteed path is in the form: kubepods/pod34152897-dbaf-11ea-8cb9-0653660051c3 -- -- When using systemd as cgroup driver: -- 1. The Burstable path looks like: kubepods.slice/kubepods-burstable.slice/kubepods-burstable-podb895995a_e7e5_413e_9bc1_3c3895b3f233.slice -- 2. The BestEffort path is in the form: kubepods.slice/kubepods-besteffort.slice/kubepods-besteffort-podb895995a_e7e5_413e_9bc1_3c3895b3f233.slice -- 3. The Guaranteed path is in the form: kubepods.slice/kubepods-podb895995a_e7e5_413e_9bc1_3c3895b3f233.slice/ -- */ -- -- if cgroup.GetCgroupDriver() == constant.CgroupDriverSystemd { -- if qosClassPath == "" { -- switch containerEngineScopes[currentContainerEngines] { -- case constant.ContainerEngineContainerd, constant.ContainerEngineCrio, constant.ContainerEngineDocker, constant.ContainerEngineIsula: -- path = filepath.Join( -- constant.KubepodsCgroup+".slice", -- constant.KubepodsCgroup+"-"+constant.PodCgroupNamePrefix+strings.Replace(id, "-", "_", -1)+".slice", -- ) -- } -- } else { -- switch containerEngineScopes[currentContainerEngines] { -- case constant.ContainerEngineContainerd, constant.ContainerEngineCrio, constant.ContainerEngineDocker, constant.ContainerEngineIsula: -- path = filepath.Join( -- constant.KubepodsCgroup+".slice", -- constant.KubepodsCgroup+"-"+qosClassPath+".slice", -- pod.Linux.CgroupParent, -- ) -- -- } -- } -- } else { -- if qosClassPath == "" { -- switch containerEngineScopes[currentContainerEngines] { -- case constant.ContainerEngineContainerd, constant.ContainerEngineDocker, constant.ContainerEngineIsula, constant.ContainerEngineCrio: -- path = filepath.Join(constant.KubepodsCgroup, constant.PodCgroupNamePrefix+id) -- } -- } else { -- -- switch containerEngineScopes[currentContainerEngines] { -- case constant.ContainerEngineContainerd, constant.ContainerEngineDocker, constant.ContainerEngineIsula, constant.ContainerEngineCrio: -- path = filepath.Join(constant.KubepodsCgroup, qosClassPath, constant.PodCgroupNamePrefix+id) -- default: -- path = "" -- } -- } -- -- } -- return path -+ return cgroup.ConcatPodCgroupPath(qosClassPath, id) - } - - // get pod running state -@@ -437,7 +378,7 @@ func (container *NRIRawContainer) GetResourceMaps() (ResourceMap, ResourceMap) { - } - - // get current container engine --func FixContainerEngine() { -+func getEngineFromCgroup() { - file, err := os.OpenFile(procSelfCgroupFile, os.O_RDONLY, fileMode) - if err != nil { - return -diff --git a/pkg/core/typedef/rawpod.go b/pkg/core/typedef/rawpod.go -index b67126a..b653c71 100644 ---- a/pkg/core/typedef/rawpod.go -+++ b/pkg/core/typedef/rawpod.go -@@ -16,13 +16,11 @@ package typedef - - import ( - "fmt" -- "path/filepath" - "strings" - - corev1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/api/resource" - -- "isula.org/rubik/pkg/common/constant" - "isula.org/rubik/pkg/core/typedef/cgroup" - ) - -@@ -86,83 +84,30 @@ func (pod *RawPod) ID() string { - return string(pod.UID) - } - -+// Kubernetes defines three different pods: -+// 1. Burstable: pod requests are less than the value of limits and not 0; -+// 2. BestEffort: pod requests and limits are both 0; -+// 3. Guaranteed: pod requests are equal to the value set by limits; -+var k8sQosClass = map[corev1.PodQOSClass]string{ -+ corev1.PodQOSGuaranteed: "", -+ corev1.PodQOSBurstable: strings.ToLower(string(corev1.PodQOSBurstable)), -+ corev1.PodQOSBestEffort: strings.ToLower(string(corev1.PodQOSBestEffort)), -+} -+ - // CgroupPath returns cgroup path of raw pod - // handle different combinations of cgroupdriver and pod qos and container runtime --func (pod *RawPod) CgroupPath() string { -+func (pod *RawPod) CgroupPath() (res string) { - id := string(pod.UID) - if configHash := pod.Annotations[configHashAnnotationKey]; configHash != "" { - id = configHash - } - -- qosClassPath := "" -- switch pod.Status.QOSClass { -- case corev1.PodQOSGuaranteed: -- case corev1.PodQOSBurstable: -- qosClassPath = strings.ToLower(string(corev1.PodQOSBurstable)) -- case corev1.PodQOSBestEffort: -- qosClassPath = strings.ToLower(string(corev1.PodQOSBestEffort)) -- default: -+ qosPrefix, existed := k8sQosClass[pod.Status.QOSClass] -+ if !existed { -+ fmt.Printf("unsupported qos class: %v", pod.Status.QOSClass) - return "" - } -- -- /* -- Kubernetes defines three different pods: -- 1. Burstable: pod requests are less than the value of limits and not 0; -- 2. BestEffort: pod requests and limits are both 0; -- 3. Guaranteed: pod requests are equal to the value set by limits; -- -- When using cgroupfs as cgroup driver: -- 1. The Burstable path looks like: kubepods/burstable/pod34152897-dbaf-11ea-8cb9-0653660051c3 -- 2. The BestEffort path is in the form: kubepods/bestEffort/pod34152897-dbaf-11ea-8cb9-0653660051c3 -- 3. The Guaranteed path is in the form: kubepods/pod34152897-dbaf-11ea-8cb9-0653660051c3 -- -- When using systemd as cgroup driver: -- 1. The Burstable path looks like: kubepods.slice/kubepods-burstable.slice/kubepods-burstable-podb895995a_e7e5_413e_9bc1_3c3895b3f233.slice -- 2. The BestEffort path is in the form: kubepods.slice/kubepods-besteffort.slice/kubepods-besteffort-podb895995a_e7e5_413e_9bc1_3c3895b3f233.slice -- 3. The Guaranteed path is in the form: kubepods.slice/kubepods-podb895995a_e7e5_413e_9bc1_3c3895b3f233.slice/ -- */ -- -- if cgroup.GetCgroupDriver() == constant.CgroupDriverSystemd { -- if qosClassPath == "" { -- switch containerEngineScopes[currentContainerEngines] { -- case constant.ContainerEngineContainerd, constant.ContainerEngineCrio, constant.ContainerEngineDocker, constant.ContainerEngineIsula: -- return filepath.Join( -- constant.KubepodsCgroup+".slice", -- constant.KubepodsCgroup+"-"+constant.PodCgroupNamePrefix+strings.Replace(id, "-", "_", -1)+".slice", -- ) -- default: -- return "" -- } -- } else { -- switch containerEngineScopes[currentContainerEngines] { -- case constant.ContainerEngineContainerd, constant.ContainerEngineCrio, constant.ContainerEngineDocker, constant.ContainerEngineIsula: -- return filepath.Join( -- constant.KubepodsCgroup+".slice", -- constant.KubepodsCgroup+"-"+qosClassPath+".slice", -- constant.KubepodsCgroup+"-"+qosClassPath+"-"+constant.PodCgroupNamePrefix+strings.Replace(id, "-", "_", -1)+".slice", -- ) -- default: -- return "" -- } -- -- } -- } else { -- if qosClassPath == "" { -- switch containerEngineScopes[currentContainerEngines] { -- case constant.ContainerEngineDocker, constant.ContainerEngineContainerd, constant.ContainerEngineIsula, constant.ContainerEngineCrio: -- return filepath.Join(constant.KubepodsCgroup, constant.PodCgroupNamePrefix+id) -- default: -- return "" -- } -- } else { -- switch containerEngineScopes[currentContainerEngines] { -- case constant.ContainerEngineDocker, constant.ContainerEngineContainerd, constant.ContainerEngineIsula, constant.ContainerEngineCrio: -- return filepath.Join(constant.KubepodsCgroup, qosClassPath, constant.PodCgroupNamePrefix+id) -- default: -- return "" -- } -- } -- } -+ return cgroup.ConcatPodCgroupPath(qosPrefix, id) - } - - // ListRawContainers returns all RawContainers in the RawPod -@@ -221,6 +166,13 @@ func (cont *RawContainer) GetRealContainerID() (string, error) { - So we don't consider the case of midway container engine changes - `fixContainerEngine` is only executed when `getRealContainerID` is called for the first time - */ -+ setContainerEnginesOnce.Do(func() { -+ getEngineFromCgroup() -+ _, exist := supportEnginesPrefixMap[currentContainerEngines] -+ if !exist { -+ getEngineFromContainerID(cont.status.ContainerID) -+ } -+ }) - - if !currentContainerEngines.Support(cont) { - return "", fmt.Errorf("unsupported container engine: %v", cont.status.ContainerID) --- -2.46.0 - diff --git a/rubik.spec b/rubik.spec index 36d8eb0..f3f1a6d 100644 --- a/rubik.spec +++ b/rubik.spec @@ -1,6 +1,6 @@ Name: rubik -Version: 2.0.0 -Release: 8 +Version: 2.0.1 +Release: 1 Summary: Hybrid Deployment for Cloud Native License: Mulan PSL V2 URL: https://gitee.com/openeuler/rubik @@ -59,6 +59,12 @@ install -Dp ./build_rubik_image.sh %{buildroot}%{_sharedstatedir}/%{name}/build_ rm -rf %{buildroot} %changelog +* Thu Nov 14 2024 vegbir - 2.0.1-1 +- Type: bugfix +- CVE:NA +- SUG:restart +- DESC:upgrade rubik version to v2.0.1 + * Fri Sep 20 2024 wujing - 2.0.0-8 - Type: bugfix - CVE:NA diff --git a/series.conf b/series.conf index 41c45eb..2a324cf 100644 --- a/series.conf +++ b/series.conf @@ -1,16 +1 @@ -patch/0001-Support-Labels-field-to-configure-QoSLevel.patch -patch/0002-rubik-fix-weight-for-iocost-does-not-take-effect.patch -patch/0003-rubik-test-coverage-for-PSI-Manager.patch -patch/0004-rubik-add-psi-design-documentation.patch -patch/0005-rubik-move-fssr-design-document-to-design-dir.patch -patch/0006-rubik-fix-that-value-of-memory.high_async_ratio-lost.patch -patch/0007-bugfix-fix-typos-calling-order-of-waitgroup.patch -patch/0008-rubik-test-coverage-improvement-for-pkg-config.patch -patch/0009-rubik-optimize-dynamicAdjust-to-be-clear-and-add-log.patch -patch/0010-support-isulad-container-engine.patch -patch/0011-support-systemd-cgroup-driver.patch -patch/0012-support-crio-container-engine.patch -patch/0013-informer-add-nri-support.patch -patch/0014-update-pkg-podmanager-podmanager.go.patch -patch/0015-rubik-set-container-engine-when-getting-container-id.patch -#end of file +# end of file \ No newline at end of file diff --git a/v2.0.0.tar.gz b/v2.0.0.tar.gz deleted file mode 100644 index 89f53e462149136e558c63b4e35e2e437afe5b4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5648690 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 TOIQaZ|&YyzpVYksfCesu54{ME9I`|mP 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
!{1nvAP|1^O}X>{ea( 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 z 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�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

Yh#hj759GH z-#L8$PFfYeF=_SBJMZ>(_74s8MmJn|<;GD1`1kkz`_s!8jmCilp|rNbOg>0GJMZ4@ z{6$l)+Z0kn7eM&0(a6}AezEub5U=|t=`2R_BlBUdh_TX%y4=-HegOCeB=|;1)uGV? zaTZ7=#vxSD@gj^CF}C9nG5h}cVIgHa5WXJ$CDd*=c*!Am&rVWgdf~A#nh*X)_LkUfcjSQemS6+Tw?g`;vRs>$-!`4Be$i++P8tRak)F% zkRA$|vZ8x%a57qq5uV?4MK??_Y;tlz<4p||$%P^hF-`^!8Ao1&Rsx%S&A}G%#%YpG z$1-B7NL>TxKqU)?oTW{q2H0u={ULtazz~)hBHIvNSun}I-Y^B!b-UFel#Xi z3nRrC3Fcq2IeVFE`SpXZ20m8-LsORFr9`Gj;fG{=oXWq)l6n?(Qu7n^1Q%q&LiH$ zvJ*7LZ}6tvKZ*LMW|dtKe(W65F6C^ty$jmD2%%gkV~zkI?}_1u#8I4}Le1{Oh~4M5 zA)*VjJ(@{($f>~%-^+OGl=qxy5O=^{wS4)Ur{t3Kg$6 zL~P3$Wk7D4N6aC`afYlo;v6;`bX-FmqZSn;w=v~d5ob$m2wC-%!}gZ&<&Mw88+SrM zLa&X(mOO3K!!CBQjYE~6e&{WH#4)6}Z+=n^#$}PcW5aNPq?cpM5{wJjJMEn&1_A6A zuou5I0j3D^g$Pp!w~nJ6lWQE(T?0YMez`56hJ+Q{_)@K{s-tf~iBf(iAgX3k8tl#2CEbaKc_@ut@RCbglt0@a|ix;6^-?3N8Hi0k>xYo|#|P z$U|zZVq@+-{G+OHWP*2|g-&2-vLYba)${^wQlUjclFjS*>Y!xkJkG}iW#^VN`iy-F zvJ41LC?ZYBx26kgW=Mm{O<|haiGo-!+7+n`Fec$#6eIj+W;z+OmV;sqJgkbvY&uD;|~x{^B%voRj}TuwbpKH z?1_eNtjBVL+b0N#rkz zV(rii9z(G;)v zm^3oPMH!m!Ijc-fUKq=BIep?IvklhZswWJx0#g-i!W5LCIS!{VOrEQjc*cCDv2a`; zk8xDy*3oc&Mvf>a^11>iPK-dG)EB8l0=!?%jV@ANbk>!llq%Cnmg!~6By@3xO3jGL z4hMJd%Hv}8%R5f?%K~%NcKwlBr^=#yDM@#LH`47L9o`C2yMQ1;5X(}zRe%Si4Uf?c zC=^=(J|FZhxT*E7$Oc!$zFQ>n9RjWSm}hP_=9}CSzFQ>)nbmaN%wF)_Z^-gZK9|#q zWYo&*-C%@1`#<#q0v7iMn@qax6;zJ*6!5rK%pK0E|;leSCFZ*|*^!OLlMS zRY4#aG~qG*D1D}=0Ho2MkhLlHS-dYf_wQ=nUD1Nx#0+7s+=KB1-BVhH*$VD`o84=6 zycjO+%Z_X3jX--d!jLn@_gx>XYr%fiWP8BZO}q}n0#!cUQVay{MZzKy6 zkPgg1Suw7cVLXgvRvgv+{o*+8E;JBstpa>#wkzTG3=AOP9YlC@!G7s%$aE5;=ZRx^ z7AMB3&{%=ysWB*ZjA1GGCp9Sd+S0lg1CZ}Xqt|AxeZO3^-6Bg9F9H(HtPPh0G9gDT z;ZO@wM;!xg$QSlc4y3quJ%PWSRLcxbMv0KzhyioJaUNA>Vou!10M4xlLNO;KoS)x@1{O)9xD%tw0Y< zmv~U1SQ+^Q<7BuiJL8bbGJ2uuFbjrZhUQJ2-kmOeH1x8P8jH0~j15U@h{9`5p89U| z2Rik+`9c9hcZ++qB=j>QHwQ{5L~kKf4FHE`fJiN92Z<(Ey=gooGh>Q@W{{PAC=<5n zXrG8xXsL~A0gcYGSSs9~dLi7P@KO=l!MK0`hIE?vmFrw!*(LmcQP; zaPfv452vPO4W@Zz)1?FOeVEzOrJJDN+~D!=PT&k(4&tZ>mT>Z1h*+DMox-B+1Vtui zS`c*rS?E&Tj)au&cDrSTz|~Dk35B?j#|v#|gZpUss#&}&xh%8>=FvN6=}S2`A@BIz zmcP)Pgl#sJAlY!fC_sadDkKB~{ptRQ*malr{AFF+0*h7br2pK8D|PK29RHZ06?da9 zMc2zXq8!DYQaf-mHkw4MM!Y0bB5^>-qHxkb5p7-=_&zXBlsb@4+ue$3vM{#%i9i8M z!ZwzI#d4Ni6E0TvoW^yc%Nn5=%~7hV8ZJ=oPLY2SW+G!&HNdZ`YENQjMp%V^*=0vj zNNjj*L|GU6W9hl#U~FlDn`)aiXiq1ov#u1|-$v1dWe>RlA=H~&kLFvvfZY<&gaLUM zjfWSlQlC=cCrn*}0UD#d!2%UKWcJ>jPUAsQe_t4R%}J8bRe=I0jR51r4_rx&Ye!=i2(L({D)CXt(e!sZvsbN=10VUK03E>0FdQY z64%ISfjQO-vR|WXVG=%TIGR~qr3MJP1HuS4;A-P7ud}1WJ*y_`s1qx%GLR#_bFS}f zdm79UW9ZcbYFyKbV44>oOW8(|FzCL>P=d_VPBPd#dQPz}xHt(Wt_3GLz@itdy9G;7 z19q!*eR$>yaV6O0&FKwH+gz z<#45*ZbWQOix!`eYKo9aU<(C<8#U)eN<(7#qs8SG99~t=rojT=U$99hs-tZc zrKl1c!Byw*5RE6|tn90K#~jJ1uy}Y36*WX|E3yPeV@3J568hFHEgQ4Sx_nln6jUNP z@lP8LwamU2S@hfrFL+|*lwypd*>K#ac|3r`amU=b5PIm6DYq0H2M;~mLbVaI_{eLx z=SnkXM|(x?mL|kDvl(p0oFhT%I^YmPKxyAnT%4)y6(rBlDrdQUYR5Q> zX2?E>hs5l<)oPi@<@SYqfdZS$eg?+mFRV|%F zK*JhLQ7f|WiYS_dXYO5qlBtq3?XNq>A?CLo&qYcZBL?9$NYN4O0xe&7>xqyP^~v=W zU9-tM%mfBf+a0Yk3NLUW^W0&BP{lYmIpKstT-LDhOSi8JF)#dUpxTq4aas3#X{`o< zqsm7#CONK1hi}SC?ns#gW`oPIj$i4e-J zOhp!CaIH+y1VNO6 zKNpWI=^`4qJe?NF!fbsmPnQeCW!QQhCBd}b1Tir!wEW8$rm40^R1$pFr!67E;4Gb- zN=^+Jr%MwU#8YB`@FEU-@es43(tLtQ=r3a) znLNGUxq1RMwC(%}td|Opc(Eb%d$Dt2rzFBAzd@dnH02YR2?=8a#6$R<{BgiL{1ReDahGV69CHzFZA#zO&|8c3Hlv>@CbIvj#p zBl{$zhNDS3awie{vEhf{01q+?A3Y@Wk*;w$C2;UjkTG=sNN{IA4f@qX|VtV=Xj>*madM5-rf$MKbJgVqr-q!l6#8W!NRD7*PA4K9XC#o!s<;o@cM;W(Sm}Pito46jJHQ5IY z^r%F`upo67J$z##5I8q497^OWV<0Dyn6=Siw+n5PZwYFwhGZXTu)7bIQlEIouInY@ zkllJ5GcCz@Os%>GM_*``R&RZFee<&#*fHIZW)Q(4s3Azzc0ge)JQDM#y@uE{Kwmjs z+2Zt%7g*gw+Dsmkq?jxx-@|kY#gr$iqE@A`pDV<Rp9oRn-N%-KGB=;kb}-0=lp6>G8(J>rX2bb4p+r#GHI_Ap%#Pli`sdFxs94G_=b!9Nxo~@wyZ3gXY zYCB0n$-(YnGlh+M7N=92aO9|XwmST zLXK&!a%ph(GEPt_*@10&=I6j{)UJG7)L!l-VOGUtIt7qQ+^pTGSn2P8E5PAlpQQxS zU{>i@-C`6`31h^g9LZ)XQS<1AF>2bi7!^3Kk60hp5@LP4D}!OhCItX5Qmwd1lxoVDF(PY5E^5UR@_SIO zx*e5%Y zPU2BGxge~TtNRn>zuZe0=F*E@$$M6OzB9y-V;4GszqhC5AM>-E|L;jUiU#q`#(#bE z=<%b+<@m2pAKm)@euYo1|8GjZznBBab@N36co9#Wu=M5`=3e5QL7bDUZT)qA<`ON} zRn4hYNZaJTG0B_wm?gd6DQ4D`7c81-sqG-mFaSoB%v#N#-@M)x>#Sv48Iswl8AGF3 z{9ihA&b8M6r@;k?4)LP7V6IyK>*f3}n~$Gv-md?z@PY0B0Xc*PcQOpS)c-`k8jU%O z;o&rkCQY-z3+uyK<5OeGj5WH?Inrxuo`l(a*mT9qY4_)UhgJ5+{akPTGpQ^p23)cJ z*VZ1dmDc~}#^c-d{}n!V{V%xud($Hh|1JVTKEZ4j#i$@xFow~^`dxq|n zhF`$*H{&R2H6KQK{~_kUI2$w<;TsaxxBFa@E;d#&3H}qOXs~?H$4q*Y){(k%W?g(F z$~)^GNO1#N6#;^JaHu$KNL;#MoJ6ig_#vEb4#ue0f$!0|jXp~Sw`<&~(bY4Yu&0Z* zbTA&qd22|9c+IV5yI~c>RJM&7DJ8rfpwA#q=A*llr!klOu>R4Ft|l77yLaKNM$R5Q z7p#I;Uq-6;_@ip#thVaoXs18UX-J?#f&dboT<6x-ha@~a{Qmn zo|n!5cm@A|yz#Vj{#$>%`Sh0me}zvipRZx;6!H&<;0>i(Qkx=-?LRj6No0=92EoT- zDUVs3x&c?p)FObCL};0!#`kPM0_E=qC(&>mO~_yr&6R>9jKe#Ovz!bhW??*}%l=eb zgg=~AJUGeoakll4Xx7t#rjuh#U`a1l)fkF%Qk>+Y;WuK>v5Kz+`c;B{m2yt8#>*SL z$x4Fx$LxWaP2A*{UOTdblv6!xDexaYI*;9LGR~us8_Ym8#}bx6>bKh_HoZ)Ox#iFv zXm6v&jHf;Q)EZqFz=P)Yz2*b?O+$Flyw@zae)Hz^Uum3Z1Ifzbo2OJ!{Yl)5yo6LV9&wxFWNI{!GaU$ByJOss`S2G9-o&<= z9c;3MUX30U<(WEPxG3%xP|3wxUW|c-!Qfg=^(vhUi@lkg2TtMcYgvG75VC^No+-&L zT?~@=&CP?y^PF228spxm9%IFoU@a&sR|8pd9>qgW0662ktC|_bdO8&shm9j%inO*M z;N;U-2#{6;9veh$dN!tcLVRMuPlO8BL5jf=3Bqu4yzhb5Q7(QI?BkuxBV;^JHi{5K1Lz~ZH#p~HNpsm{ zOraC8>@zal(O*A6!%k90Z^~`Ku;rkc^V3gZ2_ftiKP*lj=z3&RkTPZ-71kltd$iax^eSV2Zd1$AwAU#B>orz_dN-U! z*O*Q5cglP^uPq|slYvLHcxA6T3_$+z;W2xsx@Bi?w zuj>BqR{#GsKG(|sXk!CcWrE~mV_S^?#*;Kp|17D^DPa0`utuz65gQ6Jhxanii|GMZ zro2zq+CUmDhBT4f?k3BvG2It$y+{j^pAOlkN7PuzHW0>nn}A}EKJs3#NY760!8(Qs z$3%ga)Sq<_XZ>(OUQ8=hpjH@km_hAK^Yj3yHLo8KIRdi-6M2|=-m}1 z35SYsZW4#=o&Ap~x+hZ_yiCj}Nt2yU(92<> zKpe%mJt5L&aTvT!ho^Ba3AfqnJUBu(HniN8>6nXp(b7kP$-!&a7S$~*EgR^E zqPI!t4r{Jc3It?g*7H{l@PQq?4y}1WE2p;Ff#wcz^dBboi6(&af!K1?{|q<@6)D&UJ30qP-7sL`d1t43@M!^Zk1|eUgx;b*2 zE=-jPRN@tKC(93(BER_{EI$Y#`xG3w7(Yp#I0q$p!ny$cp`Oz6ThfF#IGu@50Otl4 z%V=@7WTyj8;N6SV5-rS#PhAwT!BIbsiKPZ%#(@c_Il)s^<6hk5R%IE9m+g_GPI57d z4%ONUnt)z8m>OxA21{#29qr80V<)@`S$Ok=OIrCZ8QYkexEp*>qy%osE z&pp;D&h?hjQ@XEt>ZOhHYeNjxwH?~n5(_~0wL>Ud6}6daYWp^HM18xtjygVNaSLwu zJO!FTl*(qLL(ZI4CP)uVV)Ze?0@#>OPZ~yCG50zx zo}lN$NB#x_FK6Y#j7^g3W;>V+2zW}XRd-`f+m>vwlr~lO*n7i!xXWp7Y#Ga|IM0XC zZZZJuX~7?>3jP=$YbhsYrW;1Lg4^0Whc@MSQ~W&!k)}J6h_*02g(T=uL=tzeH8|W@ zG1}P7#&X2M60O$ome0+Li;L;Bc{$I-fPh!?cfC!QIKtTeU7EzZGK+U<8sT4^^}9}- z!MS0EwTnW8v=&_jteD`9@RvHd>Z&*L?`!`paob+T|#2=^kp!X&gZ-)#+(cgz_F*vZl6 z?J7|o2c)jb7FfcC6F8hPilZ_9dJC;W5IO4NFx#ko8cEqa;Xy&&E+%8Nmd2RTZEHIy zQJIXXM4g<_%_Y4WR)%>Bmq3aatT1x}nadXM?TZ0OWgHel;c#47-x>lP??23p5yBYyOj!qXg>Js~nidlgPwOTbn9*?}%wnSW_V-4L!NkLo`<*43&&Gk- zzG?@YKXV-L!UACWbS;tBz(Mw7?Lv%tKg#*@beiNZ2N@iFTH26}H;)aNpzdz0VD%5v zj2WdYg$~&0w9la;SX3yX!FaY|LOrf;dgV~a&UiGrA(MB_sJM~CRB?|q26IU0n{;aA zHo$-p{)z~-rh*Ic6n}u0y`X?MgD#$WqOA&M43;JxFhDzqk>|%4L7N z*RGP%DqyV%_ga+J46{e+%gtPg+sq&fwhL`nkqM_{@OWN{?#wp9T)mb`>iMDZmj{fj zX-H{4mCVp&Ql7{O1s-kSBUhJAPdD+YlV+P@uOa2rmWJ#uAbcOUbmqfB|0L?4(f|lY z2p)w>@>F&-2{uS)ok&3GM+9Bff33nb%C8ldKfhk7+jlsh41Mll znofq6(CvYegSOZQKTt|3R9Y?EwyOz~F0N)&0K}>3{S>=Z#il2#&h404R#P)+U|1YK zz|2hYZzHa(7WKpF$Hn^~2@J$XS4F5jURIr$d?nxqMeIi%^(T{{$2mmIK7Mb4m&^rg z6mv{lqnh+_z_ZJ7Gs?Z#u;nHbkO^HEht-k|9DfkJiw+%aYcDj3+q(YJO!MvxMv!e~zjrMTAD=7SAypdymR0oXIDfZmyV4u=ePxLAqIIiXhP)^rwY-HDEJ6wYBf7 zFd{c&rLL#&9FJqaO|Sl5BVE!S;oOkUD)ycQ+OF6&qyx+7uSY!8Gk8~AI|G=fN6lDJ5(=k!MXxLHMJZD*Bo!Wzk?XnK_FHEw@C=gn^IC;uHj z%h`WQRM#aP0O#9(u5CPdv{~~1d%Cu9YybHbKDG9r=%E~)=f1gT!4vRD3OPp6i?d>8 zk0Uak9AU_Eo9#y|@g(*h>+8j2Cq0eSWXEaNvpK3ZaNJlSN0PSVv?Ox75U6JXvk+AgboG+(1(B^b$D87?VR5 z8Y5eBNo?KcvhD6qDJi-*Rv}3Yc_wzvazID}EgXEoB6E&8&sNhe`@2zlO2a<_vpJrm zQw(6Nglx=SNU7>l?^>ICLp5^uMVds;keyW$gcu2&qOTJa7%>~Id^5`ZOGT=O`5Uo= zIcUhwuRm&ky;^6~%wd;s%2CU3I!CE@wxb5=IC)bv&0QB8kCE`9VRl9&hiyZ$;Q*~G z(K^}j&=wCyD;}*a{9)ZArZvFWhvBl!1qn`=kQqg$))$Q#GWt!6es zp7QC$F-vv4S&Vl8YyZ#>BN~vflte@F&S6_&LW9Y*z>)>#vomfeDC!P?Ez^Bk|3rdt zcO)RTG}v%FelXfNQJ$CL3u>N(nrWp+*R2uV!2w#RCi$E?xiC2;2JS!-3cAYEsUr|c z{tFILTtE-W+x7;Jv5sC#a=Aw-Kc%Lm164G^JKT{p?-7b6lElQcMtxBtvU?e&K7whO zTolG3(_zyyNrOlWgA~pm_qz9B8C z+-%mSfYxz3NuckTB+%TzwgAs5ozcRV$6}sKTIWUbC0joN-z4}*E}V<^&B3o#{G$D( z374zVA*Wp@A@aN|?tUda>@1U^Swj5lMWbV6xqMpaOD}sf(v8u<;*T%Q+^hueMF)_* z7Vkj{%d`_vvgW>t1mGNy=Y^-2GQbcqsGgTEnOw;vB@^v`+8jlsmptyW@5YIf(NwP} zQ@)6*;+_kg-c9WK2;(#b#$H(C{dEh6`%Z9|i(27?e|H>f53kPejv3tF@VE{zW&WmU z+JxGY`%iKivV>8A)n#=Z#L))l)x2r!vZcYfWT*f2SN!o{4S%v-sC&s*Z}ewIgVzdU zlMO{!)di{=BkN11(|ChV}$uPwNX7^s|2I#8zzmLlCzc2Sz0tfLtO*pCq9!JqVo6@GE>p(OS)wXGg?Fsxa9s8+y9VY_}L}Btg zXPmbdds2GSZF0q_X1;6(kK{f|i~qziJSZ=>qn}?8?s6+uJD-4vR)WBuV~$Og`=wUe zK|&FME#SloNE`z8YN~eKJ{l|4&mTM}h(!hlI5iv;yM|87@Hm|4Zt3M`x3jHa?eg}v z|KIa-9sZxk;qa4Y%UfV4xGMhdTABYp-dMYh|MWFJ_3?i-^9wR-jE?!d z36>)%jH5GR$*fh^RDvW(9Z$mv9R8vx3oJpQP>9)tDP{VRUK)_DHx@OosmGpu7=@>z zb-iv-{VVz}_4Na#L2)sJMVtsOgk&0rlm-Emb!24Q)*pb}PQbPJIh|k@8`WVn8R3Z_YB>N`!MhN+3&Y!&qy#HGV=a1iB37uT z@ombEOi#3dZQo&Y?$~w)1DP#Rhdx`an4N16)(1;&l6-_oTuM#75is3x;DHu}!1g|3F1iw2*7Sb2KL)f>RcRB*TH(fbS zaXokWZjP&EPWCT&=a4Z#HV^uCP-q5+!_;ay0m36;Ja&_8I*I)K47Vp?cpRyaxrc6K z8O7>C6;{oT#@FvqCx&f|bg}=ye2TbD=xiSGsX$fV^xjQ8&7i2UGfW*f*Wm0T#;3!& z*m53k?#D0-`l%a-x^ZO@x^Pi_a$c6fK_687!=sN|W+h1j{6bd_|FU3v>qQ~pLR(%b z(_>+9JhrVH7~JJDgyQdMKC>f;2=6>$OEfFoh}O2DxHxH-$gN1IcuO6f$GO}lpQRW_ zKLm+tH0D^4cy)XFUWd;XgMZGN(8=@(K2UUB|= zy7~BN>HN3$1gaMX6{nS48Px<=F#P;83glA9a{q1mzVZPoe&FLks& zUFVPiVi=r-l;xPymB|%QX77YRG_d;ng7cu5G*W98H2|5oB*JPbnzC#BP92Cl-d6;I z*j|-VJG9&eI~*6?dOtc{)#4@*e^p6m~T4di7+usurw3$Mkd#zR5CPmA{xn9K(ccxH-()=daXHUo2eR?9(gtJfHyXuxJo z4@v6A5EKJ7L+eF2K(Qc1nu3MI&MB1!M=dXErS)dmpN@948<4YNw1$9Z?^vOxPjJLi z>d$loV?Bl4iJ$2OjfN05DJoz@fS8!W^m4pv2@u|kG(r~N1atZ#6HVcNqDkt6whoTd zbYMBX#@|L`TJ96b@y~Kg<3Zfg?gI*;>4iBWTVfo~Qe%@7*zYki2iiH~GK*CaA@RRB zM484=Gc-2M*ibbBrjo3p5_J$xT!@VEq%oB>i!@{SEM4ci-@0v)XSjf%dQlkPKpBIq z4hxc6J1FU!aBL>9tFV8&^;71z)R^2-H*m_lu=$K+TP*Q*$4;{g>pMa7;UNc8580ko z&1Gmi&e$kab-=^8H-Tdr*9%DU=G@F-E;`$Nnh>dw%tCou?PxkfIWM1s=3v#TbjZ}`WN_=8? zFC{K?4w0^oUDA_4Wv-1ila`?r*scTwXB*SC<$=gfhrUEs7=udz1uZyl%=6UXDwff& zcO+8*k;2dtiYJj3hOD;|R#L?^omn3k^!SN#cbi6}{>=mVZ{9d;r`|~BX@}LJufBjz zH(rbEYAmR!?1LCaAj0Gle3u>fRXT=uDw0GTQ;|ox1BHj-iLMC=WuBR=shy1TKVBaIF&w7il7KD)7^Se7pW@!d zy)6n~Cd|5^u__1HxQJJ41tZZKH5$Rk1|8&Rli@Cm*N0qiq{+DK(GPc_ z*c{{Oro;8Bn3d1kc2MGOkQw*+a?HM2W`pD$!%m=eTg7;S?M`ra5RK7CgSM8>m!2bs zjr5*fmhmQem@Mw>G`kp*BdUiSIWN(4Er}dX7~n-lEMTVuyoZ9kJY*f4TW-;T(Sb+? z1_U!rP7~A{OBNLZ-tXRn9P_6FD8YRfB9w08W1}l#hpszRqU%O56sIonFhnzbvIak< zK(K=-8k@ubcpHnLNJY5>#lY&p55fB5$9(@M?b*Rb=Y0?W83hu>ei)BpKHZv#buGSW zV@*1XFPaO8BAnY~SKU9wi2zUMM8yP#=K9XfKV=eFX$j15=@#e}3+y3VbxS1067S<; zk$+S)(s6%mtZy;4a=a;K{zpXb#`kNUNB}9DDXXgMj`ypoWy4voXntA&_LEI_VCPi; z_(k$!k(a!IxMc>#GH-J?k(f``-CZ~Vpz|luX}eI9V{*A;_O~5>$Z2uNSrL*0V(e~v z&W7bTHlxM@ID$rj7WOtmzxc8C?ekb`PJ>1>!80J{{ppDFMYQ3`g9qFU#Z$#%IVX{5 z#cjD}r#IcVr<@9Sn_T+t-j&CP;W4@du^&s5f}%B7n{q8*X5+STmy2|Fk$W&|TJ5&p z<6k-}-ZgoUgqLD6Sp+*K8N3U}rK3FDz9b4C8*}Qcs9g=g|m*OU)3p zUhA*J@sp#geQUR+(r(^tUUmwgf6hSsGvUuKHMMD>@x|aDJSEO_6n1rY-pjH7PWMH8n zDj}SCWP(6dk&1OxR7?Wp6~OnS;g-w!(sw&EgX-{mL&(d#TPAW?{qtEK-09ALQRtf9`JMZHyBn7e7m4T|2##CU-F|UQ z70s#`Qr)gIgk>9c_SWjQeJoTokGBvLvWvl_NjBpXO}E_1nB9_s;h@SKH5XI5t~#1> zz9|Wi!NF8b36>8N2b zPB{TNzm~v!Y#oA25gofJ@CZ4PB*BwS&d_1*lO-fk1{hopWloJ;=c|^O8tj z-0KAQdiW>7KmWi#G5(q2pL6_^uA4F8RF!cigbr)D}>0{&dy)00Om-t?}K@0IwOCL?SXC>NSj zl!#$)jEf3e8liNhv0d<>fs!VGhT-SWfM+Q-FY=Tew<*Z1E8iGC;LotZJR zNM9D@g*t?yiJSgzVZw{R7QH1Jnc6y%v*GnOHjb4*s<7 znNZmdoh(l#ZA&H$tWOkPx{mZF;>lKg*b9qqyTIg*_{xK>5PpI z41zLOCrV6zkVY9A*Jl*3N$x=%+!l`l0+)NLENXmJ82?mS@>PQPRmT}Bk*kM@D=v| zkJcWqmF)i?Z9KWX|NROd|NfWH6ma}PW&5E{HioQ72K&?D5OcPfFxfe_7)&03<&jLy9{1Fhwqm4(KB!b*;-KS*7 zEe4?bHl?k(b@#l@8gnS_iXz2Sn68vpkv-E0t#K0Pd|vj3wp}p_qX?6AVR)yb43m`6 z#3!Gl52ll>I4@Pa5vDt@_30SDWRfGQtXw+^L1dcW#%_XU2)2dKb4%mkHG?+Ds$RzI zIoYyXdHZTSX<0wjnL!z4V|7xT*&NsP`Dsm7SG<-SWTniT<-mHlX+lv_38StA6-yDJ zXwdZT1Khl(Xlmh-*H^YOye|JwFevt?ygy!G2e^v=Z>~Qo@&Cu`>$m*>D|{Y4e9)W5 z!$EKd#Q8yb2Ae?rmf-OJhcP;O4e>`3<+KMBc&4G1>_d~NWfiEU`H}NU@8g5R{@5&I zH*7@dW$QG$a8J4V++`gnX(n;ha=f+18gOdFr?~cL45hdD6yFkfNAWN!7cs9S>?U=? z>e*j^4X9c3%QjQe-;$21ieqHVhS9uyFqi=23R>iQgVz4oSBLvRU4d!7E!>2%k@wS~ z-4FWXm*FTLGW7F!o5I6~^t68(<)#&w&+ZGfezxu7qyK_k_Gf_TEl!99t-WwJJ<|iz z4(*07VLUB6vPIi6DWVy6*#~JpaW12630qp>=BVpLi7WXxGw|TqPO>9xD z$i}UpDQe<>v5o0}^JZ{e{*Py!MK^%?{C{nI<7r9%yZLzYHvZ?=_>|=T&YdhBhLd>S zK>)Q4v^6ZCB%<8|!--~SDnT0wU!JACca%t@l=~3ZH0l&M2O^XU0#C^MWcklO~msAN!72`$Qi%B{R1{nPgP(&U#1K1z*Y8;gkYGtNJ zg0zeHGSSHBrvV*@`_aqym2@<)B+ZGZ^>^l_FeQ`0B#@8AI_y!QDw8-6sk7a^cN<=0 zze5F}nJ(B-a!rWiUraPs!X7#~_bawPeM1{0T9cPINO+2GMdnc9!Zc~j&&S3Xy=aqC zFB6!(GKpfcwWLN8G+5I1VFRUk^LxEh-K(7dJ^JW&NCetM#IXF*3GV8A?Eny;F{$}h z(ELxd@77*Au-oNinEm`tFHoa`+LSHW4ldn+kfq0O$d)+Ai)oE8>PyyAMpEPv1wOwkGaH4f1$ z{p^GpHL%__VZ19VCz3M?pME?M7O=v>C+SnV0a#fO6VWLWLs(MKrf{Iapy6#s<40_%<=zxyUkooe z^1n68<;0KJBUX^uhJ)ZZ#O2FoA0<#?wCv@OiCs32=puJ?l8VWL;I846pRv=ez^(~2 zJFx}|R6*D{k?Uo{49hV*TzeuIYMC^7Vvlm-jQ=E*3~}g0kFiAmNf{%dIWpm7JIJ$$ z{PU0EV{+b`=B_WBG&;dl#3tAX(GQLHlcUsOh0b(1Y|$7xfl?0cnk6f>N`ap_v8m@; zjSR^Ug9&WA^4>-Y{#aGex%{bF{^Cm_i-S$3jd2sAnj@>qMvJCA3gzb3cOQe*9~_Kn z?3Z3TxNy+0w!Q@m$ScZTfjnd6IPb`(ek8(cd4RM# z3@0#BT+EAB1<>58CtMYej_~c<@2to|yy3xi@LjMPwCKmT!FO##r4l7axdSc~jPFLF zA>@7}YY6k86|^Nu=U7-{-t%A+cSQ{KY76>k6e(;j_1U_Bm<0(Cz!ynFA_0{!W?QxB zk^zvA`KV2SsQcY)*(Qkl+zeY6vv#xE1gi>4Nq>b#T!QF!m4mZR zf*Q=RKO8bA98`;b$u1(^V#1)s9JMQ1+Pa*5rKMpo)KCt&baDFDo;;u#6xyRnq-2aP zFR;&HLqW^T!c<*7w_KIFT6AimN!@=8F{5#`x0zN65e1>(IL!?uvoo_*keJQh_y~H8 zdyv^^MsMEyNLvURefCF|LiD)6?nb1Fc+MvQb04Z3#8NVlno2`o~% z#dt(XBuaO4LJ@9f#_ZmplvT$kVdv86YDQxx1-^uK=+j3rz5hbk!TFkA#w=u@O zE)2HOUVK}Ou}PP=vymp7XPcCoA7Yew8Hg5i^WpCtvYUYZ@UaATJUA!&Y=Pb@!R;Rn zOab9OT%(H66%!uRzC_<3kXlaDOfs>JLef%4k98} zn@&`%hxWXq!a}wb{lw~IuV+nxUQ3HH;iauClu`I;TBYe?l2(~@0*I&u6-=UOVB9g{ z+6AuW8gLliGd(I=a?Im7mffJJ?{G?oNkW&buCdB0WBH?p2fq3=daCIWowzb|ye8cb z^t&h^WEc-6u#s00=1TnaSLzlY;=;l`$2Xc!G1}R|3D6FKA)v5YsJ{)k;{NyX#?vQ7{r}U= z$G7*tU*jWTT#1{&baMWP44F|LjmW!^V!5*)NHlk_Z$9wKd)d-^|=+%Y%MQ;V`nXq!G)|@Jl={UZZuWo00m6J+%<-xA}xKuf93l-J(q8Q8bc}8c#M? zdvPATAg3Nu+ITb`oJJE2PfPXTTx4UW2OH~Dllnpn0rLGuukj?x&(g^$oup{}bg?$b z1ME5UWb;R;2J(fOMt(xWUJ=;0gH8O2ia|4&O|y{;#vTOnay3|M2X}-2*K&R@Oo#RJ zL)oe@O_|7N&*9n0VA2kJ>vKoKD43<=iWujUqP6-7MZM9N9wkUmOn=&6`x=9B*Hw|L zaadd6?anjGPaoEt@39dM3Y!er6&xsqgKA6e#x4ggc7nZP1#zYL7r~=TBSKFc?|SW1%c&3;GIRoz>47qZ(e;m zc=P;EyNCEz!d#k{&tHFf{%-fh0lqtka+H?czVLSeqWi6ujI3p;s*Mf{Ai@$WF)j&T zHqS=W;!ZZJWwYA3l?>kbtS2AM8>BQ$L6357{z$&d6-fIzr?yVMZn~|IYWq$8eO>jwNs6}@7_W!)| zN{_9kDI$hD71XduLrmmAo%anr6p3=wMd}dB)UX^=9^6%@pBkSL)9YR8^D}JV5>&O7 zW*Ag$jG-am%=jK(Ox-tAdGk~0%`v^Xlm%M3n%iWmyU@|qII(mBb8KBio8TT$dtP*l z^69jAiu}E$@8AFP#pgc^f8NUm^K8McI{!U_cg6GHqg(&KukyJ)|1E$1dkG|8ee&a@ zLo7G#By$HUf4637Jhw?-tzyi@Tp{l#0QsVdWq{pxd59XS$}ax zlUS?eTLyDupD$kj={QQhO#ffC{-3U`-Nt|V8lT(s|G)dQ-1?XNVN2$Ky<+`8U0W}$ z|Bbb^+x)Lz<8yV4hl)h7=-|W&VKL{oUMq=FeK7?oC;k@7kt{-VAEf1-{G*iL#yG~I zTQcS}by9qalGm}}*RZ{-efq1(K*28jGA@)1g7S4qOQh*gDb&U=+*@oQwBH*k;>4^6U-JiQ+$(dS&LGx z78fE(D@2&nc@9x~p7kej4{@5i$NT~6ltFBmbdQsC6w!JAco_E{W|Y+yH<2Q22zcjBt|AR`OHI^J1!?JftQ@E z9kir`t0d1;=rZH5`jb}}qaMRd(2*Y=P`i`QTxcuce=li^l>HG3;e73*C+K+I4ye;{ z>3K4mylp0mlSx%ZZSN)M?sJ6;O0jA2vzXa{OPDie8c`0^-8q3_`!f?C)cbbCe zHB-M_38hj1BdxE=6>I}xg7_=8FryZLozN7qQ=e4S>FMh9h&vdU zbZNEujN+G+YwAjP5Htgmhx3P~;=;>u`K+RVrYowPm7`Yk+ix&3iRqUj3fU1Nsk5i1 zWR#!R+ree)!ll-O{KGI%TBdyH@o1V~M-f{Lmy1 zw_=J`?a@ikiaOypFWzhg*)UDhGjckG^@5e$1r0ShJxAQOsXAM2Z!!hQZJGPKcY_{2 zMGrF)*(D!eX0tE>dr^=~Hl|{6KmZ0C3U2|XKSdW3@1+|5r`N&yJCJjvQ1v8~ zaJ?nCCJ;�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%0ARJL?kJh`TXT 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ΞDrerkODtn%UsVLPM|Y4f(`9UQ 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⩔VGxDkUIQaWbHI709edfy-6CF6&V|W~n|f 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

mQ!7+l%44-(r?s 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�+)2I+9Oad~j~%YI<6&)bdi>q&1$1fmE17Z_ z>a$dOSdNNySe)xIL`rGg>zFx{mT-1_IFygv(k(EYc zX4WthDqSveG-)y}3$u_R6Ct?!+Mdfk6T7Nw2qmfWG)bZ=2APdf&WFZM&12iQ@q@W|5i)#s6DmkfMmwR@{&{)#Ha6uu4 zMn}?}em8Y8js;tTz*0bh@))MIHbP{d1B{w!iT(gCJOf>4%Ja^GNbDDhl?C5tX2p?E zBfwUM>-=ybCkz}AJZ@6;AtDvz%Es;Y;$I|lk+=g>5mbz~b#pY7REaQbrdZ<>ZKxJ= zPXZwmwnDT&2|LVp$o!w0j@@lE;xW8RJ^9j4}mzua2|?`UT}o)@)H zUK~G;QA^fv;>e;#HuqjCen!;C!9N=Jz?C;cNlZ=Z)Kmn$HBJ(O_cl|r-;@N* zi1HMtnM}+fipK3twx6&c=dC`jlVgf)c0^b zAWCDn{*2H%nfskXqRu3G!vLtv-as5V%^$tBI}7T>{g?pTd3DnZ8vWE-GHmB=i=#1L zIdZv1g%o+P@!b^O+%9f8h;dTAFD*d#r`89gxr9Oj{T`+^V<6>Agq^$gWc2f^SP$@n zhH1-dE@x)L5zBo{dSKbz<&{L1zNWRiMKm&M#gAlY^%9B#Cbw^{zI{jrGbU&q_1ID1GdND!+$>DQBY2=7fI5fNWTM6<|>!tTbc2 zvcb_?)C>Vr6;0a^c#CeN-XSK4ShBJxVgJoP4Ssn1`TF~LNfxd|K@kP1pp#~_#MUMU z?CfnTdJ;DD?ClS9@z5vJ9d^e&Nj@VA&Q0hRIA8_6pDFdbzG}D!(L3@DDd{7 zsxRt`l&Vvrq$c(jnnystoWtFQ7D$#>^aB!91CmRv)Pnk=YCZ?Fpx^uTrHyRKkhJsTxro*r#%`Pi=ceL-z&OxP|F zPh{RjHr~J{QfWbHL!i1BpkSnJ7U`^{MogJSU0zU)_`;Xd%YB?9YUL)xpRKg27VT93 zTx6|=7lU3*MJv1`8_c!q(&)imXKf%s7%TcLNW_VN$~j>v65^T-0Smh*A3-m_eSpM@ zJ*8##3I%JLzVc%U5o7kT!A0da;j2aWp9o)eeypf(VrEaPOAdwM`}^@@d7_0YSZe1n zZL@Y9-B$EW(}L~I ztSd*2<&Snx=F@NI{uwynsg*R>Gv?Uf$cAQKw86s)QpyXIgf)V&hx7WHQ7A1=NW?~} z*05bajYrwk`s1q$frPrlo=?VL{S1z_4NCB@o}>h7Gl)c~T*x1)%UoJqTB62g5XN)j z+c2NVDzC$cgh(<)TFhI(TE@@g9FnjvzJAK;Q`<@=-S|DHzS%-S6-^RAK9ac zA*w1pgDs#|Utoo2HU6l0050tYPBAKZ#WYxcKChuJU49&! z@Ae`qD*BIxT?cauT{Vo*Efl@RInEGl@+xQDpQu}xAC-G5MUzlj1m#4^9muFE#rGg1mA+ssDtj=0LL?@ z@_D?rQvmV%j{;Wf@&YDRkZG$e-`AwWKReGWNQ12abPfg3!?1}?_wg;lgz&Fw$x2_V zDjJy2A7!-qejE^aV)o9{I_^ZOpVwckw`B&4R7AfJJdMTUMc<0?8RE!(ZutBBc~^0b258x$Gi?@{SDBde?z3Q*bz!f(5il}NE zHqK%lzuKO4jNKnimCrc%(=4)B7un76M{ZWs=y0I#K=mX{STtoo_I45tM+~yq2P%F5 zb|A%$8OrU$(Pn2D9|*BsR6`G`Td^Kx15~#tgH*e0IRSsj43T)gl7khucm( zhJ1fB;Q=_)diAT$9QQC34WKhtMcWAPOgpjJtCo4w_xyaz9!%gBLuh(c^!kA@ne<3< zm)LxADV3Z`wH~#-`Nma?iV|y_G=kww^t;;8pZ*-rq9t0mL0rN>7+vRZHl z-3q+kL2+Qh4?`F;hm($aNEQL7zO<~)urGt&vSK1CB;czUsf9Y~-iokgq@lB!52j*gVqm?Q|i*T}cQkJRt`f)JgC1o20LhD6uXuh8AO^LAeocK1)adaQR;?MoPH6Tx^mR<2?nf4r_e278Tt^hifALjAjri(1u*lVQhFhT1G8G z4i;}&PY0(-59q99Gsi9_@W|N?y3eaJ6rgh9!JKJIV}{=}a9`J(&<0EAWP+fHrxmIn zZ~j1zF}8EE=#NXglcNAmzNMLGv3D4y?g^PuIJo-!1k`parZ zrOE7sPL}GkL&?sK{{u?{Wn`+J;bf}OWVwY{j)@yIdCGWFC@GAVieJ?Iq?wqEt}(rQ zL%IOBn6(I3dK8-bYK0PRC`&qRCQ9_6VT>^bA3&3g&58ofXVWnD^V%Gi?_|boUNDG5 z3u2^eh)b{@I}1X+L~DkNoWXu@D;968cFhT_FJ5_u;d%sj2a7LfI#g1V06U_22P}hc zR0dBoC^R=#SmPa0%SdOdrz}Z%Z>_wdMv$&1pnfX=oXajpf}xGEg^JWfY%mFaCy|wg zFeccE`}lU#*3oIMb_=-p*jE8G?V=be*QxlnHO!7P z16x6uY7h1)XaV9w)WuqUailx5XO z(jY=b8UlD)lvbsD=Y?p`s(ircm?Qn1;V*=4?hA5%co_Ch1~dMTkEZpC3SSfm1NcR7F;S^I~9t21CvdJVgw0TY;ZyY~ zi76<7pA}Jo@Yg$oOK@Q&MxW``48rDssQ;hnN-a1b~d3r1hfM1i>k1A3q z{91%rc<@YOWVs=-^qQ?R*CW$uf+qJq=?UDax)P7#HKY~p?NnB$l>$L-{XHl@omMX& z4`ld{-b7g~DR)GWEnsrlN}<=|;%f`*vRBQG&N43uXMtD5_<6Sh8`Rlo z2M2Td3j0;u!NE?phX~J#-fV>2vsiWn$6(RH$U2jhbQ%Mr(N9`GivMbLbAI7(V}+VX z1U@C-*q+o@cLsBoQ2hMKY6OC&$Fv-mZ;=MMC z+3I{illN^z_DcIX$U|i-^Dgq3xx}^Elhm_n@An;1!R0nX_hY)qhX)LnZw(qTOduZTQf124mk;57;wNF}beP_}+x>C7nf*{m>>Xx};a z;t#*LNmw#>K%!^jEa&V_>JyCSsIF)@W%^KQ^8l+Qu<#mIsp-Z%`^sXq<~H@H)N*b@ zrhRvZzBCA-*%UYwngVtnmVk(CxZ`!c#7gd4guQ#wSay4tMZ$|czvI{R;yWU3)5Km7b6cx~CVlWSKjBFv}lo(st< zLGp~afammlb%DjMNDX^~MRWzXE@>pD$yu{rqFoCe6Y&oMF-*P2D-F)lq$;00{Vvwk z7z?3IglQB$_CyP|`&BzJg7r$R2PSAJ>QfiEA6Ymc1oU0YNN^2`2+I_c3S?mk&Evv1 zd{i6xunhOMTX2PeahVi+Y;l(Q8?L5i3)qu1+=w}LPLyf~>B@F_`<5urY}!z9v>mv( zP$TQK9(ud+x|x)Yip(Rj$>oKT@)6^BQ#=chVZJA`xKtQAU2XR;aO>*31=SYMA8sIj zA-$aJt$Jmakt>Dg|9q9AqyTl)oHZ|P?fDDp9h~*hpNJ;@h7z-Bsbh-fx7zpIvGx8yz3uD2q235bAkgHa|R&POP3=psnPW>sCV_Q=`W}kdIbpe z%KQcOf^YqSdi5;s%^3ax^)fhsuaE(uUOS6_LcN`J|A2a>PXB^>wb}j+>Sg>7Q13y= zAE;NHP-ZWlucGN&nu1f*0 zwi-fH^SG=ckq-{8ie*ZM1=S*)DaKVA^rK(Dp2^s-zOcv{o*YxM%M|$pX}{ezh30J} zweOVh(ms->2;#`P4_KhmHhpI-I`jjNeEX571yc83#fUPX`4)6LzT5*Rp-g}v2fj>$jz zG_s?&Uo`5MMaOh4TFk7p8HejkopiLnk-a}FIj*=sy*4lNBw}Idv7e(Wea!~_ytp7D zLpFTliDq)X8m~{Sm-7tUltKjJ0O7O;4jS#BiY8q~gbS8V=7^n>)bNyE9m;wnjKD;@ z@>$`&SF&P>o#vi)(9L}LrNN0jhd54cSPJD};I{k(A*OV8karTA$F_#4=xBx-o8(BD zjX)J-I-d`kiQa8zSi8^z_hx%?af5|?V~IJLYSYKxYh|ow6sfoP5;^K(4%%24elFm7 zPLlq77M@PmB@7o@`wcJHpi<!y#sUEQOa@ogMnAqu%~(VhkoOj=FeETNsFp3-z=*Fqu^DcYRP}h zZQ!Y5)iz>kbq=-y0xm@*M!g~tLe&%PRrJ7s=kvF_NunypY$k0WRU1dBGW#V;5rd-j zquH27H4V56>R9k2jjV-)R2(4&AxTbLah)m{TLA33yxm0=`3bZ=7M4?=yspYayz3mO zn(AX47kzT;q=-c_;lgWjFFTUxhNq!a)k)EgS)IO&vfq5LJe1s6Wm7~L0@b7saGpC; z)zCdbCtPpR1^5}3k(V-?%7p;xBE0SNshYs8-KO^Ds)M9MIEpww2DN@SXI5`50ck9W zRT_|GEf7CDjS?h>!kc4@N7(3}O?pbrw5SO7oEDw3d7wHT67Tv3yk4*>H2KP;TS7RF zS_%g*MEGlVlW*{gtNyXLr7F9stBTs-{!vRI%!AypMrDekkQwNZ;!oB@Ow^(jBs5Hv zBGVr*eb~geVOR*z1&~Vfv(o{jLxUFNW(8aMifNd%ObKjcl2SP4CAc%GQa+9!TLk!08F{f_e4FTZAH)t^MVMIqUZGed7e9TN zU$`>rAZ(UsKkR%T;A!vn4TX?ijn!$=jEwb+DpxR6l$-h|9ySgR3TCw(wgHo3eRp*0t@bJl0engjtO&UbU`N}S^Yj#`syoYDMPm!H6wtKFK? z$#e&h3o4|5ge{%Wya4YxjRN3GtOos91EzPaBwzInW0?)C2`iV^*Xf@E+oXtM{9_~JuRz-j7YgRo2q7?u{Ia&$10Xe%W}-*7VQP#c3l z;;GuETRlNSQ7M~%lq4k(bu0GDAvdW9fg93lkU#m=U8y zLr_i)UzP$b_bsuK7Tj^EHD$#uv%iHdy!%TA8Hzfz`Dsyat~rS*(K`936jd}q)Q$tQ zpOWAR`OnzaN+}^*8}k756VGOE9?vJo`(>`4cWpj~^lO{S_uI$ogZJ0Fx2NweHm?W8 z{QTZLjSk@hZ)@jA^ZLVm*Y`5sd|B&=+ukq!ubce--qx=WyeVBZ?{==79p~%77_;(V z%su=yx;Xg$e(sX~{lVm0kihmR$n=54$=S{?`x797YhHVdPpB;ud_Q(Vh<6SGuMjiZ z*{+RP+{`ZhRiJwmFC_TDd7&&C>yEMH?fIw_LTb|xYb3&+p7274j_~4?{|6q&Y+vh| z{h`a#?UrpX1;d<&*TdT-_3|_n;+OdDGoahYlbN-l5lsXPc?xe`T;C>pKv|P$Z9#Zn zy|@}ClNXCK@0N&Vk?X;XySVMld?IuRwbvmq8bJHHKZ@=Ay6)SN3)%Vl0j7q=B?k7# z;@ryK&MnB^SyXg#AARLob#idNskp#v&w`Kuq0`i~E=9wb-o2MOZ)TRE2{-`vqXh)| z^X(Zz>!XXCR}6%Hv~GwPi-|K&=O`jv>x+NQrU1yv*IqB)*XJRBbbFsyP+#Ff{yRdO zJU#%z$7{c?{AuZ~dTC^xFGqcn5wz|d?H#WIfjoRX?_Z{4RD!9r95?v1wdtyJq@MXp z!V3DW%)vDde@*H#Sy0=A@cPzbE4H$Oq1xT9MI>p`d#~~GG5E%cqXgIuxqt}d=*hGl z@T*r;O_fmFR0f;OIzK_&^^9J^ZGY8K+;})}rk70D)+Wq3A*2hw7nxS>*aJ|m7WdZ4 zbamN#R&rDHN2Sg@bn|c5=uV&(PIv3l=rh*oI8DM%b2U+w{hJc9bfmgMNK2%$%6M=)*J+%Hy z-!I%_4$b&Jn{~h;Z%6ZS_V!|y_vU++7t1b%*th;iTQ7GL*dhKQgs%n(om_;Il*4OuO3JMRBKN?B`>3 z;w?U(6{oG`Y~;Wmo-heJsq)TE$s!rX^yp=Uh+xQm09WsrY@?LLo4fcyaM*>WrT>Jj z+V`zR5!F0+)kI-Tj^!9Qp}~&Iwszy2!t}eYz6tZ#y~#Xu5moUZ+3en3@{rN@&spo< zZS8Nf`rqzc9wURa*@?ooD-nL}q$(Z#vR`Xni*bS9DZ7bP8^BVA*@xy~ewK2ZJSJ@@ z4L8p{6}f!l?Rsx==Vhb}XjFT?wVomqpE-Hyt#6e>bU&)N*1Jba&{2y zTxef&oygj59H%2w!CP#y4|tIXA9Z(4Q22t>rV{{zgX-?>qF-m6lmf`Xq_+muhIxR` z6k;$3vGh4a>pxnY+rd@6Yv#|o!%{|ZoIJdIY+1L9sV8_EZ*4r*vk6~gAoA{P?>KQ= zIf4DAv?_6u$O=1Z(IW$WCa0rEg>hE)i=n0-kZ>vOU%yB>27$s~>570<2h=Pskr52^ z-7uh=4}k}9x<-<~-rv5vZZJZf+H#3q)J5Y5&JZgW+~dcKbJ0AmzFeO_QZ+P0ul4Vk zV=i?u>7c)$vQeI`dlzK~?s8+T#`|QNs}C{6G9AP-oRW}FQUG++;sxMr^N83;I75jF zb@eD-G^b#`Izv=qM#k@-kEnXcIQYx+xQqbcM4E=XOT)x-Hl{-~uQ>0q(T{(PY1kLs z2ddm6aG$?idc@cd^v#X!z<8i9u>t~_8I6uR3GbJ5we^*@;4syvb%T4euyO9A@3Yln z$Dw*Js3g)rQ?)z02BkiIynKR++ok)JK##xF8}R!0(p>@Ra9^F*1jaY0D-`s<$hyba z$iKMp`*pY8Zf$q#c5B;iw>GA>?X7Lw*4B2Xwz;)!{pWXGxpF_apL~-^CX;zEIg^}o zUY|EPaTd6Ji@ej;iy7(;NQX|$g$?x*L80uPOFn#*|&-zp6 z%P)g|k07oS&6R=x>;UUqbeVu*D4yO+w4X%x9^MVc6nxT-f~T?K$=Z3qxdaJ%1G~N=sQKV;&TJ&!Ip%H5Ak+uCm~i7NnYBc+ZC49fx9SpW8<+Z!|Fb z0U8SR@nDG3j4;LvYOj{JiFC{7^XWR@q&dA`-yIYW`9e0!d^44F%DLX`duM*@3waLb zI<}h-muzteBY^PQ%=jWpz9W)eP=yQa-0f*4A?)|_kP-Yd!ZAC1mDA(bxd8s1FnK{3 z)1@~E!sA-~5E;QO*|$lj;`RA@f)>bHj_jxyhE#n_>-4QV>aJqwb6tjDe}_cw9M4`f zsps)Ue-Gmm1ETX`8|K}P#rD@!ELKVXM3-+{op|1^UpX!F{<(U^HKU?&eU;r^Pkk`o z>GMdYB^N{j{vR5LDNY~Q#vzGukCA&3IGt>mL?rulwAyf?5{j+=ks_M2qgcY}l9Bu`XdV-J^h(xZW- zdGN)5Xs8$zoy zUD~q5Y)Bh0lfQ}4Gako5t}~( zm%lPQ{j41EC4RimdR)AtH+ZCFH)mJ;a9NJJ2x3SYln)2QCy_dSHdD^C(N-~&IqoTM zHd)9qpR%u{~8yuBPP@mj(C ztiYH~JT>DI@$-3k+6(<_kOvC?zNDro6KH<=wS3;%J=cD0^Z5vTIljKmy`EG)&p%uU zY)pscYWP`y+@t-?YYMH_$j{E@4~KrZnk!7;em|K{MC|QC@G8>@@cUG;Ta(AU{b+Qd zn?Sv@59@>^mSRu;L#iMszpUL>QRFBM<^k=HEuu=-Mm2q92*zE(XCmN6f zmFRx&pEPx9_K9><53!eitkEn0lUy&2@erPHro^+O#?U7D0du?i0WU-*mp#z zdUTEQt|uJDLIBw>__Q$p7GTES>O={T3$-cW*xvg3)3zlvDR zYU!Jn`=WSY*67W8#ld^zIen+{FU@O4$b7ow1+l9?cOa1|PeYlU_xh|9uM-}D50>_e z`qnxAbWalpA6@#?<9QL4&HhE9GK97~m72p{%e`3Ef1MT11TNxxQR5sb6|6#hZA62XX2vI%9k1uHTuf;I*1_aFWlHGuML+f2JuTTFDk@8F>8M@o4nD@;Jwt8$wKE-7bc z3C1woQ6sM)c70e~X#cB|Z%VMh5Knbr6&Y}sSZ5Pqzb6ewlGTD4a>m&`HgJ5Fc=eMY zIT>!cbfAwwmr{&4lE96$yT9E8EOaeIF0pE&2W`ZOW|KT-)U{*z3~_oibe=!l^PZbI zH*!C9zUk>8Ipa#`<<^w-dID4+^egkYjdx|cUyCn`ohW5deewUnpD0+%m+~M$It^b| z6YITz_Pp4c1}71a^C#|#L|<@jmVQL!!^LNelfn2B2Z>I9Tz~5wX`clb_^4;YPp0QQ zax1}>YfW6qxl5?=8uVZKmy)_|gN#f37Xv0>$GwI8~{Mr9A zD(N$iKS}7rVMHBgfoT726!t-4(JyST81&wh+5`Q`TSc$@cjVjk7awo+8#msF;!`r6 z1`7tYX~1em>bNy=sgRj&VqfSjYpZ<9Nk{@A0}?^qnbX}&y_x}4Z7EFK$l_u<0WFaK z^jy-sTSNU8KR}=*v`wbw1aOpZ-5yDv3OSFO$V3SKT}C#r`ikVG1;mkqekFPXQRlah zTTr!a2fmsSkA90KNE6tM@(1?48@C^vLvFf`!>wOJUTGA7kEWUP9mnr0$5v2$OUMLn zHw4N$*!bYzdL}T6Eo)hi`N+;CXu0k|{V~T^o)(hh2S7j2WL3*%k|QlN|4wv+_s>z# zHr+%pP<)2{xS&tfAE+_$lrSQqKb9=$rYW3hp7%O`Sf8CArjA4STQK2I`;%d-oU(;Ywx+kw0@WU<*i`m4OAvqDp?bD;v1u zm6rDEw>b1s0N&vid>JrR<`Wt_*8U+9`!s9NUj6KvN~`TxN(}OK%boaU46%<5Ec)(R zy7rbk9#F293cL`9@aQI{=FoVOLblu45M4J+B8)5I0KZ?hQM{zK;rmU5jzdCCB%t5e z_iQVN8L7E|=R!?F(n{YDnAM-3(tZ$2Fr1c$w7B!h^6-tbj3C0CJ0Qhw%tvfrP~bj( z!E5Gik#4otvt|G0_~#Q!`193^rCwTXq2~mpMX6j2fa=aj(i>0aorBS%ulWvdozn%J z3T5C54FaYOC2phk&}yy`rh}hRX6X%Ol%4mI>zR)R5XD*R*Kz4qnu-ha?Ary zEnoN;g5h1%$1r&!r52E%>I}1z)4J0j85s2%lJw?;=+U|akay*wQr3=-T+IP;!bJe$ zD}IuQlpfc+G*A=#2>zQk4f#^z@Rxq+#<;J$++N&)xg%Nd24G~7KC#3^$QuSIph2EjYa<}OQD6n#v2fm=ObHua0bmMYtz$Y}nQ@6OIK9ZJC zE(A%sM7+}ncqB>8;N6mO+1sq8?>ZlnOz9DXMnpew+~^W~f}Nw*falCDQR>D4USBWh zU?Xyl`m%@7H=-K=hCUX&UgU7t5pIRzQ?#0Cw9cg!)1ze)03iiP*{@@(}R$G zG~jyG^i5N5E6JlkQX585f&Mw`S9S#c68V9T0iRrYR_Ql!DO$;HW7pMya~x)S=Ht2L zBFA>j{ojou_;!BlB~lEMyU-qg;V7$bkWOZmh(j5;?qYb33%g}rm+KTwYlS>x0|e6v zQt!1*iSbMrQoHjJ_3ai|sC``FSc`5RCIh_(U1x}w`O!yh6DRJpWgq}|XPOx*9J@T& zL($DgK~E|qaXBO{v2X52ls_FuSdlmuSp{RNGPY$|wn zykq3qPHHl3N84q$A?7J(D`i@A8mtjTq?oYAo1fzo_`=X4C$P?H3U`ioSiO-K6c zYCt+i6bTIsa$#^sJ5!CAGvyq2vusP!?J;fT zaV)?s>|1h*-WEmJG#L_|SHXDXW`5^cL_w``DCG@CQu0x>O{O%96;|*8@;9fxX{N6l zFfN_x5dm#^{L%i&r!ZG7*9=UVCSP@CXcL=!a7poFUwX`h%*0PN@YYY@5*ehhJgx;;2Nfr%>&BQYgG?Y?CyzVM5D zfs1bFQTNdSvo`$0!DDU9B>2!%FIddPKBJjN0Z`tSziQ6eS4F4g#|&XNlaK2?xU0~ z^-Il8AfLw(=bh-t-JVSr%53=aKSFl%l&bu& z;E|?QO-?j|k9Q1%|vG$eMs+{vbw)_JB#61{PNdf*QRVVYPhyY$G)=l32r&645>xVlse!$ z`6EBvXL7>dtyeom-WrZz#|}rgJj=4{KHqG8%z(kJ$zK{0cN|&PhuQti-awFA&1^_y zCmJ9=GV5aLCUhciw*q*|T#e2RsG7IatLYD9Sa3TV)j`HRro_NeUjIF%)tAxG17hQxAF@XE z-%VxcvrRqWrIQeEX0jmF!bgjph6zV!R>u^gm#8J&-A+!+#K>|^Ios_OG0^1`z``S` zXTu20S+oYN>kJ)7BxrJBQ=AK(ydL@OW0{)=hqW7lNnS&%py-0?uUrJFyrDtApRiW{ ziQ&7A5hciiZ3CjwM!F#1?b$3N@m$QXVPmr#szcdYq)iHKRQ0WW7VN|G*7KjuFt8uIKQG2GAvqdjT^SArM7KOT;^**yLu{yFXJv~@7hr3b?PbeGzMQpS#Bw@ zAMHlf`smn@L(h20uC7r>Uj5TCG>B4$FanQb<0L{7Ay{`etV%j12Q1v-mrir<2ppgF zg2vi6cKThvt%m+AE*edr)uc+PU47(co~fA)`O+;XNzT4UT~|Vdmd|`H*GgK&UtxA+ z4;t2`eF;jhh8>!=8PAV5anZQv(Q6u2#!{|{O>VVl?FG96a6H-1uhy)r%-?poOWazLuPo3zhBYy4@UrB+(o`Hs z26t*}&rW&2P5afy*qM@8XBKuYG|^Yp2K`7cw8wOw`MXb7G~Te}SN0%IDM(#Lj%)yA z<)k$QG{9bW*f32m=|8s2GDeAt&%SWB_VMM@gzHa@%$8XRSHEHC>JM4jvv>gdK8wRW zW3l~%HrSL%(=!87gUZXf6Y)!Lk45jWW{_}Il-Sx){@SR)GQC4*@UPJSXbq9dnVF@a zQRJ8G^LGiKu(5z^M#65*+pg_nq&QFiu`}b(Jc*iE?_kiI?L8e0(*fgs?WKg9L}r0C ziUbH~bU8<0Um-relE17U3XshqfTk?o_&DrE^>-L^a3Q+fi|Y7ON=8F!u^@5TT3UXg)Tl}!J0(uJa-XfX;B)G~ zuo@zdG)B8!9OXJ1p?-;W2el%rtmv09{jaF%18jW&QGc=@dD4jCFZx#D{>(SQ-37;R z@EI)3vQBHliCdn2C|(53fCQOJvXdaFqjhfw2`vVw^bo0Q@;)&f?vUrin(~S>;qEQT zY-8KS9Q(<})L#=2{fFffHW^pkyb{X;Rfj{u@ltE5C~m+@X3ENNoXhre6CLP|pK}Js z*JfBkk6?`QuwW&c9~BK)ykw*J?rbcm`+wls52^Zk%jdPI@1%aM#+mIjZF@HkcT%EDZ7^~y8@ds&Ic|&vUeNuqZkmUw}PA44zhJ3ivV9KIt z6uwuB#y?1?S~r&prYGf0wP}Y&vyN}KoN&_lI8-h18H9hhR~o`Y#Wxh- zrVGzUc~uG5XAJsKI?lHT0oc=3fidIJ^Ygi(pxE!ErZhq{E6xNB-idHzwcF3pmu^y- z7krV4^n-W?)+|XPXDv?O{&IMKML<)mcy@1bUkt=gC9}k%0}; z2FVcRDN)I(@!pI6PiU##@zP&zls#V7aa-JA9>NW2P?us45*dgT&*8_ts$akM9CV(Ua_c|L#Luxy@em6ZVhX z*t)S~%DM$s$YqcTgCAk@oq$9e=h!Ik<4;RXGB5A^6 z^3p-p!|tsC{*2=M%mp7^(`Jo9@9Tn6pd15lAI)R;B}7;FD_1Tw+GIh}Ay7G_>h7F` zVTnTzCk{5$n`(b?SeUXs4$HbpR4|dPjR7*oMj>&v>Q5%ZZMMEQZR3Ah7=3Hc^R{^R zxG&>qjkx7SE?mP@G*14hpL0%`Mr0cPo=il(g*y2Obu@;uFxc-%G7*-(IH9e-h85>1 z#$(1e#$G(_sw9#5=Heo)mWMo*>%*QMG{MWG;|I`TnX*f_92g_#*`b`s$=!d_B~MkH zrmODH>u?!%*R=hc1>hG3IB7%LiQ@y+T^P)RM9~`3$N{d5tPuoqAql?_r`e>`!6uH1 zg&4}JUkGvQ?0p&W(<1>|gGF$`v4zQ@Nk(x}Foz;9Ol`^Ekw--mLEEKdf+*RnT>7x4 zlah(~=SJDha#P`1Re~9{j0JtBO3%@dQ3W+5jsFalXJDU)SH#8*J9x^uMR6&P3u@$$ zJtxla%cNxv7h%pPnkiEgEef3XU3UWJ@&oB2Z96h2($@n=V#F}%!hQapy0(u?Vfe)u z|BIN-S5GwBypt4=cj@)4IixjZ3+O|J4oS#Eg3X{yZ-Vm1SM{Yx-23LYr64jN8iH6P zbEZR|a7(2cG(%Mliv6zgRq`XZssi~kVe};)bY{afv?;AA`T*@G$m?wyidA9smxS=t za5V+P8ghr}zvP;&5`101ck??-wMVuytY%Lv4{Fvyo;oyKm-IE9l>_CdN_-Y>WwE3( zWWy0x4Njc-ifya*!Ud+lBBCB6eL9rmU(Y;7eWMYnyCf|qVNG1E9mNrO(paXE+a7-! zg3ozpM?jl5luA94NE|;|$w}LV^V?%QSSsh}WxLN~K(5wGZNZ)pSS3vT04utjWX6O0 zIDej(>?bDVA>Z{ECgLJy*%3#U9F!B>)3sNlyIr5bbT%2GING8+HRyt2pw>Yp&EKp$ zixWK+!0yN0FVJFQs2_C+<-RQhqQX0E$~k60JE|nclEafn{5DnHJ1ZBl+^w?gY9xWI z6-IK299(nM1We$Zv$#@rItrT7L2mMzGbe%53sd*4YiCL|qzvy4Cj}(gBidk^G?42n z1lx{a+9X6taUwm47Ow-GOlh&sVWoW&LrEzIKtGWx%TOUXHEkMe@IARi3XZP8q?suj z*Zj%4LdqWW39?S6FbC%%gfAP(N-+&ntq?~gv6W0s2IFTdqe*ZU!)21)EXy1=1s*Wa zyg`JT?YcZEHOUF=VCE`H zKOMJjaQ5q$UT8}1a?7_C^tXfW?;^QVgxGOfIg5bDwy_<7_x&Bq(ZI*f z{0m$}v7RZ7$q26D@XZ+EivB**b6F$f5mE&*Im}GKRv2v+j0^UUVN}+xYN?Y~#eDj* zQijBPN;a;3+wGbU93)F-VHTpP5szNa%P>hfxkuL31H#n6K8Gdpr*`xt9E$`m9r&U@ zK7SE1xphl2m=krj{s#&RrrU&)%c7ZotBH2iWJZf5qy)cevy0ziKV(h)0Py(&eiP7&rBV#92C^m3IrHV>2J2(HZ1Qh}fpt7;B3-5;E}u`9`qm z=-Pou7xwPn>WU#VuU*O4p$1K|l0HO5y#fl6aFKb0*LrXleV~w8J?5yzs)O zQtVfH$HwzUMiP5`4r^6OB$xS#Ul>7D!s0!}x^rb@%4gzuyJY3My5`jArezy%uN)Rm z8*w%)(iD_=!l;vBFd}Q)KEJJ0w%!q2=3dXpc7w2V$UdeAA6`)oZ98;2J;KUjy=2dR zX2brKP8kRZOFw6sE>-}oGoE$9h(p=Z8^{Qd2S}wxn3Jm;N7oT`FuCfw<%^?*N^4JYqy%9^Xiwa?s6X`K9lGUQMwz&Nx zX-ig-Q*a87E%?j1S)?)~K{V@a|4P6ren9h&&Y?I#QhbphN}eG zbdgAM3jJxqj3ROrz%*&(*j-Et2`r{&A58#pht}@sE#hjElyu&;OK1|j&JR%G7a3Ie z{pTUNa_I~$EFQj2pwS`v;vQADqxVxLJR`4$jG6$_lD1I}NMg(7@`KKJv{1;cjUBc_ zD5a+D$cd~PzoV53&C(FGLakGLs5@KLN+0^I*crWSg=p}->PpwazDL=(#KJls(jx$z z*mm}7qRxEv09?NnSdh;5?DNTVsQ~_YlROLPA?*_*2}Sq1n#N|&FVlJh*G_Rf2tubR z?KfLh;r9G;al40Z&Ue9%(zSuoL14F6Rtfif_fHZL}Epu7mMj7{m{HAt9+eX(>g{V4?1!EllZO%FLd9k^xpW-6pD;DDKghp9pl3Im8q z(x&+-wZ@~ukN_T;=G-;uDIur+x4W;!g&s#?3;y$bbz~LKG~Y;}YGFP^e_Tf~B5bw2 zxrYHbMnvE!**b8|DYg20tzGN~#u}lhS6BnqQS`_2ed@GByfE+YLr;=f$UseMg(z9? zyB;NZsDq*@Z(d<0PE`25+M)fPpI02(xiCyf7sjVQWL|A!%gOxLcXYcI{8nWTc{JKe z99WVw-z>nepnY}~V~N0i|Eg8uLi+0iu81A&F&wNy3N`+`Y?Gz-dB;m70X;S-kVuei z)DXKP(xBH^eJQQzPIU%IAJaJI$KB9NS8|F)4&iWDNFg~md3%xfv%f=Va=pFdQy_Kb z8+d&dx@zqCB=_^W#X1#P*e3FP272cK-yRX}b&$z3M@5!(>JdmmJ{ZQE{I!!oC7yOS ze&kc(`#hOuDu@N%A8#ABc)clkflz7$fc86qq;<1(18 zRTUe}2*Vmoc0i+-!_T+R48*Yi6 zGcC_buTERTi&~7cMOjKuE|$6C^EZWQTtKOs6s){F&6cBbJZL|F1Zdk?_Z_Mv%@f8a2}`FQlhSXkyXSD5!`c%*UUAP(3x|!W*GEz^~pA)y)P+JG`973X;X)$rZ950Wu6+z zOx{$~1`0t3DSqCrMSY=gT-z%lq~pN)S^=LL+SfC7V`e_B66LzA=4ElYz?+N{miYmg zsnP%9zNnzMZ(mKfX9#_x7+dVBjc4if7-J?c1LyMJ`JMUIiqW}=%;n+JcpGU3eAzz9 zLnqIvDv8oSH#qV;@_+C&SuD1daWVT`ATX@JZzxFF*kGAIgY!;A^BZ9EkD_?1VO_RG z<+_;g@keb0z2ACK&^|tViE`daeF!l z_Dhd|Q*oFuX`+bl|FwN3y`{~VUC)~UER;`mY^(6BCyKgvO> z5?_nKrE(xnWd!;bVs0I7pUwoN6^%1;&{}n1mf%miT5GW0^SQ<)LSna7vn^P$2AZ^{ z(oJTty}+s3d7(I9g>CQolyh;Q4tcr;vn&T7M?flP?PAM-IM&L{jX?AgOoNFdN~gA;9&+j*{|{N#2REO(cFuljjJIOX4}k%V*XZ!;E;{v?IjRXPM)%w4~YM1 zVd3O^ucsa13upz{=k9dn8zA#IkbDj2?D=Aceub(gjg8=eJgwqtce_cXbSt){T*!R$n}~qY%dRBZ8n!teYYk89hhqAf^h|{C2vkyWzzc4kGzj&_`doR-14VJUFLOm zJgUFuvkO8~Udkb9)&@um-;n|zUzp?gIOh!FCv7i7SMwO^U-bHIkigJGzHd<&2&R8Y z5Z)qoF!Dj2?6td6usp_t_L_0tz``x$z(=YcW#QrA2oX68_e@r>kq-Ck`K%EGb4LDs zxaiEFh#OR*qFV`A&g6eZ=P@ZPG{c?N!JPbL%4IUJ+L`P4&t%{jsS8Hcb8HFND|k#>yA)9|}-IVaXYh0R6cgowMs-n*1cxWHk-13htN_Pv)iCU-lAZIRd6 zhEbFNOzU6?RTI^=`zCsCm|{&U3UdojKgxekH;0s3{bEUd7wLOjyifww#5Ij!QC~tc$%A$4s@;!Ey0Y{&j{YrvD9@v!-Y6T+ zKZ)OUrg2U7V?`;#Q8kFC zQ-4=ll?-sK)sV#;e1w+n(y=+fWPRCfkAVjm;g#WlHIRJQ1xexXT>^I=iv_|K*ge}x zujz&rZ#UNSzbK;!Ruk(*N*zDPVp)3*eZjoZqoMqS^;*-Mze8>YY}Kt3(&%ZFzpbtR zdiS~DBlVN;GI?R{YYJTQD6p?3cz|%{js9l_bK+F19MP&y6y1NdA;Q(q&F&o zOE_7JMl)96K66yKJMti>Og`m)HDTb$*=(?q7}I|=)bwW8~`4{LH8 zf9-z3kF(0-QwyrO#rV0myZT>Yd(R-K>ihm*)fXisbfZP*MHh%d*G(GH0+Pb1>B00b zI*8MBk@PPMx6>8@OWt-WcSdYzhb|vMkNZXEz_vq+Al19B!rl343K#LZW&yI_xigqF zF>ZW%f%V4wv%U;&`P#73{A6^X!;dz|A-ahqA3{P_0W2rq_}Kvd{gDiP;r#$#6ou$* zlE+#^(mB48=lm*xwRL9mFNv5B#-K<2#jl7DRhWxANg&aMna9!l3O^UGajt|xEg(c@ zAMz3NXuDE+-Cb4{4M062b5QeqW2-x# zfB6<=g@ew|;5qM$>}WpcFz8X@MW8DP^dS-_Uy>~x=6;H~4xcnZkFXxPpIwiz<6qNW zM^@BC9-0xGdK~d|-%P;;^f6nerB}USg%pix-eD`vS`1u?R-i0x_^*fUrVmb>S?JL= zm3Mfrquf#Ym_L)JO=p+$p6D46lBT4aL$vSSBXulGODEV9C0>Tnv?o#j>JZ+C-9;41 zrIJW?!&kY0YkcbJG~Q#9f34VTzV^PTHeO

ky%!uZDn}aOyMx9Bfu(QVbaSo-fV{ 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%0D; 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

KPLoy*J;TEQf{l+wKNIyAHgGbHAPSu>jU0D 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 z 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℘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�J90iNU=(}sDcCc_sQ7NCG&Ov4v?dPtqs0@L}ypx(Y(M^zQDAg9DRdm1Iop zE^^yiE~i1+e6dFTXvh_3H_O%SQU42IEY?Xz>Z!j1YsJ-6<&mrK-} z&BWJr&|PlEe)# zMjt*^i>pZMv~@aQ%A-*~digNhY!)O)-_m3sq?fLhg#4pqNLjS!z zUEbf4dg+(>{XJ@C-Oax;O;WzDKF?P3+4ViM*r?5*=bz>q{BR`Rf3%{1Z?xDXAI7~TcpL#LPt9dFKrKYM_G_v~|AM?m&7jeW~>kLG>(>v1oA8#K0 z1+J}IE3Nmm!Z&_3b+$|^x?Zy%lj3}~$-d0KY3X?itU`jvh z;fz(&T5YIe8s!%WW)224TX+)J7?@uNck%K|f$USx3cCdPpqrl)Me{*E{BNF|b0m4p zwArDlBz*j~CeaEPwdTL;_0;=FE`o>of``}Bvqz8FO8YFoqoQSx9T3L%U=iJHvdubQ zyR=4Xs4!L1);V(WdmR}Ym6jCar(bLALkoMhKE_^pC zqb_@0|i+H5qBB=q`{+j%d6Co(MCj5(w07>ghB=Ya?G zhiuioU*fyz{KH~~<|f|#2W0R+J_s`TA-IJ-Xnr@((7q29?^kAtR5e^03^818y4fB1 zFjhZGDHoExyG;&5B_~hJ%h#3yILY|w`hI@%HY005A~C**x=t4J|9r{INID63PXy_pxPA*aGF6#x< z^INK!#4Q*sR}r!hbQ<)Kk=k7mY`#M^JT+H}XNt^g_NTlz!94{(fwd@)izy`9we~2R~*M4^aX;xiPu# z$)&|sH+PfHesWsL(nFSAnYy|FI~3QB)59w@6g+N zZMOECzF^eNQPxw=2fI71UQ{&{jV1{5Gdo~siM@e#It`UpqG)7I{!?pJRWMk4!3U}`cVES%GR^nyr#aG`l`i@7-_}S=7Ce(#FKa! zXK;r_w;MQy%cqT9Jo#}vU`x=DW;Y)*n2z5TH+E~KuLnn`S#Bb?m@^cc32as~4JmJ< zv4e9;H-8}=YUaAkymB$Q0o}h{dxKV@wFZiJN?IMx6dpZAyS?X54=v5nL%a_8J|dQy z2y)wy#6B@<6WfqK-O`sW4j^EBKKei zHml|0171IOUex*y*88}e-xLbfkRn>KD=@&_vcEB0Qh|w4p`%N8y);V?AZ2StPUy!+ zS)YrmurH|iSQX7)G*|C_V|UiwdZb|Y6v=!N!9I)!Q&DE`=0Bh2D>SnCJlkYIY&M3~ z$6|2JWUFTK?4w9Tv-|t&+0Cb-bZ_;cFh4IozZzegl%s=;SJ3eap z^&r}zU5GR~dRj_?aqoT(Rk3MI!b#wszxk52GhgkA4!X&LND3k4?hc1UwCX|a?w21T zx*5VU`LI~QN4$yURtK7|Y_h!nBnK|h6*L-ugb@>+nChX{`qAEVm!GW%BUi%%lhrM( zpb&E<*#_P3?lSsG|c+Q9n>7*5wY?xtdC%WY=3NeM`>oxkCvr4raumcxs zy-5_E^4dAeh4oOLAtNPErt|C;zB5$CtisN@)cB;=_U>-Hu#($0@iT!itt@IZ@Bk)7=8~fLPH^$&8;!hSV zfc@UTiemKAnWjUG+1n4iP*3Ov=f+p;VD=lm*h|RRPohc8-{#q;!DKj8-^G(-6z4K< zx6|knI?;0fy0u==%B_|ERU>jC>7D6c;!Gb!ee`Ha?rSwgA(m(i%r7+{3i}>_#=-do z)S5Q|!z!Rp^NTnN(RIUL$xP2|r|n_e92dH-F$4vs$Kgt_`yL-QRvPN#i_&lxYAcr?fT zR9f2@6hRoI0gy1mE^d0mDOj0;BDxBhcF;vB^(E|6%sVXAQtJ%Z+{+spz)jTMB zO>yFz9Sm<}i7wVN%QfV3-vTnu!<^|I+996>bl9|&6)1C)g zlhiwH&^OxYgWg3%x;!n}XguPz_L5gwL*m}htfDuwrtw!xc#_3hq5Ivd#KVZPOsmU( zSCj5)VI)pwjpNhnvp4w1?d@HYerdJa=$KY>NSl$j*)#m_X`6m0|Fg_d?P-e~)zbGS zdZabVMZ+7|aYo6xUhu5ds%NM529H*aQU!2~@!r2=l5%Ug1VOW$wEA#R(T z8xGFR|jyK{DXdefou+IMwPFgfeh3Z5b8NmI3zdEd?G%SoMzr{5b5RZKd{`rGG13tfi|)!J3|W(Erdb+khmnpGf6|XM%W|6(4GO3NvDfqA zRJOdnE7Arh1%|=z2k3Ab89paz>)7b5JfTk7;iO8xGDj^*iC03>WHP2{V_9NL(ng+C zS&HRJTY^+KP9xjL;dDIoLSK<~9HdxRPN$(V>ntSwHA+M!^1(&5m@7m&34vwu!#pRc zNIM28uHhn59@7U&gF(UjfzxYWdZI zl%b!Z9&R7l3Ksa}GU)qpZn0?QpyKGvUuv_}=lM-WXEF1-sS9I8N~18PS(wr?QpU`4 z_(~o6`4p+VLAyMj<0QWzrz9-xDaQq{S4RBN+Q(m5ZLJwo?@#d>B4IT9iu{JAQ6&=Q z3wHvuMAg;2EH(bvt(*&43WiB@4Z1i{gH2Whbwo7~Cw^{Z$ zyPtp7pOK;k^pM^x`Bb9h9?Xe#{(Wox?co{)73eH62H@42tCs82{^@$XnQxvp8P)*1;2CVYWDP8sMdQ<@t@G<4ueOU`FXC!sgWy8 zflaxLhLe$RGmCm}wDerDzf-P8zoX~cI-Rt#&U$89Tc(qi%j=lAc!V0^Ee3jZ5~lfF zEwqf>lFP-qL0PBG?YSr_GISCvljmyoWv(D02WO;zEdmG@wW}d}V>pWGUWVd6n2BER zEr#wfN1J37z%TkT*T{?C=5BC>WesGmXfVL2&MpaSE?29e=7z}SknQGjbsB9sUg#1) z^Mz8FtBwup8M&Yr!ldV0KBbIYJu-mSa-lbsXUk%?(JU7eOL;>S+~fTVNzGKcKKbEtA|3n+|KSUON|%pH0&NdO+s&+Ttp<|gKH8Br}bQ| zmfW$Eop;gRv6-vy4{(plm5|TXsW)4CEyTP|MXh?scqOxLAC?rgI}F z=HZzt3%2ZDG=9Hr`ifk~vgerXgn`vIy;;}1q(;`pakMx&0lN<&V(z_U@kDWKw~d2)AbDqW_LE84U#!ubdXckMs&TPkjv|*7Bp6>6ZzR#^j z+B8Yg{s>JN>^idmt`1VW&MauPn>1Hv7P{I^nyWJlV6BnDg}ZS6b+`+p!E#mOx9aZl z>&sVaght(If!sd?MY5aj)2PRMsbS#&wDK-rYSW7s`q{pMtL}ms;Q{9 z)T>2QRM-}*6QW`SNEwA`5KjCYRhy_VL?CiT1tr#xB^4Z$iLptT(pgT0As{_{8&_0K zMdhIfEAAmFN7Z6fs0)CU1@-DEtSc|Z_>DT1T^Ch949aU_YP}%ItkX!6iK$Z|_uqorcNA4RME1~_lbouq^{O9VVw7Fd9trsQ%cyu*WBpVa zMVCJ3hsQ&-TlL@Jtv%EnPt`RlJf?|PztY(i{>&?>$d}<14$J_V%r5tJNB#>mDt3UU z7tqb;7Y0^GFOdmZF1)y}ov2i=V~q@haZiH*wwhhvFhDA+nAYHPk2||Vzn>UT7P#0! z@Xp+qbpH?B7f^bUcYez~L2%DWm>wcuoQ%9)pQX1|dXPk&&T-=eX2V-Q#QQ*vf?|mD z@z|QX%+0bONTNXs+mWw%m;i#7BJfg6bOHzQsa6Hw_n`{)x=wJawIQ8^p>-nFn{^YS z-aIoGe!Zn0vYDV;n5S#9M(&1zXDW0QDgNN{J1MS3zk_2L9C5aQzdpBWa16u0Z49@C z<-NfVi}`(Re#c{l-e#-&Z|IQ0tk-;9TV!(}S&8U~RJYd#)hob$`3eX(M^H4h0Z_S8 z0FfV=b$wO)_q?xkt#JXswEp{VuWCR1P%|&c3r1WREq&Tag3T;bZS8s>&I~Eeu zs5kR;w92$(X&8vk65P3>1-^N(N@}w5j@`|$EVp-azHjp#`nmv0^`hBzRt-i^_nT*i zdiOfy!FH}iUpTAaf4e4}dWgt*VNxET3h}f_^-N9Js1;3k=Tvu2^4B@U+_ZL1Xvk+9E=5U0grw>;1Y;k-4E!Ry-)t=v#b9>zH;>dp1^Gyz*XpI&O zc;4rUHCltDsIH1YC*~h{fi#DrSC&!%mt9olygGIl7m^U`-~Z8FLG^52osiO@4xnp zIq;NnOtW2&soYFFup;@nyK60EXW1UgTszOyN zZ=31lP+~ay1|5UNpoo;oJz>SIm-m^7FQh_ZVpzOe9v2x^Pj0i?qwpw$ZUmET!}E?H z?Fjy+5P3U?5WZoVe_Cf7{wtM%1>Ra2MMaG30oM;rGpGyl$$TB!p5GH<1<{1v_97*--Bz46pbr+zfFXw5;e%I1YIQ3{PjKS+o)^si`Ksa3I`PU6sLw;KJ+?({rH z-SH?M_OFcSt$a*`WTUq+-G-Bi}}~1k1pTN z*!aIhUH-h=^%8pJ8wIKUrhGJ{^^I6BvIq9PAfNT1ik2qFN z)NY5Wx&nzAFREfI4c_3z9&paH6%M67R&n1eq2<6BHX^2S|!8_$N z!NANV8kp`ham=XwMV|217Ndu+oUKvM8Fm~!Z0@t06flNM+tF1`??M>~bwpu{sf=1p zGobs+@;aAfB#*P%Cj)`bJ0n>lP?DZIXGlH?;4XnTR&3px!rmJ5WfJiHiaprvuzF>V zAQ=z6_b|usWh~jUmx>(zyC7veVUjPS?OQVsMqv6hB8Niqt1dbf|de|EV z<8I`|{jEEJ$ibdy$6oA>d|EPv=a0xiuX=hR#(w{O zef(jfMC3I=o8)2^h$L^lUf#^%{(`ax^pUh&V5kCpS&&kQ%-~)+xoxJA&tO*C-j`Zh zhTh{-OckO?XU0@<4*o(@hk{zswN7Q=KGn9ggWe-$hV#{u#cOvqSk$S$ zC5LY-(%@sEmV+vDIbYsOUu-;UL(9?B+Z|?`=XB%VRlb-Cfunb2MqOn>WP=U5=cA4VQ(=pJraGoBZ>Hve$j0tMs3eNg zTP@c#_2P3s&8a1rrD4=vG|;pQ%jrCbY+lPKF#lM4QJc(y%sh*+#r;=TYAn}-{x!)f3G(> zDyBHIm>kb;K2eR-RaZ~J8fhs{z+;Z|fEb!XrCVsZCLU+9>#5a`mgSRw^=>+h&ZB`A zquJc0kOD)L_A#QMO;KkQN-fBuXfO)e30yOQ?sZ5pj;{PztBJ{*NQ_``F$vFe6m?!x zlB1z(mf>YikFjwqYMQ|Qn8NmwY)Pe7jY)Ri*`%gzMKxx-ArXmXC6BM+@iLR6wIEVJ&+8H5Q2spLoJDvCRDqE!WYMBA3L<;*EJ-7Ps!+_lAab{)1LrjofMXJ1$SF35T6%*n-N zku@94L&Y@{n1_X)=QKWHKWFYTamJI!iD7|gkAk;4a-yZnBpeSX=jUz*9LE&f)sfQ= zFM~J=ZR;y7=Z$+j`3^Si$LRINne(=ImF08ga%Rq)-QfhisQH#x3@zutnUiZlk3}># zN6xx?WnV-osswMFLv{E16fwB1>{?Fu`jpYTx0LB#pM3U74?dRyMa$`4pI0Ntd7aDY zUY}auqSF?(E9G*!*C*>+GgH1y_xjZOwy;e1`W%gV&$iROKG|7@{9hDXZ?Qb5dwt?F zr3j2$P-eqD`}#fHibm0vJ-*?deUP*7J2L7y^RrI`{x10WrB-nAnY)Kr!LI6m}_I9x^SLtMsO**&zKul z|Es$4pc(oo>Q9C~7r9RTcf68;)pexrQJiBE_Ab!A*|1=5Y|Al#*&tNyWEm~qh!ODI zsKZY3CVYOZea7%KYt6o65=@~h&nGB|DRwr|%29IHbq>l7qa6A1xs2yIfVJ2)c3Nql zAxVkTw+WSE1Cql3yGRsianXOR6_mx0S;$e@z`QU;=uIFgnqEa{QbK|-x)2l;zw%Ngf#2GXnPla?`<-%??6T!7;WKtbJRilkHyN^ zkFp)rHhjWE@ub5%U(}ZqPqbN}5%Bg1*J&CBlOgaa5{z@1xu77w>xju|%te_D7fnA* z{Jxxje18sx%*g_Jc;R~@dyZC$XSi`EnRLR<1@GN&Y!CnGyf8`M-YKRqKH9jRI;m2O zCV?_Dc`kfuLhKXQGSJRv==@J>HwGvjn3WZswn}d}lUzkB7J%DHMmbUdXDEZ2-gN>~=W6Ud>kD zG|j48)GB?LFHlAHZnb=mpWxUfq`RImo)en14 zHUNF4qMw~%(2YIxOq0+vo7*`B?Pxs1RgmJjnv$DUe#~00D4d0&49u(_c!)k}D_;D@ z9AP=CbZplt7_p}{b|_eNa^w)LK>e)YB+*`I#KCXm;Bw<>0@Z{D@i#)f8TlN%&Dg{A zy&uH+b`)gMi)aZZC{op={{A5!JrYItX&l?_lw*pRPY;-_X!@c6$r=D_XYq zuyAjWgxh`#%n*JSlk zdJi>ZmQzq!O^w!BVXYp9Q{&)EGrybKocB&T-36!b7oCI$Rhd9uIk7V47qE*I{Y^0 z!3K&h2BB+iQD=kdGuu!B_rmm*7r4qkKwmIDz1qVQOm2)OaScZYdV=8<&S%Em)i zO9Mu85(adxGTWUa)>(P*B0E*_PR=#ObN)n47p7VaFRH#)??ufElVGoE=c-#}J&hoW zsBXdiQ0tKv=8I3Y*D4J#tWN?VM)w{gAMTK0FRyM2OKl-+w8RX6tBA5o6dxxGG%nz= zqH=b{!+y;4n^I=VlB?{B+l^@sEq-tOAvH&X1ydR&H_2#dxvuH$61f}h-2MA|xDr}1 z5h+b%ZMw74P2v7tH?Yl3I|ZS+(hyM`WZH?A*8IaNz3r$OE-mOwys17s8f#tj>Dcd1 zMZa$EOLwIjd4gs^k26^+M#8N*<_>J}$mMA>RH5Xa@9mX7#>{l)r9T4(Zl)a2STisVu`rdY2j#j0YBmH4J+8h`Ryy{YxH>!%M! zY&|k)MFSbp;O##mRv6E;EjXGvPk4MbF35O%+PtZWKclCO@iz;I$x9+DoE4h1ikl=K zL|Q8{vKjqYgBU!(tr%&v#GekOKVgy_8|7abd?aAGqY>@{9IiYd15xbiTRIaKzW2HcL{F zMU?FRp8Xm_1=y;cIeNwH@_F{$82{dE{86wpzB9TIRovdxv=2h}Osr;f)_wB{hOM7H zqU!MC<{Q;99}|%4?lbLQOQ{X7@YyOQCQ8*^c5R&9Qq!Q|+>Ti^lPD?hsWjezW4Z)WE)hAQ`-aE^NT5!U5B}sKEH*+$-s8dZU)t%b^k&4M9vfE zo54K0&s)@+dvDWBRQoQjE6 zoBQcZYoI0fbY0iLpBS)cXk#ON`ZVKh5EH}B(?yoyJPKuXH zZQrLKaR70pd3`0mw$`9+r>V{&enaf53*u{W1vDb)3Bq5OQmUc|f1P+k{5Kj1-2~2# z)75M(ZPT@iJY=Mv3->&$Q#9cRq)mhH!jB78sZG@@q#yejUDEb$oTo>j9@1OVxB~hH zr|)^}!OsuTV7pMwnzU1qJ{tRBFmQq!^c{^p=eyQLPqI9ue~Yf~hDBb`O|@^N=NkSL z8H+uZIq6%1o=ZuC5p--4h2$f=@8ckkys@J12zoBdGTM(<#u_gqwaaXy`VC z7~Wu#OuNGf>aQ6wYwl-|g~Y#D1ZrUwq8YCVzH-dZXp~DEclbMY@bI-FSwjaiEOhRf zFipp}r~BsC>j)au%t)lJR=MObpH}b@s-pGD>s+1lhFCo~K{xuNf+oKYH!PJx-=g3{ ze83vsj^~e*awNi~O>ofte*WqCScpLw8BW>aiG3`Bueq!}%=IhLrnwbk>Pa%POFz#0 z;y0BdO)?GA)PN*1;hY*x4TUELgG}q$=#iO~mF-pOY1(oa@8~qQm(GH&OZ;Cau=7!P zN7FdN(KBI0;_Gfb`4H%Zl}B& zVL^|Wd#Ub?G>v^<3z}yVcO)^32#6yOlL~hVp{!}{qM|o^Z;I+zL%)CSoKy{C!o$iN zMJaz?m&(NE{>ePM!p@93M7?5X0v$;#qSJ(hG4tx?y2Iyr_Ez6_5I1tf161ntdT%FV z8v8KSiCf2dZxqBBFy1wc-oWQ7G+Jj}trOR^y#n2Yp#NI;E7-Brr{_*_nZ&SfkJn5 z->1Ha2SFMyj;)pmMYKk#7L$9uQIt68#;KU9y&*<-ObT&hpIEVC>V^SMIy~(7CUrn# zlP+o)dCPgOVbY~eVZ)&NC%&-F$nO9qsN4n=bs=mJcBRwlBD`plN+QRGO*Ew0gK?bv zcg6juqEq67wH~n8!b2gRkKWKl*kkAR&zoyP)|{s&BZV!-z|5T!CN0he3};=~F|=0W zJV`wtNIa(##7xTB5`p`^mV$&i{h(rdXi@!EUR&asEK2Vsr-iZA^qOl@jCZ21>6$Et zO3=1EN{#TkF8HM!bJ@^QJ^ggf*AbeK^4u{3%L@Y zTD!ijlbzP;?N)(KOHq56Lv7504-UIb7tB(mIU^?Fa&?n=Hz+>neavn?VHU1$^cEe# z4VL$}%$L%(33JM$-3=tm$j>(llV$k)&=Z7Hcwk`2FTB$R*|BHv?8wQ!n_}?wFc%2U zoxNdZN6Q%UFggxGwnvD|xMn=%U@Y_5QGcH+%g|}AgE&}Co}JiJ>{oS)Sa@nP`p&VUxT$5iH2N3}&rE!EH-Q6J|ARW?;bhnIdP`W!r8l)RW z4v>=W*cc%Vqes8{y?^a)pFKBD-E+S8x##qQKE^>T#n8Y{ibJvY?AiH$ zYGS|PiCU~D)dQV`NW$}zuJFD*E4HCwFvz*Fp^F!Vm9;7z3GtAqF<9Jnz6uG~*3{Zr zvh~Fhln}r=mXt;mKJ4hHR+FTXHn-)CnLnelNXGU31pE ztV+&_%kxR79!m1bh>K*NQE=-X`Gm~l{BXr=an~l6HtR7GJ7Rgxr?NNRqbIh@*?jBH zo3h^{(Pz5tY0ch)u9Qq>&3d(e-gg&%3UTPlRdzKww-Cz_?Vh&E`tA} z>*4uEZyY#Ea=r@JacO=cr~c4PyGMK?E%vc!Ot0EU4~J02{+Jwjfou8r?OGWar0Wv2b=qE;=Tk`2PRR-ekW?ND}X zPg%u+8+?%4*?Ifo4cvS>^q3>#Fm8c-Z^eS|%V3N*mArm0lQp%D`dl^ZmHlnWx;y>U zMPZ$>I+zFRuE7(+-fBPkyJ5M^HYu5*1xx-*c-L#Jw+;FI;wJCbQ);XQ>7sOsatnY@ zi%0+LQnK1-@0+Wnx^~WI#dueDi|@aoSxq*}C1|M7n0nTIv=fBW_17ZJSs-F2)c4> z1;_|adzQ4B1Q(<^WxKvs4kbm(oPoScVmAUWLY(}`{Eb%)yZa)10(mzUVwo4djwSb3 zz445jR*uC#HTMU4^bIcC*fLx*jvcN5+SKYF#s?J3^Lu&hevTBZSUVBbRMfRq#>p`$ z&-X2}^7%e3CN!2cx0kzNxW^lPD-gE?2wCTjQ9AHK2R^>+?2HLMZB+i#*BtNjI5{dAG+qN`cUWaxSj;2Kw#=e2Ul_ z#AtgiI@va${&o9U9UxL=o)?4wc4vzR=0bGh;sm44WVv|F|*7P(BE)u8r8=EA5Cv6u2U7M63ox@g==C@#Z zJ~wZBfJ;Fy7!m-pe+%1H7#uaS%3^OUKUd7vX-@Y2)|aS;TY{~(CTb{apKnvyoq7I& zl=32r|IAGaB&rqdRALhaHkrLO0e>?i5ZR?ajPRe0T0VNq!@16QXNIS(EHN?l!>ezf zSI=r0&l2(&d4)seJn`etwe|Ch){)yyyPc&dRcoCzcs}&s!u;1CI5&GI)Y;-yFo1s`6mTPL)5bn%HANmc41>cdZuU9w58FLK&{V5Ds-T~wL<#TBy zj`UxSmNAS}a(NTP*7g0d?9)U~KgX9}wdGB#p`D$XLqwgZLdL>k?ez8_w4 zNxu$z?Xzpch)Ys#ZHA{IO{__#<@rc|Gp&BkZi2f1Vz1a;y{%r_OzC2P zAuXo=;JfGszlYUM1#mDgH9ERlgRZGlTeICiW2}H(V*G-S!}Ooey9_lC8-3YNhW@#` zwwbR?lWo8h$s{pySO&l8=&j8aA~e%K?K);KNDj?55C@;WVOkVeSdTaf!yv^*-l{HFfj)>R`9kqms zw*jDiYigT<-3hy>S90;IX=K66$G68Ie1QDFQ8E2BNtqCtll3PIIHF%cDv+&U<5%aM zj$Xuc?)Ep?krm4(#(`{nDn$x`<@(_dE|E2M9of~Ao8sXoe0VR0NL}asbYqe#&|k6M z@<7+x(yhkXmy*_pBbClPyEu&|~jUz>d6Bha&W3cvk;S_Ephf0aXhk(we( z${y;(SY&GoyB0I55qvxfyk@sp48&0IekwGZB`wlvYjuB-ns42jad8wA_U~)EPj35S z=l((g)~(*_5m%QCYS+qI1aCO+-{oz5GEy(Y)}+{c+}3oKZ!#XDqdH-?2QciZf8M!9 zUD3m@C*4yuc6BD~^D_!#ickc2v;T3JQC(Xd8`Rdwd?6m^NIR&oQhh63unOOH@)%>7 z0(-5 zW6=BZOh{hzecrU?Jwn%C?16+MkC7t7)oH(p%4*G$nyt^hM&LtiV^qVd>(s`$ChXQ? zLz?7`yrG(HqrGON{bF}M7W`=>yqb>h+u|NT`a9|7yUs6b`mS4sEO9Xim@zqRY%~Zo z$b5Xz^{0%MiZ!>;AUA-idhiEm^q}(0wAe9d|Em_&ZT8CV^n@CXL!;_DN6IjGmY*Y_00KllkC(VHF(h~hzKf=T+C2f?Z`hqv&~ zMA&J+s!5aJ_vUs3NK%HdZ}^4T#i9@eQK6*acM9des!$)C3svz2MOEraOlIM9;kp2_FY%(R#Rvs2cXq-F$i;Hb8N2QST~4l+^p)fSq9m zjFZFot`ZJor+R-`%yM}KtZI!qjr*GiKU|!OO`MGnZo+(`mGMUj7l#|~y)R%#b{f5@ zTU{NQG@KyW%4mx;dDpCVFMPWO(CWalmsID84Stv7;BNYtUvAzQhRj`UeSFF~NF2w807IMBfs&lr22aOpgO#z?F=d_0xVZ&7u5sBETE#B=R%fCKbgVGhCNQXW zPWnJ9h!cxYA$-?CT+kFlMziPgy70K>HhtH(yW~ySmZtOuKdD0{8EsFK+lbg7bf=PS zHIKd5nj}5Pk>TlkBM*?JY7;x_IvyhykCNj+l`XX)MF<;F+ERpu$AiVaUS0U<(OUz* zvNtZ2>0xiynP1%wV{Jq~G?%VT|MW(&dGU|Sa+@|p9HUgJP>zn!mUEV(W-ibr*EQ&6 z5bF`gIv^Mbv6xlyaU%$dDS#dZIi7lR44sm<*n;VEcP`&JwF4;Prz*VR6R&*+Qskyf zY6oAveG=qmj-8qrJ+%8)cx90lIi$+-DateHhh5LDTQRy)$^@6bTY&g*j;G%bI|_}t zSFJKlIKLIf^N|Eo=*h{rl3N{%>WWDbS^Z*N-L}{y~=(zX~ zU-3Eb4V@S67tDT*4VuvZF^_(mw(EZWa~J0WX`G3!Rv?rQGeCy*j*)R9DWjW;zbwa8!a8P!peAx} z0Ph&)?2y3q;S!c1AtsjTawFRAUD^|nW+_^Z4QiBP{+Va%gmJzzC=JMTgz_rw5k(G4o@25`B>>-oW>N+P< zSmVniNiqc6wrFcMsc3&aUfRPudS#UYLlV}g#COE2`rp%!B|dq{YxU!@%?7=`Yu1i* z?$XGp7YK`f28u&_1=EdkE=Ai?=a4(8OhuOg z{KlO5WIyh?=&e5~`af(3yC{;sOdS4B|9j>}#!_qxNer_gs$K7U`9(Y2hcT$EzoutC z_#O6p!Kv}9O^J55bOYiH?Obeu>uHn%JbA3W;H?i)onW!a;jSL z&@MAP^zGaIh`wGm&7C7?;clT9lW;zM^7p})7ffQa9AvLPfkQt=6~S%rNfe37oIj!c zs*s8;GN1D6QR2t>o{l>mSH$Wm-i$sPEQE?o+%Du<)EB3JC#nTLnlQi}`XP3VtQV5R zxE(00h}NRg`yjUAv5oG@%VtI##3nhM2*K671a47Dea83AE(?EvZ*bkgitA1-F7=La zi#&Aiuu6EL#Wj}#CHQ7lDHEM>mtV3@IC^CEfws8Q(o~{-pCyYf+vJ^DjUPS60iWe* zV<>G1>ZrsLibnJ<8x^LeFoE*fFMlV*mcMHcvCb0`!|#WG(a}-?vfd z3hzJBjNZ^C?u9t-cwrrnFW+crCUWr+46%K$9^F=@+{$$@FA1ic5k>jhm?p?9G3vfmY3!_8b>r)Qze%Cz@_oUzf%94Uw8E? z6WwDt4Wu@QR~b780%{!HIW;O5i^kr7afMKWm6+{|xFSF9{hl?2a+{>;Ay*3M_tom( z02;i;$>pxJzh=i|KTOEB$ONHntecD0WngY`zg*+V(-8F01%?KD+D^UgcjQVvi48&( zf%bC%*>{y@C>lP<5(6DlO9gUUe0KKqS2cv!o#Kq_rX?$0kizR9%=-_K?OjJUjjMjJ zxL*yMDmo|z++!T{LJZI)% zxwHE`+T9!8l<(^xi?DKLupJ zXwcLSYX}z^>1nCtL_1n~ShDB*E=)>lWoVoIS|=W>Zaz0ICt5!(BHW~qEcZbua&x;M z@XqUtXW(a@(c5I79UM>yDGp=r63dg^g6edk4b#g@u}KZ_sx^wNjyMJB*XxY5-{CPo zb);nXU_1EhhI{~`wL~@2U+=C{E+agIL0ZVSY!6>rE2e2N<{Y7hpZEGGM-pnR=a_(R{LLK*}hl6Ow$WW9F4aPtk&xEo~8fRYH*S<$~@b9?x;)`N-r@khWeXt ze`Q!iW;Q3t&gsRK${I2mUbCPZk3%Vl)a+d&N*!M{S_1fmj4`sUcavF70#bV7PUuw5 zsENGaX+)`7iWem+32NNowf?Y8ewXPaHPRK)OMvgYM-=uWfv>=-EZLnbHYY&0QP^5u zy~^?$&O z%~!TXc1VbM&O3YFRa01fFY;6nI-QrS6+gG6H1%i0ljme>fthlQSyNbxEboF=QS&lk zDWS+sFrSX})qaKQyI46OxvUMd$-}}&Yh776Uvv=dr9Ee~47ujq;yNS06~5<(SRwRc z8BrXO56z|asO*WORPWDh-ZCVOQnleEqqMqn*OrU);@&_a_c{nZtC_DpWyl2Ts4ZTo zNd`JoP$CPEUJ4toap+10=s_k)sN?_3DHQN%_vnPoM?{jn%SbSxd}}&uT^4X@-Y!E9 z>~3DI4uZ)WKSA$C6fR5;s&yKd9p@4NUI>V7-hY*p{ME<4J^1va1gme`x34)C`EiIt z+n!|u_trPhR-^IyhTOVLlqCB@T7SbR9or44=f#9-n0<^1;};VWzXUt*V`KB1F1D4E z5+k@~CNbuMKG{L|M>9GVp8s6^TMdY8KiL&r{+d_crbRY*D1!EF%T9{sr@H3^xM1NV zQ*=VUbj)}wC7ya%_lLaT7cZhi9-`Z$7@bTWDadKNgV!BGl-8~F09Ez`&mpLCzP-q& z@JL>#^>a2zExgPj#hvdyo6SYSDyLaT%s+Qc;#!i-tD~5Ih!bf2hPLCL-LqR3vZv1s zdGwELF{w4h*1fBWi;ug*5jZma#c{JgaTK#pT=kLEEEh|b-TbTKiA8wUJGy5pA14MF zzFH}M{O9-QzT&24d}L!kHO@oDjFh=iw~E8X+t^Iq4AxqNd#Vl?!beTxilRsU{=pH_ z)k^1O`gAwfZWrU3>LfYAb@4^XJXoy2t0!;pc)UkLPFkhliBsXU6B}$^ZXD z_5L}?$~J>jEqJ}{`S?Dlao)LrZ?)xt`sC$*y*)`bJ%ei=L$Yuh#P3b1CF+wTI`XR} zpALKG?=;wBXR@LAnv3~jLBN6P-FyCvrMs@{O)L4vHBOdPeb7Tdmcz!r=t?Erq zSFn;R&f`W&SIq9kF(zcH*GD}(x^7vt^CkXFzfjpuui-m{_8S4fq|FND!`#bLd0q4* zhS6Z}O9{0hDeYnYr|#O`cGw6Moq|7Qv%JA;z`{wvlU$~O#WR3h!*Oh?w(@1^{QGHU z+tQLkAZAB*qTI;dB8wTZ?^q_!zU7g&0Ap51gtV@8K5=1d9J%m2d`4o9xsGmJpvfRW z&lrlqkf!SGT>taHgovq(%~!^>D!`6cgSewxhp~u7@UydRq4joWrC+HXHRY@ce-uj= zkm)jpk5aP0j@mPzTGb5WgM*%)P7%}Gyob`SLx-!%>@E!%Nw4|5h)CHSax+K849whE zi4PiBINIXiK+bp65@)Dg=J{1&8~(q(W>CdCPkcVT6+S z$iA_OmIlsG?_3Xt-~TR!xCeM2dqra_CXjq-KJaE0L)eQcx3&<*vabC(-`jdEWQx`W zTY-j9SB1|y0755R#VX(&lNNc{o;~)?73<$Fm7&y$)$@IOlmT*b+Db#Bcey@-H3$YM zx25lTw2kGT4IA1veBD3RyHggm2l>;x_ifzyBGtR2zY4sRFDny;JG#+sSTpu14+*

akZ5{7QBO>o>n^U-pOW756^c9l|h`azNn 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≈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 z

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 ^5UGHrCSu$V`X!yR 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≠cy=KXKR?ZaaXhJp(aK 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%0Ap@|I8WDBMxS~N)UQi@MklRq?3rOwRko$&X?yQ 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

  • Hz=D>0O(J(F&*Z$>b7PW!lU(xloMv z?EIkH?7AZXymw($!U0wm)#`}kyJ@qH$9kXpJMz|L;l!b!FH|ob7k}fyE#`j9<`#l8 zTMprp;QmAZ;L0`EEzNou#Sdp*f#r`1LXb5xYPP}LDuW?jjLBrG~netMyBBHLUm$gM`&z+ z2@llwa^G~cw8IMWXYdkx*{++{mh-I(cv=E&f-gv>@W{mC0xjt)l`rh=yNd~EfA)as4xhhM&CXTQ+vrP_eFui`p*ile&9JVI$46!^7NSP~HC#$!9 zia{X0ejZfreCEk%KFadgy*)zxVZJQN?>|zJ!1wZK3>SSQDRC>gu{Km$^𝔓=(}G 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

    chqvv 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

    U#dFLsN}7 zLKj#>Lf^xVcB;7PkXCao%3T1{9=TZ)I6o4xF-j-uhQ~A-9Z!H4fv{YLL1KXkT0pS9 z7L#k@m*IOdm-6F1ZQ}Vm+uvvA*W$DXEt#FNbTgff&uIgSAQ&p`Utw2;)^XDW%i2@J zD`Pp9vY+KaOY8BJ(nn>52O z^W9AH7G5H-yp!)!%Dn&{A?FubmZU#qMB>{Ko`h)qG@kb2F-Ggf+74OI&&aPLvlHu> z^0_hx1~b3ZRd#w72_!NKP0to%yhBkWnaH`A`ZPVWM@{4rnw_`P9^2PGi6pB}a}74G zC*G#5MNpbKUSu%_TYQi;lsv$CO0(SwB#A3LJp+-%1UR0WD#Qrex4^$Pm;r zGA>pkqlpWRi4Mqj6vQ0;W~RR9oW%6g;u*mnIH295?+q*Yvk&A(`80X|kbl>EAa19g zFB_C}18LG2oU#wr3tp$|P>Eeci~QHbb&b2=$zb2fO2NZ_!pI{MC7xC^ z>4aLyz7@AndcM9k#g!^M4#I|$z>QIpH zjSR&Lz8PIatyas*o)1@QY}uW)KOHYlCq(4db7=?xHP+WKA1C=pY45x``LupL*#COa z*pF&xvvpt^>uY*Z68;^g}GX9;OMn>G&`)HGCByRmQ_=IyiazN6W^K?}3 zT8|dv@l#kX>J1dNv?D{6#pI=UJB0VNoTzpOPEtZq%y6QJ;hNDD!rH*jO)G9&e06U< z=%K8|DM6!)axfeIG@9UjKPXERO}h8&48~ViL?5NBNRD8~*e4Y+j^3Rq8bSP}^FjyB z?Tc&f1M!1phuoG|?%>&@eeuK1j+MJ_NCjuJSC*i3pHIAO^^)efsb@d}b0eDf{BdJP z=B!V87WlHkG}M+Y#EIE<4D6)CUgNM5AA7SIDJ3t51OL?{Gu#YAN?pwTQl8Fi%N&>s zKJsLg611nZ^}#mHUc(M6j3+)9{`QCSZ~(fa9aHMWy?i%lL9s>YhR5345U&zA#%=w0 ziEiywfW>^BoO+RSRfE_U%|k!)Z9Kbk;j>z~_Gh(6y7xC_@dILkJiPHT0Fwh59`zKf z!(mdofhFIMmxPo*0!B1p&kRn`u?)6~w9I-rV%y80YZzK=|6X9Axiqz;e>cn>im#w1 z2xYqSBLk!u)T&2%Q6KS*A8*?W3;O`px(VKrGHjk7BWc`}g64+9y#qdqt~M z71En6;@9VBt3{^l3HuJ%y8HDxj6xAf06X{75hqH}W<%sTaMBtioBi$YNuEyUkH|vo zuS`LN7ZWybO|2>9_1Ec}ea17R2Fl3GN=Dp~Qzkw*zHxX$zYf!1lK34^k$*bUAEwX8 zpyi!R$DH1jsZ1k}wb@3K%<*oi_F#@7U==^OTbzzCEV39^!7i z3&%X2G0*_#=rMaCW_=te!)YYW1bfi8-;K^B5fwdAmqId2Ou?uqWW$5e$ahgpO(PV= zXk8z31mtuyH&!?gB;TjGbH@Nc!7NrmkkBy< z(*n2ixP70S`>;>E?PBWyU<;uIinJW#J~kDD>zpiLIis3eb;Z0V-o65r%q32)S3+_;`AWrjOnV&FLqABqeq6L%ZC;>9XoQp9dWs5eh#sbaVO$~r( zzb0}M|B^E}?Sr1MsSehIMvJ?rt|*dDY{!sZW4;osoj15-G-Phc(GD*+G3ib*-a@W% zdSBQ!zQv}oZpEgx?)%3cEjC6wlRoHruo03i9xi{QIbVhyqZ#;;BdXvoNqRXoeRnH7 zZKde)^1vtLXh6Xb7JQp-3L^&#^o1olhT@M^K9(7}BiBx}|hRt32zjGq~C0g$nepO1cbMvu%u19+t2F7Lk1C zhhe!QNCo-(2udx+@r;?g3WrPI3483hXpL9qqHZS2NvlKrWvG^`=`#cfhcFt2QB$P)*v%Og`$M?fvcPONDo`@f5yiG4kN4pW#^9bk!x?$T)-ZZ1l_8zbgSL*J1*j^kx1K2DtoaRPpbLdLDQb{jR_?tiy{yTH6db*@&C0zrrI)qI z%eiVZ)oq%^-ZeR*vm4mS;fAK4yn6X)4`n+kjp$<5BI}jZOEcO>ksu0hc38E;GZwaS zL0cPpMvE-(y=}j|^A!E0NL=OnUM8?8jtU<{gWy`y?g1=Ss@d^qt{cX;x>;DS9#5z5 z78pWsamor`)QeNP+F{N9w2Hv{KXY&m5ZVlfF+|fv$oxr9p#26aXi__*q=ouS@THQ| zLz~*XF1DkIi#)ZeoTWx`#8bvgkJL&VIg2Nwe%(78G>pUw1FvGVWyWtNtj2X%)c_WA z0O)nF1;AtVeFwkrq}AJv=FS!a=ZaVk!@JU!mz(Uz6wO)gBlqa4`Rh04xEAn9@e0Ug z^jCCevBBF!aWaNXHi(ocL9$(5qVN)0IfRwM>nlOeljL2g5@gk#kE;EuGm+qV2;z)K zeze(E$7uHOEql;r`r-CN-aN|ec4X&NfJPP(I>Xv$I2xDiiI%FSPA#S4nS|ZJ@j<2k zfUg7@NMR#|==*0O( z&1*?isGkQ=V!Al^sR|4`tT0J=zaf=s{GL8s_@{HA6%8Xx{$qdnXv>B$|9P5owhsl1dopJ@PV$TLSOrI6_P`u&!(U+ z;0;KPI-3$C?o~P(a5!~c;sD!jvB@S}vtDW*(CeG221?sUSnBfF+^c{ObFUGkI4~$k z)j`+C6r&}Ej*PNT)6mWlHPdg>%e>2xoz`kBlreHeJC1SL3`*Lo{zR&-OoqH(Zf=X1$lh4y$~tj4jr>N}02$ zVf0nl?V!?ulQ}PTYn?f(DL9`IJ*n790WAw>c4jYe<V(MT zaF%tN3VNJ<7gF14HLfwu6avDp-7Tucs}KMCbs|_yrS!t8^o{wraXw$iJQd2 zltz{*pfYFNQD7BWPC-{ATCAn^dI4dHdjh0Yrvy2*<-4f9>^zz*hv8CIiD{_WQ#g<} z9!awU;D$(n`LqM-wiNgBGPL@Nyq_S)p=e52e1!PX^{Q#iXr=jB~x= zI8V+8zY5TPiEey-$f1OCv*G@-(6IQi?4sd&lCVal99(&q^nhZpf+}<1ntO&rkk~Q# zFrv%SI&G6Al$3g2rcsc;{^~ax&Sk%bX&cyan4k4nsW73;jqf~qieg$)PWWSAn+%E>ojm90A~VpM z)>Gcq0+Da1G$A>{*9Qz~oH`V|5+DFdy!d^!!^myxIjd_QJbNUS{5mVT{;%#pk9USK znwX(JQCtZb>p7WUjm%-rr}n|RiRPs>1iZ*2b1|zP7>6V?RVyjEg9T@$BhP9A2un{< zQ|9K7)^^G5)z11#ZQ}iZXjCpLqFc0WStOEfplJVG(dfFi#uqlG??g@^NN$Br$^7F- ztNED2vZ_}C4E4-rkWQkO(Xn(Jp@-6D2FUS3P*F6Tz~cF1@PTgTkIDtXv-VFl;30yQ z4tLL((d1Y=ZCEZaZ!8aZhLs!cax-^YQ0AaB;siS=%2>#uviMqIv4P*agcRbKO8(d! z_!0wJP^wf^0g+$)4PssnuELCV9btxakd4B`JmfAgt&5OR-h*aD15SFT*QmK!QDm`M zWkabb=-A`q?N2@pZ|KA{gEW7g)?L0Nca3CXh}5tt1&tS@x>{AZJksk%v&?hFz_*(s zY?OzuVw;{AE^CopR|K}_e<>S^Vnsi|Huh$>T=s56brYV!S=>+ON^<5emWj^y<0ZhW zJIPyUUZXS2oSmSmQu!WISvO9O@7i# zKzqS#5pfzlxP9AH!W-O==*HUqJ|)4L?eEjvm&KZI43Kb&VCGY(scvhpwb}C4)4XXa z+wtOAg&EVa|CH1n&*!Z;;R7)fpbMu@oTiIY6E=-AXeZFCMM_*LXZ~rV#-m`C_+#QG zi{Y$Kc$}0wUGcaoeC%W~Q8T=fv(goxQ2wJMZ2rDKA0hthv|kqd^TLoZTqJZ{VAqNq`VAniB8R}sBGZNRv^Oc zKYC0)=jZ10pB~*H{&Q!0x7*Fde{OGXf0_TE;qy-s|5;L*t{Mv3XXf{?pIbQq^#8Ef z(X{LPM1iJ%htZ?y1l*i+tVm24M|GLkdANH+vnMDh23rJd4d~ICr|9i$ls?L}gqw z@r+^Ri6I6XL#|o|ka6#RVq!MWMkQfyNlfH|SJO$LjMKV}xB|lK#uP$mOr**bvL>D^ zi2_!_Fs+oCC_|m{h~9=C*-+k@%2fk-KXLq<4{(jlZkmbG6H3V>%_|y<6Z(kePBPe_ zB$#CFM`PNh4PujwB|i{mHA15#Hftj~%hVfj&{gt5F(z0^92CW~-e^9pD%QDQ9~d1Y)ddyss7Hp54pvc_6wy0W$;N`s9)93!>CliFa=t|CcF1 zS+$2}!yi!TsZTR&XrqE2gaLw05SZV7i@wSRLC?5<${eeG59NQTMYL+lsRy}0HKQK% zaQY5oI>gilHTH&5&)vvbK1&@8xy)S6HeVd*1T<=_L|XKw7pKXK4K7+xTn33 zroXv71_6afk{GN!`Ut9k0d6w-*U<5%t<$Vhw?blr-%nbDm694{>2|sT-O#mTz;2WG zqSqaI|KZk$Tg~X!)vYU&;J|4@-+Ti<%`OeLX*HTw?vcNdbNK~snj*n$VGkyKdv0R# zBpggQPlCasDLraNJmW~QS$h0y!vmloMP-jlsqTF5P2JVv@!O^wQFaUpeAhAk>>o22zrq}$C9R`545GcC%Pv|l z2nmpVpdQP-lAyDAcYw6ClyW`XD9S%_v*CTZFW_IrwKsf4m34|LtBFnLcffILjpRif zNxuS_L_q;v9w+IHS&OaansJjOJ6?-ION-kV2Ct!q6gd*RNH3n@vnF45TzYr%Jm7oP zAU3k(V3A;mVq)^OY%q0@1?LzzI&i`(R3lL#bTf`Vq^w+3@a*u2lT+_$yvS8cD?`jo zg0VaV5%yDJO4Ku9b(|xB?q+D}N{TN^9FwD5@f>Ed5t|t^Ncj3_b6GHcHN9Qv+)(6P zLqf*)O8t`?bISzs$gRdk^Y z-9C6(yv0#*9TkdkNeD#28rr9!z<&!yqA--jP!3NnxXoSOOPB0jW;kVtpGU4UAyQa+nu>@l!IvIrgXIQtR6V0Yi$EJ*8=f#;WRm zC{tYoMQH>In%o)H-tqz7lNYbeW|WEGQ0!9bwERl=WbfmZVkD|!ChAcYTmn0eTo`YE zqrhhl1vy?VN6QJvbTJRO2pGR#4BCamWlpl>JVZk+=5VuBF^NRkFJ0Ul`aq`krulu6 zT;T5=76^1F$5~G(%ISO5fSb|8UZOzP8B9}vh`x-;CcL)R11P=Mll?dO5kzMlIsf-p z2{e!OIWLvyveZ^4`~fxh=NM%DJz zOAPKZ*r-{P*~n7<>--v6k|sMB=z^rn;oK%WMKLCsNZzACNz6~uN|TjA5`V>#1r1wx z2prPs+>*pmm&E=Vy13P{*Af9((Z$5!06Bm);OdtU*X;#Tf<SD8#Z2wS`p|_L7fq zVNX_#tITaUeeH|QQ7#=gJ5A8_tsr^$GD&go1J@x@6Ol@;=MqCt7DzT@Ays{I^ftmzH4}WlScb!5}&0f)43UvNABkBC^ZLycwFh8Lo;J?W1%S2 z08B4&wbv+64cFa{YHwHeKNgXBCJ<2EX736uAy zr+3V?p$)z^l;V}P^o|B%{43O=<6S+%2biUDCRhR>cQ8QF%Ea+(xqEwLZaj=YT}t9X z=7JLT&$|LKB9C~W!HN0zPH!|%m)(8HT`g!3ttIn@%_*7BNGUGGQjoVo;wTU3JQ+>M zm@lv8Bfnr*xxV&jG)w0;!d8Hp{Qb#j zoLGZ19`=oFYy#>Z@GZJ0p*N)mPu#zVf1vy&mq1^zzSpFgImG(rRvUKY^o+f##a{@0 z;mB1OTJBG014hQ7;pIV%oO#sf{u7~WBXW*wM!z?H?Edh752_2E@=T)dqtLkj_FEJf z=a4H%n^p6oyS@gSN%z>+*mBoQ0KvELWMed)$D}Mi0BQPi2BgR1N&7_Qy0y=q zfw&!lu5KR~irNRJbyY%U!o%cjeu7xw{<%)?RTHSNDu0YnDsEA24Guh^bR_^hqOIjP znH-b5^*lL74P9yo0E2TLfP^4o_g%}bcEqK=>0-YA=_rLc(LZ4+Er+xy%ime->HfbJ z2f8x1N>89{LslesM&UTnMFYAqPhAiTUIcLyXCLu4$eQ-d_8ZlD%pAo2e|Q)@NseK% zo+nn;(#&(s!5pM`GuF;b)ql7r);aB1;zF@c>{)P@snog3Xxf4nUfC#t2hSe)l``4k zo!!%8NL|BlgkRk8sxE5=-!JRfSeG>e?U!{No{wT~2H4qDtX&NG*s2p|4QKXdDH+v! z6yz{IcJU1xD$GnO;@O)MO8%siVZ6z;9$< zgT9NIIAa_pw*B7c+RY~Ze-iO^n)fk~-c2ZHNYQAp`Q9}}hO>tFFb2V&mVh_2M`34Kf!N^_ztl}*jrUM5Oh6ANq=J>&{=bbTx zD!OBWKt*#Fkg4dI_5EtfcAu$~x6hNS0@B9JK_!R-$_F21$XvxTHa36ZRmsUlN%X zDH~=v+u5FQ*hc#!_3}yvO!v@VCH;;B7gArnH0voRdV(Pl`)f)BlMu}8ta?t2zQOMY zc0pxNY`R|u;-V)4!NRM%=@y!f4RfCAVoa9TuGX~Sh#-v!w;K{Z#FM> zhrexJ>}@vOD|oY;1=VR^3lzgDYNfrEYi93bHzVy7q0nh(QRr@eP80-(LiF~s=xud= zFX#z=MW}bTbEx0_BcLw07jW)I=TVF@OEBn0=eB*f^+FTorFDlg5v3bwNY3g+dHX8R z;vBOSu@hGB^`=-7a2_GmGyqV++EQcV9=%=9wAZfE-lcA@jqROBx9>q0zW+YjC4iUV z#yfuFTt0(AXJrgJJ_hZrG8DRb6re%|hwjQabbTB;?J^v;@;E?+3=Uf>pnqWjO5SaexXL9Cla6VK;-r-7*~Z z0yx~w;;^?e4tqWh+dE}A+|Al z&#V?0qG*9$aP8=JRL6sCyq!Q!u^a8iom~#ua`(>8mRP8#Q`pZ=DDnX1HNF^~a@;1s zy?tlb(g9n&`z^cf`fwY!5sy0&EE#&oDE77BmT^3q&<Ygo6>RUkudSFfP<=)mzPwYC_vA*9aPy z>+iqcjDB-Z+W2HoKk49;_Ktqk#Ydg3b#GO1GsKXxe2U0Lzwac-0&?c~eSDclTZ;7! z6|#1Y0NVj~S7W=3p~9MWODz>2jqUVL;B5VK%ZIe(gCey&&$7_%Wi0!-^vx_K3lvVx zvX$1AtcK}W*64taWsOdzSk|aW$g=v;7Cr(t{moM#U>om2-=Rky_+5O23z}X;Gwct; zQi1(cP^QUOV(>NGXuo#LHY6F zgKOz2`NYN1d=`(!A%`KW2=jsed33r+=M)4>a@E`Oa8q85FW)^1A8C~cDsPP4Ndk>* z?tn|5?q!!*rhq^0s`t@iG9Phrr^5czTp~{xKIK=w46f6B?4Q`X6XzqGtAJihla3}F*`_0gsXSV?mMXXr{sM1>{=3+PjvSuZ%jNemZu;D zhxx&xn1LpZ5eGtu2C!e6ol2xR-rc3Vuey)kDQ3`RB=Mp@CBE8>>e=-jsZX|M3P{MI zJ@x511qqmJ{5_dXfluEjHpT`M4ty#maR3YqWCLSikuO$j84o+Hc4zipTyu2tr)@T2oves*}sc8!w-h zTCjMcl`mN0ZnJD%$}?ebjly+PqbA7M16|1hlrHl+8qTJtB;*$pcH*%Y2XW>;wXV+_ zZIiBx0sBs&*10o{WOobzo{1kdh9s8PCcLSY0+d}1N6dppUZswFai$mVZt7*H@ZbqKr zMQ-O^L_hoxbsLNp{Q4%^HA7?Nw)L4+(_}sqwa5mL3<4@&)W6 zvCj)jf}O5E#u)ucjj$R~^6}4g4jrWtIYyI^%yow@CN?F3BLB^f83mnkBbK>NaDgsY zo8G_>o_1KcLhLZk;i+)&ky9P;NGcd{@IyyW6a{*|w>=~4A2-d|iueEQwV_qoxW@g@ zZf9rv%l*&K@VV~zW6-DJ>AVsjTx0yVcH5mV2z-IgIXtC4)sIv<$#(P%w`^= zL1Pxd9v!WZDM9C>j;SB8rzzCt+{E+xd1`b#3Z#DP{1)!C>uKxJ7&O#dw{JD@x~KX1 zueTZvGENa5SxD4s6FBL`6qESUrj6pfi(2M#EYPKrCfO_Y??tuOwI&AJ;CRqfn{+nx z3sUjj)@^jD^Rz{=TvVP~FOCgH^GGS+4^@X2=t(VDSb0DDb@YppsuUhBP?MjBD`FVP zKt1=ksJ(G=Nb?}uo_!v!=mPWTdR`p5XG0jlM(YXX`uOpZ1ETzt%xjGn?SUID(824Q z4T(F6;ZdkD9bTyf?g8*{-GX8m>ymxgF~dC?@7uKx$PiaG4l9Ffkfzb=H--%?7f`TG z%?l;0kPVY~o^k+17b6-l9y2jOpghND8}u*f7WnlreZJ^{a>L($N#b|4 zMrf{qM7j;F{0DTd-nb2-sp33yYoH~85}0psu|&qPA;M6a<=BcZnK|vKQH@S?@3x|h zC%STehzEdk{q-BK;)g7lQRAusoa2Q>3$Yw&2#7jq2${aA5Uj!{p3;DE#ua(0iZ&mD z24F_O+T`@|9}^}MsKj(i$46(B#D}Ne*_8A|IkJ17nDjmGu{POmI4=Kh%tB5EL-!oGs{UZiuqm0H%jNp~y!oCN?Yv62<7SDR-*h)_0TrQ9X@5RD59tnb^wyyqUbFLz5<#&r zUs6;bv&TD}z;1Cpx7W8@JAbdwt2scPs}1G{*#VNCgsTDNXv=63nNbZ-rl@JL$wkWntr3zbL*q?S#{kg0Fd6ckik*LB_HWLBIR zt^EMhBg!>dYq*j~*^-hPlWdgaObuJ+%AquuktnmmWY!h}jp`GOCXW!sPYWmwuV-_+ z`QheL`ALnK#ee|PaJ^$}OpN;P;DHVZ&s_qBP}-?HXkvy!QAgY&^G;Ip*f7Ia4Tf{& zW5ElN!{glIArb1ogGU)mjPXL6u+Pggi>%ZMvp$;W+$QUY%DZDabp6C0H^ayV=nf*K znejT!oEMFs44^lTSzW;m=XAj1nJIz83a_riVMZGfI!p(xOxMGR88yYBhLX!_Qi_Wz zVL=rKi5d{y$I_wkCO{6WujVFum_|s+lGFp^4|A~Om9aGB`81=6*@*U@sSqSi%7f^_ zk>@wh!~Etsx0N;NtBgTG=igy8C<1k%38nU?c4gZume>U%l^lw> zE?SzhOZZP_{r2-4XIBGLY(10w#cao|l|**iCYh!QUg?r)5?%Q7`i-TAbfKX{voH^w)S{e^@swPwZA6SJE6d%relJQk>Jtr&bKSa+;$QUK0@m z3aX#4H{UpVTY-PiDON{J3p8}VaD`|HOyHEp~;Sc}pzG50x;E5o@}kz!OfIO9G53!02V`qq9-2EGOc_;We3O zvTZi?k3H{Kd&m39SNv3VyF6x?;*A_&vkhSikf!%*&;P00dNuMJ<8*Yn);ObFusIe~ zxf*8W<&@5jza~ZeMJJYyqb#fmi)PdIl~K^?H5E1KRu!vAhWoj3S~rZ6x}(JNJQ9v~ z&Uwmb)my}odW!NqbNXp5m@`SG$X4GfnsKvqVQc2K!pt_jnN{HYy|BgDYF~wBShJ`F zu`YwCR0UHvb&MfJDNoJ+T1+XBk}1aC_>QXHA;sTNP-V9#elZ3`cHs(3Z43+fRYOd` zfmKD8F1HiTY82$3e2Af{CdU{X7c-cjP6sgVDLJ>(;!W0HFIsbddU_g5vf8ga4k7N6 z#cAdiC)1hW$sZl7G5CyI0jQq9nsV&-(Da28$)ga) z=#~^5*d`!9r(CTUFj?7!VK`o-CzSOBlcJ66U5nzrz839ifApqex4FFytjA|y9u)+e zd*a|tN?#$3Nv1F*_6=XBMk`L~XbhB}UnezG5>q#F+)p{ct1?aoG;x~wadb8w&2=O6 z&#&{EPVb1S2zTlG$aYzddQ4aCbE}>)e)OEX+i-WTvJAo*Ow7#Ch@Zs+$zC?svxEGQ z$D>{{i{}Z&KA+E~gGHai;K#iYx%iL+JfBPS7RSOe(R@nv2cxt8kkh8T!vqjWlvTQ78B$T}4*pyD{W7)g`RVE=>$8QYZ>#Z_szfX*j87sc<# zEZ)jfxVA6ZwP=7|P`crI?f?6KKq9qo3pwbZ6mtaNb(tQ_iFbtX8LTF0RDX4Qb2Hv- zcov;f;875^$ri4`b~Zg3=8vNlR!z&PS^J*as@%&2*{Rjc1yRlB<|Q$uLY=udwd{(U z6yRTfV~{Nh|8M+pU9W!^pPTr9V&MG&ZgC6hj?9)C?ZA8R@lM5DBu>bM-bTojr`DB;9No=drNyZIB646P64d1;PiL-9}oADlhX}Y1XSFv35O!-1B zYUZhArkUetA~u*P-KD36VN)I~XFX^uIv>T+czQhQlh?>3-}4sk8OSjudXM{oCQ=pD z!($wWvL1^Y3hX7`QSLp8R_`JEegyp5LtmFO(01mD&B$|r&Nem|31tG566VgoVx>qF zP2n6dHnvQX6gt#%AEY&B@e@-vrh8eOE-%6ET16$~O9>3lUs2Wy*#OG%@Z3Q{CFF>` z1O{6QN?K`rQPO^&pX;yxwBPx3_rErGzUY6S;d9gRr%i8Z_Q$3AU$@ig=JG$bciLa{ zzt8abL*4%(mUE^Wc#xoJ2NXEThllT{r~bt-oh0cjO%{Xc1{a&a+QdCT4Z_q(Ij>(b zVDu$`&G9Tgje4U=Ji8_Y1#zW4PL=KES)P%>NDMte) zf+09+nkM82W5uR5MC%BH+PLTd6c@ln{V8M(G+-sM$!RFox=h#s1O98u2h)}o4kz;l-maI--(%9IP3q_b13+XWq9Vvl#4!#DWK3y%5L+`;;@s8ebZCC1!&=lWMZS() zgfc*?}JgJg)IURn<@XSd1njmUClDh$a( zoR0gxcpRlMUX@G(gjnNTji9<8Ntt^Xbr|V`IbUDzY|$yy`Wl~DOwKWhAVxg|#77qM zA^Cb%=&UsRnBrg_P#DbC^Tqs?gl}97U+?d|u`%CCzR)>}hteC5hfi8Zi&LW07jy1s z{ajc7v&%|_Hm+m;-Q4be(f>cg=f>j?qV;@9JeX^Y|4z5P^=14&!{=j-zxY)Iw}R#S zzxLMl_HJhUyZFB^`@hfd`9tmhkkc?OWqJ~iQ_|QL6Z>* zj)<8?oZ|O{)2ByJVm_UTR*x605H}!+c${*CzIl9{noy|F{M1#a8qjl@MrQ70owdk5 z+7cw+5|RkdUcS7PjUHX?TA&}ps6T@KVdPD{coitX)?%-DBx{e#SM}eS!eTo7Y+)7_5*W| z1@=r7NS23={m#5gM||0#E!P}miQVlQ_fiT9jn2_& zld{=#JF>yOr?2ba{+)b$fiqh_UP{o{9Ln;1(m)v5n_MLXqWf0Kc}wbJ@QLKyQpsIv z(PQe%Ghf^oq7VUK0#4=_NOne4@cMxsxVi8*^|WEai)1@-?LHKaG&!#a?v5Reie5+- z7R4Ut*BjN6&Jb30LIK0;dt6)8jh(H6ZiHV*HjS0Kv9q;uH+Ht_YzL~;jaNlfe^iy| zQd752$De*>lzm6-I(*ZHhM_ z62TrF-eFfU0TCUafhvpp2iXUaY8&GLRBOEyMRV!jLoA@3U`&0*=sj~~#_pOpc}A)) zV3n-al4&E$%g&0Mul3=oX|uoJZt`jJzFzB37Z`GVD)~i4Pek+d*XR2Y-PL$U7dQF* z;)y7&N@YEFenOt!T2X6F&yxOVDER{tydvS zaHS9R^8k%-J*=RU1{GqZ=^DlPBk8Vm(@=S{JJ;=Yt#nR-f?B9=76T=%vm7ofl{eNA zoi{m&D5f8-r6R25l6wOsf5Wo5j>F*PnL*8l?<+0S1Fo;mG(WOVQAh&04ye0+Jzb!A zz128~7%jx+>R>r))fUkqU&`ZkNnO^nYbGy&DK3IT4Bg+@SL4nLsu}D+`P-TDMa6Li z9r{IanKecA!n(@h=o61S30U1azQtJxFjHUIJX=;DR`HLr6k2gEYaZEBrVBihzKm#f zgbHdQbXP$uFLjoXgc4`DHH+E^D<~(fTFJMP>mz=LPKCEMWd}>lOwp&0cf9S#1UHpggiV@-mR zXdRHw=J`IO&22s!xB7i!ToCi1GKtG5dSj>(NtuP)jv-$#el4B^a?P>tt{e7rOrO3J zTep6l+_D#2&F#Tv^xwZu{#!yeNU>SC*ep|Q9xgWbi`BxVY8ha+!o_Z7iv1cc_NytD zk&1M47d=PrA3ZocL=yF*A29QBhY~&Y$(80}H~B7GQety>&GZAIPrU;APVs;L`t@da z`rlYfP&3jndt;6Cbm88A^l?w_bK~>BQwbfI6z77t#`*7Vr~T#p|8smk=J>m>{xR^9 z^WUAF?X3TAx4qlm{&N2N89slY`(KW|R9>!um)CCEOQ&PJ{H0R9QT{Yma@?`0gXJBa z@|kJ*`K9H2dVQY zr&5eh^UReXIZKrLQGSBIVRQ?RS>KKZx6C;>Ud+Sh@tw4OtEDlvfZb6b-guwUy>&oQ zDj_^-%$(Y_Krx#>ES+SPz(-*9SPB2k)igpWWO|+GF_?ifRXOBdb82sIBDg^W{q#pfe!8J z3&giD^WHiXV8lAzEk*D((5W=xeIne8YC$-Beep0=m>7p`;C9JAX>oAJ>qXLnowOCW z`spAT<4^}@HO}N0rvtnF9JJ~-L(2yrqExtY!8D)_sIE}GJwWGg%^A7QxiEmkLDov+2Y0r8bcPdB--jj)A@1+IAydX3+2c`#ue=^Y z^+5E%MnPRD?Scj2Nkc-RrJ!Ya6N){UhvPJLwYlVE^+-T{!NH|%Rm?I%F~G#`Tf{v9 zN`h8=M8p`arD#(wMqu7$F-D6Fwa({;S<^*NoJDMASi+L>eP*RcHaTqPTUWv)iM4_Z zV{H_?W*L?*kV%HVIJK7zoR5iQnT`YE=x|OKK7dgtjymMC0|JwBOOrtb{YY?mA~K75 z-~)r^I4m8n7Gzh#I56>S;4c0i4k^Gr1r$n6HcGt5j9|q~LN_x8iOwV}`Jy==y1Uha z7jllrmz-IdLN%Ez*uau;I^Q^pF-bKkB{T2xGnUOcytrK821lG*O{5IPJDT$@}eg_5;7Ituf7;CL_G_ z4asBEv*Xrq$C`mF5b!umDH&fIJSU5bfTYVLbq}%P`xdq_C*RPj>1BdnOe_7n#S$c;(0*i}vus6yd{rjKjGngtM~IsB?6a zEF&j*b3mo0^LWg+_Mkr|zjnE7;8vYRDg+QQk?MT(MnLGq@tQ+|6TA`8V2%cXnQfZ% z(#tp9F+azDht`oRc#`vk{|K{uQ;usln=4HC?C}ZC{(E}%gE~XA|DMK2XNouGJVPR= zfE^P`sMu0#YqAY8M3M~(@X+ZfP05bRS?bdhw$hV5`-E(GEd$_33UdH_#yPZEX(H6) z$>sa_k_(;&lyeRiE6bl00BSk8V)O|bTsxM{h{kI}hRZt*($tbYLy%tFsHN6<(Etl_ zWx}!2C z%>E)sIx@Li%AFQb&Nw)H6vAPUJ;Oj5k3qxb;{WIPtoM3Ph;{JSu(Q8qeVQ2VgL`OmfMt?fPxHNcIdOvG_AbDzo@tk6e zx3jUGng#+(V>2x$3A=Ciu-xnz@jkgVGZNWo$t-*2xTXin7Bp%g zz=nQ~qB#lXPE1Pl1kwP`8fp-g2DYO+A&5P+j-&b z3tAsjv%IG8ymINnczCE~Qh|juT0N??(`2)ovgBlTn!Lws(X^!t_Trut4+eT`Nw-c! zYl`Ytvt!*UK5mF=lf_zTHsLKOzeVEp0^CV@NYg0^&BBdAV>y7Aq8Nu(%Yy1=nY8nQ zcd=%ad-<_Cz?(j5qzYADb{`85U!Ir%R-FbrqUAO+%ju?7s)jOWm|b$vpfSlz7FdYw z>9*>Ev5B$Xe3T^82Z62367r;Oz`BEOY|@19H9J%(mD#5*QD99at;T{*lG|b0g+F*7 z-5_|+P(Y?C3hSs)KM1wG3Us2v?R&ljr^E*H#3;eHqltI8423)P%pTj}17TW#usDP}Z z!;B{ICA-dWeVRZl-dII`sq935rY^^vQ4o1M(`w8Y_4Hwe9AbD-yc>en#{+$#61J@7 z0Qb;ChJq4jdg9G;GapdYWT%9Ypl)OL51bb{M_r?>lNRKw>KRhlv`(L9PJIl_a1qF_ zVYGNP>ePZ;M02NJrQE}WrgFbJvrDU2Xsoy9jn49OlrdV%2$@%Y%&;LO~SQZ1~ z8vY;KJDo4_-#*9Zql`cNcm4Rk?Vavs_WploXScii#sA|oeEvZ9|It`nc=?~U^2c%i z(%gckOQ12}l1wP60NvRDeAHEH4DxHv%-L&m14?fkPo19#K=B+ztV4#nS5IFtGW{~o zk)q%kRsBayG~ue{0j+C$n@~h6Sl>uVaEYcQX(~D8ZZ`7Q%AG3?juxp#G1Hd9{yyR@ zkPFCnOi92fLL7(Og9;|HnxtF+-os46`P(lpR017B#K$h+9;X?BU9B|%sodDvHdq5D zbmoE#>v{t`J;x26+^ENw65%W5pZv?EZmeox==ku$CAm&M{#?afzXdv6t49i+*y(H=f=n@jIhQHNx7k z4IvlV5OScIpUuCcQybb0la@xi0=C8EFZtt88K-Aq0L@<&ulYAheH2KQMm>1~>Y|xA zTnJA~T8}ryWq?9C--~RKBXo8@268raCCtV$Tjr%xmV*$Bh(4w-VkLkhZwg9 z&W2+vzG-9|csU!L66{U%!P(x~-Md?pY+KaKq#3UvklJB`&JM3Hk=%^@j6N2>`ioy$pi6 zqgK>!L*nZFUdlxJw&V5K@KFf>xgNd*g1c}S=r~I zrqhW5h2Lql#r2RER`c2%klP|((UO_A{^RJ`(+BWi`~cdho9w@O?Y0?!wHV={q}PX& z(Hx=F4eUmMc(`Lp28w#v3wj3KCih13;xPBTr1z*3dW1Yoe?c`d1JgM&TSZD`q&MD} zr5cK9=}k8CV-_V~HG`3;?IsEU?Kx7u-VZwl+EKzb6HmP_G4%Fv6c0h~e;;ECLRRwy zih(eLJ>(2S!lmvyA1d>G+Uwfni)$Fb7*#sd+X#C>>P=H?d2~DST=Xa2>$Oy@t7c?b zlXTvuDMPo_ol^BskW<8!M|^Netz^_HB6YXs6vZmqZdWu@q~kqLK@{?1cSqRCTC?Wz zKhj2yx7j*^njDDv9G_^TK zAw~%1Hhm+eAH}tB0oZ8o_p=IK*t8D)xBFR>3gvgf<3CA#Yw2 z>>lGDvbP}&qj=KAfJTaN_nrIo=qpIO7?jIt?9 z&%h_{69Jk#do*Y(cb+p+x&@{HKCZckVn)_V6oT>wITnL&K#spPd9 zZh7<*!U3LrMWf>`K{X8No<4hdz`l>UYQVRHky&=q1uC9%w)T$ZtU1okg&HpC1cl;A zlhYUjOh}qy(KOFT(?#lZsaBXnc*}8H?FJNkp>|%(T&!f@4iQ{sUT26VXO2M&@2@1M zuoUw`YwgR}Oy=8frXQ&_j* z?!HmdKEBIl9EU@q3`^D2SdHX(fW2X&ah%#z)huY~yo5I~61xQTThy~Ax8{*Vq_ZT2 zU6*V#gj6tE{$9o@J}q0a8M$B9Y%h0&iD0l?MJB)-kW>tF9w*5={LW@EwEv<#Q|=(9 zwkW)|z!BQIZSN%_>nF;lrm-gXMCx)u`s->R%w|P(i9k~Kzy=~E6JN%I5_pG4@xa4Dcqli1uh%~T?2lAjT=8G~9oHf_s23)i<> zA8wJG(yi}rae@&qWd*^~UB{jRVI37E036d6W*}WX7q<}(_kdI#qZ11UUl}h>aagIW zi5_={5^#HixtR3X_ZA_YE#|238JA=+Up`IV8&-B156u%wz7Y@9MH8+o)-YFBU2FK( zRCX5|zL7^C5Z`@ta~)0KA9G0tnCsOfxxgJ&GB|kl$PNq8AAh3R5*MKbPTjwH&;AoK&`LS%-82Iq1a^9yj#3KJnG7DC&MDB3eGv6Ad#97I z7%6;xZDD7tRB#V6MR{u3PMNp|mZKO)Uf`z_5pA^cv1rcoj3W>hBSQfG32_l_&}SnI zKM>PVND7J#1yCKdL>kxe7WpVe(S#-}j!*-{#`DBMYcx@};JK7Jf>mQ|(J*5S<@Po2 zNn3hz{V8?;yMA_f+_r%nQi8izQ+w0p{@apeC-cxo0|f&m{t+OkAn zb{-?cl)=zM6rzqX8>wP4WH0VpE|oI3Z?lO7Dl~< z&kblAJ`gg9iu6q0>Tueoh9i)07EOj6N6Cw|AY(Oi(n_;hWsf{{mEsrX%KMcapLWzUJGcowYj0C8K2bqs9_=LDrcz7{FVCWlAG@br)chZ%>v z2mP9!IaY3z(96d@K<_E8^A8w$JbNweyx9--V9=T*@7Y|;7q-162dKl7>W{+#W}+7l zKb9c!L}Wb&q(Ajg-+FUv*)pko3y)SFgA3zd)S&RM$uSJ>YVuy3K z660;zG#z1zqxqBrj@jUlt>|&Wj$QF&)CcAmPv5un^bZ+SKe-fGZiu_tY%ep$U2`6N znKgk~b7Nf!O~uCid+(l-Q8pf=V{*JpP{`-#yEmR51B>J7iK%QtNKWTm{A@NIEc%#M zLN&!Ebn^2XO;YlsH}&yIwrB>et@UO}{LYT;GP|y?oqSR|hSn*Hl!}$Lin760dWB0U zwZ4YOyiGadWptlUQ*u46^8o>#qBbPLEFBjB1R`@?XRWHq*@ZjX*^hdQV?5NR@SpZX z`Rl>{*K*^-aMe9JBh`pB?K_VDj_0iY+@Ng1XRq-Pm`;L$vbU~o?MJtMxYdNOKj7CZ z_{t}J8L0?7G#KIa6PLchoXDR^=P6a2aGDFYi@df@r{;KavEd0!^ht5CL<#^Q=GZE9=9F7G zqB^fHe9-mBu>VeDp0CPm0F?ke) zu{DLhFD~?hE%aI!a@2#30-;*W&-=>z#5y~eAYtTm@^v4WmoaB%4IJlXCbuK0qJ(o) zRS#K;hk<&lP9B&h`hJM&SMJ!-E(GT6Qr(V2H-HplTC?ML!C|FZN+LYfjod+H;gR>c zJ@b`7#@~DcSkGsd62cAVdHvS@ExEpmXT|Y+K1-wD?qP8EBZHI(GtwM%UK^Y#_a~Pe z8RgZB$1OQY=i?Y?6WGE(L8q?Z9Rjl`%0CYn@`BZcnO2@v1?6M-(xKT?@JS_YX*^g|#&6n2YZmX!E|e4&ijk zqlx&(_eZC6lXadPC+y)dnnc~sMh_$kWrO6N;)OfYQMo%qi@H*`%+*x_dgK zl#`5;a!Kw@uZb((C>Jv>{^0g)Ze!-|WJoOUQ_Q7{ak0kODh2u#4|+*v;$P{&3j`QF zc{~Do#hmFOri@|sYUddS{FzZ~&i{J7@iyN0`~8jo+}ybP=63yc>&_ehQRCbHZnUCb zPDZeVlfQ#Fs-2#a;~w7cB=8)ZYlLdv{5__Ccpbd~soz4~>&`8k$RSc$X zPc0@N0bYfMQDySUt_s&e#evl(6s`2$%*8FLY^#AiV3!*gzeUjx{DqTUv=hr=PG_Mh zZaC0#v3-JN96JUd-?#fBgBH# z%YD%m48u0?4eSe{Tx8J0N3-}nKFT7_NWH-luqJXP(rG3F>&iMO(qfaD89mt?m`r$r zF+4}=Z_uFd_qX^RTB+aKyoKqgdpOT}`0dtR5GC?1&c6G*dv`zk?mus-EzBsT1@;IR z*c@6SQ+sZ+7U81$>xBN!=?Cwo!gH!rlhBlnhWQH|JQ3#b>6&II?uQN&7-2W z9IX7CNZ+>0oCZqr^ij%p36H-ndH~fcTlhDv5VJsmMeMS-!6HCQW^Cg2?e(<~&`kV# zlz6v{p8nMq0KhOlaRZ-w&&!*%_&Z$++)U63Vw$#6)@}ZT?~LXeU<80U)xfqEfH=A#%x6Gh2G*K4UW(D|8x7ooH28ifncz z>>@wHIlxZ%WDKS_38Yj=s%cIsNF``zi`tK*bE2}NdC-2UQGI7z_M2AvHX}A(k#f-x zRM>(4kZvEwoL?Juu^^t42-FKg2s95^tA@CJ<|cR-IA`w8YBKnb(q!l#rN0#DNuD}` zW(+c6H07R!Rkq<_L*KFxdi%3OUF=Hfsk%gzy;SA}SP~}BTH-^r&dkT56=)YxtJQKD zk*`$dQsPZ@GiwN?IfcTtjzEM8`l^@L-MTyNXn<(QpK#bjI;Js8xGa%eVsz%(5rzde zH_>dg6uFY7?k(|Q7+DFi0!(te#D(V%Y~Kr9-ZK3j4K6sL4tImt*A5xy+3AU8AC=#I zDF22D8F84$wDkaQ&|%67R#57-UnjK&CYx!ma|q*oQxbPIF4S?4)ku)hqv!`CDmdZQ z=(e#62rl;`yoB3&v6v*%95oQ3_Qv_TD0$q*3<@aomK{AkB4I0g#v0wvsKMSf8d<2- zqSu!jYi0&v4tHN6RuSGv`gsz}38M*<3I~t1KC+-qF41(ACVyK{95ZVUGyZL83@Z^; zbvKx@r_vT8SP(6ne=@X8gFQbfX*S1~R`v37w*@=d$Ttg)J04qY=9YOlVRf(2$D^OOer$7);T=+;QhyoV4G-9fW8k zhYzuS-C9)_GmxV^LWxLcx!`Nkud%`cumh>W`1agseDRnr*>xpqIZu)6GFNPmr~VRb>)9GaCSvu=7*C9`FgP+X+(FNA8U8)yqd4d&s%g z;b4HEQTb?^Tj5-jgbbazOg8QxJvcnHX<=V532+OVZj4gN<%o(u>gpMX7)v1`%LsFN zaY2s9^K|M^;1CC`byZndNJ!ughG(efnI**ZGFG6nr^AMbS(ztIeFZO^NrJ!MR^MCd zyE9erZmN%i)DN2@)Vu$5?>4jV?y{-kA06i6%ctP;G2_3ym7~vW7?|?-FPpnN?QHy? zZo9p+{U!d(XZZZF;=kDY+s;bhHtC{&+jx3T)p1)L-p);Xf5qr+g*Upj4I;mR9!-qD z*!o)F+@0*%d?eqhx{-#m_i5L;f6pGsTOfE)Pls`)&~NvE$WN`i0G__hXGgLon`Svg zi+%z-qqYUAj{GUMDOuG>CB|xO3K}}&kbC&Z7{sK>d*lPgVH(4GUHFJez-@TpGjUW_ zJKsv1U%UUc$N0*O?=1PUM`lFd5CB8N{m6XF?w$?Eh99TE*ez_J0`Zj~GXW5x-j2Ti zo`QKaqB~KC-v69j(7(_6bNZJEEnx_RStTYhOe_rWjd`fVUQKa4d}k42Y{h9U*g=ZA z&;Cx73=tK-!IZKV(YT@>DBdHS%94!Q=c8D%4U=Ps4*SgEV*YBZQ#R-`PbXHqIlhVD z<$@g%Q*pqPHRM`3_O*uXtLzN+%|2!WO|z4`Yj)DOXT}Y)?~OqAu_->n{)%fty3ZlB z*QDF~(SL3Hd;N8L>8-;;wkuWxU>`S;iC>+tWdhmYR;dqd)PALbqYl!1UqFpyoD*#zjM%}o#)s0Po) z4+PH-4S`zfgu%)jcf`;z?U(`CH;z4-V+QsNkduhYhYk$M^cGbNL6Zp<_;W%kH8L5rbleCfPv zdhE<)Y%jst)xv4m{3 zI2kN-+a&V|@P#RA(kf#ZGh;L`9cfGRZEk)yK*MQ&4lEp|BFXR7s8~e9-CLFV?K-n2 z{{Bb`#ORwk59@D?m$R^}RXU0)C87U@S8p;@5Y*yg~wUBpc| z2t?9$20(Rk-W76s#AH%lt@}LTPegVJ!VotJhxb8~zSV``J4y+3-sF{U&Qai4=923c zmcz(#gLR4S9Mi=H%wm|@D;4Am9}PywBV6Aw^$7WgtZU|Cr66?rnUl0FS?pM`-o&My z-1WGDR^TvF^_PWlh}?V>Z(L2!rXxzWU{5p9PRK3L>Ac(nA+_Bi!%%d0TY13__~f+C zVqyO&xFAn=Ls~L=9(eSHy~)%rZTR{&tuO6TvZJW-&ZiR*-}3W7wC5Zi9`bgW^m=;R zhqO`L>EMbQn)jcQ)LHF-a&cZnLnPlLTDbXKG{m-!d_%v}k1CN*pU?y|vTL*?&5lTVL!ypW*Yz zvj2qQ|Az7~+vvZUK)~&tYexp=WXdXrpmK>ZHYiEwBk6)|fJ#osONoq9wTou}E{ies zG2(-E+2CMpIvPD2Cs7Ybu`!=+;J>CR@vfi?ax;Q*NpAHfy#!`~g3VWA5@1uBDKs#Q zF{tnC*rX!j%?pOA6bCt-_{rp?I-u0Y|6LnSr?sfoi)Zxr@3sGq?)?zqQ+R~G3*C~m z6Hz!u;?wCovFUo4Le8*Z^EspY{Uko^jgA-7MGBofjc4ynB@UT8v>sHrpIf9& zN95yKdvuJyV+V!Q*U1Gh<#u??YsjnK~b1hAsPk4$> zPc|O~yXwf*2hu7@F_s}R8*X-NqVWduP_b5_|8LHWm^zLs^_~GrYWpGlr?t#t;_|G z&xbKH91;ezrYP{_Yd_-|GPzY9sE#k|5~@IznGYY2oa;0QoVL=Vzji!v^V#riLx-&q zyEY7lANfX5|JA$af>6G(}^}s?@7ksi!MVDps24O0$ZUX1db6Vx_sRbY8L2xvn&(Cj)n9q=p4af5N0ERk# zoDAo6bA!z$m#;BHvt{pxsB5fJ?gV1)N>ID$Zu^ zCuc!oRW>uLQR-29+Cr&^0$yeZgIrtA8)`f*JYo}>-%rto8ygc$8L2yEr0#g6-n$$3 z`h#S6|HlUp4<2O*-_eBctW5aMeuoL)-uVcWM+5c}x_8Rx-l;yXQ6wz zwDk$o-;saEbdhE4t6Q3W?M;oD7Qd4K9YXSVMdDl1cRQB$v_?LOFL0TJmd|lbyXJVj z;tkTWG0Bby4+gpb@{)u7pr!9zBiY_*9i}$#aD8SC(;ne=%+sZmljbYaZpYBBz0(ky zu!AZfrnC^yP6YRcMUNHfuXwFR`qC;%4;Htq4k6o1%nXSsu<+!5plW~!Y{3;DsXsZF zC<~QMtS#qDb|{M|$L^DqP^8~b0GSBQEcDF=9X(SWI1$~?dR6-M=Gl`{o41U zF#S*qX6UJ5O5a@W74wpZvzEz%W8NYo)WV4hOpy<@g24Hvz*Q{}INH2?T?@rIHgDh5 zbQo0qrfJ@Ikx|Xt?`pw#13Ji?A=>`e=Red;jHo%Msg{Iw(D&?&rm1Bg8k(9$bs_W2lu_vD zV(Rh77=s^2cn2w^obQ~gjBnCnC-(v=E# zmnnj3r13OBStG$7-34mCQbp%rHWDPg;dJeC{xjf<_n3r}?;9cGv`nTyzGcjpwR4dv z%ev)|#T)$7c`M>rtO#&%W==(D^_X*JGFkK_Yh8@V6`2clKs~fPpx5y(k^e}^dO_Ut zR<;iFnq}1i3f>EKSG8po%#W${Lf6A;Pwbpqb8I~>4I0j8-A9~#@}c+VqX8YEhue2fLbdFYL=4}EB$TX)J8o`1@I@3!!x_I1*heT6tVE|UHlG}HTh&|e{6npI3y7=k z+6OSVyx?E)$u$SH>o&5E?F!V+D+}C&T~wQjxHG+MnhX1MS3jlHq9{!ybSDQh&tPF% zsk^Uo6@6}R-%v~H1lQJ?%i8(Pe|e&#Q4|LErCE0Pq5v;NfT2V?;TCPAlb^LT%HBNn zcNT#aIPl6iXm_$z1(|pK`j&s|+ zM;N&t+1DP&=R5SxH?||$;Ih;i-D7{ERO;nKDUs04ebv)uj@iEXFOStMDeRO8Q^LLu z5<*4fT!{`gs#}f>^A-TAILKBxzINx83@GToEAAzPvNpu&XHG+3gr*MgoLV z7?5<1f5~2~^gg?gP^j?!+-bC;YI#9IEZG%OEDF0FpYUG^;eY!rLwFr}*Lj#MC$-*V zT!Y%;H1x=-P|6-)LKB$8&X{N$HQ|AEFX|oBQ86d1hfuS9XqUz-NZ^uI;l`3^fZ>n3Lr!T+$S< z_X&f;Agdnih0qQe!#)uyoWv97Z5y+%E$(&DEAX|ni)WUEW(}`M zLRcw;gx$^`j)b)8twh3wERMc_JdD6hi&p z2!z+A4K&4+@O)!d!0X<4NhejwPZie!#D)$Hsn(BS{*g0)Vj3wa{3s}t^U3wpyv&j>3IbsLA^CYQK*b%#ThA66M+Z+wCdj)sIVI( zFEN3Hg<1y;&J=;4FK`1}47+@QGs0mg&sG{>77$YP4>7=k^|0|tM;aZJ&y(4ZB5jby z%lF7owA42mCU|-)fSEr>KQeoS8!6-yR^*Mw?v!;7kE1Top~C>>(xGh)=R({VO;XH; zK#`UJ7-;sR7!Q~EOd(BJ*|%fqYx^QJP~o4%6H(zKj3|H7dKy2iyR$c7?s!fRGgqL&P z;LF~Bd}aD2sn=vA=Qm?c3oyj9a*3wyoIjvJ-J>S1wCSRMV!Ru0b;_h{tEWj4@r2#q zH$e9HUjmdz1f=0&%#mkApM$*lP|V@FYuj}|(GL4zbDhFU3dBj~(6yPIo+mbrRvuF~ z5}CHmavS@(=gbvtJXM}zFzXoa*HS_l%CV5!ri>F8s}7o(PiJ`j9a%Ym$fE`Af5h7_ z#XB2+Tad#Il=oc`w?Xd!8=~jWK)-X0b@$f=x}7*8=#++Lt4mD4wu||XaKqOf2aFp{r?=F-~0Ms=>Kp0{qf&B=z+F07R+k#UIxj02GX@wu{b9f zF_#BmKA`J?cYk0KnK>i22s%bJCB^;NI&8kRZ$hzU$;p_#!PnPLwYUDM_SSF6(Jpzf zI=?#ch{Vc*70WA{E&eos~f>ru^)6M?CVN8?Zc3On;7P3fo;nWD8KW zgMo`*szESK0o>OPq%^`0#DOe%Z?INZ=j4%DV-7i?%S7@%qZ3GSdN#kbNpMCu0T!s$ z;3{|tSj=bWSqz2I!5)uUpEx&WPK5{T)K8qtt7(BU}@*b0>C|rbM;;(^q z|DMdIJQR!z2e(Q6Wk=s-#5;N%a@RUor%^qjs6e$3SGDLojcVWjP;01W^_bWse=;}O z@1^H?W}>=>>O~yAk1y@o&go$&a2p5maNI>U3cj)^R|VFjNfK~qrj{B&9riEJ)=t}NNQ@uq~37DT^D+rArztt2R5TD2R5Smw^CJKJET}F-^hy(S1PCr zLU(~uMkZqtU-OsuKDocrb_T8-ycnkmP)>WpCecp7BzQ;#D+{%LD zFTsGB+1@+l$)mupz^uPgIG$gDU4O0B*!?JJ>EXMl2h)Z0OLPDrx|r)3pm7oYQ`&&_ZdD@$fL#=24 zb>_epND|Pnlcyl|>uLpQ2p!xFar%jO$C&Vx@z?ka4T`Y3Vyu2B!^%}J!HE{KBP_)3*HR2qmlDjvIVaj*X!!My#4{h>5%AhTYV8jE( z%lnwalzfnS-U$X}eud`gy`%=Lv%3j$y-S3YEy4~a>Us~o79Y1Dj{d#y0u*z%vUB8Q zwI)Y1sc6XBjJ)aU(&2igrz-KPbx#k8X*d7!(GhOdFq}>}RKbx6ETQ6LxiDGT7zHLm z!RkS=bW1A*$HIYw<$NlRl%ziUF|o|P+bqiJKC5hx1rDyX3t1nnVhi*Wn~N750B0Cq zzF=KfqHN4KzL&`w4m>uVpUkF<;}h4T?=df!3&>Sd-zDk>$LzY;9a0Yi0|w<9%5f|Z z#7aVC1uC0dRIY{z2^MO}iyrmsthk^TG0LPl3l)?oQC&1H zsP#CRbUWgAguU8mH|}ihn?M<+x;bvUPhjXoo(QIsaD64= z`ZoKr`|+#%_<_Zp?+lYY_U2agV$DuU!L^zXznzyf)_RH7Vk{n4L$P#Xnr65`1`^R2FfN9KUr?RH^3 zJb*8(w^3Yg!&S_0Vf>kGNkDYEb$kl}D}wpD+2N#Murn^*N^J_-=|X0}CQ7YH_LJ8|N~GTT8x#JaR{1E@3!< z#OnGMg^MLz&~KxrudYY?8xsj+>#E^#7slb0;3m#Mz}tWS(2~OGb5DD*7>D3BB_1>8 zOIKHJ=(lWcq{Z2QuFxkfYl*`w8~`-bZ*R+m4ND6g$O#WODWy8^CD#w*8Ha!f)Pgmanv- zo{sg<<;vV`EZQeVtV0MwF<$x_OiwxUtl$TfJB{BZ#;^tRXdd^*ta^{o{72^OmRwU| zZKb?5lO2LZlTD}aglus_yo|urROfE7@usAivOY1*2~1i43c6R??A3Y@Wn~Gm1N4=B zY-64nW=S=8d4xMt{wmr~0Ui>0w#cv{&mB#{b$kcL8NQvv28Gf3_-1w_U1bJePyu_;xR@h5+Clujq1yK zs;oG8CLma7ASz9_TOV>3M$b^vBa;f*eE#V|+rzq{K-{(tm6 zbN;`zv)TTa?N8iy`uq<+|G(k*%V|ro?&>&H>f9nTnfg zJUd>TiXX~=-8Zb?0tZ!~0Xd;PEVo|69oKMl;SRy;Lwka95rH~KWEp~@{^6=2P@H=4 z4cDg5eMt8Ot@;q^q9%A{oikK9@y+;P)fS9bj3nYRKqJ}Vxlkg|m50j363qroZ1{#d z1irjxBRVmb#?j8IQJk=5l=gv-@df(1m{d*BML?Z)=mtmpL2jqBQ3~A0o5;Wx#Ka*W zdhY*!|4$9WbD}Af|V#AhpTS5xt<^PmJ`ru`X= zD)FlLx|B0^lYg2#gHxJ1?6t%wAnqwWx;XRxTe`6E` zsI`w(o3ia8cDFT^BT}k7n=D4&IM`YxgD4o(zCQo@d_Vg7ywsB`1plDYmPFJU8k;PuH+tAys>9FNbZqk)T_d2;vKf;cRC=!QnXJ_Z4ujhUBJ;^D6c7=4K|^o=oogfgprW3 zuUHH{}S7^Y+#WXG9IWp{V z73hDo3iIW2gU=21|55t(c-n4vN_PND^#Ar&yOY=dx4-EBpW~C!|2vz%JN^H7y5C!j zK=^zGoYrc05z1}$+>>_dMMbLb@2zLgry`!KZzN4iNg9iu%E zia~GE5h;2sqf^uyno)S=!)xPq)yqV5kSo^wo-OL5^Z{v-Xw0UBIgD}(&AiWsvbr`} zu25YZh~#A1tN+b6eiPn_vAU2A^)Adkbh?!7R$l3y?a@_(?w$ymN=NdD)<|1#-sY&=f*TR~qzl1ENva~)k2Gb#O}hwh_%t~>v6 zcyNHN9mLC9=%l~#~6J&i({_lQ~|DWTNwg2D!-N}Dz z|2Hh>E;1VXe@sT+A!lf3vzjv^p3SEm2f|+brfe|OoQ`c^FTz{J()z*^`-@_3DzFiK zOaYN7^|cu6rBU1NSq6LW6ryCN*$dY6Z`?yX8^?&zMaR^@mEguXN< zAwQxNNEH1sN``{ndIa5nXvf1v@W+e_Zk*&wsDb9C>G)|XjPN|3+ssbDsD{92@m!)3 zjK~Z&CF44cagX7(*4KO>Vsj<%FXHzKKLL+q-(bIuflDUg_l1Jsv5^wE*xcqnoAOx{ z#+dd&%S}>F4zf7K@W`oYZ$8Bo#1h#XP1y8uko3p#EU{CBr^cGAjNak~-V<{%vjC*M zxLE*|^BjyO{qe%&;J~Rd>SHDtIXB^|oZ_8tgT`lceRV|f0X-}+VLbUHq#`@Zxgb(o52l%)z1!?Ck?JWAw6 z^hw7Xia2+) z7QKxzUN}b{NbDj=$ll|ZAwyJ#CMB;2P@XE7Cg3dfh-4A^`dZ?QCY1-w0s3oxuyZ-DAO^CmIThjB<>&Pq`D$*OlfgrW(a2~a;;%~DDp2G!p<7Sr z;tH)>a7K=*)SrfV&4%^wcrU_(X3=PWsV=6@Bq=$ILN!*D8bqUiihBjK7(G&Lo; zE{g^9SJJ{yG+CSpwyMp6Yh(6>b}o2l2jAsZM0zcX17*jZ*qnf)l*VdA5=PCpZ|#K3 z^0{+Km%27cfw>Idb9dp10Ww?{t5%wlY6Zu1oP#Y^XG6i zDbNP;Gi_O2K-NM_6 zO~$%LQ^<;z+f{(cP?f;TlK)v6WCoPpihS%N1%TED0rTs@6EWdm{>gUGxfBbVJ z|NrgX&D~u5$DM9x_ly1iGkkvU_Wx4zIay?_5C2*%y`1#TzjtETH;no#xb~-g0aLa3 z^o*lUt`sj7Z^`Q%e z8MI4dH+WA>AK4H)BUco;eXzDr>CLaRFh!Bw^IFt98ue#C( z!7Y3q4qKKv&`;^d!r2T!;qlI5V^|{uWjJU(ZkrN$fRa$z14khb3(;bL!d@+@p9gGM zEk}HLz65ZHg6Z>d+)qx(m)7L=E~Oytlmd{1AIlg~+;4}JUTM$*A$f`RvwEW?mA`{` z`3#1`x@WI3OFOaLdWgB^C+_~u(oc?5Fy})+iGoWBzcT%KDu!m0o3jD9-}v-1W%CV? z7|Me8k89GR1^{ywXnC+klw~33tW;?btQCp@gsnKtVQt=M=sAR)U=7T45vjSk&d--& zZH03HvM)Y!4fwAM$I+DtOn$z@l=1~7j8f5zW)!lq5$0=AnI(D>cCMZ_F@oiA5E3pl zQ_*TteqL(f7eF`^Ews)$YwO|k>2!W*4o5YrAFlEXjH88FxkYHOHUI>Q2a>QANr!5K ziU_2LiAUnT+`uvHte3RORmkQ!Xq_%_Fy7VKPo3&&v%0hdnv7seN5}oeEFGOEp618r zOm^+Yh}VRbbm#~vo#|0CYBvlLuO?$ggH6;qFPk_zOOwT5x?!~c=>GFV@pG8t(es4e zY;wLhe2zmWOh#MxeFc;khS42=x&Pwn;nSb?IZ77CsV4*W1%^&{2R@n9l<;_za;PcX z5cI@3>lC)3&c}l@zLuLPS7a3O;t^pAQ>8U9kL!e9BE$bu*)B)vvzUa8_folH+E zbm1uGCL<-|}pCI?TQ1r}?!|J_SpnhHaL{HG79&5`C*O<`HE~VN0F$*O~L3R>rgS zAjX(6Z3TwXo zWVR-js8CkXEKpXzEup_O-O7w2fd3O_$Bl|m!MA9>BW+Y!1XBBerVDki%aj0Bz1ox! zH^q!YJ3#v-iQg%NR)FTF@Xv9IN^&x|5tPFWkZa>|FoCU0Kf(AK*M;JPxGt23k~YzP z$+s>B=h5>CF{=)5WV0I&OI_v#RpPszIlu2C0=f z2%0IAHyL_TBF%vQ#_zCavge5SBV0&HQ|-c3@r;dh6^q1;84o zH{Cs-n%y&n8c>^-QVVMTBSwIe_V24yP`*$q~KVsBL=(!q3ujLfD!f`F1T-j|%>x2P>U@O37r>DiRkCQpVsOJxu2tH=L zzbSl#Q3N0NGL-hLpX9kZKUQDe^9SWca+c72aZHUh%!(X$;D7I4fa5!u3dlR$Gz@N^ zXSWRez7b+<=!w}R{wcY9Kb;No9l8dJ(6KxjvSsb=)RoR4&gWna*R$-#Hq<4vMXYBy>ng*vhIC=F+SR|F4UH3W)sRYPI`HI2X3~jqAy^l)9~aj3MQGs|z=+|{(^eLTs%D<$G|J1#Y;Of%*I`?%$8zyk2$EljN?yC}t_2A|?^WnS}UlLm|;s}x@zFi5?H z#=ZLjK{)`W+4KJ&h9)(?98s9SVli31-7S#wQXdzn(0DoU9wqn)a%p@ks3{H3Zdy)GTD%;5wm2R zz~XOWH_X-UY%qnrB*8>{*y~!BZ@S{|`lmuW|HJot-ek06=PO@U_tK-Q_hT|K?aM6h zuA+T*-6j%9@GS{0T;;J2u*#^P*Knt+Hi1e2-c_9v;$lHYb%ivMHonfidcFCk6;ikD zbX3@`xaFN*f6L3p?f?o^jla%Dq`tWtFIf-)`F5FMyfqXl3cOC`HFWQS!7DcoGS*76g`~FPsl5r#eClL$&Ya+xa=J6 z(;t)Bh6)W0`hVwUHIJV{By?N_J-2TGd`w))v{#O4e>KZb!R50&tZD|D3b3l$PzpFIWIxHYP}PRAqy@B}l!%gR*--414>y@;>p*su zTHT;hWjL;5LGh)dRTm3ds9+_jIQ9qH)|6$@s@N}W#b`AJ4Xt=W%ncRpDM}cus_jBI zR0gX0m8CLJp5wPt*@3lltJtdN*B9pe+H8|d7`xymNnYA5lKEX_gJkQPWPj>eaQjhV z*YSkR9%&^1vhNxHDDs)ccjA3!ew2F$SGfdDxtaB6=^pMG$8KDu%3%tMR}y1J!Uy9K zy0xJw_g^4ELF?uhYKM^y>|m|DzesPszi=@P1L(-$<;4g-E-*c$8S%kv5CmUcc$CPD zRLKkvdV$2q-TQ2~*`2RnNlb+6YuVst6Q<sbom~dm-%Rfpor(N91*_Ror66C5w@u zNmpg<$vQ#OWDP;&IavW@2BOU6Ad=ZRTcm*HJTXQSJ+c^f zq2ri8=Nnm(d*qs44CJ;rFCxGZse5(z=HNI8sue}?-6SPA0EARbRAUf@=Q z@gBok^ML~I5=SW=6u|UhM=TB^i&07k&iZ~v^G{+LVM1G6VGTC2ue=w1gA?=v29)7I zA|H4ox*ytxUNtE|%r|_8`NP#!7GQTZfZaU6hSLUc<I0*%3t++6}G_F zpv-gSpRMkqt~oiy*KuEXAz!W!OR&8qk9)dGmWelbZtqn z7N1Ts-Z@Z};1JftHtl6=c3<9SZvOV&GaoD;`0 zd)CLVPm65IJ?1TJl9uA=yZ=yCxL>-_&899k`8+$Z8bARk6sih^LKU00N^Y@_W?sC0 zT>wI152+m3C|#hVkLh_2+JnT|mIZ}yU}VW^5b z_2ee}I@x=>hrvIMK&zDy^oH<1?jp#KNJH|Y-VGsY%)^pnW27QJ2gz5t!&XqQ2x1}lO3~9OzpIdV5$uP%#jf8EVnIykiFVi4S$T|x`$@K{H12hc zJ3GMnV1@C!wXdHT;T$I`wp0EEP86N)K6q2GFO&e~nDs-U&QC;=QC3&vuV5?Gq43p| z3>8)t^hp?%mQYrA+`!P3`!ed?N76LGd!@gi)@i?=57?e#tZ%$r@Tfc-%5gL^}^pUj4&e8E%p zGTWhxcHmRls;FGB0x|u;**8#CZX4k!lTi)|JzxyDq;Mw{CqugreJbQoNp6X~bDOC}3j)`LLW|ieGj};fVkgZd7uY zeH5-~GE+(h!NGbf3a5hpOdr9sXGExCm=my>0#{@PB})>dkRi4L!{+X2%bk<1+GsS# zmF6F(?eCXEv{4^)2@g<71FtOnnO9i#zNf9=8vt=rz8g$F158D_%I)sp-}^G?KgMV6 zy%w8B$dD7Z%RWF&wySv^!|{%%4XDfp;2Vn2)QtUP=xT{j)L6gvA%}Y^;0jl6z10VJW_{?s>TNzduKxfmrbES(HP))2>#i7`umbGc~Q!E z`>F@LohIMy3RUE{mrq_EC*QB8InRj%%!(DZ^aea?Jw1IH zq>EIj|9CNlq5Y+K731_f0af9y3G?w`sDDqkC7uyd^rVg#Jen!DJ@X7+yE`K18hsXN z9kpz0_*Hs87+KcLtcY5EHEg4$HpIh+kqb`c?7J<}ZBfQJy3FFkKNj=BRe3{Kz@ zj7cp()RU|~!sL1)tJ8jBW?d40KhvN@4^uVI35-o%Fjz&i zf{DHbCMNw)?EKdvR<&dWj~J3aWF3)Q_kch^QCC#dk~8wUFGN1V1EYJ{!pPSs;H#{M z2i7=cJ1vPLZ^gfeHfkq(f^s8rDV)!Q0uRxwV9Jy@ob4SrIB4@{U1#EuBfh=il_}f! z*ORw4#`LT7zYBUbUMAa=`=e0oNH796>Z*)PW}d>{Rz*5rdeX7M>V;$Y6v&}e}xC^ib` zLy!ufAQbF$w>YOlmBlwZo6!MJW0?GtlP;7A7uMQHJ<9JX=9WIDsTea-BWx_{tRC-1 z$->6|g+>E=4}po4@hs!pu~S!4vsqn!c3WuFWObnm+*Wcm%{KBgYoUeGpyk1%FrBdX z#(9Cb1eV-ahRQuJ&oPw=aScOAI{{K+(v+(|AT?RXY+Ytc`K>qsg#&I`K%h{h)X-}z zs@I6|^Dd?ZZ_56qn!;zTDf`oGdU600Ik_o$UF`&-RT)dsvBQ&xlf&Vc1uJp!j^Ori zI7fRtW2cea$NR>}ZhAMm>0PX+2Y(T^puK!T&&SDcjc)46npQDqumE{xtfjMgloThu z7fc4f64Q?W%Tp(mK&F$QHBD)gvb&7wvm^y112PWP7b=s9kHYCupM+K8LKtinHcG7*GeE9kBSf+ z6B|;)SRWypvJ!_A(I5&fWr=oc(1#a_MIcIjX@N>~T_}=NtbDXo44p!j6DokdFuS6< z-ykOe<&DfVl7ewWb||OllLd?motsa%;5_PS(K*y(SDE6dQabT&Uw|jBIHdBFnwpMz zk_}--;86hDQI<0KsA-cl3%K8a04D{88p#rNj2?{GaP0)0OdH)Bj=(<-?26MlxL8k4 z_h=>#$JKI+VGItbbIT*2I<{WyhS-#uO3VhN&S%D%R)X_vaXW*UGdArIWgU4XSZ9-% zsl#lL>U3jRw)n-EgE-VePY&J)*@M*T+L}z{;#PeZQtJMd!UYu9y{Z&6(D|^U-N~E$ zt!0a2po$Z?rlSALwM{npT1#0TT3v0bqAWaHlL$69VWXe5=j5B0}qU*dt~Y1DKnpY2&Yc%a09EM zUBK@r&Y{ZJof}Q@SZFwebEV(3rpzck+>Y^O2`_tK-QMSrPWYecR5z+?U zXXo^$gwZX3FreR+ki?&%vdKLxHLHx9(@Z=H$SA`iTsCzmZC00mv1g%1VG#XgVFlNqR-4wWKV~`?Dy|QgENc3 z0W0Ovd2@^{*VpPXcC8+>VQs6&*lYC=fErjm>>M)A*vhOP&CL`JHa2mJvpWeM;Xp4M zZ_rHPTeZziIL=HFJLh%G6n^5`;8I7LDJth4p}-0@XFN_qe z?_??fzY=HUtJ8<@Bm;j_e1PL`H$T7uQul zXV=2sT3z7dI7Q``>2={-5dRtPtc5e4w?E*N}L;^5)nd#ulz3%cIFX9dx3wmss5aSS3N~D z$wlOYPZwG!)9hnMr=D(du`dZw_gpiHObfkg4FKQwb$cD7y3C89`Mp_WifBwl9?cgn#3;x>stM-C?4`Z*)!5I*uXUhOs!zH{Fgy)Mnqdq+Dt0#If zK2s-e4w-JNJQW=Rb+`osn4bj@m=wz)lvd7L#0ELx&-Z1A1m1elOGANSyq*;4P>h{A z>*DCI`VG}h{ggc< zqv`WP+Y22w>#ylY9t8H2`OFRP^4JIdtj>P!w&T1K!}ne4tDb3E|1SNIbjNrZ=dqhO zKt(*EK{k6nIHUJS?z1-_68#Me*&FHEn^gwS-gb8=HVMVgkr|ZH04#&(FxmJ_KCO;C)|zv804!BFdSQVU8)GVB?=) zJ{lFhtYR7zI?kVmv?`o~=6(gfWPnMrzIbaa9|o#=^eB*@re+u<2NsU*An4!P4T8~i zWJ*)ZN6H$Q`)JXq9X&jW-X|&rn_Mx}59$48zTl{a_^%jgpRqDf5k+OOoGX=_S|l4- zrK9ikSY&*ajY@2KPT;PU2urcAE$BWEf2Ec}o+8X6qG!7qdEx79xWG$Or_|ka@?EBv zUOBm*ndDkQtr)yMf>>2O`GVD<1&tJ%6DoBSOQ%NdsF8`_U~Q17pimk`IfWW^DhTw< zAy9?>ZVYWIiBXF(rQaWnxG?EbzPR&<0!qbLE&~d_Qusbs69Qb~xWym^lwBDkj#p8G zR+nf2;60x>??*wZZx*i0KtnG08cVj z_E}zIg_tDXS(@XxWfU?(#12eL5yk@4BCCeF)iTe{{TXHrICfguKvr2R$fIslzzpG) z%9}xVUIrRP75@Ce?GeUUCk)-;$9mwxf|||Kk0PlHk9~;xmT(EBu=m~1 z;;Z2b^E|$j_TpEZ=2jnlulp< z?_H1m4_^_?F6keDBOea;fHg0INJeeyy*~fvB1uj%mm??7fcuV=|ajN12 z8=svpiKC24KA9LehEZIs`IOdqyTiAv*JYSy!fUkfc-8lgMsbRgA*f1gzZLbrXwi98 z87j1DYd+5Oy)jX|v1AOYQq%~-o_`wG6@)3gT2#^IF24BQP(#r6<&-|kK)+1L+|n}P z!ihxAP9 zihL^bD>r7BywEx7>6N78BJVI%!+U{c2P>#E!e2pitQ;cNDj%a(WnWP*bZyk|1XJ)0 z@A~d~|K_=M3-^bl6SYs`o&lMSyWBjG@6+owQtuUAB6UZ+n>itWLHkji_KN00zHHJt zncX0cuaWV~$Ja{8L22uqdGhAyt#e!?ucyz&J<&(&4pQE|0`~wP?ZX|uC$B-sGc2yR zr;~xVufyuTHn6|=NpG%%;))AJ9y>l(GS+uMTKOH2^v~P@Y2|%~B!&FLD)|1$X@YRxe zCo13NddGi#1?Eam%}Gx)qQwc9j$U2a@7rEOU8WmVf(~i6ZOysT7*uKi8f&UFALb?6 zfG+WkB%;wzcZ6X>jTT6+d=JSppZ9%E%xcAS(DW$+bcJ?4uGG#$H5zH>bv5&GwPqfy zqG{%wCaaY5plKpByt%$zf#~cWO$frg1zTPu@@=4c8Zb?Up>Sr_@*~YxhrtVjv3aW( zj^wg1+BIGRJ5R!zTfb_(zxBP$TG#MZ$LQsMAJvA@tJycFmOuX# zUx_nzjaQSVzmYtX;>UdpTvxUsNLCyCxNmh9Ji~IKQ10P`VZ>eMF@B)6nS}lvPC7Xm zZ(N+jPQNenxk&6JSt@-b^)$p&-8#ZOhM!c$8efDEz(p5!J=GDQA(tayS|0&K5o7B_ z-;AwFzmXaW*!E%J7yGcVT(>B-^k@&~)G3KH-?#dK1d8-eVJP^AZtt^ViL%bz2%7I=Enb4CYy(_HuM&2A)gU3DP>)*=J< zFUC=oC?BjQmrLBt<+W@0G%c@H z1EbLB@&tCub>{~XP!@HkRAR947$eoh;4g<6n|D6_8L-V^;Twj#L8AObJ z!I!s0pm0~;D!`%DvZi3Jqcsn+@JdWAOeIKeqiEjbabW5{4ouzS!1Q`KL~Kw!;P;YI z>cO-H^}yTT^*zK+8!}{mhu~$%p?GCA?)qa-rDwVWtmyLddArd>W2dK;H%?!d@UeE~Z38c)jG*P-nP;*~n|nRQoaM{QhRqYg3f&-Jb_PG6Rc zH9{%A^yq#yWGjD^Uj6Q*(1a`R@$+zr3k2^Y#P}JkK$`Br#=m)#z(5DrR}EAiDST3D zX+41sv~=F^b>D6q^d%8k#0Bw$NC>@%utQD47sG#|uy~@~AdV->oZ%(@6ENCMp5fL_ zF7kO^-4NdG{q%U0GjuTRFH6Tv0W5L0kaeg@4Hpkzzd$G1yjH)|x{pc>8X;pMTmlsUwfc?T0d<-y%_j&lW4@)pVM;J_Gu&uSsi}%S%w)mK3lY||_ z7Uy_>xSY(Uv*ieLpzs;=^w_2XyEqaUmC$MFzdS1I0K}a-XyBi`#wWuKfU5-pTCdj= zcyQ6D@}dwXWUB*gzEN2L{9GsKz%gyE(VuvdBUR$R? zn$!2A(exuzOBQ)LI!43$K7QxHwC2YN{01jD8u1aUTyzyk(DTsM{yXgSD;I0*v+~sK zs%3^&bUeE1=&3jV*HZjn#+94K|Gj(v-u=67{NMZcxAA{3;di6s{|?6(`*)l!-eU}4 z_B}QhupO#*laYh@Fk`ASmN%`81}tmO=IQA;Z5kICH3=072+od{!<#4)r{NhLYkB={ z@)J8?VzPjw6{y;qAAPU`HW zyqqu}EZ;OFUrRUt1krVw0k4CB+ogr~%1 z;tj1S7OJ7n?vAaFyk{C5Q_W^?oVsrT=WI7Y0sBTf4Vo*<1sgQ>++>wzXqhn(z+r{f z2v3L(teLRzcp&|ET678*NH;lw)D$ix(3mM?b&uiYP4O1(8ZO*+*PR26U2(ge8Z`d| z1TgD)bVqKC6PTB|9%nFHVSEeH!oJ=ZbtX7Sykn;lWr~|=0ZR!iAdwyV#6Q1I4yCrW ziwc)OK0nkvexLO}U_e;NG>I%Dot!7cvnW#rzPD$G2qqXNIA6-2F`-K0(6Wn;pCACH zfWAdm@P-V-3^m8e9u65#fB9sEJ)UI!bXj0fTfhiAYwbDcRs&>Mr5^cZMZt|;0u?4T zkU$zOioW5|}5Lc?^#{`c0cSOJLH$6tR9dOr~m=8sGUQ#Nflis7uG1Heo^U=<+C$GpdZyvnlV{bDgIj=%Zl zl;L=J(qqUZCf}cq7~>yi^FosuMX}6^Zywyed%qW$lfbk+Bjd;mM=ZhFFiZ(8l*Qf> zxM&CliUH0=*;Uw~bhIq;RmRQ$r~>dmIWJ6fZV1wyF}f$Mrq1Ng_frr!;y-w-y}zh`0?zQi4m}JHn{G0 z`kwfEGVkGg7EaG2OeI^qIcBqfWzEt#gTu~;=%6h((wq%^U^U6VK0MYNEoU=qq#L<7 zrnqyLL5aA>b_1AeR|@EmYl{NCu`Um^-4hZDGrorE21xCf=m5~P z2GqrjcLTzH4naoeAto>9Tf))=gPp6|-9%uak`3ZBxC>0nEcw3&9^oMbEz#i}#=zqa zL|u?wfG9F6s?~cWS5G%FB0rhIZPu`}_m=_SQm%`^oy>Y*nKf(gOWKgAM%#V7K-C^3 z1tn^B)57rv! z+OpMXtqWIuD}C0|l?%wr5w8ZiHTjzBfeio?uE15aUt8j8+r}?)b2?$^4>UD4s}HVH z4%1Uaen*=){JpG0+=gv*$ECt&s8E1Nc2Fm&{Nwu!-gRnELJ2WIo;WEoJ5NUW2RapN zK*TAVCvw>b`h};b9}BTV_(oV!2LMS}vqd*pk>6%|RyZs$%thxLKrjS7A17YazsM&D zo6nxD=>+i4;Qw8}&wr7g>DB)H)1)k&S-hmx(bxsweoUX4;l23p317ip*=FW&I=@?m zaxc$kAz{eMe#f%kePyuWXKcs+jso&vALQjMXC#O|WU~SZ@OSy)_kv4CMo8BFpA~Or zOmITk?{?Ym#hc%$4C4P9l>WQiLJW`WFIg~Cd*IVrwEw#xe$XLjYRBq*lR+=1{B_*8H;$ub2=U0cG7Rkm9+i~A58G?7nAP2>|W zkqa1~E-VB2JCSQhRF>2>{op9j5+fVXpe5{jcT@PHi((e|PMj`Ml^=`mKzV{Wg#uSr zWx&Lwy~NMJ!owc~OPnDJmi7yQ{Vh9NYyd1M$Tt8Do1!=Q_L+fP=||>sAnx=X9B}MvE*%-RuN{{^Y+ed5|8lG;f9!vbhU# zc_@o;gARLg!&}9;sfIndNv&ca{2>qfq?HA3!clU*LXW4PAhr>Db1Lb{W{Gpo(a#tD zH67a3dsq#wfXxDS;$RC*hhKRUJW&{tj=9*LX+Z3l`!OGlpp0z-c#5igcQL*6FrOC$ zqUYCJ%>nH0(khM6j|&dj6eb`2uXL|eJWjK6c7_>ABv5v1);rVi*@$VD&xdRllRNA{ zv(K29#)sIs3a+#Z2@BZPDj#G6ts?}1sO-Pb8CHbHnKd5P6%N{Q9MTjPzs3T2*hpBj zfBZ8$2X_iX+FDE3nvL6m8xp!^#eh$YNBlY+oSd`ybv`6~rWM`b;VV}Pt|2M_Yi~Zh zmH9MnH9$XjmGtuIVz+F-T9!N?6ez5mgd7>oev*Csg{Dt=^tu%TQ1sIQY74#QioxX! z2~s#Z-@1k5tNp3Up+I{MW}bIT(Fw}qI4_vsW!r@vp|#yxNY{9n`1kX9^5*ctTb@i= zq&4J4Z;ru2JtSp87+i5w9pHZ5z!PdKmmqgl`4wJu6dC6xtRI=3`Xl3D@>zsoakTt6Gd*m zFwFHK`Y3tlZOs)Yr!EuNU;C8V7D2v>?d5kT2bVwg}l}t-8JEstGMr8;cDLRvQWtZ-@dSNuUu8 z_~ZK1;NwZ4HVu?^YtTS65zwaAt*dnq+SbI7d|IEBm%gpoLs!6vT4D(PWHPPu12f;+ z4d&b46eJsF+9iFqyhK(4tt(h351~}zD=vj;>j-l~PuyU#_GL3}9bxuE?JK~Sf6XdU z79YlBO{95zg{s=|m^IGt_j<4%HAn9Q-Z7heSNxm<~fmiXPbv1sr87O!+B%$yV)Km@zlk zv6C#Fl(SQeSq>59*moYnT$tt5?-44$|$r(3BdJpa#!>clN=iNhQyD`EXg8<&3K z4O>}sv(YCRJ80JBgz}-sK+=Zgn`Wj{ntUG5zW$xkUcsYHaB_K#QwP@`|rE#>x1q4?@RdE@4vsjX79god;<)ylg(3pBQE~918kKI@ySbg zRF^z`^8B~RC*!rAh}V3>-NLJE%pU3U$bf>{o)`EmChl#ValN6e=bAoYzql&7xG+yc z8n|2Pp1_3`?I_@ahuA%y%L?u&@Et4s%83~>aJ}yA5tUthGe{*D-X36$-j8{nj&168 z8-WK@;eZ~@^QY)Z5n<a}-~Lfw;Tws zBVQl&FiD3LwF7B3wYQ;YR<;){n@ZG%6mV4|d*qYkdye={NTiJESh;A|K4Y55I zA|N*6Bcid*O!yYsAV=X@;_LdNcsJ6u;!Z9sMlJ*8OyUAF%j0>S$iCy_bTX`2T|Os5 znpN^9(R(ezaVuHXi3xEHt03D$Bz4h)8S zAg?o+1}@5h!Ehhtbq3Rd6LZVzT8x`>Jom2a+3YlQUNdiuZ$G1~5H%c^%bEmSl*^jL zIwOZ*Tqo@h_vt`)M0Vi0RVrZOb{pv4%MMJp%2jEplr_~SRk5VLRHfvmagSo^$s*At zB#SK9no3zD;6=+KPX}$wA~B|RxSD`go2!Y2&P$DraW$T->>BZkQahH+3+1(AiP8pk zEa_cXZGDnssAqlBngy*-qD~#_lLj~5`sDAZb?cKhww6pg8pQgh9j&op+EG-sDbtSV z;l}JV?m*++XS}TbF5?ZW_n7Ft)(%sRf=@(jub|4^rC>(yEpI1n?<_U0cJ`HmS9@2f zriR~=pq~xxD4CDwhU_Pi-pOl}grX)kNoW^ilH_TtYFQ+Co3KIBbPbHKM{f|Igw52M-@Q z`5zuUytnoLxrE=1&i@eWyaNeiF2{QZo>#JwVMZzn_^y7GRFguL^D0^lV6BQ4#g^C8 z!x^f2dXO%?q6k=IRumy(cum{?ny37<{A70}+>tp(Js|?GBkz|)9eE9<56+o@EavtA zRm_bB8m=5P8KwLdTb1(bZc#;@hOFe_3MoRl6MaY>5Ehq_ua*~1Jd#fnjRo#2r(kf$ zolZvQ+zz!u?>ZB zdt3pAaJ;)u$TO#UEqUe@J3)|9(kvEa4N2w^I39pCq*xrl8WKzej`6KkC+qT)Ygua0kwd$~L8+0h+?7>t}u;aBiO`xqX^!Pe35Yk;kz;jhmid8c&_0Bf*Gu^=@L29eB?L#}f)@Uu+X8I_B~-AqF6 z`wiE=g!foXxf{WJbfA&ySC|C}?6tsv1gKK>GxoG-f%%kyU4!-b!LG@8{6N=aJAR-o zGM%x*bo^bm$a2P2eXY-M{BYM}H=;(>*k7cxr<29}yoL#d(m7Tv0NOIWQSqHqw{0&# zvuFiw&=zWgw;ag4;JI0~9DEJ^vQ)t=hwj%gP2;u)Hf`riKF@@iyCgk+PQ>g(>;nl$E z&ma+a64eT7HgZs?)8sTSn3BB5@4bJ3UCs{TGFo#%sMOG$4Cm7^Tkd)K(T>gz5Fpxr zS`^cMj!|6rT2QdIEbYI?)T~&GXD?*!`=fNum+6~t0LcF@c{WNHOja`pFXwDPaA{6O zzrE*2U^W*TTX9}2vavc)7dpfOqUWdVRFY-ATP1Q=qDRLWvVIEM@Icu}qc) z1mVwe%uy$2LJ{~O`6A$^&jfQO=?r3&O?jrd>1dU)I)e-X!DW;F`F`^8ea@zhxfdlp z(!Llori9`CMLhf>gP3EBY;+FbWc+Nle;}yW3E*m;Ln=F51L<&}Rv<}7(@7@K_}|ly z5N6vlHV`%dFKhyAM`d$%?1AwO^5HP=FGmYNKmpWuo(!fKM+}FW6YAd6EQxH9h%H)~8&6RGCeEp0oY^2amA^i>_t~ z1HN;TLbx+PAtDoZZ#r4@G{V?ZolQB}?BUF^VGbW9EwKMdApm(g0^SCZ_c9EJ!fA3J z0A|YP9VT6H-*1DsmIYuG7h(!&2ob-d)9IX%%J`T@1|b%cf8|BKAZts1RCI=eE|ik1 zB5x_9Fp@tvJI%8SqOu&&^?lG@(ChHWuj<`HkaEge&a6xb? zQWJ*RjJx(s&0=S=z1Vcm%;cG5VNmqfi0Gkoxe1 zsY#!LuN33BJ94pD{YD1f-) zttgMqgoq%Y%oy(Bujz6D{|rD89G`N{@?<^+dQgDl5~M>WM-5EV3InkSB#Sxew6AYu zM*GW2G0XapE(h}Xh@FOEYqR-~$zKRnY7FE2Igf^$V?tQ$OUYUpD;L>{fJaePGj}ko zfxyMSLL&P&NDeMB6s7!z!W&5BK5{JRvy4(FeYOuL6x@$#<98O*JMiCQ0Jd|`6T3&` zMbZX#EawCGL=93cK2j&bz~!6sEJ}yd#l0{Sec{UG z^gYN?Rogdj@!Z!FUv_nI;Q=o&Sk(jN-4f@AeJ&hfmm`1s@@A4>(6bC$r}#k*2LsW>z@e)uol0HL2zYE4vG<}7&)z# zb?#P4)*!(eI}|R9tS~3m`*AcqNk_=zS#`5JAwcjU)33ZIzDiyr_iq^09y4TXEr5XC zYxY20nMucQr#D(%@J#0~mon}(=O&!DNZpjePp|@|;a28^lg|kkCqhB)(my)gqyx7o z3}BZl%fDuLQ_t52kMwh*C3dzZJ)D0oO!0YgPV$!24SDV#rnsu8bxtXDUXFpq87SaK zq>E2UvpmH$lyuRFRcIKNwba_?gFjS~D)H*r#&S!sjhwC=a<&IX{gCSu#(RmhO#h`H$A!bo{r%<=U z6QHQ$M{;PKICgg!aggi#qXaAAA2iTk=2NB+6{L=`F~NU@jzysOUvG|qc~EnD&hl2q zR%f-Ooan;qPrE8kh~N6@Ip0tOQEd2Pk5Zs>kVb3qsM2~Asnwykjruq!+PW#S=mF%9 z(_d+a!Mu(WvEAUWm&1;R00yGFk4<139;;ieTUyVMyiLY=$DJoQAk1yS85us%WNd=t zRA1Ph!Iy4XbLf7D&9oP_0+H-ODh{#CVcef(BmXelC%wKip{vD_-0 zUtqoEcmz2-b|{dKG{<$aM)D7J0!A)m>^?KxqQ6OcYR2BT+C3!^BD zT%1n30XR=64a+Ta@bG-sCLCS$jHMkR1#h`M$5PNPj^cYzYVZJ;j_zP87(l)z!;uN? zQ)S3;F&dpKsW0uy`W&RLJDthAAZ$j0DfRfH8@5>7=C2I>cE5X&d{S#D9@MC|J<)cL zrW!#yA`_0YGQypS(+?nH4?52OBU18m%eofkvmm zGWg^G*}N0}Db$5H8aM9%9aF-{hjVIk;OKi40#1Rw*1*5dQN~>aqt+VT@pEpdA8`y` zXQ|=58(wKVUN-@61R$_96nSFl8H$H-cCob&?f4T?LFB>B6iM(rn)JeiC!Y0dA4c3F zv{Q5Ao^e6=fhpC+J_E?O z0S5P`WEI}hHUL`p)p}lF2ox@!oDseP_XRdYD(DIkPYN*{PmGO2dZ)3KFe~vbPtW^_ zfVpdFymBi^)g?mfl_zZP5Iow8p}cTD!M)6wY5?bCMf(!b7>31)z=BBDR}@?m^$I^s zrz0dG)cUQp2antiy4!Z)lwdS`4jeH;5yaTt@t6Xmu-D;ShWdqSJwiO%UgL@?- zd~h!`Le(s~6^>A}i*5C~3>(Yf#GdKch;R0~Y-Y>gAfM?otI=#UO&1~T524UM$|uw1 z$tVkq659n<0NfI35HGQm7-?F8xP~cy;#X>< ztqOS1F7HbS8>APUV7d5;ru31wG-!5((Q%&KwvY$!2qpv23HS$Xd03}_NqPBBiF(Gy zH|bJb;%61&yjBdtoKcnF zte*d8WB=b#dRoLdfB#n_|L=Qu9~^G|zc1mp-umPJmOFp{SC#)aTk*qtj{i6NzpelG zCH!tc{zvKm4aBCLzf<8{M&H2_J%@zQ*ehNNCJUfW<>3wW2qKU(-Q_02uLgZi(YF`8 zd?$DhS1f1f3Jyk!5mh%_&e8jI$&USLA@1y7Weaq7mHtfRB+3p?`E*$%Q|w`SQuLQ| z@bY_~u5$8^MuafjO)@adq;&H;PT7V7&t&k2`IycJ1?3-J}$yyNX7?#{zRz=6|z zc4y8sK{(k%&nY-Ri}b`tI3WDzUF9R2b5Gv_CXOiNC+%c88G)q;FuG7T=X(f%kg^Ae z7NGw9{jWbi|M|ybq$6{%>FGQp?X(XBf*Fa?TqOORPtJ*+V5yMEzAq5L`ia@>gbElum9*TB#ocaKh9rI#_7Cx zpN{mX>^?FXrGMmX083HdFsBhZ0G@V+msMffEA}5q`c2w95OBs9id(qupmXEEa5@&= zbLm3s7aXt2uWSJ3FGeNvEL{i}WDX6f6?JoL z^LL`nJJ<{K{LkZa#|pW#9ZrdYCV^SWa*nrtz@A&Ec-9$w3a$+;#SJo-3 zy=S(8uyNSVd%u;q4t_m^L2v%a`D;>RsBj(edOmuGCW?1%$D&iXIefRAkN9ZOM^10# zn!FNPtN_kbH~=26Z?1&8! z_Wzpvf0nP!{|^t3j_mV4a);T-w%lEwxBV9cSC~#B+pefK zZ%bJK9)s2XY*8ulXotM(Q*|-z{4Dp4JTPsnEqccYrLj#5tc{}6TqaG-`Px@dN-wyC z7Tj7u%a(T?xMfSf4%}+8XtWJ`)g)uDUOhAi$!RUHg4Cilpi(Ykg@3NlgIrFcw=dO( ze5@q0@m()3iEMnYgqc+8e)oNB#6Vd|;|D%Q65IG8U*E7Gd%<7t%cZ3cHN+V;*mGLe z-%SEioLmcyJSg3&Bph!KugSAw;W;FQ+Rv%QJMEle!g{rsXX!YfoEp$dVHKi@4y>55 zxn|yx1%Oct@5rdgJG63Oo}mSWdxU`JAcB%ILRz{j?+VOX9Fo&k1YzhM)dgRhZd7MY zyNV{OCI@TTS8b|m$}4*DMCqZ3x}BBNtdHdC_E1+U$M8TWHA9trF6Dy~TDh36;C~!S zxwI~4dlANyd)3@7Mt1vooQ>9U5$;x5K2>Ef@ll`u+ff0y=K&;F}I z36zUB+)~|82|utL=rL8Q2NEQ6YNGCuFa(g~pYgvKk`U zX}ebjufEjrz>gE#^(Kt#P$is!kN|f;h`&HMmo{%(G=X@u~tQt8YNeu2-y z?yMX9TWsEkBI2Nh7f=$A{Y8r$qN%AlavAEv0>s@ zorgdTjZZwlh`s)iFFXPO%dBh_MmFzsxiNcy;j$u@THbUFvUd>aGX%H9l2>8KtJv3G ztKK@?s29xx*0_Q5^;?r)G`;uob={P=w8H*-Yw@8bMoHfwn({1j8P*y?eg5W9;9C9H z9^hGT2-(r-#8kZu6N0rCl@ZN8J>~)X4?HzX;9(CiV89w5c9dK?=9LwTY~VY~`R9ezh4vDEEUY{f2B(NYNh{CTa*FRLp|1;&CxY(VZY81f z8&rP>S!sN*f~UcXv!D&gNc$Y)p+ePzlhl(`$2qAGJR;Xps$WMV2^{^(cE=j(pWR#R zE^2thC{uGQcbm~?b9~m>l}!({WyhGP-Mcnd@73SsEv;z{ZqWG16h5)UaE%83Np^=# zxJ#2WQm|iQ3$aI(X0p4Enp7dbYaL1ID68eFZ?yzhpvsRmbrk&a<3gPDj`8@Z6x(rl z`nFPN*Ek$RN$qOCs=vj_>zEVYL2U)zT#=H^Vl7>~dT%zY77DE?`#rnoX1ae<484L> zYB45!s8@}arxWLZ5Kx{=bs7TZQB=z{)LOG`gZW!nuZ^U36ew#H4RG5w6)W-IR35fM z&oRuX4oOFerZREqrRz$;aj*l>j`?d&LGzoPs3BWpO<=@cO=zdQ`YUFB?R^Sdk7fBfxl ze~WNdV=c)hg6?rLuHy$YyJJQjSt#CojNpMNuhz8@5>RkSY@t$7I8Pw7eK+NguT zMo>KjE99aTfF*qr0-*dT3xaxAhO?)XAUyi2fL9NJdqSa@W8>uT$j$F~EE+#dG(BM6 zgs1}<*$6Rsn0FGXVGdk8Ny{NK9-Gp!C$gdgv64w{b0hpc>~t>@L? z+2hf>avcvIU%$~?cr7;;PtURYy>(RAU=Gb)<^uiJ;Uukg-hk~i^BVH>-Hb;yvxj&G zP@kc-iu;<}Zw*&9-`pFp%64>~p2Jt;eYV!qg6dt3L})_M4nlWhbfNg`mU|KEP>spn zk5q{wuS*_8YDDpYS)w(fi1YKqXk{qMl=rttO(=4*n>YN*pb7yrHcx0P+`5D=!p^S$#_cZSZ>|cd*v`27$tpuMA~d?Pd#Yk zD%*oTKpwkF2_SJ|@j+@Di_!-x=soF$<+wMMfpjoe4w6t;xd>|*1AL1gxnRw0AHGiG z7q{tY(AR5yLTF`cx;}A{MAN_>ue5tw>gZdFwKzrmLF+JrTSOlMkD?ex{G**{j!`L< z?#1(pYA>++jYJ%L3*E;0#^%(oDF$u#gnE6nv-dpXXf7z%M_@hog*ceC+!*Q)b3^OU zYdXm$w$Zo|)pB#V1p0_^d#Ft!?YKWMFvy_G1%$6kO&;O{u@?co8P)oGi)R>3aZ>Yy z8;0XvBKzTptEV8O2Iu9N*)=*d2Qga<9SyZ9f5$cP*B&+2Kf1R?myt*KNZPE{agO4t zvjx{p{*E||BY%Y&+{_PPuM%>7+6na($H$stq9zXuK;eN_D>>L$L@f`%X~4g#=hcXN z1@Kt|4GlO~pwoI-Ym4&g^Q<;#Fp^(I(P0#~ilf99comH;j2v%y?Ti2}qbi46pIQR_ z)JY#u7YRXQW;wI+1A9K1Ef+POs^?H&yms}2e7RhNVEWk?)~|pW4m(!P5(DrakMeBd z&xzoL*T?#v2=6vv*g)Al9x$G8<~rbrW%u|rtx2)HT13*+py}_r2}w14&g>sReFAK5 zNe+yl5xKU+t$J$`cU!}7w?e%X1nclo+Y6>b;70P&c+ZtsP8#><_iiK`jW$W&tI0=W z9yr(HpOpX~LS-zjKcYX+`;sd>h^Fq-(ljp{yLsh-mRq^q zfilv}=8s2dQB3^mNEql8n!f9cwjSUwmZL>J8)fi4Ugjh4F>m?~LM+>h1F(PO0l}aC zzD!5O_mjbYr^Wk9F^#ZAEb(_4wtbgQ2Jhap)}CG%0W<1-{66b{c)b{Y8|&u|y%gB= zT_4)MTe8L$c=+!)|08=g^}e*IP>P`CJ4QyFjR1yGsIt@_C<36G~@AET7{6hBo zgzCKijz?(>E@T<>iiHeA|K+^t$YA41=kETb3rK(=&N z@#!Qz8D-zkvq>6At`%Ix44b}7v8_$UC;#aq|M-P9%>eUDfnF0ayv7RvtK(*( zdYv~$)&SNL=WFR;y>>)?^OqpjNb0KvZIWRP)gjPr!;WjK7wr(=Ix0wOOWsgTX$J#q zs4}hapC;-~i1Zo_pq@&!mPyW{y!vX>dXF5nZQe+=YOD9!>Q|c_uC9vK+Je_t*EqPL;mNhZ1L}W4ia*lTES#J z^dyEVCRJpMcOO}EFjKJh?(Bb_zFIIkOXu3fu9Du@SfM6FxW=GA=)W+; zHa4XHDN4uWzw|GBWBMumqfCH$A&poY8%~9kkGXHxph5P#x}$n(!1+U%~91Y5Yf(7KDF(>27Y(ODERw>!Uj6u%xrUE5q+lg~CW)dpE@ zJv+ovDYLBy>p=;-t!oRrU&(UgW&Yg~hFf=BG7MX^R?@aPM5C?8zHn)h!fM1xGXUDV z?6E&G+T-S-(L{Iu^QvqDR9bTe)W~7-ul#cmwWH#nxjS0_TsPjC(g?j!8ivfOsS(D^ zt4*~c67YJHUz2;UiIWefcY@4N&4|mO7ZlI~@yw+dY7B+qJ z1+N_&E_S(F*|^+`!JU~|P(SjA+Oh#ijpHrU+^(@RTzjip@Y>v{RYP54n_B2;Hluad za?K6ee2Hra)Vp<7xRt$0?_S+m8Q*J1x=u(fq zA8}l~{?uU*p<7EYr-WL8DYK=TEOG{H?nYY=@p9fk=7{pa{bgF@i+q(mpSbDq{1?!? z!8-=46!Op6X<7^Ngg2;!{A9X38D;*c^L{aj4N75>PkRlR{OMsC%it1R0ck9WBN@eO^J;@LgASqHF#JvZ25G@Ph;61D(2L#9x zc;7bC$DsBv>3k7Ebx^H_h9;VXxS|cQ9e${KZLX-*#fkh!#Hkqy-_0V>^1P4Iy`w@l88B*9@eLb2p{E2L-%w!?`Myv1IA&8 zMsQuDppK#2Xt)=I)WA4uL5?(ZN6zr4X+Mp!QH^*-v_O}_Sa*s&)m603x8ZCnN$IdI zDTy8;#t=_jKS_jC0$UsTKlzcrf%*TEF5ZU@|7A9S8EaR9iC44K|N5u`Y{A-dDGp{EOY?nbX*P-# zzh+vdjFy5U#ssk-D(Sz#s_!6dWfjyPveVpEbiGhdplTI7CzoOv9#5zki^Ha|uS%D) z5#rk=$zH?NYIp}wI+U7A+*rda9Yn1xl5KC)*r-soH*3tB`1qX~XD7cKzggoor0(v2 zUBPd@Jjp-YSsnEbdI#UE7>P{h-*8$uosQDUX>U3|{YH?*H)so-q@!<6vq?VqW-#ru zYE^w4u-}6R_wc{$XaD!$!M(fxb$IXI-Me>>4iAnF+4rOS_wFD4*TH2VUc|V)5mW%i4 zBI&1-4{1cp3l#XDI06V>TMy`7oJ&WIdkGvZA*;)4SN+&BrrvnbNnb3f@H3v2HGC7~RG`i2=n#r{7!JbY;H|A%)U9B%jj zCH!u{{s#%0h?wmNQ~YrU>5`4{$;;&Dm%k-XpFIDKwejy}rmd{Gp}S&Bqy9n7--$Nw zHsj%DM8o%}A ze>R>i&dY`We^tu=!-ISGZTbJ;!NaZmzl`5j{w!f(s}+v5M)UI+>S zRVPjopo0AZs#^iH;9K1QrO;;2*S=vSJ%U#wE@^Nga8Xcw5QICWLPoB18m=*m9tT}3 z`d{2^qHdC}aR0Bz|4*lY@v19;D*k`O%544r@cx$nU&imc^M8w%GYD*K#AjINjJ1z4 z@E1ah#hqf7_48rgPm0BS$yhw@LA(x7;)63iBlN@qo=Fic)6+=yH+oLye`JrrElCt& zsrb03Rrp?O{=fhGzwe+@pDOL{Krl+&^o0)Rqx`z3SFs^cP*m{4#~TY5&QdSfvntxq zmXmqbpPo+G@X$#>y6?MiGqY&Vscgf3&Uu5Z=4tbT)h5&GYFOZDTwF}N+a5>S{jJCU zWx)S6?LQA3{{Qe`YyY{7-woscE#1t57@^c)BqO*)feT_??<>wHY)A`MixGN)gzl3c zG8w`@v-5~si4Pg(#}JL;f(yt8^}fy`jPr+~9;4oCT{V?%f1CQP$N#yD9r$E0NglER zRq_9ahesCwzkBci$}a-}TmFBo`Txza|5$q=Xah3q#o2+x;|XfwK476P>%WJ^c6%W> z&0q6yxb@yBmQN0F4&7EtN+298*5AH)VXQg7p4L;{H%ay8x_koejgp7?`KvKm3EC|$Zyqg_hi*Qr`bdk3R<07rJx!k)##xXbwp3M&Vk?4yynrrbO22}4n5P28fzO%(yJMkY>lOf zGmliQPYZ!T3>K$&m;*Tvk^G!V}E_X_0X?v91Lm5bx6O zL2QQNqeeeWr_mEQVRha98MQ?B50qsB_$e>k=AkGhtgZ^F>0f{*`=6FJYIzzGSub+& znu3p7+UBTv0SX8``K9hHAvw5^eT;?d#7$ zgBK?W%O`^WTYZAS9f>E1K+`oQ(i6aA_j{cgU3X8W?XSsiJ^SAxXM1Ilj%TGNz>52y zqr-a#j{Wcc*8lfXep~xrTlPP-7lI~0Stah)=QmkhacB9hhTxQK_I&N@%Nq?|oZu{< zNd1SPs%`C;prLNpz(TKTU`=#*1-<5L&|0{Tc@G*u_Vz*OXYpH8{zJ;`s^_0o_kRzM z?m72=5AGjr@Bc32x0U~`$$!`jVbRY@8{PfAI-e}kGu_sWAF6NtsNSC0K)>%36{^nf zzroNoVFL54p?t9FdseFk!WN-KY8#&M+MXlw7tj{Qa?I|<;YNo_saHij4j%; zi(^M#9aI_X+s_~CUjOge?Haz}tn~`j88jNgJ+h(1hR$0)PUnN1X~X%#bOZ3V?5oNW z03ke*$J6SmwgHh=Cef%R5XS4dol!TGz5u9bIUmW^xEG#J2H9D}xts16a;Plk65L8UZ7ReFe3**YMMw#aH;m~^aI1Gf69W&yuG}B%A-i<#;zs_rkN{E5%hvm#On_8dV1<)rw8emE6=>5>u$7hr1z^u@s9O;JsonqA9G*t} z&M5Vb5joh$9--xc(T8p{s8V*HvetS$E&x^|92cv;XSHe&j0>T}>AAk~HnMa6gKV+U`d3TTPDoFOB5a z^#s%4#WUFOL_DmviplD}lGUaJd4^I=JzTb&zXk@ZZ@T*U>y=Nb!I@M8T{Y=7)?G2W zI_x5j0_66oW*I&zh&mDk=^(;ewrbNlDd2e$;P~xI4fdRt^%qP)irb~3kvsddY3}MyR8!3kHC<~qb+zM~vuYtK!?V#eb>3~Mk9FKIWTQPVga+4a8pKGi zjEdRRq=`Vwb!JkRB5KX31$uZsSvbgkLcC5)Q0YKK+aJ@Swu|5%Sz z@J4%H2#q$Fgc!{#N@r7_Rrp%2Gm{3aB7R0Ku?n}t*NrIRwLua-7|k|UO`@otQUg}e z4qd!%P8c<3)dFeA_!(M%DyBv}S;#hfzV`KzsKJXPi1LZlBnE%OHD*zl5Ngb(od9qm z0*e`MOU7lX74uKD+VjI`6j)5bj1KZvF{PR$5o)^DY#PKzt23)M_`~@kD;!FcAM0=k z*=WxTp~3FbAVxBYirLg<6aJR#%%nD>s57H&beAvl*VO(GnU}ta>;v!k9^Mb$|G~d4 z`~SV8qX++Wf1@+!zc1YWzt;Mvv;19l2G;d8^8XwjK6vQf|319CegA(MKl}dY+iQ0J zBkpp5-t?=Sz2O+VM)&09%npRvWMXaw(zonxC!4TgGNp*VaPQNy29oBp`J7>-qBg(V zDXrtbUMg?0oIvy-`j8LPzElLB;syk?r^z4Le0pb;O->i@QPmkF@OX)kot@#KB*`ShlPX}`CN(D?u; zoaLtr(i*dmPXSw?n2gf}jEzEdCTYJv1=ssi00;|CH4>h?kLen44WG_Wmyp*Fb20(I zdA3;2C-7&2%RobXp917P!a37kAZuK27v_<4Xjol2l+KV3VLv%bdc7VlD(YIQ={9+nv)Xw1F9o8KVJWPx->+ zaB#=Q9E}L7+ zcsNT^#p(8wEN7*2_y)D`*q0-t#Xsp_m7`Rhj#lZ(DBDkvv1OVU5@U_PRW!Ih^on71 zSk)4O+)pNMF`e+bf9V6F)#^+bK47U=$ybkX-9IUG5`a#&!qaev zP^T4waPB={Ow$fyR}7NisQi>Kn5y`*Hea1hkqx4t;!Kw3fz`OIfbKF{qJ|e#&Rw$5 z?+Z}BI+87MDOQK#Zw}Ynnv29_Y-0Tv_=8tXSm(5!V=s(u@+(ui7M-qqdGd*X_2~P! z$F|c&1qdRKj#^_*zFc&Fy6Ev1l8&Ol>hpjBazyH%|8>ar3M_m!XR=&u2tXgBbPcJv zW;#;69A+HgFm{h@#2gT3HK;K4WDSkejFHyIwOEY>O{+Lw@p{V%clOZ=C9>V&uE=Wh z8e8GcaT%N5%3)&W(tH}PE)0e@ODB21!&K(ps~KD2#jvv{F#ng|5UK9caFBcZ$yjnh z6YVp79!DOudkKC$+*e>jE`Sd$M!nuRZb`BK4WQEAC`WZR%268|rOt{W%tsE(N90^k zF)n6D5P7%fQb+eYsO1U{STrRmlnN+Vi>(DRB=(*Q?%fe$gx4-pW5k3kb$MJ9i?XL6 z`YsQ1v{JuPznyMvM4HHpQ>UHE&YPUkOQn$5H+KQxu=_-v| ztF{hyMfc@+725YDV^nD7HpyzZ^eN@z?tZejXW`SUmgLe$!mWb-^7 z<$q+-ASFyN37CqwN*=(rQlG-yR9Ce5tfe8U_adDa@6!=~#P{h1lR5b)pJd0$FdY@y zMeiAQ&rrZ---`WjE&Ff(eb)bwPx5l}Z`J#s2M-@O{{Ii|-@UiB|6aoHy8HhJ?Z3tO zq+ey~t!KGy&nnB0O?h&gZ~Etx;k29Jc6rXW3+FKG9IR`fkFDb8li8B-mQG2Pm&*mK zvrpzq)Sy@CJei53FtO}nKbd|2ww+G|!|!!&j|IzOr)$QtSqhpr@#%u8$9d02(k~p?tg8+nm6(-{1ST{KFY5zXR);JZU$H+Y zSvDx3H4ZEw`DVT6#n1VugIL}Hk^F8y83J18j4U!3`gA_X=Gg$=tIYB8yuiB9df3a0 zU$ftrIV-1+mZez~{ybg0V#j)JOJP7ko8VdRbVJM#-otmL=Kwo1b^$6IEB>EHa_2oJ zVc6bdlI7)aSY!(}A*KlC13o3Rxy^dt&t{|Zj$6Cidn!H@fIBn;&F6T6V;DvJX*GbR zpjgubv>DSV+5fMDM_4TbkGF0yyaGiOynkJH*@4g^`DB@Kj0|Usxjw^TZ%Xspl?%kF z2H~>Wy{DsW%y6!+`(>}CJqzqUcFJmn%r+gE9YcED5^1Cq-hl45YMpnuQ8}L3$=fF{uTyWNu;sAW}jdd7V%$H!>HZ^boh;nzcFf&UjF99_%KNs*e-YN(ej$Lp?ZJFlb8PvFh(rDIr(A4!}{x zVqI7rxm5P5FraLRbi=^V>J-18jCcjH$VLrlo#CM5{t8s6#6bt{LvaEPFaaxy$iO2J zThRUFWA@h-9DuS_K3x`U83!5TkK-IvJ5=CM`Qr;tAc&NJV2F~~g2HzjJ|1TxI><>$ zoMbD|W&p+s7*}&8>izKH);dL0h)(_k_XKeFzXTo+S1L*Wyg$mg-bnxi?Vd7K=6x@D zKA{zM%P8(=VH^!`3&eM^ET8pk0qtr{i^w-fKPaWYC5 zVuoB1#xcMyVpA{D5zNy=sfuB;?@VwZp}IuM7W@^E4qNekc~cJ;-*Ahvn&tyS1~3Pv zce9ZdOijmIdd9z});bfN1Eq3qSk@UE5a@wi-5L*+bR^eBCJ2AZCJfL&k^`Op0|iRm zWuTOgUqJ>`w*vNs;^E*s_TRq)2q}26CHwsK*QCo0P>Inh{K%ws-lf$5zWO0MXPj%E z5gp3F01T5;qAPH(%m*1=-Z8017Ka`e*aId!UVvSnSPJX!5qxByl#oFcWsD<%B5|q0 zA+Q22KiCp`xdW@xH8>Vw!jvvZtfu8)z4JfQ(E9Hr3lCWVD*V6h-oNX<|9^OQ8~@`n zemDI5PyhWUT};P$r8&U#{QAh4P^+F_!Jq-;-s9+~;&z(tS{TbBJx%oAGKW`yyF2WA z!33RA#)@`#mXk4=3x5WNfUE>19%Fu>fF|Y-IT9VIpcE_xOr1rA&Zxw{!2pFON>*7{ z$$p$N5igZa5GA1Sn+^t|5oqIYZ@Wm~8c#rpUnF5@-NXZq>pf?=kdtSNUgx%KhldrZ z@tozoQToUEb8Za~T=EPI1Z-qpyR>(d!WLatEg76oQbwfdh^aXvRt2ol=EzXzJ`={} ziayuIOzEnUddOxbk)@E+@jxe251J6h>4(faVmy)QwPs3=%5lC0NXWBKu-qNFBzKjL`7W(F1(Ss&C;TP zgTa)k;{Oku{szK_A6Ibq^ruWhuu~_w4}qr5PP!SmvO;5!G4j;ApFoCmbh!eJjX`B1 z2hO_t2pW8g(A#aY9Q)zWwGHrg8Xki{PORrR8>SQX89FlMCEAmo4{}MR(}VA52UYgX zk{{>O<;?RP9J$~#cqn8&pJaH%HA2mm0oZ{NI-8B>(IXS^uh}d^|0~oj%R!sUCT=XTWSQoPzb{wg<2LRGv+Ydr${TPhi4_1OS`(pey^|P?KETq6fDB$>1l}2w6*%OI%9@sr*tlW!@C&UW;FF(+0WP{q6c}X z4N_r1EUjjZJs|@*tq$0Knf$>o3|sgBpv&)jM%kouqAU(5_H~hu4E5yA!Q15T$-&vT zyw(nhXsXnKVl?jW0BM}OIXr%grhby@ti9;uQE~)p!fF7x!=rCQ&~6=^JsftEuhqB1 zx81-0{h`*$kQLW5=loWSfj5bg}8J(k!zNe74& zCLxi$lzn%Q(dlcCZa3(9gO6~+M+pA|9N_qo!vs12^&kI8?qX|X2u3Y5_d}gq$-}N# zp6PO-vB)?K)& zUX)In#17C__DKIm1cM*)*3$*3!gLnv_qTEpJf2agk6WSBH~h22A+4l3Lgz*G^m9a%@DaJDxztp?h4yS}pwnaDp8O3>R*#|V;08wj!SL06z9%dR=0 z;qvkkJ}+R4iXn>oLeKExNvW|7nyP}VmslPb0B;sL8nGf zJ$|pr^wWiUNkdR=pS>62lsL3312}5m%_B$^>tfvT#}S_IUdMOCCkGB_W8lH#-dF)d zibE$I-OI*kZF=L>0pq@qB4rLJ`D`G}G{Zr!6Q(E)F=PZWO*I<81)Apu(hD@BFS_Rm zT$;?fB~Ahg+)xY;O+j69JLn9R5v2RJd^`r#wV@=p<)OLRUkmp?#HdO;Rn?7o<@ zRX9OCV->(6zMt>|;65t*+|6t{gV(D7Xc7W_#}smbX$JG@Y@RbUgSx!Kqc8N8yqy)lDvXm(|Tp61T@>M=qq7jz?TNcYyzEW}h2R#eanOd3`R?uHF z7dfY00s@DW0(5{Pr^LF&59i=e`DQxcPm-AqFhnh5SfJjqyEB!Y7UJ@%1Gkv^o0GS< z`_dJa-z>qs#B*9>fJR!xP=c8%XA2$j7D) z9V|F^E0^9kY%XtgXq<#7K8d*_jP0;b(15-LX=jBDCgL4VhA~UDX~D4i=yZJBGb&a% zUFdYgb?HKQ?220bVULj$TPuDl=p1x8SwYd5Eqb4O-h!P)QZ`ddsRW&m4Qwyo!l}AH zq?2ji^7Yj%Ng4&}_b)p>EL%n_7z`Zsg#mqEolpX%c6Qb_$%tv&Go}zMZL?R>vCM7y z+XOPatv)8^(Omr4qH0h0`TJ=+9And*dv6!w_2LkG($Pgb5k$+$MVc7YLr=(-&TVpE zt#awp%`|%W)AICYU)4wcAAXj81gkASLFCu0xO??vpP}kc?tzMS^xm;UvhrmE&N;htoHMzH8M&(;mOlJI#>A zBJTmp(cV>bB<0v#5_?{SSB+?VW%}2P*CGTI-h{|;Fj(OCsFqxvHC8wnK|PVf`Px~tvCswtB;N4{p4L>1KQhVPve?3>(|?WS{s?oup&h{AjA3Z||*MEyHU zKX85gnXaZ(SU&lDl~z_h+FSF`BXn{;kZQH^Fb9CWC)1AhX@>*E zz`2&&wDy)tt4X@dyF|LU&_TNQ<7j%4j?meP&2b{$p3~u>qjiJ0L&Dg#w=`9za*>hwZmk5hkJo<#i8aS15 z;hG_q{7Xb#HcG^<@Yyr5D;3N#{BHCFKnHXa`Nq1ilX=Nnm{>1GyTFe%9MJyQfL>2N zOr{?vnkNDTU(|q+>xU6%W(UXLE5z_1oR7U4eR7*HmxGjaVJZEZHY%sBK^$>86Vpg- zpwSxOnRSZ#3o9z*l9^JywnS%>StPpUDuGh6{lYow)=hkHYGB*0rS&M^7_3)L_-hq>Z38+Nz#ys`#44CDzzC`ncpn2J&47 z+b!BQWE>GbBaS|Bx0G8(4$a|Et#22f53+F3)b>EPswQ_8t(<08bBkbA`3MP`XajZ- zvzbJQ%aJ#;`#fHr`^vvlxQBn_?nIuqFgm9e7E-AoGV)u2bL_FlJC?}hgj`gVXRHP4 z33_;{Kr)`VBDmM(GMM%bg9E@i{3v3mp(-Ib0vRl((yEMAC0YdRmA+gDk{!4vW5-|& zz`@NF+#Ttk+ADmx1kwNAHQMX3LmUYj%XM^0495GBoX5j2gol@M?GjHbS!1vZ)Mpd~ z5B`P-e~c@X@&t|gouQcT$J$~EH5r0A9ku&W-{hlUg!@A011Nw)d%kqWzFq$rY;m;% zEwo7=arE!g!+OaQ4EY7%e^?GlXI+5=6mf2ou@yoQRQ|Sh@3Rr3-CO=qshVGbXIpS{ zYrBo#qj-FAt$kM}qsJ8LLY=RS6O&(;wKQ4pPNcyp;`9%*>7I-lwNHz+bXfnMiW~d8 z*jH4c9p?jDqUM&**|_bjw2*KNt<;kYzw`)`m>%veW--FbDSrZwQc3TY-c{%?>RDg@ z)2w*67dp&}^59ukR1ms41ORaG03G;`y1ZE5qxg*Ua(5_pS-C&8fn9^$Nn?)Ln>EH= zetnlzj3Y z$8lA*GH@h=Cm@UD6vo0DniiB;qgQN)Ums$ZtWb2Q?w55<*Ji}m%XIb%Feb-Vb-3QR z)l0VxIVLY-vG{G8NsAgMU&};vbX#o%!WiKzfO*o+EC18Z+`9kQXJr1 z10RkGTp5RptMeiAS@39JT7e3RHk>^(`@;v1sm?U2t;vsx(yz<@`>*3!0=4my#wuv_|Wh)>~ zXy)ju&ZcF|Z3m+fL8pQF8g+ zDAR1E=Up@?-+&D7gC zj{0=iQu1of@oVjEB_4tX;s$~NV%fnk3wTE@GF}Aa1uX=GQ(p5n89-ntZ~)c&iT$rF zFd&e^D4Xy|3Q*68qri$(Ace62#RDjWZa_CDMC=>kFp8R5{QMXjV{>P3ZxDr-Dq!sR zol@Y8>1D(v$(i`oUE3Syofm9`K=RW^yqI#kg$GnE3a|1G?2`wQA`@r8{;~7liO60JOgRK+}-v4bG7s;lpWIb7AH3>RRR>&c@PRmkA`cZD^=JxWPDJ$-BJ$1^^{-xgI zDhyn!TU>2eH}4MD8NBAJ=nVdvT;u9=pa!AGX1E?V4tmfA``TemwKVRAA&inMzh(&F zrl}ITiED$+YoGpAtf6U!uaG_$AGXWBj5zrME+bsEEcX4G5P_LoDkQf3<{_@F+>9FM0Cf{hS^X=K>QT4 z#Y5AcQvcx3CQ4sN9Hdd|qQY}~)-3G}YWVT!_0j-ht_K?!v znpt#LZU$XAUmfm7XU?@Clw{2Xz(>aW^Hp_j+>7YLu%ti(B30m|V;mqox}Us1Kq~Uv zuq_KV)b!mI@b9jrS~Re%)Aaem;ATHh|1XQfxRDD;9*!*!E-5RO9(-Q%3AFv75Y@Fllk)SajNOu8cDm z8dH&Y7wq~`*sGk@tKiooRsP~8iwp5MycB^o7Ytd{H~IgLE&+BTWPn!+NI9?*EeYz# z0x1pbT!PgSfrqm)Q5M7*RffEjv_(6`eu&c}Y}gPdZzjiYIlkE%vM=0sLt?$86*s?Z?ZL=9;kRtbpBPCTbB4fEv^zXZQtaF-+g!w7F=kl4`rL_K($ zbQ`NP^>h?dTh|C6UTas4g4(-Lr6oQ=p3~9BM>3p+u2WhGiOiAPNEPQsHIFTX=4n|8 z{j;$eZ7h;esT-DVA~sm2q{FHe_>e#_!&O>Wbd zL%MSfs9u3r9*RgK-gn5#AtoAr(_u8V*ypQ$I!fp2jfQOsiRYqR570JPr8Q*zH;AU1 z)y|XDmG!7jv!krZx}%IKHb0NUs}IN(yliX%*UDnMmVS1raF zso9i2Ty<)c91%l`j`U4Jd^n6Id+o=%qI zcn+uU7HFyQG70E%3}T!fRz2v~F@dRBsr?=pyVc;Do4?#?mz`G>8q_HzfCjt8*4VYx z73&$hkRpu&_`>6Dgza65MkAP}tnA~IdZEi6jizz-E@)C)1@xZ(J-qU>v~_vdQ;BuU z!mqBHRbkNw;ET3wm0~_58_H~1RV&~Hv$bPw?N~R#j#VYAwx+Bbq@J{}*!8Sg7VC`E zTgs1lP7S{X)9irP(3(|d8}Vo~TT51{5Uypr@~&D)K`L3BFtn}Rs_}wenWZXH$uk&L z6Wf%pU5IH#*`}JYuIH1*-J>X8m19lA+YlRT918z#?-3}0tMQCYtes`4qB&a6)+(l> zwcOZqO*y}|o}+2=FFTfK_)w>j3Vi5Ix3AA`jDqKX?#>Ah0+ZsuYP=mI+KKW(#i~A* zCJJ00CYxBSi+{J+R*h%wVd}2&&|T|v158dl+V-eaZSX(;%l5VL;`Fe2Zs|qT241$8 za#M3d)OpOVH3)8wlIQHDTf}|Pj-R7nw3m`Y{F`>sX^W5ACCHZ40pCOR7G`huu(`MF zIy$aGd+@zquc1L~pRnI>B|d<`MmDUDOV;*wDjuy`hiAT2I&U zTb(y?o?Rl13f}Wn%P-+Hm~FgY*O^AiHI#-X-NF)!3>(PCo~^}Ur?qG6e(VLgZs4VQ zEEXM5SN>StMECZ!`nA0oih8XsSo-#P`qc|)_j$UuI&~y&jYp@deo*R$pPHJDeUjIC zY)bOD_N#OcyR@zQUO~K(hv^On+|bK(zoe=87TrO3g)A>as~_Se3HEFAAl+J)O+P`e z(l;z+yY8!VyH!~Eu6TFelo`a|yb`r)7ku6=fBDX~oJ#|}!sU}^|JnDHr8BYH-3-@T z2MLv$vF(9diWH~e))Du!SCLwF#6{W>bQ<)#)krhqMp)Gj^3Cw=uh}@x_f|2|Ivy*| z)`~D+e5O9QE}x1rfw-O~aX9tD*?Q!buS2;pCE%DFw;q0ITmRgxf9_52&$UF@)*bf- zDJk{Wwx0K`%^+j7mvUD&w@TT`uf7{wLl<0!+1IrOec7J4Wx{tY>r#Z8RNug~^~-Hz zd9T_#H%{RTTC?ggwHPnmP{r05+$*B}hQ4mpT4Q1K;R;=K?SKIPm!JM$dfJipNs~43 z*;hNS857mp-W(_1YRr@!ZFEePI`3qQLE%u0txtfFVeHu zShL36Ag8maYXPe3W1F(X<&&yWl`k;WT+bO;?1mcNzw0{{6`ZzQk2j|kMLQ|W>R~n>a#J>%M))aH{k9yH1Lw)>?W!EXeoC(I zbOgq_Fb7YgpOq7HExd*~djsd@FqhxDH*YW2HsjtL5*xQ{p|SOXzIt6Dat=8?;W{(8A#itR=$hH1vCYnG$+W|@3d4W)?H60UNT z#GrFIfNgz0g%m&kWuMulYP-fN_$3{txcP&gs}tK=&+jDOGe7wraG3cpgmWMHH=*+& zHI7?x!LA&c>i2oo@>0~S(5LmO|JzIKnV8Q3DykETu#;D$TykrqEL;6b8fC4U8eGUd zvvAF>UG;MZ)Kp6wyWmZBZbYmB%9OVdebOdQRXRdoZGFcPjObQ4;;V5c)N{%V z;9w_*&DwQ>TtZ4>mcIpdIOb28eRrn_4`dy|} z?m34|qI#C>Cha)X5)bzs?mg*uHSCU1mi5Td8@&JglzN8+^S`S4An=oQ705uXkEUDh ztlPh0jKyoMw32LM@8%4h&R+?6BAL}IsGckDf2I^A`%Rg}Nx%j3*IRKR!vYkS6mE@4 zMz}&wdTL2C{P5*Z%m+kov@%%#QEj><{ZJIAY6D;LGp;cKj*jnQV?&%ktI5!GjAE7bW&)Hb>vgI+`H5xSjL;H^WJ#Jrw;=raO(Rx^%Cx?po5{I5O98Xk{^kf`4Y z$tSJQmqdtc+$sSp++hD(iO&eyFfK z6m&^HSpJw&%Rg0PK#s`XfGtexw>-s(`oZf*IU|u)+CVUL;rynOl>P^AS6>$S9_ODP zR@c$``&=;kTioB;k5tM?UK*RjA5zG*Z23T;Mvn z$CE$@Yj|kWHCuONmultGI#{D7-K&WHBFqVQD0trXeDr;lMvTtmj`*@P^?sN4+Mjj5 zp6Gr}NDiy}mJMh4^@e&$jio)it%(>GJ*VuudMG!)5^syq1!?5r-)j2>IC}1eE^;(4 zZXMze%osMSQhs1I*A%$4B>oIuM)n`fLaKjY_LyX!!uA8R)9UUD^?RT`@`f6V+t+$N zhb~1Ix_N~_{lDApjZQ;a7FsoH5G}$jFxVw$w>6l<>pw7aU8Tu?3a++TSPM7yF3N5> zD?rLyb?(}ouXYw@F)nTC;+kqDqom?#IiaL}oMQW9$hy_Ow1H_=J0<||W4#w0(Al$d z51(>9aam0w`vN+$lk52Fz*nOs^vJg1{AgWMvTaRwg>^Zifud|pkP|~=L#J(NmBroN zD?|hjj2~KUz_gug z2R7IVR&SfS>~m5n&ws9H1*Crs3&HKeJPB5-mdSdME-RZ@R`paz)X!HQp#Iq{+{lco z+%3k{MNc^?#Z_mj*{|o{MxH+08R~@U9#4WSQyHVlO6#Y7S;~4H|1-qCH-)RRC8Zd# zY-_tz9`b7WV!vsQf4pB=cj%m%IetN(lab-T#t^}>ws7k~-?DDWmvdez8MIl_Oyd}I zYH|+S+I&4G+t>x<=6uv#Lc-lH<3*gU273a!_q$ znq{-f3f4t9Fe`*ssfyp(8$rc2tX^fiG+MuR*fNVAy*c`J)o+rYm<4(OjxZ8GX@S2~ z+|;~hwN=b7L%6@Df9Ay&<*iTk3Q;vEt5=M(Z#7}4D}w2&O$7c7^ig}c@AP6@Qkh1U z<<#zZeMfD;B|lEn z_L=Gpn$>@gOLVVmTg+l@WHrrK!vKa=C0>p({pC6PJsu3wXTv5j!A5ZFaiZpF_>$J%Fr0uYQ+|~9z)?QF+=!ac63$<3#owNw_ zO4P!NwRTB5!4X1x$`2jOH($Y=-^kpd#zoV!KaF+NRU)^4VD;&@xKM$nvwqtGf@Zy5 zb$o471JQKxI$kwV5gSn>mm0TfDXr-_xrZ1~dAe6|JIM`CcXbqAFXL&=-;M1P&SKFj zM_!lu5b&1Y<<_-QQyckf!`T2p1Y~>O(($<71?AnLsB4AiXcNncvBixO)n$XHMS74PBtOi?W z!7ZAH|7pYBH(1&}Q$Fo-SC|F+?O#4ZfPT!cIUhrU-mq*X9V#%88?}x9joG&B8C6Z= zJYmby9k_Un*8MJry*1Gta?Q~8!-DC3ybIb54Q+RT!6PMQ?qDl;`zJ*ngIou6i)25b zJ}}t2)6{kKR6enY+>q%r9()4r_xM9Uj}(kfb()i{7-96X%+q+^QssB84AglXf>fvAjbM zhvno&=jLWT)ODm8L=lRHf{55|^l?1;U2oZX%;>{_7xRK~1eJpFji&kQ$0Whgpbd>^ zon&Y+x`eQ3sKYk&143aB%kHbw^D1QOqxc=Qr`Xy!{l{ zfH5hHOoM(Vj{Rg(NQd*D<@)a}ZipQfzAf6{TkYHHaIvnB3V&HL3p&IsLjQ%w8h5Ls zrMr>HM;`g%$u7-b5PDbfjn#I(rFLHt@d+=m^Og8aUFj-UIE>P3HHmqxQuVO2goVdr zRH=uXrme|Avk<6=QF>EI`m6xxKn zT=LyUH~TgTe}%GzGDGsicsP_1r@)v_@=iy~npB%Kd9_K676mh;%sO-cLvS398xdE) z>y#ai8R;9}e;m(gwv7eAr>|5s2>pZCbPjsU7<}AzSDE*!2xr{eZ23D4IO-~r-E!VC zH_3M9$be&A>AqLVgoO{nt|SR*q1UjU=%&o6Dmrge*61K|lTDNT@HnkblID5jMa#pI0S2f+6`^@J~ip_UZy}>vB z?>Xf-rzsB6WqF9HBAB6C=*a2CV@9K&8sYAxUP1w%1C9s_J1C;Uo)Vh*GYTxSgMLdD zzfmPD!u}wrS3CLQMJB6`8no99y*{~J<;wrCYVmHV8Ut*q(+$#kr{cbc+4xXZ*5AMd zXB+dH=1Y|KjQ1o091x5ye_nOJh{mO3Cz5`L0H?`|BaLS#UAWAkC%n5(h$EPJo;1~X z7EBHG(v(O*Y*V_Q6hRSF{3j|3sJ3c7X;5T8ri6@XK3|3Om;JfZW1G7c7p~{I3tC8_ zdp6*TJSxTiP!73U>hR1Jbx4Dh+>2Ijv_uCpB*;0%of;MggtrHFxt+8pZHazQVoD#~DR>b>I}` z$Eihm7s#9{Ua;2x%xK~_)85OIQBuqiHw=v6H4k|v_j|y=X16rZ29)~UB3wM2sx|bt zn)g*`lvv+aGMCYHmYO%4)1jPlZ~%0D-H*G>Uab?0bPjuartF=q>IzVMd>yWrg!9nu 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%0DxX5BzxgdWNS834pk6q08j{&MB&qjim4=S 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�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 BtTPcpf%2DDV+z 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

  • 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

    a%x97v^*KYH|4QozciM-(>P zrEcVIBZQZ>rZma(0-%wRUz`H!dZLcjoKP@~JURfQxjOt>>Od8%TwB-b68-cEJqv!G zK!6T$gRngzmyo=G2x`H>0)>g}keC6EVVQx1bVDMJXH55{~G|syb-_KE` zk>CK-PrA9swC3q(VbcpQ;Ltz7&GAF0CW?oJ8MSAx3Dd`nir7h*e4f2hfIbz8Re#nB=?7WfN@c*EcncnR=IeQ zpig1nJ+d;1OJ+ckf{>8=6u&+u8XuE23wy)Ir?@65x>FQO$ut1jhSt497Nn4z!J?_P z_1=IqA;NS>w~&W;Bn*zk5G)jEMqV-j$&!0oeEJme2+ONPpku+Y2a*l0qsNGDD;6GOceQf8)i1-gX<^|i?x3)+Xz zfOBsTIk1w1!v)*zUI7ztNT%m=PM=r4L9rE7DjTW*I&B??trr=?@P6>Smhn2!` zE77QvO(wHgNaiwmSUu3);~3#=cXRUicPVlK$Lg4KYj%lMNKzDRG6?`;?j#)zB2Slw z2#F+B;1_d&8)Sur}ai6}{AmH;%gfDYsd4vLs%g-~wyVLvF) z9t>GtPeRjVFB+;iB^{+E!JLqMz%@xLhOo6zicyM{867y{QJ@Q`X+MzFy@a zMcWO?HZOtb1HD^VUJNmPK3<<_@=OT%#U;&XPw&TqVu~a+37yiCgcL9w3Mp$%zsrH; z*hXSrIKRf^Hj=11BF&IA5!E&cc&_G z5^>-Ua5&ZT5I-6%i`X`>)f8MGsB^fbgnl{EBr)(D-|uYd6Ol75xSw-^vP&HA{9!E2v8RX zdhBvNQAO<}XEGfla&3~LJBFn4;j9J>C8IrEqUq9YHSy1iy$Di5px05t0y-K2lH&+C zz%S%@m)iz7b{3kf#cnzvQ?Wdd*wHJ_?h|=wo?MVaV$?v!kSxd|T}#460-9)H7!kT8 znOWZ83-#9y#Y6Tf3|8L5k>t#vVv5+8cf}T(HpCqPh)pzUh#wsbMRL>#?0QHs%93e` zEa-C4nGh>S{7f%So8-O)+5044MUSra%+%(jR3RQ_GHXiEBDpE#Ixgl)ce+IIlH561 zWzYr*Ebr>8hXt27JGleLm%u>X*n>W8rn-2M4oHHAAly^@l(>Xv zWUClcWWkI=s)~;SwaJ=2AP;ko+>Y>iwmTHtBJ@Kzl&8!nq5=#+Ufd%iv=~5ovMjB3 zHc{A!t}_hSKuM80@O;n7cFq0+2mtb?U0*M3Pr@Fco1;0UytPtK4n^mT=+GY%dSsyj zP3QyG^u-H4(j(=EJNhKqNv2r}f|hXmxh7&UKlf!Pl1-lI6`zrBTSP%HJ_`LGs5>?- zbt*`Lq%kegR46Kui^h6%@;oV z8;r@@#D>n0%=u20~B>g^%(*{g7-fqOT3fBi^HEKeoYjC>U2>nd#`wl#KRdJCa~n01)SaWX%Bo z;qV5Eb?WlynmOZq$W(Tw+57#D@C6IOqck`&>{Aq+~ON@Iu14oMjD&>FB!YKx#}MDzw23bRu(Ov@C5IU>)DyzoY5n<;su#QXyS9Z7i| zDJV%hu==C{2uhfpP4%+K6BskynM6E}WK|N27k=vM@h+5p(n?JU9gPFI6cg%28xSLr zh*fp_E1@DB&{&qa-oOq;0n7Um#Ak$EgI`fpf}9rMU=uPeLsrPVFb7zXUsKEqBTY+C zmE?EW zDx!2*3X%aq4nt+NNq7<6!;!SpBTX}~Z^0ff$v8q%aS-)1?TO3^!3(;WT!f)8 zyf$4gnUmxL&8JNoC(LN#&!re)Np%K_hB;dds$ESF^2R&GNx=--rr6pE>1&+Hf55KB zA&D*E^&H?AP=M%&4kB?6;}oIT9l0YVN+9u3Shk8rSBW~MD|_&X;N*Z8O43hY1~?l! z+Z!HD#C&@$E0S&A(<(~!A}uHz+{&k*`Sa%9W0V-gIHmY zlr3@C;J}ef{!_imV#lT!uZ-D^%=;3ug%gELZGfsoj>{Dhc4uMH0JotgS&l~t$THa> zcG4#mQBpkd>(zY@zMz|d3(`IZG}i^i|IR5&Rh}&5eAg0C%Ni#IBuXX)lA>{}v*3&) zb3snj89xr(BY(Ddg8?guv=hAu5~sb;^fsm-cFFJ(%2Fplg9JCzB-o(1StN>*?q(HtYMYy!-V43heoP}OYaj}Sxo`hK(gk$n< zus>Ng6Lusz=|U3U(@d6$;5F1s#L0EVXini9GZiA4&P=dPcah{mAJ|Vwk>i}e&G!SD>`17Z5~Yuo9?(klPFTW}wvhl0rx@Lh zWeen#nwE?d(2%kDm;r`GzM#~AuEmxyaUt;}lQW3fKuBS`qIz^SY051qKvj%_B>PMH zrcl#~q$VK+tIxJlQh_;!P29aA7m=-2G#2auBnIrnNSEo-odfxAFaJ9X%<}p$4wI0q z@1l8eP&&oDOz8aRQ}CR;Ak)?R5lXT)T3G<3Pli@`@42Hp=#X~`BgLqD#1Vvf$YYSO ztYexWILN7B&U4yQC7bD1oI=Ej_*9S z$&e!9e{+fq0mBl#j6er-nViGW-@AGnB}`&Q+fIy6xG4lINr64rn>nFK4@uoI6Zo_g zzhZv_-%XYH9*J5mPzzX?WFo^NOlgU_dV3*h%kznlToHh;PWS}Lv;2o49U5JV&xg#>XM zrp(+eB~r>Quc4l6o5cD)>3WiBK(2)l#KoG0v6GuiZmUq_f}}Ht{bj5d5Vm{?o{@jx z&>zU=w9?3NifokhUwutu0jc2pET-t1^4JTc(mrh$ngf{v=OpzTGcBbg-lb^C%81^LM{n z+^=V?-`}?W@cfsXSF2#RU(UW;ZDyZt_M2_^m(A+_HoV!~Z)f2*tvA7T_c2)g{+rhC z=g;@gTYvrA^y@wvc(~oh|J!W8Y5n7O|FT>Dci8%$|Ixbr_9pu4_uu^PUy{Pn55cGK z_o_}@D*CiW?WDLg|9%tKn}2t|ScKc8qrd*oxb)wm;>$%+{QvbIt@UyhclIyaaDTsD z$Nx-P`rW_$^LOeuR9*k=kMY-fQ+>bTnMU(ouJ?Z|ovZZiGMkzs%C~17+%g{7DqJU} zqM`jg+Joiq{^fJ9ZLL~SS^Tn!3jW)_B};qz?Yl6Tzg@4sCQF+PcKNrcOeb2_R=C=Q zx!>E#awpa4$B3!Mo&QHGT+cT1@GrqO>g@Y)9d3htI8R3N$JX+Xt^4TbVgL8H-(CmX z{c^wDtiSoj&{}64xAt$C%I&wWZ{B~si%Dm;x%-L*UH;E#kLinh-~OcV^6ML zn);`2z9UGh8pjZ%WR>n_>)+xw3Us|#EZ58Z*GqzGeoCi|;0wd%GmAWS-dRc$2OFBXB5v_`M82 zFK6L(u>WW}{xV;E4?wEyat!|z+!{py`Q5koq}qW;@8`{O9x<%lB~f`{PNySqL)S++ zeL(=%+c0XCI{n|RcCv1Z&9=4tY5wYqYSK{l-&&pjj}-df5zWZo|MqWS&fw7blP%lE zUy~YtbKw3)_Fv@xH~_LIK%FB%4wB>$$m1gZ=6(|V_x(0}x!iraRE@H9ey4*?#W0Q} z!2W5up7Ro>oca&=7L!trSJM|iZmlXN^jQ>7dL)IV+AI$(sS$ntLr&Yxs=KW3W))tG zSkxWsexXm=79>?u4NIcGc`phnv8LhCvb=~yhvoXio2YHu7^#SPpt%CxqviURAuFYU zOBx$xgj2M>73({@Qbsx_dh|bF2ufzB-uy|x*$;HXLK?c6+3Po zIPt3FH2L?z_CvU@*4zzxdtPh*r#hfTWB1qBjo|DW$NhHtf5X}SO}Gyp@z|Yl^y22~ z;sxF6Ii3t_E<-tzaQkAj-fuUnRk(fi3%QwRC+yT`hMX zo#$?SnfaGPyasK-2VN;=ELUiciYW=GreE@eYe@}<7U3SNviB@ZK`2sd=s{^ z6&{MuAewx&zp7E2TNR(hH-C$pmDsE<((nUO=&j~^0WN-ZFCvty=(ZJ-1h~*pV zvSPG`@i^4*8*D{`)|mu;T_tP&Z%b=)UG1ZJxbUgisB>g>6YKm#bfmA0^U8g%7n&v2 zoeaa<<>zo~Gz+UQ-bP_mJWSV>p6-j2~PcKCKk|8xjJ$!IL=fBn~`@0|$!(T`dkg zQYSTsiJsDT-)R>-&5!jA5AK5La<$wq!%GS@GfwMtr?_~)ne300irqWQ;T;2KZ7 z;)z$BKd)FVqhs&t`o(6wSYA>9w`F3d;}N$0kHjC|FK@%m{XRnfWkk_Y0ma4scm3u>VsVUbx>R17dHyG zRA`Y>G&n7;!QEYo6f5pdao5n|PSF&1cXzkq#U;3+fBhzZ=1id&HFAt$iCA#2DV29x`LGHUOU$wQ62bd zH8$A`3uy~+()^WY&rY~K@D0>!va;BBW|7uSVb*lwn85Sb>I;>W5LWy3B; z?$vSQN4P|A)tOUVqGT5EU7Y`1iyQkv+-r`hKo`zvnd*-jnl-!8_ zyXGyd{UiTqi-2GH8Q+X#8qTrDY{_vqBU`YgJK-y_t{05Gim~x24vX=|1HZ^{7FhtMm5pe}Wc%CCJF}EWJT`|fL~#zK z?z{W=i4bjOVK@~BJNs3VJ-6sP&kGFC_P3kU%U-8GAApE6?|t3u1qq`pI#fpda4m~{ z7K#zTRhsV?U_MfhdLGP5?Ez17I6;QQ?!>gZ=ptIi{W1Y(GVDD2*#1L*`X@&D+FIA^ z+R1lr``d4|7p^^Uqcp(;GiKRq2g^y$9|1YkyNLHH9KWhD+zxCf3PY>GlV?{L`wim9 zSpBBkR;>iR2wNjR#sMmhl$Dx2e`wyRmX(9`p?e+7T6J$##u}VLJ0>oDjTMdWMON2=i{gIk z@~g;Rl#Llgm?$(BosymQN~xOaxQjbStH`d?MvlDAg~9PDrQ$ehw=Ur(5(B^1eSDvv zo=Ls7Ce9%R69%it(6MXCKOy_B{EL>q)7S#Jk9f%C_369cyI`Z656z!j?}*O#R6lDC z&f8@JPol{x@1U-xWNwTfnt zZmIrnlT-?{IE%gf<`(g6>Ia{oPwX=H9mk0_fhyG+c zw(_&CQ3w*av&W5+BfTiZkWk>O4=eCvaHUTw!59APHzU}XdQs{d@d+8|UlESD2h9B~ zqTp#q%r{1$7aRFSC^NRbW;GZFr(32cmj>MLXD+B|vP7u6Sm7-DvvWk&8bw{8Et7oD z9{WsWGEI(A*U4Q20@3!O0sCrw<;#U5$2 zPswQM1}BYO#K}HWzl^fm9OTG!NX?d(=5(e0OXW&>vT2k9T0oRPj=|8ho^Ox^&nqxG2!Vvm;Ea;ZG&#zRSt~INClT*@u2S)unScqGaw$*=8re280H$DGU z>_?-7j$Q3=c4K4&WWCNDojJ(FNWstNOQ~hEy&2v+sk`?mV)RNuT~BxF>geW%AoilV zmqkmxmTHUVE}<|u&#FPf+8R&&?AD0D4=QnnNp(V!zB;S)Uz-$Hx4#`+&3``}%0}uh z(@p_iV58<&vB-$sf1^Y5vRBD2c7S(bHBn?3{!v2DqFH1Q(_TcYZVLJ4>zalhwa%-2 zv@5iKSNp(jo3*i4O6W-vmrH5MlgP9=VbjvZS?~SpN5IC9BpBv|mWG$B=voN)-RbIp z@`p2tXW0gC(KWD#Psc&=gov|zl$(~je6@Dl&?UYue}5sDevpS=Uw_JJGzTn?u{5A8&?(`^P8uDXh2Mg@6&YwDuZQy>Xa;a8fq8op*y+R{^RXHPzl8 zoGBV6@Hu*7jbcm^d$LKnsjp#^e+i9Y`;*f7DVr?N_romL@4&vn%c$j#)JBgJV)BEM z_Vn5L>%b`a^I+u>vN{BL1Pk*1SPNsPC<|27JtsX^lcP_MUVja^?gg-vcxFYkiRpp8 zvH->Iraf6VT+ixv^KdcQWzHAXm%iqcZq2Ftk=ecGoCn`PudwshqGCT@%lBR${?{Yb zy}oUrSWSV}Qy^5ICzPtjLIEdRO0QsT<@F0!_Oq+=&~JW*Q9z)229A4u*SoP03kN_< z!zv!dN5_zO(l3NQK6U>NM)Hd3qBv%~|2L<6Izc`m1HYV2lvYt85EjOJ7#G@o(kGN}GA-m$E@&oaI_$f&*Eh2?nm4cq=(s0x00#?P{& zy}z*ycTtg-Q{zxKwh?z<4VCNmbD&xQ<(nso;h+r3t)oo-tT)}hg6P|}`$D@}rKrd9Ee|yO_4$o) z+A}9>RO>H})VUy>MBRJ*X;QEK26jL`Q9}*(T1Qjq^H8S`Ea%vc*)-cHeGQ9uFIpSW zn?m?AzdeH5v>&XMQ~>U^JVo4pYQS&TS1Xj!Hzc4Fua+nkyE0Gv?A^FTTz+=#Ai|rK zYCJ#|C?u}VMVkE;%8EyHZ26Y625AE-@J{8lFLYB|QU7Z_OfnQ*ZE_ID?N_RHD<-=Q zcDi|-F;r$(JaikdKYR!eTymtO?BPXSJOTg?aq5xF(476rb2#497^@cRm?kE}mg1T` zTx|uIbRKK8{r32?NRb!9(hsy|w=lEF%X4IPKj;~$Rx30Mi@QBqaTJzvC)@DqG3YY_ z!AmogTYhua{!=K#GXs7*Q=@L4Ayv^2F{=8UqXmlT(P+&zA?@i!Amapb6T49E!fcK4JFP0Io>V zS~Jy(cBdulYMz_?YG4=Juqfe-7r*9%j2yt(6YL)k02}Lt+a`yOBPb;}!uj=9^%QA^Lh{%X6AvhE%o7&q8K%g>Ln`7cxl79zg06!RW| zFGe9%UoAuzNfloK%DMtB6pjvA!R;!5NX%yMEDV~eets0gSX0MqF9*h@Q}8=_o}bo_ z;mWl~V4kZYqYhV|Zab9vF@MqrP^lbC>e|7%jzIWMmg$&1AH=a~D4OeW`r)tKQA!7i zY;JirSa3`e<$j-{i&4|y1)*cFgNdV_lp-$pdq(9S#A{%H6XN^{aece>v@P+3TwRHN+pSSdPhoq) zC4=+Ju0Ex@a66cNMPd($)7(WkZK;DqWQt#vy6;Ri7~Awi1r3<%;KceFfydLsciCCx zzO`RpZ1>$+IjGTDWQBCa+3I=uXhwiVwWqYe(&Mc}nXw7zWEAo{py%y-+8b6)%MxT^ zjQCrR&uYWB^RtPjP&R&r64DLq(lj0YeT<^LL~Di=jjZaFUK#^pmdOLR@u9!h?AI|R z?e2CmOp82j4A6HE4azn@I%_q^O!#Nzyk8^X=7YwAV`b2_vZ#;$zgDsd8UicUImK@R zor!@J=6J&b>)q=*O8>UcxCtlb0gjyBhwnXn`);Rg%(Zxt9m;|0XS*C@iCca4Y_fsF z^FFOcZy%H{turv`QY9>V@FKma=pcb_B>FoX4`^2hyEXu#Lfs%x_p{e;d_T6X-SA0q z(1{_?vwi~V^w5|(f7C2L5W!;BTPAQFpf;q_5l>v$7n2*!OEJM?f^X+Dj1D{%{+Btc zKT{tpX;5hf&@!IH(xu;G>9ZiAXMbuN4jCz2WVBkG&ko>FW`HmIlB==+Aovc&fqxY{ zpR}Z8)@mu*jE7J+?C>c;3 z*ahIme>q`hceY4Bv3)ddDkqK18{~42%J%n-`A+sW`HE%+Jx~F8cu-{N5taC!56Sv5 zuczjA7M|cMlQ=})V)~khH?+&er)-l*@$azY{m!LFYXE?bw1wW7fYx2YocP{>JS~*I zJzWs+j8Kn+o9&k_v{Mx0b<4?F(B8bL8NCh|xC`R#1-OwsE&8`a`E0QAhETH>NmvjW zMaO_(f|Bl?M5qbFuy)`+alS_{qlM^fQjqUXQh8?yE-y zXDgHpOdCvz@t1m_97f4mM}W-aoedfvoow{holm_!;LY@2o5rbr6^p5*1}l}O%ro#^ z{Fplx$Bv5uBjr%NOX555_xcxvh$o07%0!z~#~48w-NXTpvNVFM-y8dVGA(z7#8Dli zj(6s0fdqE}yC%Kd>HRMy1e`^!JIlS)Wi}Y->T<|y_?~aMypDU^5OC9xXJLwEeB0w|)Sl`)nZNHxMv*h~XLZY&A4Up;_$X_3eoY*f9QgDo+h$SJw96pA z8u0TTgkM#jDtQ#2_Yb?-XENMaQXHSLCe!WG-hN`vWeYVUzm7yCk=>LjX6}%?PsOo% zMYW{s)JRY-w6mpYa>YhPqB5tizgJZgh@{%wWrx1_@@+@r?8^$&L)TRB#9w|jt2Yzrp5z^PgQ=j;=N8|^U*d~X%(nhe}n6K#p;B26=#Osso z%+)<07~Gek9EK;kIAJ#6X7gDUKwf(=k}z|3P&e35@}QRIU#l|(2Ba8vnY$E2(Tdnf zHI2M+OV@f)^GEYU;p9SPMHjmVdlX`59!+$=ccY&BW#y&6e|wo|BeHa|;TUuc)Ooxe zgPddU@POS6F~n&{#QiT)NWV@qMD*lG#mo1)nLJ6sI+UmKvxK5m$cNO?$N&TsW?72| zCVp-IelL!>*F>gOdrgE!@mrbABrD)@q(*rcGch)(5oaIn5dMX@*nl`8{MzgPL-GU^hTisBrLf`(t?Q--ho6HNOOwdge$GK|i;BlDc$LM(ww&R*|Wu%U|3{ z5zUXynt}odmMzof<#ohrVfib~$QHo3(gByk>KYTAjd26*HUB?sKmYi#LHWzd;CdXr ziJ{}pQi?rNgiEmjiZ&|E*r?9yt`e!>J(#-CQ@>@S2M@a5H)+yc&Q{042&}iVo~j=T zVSeS8+wevYlM$Gyn?b?Z2w!y~Mwb3ZQ^#6`Q69D@&aS3}`+4;Yx;mUaS+<80^vH%jh*DUK(&aaBG}oMEKO&Jy6rq&o6s2Wj|Q zQ)1f)0B7M~)}53D4Se2x8YR)En}o#u;-_{~JZt$8T^j`$W+tOnsi(Eg98{@*aQuc{ zfHhK$#FshG^KaU8$nQjcoK=}eX~q*je$bqX8@q6Iu|cWIUKAYoj5@0+0!gtVsB#ee zZoBRv!V2BGIV_ys95?D@&tXb0oVUx_9Gg%{M@+S!&x8G23{aV1;n9VDvX<5Z(pdyw zNdSxpjYM^>&w56tck_~O4Kw$N>$i6tR-Z8L9zXrL^rmKB72Y@t`W=z1hjMB0-RVi6 z1nT)30|PBc@z9p6mIaKT6nIL2U-r#Gs}}F7sfuu=RzcpsKiylaxi<{0J%Le;?)-D9 z52#_5HO4Qzb!FbC)_WixOBluyt3R-4mL&!b*8tXh`^%7ACSGQ90?Yq43mH*)FMQY; z?>rhz9`P@0=FYY;_05AeH^XcEzs+?mC=T05cvb?vg)A1hxdD6m_Np?1@D+J}1U2U1 zDkWw~DErcn?&q6rOpJQoKQwzG-=)b2SA4={)v~uevi>(>DVkyK%~+0R%Xc#v^n($Z z3*n}R&+kIl7mdcJkhi6Jgdd5!hfN z(M#@!Q&6YTdMHhQJ>Z(GxRM5phvDdmBN-aMKclkVK+9dJL&(8S4{>i{gbeAwd~U(3 za_lxP3%gpgtmhR3%&>L^{fY!SeAt9RvnQzj_+3v%*`qi5;Mvr7Ga^9wk!x(Ur$S&naGy{9`iz%ORJqi-Nh8vaZTf{L4Ej z{996@X%+|i{uP`kbM9#RhE-4*9qex3sBq`Te!g>eMfP~N#`S(jZ*k@&fyTs(%>-<& zsbI{m!Q$QdVWMlt&))7?9!3>`do*iy^w}Fhwc(F!S$6}t*?giR&Jn2|WOVm689NLB zRwgf%Rxf|o3qwcV+4Fd;X9lclQOT|v4C{GUKW(1JB&w6#ekl+x|4ej)rwOlQIrOgP ztLWg`G@pVWMax>|9L?0Gj8dEns+rP;RLrH4!W<_0~|5H$~KqSZ}G{Do^Pe*Pxh())YkKCNbY~{ zgox~c-t{vi?GO1541c9_-7q7-^Z*3qZx5k@UAqdT8x_v1bw<5?Mvly4i>G8wdPjR{ps@p{X$Z zcNqQrF|OAm@^C&(i#ymhdAV!$QUCTdM*&s%flX7XrwLm?yP>}@^RxzCx;0~J^h8q+ zMQ8PJfqS}eFmM%c#kVS^LY@=0001SD=R}E4kdI+|)LCgeRx!eg*Yq=gYId1Dy6aw* zbaa+pNtXm#37-5AViR?+>@B-g{oC>vt_=3%Pm}YyZgPoJJ+>I zFSE>I@$W(x^93QC>o+R6(fyI6aGCyF$;^6#X!h>-hmBjvUyC<0flxvFyq}^Qj@z&r z+ZnZEj3S}!rI59?VJDKdmqO}yq_is&*k?z3W%n^wn&%j_d;^30BY~(LKdsI_&J~mOVSp#9U+8DHQw!0}wX~%G%G+AjV-{|(*D`q5M%;*gc zdL@CzD%AJv{Q5SVwn|i)8tzxCUA5EFQ1&W(H0x!^?G#g!(U^k^s=I6VdUt1e?BO_p z+lQKM+d}MbO@ZrRTg(%_&h^5^?bYPYtpQ&Y0=k$!?_%l4 z(oh!Y*`aOYdlRjQj!%0I)Yq_;P&>ug+?d!pXeOyD$u)P9Nk>G+EpcbI;$PzRA^tb~ zlU7gO3^^TWg_Dn+e+B=XdC}VMQiIM*X7?XE$|Q@p49N17{|WN@vj+ok}Vqw(zyV zQ(@|aekutoIy^)tGvO7XfM}$>4&gJ8@{4XvDC?OS+3nl7O4$Gde{IK^Y$N~oR=0nM zwM|nm9Lk46UQLNi-rGvF$)EK-w;A!&%XTTvFHv>_Cmq8&@ZDn$Zntjo)Ts3=Z$2J# z@czh;d^+RxOrPKHUla|I85X~(_Y9RSGeEqyzwZ!hoz95jhm5-yswK7}u{BSe$J1Ln z0Ck{Ei_3(1GK1e+2b^lYAMZXKAuc6CIA+I{M{UMmdErcE1=rJU9oHUzCEK#=#y+_UE0W&b%02!AeL8{$4Obz25yS8nzezuc@^)9U)W{8Kiq0 z?aJbCdW*T+wn+d!>L(`k{d7xd6wjt~loamo^LhIZaG@ALN$z*2!YZXvy8sqllZrO3 zeRR^PXymI@uluHcCaXbV5SU1|lMvG;#q;ehI_b4~(|9`DlFZ6ixb1<&qzsp4;aspK zlrR^8fT74FE)27t@ywi7sInU@8zgkCx-=#B0 zZ_$rm-axuvm-{{pCf=DTii8T%9VR}zCl(a#6-Bfi-Mpx#dg8HK12VwurEJo%01P?A`|fHl z(%VE)qSbYfP$|0AE#!QE_VN@F#~bjzd2Dd;EO5ElNmx`d_+OkR#xydseg+bs1Itm{ z5{@Za-s`>n*%YheL&2;iDzj~ZIGrJ|bHt9lPMY4kqZVXY2u^q)SU`x=e&G^(qm+P@x- zb(d_3Wr_Y|lryBGc#T!mldhd$blN>6>vy-;XUEtyl9_;ZV#b$n%Y5k6)Y=*4b=>#) z%(Ll=i2ikk4g7lI7BYcYi;8ppKuLXC*NTZLJ)tc1McfgbS4x&nsUR@PI(F>`J5v5I zT(&lbM}(J12IX(4R)#%S9P9|q=Q?FLy)GeCQ$S^X777=V5rBW3iGip zD4Q@aTysA#z1^O0z|XdMLk3n=GnFz|R{L*Z0cdqF9QyCNIlKR4*t#!7sQpkb~&>K`~g(ra%CY)d;j~)wqBWVthTjqkEc=f<2D(p=x;S7pjyq? zDpKJg6IYg63Q}uP^>G!=babE+;5tS3zgkahsDgo_>zDbGGXHXM-0ut4G?YEG+`Z^( z!xRZ#ye*$s;)~*G2-L(wTQnhPm6?n)h;|X#)3=V4EO`eIeRUPn)+%=T`(IU+5h;PY zFex;>qszzJIPt_UQ8eVih!>&~#w|!_Rb45|WZT(R)$MI$q@@`nM{Zt!)PZrp@mheEDi4IgZnqujL!JAaRV z7Dq3elj4%V`e`W`Uw~5?x1BfHwO+$PVgJzCZf;k} zF~F$i(|>Z}l4;$E#AkH8$Q;1(=7-|>4EBxNw)j>LkdvU3^)4ki%2Vre3&gW~?`N*%q^eTvnDuHJQe~@Pfm%&yjQT>Dd~>{mC4<2+#_3m>VDK;!|YE<9v@FiKYLqsg>xL3-1|H zh{K2jrT`SLcB-D?CraDf9QH_Xer>0r%)lNPuBr@K8Ba0n@wkC~xYG7;S2)Z;%lc_h z1;8Wikq0s*&T5Hx3Hl`Z01t*ta2s@*zq?=r&#A%Zn3hP!0$A!a#8a; zXljVZCGp`uYZOqXRfU;YywivI!Zm81iQ_8;MUxj3SN=)$7dH?sXJJTT<*u1x@L;;`0o~b= zPKixBp<2U>p`W7l6QkA(e>Wak{p98oiZ>ozl!!?#y&jB7P;dNyiayY`Uip|f)hVA9 zARA~6Vt+~*au@@jPGktoWZ9M0{* zHR+jQQ)6!jC*NRBk(>89_4 z!ZUu2*RPT9D7w={FZR0N*B;(dG;bl5gxtKc=M4zr&erTfe(6z?lUQNp!^L_L(-XXyrDwBxbZ?*hP;s)j+z+RJ(txI9KkzJFHckrs)EB|HI5I$LjL`V(PmSk&St(gi}J|ld|D2C?n!g zzO~uHWBoC9?X5lp<=8w31OREDnnL2H2@^mt-Y~iOe!IVCUA{!}LG2}_PMzIfX}<{% zC)RR+bA><@Dx&_)oFjBFpgte9v3PHN$M!|>`S%Rf-e6`Ad*)F z?mj50UUT>}HGor-X{5)5^&f&dBR6xVgG40HyP*c`n(|p}<_1$0l(apKIV6>} z`sgC4AS;(GTe(uot+Th@J9{9ea5GF_#%oOUJa2Glp(7r?pxOSu2i@%KE+UPIj zjNX=_NOAo=)gfl zwZ8oL^pFRXyu2nnJszaDmTW?USzX_0vw4{%4%d4-PqUb^V>Cv@DfAEZpQw*!iDdErCJr*BBK5xOb5XjV){^&poN&d_+|KI<%t3`?+ zn*mE`;m(OyY;yxU)Yt5=68@iFW>NO!4SQ=HJo8s)GS&|DWC(a{YD^Btci_-eq(|)A zgq^x#_q^9@R84~lQyXG;i0ex@$~y2_5h00b`FlD0jQ3#^MKvRHab!CE>}iDNZWqUI z_Zv6mY7}P%WdDZEZ)@c1lR3R8cLD39m_s_GU+n(w?FF^95Dvq2Vy))S9sN7fiKUA> zCSb%DY$&~f27SyF3&Dj)ft9Wk*Y~_btX>a8HpsAOO6qZLKEuUFMj>-d;w2)70g0g0A)3;&1AD`j*U*mWQ_Km zk!59>bb_tyo2O2HDmUZmE(WZJND~k~YY(9yPeAZ{&Ya-)<1ee97ja58J;={z{+Q@$ z`qNpJ3SCj;@kaZT3S<%mR%lx*=CEs$k)blvlgM>Wjp?QE>VH|KLq7z0-$^<5@O37R zy-HCfRs9t1i{bfT@DsNT%VL$S(r!2027MfVmI9Wc>Tew=ShT~q^~+~lSzisG*Jbo- z$1zTCzt{o#yC|Wt#j-0m4383|zYfIQ?47ds8y_jNDQ6!VgRB;a335Q;;K;)1DJd1` zeG?L69Iw(XT!JjlgsOnd&3>Dwdsl1^PLxxCj~-YZ&wwYT7-IvB|akfM-&p0C8BIlnKUBpPv3NEdl zqe|PF`1jPG9PHHAQydu{TKA2Qy}>T<;_a}jzTMBi!RZiVn~p0xdUa@Lmm==X_az2O z2M3T}V{CsVG|VK=cbb19(&oEEmyFQyf}HMQ6t8A(-dOIv|J-=>Pxk!kr`^nS9a|ok zHp83LdwS)WVi@e;(N91$dvXdnt(#PdTxu^#oaL&<%}U)rjr&*cgL`a6VdUQm32isn zlb$x+BA#A?%S^JeK_Ea9$0Pmav-zilfXkVWyIhO2d85v9vQjHXf%E>-Ni~eyq%_fJ zg{pmnl*EZlz!zQX!5@}WNV9i1 zqnviA)i+3@wM9BDavYDIMD6rIc>V7~22YafjwE)1mo!BDNN#ExN@PO;uC-QY`+Z zsOBG?1`(@d2x-c=aajbdwCr0U#O!NEUOsM=g0LT7;r2&k3b{Xap6Bmjd#zo}oPxFH z7Q{XAQp~Rl-!P>ICxaZtdJ>?uO3Uv|Szdke2FP$mhr`*S^tV!@NG%N5`nYNGWWbso zYYXR`gQtVTD&fz$Ys}(aN7lzSyI+RdjGy`olrhGNcSW)MPqujDA5jN9I@cbJg1Plc zLow9_*%M-@T7JM9A(O<9S$E;A6s^_~pE73#Ym>IemB&>TU-6+xP6xUkTdb|U+3#q5 zoYo3oa5vB&;bC=ALUrNn+9}yAl;METd71`_8j!;J$?}>v{?86ifx5W>st;VLX+^dc z9d3H4o%qT8oy&+c6j6jmNe`rgcsAi4>8rQjcqme9W}Y<<;ujrhf$uVylKoBQ0!MkX(MT zDdU6xO0wte5w!iRIsKviUWL9;Y3V*6#tJ%lT0AtwGC(zo$xUOqOG^*>3_d)=g}qrl5v^LIgIp**^vk{Syk?@w zw?hk8`1YH@|LtQgE?dAypDajIvH}-WQ}G^zz4~T$&$iVlG&yP=$XrMN_v3vNp`&(B1%!?=~SiI=DC{#{VT1q#oT-@7`U}PdUpV^t_T}2G(PGHyxwl;Kod8WlgSjngu7SiWl z5spl<{^rOv!w866O$YmFP%Bp8zy(J}g5T`E&f*#iBf=k11JKHR8d|z4a?1MT{c^Ft z0bzchDj;F5b6+EljGr$^)Gt3jo@P4HSAFw1IYLIwMyDxWhC%|Dyhre=Ci$kn2@@f! zlMgc48&lv2>|r)nWZL)8aF}a29n1!VdHMf!y*?207x=2;nPceK1bDYOUZIS+sSh2l z`@TB(^ZmnwU430^XQ`ZGqV%w5)sN<*^dr5=#;no4t(B{jW>M+F1a2;}ueJSiKgR!O z-iiAzY-&eI*ZCl!4fq_(J4R!hB+Nx?o#g0_!&#)~8|z#kw(}p#^QP;QDo1-Frx5HD zP?GMvuo>O=1j1FWKD%gRco!>~ZHXQ6*z$gV<4yUenfRtd`V}4FH-*V*;WX?|#Jgng z7OR6Gd$v09v2juS#k;e~3bU7~QSj}WrAXoKkiFZ8UiNcS_ijiSr2Odeddqb3D4!|0 zDz5eS**%`#g;DnS7mI_0fX?-bl=^BO9S*%wW@UmguP;fhw01){JJma@OgI03pwwur zSy=C{_fD(s!2$%$2g=0Ju+xdyS-si#^!)@jXxb`6e`5;I72sI;dVnFZAY;IiO2u^! zYSTRxd1_c5W-l_zo`O0PY<#Q`>~Hm-iNqQP1wJ7O?Uew(3-%0uMom!YGTu{lmsEu@ z8Ot3{IFD&cUzOO8rogV()(*pbbK=INWlBna{Hq1o+E+dfM;(O`9W)GKmUue5RJj06 zs&~iP?Ua&Su)qrISjCzRHhYZzX3F{wr-v&I-61$((R{W&2Nq$>i5!^a+5^vNs!eYm zn6RQq@ydeZ75S}j@^uR}EEu!^UO*K2ML9vbu>-I#Hd}ImVkT^Og)&XjRy>o2K6_GK zB#9QLk=zZ>WJoTy{ha&DuReq;>oPZ^Iz-ly95}MWSxn-?#%{A;PdQ?XqkYtEs9y@#uJd|K7qJkxK z`PIzR{PkFrg5$5use`Y-j&9^|{ypp=p*N8!+By#T9GhO(Ut;K3?p={@`8oRp5!)vv zGSYN57hB4cvmHg-lcYT5AHe|D2uVCTcL5%g!w2mS%9EqNf)ybtb_Z|Jt6yaj{%QRf zmx#hYCQ07Uv=tYd`pHLgkoJ*Ku|N4>`u>YCd#t+f=N)JAY3$C8_n=YXjk0jp9umf+ zp*G}oK?_Z-l>J^6Q;xornB z3H1cJKjLkiSGd*Z^P|E5(;2srFY4vxMP5GU%d#%iKLtJ?a|Jd@yqv-l`9kvuj@!D2 zUIP;zJfkew42WoK)IV=fRW5}_1uKDb6<>{kL^g{wQ%g=j{ZOUzy?yn&^4iK;&TP03 zU{Z-S!vH70G-Kz0FQ)%%tnH3SDg_N{CDM%Hnm-V^(J8&ql13&yvUYUD)Spk7G$PeC z{5bY&D7fn$%BGskB7>RzgZECK^<7Ns`%Da<5K#JXYHxA>Gp*E2MA= zsY@UDMSlgFd-bk!S*_B%>pp=69SBg!(A-B|7eWr0U5bWUGHCq$da+2BwSZ?rznFc zFxEI;Km8MYXRrvA;U$$_w#i0Xy=K1^cy6-BkP#!d<|=EV{&+=$ZK5&^PSw51o}Rtx zVFPoJ^U<8L;#Bb{Wo!##25dBr{TRY%CAKpf-rhsDIe6KhzFB2kX4A|0`&0MfoeS*f ze$iMk0OYU9EzRijA+f+Du1GBV>#BUQ9C-7A?{0bdAWGsVe@MmO`N@ka)M(1s1nVJcAbKVGx? zf4t^S=KrNN`Iwpo)$jcPKW-lHcPzVgj<`_%)4L{*8JD;=MX}S^dOiJrc}-L2od0-D zyJFJ6%Fh;n2x`b*%$w9cs30P0kvyhb`SK3bsjqqJrF-sItkjOUm!9`C>gIz)#0KE< zyn@Yn$7x-#tc|uvBjw-f8PB0ub4b(vfYrrLDdLDa+}M@tD;z=BIxVB zW8AKQmf1gG4F#2nkbwlE@^blBhSB<%WCCnN__3 z{~J~$)9c77{VN{i+NJMysQ9ZWII3ysFEW354XCB`Y&k9_T1tT(XqSz%n@R0jK?a86tr#x|7kMzO-R~(I@?$k3aG_|#xK-i ze7iUrY`Oq^Nux6XLWOZ9IhzjL#){ONX!d8SX3IL|Q;I%x%zdYj7`5by8U(I3g0s2Ydl3C@QOouRycRYa8in^n!uD`>W9oZ<*!fowC{0`iz~ z{7`cu6|T8w5se5oAZvlC+8BX^L6%y0smrXF%RX~e@^dr?cQvEK12XlGyxAAs02Fho*aO(VQ)8&lGRzDk3w+mB0 zwE(}^=N8P<|G}iZc^Y&(5%&*QG4@|ah8?%3%8sFRb%*R*=1r;VPxHVgHFg0T&DH(? z$g94SYlK_lsy|nk&g+>5a3vGYkm=Ec$lb@3D_v$+Imh{WuH-UEzF{pg@}*Sp)Lqq| zE*jVjClex|-DH+06%Y27cowC2hizGg@tYc)g!X4TqGmCcB*Naf~BCi?1M<%`ql>~6!X zs`jV1p}f`#_OO6Ii_B#3{Tqk+*tZmz{vUiniN0rz{sR#=y-y&m{Oxq7<|w=ZVs0av z$%X!L3|kh9J1hrTd8`^YSElHtw$<9>#a84$Y}MC z7w%%32x?Uz1h;(T{)hxCT0b-ymD5#?Ef-NZN<4VJn?z(_PQ-|MPn>6mRYA+--QkBf zHy{d8KI2-Qq}ki@YpBd#^t<~|eb^HBph!{at%y5oMQZ5AH}4{J z;W1k_Kui6&^Dd94y~{5mzXp5u2l$b!+>7^3ZG~0XMT>Lfo!ldpaSaEn^@Qx|v3JImbL9#2e|?#q9rC8Ut9G}V7YfetmhbfN{#`>a$@5V#uTX(GNFK}J zpL*Y8WXN`c5_=#8I6I%C-N0={5nZ`+71~C=xK!T4d_eus>A)%q1Z*82*;!+DQD~<~=j+KwC(s^<a4v7r z8MPuqhNvU$M-EPnPCU%$CKQh9E@mnNGBiaRN%%(_Zf{@lnsN);lAVub-Tz7uKCOnQ zA`2B+0(QGgPR&(($1R(Us^orkm8DrmW+KgLwk)Jz_v8AD^5J&j_qy)HYNG*fx+vEe zXwLv6W+tfgyRANr$3NWv>3?z2c`~$k@FEIsPQNa{esoCuHB_sUh4W!NXqumcgqvT4 zIEYv2W1b(5)*Q7^=aty&X<+~SDj{}W*PK?9NnFkCFILrNI-{M>I+$xWrSS9CdhU8+ zfMQ{WfNsa!|4fY6=3%P0qCiJ5?O5>rTvA6l-#-}KkA!S1W^zsP`Da1)DmDiS5aIR< z&hTw?LBvIjSShRfK;`28(ACxVqJ;bCZG$=Wb9=iwJ`4I6nlwE~`ojUx&eWZsT2w|k z`8_ksLP6>i(s|hQ2y!Qt%=Jn%kx5fvGFK*-vzz8lEHl3vbDuRPIs;VB>dCncGh6)8>dGC)H|qE{ZdX-U(pk}TVw zI$Wf3dQ5U^-2043AkNo4MzggfS02VIZlpZ5I*UAd68p+}u)v(1UG~1=9)_$wtFCsZP(!h1WvX$uml#f`%R8gp;i{L@(Ea|nDn4=D-u-Ce^>I2;YPZx zy0X-@H!X7JP%IUhfyc-nPq7p~fBpQ_^W@Qn-i)1C@v<}l&gF=sbQZDrX?w}abF-o= zxE>l4W}cw|fcjJE^`Mk1g{C6;h}y*@u5totGl30-)%hFQB|(N z@@V9w`f~FB0Qf)$zn^_>ryHkPcu4VR6TW^~bFL5du7kWFdb90~| zW@dqx%Waawx=|jdRIGxjgjhZCnWs@d;nCrPLH+!+57ZWaD;>%iC<6M7u|Ni>> zaNn3#Qge(rPGj#|Z3CN^dZw%0%wmJ8zs4Ug+z(+euQU!*!DDIvx{Jr)!1fDuF;6H- zTHnNMz)iknAN&#xzQvE`{cDdT_#JJ=V z-n$rEk0oLve(SXfC!n5L>^pt91mY=sdlP&qx6VcdY?j%$@6V+59c-yB<&aI-XZ5s~ z>xyYF*B3Z#xwu=ArW%DVclz(b|GE!%ZmS?=FK{s;V1pZBhVSCA&q`KMsBt+9Q^BvF zVsnhklDzNUV01*%a>dk8=6G{^+GxEPn_&K3u!`f`wpZ&951GXvYZmv-H1IgCQS)*( zmWD|ai`t-4azUZv&9Ins`r$12_8~qZi)hmiRvIV$Q{!*Gk-sU9ldKcE(wxsvyGqYj zVNCC)L~Nl6T{B&ibAPZ(g6|^^wo9f_BO>r%dXQ3= zJB}YtPq6vii`O56U9HR2kL97WILFfy+s-Vs7eih%x`LN!kKgR(P_c8UFt`hmwuV*sXNo&Hbb5|AmiC<&K1np(W z6+eW*c0Ub+I(O$TO*(1*#jR}0nUZ8PP5F*!4h<^U5g**`mLJxpJBjK`U9VaksQB4% zD;dAn&esqT<)7A@U)SGnHikiGJ|A?QvVrGd<2}pf9B%IJyu5y<8gA-@ev;pF3v#{P zeEFK*_jo9SigkEt9+^h3DF%^DpNKSNZWC4N!d)ftDmVD3XS>Zk(W`G7V?0_%VrI zbtJOnZF4yu4vA`cdl!H9V9GjeOC0B1p(~@zk@V!;<~2!2Z-V{oho=S+0qR-2@ z*Gmb7u)p`gvNB;9$}~e6N)m?PZIhF8DNyR@qS%_sct(^uBFY>0e*IPtW1YBgwc5;r ztvRjvXHq<7iICK_9G@y-3S`dR_%5rS7h_W{5w*Q z56o>{=mP$Y$2q=ihDH6YDQ(Y8=Z_}v?LiRoWTkw3afe1aRr%k~Sax%t?9pxnB(3{D zjA@JR&kz1dtSDKWW<$3MSsjZfNTEpWK&W4CUPUM9emVOtPMH}Ws;00gL#f(1uOvT` zA?cNTsoQdzaL=$_>Qmjee|mjWY&H6^_5(uSy)=Z!e)qC&dr8igVvEVowO_4UuIHga zz{BsgTMh3%nidnk*KPIn3&Z<>FKV}j^s$B}@u7aZDx0yXY4xo(mjC;Hn>=K10I>R0 zx9z{|?mmXw&^GwY=em9T`F=C~YI-Y1J{+_zW^JKwc5NzEyT{FT z|LbOJrK9Zky1m@Yf>n6+)}Y(WC{$%~N2 zO!oP;=90}U_EF73d@IW!P}0|9nT8(RDpcPHUfb?&UKqone7qC|^IA?!&rFKud2Z%s zY*}gCE4G<8dn-~Aq|eR9a?^$9Ez1VOvo7)0ByD(e;q9>#aT>1dPLRy!LxP9Xc#Dd2 zP?u}OwIqJs&E00T`S8`}PK0$6*8AlX@_uW`OJXORyP~E{*0%pQ1l}D?xKAMymlQIw znZNw$2BEf%-k6KoZ<3SAg-@eka~{r{FxW;QujpEpYOY_KhL+(*1?8-9E|cykx_Y?W zXV4$x%X&7|Q64opRHxg_WA1$(e3jhL5BR-X=iao~NhT>ThL-D|*UrHuJL zP6PYh*S%j;x>jyctX0#o{S9?{J4=G?7tqxj6dbE0$kD-FK|xphm&nB+OvY{|A%cF$tb^ZWhgHikqN zAn!My!gYZs_OgWaezS^OuQobT!Dhy-sVRBvw(7v8f(`UfI$w0cBp}Vl*0|B8s$Ntb z>}QXvleyibEUt#jP3lwaaK4YhHcnI!$50vHZ8s4{Mvbl5n{3&p$XXISR9#!k7xQ1A zSL-;7kbo!BPCpeTiJmTfy$!?LM8hc64f4f&hb8`i&*AoCw7TUIgevujqYZ6vsJdyT z9OgHX5D>)r!*0KI$!cb+)+FzGbr(NTzYSKd?B7tKDX`pxdv!2B-@X3x%bzSHY*nHj zI*9FI@76s)2whg9s`Z8xyf1#YjAI?oVjWkX4iQvS$_7DIog9VYjqc^2-`*t0LJhAC z3uoH`hk0_?nR3DdV(y~$Hdu~f=uXjXm8M=5E?vgh~A4!;J zlhK-w?RKylPs7uD@&cRJrNKnGkLP0eX1i}pf+;l}!jqXhhPRvjX0}=Roy5tL0~X~$ zJx6e`ahz|i9U%xG4WA+qzudvSP3*VJ1|8c;k~GWiAbr}Qdy|BeKL5N~&LeQ{5+$fH zSh9Dg7BF8$s_?l7CaRcS9j)6?xOxSH_$6F^__)_=iGjrF1{+~@aoA~Ngz`hMp0hX3 z1B~_sh$Z1=uzDG;g0JLRsi+l`+U9=mUZLO|swjVRpWGsR|8X1cK5kZXhbpgw;)5`pH=n*jjMVDkk5YF#3N__!m)GO-7x$`MYgDa_0m>cpqn%Cf!Vi(qwyksB zQZhsOo=v)eB*?_SUj$nC*LxqX0}qFoaXa39_wtxYSj0LI-hF(tiP*!YDyo}H9vr$# zMDg9rx`~H91(r;o*BcM%kZK0=&8{Xb{VDt!-%0Vb4ki9V9%-G7HsF9r=(r=eY0H0 zVI8c%d(h8`Y_UuyRjT~`YV|cqA`s3!s=b{icT4B;DQ4=`m6Caq|jpW$Jdm|)u^wkU&RU`B~?_MrHFLxVXGg#>w{rP?q31Cl>l5t(0PGH;0G<})j zhhSR~JQkOD#DQb}=cS73-P~2)-%rXMtnWjYjoT{8;m@C&y8M!*oW>uc{LRwN&%69f zcKM0NB`#;;rNl+gLN`iX$sOih`7)!-N9B48;*bd?LRm@_QKaBQd*4Y2{6@pM8Awy4npX}155nmzzR?oNxgGxzwfC795ud!Q{Qo>u^j!qzmF~OmJ~oGn0U4R+^C!*=*_)U?GF=`Co=mwh})e06n<^k zyx+*IGT|ntT8k%Jbzw;)+O^5>nPzDIxt$zS}u(R8_5?w6q<4I6*0n}qFpyZjspt{=j=Jt^O%CL2Tm!Q1ufYg{gV zWNw$(F3M`e5skm5i}q?4anmGPp|qFAQUWFhj9Kz>kTo5KeD`1e(`5a7m^6Gh;dU9U zqPFHu9|bWHHF)hvvZFk_0{CbG8gkjl9(-XaNX{WeSaX@d9#4)k|72LDCnr~bQUa_? zldNpx8Ubed{C>Vnc%t9U>MwUo#Ol>Z3|Xiw?3--$2WN>+Q%yY)Renv9+x3q?8S=i< zUlHQTSp(u!@Y@fO8Xf)C?9JOaF^uX7-0<#B&BP*@QHe&xnPd|mZ-RCiVbfuDei`ta zId6Y^!SEC(jOXWTWzDK*9DnsC>Mzp1P3e;|z9=equtSQ?9*HM0eebPCl*uNTe-~+m z(Q)dtZaQ9z>cg&++*hku4O^`SmqsmkO-`?>zuyMY;?6wtJy$T~AHra@|M=o#IQzuB zSqYz_d1kiOmIl;V?2uG#^cG>oCUQyZ#(AYHyt;lJ+%8vNOH*iO3#F6vN}!oCimD61 zX}KmQC?XZczpTQDF4xTB%I(&Wv8SldmfE!Ruxv6nWR@k=l~y0mofso58?&=UM6upq zU7MaM$Ct(oQHcL}dvk&i!h@oPbY(wZ#li7L#|#K7-;$?|c;JmlUa@%$TB&;N@Bjtq z{fq0H&FoXSf8MMEw}vvS=M`tbJ#bpVvf*eqpAdt(J490GViBones-?-UjFm>JnJG8 z1B3e16b5wq|3|RM-obW*1Yd4Gg}>%(Fj}Lm0mffGhU=f#y9gb-#WIfC^TTDb z=Ju!&q&gln}VF0QWc(GUlm;WZ042EUNa%gFW2)L8|5YD7}rfw@ja;QrDR=5 z;7$0B(ca6jL6`bLawSG`xOE-#defjoyvDSOw`-CCdCiUtulG~0nh6-u;dXNud?-ZW z5GeD-YJyXS7@s0dY+r0DO6|;zB>_rg5rd?vzBI*XF^5L|(WG$Nw9UFvM=v+OuH#3U zBlc`~_(^}P+dj-uZ-TogsTSl_d z-NrB{d^jN9?+AGQ>Ge&q$>_(r?OolxxG`{s8HAF*EpY@+y2Y$?qj55+DJL`xo#hl#J$+M zd^l*$&1YHqsczfXA2<8Wy6VU@m8#ui<{cK(%jo>Q_A{SIyOkXv*6#K760AIEVgE!_Kv6!_d`EFEBv$2OTz6&;RkC(SQC^NbcDm9oHZl*|UE>t0EXxTxccNNJ0SBJ^5|FQWH;b-@#Tf*W+MnadiuW5#ULWpB6I9l6(3RCL zo_3ittE{T&;EMgsl@$|bbRBYtEj8Bo)?*Qdy;C6(ozbFfrz!6RP5tI$unjA#szObO z7J3{>*k|Qt<;vIIw-fHx+3%6d!hRQlD1NZ(C`&1g%i`%P?M6ANaFCfNs#}QsFG)>!N;)#~_5s61Rdj6lS|M%xVMkMm-kLJbu>!-hA{#ET(i(OVaQo_l0`8nK{ z$`?rqre8FJcY~{yXOwG#r`1us^Q)HBE?-tHLZy!xUEfbv%iYKHT7g~Jv)5q;l1u&d z%=lA=XTSR$zWQ<(QIpp;u2`g{c%ny?v5iua}PoY&*$?pDu_O3EC}1pT{+Qg?!2d+ zgp-_7g)Zw+mPNhWTsB$#3N)ML%T14YqhsvVDJ!2O`zvV5u|ip`GrnGCr6dOkG<2#R zQ^&;Sor*}FNTZZA4q=H$C6XlY?W8=Vq{jzv4<2TTI|Yw$-^NpI-fwKnjxNqfHiv;kTWG7=v=$dLn$uMMgg~XE@0ROe`_*A- zbwS$#Q&Y6e^lN^x^{4tvPQ%JhHajt1{=fb$zEe@U{JE)E+O6ISUD&uG*|uExhCt~N zo<;F23YJPtEiI$xTPVp(p*fLyPpVR+O-uRj=2@o(|K)1H1IMlBTfhNAX|4#IZ<)GlS+uv>9gEFjwKb+ zGX4hS!PxtRf1HHz=DVYSYaN4E5_Me&yz>p!{<++$_H)*trk6625G0ya{o9oGti59UT2gC*Ern))revJ zi8f8kd9l<%XL^^VlLhrNz$CB(ifVKe=NI{lRnO2X|9F@raOLS z_`&DOjT%8h;DyhTUM91R{`yO>EtzIq)HuobgYOj4+cW;lV^Y$ic}kQ=PVFT9R5HO# zMdM5}C48q$m7f*<=`s2IAgmkvdb_#Rn;ZX2cvk5iC$((*oP4aY*Shm(h9CTPUX7t_ z_i^(tyZ!jBa{pD;5&}>~>QMk{KP&#*n+9kcPRAE`NX;vk$(ws+6_Ns3Kh5oJur3Wd zlOkN}`SwGp*E0Uj<$u|1KSeWqxh!=->QdR8xDj)-Tp$GB)K1RzXLG@X7ZvoEo%`vZ zR$)?6KT;m%#8+ea-G1aVw=hp2%TLmZKQ2EQA_>!EccJ>MWAqdyIdz}H^m=b74&7UQNUOHrX^C6 zR3c3m%>{{YnvT*?5iXdE@!?O;j6Y@8<7OXiQhBIBRG?7f?Yi9lkQU0U{rmq@y3p_c z&o^1v#^;3!<40S9LIKle^-GMF6E9AFCkm_`;n|w)CZfW zD$P?FqFVlU_}$lid9Aci?S+tMCXcxeiN;ayoKA9$M%Byes51GxGHKuCXLe>C=ron5 zAWMT^)pL=#5no+bjrZ!h_J+mr2FIq{qz~D$UxMX6`fNw56fo+1NkdZLS;>d&aeBXA zm-Z+H>^(|>VvqWR@dym(_D*#fd%wC&vFpsY`izUGaSAGsuKq#%JDfjvyEkkP)k7ok z0>*)i;>nOd54(!U#{)I9++2RSMOqTb5P^Km;V%3eLS>#-HLDj`gkvO1yQlXNLZNUDd<}jx=1< zS7=Gr(p_avirdeW;z?3Uo<9b=JqhuiV=>ikY-q9iTX|97YqrKNW)m-Bb-u!TnwC4v z%#-|3j%+E?98VBdSe-xy<$RIzG6-)s>sRaf-6qLzcnsiV`%t;9DrE1x$n7*4ofG@m zE^6uu>TG=f?36A+;{cwOd^nD)(75FPI7(cJabicJSmW*r;d)+re7y`;^U}Laszfn; zPVz;CusyT>oMWW0n^yOmFKM#M7DizEkQsxMFE#H(twjUJboD=B+=7NoK)`7|?Jh*3 zUWz&XElX2R>P~eyU*6xA%erxiyjAbVR*?EF{phVR zt5f^=d>+5Oc%)^_cA^NY)KHc+k|Fh$PU#YLIq4oLQU8ZW;f>YVLYkqS--GvQCMhg&9w|*WV_A^M=G@e8Hvwvtq zW(d!WKY5%#nURAu1c}kL$8i;MCMiEIIavrPZ-9<{XQ%HyLJ$l z6FUO<9!i!7fY^sP*ugY+lmNMS^O7Chuv;CSy=s~H3GMyEFs-c?2;lxMVr#M8q zo{;~SSlBMjFBBIj)JUV3j0>9NUrLfOBL~)>(=z6KLM&2@(#c7QBH=1epFCG;X@p_ES}z~V-6t;mKHL&wUl{Q z{;euseOjZ6V;PDczEc?H(*>QU3p(k?rwcky7j&L3=s27{;GIwRb)N3)Jl)rMy07ze zU+3w*PAw6-EDG`kx{X~Cpv z9qJM62_jQWU1d^$zgPv!+xOvZw8WMmV3I^Lg)=D5rH9WHeCAN#WC`?NMbf~r0wdz4 zA0cU9tv_#8pTjwdyUTsqdJVqncfxBZ3Bh~B*&|ennQ6SKq$pg&hk%F$gY zZfxyp9Z_3_2wo^$>p(c7V>~$&PU#enJA6ie9LX83mhFNa;TnoZ6d2IKKk72dm@mJb z?!s+!P#?^;gYL_FOyO5|kS?zz&+P6cxbS}Y<)>1UtS*&-&i%SFDmW^W5$jI){LwGJT)ixvRZ_rv zr&i&Y<2;v*q=r?mu1YD};{vJ?dRajIlz&!0ey{(gfEr3RSwBs~^Dze=yQ#(McLb!Q z@eu)PrTTQX@A3i9q}Cz+$Nw~=tZP!uxZd9IdIHtug6a&R^bk*3HVvxH?9(ZpOEh$( zHaXY_yKrCSlcr+49P;ze6{+E=nD4Rv{fk$c-@jb$J{^CtO1o4+y)Ua)3?&Z5#&xjW zFRQF0X`xfun!jJ}WAnrbwxZZknxN%wvx{Hst(c%Hm0g<8%j!1?P$om|%WV?*SlVS; z$a_&&_YuWy7rRqFf?Lt4ikegx1geNWQ!q=%epv zTo(0*_wTR25BCS!5eoLQxY-|~A!&cN{-wm4$<>TDO)lVT+0=EP<^Sbj4oQ-mbv6YbTsL!_5SS^Q;F9gCeHo#+w8A)tDLV9>t+^vk4pn!k`kFd^zxc5 zv6=PvCUw+24$~kCuNQ&nf8)hz+QE9hI@+Akc$$kaoY}RD_-n?~klGiY<^R>mlSBj{ zd&5#7kM$IE&kR3g!`)t7-^7x8Ngrtu?j`+E_f!1I+przO==o|H9LZ~tHeVw_hDu3M zYFA7P)tPwA`Hp|Sn|i9rnp0(?^eOe6zTvVOS2r(iu1+bWmUNi0mdA%ldFD_qmvOND z`KMA^`}0pG`?}5Blr^mY$(h{}GnKxUyX-w=Noi|4FS4k#PYn+bH$;Xcv_OCbfXY<4YmEIG=k?B$ zoR~B2KmY^@g63t`TJ02pKwQ5W^BOajY;@f?dec|Ybwg+7u07GE`L4yCS03mrX`w!> z(akLB>UCz-EXSbxYUJu7j^r&gf<5O?2cH)y8{~;Uno!g$3d~n)vnd>h`6ZYex|%~( z{~Ctz4ki`KnSWQBxXPLt8ob%_J!u!tW2%E#tG0g6H^IjlK2Khv%HIheTfR>CS@d)A zX9u!pPw$^C=<9?oxc)@hZG8$31LW%5o2skDN@lw?d8uDjGq7p%VR#&zvM#i8sV2jC z*3^b^<<#4Xn@p{!%br@9t#rop%2HKR ztSYglSv@LFwS3-wx>c9l5n97(KJ9k*eU;6gep#}?5?FP5mI02SvaI21$ig!gMO9f| z8}+7QiRA00t(5AncRs9v&%JK;2y3ctyo&OJ=8I{y;Ott#N5Nsl>q|J!IGaP1KB-|D zB4SnaKsEyY7xkSkm_j&r6tA z_lm!|IXU4@<@O$*aP^DjK?dtBV+KjR8aMJQFL30$#gPMT@A;n0fgsa~c_0K+t04px z_}5QWKIZ~hog3)(D1V`r5^Z2$^TL0RlW$?GW zD{F-r%S@|##b4dzq4vyY3kPiz|LlT^g60KB%gfZtU=@?2HgM0h)$9oJTmPOQU(UUc zm%Ff6`FI|g!1QN6_&7Jq$yzE1Uo|o3>Xw}l9T`+TEiD*a(|BOrJN`<|EP5x@pi%Ha z*_+m6F5bQxbUzb?M$`?kaDue^Q|)5M$ItRhH9h!q`91Y>(F39T7*g*j|ACqd=4|Tg= z^8o|nVmg62uX+3AB|a!EDw)4Km6D(tBOuwoTFOSes!p$mv>I4Y8j@evX3$b2SYYrs zH(?y+k4vCveziG>!OQ=eKd9AH%_mDG;l&x2dm8dB^};XMCHp9lx1w z&PwJs==q1WSNm!nQ{VjkZ?IuoxX>qZF)?<-X6h2R%~MZl3$U&%Df}+R`pq*d6&A>O zr*>}I>slYPn^>_b_5%yj{F+bbGBh!#vW0RN;MnhH2I_)wEaS-fxC3ee7v zaq=PlK1pf@45a@ zGi{F)oCK3#$mQ@EQKPC@Rivn{#)=Nr&x#SD>P7n~P~9yzNYWlu^Jq_J4BqNyM|G;A z4I(-1TAR_SUUVhj$Qnwaji&0kfu&TQ#DljH9d_jbfod!1i}OAr7=~el%J$l1r;S0 z*{1Dx++!VC96`YHdJMGtVmq$t2t=Q*FpcSgIE$T z-)%W*vX1Kck_Fass!ZSJ+lX+NRuT5@l>7Ih^1@gl`nn@E->RO@Pk2iWuD%LFb4e-w zsKJLU?1hGWH!mvivpwsNIab^>*>JIq!}KBhj7Hw`Z`Q0``h<%CQPcqbyREGatb<0aB%AU@Kn=kdk?jhV3xh9e4)-F zwg)-)GtxkaG7B-U&fVCK0r}7IVB1~T^E_zhw=R{Do-}4pfpXtfPk{N#JAU(ek>Sg) z_ewwK7`oE~|H$$7%hHwI__WTbBEIrlRm8i6Z|%nK_k2(0F}3JU)ZKHO9p`xfn~WU4 z`YGPdyzAI}?wyEYp?PP-?aiL=$=r7yJH4@wtdhZDZ43^w8^=+U41*lF-;71EN>;6l zU758s_T%E}Snt{|kljUh_=RCMU#8-asw$nmSXSu<>s6?`q4;Kdc;+z>S*?|dJ3TS- z$7&+1G;i^LW3e71g1Rn^=FW@4hecLdc)eHoxZ1c4<wX1O%KrAdB+2W)6D90#e&iY)i++Y&oAnV0PC>_p zH$VW^n(#!C!nPvhx65gqhhx^D2Nj<m$*(Oe1 z)N#Y793(j#a!A%rv0ZLnG7%A?Xt!zYN~on3PeUrM;o`i(bemGn;WMajmeWobT5NJU zK3(WPSomXDf5jcVcleZZ1wzef#L}e)^B!TGu{{;`r8bMJM6L!E6pF46BE?L_-C(5H z%GSk@ml8h9c=C$pUB;G|nl$I{tKPJWg7MxezZx82Q(F%v9Ay=v?3b&Am1wsTTkh)) z0M>D^aebRBjy~pM+BI87sIRVwqK=mtb?gO8cY%TaU2uhwg5C~P?gE{~5>`(8_68SL z?*1#>1uc*5@o>l~2J&#%pXV~geDd)ed`W*|!%;o7q7;xPRXnd=EHTJg3WX`<=8G3f zp?55m2{@$23g8O3Qg0s!0)!Qw6;+~_i{OMMCV@T8Ir`G;)bs8Q{_&+JV!M-=hn?Rw*Vh#cl^B_@0iEc z)Y(CM@3dU8F{ikEMV1t&Nz#O8Yr+e!YxjA)W;Uzbtnhr6l%fl*DqmNz_p8%?{!G=! z2gH>rJiDdqtdjH`dMn+rUM=F5irUzzy{mn%K>_!W>o0>dF3RWO@Vh7(-h*^scjVPm z+KI{Xyf1dIL7CD`x7u;x?UgFwTvFt@RdTQTxznP)ak^%OR1s%o>Ted`YgELIyLdII z?gM}6gb=v-8~41AT=Um=r!_e#zB_fa-F!Q)?b}exBTkFZuQkkv7OQr zw`QQ=x@naKoHoRxQbXRyh1S?d@xHD>RmN?TeXO3#+PCg*`Oj&}UWHNJ7O9Fj`=WYS z-HF*nTq9F9xnpYMtnQ6d%UpRxQd$S!V5?rZM;Gq6Djzpx;=a<34Cr}Z>{f#^g~JtT{vkdAz2nt1U!sjjOhHC@@4p_Nt!F!RD;qG-6-6G3zqh4DU3ZEhUR$ z?g5S<<-DSvCS@5nS3*r_u^!UGAQClnwvQEoWM*=nGxeCUcDBJD-Yq~-z^l7vw^kd( zZ1tDpaZsPeK^9qHQQ^k*j@I)0Vu3r~8+N{9w5R{+C|p@g*A_=8^8qHe zU2jdMi9gy>^s6L_k`J}cCM@Cjo>TS^CiSwaD&y>IVLW65HspeGHv4R%Rk&11rHom% zW2%p;L`i!u<5`5h9gf5NyT`o2_ok?W<~ZX@Y{~}r z;pFP|;AfVGH;>;1!+Tc0Y1e(Xz?KLBW}JXN1nH=2QYbg2Q%9%yjKsugK6h4PXtDE~ zTndeJc##Wl2@dxF4zusOJE2x+#cWzaVV)fRqj28r`JT8c z{xm+$-e;2G)oqlzWa;y_Nqm_kd9xa1VTTh*680FG#%m+T3*%w)^ zG?r#xo1)G*1P1&gFVAi~Q%+t~#v=l(OO1 zC!bIsRVANL?-x#pzgPG%UrGt9`I;L5E~Zh$iID?Ajoz0{WY&!Ub}iL+1K6eJos_Bs zD3!TS=DRVV(6x#Qi^F^&uoOP@&yZW@&j3xi3;ubyN+Qf@Yb@^ON!>*})@T0Pc&q|* zU&*7t-7Ef@=W-sm2may1LEGaf49u+|`bo{`?XSF}w+qZWdj0KQ;l~_fFSPF;yQ8^S zmN{3Wsf#FazORTFamp-UxN~aQ^FNy_CZyP*D!LF6LY)8eFE}OfemXZ*RlKjInW`!) zD5$FV{Pg6nX|Mj>T(nlxSN{Z`P42kPkOom{7cRf4nN(jj-s$ueoOdG2b?j9=on!JU zdS>U2vTur;akk94Xtd&dnNyv0#>{zMJZEOVJm}poc*e}>o_mC=ILJNz@>elLCCJwu zI4cdRvhLXj&+OvA-g}Ol73;GX>)iuO?>HIESSVGjYLRp`)&l8g#l=xC+8+Yc-Es$P z532bgKxYiz>SnKnD%#)>pj~S-qmMcFCshl-tw8G?Wlv*uo-IwwR`^Di2WdY0D4SEz zF~hTT9L6Zse4q0D>4K#p+O8UT9%{dKPYUMY13TqY8SybRt={{UlQ{A1VD{K`q2ft5 zCmOk$7%f{z`VbD;@o)&|?`9tKE0uP7&Nycq;tD(EY6nvBO>tZ^0}y1HV!D~P49>dW z*L`XgDfCY4pw+WOG=|N zcLxJvF>JbP!U`PdEr*E*lSdyZ1*EVERX{GU1cl;tfB6GUH=gT$r6&pb8F zoCsC0u&d6x%1IZg3T!Kew3Wbf7o>254x9{kuP>?fbo;(4=IArpSXG3ztFhVc0k~eM zc~aow2X;@+Vz_}#!s~Sy-_K@uE7iesw>d*$CtzGqjj zt(e*J#k2ANeglKMuA$!Uu8S>fNi_$M%a0Z@#oIk5hGdgKLckrS5s6p^yX?bVZO$-Wj6+gWjpzKyRFjb~f zZ>ev-V!N{Rbu^%`Q8UH8P`I>26}?b9NsRzjKa4t}T1U|%oOxx6To!&r_qI)gu^00>8gq%Kgp>!QM3b#r(9L)_&j~|i{ zl80nxah@)oS!dRuN-ddyU>zgee6z8?DsDRJ`Cj>V_4af25Du4-ZNRQ)!}AQNEGH(v zNr&mM{EbPBh!i(sX=g%71j4StH5S_9pc(h|0Dvu79iWg5)Ceyq@MQ%w48l~`!>fFZu zNR7c1vo&Acr7XKkqS~{N#j*~63&M!+OpWR(mR$g0Aoa1)QY3-$!5(pIs&mXiHd*hX zQ6KtGvB{T<9e6P9@A;q2bF$6!q=Ba7n`?Er&AO4cx)m!1<|dd%d82&QR@r&c;kj6& zo88FMkWLJC%XPhUhTta3IH^I*g%-7<~hWmes_uyM70Yj%e2-g_*jy9rA`)cz6wT3 zHVZGhkp1P4>=9TX)CFKkM6EaXL^+#5orqVoFK zY+zPF=Oo)h5Jqr9rb#WO!mR^zn~|V6QT!@o(Ma#*9ZAxjriwXEX9bix1>M!k%+;gS zXNsjE%hHC!hcK(S->0E~BC8NLWe0ICPa&qVwZ8SRt^Olw{ArqicHZS8VG~=ZP+Oxj zigfv5w+gh~o~1bZ9xo9vU1~!%XjZBPSq+yau|ut=Fs<9H?G%Wkt(Nmckj_dA0!6B{ z8~ohTZ18tctAU5@(|}+%T+KmszIpl&-QQ9*vy~Vq)*$7Fs%=i(S}F|GP|`p|wPxQN zCX*SrWnhVC#cyhF&@&&ZVvaY=ezE6y&~8I)sc8_PR{?0*?E8$(nq??bHOu(9HOu(B zILq*`{VZcQ+ySZ1H=kwQ-%>TRXBmn$m}OPlyxWGY_BGi!pq)|~(fC57E3cb_WXr8- z7ZdGgGjJseRUu1OVPQ)?DWXd}ZjUe79d|L!K$>IB>ba+?**Fsg8z9ZpXj3$-Bguu@gqQO#0)04Tj0ylkpH;S;^#vghwn=9h%GKuO968yarZ#JhN@ilv3wQ(m{U|u0< zFbpDg{%(~KYPC(u$%o`OAA;Ig5?RENK_7X2<65~DOZ+*}TZ6%Ckwd3GYFU>mo^KMt zv!^o?Z57M97L6o@^j|YVn5<%+uXRXl{ny24Sh38rjDDunI-f_97+x8%Y$S=ai6$dr z*(PGKH2LLOCEo=3@b2v6BxPA9t>$O3i)M&#W%)H7qoT z$A*#e=nbaLY<*5o%pmfM>jGj*fyYP+2U9?RM_JF}!LcQq+tx}4W`x< ztPG(tRoOvQ=4mO6O229mNM*WJ2v>3jHg7PMJCurg8w6D8!v2sdr>+J(1nFoE{mVKy zz6`g8wRAH%GAQy8#IY{Z#@t0mZ zolq_5QxnApO96wvrEXc`p?f8H^V`U4FCky_?(qeQsyZ3l%!|h9X7;MCHIcM!NUq~f zQg^Xn`98tc7ZR@I7QOj5i!N<~4gywc8?;;A^F8TGy(~`cHrotKNL+#eagOONH2H@j zvr(uexT+(|vWz`DXCEh_I7{91&fL-$j>Zt=ceSxv{QZK2+d0Ml38cE`{MjjS?gUke zI|VwVL1Yw4o*8_au;!c~yovRr?);QE?cV1>`){GD`u!y?0Fn|a!IpH{CmB>bK= z3RT82j!Y)bq}56artE_I3;+D%W4C7%$_@R|`L@~W5O9e$VTlUcCXz(mm4|7S@Go91 zxOKwEd!?UqU4EFBPdQOir?pJ#WMSF5U8eFby42A?=1JOg5>2z5rS(@4>OyVK0-b&2 zRm4H0uGFi#6T=j9wKxpPb?#oTblx~c-FVDk^j#1ITqc|`WVd8h9m2JQ8BA*jRrQT; zerB;*yPWU)t2E#vA6i#h`xz^?HJ7DV~o$sHTsH{ocW;tpG%UPobe_cqBfAJOq> z1Yy?o^H%ju4Kilkv+gbKZnvHSdo?fI>+a-T-9PeerItFZa*mjI@hTXH(PP6K$=%}5 ze1u(}o{YV7aAi@qJ=(Et+qTUU+ji2i?WAL?W83T)opji-ZQIT}{oQ-t@4l*6_1-^c z&sC?+soHzjT64@X#+pkf{nnMV+7Ms0@^~9(pu_=l9|PawOsB<=i5A&4r{3TGymaW?wJSs`dP7-hgjaFeg^l-3H}_MR#oa(%N%*#`*jnsveCkNEfQ>K z(13xN1xX{%iEyv^nN!mZINZ!@+l_|Zf1tP1QBiq?=8W;%vb}Nt z3p&x1^Kqt1wERGp21p&k;dU%W5BC*1edUR1R+EJSma{GR+?n>)DCxoDtQqP$C!eeG zd*2+yb`3%Y$PlKk7xNdMp@GM@`n8#1aHYqa@3zkB5|Nd3+fQS?SnCiSaqV>a19o^t z7TSelP^}wl%>q;F)tI9{p2ZU4xY?@g$7s#kECt;0YP^+QS=K|_9D)I{2nHBVG1sRB zYo%XKB!nwOn0hSTB?Ai}^Ni@b(4rZ?q51W0$9CK%#eTUlorPzsi16va;cQ@~+xg#co zHX&kfbkdFh_R06j#21-0zq{^#+%k^GrYIwyVp8S`DnvF9YP<~Fp5Hl-9P^jEmhITv zd@PACN4b4?uPgUtl}JO-Eg2WCnS2B;u)>yFQHZEOVNuL>U6ifHb$BEmF{ z^4&0>{kCm+{>WfQy$vu2r=xIQ!yuEXOmt_(7k>{OG7VpkQ$4ah1CgF1zy0}7S`(t7 zw^KY9CUjs{ZE*8icReLnP)sGL;$M>SVhP6V!G@jlL3?U9n%zY>bsJWSiNeZ(q1{+vdB zwbRu_sI7B=MpJKFyfTzrZC3f}Nw)@7O5_YwM{|>@A<2qWdn$9cFpx>vNCIi{y?cr5 z^Mx+Qrwrbg3St2-vof5dIUK5c7FqL0tX|NGPIbwD%j?c;XeMo|_2d{b`z;UT) z_PQ;!zHMDwB8jZN^+C;M-NyOf-~@nfnS1QWBMxn!%wbJ^Ha+Ftt_1kby`j>D;Go6# ze3U*7S?>PCebdeq?OO%QO97$_EXb&LS%12YKfST*ioc7edi{x-;?dAaCpWui^Yq2i zjmmp>mwJuWua^Seq243+p7R{`m2wTPdY_*Usw}&EKjdB2IDP*f?F|jr8H`xesba2I zVQzofZ&RMM&9O|XWCy(7(k#ARv~?@Kz?+iwsqcTkan4(Mrsz6&I0N-1N|-Yt*@aJw z0|QkY_uI&V2&!x7z^^pDDffU=*dwe~${zgj3^xM$_BU%${|iq__^tFewMm=E{CLRP z<`>Sxpi%?Vm*suTZ*2~bz#O%Y5y8-x>&bhF4iUGQl<7q~epUAGSg%>Z8EizpQixLT4|e{Vly88fgG*4f)h44_rLcHhv_J?tw(Smb2dGN%l5CKXSEv z7wP{pXIB(Jd2jEwj_}4>cgn5Ykek1?)n1rr2^fv1ow}QSqYTRcmxb%gUEqnQ={Bd*|*v$logLHbAt3!4qVnq|;4XrmlQ* zfsn*j-wF@6+W}`h>N&gM6ZtuLE^UA4KkLD@+DQJI_cvor=7D8=T`om5#Y8zOEQYjz zyUzP^{!XVZjM-BCeL>X3D2BJjk_*yyoPDd%`p*-BCT7^Ib(c0;(a_GQ| zxl5IVx_I2Km+^?+GaXmIpdfboESRMoam1}2d6#?zE)EDfuT_Rj9{+ zk53mKKf@^_8H$s>#NZF|Q0C#7;@=nPhzmL%G}xJ(oFbH6(j;Dym+U_+M%at?==H2J zs=mq8Ax1ItM&I4v#0RW&$z+(VoAeG?=y<=LUmtU^E}j!pJrdxO)pmX8t+ZY0J6i?# zWcAe)ESU|F)VKq5YQ*PW!+7!_y}ot(1b8VZQI#`+oI)y%BYE0KKPDS_4!_+|;>`R} zuyTlX=hveR#gFucGvdf6da7~WwwSU3^yBF(9O*{DE=Isw*xxVGWZ*b{Wh1Iq|2BrT zEpdz(5HM~Cs7X7IW^|_>>6Lp!yHFfInhmU8t$~G|w^uV;)w7(VG!v}qD2$EC?lju3 zmK0t(oa{*B>c6IOu1z{g_PlaF7lBkfvwX*2hoB)VN1IOvcY`Q<7{3=jy<&BNakWfk z>!dKKm3c$GkgZ~!!pN68y^^fzExx}jo$a(yPe<3=t?iu92lP{vUm?x|`t{*lRU5nX zQ?GjA_E4z!l8)O93e)K}3gGK>m%%Ia*S|i(4?qaAi$YvpW&Jk)Zkv)dt?5IYFpR^j zf?u#ULvS8vA6^1{s6t#|O;?p)>YOk5QlP)Du7l&;up{u)j?7Dx);^Xp29-QC9m7_> zlSD|N;JCq@$O?DFQa7I2x9O+Hq0PoMfAY3vgWZnun2!mR$`iBb2kym)!To5GPve-8BPzXU0yAK$&=xJY;iEa5*tLXB#UfYTK%|Qq`iDGdy3^m zy=l{Gbzxpz?tS9t($?G2X3l#rIu!qRk}f)9rZ5|Wf?*Tg#z@jN^!PlS=2RgTABm<7 zQ7$A`N?Nh8M(=Ios@ohsUUZFkA3?~PF)>8sE3e`|;0WW&G_9<&BmT!JJG zG-e`}_uQjo1{3&7(Pkoks9Z}>)I?0BNi&oZ`Fr<2aXj0v6lC&Z72)34v32w}Hqi{r z1r_HAtux^-G8+6ns=M*AjS|H3nUwL*dMVr3bEg@jk3H%>4|Q7DDO`W3T5neRWWCd^ zkabO3-zDEUOA|+tWhz}#&e(`#o|SbM(}A$YNYhY8NGbGJ)@*F63#d;S64P)>R&^uL z|Do=?vha}^!vD)$Twh#Y@RSy8&|}G>L0r{_Heihd!*2lt10|i5H&aBa={dP~g1@=h zCii~Ho}#xYKAD&h1%Lurfb)mQRvYBHT=3!|kzb)+gnq*-)aGC|P9GM07<%jz$t zX*EvXg{7IaLA0vl7jmXb$59%=u#>HlM_FJG@u5NqNB5IBWtA{gzQ>R-RG$*~@8~~6 z<@<#+aYHxfq!9kqVnx^E8UGyk5NWewZMHT}o{hzY6HK|_GiKPk1oM5THUIdmmUaD( zwQLK{{v~(*LcXt&!ftRWJSfy*4d$PYnch)CNbo%T8qA9j_zo92?q03^$!I>hYQZJa>YF@hoLjt*YiiOqXph&V8%CLR zP-zMEFoPZtoZ*GC?-A-V;ODarmXwx91r#l}EYS;OpA8^;Kmaw@8#_b!j(fNT*-D#) z2f*2!ZW*uFxS#aUZbtV}50~w!w}NBh@QBS@!vbYDZD-kOcT9eFh?vQxX){l*dRTf5 zsscHZ0w|Rm5ctUovlZ&VYK}Svb6_^6N0*RH<6>Pp!84hdAmCyO9eVzg@B0+|3u-a? zulB06znKSDvwyVL&MCF{B;uzO0fxkW1>HUQ)6M?rZz_^pqA!g~J)yGfC!$*|SPz}8 zvxx`6^jMSSoQ%-XDLXA1;Q)wD5e(0gD5i?etbqUk3b9+dk^(iAn}=9|{OKiS4Q55> z+G#mej)%V6CbgN9zrRz`AlDAVN#|PK6))UoNv*Dx6^6IH?#eMOev?_|9RW+E)Pj^Y z;UKFW%#u1Q>aac^&1jCmwkT5bL*30{UJMmr!a7Cun0f+ucHc$7Tie%cp~omFf2>__ zdvc7h8MsayigaO>9Q3t`-9&B(|45mub2@S__#hlT$sxu3P;v{;#B;d0wxjGDUx6Qt zRl1Q*FIlWs2D1XTL%dVyY#}t&MZiW&Kz}aaVT)kFu=<(y-hW}1lKNvn`w_VC@#u~2 z=(s22`nvk%x1$jlR++lW3-s%byF+5QmonVl_nCIQ?iseyhc_DwK4XxBzx6l$F5055 zH##~PUouWhj%okSN?HASx-U1gN;#4_t(wFhiSb4u9~Kvz!Zzi?Nr{r|SR)|^9?GD< z8xpd6c#%lkkdF>L-7Sg2Lp?1Nd4Q`wlzfCBf%rhjgO=+QnDTVU$H{LN7+U3WA;E1y zTLmfwg$q5q0Q_gMAwG|;_;UUjm&aR!LJ-s7$v%(N1dEGen+G&aglnKdC$&}yaHS`E zVN!zE0B9HDCeTdzdK!{LDPTsfjPL&DhP*0na~(V{T45{y?h*dJee2M3Dpe^;r6$2x z$#LW&=evn*SXsd?NWDr<%|G>v)l{8L2t z1+9sSeGS9)PS~=LwV1vNDt8*|M&s%C*TsN-MfJ_v%czXMHU@>N%^nv=CuS7`1}gi! zDT-w`1g@911erp{t~wwdwj-!=J0$GW{_TQo+b)KH6PXi@=Sf3%)6s z?dB$wS$=acVwl`U5ail6!X>wrZ~LwCUf-lGvT4|QpRDa^x#vcvVfO!-S8T(u#&wZbKubDmW_De<`gE)hPq3*7tTFC}2Z z&4TT%D#rrf6$n7~5Ry2uIC2y*H@>a&wh+=cQX!~{AF$7G0I>Hub)`N{{ajV@Kf$GGbO7oh8;m1pv-v4Cq5-z>k)KVjWFYg0(J_nxf*oz?qbk45Utp+#65No*?4)%K>uU6$##%U(_yWAB8~pqUMbD(&MswJhCFnp+boiCzlnc%`c*+PBnOXgo~#QEfuYpl%T3p?Y!8@6q!^f zIwVS=)(@WMsJh=5Cb*gAA|6J}*^g$R(?82{1mzquG zvy~S&F^F_XP_L*k2wJ(pF3_2_wkG`eGTXWl*hKPSBrbmvSl?>{y?HDT%~(OaCEuv- zbOn=w0Q_1Z*nwR1!Ds~b$W#@_OR|-2)Q&T2dLJ~hJIEmNq!W(CFp2T*R#%B3oM%;; zb5EyVUSXhH9HwbfkKT{7wWeDD;GaXF<5Di11V<_(7g^6Fj9(-z9%tMqcBBw_)5VmO2Z)eTgjG% z7I{t@iEV^lG3c*Kj(%4gtRV*i`+d!AL;f^km= zHL!NBkgd(%h80Mmn723p@8maa>CY%KHR7KN!BF+O=-k5ChPZ#QkZ^@le3*)hk#R&{ zbx8bRNLVA>uRd}w9L9#M)00R|F< z?JH|MRNLV;3(_l>rz!DGYDOoz-C)|&(|%+hNfvds|xzEf2lRjy>VDxV6Gzga0+~k{X~;X_+34^4@Y(f+E3~yqTB??ZXVqGZ;`34#~X76Lt}L+ z(Hac)!G!XXwx~Irs}URer+cdX>j242L&?U{IPnq=tklUr$?rGpasY)@8lKU%a{^ev z=OL$vsP}Kl9ap&?$XkwPtXl9i?g2=zB*-?ocLTh#-^A}!J_K=MV@tBIL3XkWzo>DQ zYp}XM)O5t(gyciGk?w|J$16S~M0MSjR#R9uhKo>!;SO3?K}6>CZy3!dOk}f&4RQ?= ztN?`vsORojXIO*I7{zV$R9pO`$+i3yPRbp%>s?At^zTrz+Wcnf=_yr;oU9QCP@6Jx zD+rNL^kGoc>@{0<_72G?MfAC$cjnvtVzGXhJ;Q!sJlho782h72^@ri0+%|F=!8r}6 zea>}#;>4LN;BViYno{OrnbP7#6B9(PGg>5-wbAwdM# zH~dI{;D+(}>ul1Qumb?<$D1Ob{Ol%J(w-fbII}pj`J5aIKIcw~0VhfRtW;70u%Wex z(uNjo5<3+sDXH^B7~;-$2-xu9RRKCZMFrSbX|+#h&9bu6?d7p+6|~f5g0LBi{S&Y_ zVNo}!JP?)zPWt)YP~|Xi$$?f(YzlJQL}fu<>g8R2lOlQ=2&tE7@nHfi0>d9T?cnax zzM&5WVbCbCEZX$|3qHFT_gb8&x0^$ToC|2K1FU%Yc1QWIQ^V zN(}vw^j={(wl}Xw?)4{{PS$ zDw--~sor6cy48v_Tg0zGnfTCMx{;4A{HG=;t!UmNK;b%eq{?|Hx#nfQ9!;8m$!v*@ zGn$#)ZuOvc8;|piFaA1eAI!GwH*Qhu4^ph4HSn8=|EgVKDEU6ZeO;B}-@LayT$Yr) zb#u7Gl@!YzV!VZuT&h67Hej#vJc6DKlkRgpj@jj49ztIq%eg#lDCT`do{$srid^b7 zHpKE{8NWNDfFup3=XiqcL6Jg}LQ5dyBXaUw=Rw^H2mU|M-ycadQ)1roNd3tU$R|TS zp1@4;IToK}Ia5?$=q-!9HYa0;=f^uRJb~PcEk?SRzz-`7_?=@3F0TfnXEVzciA+6B z-Iquk_ZS;yjg@{$7OnQ{#Xt4L>m zG8tKdmUnY@9gaZs17!wgCURVvoN;Vjy!ZIxj3{+oyyq&Lo7aiUumNbm6(OX&!BaTw zXXu2!<-3(mkTQYkZ#S@QxmCb-+x7mVln`x=u1~Ja?Mr@-_L`3V|B3&8yGSnk#SVvF zNG<#by->-CRxl`gjBYJXc3CJ-G9qk^&>&0`q4Zra9(blVpaR_AgQRc&G$5@@cB7HK zXC&09@^6;=G!F(;>Co13)nBOS>wn~6R=kkjoK))MD!gmo{vl67k`}BN#WWjG078`$C4j-5qHXXjtW_*L^Ph;1P za()L(P=wMiwgCrBsRYwxv949!iAEil!4=a7C$%N|Xz~}pBFXWzwGC#s;`j!D9=b=z znJbR3G}s#%psPWOBr5Yn_!@Qp$i#hy(3CyYUM9Sd8gY;m5T&=yi3&2w-xXbCb3_nE zhAu6gjTXd1H%y)o+ER80>bb5{&xb5IiUjDS(>Nx|~0JL>)=EEDaw* ztboiUwmvi>xd}CD{P<5PN{kJKbYC578?yQJXFp$3K`6j{Bo#45;CN&YAmx>d%ePBUJEkHQ% zVwYqsU24rV2Tk9SY{PrIDk5z3(4E$NbG7@2Nm*Gzg@NelF|6n{X#+^#{yybjcosQ& z3!s|pk>v!oPg14B_W>kRo48UCvxJm*w#oL{4CC$6Q=E}qqdgx%^#(5# zPM1MHy2Tj<5LloO^^hr_*DvZzHAZuCl4KHi%QT!9tEm4n044~wBmqm)MijK#7Umy; z^>d2A6xCqv<1DxR{iizUS1CU#A3YiD(KkS3CkaK=!ljOaT1~a6N-=RMkLO8aNJd9{ zGV{o-#}bY#(Q<^Sfb?PoVqUYdDCk5jEOW}IO*(kSWU|3Zjcstn899z(QieJ-%RVmY z(zM+3jN6yt4j<~$JPq%*YQ8I(tEn$riPR@ zG8u*BYDOY1|4P?9zkW)Nd-}oKL-Xt4M#yqbEBFnP>`mCM#GxuAl`~(7mwg+NsP z>DuOOeSnem%L>6sco0Nu-lRSDF{989Q*U-&QlPl*3~DQBXc7b74p<|rZB{CY2~o7i zQNob1COu+m^j673LFtTqy?A!%4p@!{6=f$pC0%{9zX(C`9O|DX>9UJKdp0An&l8Hy z0ws4?bFLy_!`PIj&J(O|zmFo$@p#6ChXRep*Yo;?qYdyvmMEX_H^>)vfTulFON(c zbU1uWp8%u-ncW;$2PwD1D#O%QGM}&D&jNupWSEc&2Cqt|p4#`xqm27XZ3p%Xn^Rg! z|HFy1s}Gkeg-^pMu-q2p&D8pIQI5K4Q@~1NWMK*up%9xDU4V&uxP?!MJ>jvOT6l{2 zLtha@L|X^ZrvuidjCt(Vq@u>{IIUm7{2vD!cZQX6HR)-kc!_K%EUSHUjMxYP`?7Lz z_;yoXlvqz{2t&2msAt>Ad6UD8Ct9|Oi0 zy9>U#_`OVJmLG zrU9dL8<8j__f8s*?KL<;CP~-;YeVvX$A^RsW}Z_j&QTW`s@2V>Ij=+fHFlxj=|{Xa zUe@v{wFO@gM?9t-iEy46glqDW<=ihn-tJUIfuyyy6_l{D$~HqX-ak7HRiEPT^IYt@nr!Dq!mjV4;N*|{dbfq&1Mf-lsIxupvTw9?-s!yQbuIGK&G}2(8C2FBSj2!7 z@|o~8=xeF4vWK}}j4NUp>M%v2uA;Bm(pXkHy{3$1?=K0huAr|;zG|=v`vt3TRgZH zHr44mi+54uH=GD%X&FKMqyiOaFY^#>Vc*u&S3ZAKRYe0WYy6?odPyg32BjX0onqQO z)031V*W@z^;!TvO@?5AsNrx#A$&E&*Oh07?;YN;mp&Y1Ke1)zxtj0?jIzQ47q-|Qv zJ$8HX;IFV(&|r4Pg@5&-N-e*QyWBjHGGCEPa8bhv)f)|}$jr%uMy(_x&~uvvkA~7! zDCP`9VY+@kr`zF)w*R4hp~Gg#rkX;G_dioQCW&6c)$IZYA6aifJ7jEFCRpoGBg-;6 zCMDt+O&Q;rK0C?$#6gut10uf*kWUx8MNi(DwgOTkoT2X@X@Pt zGQ6a)FnW4mF&QX+gUNnV-G=l9i{w9q5T}&?eOQ@_v=CmASch1r-b$pfP#W>o$zcoT zdj&D9wgnkMr6v^?*e}x%>JaMRrSP%Qq;^_B4E-v_;CHNI=C>uX5Y05}gbs;AW4Ko5 zThVf<^1*6n8w~31FX9eplx=O3%{8pfTOp8U2~XYxcM5)XCcQ;gP&ohL?Wq*+-#F?} zXawzamttykWHz|l=t0kzmbC^xny5g9V!ClS2XOt1w&P7YaZGk3vIP~(A%jPQ(p15-#p-h4uD36zf)Y`#wRmpM27 z%4->7E~YzjJz=FlI&aJg@ACSss5@5?7fyq%#-#0#pcplRA?+7Q{6<86Hgszc$q8R! z-r4ryf7yB7_0-uTFV3lKR!ya>Ga2Xgo&mU1aqj0CG~&UwmKpi5RrdUmU|HVuo>^NG z(i+<(se*1@D(Mi6bKd9BYTMX=qz_pOv3AG`aG;aZUzl8s-QYmHV;)IPQHf2EYaOF2 z!{1Ic4KO8m+n?ML@c5+7dEW1!itAXzPt|(@zsm{aX}=tGQ>^t_bshP48Q=wut@I)- zfwy7Nypx5}ez`>OwBNBc;YPOfF{}4fmu!sO-TCQY0QGWZ9YXf?p;JQyW3k^`w<<6i zAT$^7Mds5bL;M2za?!TwP`A_}7SO%$hw}Nv%Olbl^|!6V=(ezqP#wQH37Kad0JBly z{njB#xuxfh82dD>@70*b-m52x*^;gY;r0=^*Z?KM~C@6vsHdk;_De zI0-M)PhlT6_Qx4)Be%H>F0a7sRMnniZ-f~ry*}?X_7c`h{blo$2iMoOc#u0|nqn5* zmZ%;Chy3=Ual|9Hi6zpHkNmMexK8{Y4Z$w>S&FJ^M5?10?G;pC8l0`RQM(5Enetg0 zl^771)}KIDXhlCL)$Qasm21!luUgZE*whu6X5>6Y=u`PE)Q|Kr1m@}jePzL)*6=YP z6Vi$BFn-|JN*1>Ctk4bf=wCW@ypBY4$!`WNm3O4wIg~o3F9)VmBe&^Q@$75RMbYa2 zsB1<$x2}jmWaLwZAZa1(mpVq8xh!|lzqU2idbBW@U6jIbwv{v z>I;bXuA{Bkix>=$`u#LjI3=dVi9=O?*(=!$WaVeXO(acb0xSE&KZ)#Feh5Wt-f26$ zKW3d?dR24Z)uj$YtD^Jc*6FU0t437934Q`q4QJi2*s0ClDs^9#jF%OVq#BB^>AYVN z}CD3(6}f83LQX&4OB3fv5!ARKU0<@$0!?Bz>5Uv8q5zlU!4S zqvB(D2l>mMf>b~i6DD{I{|js?0RqGif%732r$Ok&IyNwyXPRk_lET@WDEeLSx6CB^ zL9P&dt|MS5Q#7E8IJ0=t4#eF-_mKYrB~^KEuoHx0t_eX6CDby^B|>Vl;Z@6h;gt+l z=W_)~M6K&ovwdU)J5fo*W113EvbzwW@2R50l9Z+)&D;x`N2s+P@JoAwpaVUhm_+zm zZ;wP@jU^1^AoO>1*8wk2|51^X*BHlRfg2R}{}3eM8TV_Faz%x6irMe`QC`ZdtGj3h zL1%SGQE>)9K%VY26y}>X?m{`O=pQtiC9lA2t~OAFpEC^txRR5TKEfQkV}I4Q_7=}^ zBMnyv;P`UCWi)ZaC1=pHkdtYQMF5yz86$!{N1m1JRnyGLS?zmAv*z88XeIiLm1pl+qpV|Pav4a>v`*(U0~8siY2I2r!M$s0c- zkIWU^7Ud^f@ryNoGMZ=v2&=p?N?+L2bfzrH<7E+7z~wOzd@IE!{{k@rmfQTG@GrK| z%i!m%!1YUCY?Us(Eu1~P4YeF*o=}O5lX}AC$3jLjIboPr#$fT(d7NMoPzjETU09~H z;@%&j;=6D@Z${NO7Y)SvzL%asLWH^ta}$fgR6mGPTELiF{a55+NhHm%L?j!A7yi4+ z3xK5(@@<}F|oVx37lfr91YqPeYYYYk|2e97r-&r18}o*?B5@`WKzH!3vM zUbDF@blvDQKRM-g@F>WUuXj)ebx`r84&vJJesj{#>C<&sOKHh6`}32POh2zxm(_H* ztqcQ5IR3m*$99qVq>>#~6t_sDxHb==%Hqi?gMxJOjPK4nO2V;l(WW(b+u$f&b(2{F zKK4E>rc2L-LDk5z)}sn&3cht{qH6h!#5iaYFa#Vcb}Iy0Tajsgfot(8FI&z-Fza6| zNF&}&MTHiug=8Ik#D=%#mn!9hr(7aQ#Ubs3h9^dhAU;Qd@=z`?^J`ExycwOpy~l5? z#685XVqQr#J53oR+ZtiU;B)#Zs-B&vwsB##s(!aMDu%iZc>7e#GSBR!+M&ZZ*bi_| z5CJIH5q>H$dMt?+*ju0#56C{o(*$tv<_uhNVsAFgu<}ZvRA{Ns*Z&lxr<`ynI9E z;_q!_WD{l3;Cdd({?Zs~aH0ON(3~tf3bUgg5&G z|A9AA+jY=2(+8um9dqaDvvL>sZx{SiY84go*JXs3+Mak#C{BjEJ(y4G_0+6}cY5Ni zoJQ@Z$+0o2{Di=b@!Cg`-1xh~N-5G}f_4hn&;636)Zc~&|GQ&Xgd4Kk^8Aibku-T& zdaU)(i#?fNk5c$ z!aSpW@Th>#c?GCr8;SG0(ZHL4#K5NF!T6`*9Py-A3#ryIJ)(nA5QrA6|e*(I<-yzKTSKK z1}oyq$C&?ZYvhw?>i%E0MwGE3-3_F#HaL%x#y<{6RCF%~T$6%o=zFpZAEk%OsHgu8 zE3{qy2UhUA{uiuh`QNa@@&5%@prj2|$@c+a1)ZaEIy+f|mGFX**cVb;#_znLs+W1a z-a_3Cf%p!-FCDMug~II_&yBH;Dh4)Olv7Ph*(9Gg2VdAPeTIYNf%{~AW3Y2rS`^-& z814hr`DvY|Rl(L4Xfd$v@g(isFYTip`7eer_^nf&_qX}rl<`bm_o?^M>AA`A+1O28 zQDzeq>bo<1Lq#>IhA5rxI_uz*A7oXJ;0asV?}xGN@9|b{y8K1vR4nONl+2>MO)|)a zkb@YR`>}8~Q=0Khlt>>_MzV#nSkQN}eO-M?H4TweP!GC(6sG{w)o-ydYL+Ug?lS7Z z6o!d$g?W(#UD4G{=g5|~>AYAewErGIzZW*fDA*BgwR z_)_7aZec&kok^XYM*)3>;(*-MEP=ox-=slA(t=fTh7rf%ky*7$yx4*Nky1z@aM-sroBpxM?RKUpzqgtWVr?11y~tm1fQA$!;WV1TAnC zp)l^?JCb`=x)`MpMi;Lmu}hXm=W(S>BO*R^-xxY>M?TJ8zqa%b>b~P z_AKU1Y5raTZi_Z3v;D%t2iJURI`-Uj2qRCuhh+X<5F^9^E{YQ{hFuyX6aX9rG?@P} zH+w(1<~*jB2^TRq;~@+CwzkO<)+Z`?Vqo=#Q2|kmnV=(V1M)8b0?3xYc~BKNi*krG z^aT~RW6I$BI8Av%_uG1={@;j7N!BXYS0!O_j3n1K=!dQuSkI@%>hTsH-l)(2 zNYtVvm*TXa(N%E7DXhgs+_Y@enjI3Nph9t-uEH0sEl_r$HL%QdVF7f!RA%Ogp{7mg_EYtO9Qj`FFjqKT)Axguh)`Y>e=vhP&XcOO2%ydr)$N?e{gz2X5|6aWRF zxq}Jp2vl}l@p|b~V}RXaW{N(n6A}6p{NYi_gLnbIw9RD=48 z_M*Ts*Fa&9AD?Y?2j*cMe)l1$3IoFx74WckpD9641*EsrsW!PYY{Fg?M62_Gr%c`6 zBm(6zL)ue2wUz-tDipO{XRA#zV-?b6pj(W1t25sw?A5-oIBsr7KjW@eQFYcD=HGOV zEtddMbi(_N+jevL+UrHrm8+_M4Yc{|5_RopKOmBEch%U5Vh`U8@zBT*0@8;89Jz~3 z31Fjlq$5}Vbq`C9q>)Z^6n|vhf2&|3;Q*rfNEuEsuJlxzbymS?Zibm_1!E-Tk~1t! zOJSsSghr9$f-I8r4?Dy`d4jrFMmVw;nfkCgB#EgKn4tF0u-0YE*r7LNgW9-roxao` zeKOt&1W+2=?#b$ExLHm~fn7zP?+HT#(Od9<)*Rp>3x_K7*DoGBu{J zV}*J+8z#J&l)mkPy4TZNIx({HCVrWmeP9hyTulcl+uNY=V-H;10yX9mh@xhrSJ~28 zZyaCOoZH$gdUSxgmeYRQ*xO&|COdp7~W&k>)xqr3m&wy3myDx510pX$qYUvJpg4U;abm`&eqZ*U;-m%qE`J>C#bLQG^}5K!G` z@lgE}+G5xeL-TKQ#GNPi{@7!d+2F`;nbs@{W@k7hPQEt6^q(DG+Wlo`2$?z3<+MSt zfC};w?`9^1_*nQEOf#t!HtRXV$x?^wW`7>`1q9CK_&Gs)$py{&Z$ks;6OVVBpTCvA z+#LUsKAa<2T1*r`zIc;`ph0%+^)r++XiLHeVGpoE(~Bi9(Q|&A$zXg8JZ#iKJtlV- zab!{wf_?}8ED7u_-&s6vZ3TxIvOp7|df`?K;m6LG5er6zkx9!p3sgo=J?HB7>l;6I zV}&mqC=td`Nq)&(XWuVHv2fv!7KzIwaGT#gty@}z!Y$JI=DNVj?F|J~GD5VWMLnI&) zp>-3)0L;3>rubKe;)RX7Wx$akUHs1`YEO29w#J#cG@MxIhpHxu(e4i}!LYB|v|E7j zYiGR642~VON#Z?7h*m7D?gED*ox<`lXl@bbp{dvAAO3tXuKm9=*c~Q&0Q7xVvmyB;jG;VI{FwcrjT9_9_-Y*s*R@UX zc9c$eC{Aih6M#D@M41NEa~J7;beeRpS^u#ZVFO!F+D>A;YIMVaOq#00(x9i;nI=FfLvQz#Uv*?DT=XF z-FeQ@n8%ONpC_Nz85?MLl$^G}jY2y`o|OZt`E7>YR%nt#UeB{!cr;^#U##5G!SqN! zwj@Tc30b?8L}5s2vWk6?X;e~s=5N%gj5A0af}O|Fyq5P#gq6p7$?_f_ zhYVemBc6-DqrQBnA|IgiC^klp{6!v|Pn{UyI|cy%%8VDkPOb&)A4_1d-=2mZhaCSd zjMt=+SPi7={?MdCpx#*k9H~u5vVCH3TS{k=syG5ffV3;pDGL?sjV0O`G6f%1yn^pp z9qFTTOd@qC^PweP)XAW}|NDRXYNDXPqr{*E7dk3O@v;2V z5r*~Hi+WG9&3K*izW(iOhOH!NBx!6I`O`0%=nBi^^L8qdaX3e8gAH*qKg$E*wyW@E zohd9WFoQS~C&7n`AyGLK@AGy$1u0G{>#jhU^SqoWq*5$^5}`6Nx zrk+vTVJM?K0ti6xNbr^ADEPjH7$Y~_d5E)%vt!OktD#p&2wh%`3mvhRk2>%QA+AK4 z5;2KWvXZbijDWK!lcWCU1+f#u(J%2RyY3$SxJ&P6@R1TR7RN^XQu;;hgnSo#hx}kF z$XM9(?-|^DsKN`PM9b3WLi^$b2szyQwKY7Y5ZkDtir>Uj3(Q}Z{MZdKFn6Z5wMSDC zn|W9r^f>Xpkon)$Ug=rO()*)Phe1~D5-|P_9a_7@Xqr*G^a-c`f3fzKL3M>&yCsqY zcY?dSySsaU;O-FI-QC?G8w>94ZUKV3ySrO&lJng@-Ch0X*8R6x6onLfy=%_-j4>-; z(KSu9mTs4_Fg9M$zD~hOuwS@7w5u%+1ttvk5{}le4~MGkPv=Dp9000=m6^^oeQW4B zs_;@OIT`4wDfZQA^&RcyzR=6G8nO3*hJr855kf`8J4x`LpGHt;Jt8F6G%ZmRcP_g|Q_IV~Z-+ zx6ITh^wQeIQx2|>AS9%s!t}f#GuRN1%+Z|eL);oE$U|h|2qCpWDPse`0R9civ4V}^ z{_;_4G!%oV;HM;|r2cYp32nQw`0FcyjG~&ce5a8mHo|#{@oR4L%jg^pIjRLkjo}JA z#G-ugR|GjGsLxFv)iF&MrIFr=aMnUE+aJeJzEZqYie4!=g`1WAgC|mk2szywJI$!S zrazCMH|8EBXrXFyqa4pu3e8Y_DiBVvL9q8L5M`8mnrt}|XI27_E3A7>pMr&SEM^|F zawo1UnsmF>_U|(a8)h@9@y%B?Fk(+Zg597b%tTzn+XRy)5wp&~NQ;zETJe@-#B`#B z6*|ozI1kHR114;S0%Y+{Y9=g zS1hrSQ925Gi~3d-0~zX!+}~O?J~EG`lZU7$i~*at*s{b!m-g7?PnV10Y?(r8ywwT@ zKL?0;5bRGJu&%w_^iXEMN)P(HjP3;v_3f8leqR{ee?3^-oV39%o&bu%UQ#78B|N=- zW<38?n|qGSBe-`~UED?A>#W!84CnQzM%T2pW zWIMy=SwwDdTcVm5B!^EaHHsG*KHZLqR1!dfqVfAgBcOP(fL5YqhZj$8Qlw00+0U)o zoSDofxJ#4+duX(i@OT|nx067Ktjmo|o&)=6^j6~mEtCz>%bm6y#}b(J2l0gTTuszA zLnA2q0#NXYaY$UhUhAStl&HIxDIYZSdKYED^pZ;wP=wI*X~M#|jkHXGY0NxqPlJfh z@T=uc{Wp63D2|C-)^y7#fwIfWxcjH121`e$TNjPoJ(#|tQUfQh=C^HwJzsAnRb{79o2;G8ave%POOz}LJG$yO|?s5#VQKOUFZbtJuUu~#knOUzpz%USmX zA!&W|ZcT(G$n(Dwt@aO#>HLs>oR;)e*D+GfcsX2Mm6B%HM;w~pC4;S5t*AV`yE*kO z)d2!{i`FjP&ZQ}>n#<+0zsVM?FNbiYIsJ#qL}4AEV5h;956y~PSB|Vq*-f<3@_V_t zmSs?@V4)SvYBnpg%h#JtFo~p8>1*66L8K)X9+G0i~?1xc>KAt^EG- zUB!hn|1a|KmmHzufet;7Ot#T_HMnM1lYlqf8qKoG)vXu*-(OqxDmXe1=A=M@ak1s2 z7yl*_yWu;ns~3O3QDY2t2YhYj!zSH@u-c(DC%{Y}#g*vh25uA_Ixn9=>a`#`MEPK0 zsPAl_6Z@Mh!{*Y^4-m-Z20sJ_mIV};NP1%uhBsNeu2yPnvPRU6YH4JE&Uy5%NNJXA zEZT6nSa4#!L#Y!o*)>%d$H-9c`bsaoiB*z56FQLGNJy^>u9GTIQF3S)QAiWSKv?vJ zOK@c|EN=+b{WWVbOg7-2GR?ITZU1xVmDEeu`rado3_fUPXW%g+C`s`*8dlG_G zZXb6f>-m{?lS|yf)x?GtZ7dSlkG+{+k3~apr-#oB&sL9GwwjVDDXVPyJ|-xjf;tl# zh>EFz=cn@kTW{|o(!H`9I zo@|H)Y!D_NY6VHPCAjV@5q*KnU(#)oK5_I~JOtq}0pdx5fD>Zeu@$Ib4YeCenSBXYlh0JVnxd~8lO0~+1hQ@QgV(1kI=vPW{!R3K!ExGOO6E9T<>mdKA zHa}|jtxUB%IlyCe@n1J`Vs_mnvOaat17W?jJ(K=nMUL{9hv&>Uf5e6nB;E*;J%=ZR z!h|qel`oU`1R+f+CP`~b9KH{Nn;_hH@Csy623Ec)buzhK=sC263Ib;~%eWK@&C_G} z6jcY#jeUsz_QZUIKcCE$kHLR}TP1xOdi*58`6K#aVHgxQ(bX&rE$MQ!bcZ*6dddAV z74ACpH=0qypNoW8Ta0j5M}o~Q$#G)op&Op7?}Je8B?!Xx1>w3qK+=C`s8GC5vEi_J zgJS6>+y?lxDB0blZL{TId6*vDCO*3~6^qIucP6mdECH~6kf1ZQ=WHYuZ0kNJ!gSkE z@yN?5@;rU@?$N&iprl2>g$%pe$C0t?i=^R(wsPPRL*S6cC~p3+S@%-fWweJ@9Pe9= zTnAd6eLM3MhE_vY6h>F=eg^{^%>Y&rPmOG{w#wOYQ-k)_A$MFWR8E^sQnK&v_kQ;q z|1z3XYsa1vWiIUM^z`CdF62#g_@;xf=s?SY&a(ru>>%r7e(2~KMhfmdFv7p?@A>gt zU(yaCPc;(wl=n3L8K%YH8e~HHf)q>!8vuP@A%A<*wJ{(}SeQwIe69D@aSM+BhctOg z>@TLVVF!Wi0Ar*yaLQ=*{d=Ocv)1OJ?1F6u_^#`FFD%%_&(gv?*usY`=tH?0>}j>v zE{)ow+xmEXRo~Dei8`>SvFPf8*CaD>yXKNXvpR4QuL<{RY4-9q`|Jwebpj6^ks%(~ zFzrUdT{}^jA`)~AGWvg*p_Xr*aobVpeGteyuNe7hq&(D{7`Vv#5Dh%&p46o40Xd)p`k6kG)x)tjZJb9G5F*znZlPs4~i`h+OZxG zU=7a-@*Pl~0Jj)0xz?ptr z-n@8ElZww+WpqZehSBW$Wh*e*yu*0wn`*tx+Cm^Hj&>aaV?t3Vk7#nyFJJhHP0@QN zo6gLe`lnBM+9k)K4S90b4*d8KjVA_JqMj^m@X#QnSCg%7NZ8I8W|ymi=O6tYm-+WG z>Y8zU%3FbNvX{b`xEh{q;TV&7at4mR5Ci#6@pH|nSjuJ=MNZBMMV9WoQUih*C{sYY z2SYhEM}2@h`C0yUMh3$k08dh!1Xq0|$X`^klwkr``JF?P3bmhU%^mj5vizNx8c?P! zhQZN#j-*pEv@U%Fx$b&AtJra#L7m%uvWxiVuqBUehZ!>HhtzWnN^55@M7Py^|o zb0rcA`C?)O&!w@~&y#K@Et;uUMTPs%H0iQ|+V>ecH?^;M zjx-82uJwMBP6L*PR2pf&C1|h|SQq}h_tJ_D4;rZ?4G$*%r`d%&75nOu$77V^jJ)TN zBoj~3?1dx4A=p!HnfdrBGj-Tn?#b^f@pn*Uc7qDQA3@Tgwn@jY^#=9x!y8)l z%Vn;+2>IcCLMI&|m@ zg`KAzbQeE*c<$QsRBZ_-xkNeiKoD~cZyQXyoMCNvlb0?R zsSj#v)R#l3_-jwAZ;k8{(WzWs@aPvUU8r+2z=I}QX z`T8P(AhJyah0eKse@=2*;%Y<#!g@+UFRMPyTqx>G?}Jga7OCW|&ee)n*63}9VA7vJ zO0Jpanr{%SY-yGIPuMgj9CV*zXkHT;Sx8VQIRqFro*dzt^c;bASs=ROmIj^pc>IE> z2orbyGP#FJiUpCcijOwtPCJoeBp`5}SLz|&*wc?f)z!rys6V`t$Uv>W4$7`~t6}H^ zXYoL}r{hk6<>Q*TnvYvgLLm{%$UVKyu(yguZAwtu_=+tL01@Gh2Wiv=Q!ZUCzcJMy z9FAGoF037dOL;+ML~epwF}9_4jJ;``p29DDAc3+CArVl!oR#nc6v)PY`dLH*fn0i1 zEA?UZ0Q<0dT;p#p1%iVSWM1&Q+UnV?bSUss`FSXkS-#rda~B! z0U28(@fsrJlvM+2B19t44ByjByz6-q&@;fN)V)MAN7F$5`h~0!ufjN$P|qK=vcPmE z57IbWz8k`3JMN1D?12yJl!k5JnMfiG1&a(3SG>6R)zb1HYWhZ7)>POc9ggM_>fXG7uIhZ>NbTx}0yGoszIRb}a|H)Pk_k7LH^exP3ukFlR zsYahTiOvcluaV$A6ZrVuMxErw`BrJdwI8M^`SMc>c|=2y$*Yrz~WR&J_>H!57Kwr?Hdq_(?Voh%k*!Z3lT7XSMZ83XIQ_8{N~F zKcT@adiE@HZ0Js7Dushwi})@=E)H!B)P~qX3em4h3nAVMuZRJepa4nsPw^FXG}q_I z){rMVXfiFwNdg@#v5jrVNi(nYs`ua6uwc&@%&;yC+6@jA9bAEc?*o2Smr?N9*A zKKh%d+A5x{uFWb)XZ8}uc-!!y2A8on%2VIG3NfM(xZ)clYGmzYyW3j{hA*7Xl&!m; z*t@wefs%S6RWFR-rcHPUVW?>Se)37xm*5DLUIH#-#S4zECLEt9I=g;@pF65hdmWdw zvQpX@4Hl|@znl8Dp1XoqB? z#D#*?O>_AZ=3)G5uzI#CzHyPB7_^BMjSeMCxvmDXU|OKPkef#$42_~jd_CeWx3u)s z>Z9Mix-0?csYo3P>slCyWceLo<$D=zN2j=AI*1&I4V-PD5_O=*YSigDS9HJveytoL zdFaGvJ3msc_j+U1!O?R$dbM;rr__GVMLd_0JGJIJTn&N`BN_J&RK`lXb zrOH-m)MH5$#qzo(KmRY&79ant_=L;H)OZ*~IGUg@sOiZzrTHwIfmcp~kH}MjE(ZIb z<7j?*^g!-NFO7i89GjlD!-`3Y(ZTgR#@kkG)Oo9}<1Z55gxJb)*u*$|jH%yi5`MY; z%Y}z$6g9bh>WIeT6hEZd^P7^t)9~ilvjlrLe3RtJ!Zk-SA|6Vbx@ZWUg$qI9Das7~d1bKP8Jx1@uy=nV(djA|AKHFF!MRSbOQ(gY%9xGQe(Ne-^g&ZWr!YjGO zBirPd9uHRc3LR^++NvDzavH}}mkpbg_%ll}_{-n1a>JlYx2_A^p zo>fLu0b?pdsi!fzhWDjzmjP-GwEBHVAZ&yB%ft%?Ya3;6!bN~7Us2C|Nhb}0_+)1p z4QNp;D9{LdG^pFQ|E0xKoAd^PUR{4duew@w1h@I3-|kk|{L?=sDYlo_wu3@&pD?y? zAj^HtP$Gd^7)36a!Xra^1>Af#{dk=!4YQ>3u=jDj6grPBYM*>6N2?Qi#d6LZ!>Lk} z_Q|@^;?mTIH0H|A`-yh$M;}UfSD-rmdyfwEY@1MwF-nRo>W{0fOXh%vD{>PXvj*;i zJ-=}gV+nOt1Rgez|Bv>`c!j?HG9z7E8jkuu+Na+C1KKC!UYlhK4fYdGYITmi9OoE6 z07WfJ_I*urkIJXSHlP`=OyP{_x@D=Ww4%vRj`4&xcR)a{>_M%+3jtYxN1LL;bk3TX~8umoC9 z@gJK_Pt=XUqpIv{cxS0zjUm(rg0um+%Gf>2bYma8C_3OPn!9+@t7SR>n)OC&pmaYT z+gc=-cRgIPs&D+FcC>=NB3;Iw0Mu+tlgF8Ps%=k&LRwKW6b&+)={1ZSESgv1Xrubt z1Rs8UKYAd9%-i5HU{)v%!Llewr_Cf!C@ z95eo?0Oz$YVApw8EOv9Zp;C`rsnDth{>0a*tM)8w>2urZj~+_c1J$TC#6ST)dv6ag@E4^31%sIT+=Z#68{N;Qna-c6?ogf z^8Ncpwr&5O`)L@MN`3sWl5c=_J5D!6HSWCT9;}7h&kR)4aCir z!aW5(Hi>q{8Ib<^O!|&C#G+F4-9qG5Mi~cv3I0*=_^PR^*|SOl?4S^TaHW)F!mH>d ztD~Zn3JriGlXW+RIN#rt!m0<_jY8kpO10~RU2^(Irm+?QVV`XXV8}FC76HR(aPP$b zUdT3>)rcn0x>Ns{JZBc0;+K4HxIu`ekb2+3lzb<7O}LT&xJL3?T1@tVPsG2OO1u;B z(bByp=-Q3FhNqn1f1?wN;v|eUv~$6UxT~q`sy$$9gsSMD-{kmxC_tHpZguSsB0AZX zn;jqKCj)C_K!5_ChB4HaTbTauqh45)0L0w6$$m(8m{AD?0^Tk>72R&YFR0Z0e3)1| zffkTMu#XqOFK`5%`YeH-`V)o%DO@XBbKf2(vmJi>aL@(C?lUzfcH`>e0iA1z^?-qJ z#)h6}PW90ZXrg$)l^M$l8-ozJcCRLDLa6l&i6=eix^Mn%t1L=35^(9-=_T!CJx2%s zF$qXGZ&m2W69R(mU$LK)xAyGg-%eR2$yb>` z;{N0taVb+iyRUs>g5HLR@0i+GG|T~MxV75Xx_o^`RH9*bN#D{e!Y3J^>D+x7NgyAq z>)&JnG7EjG>l}Iq9OB}r1>Wuc#Ql54$Tkmz&7k~`8 zKib{gr9>Tx-+s`OYy0;hz2q)Cmh&fwS!fBmgDM+YtcO?o>hX^9x@ggph4$f&z&fI} zKs-F>AE=#A_V&3pOkKl%9V`$}$AQue=N0c6^MX1zv_wc(0Go>~Bye(iF2QU9c^$_O zMpdUS0X?g$<5drMb<-2wR!--}sf*2R(q%p(TV}ymw9PC&{@oMeWgn;!IpTBy!T>ps z8NTe!cX0u1qXe>eoLWPh01izgY#eT2oGNV3{BhL}CQ$HVdI_j;)#;Os;#F;HDncL3 z(|15S)G|1lT~II_gbov-Zlpolg;2!P@^*{&Em64cnOFQ3$_J1Rpl+fB>8p%Ny|#u0 z+c#T~Z}ZK{O9B1Cy+%CE5(ya$02EQ~Toq2B#S&V@%nap*)cyt;T-yTKB?WS0bID8+ zgW6{>BR-3G1?6mci%)p-hpJg`lWreg=IW4y^9s*mTqi-A9lDX&TaBhV686F;Ohp`e zkKQX^p1mE$d0mT%hHmkBau{wT7~9EaK15T;AL?B<-|G%m60IV>@NMd4bN9Y3Sb@ofG4k`6ZhrGR>7-c+ zHbe32j!=3|zwl8PVH9?>ZD!ZK1Hxx{up=rT{Z@Jl`hVv+;B3HI+ATpAHA&oUxgO|n zOi=ya9x)PIQ-s|FNvOG0IBkjLYMxUJ#kQ^rx{{v#kM$YsWSXwF?l_|G?TT z(EsK@OQtD>H>bv(8_8biEQwmk8-iEnUoHVkHSGBXZQ2)HwbWB{MN@_Li);5cQh7Ab z+uZNzmHJF>o+VQFH_(ClT$_22*K=e+{44(OMIULWKMy}xL?;)rJK_sW-o9R7XoM3< zY}Zp{Xj=&?4#{u6{VK-Zlan;dShHwc#~B`t4ARg?nH zOH>+h|2AdY&(F-F^{8NLbe)Q-rDQuV=TH7Q1$Bk_0($zAkfPm{5NaaFISyR*uoR9PjlgOJ*Y+A54)>mys|Mq7r|3h`lQ6 zd#g+GSd%5lu~oCcq1~KUp@$PIwM~`v5N^(`W2_9vv=UP{GOGJyNtDNA&eApDv zbwNBuiqJv13ZZvD5&7qujM2v7gyLUun#hK;NjxYQJK>qRa+|1$cxjyXYue0=hyz{M zzHt>w_uUAyIrA!uyX<@n=oz^X{;Y%-xpu z3^)r4F{_^V3`qM{mL;evFhKC>Pd(!fl5RA`?32d69EtaV3LBIKizYDp>PZ(%oQWpN zB^hiu&$#X@c&HGz#8ZPbHk|-M! z=zu5|UtlI+F?6RO`6@n5ij>hQWzf_1jw`YVKPXhp1LxH44sYK-FY&nf-%xJha773k zbIXY{DyH@xQ~J2ErJQlGWUQi~zmAbWOeziFG@h=#M_o zar}H3w0kCszVS{PDLxz$iK?k&H5y(H6AduX^juy}k%wkGap#>cFR#q)q@RTySph@55q_0IL+7$pV%08O&4j zA1F9eiQoKP?PTS`R7m0p2AVq}uL(&^nz4T)tF~xLQB@vDqkako`&eCgxD$+@F8)Cb|HX~yg!J#av@}F=UW{KXt{$)B=7`gj3NS{ z01^zIBEi@)Ww3%=Al4#pI$p4X5L8N{dbXovM?HDQ5*Q_XDrj7jR+z&@Y-E&F;tp67 zq}B1+q)rPh-<=h1&t9H7?F}<>{ij)dNjxW6eFKkA2Z5NI@7-Gam#{~P=oLs#WMiKe zY+F;&k)EeYnHHM*Rw)0yOGnf>F{f!kZLVL-sY%ow=L?ex+ZgyiHhiO)+|zU5FS~XzRdt1!h19~P3S*@9KSB$AX=UBOgGQf>86SFEdnsv%l^6u(RS(Sh>>1`U^RWLf)R zARWN?Zg%9A=T{Fo#oauF;2Mp-+qV3of*_hy-qnEfhspY~H2T82^-}A@4Nr|8G&75< z{QU>(%toH2unal6Mw_fynaQ9cu!}H18KAK=zTI90aC#Up5>i5tv5>ypJGHZ&_ZvmdxjL&lLcO#D>^XIMiELq*;w-d@vL6@eylg)!7A(efui`>R z?exs8z|5G~m1I7Ok|Ur@J9>2yYP<^qq9J7lCD$*=$oI=zdpHd~u5nWMLm9~|`Zcob z35IOoRtXVk#1*ONk(&+9N^Q}$-c>0g%7-lFUk!~)QXbNF{LO^7K@|F;|CL1B^k|5HO_6}y%`Z@xQk zRw&OsoW2;5c9u=)NdFsjwtfsc-D$S0nt;b|shP-$9k(c{!4U3rm|34NgEk;So+mw0bGKHa^Yl z&HP@?Eu2Yu+l_wN(+YHYNV9Wf40@N2x$-*byl(cZ9Kbxe_U6UE?6;Azb)~x{M?LiL z2^mv3KXEL|&~ktlKsr6aWCe_0*Hc+DHV3#`2OVPaQM6t(@n7-@MxjA;*4tkLBe=Sb*i74%a>^TA{ErP!13oNFekcKWURUnjBg(QimK9t>ais@`q51D0bHZsvKb(&k30@ zzr`i#i3>>$HIPD3H$X6LQ|lqDV!T zi+><%D*)kx-f#eW;K862zjlMUy=$j`vn7j8vn1g)ZjBD&J=#&bQelz=?A%?7-$~4Y zAU`H=zSSZcYl58YpVqy}wGr*3SNhvw@W$T>=U4R+Khc$${9@bg&}_Tw>&Oj~(<0%L z2~q=_>}KlC#tGKTZZL$%a+M(=4BjCoL{|F(g~7vV9(OwpK1PW~mNLH)TO|jkV#+XH-+{x#lulsZ<-5;(%e@MrK_~Z+_caNe z^Fn7nG6vI0LoRN?=-SgLJZVCG>}Mb?oYqM@(P|WB@-|r(txdp5DI?oTL*m zJ;yGZCNJ(YV(%d>x;3ni2f(Zr=!>&eK_%nVY{n*b;!yg?mb2T2p@L?DbbQK?J)N~< zMwByHPY?G3T3P~t@}R42LYyArN1Nl_&Yo}=3dm$2J``5Pw91I7;XM5ZFh=Yf8O1a5 z4sH`$Mkfk&=Sua1SLSE8)YZUlClNcUz(-QOj!)Fl-2082 zb3{<1OMx}HRC$iXQ;m{9&(#t40!6khWn14jy7AiZZ8|wjrF0hs^S##5p%nPEy1mo+ z^wPNw>H6jtAi@-hubb%;vrR6T^l3I(i&t2VU78sC{_CD^xoJI} zN0*9LrHr$4O>GM8Hk;58Lr1CoIxy-ujMl+Cm7{hxZY(ehE9rkcOfHGMf-9-;XG=78 z9SOLw;#AT4LZq;(92IJv;WpH@LTf?J8Ly_BtS5X;$-&Hv~T{7%;e zqJWKFCM&<~j&x?elzB;HUazho*Smb_MqcYQk_MptCLeqZTJAVy-JYSHEE8osCE)KM z=ANukYur1VEMWtUnFVP$MUiWUrLE;p#ZZ0JWY8C>BgC@R_#vKwPtIv>_!7Pa2SMKNvdOcsR0^JRHP#B@w`P3 zehaNb9qu$_&JD{X&DV$T@95}hCs!v}r#~4CT({)+Z{1Q_zCqGyx(=7!SvJX~tm`w` zukl*JnVN_hfSqFg*W-^?RH`I-i_yIDRFq+A0ivZl503xf7FDz9tPV3EMLQoIL1@Gv zwFq*^s9+H8Q{5E15&EJ^YbXb&BwHMAby(=`*$N&27*^ICLh!6Dfm7%05MB&z8LtQ$$$6MTT50Dbfv)Alh@Y(S2R@6;YmyVhQr}v3KsC zqWNu)wqK<0EMF&7XD}%Rg)a)YL_Ii7!DA!H17bPmES&$n1MrnVUTFkGgv2-@5rIgw zysEBWVVSh@yxhTLSVgifXdkRA%5}0~9tADQ8*S)xMi= zuAh(w4K|VBC=6Lak#(KpRW@dQfBFCF0YFEG5=n04t?|7VfihkwX@BeauC37XxM3t9 zC?o>IMoT~zK0|>2A)^0+>bKic7}n_wP!^e{*}urAJ_w`3sTbM=hZ(;jB8jzn*e}T zsF)QNQZ7Z7QS8V6O68XsLTG0>%&ewu`30amy;B5}&X|BgDv>b9ex$22UEvGbNhTB5 zWqzl>0EhvW2$m19wJIX2UJ@T8nBT*XEvceb<8XD*mn0`%5+;)Dn%@H2Ty_C`KaZmjT zTWWpBa*`aO3dym7d12`tB`i4f+?Or?h@We6144u9(0(BCqxWCLk1O41ae)K$QD4E^ zG>cyyq6oJLH`?h3bR+f`y1_;aqgmv1bKEi!7mOc&L-u=6Mq5wQJq}V<$GSq+{`*ZQ zyzK^I`WvKi2R!MBKZLsx1T1t?X{uvD8}i#E z$$SZwblSTM!?jQObNU$=McDw_+GhnAUpgCz)X57n;Ffb6&$3oV0bLE7i*~rSCD>BD zvnWpIOa#XyXV?Wf zl3)(B`4VacF`=V*X`b+H*e(ZA+ZAFjV1%TA$Yt}u}tetM#3E@Mdf7%h@ zYmATqjOtRBkfs3gqx#Uq7L1{zfDm0gZle9)9Pbw^4p~lExsO)NwF^p9cWG z%k8<+R$_w#&Cnio#zE$5A4=eyw90qfCsHqATFN+W%(^wYc{uMG1F{~^c$%Wi5 znOittApc@NuE&b$pl{UvKV6nEOvKM+@nAR`v;H}W)vU?`BeiAqGHqA#toWta=X5Yur2hJ z?kjm&{a9=xVy+Ak?__1sz*BF9z+d=YVFm>m5eu1Osea;ZVN%1vNdtn7h4Ctp(K|pv zP4mOlqU@GCT?0fhf_ia-&Ue*W``Ezcq0s0NomPVxC1!2a6T!l}S-))iLSgo`875=` zT5Eu1Bd#d1qO$nt9d$xW3Orz`Uu(N3(k*@+ZLsXl^w$;0y?%4bgaGvV3FwM^&Pzef zWcJHCdq?+x=P$R1u9=#3l4;i&Y+1kd`@)f>0UuxE0(~Z_m4vqZ54ZSMOX;C$;kYuQ$7s5h>y?kE1C$ zoex{@?vrD&tM9V4JQ8jR=J7jDyC&`Q@Ycd__b=-?nIs8=sJLn0UCQo(IDY}-sQMgt z_MVGm`fU!68!o(hrrp-QChEGpz0R2{GVCM&)tKP9sRU6%A8&O2+Bb?Sa@|wj=Lzzd z;W~DBJP*70`@&4g9T)w9`km0*g+apgm`Ax;Y%(C}`sFhA5;x~Oq`A2LedoN!e}@af zb?z~}1IT~8}dj_2#kV+aEN6X;z{PJZJAu_Ben+tbU=$?3*P?ETGf z!o6KzO<4*M%Hqtxysg0Z=nlL$#L&846YUPcL;vo-oOtQt2KM?A8_c<$gy61jpWp+j zbZ3O>ujI@-mIbBMzC~OQb3qBcwYGMd>%zBi?B&A4fse!UxchPx;&NW;-if2DgV)*4 z#gBcnrhO;3*3Qe@$>npO{O&%>?frbe7PD_7-+VJs6vE!)vV-~ruf!{ZOFm8xK9D&e zxZuBzx!%^BVLK#_x-J)>IoJBR5D~mGt;!L{q{KE$^;srvH8-N`uwSResK_1?&u_=4)#-j+Tf)6{$v)-X2^^zqNF!+AEBYB6h z4{Da}zu2|{{JYCP)T|2A_pA1$FrM_P&iHU_(Lb6cu$-T!d0G7a&bbrC&zG~ZzBSNq z`UOD^)rC&SEnuQ{-!K^>JF2pK|Bz+8_mT*%l%5%W(XLA1^E6LnwnO2>O;T_~rZqBhsRW6V zkg(zzB9KL#ccz1DgpCZtms##-Ymh{{b?j^2)VwsG#a0uX>N0jYJt_`1&SB8jJC~>WIcr@6Z|onF0OaRPUz9*KmZrA@`or5o&AnY_LhNoQ!04H;_(xr8w=N zClK8SoC;jqHX&t|ogQ6zFzWOfa(cA6;XB~xSSk19AQpW5h8XLNqO<`&LLEap1V`K<|pD;8;Qq{9n_^UjGI82~G16zN^_g3u5! zIRD4cb6~V~u$TrCe+~5r=GHy59b#mK6bE(8NM4a z$#ZaUlvQvL5Ltn=o(@)OiHRp=K%kO!Olam2-(r);(ltTS<4(HXU%({+D79UI zF$$2KJAWx0Y>mAR;_R}?r-PI(l^NplgX;1*w@oyT)orl)8g>5X#g%iPcQfEI#rm`HZ$wv=M2UzwGrl%ZO#E`8DP7 z`W+`O-qrBdigIZCMc7z*ZXEc|cdeSy5U(zqB+ z2j0xt(+xr>@%CXB^vI^xitBNX)kYuUU5Vd2oI_VkF~}iJScEGZ8ME<`m%01B&+x4bjhy-7>^lj+IH)~KLIho&AXJ_aA}9{S zIG??Lx~($9LDM;Wp4_23Xl?z3PrDyp$ezn~vBVdsI3qk4Si_6Ijra#qB7`Ex+{~tH zIem$wyfkj~3RkUX;eY|=eR!T2tU1;vJ*biKJ$8cmC7snmVL|{0krm9W*=S7Vm2urn z>5qA=C>c_Y_>MZ`bJzQkgZHI8To|mfSZWhfX=C?q^qik_4x8g6>X}7VA+6tnK;lb_ z9SAiaHhCa&?&Sh_5Dn@!;w7ziur|=<3EyK}`=2Wt*?3DkRz@s>{j!!f@C7v~3)QCEqjgaZ`H!h%wB()pE4Z8MAG)+eeBU_c`uvb2N-sn1v(Txbxy+AF1 za4`MxK=pO+whe9C-^L2+Qh#J8*j>_n;CBtc!lK6`h=L0GVYGQmNfqE}dz7@2-wUZu zI{Ii8RkrxMYBXE43F7Ld@IFZR#PxeZ%)({AZ@~~dT9M1I0g6q&k&tr($wy4=LJIpU zZRMkdw38T~sX6Xsl#o97_J=rL_b=2IRA-P)nGeP1D6W*9uFcsTvmSxzbymo*a4u@D zcdk(lSo!&s=H(k&25ey&Q0QJY#>Xn4Q5&;ZItKk6+bGdY&X6^-zsb+BrhEYy*m)GM zITY25KaufmO#7#WL+m!Iu7)`EydVqqa6NWcRkLa*E)^uHn{5!7Jd6iTb|F7_>OY= z#PU2B<7Mn7mz<k?j^~s4gi^^ZY zd*>efsVhFg;5rEGXi@At2~`Lb>qJgn_&IbGt#>O}V@Um;xH-D?zkS(M_N2QnSV%_d z$L8xPcBZ*70H`-Fq)bIk-7Dn3tfebYz9D#)5EW`>;mxlgZv98s-aM{X)cF$k&ft>J+C&$NDUw^b)qPh zSH2xMU13+;^(%YQe9ThGA$3VsHS&cGp3Y~GCWMTCHgmGg17AL~k$JHE7VknKjL`+r26C-C@ z;p#BWYv|;S4ObGs{e&ns6p#IgMBgF36_cX~E`E@|ckU;PV${5d|2y zM6UlJ+I-F~^m8V}k~BWNS{Y5dT9Ls#dHG^!LuP)37@ZiSK%gd3y0I*nN!hc*AFm&( zkyqcLwiwci2)@oKC!VSHjqmxl9oN#9k^iJ}%=M6ePRo%WY4^`o#)K@+8A919X)LBg zLxBs4UM5u@2Tr^xhLn`GuD<%iCX>F4%} zicpmsQ8|`*OA@Zlt`6HfevM9-*0yi&n@L}hSmjW}E6PNwYTcfL9} zF5b>?q>>bW%8P3k*EUGmD>v#ZF6=o#ypdbj8DF!>XGQ!4v+`~L9@B&UMTfPUjtr^= zWOFn_CPXqyWF{w{*yk5&QEiI^<*&=x+%=1zb$68>Ht`(487atmhZx7dgoGDu{u-ze zC~%U}SY$E=#0$Ie^~Lda@^JHcIeaNBYTW@32MCT=y54jHUI6G2D5^=BW70yqW61*__aSMd*CYIkSrXJUB9#l(wd+^^=2Z z7*&dfF!kzvz>VTFYcqs%j^*SvU(@kp_K)aL ze04Y(nMJMil+_;s=*k_ns?h#<=BKIc!^2tDiL4hHVx@c13~`c#GN?VM_SsB=loMLc zv9E#6-^RR@9BG0?KM+K}n3(z*?J|0op}mFn7TR0p+goOeZF++_i9${|=NBjFNhqEl zaQq7x2_ee&&M$h`0rW6qcwkqbJ+Y|Qty#t8ag8#W=6v%@;!&oK1G7xonenM^hc_dr zL$(43e(oQ!5^eoefi7c7Ti?Fu?eF*g_RUvceD>nSQ;?#MdZXa+8DL(<8=6xc-}LrW zOM9-v#5g35UVJ4h`jk`UG|d_uxhf3PinTwtY~;Z;FQX=U6dIQo*vFHY!M>rVQ$0G- zMO6&FJjrP4z*7}=CBlsXi9y7$_{Q-A3!?n)anD1kxu8?yd%|-P%0)IuGvct5Zi=^h z1!u+hKJ^OEf*pWyVDEi=A9Mb&=W~Q*qG@Z>cq8Y-H+TLHy|N<~!_xEzd{cq`^@ew> zo~o1yK=!~QbF(HQ4e=0SARF|?ZQJ^|K{rHUo0L^ca=o64XdUO_Yc2#l<0y_sneBt@ zVbT~eD=3?*#4lxJVC+O+&ChKj*yE<^v5MK!V1n~jgbFskTA0AJXNPcN!sED_4=FIDnK-GOSKk85GQ9s|XJG|{ zeG^P1UAsX6*fcD!IH-mKMTX%4W-ZkByG5+$yqh_kdOQHp0M9%pJvhvK&|`ScU%K(} zJ9PQ$&8Z)^Q&2mcakQ&i%mm2B$~BcWHsr``!zoAV#4hfgIKj%oN*lq12ZSd zM=VVm#J8+^&aLXJXP$42?##EE^Y@uPVJ@fzHBA{N(&HTL#eei*hXFR8;#p(-Oxr(d z7Y^nn`&O>UsaU;FOMCcP{2)yo83QjDy6g0A13@*(WEurBbcV$bVVcBXO@UfW9vzq< zmF4D2P+yK(ofP8bSr1(^-{Z~9sbNc15JO{NnC$UTC`FSXj_LsuLDcYf4cZF|Gyr#4&e&)4yz4O0Nyj5ysnC%jB5= zF4Ku`@Q#udOo1dQQ?F0Ef&$hSQa^2w-HQ)dZyXEFU>Wcz3dyiDY0$I`BDM&sJEDZ7 z(k$CzJG;1;PW5CLOt4 zN_TjRdTVJ>N{w1MFT|NqIY2FBmQJ|pu8eFV^F;sY?0KO$TLp<=GavF}>%gj>Zak&w z>rA)(uu1U!`Dv*K?@i9F#vR~mavhFFc#WD^7$EKgI~09nUdcQdv)%XM$hLZ1N`h4x z7mFP)zF&_)q=jBtQtOX`k&9mOEt_v}!zchnK*Sou-d8gS5%Zl*(Bvn5`%aZg`sF>D z;?B|vJNL!jI$@&0q#!$lG1{KF#Pi=W*MSTZZzUyMV-heB6J(E}u3{UoYoNn}i{2^+ zn3S0dLYs0aVLC@7(gUb)Dw1R3E`_@rA2S$~(drj~(F&_*zh7rm6 zov>QGO>&*bO-PBtgEWL2o)W#s@k(^M9I<;rBg*n912ZrOpnvnb5Hq2ywe5KNx#P6q zTB;P}Evd{iqb0yM2o=kbhMT^~uz8nc^2CIob}0d~N2E##AScHUMps+C zR=kY2gUceD7ZrK>pg$F>C&-@zqF4p!2c{Z?BsMK%v@o+O64Z|6!^!_D!6Z!<_n%Ly%UXzapUvKPy4!7*u*b-id?MF-NqdZ$gXOrxRdpqg zIBhGmt*m-mF`n%)Cj5Y1MER`2l4&P%2A@PKY7``T{it|nF))HliNl;DSzzy)~f&6b|LGiL8cV!IXs!E7bd%sAi1$=c4eQKg{rU1p#wGxOnhPT9-wQW+gMPIji90 zmP=SnWVTv{qw;OZWa-KQCIXszrQ|5-G**iexaovW^hchgjHX6I?znxOz8(Dj`uMxE z*S2xhlvd4%q256X*FdEf!R_v;u0VMMPSB%ZITLF1Mw0?E8Qw#4V;G5*ymrnstLCuS zbF3=!DJZ%xz}KTF`Ov%LNM&%n&I5~-alm41yqpSQPQ)D`DHpay)z(yDgP7PpN$;a1 z7+D91GlAk$Hi?qQvCJejLZ2qPnMMOvpYce}nwTDI6T{4i7@5Nd=) zW{)eF-7)KsH-iJ3db+uoa`yJ>^6wY#&fi{Pl1A7C!yBzw*e71KuR_>L?L&kA`{~ce zm%qO~eslH=w+V)4rXiERmS^;2ed3s2B|lOISUIs8MxgLU4~j<`vyR-C!g#{f8976W zX;0(f9hm1wBGb9uH<2Y@H-g72vtck%!V%w^lPQetfB)};UdX=Y|C+D+y)#+X8oA)J z3~cJxX50sgx7`Nm2pJ-$MSD+C;}xNec>Mq$aUB&kCWt)9?l}p>AT%6;E#uJIUY?8X z>JV&*yr+j;Y{k>MhkALQ|C>C0c^K$YVa$IZj%xU=$`C2Ou{YIY*@!kQFb&;mT%No+ zB|s7&+XIr<=$sutvDO`SYmquth&}3fit=i^BD&e{Ig3CW6?pDyYap+4%>gJ$PqUnlIo9`iDX2;}cL5h>)J0dp8yFCTR(`{keCv^L z=6UO~UgK3K!^EMb6Z;bhC@Y(kLYlBMW{$7d>t`*IK+%^j#cE585hjDNjzT~A{rr>* zFXyk$&o24OMu0~2j$;L)Iz^Ry93ntHzyvn}Dt!AZ(P1VuOweX}zrcH;D$7j~GTO?l zx}ttL-UFlB+etsPrymZc8XGJ`um$&M4I07?%R{Ca8LDe)=pseTS^S_`!BlLU!aG`1 zQ4@&irR5F0;z*Sy876*#eE!$s>iSnw>dX}jx)|EyVB9c-koTVRf9RT>D+}VzxD>3t zJnr38C`&Z$==@rUah5z6iUhDN=+2>X-((hdtJ&OD@8w})Awuao?5tB4$w=Gj^o=0e zTx3f+=IlnR1;Q4MsD?{N^x|?3<9PW|5!&$d|6e z)W&JUW3NYhexT%c?Fr*OGEZ!FCsL~k1w|T5UC9tm>E#ULKUC6-W_(kf<*_P&n}X5E zAo$aD8nPSyq0rMH!s7tQ>rM)xkYg(qM}Ig?;6)0eO4-0KvWGcWHitoOcpWAw58?7) z;7&3x$7e78`h^J76h?+T0at;t56jz;gJGIv5;GW{p-rZGKJea3F@&R+_tze80bcZF z&Ff*5+_q3%t(xSN%KLhbwEgH@?uK}I8+u#It7_c{q#d4pk*FVsrsAe8$E{Rs{p}Z{ zRV~&fjxwlrc^A+(BR5Vo?aBpJr>6K+UkAhctK@ZZo4t$iR%o|Zs2~jQrty72YDoCz zHqF7NBzIG*yVAZO`*9=FkBD?}%2Q&h;wp^RNdkG+%Tl`RmNFX!FJF8nBGJ(%^wkUg zE(VPU>5a)$l-W3lA}xH`Xn_@2E;iGN<7bGBdGDPkNNZYEr;50b_l%C zXigPXS0yaKvL~WwFDv}!^PtLFvHkph`NH^1@A+!WJz~ zkjrcCgzW<=)voDS_BoTC=1-LeA4N=EtEy@gX3|WWNr}}+H#qsK&p7=mAG2seKCZ>@-2YLNknbbK(P@L-^q}kFXyJetE;~w@r8ND zqMHMe?L!Aae1f%qB84$Pz@h|`i;FA2Qhs}N52Q19xYL#$@`5+nVdEgiDPa|aMl8Vp zz=PznFL-z4uXsiE?J$M?@a~bT9I!=x{czNO(f<+-q6?4N-Sip?+$IU9vEMD8QTpUJ zk9P!P$cl$AGVA_6*}qr{mo;<6#osSJ!*9QP6#07XD1OU)Y+tFQodsx?7nWYJTUaKY z(yU@NfA}fLd;I(0=M(gp$v7#DV6dZG5>6v$dN+Y78Cm_Q34!Q~Knrs% zYO1bkLZ$YJbh=qtOdgdDqlwSI7%A~~I=+VBnH$-X_UKr*PkHSC?yQJIWTK83t32qv z=>4ttk^kQppMU=87p4xlK=7?xAy)=6RgS@y=B|wv8M53~GGxldm@#q5YXCv0hSy?+=j(;W z02X;}8>mFOy`+WY#wK7C#^F%0kjNp3YRq8LGnM7q%IEW3`d?$U2aQY6Gafo9#oxM} z`XvbSV)&`uXMOE)4#q5bW5CrlRq>Fg4%uDsX(1A4Dl9XpFxMuZzgo*r(7F&Cgq!&fi*hD zb|vI2tm`q6bJjB2(g&WfN^7rGb~h2qqJnvr(3DAyqc>6)iV$KD zCVY*A1>M(5uPaD??(dS@xHAb$>I5X4%I;(@zVOA+z^Ol(7Z@WqdY=fnl&kcA(|!9r z9DV!A>^0EkF*DtlemYc}EfS&Hap$2xRly%#_?8qY5Lq7Kk_53&H9DpzQF~O4+7EY+ z%V^4=wk&MRq$@*pPIzB5gt?1KDmNDjj3;y_OoVyvWO1LJSd*UPj?Mb0$$| z`+IaYI&dp!u^MlA_cVdV9m~-t=N9g$$9#IqB%M38jaV?Ul>m7+(F4c8^93bCTNzy^dV;R-(4?He92@Cg`$_uNEX5=_)lugRUp-V8=sx!e(~O zh6$1gm@b9=)A6&4O%wtJLG3p#by?{p%b1-n)E|gu5gORIZq%9S9$5V{xjE%*%yl^o zom4%}l(86lhjqivL52RwAhQO>ViA;L-FkK!a8ixWWC(^~FTV7I(v~AW(P0~gu@vf( zeC5JueI9t~1^Uh=i&CG@&uk zO!J$=uQ;?Iccl!`7uJ55BXd^N?ukz7R5*|5GtfwHwn;ppMrsoAIHywi%zfR%6l^FB ziS)GxJv>v(|Bclx?>;JkTZKrSqvQAr5aCIit}iRoJ9E&eVP?#_P#+ z+~_>0OtJ;Z_r~6{pQ6_FJ^<=J;-Kz7w@ydeCmS~Ei04?CLO!e9;bh3OzQr8X=A~=MsxjJUVt|IVbq*y*+8F z8?zwRM5My_tOI1C{xa0X+(=>KsVw~r@cjl^JPl=j(_pV><*oFH_fa?D=4Y>XTpwts&QMS_M zj@5xVbd^jYWJhEqmcbL5(hY4#t)|XGC05!=UR)U}ZEXoQb^v&%kiAahz;hF@fQW>0D%aViMkfneXQKeZ+lh8bq8#KIw!0(S- zbXHsfyMP8gg|By~?_@S}D`e&adUAyZmGX}cxRB3!|MuBupMB}I-b{)yAwTHP3$x$M zhb*nO9+4X|;9(J+zgDlS_ke)8FWZ~~5vzsjc--s;0x0%Y^yxFBnpv0I$^6&iID*n@ z3y7;xvaGr=HI&w{Tq;4UMKy_N0}2Kel*q#lgFzFny*?ri!LredI1N;Sq2MPfD@JUh z+)NTc7_q!@#1822*!tb|6l!63gO2%$99;urQ-yK=N=4PU)}R_Y(4-J8BKM4m9in08 z#~s#;U=0`wf7@UfR#e8Pc1P?)FSR|gvXeQJkQTQp?M3uYr^3}=V7oUFmIdVM7Yd(DV&=0ws)lbsf z=RpSEU_6-kT-I}l^{5Tx@ZyzXeenr3Jy`RQh+kb!CiKX_~|PXqAGRbRG-&);b6$JT@m_uFd!Y!EBGFLo9Wy zoA`)!Qjy}#xy=Rbt6#(89^X;$pPu>d>)x+_?1dA!1?T8RAO3&;XzyPKJ@?_u{>#08 z{dSg+xZ4t0=F|C05>@R5>xcZ*XPX}}?`^Oq-L67T`f+TjW8zlZ5M%>5*3Y{YqXMsT^p?`gTK)q!yH68^3$%#h=A&ya zTv1X}pZ>&L`!ZCI3SQDHR44E@)W+3|^7chJ=3Y~atz%A`)U}a&lJD4wdIJ+)V^ap! z+uvTS0YL+s}Y-Mn#m`M%dyVl1|>gUVnXY9UhllsXW z8>x96wY!W|}$*Kyp3;| zC?Yz3{p4>yp8fsXPk#F^`<)f~VHJ?bny_JC*)I>oPl^6xE)-4UT)q&uiii_D`X}#j z@mK9RtQj#QM=OsRkw2Nb`0r49n%rm->zDM;IN>Fwue*&j@kG|h`&gW-w;He|`!cSf z^{^1p;%P@-+#TA7a7)CVV z$6}{Kww|EH60cDKhnC29go*sPp8LRm7?UCA9@o>`TTI=jyJ7p`q+P+nCsv$s{eLtC z?=ad5gE(g_(?0M=JCnYZq)WwYVs1dp4gEo+3xqC*cpHPtTqPi3oyCR`mOI!(g(8zx z;HkzT(-GaG%TTR60L>TYKu6li`GlNgxjaJWor1A(k%_s#R*rQ(_bR!Bt`&C{;BMyD zH2exLt_TAQM|wC`TU@MH-7e0iQBLfppxOlQ>>7>aAhcyS78g9~+dVDoEL2g3ow*1U z&bwP%dl{hW6jmi>Kt0uAhb)qpysJV7Tt}T|c2-nT$ZXbl-3BbErv=DSgH>Vx2O54+ zMljtAQs($*gg-!ptwty=i7S~ngX>``pukIpu=Fg*fXIXak;@VKkPv##Ecwx9xuvR3 zL^oO03-@{s%yN-C&M8}l!&v@{WCXF=R+z1iK7=F99Oq@;QaT~oROiyryIj_LdVXV|O$td>ODFg0$)mE$+-PtbB#Ee71->x$*C?I08H2=a zFj9!834|+)_Knf**J#0M$<-4P6DF#ZM)XKJJ!OKmk>X`0beXc$Z$p-PlM1})rdhT0 zGc&+1yQ!M|=}T{`GIO@cRxPEqHf>SrYf60`QtE3;eNCya|Af@npaekr=Ot|9lwsOV z8bTSSDZ?~nm|i%;^sxzdtkB^sT^!V^84lPwPlb+3?ko;?#%Rj+1w0D{E;9DP`-x=# zGKgR@(V{1Q3XO@IC3PHuw_VE_E?xDaUU7ru+dCiN`2_pG~R)w9z21mb+yVGzMNzKfqv^wmu0u*-F-5KE52 z$cNa@ZSHRwH^6I#?ldKP>s=5J^D9>wZ3>Q0bzh7!`!C_G5;dSBpf5}x zV9FDcyW~CptjNM)J|i0%*8gDK(%Aujo_Xy z=Rley&EPY^+t7ldIF8g(@T7n`I0GX<)+4e7B0EOK5^RQtDuak9rL=@V+~Zy_#_(nj zG%P@}fKyUJW>uVc`=YC1he7&w>ln* zckgBzp&3_gaq$$Y0%pji4~+8=_uyWq$vvO1VKn86d1|k>d*MBB*h8633OdjejvAx& zj)M`djX6~+`<>{?Da&6f<(Ac~%4>CCl4HS8!^rV6Ux3FSF5Arov7AIfIKJZY5Newb zo@aK5q0Z+QSmPSnH*T8nPJ4Hs!(a&1;G=tj)R_xG zPSuTv1Nqof2X>r(9@QZ zVJ;4-0*?*jDU&3DL<7tpM{eyuq7gkO#*Tr3ACi;TMzz6u10 zliecezpz?-Ay;>W$aDc@-ifzEL>A_2ohoum}1qmv`KbO9vx5%NKeMEV(-k49J@8}!PTeH^6$ znF2)aGA2jH1A6iY#TBYwpxW4as8JnD5&skt+UBL)H58y5TA5AssPuT2 z(oHaR+P(bJ?qxasvhE46UD?gro~T<&L@r|OcDs_9tgITJ3K`{~_e+pM;K8#4jD*8; zYfyoN6pH97P4CnsNvJhjLTi@83`Z^<)1VR*5R+Vs#1yS(_)R!W6Ko8Jh=19>s8iTF zP2z6R58ig@&b4)91Oi0D2;}k*_9kUy$~k%C*RzR9)GiybomH4&ED%SvVJ<)_j-Sh; z>DJ8#Vtc&Q55z{+B7;%y<~ zH-+=*@&o`IgYRf$f#N{idi7tfSy(1L{;x(GyWAm9^rmUseBJ!jvM*r_TO>rNo5p!_ zhaVsRc{5j==dvPc=e2}H&kHO*pYVNAn37jrdbbTur7~BvKFJk#7{K-6fKZtC(KBVH*}Aqkuw9^wWtVV)S#} zF|PMsGmz9m)a)zv?jvXSl(5AbY<4BL&K6rGRQXO;BX`WgeCs2y#YVH!@|}Rw`~A#&ax-sBO8j_vYpIadou7}TNL-? zzG=;c`O-`U#*T*Seg*Lp9E;+}55_jbwgiHtV{sS8ic&nE60Al2szOx#6G&9>$@5R1 zm0UiqS6@k*s%IJG3VFoNe8Tm4%t9!tM@javZYAR@z1ohR4&m?R@PF|hJlO(WO(da`s(rLne`Q>fq5#Ec_ zB|eA3{`A78g^0sS$iOotTqtU(s;@MXh486D%St)xZVClWW=3feM9P<{9psp@gI>-) z_IrEmWBwUreffBk!9Q`%|LynA#~P!2e>8VJGWh|Bkki<@;m%SSA+BST^gf7F@UUnY zo}j}?tv=)CiJ3N%aj1j5nhyE4qmGRV8C8~$ zNs6KWRyG0F1Bgi@^*iar2$V zItUj%<|==u2yO|%AsoaE<%0%0glN^eF!2=^sf%_`-vM>xQQ;8M?7E%I4MG@of zz%wXH9*7K1__s{kB(BwQ`X>h@J6SWOdcNdD6_TWE+~#%mkqbv!au8o)m=$EUELS}a zCVvyCI*{o4R)193R(@9dgJ&D*YVV*OgLaH{+c924{^z1eina~kw&7|kkvNhl_X?$f zNODncIpqVjJr`l6*ct0GXE5yW33#jSC6d42zdt{<97vc<4tFiPMSUfBtr`Q#nCr9{ zQKfHRvMrFZUl=AMv@C6wI{a4K4(yV!Tgl2L5`76+G4lu9RICoG!Pg zeVzV7p7ypfs$oVKHJ7q{J_ikKtIL*F|MvwOooIJm!05{R+{dk$DB&SFlZsGN$J zweL^PdKafcmPXGnpQ#%le#DhDXxsO*ik%f&fp0`|lT2n85ZemO5>zX%W8 zRwM1Tecd`5^cpGEA}@=IA{avsG4#Cjp(d#2;~ivz@+m*#^Kn^`zoC9 zjV{insg(<($j8HMURI9rP}$eZRoFY2+dtC`;N&r!Ks=Uo$~Rs-&ifPL#u2tj>sAwe zyzg4w*JCG-Fbf1Z$mM%HT$7E0BVhm(voAxnbniGB?;WW;b%SsmMnM`qI(L_u!mxj< zTJbKP7kj;@{25dadql(_0tXvN0ZLrpL9ypqrwd+V*fL$WB$g^UWF8TuB2uKGNaiFUS5F=4clh>YM8FP?4Z^?ffN%_Cy?KU81%_ISbbPR}kb&rXi7&Q8CE z&oANY(3S_#!foPa?NE3fZzWnikOULN`pzpj>@Kb*jqxH{D+LcG-G$g(6=*X_qyoq5 zI}ovyqCRwX%i5r39dvVnnY*kbshVwxf%ur!rJm~E`^(oA{!m%KVi4f<5aEM&Iu6LB zyn*bWSy+Edwys`Iq`iF!`>}C|*jZ{+D57#0CTa1?&VCQ}u}}J+C^i$7E<@Bcm!g#m z@ay&7spC)wz(f3(D`G9GL-5?KrKj{BoTcft-Mpj$5u;~~vsUQS-&<)i9isbQ1Sj5P z8ZsPR;2Kn?n{QYy{gCEXHuKREMR{Fmy@66^HbzNAS{+mpWGk#$U3hQ$nkSPaN^Waz zO_RaYnR2Mh(LKLabv(a3J3f7L2EK9;274GBidgC5%$tPg7A>gzZK2D>ITRPuuA*!5 zR@#@1m`tggLRM0uHNw(J($=Mp^K+jTLu|@;G-Gv8ByQ5R3|QiU%x*3%8D=617eUG6 zPbTadBUI)mCjZXx~A7vEPD-i585+m&sg@JA&~#W z)z!uKEH8(H#46-Y7|!`0P_)O(nxw-TsBSHPSc{yCYXq}Q*`lx(5kuR6*B37ve=G0% zb8k-*86}G?6_b<5_$K8Um9k0-r$>56@c9>?fBxy`eXAksGHkeF?DxUXCz!^|G4oeN zD8U6qeE@!*_Rr(|T{@6MD%|G=_Yg{QO?vWREC2JLw5!6Aob!u*@9$jO;}ZCFaLt!e zsj=Ezwg>g?!RP=^Kky|NS9Wsb1akxnnZ(OOIPzxuJ7gcNcux4n19MpF1}$cy1v}pt z-iijnW!QN)eUU_8Um!_l&(uC^`AwZ$8@?0s;!KfcQnpIi0a8P|TlN90P!h)kQ?@u% zA*-?OG?bqU&MMEt6{o~^YoPO;x|O~7p_R>E4h7FurZQs{2K}l8zLLIW2o*rJww8BtF#v0~ z-Im#O#W@ynOo^9tZc^kw?~>#`(^raVTcT}%GuLC`*)j;c%m$preYE+~h~!QjG0d2OmZE3cGKk!H|jeuD$1Dnaz~ z=Q1HTd@Ex7EIjF^OE=XiEa7g3=~TqIRS(IyH^cs*`>6E#;5vD5FZC^l$e58;c_FYP z$jxAKRAwS0KmMTKFHwGkN`VXe#7E@L%0HtuYRNjS4PE*}CsJbL`^V!LE)>QvN+~1Z zb-Y40j_(yy0MN~l<>oQXL6;^Xlh`aF0qw!Cd}{pCf>`EIdwa|7+YDZpYg4tr$ob%8 zaNZ!6Di$TtLDJVBE)sR=e%Q(#RM&ZlvJhL77A;6j8AQTKCjLgvQpC0exJ^K6iplRl zXkQud%kJdiLsFE$KO;U{M6w(iI?e(#D^20Hg3Z~$j$mPl1SyMH<3ns_>3sZ@8 zuF>D#KxAra)0(QnKCy?@$=lvABaqlz#Dd|u32`+IoQY}LXkDD6Ik+gbJGI@ZR^A%x zKbJXl>&m)i+$(5mDQsJAP_sDvDH;e>8Bz7$_&D)#;^PhY_=NcQHuCYA(Z|Hh`F;~j&>SMlLArlo&;fgcz7jzl z3s4O9NA`G?ph?2A2+MC}NT`oBL5YGn81oZAQ2fL)3>#jWBx9g1e zEqC2*vVlM9j3*hwP9*H#%I^4r{|{;4#g|`x*~1)jkkMvbE{LT*KRS~2{{8sPYn_D@PtA$y z(adevkR9~?pTWDgCWWT^R%W7*BQpfyxv50O=7_!U4SZu?P@)(z9&1qdlZeCGH=J3@ z6%d=M3X(^T9o*cgqZ>WO7lNnpb+M@XEMh~&gXL)<260*$1*`I<`KuM%;ahQ zVIWfj%Rb2bR^o}B$9`WxFXBv@)p9CFfoS`WKRx!1I3*er(I;L)T^dAdtTjpxd1qXetS9) z)$zGC1u7>@q{oEAk84Ifa-A&4$7@Iud5N(X8ME%!;mi&%xeym=V=`DipdO^}fvK~P zkpw**%VqDFy599ml~^@T%gCIF_suFVzwpK36tWmK#~MT|bFd)P973LDk-4N!$IuIf zJ%9_8G_;l=O98^q-~yUyc0nTgcdG zOWJQZ#r(Pb2^}k$N-3{fOwDy$a>AvIUg#C@CjCGZ1apEox3kvn=PaT@jid$JZbDqVnFh87cliIaJdgquZuWFhE7hhaGFsZel3#kllD23C% zhx&>?>mpOzz*t->Kf7}Ha5cL!_X!$aRmZ8YS_y*Jg0mOy>ML+HIZuWNZ9%{@Cj3as z3|1~M1fPiPGRqpBp7`cM39~{J&$iO;H|I)n#^&0*?958YgwMptM~w;^1l|D$%7jR2-SDq=_74? z0padNJL`dP5`h!TuE$zrPv1;pA$x(++uMuy}c`D#EF>j<;we> zWCX3ww=>cyZ%jH)_pFvZ)t=@(Sx98%`C<$id}j|K`|w<*0X+o!%AwpapJTV4{~P{e zyJn9^BWakH7mQ#~eAeeGTKF@>BZ7qs_V5wGtv1hBqSQge<>+!84ovH+3feIKKC?yFbNfnMij+zg{HMv|HMKdY_0c$?AZ zO-h?vhQ27RUfJ5FUuB+U+BNHhHnZ7AB(q&B`;pWZp+ILMJ}!x4YqK&~6pbJ5{^V{% zTsp@Y7hWH)gV6o_4<+pKISv1bC#6w}OC|v%u~X9`qj`j>PRg(%p{O_w$^|sOf_SYV zT;r(kp%M20BZr=A^70_N&z=XPF;^(y$p4|dZm%$1RT`!eRn4d@-KMzzh3+L7=0>3z zyLx#-9fkbj4gy?4mqD1wn+d*_8&^D=S1fIkN-`gI#G;E!*D4_|jt?IAwvQK&iCann z5xs5V)=0N%)$ZGLqeVw@&a3F|C2=?-Vv`f_r}~C2WRl* z#W~L1fR63qLZ`1&CVpEjzf|hZ+KGHH{z_?&zdV*IaOJf?Y98R)G<6Kz2EM958OYEc zB%c9+Yl%#mnGYZvGN;8L67ljF{fxhw$bDC`JNB9M;y0@K;=Z8GRJcLhLhvUFqs}|X z$uXKnD3DDfRvfJ=ri`xwDEe#5`)$X1BW83`DKMRbxnm4*>eAM1H4CPa19@yfUaKvA zOtKIrrIE%m+dQ^NUxqBmbVeVQNhJ{1-U^FuZ#0$13q~@?450B8FIm%peDb>GX9pH- zh`PWxC_Wcn1PkdT%C=A19;-BfmI_Lty<_)6gL*1Vpj)xF3)e{L_a>$ zoiE@?O{nC?6tBt;)33V@kn0U;qfMZFSzNQN5GRX%qJT?Qv+Zby8z#zU_ z-nAxb(Q#;|fic5G?{I^Y%ouNxjE%Xc%GE2Xl3@-9m8<2QLJ_d}Oh$J~k2RQRc$fK{ z@@-PuN%OlD9RoN$k?ca^WOIW64Zb<({Q7%hz?BH-!9Fj!s6u9*uDIB3K5mS8XEXFD_*$YWUkxXz z(cTHGb$gh(HPPi?!##Uwdj7!Cp5$hy5?YeTzUg#!ITnB))a`)M0PtzKN6uK)UCLtr z!^;)KU~qRukI(WtS8bkndYy*s=9v@NY$KAhVe<}y`NHoX>`$y4@`t6gF@ zkP`AUts+CnR~$wqk}<98TLj_Rn_!|Yptmjv3GgdE=em$RQvI-0^-$MYCVD94Gh}8( z8sr6g0pHwiW5K-O`#y-$eY-9103B`kSk)o!SCyOT9UI=GbiqcdF}>>|6P9wqRC@=0 z0XLh!6L_xzQniZJ!!^`xNDE1pCBx9%>>!(+1dreiM;|i!K84>fh!VH}OeA&|5eGIt zm6P1A%3{R0j52*)sP3M|(>uuPQNWSyn{MJkB*iM#T$!)A-l^uYZ)O#JEMoB5VkOrS zPsAAcL{#FfTOr<8P40?i>*xe$XZUw zp7o&7#6bizjf`Fm^dX4Ck>cM4T&R`N>Nw(1&%q4Y&;f`Bvc+{|=NiK@6eqVH;Dih2 z=k7c8AZoSWTzRN%6VQY3&np@$OqiV8#Qg@?#gD-6zE2WeQeIaClZIEMiZi!Cp5wt6 zaXe|7S*JycYa5_g0s` z$W?{Y{VGSDO#aq8dU42G0ns)~f_rtW1?diksyl^yl-eYapgEj8eUba2KKbS;B7rN% z!xTv>ky&&Blbu!0S)XGgS9-@y&$lzHzCvUfXi#C)dkU*2H(TiomWrdhAV6_&iHv== z%&th14DVf_aNyKxjWviq1dkc)15*fxzJrLhS8mR+Nq;f4x!3Z=Lbw@+Vjj$(Fo(i%>}Y;|5|Hg*PHDOa+;+Ee(d$v#NQLXQqJN&qoH&c9>XXT~NZPb}k+Fz}+vUDTx` zalje+2>N&gBtJ}(Oj4%e^C?4~-sj)u#cnCKZDvN~=k)CD&lDq+9aCnF%HHuEDpu|W zXc$fh%ZsY{?k-G36W-hKS{(3KW57KNIw?1SN3P?4)N({Ye&rM75nVO?LsZ#KD2)S> ztcp7Dh+R)_Z!xzg7&JL?XoeJ5YcQwE`qa5(!!xc(5?~QvOrr zQxUn5aMCr`hm6o12xn#{Ov-w&FFk7TtAfPZ|gC%N^dX z`Qp_{0ko_-Ed>ggLNs|)Qsp-ABmAZcbpW%yYU>GGe6or_@vdzGu>5dCXa>0 zo*Acr(;H3>W_wi{5S&r5tm_z7ieTcb5bA^w4loZf1JeIgW_ILKg+|_8YNNR9h8673 z1sTDqw05EU3W8)|nzeI7U)Ut9=5Rq`WKm7A64ZL|Pqa3_yDS`hvg<}ma$I(-t7RaB0c05b6i2?T>nz*?W+?NwMFbNNWk0#f!sIq|7~GA^y=tr&8#ZkY2& z>1VoM^@o=W`GuU!)%@KjnM^mtcL|6`#+^l?LG=?q{2AmTJw7q@=kWpPNAS-X+@Z;* z<1}Fze}q5#z3+w1r}x^M`bbq~>)FSgkwv7mOiDhV+Pf zY=b3=4c>}G_n|U-0JG|>uJ3yc=YE|ZSRYGC(bOP=GQiXlX_t;Vd1q3nbExw*Gg;K( z$*non0@{|SRGgNLf+1!g5uRe0M2I;Fhdm5B>0uyBgJf%Rz?L_iQwp490KEs}qsp|Y z{Yi164|B>qB9_-Ixe?UCgtzGU?I{xh^HB0iUSQ)8u*gNIEDA`J(`yM*B}CaD_(=<^ zQbyZ~9meVC^`laWk^E{;{#4O$(U0aB=;rH$JPEUCCtl&_MOmXh(oP(N)8;{yZViOH z!W>%>cNfX%II9Ngs-e36V~ zzJwqbT~W7WNguJgDywj0{srVu!$WmQ&*G%794qz{KkUPa8nlPV+-u-s2KVTZJjQaP zG#m6ob2yw|JbZ@xCjaA$x=6F?fHHT&oScc~@@5ejV);N&{)>|7NSzhX0b)WT`?~kH z3;6;f*1qL3n0_#jmyZA(&QHH>u$b~gyx>{eaNft#+m3RTjGoRUg{U`LvxEGB5WCRt zefOxWVh0+pR!xfqxC*%u{`>sjxI)X7^+Wh^s3H^7MmZj*&X6o`gCO-hn03Lv+npevV%htL9$6!4oIb|EI2=mlQrHvJfw$f*n2a>{i(x$G7^Tuj zwbfdMCCp>n8`?jtWTmIpHKlLC&&@fJ)L=8gE75GK+k`Ap7_Tb>BQSZ|QUB;uIjLNY zFc1i{Y-;Z0`r_!XUwqNP7NCN>PD^|00@1hS_ygC=SfzsGNsh-EOX^3vGe_pC+(UKz zNNFVHnOT~eBiUkvXI!OT<&4%d&YnK3ZL~2!q>0(_oXS$Ox!i0afz@$Kq(x=i4w)`T zWmW}GFT9TS#)VZH0@uteh6Cj0+F~K8$H|Ant-uX7av5i>_wW-Fx-9g4Ez&FK>yf*` zGz;ebut%%ws$rXp1ZWpSicDpypUJJx&55z z4kR6Kk7z3FzsmO+%7*w>eFB*YxlSoNOtS z&ao^n&U~x-)Ke!>cPYHkaShp8&qEmCkC71aw8%De#Jq;iSkbEdROBtUWFWKh(uy`8 zI2}pI)Fq{%H-a5=(Mv>P80|%9Z?7<^CZ2VXoLdLk*csB*;TLhZsOMgbY=T#NuUU}B z!hnjqHCF|melGL9$odb%(bsAx;;+B#C+Y3;2oCeZ&%+5I6aM=Ax%r^~dH*gSd!zgG z`0OZBoQC)B+m6~yo;ymHA?Uj#`9fX7)tW&rZt4@2sLev$%gUvp5eIsIn2evRyCOv* zE*2k7v*-Nv@BIDmV75_?z~4>kgXc%jVIrQVci9->;hB=mjNX#1zDqbSs+tf_EnFYV zU48RM*z2O6%q`-rNG$p%Q%tOIn0_Li#-H|&zUaR=e9^z2B>m40gYoE#&%F6J?y(8g zf+aA#8}!7^Ro&`ymJgpN8RvZw9%K+rpR((a^S1BbzJD$fMts?O%K0k$=i@VP50Xr@ zV=*YbcV3FTRP{5UV$Wp~D?ALzRY6E>tQ`A8K1>dXBaUkST`t2yi)KPJ3sd`1U0=L2 zEWR@}ereZ;p0I`L#4k;)ny-Ky{Z1z^5rpZjxYFtk5$)nLi+Nx;m*ux=TBYsllAJ;8 z#Nv<}TK=@RMVJ{;Ea%H72M2N}Qa&(C<)1UVu&*Au760r8{o#$jg2`ZU<#B|IjdBqD zV(Gd`Zrp2-_a2V+8t57(4Nxh;h`uNR#(|d%L?R)Q=$JmJ0-%*Xf8V;_=x$qT{esDw zLd-uSl71&6#o_dk6*bMgfy2W?WS#7TxJpO`siEl`@uPerg?e?a z>y~jU#=w=k1S{ZQ0`mdE9dchC^pp!#tre)21`j%MC}uEA0}R~2z#EM88N$IS(SOm? zmk>iE-iuM)v1lTDn}K7%3ZLQ9xZzz;PF$T5V>(h(Zx4J&Xoc02gD)~Pnx$gSF}D(* z+yMP~@IQzYPD6RW0bH_h(Az_Mm^e~}!O9?TL2yCu7>E7c9xVSJFfN!oIb-5sY+psL z>gF%|s=cc_h^FSslsq8!fklxv*N@!Q6(4;Ha|L;Th51IuGeMYt?>j4!Pz+aMOGb2Q zca{7^oDg)&z+QyknjDe$AWwroD;-J0x(p8I(!~gGu+WzR-@z5RvFPe&ePfWw3@G?| zrhNS}d4)8`2t-JUM|=!FLL8ISLId?&-%E`C%lDVBr8om>DA%e-QwZuEUx&9-uwco_ zl|C}=3=r`@LT@7Pv4FMmoeY%$>zm`vyiz8PZ3BMiW(t=gw4A zy^7*T^;dQh7fW6+f{A&PX(l&!*e6bt_!AjR3MP2iR76vF04auB*PZ=VZ}BeLs`Z!mYORJAp`d(`yuWjkXL?M$fOKi%Mn?(OM`M1}ffBI<;yY?UVUu9p97@G`}$>Sm4X1~_gB4yu5>xONOd_K9q zeXbIV3LaJ9*`)-3Kgx9bni16|_*;F%m6E=on-+(+vX`tVIbqW*6DHMTG| z-GP`T(U5ei3Hz<~b4!^HuF-n_eWF}(XfY6xzarp8U4O&n8i@ZIV15e=zq@C9=nu9O#~XEt=W`MrL*54?y$3 z_E6vEbAck~C~@C}Oj zxFb}ytr7d!dnwc(F!Us&XHqE29(nPP7|;RYWvs~<97WFn(0vqNnk`j<(ZJLVJ!}AV8q-lCQ#G|%-snoXO4fegK7e7Cf z21%LZRm*57SV&#?`VqZW#>)@q$DTiz3P-@3O>Pr;c-e%eF3s1fd3dS+JDh|k&}v^?7}(7SrwKL+^;xAl~gFI-CS7pxRD0r3PNQq?2PKR;h*@p3K7( z#Oi3v2&{lw(I`__2uUBL#=|RW61G&4w&ifeXP)=}L!Q0%MrK;=Np%Zr|tiECs zUNFjRkzLnhxvE}1+s{+Y9+ z)UFa!RXv*QNdIG0<=^00Q0)=3g#)SUkCTz?w_FD6Vw$C|g=q5-+dMp)9mx||gK$x# z&&oZDV{$sC2X*ue!{cExuS3jL^8aV=-`C?fjy+Ly{uQ612A)|2INc3`q$HcRG#>#)%n%}jKsLPgck z1;B0^-K23v;)FOW&NfZ_>WblqSV#8+!UhwF*n=whl9FBA~UR z8@T5iV6cv3n@!MNr?%&?32q5j?@#RXHtBuBKz$lm5Iz##D?+u{-AA|h*a%)$f79(2 zRPmN%`q+K#5#>DIePC#`iF_jxPR!s^kAwTx<2&|_zg|laL{IeWzvIO5IA9bAmP1DX z`*U9!Tz55Y)zb?~FSPO786HAXOF#3{E4w`LOp+KKS6Cm4U~eA5TLd^>!YG zAF%O|`MLt9@f58xvipRS#To{P@srqN)R*|s+=^F-+Q5v5GJypD*WM-inC7_5*-i-t zy}%=Ih?1~}c!P9ph4(Na?<>?t!x+Uuv6ih-#30`30N=zSaqd`x`;t(vAbf$TPD+Z- zAF!vkhxHD?J|Kq0tr2+H0IbDj0j^r^&@Zq(R!U*$ekekU>y27oz=8-GEw??AXx&>C zHm=!iZRzdsg}o4nZM9=z+h>zt=_m%>xEKXI{|C?pG(4hpaAtFTues>3%bKXpac)Lt zWeN8UE`1o?804E9lqar}gs)dYU8jBewJDw?_NQ@7-?^C7ci3L9RPvz0Wx7b`G2S(T zR}l6G+Sf{$3F?xpu@o@Dm?r}lD?F?55>= zD;~#~BATBDm#i{~vtpwdM+Z1|i29Xl;+J6|8y#E*bri9!{H`%ZQ^ zJDe#_1P^-iOnS8WZf|?{&7M1Q`u4Mw?%;n~o7MY5F503a7qO+r`(<1G325v2iL=un zAo|@`yWv8Y6Ne%>HO5|+IH(#mZWHxAxTwgm@$JG${ zP#*0Z?blX@p8bf2Q|pkhSDk{uv`lT#+zvPo7U6PD=^1Z29f;mRNOPx$2hU%rizCK|iU43#dac^kc->aRlKd;gg zH&r|CLJXm){Zw@OQ@OS0uXcjIo=$^E^H*~W^Q`rjAJ$3Zy52QAMxj~~yT;zC6knr} zHPRaEpD}ef@D8^A6T(8@0O|X1lw2nTvCB}C58sI!lNl|>zNJ&|;uJ0peQbP5H+4Sf z;)y!+WXj6!<$QJ4zj2`-9fWl1yXboEAr$}R?m=L$smprs91S@V_0mG{urOeAlSKD} zh(=rN=xD4xa{bf;{=0Gs8ke?7zBs~Hx8gQE{gf8d0@T3`VfrHIkn5_RzkgcgCs$Ri zlk)J+xCU1k^y#16i0jR#!2&n#M6$qO=%M51E?2iPS+RD)bxjY%!}Gk#v%Z@fmDust zBXe7ZtI&-X+iUAu+77zBZ0nrsy`FoAPJX`3i`IR=x+~v)np;#M1TxCZ!>B3jDA_Z5M^{+t5#fIXIKH}&WD@mw))~$vD9Xe}uhq(6l zsE({pQd_ctMqQ7s0}48Vhlp@LL)g4yZ|7{W*R}=#bbHt{8)|=S;hNh_$$-s>*=UUI znB6#d2i>dL_@+iJB8a9PE=LyNrbiTc(5GN;ydeK5-xsn89e%fS=M&7s?qLKChzyxcqsRCj z7!W}KlpRqQG!Yy@ZPMk|ypj-$oGh+j#e0{aO?F)pBO$;)0=7bse9^8chonrq!0QwJ zkm|>DCMh=b49L*?QYU&7Rc`QQjB zT_iI#bk*S8k`y0$?9d;>!p%{1h-Uxs~_fZTt>ZxJFn<$9$J^Gx zY`z1%wP8A8Ry<%p zpe%?9O9ySe{_K-Gj}wAeXXREVon65NeL06r6YO60djBSIHX23tuBi}+dNcwm0DGdl z?yAq^x4+AG9?7s;Uf*2X+Rs8HM#GK>d?qK>DYVJwd~7%#6>OaRc*RsixG?&5@53Zo zbCV8H0%t=cNx|pRF==nQetRD~~Cf&fm{CBc)?_ z^Et`80XQr3Bw%pGDkHcAvN|0TT!y4?QfDpB1~i?gtfHC;r$Z$KAPxYcq*+(jg zZE*3m;WH=6d3=$&4Jp^yK8yNY4jw26!A9s1=v80MTBBy)0y2pxtVGywfXLDN#e$O(wd7VI27>V^3+ zu9!Ry(#m*udYnoXOa$W3(P|X)kziT{4faUQHJYaLB&ly~i>!IuzDyDEl=zzK57h*k zbwDVgq=gLO2Au(`%8KGC2$6KfIp*Od#c~ng8KvUop%HV&{HBG{9_MC9U>3SUf_=L3 zW-7Uqnh{D~afS{=4~wNw>%?Gjlp9hqtx@XSa+#A#0h)A-giT0(K{0VrTyQR^614}T zD4jS78B{HVr>U1q$4N?I`d#w=VXblr0oujsJks@Md`Nn{rxRRv1?HtMh#&}37=v~A z1xvKKip#Kw*iTlA1+orTiMP|K4v+xv_;~Yo44!*~Ls)PWZIC4?N&TW|IBV5=yDf4(5A)-F>&dYB2 z8%Fa13`isOAK{vg5!BHQZ(S&0L-OVZFWuoa_9b9SM^FJFS(%b(btmknILKPS+v^es zb-}lD&gRBE78eQ=Y_$$!5UkB>7fOcx5@S}uNq`xk~~K1GMDigsN1WJ-*eSL zc0TsA2Cdne(2WzKwUM>!)j_61MzT9@5aCBrpd6~DZW4bagj3J}a`ycj-I#`{k&uwv zsMrwk^)!r6s2&zCuC0_;v@*rg1TFC60#|KICo+VAF3Y}HNM3Z*rhCjr^p0jk2hYP2O z-_%?K1ky>Fy)LnKXjSS4gW4s9Csc0cM(|I*s&J7#vP_wi73LD`237Rkvl0Bsk^wk) z768(|c2qecUU1b2eGfbqabLr%+DFvZ5x3?3O$ey(`1sGk$rQ|kstjjfNOELR0HzgS z&lea7j1(jK#57wXBpLL`D55yh31vc+3&hm#d3_;4uFD`N^FF2!$4K8B>v ziBGE;tX`v6Q0b6PK`Q~MotxOAr&sv)-g^bD7zYfu$X#8Eqsnm`34-QKi@p7kK$~TZ zb~wv)JYKHkvnh$KRN|+TmZlB%pag7d0ObXKBTy;zif&Ce6`JT?*kjLRMHBfFPH^N5 z0x7px#Og3&8%0E4Q^6^V4w#{UgY<&>2l#>3)A*3JUs+Qf1u*j{fU-zpTAW(!1G$_8 zl4pnm2ou8j3~-e={+L%F!1BAHT@coEp2xFt6HX8KpRwlR{0;o_SOsmexWyyfRH(>Q zIZl|CE$HYD*@=&lRlNcl8Aab_@3Z{!M;Xckdg4c*C%O)d-Sj(&(c50x>ZzpPgN1kl z6Y7r)RhZ9q4~{q|v;~88Pr+F11`ihq_8G`25^*N$mXo3gZrqeWNZ}mZ=j1>X@BrVG z*X^(?4z!0r0BBY!AlbWS;k4{u&x_?!-BS=k0aggr2l##2(;;H5E3miXd;68gISj<5o0F8SwW8|Pk?mXSGlgG*F0n}Q zewCM!cG^vOtmh~8uilZa`>|5@+hx#$P^VKbC7Z5o3U%AH?;@_@-(oDK>s_0QDXSq; z^!ibu?kv2d*lWbVD+-20wO>#~j+@7h8Z=obc>TL-8dm|w?JklLWhN?D1t%SHrvo~z zlvml5+z^t486yxGTr+?4D~+8sT_lpbf7A<1dnepjZr6)jURc_D;dUfmQ17b~cXvNA z1b#O+gq@$o?Lhj9JrQQWd!GAex;=^99>1V$@#IU(FJ?YBC%v87fpa8O}KFglBjk%N%TAWYoydnmm4T3l@4xbq2?ZTN+3anOvlp&?hMtX@(2p zd)1tWVa;i+<_Os~)_%B6f>4scqRbM8h!J=$mGi3yW{(33=9 zJMn9}h+W3$d{&@k2UihkrA#x18AF3E6fj~kOihRgD~+k|vLt94LEpxgpPK=4SZ;I2b`s_tmm(3fOMekniJb(WDcQ_4hXp7~;On$67#Mf_5 z_kB^gL+ahw&%5gn|9KF*G5KYPNs2p3oZy{t%tL~yfae-3?H<9lCo%Ijn@^i7Yf10Q zgwxz+D?lg1mheu+$dZ6msZJ=k5KJpbCWy2olgg$pECd!JD3$qo2;bAY^?HsXOVze? z*OEM_bzWnSO^8nWzyLa+q#&Dk<~zn(6Ja>a^VmO0$E1^wH!!hXO9()W7CsD~qoi&y ziM(uQ7}JUo)A1G4FI8L4!7AnmnCzs5e=rBp#);B(Cl3s^xt8-!}mQ-RePEiG;8FY`@l|;hY2#;1)Ow*_M zVR8203!Df&Tu~6BE&|s}X*98%JtVUWDlo^#Lo#FOAGIp~2T`8Nc83O`+>v)P<2L+{yXBhL6YBFM-J zqu&E)(I0tl0g9y7*>S{Ci@Iw2*uYo$n z2W+zgLm>RN%;~@DB7eb$3l$5MWbKpLqu+A`_52xE8eY2&i~PgY;Dv?4O<6vuLjvsp zJ&)`A_T6jL+)4_8y7`T&l~j0us69wbUlKr{9SwwBz)4ho9ao80dC>+j2|Gx1QX7aJ zOjw1W{z^$S`}yRmv9SaBE5_r}JjVMes*JtUt*fL>&p8cR2}gDW`_(aeP_rZ-s^~li zOldT#!R;<8`MpiSgE$hDn8zRW4BJav?4Y@3`$Nbc{iv zv1G5?&f=8NmPJ@t1Kfb8VGS+A49KiL1?Jv(wC4nn)dvFe{!sA_B_CA^;+)S-;FuSD zO;FmX!xT@M=UI{BR=jZ2>X>f5N%48ogMw!wLXdWxScbcI^I9Kf#PX7RN8g|1j$rBo zMl6NKJd8vTSXnWp*$AH{ZXrs$60{k;g1FyO$)lFdUM9iMnxEYFPNIQKPny$7Xzx}l zBm77;Z~B$nZ}q8?y9xw;Ppm`=6LSxf+nCqBN#uE{Rq1nhMt#07vM+^*9 zHpWH0x9O=|3IYZNVH^eB|4~hX);6E}Lb=c~DL~u*lix|#-WzbC5Ay6CtW}^z6s0{n z_y-IgRY_@qeyX@ta0Og%&_h_~cx0V3_^isqWk3nkt+x|S-3Fy83XTc41l+zFzGmcr zAQ#lDUb43GGU)PFOHODN&%dU6twxXL7Q{DGjw2kz8ZR+2;VDO;*Ivp+F-&0KFrQYe z%4VT_pNSq1!%L{=JY5n)(qtPtaVNFRarGVCm*Ib~?bx4(khysde#4@lTCvlb95w4dri#?}`m!R%Jk8P-&|da5-WEgcVQ z2MLQYlfTw=-4ydw!URk#{tS7vfF>C>&6V!hU{jE$ zTr#`Kl5mzb>DYR0r9~OC&lCb#CxKBUr>9`PcU?~;5mVS2GV{2630JEEh>esen4V>nMNoZJ%zc0A(N!qK4%_c)`Xen9Z-Eqj^Goy|mgZ}>dWM{g z>mZR$zbT6;DOw_i42l#7#UmOb&WT@Ff+ORgtI!hqaUlH7$=YlrY6F&NUxbO;Mg?N! zxq?9&8AdOZA-0&sA%?{rzv;h7*cvw4efNBI~I0}Co;zhvOmxOLqD zB5HkGDRSo0hYpe+8q@QVM1(8|3NZ|>K|qb&Mk;)mkt>{1Zdz!T{rD(!E9T5vs9z46 z$2iww5zp)5_6e`T3f+XGcmW7??f386EQzrNd;VIyxIrnMVxW~O&B!s^J$Vg|i}r!* z6=wHy9Gf0ZJbNnI67o`(yxQ0>?#W558DZYSbgg_?q>m}%6X*)llu4kw1W>W2ag%V< zG*~T2X*%+N^^%|qjF=xl(7BwvN%2MB+@}zGwOWq1QqUbYvDkdXTT19LOA?CxR@bfQtZ>)C)75U~ET4aRy4A zlx40f#|C=T>(8Ic$gfu{m@$40vw4V<+2TMpi1?V515>_8Bu*3qL=C174<2Y7U8jtn zAHzeC$qOriyEvgkEaKul@MR;o;*`1@T|P}i7saxbh=IRDxR)W}Yv+f0vFqp#{CWJm zcr}b$L=5-x{3+x_c4gLf$h-L!=p)y2K#sVBqR~*`e2su+(#xfo%m@so4vH895!kSu)w8g6!| z@YBYJPEMO0wLjYC$i%}AoPB5OqEF}6tq?HHD(f!-} z9Mvpb3_}|+DR!;08iorU$fn{O9zWt`gxhkH{NKlL2tk!Cxvy=a1^V|(Y~A29eeTH{ zGb3%&MW-$CF#H{s67`N+umXk7u)$Sv`QDE#8FRocZEy3O(_M}ECf1kfTVwGWBQiG5 zT}7*}jfu4+@RlXdc^cEoHs@$kuk0mQ=GvML54HdG{E+k%26v5_VYNWYpk5v?lc4Eb=($|4J+2=gpywO6+?w_#mNA|6c*jKo4BtVHdzbo zQz5k2y5%UmjpDu`{!#1={J4ie$RH~LNG+%#Wye%JViY`wvFGJMS*unzEwXJIROq?rU27Gu2d7ih1aNW`L+NY7BI}{3!5xG5Vojo zHk*iEs1Wq_K*my3qnhpA2+D!G@h#{TiNTx=L6*7N$d>7>F)9&6UfxTm4hh-%Sx1M` z<@5*c(Ej00kR|Tu9Q8MxBv);kKDE0z$QrDpZp$B|Xi-EdoZrE{ifx$eOnQ+fmlP~Y zvapwW33ULuM~fl}cU_DSVl!21)l9Mtb8G;3rXgLhI$IOJS>QKRh?8xx zoMD_IzD#>Hax3wZY>~+a+Id!H!Om?IUC~>7!o%(cJv;Pmw8JTwvSQ$ zV5+)$PNcL>7B;Qpk>Y_01GXaPp>(im!}N+Y{YcicBu|EzZ<=F)#6Hu9!c>4#WtkIbgKfsURz4bGS6w22pS7Q^fSNqEMQ#Ps-vGJGM5XlLuip2x>=~ zO;zivcsFc<8Z`+&tk=^!O;T0_y5C(lRaHJu=(^S>E9#y()?)SxP9o?}!ELySB%M4J zb4uVD0+HN-%$H{WNq2mk!IAe3uN+#`Q!|c2eqg z(XnFxWYlgpp104p4QP^)p=A~F8b)i(0zeWUyE75*Gi%56K@JuHH{FtC#=YsWa`Zz;lUw}xA4Qumr@=Zv*_TxLl0gzX}4oM!>vn|6ShbM#$YVDvC6 z3Bltd&(Kt>X`#p(g6bL)GuebBHQ8`!6n$l)qV1V@5*cR+S0kB8fS4+&3t?)p(Sk)^ z7R5{-NH-p9rN#kd$w@m(xsz(Yv981Vycm5ql1AaZD@UGSM7_;4)34WrSR5I+oAr(p zw*$nA>pt{vJoiO%sOc32#9i@;T)k99ptlk~s;n0=$jYAvdMhjWFE^TwV;QbPg}Mox zk;;R6n!s!-JP8oLmgGKcizfxVxFXFz)QFiFLvIc$v3;=1W&|=;G16S<56gjbL7(ur zX7siMBnZ?S11#QJr|f4S7?SKfc9IpUAvWJ9%Mx)HSVOS+^y$;jQI&?B{GZRha{t$w zZ`Z;wgb_)F{e|3DPwaQ(An13r4OFr(g(IcjK*0Sc_tlZO+NsJ3#CYB>HKk%iEG(>F zT`4T^EpWXVxq!9fYP)({+^b1}gdeQUle2hwwH7vJ6)4hkI*LA@B1&)gHV!^=J39Vo~w%Qut;F#-3M%-U~T%LHyAvu z*#Q21QRnY$LDVbYXJ}iX(vX=q|~YVz>PvXt93E?jL(MU z@LSer#7&p#1K+xlK}@U7-d!1wEezzt0>%tTj@xYCjTHbZW+Ry0yv^~d)@ucs1th-~ zT$%JR#|_C-5O9LF^B&aEUi*A)@j&L#!J)J#E-Vz30ar?Ldlxma^=P}k9UNzoARlh2 zi}@It?9S~x&++V_rhsCASq9C8aqomKHYuSq<~K2UCO0LBEdoChR$At;O0cORx?)f!fJAk z^xjNP znNvfs2g4F>yer4lR#gelO%EgZo5TN{gDT_UE%^bVzFrE4CQT(;iia&VwKI34B|O| z2%bSehjT1NXd+NGX8NV#bgv&p3F}qnS3yb(WPGH{65(B(X<Eu0>l0w-3Z=sne#GQ72E>V;m@4H=H7=Gjw8A8 z0eCgS0de050>K-{jIqHOd`wnuAOh64J#q)4=H6Up$z}P(x%~QRN)ZC#puq znPkDshIM&2npm)j6Z8qAvW}9#J3qh7z&#V){irp>e?Za_2PHa12m=SvB4T)?%lVGP z$(D&QiMrWa0AX|6jIX$Lg8}l{)ZyC=i-#f%HI6|H9v@9?r^xc+0(loYk;^Y}Q(C#D zN@n1MvfT&+t#mjSiADPZ=e`x@Y^MPQ_vA#PP^f`d=#h7W+If!JM}00U8TN)VbWdtH zjY*2fQ1T&F$shF4sGt;HR3J#5ua2s3OPR|F2VSD-4%1%oW);?!7!{%cOoAZO6YLQv zP_LHk8Y3yOAW*^>l?t|MVdFQiCU4(Q_ZXM5cvosCY zi)K#L8fHy6tflA>P8~qBV@mtz<|*x$dNvU3@{k-6jXVP;yuF^u{(q}pEDC@F?YBRXJT&iygnG^7uU$UPF-3Gk=Pm_yj*ahD(mBAMn zbsU4lAD2dJ5WxV_g+R68*_;;Y^d5L|ldE{ktzV_9vz3#?vMOPDqi!s$xot|wrn#wr zpfhvw%go2ZJ3+)?VJ1!_Cj+%h7ym3fW`K4Iku+(0d;GxZsd z+o$vl`bVb|+X+t{hP0iB~$Aa%3$Q?C(8GPtl@Z(RD!FEY!!% zJIW(9)>d|qw_Kgjtkammf@bcCoV3aX+tlv^@g$mXuE~_lUsp+WqyCU%Rsi~WH=x&~ zA+2{!YaF6ZL%3|?_PitnZ}KyO#%ywsj?RkbpeinE_Q9u>V1R>WirOL1XRgAv!FI4i zN@aQ#!oWjDK3JnIzF=t(q+39Q^Colk#b+jri<$xbn4cdsX?wBCH*l4-86o?x>Md4j zds?_L@myL5!FR8AB7}EEL>Ls{Q}VI!#3u$=z?zwYgyE>{EEJvRq3$&e;Ex4j0v(Su z>yVY7AyHp5^x$LBZ8b#0ID~`vg`Nc<0E6U4bg<-j$tLEtJ3!reURETz;i?0t1|fn3 zOvj{oX~XY5TmqTYzA$(^rkeSc1Vy)f%e+QMVqlQ&SWa*GVdRc2mQc6}V8(m7z zD9-%pfT`}8Wed<>nm|(|L`1Nq+TBk32RWdD6FP(%{o{w7nJ$xKeWIoZ;v*}>_!N*sHJFT2JlvAwJ2CeZoWVzc-ePVl7btZ^U$K8N40xLt%+Ix zmO%Lwx>4lrV(!lQO|sc>&&L1E%T{A;{RnX7sG}wbfaj7T_OIH*bxFg58?F|(d#x_p z=&ZfbNFxcq@LMM!HOdmND8W@n;^Hvu=!PjJ;|wS<2)I>I^x*8$_zVO!4p z_2kgfQRAi#P6=b6w;yIAfj=T2>*8L4V>FH1rVvy*Ja)nhjLO(aAkdT_0xhZ=*ECib!4ng&xB;>GZQZsc7Eb9`vSZo1 za2n)*0FehR+y?C}JS~1woE=sTzEFDcOIuW-c?mJ!Q;*zk(oo=O#*!)_%AbnIn`X>) z$0;C+kWb~KrvD~)`i~k($ z93QT=sUoBgMy0w(I&ekr zO)DBlC#!T`jUn6&Kju+U9RWU!h`;FnPIfr}ZljVbQJzOeCyOB)(#~|AuR!UUUjXiw zk5CPoMYkRT1dKh7S~wDEhlhTe=M#=8nz)ji+C1+TL8@e2tFz<-C{@J`(v4?*mX%vu z&z>JiY{#obwYl-X*ELuL)NAh9M!WU|WMY^@H>j5$Y4)XL2Iwz!7+00MMt<>+|9AZ_ z@%Ud)$G`jA`d`NU*Asc(Bt*LY>)pRe)gBK{{8pK-=1vzZ}V>BfBd7r zTW{hIuaoSoI{)JN)@LnrOluY-A}zpb_<=Cuj^y5`rtw%y2&AKj?y(G`Q3taQdbYpI zNNJkn6J4_#mACZxLMpHc#Ev+5K;TG+_^ISjkJnlN+JLZZ=DmuXQ7`8i154**yjo(A z3K(Xsu)gNb3Z{kjJo&seqjjTw~I;f5| zFAH}9Y)tUdfa#*VpE`iGh^8L==A?u;gE%%otMLYAr8lyh5Q?P&OD;uX>`M~4ak`qj zNuA@_hnhZ&-H~{ob;9o&F_g|IN~-B(12sBvQ2>L=R~4dEVyvqBFoVO*2dXNa1&#kZ zIEp2k7i5yH0FiotetDJ7EQsW;xyIZ8UDNc=E&evV21W56s;z87K3io#1cw%Lb7_Cr zOF~T*i_VqM1gc_ZCOI@n!*`=KP0${t$pF>3a$luBVe^;!d!~gwj6F zmu?$xJ5g#rAJ9gYYZF{iN#--Ht44^fvLmhQ7^-4g{GR$$cQOt<%0stQ3#bA$jWpl` zLA1BVTTh<`1Wj@s4?f6+jwU?Cs;RKDdQX}ipqhdv4r+bkDa24*djSG`%s@eLp2Tz4 zh?|<}dr3benDSA42Hu*L&4_`joP;c|iFfJ;c^DH*&k-J~V8uR(f@HfbAQp6L*9H1w zI6}L}_=v^RDN{z!2Y5>H_#`atFLCT>{Zo}%^!X58}-YZTq96ru1Q zbn0H0P7U^KRU#@zs@+ZI@s)?LdUoBwjr9~)0aFOlxzjjqxA@yh^v1QeSS>un+tyEE z3ZU<<=YI5_U*?x?=#`_Ub&qJaVIe1V2AbZLTOMkyd*FQlSU{)0VR&6|Yf>3FG6Om= zY!0@UB?eE5)+J|mUBUSEhBaPExLbq7gpOKmt2a?mZwo6|l1BG^!p*(i2)QrE=Z-ZY zRJ}2pw+)j0ysjOiz`)t@mE!5v28wsP?sIo+_cfjNJ1gBc-gmd32^f16jDsk z{0Yv?Q}-W|$Pq$>&|GfR?HM^0P1kys)L#d#KauoevM{f^& zGQ99DQp!RGDogJQ!Z9bY*5Zr^Iop6ggViBMmuZ6!!a~0_Q&6r03^qfDcqgK8BsID2 z2=*N%+#pPUxmQs&3-oT9r|%O%%J+W0%)R70|varo-gCHh}N}2$$L-O zpPa;z78o--maGTiAQKQJIT!-0U0^`fH~=6+k4oPZ)VY}1os2P`n!e)V7!({x&`A+j zx=q8S0pgW-{&qD$nBTko28<)BRZJ{b@cb#LPONU0g|sl+VL=DsU71Q_HY`N@TuMJ; zJV4af&9>tTrx(*ifa)M5f4~iv5^m{HOKCiYv`I(@6w-8kJ7@KbEywPTo>h|c24a_3@%&y#OvwtzF7hw$=RN+{ro^rtPB@54dbtWnP`nq0GPrJ^#ckwJQ zqp#+jhZ)$Qk zpxWsAy{Br;=S`|v0^2l1WB8Km?_E>UH66vy7(VK|i5#}Qn-Ghf{lFb%hOd11o8*di zM(JfjM^6yPM=RhCa>rY~EgLxT?u*T&nr=FhIp2Iw)%?JN;a07OFM+4MOHT28G8k#` z%KdLviOH1!-h$zQr!O0+nA{;Us=!d%aD4U%Oy@t;pmk`hr7Cr(#wE2^s2Qly?~-2b zeS~#M=(j)d6ZheqeK=`5D2&3id#PLLA zxaJtFmHu`4@!{wxINhtPjDw0da;i3u4yeaa)8jTp6&1Ih9GC?j5y{eu&*g9}OpM&3XSC0LYrNObA$rB39wQv!G9&R9fq0 zg4rkb@tTr^V14c7F-xT4&|TqgR{SPDy)0If^R1s z4Fuo?4NWo0&|5WH^4KTz>4<<}PNQQC;d}*${z%|9+Um8zGhXb4i!R022DO9RNLJ#X z;(ZUzaUF=jfwr}~aqxmp9BYH@<`rHd$SF%K*xFA_2n8e1uW#bvr5Avk!&0D^-%T3z zzFnX8lC2L$2{i!iq*Pu*nZMRJmCo7vIKLTF)uw5}KepPGcEO_&9MgTOq#Y;eEoCGd zAj1Xpi1LvXazt|z0kQ{@B{D>INTYmSPnLX5nQs&fX@AglF8d-3s&RVIRG`1xC^F2c#aSoe7ig-%^WdS*5 zvF{6Z%VZu*O(Nox#BVq6oOUpL$eFr$!3YLk&@jK!LUG`~>U?t$2iYq!zW~fL(DvGr)?~>E|XCvS*sR4-Hd!r}#v|nIt0z#swBlutj z2GSB-KyKHa06{oi{S2sIQ|OlB8C>l|_)!`501kZ|9BZEAV00Mozrfpku1W(XURk;! zceFm2M@U|T+$Nd5^Id(`-c|BV(jjT0!rQiv^_ga0v^VR|18sVpx`GfFg0WO%`WqkL zKW*6bQ8nIg`L_HuCA&xwSLAe#5eVq-}< zZHQN9S};xy$6OjN)z$>_Cq*DZ%fL%!}r1iZ>FAU#3f9fPl9+IPV|^D9cN zy!7}r=oSZkYrRWyA*=lfV!?uuYoP6iWnLmx^2CiqKA^1DTWhzwCN<&4Bfz~a!)QyH z_CKxi3X;=;LHz8jfNb=M6Vu=!Ad(gob_G#QXpop8P?F|RYpfzw_v=#KH}sxzf5K_} zNuXf_%hRW>w8J1gX}|JB6^Keyd0w@G_5TSDvRhGTN;P3WLPExy`lOx8e{Fh|ebid? zOcq}^ZYLX3%6bFK1yz=t;R)7Qnox;Sr}4Huc}}aeNI8`&5jUP3f1>T$y4Y56f>nrO zCaJ8(#MZ9piZeZkUq-J0HYIhU&-DbY3a!n7JJj#3Ww<3vjT;dvP4_ zzxI@P#8O(KSNrhFG(lv(Oad7ip9E?L3QKJt1_qCCB{v%q8wTBp?#^&DlFl3(ggzbF z9=t`5AqA&C5xiXVI9HH(QaK3dH%9tcsRR2nqDUU@?DoNKZK&%ul_a8!yB`}Pjf$rU z?gg+6dS0u(i+i@58G2aQod8FM3gM8%w_}e5SJOW>cUf!YKl^QlQ3z>x)7ROmatPkS zGuGcgnK~rVTP<_?9d#2!+gjM`JA>p{Q}%${*s3x;w5X5GMGtEFw{AWAF$3`oQBZ_kQC??5s4L-jf#f=jg(<{ z{=0mhgpC#O1)JLb*)KT1gd&BjZs|&qvL2A&y)SP z9g$N(0OnH5$X5b6q;%0+nSpIU$K)DHyVSXTxF10_(aZR%%@yE`UNy9(#sQO^iX}C0 z9Auz#hYz>Z>S#cp*!!irJ(@U7o_XWiDZNKJMY*BU6wPh|!PI_{*eppNR-L^I#UXSQ zz0S{4i~d7yl`;8$4hn`)VtO@?&*-`UD!t8FTB2(2=;*agJ0h|jPrK@K$Q`qXswi7j zIj1b1vxb7!EQ(AJK+~~IyGz;Rjbnr?60hI@f?jHMyONv!Q`-e;_K0cX5PIAOm*Okp zjB^7T=WZU7OSVrn+(=+*sgjN`fdx>L>hXCxeSc^|I9)OKEHjUqKEdq;26UMN#6NFa zE$v)A)R^TqnNr#-^u3(6&6#x%0|ie`F+wNm7js0_&dPa)d?W| z!+ti34)O~A+56xq!cE(5o|Ntp{%q@(R1l=+%Q!NKlKvv6p{6CWM!#|^w-26i+^pYs z3TqAZh!PqyNTM5DYem#$sLXcyx;m*oS*cWBvnNUny5iZ2;EG@{;2M!mBlL}k&|hMJ zoq-!RN^mFQfbz+mA&6rw`fm&k-&8dMWQnDMa7$k0W0Jk9vJen}owV5T^>d z=ERLW^Mo6=%~VRE%jN_H-%~INvR7)*3vtC`{Zx&lRH0=v)}ri$2f~<8+04Lalr$Wl znB0Trlm=C@M4M1vc{v}(q2>ir7zsRL{&A6r z$j#|?9tSdgogyUW(pHavR78iU2WH*fnv%khL%lJ1R)tEJ0ZO6AHv_ae6V52d-e8O< zP8OL$D9})%{%LEb*&}8W7~#lS6nT#32ss5A6yL-jsLiAFUkOz-vHJ=-@ayti*>~N< z{E6tJ3@Z&(gTX`z;v}$T6u$!@*vPXqUzAvsYQua(Gi06XNIh&o)s`8NZ;{W?e4t6> z*)(jMCsYDh$J$32nU!7H__kf^RqeyOeYnC&qEwOaoy&3LklQ!rSMqQ~RM?tlLN z7*5H@lgG3z0Ikij?thV0XW=DJzoB3fc!}aN`RoPf+maJ*GH=KfcDPM(dv>)Vw03=xhuYcSJKZQ<3R?!%dbDAPS+PPau>-ykrn6 zAMMQ)^#zWW&ozk(q~@-N4uB+v@&!x+^Wd51N}x1=nn&oq4u7I>0?Fe(P$W$#=uy|Q z1bp4uix89Iz{LbdK^d45&;kjm0(3q0xd4&epx5_Kvike`Sv87@ZyD(HG@hpO6vHRo ze4Q2X0<<$zLViY(@-!gzo7ipav9On29N9Yq8jYx4z!2t$R(3hKNQ*oJp&h=zh~0iT znKMEuh)|FCw1xeM(l&1qM(C$%9g8=I2Z~6#E1)z~;?{ah^bUBJh*@bG_bt~?6+akr zsqmwr5#mx_udtf8J#6Fyx(bvi+?1S%EUa9|*z{N9%>E|1@}45PJiyQJ=%zyTNw6Pv z-L0sfKE?gx(t9`D`Ak9U+-K8xt(C~gTA18K%DFGwZd6cV!wtA~H87B?^ryhB7N)jq zn(mD4Yw_T^D9iX!K8vAS0@WC(Pne$To{HPEcuALjA$Yv#*TJqohIi3rf>A=?Rst0@ z(6r-{;i*@O^n~Xb??6*&>=WD2mc+ZMyQZrygoG_ZEO8r8bQd_lK$oeZj^vh!vKv&k z2y&Rv$P5nmzdw4z?*~9zBk~#xd3wvpRbR$6&a9ckOtws|p89@{`AT?+xvr4mk-Hbw z1RMYa2wq}w1tWJE=yc6z5-8ZUgA2vYQ$;O(@J@knJ1j>WjN7P!(uGPjNH^Ftadn%j zoOKIogP{X5xD;5W4KI9Bt(MdhrG0W;fNL2=Z!Y2j{3~T~C($AFRk$Kmrq@~+fFw9& z0UKL-JefQuFf2Hf09&7Q>F~Ty$>WZt;~W~a+w_NF-Y-Jt?P)f!9de8Mb^g?Q_$SCIrKyP2jc?Q+P_Rp?bf;Q^y@`-T36iRur1n4~uk7A$WM0a`3^|DXs%WA67 z1Fbs5kBO(+zR#P%&0!rf`_$KgEmOU14EZQv$oIg8#qR6s`&j0CWO?gHLQqm&ZPw?5 zo5*LYKG3n7;1}vydYxeo%heU@4~+hS(cgs8zvbdDO`3>bZe|avEllqb;zfM+;)STz zew_(Fp5I6WDDOxHSQYLn1re{w2cs6pr!|ng08zoX8OPR%6)FWxFywBem@>N<38>yE zOz0tIPO^{PCHQ;LIl(7*aA8)DY80yA8DLL&NseM=LwFqM%l5)?H<$R)7yH(hEn&pc14z z4i`qR0w$JgU_iUc(KKEIBoL8dDofhy z*FI@KecLU3NWFqK2{BKO_VPueMTzcVWwN>4sdvwK&F8;Nf}b_Wv+ohkuk?wI#ef`adQ8+@+YxPxAWT+u#?2usQ!$3h z>nHGsnmeA3S`{*Pgnd~0sRWN5KbPO`@8YgmWvn%>iYvsiGO&6~qf6SFEgK5G6@&2* zK)EWN+QGbko}^0P7jD9~%WrGhePBYrzU_p53rw$W>8FX)qx$DRWnXimqTeTPvW5^n#+6Pm`muV%af4ZkW_R^FqByinFG(Icj}jGvz-3C7n?i;VXY7H z>>VtZu>gOs5@TvnQqFOGea0_bW$%jFbf3Ig(l6+R@c=dMwE(Prc_=6SUOA2D0RWA6 zyNzYLqCgF4Xr0(n=$(;kV4n&QftNAHtjZ=Qi66T)!|MZ?P^l4t{UXPfzh}wi-=Ru3 zPVl)F0zpd3dYMS)c;Hs;_K72?%lN7!!LdfYCAl_5TN^_CS`kywvkhFSo$bTFAN~30 z@7ud?_7ARGgSe|l#$y=9fUc*G@43wNE)+zt;bjGva9cRZskba*SL`*-5&_!kqh@v8--&}ykg<6h=Z^iEBX&JK^WRsms+_hsz#Cw=;!>l zSL_Sj_R8?5lU26-MNs@Xyka&brXfE$M<08AkO|9PubLH@D^^eq=qSiZhi~=)8)_X% z-M~_WrWPFprqjWWQ(%640uGpp!cgX?)g|2|spvY2`jnVp6fLgGf6h0=HHIAv(7+Rc zmJ_p>n-8Mr&!2u~5ZT>If4CwA8tQDkt{`+Y);!nZGYJ@RP&r*svhp%1eEcu_0u-os z*Jgs5$D#bXoX8qbD;C*3mi7HfAO!IOwE`f$8G_Ir4(4YHtS+kgk37F>{ zvp7TX;3brJ!n=Cpq`sLul&U<(IRJ5$bo~G#6J_ zQmK;#vT3@EIYOH?dL|PLFcR?ocTe&Hc$|F6sva^3l=UqsWBHZsOqvWaG=#1X3Yo#D zG%CDdwE!hkG;LyJ~4gWyc8S;>m|sFy4TeJwRYb&C%O3qs@*X3N9Xh?2e=>dXh|IXqtbs zc1%2FSD6VsbIp$stEjbl6!<7FuV-WIGk)teW>IyMCSvn9-Ys*Ck6^NRW*vhZ$79#W z9?MOuvqxGVjZvL#yZwl>5YF&%{@&dM(ng$NK=Ej6MI#2C<&p)NefSYM*3B~n-Bws% z42{JVClBVy=c(Iaiv$UbGbmlD)QE!SwKu!CZ!CfRz`kyC1Pd4;`#p8=$zPj)*z49w zx|vs4a$!Yif|l?L*-3cAv`GcQ671Mj4B7-Y)o%Bc(fT(!iMX9$aB$Va zcs|7x+GvQ^9ix|M$ki;BI}_@|z}Aj;K6xRo8}R)k+6I{~T_XHA%BwUzWOD?i9OvM= z0#!#cKP9WBiY}*VT_KF_^I==8@_>p*KGq!(lbEd($$yH;llygStC@xNEk0U&2P9*j zBY2#|0atCU+iZiq56hI!W`XnPN#q+4MbjzLGHUj~I2j7ZR98SGZkkI!I51umd5n;M zi8eX1M~}G4(6t@&tJ9SXKLq~()SXqL^=u_gn#A`;RZ8`-Mzg>;0W_p(JxtQ4_J%yAWIe0GQMPCiiUPNxqi*gcVz`$obbD0lbQpoMCr-1&o zs#@c9YwG8uv5ZFgArA+P@hUYh_J__p*;g!T%KAEHFXu7>2?M&1TfPE+D2$*YVVD@V#K84!YN8&Nk6 zfG2tiL3NMWyNi0xe2!~5#EA%8fMDn55}0eJCM`9{6E)LbM7)K&BTVrAA);sG(|qpn z^KogSBXZ>{qqXCmLx5KJb{GBu#;|s@b9~r>vfv61#QneqYj%FLCNri#lke_wVN7YCLs>moLUrQC|R}V1AsfT+{x_C9=&DbizFUq)Df` z5SAT=YXTTUx3k{E-c)OBLdPhw6;8H;>osf&_!h78T9sT|2yPdxuY`@tv)>B;$ z33*HXpyzoGmX6hu4X~)P#-3Zo!S23?==o|aQ?OYZ_(V1D3p75m0f8pwF?^@|iCqrY zjaCfe^ER4051Kg3a!G?ACk08S)47|7q}V_F!qGTmWoZ04H_srT_-zGVMHH@4@6#<^ zdAU1d_nxy6$+OMhAPWUOKs*kl#Ty-_t16vO;1H;a$$nP7Esi*n5Lf4ri1I~)$Q|Jk zPB8fR<=&y(T=og)6se!=h7|NJJYz;jft$D2c|7|np2u#?;EVKaxx(8&@tuY~m>g`$ z`Yg2>>PWLO5;ZLrkdC7{;6Z8Vk2A7Jt3r}(s8>-7+IB35I6Dn$p5K(HRy2k*5o+Lb zG(^=^0sUDo;eOviwuA}>QM|R7`JrFyzI|gb)i&d}G?wDyN-7?uBMF0Ua zllV2U?9Q3gyggLs%X#QK=|(RJfG_o6#Aumh>v~+nE<(c^I~gL zHMAuz-k7$bF4krO`9jlanSjtgp66#kCYyh!-~aocUw|3o<@gD>0(X&$|am$fSFQNh)F)OVif2x2o!F$APpQVovEhegWFs{ zTH>XHVLk|MR+V;h67w}uxdec)5DS1BR}+FEvQWry(e;dRr2LYOr{Lsc*@}e`gA%jH zodnVB?&+$z--aeGROv|Ao%^c>tEsA_jD@oBXs3F}TX{}UR!(A*I)bCoEew7;LWzwJ z`S2#g`q98HwlR{ny(kdKs{ZV@>Ok)I?~Rb4$82qA?WZmW+fZ$gsS(akXoMXe2-~HU zkREkhQlWrd_|QY2z7;J|Ko8M6QKoSs(ms$W^2CwX`;Cat4Rd@;OF<)as)sFTyx=r0 z6Wf3rq{vM~JPdMV1SOBU4|$$10BMlHu?)n=8c5e`eD2YHW>&wxw&qrl;41MePh#$7 z&p3qGBS`Xv)wo`P*C7i}Yv)Nk!zt$VT8q}5jKjRtRktznv008bPFHghkI36jSpZXf zo@L2Y9ii}En-m4x(eW%s-oehGl06`*^95eY8!(3+sgWhSP;^w8E@wVsm$X}Ew4@`eYw$6RcZtbZoDg8YJ8H7LL89Gsv3U%IQ*xFFOCRXl{x!sDd zu?$&bZnxuWjXSeM65fKZNx$mM?Z$k~FpGe>-GZ<2-fl9t+we82tjXMNz}JMaiKe!V zyWNPf34wNUx8aP9s_N%%*Dy9#%@5>m*D*FRwhiHK*E2RI&wlRKa)qzy2U2SxLv34H zDXy3V40(=33Zg#Ez(^#n6fM%IpR<7oT37j(r+=fkXssOuUU9fF5ZB&44hW>F|mx*xS`iJ{Y@@eYg%|s&q!dZJcKd$ zIpDR>+-N}a0{OPbCs>!~&$+)RPShIav##T?jZ&WPQDWC71BPA|3==uIV&MR-cU7@c zcW)<4_;%RkTmlc|#nBv@BqK5bYYDDvaw-K!hB==_ZV*rJBpBCnb>hh5T;TmQqnwm+ zGK%IOKs$YGT9Gx7Ra%QqRw)>;-QaXxNVYOdqgv++P}QN@*&NOlP(ei zfZ&Ls1eTO^yCj%xiooDD=TaVK=#^3x20~+O1muj zYKe+uT~}uuOZ^D2Q*Xleya|2>1sG(zV1Gv@G*LWE$a#U#Bqagh19%09PNEd193LzN z!Eyou>#VD^K!-@1gsq;{fNpUon#Vt>ODm6Tn+Ilt-|8~A9H($(zYNa2ro2sr4aQeN zU(p;SZklQicp_#6*FcuaW^Vm6Vwx7z1LGLxS0ofT);H!@u|im+1()?=)!cN^^#cX- z7@tN$v_Q_>=jOFkU_2Qya}Wr3&`BGTY}3Y~rMR91WI2y3a3f;r zm2puiFT7WYn~nvm2O{`;whnxJ$VSC(E zh%zZqR{@SYTU*bbBVLIQ>R7)9D;hqbpmf!(9CL1)lRgK68jBa0u&4D2JtjKlJB&o; zvSD1=6y^9X$zv2OL-IMZ18*OKQ*KPbif&RxLcfHNQ6qN~lKvVQfQpNxw6u)m&v=<4 zT3+Poj8Q}3dUu{LanS-c2?Y-VlQSjvVV+NsAVumZ+KH!?BFm%;-kviZN4aE->DmQk z4PxV_D~bMX?J8VvDL^IYtz1asj0Cw1F`b}CHoD>rg2{3e`1t&ko$(6;sk-CBD9TWCg9Gy8K zF(c8C+=4?dPisVFJsMh0Z{(LEyI3p_ALExoS~z3F_z1t0jXshl$B;I9b@Z$@O}>vD z+ryKBN_G`v0Cp;9Dg;4+C}Zd5($HZX9`HNNSl zbBuolSx(Xg;P3+-;4wg6YsM0$>&ITb;E#X0njayi<{w3C?B`ZbpJj|%wxf67;W0%A z6jcM(@WXso>c(BJ3eef0Lqq}+f*g^itL6s5kQHKa$VV8-B96|j zC)5{oF7c)b1|$k|G7#0AV_Yi>h_T=Lj0?x1iArzG!7czO)r@b=>^khkYIGd)Ept%T zg=5%w-9Cw@@8OnLbN+2PCRk^u8h4aH9OsrAXm_GRkH7V4(*ksbGEnHj1Mo4no>R?j zhlNEDngw<&Ug^Mu$up$zpleUoWa=bB5822XX2s#2t?{`vg^rJ75&PM?0a#n)PYN7? z%yW=)RSg{AA15LQ&G|f4fWa;|XJ8O$F+>%u&Jk&XV_ebp%wwTzGp4{9Q-XDtXRw>+ zIoskCcCf5_3Kx#h27rvSxFDo22xkdoyrS3*7pxDUX0*>Kig>7 z-vjYQ#k4aE9nojQLgkyx5%Y_tXHrdK(=EgIj~aw1YstB`HY-lww(%|iL3kk5h7*H= ztlyELu5x7UOVTRm@BukYK+3G-dPB#iwi$zqNUG*>PTTYnI3l-=;>QdV>tK?~g}ca8 z?m)c6I3Y%;f(J>r7sf&(bu`puWIQAP=vP5l=#lDUn@&bRQ>=Fc@>mOo6(CPz1#>3Rs;kj{&Fj>ofu`xYJ9xL_O@k418c17hqp}sjK*}dqtCdu@Y|~WQ zw35nITup@7Gs={vXV!ffPH%3P-Qm5OE6* zW=!NoLWc(*F+P!ZMPO|W+TsiGksIqg!RjXgWt9@MzGjN7MeAukm;<9WVa$0*5Guab)wM%k_skgvJ-;7_#=ll)1(5!KySu$MLwOqp$6PzZzdRN>iawy zGFWu;GTAu?48e<=GAYw}5*v$yD6EWc8_1KSr^6ha_am#l{z}HRL-*|=b`6DF?4F}9 zqGwO*!4?E`RpWwU@b)-gJ@FM(=HD&msqh-ws8ei3N(1a2h0(?dWgnzu3_ZiP4RTkk z*}#S_>_`tpfdd+qX4RXG=nL*>he+D$OAgF2em;(T=;$%D)zl2ysc16AEdMA ziQv|>r=spQJ;a)V%SsiFlA%IO#u`#&Dg`37MDI~hkWlF?P+IV7bv=T#bxYFxVD+7+ zsWK(LGd}?~DHmQ(3fqVK%u$PEMmo!~)dVF}%r`I<-Kq*yO8wK?j`;`OHleh4!Al=F z=mQ6R;Ghp2^cTlLTM;%}+33+#Ij!b;--fhtZtu>0*gvnVn?%n)>6=GRHUW*Lt z2G}?Cj7bB5Zp{4kq21gXKZW6ZbhZT(>t*yu*!aRb*t61z44 zIhN1ZaC{8rB2+L`72pJN6g)@!B$yv=4K!q^)IiK)VXdrLsq#4)>){Km&Y$O0JFnY2 zjR}J;RQL)kij7oP_8j#&%CUGKCn#z=N zj#x^SNiLB%X)xZ7oRk8W>ShZ3-T&aoU__=_nzb)YN?65`pmW!a_Yd;dmxiQ$Uzo1H zp>&>ANYs)aq4MRuL-r)v!+=jPCo_lz+Q#+!z@DB+#!$BTYX5{c?SX7l{yyRi9gCAR zqZX-tbe@+c#OTG=c+*zj#;9$)x6*?E2-g*QTr$dKo?&8KYwZchU&bK8S}*`|@&Syj zFxZP8iSUCZVKRageeMvRO~GFZ=#-7`WzHTyNJ&$H_0Wx}GtSCL2yjTJt9e|2H9tAa ziy=HiSHrN4@5G0&s&S|qMKF~{gzD+nTkAxC4;XQfR!Km{lpxeF@t;5ukig^&he2Ju z0pn8^vPVqCI=0D3nBNFh_0ux5Iqm|&OF?5*qiafYlfw)(PNb9HBB6|M6Tlw73K%8BIvPg3OGI+Z171VdYsUn>sxaA(2OXdSq2hO@D;DNS{H#2G*FGBVemw)-&LCtfM*jr61xr8)l6_tSS*6BB z=$|9xxNt>4+rzYgc$eZtv1Ro39Tlltv3ccfUiOyt0N3IA_TU7-kRk}X1K?;Wr%B(A zvekU9&PiQ0$~tDbMxe@xZzw>FISb?p+XuTa5)w_=ij5SqI^p=z(^WR5DTi1nN5f#D zk~KYc?cN8iK)niw-gG@|qioF6f^*k)?&?BaOO-f__;l|BtWe2z95rcZ4d~LpqrPG0 zevHx9ImaJ(`3FI_;ziDK5$!h_RLf-48{i3f6Mr~*pIp{Z*JjCCk>Ksdr-4#0yA1qp zozMxXI0&01cPfD!!LtaMDJJWWC8_r-30kXLd({A0unlf*f4X2F!=h{8EbPx;18 zbxQhgD4p@8^0YP$Ob84|sw*pz&u8=e#BK6Lnn7D_xO%8hd_Mjc7$4OqOQyz0AZ&3i zAH_QpH&Ln*2}Wo^7R(X(*5=mcQ_ivXzsB@m<6nCHeC?5nIg;zQKq8wq?#d%g5KsHQ&u~6G-8L7 zU8}~zRY4MbDiQ|^XDw*N3!Vpi758qPvH{`9%TGzyzzh$WGIx`p_V^g_fy(ZyN9saB z@VwJ_ZY4zHu1|-dO&R3b6wSCVPLQ;C1Eku%Bz%IklNIQg81);DP;mWTRguPN5pPgo zkNE;XJ3x)}dGA!W$OFa=)?OUGuhWK+z?oY^FbR8MBjx!FvDsr?e6MU}Ug3R%m7oLG z>10MC2Pc^(^SM|p=w-nQ4SnEgYaE5d+xoTrQgm0q7v1ha&k{E?Ebm6><>?3>HCJ_# zZ=-hF<>$$K>1KVlni{~~C@LM53P8S@0`^eVppRh2*ED0A+24=EhXiwq0H<<)6WYWw zFDW`72_0R8@qku0bQmr5lDP|2w#M9K4L#WMChh)!$H;SFt3S*!a)|%0ahweL+TD&@ zHi!;BAm||{jIvN13LXT{H_U1CeDm4n);dhiGw?JIkB}`rLi9`SmU#A>LnPYI*u(1* z!lp)n%NoY?R1(*#@u3{ADZ7a3yv$*jwadbwDlVKsrsc znz$(7y?GGFK^&b^6zDw(SvVz53nCOlG0ZDfiM^*qL%qwg*enNVh>zAqhNBI4id9Tr zEt6TR6-Paok_=`>Nlhjl2|$35f5CN^=R5I& zFe+5ahQJO2$n(|U!gnN_K@eurB-_?>51vN2jlhF~-3A&)X-z4EM@Z-rp%v3NH-kX| z7l4a2x!hz7lrdB~=DR;Zh;RM|{~2PKw4Na~<%9?mB*|TQj|)lE$i5&-;4MVWGX`pc zg<7P@{)c+b-BfIeq)XsJnu#|>XKyF6C_Y z*sQlcS(BeOZ;k&>sqnhldBb#DNP=T@A}_$WfsfGV!swdU$sq%B0D3PExxzLaH*Vr* z5oR?rT*0qRU{_=o=1monu9M(On7VRJq7^-U`M7OH@UufrZ`R%iZVbUQeHXN6j^TB7 zr#UriYtj0JFv=p&t6ty$!D3pSa3|H$Kt1Qcd2)gXU=H!U0IG6$y#W9Pv%SivW|CR) z#KNRI6JmGnWr3PZ%>{32T{vJ5c=Qo7lxk3Ms~Gn0)@1AHfKfMwXkfkeJ}hI*2D!ZJ z#rg_ZEyU5Li*z0r6g+pt3jiW>l3k=lj!CK9O}`+y)?^$0AM4+3ze6XE4aw3#UG=tL z+Z|KgO~{3N1ln0#HR&O=xL8#bQJQ>!OF()t#F$l@3Nf{mT&pqZLqhgB?tB^K|)jV_3kxFDU04$`XY{l&%TvrPh0 zD-ZeXt1)1J(5;tthxe-E5fWx#IHG1=Q!BT}C;3Y3Jm^P;Nd$d@#-3Fphcr_?*I?Lt zdrPzYGP`sW2(t6==63y8rcGOyVdCu#Q`E(qczJ_ncjOz>sISNH?5H+`EPZ98Bk-$y04O=0kuh54X+`A4b7if?{nEg}H z;}TMU<^`j0=f#!yviTE%Z?Ta8#8OdYCzNl7-7dVaqJ}R*BGKqPywPJ+8+oI~gk}O> zk`?LR(hJug0&#b}Gr4V8J*;O`nIztIm3ugGM^IV$ez39m;O#LX^#J?1CA1>BZEn(1 zmA`>j;iO@$;LJNt(?s_KpRZW<{nw^@;q1QB<#AMcR8U!hNn`SjOSra z`0yhP11%%(5ZlMsg%|=tITs4C*@F4v5mF6!o4QFTu1uH70N~g!!{UOE_&hyLz?b1} zCK^qhb!1N>|oMdea(3>QuxLiUm*6U?dj*%Jdo$$gnGS98*J zs+4&*R78zkD|`jxQ1MF|7Q^7!7X^Zu{f3$P7 zUmFKK`%#zyTdYb+2hL;MOv`DRZob>w-hHz-Sb#Hdp1(s{-fi&j^&wTi$<9)!2uo_zheHx^3vkLbx1 z+U_In>&M%!WVGP2@4ng%XXRZy%gYE4goyQ-_e~JR$!riQxW0y~c`^$iQ(w)K4{e44 zl-tv3J#~SX1*WX(No_s3yHat0-Sf)*C{>Y zu4+fn#f}x4ZXuZIggj^X#4oPOf6m9$)Oa~;@~N}Iu(+=l{ctB)p4UzWd=}mEaA@xe zHWGHlJwj&S@eW@B3D>7r9@gg zP@QfRDlQn+gdK_KCeTReRRU`8>X9Ob=|O^yg_;l#JNIg*HoNJGqrIK;ID=rj{?qgJ z2WR_y?u1i04Pbe;|FtR-h%l{-{qP(^PZj;ENu|)ElTU0`h9y!G*kbK_`cA?~=9}lNDwZm1gEwXMtz5SlLYqE(_;^1Hj<4`G|qy|5#$k3MjF8qbscw_)exVG}f>tD6?v z08AUb@WWJlcs=A6UDy0QS7XD&&egCb?xs(z&=)Lf=NPM@M*&>!*1ej5KaKVQ_4?F_ z^&7UoPO3;2nA3?X)3eN-akDvjl1!5Vt+1Np0-BgXPNAZV*1rO?AV*5{T0`p>H@dbx z(^Fzk`x0_y*0(qNrCHas^VF$mecOg_Y^XI;*gG@F>D8261gkVShN&&Zva7(qyQ+gh zxIZDHO1~+qxNtj_n!+s#8$+=9)UmY`PY(;Y`K?5PrKjv?8E;r~sD#^sei~~`jjyZ| z#iZGj4HNyrbzB;)eX5vc2R4-T*e%GIK1&F)2)t5xZMoTCwuq{Z|$7^gZ4W ziiF#iY?9Qy+O*fONC><<)>7`eSC%G^=d867&GR$6ayLKEOA)&}JP0vHq8goAjSs0V3-F1RIc?ZifXrQ5p-R+Y@7z&KGnFUCBb z3_a?2J)IS@qU1qL)p3?VOmu*W^U&u>sGKUG1c2Z)evty6r9X##?_h6ZRRHNSzD(es zh?1yyW+5G5)I!e>fCeA}vC`}SijR%{*zuLyOkxb0<RpS33GIf$jG)rv;q-N z#4rf7tk>$kSj^trJ_i^zbu-d08J^}@?aYoC*z_yZcf7%Dd*~3desuWNn+@PKXlON_ zkiEVaR4Y|_ppKlkYI1)Uq6G438YWjesyA`dZn=7E01C9VDY_j3Guasu<1c5?_xLuM z9p*D}>A-kKhO9*!FTygobsiI92)llhOJ!M^OwjOtz1&a|@2Z?>o0(319@M9t9f*y) z_cE+V;-doqm+{uqr!C=1+?d%39@c~Si=aqifa<7qdBWaMl|ftek=8nFT@Sx^lbBzY zN6B^Vw=Vfwop66^|)kJ1zZh=-OlWD#%I_q(n zo|T)IJb}=Y4Mz*}R19e_#U{qscc(F2a>!=3*D-YgqWFzw#4;|}u0N!u=ULdEa?zx~qwD^@4z`|-uI$#65fZ>}fr_ z*7mA8&kM&G9=%Sdka}iDDOhpqZ7)G_5%HT*^c}?`M2?)IbttgLuhuqx{|KU&z}<}y z85P-N4j#0a0XYTVKalYt7R?`>T*c(kpSc1;;6wHBQd9eIDJQ1`LyXYye&C zUSgukIh86mU+?ei9USeAT~8l9`Zk+OUIk920GmK$zYuZyP;mX7$CsEu0DuQj;B;++ zbC%;001|XsT|({%gE?R(NP2}{cD?|{m_%#aN74S#TJ+WS(f-ls(f9kue|-DxarFK6 zyLa0M$NPIn(c5>?&fA0C{p0<&2kzIaX#3#L(Kq`CyCcb)kq~+VrhH#;uAU>lJxSx5 z5K$z7xs!KRz`rTi17A~<5 znpB9UopAzFaX^_TkX8;RP+hmdqCy$y5l1ZbpVBW0aw!R2;XiZohhC&vj+a2BnYc(x zxcLE$N3`zhf3oAAy6bXQ5dix}NB`D0qIIlv#5KAWH=L~V2`66N8bwb9tl3o zI>6i~*0qs7_cm7F)d6GO`d!Ole|oF=+U=!Z(~367d-GLo=l=uGe~PwKcafV(0oR@X z&zk4|^Q~u3AI|?D;J@1WzxDaU`TubK-~9Yf7l=u_{^*l6&pk9+eslT$Y_ov4$VIXV zhy;sx?a>CZ;Qewtb9{|L&;@avQf!nI#gTyPcX|N{cmPAG?zEO6H|DT+1h0roG|9ln zbH(z0L@up~;BNpfPO~;tmr`Bq^HSohDjYNbOjVq{mY}EEW+u$reH=Zh1=Mc(6RP-$Dhkq9Rn-5~BGwM3O9{&5d{|27_MRErAkm5Gi|Le~G zPoI7Eym9~k?AeQl^Zy6ufB-Z)+mDlRGZj?5hEb6Hony=DPXb=z- z2%O~6MO?I1^F`aK`)~a5()UES)5~bh&6QY+#iJBe+F;nu0N=EP{ zp|!-!AQJ|Bh0=v}55U?eOcenU^eeUj%rPep8AMDmFj-TbWdbQO;2W%pl5Uf+1Ow6+ zOJrF9YO0PqwTdW6KgFc(lSiM>6n(Wy=j1ESbUQgnE`wL=@oe@@mS1LIlrA?OeX>29 z9p_ZUakMX@p!CGNWzu&~7|DjAWZy$=?D4>+9D-xTMHQhnXm*`mMNg!c)WSxTKzbio zc>Z=f_^L?;qeq{7@*ju!?BD+-e}NXm|02!CI|KywPmi6n55B$4C+6#S2{LC`Bk#1? z_s)FFPR`-4!y^B1#fHxCjrmgZ-PeDcG5|wh{;a)eY38dGEy7YITrce3rh?#4$DH4R z(Yo;zk`_rSJU7}b6z=IzV)G9|C)zW$K#$a&?lE8_=K1RaI;0u3}X1kj{buV`H2k9)Cer*5@K0Q)GK{fyhu@C8_wKH1 zViC`e_N7N}k_Dhg*iP}IoAir5xoOwvE7LnChQ`H}@0|Fg+TO{tn{@xv4cVQp=?h=s=Y9nAyK6>V zUoYah>*f3C4W_D1N`?O|2@cmcPIa?oh~X;p1%Pd0OfCWb3c8r zkzkZ+PBRz6ujBj;Wdb}Vpij`AGJd#QiTBCXOG=P8LL)v`bD2x>Ma%?)aapD)sD>f> znNrbSajro=cdF?pZW5OKT!Iamw(_Kq>o4SH~PeuaYR55A2+AL zbjOR*Zl>o+wl2fkfN?#=V^iN?syOpP=E;%4Y2_EId=l`=UClfrJ|M&mj!} zM_9a56lqK&$s_J`3?!09F@DD-H79p#S$)f;DMNK@QGBIIL^(@wt0d@2qAi=TL?LTX z?`clnp{SWyftmdzaSvWX!S$^T&LeG3Do(51lEpkoE{*g9|CyxAHd8f1&L`kKVN%BX z`mv+y&o(gmwts1Ja6hIb+>bFcV`q0bgD+P1yk$6$5V7-PO2p0s340P|e{buefa*&> ze=ijc$p~*duX*8Zr&@_Wqzn?i8&Y>e0{zm7eOA)`?<{G{Zz~c)iV_g{Of?{a`Z{2n zXa(@2{cGL%fPDd}HXJWxEs&%@GklA4zm*7s0BJGY@dVBej`cqJq;zK*gpl~{^lz-6 z@*Vr-z)8lm^^ZQ8LiEX+6HR>^Z{(sT@uC?n;;9=X%%7t z3v^^WEpkUWAg<|{Y%ig8-@{th(7TZ$V?FYVObZ~eTqf*mO9{NOD7!^R>zX$PU!Es% zQJo}l1wOAWE%;6VLKB?8<+j}C8 z3ip|86EU*50oMMKSXj%q`N`&u(`|mz4u*Y4**0;lWVZhCpJkrCT!S}jASPG&$?Ejw z8UV$Xqb+yku14_g3oP&tGro_^#R(OCL@G`spu5b(`AIM;o|O@y2Q??=nV%S&s?$x- zJ!hFRM5kDxhV(u<(Gis=5u7{2k0*GksNU8k<9W(x1kPC$^Ezs&9s$`x$P0$5VZW39x>| z>26JbRh#kFkv_RL6Bf^VTSBb9sej?8zU@;X^p8rT1vT7H7Oj96-E9)BPd58PbtsEgmy{*Ei(P{E(?IkN8fK zbKSwnAvafT*wB$D^{iYXKA)C-qy5~-(WfO3_2V*l-7z;Cn!l?yC)D33&D>o)FZg-i z%>35R43-tfbJv-^ZaD0=L|^s2uYGyap6E;Vzr5_5hTjYw$V0}1^6AKW$7V!#{{;{6&Qq5ST+r^!Wwm+W4nAo~ zTgJ0MmGsVl5v{4TjQ;MjoYlKcH9u)daVFiyOlQ5_HexB2R=WK0Gom%fl|FjXmJdzI z6<_rZ`BO`)Se(av5Bbw-L$ED8>B^wSLotcedWT~KJM)Pw;}4y6t-fYEZn<_^S8Ccj zDkH$1PUUKPPnp^3_d;#vNqc5CxdF<{-hmi-OFt0S@X@*4>KsA8eA1rFP56Sm?CrS` zk@N#mNZ(WTx7v8ZW}aM=&VvURB!cTzHyN2E_=pF2mwDrA1Cv^wv}KLsad7gu-Vqp) zf{WX&a@Ser+V%-)s@k*6*?n@IX6o6q+CDKVsUJKq-6yRrKDjnWok+(m<$A|%WQVqI z<@$OT3GP18w03Shtr_lQ5c0CO=jQOy4`kKuEhk?6G7~oRq%|>~j4F87J2WF1gkVjQg#$`L?FfTVrAE34QI^xJ+Yp_|oIp7(lP_)>Jzeh+7vTkR=r&38#WLyw^{ zsVWXNrfGSDM8cL=f$o5afQB@nbzsbfsEqkx`}VkqA@0_?MM(M1-JwJWcd8}Tg@rh^9C2=B-B=YZ7S zqBtjyLz;kJkfX=egQLff<>>KjkfTSt-(ahYAk9;qW}N_ik<2m33ife=p!3E{vxI~2 zbTub;K*zM^H&CM z=mq%w+jrlPv*!YWzNkIEg514h;Jvuw8C6Wp74KRLdF{{+b?Ks8!>aCrC*83jy@PAt z#H9YB+oV3w$>e@H^WA!weA?z=@^dj?_pkOfhV0MU?ASkwZ%seBba>75kNsNzna|t( zXMScz?*2)*-rW7$AKBV{P5-a8d;hM>?EQ1Kmp*N=m)?~PA4kyaJW3XD7g#}3?4O{a zf2+&T|5I|h>8Ip7aKHHxt>*n>8)iR$-fchsMOdM&2hPva3T+)~e&$wa>rC@&vqD>! zn;t9l&)lqQ{c(O$X5D^XIl#bc{dGbE?`t$ySdTW2FC1&{<*HBk#c*wpPfycKOkSqn zRM`{!r>&=G8yV_$gN1KshHjI+fI0NYF0w8fX5tvhP487|Ywi}Y+w9!eEbAbP_g25f z+e}xFB|C04Vh^=pUn6f{W6ge6w`TuWh%Nwq;2GNiTj+L{0 z*>Btc zB~br=IboLo7s6jJvpiF1ff>GYJK^OlNtS>jGIj-DYBJaIi)&KOahlRrTSc^f_}vEX zWTjh`xR>o0dofX<4R4>=fTPp=45$HbFu=R;?VXvN+N~PKp23-VAPdkN*i5xhcHwT0 z>c9z$00JI^1*M8-P6X<_>Yt^RFd;}kv;uCti5DpVN6CwF6IHpJWqLM_3pe?dtJv*g zSd1}(LKpT8xYVX=$LSRF5|1x zdYOS^&52^F-1Vvv{LOd){b<~8O&9<2xB7hew|dX@<@>jeuBZJ%m$bVfkvzd=;$3nY zVTRbEqK$Ntj_GoNy~is&EU);9HBQk^2QixBy$?(BRVF|hCz^~QWeWNXqO%SaL-&md zeQn)YVuWNvc&>|t^a%)@0tz@ z@=a5bkkU1(O;5W)5-5^H* zCC<*ky$DfVF9?Yhyc`)@4qXwwpWZA_$Ps})L@Lj&f;PKc&+%o8cUW0_JrqEp_L-a} zn#IcAul~`J3R1Sf505<%BaRoWg~9InZuuKjEpnU~f9~Phr1ugWZKAcRilzQGj=1 z#w#JISd&Vlh)eFh1>r+2fQ7mLE8@!t-Gsm!y-Fq#fdRV(d!-**7&L_`Ox@*pHKSWN zh>s0A`_A{j5k+rLXFtw?)>ZRC=Z-X|GGGC2v*u1`5>+h)<$%FmMTzMy;ZIaf2HT89 z9fjnBbHX?l5m>XMIyZCba|=0XXRA575m9D2YDm#b?WM%}U)b(G;RD=06JHGTY@k`! zexlccmKN@Ek_=W{&_-}$cqibg5)uGvx?)CJ*G4boa9e6R7{l9kJjo=DkVj z?Z7*`6z{w=g(nZ)b57WOIw}uAkj8B6l0tCxKU!Oq;T!;*R^A$a=k-jNwjl_^W+qfk#PvDFKzxLzVxjv_I1G0LOD^%wjLaQ+nwi^eJ3Jp z7x!kSh{xo0<_7E!w~qaX4Gr0LRAu`TkYr{KV>zAu(W;7fK9XZ|BG1q}u4PK8&DJiv z8N|2kbYsr+PNE_B(w;uIbjZ}()hl15Yi(K8m4+HV*6Q6%Cq>@`XUrkeJzPYm=*3@? zrQ!=GRRU!9h(liR!icnq>Cg0z$T5V<5AIM$2t90EjIi7F0n$^oYP%l;4>&5@DK=rf zD!QMq9A6kifCXZiyFQla`%H5PlFbY@>%3$LkjwMnk}2@l5P5;JWkZPO3Tx6cJsqej z=F;M9>ek5dE;OK=6lroA?YKho9fJhTftq@7XLO+e?+e(A5}l@(b1|AOOmkO&ma$j~QRDI&C$#t!vmV(}P2`l*dZLL4p z;ty*1!6?A-dx&xCF#f=R?#A?k&IUZEZNlH3vXDog5FkQRDXPA_@V;$Bsp^wTD8Yp$ z(R(64j-&(n<4{Eq#1oEJMdJXLXjkI(#Q8m#B!`kljDCp{;Y zujt{}>N>W(?zV%V@A~-aB;l@8jn?^=M_V_~@X{e+J1iF9d{l7;9^B-LM1fbd5(9=Q zeH~;Oj3WabffgMIMbQ*GzN#MLY_Y4iS!ONQCe>TCVAY%o;tZDt`7H0#OgrBCfef`< zA8V*}lpUWW^T-`!5LbGU7_^KWwFa%A({K%LhxShSeLF7(B~)6joVGX_G}0)wDU8%91}_n=rncgyDPY#0Kc+};xS>9v-? z7IPLF5^DG!Y44oe#yCY+habR1_1UdWRK|+LR+JUTl}VZ|(q9tT)01c$9G6pyQD=>p zA~R9yv2}rJn(%Un6cQHSXsHlTV%A%aq_)!2m1|&8j|&5LaoYMIPY6&asFew3i)z}> zqP)QLa55-N71Bm;HUOw&K1^+Vk* z5IewnhEIL)3M`H&`iWTcC%t&;CyY?=lr|nzu;!wuY{n>xAvq~xhNK6 z2yaXmlrgc$PY^~8c?xf^MyQhe;t&cR!&h?SO}&C}ZVL<)cY<#kT?;w{Fo90GuE@a+ z?W^F%!`c&cUqa-s){YuJV}-qKX@X^W`>YX0L5O-J?N-OSr?0s1ZedT?Ap&k-P56o17bY@c_`@yE*a}vS@1ew7xOeolhyt=HyVlbt znn|?D1(@ogwbCO;zJX`gw@E=Ahz5#{hF_~;r$pf zsKbh=F}g%~YRYv@rS+RMbLBP;I>Zo@mqtA{ZovV=tgJa9OeG94$6VQ{#%SFcrS#m_ z+Szw4GQ9WPYxbBT7~8Ju@%6P;Q*v^HirZ?AxQt8jEoAP*o`F1w*IsyZb$khl=eOBbFB~B?sl^5lCx}*=kA(W7bAIGk={fz9!f)<@dXRCg1%nLnJ2+f3bOFJ64q)PahubJpxjnJ{X5&|D#u zSX-S^*S81z|94aZtXnm($|EXVuaq83wdxJT=I()Y@3_x)lZ!^>{5+j%zpcCTz{=6d zxvh42fz^{<@|^|GK_ncg%gHCpr6AzM1f;b|D8%$$&g)rjv3?B+I2qC1IMFKMc*fD* z>oi+^fYS<0!DuuNI1Za$TCl$nr&rP&bmJY1tpZ9DM#$B|wexX5w` zYp5f*IevD>h{M?LP$dH|`t=GPJ{Xq_&LPDrrYXXg3>}X$3bW9ALQ2MNJPGK?sEY^M zsw+|k|5t35*fV#`{_-x&_+LU<*|_&Csq%% zia2C8g!3=eEyAzCo>N#@l_EinLhX44YA}w2J>`rk9_ELQ-UMIbW>#~{TeS|%K3aSz z6c4z-ymahqxtym{yfUEAI!;|MH2u=#@B`D_`yc8|B^)(@r9%BWl(e=pn zcHzCe|EKJ6%UxnUN&3i5S?iqa}s_?=~Fo7f)xI~lU2UV=lNOp9=`#g`)^3d8^>b= zvI{#E9#PV_77Lu&(!Lb?0w40R3&U$5-1i=?w;#sf1NK?tfK_K>%&>xc@-j@}(uC>H ztzHZTT(5>(CdDExOLRtU9MC4e%bkwDVWYZbzL+qgCd?P}liqfX$hL3iHg87^?ExN`rkHR9)QV6B^xV#|ldU!dm z^05;O$7w~$72a^oEeJ34qSrTF3wfls0w*|Kfcy<*?zYQr>h>2+F9~d}mt#>0P6XgR zYvqP$to29;SNSTsqzsNkA1t+}%a?ASm8&B0BKm2qy0mP9QlUx)(l(K2hy`Ta<9T=) zttB6-7XTLY;k1N*vdaBCiT1(ucbbA3!OdV&6l!0f4_Hepmy)0l(dS`w}q- z+;U_Ib!1f3n*5+VzD6fuI4u=!kRKv_ zciOGcRkf2Kg zy{4cj59yoa3M=8$57m5*l;0;;5vAaD5~G_!XsX1TTS_}ihkx1WgoGUU?sAjv#PG7pl>gCz4H z$vj9hKL<%h|9lW)?pcTlQ)Fr|q#OHNK(eml>3bAcwk5$Pmo$D8>`;g&TFS7%-r9y= z8yG|U5Y31uNs!LINX{_r3hm*V-F|R`It`J=GM=@& z$Pr4N+23sq0^i^5)mdwyb_pbuGSmv*5G{U^a>cFFtlskYf7WsQzvYTwHg|rs?mf9T zCY{Vht=GdC%w5jKU2D+82_YpfZFfFkI3AogKL%68g{!0jtGnze_cjB_9h{dO`OFdV znR~q2zGy!c9ynr8GU5l`_`n+v&Ds5cCBV4R<~H;plFmWq97IW$>e;{f6%G zeJTfNIh=XbH9)l!+HdzedehY!+LFGw5qB`Tzw7hCN{9wFR<|aiF+tdi8{emIGb48+ zQ-0d5Y4|A~jklYy+n}czB)U%NT?K3=tw)cNSL;u zdT{W~uDpK@ogDQ>gJVP7*;WX_f$mV~CT!e-azovEtgDM|ed1bN(XwlB&5Zn-g>Y`_ zM5N%k^n|-9X`W;bNEaxfpERV_4pJ@6US8|(^DOLYkDJd=OmG--*Le^j9z=)-5#m9F zxK}&HgY1~wjlxY}ZGJ$4JxulZ z{GRny+%?k^G66Gj0|guNg@B&HEQh0;5J;&P$5_{x0$}E;S#&Pn(P3J@whqIafya~i z!i%p#44)#*QqJPI(l|TGQa6Y2J5Hk;Yls~Qr9o8(Rq;nAutB#{WL? z#)1eD`2_Aws%!-(<(J1hhayzKpVAuS(K02pDmPyDdo8Hq+g+^!{%olN9@{G1@34xa zonx&7|8A)SpW9mCL2DSj7uuuUw0s{}WxmeyvpJw}EtabaLNCtTyaAskBhA-4d(q+U z4XiU14+^coH;A?0Vw-_#-H=eF3n#|E;3TP8YP5Bz1XuwcIVR>NE-e^Tj#(QE3q}Q( zShyCI6Q~KPYWHKzJ+2Zzl`xatXAVJ822Lez8iR@7*_+UXqHYYr+2ay-;W&2Y9&5Lu zaz{hEEvM0PhQ~@TAi&I=JP$s5x0(9QpQs04mznAquUADyxOm*R0c*T}8bNCnWOS?@ zo>CB2m22{zbbcKH+=pL7=9SHI7H^HPIYC;lg1$L^u(q{EwH&33bRHLTjwsW>Ln#X< zhE$5s2v66db@vQv2VO()L0EqQ^j2Nb5G`qL_ht#A`Jbou12?lN3opKk5U%~5d`s(gVZ%<=SFxTQ(m_R*f{2kx#< z>2L57qW};weowq2E|I~$#J(@%w20QVz68=BF@|87fbCVoULomDTvD0 zt84R~=;fYVWJpkPt?fGrDZcLzVASU!=;l)T&2Yh0-sqPrn_f&4R{-}EsNL>BKlq}d zAH+((M&z#nT|;l&oRGrm-Jwdt{$Rm@$|x)=JvxSD;>ZT%%qDoO+Pd?h`c>>M(O2{2 zLx*J`;8SOb?A1qQR0lLV7=nbB^>RTU#Z>53D(y4y%HvAS_9ft?yN)uw zlH3aFGkU}DNQ&{J&_4WSO*4WI`*k-|6#Zb4(+wx1%n4XdCRZeiSies^O`-8zwbXB)Ue2<1HSp4Fu)c*c`wZIfh9h$#9uT^ z{Akal2fp|t^Tom1>+SE4R9B6^qP?$QQ$=;B<3kN?^~R{o+SA(M7j^C||UlG<4SP?j63{ z+u1(e+kFY2zk{z+>jLA>)ZAZD>}g9Q@*^1W28%NV*alc*0(#G){Vc6^^jm@!oaf@j zi`}M6kE;&}B~$gi2iGQ_X2~|4&mNaHoRCbrG>SgOyUcd=jvVJ)%1?<;#9T>g*?agUeM#g*}JK@aMHLqODY3&Zct-DJ_5Sp83dyP zrevjseLR^wogc#+WZ$^f=!@zOf%b8Z8@Zo^dvV`v6zb~FVIJQ;v*04Aas^0 z8s@ZD$^_9dhZ{HuELh!<71DSFH?Ec~4ilxm80fv{Kj4kFAINf}C~<-kEXbIY`DlY{ zE)7qMssYGkz)Ryv0NraOX@=P@X!4_^D^5^lMGq-`up)4xhP7k56MYbN32*qdT{wqp z!;I*NTgQ4@df*uvcx;y=Y-g1FY8=?$m{L+AE-O<;Gvc$3^Z1=i zvRYC*D91tvz(_>!^ozK7pU4F`o=*_USQCL^T|msJP@&9eR{=kShJXu_PkIY?tdrNi zBOC}+_$IkJ&M_815VYXMz_gWEwsEJ&G&v`L;;%XC9fcT6B51Y55K4T(3A!w5HPS!i zQ%H&s?IR z(a8UG^!7kb^MXr8{)QzBTr$B`+mQY;_R ziKS=f73&7vlApS}8ZRzoYZJu@<^IC@l#gO93-lO8H^tKut&Jm1z~IIQGA{eQQiXmE z(Sf>tJkeM&qv4Z4te^QeLysu`MNP85JWn{hMK%>IHS`I$tVBw2UWayNkz2ASR)CiG zLj`ClPv@ui@NJwUc1mbQzCbcy&qzIX%i!4c%<3Kv;70*B^lbQ}j^cy7Qndtmdy^O8 zl+y>w0EO$(Aq%7mNu14{>Jd|Aa55iKchew;d!J@?lsYz^^}7$wTfTod2_H_v`#K2+ z@vk3)eQnnBP93~Dx{2Qz6u&Ev1TryL()PRWy>nmACM02WWNY`Cg*k24ISReu>`t4^VfIols*;CLAQzy9Hnj@Hb z)w{=nf`Q_Q2KuK}Jg1}SfHW)ne>$jx1phPZhY0?ssHB3qd%en{Y_&MSEek&a$#=fW z`l$*E*jo29$o&Dj1ia)Uqi`1{Brz&c6|oae+(?_7=rPaxV>j{BWmD^pG~rvQjlZ0h zslFWO^B8{gVC5Rhq;TGTx@N6UJIq@5=d*v0k;WbDE_&_cTjF`kADrjatYO%G6Cr~7 z)hlfpj9f0wBNjPRP7s=bT}OBT4}2Bv{BirR7LVW5H*;YqyX}ewD>6Ngm+(+a4TZ67 zeAwILqXb2UA^qi|y}ji!y?x!Ru{&4U1Vw*p`YPL-ZGX1C+^c$UnKVXpPX zjikQz3T`j`z1ry(_`E&-)s9f=WnRo@m+6cRdeQp#-yd)YwGGt7!tkoWpelXU?|Y(l z5&uEMO~7|+t|C>vD6NxSOH52M><)NlOuYjggmz~>hHhb z-)-(sYNafw^ zsxq;E>_QNx^rnt5?pL(UvHgnv_f2v&$Y<_mo^nU$;G_c&T;=e0Tix=!_crNE{i9th z{t54sKGWC_LpMV-91j%qbE6=;YUEWLy58P=`CNrIjz*&B*p=xpZ@5|b^`;Iy=~{IH z%f22e*OzS%xj0(la@1n1nclxE@$GkMQLW;6Kh~S^E|AlxtXF@rn7x;%wif4r3w<#l zvhC0#KK~rWsrw566N)^{U9Ya9uQ2}ojhEopj}E_jvjNqqD_t{=nChS^+Bii0{m?+- z`ggbM^ZqV?jpoxdj1Fq_x_?}axXLnoI~0;S{Hh~-_uPG-MG(YO004Z^8EGmoo%q2} zphY*7`qsO)#YdkU&Kgs&oLv)EiUoeA+wKlGnpu15t$Y!!L8-O&3iN#Jtw2ikRPsHl4X&#MORYWPYEZbCeKpTdFkZbr z3Y-RjYsF&Pb}~ybbWXo({YZ<+cf=}Y(o$DrTuk6$sSIttrmTn#w)pmzf@1%c1--8g z??Lo!0X>BWCvFM^1R8ar?^_u0j34*oi%20KA^h#T{Xwnr1VZsNS_4X8#Bi z$7F+^)-NNV-4V)t5sGZ|C(==abz6da(n*S76XbhOnygT= zhP%IqrVNLo?fU|1RG|kfNtb!?q0?nSOLSa0S}O<`r-EV-tUpYQmwFoY-z|s+?HDtj zHv6!!f&1hFKeG7q%ee1z9)@W=Pxjw-Q>>AjxvbC@MGCci-#F<>Y6v3*q_XY9{pf4Q zFD_$HtMXrU@J)K!ORQ4HpYoZJFNEtb3C0-xf0~}H3JTBS-nbqdQHk2!2p{$ob%(Mh6Mjb2VKYtKn?{Cb=%Ds5V>URp+YB2L`??*{g}V4-70IZ2fBXLKQkkc zUVFuXo1`|KfUhH(VI|!xAXc8^biBu%#*;P#t7i!ti+Qh+pt=Kv7A} z6;yo1NK+&dr){|mUFeIxas0M^yql}hk1NsFmy}NWJ5m?^?iX;3TQ`%gb9@K_^RN?r zh>_>vZ2u{p?bo?5Jsj%~$NIyu{&1}S1djEGQ+?Q}9$3+s*xw%YNf-@ zk^QShoQ&*ZC@nqgmP8l-yRdY&iR{pT(!8C8g zLU0dta0FVH<$h3DQQ(jZ?!@B05I~TLKP{jvxrz`d2(ngQdMJ@^G(>?W7y86l#Ne%( zf-fO63EM3?vjB4_K~TixjN|~u4t4T|nN@^LB(OgC8$7%VaFVM$){ATGJibUBP52rB zd6QqG?hGPC1QCg_X>_DzbKbC;1783+A7fHD0v;0tb7NdJ7v#pKYOH7n#oQ#-dhM&9 z1dIH!d?>p7M}JQ2v)gObOU5-$!0t>wk3oLISot+x=dLeUlPixpb~hEmA}R~}Bm0U? zCPLP6g}rVQTkbIWv?B@j9i1OTZh;Rc$-_zVaFRTnBo8Oak9v~a+aaQ8i94t>c@r;h zj8m*%4n<1*cznbW1KB-dNWfNeXS78eIOn{f-5U?>!lT)1&;-a5}j}I8r zx;oC*p9$2WpOOc(MMYcGN%_?QF8XM#Uq1A34R*M3<~=|Ucj{l8zA3}7hdsCXslX4n zvhkq^#Emoc79hkoK3(q;hj;`PG7G!IbM{(fV=~~FG{1wvjdi+y&iKX;hwj6ndkxC* zPli)&Zc5ZC#|a+i?~}~zzR*2Esfg3ntE+GYpZVJXXQ*8IdidlLX(P>C4HcrGw^W2g zDz}4WJ}aXFasw{HFn%Bvw`JlphycYuuPb|Ad@}DAPaIcPSE!Htxsx!^=c;aPh;Fk?K>WqXM38{V{ z?u8WhKJFv5pGbf zOOTWo@us;&;-H*3QoXc+?NRnsWKsAXaGUv6?=rL=lZIFj1pr<(B51A`$eN$M5Nb&3?}uWNG(KbkL5|Ecfh=9QKObup__WMZ z+IT7vRk^UEaPJ_mncM&qJV>>Np}s8&{e~DvA`piX$jffUJ)FWw;Pka;qzxc%`Wj9w z4qx^ROw>$NqIVlg8Jgrbzs}p?!#(i2T^Zg3IkLtR91e-nQkxwR&vUn@%nW#ix*#9A zT~Tsmf1QYfZ2@_xv9N1lo?qg!Ap6xC=`F0T5k9=k3*t3%cH*8U=XQJ|mlM_=W1N%c z8|?~Saqer`ca+uRCb`E1l&`f{v-~o`)*A#tXel$C2DjjHCF<_q?GUNWZ9GeuV41&Cr|n%Ns}0(R%mD_fAhSu(V+*|IZ|@~!&Aeqs5)?W`b$y6*_c1)Npoz-m93qpu1N15fcKnX;~04zpX_vX z3(s=UE>zkqpE-Q@qhlvNDP7kq`aCRPFNavU=tTUDP>P!CA~{mxfVkX8<eQe;}*>v2n?u zeMfoA<5iW9-OV3Jlp3eD? zTHQ8v1I;{X_!%+!g8$$D=l@$qJ9tU@j>X)ZRK?BR26An=Iw?WPk-=V@&&$RTgU+?N z$;u!!Dp}wpwCd*Q&Y(dX40Nr(-uu{#vYVQ?qOArA3yKl2)@Yd|bV-mo? z@&igWQM{|&0ggwQGhpIbt{F^A5s_vbNS5%hTE^_wC?|-2z)F^h84-iPzsUy^hTd{K z^h|tL4BE8wlYucv-4zHq95^}RsB%ZiZOOosK;tTRBQo$kF^;XUdbQ{J>|1xc@=t$O zq|h?yT_lh-iVlp+YJO;!{HL_{O@A6o{4?I~t<&7M%s1KNzYQ0tJ9XN(A`<8R6;X6D=>T$YosqHO2bIL^zbnxte&nw8R{v<*lSR= z_XAxtUR;0C_{EDEKit`2Av10)arAlS-Bj%O^jfi_E!T9iJWm$x%0AZu_rZjpBvvBwKUQIYIo3t;#wJlp)-jNzuRF$2w@{M816ASHNiPR z90w1V_U0k;*5V|Y%@Xf4DhrKK4RUa~R!31fNhb13i_gIO1p9kN4rpS`AYD~Xfo$P1 zXuto*AE2}F_RDdQr|2J`VlAkef7IUCqZRY5z^{KC<})~@CM-t%!x35$6B@l+$Kq-N z0e9roW8hSb8xv03shAf5=ORN!4(-s@kem;(3P!ttv8=nBPda@Inh;k3BOU6;s-*U{@LL-Q7U z`SIkrN*AsZ@q4$7M__mok6#=&PH9F;>;zmjt8}i;lv*ElA9=$fzhKr-t{j!c7^Np( z8&rynA_?akl%D&sjg%VBW8{OY<;?pF$C;tS2E&Cu=NYHK0Cqr$zk?q*!R5rUL)e7# zEABfuQINkH+wQW&@t`s;t|-wU>a6|&!uPD^}>@tPIR&k2~*Y@B1D!5xubl?)Og zf@mY`%;R)%?AReJVDzM}HVV{7B~MBbfIQFjglkr8kyP=;)`U*@H(=}$d#C#w{3Qm` zo)oucei2|p@@kz?GN*xuYLOV1c&v)&X_e6?4rh#}^bBsu>b6Fw5`SIsT2Tw=CM2_n zp%!s_he&~l^IYb9>cE)@=wEJF?H}PAaS3sMw;626>jPd2dG8R-Bn99Ihi=)9GhODz z`-qZ5LT4G?c`D!d@Cs8$n5dx^N|1VYbjbO+eX#xaqwjY9ez5&!j{^m4{6DjJcUz06 z=U5*MU}ky*2LM)h9)qX8d=JGY1UK)`%R(~Rpvf7l!_!3~rmw_pr+E`;0UgMO!wqB} zXy5?T?7`Nj{^Z~&3=tXzZGUp@%rQw|6_mJd6g`dp5Pfj}|Fcg&eg2tN0U-1TypA@g z!q(`nCGH##7LkoxV6oE0E+r~IOAyN-ZB7%kc1UYuoEOgd=};CdT&!_G!c78$JWzbN??hJV zU=Kr?!W+(7>SZIij1(((r@%*?#Z==k)=3z`m?quP8yzy!y^Bdm;l{U*Z&5VC;OsBA zQ6HM62!Wih)m;@~LlB2Ij&zS-f;${ePm7b!LZ0_(y?m+mu5zF7-1a@y0X#0dd)?fs zYtcHDcAph_UNwc(qt!{vP)d3_)NPYW^MGi8MZS#BNY+s$V~OcY@jWYFxRjSu=){rh zhgmk>(Ioi+hHG57dU(v=gOG?WccAQfQ|kcc@nONZO%-(lf}WfGt;yEY7U#FxXr9!c z*t{q8u@7V-jn92}B&yKWJ~Us_4R;e1NNQdeM@I z%zWNT`tW8bI;sCc&w*AV@dpA&@A&u3_**|~B&%wvA88yk9DJ=ZbP%2}K0XWfOOZ?y zPzOT-Z{C-|Mg*QtTh5DJq_Oojg3|ALypEIt(PY}pv&R)jOUQ=jTT9Ri-*BWQ#$pQN zu+di)%}(VKBe8%;mPL927kn5jL7foG$>;gm)ug$Lak^S3+h_D@nPm_cj&l{vZaCq$ zn{3!{Kkj6s3Te73N(u)g?^9CtxtlhRB;Y+*)%sdd&K)CZUzClORjE&J*8r{=UDvcW}J_YJczD$K6`6Y46~h2X^6)ftAze+#DxI%v6zF(CSR`$qG*WdcDrdsh8jL;w+;%}M&H-X{`!-WRw zWTm(QKFV|oE^g!ScuDa;^1h7b?!H!)>f4u;EP$-ji^+7k8gZe?B5@4zN`INIwTrFhvElnz2Yp$l{9@p)_8(YnpT_vY=rITu?Ia=|yec;e#l(lcdUJ^@u{9_UWz@pXPPhDr6q<2nljB~YP=kN(Maw4E- zrjBM3S9(s%N`CGisfusZiX_pa6da@q^t17GQf+evOg|x66w|Yl7-k{oS@;?QPgq^z zC&O0}%*P=^)c`zES&Cm7R%9?rgEO!la%SlH=bbl5eP6Isn%Clyqg&V^W0Wy|aYCMa zo)@5Cj<(=yaBTb3=hx|UyaWgxc6oC{n(SxQ+u|r3Tg~mQi9Y3>-N0C=DTG{?GYqoG zM|E6Sblu!PoJ4=lS4g#vMY#RPF#}He!P?OFh$gf1s#+2;gHpe&+@G!PWi8HS0}ov& zD(nFC8;J#p;gK-5YUrwIwcG&?Eh@E^Udv>{UStg@hAt-K zExds39y5+9ZgyW~n=^;L#mT6ds%@iUxPe~31o!puOWz6@$=#E+X7xuy>o1!P95q`w z5)1F~&fyUR>fc$Tu9g-`Jaz`!hsY*~N&e;$vbq?&H9Hx3NLHH_?=ti4hhB&Q<> zcJw2c)M*em8zFjUPFod=3p!I;v4slu!Bd=F4)=&lM91EA9CTitOT9&B$N=R#%?l^MN?$T-u`Mo`fDB)PCf+$n-r6jLW0|;FJ>^vB$`H$F0%nX*!)K81+euXwRGpViB{jrHaJIIqB<7hunU{Sli+zqCSP^ z7L5>slHtTDz%KL*fLJ@k<%C$p4mCey3wJo%0GWz1rHjb`?->G^IlkFONS z-Uce9%>qMjAT6I>Gkf0G6?=6|h*~~AFOu>+pU=YCDQjK0nOep?VdZK}&jcia8`U2|*R`1>KozPo8uU zpGhtQUs0O`53jf9moa3w@#3|l#E9t)=g=&*Etq^zk3pUkXlh~%qLhi$jf*ia=nHrN z*CNxN>6w$s>EW7o>Hxj1TKYt8SWqcS=-56v8&lrn5+@2ZRDGRelmaZ_Rvcsn~$ zsr|5z_{?{4|MVcQ4q1cO(o^bVcS9ic0~GH~JE$=wjhPL46!zV|lBBvNQ-jnHPlL#eN|b}U!(`La4JIDGbfTde_MTHU zJB-mm0ut@(Pd*S{c~7r9NAK1F3aoVu`<1)AoW#@j$NB60tbCj8VZJlg)yK5y7I0?; zQ9Y}=2juAEjHD%xH`XyfT_eMR6;qLWLuU0LP!xTuCtl={{bpW*;WTqy1Uk*0>%ayg!QI~ zz-6tu2+m`xYPe0!;Pz;GCSFssp|?jUsrp1;k-Fa?)Jtz4c8h%3+KHKaF)*tg7H#iF z=sCsyKnnu0SC+$?jwNU|)KRD~WhbG7R8UPY=da15Gpu?Me?TcKrXVu6XX=fWf`@Ud zt4x4{vPn3EV{T%sO^lUv8YmjvYZ=~a$nnIhK<=gkseudYO4thV>HFkLAJ*Koz|c~k zHAfeKOsp}e@b zV@|@3_#1Ors!u6qV%9MMxmk9Te{ig@Q^@lOaoEC@PHr4r zH6TzR z4}|+bxWft85n0)wT36{%cwZs2>2POq?Mw%yD1&u^1oah81J1bA%<+$BtbqsrYwlC!HX z7EqF2z)%1O{EJ1r^iL>6q^%8PL2=~X8y9)VeaxasSK4H=B93O3?F9HQHKm}Nvhs0!n^Oz$3k^WjV zXDJ(=A>%KBD^W}cb8pv=g(J3f$)}e_AooXj3yy5UAO^|lO%HpO6~FUTz{P8H(7xuOFI;Wu zZ?oYP7`lC*!SvxM0j|Lh@5Xzg{Q~!SFbR6Vk#6N(L${(irH76Chu3#VhgQlw7 z2vwn*1SQEhNl3-1rWAHq(7Z08FaQ@1_BCRYDb*o%(L39qALS|Yng>DNTuZ*gXHhP7n|1vsyb3@7m8{GKEsagv&3CPhySxv&)wMHys z)@Gy~YV4L#^q(M!#k!;cMFsvusCMLAxB+PgMT5Kho#GX{;%1j|;U=yERUuEuNphBw zQX1V64>6urSCuZ{D9S-10le^`SQKLl2=s-6_D~Utncu-88y9HwhP=xo0!t#S^a#Tl zuEtB{!it0vhsa<@R{Xw{6WM0oNzNOF0N#sZ$}SpF_;9m3xoi^8NQI*x+Z3hwk=3ktV0^J9N87`~QfOeo&Y}SwdzgfY&F7FzFtn#7bhB zVud+XR7$`k<8J$&p%ZmMJK@FC-+dP0G?G@W$}7YXq(07*> z8Zl`AThHE~H2vnr1OZJoua-XVjCxdQr$Y$Do8&MV#NY|El*oeSvByhA`h+*u>G>*qUz4TsGePBG zu5WrvDmU)MDSQ7=Vk_}D3w>04o*8md@frZzPH9Q$+0z%lCE^4={@bS*QBktaFX5zr zC8VDb(btk3O#VlZ82PkxzUU@9eBaBDpY{?SeXq9Tt{w<+qQMNE`^X88#`c!r0Lf8u z6rn%aD6)Qi%?V>yOSjf9*h2=jSHjs z)7lXI<6ge-qGnDspLuM4eWv(T(-nFZQm;ylWMal3_U&6u2(9d9$!*}hKKW2>-q?ho zs_`*MAznSuUULYxfCYBwJwh%74?N_8ecU_Gp9aVa_A||vsJbNdEOqY+2xYl2yoIDz z$H~xw@2H%ePe^(O9yfN22AEFC01^Z97=1V3U3l?3{oa&I?ws| zp%H;?FH7bvIk+H<5~UbgG4(5{Dkssi;+AKn#QY7W))FGd7UGn-fb0fP9ZNK--{s0k z%?pMCw}C0w8r1SOquhNZp(9X=2yKzO7kIazls)n%qTI$NIB@4Fx@Tj{tS!YU zm-92@9+%u@$SXBPen3|ntyHR-r6t>SO1da{X%{D6dW=&q*^#LQeq^e&T5`Pxh7@`_ zr{e)BY82RB9IbGK3f?Lj^lR*^637)=3I--nGnriwn*87;nd7zhpyAZ0iBXVa=|5%LfwKA@o61qp`1%y78#Ih0!NYR!e zvtnc*`kKGpefyFUrIN!Hno*J7=x$R=G$BKQOM+Rd5erhzEP{XFjs(tIAe+Fa7=qD? zTkJb#po`I^=R-2pXLQEK8k&x&78~Xd_~MC)+!e!sdomC>0*Xp-8Npf9x&X(n#QK{+ zv(~_V`1(nRiebX~-NT{r%v4%XKqRQ#^vp-3r`bh5zaTTMD@nG+$hO{aSwz)7hWL8kE34)ecq8`~9ZtfJnahgy zPE*i=z(a(|+Ygc`pD;8n?n^&wAtZ~A36)=Sh>S}Yi)02iPJrFV!#NI52g#8sAzacZ z^-5h7f^X#7qsNeF<=qLF7c<8D0RLis6<%(TNnby$W=?@Ty*~6~ZzW!7r|Uh&ZM13h zdHA5dCHxFOsl`_><;_qy8!4~p&WHlrSB@jAzxz>L^hI zZ?ay|sFU5nL5siC_@M!hR=rWJ3lSr@|^Sn6yk#wI7%!f z?WEDs)U(E8UECObNP1@b%~=8XjTDg^A)xjQGG3s5x|HdZx@7KQ$&(rR!jn3F61@xD z#ef#`RplsAk3H_lsAZHWCgF@zrXO7|n+U0+?=<(=|H;Si7_1FbpUL~q$)a4mPNx0n z%l}7gGhUF!CZp#A&sZ)^XN|a{lZVw2so_ji(lNG#J4AaRi! zzd=7wt)~o?1k5<|;VTdv+rNZ8)A-ta`fc_;b2Ka;`$d2jrZL=rXHIw^EpdOR#I-Tn zrx&Ly5EMtzC6qx~c{bzxJ8+eSi#zioUxz!f@Jg=z+f5uDp*yMuLIm>_x&P`5@I|zS zQ)!Cg47C@f$unhnO4`cGY)SB%5FEO%e;=omsTbDZl7FxrDS*+ahcN_S2WRg(s{J>F zhc%8&5zyF`vjt-wzpKMC!^43m3Kf=^dWjK1_Jw}9=T|rHl~hy9AxKXLZbL5JOrDFA z`A&jZa69mi!AtQ@Kd_J~a9s{eMTRBAsRs)4^&%N>u-MXSv`c2&Rm8cLu|{jQgO>xB zMay?gz_CBXaSqI(K6o0A?Kfs7EC`P}PU7$_`>!7+aO+B|9ke%D;Ddypw%ugyb&E@} zVl_QORP-CPURw;RAOxVmXG1|+s5JMdwoh;0uUl@|=Yu!wt$KCq4f~>P!!~!5CJ-VC zsjW-Vz3r+`+jrGPufpRXMio7#)Vamh4>Y6fd+XhML5a%t(~|_Wf^5PjO?w$Q50~xGepII;^n~1au)2Y zmnN^~q4Y`6XFD=|s$+Xa2$;hMX2fz@!uC~hEe0;G6pkIM*YbMc73%Su&0LVWt*ml9 z*n^$3L4)MZ+Y!(PCGv>YLbJ+Ee%b|^Z&MDs{e2PJ(yqh6j3}>^@6p7&~C-FSara&`GcTD0UU}}4a zn?nsXRmz*Yd-B35gFFVa)f~|+H0hbW;!{?p_2q;Ag39@#{GhM?1BZ}Pi z8&MX{4>6cO#WtR1+UsflfD?ymCahu+a?+}q|s+YY~8JrM{uevKO2y{4F8 z&Vhzo_}d@3_AY&wflcgS%sl1MC&#S}Ni;p~?_L!K6foY`wQ78<9ndw8Go~s=QWvvNHH`wVEV4A2lZ+=Us9P=B#ZhY6=t-=TU*( zqRgJ#0yj{d=r@h7g#x>03!*gunSxgm4_Y)Tw`+d%+rHk1r3M-_nji8wzD1SY2zoho zB;e$O9anz7182E)MzMobot9R3SGL?wJ4{1=TrJ{k3@0!$B8l4JBOF0_0u|hK-Mh7o z=(BF4E-Px+<=Y_WjGFssPRCkW`qrB z<(3b@;UWCWVxI?Z-e!zB-~2#d)xRP5>DER9{OR3;BV88qCx%6llia=4Fu7Lac++6T$OewDOe)wWAba)n*$)kNDjhSReKI4ELG?I9A3wP_4Qlv{==oDcgGGf;DJivU8JOLD+4})d z_!0_kRxw68K6ly{DS4~`B&pBX4E2}4j~I&>(TZ!0ynW|WV^cRuUnH49l{QjZ`wCMa zJp91DY0V4%P9T-tPzAQ7tr`llhClIY^!6PY^-Q(L`0_7*t3Oj~U%hNEx^%O&9Jp>t zAZQe>IY{Bn-qPJOL7ey;Ei&q6YoLPi(??`LTHuJb4|e%Hg_6g)J3RBVt6(5FlNwWi z(J8AFUPhSy`p8@69_tB#+dHN`=<5j$6D2T5O-=aOH!$M84?q+c1Xf!IgOQ|CPwk6= zsNeO^1dHKjqd;`uj#0eAcLN7Ng$LqWn=dRib#<6DR-Uq8hw3#KRag*81UP4`PRtmK zBQJ=uFo0~X91H-_pd5YLLL7FGjZ|pFMxYL_8j!9bs3wNuxhef7xvB}ckm|ngjtcJu zn_W2%4(xGBBY>4YPnV?fV2YPvz<1xFCQe3AEMh+!fpHc7*+XEuQM8*UrF(=wC(+jx z&D(2G)W79#g9*`xnkJck_uet3kiTWNRVj3v5yUcr0@9@MxFjk>ssn1+NB?0Ol$xKZ zJXa$=6rdDFf^4m4PhnQ=j9gP?cXeN5ti$WdAp9}tg|C2JH8=(}Ar{7n1S$rjzq6wN zk3k4e&OGX2DxE@;+;Z-Y&Y6JH#4v$?os~`_#Lgn*kds`3A|R)E^twfc8RXV-m)g&LnSf%Sh% zg&N;llI;A}7HZVs=<)gif8G4<^^osgS01Uq;#0bI{MY0s4l8#A5Qt)vHesTp#ukA> zB!!wx(I!yrD`IshGn}rnDeVftUvL|)DL}}sODQaJzC4ek(U4k+ z4U!L4d1a_@f|0MWju0HZ? zpbxG6MBNRgvuK;_>?;9=O!F~E{fn_hXtM-QO!BMvm%FHP93$APF}Sbd9B}L9#zteT zhxyD8)&9_6(AkiI+E_LJMf*6jDji=p*!UuM^5=4edX76EuKqAV>fSMNb4C#_Thc0w^~%r~r|P zkD_#vOwe*qS{}J}lK@RH6HpFL(v>O}lqM4+sdtbhr_!icy3KQjGvZ4!)_;-aq~B`s1T{^N_SJvJI82yi zlm=2z5GZOkvc!9z5#}c(CRi;nYfS>4E+tU~8HC{O2C}EGevyDjv2oC}2c+GM>*5T9 zHL=&zDC%0H*6AZ@VuO@7lCm(y{<`T*D+K37p~RiwXEZ9=D(VWu+$h8NbI>I~WotCp zHOZL-RWhC>jurj2F;_1tapdMgMrXU-YFq60$`ha(C-oR-KS-^{vn_7K;VLx+BzZG< zyM2$tN@g9~Zh5l`2kL%rSZgSWIT3AuI2M%Zk;$y|c%O1vAUOZ{$KlPp^B|%9A|CGU*e$1R-+zGELY&lfD!2rVg~yrx%$$uoERqwg7L7f zoN+kG6b^$^zcW9ZK2p1(Wp1@Ds>$`L=J@7wv=JF&B~ZQH`^it9Ip ziCJa8Q?h>6cLiHR18)LofJ0$1g*_g~$L3`%C5(U5j~Zjj2@5<3?3kghqTj}8JX{{k zM)!RA%Yr)}-}i`WZ>fv;xLf~|z(4rGB=bY8^vB=sZ-0-z(R$zJ4sGJO9_$@I-|O>F z>gL>iRjxaw|JZkB{lb_1>E4yMGZsWWWm<-7-5-&}$p4XM6b|=v>h=uZXP-ia>!<}x ztH&koopHY0n24k0^=)_;OR1=&EG1eO-#a?yI1pLBzwtG@9(OXj$2)f2ZTaR`Yn%f} zs@@DT31|(9T!$Dg#jFm6d5l|v<2Yr9Ny__!I1r%Ag6^#)r>CyvH9%zpj_D+2II<|S zN}iD9Tjg`$4YcL3I&qK0s)Kd&+6U-Gg#}1rM;r>gVHrT4k936eZP0C@p#ZOJC)yp_ zqZYr$fgW&JwxM=`PSLaqSEn901_K8lA8|Or&FQUZdVOdH)kJ!&gItg&M!bvs6XeMU zIdKV?*FEY2t`Yw&pvb)DJr@)zVp0P7S`2#aHtN}GPTN%j)|Q43xH_nqW5Et-5)<-B zUeZ$x(clr#S519_Z}&+{ynQ8a2Zq^ed4srbXRI}bIQRF#C`&F?oKg8EkYi0Em8+Ju zrsEg{7^*PFw2Ctb?>t$+yx?y6hC$PSuRy#!<1(3(Iz$_(a>)qBh*w;5JV#WVv0S{R z>ku84W^OZtcj3$}$<*K=NgHqp_OoP&(9RvkILI5)g}hGR2W2clpR8)IDNe9Xl>_Nx z5)Ne6gPC^nP+Xl$o>{l*=jjQ7;c9tG2&U%_Ru--nqzEaJ`PF3T=o=fcHV5_hYj=4i zzivW7NTZzt@KKg<8#IRX-GI)N#+tMuwJ4^TnK@t`ZT&sSw`Z;|-4w(HIGTD7uUK$i zwUhJ!{<@>Uq>1S}9LInLRpj#)LKo)L=q0}}P(*x?!U;?rNGUIjJ%*)gC60vnqzz^e zt+3k(VEp|9L@d$)MGX4OXjO_dq@t0=Q2jyv`clIgv?IZx&04N1Jh3Hyq4Hmu2nJS^ zk@}Ou4A6Wm-6eh!}jFT70x+OPHF~rHml}2 zCy^{5MiT96l&DwAJfO2?tfmRAG@5ZC#ENqXNB;?w2pMS3aB_%v?nYpI-YzgQ_Xx2P zXv8c%3fcGXH5L$!+lWDoVWqW?OTD2G84mwCk#eBWH9)x3g%)IonvltfpBRR^P8{oO zp(pM_hy1C`st(UCztL^LF-!OE4a1-P*%5tpC6E?u%B_OTx!g80uKLjfdlx})*7X|33gk>879Mn=>+I^14ZwZ$*jkz;yC7S|>H5$+@->0#-I<=f<=?ab5cCg*RW+ z-uGhVeroL*wGV?pK3$jFME3&7zt+$=$GRhVZ5d{$EuYz7+TaV|#!=T7@X}!Ey%VVQ zuQ}Tk0S%z;L9hAhIi{#wYK0BI4^HL~x(;hAYw(2zc=B;+9;0=#rZjPtOl*p)K7hQb zeb{?q1|@qT^VBmJ5Ut6^MYvnb06f{d++w+4MqYE!D`4F&l8|H;fR|2UoB`%^vS^;2 z8HIp`0^SgDuXO7lpCy~zbc^-oe_`PK8;GHIA_&@O&GRFQvcLKQgX~8IAfRQgoU7?O z9?f6=Mt|wyLeGPJXsZGYw6HENAbsf0)!@T4sSUx&&J|Gv4+ko zK39OFu}DF}JB^*_E=Ys*WtmbM6qC9_oXYSvV3JU@B}}|=G@fH1{xe|gB*KwGEY~|Tg&sV|*YV2hYKiRp>iX5ZMiKfKqz;6dqIL!MO@n$pL zKihu1A2+{#dZ%4en=H@WRxg5W0(w1l)`Izs_S#A@N+lNtjByZ-WZ$DgLvxLTfL4s@ zn4mn$1m!KTbhG4Sbq34ISp!fWnd(e?TkfSG1Y%lev|d6}#41wz%_5(v`4?A8I0(8u zxe6x)^fM#v6l4VD3vtVw2#Pw7keU=AKoX|(D>Fsq>O?r2!Pe2M142xU=T5|*%lU&k z?(-b46wq_Q>O)4CWCY>u+SC;>l*CvSZJr`Gqt3R<|MIuyQ@zkN%ij@;c>coEa7!y{ zPO(Y2={OG2-c3GYWf*S>OqBpjN0H)?jv|B?r9y($=+|4I9%|P#~F!ZVm zTO|R$mR@fKqza`KI`c6hgI9`hh31lL^gWu83GUzNJOs!MGDOP-nlF{^b{zZTqLEA* zt7(}SN|A%pL$LLUcVVn0A1EcwNgQMnqr9G~7$>M~$(!RVg&II5ot^;ei03A0#d{bD zRYLT++tJZwoH-#8+l2je<(QbX8SD&P^XE@x*iAJ;F9v5#rO;Ql zSG{1ZbbXcFgrfO;gQMyq5gb}H`xy6enpM~`$0omxSE~>)Q61o%PVQfe7?5x)d-uSl zGEM>Y%Rsm>FmYuXY>WEDZ)2Ogj&_|ap0rPR+*W3&9;fwVfx0KWVat&N-fM{`1mm?T zaifTQ+yPkpcoe>Z-(2})koFz}FfFIx!VY;zTypw%3$Ng|y7TdfnpxLo0*Mx9V0@wY zx6B*(J_)VRDwL?RieZz{7X}A;1UriJ)#NPST$w2&LF5DZ-OQ0_I;Wtq^d6bl|HUgl z%gXDI34?>~%j*%Lb@EyVPKF`YR-js?>|BNvDAuO(4&B0|nqRXXJA_BA*Hv>5C7H?B zd-G&>2o{d~VbkqQ$419+azl-q^(hY~VG%F?LORB}*uJulVv$G#Hyw=xLl2NxuB209Fd$-z zX@?fA#H0_hK25ds|DRyV{}(OWd&sD*ei;U)>Ej6|ZpUt-l3AFN3AY7m`&@Yla$@X%4fYAea_TjvuShCU*A^9DdIM=( zL(P3^jM^;?ch(Iz-XBeV0!x1OyzZm6EkkYQ8%e?vPR25w)h9y4(U*5Iki-4m#vl&6 z@`=g-o`nNA)NG=)&Zo=iy>@>8aHr9E_pHD3&%@5U@*;(vqoP;fkR^SX4!}`Tb&1(8 zTeCb$7VH3If$%{=unW`+M5B^n?IKMsDZK(+;rwNdk_I6=Z7Q6RS;QE3GV@6mDV2tF z-W5y2WZgDAhQt)eHRh;bYoePLenNdXBZpL#1{kW+%=L>9KdU=l+V*C{gsW{u`gy#` z)7$#B-bJRXBCW1KZIpbd94SNSH|k(e^H%bEaJDMalU2nIL*Q6vjafE}N89A!WrpFq zU89`I%$h8LNs7jS?>3--{3pD+iK&DFh`PsUWym^?>77TUq20wFd~3vYmc9VT zVg2oGuN`5I?cea_&`sDFpTK~)wXxfDG05Q`t@3TG_+S3^I(K5+TMW{8r=AHmceW{h zN9x|KPmM*W)?0s0Qxr?jR`ekDDqUs>dN@9bE9E+2GG53QvMFG6RY0^JuI z7Y>E>t>gJh=v!~U%mq`*_jOAbXO@;r#vuVqj@qzl9?sV+K%*i#L2A|5Wso;*cWe8u zci8s!Xg|7UNxTDAi!#{1L*#gM_G6%_U_UZt+Ryxdoes4*C7V+BGB1 z{*!ckY341=%r%IxPE#l3rDpUKg^kCvf$|lfqWecSwzU5UDAX@m zNgAUQH{`Muln!Y%l3-AAG2x~W&qEZsV2gGfkUWU2KZ@_?HV7pkpkrmo?c~-e2Lrf_ zdGqrjf4Vb|A&om8n9?HL=T&jkz0sw0zvCrwW5G5qJl+a2UXjs(i?qbCn(nkPfMxxC z?@oJRg9mFLnz%Y00G*l9cTPmlSEU$1Ab>c}(4%M-I?x)pC2|{(icBtYx_ZgDB8cq3 z0N}`nUZDRwTE~G7E3OKo?6Jv0qInX79Zxbh_CMA-r@qc*?nEu1XV&Csr?INWJbM!% z5>?@S$w!{l#3IPl*0p$Or|~hTQoeVoK5Z^ltISk0gLpqmD0*m82I_%@lvlHj2y#-A zq0{nAlMV)Y^XLSPy?Iu*mW0*{7Np^N<9~UJ1wH5;d}y+u4_cWNT=ffelsh8@Cl4)w z)rv)(1shXKQm?ngj}W7X$QX<1-K(m6&u3q` z|C=ltSBSvTxFk%*(D~RW{xt=ASLwIb|G<7FjvT8DEY6;FStn-uQrK+jt+G6L!od;G zdas&>njB%9+3_oJc0_h01Tbqv^5G5)4M#x(=LifN8L3^rIG5L<6Xd6UGIQS=x zCmxR>c;4%jwPg?P@H_EWaWi!87-mb(Gh$P@6sW^Wh{q9ylb~lDJ3iQ**O)j}Xs-Z$ zjKrWB-uhKgLcYRt8St|6s$}RyLaTz041?RnN1h7Lo^Ji_>9c2_p-drj6r2w24zFzo#AlNe%)G6$8fYk!;c)y_cvxKMe%ib+&<5Ri3Mjvw4w;ven1PUYrqPPA2n(^GoqaYL z4X;&G7+k_0eFeM#wF?AweX)p_{>hto*;l6ySGX5URJ!rHq!;$q|5 z8>>qCu^U^!8yijf%L%$g^{A&UC$XxPSAW_)2vIEH-8_j;No%og1i=jnU5VUbzWQJ; zDK07K_(tD^~*KJIg02Sxy{8W@9JQHXEuZH0B#Tn_ykbnrBN5ctyw*Yrt#r zw8mvn6J`RI$X-^9 z69}n1t<3}Trz&=gx$Zyo+1v_-z1p>fXTe6D!Wwk zQ6y91C@*Z1DQ&H!m4ZNkj3E$#iU5+ynyLNvHTL!PN!IP^<{l9sKr(gd&N_2iNrYd` z-ObJI^0Rc3Ox+{dbwwk!c3!$WpY;EU0bitf?kQc^&%;q-hr|;9oDusrwirSj%Y9xa zJKH&1&#KV8wGW;fFEI1uN9$3r9^8j{gjed?5ID03;${daaH5Fbx2_?$9=PisH9@6y(pE`4r5~3g6H1{_cr}?S9-8{k~O< zpzq^tW|U9N?MGQUk?0-NHKSiC$Q{LlCh#ru8h>TU!3b~DO_2hVc{Z8cbam(2N_5q= zRc^UWDH`-TK@@iYHpSKwgcx(@1}ND$Ic=wgIK@RanYq;&Er#C0mn5~@!=jS+vyUSD zHv(F3_%MCXBgoNbjN1q~o%=VaqX5~mu5(x-f>Q^-I)Yh~6ym7-#UV0(A~WV|IfWoj zm5t5)>)k$2fG2F;!7|UenbF!A?)H+2}c@l zLU+U;0?713Q)M}OYEo{wAS&RsakZr}qK(o%2xw_<5@Q~we(<*^T6_aRj*X9s#wV%h zbB^`#Aw_hV5OfRjON#f)A~8|HQ|X?`s|MUFi;ARUX*|w8MkW$tOOG>={40EOof;Dk zNdt(G(bV^=%PPE}s6vZX;7imo@XN!yjF2NN$>OsaP(?)U!z1K4^4jilkx9`?<+x&X z&2)wijK2)}%J7@S_ZvJypsUdcAiYJc05!?U23vMBb7jISIG?SE&zH}PQxHu>GzaNf z=|mad{lL5SH8ZX#C00b~*76p|=;g`RpaR^x0E}t27l<=5*!f~Q<8c{tt{L$EOvW{~ zK=x3A;`vM-*z_kHGmX0uV5GK=+n)MCxwpk}SHb?B4AberCz9e0~+6=fAyN=y!u)@=E?X@m661)N>QkgtGOs^cLOXFkD zEMUqgN7NT(HRmTK+AkdA1tc4SwZ(DLFgquO-V)sSXMb8ounxL^nQVjwH=3j;q=EHG zP7g3LQKr;}r$3S%(c~IC1#~4jNI8gdLNqhVLw=1r(LXP%c-B1D?%7fSgMjuC{P98i zQ;PDD;e7y1o{eR|oV3~?a(N#l$xGB(sz*Mh`06N*`^8GGnC@yEw$L(715*|?7_dX& z{3i!qNsB!;;LzK^qR<8!x|VrTi5~z(qfaQo637*fu;sMTqu?=#Ll2W8K^O<5thd3% z^F)6N`bHZEqDta9!+JJJ5x{R+7n!IWNqTs0%|fVT?g!jZxzaq}a(MQ`=x^1$+Fw_^ zX~IgzHBR*18Zao^_BJajf#r;6lKM)HFT_N)_lOUopjG<_tI}AJ2Kkv3N`C%3YA0Ha ztDw?~fxuxUvl{OX_q_)YOBj^pCyxK>M!Nui!jKXes{q-9(os53*&iVcQC#ojbgqxc z$@jHJ*xm{!=Xg=<*6(2AA%a9Dzb_Bf3LJB&f?1TWZ@DP%7*hpVo5;(dGsu4ivXji$ zLU;VIl zF+wQ&ouAY8o$;nbQ8F|fR_4ocn_;v$xQ?c+k!T5YTnMhKW>_ktz=ffyq~YSM0;(Lh zYex|R)6_}%jtLNDgG;X{rF(TrLLfgz-T^)1lIwmklc2xJ*VM`nKLy9AZj`tIW=LOn z&6-L#2~@B}*!zRv*L~{H2&OEII7X3{g>?`fYtF`CPn^D6NIbBwDD!9#+MiJo^?`F; zp@tB@?~p6JD*#VT;K_<44ekIW-DAneRMH)R^W3#XrV%(0n~*yLp6)gKQmMxhPeWSN zQE;(5Icb-R1Ki<5J##BcJp?d3?8+_aiq?s zcmD}r09(lvQ(6f>ourFmc+osL+|Ca_(ZBS((C;f^*Klc`G0#7EAC5Scv%D@5?Gp-M zZiH-hqv*}A ztD>ZYwN&L7burSkVF2tnxJgO~`j38Kgw?f+j`2CdCB@4p}HwZpL8JSLI>HMN+F%ZdbfUeyK zf#-9)pTs0=T30h(hEF%zo^`UJTWO8;!nocv0K!LktUb4bwBG`#V!m5U>b&Ph+qN2?*nHbR3P!c z^Zfff1bkgfR1A4KP)QL%Fy;_}%gM`EIu#E6SMCfO>N`QYPI7_$3-SWEYgAYS|62Ei8n zgq$#J;&d^1*+k>Y68U}tdBLjzpi2Ti!B7liI?ZeVk&zkPh2ixDa5m_9!;u`_Lqdh? z0%9NWv#lhp2Ppm)_s*1!jkuM4J;V++y9X`NN9FZ7JSL5(r6~!1iDPv1R@-x-QONte0I_-H*t^sCQ+ zccbmXz-*LiwD?zp2XMQ>3EBwWk{Btj-kyY+4o?gic@s*E!HV=@wv8-!k%V@eyvali z<1S*ubjdx2HUzKR=4`TXPwg!r0HD0E=ag&X0F;#CwKAM6oNW67es}*nJbD3{(oHX7 zEY;JB8kpm9LHC2E3^5r7*cZ&xpZr%m$@3Wpc$H3fNw%ivh0m>`&bt#9nA%%peM_Ce6*XrhJXBuRiK7d1K9ZWb*ggLcvBJ55MgDWQq1RyIB6bC0)?@p9CpCiwe`6rZ+OmsyQvjM<+{-TwrEfsABK z!Hg0zBA%9HW4=owErKy8C&oV5>-+d_rU%tFU9Ej^Hgd!4r`0)f7z1?vImguZQ!SMP z3?pu!`1;$U5)F}yYpy5~aA^^^cucii4&GqixqtUw?|<63pEmC58`o{J=0m|Xx>Sla z_E9Lx`*qLk4M7f9@6Kh=XbrUys!~WB)PkCWEs=RE44YQe1ijheR4iQ)>$OBf-p{M( zM!M1u%V=UOfWCsDsUXa`M43wdWfW%HFKnt{QpUj#3OWKGm*@4+<-xL1E;uqQAXgF0 zk9Ihl20=aBfeh=aPxE&xn=DkFy!Z3rzPnNnUmhMD4-k_eF9uSY^9-2;E11~Z z95CH{8YHu(H93c15;>OeAefC$p&Q54?VEhYT!<%Y9Wr9<6jZcBwY7$vw zwZ#W?BRweIE8~%8D~_nUotrnKYxE@u%s>3Z|2m*&{Ea)sY!&9V8Tbbhg9;VG%{ zYbfb+9OIv1qGKwt_I}VIv{|I1Jjc`pQ;L4t&j<;OHNB$xI&%wp=@>g3XzoQ}!XUZuIyYNn;^V}{*bcyK!GFZO zXTPm#q7N$F(;yWMv2B!9@NwxdcUn*p?{l1-@wsi3wfVFv;lhdEpEJlI9d^K3ds$06&K526SsR~0~46k#mQ z3cT|*wPou=9zU@PxR%eVJR3u#BsdZx5NJ=c<)+{xTW1w%y(nv`43A^z#dFUI&O?iO zhZfBod^*8Bk8y*ZKKje^1j$H`s(A?>i`-x`$%=EJ8Uj@DH5MgTrOq&yH%(yY@#R_5 zao)XA-ftU{_9x}}s&|RWBgw?WwTwdZTMI4SHWsU?wRYq!O@aDAq~_KzreX!n8ze8) zlSUE-W0(!4S0|sG_PJR(Jd|}A8CJS2*$>(64|K*AhiSz^d+Ao}EFE5+maoe5`fYJg zRb>^92?gEZ#iFZo9?Ezpe8__qMyy z`|a_gr5i8Gx!5%Vo38~kopAa{aU}>c95c}7;rLBCKO#4cCcz~3aGbnA>}zmEKSvV# zw>elTOd}q0@E(*L-D=^_C5v}o)WqTPX$liw9P`gOYst;aV{_!h)pS+-Zyl+IZhIRx z^8VaI(w_hzEKd3psQ$>14fj#S$#1QBVUDSH(76?XGT7Ta|0n7Lv;GiM6KrM!_YBvx z?px}}N-PqP4{U@pS$!c{PX)fa0d43)Qw3XITSh3st{TzkraXp#Ou)jJkMg3a{9#?v zK=RL#Nsd+uy~sfb6TJBLCOC`|Pl`JO7d;%XjS;(XNFWjh%bLnLa)JJF%pBolV9)iqB$5lsb8U?LJ_+*&}7&cnYCeJEM75 zf(4n2QKQT;xxx(=b+U5Py=rXZyWX}g8qrI)(J%-3bukna4szZCW((O**q77|CHXn| z(l@u+)%*Yc7rBt_7A*r5W51g933TP!1XwvLl$Dz}C7%X?4HT(@z~hz!8i#nmK0?qF zpfFq)lyXJhDtZNUsLCWt!b4eO!v;p~T>SZJJ*?Lu?7kcrRSTom7vujZMFXd8_zdkf zwTeG?CYAp)ftkZ=ebe`zmHYRPS_xaFPddY0EsMQ@Zl|x7Ojzr_blC~;# zU#j;D15edSs`q=MdIDOY5AR;F)1~EUVP;jnDqn z$!M5?^{DH1m&SjHm`A~@v`ua9Jiq5DzYQUjOK@;rw;m5d-ZZG|ZH3g7vrt(|nS#HMGHw8#uT3Js(I zi{dy<%_BIXEIcVC)OMT<00jj;W--NhVzSCtiV{ycHe}qYAN1RH=#%rHmyoz5q%{K+ zc`XO91)rVQWEze2Gb9y4Yr2^eKzReuG9a*D3{GZ)^KH9Na8l4^ciu18NFC$vPgBdqWEq z9H9%sS&{VW-7c7hH*rrOy<4Uy^&J`>-%UrtrC%_{~V3hX`BhvKIaQw#BeO4Z>8Sc$iV;J!g z!|0yp-ROm{e|u*;DX@N`ht}B6$JRAZ+SYK0i^Vi8@D+}3U~+SC0spgxD zP|ay(m;}$HiUCP(1ceLwR?fRYG~8Djf(m(YllJ&jMIGDBs^r09H7cGr^nHC zHeWI$fH!S~kX+!8D>^VzVKF-0Pml~g@#9HogN;dOIE_td3%@OQeDwDqlog84C^X0e z;o6wSj#;rz)<=#+POFdR5?loDMY51GnsG)Q3f}*b$*ke~0!17w`;JBag@`4$Coo2c z(pJBJ&T=<+Ac+Yh^K`__)?S$P?O$ijoWVNyGLxVzwn0(p;K5bkoKEfiMwFgE12_@#k-Gp$Un6H&mn)Fn2n6!FM>_bgC? zJG*w@mlyb1bW68ZUSZLetd|W{bhjf(=@SOCLT?Fd z+_8pVB;W(l)8@bYnnVtF{~F{Tu0!fS2SRs)%0lG-Sfmq9AkHA@$>x8&J=vlte9-x_ zDy$h{>9bX<)}g&^H3F1c@lgwVAJCbJ^HH|N*r@qmEGWmRuGLCg&g z@F8Yp?L@6@%D~Ix>i?sxTXHt*sO$)t)~*I+h+GQEq$HN&;@Lp!MkzF|TUF+XPY|Pu zUJJ&wBo(Ad`RKEaE=l^h#In%zm~WK5d0%Fob#Cw_^G@ZREvT~gzq<|aVw7bwh`H^b zXT=M2xfp|<`b*v%>C9a?kR~CkuD55G=aPbX@D}g5Q0aTjo(Lc%UsYhvAwLMK6?P=z z2!%^Q5JUu0j+ZKiu*;lKUxGy`)W~x4UN0+mn=ADiQa?vl2;DfvD6K|(D?g|eCbyGA zt#UZrw!sXffJERHWC%+S)as)Nr6A~m>F9ImEZ!A7b|Rx4y;N9Hts=#Fwy%R*u{^^K zJTl7mKxDuZf!+ni1W54yBYj05*#i-)#J~l)59j7rAtu}`cm=dGe%@q$yLo{J+*emK zZ%|=>NZh#~hl}v97mn~3<>-=h5F(A&|!*gqqcEfI@6 zP@}wSXc6*Oo=<$Fi;vKB**=}h+Q7*NnE=xv8??-Tq5Q_@AI!yKHkPvwNv>Bs`L3u; z{}Ug*6(4=l%}4K#b6}Vtat{f93bDTM`)yA*Hu&Z0|I7aAtdV)B&5E-qb*^U zGgbe7+!?w@up1?-YxJQDKP@$EPzmE%aO$QC2MCXMlrt929=S-d_Z~h2DDf|=bkV6K zMZYr4mM7aKXf`nVe`5LnMOc2TsCR!1OLmyqw07HKsp4RorH&Lv)?gk^s zKP;v}>^^O#TsPcH9U4jChR1D+k~MjQFY@|A^G0SLpjtjp(7y*BfsH&!Hr8zCj!J4j z|9acd#sB;{xPbQax}Wx2zc+mnm@p56%-TYY<njzda&-DjBX2 zj?TSxgdZAN>Wu9#peglg3<~+Iq6s@Mv4TO&4Y)l)%gNjiQ3)_Z~ z_~9Ey-B4o5Bp|vz8O9$xj4~ioW~K*ZEEN8(XRr|2T}0J5>c@I(r&o%qaT8}X&UE! z%M}8quv8{!@v)Dkf@!3KBNd##!$KM1x4gvt$lGr1_3rA^i#UzAv1>9v)zszY7BHU2 z`n2TVx3SZu^|c*F%piIl6?`&$4OYCEc|m=F_V8 zeo(1>#9ltpQE$>L&|WRxXORT4wf59@rJwfcrSa!gGlMlM$~51y;`?g?MbFVQVGLIu z9no|DJMXpl(6Zuu#R<0b7i2su8{bz=FxafA9$g`eW6%k|q*OCC*yin%c~A%JvFQlV z^krMeue_Cwetb{!=N+Er?&|2~?mDa>%?urznxcvbY|%tLEqz=LO}38K9{I|u;v<}3!YRKdX-fmHF2Md=>*gcSpstj{4r7~f5jL7c!) zdYs2aq*4mk&*sAc#GZ`63&QsxZV?o@1W`$tMig+E@_!P8Lu^jU!nxLc7za$>7L>6PtlRW zkXio22L^iXH}TY5d#73#Juh2aQ74U3D+;mAie@exl_egsIvGfogwxcDZNkHS28FC2 zivt5*GQL|!-aKoIyjj`Bi`cAskb@b(;P=d~1=_4WSXc%$TN!^5y4D?d=x*Tkc zbMe*?jgr=)ZUT37jS=c#%I*|EOzq$%OVochD-;{6O~SHutgOq#=HG$gwOiePH}4z1 z=Q{KNt-d(RC>6TroT2AB8XG`b0WaSYGeZ|n*uv)W=^xc)XPK_$cjUy=I!tdq44neo zSGHcpB|ljfSFg^+>%}QK!fE-?CXGL zYtnC2A+(Ntne06J^P@+WlsYHM%eYLSA&iN}xS8y2tp!iIp-_!&iCsNJ{ z9?HMCdr_G1uPdG;DXyC?YV}4E-8=y#S=4NpLECXtcZ135iG7>J3;tERay?;-(osFn zhnLspl7kl$MS2RH*WVr`|LwmefBo{$&!0Yevk_#u#OQL#fPjX~OYFf=UrEktG?F z_4^*h7`r8yW@%CTmN@q#r=CtR1`^?QaNdos3#z=%9kL{r0;7~IsO06?yZXC=%wZ5S!+>prGqPqJc!YRX#QW`4pqw0GlB zCC~N7N`vHM6%X@#Qo6mJY)-QCbm(~W8pD(pR~aamm38xq{P{(fGM{&GsJ*wR0h37) z6nyjEWQL;8yMHXQn*5R~j)W}>bCAPB?%3!&rL0CB9YzP!e~EVH>UMCQuHC0?cJ6># zgz`?KS+q#G@_m^a*$x0OrNFy&W^vT5{?&G3{|H}$6Z2(75y)0qhTe2%^A~)8#~5tE zFQ@6u|MEJW`TBvCjNeNi-!9gLz(hhu3&EouWOq)mz`TE2S_n4LAqy(r-3R%cNcjqNAH`{5@$5&2cY4)D(vbD?wTRvJsg zs}eaJJ|%V4_KkTK zpEmO>{wtJ-UZ)>KIxA=8q&&a=7TiN6sTe@Ky0YHGWzMD8iNck!_T`Ke!daW+lX=z793>{?3hGqg@GUt`MW z($PCXV8NZCI9R&R(h0tTA?;AG4t`{kA|ajSgbx(&r^aHnZ>YFf{PJvuIj3_nFUfvN zG5-bosMW!B96duDAy^6rhEB$n71BhPCSf1i;w`K~T(|Bsgf@6!@Ne6nzt1Z`ckk!3 znoOJY0WhaNi`)LQzg5&4Wv%H?A2Ii0*n zFb&_RCe_@eHI~OXgbS`HI~(FTpvWA`11}nbUcgle(sMDjH*Tax6)bV|RxP41;gw%OaRurQma-mf$ z-uo{7)kBDes>;t}Oi|!)T4)m%Fcj7jtM&*%xsOh) z?lPzW7m)T5dOU=NtgW8(4ExF5F$-{8w9GpKF11&|zx!-`9QN+De8C+LKCS}`+Q!%_ z;)nz(#Ln^NsLI9p1?T#6)F>wMG9YX`kN8%X>{iQlMYkVltv6{S>-B8FRyi}O+m4r8 z39AQGiKYDnU69XY*a4;n!9)TnCPlL|Br%kC8<~d;zANT4q8kDH1>a}xi3G{tbL9lU zz{v{CUdDLzd4q0lY;0kMfRt6XerpZfRWY9n3xSzZD{f2>9!36A8y8tRLhABLZ6upT znJ^!Bt!)V#pw}8;PNSDKWfM|vAy;=nULG`Rl4dJTRi-uv-evM2aPy5=2rc3oY-9<7 zF1F=SL!f_s_~0hRd_iV0dwvf`o7U_JP1c*wBuA8HRr1XIzdEG6K7x8Qxm0-F5qHoOnpYVyA|c%Lvoemb`?z_pkk@5@dGxH|L0 zmX<#Gm?GzW`Wxct80vnOH!B?F{%u#D-F8JUWq z&zGU78;2xLkeC(qqGHRsHdX)d=qFq)-#BHlVFziyD}An(cm8~$qRzklG%?*dM?Z5e zyIwd9Cy z7&~xCPQgQZ1=lgzj)C*zVBPcH9l}{zsF(R%Jd#x4jn!_0<#LFb3y*_Q^)1I+;sNmmg`rant0M65*{*wfJ%h3%AfcLA?pDK z0Z4}qYhZXUjhZ-F$Q;&q*cn$Py+F|$n11e~t8syxRxk9(@}wNR^bgZPa-c3868(>J z_Divgr?m)6wYkhLjQpYl_G0}B5YNqkQr~a_(NRem+uiMc z-4M@&>D)iZ;td42Dq2ps7K#@Qht1d((nL_M7%3OVQku4eM+wQ6KN38I5oHg`BV9kd z=qO#f6Mrckp{mw20AF;R_I84U1#3Z}OPZ40Yq+R1>0k+!cm@u8;KzwcQ$T8<7j^2p zOsgt?&-6qUE*&09^M-al*X*w3e9bu>nVjvVA0PS&be42rFqz9p&^pE&uTm=DqG!a7X92=48sHya+bb9ehl*u17M z1Py}nLP^bF#IIA6&eq-0v#cQgf2BFv-9amy1UbQn5wh`q(|ectxb{yu@_JHtoFhrd z9r+8^VYbbd_e*Z{&f<0G2cTKge0tujGb6;Sa75vm3x~TrA4#iEp4YK}1x#sC4Dg+x&aM6#}Xw&bK3M82|Rx^)iSqYbRaquJ;QbDOEIK0zs6Rl_Qo2g zd7jpn^)~t6_i@itFjAjyk8QOt_QN6c$L=kDU1o70Pn2E5vAoJER0|!y-0Sb`Jbsdh#}>(UvY7L-oVaz&=Ho$Goo`>v zr<3h!JcJrsxYt#Oh0=-FUbS3(Ey?vP^=?SNq$^_U#H$eaR6G9WHZO=Otb`C2OJTss zbx}0c>cq^vJ^~so&hL=rXW@aa|rNt!g?l> zcgsLQ6){W~brz0Q10sAbNg9uJ#5*s`5hA=n_GM&U(Lh@EN4R)5ddo*!C@8RMj>gu? zvZ*ezbTYr#yU2!@`aBAwz^KF!N+2DuNaWCJZo1N5`IM!SO{GcP2dQ;3eT96D+SseXKSD2)=ezFmMsRFV~2g}AOc>2p3dz(sa!s;RMaP;6Ntl1QTe8Z|Aw(RS5(F0xcR{$fZMP(S{FnDmoK^WW zt>bcWZEdZ(11Q)Ke0{-iaFPKq#y4Vg@arSj=`2Nk?aA?XccTB3wjwezVE@OyBB*WcM7^_H18w4K3W=j{MEcPo^`9 z)ICU5lu^>Hy}USVRe!Xt9jwO7xaIHR6M9fg($z8Yg|R|9flq8A~@ z7~c?iePg6`dzAOX_Mh8dwDfT)Pk7q-u%*hX-;UhcQ#P@I(Ay`RW6>sszU^L(nSJ8 z?z;I{&8+4m6xrN$Bn=S9KyNpF-)qN$u7)CG=-zgL?xwyOVvA_aL)Cux9eF$O4Czhl>gyu_8#2&588@lt*(O@mqhw`j3f%?6g(8g(yBrpyNImlhDX1^9Ekgh!Asq2HoUnjS<#_{ z-4t*1sB81AYV~bs^=pvR2hI(2DYrT}=pk)-IW#>SSSzC@e;gNH5B@s7f1ih&d=Lx^ z`r)SzzL(#SllU(U&IdJa;(9XJTZXH7KdzHIus-i0Ly*E?n#Y@1qE>nmHqzLftO7B? zUIV)|Ye{$nL`zcB_#;|*^#BZ(k18RM?6?zrsy-uKuQvf ze!~P*+}G40lPop1JyCudFImiXM21KL|M>{w@~f|8R*Z$$DL3yfrN~38Ojt_1r4cH| zvaz(07+DMTeyU6W6I?ZAxk=*%ACNvZ3{oRKb{wRJA^&pFQ3(r+8iv~Q3u~%or2RK1 zKfl`j>fjZT&e4m5+_)}&#QRMDI!9JbT@jdEcSs7(b%Avk6^_R?ChvCya zJ%H98$VMsjwwH(X5fTC|@4UbS@514UmNSOaAdI3wiz^3}2JLi= zrMGKd@d+Q7B(2v16Kd3nq*tl0-Io7A72g$o&3*9*g>B^dGZV?3f9jT+uK)HSA#q)QZ#+iGYs@p>Xg#QW>`c2rY!o}kIXjEU`0c% z7myB)#PaF&u$;~u_ZztXZcnfKL$|rhXwhrX-Hn#f^LxphsFGDbrR~-w9u+Pnp&Z8D8M^0Wv@%} z)XIk!p;w4^A`h&}%$C?h7GEByU<%Q?0b9PY{v9f1}?9Z|s3a2>mE(8}HHzDu4#>)L%u*9L(#x`H+=VC(+(KJ?lz ztj~#+b6PFU#ZvQfGXYlNZOS*~#HcUx*>_oWR)0x(d-fEo{5}EFO%#T()AS6K_Zo0e zm*e>r2o>sqg)YbBF5GkXcKwgZmH>z{b|*OuAr(P^U@9a}o;-SPk~pBV7HXU`Fnkp~ zjXTg_2~NqV0VK3RF^7`qP}8Em$|_OP)Qp>EY^>N#_z3uv)O@{k5;kK*8VUfvRaOZ5 zw7Od!h}WxRehB9Lhs)R?#JZmx4HkP#Su*3wOJoUNsy?pDz3s4gQF<3m)uhrD>SXcv zc~#;YBLU_Kl6h?a5yjgZI0|J^3p=;K^!LvtF`EH7UwJE;50$apDFn_2DPNZN7$gd zL(K4~`io>^dR@OCZuIE4lZAW4&g&P+5A=89wk-c6Nz_r>eg5AY`E0}0 z-gz{D|2Np#_*X9pe|$W6yz#G}dcHoIW3et?qOM>H201h_yh#51{EKJUhI~9TAD=w> z%fEh-mj2aSYj95nPu3a7U!HW1;)~~vLHtBV-mlRo*>l-pM;~Pp;KR5I7DnA<7_h{B zt!Xn3{Mr(j$Rr)2$ibl|Tr5Q5rI>DP^x9pAuAXZ~oQnjW16geH`V{*UuW~F*7#zDsO%H!hP>Ur&^dQH-m zwh>HO!e@LBY_57!nn{AHb2iIT$a|2Sfs>vgC_6N@g(rC-l=>4FF-rK9+BPgkFIZ%& zoTDGxt^dqs9OKo<75qhobNaq2LMfG2HXOByT=Tpt7qf8K6a*kh7Q8E&er}&aOWB86 zipe$_h&8-l_tMG@CQs2$KZ1krN_iT7NZ3!vwe`~KzcDP2`LHsvyYW}%YVf~1a@c=y z1|{B|uooNiXZinqo?RiT&kGqw>IR?as9!*zy+j9$eXJKhK2wT|w88cX3(>Py= zSyeoiC7cI#!X|xd1R_06t4o3-qIfuViVdS;j0Vw%d_g>w0y`;0L(NcYgvtg_wRsL8 zZ%vt5N9s2}|E9w7@`$PiMssQcsMe$hyw!w-F$59Dc?874Mg#uFaWC`a8a&$ag0P+H zxjPMLd&lpp7ze8#;_g!*Gt3l2e~H&RN_G^Vz#-AnO&6jD%j%?Pv0AKJgR?a1F@@2h zN7+ZLJ3sqA2#M`FG(CzK%G{IJpN+v2>!qAKX3KiiWZlQ3$VHK{4ayY&z|D9 zo#$J+8B7_xn!!^l+1z~m_$fE^`019!yu5#|z{!N11bPLxrC}K31;)B5qzJ@zfS(;h zihx+*>h%(Lc;QaQ7B6j#>2y{W8A69o@=H=wAVAJ_Pmc_azy{R5-GBRn?Ay#cDE2`x zA}DiA&)uO}^7+%JPrn$nW<0t%&yg&KCLM~GB;Ia!$WHX6H9L`Y2z-IIcATXu26b;p zbXj4;(0r7-zfx$;!IKDmHd@a6C_`tU$d{_%-&b@Qk>WguW0SB_knzZWUSd_kUEXkM zaSbF7J5)t;DY2q)QOh?DwD?zcoM!c#H*Tvz)tmiR#Xo&T_fQ`&0(3H7pdrFl!`D@v zNKqTei2`S#_vlCV7M*$SEk;_i#w&ZtJ#P1sTkek<5a->#;{~UCM;OHb&Zr;X7xl>} zU(`>&sJHS(ecI)VdcTTS)uc3at{yrlQo4Lnv96|KH3U@6r`KHFQt1iT@=CdY&=J!k z+2Q+}S5n&uuBoGPw0F3F90%EfJ;E_q@)Qo^iL-XeK^hA8{fvHHk)~W)QC;ZIMoLc^ zSezVyMuyyMQKxR;?yMq6NXalGIB@a4Bqzou^fxy22oYf*DO7Y-^O!VFnIfK8=j7oO z*fmu^P|!&hwP46j~7mQi^w&Va1xdFE=)lGxorZlBTl? ziz0kpB!4~P4QT~WK& z?Px&{NCvi{)Y*xC$tU13?j~MjS7-nnBws13@9DuZE#1nTiuknnf44uUNOp8P8je(`Ch^|uw{PHYu9h5Nws7_jUO1^9~{pY_ePKq)aVItJJP$-|M3!LM&; zu=9jguFf*QLG!v^xXsCT?em?#Jbxa~b-#3-zN;1Du5m0C<#*|^H1fNz5L{~k2|a>c zD$5Tiva$4NW*g2qJg#1x(WE!C55vg{s{o6rCnz$m?bqoHo~|QaOW3sY^t^t7o$L&- z?zXR*TtSriqUpJT07FowmIRVCT6pE>^<}cj8p9F0a4K*Kqu4zjgahIPBXDb`=kB&@ z^h@3h((?sM-Z{?3rErkysGISk)SRo_)A#l)(?K|TR+=H>&d!)xx?v`IGjXk=9kvG0fj9H^L~S} zDDJcF9)q*}MxDLbzNGIG?*_)3O-D2Gjkm>DMcsFcJ8 z8W`VT(DymsmZ2_Pd8_z&=WdC3eDAzCx$5xT+MbbjR8Bwu1CSki7Sea*KcVY;Lp*_Q z@ePOr5Me1FttdmflA4f{eUF7l#}kad{|1wdhY&7d6@Fb&{}9y@Y6SAtw;4#t!%14H z5e$&umQcW`G&Sc&(4@$AbYw*fv)cA;j4hIh4D|4lX+nv0^Xt>B8# zMbVH}c_ZXCN5r*ZMROso9j$P<4dv$*RU=WYP&0&a0Ecb^a&$I166B+Ld$Gvrpb@GC zY#mB$e{D25UOnU+3h42g6pD_KR#})lfHW!~E;DQf>mH>W)@qCAv;}|(BVaZ8-5`18 zHgu6p;a!a`((akO`HbXPZoQw6UWo45ef6stIqWbfYHkv4u%AuUeZ!h{k2{n&N%O*%(|AnCH?bw}Rc16SXP ztEeX*mBWRCm~Ll9e^GC{&p*5GKZ9e>u*z{0|4eCapy>7v^vVl>OUHs&C0>kemWgJN255k*nZVs+HXs**RUj;dQZrwf5|Afv-xnltozLCd8qr@ z8MsG%{pQ{FD>wzo7m&p>%l>)21tWfYLd}L_Eo=OB=`AQ_evtYQImPDa5reG&c=TBY&>WWhtbSvZFsn<({?S)YlF8ffj^Q$3v0 zddveJfAaFf#tJKVq$pU^q5L#8Tjzi$l8{H0fS_G9%zJ5C&$jk z&7yi74P~T=uORJq=osSNa5b1GkeW+UleiT8LQDo{y6@HqRqvOwJ;oB%82a%(*!k;#RL^ zEyVdVpH8z8+yay9prKyux*RrYCYnyJ((9VDWQ;Hk6D`Z%%Z2#=P_oU-j7mvPVbrG> znn|29rvwuyVlawv3vPx6D<+Lm@I15;hSd zDE$|;O`>5fsX9!iItzx((y8}RfgfmWV3+27p~Gh>sA(rS;1LFPeE4len*f##RgWYy z=WY6LD`oj-Qrb{Dw!D1y(pfr$xkjE}^Ky=vD<$`mY3~-kIAGs*tMARs^ZxsC;_jyU z^C1tQ;Q}H96O#+N{fT0NKdu;3q{Y=Y*fxs4US`+&qw%L_>}TAF5rtZ4;{&pM6b&L@ zk`Itd*)}Dz%(Dx28XIY&LF&J+82@8ytW61o{<{E8ST6IAk-{eVI2&FM!EYZ68sD}% zdvIZkD&MM}wt%eej{h+ZnZQt9k^8;+^)y`IaD0AB;s6JKtm^xQWtEKDme=4Bvn2QE z0y2@O$Wi2=D%r&8hRffXRN7Rh*Q3JDD8yvDH>8=w4?nTkML!q~A(vPidItJ#+0T*2dAK)SIUj~6ydW{sXC+JlP@-vH=512Xr5?nik-=G>2y9`;ho zEXbE#UO4uflB`HMT_Li}-L@Eqj#vx0P6LeUV$0905)Za7{_^B6JA#76l54kj?W+6C z#yr9{TPcF{_IvDEcd)6+LpWY;-;BNZA}eQ`<&&o~3V&YFb1|wVMzJ*wkayhbP%EA} zdKrTuGqP)%csBTZMaO9=9vyj)U`^0SipWn&>2O4cROE-B)XG6t8H;$dlhs4O&L( zWfYvn4Z#LH)Lkk2!%y;0`Vx&*KHiYUJ07o8^U*9zRQ)yr;eDRsA0zTfR>6E2cqKPx z#ZJpsl@LIJ4sTA4xf8qOk+hD&c4I;5A%L=cL_QnzNW=)%h2%HMORD+<2=|Gj`)sGa81RH)vlm5_$215x35oH; zPth+282zI$D8aWCA9ztM??PrymlMJ2l?cP6ZyjYL@Hl7{-LFO`vJ6S^hYuvu-);)g z@&(yMi@9m%7W|(=r@)!ai87u!`n081Dd7$b{2QB*u)^H4g3NqhHPpaV;X!VmIk|hh z1+saKBI)(|BR!_Nv3Di>xZ?AS3iFV@0gY0k8YQobQe)|@M){iCiM*TW*A*2#T)Jh) z&g0#+e9waLY9cj=rFh1RfJd~i?WPR&a{wMN)U4!=IA9URA$0W~pZRjM=j%Td{H-f+ z3yDz$X144a;fq?QK|69`xALO8ty^)h>8lPxn>kxp71-M)C}U}osP6q?1D-?Y!wQ)F zg=@M3{{O;F@zLN5Kp`TBn~TL66gV%-^GWuzf%j}w`H4N)8)1j&nSSH-TpJgT+VE$d zK#^drCT^80`qeer<>$|zs*{=gyfnzox|>M_BLaEdijjRzF~lPk;Q-U2q8_D|;G;nR zs*a7Ybr@1T*Iw}RZUPj4yG_S6z@hIcdWwQ3!u4cZ^~3x!+29{HwC`hn_;vQ}lP+S6 zep*{_0FSvMFG%iOnhiSVAARSiXl+B|OjrMyzE*S`#^aOwF)ajL`QH&E-ulOo!UZ!d zwyqnknb*wdx+QyJ=v3Up43!cRs{To@rLS*ZR}a|hW1u`$AY8;#IY zm3&yhKN~aMum`RgksIa3(KSa54UxArlK8&vEpC=}&Q&*i7L-Ah3TD%&U-v8tx zODFS-YYrrUB6C6T5wXD6ZW0<6A3ph|f9=+_x;_HU1Tbm8{H9YxFb4-#Dl=Lj*Uk&C zJ2Fb>DK^OCh+1zQP*}!~Y(K9r?{Qq{(?g>QT5cVaE#XIWbhv+y19GhihcNB74#yPm zqj^Iab>0=0_B1FAXv41>QYD@^#G=r0KDll(tCmJvN7O7QIUqvatwvJlscG2r8nz=} zI~0N8y9pfSL;TsFPTQG^1TVMh<;(>S1w!R|&`y`0fJ*dG0&>5eR-iO}30YBl?g1>< zI9Jma+tPt7_phdmAv(UOCF2}~uPWeS=MY%Tsh|*AE#=S+OSGoj!#7!4&ClEo*Cn%0 z;zDaUJ_Pj|gAPcV%qzExbB0pKP+%e&W^2XVUajLlrD{ta9g{|>6(#3p#r6k?95$WH z1HkQpS!(6`dVf5-_4{Mw2$N65|K_IQ-TLA2yyM}a$DB3qHwgfO#yU60-&~i_5ssNA2&wIa$`e`y6%9QNet+JXQ=Bt+8sB z>p!R?ph8vHEx zE+a2GYljvU9R`nxX#?7a2T8f8jX@s0eXL=di5xU%wzvGwFjyYPU{1kN?(!~@=TE?i z4U)oPvY26z><#1o`Uv<~Ub%mPmkve47mFzd?3=oz3!D?oO~04?OlIqWDWiEy(&8G` zsl6oofC44T#(7m^Do11#T5BLkx5gomk(zo0tV2FI>6|TiqStiO$!l>eH4{K`^k}T3 zw7!5ps+4_!Q_R6PbVVlYlvHQ4lp`7N?X!TS-(@vo#9%_ZYy@|Kq6!cFa=(vXS3 z{+D+RV(#_p`Sk?xCr0Jeova?ivN7yHQaegqB)@F`LTPqzV$eb?yq`f4`!CBoC9FM~|O||1o_~ zGmUOYPN$wk&F>!9zPn^I>zxmhXVf8gcT;C4}9 zt)R>PXyLY#Q5;BDGQ6DAx>G{;Is0=FE*806N!;zg&#lo)JV~8VU#Ghjrfw5}LJvwn zuz02yE}|#{M_2%w4;B9#-WWq|;EXR8=U^E*w?0FgIMprF$2YFj5f~eN<4_SpEc@*Z z^Nc)^C%L=(Yv1Os8YU%m>*3BgW^$(U!U5KP6PSOTtaBYyPdWZKA^HS4y?%XZwfCvuV6d@0w)u zo{zlnG@#q;~*RdN(jCNo^)2To`chBC2sQ5l$5M`sy`uiu7=o&u0$TJ6B*(y zaXMe-ZoE!3s+K+tz_iZglFF zTND#`7%?z(f_@TZ^%)u9nf6{b(E%BwLO94k0MUo2%y2o5De9oKtnB8XZiv(-J&Q+c zIZNRVl=CBmfaiq*0K!&bNVREN5W6F*g`kt8jL(A1`dP9B%n@EJWc%3G1+KT_-EF4u z!%rb4c^m4wuIhPUD(FKwXxTgQD`{`x$=|(BEk6B$o3^yp<(%ys{Gr!08uUm~fpZevowZf-(~X;|2`lwih4l5Bm!2VK?mf`4U0}L+^IZ#1w2`y z%h-Gs&Wti_&DE?sXrBm;g0C6;LoG)wrHyU4v1iva5Z}CE_Q6=^itp$35K?wtzjRw< zQDyClRAQBW`Xi|AL-P2d*SG3O8ntBU?6G6AmPlQ7H`*r!ZYPeN+{2Vc+#==LWmQ7k ztfDU0m{VA@V@6+pca&BD8gQ36&8Ugw>+dN4RCb;YuNg_OWlD`c*O=7TkS>jZSHf1J z3G(cZGte<|C~DWlye_BG;;4AGS88|5D-1ub6Aji&Gb@dkUNv4`;Uvau&ZDi<6{gZs zts$IHeVZZ(zm~ua!N%mt}Q`ggH z`fv4R4qWQ2{*qYbp615AS1pK9b7MRlDtKL^B#+@|)O^09SAu2~^};0+3{ma|>VuNG&#i|l71f;TAa0x6{hs#SS2_7n z&vVo$s#edth5dU3a)Swv98J&AJwQX;*o?1XRpiev0sKJYoxvBqWJX||f`4>I-9zTG zGkxz#xCDnf^RAbXe!8A+%4kk$8+9c?pL<;{lB=}9bp@J>3Zf3FGmtEjjr0^j2FVqY zM&A2I-Sv6b)WyL^WKebu^~pJMTU3jgQf8M)(l#lzXG*QN!+wQTy4==1hBL0 zs;rp9wRSu88Fo340hCQ34~my8#aaX!K1huIi73z}InM(W=r@8KS6 zQV3*g3sLsc3c)ViD|w)&27uaurMN@$exqDCYS9chIV0I^v2~EPvXPvAj5S7S4WeNM zVV8Ck?rutD!HY!&$VUnpI@vjhDnVCd_zYsaijrDvul=^*m{tsNcYU7ll)(cI{w94C z-A3JU=qI-7!zkj>e_A!OpRFUSQ$Wt%Cr_UI#RSuTqQ9j-7Jb;FJJg0&ROV@UpVV-U z+ER!UO#MQD!zumqjeC%obzuBKN$pSYa7-*BrTtdwSb#5S=E7y+PAVS-2@ zqBi$vi=Oq#g12pe1})Nj@(RZnp0&CBzLXYU*arbuSV{`=jz;{;)C9z$V_l`p(HM2- z3@B|^_*Bqpfm)-yo=wtg3?_%S>pUal2~wT+1|VKq@K885*lIn=&o98)1>*;RPVxgf z0AWA@j!%|^Tz8u>RPZasXoqB+=!d0rG#Lnd4G}2Z137bdMRszT&rV;Re3w=E`1-4K zcnKScgOkLg2c3szIn&c1XJWKsHT9kX9ypUI0m==qOl1{kVo~3dGwBL7R<5A}wB3kU zJ4k3TkRvIG`!}bjM<-g)?a;Gqew8syw2ltDg*6HK;JL~otABu>)DQzA0Mk=2vtVx^ z#9Gcc^TRBs$)s|#5)vZ&g>clV8$4rBn=n)pD-M~Sd?z{pCpEfNfa8ZAY>vYq&g-bm zC_)s*tYkGr;I}x8!glz6F>z;B!0}Q@?jwAEnvX^k1`4`l2wQ+C#J|xbCaa6GGN`Gr zQylIP&}%$t+~EL<1jLYGY&G`t;j%4fdFHacxpc>yJQvH__`SR-$U}eWvjSI-UKO0# zg?#tL0C#-y3Kg?~hAJ;+XhM!2861^|Z)l*V2?$wo(NmXpzY0S6%l#ipEsG~H;cK%j!)f{GinZPsZN5Q z8XsRV@vL1j@w>PbEZbi3N&w1tTnMruC!o($SWt-ebImlkZ+cb&ND9ha2!1iY!2F&m z=E4Mseq`Tuma$h3+&AC{_}g9~mSpQ*Ajiy+{va1d`*7(Ev;KI0jSHfE#Dd~~PXqp) z+y~|${+c{_?>{L&=E>pEJ@P!VJf4u5r+dXz=kEz>9W(XF2QqA-S7UvV;o3->G2$Ax z+UD(L-07*z@8r6G^t~_33K9*kdTSsP9#b9Mt%ykgTpN>tCEsUfCxBr$uN73_7pU_K zHwl6MQ}pIV(-o;Pu6buva}H{vbXc26ED%FEQ0Zt?u$YlA6e)=9C)7Fb4vb=JVR|h9#?a=f(M%S;__tgbggjeqW!?~eO=D>qP5i2B z(~d*>pJQ=OK!-Y9b$z&W+Y+@kbeB~U4(e8m#iP6!P8K6lyaPCNrfCi+tHlRLVpY)U zEmE(%%-rsPEy%{R%tv%fao9t-&)EH9dm9s`K^|`)`}X@C>s<#r%RYsmZF4X6b_TBL z`H(VN^;zS;{WJajKmPHh8*}yIGM^4FIQ(9yv!uw!*`Kk;l|G-^@i#$93|?J1B6rW# z>*kszEJ};6eqH`e2`)hkjs!$09XA%3kuc6`0dc$|O;QM1G;+XMbi(Gfxcy>;$sC-n z!0jIIz-)S!A%H6+kv%#jsUz8O7yNlq!axwuxCYI-?lCac6xaNPWnLHuhzjnkf#Z#n zUN1^)z}1A^0zQFh0g3Gdltgkn!+v}TP2rkAJ7=Z)2U-NH6!U{oY#T_CqyxwC(?}l! zZYh1ISve_l#-jxwVVj{1ER>pG9?IdahiAt7eB|3r010&pKoLqD{80B;K8G>F0R-Zv zC~v|4AQ^5&pxoe!b?K(MfifDdDM|G3iUQ}FWEZFX6~4YVz>^1P#}uOGDjlca6; zaUlJjA~-bLPR;=9a57Q`l`Ln>1Mt`6E0f)lrptSaGY0m&p^5f# zwV1?ZKuv~qC1DOIGitD7FQ zuPN^-NUD&8kA8A<_%^4v3Q#1K-vJ3{#_1SSU`=d^0+b_n#zzZxX4C0ee!c)q940Qu z{o$?Q+Tkn&gfojGB;cHZlMy#=HVr^>(N^IUyN)Yd)0+-|JcpRLo(JJtI3_CHit#K; z^2^(vFAUh%6(BObPYdD@$+LkIV`VR7X`N3r@n=2{7FYNNCgk%+9}hIXs4)&&^G1tn zAx2vBAPE)NEx8*Df~XmQ#R7?(a6p>F4HFNf=L$NX$SF=*>e`9DZCt&MK67|L4iuH``yAoOJ}C z?-Bmh-HTI{+0d$!V%#6-y-pBV#a;IK81!yFCg6w1KefE4vZKv@SuZpu zOoYLu>E8V-EIb-x`F+Jyf?8hR$cS-z%ZD=AdC>pLP)eW3aE$U1y<2Kn*BGOqweQXx zZolTmNejB`UZohY2O=xr;>e5JaPkBNp2XcM|KlF6+?~diOREI>r_uc_6;OY4iv{Z* zMzCt`21IxfQHkNZO7&R!z9NVoKMHlsw)I0N-N-={uJZ7uY$aj)a=OP5m%{oJ7+)fL%+mRBMlz$JP@YuJi$BPogBBh#eVOj9S!c`u2Xg5V6fs)6XFK5WYz?&~(p z#`OEj!BAY@q*v$dTC6uBNCOZJ1~l9&zTTjyQu#X+<`~Ek!?v+|(iLuk8ioEj)O4Pr zxS^|jD?s-;G|PiB2#5x#wL$d?YJz}KxzU|XvS|$o3SD=wN#8)liOdRsgz$$A*{3yA zhIDf9AV{l%-3^_9Ge@BNDR|r`=k8-wg7~VffA0!&C^$FIzX&8zgx+#b2mCYU|mLI&an%y3!mYBLmikB#{jR^tiJ-VK@FXFd4MuVNo?HB3(E)CZ9A6s+z=r=*W=!3_XBcMur^5nw)QCFm;{AD0YAG*@it1qU z+GY@jf5SrZd1GBJE(91@_)z1xVPlHR5bPUlPee1HUkCK-rFmjT5TJ|NK73fa3$N3m zN^3)Z3DLg$m>Equ67&L+3iUOq5Sd(NHgLHreGuUdrgk3utRM-Z&HV#Uxs4WUBEuYlXBh@G6 zkab;|?kPWKooyq8Exln5lXS%?n74gU$Iie<1Y!)O9VMjAwH+1VIpZRu~Zm-WYb7<1x+*$p=BNtn=fbg#tE0yB%yb#x5y`; zW6Oborx2NXKFQ{evmLx|Q(d1>YY&Mv&>zAY@UNwVx6avET1NgoItf!`9uN~WkHz*l z%_k_ZowIu*UpUA5gH^HFcldDLR1#D3OUGxEYGG*^-&<~)fdf+T9%3YR^Z}_dj(7dQ zvuNfGKF%l^#lz0$9)4dszTjfR;xa(11~V|7c%f&m#d$U|8@5LonSTlOVH|(>OUuyt zlG*bu$9J-pkQZ8W^iS>R8|6j&zTYwp?||aR?MB-FaQ)BmlHne5wXVU+_m;6fYZJ`2k$pIeJYjr5=?S4_esUvcHf3{xadH^At5Z-my6mxCdM4(L5~mnN~g9% zb*OT3fA7?)@aEAhW}2ZLQlVW)MoaABmRx-&9N+ z;4Vt^dD1mz`+@hVQuHpwCDznLDB_CILl%+=$gMkyowD~&sv2SY;6xNL)Nx2VQbj=L zt)dCPa&(S++~?#l1o?az2hf69Go}JG1~6~FWk~5C<)+jlIGK8GtnB9=WP$lM{{c{A_^}oc?`BW*oTTwn85RloOxrp-a=<7rEfda zV|GYqtJG-O{Ka{F1qxKY*&Ape16V=|F0x!75>rGft-pKI55yX%fn$&|VQ!K26Z$fl zV$u4^I&hgh=(#6`m5PsUQ5OAwW);RFSF&5s#X94Yp~Ul$JYe#GlwBfJX6RUoj~!f( ze;1#lAiWSU$g>5!nKi|8Fzz;%(VTq;4`~!!uH>;yrCD{Yb^2FyH3ZP*-B*LpC*kjf z&Re0GW(>bIP?w{7M4*>-$uoGXkXfA@_~EChjs;F?5vokM92e=p^1nA3OGXE9Rz7>R zr6(KV0AJ#gJz}+3-j=@2Hu?v(WV8z3A0LLF>23DW$Di~n;QP^0xi$L!eLoOnRL!@b z*@O5xX>83;Ps0^q=UZvYtnXHiVS+(M4*t`$aGa(O+P=j+>nq>x>l?=)&YKb3@^OlR zG>Eo}AuXJx(=#*_W7C3}o=JHr4?|do;N9n*YwkHp8h`Is3%@q9fWt$Oo?RSH(Na;q zH1nkMhYb$ihM-R*p;scdG}m6P(Rk&Hc{QPSMP>hEQO?trF6j4`Ch6~g;ODTZlWbUJ z^VZqphnC6X?_n!@xRG9`vzCVZw?FBF;0vgx0ozhyYyR(Tab|%HB!@Z+-BGC3gG6288 zdXQ{Bd-Q1P>JFaKFI#qZV(A)cHun#G8w_U)YX5aMEvxIG3q0-A#n-v3h5!AE{*gRP zb{;)`8vduHb8fb?|0#awbE~=TqcJp_m7<;Pa=Ka8!+?vYL8!00I=bUz6@vc8;ptfV z!9ZcDP)u2IiAfM{TVN7)8q4b&zsr27+m5B>p6$YR(f>Y2b0h6}TrHH}TIup~@4<2Y zVdb0ao5gu{gq~S<-DThkQuFImJct)F;6;o{q+KBj7ezy$Hy+*&7>BK6K#Uy>xb`yf zpt+N^$s?Mz-Mbg=+YG+-H@bB_P?AYzR1{$+Ep5wU?1mTP3Fa>I57TiznTx>?H3swq z#b=bPNChaMBT71hgdiccrQJ4#^J{F770mh=B}D^9aHN=@c0Wr;Aj2|Ta&&KF^ES0&m!_ZLFU@NSqsWW`0v~{2wj5eLvn(voc=|tu0ZE2%V0&XL+ z^&9BEO`QhgS~0IX7F}Ddx$7=r$=L`5Ay!nc$%`~Lq$M7NxV9KuV7mnmLaRQ2odQp{ zmi;4Y1T3k$Dqz_I0wQ+<<9vBGkY&$|hrF;=OPM$;p`G7ok4&3-h|O{=~}tW5XER!>8A zXw6#kA_T2G4F9wXB|om3Y0%cuSNJZc`mCjgNS6)s68BLqV)WgVvQ#X+(9lTr2DV8x zXNdMEoK+Y=rCN^0$b2)@@z+rzpm zGK;ucOzj(pM7kdR5~82d&g^N9R*b46q*cicMPPeajeMzUzdmF&g5t8p{dz2=NNB2! zf?laY3(rMbU8;_iLY|MdFNHMjQ_CQ#B_0!U z0pn>&s)17ZTn!j7kjWS4q;bd`)F9#8S=5yy7=hrc%w?c9(S5wx!wyS4k4= zMOU%Q1fnH^FR@P?EJ~}~N^J$)?3kqDbe*EZt5^0vl4e+&IOk&zJSGB-Gom^ zbHbL}<^<yKBa%59Ghq+^wIiw(D7K z<-uv5O}~|)w)tAVr%dU7wv4}~yNPxhD(&VzWQ|b?e=Azhu-ka>?h(U2NH%7phpS!>(@YQT1d;fIrEZxX%ymN>$MJy^1 z895I{&oN_2k|K)d6t8dutYxu?=}VZHq_N5v)^e0=Qho(ea7m}~%8(@3TcJA8c0Lzu z(zp)9aDt0=BR3FbpDXexS5XR?^kn;F1xyt+Z8~u^ppoI-$;MdNvXOJAAr(DKwQ3fBtLp7PXV*tLK`4Af#Iw9Fzr)Z9U z(0}0m&(9Cwo%>+$fR3EOS%D}huM_i!73fAQn%3F#r;cvJ5}ZrvY1i{wGfp?@UczU& zd+}D+$tEivukis+708%}EtBsrSacxks6gqu9VLfp?x^aHQZ^qC%IbXkVm_U0SL5N+ z=THCqc}+Uj{?mppaEhAa*$>p;Pe1$w8(-akZ#W)?McSi5ZBe);m`4T841peCa-eW^ zGY$x+@r*!P-rjfxd+1cylUJ1+O<&TJI0leoz!l(o2oV47WC9Cb8x0rgbWoo#@`3#$ z&mBSc3k~-WxEKD3$_RH_G+n*b7}3BANDV7Fb}(iZ0`G&whr36I10RwVBE@t5^@gmZ zv@^>RYB@Z8SM*i)6=aF<{e|gghWR9i_%Nt{UZqnA?i;!%ZvlqFbFz#1;}j3~)ZZ6z z2*!%iTo{buo1*KMR3YJ2^<}aXn!G==*H&jlkpKL4mi}XrMV|MAWLJ+OAVDh@9$hMp z+NQTJlMVWD6nJkQ;3g7#V6 z$>~A}l8tZ+``qB3#C=%aA!A^VQO-7_5w z#XX|AaZv|$!w^+hCiy|qFoFuksbvVq9WdBi4~q8pW#Tce8(e%JaxhiH@ww&QBmHrl zPuT87-eAmbfR$3PyyPROlmGYjK*T+PLi!nNhT^l(cPDD;|n(@~gDYhr5nl_|?LWi!2+l-{Bb)L6$<={vcxgKiv3q_Eo~o^5-#OcH%DDx^k-H6-rZwvVzk2aCpHX|U1@z~m`mkA*Oysau5v`(-Ecl(FfuUs z9^JIuyT4r{=hAyNrWDNV2d>NGLwEGPEDHS zLH3aHM$ED3cY7s*Kv&{34Xj#`LywuK5Q~JuB{U8RHG0>+f^dK$SiEQ+;X3NT2hobsYhml2k)WaL zrdf)2xYdAsGC{3vf?^fd{l!sIgWmAOD*xY=#YqnX8=Zm~c%c#Ta^|Jr0rOV#l|Pw@ zK9ZTpllYURXk|;$)3q!`%`H!(S;=U$)Ld*iWS7YcP@`eb40i*|OZHV{aalkLKbOMQY zeO6dmE-vAQFhbn+!2Gu@i6K&sUZu=rLn&PQ+|ts}z}pP9@o%vA>#pA1Q-Di|(0|x? zVe@4}wb-S{ciAzQc4$1`48B=xJ3g8Lt<^8gz{pbDF@xIy=e0NH#XQBC&(;_-Es2iX zP2toDD;vFJ<0Y8OH+qzoxWG5v#z375bqsBeh07f*$@kDqD`-i;$r$RsZ8=-#6lSYy zQMvG*9$sX_%lkvte_{``AnWtfmxr5G6&|ipw!+B6ahkeK2ypxq4j7BCm1EZ8mg{c`!`D3kb2u3I3nPkNgEP>#*){Ss^ZN;fA6E* zXq#}+HCVJFNK3I`Hnv5WuxpZkmHxZ9uDL6H+xMSeOt~~f4F_DUaUr=cKH^UVy2FHB3No>mxJO)#Hh{85`|Eqw z39!07ao^ml4FWa^j0_`Bfft_~yvmEk2Mp?T&lb$=f_tZHY=QXHqV*d!hr#CBNFl+b zZ1nRIEYOyqD@J1pX`vs9mFYw$Y00vM9fZ?0dSHZ9_;90%ZUb91Y+S!UK!m~L9 z8F4=MdTFzCSfptusSd%*oN;Hf`Bjz`$s_kaT#!d!eDOts5(H!nnl=k!sb@Po)a>7P zU%$dUz%z*5hPZiZ9SQ{vxFb9u+KEao%R6wXN;Uy@oOEnGIOk$He34+fV7Gis<_Ttgqs6y= zj^svC0`>V=@Zn-4`}C}KUAZx$;7eK}sP|wncz~_>v$&X#`+pXnZ}J(Zyg4}n)Q($5 zqS_(%45@fmLCc^0sU_Pn)L42=%qX*QNC%3yB@`rdb{-39Uq}u{b=-8j6nHBD(g{X@ z_qT#0qd-#aDVmS7v7~^(zhlsfF&A1f_)Ut-4X-m%?M|F=o2TRfhfQ3tfJR|kn;!72 zmjn=GJuL_ygPL4o3rWGjb*{H=qDa7zCrDvK3MnfheGhbEyFV4}45fZ8V z0yyVLK@{EIlyjSu0sh~Jyk;f@urcy1S}4y)6$mNH6JCtZm}X5u?udsIYr$H?xW=XM z>k4uI68roDp|>0(%08Glz6Ak%1%@WdjKq78@KHuYJ>_Fa?2~fJCOV2>;Uz>|z>*x2 zf=*$p9hIZ#=RuNu578-51@S2=ggEGhF@uf9AW0eYILt<13-K-nL8%5L%rKp$XAn~& z$xB9~?NL?EI6`Jo;N7nCY?0rrGcQ9i1dX0oX`up}Vf~3baO0)lv$Y=vf64RR{I+Vc zW>ZD3+(ltVlNab!<8~KB9Zgkbc0^_yBDyKzNkZuLHHL|~clkBsAIRN8WfZl5KH8jv z7g9AhDTt9p4Kf`0z5>IlAH%9bqpxAogv;}6DEp_3c6YE?%CHwj#I76bNhbv&$;cxe zOmCxd+UQWAIk08lQIfn)uL*DLjIcc%-CIw|;aEO*oi19yMqP81Lb$KCGgSwNDq16+ z(_6l19!7s_E<*e3s$ug%C9`nf=Z>5jq?Zrn1yl#DDadowy?Sy*Y6x7DS}nKl&6NMB zRA&k()%owJooErRf=a7qwG3;SRe&%kINXbZ!ENT%^{mW`c|*hv4Zrr>gQIUq3MVj~ zXWls^4_1s{`+uC%;TY_04bIId6+M5dVzd0ds%WGY%mRFU%LRA`tXx=?+*?Fwk?Hu9*JT*I+6i79;jwRg^eSQ+#p&@lnYP-ZFU4!IoAY;r*7rCC3F~C2V~m zEduR$4E~@cK{QkFwBo2h@}nA+86hKcmvHz>c9=3;0~*2?zWvkO!pf7J8$rYs<$E0iHB^JUdYep`okh?7&v8ywyip57NJ zz4_A-MSkPXK;7ka?Rp9rA-oOR<)33$|E;SI{k_!6(L7qqES=GF`wnlbEpUAhqogv} zLG4~lv@eE~;sNoRarUWtLc?S6928EFgBM#-(Th<$;O#g|(KTJT61`<{RwGn^Qmj1n zk&o5gs3?Cfva6q=MMttpdagSZw{o$J>2*#9{6*X;bvybhy{;vdbZ~gsn}26Z&Yl-c z@x$XST=2c!qn}Uye)99~{_Ddx@mhBFAFO8DQEKUWnvCLI^?5~sBCj!)*d3QrAT}j; zC46=3#-YZb&-VtkP>wn^4<1K9-pEJVIwjX!)LGpjAdf@_a6Mp)uo3a3fI^UzU(>V( zs9gNPs614=g0h-)iC!V%q={RDqr zqziyfQV9;fc~{Vce1)@Xh+I=xIXa+F2s9XH*+u$3FRO-hNC%Lq2Xyj&-j3&HSHO+g z{KnG`=BIQ2Gy z#8@ImVB4zHltW?EP8u!2bvHXFxOWPcYQpL*-M=G^k+D*{xcBsH$QiPjI2k9thSY2( zCA=JbB0oubvu10b1&$;87;wbZaPH%A4%lrwp7Wm)zIXL80M@%PAuXXxGG}A85I=v3tAdPiZM1yLehyIg z<7VKFCo2P{;0yxS3_f!|xO<D1TxPH{2`^U;{!J4)<1|O)kQkHLp z=3rf0n}ZM3ocq^m&2fl*+!$Waa38{@yHZ1$L^?$+Q3O=Dv2JRMk#itaw+3+2W~;~a zfpR#zf337ZNHJM~GaF;-g3l9Z>mY0KH&h36U<*pj^7c}3flLnf)rT;x>vEWj;SDEE zs=H!jiCuG;8AK>gGCvkz(*^l>(Xd|97tZ#1xbKHq$xoulg5n&|5HU}QPzz!$1^W}G zD_TUp2;{^nWtmNQy(fHETGJTQT~_~d@3)(~FRR0w;C0$ejS3 zOGqSBgPJ&tUbX5S%MP7oopH$pqc|t-LZ4=ny|m`cH{8o`QZ7bfd8oXbP0%TtzcDE& zR!unJTQCjog{M6(%K?XJq6$VkCsDZH?<=9I>^%DbCTqzN>87$dD(an`$4^ccXQOiJ zo;NS2^X;wwv55&$VbZ`5+;3a)>knVjPDldcx%s^C7VZ}!sxK{cl+GQ~E57{Y|F!u; z+W+UH{$GCD{GrePdMH1+k^DGV`hDvm40rQ~-TwcRfBT`Y|NeRK)5ER*VZLqs+b>H; z^*a6VDl5+C7hgWvc`m`Mkt*WGXjb!t^UpbvuE!6uR(wXxOKQL!INNFxtqSnllz1GZ~NhAd*$r9 z!nfrq`_piO@?AvybEHq9-fve|SA!HsiD?ifRI1*7b+~u%=H#I7M*7)j?}`aw6EeymB#;I3#t>ftlk^G$ z8qTYX1f87H17HS+x*X51z??kFYf`EO1d>rfu&XHmug)Ub*gZ)OPd1XTc25pZdY^rN zc>2xTcc;nsyT`}7Z%z*nPLj9B$==&H`-i88Z{N7TUM9P5{+@h$_-4PCWH~yAaAI4u zcTUk#H~8!%%Yx3u(Lk@7Nm`sQKx2Fkrfbw>+29XQ@?r=K*%q7A8GQC|`?Jp+RWG5D z_d5)&Af7Io5mR6v!-^>Q*11twn0+qWx=UXoZgF*6t{trP-x_@th>K=0z zf>k{qbLJibCd45F_DYfc--yaET}NYuDRU!84SNI}s|FKPvY*$NLC!+g+u+CI z$6^=%nH+p|0*CmLgfq+p;z%(D%A#Knt0`^N2Kn-69kIW#dKj^(q2+(Vx-xFLU@#?d zuRwX+7H8Zac@=_Rm4k48ktr{?%bMwlI9T=au%*c(WAI8Hzso{RIpablA~ zKs0UzJ3zw|cUMi)YH}R}`1z9Ph{R38 zV1C?q54|;Q^Y)z!9*!Es_R?WuL>CP*{N~_HHOJeiUv8C-2RN1K9I51OZaG zs4Ko%Z*BRpxI4&uw;f7HpLH9EAB1hjy;A zT{faRBPEMMl%!mO?r)eOZ5FV6NK+f45=EPgRG{)$zSRF2~Py@!ni z$6l0+$p{_q#OxDLGMLJ`^b9HoRE1?f0{L!@^QU!2cAv5M$@8H7g!>51YYGzUokd6+ z{05Jn&m@GeKY;c0wrd3RjKH;LXjt__0TzsI>lt`1EHGRWvf#iPd%OeajFi26cEVO* z`MxUQ)#Kz>%;llL&`vf+FKD#D-85Tx9aao(gzm2M6nu~?RQAK`pqv0uJc8(ESMFbM zmHkuqSPhR=1WPx!f3O*3!0YYC#2KYZt4us#yhXTKn2w-AW zalOuR@E*2FxRk+yWcfx9Aqpk-6rxoDrB7y1?p`}f_}bG3-W?wbcSf(QY~J!1P`knH@t|+YpGupO{%g060$0 z5n^NrRpXF@v)gvu);-5^c9+UH^3Z6CPvt=n2OUoK9=~Lr&oMZ_Hi0VV#&5 zjGrwatXZOdPk7-ZL*N?$srfd$rlx`JZ-QGKcMq0q+1ZFXdLYpr{8?H&2+ZN`tY50`GikH7nxOMf2=-nGnM<>bG2 z^TKXOQAFavTwmnE1u}VokBfgNe+v&ri*FMMZd?>bc1Qia5gZNvBoJh0@I^0~k)l|D z_RpwqQ16^sFew!A+(OSCVQGV?m#W(yOB`~4EoWRD(>$%tvpMY_5OL^lrC+SB!R^l* zzYeDmY!F_MHMa!UvYTM<Vj;=TMsa{K<2e%kRb-H4VlB5o+R;l_84DjRaa(t1r_K>{FoIu{ zC6i6%w>BDPGxqI*PaUh85KOjwdsobYue`fXePRmt4{;{xaU3a{I8grz4-$Y*po#eS z~=%<-@|S<<7m+NkFvu(cX2OjH;#bZhPy;xe_Q54gE6%AD#Wy)96wBE z0p>*b0z@W&(NKNYW^1mg-`_H+@YN|ZttpOmwi5|xcM!`$i#iL>8svr^xBkMzi@CQ< zP-8i4iAc6Y7_%D-WWo!SrRq>5+k@P76UOp%l5vHht%X74r~oL1L2qHP&w+j>85?JM zSSlT{rBM8(1+6B;ev~d{Xm=2XmWV+&>jnubRq!y#2uVAi!l(Ti^N8R;yjqJ!dLg?TVr%lmw|?MnXBlWAhnIt7H`xn{t?5H=YqfdN!wa2!f&(A= zpwIhqh3B#4BaM7!P?~G2+lOE#?0uyzGQF<XjuhkW88 zpLocBA|7&Q&e6#)Fmv;0I*hvrDYot+29<*a zZ00?_aS=BT8;D!HY8IHqryi%Z@f_>sboXJZ`yVA|{Er)ShA4YGy5Fssi@uqM-ZTn5 zoMP}6FtwKyp@rG#f0T6e;v6E0*WK1yCvE(iDdVv#f|aV-8 z8V$5=E?%aU)Gzm$tbMI))v-%p^80ZL9Qr)rF93&Oh4kpH%S_a}?HW_MkRzvB~_yT;}i!3WpQq5Rc@yB_0&OHN_rQv#%Ofl4clw}B_k5JTh; zHv^FtMjVR5f}bKlGfV^J2*^fTYT*z1r4VW5ic(C7x-yn}lWI0hVt`yyRW2;mx#n z@lnUV42fg+kN$h&PB-3)6~5|49T0L*K9+0qO|I9~J{m|tQFv`xoVJ@titl986TdY>LDvowb+rgeL_ zw3Wr@1TR)bSh&*kUzP>RONzjbN39E@)VS@+XalWF^lf&nsk&DYU35j@;GuVjSsade z%+!5sgHHxQBu_XhV;vGPD3TuY8>nTbb6a|uCR!=Bs+1R2$b;PO7I)o~bHpMCHwAjjDg0%a*6P}4gGEj6tsUP}pNo7H zQ+@*yP{v)p^XN;f^yo-?mXAgm!uKG3F|&zvlpgs{1`a_^9HaT6^m-ir))-s-{nr>L z-^tYQx5z*@zKwo!jBhweLAWN@RN#qA#%8h(sIz6zq{yKJ5)6{;ip$(Q>hXcP?Xi#B zX=MRNRr$Zz(PITRygN!~kqD6&sA!&1JBoaA7kS}KQ`j@T8m$AzKsy9u%*7(KX_3t~ z2tbHTp_eQO))Cng^5Tqu{?M73#i0=img+|ANHfDgP&Wj+B8Oe5q zNPmUlc5qrSWfm=N0Ng^kg2Hs)aLc(akZ?JcRoXUZ+59SV z;ut_!Pifeg}AK5Z7nQqOjF2Fc%dU%vt%9RMJt6mrxuCV{Y(-75ailecet z$X@uBQG0oMVO-Rs=TD!yUoe?>#`kepjUNYOi`<1uX|Nej$IdKN*a2zX6yAaHq4 za?Y{JSazCQ7 zO5G8{g@P$0yGSnFUYBIn@&-4Tjw>gkDI_tLjMj!I)D2*tm(}H@Oh=MMege)VcnWhrRfHMf#Q$jlF z;NZ>a@!yZ$9=P)_CM5$@)H1L?7yq62l>qVGdVJ0j|e(I)HaV9y^QB7@^6Ft@Jlh_4!ll&+uQ<#iGp5|SAHKf34OyAwu!&>dDrxvJc#j`eO-m^&pFPnpK7VRaDU(? zp@6&UyzXKYyWF6@^?gp()(y7zdjHeT`n0onX8|L01)Lz#;;d#?lglL|mRPR6H8vE7 zJ-6jNvk;TaTv=DJhSDU%s{A50QWKyaGVac63Z5Yy$3wjduncD4{4fKFUo#sR2ipVq zM5=jw*`TZBdH!D9=E#vW9g)X|yO^2|O;FA)AyCWY0;{bfFU-EC{G#v_tK8hGoIFUS zF%ZDtC~2?bA??3CIKjjMkefA=uq^zJ)1m}vG||xj(s1C0=jDklr{}TS*Ug6I6QB|HrFMy4stjfy~!Bw1zLo1&FsfP-qh+9C`nUt`kIsFFKA7f_O zdssS=>FaIquY&*6hXB>#^>C7Xu0!l&ueJKp=k3#6I!j62r}f*XOXvs48Kp*6jM(M< z_d)|)lf|rMq0tFVza;>P2%Mx&G_?q9?F)d;U*JUm!L4wQx$Dt!(SI_ahLI17QULa` zf0iQoZ3NQ7L{2n;frKqHJO^HyO0=F1q_NF<$^XJI8Krfwsj)iAka-;>a)Mij1Ysxb zj8Pn%bC)I(fk|+do#zCSfzID}{Ed20)^^K#S+n|<*M(Kn$R{u(8F^b{lks|J< zAcJL{v0J3F6Yhg<-PR*QUiOr87J6m>^dpJYHmXL0A(ujw0FA~alNTY zCvfn%=1%M$rgP8P5lz;efOAx#axD7OM}K*a-flHXO!E>HoHEA=rj2ysT~#^(kg|`8 zu0{!f+0|&^JC85VLiHx5sxjp2Ps;Ok7O!+t3);dDnd>AMz^NC zLbjS;X&EDx)zfssXvBW4fzZoUh)0fn>ymmdafrG@NJ8g`4qpe!+XAoJ-N{vY?K*!0 z9rqmHcdwx%v545dsUVQ*1*{n)qDapJQwhei*aqkdy2|U;LEl-4`8l=(Z*KZqqTd`B zpI`4$wz_}{C;ZK5>JiIZcD1OE*B%>kXqANtNUYxe z68~NmC01tFv?CKvB9yw9FP)N;P`Fn-(cAx%jX`@?&gDc(}eisWFN4t4TtW=_O=c^3L_z8xJcma-f*i z^K3{2IABi|a5suwYi z{kvol%_id>MTVRc&U zcIZ_J$3-MK;0D-}`v-<)qUNoxr&M{L@J z#z$rdOKh71N?zep-BptEf?j#3f13UVd8&Var$;i?4 z3$atB@C~Y7U~9ePQS#U1gZuxVKYRA%IaY_%OmCRdp#bAs!({hKuv8!x)N?DKGw4=< znVwx$kDRQP5a{!UdCl-Cdw3*@VDUFteO9ELhlKLOa-#G+;vYB?t};Fx@Ai*+$?4t^ z%4{clr$?c%_v429CK1U%_QNCNU;RBo*Iv~?(c5Vkoh*!kfc@qGXa$m#Y ze4k>faH9Mb{jnjrwC13P(SUCL>W4|1HnKx?)M?<12G7C_Ozn+2{%cUJxv)5a+pa8D z?q1qs9{4J^T6;|j58*#_jnkO5vWT*aC-*eRbdPOH3rGH%-jfQv;HT-kk zMx2~jm-;f=*hD?gRzg3o+n5Jqz{W(YM0RO0#jiLyv#*kPXMuS!FCE25N88p&;&<4e zHURRYzL3_IZqs0NTwT8+zEEI&hCmVqP(&MP@_14<*^vJxU z76-{!NKp`{O+R4osu!9O&K%CU*Oe7Y) zHk&#QKCgGyZu*W11dg70^mpTOc)(BbK?{4oEq@QhA%7{axA)lQ$vZDO^cG8uxgf0% zrCer38!77Qz#du?^uP#nYIs8>V6D}eMPh6B6)_tYR5xP@&rd*GRWsY4XH)lTK?fl> z&RVpVI3{cs5*b9JVrP(U=6nkzoS?R4$or`~B*g)nwQtHi5S3Oo+=dLrItHquhI3kf zdBYz0$EWN*@Yf29D-pup*Q7yMIUqrKRb07SbNA?Q^$0}^9Xa9#2)W0Rf}Y0Q7Q*qh z$1UC*&NuR7yH!A+4*>V!>Sn&2fdkA@0ioL{vM#;b+UOuV4Fe5+Yea>&H()ehQ9L-s zpm?(}?_LqO;aW%E^(IufF1Y}hqpi^qmAzg$xCX;MY)rOTr@=dt0$^BI!XiR?R=a_N zbXc`V<9OA|Vm|Kw*&PdjLSx5S($d39`)DdV5``~`;(1uscQcI=%=!6ww1^;D%aQ0s zf>=K&>cT~~&srn2Gw{*d zq#p;v*`mh<22*$LtLvT?f{#HhEl5gZY9${PSjJoo3Lau z^-*Dgcku5bxT%ewc}{VAe&*X)%FoscQ0=N6DDs);hH*8no`JIW#NQeB80^`+PDaiC zTVcPo=|4T51#Jacbm4_vOcpA2%d&BTEZCe&T6nqCKeb z;H1#(c?mYT;1(Q@*La7n{Xpf3NP3FTu>&`HwadPOOB_`R=;4-<`?Vth7|$n42z4sg z)Yr1!Dr>7@7v%!vVPIzGfEZrUB$FZP{@90XL*wA6p@n@(M zG7I=}BC|5Vpcob+2dG}4K*znXn8TQ(Mj4@@sPPgP`6OInapKg8FA8~M#_QF-T#)9a zf4*>UleUG@v)p#X);!21x1q`#e?9;~G+1(1}?)NocJu)3igh=LvP0weJT>?8~&j|q76w~`9_NS%N+27(D<7R zCZZ>7n}fGc?CCx7iE#LAF7zQx_#OPrIJWtM7_O9D#pMy$s&|Ms(7IbXtlhSoS9kQ- z2NWL3YQfxboQO{!VDOk~P8P6FhtfbUT#_&_4NMHeO@RWN0SjXw(90Rm0BtTjF3 z@-Z5!XFLm|@}h9SXrQyEo+wl(glnuka%I;eY?=E)aM~eDu0IK1RY?Ez&WGtr&!KmQGT4xmBbT zBcEFm@aH*LMTbevS|EZeM$LUaUGiG#LGZ~ZF}?`+-5=nwbg~vl!45Peu)4L{U3*UxJ zQ@l@1xGCMRZ%Q*U2wIuVvJ~A&P(5e}=w|XJX3RlmIO=PV0FF^8FF;*$n}7&b<#mP` zx#*y`aj@GyV_F|DD`!v%D+GFE-E>X#?B8*glVH?MBHsc^JE$8H8<98Gg3sOvD@FOr zys0gf^o8bgq^m&VkMmgc*3B_O&DE?R|JGFc7ng+j)PYXh&)mYm_gIQmo=LLu=JxNMBXvvCpv z*|(ALK`jud#zm1a#59*5{7#9nqa)+?#rkK(RcaoR_0j)>dVxJO!tbYP05?Mn9am}4 z>Fcn}!-18jbqKWIYXSW4CBNv8&A3b00$>0bh(?tE^pPqN0&|meeaD!FfY5|Jv`%~KjYLH3GqD&uVhi$sHi--Yt|^~G zhibjgQ?ns;7N#TjT#(Vm6!eb}+fPzrrj*f0op*AAEPn`GOnQ6HiqZ7HDeLJLI{(1Yx_+Tqb&FF88g z?9%d!jYN%P!viV(bA(Ge1>CF94WWm4VL^}tm}Odc z-){m*{R!~-Kk>upcMQw>3Gn&T&iVxSd>g=LG{Sf%R=96jR_eY~K4B7n!X#b;lh|Vs zue{CLUvpq!a&kR6=tz?jwoNg-(@40yW)1nT1vc!FVpl)UOL2W~)8I0Y+*>uc3_SIf zf}Zj%y;_r>AW%O+pnift)mA=1p#Je7Q2E<>eD4$HXr$`NbMy~~IohSpy|ezA znpv)eUKK}3h_vgSjylA8^I!sz{00jPKW>`ig6sc=&YEvD3?KlLKz7w$MXYtRnaW*Q z3;LnNL~5|>tgq@EHI7Zo5rGXZU)Ht##+og(F6R0%)4H5dgr-iJgOMe?!12$~MEGO@ z$Phk$a8$WdSJ`LN-XzVZr;bZa2ykiRd!q|6a1tqnV)WAq1hgD|x2O3h(6TVsSa}j& z&?s40wA*$HAcs85Q1LI~Dzt?`q@ve%y*XYwa82`HT66?RG&s(4;s?5&acd=E^iNp# zm%qXw;p^Y}e`OltU%!BcqJje9ul#z%_7n>57q;6CXj=6zq+cgx=KxO?>P1K@bCW%QNx=#;v`HkrgP2}&(T(qig2QCWnBWF6f#-^_G^wO==39EDbG;6xo@X;My zIldhjvNvVZ1&mKBP`dOb$el|;)aShA)$Tg$>0*QM0FePCGpd+P+pDs1axzY|56d5< ze*$9(9HWUunA0u8yv5zQAnSu;2qsHYHv>1Q@nS;iu4!57L!@e6(j>u(wE*eKQ_hW+yl_cOL&>koVT$xf$rz3^lr=9Fj>+}mOk?L1 zq&u^4tPxtJ&kjW|Nj##>DQ7-ln~$9jo_>#NhLe~g%LyXhlI{awzq-%UnO&fH0}z%^ z4S??9^9`7Ih4#ozM2`i#3k0t6!)7)oePMEXJxDV0uxq&zBZl?^(VXAJ@&Dcx6Pb)-d?xDj6h7`DU zlVw5qPM{MPaDeD30c`+90yPVgl#N6nI7Y-T&nQS(92@~1Cf+ss@J9A{q0|HwwWBv) zwqO!<@<;w0&mIXd1dvbI@w2yPOQ$lg#57`tH-6KQt9wnss zCDf@g`r|KAKZgaJGCIB+A;u>6l5+{$tZS(M;rgHBU&8AjdSCathdPbxedTZ+EgXjG zP%^haRGbbDxk1g_#OFx8231e!9IfNpZmJ0YphYdj_;38GQ_u&W-eB%zZR7J6^Z_}; z@H_FNT+|Z+D8d*y6pp%hp~)uUnJSyYQNf3USj^>NG9P08 zwIMfw*0XGz%QhBxp zX+ziLf)l}DdY4H)%)wK92nJ2O#7p7gC?rdcHutm%Pl+++DKAwh(zkxBW^u5cmKGT>u-n8K8h( z*QnFzs(owNHgZM({`)s|2zmH&kG<4kttX?ae59x?P?$yGg^{9KE4vabvy!-8pL&^e z>qfC{`3<5*~hp0KNtvh=UIUccQZo^QRQ?{$X6xKZ-g0YmgjH zb%Q!?=~FaiS`Ea=Md9<>G<7Lv$~P!R;Ps64$T1p~KJLV`l1e`^>LHx=?~LOOr^0cI zpfYkuZC2gkQYE-nKHk->7}nfM4sz12!e4~qJ3X@rJ9I1Hj)A2US246Z3TPME;d8LK zrA3ApcW?^BW3%Q-3@Znx(aFb0-~x{tjkS>xmsAhJ^zg=lOx#*lsH*`rqJUM!c{bW+ zBcM^N0`ujZ0JF*BJm*`4l=m#~?c*PTPMT#8Dkgx33f9Ctq;Z&j+p~mzz-(|cos2NZ z8lg>r`i$RA3I!Y3#zB96N1w>gq&bcByBy}mPbh;g>y{97An&snOdHVnRXdDp!K2VT zV;l~JX5M^^K=(l}*296#s2u~T=|P8HKVW2`LOlYbz<)CW1!V|mA60|Z{JNZm;Z$QD zcksc<2`Xj?=4uWq$%q4Vp0#zkL1#lTXSfwV_)ZRX%lZFw=sz9$PltZZLx0Dk-hIF^ z$mAAC<)JuE&B)OfDVxuMe05SYoFMRw!x@{jhoB&GG<+ke1NiTE?+*8kLLZTD!oD<5 z=2AHwa2-3ubklRJ1LRNW9YAje(Pbt5zvuy*3xN}w@+Nw|acHD>Zn zK&=8QfP=yv@r=y+i5o_8v`ykplH(#|pTW?e-X5ef1G@m&RTGWfm#7oCF za$c`-DWk(k{o=mgwjYOrGw>c^TMI$s$`7)IZ=j#Mb4xO5gn46g6L4}S;Po7Z>uCg# zq5KK`e~2#$98{Vlp!!FSrkn0pXdMpO zBm*}AY`=nabRq@{8e1QU)PdY^H))_LYyaB7HHOCBpfz@7 zeb7jT>4~?25b5$)^6vN*7obUy7z=uOa+bXLC02aXJcL=TMsGD%J7-8v;jtRL3AoRyREygge9JCN35o#r`gpG)=a=fg zw_ZehfHKY*9T5G%ps1`=@U!#@CNzXYJWElmAf_Na_zp&9vif8&8Skk7GeFLqe*?d*s30&H+ zj&Y$V#C=XPVMEd6Ysld)fQcmufG+T6r=wRU9LDGV*=sOi zh)Fm+8YF*rZ$-!oou0W}CNE!5(EW&Q!7IJME%lAti*Ih-b6)d4UoV$}eT`f?w7r?VM!B?F$iQ- z;v8oj(JOCG!hQ0nJ`m~_V#h*7ax-g5E$6e2$hxD>5|I)pY)*M3b`Hz%jgCYfy$5?IUhZ3LqqqsXqYh8@P7d#`!q`~WPKdmZCDHOR;D4{{Js8%yqt_sypQRJM z4{~gq6=(E~3|RDUe5;ZNT8g|0;`wJk!@+++sr8Hm2Z2TN3qj8jwg0BuTKNzoFojRo z$)BH7R^um+pFi4SM)i*-Mu%whXq5l4NGGHOe3Oc6Mc~btv`y-jdNXoA^{~zl3y`o= z33}oh`YQ>N$ax8>x!@sS$QE5S_CP$~$v$wi9nQ9zULQKNPbR6QTmcuSQ@?coHWGcK zxW7V8R?ERiASUBCIvvA{bhf*gU+e?eh~7#HbmD$0;Tw8O%jCj}8e=+N}3j1`0eY(Q_Ghbn|PgmHdD{Sp6?5-DA*LC%6c70mnd-I0pJtU4pNF?k5 z@PX+;4^XOR4T_w_5q#=`(3 zY8kz3ZRNU`{LhoOZ#?*0_?08-c|Khz;^K!vT<0|ux8UL8A1>J86cajj%%AB>oJ)M6 zDJ}ANEO1b`$S?-TF?H$wuD^!7*@_A%kc^BYPmTFC0AE^rR&+bBc}BFJJsTeGcNHb0 zFKv|OLo;jAI;yZ)f=aj(dA5uqSncx)E_27*^Kz6Rw!+9gogCfH z!Qq6-ho_L~49k#_qY3Ak88G$IOH>VUKacICIuC_YnDCL-afIh3peNpJ|^R*>~r zdoM`E_RVkzSM_?i&^Dsl-h%9o(DpR_U^fW^kN6aw31@GdBUrLKZm@TjAXOQxs;~*h zkA*%kVGTkh@=i-Xv?`%q>(~gmF~x-OBG%$2J~JaNRHHI&hx^`m?e_Vt8f2lff$k-M z#ae|WTx4-HS(cuoX5j+SAE+Qat|@FH=<}FvJMCKf-3Plhhghwhe$}uYy%|%Dd za$$-d-tK4j!q5a*0Mtl`sX&B(rzMZFmBV2;TL99TJcYw?58BT-9IIQObEw>Y)>nnl zifRNnTIOOv%&I>Gq85;(?wki*LAMfRJx1y_i6W2!3nKpdnq9|a%4%QiTi|(xmD?8^ zZ?l^gdm}1;Gb{I5gFGJ(xj5aLuoGU<{TXHIiEa<3zCWXS-L{hp#(8UULFIs4WjgvQ zodA|yby%FEAImBSq@`MP@;#!F+jFjX|BTDK4Mr8vN%sY4&&S|&r73ANLWL8|+mK>X zfP?1UHq!9R0k<5^aR99?>EF=Z)gg~fqke@zPuIZPSys4XJ-iH?V*DR*?yvzBZ z=A_yG?)N9HU7BocoP8}g+=Qc93zjEPk(9{pK}~t#GSmg5PFIqKNsvrPcDhrHV^ki* zEVt~0bvI|Tg{~cXLVN0FY_pb1t8P!;OEi!TOa(;iExo+1&;tyx(I5p}0Yj+*(JYII^N#oL|K76z(aCwk^(aL3%;1J5mG+ z4aEaY9d-L-OrgYH>qeo>Zh6q! zAURYGuNcLw178*7txGn+BHr^6#=T@P7{r#-C3r7~{wahubj{9qq+Wrxzh507hMo%) zww*cwuU}^qL@dDWsrM$_TDZ&ZU@vOaxBKhO%ab*o8zP?u*TBkQK~VOdTtq20f_CKz z0avrYCHFF>;%fNm!VoyF;;shjVqC`o9URTU5z*O)a4&s?zKv;oxkViMrt#c+ywCdM z)~y}wzBM;?R6E$#8s)dbhW3RyOEVfqhb4RP;%5ZnfK8;iw)8rxDTNjp6#t+)zq8Cq ze0iynL|%va>udio2`K!N4mXKx-Uf&2?f}%EILvQ3WWS+h5bJJbsn@!R_sW70YHz;$ zTk5DRCh?GjDi4Fl9UaM4s*Y3zqz{=jVCX|>e-JL2ESNV;jQCRLD4A2tJ@=B5ue~cS z3&;8gtu)jr+?JTyKr2;O)eD6cf)|&5`hzKitYX4*Kha6>lW>AAPWLZJBfYj;SNs-A zp`dQ-I3Rjx>qh&cxcE;5p?R~?_gIRR*e{ulfOZ^M?3uJ3d0qjX=&i)#tOJZS^ zp!g_~%gI1)Nio+Fh36zNtuhjMO+^3_d6Yn7$w$C|zZd{97XqIIlej)t*l>AR{irQY3=RQ$1J?wW;BF4e5nY&MU+z5x z=F~!ck=Ufs1k)2FczDJpo0wn0{glmzqpkl0l2^*F=ifrkdhN6IKtwBNdk7L9$>aV= zk)HTrBd_9Pc}D!EBA6TFy1U#}iMRGHzZ-8>JKEBnNhpMRkeJ6uds^c!9Ta)4!tW|F ziF&yQfTZrsq!V&5MkiMMi*x%>W%0r+OoM}%L_FeKP>O3d2qqe&Zi?{~r64keb8rtt zDKq#60sf-}y!Vr8G07AlmU8{=FQC;EEpvEYl=|}ly6Uhq^9DPUX~V{zYdwR{t`mbS z1DbizPE5f`d2R;-8jYTW33EPR@?GUZi2cBtG1i6MW(315trePsM*%)YgmE&$iE@5N zo^7&;S&6)l7iEmx>X{>&0PHXNdy%^=DEA>>h4)GV4Vh2ui2?^0vv4Njk4EnQE3X0W zMWGJ+K~XE{ZOb2^KU6e8S1cOU?)=n@RH)?3KEOpuuDKo53({B)FUk@Vb>IfWb{)UP z`<2cYXQ5&iXPPH1p05UOu^8$sBoGk-n(@G5=*C!sYHJFOUS;4)E7^e5cgQz8%@83O z@`NzTvf2A~uWZKN1-+!}K(vyJyz$(IU~4UCIouc>=^U$N1?T*tLWMn&V!|Dl0qhcH z@*bgo<&PUQyB{|cV`(uJr#_sac)ZYCup)O@tcza`{OJB&D{VTiq~yGC?F%(icFzk} zp~>2K?ziD>Ts3BHtG~eQ|2D#^dO4`%*UVL9PTKMec1Yc>M|e=-Q7p<&`c&C@6er+ibv&?KWH@gKw#r#T>FL!a?wIVLyH zsyrKS#c3k7d3Oh6b}OGZa#>o)Zy+gTqDdjSkXyMCMyfy_qd>3H(sZypZ>`m^bzAo5 zI6q$l;Hy!|V1p#gWy~(~9v>JnHk>o+Nxe8Drm&fPaPJ&C*ev^Q>C+Zmk2E1Kwe~ul zA<~ZgAvtLc^1XY+k-(&dT1crAxE(dMdIv#Qf38MEZPQxT@j-M2A*+0T&Uvh%{s2>P z+o7>+$K~`9yDJqbgCVoni)?s_GD0?z9+Vg3&C6H*0+jjRgQ2XwQ^Yc-l+!)mf^VLc zB6VF3^VD=UORvEUjz(UzLy~O|a;~2Xo+|k%*b}5Ca%#m~ytpG6JSvw|p%_d-*E$F% z+_fKEj{^dPF216BEDGHQ`Y*B?(ri`x#fwFe3S?Wx7JLqBOKLYD3hVt|Y>(d({5W}1 zb7TU7lFTWEC&WQr65rEtm<0pCr}w%^+};4H;>BM0bnKj)JQ#^AfIgaWXX&JAFJa^6 z3B$duypwVYg?SHA2MB9BkO6agc-Ccz_1EfI-b2W>&!`(s-e+d!;&4TL3s=(DW$6o1 zq75Jbrrx7)#dJQ$U<3;MSk&#*r2r&cXK-+-sSkP?hJf~<|P@V z-O@YGhE}(#)~;6@G#!X|CTAIh9ngr{$m9*-I4*Zhp}W6G*KNcB|D`$JbFj})U>ln3 z2D~T`1U%)0){LQ)>^$nbwn3__%k)y>2yo-W+;k`t_D;aV3%A zMsE0c(5YiQX`S>LIHorjp?;jSGC$bBXe))Bx|^^r%+J^+%I~U>?r<(3O@WQdu?<05 z@L?*895iSqmrkzI>l&Er0=#C=am0X^XVRl1^S}}ui09RztY&c6@I{Gqk%iAG<0$k3 zi=0p3ePGrZ0)2V}i^>^dh8N^2S}`rXC;(d|$cD@~ov^2^_U`~Uxy4Dm#u%arSR!B- z6vKQXjI6m3{Hh4Jp_4$MQ5qp;DDBa+iXz#2(UJ0JwYz;<33H>u?p)FkzK@yFnmZ8h zw?-#%J6H?Q`H73S9(WF%iYE#iew2^N$w}PLt}Yj= z>E2HVs!_2muhHN*O^j#(lb`UiV8hcz3&Vq_=>$&Xuqx|XZ$Bq-!F4xq)#mYFob&6L6N<(UyisRLY7Pwo z|DJF*c>)?i0_&{_D57q?wQYt}1`UegH&r%KL4sF*v2V2129sUQezc_%I!K-xVW}EY$`&kzpxcB#-Z}e>v}0k5eYRjD zBTf*7hTWS2N<{;@1+k(QVtTD?2bZ#}^}4z!C*Gt9^3EGn-O=38goA=|m7Sv@Oc>-e zg}?p~26M?tjylPBVQyor=4$a09989q>$iN9-{5cCD9_9Bj|KR4Yh1p0KhK~vM%=c* zD{}33$FJ0>)92swVmP&7@J2;X6_CV^>lUQ3)ngJJYXruMTh&)!6Fl3{2^{!+c1`+K zjogea%VLbHvuq{LhhU%KhS~mnn9kB6Fv_uLnORpv3$e$aQ4=CXBbRk=0roK{YATHB zuXDZy@wIMD`4jY3Emy+V^)E_#bJS8dnw2}T{-%-_8Kkr~3VC$+#BGh9z3%xd=&{y9j#X6@1|jz6Nt$cDb_ct=&GC>QbKNniYwRpL0h z9%6VUcZQDiXx$5nQ_ z-mQd(R)$~B36dd~_9$X>k`57*q9U;$;)q?*eCV$J>Ksvih8LZu#%%FB93az5*I9zI zzXs=n!vp~m@E%2nt|og>n^;l$Ak5Q?AkpQnAz=FpVTd@I=l%p(ca5l-A3qu8wRZw^=&jY826){o=)k+NJ1;%eM zj*2FX{~ zqVenLJ~1t=?QlzyCj8&+&!=gzNGE;xqc0AKl}FQ?r(tR?@QsP_1?V7BNo%hoJ%@PI zM73&FrU6J^(`HC^Twq`O*F`$bhy3uRSG)w9CFh_F(~GJAa`>Q0c`K`uT(%?W9mOw7 zw#L56@An35)Q%_fo4lsm3bnG@3OKK!t1bIDpxI|EHfn0ZE}Y8d@Q;8ZDV za6L8u10Rd*w-&O0%p<9bey8#JVSpLw1xdEL2BT~^Ni`X{lVqVk(x;;D5(>BQz+oh` zdI3@5Ic*y9c~H?X%2{ z?>dsMlM_~MxY^Gt;c8#}<;h=m7{N%aDw2sk&?H)|W=%QbZ%~T@0S_I~4R<*qIW-^E z+lxg`K7d39Ff-b$*LOZKP>XbYQ^#$>B$cwq40awCQdlF_x40J{ai+uKoiGExK{3D@ z_oc+SB2-eAY;wHimQ_3qY%M$3D68}B z34}?*pZytZTlm+rZC_#VY;ZB3PRLCV$@K1BbB-G)`svnl^i&GxblUcS7{ZbqyH37w z8=O)u$)Tnsb^}+}ZT`WqoWj9g0P`Z`p{(dH>TUP=XZQVQc<_n^>}MZBzP+;z)84Kw z>M8C4B*0l&&RZ532=JBrlyuFWHCB$*Oui$-RwxX7i=Pty*4hTG=Ys`CsQ0S}Yzuud z*m*v9)PFQMo0Ws7{d78d{*)tH%KC8H@Jgiq-kv1*ZAnkt*?hQN){gg2(4(BX+t1E& z$J@Vt^KP5M>%T}g-IbF4^LlGb*$J`1V?c|XW`4dPB?O-IkVsIAvzFR_qpc#Tduqm;WkQ2=hD-piOR>tZ zTiPr)+w8m0PYg3Y(k+F(i17-tW6U#Rt*CG>$6?aRA2;6b{J0@enp_hfvPS_pIgAO> zzb6DfL%nK%0c=>dW(W6R%f#1Qjg}UgOR_2)PjgMy2Ia{ShlFr}%aPoW8uMUR46LTn zPX0C*XRI6Gcs`~LS3@IP0^@%TtRNHRDVZ}3iGF>=qCaiG)fc(Rzw_#|k2?wwy_yG{ z24Rj>V=(OEPmg%R8ALyqMBm8OGDp=Tniyo`qcI8N^^k z_is{f46mE)i0E-R=99+GVreqVGupJ?hAnS9`Vl&=Bu2bPb7w}wZ$Z_!lA{$S5!n8^ z6kQi(3r0^Nvgru=w|hB(wetjnik(oEk0J4`iU#!$kAEVGP+jjh^oPe8tN>2NzpgaL z#H<|gpsze~e#wKynEA^LlG6ZFGJXGV*j)emaRUXH3ewQP5AJX4G0woO4UlZIEmk=& z>5TFcU<}+ArfmUhg(d~m?nN=3e$EK zSV-_8I!KOgqWS$PbUSF>g837vb43Sf#FlN=VT+NVG2L4StKaA3^hn01V9hfbS6_B0 z_a; z6LzW^Pdli;d9_f`f`DK#j%h^hvS?h);x^Zas~-a%+Zj=_^C|E{#%Ng*ru}b^|$6J%*=wwn}!5-tlEMO60 zy6vm6z_-J3tnhMujn4V1Q1HKbg_phL`MEnSM?6Mec!PX?pQ}&Z^|8DD4rAAnmM`?d z_3qBsqk9IP(kRZbw1fk4+p@0Tv;c*lnC}Xr;$KB57Tu!{3v|Pa z|DMy(jtm9-Zz`5vp@xF7KKxDAG1Tu+Q{qY*kZkb(fuy~lJpgY3@HNN_0BN8gHWK4e zk-@h8dFs8qXkf->$8g@7BomM1H3xXVNFFA;;41)vvs(^^2W{5;!$2?$ znc0WMx1z?5zT4{*7Q>Q5$_yJOOfr74=taTaF^HJ7JDFXiTjYs7B0M56);HRLyCiBY zZj3zPc8hBo-@a0Fse7AxVtb_rM&zO61-Y~ZpsVh8LCg-#6F8ch<4yB9xww)4DJVy> zE7?SpY=Rv#hLovKeFR$DyIHEag~wZGJ2zidYxu-<+*9fx*X0h^^;Bx{0%I`Aj<=Y4 ze6@Gdwb`=Z}1kg|31zf+Y_(aKej(b(>x|bVu9RV*>i; zRkyT;hiI)g01SjqfNx(y7&u!0LGb2yu)-m@jWf)WmTo)>`7#U_p|B=0o7M@%*O10S*~*H&bfz>S{Xea+c#&C6~Y3 z)OeF2TSM5GIXL%n5@8A+ATKEpCOIvvv{q#>bRTdcA?J#nWfVlGo)r#52*>tgj82$r zhGCXUsdjM!Zp$EyLNpb68iPBs<_(7jI!ZEgUKwf`v!BTH2)LwUeQ5G^$#xzvjNH6& zWgFbb)|Iwy+`MZho#@!XK`SaPvQmJwmq2PU=7(8i$P&XG0^;^r_$(KYdHFknHUO_Z z-j`BRbj>A(0p2_=h))D}QMW$;d;sF*uBvo4gLuXYJ7YCWEbj^EpsMV_E(8i3cXYC3 z(<`&ZX9v0#X?IWlkb6!nVO@Ktl}LmJLh&dF^h5hol^RZ8bDED`);ddKqzhZCv2@DakC`0{5VExk=r! zI?G!o$9kNiI-ll~6rV1^C-6514XMw;8CdiHy@4+t;E{C*>jzG=b1>CR&%l;0j}~{x zXdj&qGe4sJyuRcG{Ce*o{N2jMDdyGVUxOD~9r!h;5~$<2H>O__6*Dko6x<+@jmi3r zoVde+dFPBZZmNC{0md82>{s;xD1Y)CtIScfUVr{2tJtz~p`(iwJj|tD99u zqo*w5I4j9@82G91w)}>F50}|w`l34psyA0CL8bxTm5BM4ktJH7#@zKiUQ8%B2Sbkg z3}S|L@CA;f$mr=0=BxiZd0X_6SfXLn5DUrbg`jWO=uQE(zdwBSDtYtvH2MDR@wX&c zVSXR#OReK~Br6OFF*oq&P^04rrgh_M`8_%^`g0@{gqsCt4Kupy(O^#=jd0^RZ0oSM zj}LbDUmrMDPVQ~-M0h%oZ>s7@6t;9%+}F9)3|VKf;~Nd|_^bVp(#PqjtP?!8PH4cy zbdBK>_3H~KXV+u|2J00kI$MjLZdef|^Lkk4Enb|5CwnJ{5iRMrUz?SZkO^K*Rb!kR zd-!`uQYtGuR|lqoH7TMrEYpr~C1Osm>wir8)JuOB6V&aCi=C2bpY z>57vR->~)4-gvnecJVSla}(NgPeF(gxc_CN!A#Jbz7f~)l75dy#6QOCbJGZ#ogwpc)aenQ-j(0uYaM<^{d;o4Giz=ppdJ`EBx7QyYESsqLzVyD7Ztg&;C=cX^B^dMm4i2x^V09E`?c`rf7bj(bsZ z+^pGH)3qR^M{8rO&|1aawF}cA>SnhMK(o;p`a+5|13e)H9pIzk9W)&rqJg&=iva5a z5rmC(h|RaWpFfsi$g3fbvvDW2_qYJw&0Y zfWO`crkRBmIe?r%cFi-Qtv(R*n2|9yJvznKKz~)eQ=FBXr%LjgHT|J>I_~U#-C2;3 zvSKZMCgENer<1_pB#cvPE}^@Q%HkY!atI+taWLZUn9i*ZJ{gr+%_*ob#{znFUI+cL z?iY?egKKs`Hi`=oo(jrKb4Y*SVQ zB|U|snjTvnDMk($4CcX5E{^Kbdv{Btfrj4Djtg9@=>&as5isSv)_^z7MrxhQ zAx}Lxfuqq1Gc_f9j!91TfK=9PJWLt@oCIEkaBCpyjhHq>Tz8TLKj|GE^U*at)n*ew zn`BRqSBJ~@;(hpUw771xJU7>}1clJ1)LgRUaVjDzZ^jV=T>w}fJtHJBOnq}>q>iai zDHGX-;azB|h9ow?ech(yn>w{j5z930ZhT`YrhcbYU_6^Ih?z-R5T(AS&lW`TxF6R$%Y^(zAxkRsQ;K%3)g~xXo1^$}lCwr-6lbVJxRpOn*4*H!XC1n22HjN)E&S_eE8|G>?7=} z+pe3b5`$A21s~ll*7qfV=76r5RY4nQtt6z4G(fN919pXTc`t8xoeQlYfO-CP&cN*7 zX4ii+J0fK#X$FGV)IY>wHA96bUtR~c(12w0K5GPuDg9MD-P0!+WWOTh=@1x6T<-i2 zCIc)D(R^wyp3lXQY|3oYb5K9exBfkXz-I?TP+$GHA&cqcO6}ms4Z^4PBqS;7^nMp! z?xT9yu518*c`|&IjbkRg%C;%4{id0ak~`WqqBXP)vmX@u#dmR&Tj1+QwPUX0)?j7f z&Xrw3!V5~>yO?M9%x@^`tv`%U0^c7*;0u=alhn78)YnC`|C*wo;iYJdPygQ4Tbj6%8YIX06}q|--|Sh679xALJoKFa{nm7V=6suL%k07h zfRO;M2Zu_6+2b}k*H23dV>YPmA}Ya+f&5!Qai-H0EdRDiMBOuW$9zjc&{e^)5JA(% z!z?(I_88paRNCs%vAiu-k*%qoA!4|RvpWuLl&whUypc%vA2ol98K*c62uH2)5;9uR zx^^nq50DYK-Ujvx|EI5sGd_pEOn`8tZ8hTxjdr2B)r@VAY@MgbVP3+%>Lu@rOGqL7 z(Fgv=gnx1s`&XD0+Z*c)np4nk3!>Ang}G#Q{rbnS9Z#to?Y}wUOhqe#4%jLdXU_c! zW=cmu5LnrWTvAlZNY<=m%?Wxn`?z3Nm;8XtLmrF@Rg||4`oK_6`U;u9G+zmGaOL*k zM>O(&kl+NJn1;KDknAtO7>A#11s`k;xs;fLP?qbg3BCkFrH{#|oFapQy##itK2Bj$ zmY0j!Dx>CRAj)RNVFxu@$6W@#GSRp>Yj`DMPBchL%Hrib9HdA@D~&G$OHI}sS_0@k z6MDjFgQz)kyGR5vtOUBDDo4@0tR?f2BVMXE8ICI0SoS389$x<>Y1OWiL<7Ak)p1J= zIZkbBpa;qykqw))wQGLV^c`kN4McN=$K#sPw5_tDERE3%9g_4hOO78+a&GUyeP6qW z4oSJa1IcWEtM>0pF!qFBNl4xM^#xQI0X9j>)IIvc=PASe!$r(s2JRtx{+?2Qk&7RH z7BFNJ054@a@Y}$~%N@HNkFpE6*kvG|Frjc+If#^E{AREh@)@UB zGc9jozRR-0beCI=EKRPTh}wro>l69#D5CAkr~_Oy1R7AQ!XE`z026S2+<`=^bQ?ec zsuizPdA`PF((xiRjkI1bi15t!%cMN7ljDPvQ**mmj@H&i_!1u@$^dgZ=GM^a8XRsJ za~qdn&FGx<#!LK8n&tAmd0lk!?OBz*&&$T!QX4*|wUT0}XwD1d3VyWBiP}rl@tN!- zg9lSvFHY3-wo!Q1fiEzXc6ZUZWIdrg-mwTulAhWZZss%uN!?2}C~&gR1UL*U(hKA& zMQ_atRp_`Rxc)d$yn$$ zCt*s`*jaX-v$b;!hM)@Uyfj2OZX^VDo&b2zzXCzNWAPxzaK@?Viv^&NV8bZ-GfWmB zZm9(w3CAmnlt$PGpQRYTgMu9j6ut?967xQV{s0SU+el5S7;vWl>U!Q4n$eq6q}UaoqDLo!F&t%XCh`Hc*Q%ntB3e4!5hw zUR3!XCLoPC2{<-`<8)byDI7O)TlVBKpPjxs`7W#S@%2~f@G?VLbLsb3%tjsaEa&;N zou6#^?qyXGbuegzGieL8fHuRd;>3fhfIO3K7=f)Qz?Bvah=atu(Wj7Q1}c1WdU|xC z1&CKxT$I$ z%V|CuP1r_o$p+=L;J-1{Use-Mw4g7gVG=Z?lEZCYph7DFw&G`o7h-N9SZUozyn;CF zmt}S31lJYCtc~_sH$B@Cx^+x-P_m-XA3`JeK07-Bkc2tgYkz^#zi?x!I3%040PxbS zQ(?L`g3I5;H=R2qPy_NvyFJ4K+ee3 zcF0Ct{Kl<;`6#`#JtM%S4asx}mERq|LY1W;6~~4gYC|%%0G?;lSY-!w3lf>y5plpF z9d79Q>(x+6l}us90Q5G104E`A7^Dl=za&Uy&;DStfu+VU;@=VvYV$KbSy5-}9mHHC zF#&_&u1~?BdPKq#xK!Lt2kN5i!zyp{h?H>y7bT#EqEQN-uu09|EhImNvJ+6hmwy;g z(H;Af(!h@jz$k|#A&|J#8Ps9t?(V{@mL&1kK{QKTmeRhl+zrc(ENL87Z%$B544B3? zif+aC=*a>fb3uWvy&w*s{u zN5LQ<`heK{hoj7!vN$fwxrs#MFDmg8G%p733U>ITWE1+@Li%8YKPvdrDjs7#mL}xjXDFwR$>X9Z zDbuKj;?~nW%PLUi|4z3!Upk8!=YmKlxUC7f-rI@Me>vcWsP4%t^zXxMjAV5^hId4- z=@F0xOmSAZrE^lGJ2y1>fTudTa@T6U8nM9~{KuosH*TKE1gC*5x`&vZC;McJEm=YU zLN1?3URRbK1bzv#Xr!u@m3;~MZ4e-xE`uv*;v%2X(f7F9ba4miD_s{aek^`0cIdg} zzJb66%tR&*rCy%k1e3>%rk>5ub3hKm*DdUtO-PS{amyMx%L1Z6s&H%CIXAhLJfSvc zps+!wRA`sPq_@Wp*a4ur>Q`3@?V0O(IG;4#mgr}c){KQkLk~s?S0p5g0D}Aoy-}eb zw+S@ZTFP&B`PMm66*NA2ekUp5)CXH)4_C#b&$Rrk_IMkFi>ryxN?l7hfQCrS)fMgp zwO#}SDByxQW;}w~1t1jU*#P=b*na4R9&9ht?MjXm9PBH!>PCMZHrA~{#|!~ zvhf&mpu3|f*$u*uI7jjekfycy#i;qe+;9*YqxT>rHb zH4wjd^7DeSf4gmsAN`!XNVv?vI{;#<>R@=-+!Y&}CSFh)Zl=MnS% z9D1Mx3hcpNJ35RBDKotV38iXGygMPQaeXxDM(Ah8iAF%vJI!pOy!rpL_xF8m8(HHp zzW>6j(E9pq3#l;}2uaw@-X992<=cd?fwbSf+uo^c%b*Ke@=7*@cKhCca~|eN8p)C| z1SjNkU0p1VX3m^B=ggV&G~CcrMGADaF|0$Nsf`L1aZ-m8W49~!%XaB-tl}&jAS+m* zq1f5N-+ePYwivb}(cWwYOss+;LV0RuBxuAX7>z=JzToggCdk0flLR=J3@8IJfT47Bd2e=P%$rMw{vfMZ!T}2-KRtg4 zRi$#rxC}<5Ljpm4EyG{I&`XIL%H~0_t>VdRh*>iq2w3p49U-pi5kW5#Mc$d|BXsXf zW-^#RAvCp!sx<;?COY}a$V3t3*yrkUfODCH!B(?%s*LrVz) zj)o|^2b!_ZexV*!ihzcLw><*jtOL--o5I|@5M=l(#3VM2v=sn z=9Z|G0G)|al$*f7t9kXh3HfdAqXA(B(D87;j^N(9ax>b*%>Aq5PM4K<5^i*M#>L zX8OtG^wZ`;eb$ucGO`2NXPu&e*FdU6Z|i*E$J+(=NWIM$oo$@v8f344gTL)o(l(%s z@KSTB2LISkFE#MN8mGMxyBW_J_BGbcT@!K~+YVH1;0(}wc7?aB8Vy39Rws`H;7Hle zE_e^TJSNpfKmu(El$A#g;o_EbPw z7VB1=;Hofeae`cI-wXjzwFy)m9V|QHYsa0cK0!87*o@J9#U&tA(E~2(D<7np9u?U) zLF`V3p{(Qya+wdOI_X~?=3458DV8Aaa5|6+Lhry9vYY^18D*q>Ai=(81rs`i8Z-2T zdF`WA6iAk_5m+9-6Im3GI0^bT=ce5iiQ(ikr?=%78ZtdnRad2i+~{{^(@C za`)k=Tc>-xzvF~-fn)iZxx=4c;8B%tpKYN$iajf3i5l)6LOOix=oWHR(9tJ=wJ-Q9_7%G`3<~@C*lNf ziWc$Q(Z6w&X~0=9u~ZwS+rzxbHD>#|y{wwxj5w%~=$Yz;s6bH!iJd00tO^@GDR#gL zM8GY922*}Wu5>_$kE^f;af>hz7!l-E@V?HT5WNf;rk3{#Oh|MwNK=B}<@>;Uco`B0 zkssg>R@10zF2e!r#;4m^bO~vcAw2vKYhwaQYxo2v!XvE-neVSrni0vFsBE)2RkgyT zv@vxHfntXTLm&H9`^=r&KCAd^vZfXioAkDJC`q_T7tbxHho@2RKVr$qpaEdzhW@4T z5Bcn$t$(Od#NT+(m4x=sR(jQK{e!c)IA8gnZdZ-e43#`VZP@3JaC9Gwaj}|FQrNv< zW`st=q}kP_-udPq-m?o-26vwdDG*nVm2JqTqAWnW7OtD{{hJQg3BZ_s4xTRB`~rJD5cG;1p3&TkmRUTDo-Q7WOBCN!(sb6 zR^I>1;0EeGNYAPq)v}!Pu#~ROr%DXpNZ0}5Xe?md13`_uH}Zs3vLy3&ZcJn4iHRMq zO)WhRTwhzqi+uUUcoL1fa>-*~2)0$W4<&C9EgO8?yDtWbX1+ ze};Q=#6_o56Hx5tBuk~#3$AXW18SOj%@b>8%CbV+U7=;g+F%L_XSBQ%{ZLCOT*i#G zL)I8or5B(}>$EL{1fp!Ijl_)Cb-5L7z68}*ed3+d36Oya05>X)9OzQDguCR~`v=c% z$QTHn;q5)P^O0KY9Un*&G#8k$!3>8UrNpowc(J#qtK+L zi~vz*>Io}wwq1inh26C}o|;wNK(O>E&cI#GQS@s^w;4z0UmAnp-0$89)LJ8%hf4`D zZAl^Da=?)dWa^E$kSa<>4hrL|R#MBtE#vseJ?y@@c>02Zsfl}9LomcLs_o2&GoHF( z4*XAo8;zR)uiCBlHapQ!BC&1cbr@Y{FYY_cHE>u>%%py*0K`_5)L3MDcV_2ObQLCX zgjYph31JLli8Zupzos{Wuh4r-IyfZGT^1gabQK99U|~r_8@GYDagu2uO>igLQY`x* z*BGxg6lhJ1J(7J$=rC$}-0N#-bfVgrAi7!@QL(l^4OWs4l1&s3DzNTYfUTfY-SC>P zovT}2AV?pwd9HtL}vr7V$evWQfijd*` z!bI$Vb_-m8F(GRtJDCuTEYc0Y5|)q4O;0Ul=Fp~NXrsDW`U5@fF%RgzJNKtV>b`r?P4-%Vn?agMr^g|=GWsa?v}E?|p> zx@-SNR-NvIkPNQ_2PH5#6MqC5Iekj!hDvE#q!{NU_ynegC_xi(| zz5VZxjt_tN<@DdDXNPZo`DLGiXZYlB8jQs&-c5h`<*YjjN5A}H=+uIaVDc2WhJsk- z1E8QGq$Au=7+1y3y3ONOIOGgBztLCOAjpdMySa8J{kgF{<@F6z6wG_yFtVKE1WgIuKNK{iEG@uwH)*0Xu zj+8T~?eB&O)i6vG9OLBaz-BM}LPmOFfCPB%M?%hpAb4rwWT(dTfRg~X zpj`^p2P2>lx(^($x?n2RdXFLS<-$SvZAWcwBbJP8%tZfV>X*|9q!Ea#O0o7~M!Rdb zvH1Ktz<>p6Cg=r%7vt*);(IWrga*RINF*TXa3>*6$@Z8=>BA#fu6LwFIc9F$H^?44 zsDkbE+90Rf)7mQttAoYC&78)?piW)rM0#FOB>D*oI1JsBzXVrJ#EJwx@X+q%a!ST( z5?6s)bqAtMCU|WnO~X2!1uFRV6^4e?=$Mh>o-1I|hJkM=R7}DRgAli*;A5zCTd)D5 z(Md{`1S`uJ-DR%&;@Y&k=u*JK{>*MtGzEsi$SAu2IV&B6159BzBX%syqW=+>(!(TP ztb4^3S9N{zI31g|C}5{~*T>b@P-@BIGFk7-D>&JSuI4>U{CM4}z0TUT3N*en)2n}J z=156es$6K7`*qgjHAc-|pE>KWd`T@9@c8-=u5t)^Uvt<2ljN}@{viKWx^q!MzE)0N zvcTejGG&u5X{*|bqb@oyB3G4gOfXf+2aVKEJ$?B00Mu|OOR3=I6(%Yc(F(YufIj=g zsI-~$iBNi?alkur)|HWo?ol}5FGLv(^J z@UprFRJ&w? z>AW=3yp0|pMvJr_=eG*^WD}bA&IuQVs$tCwQoBXSn})y=+?mB&QzJJ7NrVa!3%dP{ z!Yv@Y58|MIyT?iYCr;7k<@QO#r2hp03gq(Rv$(hNueYbGV`)?hQcYrU0ux)+I{6P6o;5Ll=>^Is)fj{zuWq13 zwHtS04IP(}{T8cS3)mS1g;$JS(x$*BO#K6T9}HTD7i* z*<2f;A*+QS0?Da}jcz;&18FdWGKAzCP`l|vBriD=yj4g~RbSvSQd#E89L>5k*DmC< zj_j!Q31~$EUY}0nmjyIZqgc50Nw#RXe7SJN!_~4Dp?tP#-{#i^sIQpm-^hN_vx+64 z2qZH;d(Lqy)oG!Ujx|p|SXKodP&dYL9)nfM7t|8;&KZSC)Q<2;g}J#xvr|jn6_Sk0 zeIbzCpleemV;Pcwl~QztV%+~&52eDQeHl}uF4q#{UP306zM-~v zTA-bA7^AODpnUVl1w~z9GK>-M2$hXOc^B=jx8`*w;b6QLN;50NPM=$u*;13mFj8`t zKzR{rDHLS5jzU}cFev$#Xiezt@dONO@f8${(D^*paA*ObvNpah&|w1){qs!waopmd z^_FP0u7=I1zLMH%Q?UFnOT6NU_3=ln=5b0VnM(4`@txtz^F7%@7VlB1%yqg1o zWP=~c8%?EddiW8de1nhUZKC{-eX1NZROyvMz|q~Vl%gmbXNw4`AV(-O517c+Y=`Sw z{oeX@B81*5X~kHQUI$u2iZUIZ)Jy5Y7PL*MeFGCub7YiVzZnQB+l571NnkiEOKGZM zx0Uh8{mDSA(E#@nv>{>SI0v75D^xe4$vNqKCoLKy{3HS9jwfvNnuJ&$-41OX`^mXD zjJ-cPurXtTQWquWw;5arir9lfMPU0oM6*dX&$&@|$*)m$N!mYE2_to3r`ZLE3!*V! z-)eZ4vH4+)6+nzOzn*ag9B7M9he=}vJtV8rT}JMYDjj9~J#GEf#B$EXl;7^4bfrTdhjWF+1h9fHOP zF6Xs)vT)bV?jxNr;4v+oYyhH{F#`5n9Oi8)P+&n_b{nZrml<>qw%$v(O4WfS9EQVRkPTUnwS+s z*4DL1T=U@!L3Ep(T?hsPZyImvvN?n;LdiCuCvF-Tl^h6{F^3q+>T8B8hOiHZNw}&4 zV@Wa?Zz-*=jr}UZ!nj(hZB`6EhmTYNpPNpFUKT?!Ax~w5O{UmO5nzU35@XaBL*ko^ z(4j#6nwq|c1(*!Iek41Rian|IL!LdKgH^f#?+k&Y6 zz4zudN2;ZiUQRtj1MB0o>HVM6x5xUD4*M-q%TP{FEI(eY87DGrPXQFPKWI%3~3N(iBW`8OS=VI#iHi5Ttj4 zI#Zy_a-Ak==BcVaspk7IN%voq7%p$BdqlOUmiyo{AYuisvrbt-><8%Q)>L{kVK=Bj4g#aolbpqJ@rFKkV!c^FlLx!#6G8c9LLJ{~6N8li2 z7}N(k{YKd@um(A!)u*8CU4(Gthl#hM`jQuNQcWzrpN0qqFRc+<0Y{vJrpNK!;Nby3 zpbByZIyUQm@`)Ue;j}y)?MeV4nvI$Qa6=L2L`Xii@eIU{`J}m%ap}o7(+NpqSpt=E zTBJM4lqZFEq)qe{15no^p)yw^*}soF6FfA(7wy8UZXgTHU?0%gxvufupqj{2dgDA; z`i`6Ms%@OeTJ>E>F6v6d`F=1G=Ob?6)Dqb=m`YnY!?T`rdh72F_YU41 zf&u&@zFr&0Yl8aL!m%z6qLN$iLeCDq~=?i;pAPp=8;$Pi3%h zHN^fFj&{96<1z%7IWJ6WnCoaNyLqD>{1J_3HQ(K`a`OKOT(Xr0t@qg#g2%i-hGY;Q z&2_;HS!WK8_o3tlhxE8;uESpjH^8|h+lBQgbjnsb)rjoaGv^1X+E)t2e$Cybu%FBx^SHA-?ktZx%j3@SxU+l#JIn3%lfqpD z92I*Ma1ZNL#X^z!B&3uWu{BIOLSm>ZFdt?h5PD`<9^*_X3sIl^4KKd-K)M^*X~LcSHlNSshf8!F#X?7~VXQO(m4^Q}>W~y^1QLbA!Lxz^e8v z4A#L)da|xc50W<2e(DB_Rhbmiw;u%gX5-kbaMQF-U|Yd5+<&Z_9j1M%!n*QFDg{B? zMKiJExI38OfweRtOc&z$W2_Sag%z-?aQNV3yPXVBR~ESXm?{zW)vd>MT)=K2q5HA} zPK`PU1^novb2vya=^tdUlJjv?2oNg5v%!7bcXHzM;YFv8p$GF4W=T$d}Emp{S(Hv&? z{u{ll8@=ntQ)y&|5c$G>rcy?|3-a6qA}`5v?#JcI55F@+kQ_qohdS(9ZtL=+mQisJ z1tZ7K&}B-KFuhQ|VtJzm6*2`AjdhC8#wgs`;{VUJ(7x8fbj@EYA`ZbjVFWv`8Mz|^ z529SeOJ7~a;d@bVJlrl-&XX~C0o)_ z-!nU7t(jo3RAw~%k><_%yez(OV&yBLb`EEDidx~w0R+ZKB@c}Yz&e2@d>tp?=8Gnn zm{cuG4IM)kM;T~p(kfsNZVOoFOCr{QBGx!?aGeHO{~!F{HMuNlHuFpEyfOidS(Ovc z5f!$YqiQQ;lfvNs>nNQ-=voLEm%Pml3o%_r)=#+< zpCNUnu%GEte3lAd1;RX6?F$tuSy;xX@l{W*yM=r9utR4ZE#KE1Gto&i0BgBo~#R?UWVo=3Rc%w80=*uUJXl{!-SnlGJwZnVz*g zSG}*$Xqc2POMql{u+?fH$g}QuRDn8VRlo5z_Z(tX1{ms$fff2Wqp;u%T{d{vU0BKV zAJOuSp+dXH19i^#Ta@s{*Qv!s!Su7jOvytfJ=s!(A^=}OH2}3eR=r@_{k0)7v`(Q5 z@T_!4lcv!AhcU$Pa}-;c$PyHkTV)r);9^P*Rb&9o?YlC1uV;oiHT6{mSdJySf{Ml| za}9?+?y3n;2fN1AwK2!0lZ7+93R6QN$z-HhFssZrzLs50xhZ#WzTmEnS$D>wJFr-L zxgCAD7W!Y4c)(t20{aahfpvs3HgfEAVSXpUKX$K0(r2u@KR%< zJYe87?<+CgX$v%=;)ldBlx>)Dy+KKR*>kbNuvl2^oDm+yBBvRt3>Ae!bPrQg=plzbn);7ts`C@4wrWk z_u$@uA9B4l(aH)J!Ox^EBN&@z2eU_2@r&+0(6=$qZ57~xqIhH$fXW4o^uxhe73VRI zo>YpA&teHgmg1q)mvYU01q_K5N4i=|Lu1@CYCkZN&D=0z3_H!JCcIemQ0%SfIPCGA z@~7tDZ!z9O73u8Aa)ua3t7_iTIi0Q?^R0a!p=eUx0D}nkhS(EaF|RJdda7{1YpN7j zLR_y^$Urk42s7UoGfM^_7pP@085=Xr z-!4k)L`ukOS~I(kq5lz0kUmAs3EX9SrBaO7v)#jI-04dm=r!(sO?7YFm&<7xB2`tEqh>ZM9G#;9oJ);YYmQ(pq;{s*cB`gl1+`IL z2r5uADiZ_S$fQhJSJ+RQ>xWG)@gSg}sdy0B9l@*W9Z82R`Dm?~km zs!!{#%KDgb+y=h*Z7u{>!g+s%d`hKQU7=gnmqP~MQu02^+edl(C~qI-ZFPB@%M1T> z0{8Y}wph5D2BI2bb&qUIx)@T%+YZ(zRS1$}FtYLZ_!4^Qsnea=U-o#9=BY!nqOp@x zfFVuFIdBY10z?ht>x{J|i);fIwb5*Rn?rCgeZN2)ba?5jzsrhpD5=*sZKV+_ToG+>tS}9$nChPmC*+GM8Sr2V1kvBnsst#7kaHEAB?c_rBvR`ui+Y@IJq=6 z1~8`5&48GR*<^Wg6-eEfFG~2@Qn<6rDO0exXRPib@B8hmT;5+AYCTDR&>UxxZe8}W zKF;tG==GHfJ#t&Rfrt+Tm}Z08p3Kg`G(f~Uc^RNyiaOx1RALnn)8_c*C`R`HtINQx zQE&W@G~j9YdqBP9oYmgLiKz%hXLtt`?n6iN7e=zm8;~(&B*2Vrb^s#!KwCHTVnVFG z-i!*z_PiCO8FmrMv1RG2VcbIl`>OVAnuAj6I3POH9y4pA8%}~cFoSI|`8Io zSc6uiCaNw&`H|}b$eZ8wE#OARq|BLA%7t;pq_x8fdm!T(DFdUaNln8mTOu(;BKD{5 zg`fD{Fn6maq|q9CLkukzM0NpXAK)g;Y^XQrNT?ma#8?paG(W>396F_I&f!l~E#ShQ zkCd9Al_N^^hMVhUOc`D^04E{@o36|Vz$)U{TglUj2dQp22r-pR%cC9xTsxXN6cW;qyL_j*jP=LuEVx-C3Wlm|SYFLJrc}Qv;IN@8R^M2r z2%d$M@4R>Caj!5i(;}#^^Q-Yga8u)W+Q@&TR|Lcn?se3tB`Y^rRvvC-NEsDXiKN`} z4Bg@ibvkY*zO02)%uh+RkSs&5F`=0dYMJkuZMSL{R;H?6X6dp&z0U3)S5St|<>##34 z1n~{plPLE!E3LeqI3Nj5^Y&3b`YN9QZ9bL)+%)GablJ&>`lmZf#K3S+paiy|pFp&n zl$tH?1Rzv0Q61Ot&UwDsjTKKEn^9g?;@A zbt{2WtZLuSq6gTeF6mRdMuy*2{p;H3+#NEITr+~jp&u$V%(P_c>->t%P~}?5=%jhmwJ9_P~Qt@o06#Ac^Sghkub{4%6(9tYTu zXmxm=_@;Y0=SGqD0)TMaW6M@!LkiRIIQ z#|0h(DlwYGu`28U&W6I`@@Zg3w&nwn0Me`ML&;8uVx_y-|2IgO2w{2S}`wh%KMv!(6n6!f+x>(`tv=59HS+MnOxhw80Y@`D2AU3`*3MnjtqP4oJ7< zp@5b*ycHOW68|C85!FRhH*FZ9APjXO*_#xQK9!q`Vz{2^Lc*k?C(TRM9{B2U3>&PT zj@l!S?oUeh3e6%47r0*fY7|^G9nEJ2;29ej`pHh@7I~O<{ei5i(by|^Co5Lyph{oz z3@VgxU7gs8QPbg%*=Y?L;>gEjJH=$E=XN00vxoXJIoYWHu+O0fAEMy;1N0_Y<4`!^{mHW?C2cfIziq|OtqLu{@hs`vL!KAish^uyl4o1{4|MIC)`kCa1UZj$t0_c`bo!l%gZt&9;yOhtY#mjNK^1Vb~I z#~@oL$~Gn~TDoY*#F=c_@V+wUj>%40HA?m(i)*Vd`9;>WWio92(~9}EeN>UI_qqnj z{C6SozWm7-7_noYJTFqP7}sr{nZ^~)H{|#UKB}_puTALP_h1 zZEPIJh*nT1*+eQ-vI~ENWNFoL=bGL_;WUQ1U^UoFrAp@6zIT;#&-*l5VgcPCh@?G7 zIxZkn*jm$hdF=U$nUl$2aO#{*<0$jqjw7&>uH?+*Mg{i$tV087NAU7M##SK!WE4_G z_>2wEHTN7$SaT9L3l3QECC;8vC8J9Owfx}#+F2HY zwa0au`TGCpc(^ru1lVCz3dy$SuLB8MhpSww+5$nqOwe+Y~}=9>-~p)GHpjn|~c^`PNc>2j#~Wi=NA(%A$ke_Sj_ ztH=7}zRJY>SaOx4XBHs@=(TeOl>>jq;uNA~NB{(B6r|A4nRwQic-D(odZyT*YzM_F zjwD|zV5o=+vOOj4o0_w1Lp;KsZ92E<%bBGVlHRv45}%K?LYC=8c{3%$;>poS3Ive~ zLQdXEFPJp-R(??Hh+GTPf^$})%bBdQxna@^`S_u+u*VPO?gdr4BRtv37t%csFp6V6 z=yKr*YXPHjNwA~kim$1;0aHUT=##HZ=@0!dYw^UOW!ErGox6+WSXekE!T(Ah8$)wu z_R!0CLX2VM1yG|9)laU|5qunlv{M?DybrSvC1&`fK*>m|nkm}3KsT~AS$k;(+ENWR z7|fH{$1+|Tgr>ROsEfYwo>)4t;5XnZMg!AW+WQIyJTp4O&)JrjU_3UuSyUHHetq+Y zP|XKe9UDwX&o@9l?DCpp#WuDq!u{~*ek}fYbK4Wkm!vJLh&w(b(}#33%i^@{4JZpV zQArhG6v-8t124LD30XGtg={*Ol^Gqg<5+U232{Uzdj(P~BOGoe&@z2FWLwQ`44adq z)C~Nj3$7O;aP@TtXvad#zK;}aASYmAs20v-exZ^=%;++_OAgz7ouchRM}B2XK&!Bz zkXo9t3F;6`(FZCJ`{4NW!|T0o4_{NZ1ALb1Xf%cnO#t`}s&E{$#z9W#yY6z;e;Fes z#5{6G%BlF=QImi(%Ku>$3iR|f#|AOHhui@mrsc`76A%TlOhhzM7p5vZ4z0#o36*Z= zcpP_ST>?bc(TOLY>I&6}VDFRywID6+Z2yGP-QOSJA0SkIX`Jq#on&&~MMK^RM_?P3 zqv25K#N-kUMPuT+5DNM+=eS62GIn7q@08vMO8E$xhigKU=!YMnZaORno;5(XKsyKw zakO{5r+bnDof@wQg&ivQzI(O5wzIYM6lVtvD){sI`nnbRk&lTwek#}y(;(7ysh?pN zs}N)iSwP&soLwrnRZuB1AfgLLj6A#n)2}$bwZ#9f4{z4Gf-K_Un(U(>2}>4CIG>0C z^;t>^LXCYZ6APzim-Mxvvz@0;x1Nf2W+1277-88zoc_4~;dt-Op;e8< zS4m!>p4=dg!9_3`v3C$nt_UxW$N`im7+`34WPnX_#ZEF#dGeMq6268{6ti>m*otWg z5@K`J;s@yXJc?z_Zz;)11?&#Qq=V$>O~Z@8 zS<=RH)SLC?=ET8O>Vn9yZ<%VelS(Ws^)$AK!VIbmIM|R9`DG7;N#&A`0vKi7YE>N@u1{FU=DU5g!%!jl>y+IwU?H+J_KcFAppy6g z-D|e~g^>^pJ$-^v3Q5z$3uitC(n{?oLfBC$<&2M(tH%-md_rRv90})FrppOFxxR=8 z>M#e;0D!!qsuX|FVArqO>&mK`;)<^kW2zNi58(2;u$u;;{;mz;bD*g85A^&0`Oix* zweMbr!|ufm1^&Wd?$<6_FxFv4nlO5B&_=z>#oYE2_C1+JUHvhg5M+>xPti^kX^fky zpHcl_izi( z#*Sc`16FJrrzR(ocs8_K6-SS0`Zrv4#H?cqCp|4cn@X$_GuvC>5i1QworyyR?YQXP z`&n0!0&pcKngDLSEdx6GPy*o9%XiM3JD!hVH|;M`MI?p3WVclP1K!uKUeBL zTl_3{&T3PRs5g8|L)6=}s*Hz#{@u_5)V7+Li+h)q2?=l^80?qOHM_{E^g}9>9aKz> z+WI-Z3*(jLx3RUl-U?Bd5$U2vCU03s(8=Yh$I{;J-|iYWaJzGrOx5+%!0a1lC4=j^ z)QO?`=n~a%hv*g5JmdN{MtOl>8lcL;X_GjRh49KRjb9pKov5}Qex%6wX+IRerC1k8Cknb|$PPH$ z686sGhKcOXk$|ek_AU9jz5*CC>zj)=KlLxy_5E)QN}?2OaSesrjMr6@PLOKpg1oIa zIxcgT1Z8sQQ4rly5FwX;K7!~`5lm{|%4mWrzjKZ-h7bH_Bw6ek`l9FkQnG8a7 zXrc|uj0x8g>gSDLDL+$nj2fc~^PogcNa202+3lCc(aF`$fuM@hvERKEgkqWXz%W8q zy=DeBywif%5v;}7xg;uSC{sgo@@~PDgGyrp!-1>B^VM}3u;|w@<|F`_t@J>gr!Wse z;whL~ydcCl3cM~Bm{6QXQqT)iSpZ59b2^G6CGMC%S+a$rSNH0=1 zV3Ko)tT0SM{QBku?^n4Ci&&Md%z3B1xs@T28&Q`R@wI9CHH>6-I*ej!M=ik&KUU=b zU-Y&r2vY7ycuP7xU&9NjBNSz7X9U9nTuZvv!H(Ehs?I|#<@C@O;NnaTt1!o(N~b7U z!ZUo`x#4XWy)xruqJn0{F0F^)fMC&;e0DlOK_%~ z(WE2vjtg0KOWhSD+la0ILb`N)qwf|DO6wpH-I;{oi4>Dj=qClmSO8^Fy#kvOnpAoJ zjmc;bYpyqd%Y8a`pJ6xE_DuK04oC2Z*%#2wC5`swttmdknloGf% zb5sQZQl#&i4NCM~eQ!Dthzd4j+{!e}H0E@2WlvE)J7owmmEy-4e z`4=G5>25N*u{52q^VHYF`AHI90d0*jW2+Y!rNMy!ygjV{4%E(}>?i_VRA?Br(3-;r zQ98WZT++A#{DHO{+9q_DDzEMoAnHAzxO zeSGREVFwvL1gTSz4GohVGMqKAa@5F5DTeCR%Hf%c1iXWjkrDz~j@t5}a zYkhHEx)vMkx+QknM=SJpQ|T|i1CGb9@lXu`A`<2F4E;Dj5dL$x00Z18bg#a%5Y zdfC&45iH(5c)1~XP^i%ulAuq1`iOHC53ca&r^^sR@O**?X9$64w>P)2DgZj|SEdv# zh1QhOs!sN2eEC8ru#j~|L`B-Q8D!;bpfU-w?ohglG^O}Du=Xpw8s>i3CDtg>NgzyW zqt}oOXDFInZds7eh=WC>a)Fe}h2W%ibrpv_u7U^Wkc)VPt6|A0Xn4$?N4{W!Whw>5 zC!rufp`49XVTN$XOw?2Grz5U?YG~L3#<-JqCrKHIaP*=WeG5v=d?Ups!jdTfi5ZN3 z4p}QPDnPtnY7pqA%fKIuFZM5j?&Y!Ny_ZYqXrMTs0HzjQXyM5S0Oez}!?I#?ld$~! zT+}#+ayJE;A9SHCP_eH+&A9uE?QT>q!RgPZo|S>l3hGx!1M#g?BV`g0^RTU`tYT#I zL>jYX(2P0_0blsuxloKE(upWM(T+H?Bn5e}7C3@{W2{+4K90wbuy(U2)mgRq6*VyO zHb@JM#JZdZDz~^NNR*v~4m3(=nQ?^Fh6~}79%bH8&y;rC$L!;qb%Cih{7Y7$4~I~l z8P*hqEk*GdMnbh994!dZ!~MzN6l=A8FKvYe+Jtx?`DlzeefJ}70VMpX2XHf<#JyCp z*=Ul0T>w420c@&r=OF+M4VW|32TEfWXo9eoz&xA_KC#ct`aV&-C`tw>p%Gw&rEu94 zIt+ZSEd&zBJ|xQ+$^aB-M4ym-!Ih4lKB3$u!8pO-Do_WGmbZ6~rZ=_&i*6vi8-%0ec}kBL`w zsIVGP)^*B`Dwn0ArrGYmH zFi3FR#T}pv(60G|fwVb8VHt{-1C}Hw2;3T{%+3(#Be!QlFOXz$SS4^MdSuWPr*J~% zKA-3E*uP^LrWMdV8_c3})25x49f-dKR; zM~33yNVh4WA`TnBT-+Pdz|AT_*omR-80v!hO5IGTjBXB3C6J3UKf(F~Kbmui-4>Ws zdgdxR|L6(Augs&`pD7^F=FvHM@~EcmjBX~$R3*M9#dnn)PKIX*;h~FO^wu#i_me43 zZgNNGj5v{>X0FoHcvy=-fz(W z;WPOqH>W6oUmAR4+3m(Q1Ij@bt=E z%9ILHUSO7IX#-VCMX-&2IOXi@$a_HGG9mxgRh&=<3uNHY*tnyOq!pG46H63YES<4z z>OyV-5rBfW<(1D6BTtNbzA6BZD=U%E9R$8%5S2C%BfbXoF0$*$Tes$`+`Rr)&Ssy^ zgQk{~jiiPk<=G;r;Y(NKG?lNZ7CYUrKgviz>1NawaWc`-ra>KO*IE?&M3(DH`UDis zG$}tXpo^BM3^qlnNhN~o_Uy~Pq-g;T{4UhuSTiCQzqQfpI(Ak{hIM_IMRmm!YnRs7!X=f6e|ze_hP-;ejqmob%P~s}J(mFgJcw zkEG|}Vj{F`G({nYTi0Bxkz|1dzD(Fiq(rGvctb-L4s{X3kM^UCJ=nTWm#4;^E10C6 z)u?=9ogK!quHi|h;D5$gOBbG!o}O{_A}#p4jrMPVma1j9tYrPkZAmxrMER+yc#+POabW6Lza+0xEb|rC z@XEFPY}7u(j>>|2wLk5(+DAih(uGjhEQ~m$k(Nn*maXDjaO?KnU%D-;SiKAS`eq1q z_eYle)!kq+*DCIS=#!^Ey-ZMWM6~UZNiB8y9wbrm8AYj4<1yGr2q{`HmdmWVBC@rm z*47eaHNN5NY4qLoD1)S-z|~G;1fi&l0{qCF^V$B%Y23XG#(PzYi8Zp#bq*{9#LzQk zm=>@{Y`nm4%$gRpN>LcKndeh?f?_BHd)s#heGd#TB_O+E#GlPvl`W|EcXVP=Xa+Mi z7bf$ywL;)HsZ^*Lj8b%II_w?v9c&`wG1T4SR9Kn45a8WC5XC}w!oieS2(x`<91qCD z3?E=`xeHc3X<*}f-N!g4INfshj!>Xz%OZ6JHGM}GGHvMP?QLv!%tg!)c&=ArgFvtJ z{c2bW%dEf2n~XI(Y$l`dsRvRcj^k56-2@Wp$&9I=aBR`x$DlirS89Vxbg$RLTVxt% z@<;YaPL5L<<)GobhQKoTKwiR(S_}w#p-iE`Rm0I2cI9wfqq>9#-&o{Ec&S@h@Qk^F zNKf~Xp+AZBlrA~PS!-9SEK{F^5HtJ_vD{5^Rnn6D)41$TrH9l0EKu_g`PV=5WU9dY zfv!Cp+q5bxY>zeE+94x0d`vO}*D9x_qia}wFFnbDyi|={pb9c6h7LieN&oI~z4;+r z4vvFS*BFj0dzU^W_Cw<^d_flVYH|KsIh0kwQGE1u$~EHR2ru?CT_-y0gg%yeCjcbH zl0a1&JBpbfaU++$}BQwrP!pee5u6j9{u}tEsW@eBZ7g{!ajE5o34c1%|$Vp&8R z=PPzT8zj}xbk*2)l^)Yf&T+@9hOjVX^tY-;R+BFqM7Ac~s;AdVq90t8mJRaPvW-1t2B3YrNu3T0h z+QONF8|2mBuOWbj_dmR?bDGF*?CG!!m9>=^9fTB6Yu+ay`G-OqF=odoffkWlL%AJQ z*eiNPq=MF;=vWLTn5n{vi~-VOSPgFoVJ!xbJoh3<_Izk_q7+eyt}exKMRs!-4Zs=m50#PEMxOUjc_jo zA`FTkg@D*SFPaPnD#oX%J4r54tW);RE&`Lvq?cxh@@nt+fHfX=OCt$RI-HFM*e3-Y zim>@qTg=47t%wn!Mcf~L1T>`V3=-(dh2Oat2Cor7M5U$F0)XC2pVSM^lK{_M#+@ZH zxGjQcQ=th%8GI_T)Z?A-H*k}`k5VBi(|!n+!j}i}aXgm$-EVS}Af1uIQt&cZEWg(a z`!e%GUfc=|BR-qC!40Y6r6ewNV0@da zf2rz7D%ui>Owxi}4Z#lW_4fLPAlOXQsTTQX`k{FvaonfFA`>sN6(5nPU=s7cPVJNT z7*j>WuD+Ny6D3R{*1RY|k%jk@Zb`)jQOl=}{z+N5zce}%I105x#zCTzq9SMEO9JgGjNu9$F&gs} zSvJzxqQ3j#$SuKylqlKPLULBXNou{7325G^{ODo0z?VC|i_C zmGv0&njKgU>rQEw)>ajD9*5n8rteCXM@QLY`#EJ#b(77(<#!bZ*Xx{Vz6SlRu?|mF zLD&BW|HoV%0&&_{W^9|Rb7RYiei?=62}_#xn1^o*iODez z3i-nI_$zyUjI{eE<5}My_~Fo4MC_2pJK?IZ`j>Tq151F~far=~c98x2srU8n z*X*;MbnMX_<8jAWHA@etpb#>pcxZE)P*crYxsrki?@Kmk%?XcugKzd(wk#69SJ$ah zs-#ic3q9`Sdy~lGvlVS!p!WJ=ql)DDPuc$7WClLwa8HV+u;XyCXum*HyVc&X5DF#$ z<>nPXe7qEBG)K&S3lS8MW)%*@fuB&C#wm@CN_h}ng-MK88i+$tLPrtfCc6LM%8z^R z(22P!D*+Rf+BITAVsuwwStTTZ2gJOD3`QDG#*~i~d<1P-9QPeE=**!iwT4=83^1J&n8aq3qz~(pp$ks62ovFsouG0Ly zM?fb<^UF1MbebWPnXhEZex4_hx&eTUr+2minN@n+nC1Gb@T<4-mK?rQYZ$=c)RF6} zLNu~F9S-?DzsO!$$AM!odA#^4PPj5>oZQH065M2lKAf?+;EUjTbrrlUtiF#$)nfoj zRlk}P1wgISqNM)=1LCa(=)MG-{y~_ls7dEOPNK5pV+!*-9$)!U6alt!?ZybdE z033w31{UEHVtrlgM*J(v=j6Ry)kx^CfHIK)5*8^x0C{dAgpVa+x2M3aX)SuriXMFP)e zDNYL)HWbJ5QJfFl_>NxK%PCsJgE$S5{wT;m#}FjqRFh(?>%rm4yTkpxv%`a3PxcgI zf}WsVE(#Wt`-$>b3=NbmzH+Q4U$O@^Dv7 z^^!V+*LH6@LO63ca&Mq2YSTuLjMyZ`L~V4$myMgs&aKzexN|w`7gRtzes!85P`hJGEPUVnGEckt%0H6$y; zIT@~VNN;>6Ut}bpdR!0lwE$H>Wq@_sP4Lbf*9%K0u_j^EYXh`9zjj~LJu{_i(AOj} z=|}XW3&Rq9C7qs|3Eq8sU{B?p--}ZZWw^(-tUFv70as>8`h(yjVJ#E6^h&+R$Xw8V z!frORLve%>qCsz6aR*5~EJYi1IY5}MdF9;05Q;uJgxWs7upywv5&$&@`uf?rJUlST@kph3X|IFi2W3PFn_$vOPK`^chGQ$xHSpLP)pZeEMoX zgNv{u)_DKIk02_4{vw+cv)?C409htkxw|J{WVJDP?%@krRU=OoFl;B3gq$1HeNF}1 zQ)g0}Q`F;17`{qJkVlde2aO-i7xoZWr}%0nZp1=$}muqwpkK-tRP-&bvUfA=b7W=B`o0(Gwhl3dqt?V_~`5$4) zLv+fEBW4)k@m!ZyBi$}-GBpkTQ7UWAXogm)9oKP^+fN!N){D%Uo!`w)L21_?1V?Wj zg`nw$J)V4+Pf{!z+048HGa>8Yq!`3G#Y<;F+2dxC7HbaY)>nb`g>Jf{4;?&=IEsJ* z=7T@T07Gm?!4S);Gx$m>3TfHnD`>kxg6;-Y#ubL>LB;PR^;W*c8*eGTjvWE2*DNXy z)o`}VV53leXmwA4f{(`aR`$%eJ}$tbtk=Nj-J34e86St1xTaxLag(vPX4avS)vG%J zLSsY-t!CpcmG)L^GP=|I^ zPAsLUtYiqWRiv|t$z4(z=NN5z=ypgW!G%IZU@cu=D7NAF2BLAGVr};lbuGxk#37r% zL|uX?gVRh}Dpg$cRV$&+rV<6t?^QYO-i^?&wMwWoKypZ6zX)8BroI9eFhwht+7D7` zC{_l)&s;yw<~gpHX9VzRBR<%jX=pJE=isYq{oJsDEickJzd}`tlQl+L7bG7^PPteV zl|()9y&70V6>pHhAY?_VbngX3nO%iYe+c&t2@J3teh!(tYu5q%k4NQ`H4n={xgL#X zQ&?IEgCBD!9)%ZS9G8D17(iMa#ZhOXYDmgCau*WwCe{(WJ(b4+S)iSm%jO{I=3&Fo zsjR3?b7dqQ?vR;sJd090r3OPK^I^Z8)#7a@y=T-PSDw4eFHE8j!zj^blY(4vjPanqzI*2K^#A^JB91_ zyrMC(g| z@prAgu_15OwHlf}TF77k(Itx$VY))oNd@-c1g=F01=y-d0R_ESOD`}SU#F)*cal)S zqp@JKYFAr3gjacYGSGxu>3vRJOhp$9sl0wNK@L-YUp<7{VUoeWdvm&%f0GRYgukJs z(K9M0Txg(Z5asg84FUsPqdZkz`@LaErKzri&P5zw>T49v#iCC-t!_Lt41sHDc%H6b zGag{@RY7utP}=eVQ$`|-8-9uiWPw|N3nMOFD1&>c*!+|1B^JoN@`b0@2X9=M5F=m) z6J0%+3nt_1j_m*tXo9!?SeLbgLlB`uq2r?;IwQ)3IK7cKOJaDm_(ITbhMF*bmEWRz zkaye@l|^#wz&uX}s%&)%+mcX)jG4!ld=tM|wI zXGd?3PrbwA1MmC8cZbV=c_{yqNhiEqyV`7Rv^LgBlU-+%C*1rFLBnwU`*koFe7KCn z;r;`shMdQh$Jh}6c6PS$f5pG-|32Ml@BF2`y}h-ywb|a-Y>VfcTief`{$=A1=dJ!t z;8-VygkYz#cGKQxC$}K~)}Jiz$D^AB_ukEo_KWNt1ACM4MVzFq<>l957wUlb=rSf` z%)Jpfe_kmR{aoJJAWg1Bh3{i^~LC3xO+CNl53> z`!09UTK+e8Km}&dlsQuMmbsNUL@Y0Zd<01@1o`##b<0O6@jjdZwMy4tAMGC=pB}CW zNSBxS22ZodE?+wYfp!D`8Vk)rE*k2!aEqb-sE?Y})fI3nrs z_LaAH{BQ4vqvM07ERP&ef+AkBIHc<7%cp#jlY^`KTjb6?5DL-+WI7c$MqLU5GAYp! zMDa3)!EsH;+;m#YPu7>01y(PildJafGDfv|E6Yom#qzzpmguF|u>ENA!lK49H+|)Y z1F*DWehHY7{$Ds*d+=qSUafKN2?S`i?A{%5QyU%|)sm!+1Sx_9!3(Yw?j5Thaznhb zvEley!PmetHKkwk=WkCHq&eb`Q#r_9(!J1~+pT=@PSOIjWrgEgxY1Lkg~eLm<0#cw zUVw*;DqrF~pfcGD4Va;f%Dif~+Rwzck0W7bq|Agy%Z^a%{x?oopts(Hk^X_8aLuI^ zyb$u^uGba{gy`_u&ekeV(gNI#L#az6nC7Ha5xCQdI0JqBf$aP$otwhsDBn#N%S*AX zb_(GAFTtR{272ep&re#v@~aFKPb9mye3P8@VGSUT-fG$F0uLJf>Ar#p=r_$x6JYHUU zG7LFGQ}Q;5#`5aJIhH*ByQhEk&wpHFY<}mzt*7E$_WbvBd+YK1cMty_&wr2Szj>bj z#HNJR17Sm#S3Bx5uDzc0nMbT4(VZQl5q?S+)S?UBXx0e?Sp+Gy6Z&d?0JnCjZgym4 zL4Ef=N}w(Xu5J-*a?puxi=C|GN>P&T0$}iM6Z`T4iT4qT%++dhV}MqQ`#Vb}!K#S> zb0TgW7~tozz*Rvi;=yQLVM5dz8ruMyV-|sIw8;YfMhuwToB+*Fl47W#r0Ecw;@uw5 zwghHq%{3tCBNODzh;Eqavo$$Z7HaV0Re~AAxavU+pP2AkW4WP)PYPi@rd#FTNBTy$ z0*Ijm0X4>Rss5kP z{qOhRKd38NTfHC{!PZ+<2Q1b9p0?YY+d2FH_U5xk{qH{h35x%Qj6{E>5}P03Rxh>I z%gdI6_^2B`>V}ncLqS&iAUE|r&K=0PC%LgEp0>P$x0tzlC}z;ImC10372kz62|nkm zw%5=SiDP_|oAuGWK`4;`ZD?G^OaY!iJQaE@U;#%{Jwg)#)WJn>Q7en{RTUs0eq`|Y31~)Di*V3}dY7RA#8Jzt zknvZIuuuTUSo$i{tm%CPFj-Y5mSop}QmcT4c(o$NTeVU6gmCz$1jC4YDuKdi#XuNO zY#59eH9!!eq9PbZO9K?+X&xNoi^8XnGgEZCW&y{Red6R@D!`)ejw~j;OiQN0%+ty& zbx$-{jE|YHt?072@hlWtGV~(RYGn%j)W>}n95rTSQNcXce$iI^+Yp_Lt~FM#GOG%` z!k+sEGO=HRAerD80_)foE<&Nks3+e{{z7MkDsg)uENP{2NBnH`4?d5;V zCEn*aQ#L~~;!7t?O~kbAZ+P-un4K}7mDRtCXMfG%qigI5h@4MN;rpjY)py>K#?C#L znur4{nbgY;Z`r22>t-Kkj&Hdfq5R2BUSQ%pz~M{;&T<~Pl8HDMD zzIwMr`!D=R9tH{<*gA!J%;ofp6=}S3Y3!c|Rp84vHY|tsi`&3c17oh{22At9lEypL zj;^Y&bChB5>l1-SXKNUq;Q?G(Hq$KNIT`ICWUIYq?hod+WK&x~;Clxtb-MfP}4@A|8;JW7C*InEE z0E@J~rWFUd~FS-1Wou z8y6ztbM+tF^L;JU*$NCv&FV2Fd{e-Z@|9vpx-_Af7x6u_A^u&=fdug4MFcxAUU}Ud zObZQe$GAAeLNTw6l+Tud`4$>C+p3p$yMrDLhZ8EpR>HKhjbvQ;yOt9aZ;UDNh=|wH zBjUqk?$P`BZ5a8<%@hE2BL-7HC&&6(XUh&u9Ro!}tmkbYFqO!AFCf%UrpmYTD(NITnXRx-~Gw@9M- zgl-cpbbUCQ%}qbJy;K$(;#mwgvCUg5e|`##Uct(AU~!9XFe{%JLo5=9ObuOdH~ezA zgm0soQtQBIC9P)qNmal3=f{?XF(2jRXR+pOB0rqNECzeht!M=-DPOv)bHu};Us_Uv zTPXi4{<>w9=3a7M#>enlM)Zq6Z#mcr-soFa0}C%k=E_&%Z`X;3kO;4<4tp3~y@HF4 ziwEWwJT(8x4bIPr9`8nMi6P3t)F8UR`_WJ44i_YE@pbKvQ>}WZjG@OC z%*vgjN4eP1|b-eJvzV6r`!pPda5gnAMJ11g zDY%7GvB07~Woe-BUgmwm-!t#>_edi+;VQ_os0H86N;1^(BGC;fNu^{%4L*hCOpjjy za%&CY)vQa1-7eA!LL^T)=W`1u=l|r>u*JO3EtvcHm%UNgBXN_GgYdga6qOIkEu^AA zzsd&XCKb0$xaB;IaDhtV=2asZGp`<$L84ndqzw~6t3p2(BjLMQIf*)6I98IBG?k-N z!z^R5su}e5#*X8VdbfK21i&EIn0%fbB=g>eDm1q)7;zZPJ(WJpwzHE66fFs(Fuf>f zt6zQsdeT#@hq63X84~$6gk=fe1*0vwZ%!pF)$r44WhNXoW|UudsejyN(Y3;{SSwzX z*^_DFlpSI-cghX9&a9pmfh+E03WCr9P+5d{sM zC&b(PagEW)&JBff7cU;oiL@H%M}l-UsY{p6VHS%#H62VLPqU$uJYR*upjTd3K{k

    U4_?Fllw}7b*+w3b>G_bqT{_dJ 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≫>~IK~G_KYtLw=ee=3k2@$lpy{Z^ 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

  • a|e6V#sCk>)w zWrLBZ93+>*cde`Zr!{PhE*oXK@Zn~lde0`o@&&kHcw1{Y=X;OtoG+&twccOhn9@4! zgVRZM7@dNXA0nA_-_@BrMDFFkyuvqYxn*OV>Z&9%xsuso=1fN<9h~;qT(J!oEmLk8|LSr|mETz0$z-#StwqHf z?3OG&!yFzIl+snesY=l9>mJ-i` zWiPPuFsOJqrt`X3I)Kq+L*^ldc1XduU6e-*0Euf^gWrs7LHzh%(TEQxixygBzwv)z zY(&N?7t>A2v@Ni4hwyeDdBg&HnVrK981^CwL1PvIA5n#is%F!bHn%q#T%kJS&moxO|;e@ zkO4&E<4jkIw8mcu;1F`v*^xmcq1{6NGY?gVqcUPp#ZhS^fg6MfSIcm6`M^)4N{wtB zl%aiQ=r?3zYWAsYc-8PYz)kJK@Is`DRMgCL@^Q(}YeO$<&I~e#$OJtI=pdzgc5tY? z#DrP^IPLdAEgfgozaLX>$5SJT^;j+qtg0<3nL)B-xKJjTWo-x!80Np>Hh_PI3 zzQY(*+{bbdW94_qRjF(x8tC-dZLx4*i+VillnyR}S9?_}Ge z!;G^rnEBd@^F9`i$#cQK6P>GTGe5=eKxU!mk1x5dAAT*z0d!;E*~ZK3JN|?Ead32U*8}5(kwAwu zKdBM0UVX`2BPtG5UjW1xs!6#jVl*FDdyT!!Ni-w%{kA{2MiSA-n6oye)=fh-2Iz7X z#HqX`Du+2epF7jk3k~TQ1VIJu>!;v360BfOj=5{!{`y;Q6_Er;#PEGOoW z>amJf3C1#UYLhOzwx&Q486f$!+ZkY>nANZAkqO^Ps)>n`)$(I+D8-tCA!b(j1$uIV zKl>&tIL9FM5DGxxbSr!gYdoIB=wIKVe}iz6C+>#Fkek)maN`kYS}b(fQQPUd3RA!2 z6w#`=_pigVr)sQ6AGiZevG#qQa1Xk)oXR611+H@7L<(NA>#xJM)F2?)AmjxEY2$b` z2UUyc7=+f5zlw~oShbKURQjkIp}l1BRfcia@!R7IW}V(T^LwjSTFd8BtQR>o;-W(n zS+Hj%3-;4a(_5!514}ID8y&24R59lilFaZ%j%4X<-{%@Cb*tagtLX?qJTxl&rrq~C z`$@&TVah4j^Gnf__>&$vSI1Ksg^xmGyASlHZ(W`UT_FwuNNYNR%c>>3b=ToEOaKW~ zJ7Q3ZDd8_TYz5bd>1?AzVNf^<6A!~gzo3WqbgY9_a0CodSd3JMdP%;LMR3HEJ!*(n zCMG7upQwCtd%KaBOmt*3K<^S*0ur!B+G(hvtF-m%PPx62yT_OE24fZC!tjE{f{yg0 z^NYF6d;3d*)&&iV^o-4hap%sslX9qq{!kxSYKbWnX9UQHu}|>)h4wqDD+bO(9jAs& zBD|(3d`5L+{K_?l(CXXb(%c#~b10!0IQb})Do7{z5edbh?of4{s*TXfb5Q4%p?-f6&dV7t{JvMp zH~6ZVS*k!K#E4mNFv3D_f_W&R(>yeTBOC)o24Mc-pjmD- zl--mrfNWrRz!N%38h*_yRs?ay#%)wlsQc*E4gq4bkZjWL$K9B-bGU#NdE!I_Oo(G5 zTLVn$x0XXh(Fl*p5F05rniBjg7c%z%8=Y~bl#!c~xu4+?O$xommS>8Tz=rJkc zXn7o=up`$Kg4-}OAx+5@#Ty(Ree;l{5s4bbyn$Rt1}mIY?$uMA`pm{5W zPf6=0Q8;SFnq8@cVhthKL8Mrr^12Yy9QmuA%E@>oPgZ(Bnm^ji)U2C`!gLTvsilWE zV=U!X0)rq?6*HL9#A%Z&w@kcUy5q(Q*jp7DzWNx5o)|R)YzH-g&PE%5&hT2-C3}C`7PlUH!q@ZYIP6|*%jyF-CJuTX_eCI>wAi}33~dy6f9YZ9 zZ%(We_1KMsf|6?&33xBz>Q{m_LzM9E%8K!Gh)zv8bpD9B{?br{gl2Tw;WSPZbDg7f z<1-s?+B!ij`NJ@xD7$bEt@8poADKD*?z`oRJgh$LGZ;6M=50$e9wx8wIE+U&G#m2n z&d0O2vN&w1!@Ensr&$ek8qsY*k1D*HMn3%}7GS!OG%f~~>#71boDR-mXK2B~FjQy)xhm6V5ig=$@lH*| zQeDk3ZWcx54eqAZVx_8T{qHD9l$I(@D60ijX6DjQP89AOZ(fu|hf52N&fvF7b|iN* zm7gZl=;B-&c{NXa;gE+0eeJs4P3gmG&fS&$Z4UFYfdtE=sEcBHE6kshI1A~dhAn48 zBdvtvOUxV07v8h`b5^>_^@6iys9ZPFgaby3p;Zv&JlL*9L4ccTV}5{YT9I;o{H? zF%u6g;ce`%NyPJxSimvi>{*hsM=O-%_|wf+$0o*HW0CE2?h5N%0jEYW5a2NHfD}%1 zKVxuNxmj9(#Z8S7u86>#fGR0oDLC`ibgD1NZM66b1D=r>sk|a>N)b+b#Ju%Km13kM zY+;ctp7UtFwd2n7&_9CVrBlT%F|W!FjZ&wqn#fFx&8g~d4y9hoT(7oTRpStv#Gw@S zc(RgKL%bAw=v!&AIM89`Kr1-Jl(9DNRE?#D(UDp$ahI>k#!>*&SIMQlbloDH5_x%3 zP^Ja;FE7$mb$byfj9yjdImK~TPSPT6D2Ez}``{0)u({G^rZ?9LMZLem_2Qqglh$xQ zOApn%C{c>?MA3piZ=gfX%Z=Tz4VS4RRA{>;4AP-n@Bx1)ZMwrwsfOl2s&cc!8ODv4 zk@Wx0q7+o~ihGG2XzI$9^ztkOx_v{}8Nn1#4(A3a}F&EBjNfyuw)(l}RM zM-;M|@wJ3`H2Wl2hVIQ%+DfHTeLYEvAdHh8iAT1 z=nKy)>d&^-z@{G?^%(UMtU&zx%W8;y)DV<1bD6Crc2LfuG!n%yYl#=u5N9f_By*pZ zQ`-6zWJL7krE{gIE#s$NZ_5({r7EVSUcy9>2VGmG5o{aniaHwVPN?U5(pJSM=??SD5Ptgo$? z?0+{m?%&w|Uc;wo|NG_S{~{C8cyx?*vgDVRH5SMUHUY5;dV6=0_rITI0c=|0CrJE_ ze{V39YI9*5-vr~4?L#lEx9e{hx`Y#OazLFli>!C0bBMlhzPwo7WLt8joj0VBp3H5- z(iFAt((`x(`|ZnqA3a3SW<`5YI`B1)lU1Yf{3oR^=F|g{35Ie5F=0)Y^EAN&EV0(P zWmLdXhkMs{;Jhg+C)o*4tMzoej zl{@A{9rg^tc09aAY3XP;>G-X%C1Eo&7JWlFq-5l^vNVj9Y={9KB#w05^yuRcj@Grr zq3tg7mdb~)Wk(tI^y8q-nh2ns5nG#Hu*cyMAC?;j_Ly+k!0L?yB*MFs zba2@46HK0+Bm)~D6onUoL#D## z=C!2)ww87Hd~!R)btm=*biE|e(>o*N1EGD3>EO9fHlKIA+Qf=lcy6f=mF0n7!wUjh6Z22LX< z(0K3U!0u!i$eRPydewKbS1z|?vsJ8b;!F3m9(xH_%C1bF;0&3DQXH2eFna-O`mubHYo`HHwIf_i>4LVcPi}9mn})(rZ<%bk`g1#qC?!?cj`*EqG8nOJmps!vU=D z9%sY?F2?cCv83&0((5?<+nMV;3DaK8Q8<}UJj$|phoG;x?hl}b(L5d2^b*%|A-f~s z47X476f=GldsBuk0T-EVpi9?;lJH&t&mCa!H=kjV`1LGFpWsXMYMCjyF<{OsX2a@O z_H)XViH2VNp0ML@h8SBPeb7u3)t|RG%+=ri1K=2nFY)630 ze4Mi9oX3F4cCvYjD4Rzb9d`Dp%kAKlB4m3wVkDa6RD0}{g4_FSz}0uwwNglN+o%yn zXuF)fO}e8J({gb{erx8Et9;bZgK~x&v5FB663igXPS954Hia%id4Pjxy?)LH0aRe8 zcV1~{EheRnyLfc4C9Spf$L;d0P?dGyQo7Q5sM^@KWMjuxy+-R=EjR0e(v#6mQFe6u ztZUisxQ(AUxs|E~o%*?9-@mVV{{i2tEAKLc0a-0V_sZb*dlnpj0>P2BP`Cbpf~J-a zsPB07Kl4J*yZndQwvt5skyURLY1B=QM;JTF-v01bA*vvw|LFil2~$2W1o9mv$-0Xf zvJ5vEt`h^|oAy>=A(w^ybuHM>!zYe>j9}~=IkFGe3pNCEA)p_|0}ef7!rEwKQCvW` z{;}n@&8nfZ8?Tu&khPyZEgwWYDlO|nD_Z=@u@^cN1G2dICFPX=L6t& zlFWDrv>K1mq$?hx;{y;S%)Qx@G2T}@5b(tZy zpp{XpES+%G7uS+|S=q1Rr9aT4^{S(HnnPOow6+mZW-cb|6?gigICoXjT!k>lj#5+Q zxY@FaFUL6?*NbqoWishO#p1UpnVT?`(TB4>0r?`u6bCfPQbe>kx$esiTl$kQbvQ)VRYXpg~CeBXKp0JoxJ_J+= zp7lat)ht=qC0rdgOf{oqsx0~qXXq}q;HGxligkx9*0pcfN_7>7_S3f2O0cL5hidVM zwRTNp|5xR!Zc|A#c6sh^&euVJIZShkCAcAE}+zlvUYSR-r`7zT3 zExVyG9-2l3K)(r$GuXAXHze9K)fE@1Si3XMZ~n^tuw1cjiyC6LdZ~DkMOM#|Oaf+u z-O_AIpUwA?9Gh?!tPjZuZKz$c0dJb1ziQOly;os$V& z3ij2aLa#c_UMtt&-|ZSC5^5V9$|=Sz$G_{-ZE-6w_rkD#P-J>{Y8NM9q>8_)KB^vC z5vvZt!sI{97PJZ#zg~gMT}f2>m^@CBfpNf?!sGGWhm*gCfAGB8*iX$$((yuz=S_g# z#JVlB^D{WIltCz~_@|G5p3$SZ08;IilO-yKwSz{P6%HqRaovkP=CkKl;*4@`)h}Y; z#HkJew7cGF2dnL1V_lZt!wT(7#UQA2O|ctowTeO!N)b=K`;PAk(je?&Fx)HvVnr*h zB#S8x$4PWB%%A8H6&F1f=Gy8ElNW7Hy0)$7!D8WhJ@xMp-Lpri{;CZ z(3?7L^K4#bGw(u}G6?QOb5g-?YPwuW-OuJF?s*YEqsxHmNd!RZk z=I^`RzfBZZL1)P%A5RL#@<4lSu73otddcWEx-SotQ-*}8Fxbu61n_RG#G^i&v)~td zA!&zRqU1e{Hg%3t3T%0#(K@9wHv_Ui>6g8RJU!S#_4{dSg|zTc@o?E{rfa5vFoNwY zN-Iweo8_AbF+KGfpWb@GC;F4gXyi9t=jZHC&C;ncB@t(96H2MxZpodF zL?w0FtGv3a>)5F?!kCV(IbE+Wq4lZP>dev#U9r~38A6xuTu( zN7e-`N}a*|;QYE`k^z;Z2qol;BF+Iu>hVD2xK8zPxp;{)<2~n)*gPpab^;H z8|JQgsuptv9c|4ZAg5xe3fEO@z+&ET{w#Z=#=)f0qGgInPU2@OyM1`ui|OdXVCs zE~!nu1#E4#vS=7HyJQJ=7@8 zorWVb3xKCRM9-N;H?>-ruVuw&9Qj*jyJvig(Ae3Bi zkfOneoQyc(ZHQ!G5?pWpjDOzaA9S7}S>*Ns{yD@yKjNP@{<(Ww&d__jWo8${qhvrh z#1`c!~KCL95KkdPcHgmLpNZ`R0$+hUD$8+=@El_j{Va z8{m9NmlIoH1dud7jnN|oQ;K6iDl#e~(LIaJn2$IQAO5vHslzi%y{LpUYHfPcaZgDt-I?j?i~NLiHuSJL0fv>|Gx8- zBIdk?Y1$cyVmoW8&Ql?L&8HFIUn3XBqHwquqLH;o{@(|qtwRIt8$pE;g;LmYE%?1? z&^L?)hGmcG@S{zeXES9VOC1oZqNw<0rY$@TIrdU;+3lVH4TbSQi8m~1*}>1H#wa)6 zJ&|^C^w>iA+>Hg@SzDHmY2A6RW8z&|H3%nAOGquFdFFDisZ`@D&gO?@J(nW5r%q-M zZ>u1ljXy%>GS2Ap_K{!Us8pcu7wDG?jQj$lQi0Sjkd_MMeu2DH;M6a0S}O4Wc?JGI z`<`Mgr15bYj!%NKBz+gA$ZkzFI8wCD>EaI!!cuCnp;auqhJV)a&j$Y4#6S1&&wc#! z;I`c6$kP5PSTB(&{;y(z|NW0!UD)I(l1B!`okF!29|LFoJ8&?gjmk3R=A7c~eRi<5 zerOl3jHZ_G&73GjooMco0pxIWS+_$t*Ly^zq0H@IA4Lxb>lg)pNw# z|Kgts{&{oT+~SNl^oK{-ejU1ZfwdB>+cy*UaMM0~;~p9&sHbSO*c9FBRn8F%sxVCl zTO&6$qq(ML?LOVMUSe{(#pyYT&cj~RjfZ-YQaw+0A3S&4AYj#NZ001YV=gnY7vVYb zvN^jPv!hNJ@Yer^BW-bTFiLq|>~vv~;!!tlss1>wUe&1auxGX&Kp%K{xxC-y!)2GY zITus0;Qn#@(e2ASRj9-x2*y7io(RDYKi=nw}Y;|J{-B{+gf5$A9D$ z&L1EDabs=c{zf_eb4{`Euhw+WhZ25Ts50j(>+?enMd%p^6v&@e<)4=dW-E z62*)P|K_-mFDj!#sy9(;EH_5|_;`|rlx)O>EDUT!L5UIR*L8v0Fg0)3%}tOvXl0Ud zB4~W7AvRH$gm)Mq6l_x{EwoNBwK%v|RUic82uzvfSrEV;WhS`4gc6__H<`+ltJ_X6 zkUpkyH%iWY7~JuO)Uw%-&w@DV{EpDl>QIa>EJ8l)m>`Cduc(maIHrU{Qu>Uc!uv%+ zso4hUMC=z=g%+K7Iq}Hw%k^U`rhg9y7u`HjN-?_=Vki za>ZXqSu!}Kya6_ch=d@Z-~*gO#23)1q7Cwq788XyWziYkq2ri&rLd$bF&hNDmFH?W6b+Zm!3EbYdo3#Yc{?VfO+v%HLI2QQm{+-s_kJl z-b$dR;jOZR3U5Niqv*`WW5v%y%aQ*W;r%xpH6EwHJ9ed|l%(X54uei|OD zj_-{JalWg1Zog#Tt??*af3b&T4$%$}jJwlfpyuu-wgO{a&u<5}*+qJ!ELN(EB4~46 zGcv{u_^`0okMtO)_tB2&a%fjQDs>1)Z%uZn#g=KH5)Xfj7!f05F9QF0(`n%xIEX82 zhintJTp0XRnx=f{MgeA}e{X(C`=?FV;1|x7xpACIx+N6SP^w1VZ50M-8?82!ER2Sl zkyLdvEa=}~w%erzWkN@}{H-qQxRG_ z)7mVC#^u)KT=9*+xVuuy7I%LmH!J@{@Jg*ywHWOfz9SWN z=pI3S+|@r=H?6OGJ>B;Sk^hO(ewT|rDi{5~nxbL3=s!zED|~k(B;1EeWj1b?I6)M) ze*-sOk@9pr?uyma*T1BYs^$6NzydLq6&-Z2(+HYQ9_$ zPk`B)5^l}Sw-}1(4nU_{?2<_B7b0@Tev&|y^a4(+g&>-B@#*~L?djCWxd#nNPhMm< zsf3>se$6Jhf+`-dKF|A5@qNo|VwD`vwtu+wQ=_OHC>05Q`h$ZO!aJ5d#kAWYsCbTE zuSJMm3G;RE=b+p_?!(GTRq;P;ctx+hnH%i%qzX!cs9q>E4tGA_Ovx&YB8Fh83KMGt zG~hmbYG@ZQs+KaK)E2ALJ1$pcaS)qcH1PeAY({&SG803yk_HdH>Y3X{ZTz7Xfs z4~iIHjC4-YF$#={VhPmhvTwQM84tTq^Q1hq0UX~Kwh~g}lrsQ$VF4vBpbZM?;sX*! z{uGS-iSp~ILCBxqeP?BPEqbv4Z(_(H#6S5_X%SRK6`B%Y$&c6Mi6ll`{@@MJ#*ABf zXJ$@ED_c6%PhGSz30CH?!9mOL4d*Q7uyb@gevd)7DBM(q7jfX?hd~ugJ9uzNmAMhl zuh^uNiSG)liFyfeE1;?bic3odu$AxRL7RK|{#{4L1+YG}v_4Sei6wrDH%py8ywh?J zsAF(k`V$YjUaKa*wionhX=z5>BiHsf(#Ao2*a7@eDbBfIUi_(F)WH6z;6v>atdEOA zqsY`B8~VtjAx~jsJ2w2~<>HyN%T?xyCsNx@vhu0uCqJ+0s2>}l7Pb*w%Fw;!6JEeH zaS!)g!r9wI;$2$q^j2uyode9GsOL@|^Z4nuMQ9b^C}v41EXUb>)LS z1Um^>uCQ?1D_ng_SEPV!-$$NcB}KMX9_H3`8S6@-=2<~(z6f>N%(M{Hcw`xkS6iTyVyjXfS+=bGGk|7y5Y6?Qr zx@Y9>ink4?#Yp~h1bczA;h)#7%1l9H88WM0k0JYerueGXZA0>*m8mof0r&v=F zBDx@f!hx`lw?ghJaGHY0Uo%!U`F`0aw8rgkt)w&GfAxD6vBeLJ;atP0|Xacr9>Jf{kl=i}pw2WrhR^b|(Q0l1>imM#@-%^c! zqZ_550HtP&*BaKe$Km*2|Ed_mOlX0HCTo;n*tO{({T5>H5em`pX&vghoS4S==y&*M zw(n-3%r9Hz9>@`Hb{C}JC+oxg%{lvUfAdrHfy9>CJusPcF5NyaQ}SZ1>V{8RTP4bR z&!-bl`luE%Ek7{K0O3ozrylTx1}}EE`IqFJ4|;2KrvFCq`dpb5BgMRVHMvZUUcicn4D;%zWaq_s1sX zlpHwF{F6H4XE7ydK;?2Gr)bjS*7TlMs%o5IG_Mgw zbuX+p@y9A8icIt1R(81MGIh;oesIa_1dX7gsK{)1UL+aI5MNNV_9HG#Qi&4GZgOYc z(ZV!)sA|iT8%Hzmb1DBXk^$y${F2Xf|F6}Jd-vCh{$HDGYnwOzU)S&{`hWfKrTBl* zgWuMJkM^^gj4<&fKZsHJ(h$4gz4)Jz7ZfSO2eCP?iX?z*VMQ!zjK)mcRwEQ`PA%tp zln^U&Gp=&#zF2v`{I;&0Y-HFS1{=2ueonf(vwHSoE>9e#*QiK(tDJhC>W*yr{X+j0-{;4;wR|v;9;px~IKlO%N7{YFx|dD* zEfZsLL_dt3^f2y_v4`=dY8CvZJg5c}1qn#vu0-8;ufZnET|ukgEE#{5u*p5TB9!|5l~$*Bx?(vblf1MVEKs!`s(sw3)h*+hVHbe~ zu$PCq1g9si?B48P5K;vEc+zJ8M+}fUw-uBKz0HTq+I6Is5R9qwY!Du2-&VIA;~*&N z@XwWJc=NMgt0V`R^J&Uzq%dVKz|* zg!jh4;!Y_;C`GFz)exIn>tL24hn&HyuOx`gr571Uor;ifhqX$^zwO&oaj@GN4&1>ek@-0Qw4Mi<7zmvK3fOlM4({ z5<{IzJ!!IXl#Pg?C~)Bz*O0fqO7 zoE0X-|Dabz7slX40xi?!bC|&l)5$%^PLj!>XKz1uGP;bFK+Ph)mSx;0=DrXC)c$F4I)-5>ktc( zDH~QXlVM5Dv}7-aE1SXIQ2d=Y#_2G2m&jS?d6?yRe|E0Rq4`7uuSdz2jBTX&ju`(r zh`*!kkWggn&^n&eEp=tsq`EQKBwDxrf#VVX0x0bFSm_E0YtC}fXg87c_$!m^aSXeT zCE6jL50Y9+oknd?dKcx`5|L_UxAIw4&Z=(y^*oDFRBtFTh7bkL3jFB>j4Uf&M+z0BU0;yvH_ zC?e7v!ZM;e;;rE5gPz&#A#gG!x1(5Z=2I?7hJNb^Bi+fgtkmUZZI+un@D3`w4UQZUdltAsFFw-vy|r=lJ#() z96yfUrFGSAAo(s;f;Iu3bh{HwPtJt6Uup*!Bc|0jLb6e8#jYI8e29&~`iRoOg<26r zk=~-vD+1FyQ2OFHo3ZR>ZuWM9_LJ((Ue92Gxbf1Vz?5}Jm7WguriSl)5vY)vY;p_a^c?qdO3OmFp0@V_u~lBO?wSiHU5uFQebo+<5lZNp7l=x)0T;%kxJ$SV zf&||=rAuhClH7K(*+gdS34M|7U;nDSB9>54MH#MYZoVn!_Vy$;;+WO2RiG&?TG=~Y zstG+*FAs`^S8PeiLwft}ZJ8j&J17_!vrK&&8{-*(ZaF=ci&EJnPk@lnUu$rIz$AA| zWFqw01xSfO7u)xd=NWj8PVsDs%*gWcXm}L$kXw5V8d}*t57FFf3%>^eF8y;kIdd4>&*T&`bO42XufG$IG2}zmO&Ml?YNEjvFxl6K>re^P2 z+hphs3+pKw(cLc2QAw((-WDWqogxS0neWe}wdEVCvMr;B)xlxWu%e0sn}Y=hV%0Qm zi#vzr50$OSh577On0Z>T=AykCDqRx0Y|ZaYzor$pcgmG^;d7v&a8KN`4ZQd8ZbRN$ z3L-OinzLTboE1Bxrmm;PflQ*N|Hem~c2jn%cA`=4w0 z(EU#@3XY>uWHX(z*Z2xNTRBcT!PA!*&>`4)Gt($v@Dagb}`T`JwctyH>dyC4SRloLC{$l^x*G@cv{ z;%*>g1!Uay5Dk7-x?@y8QpK87X44pi*7}O zNcjvB)cz%)zD>h3gkxiAgJ`jOz6$51)${c}{=NTz{{Db}A8gY1@9FzJ`o2yjBl^BU zf4Nq#1cAS!$u#`4Mn59=nu|VIrN8U0f;8E8jY-4zOSP!vgCD2?esrITKG;xwQ4K%% zVe0d!wnH=m`msicTKl0iOg-?f>&l#?q!E;cxlkYN_f4LmBm8@h=ao@(}4~ zWG@=;^v*5FjdfhSZ4CK-u)4K+h}ss?!%dD>262{iYHZdx$DHE`Kve& zS_=D$%Bw{x(YIbSM;#9H>>9B-?M5-F7%qodsV%3oj{(6dgiA5}l0KO<4YaGAo0IDY zvfH=HOWX(P$o+T{4|<%b1>4?IuaVuW*Gs=7uXrDS73L>ff!SdY%FBN9{QZYk=heGo zd`YJFOG~eL%iyhN>!Y?Eg10*vVnm%xya!gzLpjdUbNkRa^KZF_dr^8CcU8#`_~#d1 zan>mT^?V<(a@*t!gf1h|sCz;8_6YoARxY_n&|IMV$fbznA^SK$)#as+6aYw<^^v^o z@-Q4T<4eMSwm}W*^Z#9auu(eyZ?4|IvH!b{&*yIc2UT8qCV=L?-kGC? zgE+sSy`99QuuGnKXF$ZkSu_}|sH}ihcZ$Ck$^<9jsa#r#tC!zUFNUf)Ux3A=1wh}90OErAsoPPN0gDL zQ#6#Ecm6NA{wFE*c0MLBWBqU5FZ=)BTf2AvX8m8o=W}2GQ|y1qq9apTUs1h-rniPV z=d-^xrHvMc!Xr6VjfJ>|_gCpp3te(YuF8r7Aj7b| z#gz0B8f1ilLyQ{?-5De1?4yoXy~+*>;3y+dv}(c$?+=o*tO{7I6$ilSJjxtifeP@^ z6Lg*>+f+G8W(Cs@Q=^F;xl=K!R?zf%Q83??i+>Z5R)ebzeY5IJ*eK+e2On#81ph6V zAbQEa*@~BDw0BoMr=&-!TA?j%zhef7Rt1Q6Bq^Xz$-{-)g6>PBjbLrCA8cYb93>gH z$L7I3%$iW{Kb5k*r(ZGxgwyO{5IO3#E6tCzE$h{E-48p^({_NSEM4_#;`SghSyxcT zEP6EMrX*pVOWMF7=#j_p&#eQ@Wq=41h$*xve95)Qp4A4 zMp0(fZ3-)R5)UFDfKO?*>iQ2-Pw1qIz0`0k&)9L2R@ja3W=B>4YEfY!yLh}MZ@9`& zf!Zhj^)K(;&w<)@YHSDf0^Twkm$!^-`OQzTEdkYI$VSBb*zD z*l8Xi^|u#efM(3Zi5<@LNWIW%S1kX1ocuqZ5x^zx|2OZiuio7MU&H4k=ijmLDV6{; z&VTn;H%j;a4>piqt^)yo@%jI>_x}}i;#&fk=bwi;fOl}5&nCcCxnjeBqHrYkx<=}F zSS7|RWGrCnyDwL3Hc$h9ngPLvz8C*m3dNEUK;LMo?RAj+=ckK2SKY z#s}(te{t)BN)&yP5wLB-1_5Q;gpCau4K?s-Y!h4qpU5_WNyas>D9woF!mL`(427%B zY1mL0-{N)+b)4WzEF9{9-`F}_ovlM1jxS~PFay{^_78P?*wSVhzvAa|=YKpo!MS-jp6dd5#`*uj+JjR3 zr+XV4H|PKB_qS462*K z4&NmL@Z8AkTqik_s3rY08RBzt_9i?63f*Po83ybyPWmUx|63@__PA}96wCuHy`&og zHS;v$jT)X_;2#MIg5elK%sAAa45-~7;Vp&<7!`;i?Oe-jS}Hk$eqsfrzLmEdUO$fU%tH;FopECLb1{S5|UcuAAWr zn-EA7`tB-k+v`w`a}zeiKHE*sR3xb)|8>MtNP>3Wd$s~s+FW$16+>5^J|43o#tL>2W~|g(rn7o1 zx_kF2oRd=r;HAE+SZ1QLkzQ|5QAD5{0LEskoC3WPb26Uzwz8aO6_LwkRACa4E1L`q zJXJ`QRY|*bmO@qGu8>@u4T}XMVUczC#@ElD1Rx3jU?OWEr5716P1!RtcrCu7eWf&& zDn-ON#07H#l3b-VYy~s*O|81jr>$KG%5dO02aKCx+!W7^PAVsta7BX%LRG7$w{tB_{!&?W)>|o!#f4h zz;>^KEnDgVJW}sp;^5BWEUKn0+N*n{)jE=_BfwXV29eF(vJI^1qDaI>__vra)Z}(s zirzQLjg$jWGACN4mX4|xXDuaZOB;WytT42(Ft&VI#+llj%px`e3^Hn6y@P(7=-5^JG)@Hh5CS7$F&kL62Q49x_$kj+s2cK3Bz4b9wiKU2G* znH=EbEQe-tfJ@m9)f3evtcT_imlm=3nTMxd4ZIs0qA%?;^ZZW-l8&B^f(;F|75GWpQ2$1@;B5=LHhi8`9H}*$a`q6 z|I+9mlNi&2V1E(?guC);5TWtVyC@p7RT~ZmhLNKM(ef`u)WOcE+xg2&C=0HCvCdqq zjp^%u{od-@z4H3M(f?n|2iBrz|GPv;LqZACnoVtvklRO`9-MxEucGd~0yQIh$JLJqz^a^yDs=VPq5thNAO~M#D z)D4dYXdZipY%4rYBj#<;gR?ZwDNAXV^z*YYjSx%^v!}&Jlib6X=^l()7ogZjLF3V0 zu(Q_)9zWXK*=r+^-*;fQeX}3@{^<4VN4xtw+k3&w*TIvQyH9uacV6zouV=xd-Md)w{c_4cdRFQ2}7f{)u&>gmqj{_CB`Z}15LSnC8&ZCIPk4%t$AfQgz0WK7G( zPk=;@_JKAVT#K+j!4-q%FG+7gW^ru+MRBkUd5F2WxitcE+>6*gIamYuX)-xJ34XAa z_`Re{cFx6qC26T+ZW~X|MiFkK0aU~ghrHQS?8BoAfm2n3On=bcKMhA@Ay`EVjpxxZ zNEF)yy3~ou2nQ&uS3)k*DM67XGwG(dUs3A}qG?Xl8#x1UzoJDC{f<)399P#%y zatpQuM%!+N!mkJeXp2395{`>K<@gc!&PqB}eM;J=9+;ud;r)SO%mmCC!QTGH*i9@qMfGS2=pUfDApy@N#9=kV{yjQ8l~|m z1#%4#Az7nH0oX=04rKHKiE&^$eiUXbUEoseVH@IJ!n_KbqUpl5aCQ=N@>;V5VXJ~Y zfYKy`EXWQq;RsM8>m-N(!%1p>;W><_S+6DmW{o@v`yn)z3}{h6wfHz5K`Z4sFY{x= zr~2OVZwE#63HI0;k>-xT%dU~)iPEmmXdI?QDTo&u#xP2w!3C^?(K|xi5l{=#38&ta zNw+tUxJk6t9%+$U>J(xpO8RcrpCBujJ-%|ri)+9xS=F9Jpe#7Em)d?%u1Gy6M8iFi zL=2>aaYMD>eO>3K`S z;E05e$w;st;408aj~t>9Pvm7Oi-qu?wWn@HmUrnk@Y2`zDM0-RRz@XA*7kfgjVP2| zWO+2qGz*747ZbyRs6l(Al;G*dosXpzD{E<_w-p=ls6b(x0x`x}caqUAPc06KUy2y{ zJ8?X>HNgQHi&?9RG0Q(vcClB8;yWa?oybcB`R8WLAw` zz;_tvwc2TvmvBM8w!=0naHhzk5s3V8SZI_?{*R&vBl315;^fe2-Huy?85~}Leg@cV zHvxR}c8vnBT7Jxk);qy3C{|&!P7`1xt6*=!o2$@j*l0Ja2#@-?Q-`1VXn@pwGP3X7oe^3w>_WV!q|Y zBrKO&tk}+px9|jQs0n%%BGdf}W~V9o9(1J6&0=I%ay}5Xf-#R(%^ryB0F0t#qLgPk zMCa%Pqi5145DkF+@?SQr-ck(qdI-e^}V{o)5aK|$_ zYCAYxH#rw(SY|$kB&p`;XpO`2Dba{b<}fNN#T+!;8j~&0NL9Q$u+ta-G+V9p+eQ~A zLwpvyq8{xrE7R4^4@&rbv05sQrRYY!hH|L`Nvmz`u#z zk^N&cZ{anZtnH3Mgb+ts!zkieW|uZZ1G4jSOGdfQ}_710n-}85S0hK z3{R;EO9RzfV>e?z(l%<^JW_44;>L;6c#gvJJ1ce4lx*hF8*pS!kC|#7S)3(lgo#J@ zWAWc7IDX4r)p8o4n%nyFt0O#}4xmTH!KsFAgN`8DxWe4-*cR$;BU|i6C^xm0FhL}m zyX7WhvoQ*a{VB3k{5Z*txu=1_j)Msaw6M#NHXj|9X~mH}yf>2aR_!CL*D`L7H2-q& z!>MlUzTDq=vfY5icb=PzNYe(2+^QYDx)ckjSScmU(tIgU=I9y19ELqQW9qAlDzqX~ zq970oj4(Cg3_K7TLVF&(DlpX;uEZ-58^FLzR6I^;ExlB6s}%$zGX9fphNh1W*XpK2 zQ&l##4?k*V?h%<@*S-P@J=QIs!7cOH?SN(YN!l)BIW)4K?+{airG8RW_~tgBPGr$})Kx5=7_UW08Xbq6 z7^HOekh_5UzzU53l1YprBS-g=h^>A|U?*&BlI+>8HnFd$G$Fw3;}eFuIUlwzglad;FD=<<9AcisTRpHWWz zU>NXdK*~<&Bb>CAs>R%7<>d40R0gByco2j1)s0$hd)wXiRJm63Gn3w%EGVE(e-Iy$ zKu4WBMty|6w=hlSXn~Nmrdaq8_w=?8RLYns8^qMGXas0#!y$UnXdOP*HYNeiI6(4E zs@rE+P$1ayRRRhytkcB{IRR=oH0s=-->9xm`OX}7al2RJt#R?7OW2%P9y8%5@kl09 z@l~xcXimKoH@(7P4-zKW<0R>w#RIK7dl z7*$(>;4J_Wuf_*A9A!W_NQWq(7Zq^=!z$Csurab>89|nYb;(FD#tj0VSHKUQ;87R% z1jK^jyx8(1w^6G_@jGRY@|SDzvT*8kn~_4hCrQFuP||dIm+ho;1-Y#s5kF~T9xmu1 znb6T7#;gVv?sq|S7Y#>fTH+L9jMjnadypIrL<>c7%UxtU90nAr5ype-Mb1~T;h^?_ z@oRF1Cm}vcT7(fk6<{|$vS=9%)NP2Bx#e1fl(_O38L4BV)L)Wx+%1aZ=uT6l$Ut<$ zcxHy3{tMA&cxxc@ zf4g^o^Tz+K(8x9h9j%6z7qtR$+FZ4*$!59dLhju7xO%d`#FZ}3aWYh@+tp_EGU>XuO|K-z{ z&C?+qLy|#ji)NN{5~oogPF6|ES|T))8^EChj)D<_KIVf6{>TX6^y|GT@TC$YjvKOlCLAW zHR(oJ2%Q@Cfc~=J4$UJ4LF?^d)0A`I5s)6Aw_}|idTEe!-x=^oeVy08zksE8ZiC)5 zyTKj5b1gjNQ(Mi9TlD)yuT+THZU-CbJcmCRN(9f5aP;Gcz*P7#1%L;*y!7%gH<$yu z?H~*_#153>rgbE2deABaSFInzYX=Wup<*B!sQ~_M$_h>6i${4YXdWC^jZ;V9mNC7q z9O-L2)Fn|yZ9NS9VeO2tVM@E9y5u?nRVBbV5Z2a1G6bvb)*u=+xgiX|PB%DctB&9LD>wFiL-!RxZ{f*h7#=-RI!YtdTwb_bGZeq#osaomY#uyMwz+VWRPw ztfg7&8aa2DnOkWn_%3-D93{yBmNs^U<5LxxK@B%p!a!CGyNz&grIc`aKm({Cs}8!= zAO0A812rksl=Sjp1$EZJXhVxUA1#8gaP!#bjM*=)nh(U|a2dXB2WB4aTI_brBkZr) z$%e^j1e*=)Wcx|bi$d|$Ba4n+gw`1-VMReQj;#O5S;PQP7(5F{!bZ`;Bn-wd8?25_ z6I8*n-BvGQFkH{U>hLT`n0e`6$EO~{bxSz_mQZ%!AlXfhGEYcw+=Ecl@i&szG_uwF zdPE8BX%)4DD`MXBQuC4^L}=Qsh7$L$W&d;0_NYL@g13UC#Awx99uZo7766@;p*R`U zJEGoxrcBS1L6Swy`dzh3CCZ-Ic z9QZ@I-|fJIG-n43@prr2P-8s`Lz|*z)6o7EN;B1@22!M2- zhey%i6-bC9zdandnWI$Qv~H|cEq3tD)`-6y7BFPM+1Q?7lLsdMKYI}j8|mzQ>< z^IQr74mjH<$L1&KgRp|D38w03 zU~(tz;Ig6l?$k^No(7K5SSPh_nvUq~GkqKwb`;$| zBu|A=ujxH*qdrPcCJEp2K#9rr8P0W?nu~K?cfy%AJfMg@U|3B$>z=N4UJy?4ktW)q zeTuVDC}?K=EgW!^YQn<p2e=|_1a#iiwUWL{*W zuAoyUna*R%m!`99@=B9I@xWMfRjzH8oFwn`XVPF)iqKjt>l2oi1a)?X`L{_b$chP^ zUPS4CQv^y3qF`ha!kJrvgjY0?RqZO8`e~(k4U8SoQB^iKM;-w|bb`uFQB{5w_w1Y;w(Q18$+JTQa|KTPy+xX)@W}p8y?yZ&V zKi1*=e{=r(^q-sa-_7~&-+BHsr@clr>L%z~aQDwF87+AJqazj{2h`aLGn}KD#;7+2 zHcS^nCo$g(b<=Phnayo^Y1F!6Ez;AX;;0d`v2%6FHR`B96iY!3&Eg1>NI46UDGEeEV-z5RnI4es z4UNge1veIB_=Nr-33F%-k3(i~_Pc;YDBi%xl|CiUp6&&@+}kL8rU4gDUD3}g_zFFJ zW@~!aDyFqDmwIa((5P(dOfpGmN0& z+s2zm?ciHzNh~5%UiGNkK|*>Mz}wRKZK)m@_to9$mp}>;JrqJN!*&_nKf{C9XY#r9 z`L7QL?rg5(->mcB`r6t?>HN2PbN_cOpPTdF&H3+hIR7nr+It4PPLV%VoB-(Sg<7=(!_3oFvC-`TSCR)WW9mdB-JKVlW_W0#~F1`OB z^TpI#cYkt8`=7Oq)s52r|6p_d-p&4h4WFC+|7QRHckcfMwXZb@ij%uB+UgJR$0*A0 z(!mtIlcs4bHbdx(Q)50fO`5P;i^k%DNAW`5S7K;&sT=T;vfHmyA*WoW)ef8_dZ6-iugeisp4t7CL-9iuain#ECzCnx$Z z1zY6M30q6|9TVDVIEZ@^Q%bMuW^{~&yWI&zCZmz{;|P{;YuTDWcs=p-$CYLgZOX{wtob1Cy)S>T#OFM?JUo6~?XTK5xD3&}2^FW*~%rvy^X`N|=)A)+6zqf2X`f1$2=NOn%brtkjI0S1nTW@q* zw-Xo~JKC(+5i+sqEfyC%YuGJo!)t9f=_ecJdKP{3yg)_v7T2!cPwW%{qhZnS#<>%LA5t_hgUxmxoiDHDSvnPIOSP;*uC?9qToj zsG15REfFR(TrE@-g)3_U17Z_U<}2R@)?GnQbULD2X#@BwVm$=LX(WKjHTTc&{0c z4bQTrml17U($a?@8lc{1I=*&B^I{81&V#G9)qgv_pr?yrOQB0y;7{qJ7P;QQ5*#zz zKE+m%FW3N^`B_Ty5>@;(X>7#BlD&bAj`!Ax;ov9q2!JSFlFc>4@X#MF@`e9Delj zzbhjQ^!S2-#X=0H`xN*o$hp22xNQo&mZyB*;tKs5g;0r<;>fc2BBFpeQTt*qBuFZY zwo>F-IE)7ucynT%VqnpBJKUk>x4nvZq({I&-$}Sk!;*T4cBTdfg-aY?DuV(FrWlV5 z3&PdB)7Ju;%o=V(_68nKJnzsAOfeNa+)3ih0UU5tO}UGIOTj=r`Y1BPA1mLPVSf9q z3V5qKt!{@(H)!?>Z6w^mUY-r@tyz=sMBiEzB+}lYX-#%p5H#avsYt@mYxxx?oozU_ zRR^~y-A1|YnMl-`_O?{6ww#-sPZ#<*9sXGGP3ho?f-dx0WXMtQr{o>Sri(tn)lErg z4~4qCNW1v7Rq*)5>p?ixqsJ@VP=z2SS5$lZ){q5IV4nr2slgV&0pv-Ag>i_cS z%`e+kwSNgG#}V<4a5BiNO7LJhtU{NtAI6N$oe7_FgeWwKG0k&Sr!Y>1n^F)dpxXV! zzHyJcdtON2(mD!6 zvHvYW|KMGzIyi2JDUYNTJO^IX!h-~FiSG?1B9DUCAEs2@I}69nxE=h-!H?eu7_kM` z;K83LPvJjpdKB;b->xW)7-pb|gAV5!u_V(aUlc)JTSH?wz ztN$nimv@&V`9J{y6XV8*)!ncsFoV&?>!bJZzL7 zQVm-6!W}I_k1W^x)P@w5(&-mzOHn+de6BVWpFrHMYf&Fr=?WsXYPjIn{ry)Ii66uf z3cOWlRR}WkMfklCIlf5o*ai5yb!GBB%7ZV*XixR6)L?k<40YtRAk~F8vkrXl45;|c zC_di}M@dr?jD5(!KeV0Vqsfx_y;Ta-a02)rv6@t6C_kRSb^!z@THsKrL#=)@!cY|q zi?7RBXLuT?7ztu?qR<$B6Aj*K8~TfkWE7o= zDxpH%QdpzQOD%UcvWK6{JN?*pryhfxh9;xZj(@6-8=cIqFFA1y>DGbf`dE-y`Jss$ zi1La+(8nshKd}wPr#V^8K3YlV7C2p1_MLP*tn3Vim7@M3fKXtppDP12k$W2+8&??uTr zEy(41oM{+K>bPqUwse~HOIF3EBZv%Qx9U8MV;G!;7nwZ=!At||=3&}6%n9D3WgQ#r zt#qiS&>q7m9I*yCarPiks$;VsOcBZ#J2)>ZtPqhEeQ@FAk|o_ZL>$Os*SK05-;>!lD#sDg;dPpZDRUs>qfC(>Cqy!T|Mw_^FC_ducfn_QJue*K}g06E{ zm0I4=6v43eJ*qQ)U~zr4_{>P`Qk3*dWEP=NlL=d&$^-xz=}BFh9g^p-XZ3t(`H%cz z<`VyA$A8<{EXseI57t+2KmBwG%@1qr;W+b~fEOo-g?f(9&x2K?)q#Ao=V zsvccZ$+b>RkuX2uTk?N5Z@c--{w%!z3)y}8{GY2g`9H7WbLsgPFNk^CxWxQ#K3Kh( z|LgdC?EKpYZ%@#Jq4Gp9OaFU+{eH>+?^PD*MxjzZpWp

    Qd(hNIU9>r_6pTjhKFsDo_p`V_jM+&r2 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 eB$S^hI;oPS%@s%}kUKysmtA)tekI!xG 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

    =KxrD@cI%Efq29q9%F`Duto&Q{rg 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


    UpU3#t#4jJrUf0DEHc8Oa8)i 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 GAf-wLb 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

    uRDeLOPbZu1webI4e8jao- zl}BVOdF4@rNTznvUNbK`nKr0D&x1733d_Xaoe3+UA~9zkN4*|7UI$JqK0qX(+!ao+ zr$7-H?lt8Nhn2gb2~B*GkzVcfjs@|?WqcUZrnI3IKcZ2vLK{p+jhpNxrb!dSsxhHm z@NrX1kb*9DM-Q7BC9`bQoatqt9tdR$9G94hXQ_{7V)kllU$`~wA#j#})Syu~9dUtd zV<6$G&)avVvRT?m(V|fuJ_`To65wHYmz?4nTy@$)GkSp8|>2n z`|&cmTn%G6rNnKLlscpl(`OgT#fFzMC@rP;m*-(5Tep{ z(?+~`#|uKr z&~UoNV1#m@V4S9`uF_@o$vqTr3$-Lx5vPfH^CssI&ufp-+ zHXTfk*M3@Vd}wB>lL!6K7&*`-O)g+0!n$1b*ZgJn!jJkU!MemfjJhmMaA=Dm39%_D zR2f)=r~C!kx_5_UmBsOXYz;U15VKS5WN6Nn9lg;pCIC%zB@{lAVDZkV0PBrWB|4Ob z_XE065g+a$|8mXo zZc`Rey2eC>7#YdF>aR)ETk`hPRMK|ij-@!VR(H-hyRe|IVs4`#la zHFo&(uWmhg#1+(!rn|`;>yX5O3Hl~d?||chPz&w!W?a0T>K&zoj~mFA=EP>??es6O z1D#O#Vefs^=cooA$0KH;Pw zZ@RG)BseoKdxGXl}Vpw8eL5DjsBEry4X!xWw zy8KWSS_mlU;l*hxoNJMS(n;VsJhAZRAo|=JZ4g=)JZ+E2G~nuxt*t^H0@vfbi3Mp9 zO<%?6oH8UT(@4W%XpnTv3ZmT#Wwo5ug7J{VH$|ZL6bW0u560E-H_&0dgc?DyLn&)b zpxcdBYtA03Lg+cTFG*QYu{S*~tU5$+W;SWJP|)&xjp{~(7z-M*+jt!$@54@c=LYoN zG{*~17@E^FDcK3q$$*Rb9zs_~R}Q+QuU5#641sV36{CziaDl}lPs*bxxA?Fhi{klt z941KE7_7PQ243?R4y@*0c44a%GGY*;1vFoE6yliUx}>#DCyjKQF3H&ggu&=50AR!Q z41;`AL2D$+heD+hY*A{D5OaZoOf#4u#A9cdJWZxou}HQE$59upE~5ezEPUF+*0$jOd4~^`Kxk?p2T~o z`XWS{IumgH!_&w04Hwkko<43-o^dG>3_6e3>n$p~sK1@cH~5pOPs$nx!iTlhTqA3% zZX@GC4i4&h-6Gs(fPE-v7xgVpjX^X@vZe4ypDUCH#=4J!g2Q}Yw4NkaJnR>h-PtQB zSd0QH9|{YXpdrc%r^;y5&K5m9+|Cxsw@ zZ5AcGd>`m^Ur?~1C!z>&3S-gBd|A-}NYQ-qX=kxH96A^xdnSL)F@}-0^w7dPe)wm- zMckrkvR7w0P>#>&0RL!rVe4hJfXRkEfo5HW*^h-C1bXSqQn$KB%)oj}3)z0poWQQX zw(8UeqO|KDy>@ED5_jKbpws%cN+3bo1!y^E-n$@VE$7PYyLg(FoGH1pmn|0d^JVgF z(()}RSJ19nyjE#gKXxfxukKs7L0+uc5_>zjGX2mlh3m>LLMt@${%_d=ADnh*89B}H z%FLC?Agq?9RZf&6aJU`BLHH)d#j}D>!rTvPWQFo!aVdSv=d=<@VI+sGyvjfeMT3!xRXH znX0);I|X>yM-sd2OZR+J)`k=-tC=Zn3HWvme#}jvSBqO|3RxA*XBFzQ_JbmdxC=^C z=MKKQXO)t>Jh47?NLp@m3z=U|X%X!&&h5r)pt!189a?)CN~C z>Z1VG3UI5VdvUL*2I^ETyBezksa}h!upZZ~G!N~{?L#TKI?Cjr(;<6G21-MN-iAt5 zsmw_jX3J~$!(hw@D>9Q%Ns_oG8c%q<1OWl9tS1{|nL6J)3EoqXX{AurS#HRxVoOpJ ztURXcA{#HX5fSA96+O}mE_d@HH{vnnoI(DC<`r6z5JIPK&b_4xcMV5`R1Sh z4DH)S(Sc0sOJ`cOCg&n_#*n2{>r$(z-wvoolRJ%A3MBfi7mjX!NI4}ZDf_%B4@7;U z-(v#}l|#|S&`KnlTJc3}*A~*HVz@doY!i(xk->=tfbISVK`I{C?Cq9pcx1-ylL@y^ z=G$5g;GzY+ZIrnZewxbxlSK9W+EUVF=$hiHknzWm&MoKwq_jF3 z78z|VGj(gN7c1{*LFqP)hUy&MKT&`}b=|~{0z>0|9+KBEr#BKO8#Q(1?Wf1V! zjA94Y^GRht||ff;1x$~UB)h^-BhnUFW#SEl25*kijfbmkPN zdv`M3nJJqVN0=!d`35|d)x~`_GnME9da_hh zrYvvS$D1ydJ6IV?4MOKCh}DF)B|2ZZanCVhpkuP_%$|5~Y0)mT7FAo8;@B~zRNG5p zn@l$q;z+Cvw}4y|UrIf@#z2~DEvE&5ueCL~Wsq(i8krJSZqX&$xgYK7{(&?G!H#0h&L&;QW6*?2(Q zufXmxLx9uiNjKsUql-ux&55nF!cyeOASK`k?utZ>$xu;QzUvLb!?|8KRxRDd4a0I7 ziEYc2Vf)SM6AzRK$Bh|Oiv2RA5Mituss-ejKnHgeKev!9r%6pq*4Q){U~@WI8O~RU zxTbKt2Z^`!Y}cWyVlK*=`YLd{>I8-yt3WG;H?05<(|rnOE1^RoLX;w=6QXcBiyT?u zZL_`4NS!xgpkIo(OL*|TlRU129%7*_4;JuHhzDc z%$4kd=*Cx^LPg3o5F@q<$gd41ZpR|wN=$z+syGuEE|(&m8ZAIf!b?U4wuw)y&vxYM zDS?p$H{H^I!Z)w+dpM34F^cGiu+z+}Gg&|Xxqa~ZaO-I2^x#mLi*YUu3n?~PAUP9L z!4+CAappuXy^6Vb!X^$%OPREYy-2#p7VQm;dGel-&0wc>5@Pqj1EH~NU~;DOC`I)M zjr{)erb;O?)Ptq$n~af#3x?fQEWDKUTi*0Wx#+l9nwbq~G?#T+lMKGdgH~GNlBDe} z=zv3$M+sV&mDLY|%IcB56^nmrVNvl(fOZ~O#wf%OZF?%$(O0;jvwj*l3w$=TX4p~g zw`6WT-}l*7Mwp@oVzWiG5W&tKv%ij0u67%)X@FY%FV8%^YUli5vN* z(B|9acSH=Cj_^q4E3TS~EAR9`l$Tw`Kpby|c|{-jcTt zca7(}?9v(UcPpfU=VbNcy*O7SQPE9cX_Bv=?;X)5FP7y&NAlN3Y=ej42-|EYMY{?V z>Bm9GPGZRuVSChbo5n?vk=RZ@;MhQcQ+{yTPCp=r?2~V==bguKzqZhi+wYYN>9Fm; zo&e%9I{V?3z%Cba+zw;JIei9{YZ52?1$B%fU{KTm#kx2=1&b7LxMMlUBnwY78X&wP zkpT8AQ*ozUTu7)#N|N&dQKF@=$V`=^`BN^bqP&o!K&C^uzY=egolOr{Lkh~JgsshQ zJTxp%!{v5BTcL*)5TTv}!a zS_dj?m_ci*SH7Y0O=?uX;K|w~5gC{OhotDiU7$a9B{P*09w zL10u#l)8HHI7TZ@C7+KuzJM|9Cz@q1fL+@K)TD7$v5ZcRf7{<~A=LQFnNRUVrE>{(1HWyhsp|rs@Ff ze8^LY1^dWX{XO`np%26I@XfH#kIj%U&B|~bh3IdD+fKo*gRv$DF~xVK0~Hj}*S-`a zE2D@*9$mzU%einTmZZbLjHlk32x7=18L&QiSgsZ&BSw9k!YB3hL&br-CEv?P-`~lE zWQsfsI*h;OweXH^cpWB5GuP-E2G#OPS?13gL^gI9w0G2Q$Xj;>nU$jmeawH0$OZK; z>=TxF10WsDb$zU(GULSKgmonh6bc)X9K)72TE^&H;FGTl<@kahn7&(1wp(3}EuoSW zShsU6%jKd7ie8Bx8;2q|v3d8c&cZ4q4t!2D7Lz}Oo%WqkEn*zKV0dAQ(l#^FLKO4`5y(zO8Sf+Gj&=0Wo zevI;&cQ}qN6XMbdMPf0bTlClz3`#bSycAIppoL;2?#ao8do!Y=MIl6~i40a{u2Fes zF`V`=Fc@jk{MyjFGrr zQ=}Jjjx?w1L>?l?=R!K*!qSq&Ckj%1^JHVG1$jX?k1et&jSuJ9j0qlslH&kC<`s-9 z�WajR&Teii_#76dN&s)HuIZ#aiT_tn&delWw{)V5O@u$CXy;Z>L#e85?T+rg#zR3C{nCNV)js^`;xO7oZFT99lz#jR|kvu1Jb$a z-XDq7kE21p|)&pmo@XGo=KPoAw!9IR7BvE!UYLj9TYTy>nmI5E@gp+zvytF zg45EG%8c|3%4ahBDu{nC25|a4NE0(6@)}?A3l?o{&D=@0F;+p{jsvYGzVk$MnIrWKvg!)P{Xo$a+IF z-Z0bTj(d~w?rJ9Ma9~{T_chiI`gb$d0`fDA^?tk`UXjM;nf5-CBodNKfHdCp#M1A; z!tYUrl~k)rFn!+=g|UephRV(re8YMNqb}N?VqEe;LdaSW3L2NV@npzbF9r?a7{%f! zk2VafTI>d|X7ZR)s57M9XHM0) z$@CRSMd(pP$Y%X4j)JSB?J2APW`c`gv@&OXi_O!GXF|YMo(3vkv~I@1)wo?@5(q%` z8KB~Kw0a1|o35YZ?D0VRuYRGkfwsw+aWKdtE~0p`MMkNqMNq}Y!Zvy-vt=@eik3=q zWLuf(!FJCFda(6+C_NXnRQ7D%GHKK?Wg=bTs)nc{M+&A*7Mi9`%rZx$!*K$*OkI~h;V&c6MIQ|FevM7 z`y3na6fL9S@FqJ8Rl*tNQuu16;*^5e-eTa^{E1LqJaHmcW~M4XPs(cLMpIQHMSn(7 zR(Jc(=RmX7vN_m8L0RUY5^p`8UlO*d0T;ZUYZTauCt5_gd!6We5FfeE_dmo1uUt-BPO5Z-Ko4aSr>+s=nbN$Kf1b^$AL%1}vJgwWJ3PSNIlBBb+ZNWoFiK+NfJ z0<@9fG28XiPn4yp=^I|;L~tGgN$#M5heggdX(>unPn%Y-$Jzy5>5WH*69{pGKmMUFAY=ILPD_@ zGWxP7I5ihy>3x2I&IX1_L&rjpO_f?x4L(fNGW1$HH4+j zZmlt}t_viQM!=r2;fGN;qzFE|tzU)Xd~3}qTdO-@4O-letGtGWl=AcoT=pp^c7=$0 z56iJbDDDY{zGH%Z3j9PBzqM`nR;PnZR0Wlj#0<23@L|(~v9)qOs0eV@skF?&JmWX5 zFS85t94jjVqk}}txYAqRQfUtQp@cd1oi8)D!Cn^-#I!T5KEDK9oq|k7?S@^mWvKz0 z?ilZUfFfV>K*PCn5O+*IUSrv;jT9MU?SyDd6w#=(Lx<5QwJxMA5nbx*RPnX~Lpe0r z%@;%y&=I^s97>P{f<&hS790I2C836FD0I9pN_I?U|6~{$lO?*kv~o~v@-2vMnEjb) zkf`Fb5TaH*W$19*rm_-h^s12J?FMCu6X94s;#P)Kl>(G7f=LqN`)LDdb*sv7wy5RA zd;89D|G(*SCt&3RJ$>z$jkaaE{B41LsRf#y#rq^KUcwG-arV~37uz1p#|Q=#zAowr znl0~QG6;r?X!A(p*O`Dk7k6{^R2-s8P_WiAK-l(_3qFxIIjl|@3 zC!hRAv&CDgo$g(E0m8H0=i;qhcD^(dq%7oKbPA$@(gmh2sA6VVh*xF zyNug9ZoV6FS5a_0B$a}jyJ`z1zkV8x`e9~1MLjtRDWEh4@IkLn4Aju_vLSsLE-*&) z#uZ;nBm(j%8^!GY)Q@9jneNa+mxEEg=&0Bm^7fwv6FPJ&W~P)WQz%q;Z6;qB&vwTi zNufxdDLvG?w5Tkpm<(p*wAYTu(h7F0dJ|6Xc?NawTNDwGQrX+1kc{$z%g_a2YC7W~ zi^%r7yyi;EDh*vk*FgZgaPxvEcN6794Jq-JV}dbkrd?gt%lKv<)>H? zg+yhGad(kWUsS&^o^<2nVEg3YO_SsGy-yq=7xi3f3*pSNr%~sW+H9;kqpui@HTp18 zDtKApc$+F%7DxI&zI{ITXFNHN-Y;IR`pf?E66~OzcsxC*_F^yY2gBZy35NsB8cq*> zFD`2X6A(OpyiR}Nlll8-_3_H1|5#aHUt3#SU0GgTf#<7FR@c}5WBEP?0QgTZh9<{x zoK7n@>wUI!e~=IGgq6z6T;%7Q|9SZ9^CkXH)q?k-{)-rh zk~7*_(J3tO@yXKYeUGtNqBh83>G|p5(azq%*7F&4 zEyuVd_E-H!{_^cw_tG#)X)?ZV_dt$&-&^F@8`colmLAr=kB0631gPZCA!al2FMhEe zsmXSp37+r}o_0aB-F|&|`q!PK)7M-7eQ@Oc*;{R5%!R+#FdSU=Ed?}$Sul@x_o>p_ z{FUJGTITWg(E-3(Y1Y2y4U#XpWLb^Fe@-F{rD4(2FPoTOVa;EG8n8aQ&?inN?QI=x zzdC)k_1ydaEvrPY`nquYRKMNS1%IaT7(#W%h@KxFZfl6nQ(et8TvYk-dU5r~>y-iQ z?UaGo+o=KslhhSJz{gdq|E;9{-zs&2(%TjFfnHPxQ9PFNstOoMpjQAz-sFK46VCqD z$?jiwIA9`Bkb%Q5elDr@x2KOi{jsaTiz#(Z0kOh5@S?QZ+GpHqill-0v*kA-dFi)ob#$AVu>ueQ%4lCQR3J|dixvZTSCz3J5i(|on*m`V=J z;)+vnMV?eRqVQr$9X+1eI^|d@-cwv_uax|W;}o@qFQ!%cTUn*Qm7>V3r2s{GF}+&B z#Hkl$6&3%;Rg@RGy=D94bnoD0h7<8aZ~4QMZnupx^qUf91_l4JySE3z$-(x{@o^rE z{TARo6`6b%ypvZ)JIMSB!STxlPNy~l+Wx`G?u*~@fcQD}u$_UCA6RKPPu23GXfm>W z&(={drq$(+=G&7OB~?$3whjwX#TO-Yc8-qr4~pv0i^g)Zyshn>lD4*Y%IhI@72*gl zN~&z_?H&ADRE1uYRFY}VSK=2x*VNUbCCO2l7kejLCr78-CwqkJAao2MtSH79)5;5n zlYt6=&vDQqoo)+7+p4l_Mk2@{acVz=Dw<-Y51i4C(lS~FA9~(ZI1UY7R#z|SfZ)%C z(Ttfsc|=QU92}nPzTW-cooY3<4tLSb;ArdDqwVs+$kV~e$zb%>w zU_r;b2m8XEEN-q@RzaJ(67jBVC44xw5-I_5mEa)@Q58AnFPq+4Z8A)v-jIWKVw%ZQ zN+f!Eslut(KGxJ=iXL7mb#;-&U#QN{c6n!NV|J zgbJHUX`YM@8B?8`l-Jtsl(sYiA@|hiYwWB1Kv<$a77vfQx#nB;E$I#&*$P*S9&H1Y9`x;cA+Mk%1!_V;C5z5yfn%H$Sk-N4?6RN2fdE*o(i%?pM{!cI zBmgfj$tjm9ozE0-bioSpNKm27d07#As-T~5p$G4LOvgkyf_~1wi%q7Wu;6tkNHKvZ zRxf>f4sXwaq||FB5jE{6*4++YJkxra!q6Vg$I|~Z$`HC^0g}B1I5JheJfbY<1L9Z;>_U7uWWKz+9N|BuxEL*Tl1Dok+ z32?PJJX}(@y7le4Si+dATiiJkPRf*MTQc-4lXFt8f(qc7DA~KAGT695?6TlCy(mtD zOj(JSU_XUJto@S`#Mlq^;-38zj)?Y8<#K30BX2jnwAT2dm8r54RaS9m$kqx*f=SLvCYR8o#TA0JZE^sfW8zf!&Q`5ts>2rbw(UAmV3b~SGO*(m^A)JLqjnt2C=+dSJE91vb%o?=Mlme{z8)ysDgqLZ;lIM0u!)M?peN z3#qnBLul~QnF*mu`HtyNG1H?}-r!eIo|9{G6`%ri$7C9?ZEq<#>BTs{8ma`58KYEk z#x%t@nS2s|KfF>A?q`MUhZ?Xr^a$DjP_X9cQZiFyUl-=0$Aetj)nV{y$YnLU3Gje` z$LLN>XQ`G)#~(H&rBjQte}HL&Z?CZs;DZakvF#U}!J1qSp=8Rr=PFeWo5+-N&Pq)& zA+h<2WtD<95=b$UM9ida%S2VR4s+BD z3KoqqjnAW$hIkkc7b!)aN#&$1hskAvPeP2%L{gLlPLdMt)BrGLqX7=yt31_TV{%F| zzg2$DX!EE1d6gHl81mWU)`&+sJ+s?S?&HLD6GzJmO%143MLk4Re%WN4nwi{dl(FRJL@d!Opsi6(&C;rAZHl)M! z8^CXHD=h>I8zhZbS>n2!!J{*@bs@Yuc~Gyl&;mrqykf(0eRid0U=^VEb(7VLPSDa( zlnH_?M{)M&#@E@vPRnkNGjj~JvWW!}hDjg4>#p5Dtxf>m%!Gm}LOx;S5tTgA6bEva z(=0m(Q#)lbn;q8#Cz`(&XG$}RRPVVPL8~x99LDO<03{9F43`Pn3@*a{2ve_EkGd*3 zA7+{(5@Ta&(R8Rt&}7plp_b5m9K_xZk2ycJa{sx;{^W{c65wfS=Fx1kh>|B_J+^3i z)mU8d9(v=pO}YWb64QaZRUVdNhXXed8eMR?LLX4O33+g{{1rt$Gb%1`#&HHWc8#$W zYk?=OfJUJ#Ei^aMI6QSywg0GLHXVA;`q(I}${cMpnCya^XULOTLoRuzt?qxu7y{+P znoA{@8&*Pd`iNHYT6%u4b4*#d_71lH;vF1$+pl)u%U`$lcAxK_{6^b%lEC(zD325L zMUf;7UI!%t^xUu&Rg_&&r7fHEL(Ii+>ifPWqZCe#cuoqKYHpe2m+EoIK~}2C)UlVP zN`=enJD2fFaT+z)OsRN2gQ?Byh7;GnxgRAdJHZMpQeO^%-Nb6Qz(u9zhj#VG#YDa6QbRU8o*P-hQ|d*;)#Tis+1?$rR4b;)uh;fL=()G;OvtXaklH!U}?6q}BsrLK~Qceb{-caB?L+(*-C zCDp4l?atxO(QBWBXO}MvE#>7Ysxv-c{Tud5ovp7+Gx;2*M%LP{qA`Ke! znv%syRou+CV-p9D8L2e`I_Gk7OVKPSwx%=0@lbC2q)e11a3~kBd?XAOa2*H3UMTZK zO>g@JcMT3F*5F#gt{V{r#8Dw}sDHjXH#WH~|6pV@BC9xRARAHy(jM04rg}W*@LSUh-!TGg919tC@d8*I(o?}16iaNEhNkW#F6Ig zbR>@G-%yLl2?Wo=4BeE`)~reUZ%-d@7<927Jdp^}xss=k*E5B;UO#`lUR-=_H4Auc zwXo#Y(d#T!lr;)Uvg<;oFpokpWH#{6LodM@P1rMq@lk2n9B6(xrTl(wRP^)GT046M zRd)8KlrO{!A5X1QjGMeEta*62ov8s&%1Y*tqG#o$_p%c$PYY|HrG2J2J}NEyw}Qfd zE5?P)>a(cO!ztzSot4Lhb>wO%Q$?Oi4NLsB)erM-d2rSUn6>cseZWzLC6S(DiCi6X zI0LI@9(VyPl@egE$Q)RkwY6(n@h*$lj_?<&6E=IX3K3r^DRzpNUhiSVc38!dXh0V#Of&O|IyEacA_)Oa+HCWY%-8XgMPIuAul7WaPC~$z=uh zN_GnsW5HgCnSu@j$nplOaAxg0>pWBJZ)N5FW;dQ)@tL)qD_YVgO+isL^f+?MgWx_YDoK7uZc&o#eGF?%k5DUz z<})jg8vz|gN*dhW$+g%H=LEBN@X`fB$qMr2$o0rADf!9rW!dA%EzI$hZo2npPid8R zeO7kQ-1g-FI(y?+G-o6LhoG|DE$cMs)L~*Ot0I1Zx(1R{L0P0bQ-}zupcFg3{mZ`0 zf&uh?`2`N3O{a}^jzeqTx0%&}bP6h?&!sLxG*eKB$jcOCYAGluPL8v-id_|51Vg7` zo@>57NrG;eyPpbjSAG^5aCZy$h$53Q3m+j?A8Ug^%NG7h9l9x{%HXkhyU~*Zu_Febqpw{1yxJvAk#~5<3ts9pA@B@A$I-NkNXK1f> zwK-Om>A7m*r6n}3cb#{f}x6dzy>8NLlR+Ro2_ZgV&$B{i)p&)9$iw(xWp&8QFA zetIL|9JvwC_&f4Z|MAq@+7|fk$Jb zkg~ziFe(!fZFVMibY#-Vm#iF`gi2ahQy0 zVIj)RDh7LEvDcoAq2R802hfoj|`>&w~oAYA!v^nbtZ z#j?bR0){y!$2-mrCVGTe))>v2vyH#NxRFhl%VuJkRtSR11}ddny(%z+GuLi10`8s* zRCN`qylm{2C|2F%Ncginkx;5=3_K(|R=qSbyua-B}8LYFqF zGVubXb|M(!ap#VS^-k$jiz|*aHa7+Hj5-udjeIc@E~4Jqc9DiiD+cww1vSkvzS{fF z8eq%H1?2WW+)#gk_^-3#|3>4<-{$`wK6B2$-@^#&Dr`SF1$iE)+tF|#?{jWS($*uqOm6i2x>;E1; zNN=6T_CORS<<Umw%)wt4omKvcf&=m?2OZ+HnNf2IZR)PTp(g*(Nc8n>|S z_xn8FFeBk2J1cE?E6dCDFb&QZuc8h=3oHQUg)VR(i3C6p);co2EcHzh+C=YQw=Sjtl= zud$Q`8_%o?`i)_0-yWRX0IeNsikOLphe-R}qeX8J_5vDq`Q3{zY2kFD#3=?xR*d%~ zKh+?cf{S#UrpA-PFrLXmFyKLwstPw*|MT(xbR1kp$voVDw*0rgx}KB& z9S}#83=su^T0Qo>UA=Ka%5@jbG5f7<_!%O_V=)F8xSy_2~ z@chl*&SpFWknq-DdE|en#R+Eb7*0OaB!3B4@RyjTmgK3QT-5lIjNi9AUOTGslA`Tt z0O*1o;w@f!i&vQa#A}b^BzZQ8`km?JaPdwrL3u~M^qk!1XU_G%{c3Cf<<8#0OMlR* z+{X0vzw&tfQU3h5_GtOr`oD+I_pmyj`YSckkm6-}lwRYyd+3pKFRl>EUkSn&I!9qh zqhxa4iN;ItXApNJgSGeq>*Bx{fR@5x`x>Q5CLW6RH5r6s0uPL4j8!oA983X5$D+iq zAc(fr3(HOj>9hAu1CW*0cPSlt#+t}h&kVP7441Di}OhrZ+b>?jA37gFl;1=sFr=Jz9J&k=9MLfba`K=O zXVL7y7rbc)sSbVblNe^B9gSfjU_dUAT$v_D9Sj`nuB~3YD5JNiMh{L}|D1$a4Pj$z z0c?>$a=|mo#Ic?mN)D$QlW~ela(s3Yen?+PM&|Ju#b1l@B#?&vYbCNm6JZ}Z^3O?( zl){6B@i+4XkBul5f*cU_k&}tv9$_pE^cOOr678A6#4u)*-4*Jd?chM45sgw!iOylX z^ASUW(u=9{ik~p;aw2tpJ%Y9S4_t8L9tiMikeo3hOqM8@^cdOUqRP?5Ics|{P;f+p zpNydIDwjFh|3pZsh&&wr!eAhiNe5lFSW0OXa=awnq<8k5hx*mY>%E<%9gM;=HB%AS zJNxhBgMBkoy6)KvJo@|(Obt{)PIYz|bcpD2Y88}3gK;OE=W^X&RV)K&iieEu&}hhj znGSzydBdRHZvpA{(f3rUt<)%m8Lm;qOf@5wIo=swAccEQyOR7Ejz1LjR+9S;nUN7| zk`&C>6rhQ%tQz0{w7%XXphvtNWmgK)oga^TOCOfn2A)q;3fcx&kLfMM;Rt1;1147=yDQmhw2kjM2a;)2K}uh5ONa zn0mS|KWhTwPuHI|eS_0BO~4`aIlV?L2JwLm!7*)R*aZy1@=rLtD=SR{E;p{od#O6V zk*CmeTtO7nNQJn9X~e;mP>?E%HVE-P5-@WJXmsT#KtDU3SL2wXJkS)j$!6CkVn4;W0V>CL+r)VpVnkN-Y^dqOrdP|Oc84*7JEEx|Z|e@w05pkeJNrgla+f)P0b9>%jrg;yTq zxDZ9IRiQ}oK*3JZzx`n*MJNvyd&CpTlLcpr2^<5DaCIhuPG~qNAo<}mgcFQt&x|B7lNJ`B>?RV0%cR-1`^`a-3WMC!j$fxKGxE6|7cb1@u;E z^^E+8uuEzx6|?3EAPQuHQc2;%7Rx0#HAw12m3lKoYebHDZ+09lDA8Wnv9PdqBw+G` z5SKYVI+N{A)AV`RkFSt}fsk`1090mELM{ZRWzgUSEXm9#BTUQgy?_n8&n@ztQZKOq z*s0F{f$}`81do)Fq`dRafW5~^RX!5No1u(6kCMs|O9Q{6wj;FF)qUb3Ww2 zDoSPJ8F=R)3n>CciCln^IQ#*IiaNo>sf1*bqgBXKtSZqAWgv5h03-SL`tdpR**c8r z2*H$&UDGDIpIxGz`i8fg5JBxQ2iE5jlgNsfUG5N|_EO<`OpemK987!&%T`l^d2~Qr zM}8mCQ8au-$0|A&%dDyZy&$afDVsZu91t%P%(~LSrx3M&B>Y3S`A{)AW_r#cO^yv_ z0Ekc%daX#5V$NK-tC$*dW=MnB-rLMNy_W!K18X^uQSReExVh1*7zDX4OLWKYrPMzlPX|62d+AB(yYQ<>QrA1xc$bgyVqpG8*j+ zd&u0N;FrTH>1%p`tJBCT&6(EZMC~y9>W~$P>>Ves?2w#*T zbRA5`Q<*LR@N~U7s}_tQ^q$7rx(Gh2)9FkAXpB*6V3C)m3zr|M9APe^AyEunyVwkv z@mMh(S#`!Br;qD|81DtwCe(ZK*wk}r2F{08QKIbjBuPQsM9m~twVEWl0X|9tF>J%! zy-7mR<&i26v-og$zL2JD8GEfz+9*Pf1f9`nF;r`CZJic^rVf%o)!7(fK2rDy9qW=? zq<0}Z2weG4c;)G`1MBP%M9olyQ?*e7l`lraBpfCY8jfQdtB>7kFOV@S$z98+e0J(# z$U74K5+mK4qcI-h)|Q_(vjZ1U+LJL|9>;A7U5$D%+z_d~gsQHo?*7ERm0KNL-lrBl zvWy!JqEu*ikn~Jx)_w)i_=FPeE*q z`g2vooAP1Mt5^pX40Hq)k!0t>lzX;Fr<`mlrZ(^7}bVKt% zu4`xJ$|74>P8q5aPt;TYNiACtR~qyoiI6wR{fAp!z+pC zxG!|Gp!@N(sVb}$_MBO`QKmGojb^r_x?ZxD35gZ%Ms|MftuOzOt&8f2M4dZHG(RKD zqii|cYHWe}`8enSC+}ZBJAO`sy&tCVwV>Cm*Hr1}26%>o;W~#_``4=XtETtdaVo|K z19Vm}9&A#qr2!7XiZTMD_9U~S~WMAKDeR1j6*y-No=cV z*zQm0Xs2HHBM^DG1#()%0Z3{9bdrQE!n1|i7>b@W2&r3ikV-CEcr?{184@~O;doLI zfh9@-(C^m(0&30Vc&o7EKm&Ms#{o@ch=}oCU4ZE9^d!Q-;^QGS$qFgFbcm@%QjUr? z!RWF~B+bWN=U#p57=G7V-mkkSuMXavcu?YK zYac|cgBRY`{%_u2cK4sRyq&)t9_<_-dk06g-PebEyF2h~cYk~D&GX&;m)PPU%y?(LrZ)~dbOJ=sT?FAk2pE$?va=wx^M&ED3L zclhS$@Zfj{ntu*p_jmVS96>8PuXpxOd}tM(c{_hax4+|8TYG!hRBh`GV1IN>i6agU ze>>WJ`Rc@bb+Gq*2Od7#0nE0Z?d@<=(5dact=-ox@A=m2t(QAg>j0n})vy?2=l%L> z2OnX3TkzlZ$?m~Ec4PZsA0t7Xw4j$qC%WpdyT>~%52FL(fV?<5c-^Yua6*j(0s{5+ zcNhu|wdc$T6v5wbj(0Rb@A=Nw9>9X>*>|ST|2NzV|1W;#-2X8U+UuQpjQ{>)*8ac# zXniej|GWIn|Knah-=m5bjr0B-4SHTOZg196Sl?J$ihOu7850>?oP>Y98vM6E8uscQ zISFjm*O%+C>Ej;4--AAU*|-Y&czmeC0TFiZ&3ZV9{}I(emQMSj^?Kg%gGQ3hc zss#48^g&W1pAWRsi@ghMk;M(VOt=c}AMFkGoj8u)nk*!E*Tv0ans}QY^Y9uwX z6Al{ziAJyKd$rmw-ik-zWhkgU@XjNcuY_*!SYQ+ZI*s|laRld9vNENhP$Ol8!D_G;)#Ga2G_7v0suvc@@%>8?&0VWs_R-+PTDVyXsx z3J!^yQn_x04o-%>+GJ$rl5*x}q09@Moem+QK2(>;jja7zc8GoEmjL9~^JI_Vxues6jz305Z5E=}oGK93Q z8d^0vSF{7N93blw-M*n4x~mC+3xypbe#Pc|I6n*=cu6h%0GLE*;M&nWlWR19$#_zj zGP=OQfM|(W!D+mK?;y))!;aF1qjpx#{?B}G z3mKve39-uv*J4ZMUPbd4zAQuT#-_S2`w_-Hf#vGGg~pPwru@{b&8J*IxZ@XHZ#L z`w2w7CuEDZ4<}5#Gem9QVms#3CCtoa*pEkKD$o!+8dSLBKANWJXV+<&NPONuK!~eB zALOR82}j-U-fknvu*0Zkd*-@%sIEiHkKwEzfHVmwXMoyNSJhguPvTe6qZa!K86t&EAu%4{&8JmcKyu**X0K)@mTZeiH=8TVRU4Ew z%x%uGfK|_6^?E=!n@Be|7{-%uK+#RndVx2y1de;=;pXCcRj6#3Lr_UbiP4+tCpb)h zr-vvWw*wv^c>YsWz_f_W0NE=DU8FXD{J8vKb@}P)>eJ=+GDyRtx7^%@Zf*mcd*_*! zJk^rFzP|G42`r-H&C`5BHGGxr{erOj@ zM<#Qdi6+XV_)U0W^y1n=mF0^ejM=b?_RM6%V;-`w@M6;MpQsBp{rFRpnZ@_;(I>Xo zY&W(a3_>{dbop=>B^RXl?{q|}U`u4NF{9A8bWPauRE%e3kcY?P%P828en>ZLE9eGd z!3v)EpDkD1enVY+nq5@q3_o>Qpaglb=O; zv*|x%T0?txw2!9AV7lM7Pgrn*;oBA1v0$ivCs`UIvB4}HTxyx~55w5-rk-D8XknDfh|ZRD?pb6j4RP^MsxQr;)aeMdGc|ScY+$gGxaSqFJ4UWv zYf5BFtV!`bsg7?fo*MX*zkVb$SiR&uE#<-UPfdRp_Us1i*RE7q#}KVFdz0$Kb4n1O$*C5cOQK z3Wc;Y{qRF%ERcDEe7!o@C=auzMr<$)FlwlZn>{b}7{-2%=|Q6*nVzL3Le;N;=>$U2gh*7NXX=RJ;W?3;#x6GI5mxV@@nzL-GJ9&|BtbQE zTcnjj_Z%WDrJEgxi<3mVI;+h|sS{K#^#00kW5z3h2)xZ1o78$i&l8 zoJ=-0XZD)0#R*TfbCdLdkW~ag>Jlur3o9NNlF>mCmjZFD4=i2r#99^=A(!0;YzrWD z*uY}}^4n?(Of zkk_$V8>Gzc1ikq4mnG>1wAH)Nzl9N+&9#PsL|`C>s1^;`nZ-_J0^-LD>te;Kxxrc{ zwoO$dTqECaU@3S8PQ4$9bkcYP=jtCs@_!#*dp`i5Ipd`+3{7pi10*ZtD>aNbk4F)X z!)Bc*OWA6j8ig^Zzc}c1Y8sxO_=x{)o2>WDllN9Kv z=@|Af+zfd;vi&ZuR~k~i!^yobF4#U^MqYEY8@{K*_7dP@$ir(eALGPlA70xLfwFKx z_u1Aq=)*ZGw37@H41r1ONVtez*3w=T@o7FpUC6?L6N+O%-hp^%9EPIP2vP;F-t@lb(>>0D zX@tgKfM-CnaBM)MT7VK;=|<|d0*-x$Yf6eh5@%OM<*}+A=UfhKc$AJ-ib<|Mv_o2! zHS}tK&!?90B?`(EXNP=PTH-sP1Ii4e_F0Ppv>+HX=t-V?+&o?=Yq5=vzN969C&4fz z>AuDBJCf@JCr9r~AXX{w$hTxsu&5$@ylb%6LDMG#elZAu=IBf<4rf>dQL3Hc3G_@8 z$UG_rl=0%x`<@>SmwMq~7$nhTAa56y1Jok6s3?(e33XLe4$e^flzTg^ zdF3)i1qm1UtAFN>*DPwhkt^ygX_0-`==eh2R&#wp)CAm!CNzIA#aSbOHc3#RgZH+` zDvQ(_@`R7ghyxKOX1&6?N>GFe!{-e(Bq+wxgO$}aSa=_(B9YW_y6Q`CGFTczm)F^Ht(Yjc%(iL8c4HRira1=M z9wl^T;-x@{o78JPGjA;w8`$&njeS#Ls+NP^9{e`myH8ykW&x+=37D zkHrW+Pz}ptbV()>oQ_<7#)=AytVUUj=#Bcb>(Hq~*IkXG z3N)0cHNdzaQC}LP%}enRJ{pGZoOu)tMtQ)}4Kj*TypzUCx2D37h;d|)x{PcnHa*PI zBBR^{#D7&=vMwd|IlPN$KG;Crour6sd33ST;{L*_dahz_=X7{Dy`saT&hDlpn4N23 zT_RhN9L3bE5B5Yw%B>iOfp1#@CGin-t}&u6Z+o_shzkL`qZRl(P8i)XK_fydK7SCB%Kl2 ztB_}SJEsEe+s1LNnswY^M|Y-dB$6cTceAJP67mTov`$S2K{&Jec4mxv*{~T$1w;&t zR<3-sbl?+1t9Z-6`k+pHBY_My0QWwD+@G`zj>k}0Sa!2cj71b^3IfqEIEe}m!zK~n z`$3PT1grC?KC&egYsar}Ns*BgL|x|wH6wFoVl8|gVt@Rg4X1WoZG6i^w!6ggr!=3n z)3KxwzBPBfU(t^bLwG5T=oLr4Mf=^36>yL5Xyp>8W`@Fwnxhf|BClf_Lv)GZ_TVtn z3rvKFG>%~p!7KV2o6dP0T8<3r)WXu8Ncb93p9r)*%B+XV}zl#mRInFX?H ziBuyLkRCe!2u{lwC&SjMF5=>BX>7cxemo5FtU?`e2 z6@AI>np{q>;|wa#b+oi>FxCu`GE#|S7KDcS*D5H{NdBrYpB(1~U`g~&l$IpGE24rz zd#Hmuy=9e~xYs80Ik$Z8tSXpkv)o4Js+*0Y+~Y);%+PF9#VyqXUJdBqJJ2s5{Bbt9HXWcBb}m4 z%Gl$mQ9dE@a%b;Fal_rFmcHJ9v7#vhM`^c*O&0vmMry9lDJ3*{U)Q_7j|8Y_IYwKL07Fs)IuoziK;^S zlV*-e-l`oyW27qhFpN!ahonnx9pn!5)aewr{$a5V-B8V{vS#E^kdG2{yGcwaI2gML z^4x&JqtiZRIjcx)32y!Opx=v&n+~qwpq36oY@CWUQJZ=hzgO%35G`_0RQg|h%kVf* zTW*3&S{SCdgD1dzmP#r@n?Pq6jwMl%_+^-h-APg`7PKtpQse6C4Rta<$2JPdJR6Xi8M;+F}aXGRH`Px<7lz!DV1yx5>1(1L7Tv zXwWwc!C~C*hZjpy1O(IxBNJthDBxlOqTwQ5dXPjc!1(mzn-eX^56fC- z0u#_-OEvqqVkK+8u@>orqcKNEkRoSd&gYv4c=|_f;+;KY-MEjzP%$j=b2tG}NUETA zrj9$5I;(Mp#;q)`ztatV{B+h-B;FUa^*X!?G1C{xOEq=98B+=+)bs5qP9p)h=+NBM zvOP8W`r3_)Du$jP(YhrkwGP9pMy5iuX=S$0z7w9;;6=*=(exT`-<@Blp_SU5ByF+d z5^F`2sU@U=heoa~Q7a*Fz7{HwIFh)r>ttu~(Aafw7-(Ey30ce2)}chDpT`by zGO{tIp$Ix6r2#bIH*#uSKX!)AQ`4<=sKb zilVN4aj9Y#8zzB6-tvC9s#C)Z{ZmcDB7Ie-VdMAU@52YpmZUXyjfL4X7s=Mx02rk| z@0;m37$!J=Bn|M*gjF0*<9G+jVg4c!<~fY4lst?^67N1DX`ZNB5|b;#I8^KQ$w@KQ z+P*7MFw;d0!EZEcoJjo2-^S8tbdiiNu^fdpIu6H|XhbciIel+sOaOi9cB+w1Siepc zL}-%BA9_l20uMGkQE)e|P+{HjmYXd#o;v{$Ch=5+h;k~)fM!@oRfaMM^3jm_?F7YF zyh~OF3r2h(Q$kWbh^~Xy0tc4GF;X%Gh9Oic4?01jAFfC}S0POx-nEaTj!3@6{>l=O z)xM557k0+HMP|YkqZX;kAZt8}<$s^J|6;1gY3xlHfiL$qd?_m36RzUicw&OjOnUAhn(LF`|&S$ya*qU z|Hua)zZI778t^XM(tB|)7>QVSia~>$|B@>BLyqv+qJ*l)H^knCWZuM#)m%8Mg{kr8BUxO($nTSI}Q?#|7aU_@g^G#PbQ)|R+kx_t_=5z?qw zHyHMk@4PJzTtrsiQTJLwbSt1i1*wnK0T$`z2D9sXZxhm5P8$gjn-V=1=l%Fxjm049 zbo!Ls$vS|*j4g>Ov#@LxstFH()PueUIKM4@nli4l;_yoqvNFO%d$rLPzv}bO)dQ2PG<~$u2Ij zJXi`f7oKObPBovBD?6nC1c91;%MuC+fEJ29ycmXes1m%Gq^J?}y*ESJcH!*C7o*lK z>=kl*N<`!Pe!VHSa3%r7xx^1aiwm`P-~}M;6WGBsTxpjS6PRnFs?h3yokYTd!_sXH znyjhV$3Vn53FaoHpeN>P1#5ni(en#Z5H$pBliDzJadJV2oFwRm=pps&+T3f1OdL_5 z7>uaPda}Su_+_Q~VyT%YoC{FM!M+fSax64gXJV*Ej`@Dga-t$POENje=Mj#jG{|)OF>u%SFkaa(^b7@t_*hw0GERly)q#^4J1Pw5GG`d8X!V+y$)HIY zQE=}f+vF1eF5=`Pz4BFYDHi;=J31UT8imA}%=)N-Z-JA#Iep0}DUhr&J@ zG51ZvshG{+_(EA3VV}`W8V5^ZV?UZu@)#SiyC&J6ufO-b277aI>ITln%*ZeC55SGm zzR3(XIUl#zIHE%uT3NEX@apQyhk=JVx{7|sNFul=px@=v^5dnICrdyKi=<3iTS%3|N3a{aW4Mr+T$nR;=kU<@<^p0`&Ra=-Eo&299VwP!4 zqNZ*DII=FvMxkBxUZd^U34!(gJb)iQxA9-SK@jz^(O-P2eV6fR(Z7LIes>k37B9|4 zhj=GZYEhvC@a`s1t&Z&4&Ehy`tXi)iRxN_86t0$M@$O>Q;+}#K=M7scc-&p=T7Y&} z;cGn!UyCsBAcC!DBG}UUyLk{>FCWB~`hDX#ww@iwmXW)8C|l1BWovAZ7V6yroDdht z#ScUa^t#ihicRnBI~JNhD#zUMWS9|wMXW}-dV%%ETFzcr5S2U#-y+C2nm@Zr`h|rB z)XKjgt!;lOj>S*}j&gJY+)zpuCzS~u@HUiweqrHLZQ&Ctsu!d{!}t;#loQ4ZrNPsd zXPpej7=Xa^8?nlF6q-R(BAg052_W1=n?DGS!uT~Lx%V5Y+%2itA}W0)E2Y(e2DhFj zBdveqv4*gAx=~wj>o8gc2Nk)iK!uK=xML4vNw!qtS?WAMXK}2QVl2$d_&pnasIq)U zaZjRT-c8I1i}RVKM#lBma&$KL&ZtojI)?4Aik)+ECCZ{of-Om;6SN%Ugs2mv{}yke zfNfS0lsZ43Q<5;i2#+LGu<#VSHPoIW0G5JAw3UYy4o5#uR9f(Je#vI*z(eWml8DV+ z;9)k#RD}w0)WsO*!@%-+uBV(Y?Zss+OSyp3)8%OrWkSg2)K$rHzmdULOa|FWt40Hw zL(8jAEi)y)j|B0hCGM~5Gw=CtG`bA05G-iOEQHCU9x@DwEU4rQv__R&qnws}Cn> z;~~NHxd=$@FY&I)bDpBeMsVb&fBkk=a1t6u zK9R2!XqJO0z>ZEHZ1p5ysF0uSnSu%Ih96AB^&ts$AR=c&hK~tVwZt24dB* z!hwd;GH~#|l<`8pv z)4iPvVTD>)nA7%qalPfx%~lMYd?fPP!T{vW!DPVEo}W`zlnB#XFR)QL=P?#NtL@pL zQer1;&Aq@ycH!v(+JTZ-ir=vFFpLR}>>&71&=|+2xl5QRbF#>&5pBNcqFGqH|SbSUNkvgSA}R&)>f zFVpL`H8}RjpcYLmE->(zUt2(5Asw;~tD+ke(h?gaidlO;I!A4R3gWW%@f%lW@2Pwx z8R;M`kHb?k%8V0UeeifFvrgz3kg$X{uc|HZQt=)N_w#ANa_!f-KqYhcU4gLK9XYHUM+8HKkqie0Mr|}( zAk~SUL2OvbKR)I%wFP?B^r5J#-J)0o+9nx=#@1Lbt`H>#rnV*YnC^K$&!W@lM9>jsr z7>Jh%#>N7kL)OYFKBecqM5kXJH5Ym^4m^+u20rG_fO*@14!sW>F9gKnW=n3zS+nGN zCqAEy8aBRocZS#Q4hS?2w>S2Lb$_115Tnv6Xl%Tw5(8tkUdF?fL_g33GyD$@5 zQ9F23u~GJUE$p`5{2PeBbUC*$xwm?AZm1T-dd0$4bD(NX3w<`)>4z-m$*wmvExfBW zhp=wG?zYKVFTeKOHD;|v=-nr0kerFEHc~wBIMa$gdEd0OrL!k4k%9XNa5fmgCwKY= z0Y#@ap2SsAOBzy#f6dD+|AfC8!i_j5Ro$`ICatgl&(8q%dF6ET% zz38mupMVs1&~02ce}?C_)mH-Y1;||VovbWU|1Z(711x0I)P4bD)+&5+2;AVuAK}$b zKO8igC3QDQ0d8TsNx2e8^UYRch_LmZ&`Ad)>e3+fk2xrEqploHFx)H?-Vgr-=JcMl z=#fnM4l}WOT{Q3dp*5=BpFE7$34fp&LPUkf%G6M=Yid5ZxE;c?|e5&!XeNe5! z1Mzp}T?HjUbpo3~>eyBzHFESHgGuG~|5@YH3sX6|V>}QbND5#sipOh96QJC}*r!_9 zg(GsaK`^;%(0pe(FQmOyiE( zT@&(r+Z}eo4~;GmE5@+olE?7RMR~y`DhSKLg8GYRDzd#NCLVaZVT!!VkT_*1QN*oh zu4_hD&LQw(jH#v*k1|{UHAZZ?MHvprz z(YvNkG^QA#A`Eq~YA6^$9(ug%P2qR0qH8lpxKfvZYq}8L4gVCXaB> zIkm^{G3OXaz@&H5$_VIbfOj=mU^0U0^GqM77~aTFVIEhR(*@ zgRs~rQ#|ccRLb8+Nf5SKdj7L1ktx9R_`ZiVv!hLOi_1e1+OEou%!)t?Awy}})yYOE zujO5Z55^puff)d{@SO^7q2`z7TruLVw}erOU@$k5c03C4n_2XnyyOa{z%_mNGtaFPMlg*#oI;MX!QHFZ%{1a96kU1?MXzwEXxZAm<#s?BtC0Yk9); z%Fe{7w&)ubObc(cG?xZUP?vaKthE@5M!*Pbbil6BIZC~x{ng)1Fq^wfy7LMJ3@ou9 zW7rWIa{XS%=OyKkd9D;Rn~1Dafd^zT@!4k-2htiFz%yIa9=k$7Z-#vaMZI#sIen35 zn>H`cbO$zrkiuybG#S)Q+f=2%b3xaBrpn`F!pgC2RM?8*lQBmz<|+C5=h^x5$tRSM zDsGL{fr=|pf$vG(C4q?8%$N@{WM)i3NGUG~@hZxVNa_ZHq@q^K6*L}o2_(m?Zqfqd zrpR2muX0XN_zw)6j%q2|eqcb`81xj^rB4&Yr2OYi*5xq)5u+j4s(Z~TN+N5P6#at) z%rW%|9_M{|{{niaP~i10 zTABjghw+E$I_@wpEao@nfb$#P50`%*YB!kD!4*oIs*RbUPP!4I>{ck6rIw4VFx$eB zRFlffvUHpgr_{ZaJINEzz-X4s5i3h^Dqiy)eLuwn5iw?yeNhtmc^M_d1CC~-jlGCVXA4Jv10Ej|RrYF&!{KO3fr?>-ym zq3%&ROfn^z1xOc~j+>5KKN~elOE4Rv&SqH+BI+`y1J&(L1I0?n+1S}ZRc68Dx}GD#E*3wtGd(w%g#= zOiyO6UsYu$g1XtRv!JsLPF>hHY0O^fRU5+JNZAIUtGZxdB zrzrqGXKOZsv)hnZne+F@W;0bAlXQslH)ivnTx0X|p_`y!Gp3^cx(up6tj?kO!_Om1 zSUiazB;tWRtS(RVE9{3*W^S3HBHVf83S7n&!OkHP$ZS@SSNgNJa9o-dQJi1KmsH^tGe;l&FS!r z5?&?7rmcb4%0Z#G8+ek3 zFU`f3cQ^A_nb-bTjPUO;{?p3imE|Wn``;%k-{L>r$7hQDuVwZd#RX=(Y<=2MCY<(t zlO1@OqWle2IBW`(jK(W?_slV#m09btR8j#om1&oyh=yv$sg0c^&^RqAY?MQe8b36N z%1r5fR48#)0i_+^d2e~nSz+tT+R2&%Iq~d`t)3OL-n3az&}!V#s8jpE4>8wIAs%G& zr~=wsM$R1cfkH<}mUXgtRJhuWG*oqc10Z-76|xXz1!w69alSO&qNK?)Vw~NQ^-?wP zQZ+DkjJL|$P!)iNwCdGRkZ)c~1Fmq$%H2frDv>d(BO}>_#224bY<0!mgsJ zSq4+9mW?6X+S~{~W%Pxh&~SW_~xxny%3=-ID4&v zbPv>2+9ti6+UC?N6C$SU-G;QOB3a+O*=hGGs%2Hi*3!{7Ue+|fo!a*Fix_O#l(1=v z7HL_#&Jr#ms;O5fL{z$j)vgZ1R@kn1=oGdqaSb_`AqS{Nd7R=Oa%PP*NGFMM#90wM zr(Y@|o~DF_CozB*Ia(y{8?Z!;>naP?bZKV_;r8 zys2XQRXNoZ;?u7k9#ygZ&&9FI@ing$+@F~NMxd>4I7ZZo6hg8Od6>2BTl^c#1J zx#dxi8}?hXwHfW(WwIP>O6yfw*esH>%4E6Kl-55NyPAQmUFKU*?LYQs&ij9J*Exp) zz>N5h>+6qKa`AtcAAgJgcpsmV`+vFXuUTq0`VXcxd-cWwcALRJy%n{4j+t?2cuyB92=9z;9M0%Dn%*Q~HmZ}IAj+PTco^ywN)Np=w%|g4?zc3$@6IHbq8p}& zbO^c7M6eGOfT1B)a8fnbMJ0K<-r0G@5mml0aw0^j8=tM=H3b*r_&e$*j*Y%Jv!JxL=EI0n98zRBPGk@NjmH6I`;q`Q90)7m_-RAAs_Jp2 zv%Yq%Ig{{QMRO0Erg#o1JFrY38ztBq>o^RokN{Z?(WwkC&DiVa3`hB_<(?{g ztv98{ujF4xd4M&}opC(U;i61BbGFgYc6bsnR*>Qw><238CK{_~q&^A~8(tlw?_t0Q z?y9ezue6wLKnX^#B}@PwV5-$m0*Ye5;rQxsvgcttApbvnlcXplvAqI?Pl$*rVi-mw zMY@~}t|gQl-@3DlAPuV(uT9$~(oN@8Y?!4Y5p~x%8i(EJ1C8}I1_cO{M#scuYw?`E z4o3U{zO-ETPi?A$-9<|Zv>cS8{y0qH{-p$u5KhT{VsNtLT*eeYL+ZZ!86WD1C~A=F ze^T#}iQ`+!72n|K8S+ltOkomcAps1ZaTqu_aLrN_T`_Wk-z&eZ72Rax43!fXy94#ny#wAQc<7Ol zC5^=6J3>duqmHqcTcarsD&4zQl`Is-T4=o$PW^6Mz_#Dhf^ukG&s7Tt;> z!xFm~B&Jg;(m)``_BL1$)lw5ihX)T5AmV8T{#N{@;m8G2Kz-ijJ%TKOIjXM%9gByr zR7RFZ05b*#qZPs&^lY^Yw$B)y!8RoN2N{m7#kwCvueQ16@nLJj^>r}(pcsk->-?QS z7cmd0@{d~BpKv8XG@u(!BcSwDgT;X13(I<*AV$5JXl5U~pYp5q!1Q4mIlO&o>*yfA z8Hqo3g6f#*7$khc6pGG=$KSXeRNC#^9SsSvs*>L^G6v51Qkmf1K!$%8_0?tNN%j>d zPaiCuUj+(W(M$b|hLJ}H3mCyU+4MkAIa)e_rT2Ba;z8i$%JYMWi07(nV2^bA`a?bh<@-NSK*8J5Ftjc?%PqZF43RI& zAr<*w_Q`o};is8G8|Xn*2M*^a!~*aS%Nt;-^RKCFk17ky@C&*E0boryj!ZQ+B89-k^PmNXA1xBOSI!!@%V9K!^y}DVQ z+Zz(=eUy{JJ>rnw^n)pd925VV&Nc1!cE$N<;oy^W3P*4i!ndrXz3yRP6hH@^P~3!j z(I84u>x{xd!_W70z~Iul3^0^YpVf_1l5Nzg>g2hP75v%!lz$2-s~EU9!6d( zdQqRJvvdoUC%-B2*jU&;E%f^uoMmyd)d2Lox=*UjaA8ci@}h}RYcDkk1myDNfE3Eg z2Qv9Ofhs#79xA`F}upg6)G|1V2QVH)PH)y+FQ4 z>R8GQhsN9o5DP@NK{7^Y2jF?0Tl4c#m3E{|pmN>(__)QUR18g`i-bV8(c5wa$O2^r zupzP%q^vtE^&QIN%8A5sVF%*K0YR@a*(X`9pSgFtY{AQv_;ejPpW~vji_% zumEk4LE<{$6#Uzyb&+p%t=fnzDFU%VGZQGoSYb--P8jPd%ovkLM0^J;4;MSS8j-o` z{`2Wbf-W7h(rPfPVvrOc&^PWJ8cGl5Ch@)GJT1slvk*hWQpKX(Afd${uY$K^t;;HN z87nvJiee&Z0)vL8hG#r<5UuKy%slYC!44&KvNX5;irVK;pk?sE`a^zSf1d*V&UrW# zYF>oSd;wC(%o%XALjEBH%zcz*2IOkEXc$Y92^;KY_17dqKg`vobHTO5b(ETya9KzI zGIZ9D%#wL=RaRxM`ysP-F9+(>l|gl_stiU?aSb<=!sNlmh)Wc5DeYGN!=_gPZendo z-Oz@5-d6XBvo?4tn!LQR-xvO!oCLpTsZQlj49%ZRq62| z4xi|hH8FL;U`|Z7HVyd#eNfx<*3)tdRq+Rn0?~6DJeD#`U{tVU;NWsAkYVR3l;YFU zwBAw^QPR+2R)iA|92I?19#IOLFS>3yWRsi0v?*yy>#|JZJ++^8;$C>G?Hg&HyXRDLq+$n>}W^&zMz- z^AO(@5FXQ3&Tj#Sx=$f_hKK2b?0Oc#fFxy!RZwYZOqUJ?ZXxWr=}8F^S=vVST=~f8 z0j$v!l?QV^I#82J>k?E+C?v(fKrj)uu!O!~mVK?t#eH=(EhUHD%e?5b3S9YKY!flG zW7QpTNl~&cV=|3}A&<6S-$4$rqEoJDAE_#Pm;Vl}!ce+*u%z`Chx&n%cLny5f*dIP zAw~JJ=J>>0;QNfltLGdl4GYjIJ&O%nv){ID56O9r7O-IPM(o2Fg`kSK2RNa*dSU!d zhEP*$MCupIJP~?#=>=cBflh)!xszdlJ&q`c8e9?L$zrA}sO`1fBs2jJM0-Xa^Kg~~ zuO#3l;`qQMtI46Iho$TLbN^6Cv>sT426M0=$)%Yy_vn5}_XX$XF52T1jyd89HYUUg zZ>3tDbQq~m0Oe)8l}@O$NkHXV0y+(Smq7i;i%ET<; zc18M~3aRR3;$K4uHZEKZ*%(MjCG%G z-KR_e6nK}?(n_fTv!M;730kL`0NG7%C>m%QsVPi`)sCqMp1g#`Wj8RNka-d zr_Lcnx+dK!CB*m0PfWRwu3x6RUL^stF!@JalaRI_4ty=smudV5_P)D?!ZkbiX3s7Z z+00s>;ZEmQz`HYEBx%rKU{hvg)UFbjSS0sgD_bH6de0pi<#JdX)ErutP(@7Rnz9rk zjK(T3Ab-|bh6D8glW7L-NJ{2T^U3dx5h-q7%u@O{U*t=*QM*K_0yM{GZQ%M`JCrIj zTy+#Jum#2Vov$gX zP=;Xrd%+6TR`5I-&n=Ag`^gX7vM&j&1Vw|ev&|>*g`j=`erAwnWrlSdcl9QC(WTXB zA+fkyoJ4FXw#|+8NJNe5Pi1L_Vm~8mp#48yyeAEZT{rqSN06G8n3;g?Hu;ndM^;p>niUcY@NpaUB!~B2!G)<)J${Vjh zx~n{n0gicX(2O5xhgsCW{1Y$}QbXGdkn@)!!3*42)4S`#a+40Xcc5sP+Nzn#gfos# zBZZO5<71^dxc=ZHJaAUD-ExJq<~E~+iXGz(ha^ZdNuqv8_)DIXjay?3y2saYC>d;_ zozM{EdS7#9FftFotE^Izh*>FHrVWAps{%cNrcmKYXNP(o{9<3QITa=ojKzFQvq(Np zn}m#5-|tJ>B2ForO*M>dq?ijyEQ&A;r27G`9iBzzOyNaS38wOi0U87|i;qF4Vg%-p zW^Hla%`)op&l3QQ&A4DqC*5)SXlearh!VJ&cf?kh_I5mnDe8llu& zBRkQFE3k69v`7h0)nM+l=dro1+;?o&5Q;k)sv4AA zgReawhu`b5t5InQHaFoO(om*3Wk1wIVJ(<+ptZFL{d6rAs8$3OEFT7AVj)b6xJTKT zbp@b0)RveC{=160|JL?nA*3P`CIqjTzGF~E?M6=0U2fuqima)f*k4)3whd=AohbE zRInu=0%GE65Vbso*`PDYLdE|wPzY}!Ok19Ve<%A?@r`yK(__0*@_t27mCtUEpu)=GXr zof#yo-$t+Dn%%)~4Hv-1&s>=+0eUY8iUbg?ZuGebqKz z8#~ZiDDOn4!Ij9zW~f(gtJ#qw#NbX0E8XycNbp@xFYEp!5GFYA6ol!eOxs1cxnMQS z44TjyvIkLeA0*MJ<9IY`%K0Ti^rQRw+z1O_tD9{SVvwl1JMKw{oOL7qkA#mMeX2AJ zDS{_I%7S%^f;&4Q-SjBJB@t95n`8>kIP$fhdW6LRh*coJ7UWDi9)$cNO%R%17u zOG>S+pl4tC4kL0>G^A6;4bbRwi{z-1^TmSsJR9-3N2D6m{YyqFI7cY-TR>8c z9P7%moJAA-8Fi%`dgJivu91RlSx8t+%JTV$9S|9CQEy`LTECr|Olvk^PMu7WOXpTDKRAi)i)!c91NnOB3eg)JoK&B>9q%+_7Ts-qd?vrZvZ`2smaxhpCK@eT>x~@osp<6RXfLkJ13}5 z!xS{iXElh1NI$@s5h<~kN`J$6P~37bz%R-$(yGJA#kVZ>T3Ovf>A9hLO;fFV>n_!X zT}$+o-UT-6R!pn|k-j#cqIK0R0#Y zm_}5LhBLl$cqX2t9G)GFdC{aYKc zwhmE&w+- z8>fi9Tymn4q9dhtqfET?Gmn)3<>uE!7JN^y{%wHVPIeGf>{2)8ITuQyWxYqt9w}JI zw8tN=n%dwJj>i;)_i;}7gOdy1N{6l9h?THdM>Q>O$mNmiR?<eVg|)aVU(qa>f5lB%>#JM4eo>6C%dmHZ}%jzsmdB)4^EuY?c6+Ofw`7!SpX z3KotsVDr>QLn$lyN|LG?;k$@IORk_*%OPmpM|;2SZ*5_wr9r12p*S*4+5&>GaOO<% zs0qtSl@^rE$S*_s)%c(@*~e*~16DZ>&TZj-=Z+(ynUpWxJf?`s#*GiA299WoL4Up; zQR@0nBL69ma;eM zXH;sQT3&cKj%uFFAIo82Gnvm@q^geB$f~NTDF#ulQV!z%jR%>bsmKiu@mW%)V@x>& zCrqRUBN!53$dPYWO-7KTcxP@2@KX}d7-v5?J_40n7zG02Zka$Z<%B#TJAMMX<~hyo zC?DeeJHc0Hp+FRmJyuS_({#MQ3URgm5AmO|@0oRf^EasN`Z$ZpyFqdhQED)yN?D2e zLLc57LV*lvZnUHV2joxx81&26siDEgGM!NLAR2`8qGW#KMAz^V4LB~&j48iA#~b=W zcAcW#p6H`I1sgSn1M>|>blDS`YisxtZFQjOA}TZ@{r%}}k|=&l&MgU;;l_>E!_KE2 z`VX^y5FKGb^j7(p=77PZkTvg8lRcHGgk23K)xDN%N+}Lv@~og^{eGa6H2c|&d)uz7 z96-&eh}M=bzG48<22(9#wvoGqAVxLjk%*u*{bqDp;m%OQYh-Z{o4=H9M{D%ECd)`U zmd8Q++|cP1O=@f-%MgyxxZBk@Ps=YF;=GJ+1+Ya8J3e8$*-)i;dcI33;Txw%uKUn%uHvuV~ zq>S}jN@;f$lTi{-#rx{bc9E(=b9~x1&;z>U?o1ckaqqPE`cF~CcFlK}b@aSFATs=7 zSg`Y^`SS*9-EF-XSY4v=AbO~ke)d4qJ=}iA2T_L|FL5=i@A=(UzyVm%EeqI~AMaTu zlMG4^IgyUj2dcx)pO`bSJcV8vv{-r3DDhhGwg=9T49K%EFovPMTr9_~(14~1g!rLR zct=~E(Ptfd^yH0$v5tD|&*FgYD^uAo`p7RLkh1GUx^>wz670hvyK+%C(a({iBr&=A z_Z^CfnC0#>-iVN)Lvs|=20bb|WzjnI3iYrgzQN5Ht=@zM3 zRKpJ>N_prxfRH%hocjxTqeac7F;D-MfDdor-<<`{aDmQad2w&%*?totjl)>}s zEYD!_Sx9<+{KpntAm?UZI`20 zX9u7jDek~Pr2IgCr%_WuuEbLNSO-8j&pi!jZNCRw_TmE^w0zFI+?B-x6!7{uz5-<5 zTjk|)3tNNxe0tkC{nK?5@p-wXx z@-`9_Jp+tdT??F0!gaa{{6D_9J}Mu^&F(``J$jSy-f7}zPB(Av&0<~ET6Yf%W2(g= zGBhEHAYWMne*)JrjQ}e-RPzI0@>EOi6x=vMsnB2%VWLe|D1P05Oi(%oWbk!H-M-n# zVTH(Qc&j(-^~3QFZ8PpJq>)eHHycuuPt8S#QpXkNI1@}xO-z;qd zPg~ayy_?<8O82Fh1x!e>4esuiQpf5nF~WX*6cj|OmtO=oMeF_3w@f%A!jH3xQHR6d zZQ-_g(6ZP|1xebj^QN#~N60Zc`*{3WUz~*uC6%qR^LD*1htwnFL;7}1zOrL(VIew`;V@qC zl`L13l*T42;Hz{Hqz<6o6-(<&ycp>bY*#u5!S!5#0g4`(8o?+2R* zGUNaeM~Wg&c}fB!ZGnd%)V%+C5*W}bKMn0r-&@!3W5|X~BM1G43a9rO!Z`EFS!V0U z!5usq4J@XqC`%1D?vyr4lhj=@gbJNW$YD>Kjf>1W6GY~Vhf?Rq>W;VF?T8}9r$!rA zisX{loFJ&q(@L87z(r1v1!*mfXuv>Wnt-ab^tj7#dMj1=1I!ewopfp@0_6@{GPul8 z3)7qsv>2^HtatK=3z6kwV46jbC(cPV06RdY72_A@GT3B#G@MSEU<8hvb6TgOqO>(OfWg;$48Q4HQ@!f~K!~0N0Ivlr z@{7;+ySu51cGSk;N0~*3iAVX_Nna_4ib?sT!;>s`A7fDEZ0FT>8X?S`vIuZPz|iGV zQS?fqz!j+Roh7-i60wvN5DzyBQ}+DHO9B@`!cbNUJ$PttCY5IZJa zPRNoU$g#^YbP7x=Hq{tKC$~&$lGf{us`k>6MfN*-qv zSRYwTH^xrse6A_NWMDCJ2|Kv^AA-X^TceQv(nvO9>b}!c3^(MKa^S1Go6d|6Mw(kNA|$Q^;)Q*d2v|0AWK&d^2Dw;Q8iHEoM&hkTfO`>yl~W4WS(h<}vFPL< zvrEla!R_ghp3~;1$$pzT2riWRf>JUTDJp(BgDrG7^&guyTqy}EBFLVg-eqhcar)e5R zr%%Z$5E5;TtJz_VI+Vonv_moW3Fl6O{`dWGKo24z%S1wYilo!^x}AGyB^vUhTc4X~ zF0uPrP+`!b_uG#4Qqu|JTKPwM6dwI0+F{;5Agf<}A z-xT?2xNc)*{KK7%Z@Y@J*qzgMmuRrt`&MVn$oEL7rC0EiP4T3gM=9vY4dJ91xA?5_ zj_(aK`nDe&6+pEC4Y0UX&Z;}NA`e`oNwf^HwE81%<)*lqtj(5l}94Vz`ZLa>eqSU zs0)M*DSm}-a$%R5jT|>#Ihh6s($RW6ZGB-vmICr9UUz?3gkL`h!KX>}4W`Vkoa8j{ zwQ8zdS__5AIZG^^z1Vy@dZreTy%0)?re(1|VIY$`A$#JMH!}kfyG$UPoZ0B28TPhL zQQu5RD(%rq2V*LE;f^(=-Vs70bGulpf{%H7Xy)!uJ%|^r6H>*-na%HLd0Js5xSaMa zbCVJs)FHxC;$v?f520f@O6O|5DrCQYwWvtzH}r)5)gQYEI(n+smx@_i5&t5fLxbf> zNR8tP^*oA66W`^?q&MQ2vFGEj%RV=XeRoA)cte9oN3DxL*o8Nofla%!kdA^ZJb{@qh5g>9kL3~%*o!cX7AbRa ztE#%7#>d~;)YK<$dV)zB(^l#g4fa5mZGx`QZ|kgfWVcG1mj$-CT*oxIRcxBrb6Gd* zt;XIN_U(f%%8w)NeA`<9 z)a!jeQ@#!WYy97jxo4}8VK{e6af0$^U?#@nm8I;zvXj8(z>$qZ>u!vr@t_wydlzXC z|3m_}PDPfshk-wkmO8%5-UvZ|4{XR(;ByvVb=cwaea!ul=%T}R3Rd|eMe_uv zjTdTn(=%nclG>L_9mJu7hkFxiu8yKrhG9mL1LKAJ~3u zBOJezE8y)F?#bh$xy6-Q$_J90&`9#+=&8%X!9ni~wufV5LK+--Q9A`t<<8!dVI{N) zFccES@+d3wNIJub$D_{XLfsf9obsF}0IN>U5#t|HLYeWvc_RdgLw9BMg(V>;SrZi; z{2gBn6hwKNNRZZIJ{Ae0%R2v(pEqYLEzSYeuk(JfF=xY<;5t`iq7KolgB65q!NlH+ zl3|sKDyGy4gNqE3l8|qQL9T-*s=66?37V^YFh28+t0&P#)5R>4y(hbK)_=Y5Qt;5l zdgszj-o^~>nocQtiH_BgH<6Yk+syN<<2iulhIl7btj5X~)ozh^Yd`dh?G~tVdE`br zw6N%YdMIwwKVmm7R9UPfuPC6!I3gXGhYb)c|J5A@T&6wi5J3g*?L{?Wy(KE#b!c~W zY!Uf;X-O-!M|7KXD_sjo_LSZZn`OQCIczEqAF3t={wAbQcBNMaSqAx!FYa1m(h3c8 zBhz78lUNo~-yqQIJnjYIA+yxC)W5_H%!8thMnOJ4IfA5j0PV?-Rk?=8{l`UeU7oPO z2N*f(DStpbDPcL+*$G9kVF1v?{J{R$eqOiIT)$sjT3nxFT#qgOt6w=AlbrxM-e1Sq z0f3L!&TZbi=X^FU?nR4@yHgLmC%WCw6&sJbKegg+`5kfHg#1K^tcRGIcOn*Ji;G&MF z6Ey-9BY;-toTDOf7_;p+Wol;mviA=uBsQa0ZJ2H3X8B_1+vFFr>>>}}>lS-?C{rC+ zz=#zQbkEU`mIOLXIDQKv4(jpZG=HGRt1e#nu!I(Z*GCTBNmyLk&64nF8RWtG3ZE~V zIc&$oM_{}&-|qGffDz6MwA2zxQAYF;EdvP+CeO0D{FWUI5KRvGC~sEihe^TH#I?xd;6|0B0;w$+NE>L@aFb( zx29vpHQV#4%J3ClasU5Ox3MltsL}atN22A z#eDM}ldXH;#K(9GaleBD<+pR#JH!s!sPWroh&bzQ8+p0Od0?qZP0RLqQ>)Ou8PO3U(< z6`vdF(Q)vwIXZ#Q1!7Qn8eI-&xV!5UOzH2fiiKZf@E#8eALm&LQYC=JcoU+DaV~3G znpd=}XkR>dnpccjDO0xAX99l<8}?xW{|f8#Whw$it$<9R(oR+PPL)0z9K8P1LI_!e zbVL?VNNCJ(R0MSNF|i;2)LsuqhmC%9E0-n|suMw6w*j3zUnibAjdS@V; zyO;dJm;YG-cSL_%aK=gtW0OX^5A}~OeJotSViwd4OP8%|^1P9$V*fB*C-OidCK})C zcCW&Z=F!a>^7FO2-obe%iuJQb2mcbDqZ_ zhbeo?0y)8JhWktEys6zm-t8JeB4zsdW@vo{Ei`^LKE2w$Kx%T%W;c{*bGNqSTu5VY#i1Y?a*4GUszn ziK-~V`SMp{PEpA-3-9mDl9Hf<7pHY;-rod$CDVU@&Q#tnOO{j!S+bbOO-1r{%_Z_S z9arKBy%qAZHmK@!%{Nx@G@n=>+3yWj@zCK((P^_ecgh@!DfxNVXH3p)Hvf z`1!xnXaD28!7Jako%U1UivZc1VFpr8A8AtYBv?^}J+ZfLvXgIfTI0Dd&LC6LcbC59_uSp(c zFi|LXEL3ltEs`p!7H?(v@2(h=+lk~8CpAI|On!1zRGt6C4WE1*AtI?7UKi7c zH$qu$NyMtt5~0`9Zz;1PA`vvxJsI}_(RZU4nqg~tAW%;3LR-B0XpktyaU7RIVL^AjUio#6f7*nL`J zC|?4K;Nbtn6bAqIZvQ7H6#G9hgW3Oy!3r@8OlGfQR;Dd5)17z znTW1Iyp37&F!!M2&}Z*);)t~nRnYXfv0b*AtYODZrP)ayuLa+qqzO<@H#P)gN^HLl0)m3kMqi;*v+J42=#B9Hjst$9_EZc_sZe=K`ke&aswiNl_Bg&qCPBOfI(TM(selE2f|=x5po={PG2@z z%{6ys?Fg|Rrd?k#bny?xRnIsvqrwBR(6nI4h+8Nv9vH3tLhdf%~S!Q zwh)`zl)3mgw2AuoIp6h{v6i+9SLU8AmG&B$xTsbPJ#bYlT~=zQ1pHk|p@6q!a7vi^ zS?#uw=Sx{LQ`3fP@B1rlbB^j__N$}Y4DN#UGQ;dxYnWS*21W1gH~nAx8?AxKuM46x zYj|!g@N2qe%(tNQGc?uBidue{k*OTsv_06I96hIexiw(Ews7-q)Is*Yf?%2gbIY_o zPOdR>rw6)#z55$yJOiWjX@-Z2_9zbUEr;W4J?RIo8#IGTbLbX0K6 zHZ$b>-@?7% zHz!JlQ@CUn%eE&cq|M@Pd^2J3|+lPNU+)`!@Mip>3c{TvjoYSiQ&$p4wybz z$_Ltc^;7HxGCAKZW{JDyeWgn`ovbrIaV0(5Q#esZ_qCM&1N?U|>?a zh&Jj9eZ-x9m5bZd8`$L4myTaYdtwz(Q^lk6mJGP!{>V;7)6oLl6tc>Jt3G z%|OE~;##btUsH4;T@nkw65asDLtnDF}=W>Q6(g}9H)l0_@xPyHHRsuZ20wV zQtoh^@QRF{0!aTOo^l<8;RA^3-nTuyr?9v#kbubQ0_2v})b781X(o2|0YCMlGySW) z7VlfH5zn@U9>>NYzI!cOSp*&1tVbOXUuQdh zxSduI^QnVLp8(hcRDh&jD6~a@zocI8H6r=QBlOhXi&?4}V(>%MN&iB`!O%gSteewN#vj>-oP6s9U~9p7m-14ky!HOCC2gKmx7#2b6{3c%_`a} zha~iIu8hb+8b0!nrO^yRl~aQ{u^dLudgtRRc){29gm;blJCFFc_DN1?6==mZxxQoa zxv4qNndoae34xwhE8#SFYPTc!tQz-AGNfgsGUUE1lZ12HA)&x0Kk?eGAbP_+K?SH` zb_6E3NP7wdiU>RmJRaDO@591jteIl>AVv@tG+jgq$&l&$fBnOtnMqQvKNjEf%whId zhdQ2p-gNYfVC05Ws}ne|nr+m3@T5^I(#l_AeJklt9$8Tj%yflDfv55)gN{UwJZWJl zD%4K(TbCWmpSYDY<`u_W{;I7)86?;F<%bSGA_Pq^DIpFq+87{f3TGB1vGAf?j{uMQ zPhVMq!%3mqJPP=|T?yzY*B4#SUvHH*FsI^s0~3Z&G?Ra;OVq4n^zJ%|dU2|}UtHh* z*ZZzsIb9qW`Cg6ee8o$@sK^AG=mXsHIkp5B-XN@nL#EjYpC(GGYim0(>+l=UO5van zZ!~0HdRMTxJR7g%=1L-UBhQwvM|J&%^4}dc9?N)O{b*__`BGvDP$#*LRzbLrve`PM zwmH&=FLiX)-8jkkMz}_|B!z$N=#q<0a)x;Gc+UcVfHkx&n|VGy@E!{LyqhZK+MhbF z(mSslGF|`u(dKo&zE5WrWFSwCr)GY7#$pf%>y?i3j@Ou?=NXh=-aN@>XlgA@VNcDf zx)g$$-To!6xH>8HyU##^E4{Y`5;~mv$7Pm}Ud%Eun@BaHEAn9jSBO=7&PmVZH_qHk z?S(ItBTKL5Ff^-DNqyI{s3AhE!PY%L+C_&VDiPCu4frh3&G&76OD-~|t~YYGGR74l0Y=zJN6kj`Aor43(;0)-&fvl}ujdvhDoQ z*K7I2y9T1IyEOaVklMVGz!4qShFpJHIfDd7O6@dFPbn6N0aL4w=-;w+6vd~?y2Iks zChuq9z-8n!sqUO?$Hjafbq{cX@sIFzU!>Zk_|(O_UyE`Iu@7k$zLI)L(KY5;5ktK3 zQ+FSEP*51zy3$X!cCBUCx{(F2rH{?oy4pviEH_zc+C8hBmuyH$4GK#|M(5Kf4Y!;n zTlc|A$Ia~N&h{gzp7*wg%r06UqkbA)pbU<)Lag#95AjLBcS{N>M`Mo6B%aO=4zIM= ze^UrHr}&^mmijgcx!OpU`9s>{H59T8LFpZdQlQ6JhqR7qAYcyw4kutGdq3!@n<0C| zR5xydUes=tIc z;nM_jCG!O{e3Y6K{OQz5^B|zARK3nHEbuiAsEW^kuQW0r+o1Ujr0N2h+P7(b8+!&l zIOLfGDNtmh*9Y#&KwI<6+R9n3%gTk?kWZ~uecO*sUk&vjA8Fu!SPiOGcH{^-NKQ-7 z6J?PSthb`ar6^2ph&a31Nh>#@(Pq&%UHrC89@^&C)eh zPHfNWbeZ>$4rM3k?q25GnSz)VLZu|>wCL>S%WbCK0pjqhf?jIHLrXpM24?0BDB1K_ zUENxAvvqytxhxUOs=g3pALU(_saa;EZdV^EGGSe;Z93fJ%U)A^)^y&TSUN(~ z)7A{^P&rLb!mThjUfY7dqd@XdTAs1EZ=pU}LAo?yYLXAMj2rx!qgqYfF+udt2@>R6ImO%61`I~GF_i$pDJCjQ; zU{2HnhH=NKHQ_`b*ZUIq#eb>^|79*f)j`VDX|8k8aDW&R*$VJ$$BNcB{e>J7#KF1_#gT+N_$`7Q7WNrN)R{4_)(#cdF8!b zN2&hQ0A4$zi?cw5Q8KrJR%lClf47RRe5l>2mI&I$8b5~XU_(9mC>Vk$FLF#vqbv4; zLB?Q3%HSWrudZr}Ak;bvCgiVf@Wvj)3aFcnfdCyNQDe-sue%U-VW4Mg3|! zla%A({yaN8GlW-fs!G0EmL0T_oWj}jY|@;?4}G4wsJlxgJ;1!QjeaCfFin9P%x0v~69CH8Zr)+{Cm^JRn7>{K+= zhkcW}+&WRhCLc^E-)U@e`@Pxnp5bVdJ#Uu9Y)RsRo)dH5%~JE&eca?l3EX4JGixCMGmF(bNt@=Ffj(V}eTVMR0kgjA2v*dg<3BT%RvI zfixQiJH;DQ#|3N3bAFgUQ|+M-X=(M^~yA-n7tfI2AYcT-XA1RfylD zss_s6tYEa0Siw6aCd2~i6zA9|DY$QN2|Ak^kIWgrN*sp;43q!%#$BADqhJHMcicxq zi#_Z;UWBF{pmtPeDcC#JSt0@Jo7BU@X(jJd;Z;~p)87@)sM7tcHNKorKMZ=zfV^NfqA zEP9H!XLtcuJffD);E@%xt-t}4zm4!7Ai7ZDC1*KMFKpe4wKY=8jI&sP8~LWN3TnbM z^rkNjKFJu4;akRD@-Gz1UK{X4D#0kiohgsw40n`6?%eqnIuCg$#5mknL2ZV~rVQ`} zE3Wn<$$tP+RVo+MRO0&HtuFX@?p-vS3-xJ@b0zEL2##vh6DFt&1e=$aE+{6$Z}_

    })jiveS>2i|_JuROX1GvHi;>CZU%DtD(-wO9fRY(qN257*hqC|VqS?u z5wI(#lq$mFAHhoCuamJx16pxD?S>3sGR;?;?fmL#Vi05!iAN=YAq`Erd**ok@*ud| zvy8>JA?C1K(k*z*7nkB2pGUuQcrA=mXxc3M6jw&vxRZ2M!JdU;%+n?mK0>yLz+ z|8sGDewyuQdh!|1WX{g9oJN04n;%TcaGg#+4@G;B>oD@JwqRjo-fFIINR!*TUd|pc z>MwsCk|w{j+IP&5R_1M^vX)tks~UH|S{`Bjs1zm2{RMFEI9OkCQ|)*Xv|gsNjy_oH z8Cbid;Y;0GD!Y6ZtMA~8Hl8+69VS1a6`gsbbs2D6Rr7@E$Ut2kYn8{LhSG{q;Jkkj zcsfDUq*>~gp47DZ945B(E#iP1_oyOu0M%@5)5k6RY z;?ACkq+bz0zWJeTn$?tYq&x+7*!Ki`(Ji~4eop(v`0LXXR{r#eL7paf#se6WpK#`C zw{l2($I{6hM;Rt4W_Qk=a3YrBj(6JWPttUkT3OrP!bpFX3Xl-8%6d{b$)xQQ7gaYLDteUfT*?Z6y~>{mE@F_9}Hf1%*;p(AKr*UtFIvHn}pTy?%P9a7x(4xH(#bG zpSOcMbSEF&a37IE6Lmf83>{{EkRcrO&ZDWNe zib=O#-j}cWnNWg{&mwIWPqpTf0e~5W;g`_DDb__w+#Nn=;AWqfixhd|dsZB{#dzWl z)HYgvX}K0l&}uRgHiDw=>8&E{z%u%v)RG&8D*ustKY z=_iF6&>vI~t`Sld4h1D>A#A(H1!@xMfAhV)9~X@e=ni&J@anFHnvmt^t~NBRW5t5F zG0DWP-sZ;hNxm?c00%SyS;SNs>qGH10D{V?WVZk3iIE0PDm!{`h=fxe5=l5AI2Bf# zA{=x!=wyZzO=Y-0h?qO-aO+(9AkmGRX$C7(!1;4Tsn~gXYzO|;`D@i$+2K8tX?Uw% z@Ov_G!rF9%ORi!tqxk*&=#zP<#2FmEnt|qSWzX)ctQ7`_9K>>fbi}CFK;N&JJTaI1 zR2O^&T0)4dAI8<0ZX#i(*#inaeeSbK<&KL9qK;Wu!^}NeSYtQWosW1NRwG7COx zaM<1p+j({uv0?`IQz$g7N@46l#x**-&fH=Rgjod`^}5sz@mR*1|7DVafQ1(Zd!*H6 z7)~XW?H*lPp~WlOW|HjpZj#9zGqWsgR#}3^q$Gg4`-&O6Tuk-+@J@P?>Ea=?RN}XO z&pr}Q*rv$cz4yAh)KpDK3AB)-W3y!Tu`9>wR{dP}{{w44l)n|}E7+gey77jy(w#Cb z#Ver7eB?*CtHp^wN`QyYC~tgy#4sNj+*0DWNdPThOAr-;Vi|t!2E@uuhJtCuB=~Hc z(1;JT#TK(YEVPx`UMNU#kfh$6!5i4w2JlVdmY0O7dd?&tNFWB|Q8PWz!&aHPPjI$} zQQEn;O-3*!C<8sicduL~tdz-l8bBvm~8_RQU6IJH+9u{Nf z>aJvpi&y6E9ql!91PUq~)ZL=}hsc~Mxd;7g_PL62`PTrPR`ZC zeiBYIrO=+}WHaHgF{;~O7xWUA#6>b*=AVytu`%kpIGL9aEEKEeeP7b&Zeu>b`@&J_ zW{2f-(*?De8J#>m=v)CMNfRm>j=}*-nVDsCCd{%JrD)IT_?iUCn9=Y!cUM0wIni1v z4(`h$*J^T>N$%`a6kq$O-nT8T-SP}$+?V4pzq*J-tbV=#Yhb$9X6~t- zoX;ff%a>EBT}zg~Dpnyu+UFu(g#t@uk{Yd$cBQ0bQk!>_XXe!NUHHWVZ@pYCeQ5@L zYJu|^v!Y6W`N>h3%sWR_vL4=QlDdu6xx%p(Ri7i>VXnHG>05)Sp5$;kv2?3Y%jad7 zS%k7gQ^q#uCYGrLa#PCamax{FK$?R(rcLeFGp7|M^VP}8;j_4NU3ODyL|d4`P9Nry zn}C8?{T!-tQ4={V7ZT9VHUdKMD~1Nc`f}$4NB8RL%J0Q-4@8P~Jb))`a=rUt;JpaL zJ_;XullJ>-ZKZQ0cqn-Y$xC~udsmnvdD3oUhT2KrYoJ1q+y+sx-yrF{St7gSuvI-r zw`5-sm*ASvbZmST(P3GA7mFWww3ap1tuwG-qzL6mTzMx7BSj1{U9TCi}N$U>VE zAo32$qj*<@_ zEw9{*xMv}EcY+>*lr${qXJ7tS4=Txa3b`rFz<`{K9n41z#T=oO8orLxfsOuWq?gan zGwhDcPd3FIgokx5ijgW)=!HuZN{l%08%s+?2h95+2EpwQA}1(xZzCoMjQQ9?)k!Ws z7fhMuuY@Nk?Eg?ggU0%XGK1#Q*#$qeLd8Uem3!yc8IvI0CC3`bz-=@hzP{d7g_;dq z)-dhiRpa&b0X0!(7i+=LjT{ujgt_NnJQi9s=o#E*gy=D~v#amUM!Z{L$ZvWFXt#2c zN%_1h!p3gq+~n87@HwRsDNLakQaw;03E7ooCwShN_DT|j-F$cJ7H@AimM;|4uYM+OHVHeUB`x$+9?pUO5myViYc zFzmKxM-{e<7iOxTZ?L=&e)A*7YFW_QGhro%nV|@o9qs&uA*pI zJh29X%&Vk1c2S~sIZFm<6-sf2(Kf`xTFKf%y4e4WXqK-scf;ztIDl-?+eRq zzRKEiYRp_-m8YPanS;63M-I|W7g`R`-L16@=r6R~GFVhwan-jjobED?>Hu;ila=gJ zD%iwwqF}aIWogi@_$5}{oV%G*qtc42GzHzv9L&2=ing}-1;iYnyOR+!pugOTn{$sl zxgJdohhc~Mkzjo~On8|NfPm^_Dz)%MZ+00U=RAr}X08P+R3Yuk4F;z>|LA;f(qXiw z4^obP{`>e~f9Ie108#i{5Y|zmqRXIfr!x$EuH88MSieyD0K$vwo)5Deytyv0=t0&mSTuH8Et*qic1g++y-|Gc!V z5Sb$)*IqcBz3#mWG)>}%ZA_WeODRPd*S2GrP<5+PKpcW0L%l|mHqxMt`d7#L10Xd9 z*QB3>(_qO!W1%9Z!5DpZGgoZh*=V@k64Hj!RWeyk8QSjMjcwN&+?$d)fvGV3pO?l7 zi?UfLAn&XtXki=#qna)bf`DKeD^83OdSu5lFmVnth14mhbXcLx7mP`=r;RbEMk2vt z)kDRY0i7L!#DZKf#>Ek0>^Ek73*SzU4PzJm!jn)vDvVXSN|cWqPDZz}GG80ZwhF&s^_Dn$(^REpz; zllQ}IqQ5ijuR8EMqj-~;?^Ls3iF~n1EQ$JFeHL%N+NkwEK*V>!^ajD+_oD&{yeLER zFmm(lK}E`wRx)((_MY{X`zpltRQ2S3R3znA>~O^#AEiU`g%sTTI@I$trR0A6JQ|n9 z^fggqbr>CrMOzSxmXyG$t7ynZp&fECT7v&N3w3U=r>(O_FZZnT!HzpBY9y&n|*&*l*$#2(ALNK$tW5#1{yW?ld}^ z(asK&{v}84{@LpsLC{M>FlO>23c?^jr;T7d4z62lzmA|#?>7iWJjnY8Cpw;v3}s_DH+w%K@!$;`x>HDhb7Vs( zX6dSkf9woKX*M@l$q5QcCdA^t=k2OIiyY#j-s1Cn%UdRriI9C`3jvcKJ`6CQwYRF`z#PWZGk`IU zg7dzlmWyDKk^>678bm11p9cxj1s^zd8MePdIODJzj>BQwpwkEvFCL9ztS5JTgK&VS z*r3xH!{mlZSqvGC?^lt=Ph&HWHIb?$F&c74MYa_i$(l6DAxfE)LYYp=)_Hzf~SCmUJi`pCpT&n8qv}aYA z)tuw}2ViGk zuKGn2i>FzRGUL993*5iZUh&q63Rb;%Djk5^-9HJ4FC{Nmy@g5-gJIMz&`(J;(Io1G znX#i9Ct;GJ`q`)}M)=s$So<2d+$ewaj=}*f(Cwf^8p zyAjLzAk)V*Mp|Asr#Rjxvil%{YmCw{94z2ptp=g+d(ilV zV?(rHjp#V(XkM|7-Ha5lfy6n3pStb929$|w12 zJ03Dl^PLWlC+A6+PLouN?~3##2Kf#3`v@*n(Uke}Rg7KSYojm^D@QI|?ClEq8?C=< zdH8h|?|Gh0Qcpk6r}*M>Q@E;t?(;RV%~p9B?sH+vVBl;aJ_?5^%aYztJym?6x$53x zvTm_Qs>Ul%=jUI6f>H6T7OlVk4ac!Nqmeok;)MK;uO+k`j8TMz%H5^~UL(3sLZ%iu z;B-0dVxjI`_p@8j(a%1`+_2T(+^pXAKuf2x#6Ff~PO&fJ?Q!t?^^_y*7dXFGIlOY2 zU!(M*!0vC3AtGCIg4LqETGtYOuU00D$!Hlmpq##x}y(KI1){~l_jc$>oal29f5^CQnI^V-M ziRSQ}9Z7Nf6r?~jEXP^%tlV!_m$^T`S>5DRzgbnPs^9FiK_M^j%2t_Hty_4_8YuVe zHEUX)<~3XKl0n@f7bv)AT`f$xSy0ys^a7Cj&$(_EzJhCo>URoNFBE1D^ptCa+uS1P zD})(yanp71^;{uTzdx99c~DK|{0F--_8|#bDgEcv_@9i6R3{l@ zTgpB&p13J4v1Vg%{S5Fe85t_U061jDXQW$di~39rmXIr!nr&NL+TE`7_ok%6Fft?Z zdC7sB%nVG93Vx*|V=7=saaJ;nDdMIiQ^lv`Cc}|)fj1~N$$os*XiDT1`K|(|98ZgU zlYymoG^%-mVPDjKW<6p2?l1OD2Fa3LZd!&t7eYyzxI3DVZp9h7DbZ(JyWO09-qn)D zb>`HStfZr0*bB4gJnRgz7MU%1Fs7o7XxQ#g64?8i`I#bUC9~vjbvlhjd*S5X+ApWh z5x0|{3p)7O55l1{d!KzN31T=IY6=J^!er_aqMErA_w8n)Y{ASq6}MYYg2|00>ps?y z!f(o)<<`z`Td((u!jj|j((u`ZW5kfYWcYBwV4kxpS1CBX-n9Q;K@e|+$Q&oV5(AX^ zjWX`p@?^HzNtw;b&AN8~#wOD(P5xubXFNHN-Y;IR`pf?E5}fZk@p!2Rd}4C$x8uPQ zU>&CIi}6w#CTY~YUg9y5KhWh<7?Z1D-0^#{pAJU-qBfS{^Z4;P{e@5V@AB%CmH${- zUte2WTU}XRU4iFo%d4wv|FJv`@w@s=koQ58<2X*Im7DcG+qpl;=i^6zJ09QxA9sg% zlAciBmJ;83DE&Nc?+&}MzaI?3PoEm_WY+)c<0ot1*8hEcMnU_1pie}#S~M8NAf+~H z3-#_Gt;3&j*u?}@^;(m*$|yO&83)NlB5cuaX=Sm}`a_}&cGMOXqU@O(L?iX^k{|ZP zlj1ZzLBAhgg`I6lpL`T1lRoUfZ{NuiPN;(syIzZ^K8FAa4gMtp5geG5^wCFn2g(t$ z>EmnMXn~)p!rz&~oK^eBAB)~?p*EB@Y&#|`ZrRi>+eKLo(*x5o6~e41P(&4{+$Asv zf(^d?^QO0AH-f4$ZsSrlplk0AJK=}Ma#P;zsu96Lmr_C=VV5b8JJnQU#D!!?pa9B3 z_*=?4zc7XX+PW52YmIHd72pMF~?3 zks~xIuN!%US{Za&o;wr-9j4$r2PF1b&B6;HM+{j5>&HJH0Xe4KMtwUNib*>)%$Gxd zum6zzy-s&T{1uLw8B!!7M5RPgsiYZv(YHE4TST$$%#aeDHPa`7Z zR*Vi|WE1Hf<<;dNK~9EQK(-{mZdu`?q@ZPGOEQDH1!pj|3am+n%3_qpH`-x-A7$<^ z`ajxT0U2EaMTxn*Nxs0(>m|pZyUG)(M$OHVsAnXXFLFxxqP&q)ikIY%%$5BDQ$uFP zdXc>ZQ~+vzu6q2!%Oy~mHFdX4@U8~cN+g?^u;u&=WD8H5t!&xSsj>@xfqAMnGZhxn z9i%w6D7|Q2a;c7|l%K}k3W}F9xJ=nE#N+fjqE$7G<5gQiUt0YB;-A}||B~rPKl)5P z|E;V)$?JbsA3gb||GAgXl=I*Dq#MO}0zAKl*~c&8upM_`(J%cYiHG!nq7v23VQ~TT-hx0@4>i(MLJQp+mFtdxIAfQtK&xn<9Gr`jE5-~ z^iOJZ`Y`o$4PeXS>cb69)mqD*x2=7rw5IR{pYkz6XgnB5dKB99M&me*sdb6bM|Cmt z%athE6W{ajuyh`JlO*g;$OZ`yn<*W%I%Bdz!mcDf_oEB}@=P$>l(RoMKZKYwv z=I<5sBkBYcAw2MKy9B)XkUDSI3J{pqtJ033Y0NGALEHAtdXaBE(+Re?DaD>h@^b_q zj)?ERr&$&ny9C2)?|n4vi2g6rZXdx)%rl`m)oV{{-~$0 zkC-y{H6U%&zQ&ReRBSpk=n}iO7p5jhLUzVOKDnZzk75``6am@_@+ovsG^v>=v@@r6 z7ELsZ^_={Ya=z!)xO#dp616FqA6qjSs@YNntt!xT2vU@ksAr2hunJ*@+*jCeqv>yR zOxg(e%t_oZIC1Y_aJN$2^i#_r*$cXK_(aS(q-_GLstSE_%hIIXn5`?#5V12LNH`CH zRl<>VjQ4V!`4G8FFun%%*$#kz(y>+~7R_Ni^+H4rA*&kA{t$D%!9fmc$UeiJU3G2SB7T&;tlv7wR+)l#8qovviDO7}SCErho0l?e=6mCX;#(v&>;r zC~*10{H$&%z6$`!iWwVLMjfI-Rmtfni3svzLU1@4oO4)oWzh$RiS~Q1J4W|~ei)#z z48MTW)8QWx!d}9ls5rCIImA$V%OZ;p6|*#W0$r)|IgktL@yFh%?M-0dM(LP;1CyaW zhkg*UT!9}D(omd#4G~FsU0Y~VI|u2kSoG}Vg<9CN}>5368c`}0YPw09LjefBseF2}_gG8Rk1(EEPn=`weQh7=e` z{m;Q9jnx^T^Glt(=(OG?{vm^cLc@!Ae7M~hwPj$sHYc*GE-cW@Y5i`4|_bD^%e4BnAM8*T<7{`o_CDPF6?KkioJ!zxD)vi;VE# zXaWZrCVx0a^ezO{1)m?5p23;$Vi1hqFYSB?;7Af?n^(7i#0`7^%^1PJ#te#*2P6uo zD?Cue6F4=|fUqP74=<2SWDyHG9p)f{6fY?<_Xp|_iuQT5c}!vEGQ(Ijb0duUhqEVK zz&{@KqqM;kUtg-@1TrOfRP=2>95(1%b8+Pzw`U%CzsN1!0*o?3&DB}OI#{WJCB6eB znJv_DBTyH+gJ0OoqGu*99X9gm5kX+sRV(TAqW`bR8` zAUBfWx+xObIF#eWMKFe)56}7}EiejX#wMY>JiPiFFCtF^(gZ1k?9RPkF(nq}YP|}E zqSI|p`oS2^M{O)3_x0AWFy7v~vEHj#j7S*QvgpvY5< z9f{xPMZkrz5H{+7KnTJu9u{`EJLDiG1o*85bmLu9Pwsc3Kmy5a4~M5QCTW>EEw;Ze zV5(nht#M=mH~3zC7e1t+7>&B#a0})?LM7VML^cs=Sj+8V{7F_#LKU(d}uO-X(hn%eliGi zsq77~#M5^;W85qazy@Q`2H`P66uCPX_xv1~WB`&5>~_Enae1Q2cW~a6NbiW%um|+L zho$x?4IRpk2u`^^F}5)HJ=iBj=#g3sT)E`27SU_SzR+O_o$70$2Ae$(5?o9uJx7>Y z8KqDha0=2uVzbV60B3f1D3|?vINFUt#?U6)0hoV#EdWx_CL{?B!>a}#P~ky09BU&I z7@T%M5)F!(D42Dl*xwJYj`?vz@fCP<1Tr-|5hR*G*;3cX!i}a8QK6&57#d~ik~(Nl zsXDzxX~o&4VaHC2^cLYBysRZ#-Zr@%7=}Ns@Qf#>aguZDA3xdy_UY3`9Z-Q`2$e7c z)PW#*-27k1Q5p&-tN(rYcVL8n(p%_JI0}QbQTOV(Y53Dh6AIR$ycl2<0aQbG5`IV< zP4@&S#ib;%MLL3_z`l>X($yNj;KvQ6ZIIuRtQI#rCMZ?TzCRR=)(tGUY&+8m#?soD z#c42iD_C3LjS)wOGDW61vsznD^QilaE1D``=yP&fJqNJ|%~caV#KU1fLbq@fcu|mr zov)8YY9g`H(Swqolc=i(PVL*5@SD_<(U58=G<^DX9HIb_OyG#J`go0P!%}NR^lX_i zNqsX{3!l6Y)rxeaLp&NJ9jj9rF)PGm0Bsabq)x30^(FyZ|SA>-*5zK*hg`^d4}bP|Eo7YwM^A| zwlnzh6BE@|r^A9D$%B$#^kwXcQU^{!BOW$9(cqcI>X@_K7WiPO5BHx;e^m#KB+n0I zCo;WdxvJ$2<&^nJ7=U8%C_~JUfp`N~qJi*akPDXQ#6(64y{rU^LMHW9=)J!W*$b=w zC#iiv+noZ6s5A={Sj4p4_HfiDz~KQ$-akD(j%`x{e=|Wl?HOf}+T=(tE?TaxE3>%m z`rZzzh~%N#u2Fuc;bB!3Nggp8>LI`ZG3X6#8S?iO_7B-OK7OQq<&^iCPoMCe;155B zT04)dBTA#7pA}HBX)P-NCz=d9@lrU(69OviN3tQoACx7owf^Bm=ENu9bsHxV)9ETj z?UsCg>EZ!|Wt9Za_hW5Olb2@H=>7lMd(-wdj$={yd?kOym?xG283I?yK8%(7f+Q&6 znp*%+j<2Fa4}k$W5rBbb23#WRzrVHhHVXhQlAT0&Y!T?Cy1Kf$ySlo%s-`iJoz&+| zl93(xc#I;YnY5IMmwzB43rltHnB9r6-wq?=Ajx}|VQ__wtYqj$UEpR^M|h;veMd|5 zPQofmB6FBTYdu)jAdOdzMNxe5|LYWMiu4+b_=Ru5A}xO2-cf?3Wwmf-;L7PTqAj1< zas$azqyem>)(aTE(>4Q;iTro_X?G6Z%hn$p`PI+~}W^E-?OU=I74NKu~Uy@h@ z(v5&bIcIwjvFMqNhZ2wAPl1qoRX1yu1%WG#SM05i(Ngwbs8C>4hx@Q~Y(?=2RUw&H zj++C$%-b#w#9m7SM z_F@gA6xcEIDfp|Bw*nTK zT|jej`?|~Sh%`Qoj?|N4rr5Uzb;pIMFNas|bOhqEY7Y|(9Pe$~(s zbl1^M;yU`6{6mCO^!C*~fr5#^Qga_XVby%(2|~sTXcai?8K+<43N?c0`Fk2!^+K>#c-%J!w~UlxKZA zF1$ORUtDVmwqPo@gkh7AVoMk?5?SWU6E*FOB?IcEt@HwW3kg1X1k%Nd%+M6&Z|VlS zxl1%rT+IMB{&@Zxc}XMRgDE)x{Db;!WDI}5RY~q+01N47!91M1{@_eR5XBR5f~!!` zWTXsdI_4*)ps?uf_qd_Ln2A)tt3Na!X(WGVR(cpG5r;I@iiLd?%!!^(cy1mo!$t1? zrkAWj;XKbbHrndpNJ5N5mK$jDp|xsSlp6Q7jz<>$Wj1)YEyb4y%OMh-&Cz-UJqi_D zy-|@9ys_g_@U_U|jEY$jq)Jc38ylOYFerJRYrjNBsIb86CQ6DFKUF5U{K%RCl$_ME zI7)I3MXLVQOB+~m!zc>MOIbDPwCreT{FYcnZ;mhQH1F~?vd5^ zJ|S)3S7|jVuCF$xTy4RCSC|Awpm%B64X5gWPj(fKPrU6ilrS~Q54T<+Y2qvC(h~_!&(h|{Z zl9fzw(+h&Wm`~E}Gu`eU`ZsuC+l}4_<4*WbI3W5rtSps_ZmqBo3mZ111eU*!;`gX3 z0rpmcbdCbltrFu5?HR!(Jc%q=59p4#K!FlWpLy$RYiOAA3WGsRVNykCM~OOWGdV-F zD@FRDt_cW$=A2q}O7G;ozfhk)Sl$lk@7uL)NPmZ##vfp7(<9UWi=%dAj|!G@Kvuf> zDguw<9g$Hm2`u(@Mk^sH%g6nh3I$mMV24BV)6IOw|8V zkH5_upDaKZ;Gj_WkCzV87v{Kxp;c0wDd_u)Er&r=x!;pH{1UOoGWI{8^TvQ587TSY zJS*B1j&+yh4qLy-H&_AF1n-x>zCv)kEwCJRK3@&2Rep2b8=CXgQJ7UP7AT9ARl+zd zSQi*bg(HMj_4(x}bJKr+HSt$rg1|&|TJ#>|uDZL-;FvQCb2sTZNXEksm%aH{cYWk1 zM>Iyr3l{b8?UQz#PF{mR0>nhMgV``Dl;OR7r#KB0YYf9qvJMiKjXt{K!A*vMSmsb6 zH;B?QWxWmGITnFT!i@2&ZPr1=FX^Af9U<*6KsjTjjpW69V`WTg2C?)tQ0e7Pfrq0~ z7fSDo92YH7`?&EbzeW!2p(U5_LL*Mtz4XWCkVCPl>}<2r+s zt|cmg4|49-E=uHJjQc+IiY(Mf6LRTa;rggNyU78lc%I-KaCzQ38@b-i$WEHD(3(Bd zx?J1p=ZLaOyP6po3@V+$26Fagol`FRjCKK zDx-l)#GHeq)ZR-x{{oksY(QhG$4}78NzXC@J;$V~&&0e3&L*fnfTO}PAV2V@!xXzr z&@FBtXSljg{4UYzNd7sYx`#$UcIRpKiRefuF0|ZGZ|a`cst0wRl`CX1H^jGAYvi>h zR5~|bZI&@VaTt$-AuB=f5eBk~iN7UMCk+BSl2HOCCp~=anm`*!NOv~N<6g>?eRk&J z<*Z)BXoU+`N8Uim@Mo@?%T_LXGeC?i`R)!wbadR!3=@ldk2F-_z>*l90RsXRUtO=j zF@(GQcKscDG5V+l%ts&KuRiApBe5T8lwtco1N;;YP_=-j%q*{w|RT3pBK_1c`MRwV}UN9-R zRYJrtp3g1qb2U#z^rZATENV#lDeM%Y_s{~Cm63Ir+x1OQ$gkq7vPWDiHX8n9GDI4q zo12vFE-Te}oQqm89B}FGg6+zqP?9^ohQm|}dvQ|b8H2+_&l1&E#h~Huq8CN?jSPbMW=p|N-Z&*bW>2bx^n$+^iaX@S?> zZ85#LgB?YNR~NY~7%NS*7oa~R@z+K728K`ctwAX>o0|fgr5$GagWM0?<$B;#j+Luc zY>G`VigoA}!$Yab_&LxP%{qmmB=zOlsGQG>1V8$d6aK7nENq!#Dvmb_sMxsydX+1v zf&b+ta6zW^}UopnM4&TaSv3p-mGI; zr9M>kw1V-067LfCFed_QB!3h&uGXmNtIZ`LTe5D|-IHrAoQfE?>Bs41mIX6)3VC;tiiPZ}Dk{CE_ z)f?E1tV3=@MxbDL5TR_}MPlh%swxX|kA+IS+R zB78xwUA-d_F&TjH5I&9q(v|s&gh(y_aSuw0a%RPLXPYN@2;Gv>SC3DSO z-+yJ*=GdE##pgiKmuGEgO2h-NpqHO(t*#c~UYz~Ou~$LWP4gu^-~y%6vW!)>ry2Ry z?nr^?yU6)Ov5bhw7Fw2&Tp}f#sVxUj=gc8Nay%kKPTcmA?F|C{X2u3l|E zpJdjGuYa}Jqhwq9vKePK<3hXL$0NAdcgdD{NTz3VcHu^T8%Db?bwJaF$+Z@g-zg}6 zF^*#8a-G7+DpN=uNmgFgp(!2w-=6|K@s*4&P?JZS;-j4&{7oi-AERU2MEh%Jup^WL z=oKy^lqjVES=y<6U)dztq_8%A>)gG`3Gb8vnp-2Yxi|RF&ga_Pm2DHXO@RvRl${a- zW469OKp895c)P5Ek4!UVc5-EkAA1HjY3w)f(hvUbs8=@#iEknljns}Dpz{K(B7Svo zkymLuk~YguT2BvpuY>LE;VU1zDM3afRcq!QFG>UblHK+{X|S)X_tH@bOj^Ev$l&Qn1NV4ql{G-gFYbJHa3 zRM`QaULVmWD#@&5=xz)bQyosCcxGka?z$6_f=-%j;0S-F(A2>9QZq}?RQ4snwQq;F zUOJc5b32s`qYr(2`H5S1z}2=0lirI?*k0QLxx2N zzM7XId?$9bB{ujoB?c`mr~?VY{fEH)2f#fixc{&&Fa@!<|B&}L|th~9LuU)p!SkE)&1vB~Eek&Z~^6S}dtD#wRt?oEx){6_yt{`5i=JqM&6E#=$@8iFZ zsgPNrP#(lxpt1e;F}ZKfR>Dw*yU}1d)_(VM)z8{Vhoox8QXBP|y;L8Bn> z=7QtZqoAY)wR0CxJGM($tYN#e<}37mNH1Mr(LmYQil>&U7-k%34p#gdJQHyFy1r!Q z-_90}r7cLG!U8U)Q0*#^y=?4XN$Lm7EFDoo9Z5!HD)QffVda!h zo|?1I!?Eg;o*0tc;Udn;B@rI_l;=j;6XPipMo{+!c4Bgi4abdRJZxNtXa^J;C%|Iy zDmyC!uMAuSsu_jk`cwmqaEpi~&%-vJ1}@ zuBl^ajUh9QVB@=Ru1=?m?Z2mNnlZ53Uf9l%$@Wv2Ua~m#z@bwfX*iM@yS5?L3ag8DS2k#jp1B(g#{EMJAk3$aq8_`#g!_@O2y$*u0_w^O+SojB{kf3CgXlLhE zdHqbe!0!~c4}a#oUCuE{n_@n=ffI{Dmylynxx_9b zR1vf119x3o;ot!8WSr)sk&PKP$cJRbQ(>aeApr?XtQ66*h?zKil|i?Mi2|-eHiJNhm zN6#bZQEqA%nfYBkf$PhjQ41LFWgDT(@_xP!P?$T%lFVF9b1Nh(kpF@4tx^U zyp4_3@9JwcZ>_$zu42ikVhcaj?FyD*k}3*{ziGLHRX%reYCB+Nl-cBNio4VIgeJ zi-8t<&4T5RP7*wbcEl5I&I~=3C|USeg7F95Gw*!xZzQzHWZ-LZ6^xzT)T_K2`M;e| zpn1ptIA2WHomoYI{y;?nofP z_a=~_jf}S1Wm}Ic`+P0=JjdSS1oA20;BDv1{0gpMbA5x3Lo)6J3%4*8Oc(I?&?a+i zxCllFdQ_xaVS8GVS031y@aG~;sYMDKN!jnom9y$#lAllFwJ2xOg()t|wi$oP2??aE zUOO0q0DTp(f^<&Y0X^Ya(@NG#_mvQ535aVPRRcqXwB;hctjMUw=0@O%%-F|pO4DUnT4j7Qy zs|4;HHYow{iMJ_>-qK+4%B!#`W*Wv{`dCvgnC4GVo=3C2Fa_rRqwLPnX&w#?3fXx_ zhPFF+A;-123@Bfp4u9}O?9Zn2VqvXtBXq!JZ(BYjY0tMD6 zI7QgN|8P9`;vz!|^T%6;nK@%caW`qPOl3;LDr23IPGh; z@MfIxU3AuDmca-6EzB%+y#Q9azBe7~=|+$_H2x-~cu_b2(*&a+2NPv0hp*jg_|oD1IJ#zE@Tldd*B;`*&E0ABd3(Ob z*ESU~o*%c1LJ<906oTm20-frj&UdNtV*gP0XJ#@i6niP--mJ(=)P1?y#=4BLr{^wj zyLD!;w?_Jp$lbH~7~$p|3MwtT_P4YkOV02_mIJxy%1O^U+rb44m1pHIL<Mn++^AKYJf9`IGH!b4w#kyWxkj- z##V*jb(j|!<+~0tnmgWSpqZQ01jeW@?kI;!{b0h+P{^7P3s6WuA}xiBv8ft<2JhaX zIwC!Jg2&HnM4Hfq6C(673V^Wcz7?Fi)fm_BNQ+Dqj&M;i2AHsf$`nU#E~TaZ??7y$ zk@;-27UkkY=)DgsO7n(ZIm`2V6{QQL#t{AEbEY_WVsB3q)P#Di)Q$O}o~mFjhmuM- zK5{>dp|j`-pDgpy-Gptc&q0~uTXIzqi7#$?OBU)tDh5qwWT~l7DBO()k(Oekq<(;b zp(@yDp*9v$pinD8kL-wRMGoF`ZkMKG6+w1@z5|HrbQGY5O8l720%(yno{q=l!&M>w z^{>@!b|Hk&%T*b~)6jkB&R!T7-!T?CM$v;^-hq;dKbIBt{z*JZ*Kk>eBwi$!5`#is z9CKYH$r-{tBbNnw?f92qvy8#htdY`XW*WIO!^uo99X1{&XrgS4%rswc&B%@u@eg4W z`#G3}O9$bAgQ>6xg*lWuU!(g69?yTbW#g-Rts98{otKP-xG}$MWVn(pl~Ol$)vSd> zgU+lT{~pX{MQ=Siy9quTwF#Ly!t>FXeI&Vi1VS zFCSJemCNvJ<)eHM(eHCVUitV7m9bJFKU3r5FLGQ`V2hr?s^Jz5&!-!GRE4Nk5urw+ z($L+417)H^SHAf=`KGGm zdyX4KnEZWALp%X=aMJMwjEAKiC8>4gUGBqiW)HQR^+_SU?i%`N0%Evy3RTdFyogw| zXI3PnIsFneau+#^u|dgn`?+y=P&C~zy>z5zf= z=+l8P`TLlL;4!B|aSyZ8;X%EdGac-nJ@zzMZ1{_&0lz7NlR2c5@xxWdILV+b!;U+nwr38WTZN^i?8plHuoj&#Gk$LN!l4W%idf?!Gce7qv9yhFQ*kX~=ex$YDc%01Mc^^}y<-(a z^g?Bun=TG?Gli9dU^iKN5zK+kykb{a(1KUfs$}zsElBmlwG1n+tW@!t6#Kg=F{3dq zo|cyUf`ZDT$P_DTNk7|!@l;J34^vz>h?{hd>1$V5dVHwmdF8c@ko5x0ZD%gvEF^ku z1I(%&&kP2`@Vx#iNKeP4&qu##(sPw*<=`kaww3XlD$tn>!}I`sKUD&<@7qA_g}pB&@^FkCsm_atns2<4v{q zEg_^A!Z6WSw|;z4cq2!4g^*Vg^UZaQZ6G`K++najOQ)3{7l2%`+NujgNSi?A-rv0ZU5Q( zDDT?&A-nN}a0nQ}9%#8kut7Rb?X({`(@M?hlH~^hvHc9b5!7AV`=Ej`=LM&ATp+M< zk`?(me{hYfd0Y{EtIC-g6@$$nnpC(}?|rr!rc^M)s)T8#)*#|Eu19&hfA;=NC?^4~ z3-pyXnjfBVle^mmS~AO9-xwn&Xg@$j&-4wv-g^Q@D7@rH14~O6k@ge^tOe!F5TYZL ziiSY%TYh-fyCfj!u9KB2MPA)i8>*Me0#vkGgmdm)a&}grRtxQ%xO2C6nHhP%bhBm$ z;Zr&>XobJa%n)#2CdKEO6vB6(iOUP7;LORlz;vL~Un^_TmU_d$Pf{-$>i~2>i@#$G zzj&dSU~&8nYJ}0sNg2~H!;`AFdl@FIbH0wzS#C`C$ns#OrEU(S-K^znO--FUS-{>s zE;r*+v05y7?QW|)x**@FlK{dIRIS6hQ}U&vincmq&PTeT@91ebWDC4qOcIHg41{NE zdAk;cEO#k9GCVHICbGyRas>)X{tY=s zj2jBMhCFOP8p{yIjYnEy*i|8Usjp$kCY8>{;J)gl_Rl$+!5YqT)W~s{;wow5)7!ad zycS@zhx0`zvv@@JSU%LS%;W;1aVeVW6|Ae1a$hxMwNGNRj>I}0j+_{7um@cpx^jrv-BZ58D7eiW}> zgz4qO_v1b_qz{DKas~`X7>dTL$WPB( z5qwrm%6vvwg{$UpNeeD+WgQjF1-7=Q0=(Yk_iDNg6j_vx8&)<6{Ox3)7iH@b*;jAq zaRrVkU2*tz9mV~`5>?f;NPWdZ`J;S=wf{DnDk6^j@vVwtgF{G$ixffw0Kr&n8vwsA zF>OMSGY)mUzpkX!Pe<%KQQ9VRgP;H}CbW9Dng9JZ(u5YYc~iyHZAQYZy17hBs$ylo}_gj-XIuXol9mco9XN zF^~SvZdZoA^foyO)yd4(Cepcy6c#yyG~byYPspb4iJr8Z^`Pi zmm|`cz!nOu+hGo5;YHJQGDZ8niL;>ou_cvz?*Ag8EhYlY+5gv`uf53b|IgPpH@@uu zpW&0?)n&cXFR@i+va-yvQySx@dbq5OSasMl*ggi+AqfL&J@F($BRlstZ}?zcqv>}J z(?uPd`MHsDmQSJBw8@1!o9XwQbh==n0N1dPjB&FXo2f)_K{Y6=jn(SvjnLIBh6=;G zq&i(=slMrx2RonP%|K;d1Y>lqXp7Z}QO(%;@{{Nac|JUKDzm}caY2S z#Q31~3{JqYG4B=2Lr7w~v80Nj22$In;58mZ6%|lkXa_xt#EJ@MKt(@npcW~g(5qPO z)%cBl`9rB^>jXyBpTE{m+XwZwfBn}fo{3%xn)T)w35e}VFDut*+xcr%uX<>QgXc=) z0}tumnf7|<$*%PAw<4Oc&rGBWzSNi|G;rBB3l?PZCVnf_MjuHtHJ>eI@S%u0~z8| z+)?n^-(nk^a~-@CLWR6jcpb4%!5`^VOPd#o!!l!PckqBRtq=u#M-su;ztZF3SoyvB z8t>|XK;N$XpOtSj)1yY!GQKbzY^=G_4*0>(T_#7Y>dcuP3U+pSylT?ySoK%WS9{zK z;kFMe{>rxZ_8qh1hm~_I*IW7c@l(tegWi|va*yev$TwrY97+iB-OGr=lNV2(Zh%{{ zAKxm7YW_GaEI5IRc=NGlkd2Qug_=da$!5$SwX@HeJ=$ea(a!RF&z)w@Z`qfLv*^U( z>+AAav*Y(ghEfy3)L3v9)?>Po@`4mEyh0kO1Ka)Ws1g8Hn^TDFLnhq~tTEq}PYo^qql9a{#U-!%T-?VhM zxnMA|rov9tznyaiJjWt4&VZ!kwVq}zcmPzbKl}h_ENC9%=vPe7Imbb^(3x?{!=7ei z+$#!{Iar*r7-4l97b>b<5|(-Y%C=OpE)^a7Ai4F;$lDJBye9MxroH#KE1zVUauIyo zh3b>L7o)*|qFJskS)_1jlQG*?(cdkfj0nwME7<*4!_`R6lABo-3 zSKlXK`L8UVe{B8lJpKRexSz(W4{HPU;op7ty!8GLzq|VX_3vK1*!-{OkJH83pZ{?E z|6=2R5%v6ue;y9Q^!Dz|aQE@w*nsa}#{V;X?lJxct=;BPr@43=bMF5)wzhKiKbxCd z&%fONeTL6&G`Wq#i_6s8SXZ z9z}gL1(N5HXaou3z$i>{>(z#d`e~^#8rIML$jQ$#$OqfY%V?DO)N`>)@RTX&uszU} zj^wmyleBdnU165cWf?>(@*skyM&1zpu#ri$X^yQREL@d%>|LCjHSp~wgHRi|%X)VMk1DeR%qT5Ct2D$sX)$uyV``w=!?WPCc zPuj^0jRuW_^osYl&*Yv;6k-0m!|G&)do zg)$mPKYPu;owS>sj(6PlT8AeGEdU14+l`}ctJ$e}t)tz8)4kTwtC|M@P|R9BXdSk? zP^^1gqek=9yyJcEu-V>y4L=(@t%FwgXKHW1)jh(t_K(}k4ezAU?zVPM4;pRn7ZuimKX?h2(#?C<#TcTd> zwc5?yE_TO!+Xc!2eh0PX&Pj8(1z&&|P3TOc{c}xVcA9@Zg+h?&?KKV?ub^+0IV6EG z**$GH4-sdeL+5m-(`|K6yG`%a@$nuJy3=gGft9@TXYb&+L)1F$G;7Oyjc$V)1`t3h z$cFDbr=1oNt##CGw%eyC-PZ9@6~^}`APeBwfU0{$-Qy$dDlkd&xcxH%MH&$CYu-<< zn~>f{f)b?~NP-SfY`1F{gZ6-c-DT59@2L6ep!KSGwA;koV}$ZktJAE)ShYG>pheBX z=tG;Q)MXqaz-pPkS{z%Wk@Q;oUSsb~3(=OsF!r66@ClJ@_qC9_{x59bH}7+g{r}FQ z;63EOt*z%@mUP^8M_{Qsh-_7KDVpWTexqoFT>vDH{w~*ShdT8?&khJNDr+y zuv;UHlV%$>e%Sd@o`9XP)kUcT<91~X$`+v zPq$1!n{?Nb=@N{z)v0p~U?5jE;^W2Y4MD*Ngeb$KpZ`zaHNx5LoZY4UDdPV~Jpz0` zeTNX^^8R!H6?&%cFi|P`RF-h2+B5OSs97UCq0mX8a@_tV=vN=yolc(hdKe16Uauqf zaj#CtNaE@EU#e$>^!&c>k!M%eV z1{hVSCBFzK<_ilGYRZsIzf-B)vgseE3R2M|kIL5WstS_I8w+ri%9?sioV5Z_ zPn3lj&@9}2b&L(qfV^=}(D;`ehIqX?5BJ@ns0TXOL89R}t$G!EkZjX>gZWrjnPnEy zGe+_mL^CC9rrG!%xW=OyhV}JLGfhc}w2I}?HBZ4b|1++xeR0Ec8%+@gDGkv<9#8Jz zW&*Nvn3|{#GVJpSE>yCqtx1LcS?^3Lis+#NRLq+w*uq_B3f7TG5uaeT5JvY0|ClpI zcT`sMMW>BLpvRmzL>aFa2QZY16%2FqXR`&J<1}aRWVriGAa4QAWLRV-m?51{NHZNQ zD*n4V9C|GM&)F~>Pj8B~K(qBfn`@gJ>lytIq;0K#(f@pg&%c5Gr$}RCJ!3qd4#H@~ z@@Jr5Hga;5I4>9B>urLI2|Z#YkArc1I>wmW<2ON^WSj&{Imgx_K*tg|)vQ4EUNlY! z3z{9U-~fbmfUtJ6{y+co{o3Z{nv=CbSsQC>-@!b1;bd*9tnb&JZ)_;kD(Jp`LTJHf z3fuhV1|=Q%NeUHlLB_J|4;>b2j(mhwFZ(ef{W|dbK}>Zn;0XH!l9e5*g8UN8)}>d= z616Q%r3v)b(ocNirBxy@xCMI6z@6F0v6 ztLCk*1I)9U2p5BT8^*43zCb&GJ=(GXTaO17=5(l6^H#{z`-w$eV{|5OMLF2@dvjdv zIh#Bx51r#{B@R-(#eQI4fMHF14*~HI#2PfsZplM@^JMc3Bz^m>3itI@udcO~7#LKB zIU2(uQb+oNatxd@`RhyNzTe>w#O&Lb9-3vEC}EfqTG1f1qrqI~b3GsVH|71tpU~Ea z6(NE29SZ|zOV0rUeS@#-YS;)x4}%#PwBX0e%fF-fH*ss76`f(#?H8HHub56#QBomh zOAe;EycJTXS2sf)R$V%+{9P>2HJTq+a^xCkk9k?LSzakW=%62Jtx=Ib?DY~oHcv#Z z#g!m=gY#f%Qn!{RUTYA9&Or=bdc2nK3390i36p#a8#VjaX1=}6hqY%1_=v^JjJ2ca z>6+m_x^>|GTD~)I-L@C*zMs-n!yf$Ag8)Q-DwOi(D*R;;q(oSiHwwdG=#gSjYMitN zY}?eStpD%>t=b5&T7A;1BaU^}>YxX~uV`_m`dVc+zrL{pvg%uUw)qgk@nsN)DFvTo z7?zPO_q2$BurDHUvx+*J@w`{roIIO8bjWhaQ9=n*Qg^(x&!()^#iF&$?pEn-iFF3* z)t%1MR=-vVt?a780#?aEdjcZOcLV+~Z2hyakvSI#YQH%X4#!|ts9)qlvZ=Ui?(Qb4 z1hnu(kDL(+mU5i@8!p@+r5I*2yAp%Z!sNoqKQb`APcZ zrT4#;Oc(A))rBA}OxPLFifNm_T9Jho)1Kfx2XZ|9B_GLILO8RbpnJvnHp;TZ6(Lt} zmvU$9N|3rUE~Qr?1u_+`BaSpG0%&yxPYF2&O=ninWS9j zHWw5%@Prf6Byz+K7Jx%w6f?iPzx>5}4yjb;>z5v4@(7~H+wk2(r4a=2V1WdILGAW8cAyZnIK)zuj0>Z=R{P_W=` z&XN3ZdeWj`&HjwwR-*!Mx8IqI0wEB|aOlrO$WbCMZqAk$?}!2{A{Es>N|XaFQ6h8e zpEINTRTRQcJX?)KLaCil*p~;3rS_7TUlU6fMQ2r9SkiLWzK6)K?h^Pg5jMLL&WEOr zDr`_@L7Wdjrj=9QS{LsiM{hog9R0iTzyk$tmkk~)b7whWA%Jt3VIdfE_~CBi|K>f# ze`g=`?A6OD;vNDDi{xbQrGlNbr26{&7S;<|kl4c1KQZ2d9?CcFqu%rKVD+|_$@*x3 zq8%85q`wT%?1FiSW+TjjEE=%;9f@)yRz6Vo8=vxFdEC*+55nDOUqJFQN`ImQ-{zwo z_%_Q9d}1b1c-{j#%(#j%0nFI5&Y5M4z$4W&T4c2Z*+nzKljQCx7!Fps6y7&k`uw?7 zzwWDwHPdvp?5@iKH>ZbU$Y1h5d`hyXZb@R@;r)ZI8}#ZJRme{48u8{TY#CiE4oc>SnH>e3qgh8$PajwDUa-^bp1@x?wdNOFvs2qQY?Za@%zH(-LPJ%B zS^>=6qC-z%Ea}uF?xn+u*ap;3+6Z+A&^y~}AD`4nDww2kC9KxGHU6)vTFdr$35{G^ z7h?=W&}<#OX&iV-IF^UMmLb8&zg4jWlj#Hv8UnF_Kzj;_s^Eb-)Vxuk!di?wZ1B1L=uSM~a}1en z99GOa6Y1~l;P|Izd)a0Z$+37uD(C998?8=LuSc?gGTXQ%YaWBha}BXfjyZg`kTX00 zt+T~J0=zN6l3Vr7<;Ua$mkVqju!cH+^IKr9IQ#k+Z%EPpAiAPJN!e8>)_oKW8oIMd!NxR@PhU^6q;sH%qRozaJ~9yTFn`%&ADnu z9;8pGXtXGmQ=Db;wE}LYqH!T@<9$_*3+f$Ms3gI(s9vIpkv<+pp4@r5Oj-lJ{{h;Ds z?DJ^vf5uTXDRBZb$N$S(KK|F{+WLzx@&7)@=ilJ{4`hGK-u1sCGwzu$g7hn(5^MFG zvLf>+5ZyQ1?|&S{%u02RGUVaVAA9^CHvfb1bTmH*@a*}&v9+{zce&Ql|O|Wpi3R&diCuYA%3>|`uL}#vv!l6 zWj6QTNx*y67YT$-j#^+|#pL)*La6|A^MwUEj75Jd$m{eDABG-IMwj7)dVdi|(+Pu6 z>2(@HZrxKiE9~dxSehX>E_;n#&!?yaHIMs@Z8UZdfS5sVif&|j;thi;t8PJwceofx zFX~?NMpZT-Vab5DXr*A+M0lmsIy(K^S?lodlz2z*ggR%(Z<_6PYp*Hju4m9qG`<#P zaN)Y}<39V^K_59ljs(uJuoOh>&4Ou*=^X1UifIRTJL`ai^Gv3j1Y*&y&go{m+1NYl zG#l;R*V5CC!k#)Pam;le9R%Yg(gbG^dqkE_;t>}^C~E!h9=BdRSg<(fDGDJ;h@=Tlg16^-w^%jbnIGem~nXPZaiH^G#ysC|M3sk@}umR5K2wzVU1gqbX0Lh%VC* z46i^__6a|;8LnnK*;f-GfsHy22oiSPR|x3QKVg>+IQ-w+448w~F*}wlF^!Xx=FuLn zUVh5Xz|8ZITJmii5jk>!htEYP>!mwxnfjGdqajT?4qkHJR*=?zkcKlX?(>SwOcz%Brj?ve?rex~`eH#SVunC~Mf#laIY}vf#jnR`|4+dB-{tQHI zSpDF9dZDC5J-?F~!v@O~Z*|CNNdZVd2JXOsw0hArYccOxMxd0Ae z-rmL0&`?aVRb%h4rG)SG4Tq(se7pvt6cAc6Pa3;FHoK2L5QJ6LV2L;gj++jSLueSQ zL1{$cu%Ewdos*K5|i_L`K}whqvCP&+9xKdbkJuh``Xfsdcg| zh{3nBgX7&F6=qp61dCccORj+vQ`Htb*VWG78e=RrLQ?h{w!}hyn!>#Cp7F%GRp}Dg z1lA7Neq=HIxpQ`SymzWsyY(0DQh}oRXchhpP3)CT18VHprpWMl%$z#w9BLYy+0UElgmogS-ycn zKzItWBR^^yAS}k{n=cuiBd+71m)UEQXauyGrqKXI-v~wcsFx0H+{XiqI(P-CR^pq( z?_a>#^RK7PPWPaQ_pGpAz$4vNvY0@@85f9*?2}tRH*7K$uKur^cne+%P5u|?KB}h4y?y;%x8DQ zqTT@fSLjr;Ld$|oEf~{)qaC_%NJC(+XZa;>bvmB6_}S!xqZQ$M?c?sb8Vv?E5f&BJ z3wR4h#lKW)4NcDTDIAMp0(Va9E;D@*`(6aVEon@$^k5iGCbzOn7T~{k*bwxw^i4ls zGC%W1ebu;E8NnIOKUVVy7xsLktX~lsdwdo91+zSlnLinw zore*PKZZx*09I*w_F){2 zpOLF&)JUOIO)RbgSDAUG79ZHC9TfKVS|a=rm55!=C%uA!u+|Fc9kx`o*Tnv{_iNaD zw!Z$I?v=edjzMHZj)zr{zkv{WfeeeYhbF+->+E(~O3E1`BQOb67lBjYUe-f_nc%wF?~dF)9}Hbr|;SX&V4_M52IW6O13O4Lc|M zgeZPLX}0$dkB>-1!p5#)fDp|I420Y}=-tYe+BVjU_E|VV18N225189(fq`RtRc)<7frz-@+COH22G5Jn;s``Tv?B3A*d3uq za#&zNwvlm!71Gwi1c`$T?YySEKfFNPE=SlF-}Q_MM;k=FV5oYNspk&{=(5l1nAHhI zv?FtL+sNt$QNzTyP9%IKbqbk~O?0c!9$uWKZnt>KAy%*&ZDd*QkflGeU;PI(H1>%S zc-)XGn^qOCGDQ-af&@dMC`;VYaksh6ja^3L2<8syb6EdJQY-0rqS*9J-vXekbpnEp za`8S*Yh9;_)(pYA7`c7LUD(y70`B>J(UC`Dy0sg7FSaiK$;aJzIze>;>Oqu3?iunF zoVH-caa%-hdgJNnoE0p1GZLXV9gWp@Qe5}Up}C|ctO&4EGiJMTsFGb*P5tu#4iGSD zEU~!RIX-P0PTF!69JW>s_i`RO(+NweNvMA!)s#qjIXWmbx~)Tv!t*&IZhBj=V_)I@ z&UC`^cxo?5-R{q4yT?cStyii6_sqe%(C`X46BlkDkFOl_Vf20+_0>9c_~X&BQUY$c z=LgY6K@B)cCqZIeosgcV+34ub(IJ9f#GLN6x@SMNTiqtz^HJ{qRP9U(6?d#Ou$yaD zt&!SCjTC<*Gke{`R|`F}%3x53bG#yz(^)WvY11PY)Kr#t1zC~C-a+S(USUZw&$kNI zXyHR=s1iAxeqtD)C{pVz$QxQW?r7$GTn^1u9UVXXR70j4bGb3fJPLyrBn|~G-|PuH zi9|_zn7;wrbhi@3Kf_G11d%Xd9SR5)2ft3k*bvHr@tNqw2XvZTmhMWVI-fT?Zp#yI z{Im)S>J*^_&tMekGfXv=^)<|0sBCZWo12AmRZVxM;5YPSZx~&86?%yKUM)k@*vJ3} z$7*_Rx=RqO!yr%*NR)*|@qsKup);=i_xyTLZA1v~r^b)Xv&KQAeW+l%Ysw@Bk%vy% zYDG(?Fzrd^BH0IZCug104k>R1gu7}enU%!#X+K0a?iZwg(5f;xho-Qxy_Z9aJ+tu= zQ^9rD62WH@#26pdA4}-i=p1)o6I4qtSLQC0fbiCawa=)FcvJg7>(9?Hg#nQ`A*`KD z&$&J6x03S&Go|p*;vj37-D^k8Fi7x?#xrjh9p$UDE9xg{rej&XMLqKx{VVKXAN@uH zQ=>m%s5Mn5O%IB+#(eASUHKrV<3)g_7QzBMD7giFl7p>OXb4yr|Df>;&305Nm=YcM z>7!f~^g=R`Ms?16C5B*$10PPFbe4f>d4ptU*+>`I!;>Xh^#qtRHXAhNHpX~F!r)4okr{oI*nwQSWAmu_S0H|8J`s2m(S|kPNF9nZc7BT|`=Bosu_Msr zd2mLC3Zite&Q3}j$r4YPsOx^KKB?@^WDx=g^lfHEO(b))2@_{soeGf|H_`!};caVu zvFcEqta-Hk3ydZPgb=*dh}LM{khk9V@CVoOgUnn;_-Q%{B47Na&GJfO%&g<~v65m)} z!AYcV?}kb{Ivo>(atqP{%iBBMP19c3b6v6juefxl27hmh$1flI^Kkp$Gq$;#(Z(G6 z|K}UI_#YcDo`3h<7yIAO@PTQsY$^L3>|fiZ z)Ge@Mb3N&iD3~pm8*nU`8*_7i>yY|3Ipa&O`sw`*Tpu)>8VX3toBYZp}vviyIOdn)s`eDf`IVxEtwO%7zxM=(jj!=!>R}VN# z&qObgrx~v4d4l0`ZkH8VKl3)zc`4f6pp>wFCc=98LyJ{3n@mzM zr%lMHjP4pSHn4W_N@5Mn zzBMq11#F>bzJ&`+aP`YfWtHMgShsa#FO?!QPuDuxS6}n8&3Q|K!F{VPdSc*VL6pk z&O(&qDSR4E!FyHI3sn=HQCaoOD-#ol(Y!e@X|_3kCX_~x{bpj6j;9(m_H;!F*kaCa z##s&h2?guuO-Q-&>+oOg`H%Lv#>uN@*SH*HTGUTiU5$-atEIW*XQRpv3em^ly79jw zepuIw!cFzq+2becQ0Fst2$&F`I^6~-vY{YiUU0e|9zFAU>1};StYTYL9UhcDRmzJ2$gX*Qe6d0QZqmP7^zU<3 z_bvnX!Wp@f_HOsU3=KC~Eo<*CgQSP!YLNU5Uz!~GBYeNSLe{|e=+-O}E6Y@Dm%{j| zn4vd=0k7Xy-a1ou?PhH~m$#wwHY87F?hpM7f+_>^zfN0rDc2o4L0M-oGDSM!KZ7?I zHg?N<>Q&agZ@rDD$Ss)?8*Yh>s$SI;Y9j`4qNno-5Tcg`;mo8y|(~Jeqq1~*75GaA! zSzglqXfqR!f7)(i;ds*MHrTHgLbF0-BEPu)ot=3r%3rF)-1x+EXQa{!o4KgmWLmAP zGg|Q)VwsyYwqsV;)vcgJ(8}C>Ihi?MUoLJN1-Na@z-?nLZdTyXl2Yum(opb8(Xyfk zkIH3St(hJ=PS$>NGx82dv(D2>$oQLAMncD3eGz7BB`vKLi5f}CL?=<>cbMqp=^u?K zW!~{P6}oPuRObJe7Na%cIDN*sHQ7u~-)Qy$^N^e&(G2ufpW=3eJ9T09?Iy8z|9y z_ucbS|8Mv`bN*j@v9?3wffD9{;_WV*uWngcjk<(Yq8dU zdn0^=fR@YNH9mR>CKSnql=glv<=1N0SfU>hEd1i(yN+j}_bl+fNml=Nj}N@b-&20R zPXWj3Pye*K`i-|5q`g(FgRV5Fy{J#-#$Gr%yMR{F)zdHu#8Fn9q#mYE)jT+U zRUh>iYGbba2eMvv{a^pG{(qLwe|x+1>~9!dEHD4}e|zi52wr7lZTPB{WAYQ!)Mu>_i0SX z>COQgX3Q%8M%2*2Of~QS`r|1+NZVLj+bXSu?v%GzSFf+H>pnG8kK&6}u>na|m$72E z**@%ejiWtp_xNb9)omRgb-exKws+cT*1UG}q+Hcf zlqXYy&5HDBMR{2bd^RshgLtIhmG!w6$$rx$sKFvQp~qGfz)?W4U*Lot8`7IT?b8_T zTRMUGP*?}}aWuWS^!`WN#q^`z6rVe1@rvRcVm)oB!!BS^;2o#r4`iBNMlpGdIlmP+ zMK#E(2CZ*mf2`dR2pud0f(uyfn*=(C#B^-=%R)bPg2C`pPs$1d@x?2q z%r$x?r=7td(lzW2rn2u9^!^f!1(NcOCvLF;4mViGhobDcU>Z-NL_MTe9;HKjj8>Ex zHFYKNDq)qYM%QGM!VhdQh^Rcat>Npvo#Q2PoatB25_u@>&JpWe%Y`oo~$0)Sb zp_j`13NwiY={2&KWrkMMbC2IFGZ-#VD{%8h&MXY-$LIe5R>-4{Zty4#h65kLqmvc% zfHDfu!2)2dCJ4D%r1$NLp(w@p8Sy9TXUuZsIfT5GPbb$VoTN123n;_UdIl zQARjCcSk`#^!eSo>Gn@i{64oR;Nw=pnARcWG&2R@{4d?m6M#u4-5UAmMgGbUhip?q z^WR#RYPgyr1NMAjC10-#YIOrLguOs7Z{l~K3fT;Lma_%=7l2sxs z?ZD=Nwlr)^@ZCXp!@gsyh6;N@Ob$G+0uKq2tYkR=+bE`i^j;t_4HV+y7i3IRv5##a z_XGFvT7^xq7dOae&zNR0fWbny^dzTW(QEz$xfnM&kcaysi6}_y^Mq?bei`yLYf^|OOmxJch&eqMI}L!R z{7cpkpwN6FR9OpJDhih#Yts%W3TrhbOE~Pg(?C1$P$hWyapz-cMax4DJ$tU!SMpOhBVX%os~I>~*FZXsCVh3&vD=< zjxE4@m)(w;gh}x06!>R|&GsUoH*eP{@LJQ47ov^2_X@=-a$l;uuOut4Gv&=yc(w2_ zV@)%ARStZNNofe=;SzFw%TgT41t1)vXZRqV1SwEPu^%jb!#+CgsFC+d8u=u=qMy$| z>WMG#;1u2Z!}RvqAP(SH2!h>JL_tAvySaV?5b4tv)POmLKB@C7omtK&({rc`R0Kwy z41Hj9og%J;YDn#&7A)*@n=R(+wU~tET#E(UIjt=`K%3S8o%p!u{u_)=MPj@FPm{MW z5s~m=2Oo&4c-w=0wMGwbglg=q8>Kvj5S^nVbWus0K!D!u`Cqq~@G+YfIXSpnkwUa=9Y;y>jQu5IBn)&g4M#ls9b%}ep?{rB z!xXzZ3@)@gGKIX62{NnVtObtt1V%iOqqc$5GlO%hx~0ZrM3QQXH;m+k+~GteGO5F; z%oKIdFmp_{JSA1}?toJiM^EvJpD2N?Pacby`80I_8lDsTycBHJy>?)0hU(Nby2#Tj zTXq$Kbud)2jk6xjkn(6qP;7+8rm)BnAE89U&gYdNjB`gb{H_+MG1cT8fj_9jThxo~L)TjL+dy@DwZKJBqbE{2O z+!#?>yqhGf)QLHW1q>|m37;Mlt9gq4pjaAVvTww`4#JeUE%&UJ;{Y8D)|A|A9pROe z{A}l}hINC6A!_XTTq6&Ec%{&MicpgegS&vZOv8m0>h$%>1Tk9uAUj4W!jGH^$z3$;b)YJn-H za3NiZ*#HJ!&*5>(*3wHAGh0D0f=0I$n!du((ArSQ;i_aN4u7^6bBD?7dF?8o(12a9 zGq`15m>n<=KZY+{81-}Lxex@4 zz=uOdHv^ z*kV?Z!=m1~t$n`B(M-kokw8j{VHgC9u6=d;$n}q+6f5c58!O%gI>^T)T$*qjxfI7R zL7W8rfG>h@8dyUj4Y72=3ewa(rS~u3Oh=4=D>H;nWD=THF+DB3njj`1YVPbIcL6Wz z7_g58kOY@SOO7V@&N!7xy}dA@qZ7NR{|V$zpv$eE1RB-zTPs*99acQnePWW(G{=eqvCqAg-u1 z$R1Jc(x|?42DeJ_ddA*LqvN$YE8b3{)9NVV{?zKeK0fVwKQ-Fz#!(nhAa*0%QAd2%#ED*EX>K-&} zK=q?%t)u;R>*!VUuzA$2d56t5TB>y$JFSCO_h(|E{Z{v=*2-*U0~$mXcC7go>PYh;)t5~&#btXzLd3% zNirSLSw$_^VL~f=67@oTOy)&h?pfK>uyxUzKg=@keP4&)ilkWSAXMR}G2-+%^2k9p zN0A~JkTfJ^C*TMtZA;anZn9GHtYK6JUx;*O)1% zgk$BQ*Q~3y#-K9uPF!Jy-5y5FuoqF(N00KB?(jWq%F$%vqm~e5f+-?C@WbJhZLUE) zR^G+gh+|xA34*r($hkGq2l}6v|-@=rSE;M(47fbgm$`4FXzE zYUIv+l9Hc$>coWAptAbi65j) zP$iUwV>wh1qwABt-mpA#hKtTg_u)GV7_}DqsXFq_GawXG)n|Y*Rar#dD%(lKf(XG_ z3X;6N3aWtZ0%h{l1BEFiMiJRMLExaE?rwDuTJ_9F{BC9KwB+n-q^~63ulkqA9sh=( zd)R*;`tJjr)(f{W@BQEAix)Zj@9&;(eX;-k44=JLyMxX){=U3a$A8Ad<>kHRNynq4 zSx>_#Kf;BD*4!I(2Dv&Nhd0a1@b9kx;7=9Us{gcJ`%{IUig5N&GA2 z4KZE{O1GJUHTb_;UB*XtAay4M(Wx25w6pi&JC?3MDJTN+YrluF86ly%`t%Iz*DsB=>60+rHI5{eQYY(A!!W8i>bN&|{?0v!SLT5eR#@`VuHK<`)q|E_MQ~a%l`f)w)T0Ws`SkxJ zglj#yx~Sg0HY_iA)2B$He9UUasqZBesj!4-b?-=CM00#WV}1-ZF)-FM4k9bjpzx$Y zK9oHQ2g{cHVl&AnrR7vd60CbIf#M?zc0G!5eWE}u``8)_reL5h>yg!)Z` z#C_#}FW{4)r%}(?ZR!Y+!7#W&wdAr6z(+=^*awW>?e!@7C!PMtW_1jwDeBWXg^(iM zJWQs#*MU=Zusn>ep8-VJmJ}%^#w-UwgJX6t=6ED{#eE(mZ0Vy3?x$%mnxx4xg));{ zJ7{GRYE#o8s$zy@3K9(YNQMx04_fBV432`~gvhc{Uv9{Qtzq~+@O}a65ne#TUpU_4 zIYr>3vuuJ73ozm#aYQ)u;~`s~_m_3hJp$9{_YVL{r7D*t3jg!q0&S*KOc?}xp*Ij) za@6N3swika2dEq`zwOf@9!|UG$_yd47~QaULAfd^1h4&M`7(exNIGt1{>(u*W8@>; zIen$Bv7#|D;|Sl4gX?7%IqEMllXo+SN8TlrMvLY;JuyCrU|05dJwY&Clvw^7R+*nA zM6nJzl&UD;VplZRVFAs!42K78{qoB%7m;>uO)nsfTWdsQ1tcG~ zabKB@!;1E;icrY6Dk%VkKzhHweH8rFI(-yeBYQT|G)^j2DNtAba|cnxO^t2^YpD7} z)!m__54!#~RQ*WB(Knve2$ksfD+&s?<2q6l?C=8}te;?X!a-%FN6}bOw}iC%8rt~! z>hI%~n!=LYHZnYE8pw%GV>8X~++yj<3TCfxc{{rkq=&RkRk*&v^dk+)@=*jU@-H^E zeo^KMJ>BetEY3 z3$3aW&X1NIT*?(#T(44C)dpnxc^gf?iGyXnZ<3uUrhDi+ z!1>+)Xa6DDa)klEL(*Fw85)aw@xhdB8dNA4v0}IkFD`kbT-Mur-D{XY-B)3ZX5VO4 z1j8sgQ&UUc1mcThbcGY#gmCC%eAKNHs{Dqx9HkOff%uw*P@~%o-sDrj(_wimx?pq=q(W1py>&a{ ztK4`x6e98KHMXzg#{U>TA@2@E#2mDUtv0asERdpB?Zq^OXWyZWa(e|hP^KZm)^AI5um37r)up1R(H zLY*GWJUihefHh4%HnbfTrjQqXNQScXI6dee3{tNA27~6}FM-A(BiLiKj`j7YaI*R* z0D;~0{xn1^B}ArA-6@Qbsk|jK{p(#=nmc%Ste|+*nTUM!bpk>W?7lu@jbDfg)vBPP zw=^{4O@zRS!q2>5l(*+&O?+NyISLC1^96lit62K#A@|5b2oCJvOBc;Sk?QB_|ry3F(tiSdj~%m zqDoqSM{b%&H6@x7T0}B@hEwX)8-G$AJFeRk#QptYpDRNa^+J&!G@5vMLiS1J;00gf+v1>GOIxT`K zmYaodK7V1Psj7v!{4PfS_g;#Bm(M--|2YxA+|L~UPcNQtZRGsFefK5)^Jn?oWB<28 zYQgt8%rd6HTeI{nlwWj@s3eWne&cNapz*4Mdy4N(H#hX_0azM2kp$(RLkb`h$Amcd#P!m`T`1-421hgAr|pXeKuhm8+v{vuW20R9W+{6ZLF zD_2`ab{X@tF&*sKY^-7=4aY2e3zH%!tzMj>fpUuOVurWM?yhefgdjxd3~j=&m8@>A zku@C}mc_DP=yNId5f8q6JoTRPVoZCkC0|V5U%W;=T~N0xT1VP1B=stn-cu%0^$z6y z75A~r`Z%~2LAZ^kp-EanF0Z${hi6C4pBj667|a4wjt&mb_Rn_P%|^HRo0Zc1+wOt= zyRrLYRS(}~9b0GQtdYalC%@Xm*ADpfNK}dCM}-tu1Af`39l!MZ)yx1#_&bLc*F{r4eic77~I;Q4c7uX&K08+T*-9D14ZISi?)_jEk0yGU7>BV`bE*0sy^ z6rR&b56POIuTWorhq|wnrr@=ooRDQ!#T2U%mFc#qY9H-UkJ7~E29*^)P|`#Gb98IL zX3FOF9&dJ0_3&|d>9QV-QGMMS_k)`Xf(ChYY2c6WIu-8{hV@rL+B(^%6vhM2o=|3# zTu6bV;JP(HLO@c5t5zw$PEaLM=jH~1=QPP@?G@*L&%h}Ovypf3XpM;+ZBmhoR9u#F zW5jVUb)FReh`~dVdP8JjECgQ=x&DHR0t!@y^7SCJ zQ{*h33V4<{INog>)LcX}{n1dW+^GqWuc%Ljbf3}JB?pi_Hm1XNkLQ%Gl|e;9?V(Gve*%?i;wy{srgzzB>>Sg} zLEFOsPp^?#iuBFRUpNXTFQC@_&R=Aa>X8>&Gjgqgzl%w&@gSn1g#-e&jh8_7s-l{x z)})vMzwH#W8l{pSmlt8i-Nx?gX6tDGxaMgL>m7AxUO`i7Vumw)=YcSr{QRH695uTK zt)m~$+Q+BeCI`6`*$8hujNDDP>=yyq0HAkD91pN1&ssiL9X3!2+?d#Y$OXfuL0nmVK5l&DB!j8AHQR)vJHV?q)^)J9mA) z^#7{a%}M`zr-vuioV<$s?#QbJVjlcS7Us9?>3q?9I4Fh^@jg)y8(QN#L8OaSv-kv2 zD8DZ`5MO#m?B@1R(8J4VCh;%P3f}bq^qk4y6YpP82h3Kd%k+t0( zt1gpYcj~guek`Cd#m1k2;4zjj%d}lB9grh=&#x?nX%CMuEWk9dS`yCsO3N*c zg9B_*cMP+n(1#)zNUoRUK55*qP*?agPq}sv<+_yk-J*@i(!kd=k(jjyil)@<5Vd7) zTxY|wd&Yjq9JNN)QSGJoY+X2szk~FPOhO>n1qxjgqs>o1i|^`ZTwYH*z2QV zwdQ^Q6ff#c?28PG1_T%BC0j5+H^||EWQD3?))fai9>DfvpC%EAF=LZMO{dg*VSMp1}G^o-5I+$(nl1K;ww(865=a92o=|jOZ*96f6K# zk$~7x&jaOf#+@-FOW%q|GptJ0chJYk`Bg|xxyko`sx2w0FDI!b|6quesOBQ9M1Qio z1o4J!|HTUvLa6f=O@x@Q5P^+`iW(yhSe(d$5^D`Q3p;AHD*X%sTLj-wpO z162wUt#ngMoM_yvu`U&i-X%k=v6M+vqSH_Tg&L`Zs8El4EaFXu zQ*^C`cG%IieHcY3__#}a!&qAmIW?mvVWA>52S^Z*m2pxnq7C*aQQb)Rh=3h=M1my` zA=B}MIYnL`(Zjib4pNcii0dMH)tLpsKJ;4HD#V@cu0mS20Wk645JXud_3t$A_p>U=t2rGTcrIhBLhREC^V z0u&z8j}Bh7PtIB=Z??{0*EcEyE9Zse%sR*`TUsbUowQ0^MBF#o<$rkAr$L6(Or3TT zzR}?89IP)L)wckn369K-+2PKApUOt^RqDuDQfVUs~w?3aQ?^M970E z))zCtC>(`JwZms6DRkcyHv>lu>LnB1^jq0xhA6n&u zI4pW<_&cx8_KuI58fOczv^A%8v)w*!tLl8JQXE7-n&W=xk9lNhjzlzOeC~2jVWT=- zvFH<+9!se5Qq8g)mV##4C=?6>LlnIfzUW-3N!cZ_F~y?esPc@LIfcx}QW^oVi8Ofs zWYbC$Q1ZWenbSIoRx6h+W)Z3zi}&u_@2kGiW3O%IDrsYOU+5335YJ|+4(sa5r+B*E z0bTRLmcT1Ho`;2A*UrZnHZf-d`(PbyFZTbR;WNwre>zV5LBLl2r3U(RD%+V1PU48CC|_tU zi(x*%**V!iJ82)kI_v&?(iFkPsR4UXgmx!x!OrpSkInAce(RvyY-clngs(fzT$SC| z&AqeTgHCZqW4D{l=(ZcX&6DHSQ7-3idncxQC;O;7x6YXwcYV>jywn;e(L z|M@#q|K=m#>R?$JPQ*fWK;Ofw-ch?UqTBj1AGO@no2t%Fwylw<@RX^aM0BrKc|wKX zuD#>(GVt5w<)ufe1|U7?lLQc;7=*~v_Sa$Ih))BZpF3yJC2Zh%&0Bp+!`d75y{D^? zRMrv_gRznv9Gqds)duh#x0w!AMN>vNy|pB$pxK?Iny z|9`i(k@Nrgd~^Ma|F_Tanfv~4;U|8xp761Qpf^y$HmMo;6p)@x^u3VXY_NBst0Bb^ z9z;o@RgGPWENgh9a+|5ZP6SQ7rKS7b+jnSXZc3m+Wu|pd7MSd)pQ$Uh!Oz3GwUFfx zs`>6<`J=Q@JMGrqt7ee}&|JHXRGGmJzWdjJ?R z7;_Zg>GFMP6_$X6yy2%Pgre37emCZHBXcERthKQFVe2R`?gabeVI75qfKgLe>LBU4 z!prntW2#yd8mROv9c(LvgN88v88YOVwnl)@m9Rs8v|VT@}2UB~^H{KPjcyC&J z-dk^iU*Ex(={WT-Fk~kFKtE;lg73nqTYx2*fJh5+0Xum-TZE`H*fM%{I|d+r+)8h|l&OLPdP3_joLqc{cY6 zSk63P{1+uwG0QzJ;byViUi0AYESJMP2Okf|q@#F*UKAS_7upujki`I_{Iko&#V`B8 zV8MIA0{iUq*Z|H6X0prEz9FyM=v9*th@>ZC8QdB<=Qjc-+ag)}!FqA9uP#f4b~DR^ zC`g(*B{Jmt3o0{E@3;V(y(vG*Np2tB;DZeqac-9;2sWu| ziLs)Cu-^C2PGDLol=YNay!z=;xAE##lR?btq^@E%f9H*dJILoK1U=xr$M1bA{qp%- zpL^(kdP6@+?&1J)w*F^*qsagNchA?p=zl)LXRiK-6*#*%=GJ2o4xEN@=`kZn_?{$F z3fDo|5xu9BN57Vr@K~i?9E#xc3d47YJ!KF{zG2ZFVUmVDZce#sMfdrMJf%_*#KKYHzO$2BT-~*@4Md4HBytK{`G|Op-(!FUPDj-Nos+QDF3-5?Q?1oZ5jGCz3rdfofTWXx1F zw@y2^_$-od4_<7cP49R*I%h|`2?j^RI}o7niI2ukiQHNgl$&q?MS9g<+fRdLl9r*0 z!8p&*<#{o-s{MlWX)lf@ zNfw-8jy_~hVA3f5SR(m!s+lfZ9v$RQk>if9f|#Pm6*FBh7BConPNFwJVWAo=4IMMt zGu}wGYm|#cmxx7X^*tuFS>r5ZEiR(j>UmGy`3qx6!)0gul}AI(n5S9p6vBXPo^5Vd zxtfP#VF@a1JuYsz*#-8{ID_YhrfYJwn{Pp{)fQlLSbLJmLP?i;iMOCn+>U?vh_{Q> zRX3NCI9K|+ZRJW5<$ts}gw=Jn%VE7Gut?%H)B!onhfijIKsAJRN$!OCVG2iIKy4y` z1-s9W+6lKJMCV!Wg?RK;)?hz0%+Vs&l=6 z!Z4j1|G*zOOThAyH8$D7GAH0)EhJ_+7IxeSf3PgF&>)gggzrhsW8C;VB84SBuGG9= z>$;Mv0IgMit;+%2O=Kulss=!m;^TFC?$FHmfHn>RU^HHLcX+g!%-LFs(kL7p?;Yzw zM%#A{hbNw=H`3*$-5?y=zu7?8(0lis6V&g&PC<&8j;tYK%MCq>aTrR1-jp#o__>Vss&2C zJmae$qM5~c3hk!`?*a+gUT~omLuhV?ZY3n&w1VSQ1m6+1EyydE>G_H)eDe^CNN*T| zBNcE^1QqC@r(U0M)CicbQ6C|l-*V)qOjs;g6`gj9S&6<=51r$IP1{+d<>aS!Lvu;Y zyT{$hT-a6_xvfUX9$Eau2Qls~yVLk8P>x!zeSYfmdcU)abiU%}mwGsYJ`>ZaYlt~o z*VCqNX3%KEH4Mwq6N5vJ0@(8sf_>6+;viH<(){s^%ZIv@6_1C^y@6|`^HTbuW z|BMtOuLp_n19|t&d!jd_u$CiTsboD$dJcJ(m-cfhr`Z%WA}QujR32;^f7lebgr;G7 zDFmugp`yuN^ZNRmraI99tJV?TOQ+!vqxEeMs;_$AL)~q!kM*{(E~I=kXzkl*?Jt1V z{vFWTzc*TK8?E*NXtnQvR{P#)0mJBcEsPtakmC#dp7t>M+YBT-yPponhf@6XAlo%a zS-fkf2cLmi4?0;KA!TtK4?3TkbK&G;RuQ#l^Hm$IHtH~?ygJ~kRkKFw)02i#VS5T& zxHEmScN?9EXD3s9n+-DPP?Yr4Qw6tQbY$9}nR_}b_oH<^mLvK?;uEy6^5N^md-lxx z(C+MRdqC@#U-!K}{xjNue?NZoKJ1s~oR;K#q=!E=p0cCVJTXtmUN}j5c%S%O49dAZRx-2W?2|7pUpyuYv9JJfXCdm6=No(a&9+X)r zztXv{{{Jp7KxXUzH@05n<3BxLfAJ;$!{_+S(*Kh-8Erd*aWCql+Uz_WgD~$TT?RMw z8}GxZutbfxdyI&gF(B|x0bj+ZJ=WW01;udey^3VfHg^Lds|7<z`fN*8Arb^aToeOXN^`l%wNrb6ej-A)~_hldBy? zsW26GB^Oh)+?snUBYz0MocMvxASo%ManhOrIxD7Av=3N+v9<;~1}bs3UrIevd!WFy zywpQ&j>#b94rPcI$7Hc;1Zw1RL{-ARa0#G(N6f#3oZ>B4>gzJ|^`o8s4BJ@fuKeE;S1}v6_qk!twq?M}pCGKS#?Ul8P7|&=mS5G(FBNbB5YFA5z zGAiXlA*rqSL)c?MQeg3iK%+KZv{(4ycBtgJN$#0s(YsOd`Wih^Ld~1Nqy$vGsW#TK zD*2oreo>NWL4Ss4OgIB@Ve-FEU&ZQ7fffaeNI2yNcW(LWr$^8>E?W%Q%Q|Hj*td0e z4;tt~d#&c>(cdKpO56i>rlfnI!hp`iT;lN>r!s?7U^Ee03J1enmK@l!Cq848o`wB}Nwz95CVm*#EH!7Cl)>xcZcA~v7Xe(8Gqr&Vl~R|zRD74a@Rw8P z3(4<5@*MjwME?2wp9`o{G#?sH@UYTBDV_aTEx%Ww4g6i0N0_MZnt-s zT%g>;esDq9fJEbLm>ycQXOL~%xLMyh(<5eePt6{i#itgEFLGzi>HMoE?_+XC(ILN^ z&NzQzx+^c0Vp2=pIpGr{`c_iRzL1Nhhj?PAk<7MU5J6|gFc!bd!;#o+oc-83+A9h@ zz~jeiCVqmaoV{i3$OX{xNw;-;)KNy{^1jLjgXqwam#!l52^IV`yizfjn9Jn+O_{iyU>;QQi>gzKIN0@dY&J(056vi)c>9uggoy(qLO` z9K5~Ye0qUi6((?`y{&uuXqE(rMiqVm7L+xt_SD<;hrQ_#Pgx(@wcU?h|D2=7!_kt? zUigE~TJ(;;7Yv675ltF&SH0BBCg9i){o6np_9Gh|G=6Tj&zjxW%{DL=K18$+eC*9U zg?8U=Jb&>{9bYNAmrqW6>V!yxfH-z0K~FB!<*0*{!G!8Zo-WwQc8Z=3D^D0ejhcMB z{SG*kyPzYm;1P-+Wl%?|-Ve&vl$iq&943L+Dl4zMJKLUl57^VxBrK`P6>-x`Lq{}y z=`j-29d)jq(;Xax;_k?CPIu?i^oP(a>C`Ttof(y7<08>{M}V^tpr4&I+J_x-T$p(} zFuPj2+t{gjx(0T?f#X|a3BvRvIJOcWL*a~OeDonMqM$CZ^waAROexcpw~fA$`!QGKi~(Z8^r;Nb#adR+T)pJJ=Q z3$jctm-|^mffy!a}cn)~XFvaTIL9?2+5-zvU-ger^JXfbEy;m0Ir{(8|=> zJ^CtGqD*AUE(-FKJp#~J7@6AHa^z@TVPIwy)VWSBwO(vh)R~Hpd#a2aNUSoL;+E0J zb#r#t)z9rbb6#Jvj_8tU4(v<%lrCB7#J;4?>5?u-cE>-8B6rbv=cnxh27JZ==k7y} zmb7HnmLEeS`rBh@iBpTRiyU%@TV@+Nx>j}{ivaE0fJ#mF765c=11hyo%mZ3<(A5Ii zH(`8XG_$X4?2$#+^C$_E{eg@wlt1xdsA-* ze!oI4>ls{4S$yPGkA-4sqFO0>`X$+QdcRd?!;zP&0sie4QDz>d(1|h&;bQdGtNvFG z5UtAKPq%rF$CJ+6r|9$**qFmrZ6E*KL zxT)_=M-yi)uPQkw->bi#Hcy*(?iJ0P$Ltlqczv{9wHw{$SySTI-KAqPi666T>do#w zJNMC%Go2OWcd`GxkNs~n9;Y!Z&x_gs&$j>F++2U2v;Tduw)MsT`{(%F+x|Ce?+XAP z$<}vQ@mCkGJ7@{lNqhyOqL=GehIrXVM!E9%Iu8L4B;Q+3>2vL5+n^$sX*x-^SM3>* zM)8$D>?fYx6ssnSJV&tk{rhm%{M(7QVfDgB_a)?1 z-O(skW3Y`2vx~Q0e<98dv_T9##t+dIR`6bIbU~0XKZt6|ggi(kVzK<8r<}wvR-P~l zRPdf1cyEc0@4UBiSMtu&AG#aRYoP}m$)sm{bf!N+d8MIPZ!Fd4RZtE@uxQPyze~0~ zXs%KQgkYS`f+3MAEf`#>Ijj4f%jjC{u?5dvUA*8!#e2~dC0{PyDJtd^H)ik!>jIJA zerrvp+3J$UmxY49%Kb@CB8(y|L#>AoGT%z&kgKHb%+zaZ1G5mDyKU zC9P$H*t_NShtuQ|=mh^_Y|r6P(=Blbh2oE5UyD%tMdQmbb@46%#3a2Wqpocj24qU5 z+cXm}DWV@iEhXSg`>rxLIg;#=MX*FlXY=5MJZpyZMuac-T!N_Nb9tvhT_FG&Qti!} zZrpJBgmvj*qj?vWswo#HyCC62Bg0#iDi5|7W3oI7CICA(Qp|7npQ7G0QBjN47O#ya zlO*VWk}2$5tA5()Y|hM=^*)>xT&UT(yy%T15XI61x)WUAN1_c<7CHNH?YI4F>v$a` z(jHZ`73c7~#%Cm`K^ju2UCrszsi4R}Hi}JsTW#B3E?{Q}f7!i$k*(n;TQ2W7h7Vs(3kT{mF0GF> z;ny+-1|vW1T?YI`^_C+HsBm;6u0Uv9UnnQ(LjP(0tZljIqRR_ql%B9KM zEjFg${6*%^(vpnGx8LTJJ(A-pjBUm&CElWJsaG${oV!|J8!R5O5UQ{)w{`*|BI(~m`% zQ#=gdRGQ-BE4^USvcT_!r!l!9x(ec3I*1QLeoTv2X%bX?0Ef7~vVKG7tJ}+>Wnd*k zT@N+scZT7)PB_zTuBLGiXk~+XpS{X#SEoSm`=aB)hm+7Q#oVS%Mk9J2AmaGq_c}2O zTSPUu!B$eU`(XT?c%*#_`P64V`-hY6bTSNz9!x9uWqV25Iw6h=QWzOZI6*C$c8IPY zO{*#=ag;{AXej!GrB2*)K|q27;^T5gceQUu1(9OrvUFKXKp;|>z(@Lk{yJgkIJBTn zJM`oCG9$A7)6jjO-Cm&^5N9vO_Yu)FolMat338_W34>n$&P(Fn%k_=#P?cO?_xed{ z{Yp@)_;PD)4KnEK`o`v#dPDy5IX^ys`FwN3dwY7+Zk`;pntSgSfJk8a2DpN_z9t~o z*S`B6mfraN%e7*Ma9<~XPrvR{Q(q_42K-^*=%hq_QGmaehw|{{@98}%F)kPg7?vwE z)88UiIrJxQle!FPU2)I5nwL++iYAp9tFDI4E>B!rm?ONGDV$9bp0<-{W^nt$X$9@8 zoP7IM9o3jsIGbd(uad0xk*m#`25T0Gg_luZ76F|2C^uL$8&(Xp{;8nM&YDNdS%ixT z;7e=T55oX9v$wn5##!s+?9J9$r@i}|`t<^T!T7Ad;Gxwz>DI|#3M=n*x>jZQHMjE7 zK?BzMqh_bu-1`k!1#5RtPY#+GrnGwu)ma!)l_!cpyiEZMOWlM89t$jjApqEevy@6D^Jj4<1gob2eF=)`G`$99<&@EoIDlth3-c!B|Z!5WOGW4Fx!dB&V5LYPj@qxSR z+MnU?58ej+`Sx3qO+g$^DS+mc7JQEecsJZVcq5HiHZiGlS?mma%}$}gr`t%th^GLY zjjsyp0$DP3_v9uM>+;sZb=gD({bwnecMKbuh`b5QJF{5=S2zlJj{5M*7Dg`7s&GCJ zEJQ~}gpCAb8%jFKA9(-SCp}S0zLZ3)Q~Cw1 zd*CBYG93lt4a{hF$#1^es>tq=`i9S&DM{J1IUFWDShNCw@T^a6RaVlIN-GZd8bq`& z8Rf{#o$?M+>{78XX~c%(cI(w&l!!6EILN0?VNxAr4%dtVpH1nQJr^pT_kR8aSj2J~ z9_Tv`p({O<(!s?*;2FzGi80|y#f(3zaHIBXqttz1zi{>CcLl9Nh#fFBm2|qAGfS=4pne9C6T#F2)p~f+k3qs+S&S zD)6g8|@!e z^Q858S-fCpVB3;rlD+q_uUt^ICKs%9K=!<6FiD?1OXA+Mv7h3JyYM6DzoSMMib%x^ ztk_S|nHBrMdgy-w=d@G%A6VNT-!9T@6qmypAspJSMn+4P{d9tqvZYRsx*YVVhWcAn zCkfbVpOlg60aho&8E80p&o(sl&H6Mk5u+x)uX({m-8*XjRNI4PuzmcqfcYna`DYME zB}mf;eRwFV8+4n9p|bG)9sTMvmiv;77o$rXFrUY`2}KM zI8Q_DCwU&)vp8lkurb0zuTi%JC>9||WpiMDHDL01m10#4Yl5&yD>R;tSUqH59gwe( zEl;ZzXJo+Wouoh*Z*ibs?GE&7b91z7L zbdHGgE4OD9s>}YUOSvQ>f1~m=4vVSQae*kD5QgPwWf5L+sugj4hQ*w^bSJ}7DqBEg zt}7_3(AHL$IR-MyMaWApj6lH8e4vT!Bwui9yN&1zo1%|y#8BWavwg|By@Mgu7ds^_ zWtIf0qdJB6KrXadh+EJU<_yioJ`b`nzMTb$O5L)XiUtEUu65?#=cb4bq}xF zu*g`$h?6-w#&DcUv6+iuK?w&YlT8Tt&|}qyVWVfG>?`;>Oz76H&~PJn;fGqXg3Ct+ zY_1=}i6o8u$=iZS|4!~T#b(mfSylQE2j@HU;i`!l9mMme?@Cuv8=CDJY% z#asCb19t)9YB(wI!t-gkCu6pn<(%>%xeH6lfS?Nv)7Pr;tqctZqe*(JI^hqm{ad!_ zCo~Op>5pi%x{%o+j2jT?7Lfk#xb)3W8f~c7#|DL!x*Uc7g z?g?@)f6luLf)62{bL(voTx@&21CF!{Er?@fHWj_!ew)*cYTkeimnO74JS*7&U*enL z%*s(A7m&aAQ@1alg3p8Ae@@57HQ9_;ptIk9u5GPvyvV-){BC3IOZ@lG@qs1k+w*BS z?0a94vTAub_agKYKgqn$(>zxuBKOso(GYJ=N^R&qWb~S{T+OI!i@@31|EW*V=)p-d zj*p_WrNX-f{r|AnW^?=hpYpUUe?%yIRkpS$*L-<1_Iu60f4g^8zr$SpH+k3e;CcOf zOEq6Ui+=7Q|M!C{{JVGr$l3D$`iqUteEi4f>(9T)|DWMA%m0fV!cn}uJlwm>9&-=; zX|f>$nwywtju>qVo%wwOi?HR-S7N-AgkB86sHzX6zPd+~5b{f{G1LesLnSrGJ%7SQ zoj~&jx(fW7!E6RTT*F`@_!VQEYY$-;w1$tZ(qu-fSju|5G)<0RE3tdeWhhl8F{ZN5 zIOx09c#wLaTOpB#d{(OmZY;DosMwnXcY#dx#6UP(c8yF@324>$cq?*|J>LViHqd<) zjE7L~PL8nA2$HPgpEwwP_-H`9#388@SsHpUIPPM3*q3}GL=pXvUJ_~uyXv~Alnnc| zs7widQ`3!*eJdmQ#~NGNtI@RE3wC>N?764&Q>(lC z`t0y{uX%RReAU?fnbA;YNLg@<6=1v&ME(w0E>QcG^UVN0u3xrreB}?rzNgzF6!<#D zVOg1Cnl{?z+q`H){bgW^k;-)Pmdm~4VjuW*)(n!+D^o?u+Kl45zuPvYv=e*_k++EN zJ0ht=$(8B&{W!WFuM`n0SHFxRW)ZA}^i@;m`x4?<%cddG_p>R~I)a}~?)lO2QBxk{ zu8gB`P(~)Z4rZu2I1d-8bJXnqblj$D=!fh&iWjQZZ8wfO^rFLC0cm$k@Aq;8V~Ft9 zknNs>R1B+Z!1NYX3Gmz8;WAs=!lTtZ+HIUTgSFBR6ACj^LO`nqyU_Gjg0ZUL5Kg1> zR-=DUvK2vcqS^O7cVnq~h0F9zkInkzsKN{s#TZZ`Nr`(=MXW}*+dkVl?VKGo4%r=N zzpgfB6KcS?*DkCNKkWL}F1|1bdmR!mw8__n!|K86pbjE*o(3Ddaaxx=XTx60ix0HJA)dEZ?@g^ms`g497-Gy+etJ*5&T>g)%{dxKzysGvnBz}~ipYWHwYj}-bbu)R27 z?dH+JnJW9H+3vKCkF?*0GT#&EdV-OyxAv-zYlL?5ucysUHy?kIG7K5|JepY6(T%pafz%5Mi6NUe^$q zwq4PRV_%GNydF&Nf~ZMF%~$3eW(JlEA2UG!L?z3`NbH5ZUf*pZJ?aFaxwGtq6D^)S zzZJP2$vRbeL?&`6q)$S&+vnng>B2CTrz9)1g0L6XxUA<^MkqV;c=r47^nLg^=jX2& zNKOx6pyhM`<&AyPEicC=#pn0?9N&u?Fe6{?!ihsI?~eK~(J(A7%j>Z6l1+O|PHg&G zWy8mHXS*#5K7w|&-1y*{l7SO zT;SqgK6CE>w>CDu%ijNQt#5v@|NR`FS@-{TWEb`9t>~Sbim~~WGx-{M360F*(1-(ys+V=mAKfH7|2da z97Zw5G?5!ge0VsFuDO$!;l(AIBTE^}fv8oQcBW?c_1VeUQ*-?M)kd+-8iXwsznQ)ZMqEl^g}*+o)VyEo8jJz~?N@%4XwX$Rk>OUcngYw;8E93% zL+th%KxU?!c}Lvcg%e@-?DVK}(%hvRLN52xd$z7~kAKt_bSigEXSSOZ#Jjcsv(7X% zJFkzsnVK6q^Q3js%w%qwn%(1r=8==Rr86lc+n$s8+(PK2+2}f%FRaYH7GT`9GQZQA z|M&FpB-_uMbyM{$z(*=t|;BDuQ4ox6e++xQ++C`%GnQTLAyI34h z0Mu}Bn<I-0E5hdgJFuHAfn1Cxwn+xt~}ew;+Zk|}a>e9+o$y0b(| zztmqV&QMqFip~Tot$6&SQ^}cFrIk!6r?NBgN-JY2r>UZJ2xyE&6pk*NeX7jUD>Na&rY*j9&dLZZ+N@@#6MR*xV$Vx=!AOE!>y0< zcEWKVf8h^n%d(nSe9N-7D{3FU!nVVpc(>xFxrnrEwkp}Ceyvkw{K8c&AH~1c83KNj z`by^@owUW4vFCGQ2;auHaITx6@C1U2$T2oKOJpXC5Ct+5)qfR?gE;I77&9PtRZUvK z=&4hw>N$`t0hEg3{upAoylM(@=N=D#Y(o7Vh$q>XGVX{Cxe2% zST!He4>XHMPfoKt^Z(H0i}C92BI1IW(T|=KEa*%Y#{GIkFpoGGfq_=3X5rhA+#FQU zSU|V!NliA8YGztXF)IB(*2H*+h%@PEpN*02kU_;m{#6T(_ z3e_yv%$SHy8T|t`vOy?YnXEdw8D`gacKTiC zDGSkRraENY&P_8cAp{k(O@pH|&%4v{I2isI+=|@#eTK2Sr$u-KclJ`g*v+e zarY`IDpN}L-Uqk2iXfvw)l9_=K00TrRtwOY!An}iv5Hd=k4C>A+i^jh-%zf#=jG#W zC_c$FK7-X5^E1G_fZcLn9>#GQa0n+$B@0$2>v1-P&inIbKTKzj2}Kz{^d}Rf)l(gc zg{(5=V^X#9MWv!j=FoQC__S=49AsvUQS$yASU)WopbUhE4UYp1p}54d;5Zo%9vJ1# zq%ja>X7 zc6&3Rm9OnsgkC>=bX1@F*V%KC>WtC!wZ?cqVn4w-)c!q98MOtelpXf(XQdpbQ_rn+ zII&ZZu`wRKTc&ZP(zNC=@ZWQqOK|(>yu5UL6~yR&+Q3HL9{YKeT~bN&Irm_Nqw8R` z-}lVNi2CZI-zt&NAn1{AvZYq8X4k*)vNdyKtkGQfuuxF*e#{0lMGj9wC^cR5;gKIZ zn=p3h_o~P4jPWHq@J5`ZQA7`h&(S}5m}njOFg%aZ^|*65oIN6zbH*}qIdC3lmSsSe zje-LT3w^o!`+T2!-~TQC{CCd%-}C2N&-3qpH=lob|NA*Uv+n=M!9Lyq2IF3YacfpN z=z)`T8Qjos@`1RLxixg(5I_9!@Gc%0eAK;7lYoK{c6+Cr8=YWS-^ZAfbw?8pIcMEw z`>=J?IPlmIFO#Z^9q;e+p~ET0sk+dcMqA3+g>m24xVmy$8B!J})L!a%3$qPjc)dTVYDI1NBhk%GET6rxB zg{nhEBPG*_oKyJYXdJ?b+2#4#72$)d9Y>QGFJrxcVqA=aB&n-Q2`T>4uFL`2qz|fl z&?2COWhIWJMTdMp-AlJ)Y!1d3X}#Mr3g)pT;1ks{lU76Fd2 z&~0#qufO*c1IlnuePy3)4@Jpi%s8jm5Uog_ckN5|df zHVaPppAs{8+X5o>eDd^*<1(Px7x7?%G>j$!*Oy`MlKo|q*op7)2gJA`zHDAidwK(u z)4}zkhaH>`$9u=n@F=>%S8dGXJR#jvC`x?god8`j>94fH;>Sr_AqslOO1QMaCi`r`8i(Y zPcpy#s~9_iZZWCty7X+-`yL82owi@vq(ZxY&ZuKa`p47Nvz6=WfRrhx&rMWT{I44< z_`tTjguB;}j!BFJ8V(*ber~qUn%&pU_7Q9i?46janN!tQnc{M1i>Gk|^JT6cn?efe za#VUL*LaFRtZATTb9DGhIpMW)@MNi*f*+Y|eK^!*R0=yt*!73KHu)N=JhAH4hzH(o zzk@F_s5RY4I<0xSpH=S%!76K9t$izZclNiTayUdsOt6eYlT%z%J>m{(d_{%b6C8G? z7!2yA%z?_^Mq!FU2Pz!5tCA%RJ|*OmJlIwCfU2P3dHkh?zD-`2g|Z~px#eWmMeadr zRkucyi^x5BFuD0oxtQV;Xt03nmb2I=`_~BFS~<4)9X0BdWJzR&vEV0Zq)*0WPDSyS zY)T__G%Ru|PxlQ2r9d7}e#vFpU@|WklFW+<1q)B{3RynLrv$=IoN(gD%!41bXYF4< z0FXd$zs}x=a7wqn!L{D`sQ4bqDX`VCvoefjE!!b(Ampy>Hc5j~q499qQ>CG{_b2`? zmcAOi!b=_8%ME$6RjQu{Q`FG412iZnMN9UiiG<=aKjOeKYLh zsD7bA$BISl36Sr~o~BCmlOvhu%mom>taE`wI8hI7rL@C`yKOin3JJcY)s3=S z4S5sjM2cK&nL29zq?ajzpMNd+AGBD_d<}#*!#}o;_6RJ-LF)$b2tDryYChI^%jK6q z;sdtmohU*&KIyiOk2)j=U~#cNks&wauB7CJRN189sTM6hl3-{RqSG}>a+qwr0>ty2 zzEH#8lrKZZr*bN`bo4&B1#xPNia6b-0^P6YAg+Vrf0pwHm5{C^^wMR5_v|KA(M0DCrCZ zRUwbr7GZj%Uy?|YY=Mt!w^7)T)xU9^CzLoI3@EbIOV4$4bD07MRICz=7$&^VSAc1O z6^0d^&&4SYa1Bv4&IL66dHmGRx8XYyT}uE12+C%-POUfoa7HD_t=i!osVXsz4%v>6 zmmT`c1i<;^vOaQDr+L7m(ow3kN>!Ze2~R5}hd%hs2FT{Gd-`SG<_48;fhjjURx?V| zWtxG!iktatz51lIxNTUfUCRye#Ty1(;nH9C>)zoM&W+~*y`ojhw3S*04Nc?Oo!x7_ zX?2dF_X1}UxLhpd%T4p{Z0CcQwZ*XtI+L}G2?r9>blDppss zwafiAYFCZCe(zszJN={CYI>IUL$F0WArtdtn#$Zfuh|f)Glz5kr?bOG=STJkkYNc{ z0Dh&NsLg}|yB|4OEZhGGn9X-8LsXAnWmIaouVI@;<2I{xRv%~v()y}wQ88Wb?(AzC zaf8{#CXb=kwGf*4qcaJ5j3~z>z8ywBIeF2r@X)Ur48HT)ItRIS0}ng`&dmBeLRw>Z zf22+pMe3y4_^}u*BXc0%&%(p-Ly)a|NEz^kPAKyy>3|4hf@LQZrr5@<^TB5Y-ZXfNQ^3<+`o2d?U! zT#{R4w{8!pxb=1$-Dz0_C*6!u&Un}lOFLuKGn`}eGascnOCRHCVPGT={eML9VK|Or zZgD(_s-~7MR;I>TmaX5>lP#;`0U0N5<6gOpZqie}bfU{vivOwI^2*kd^~|du1VKv1 zJFoU0t8_x-Cf07(IMl_8>;`rlkI3eC_1XG6IfvW2AJYi8LY4{)Um8F~1)QeHle{W4 zxXzc^zjlhCX=<*F7NeY^+Eh7LUTw`%ydMnw=`hU|a||^`qqfe(MrW7b{M;O$Re465NEamwafb$vbfK zfW^A=f#W>)bDJBGg%gir-Np{?ifU)$-k7~jU?PL6%}p1PCqm}F!I?G%N=|uDsz8v* z+1JU6YF1r_EH9~3o&D+$VR9fbY?^jhePB}kGnyWi^6j^}UjBfE{V%(pQ4cFw?c>8K zitZ6+KyvSApb|sSR$<&5UVNIqJaiI{=KecRHu+*jUxH1Yl8&TBOOc-F@@|V4k(&2} zv5+aQ`%-Y)Y_;3Xy|a@>`w;pdwKD229+u2&yU#u{);q)pj1EB2L!*1dqthrF9D7)1 zQyd`AC%5%tR7j513e=5G^LSNP@KBY}p5IdQXqWz?E`hIV1Ufwut!k0zYRj76^1!s- zjkYS)KVzP|k1p11>*USWS*N{Q0|0NgMT|AEe6C&;wg>_|Hu>VdO}>yOUu2tfCB4ER zKXDI@D`HroIIythIziK{TY_)Z5)`vUlvlZrLBzdIcM&3*79UPTZt@;P>?i4>L==22 zB7W2>j`N80v#&SmP3;2~8v&sg9O=-9*$au(n!lKIe%xv9wYq90QT57K6X)5o!xnQ| zAg@(thmDhy*3ql1Q`4sf(9I>V)x3TQeV3+B+O6YutNU|S4f-?#w75k&tlg=(?$0MV zx2;cYaD@%gbMCvebJ%GASk@&3W?JF7;QBxL?2|$Jgn7VhP%!j#P<>*8q4Sz;MNj;( zz@Do>&Yvs0$45sJ9FGd5LQvnz0fR)mTMhL|}dNj!73KKcOVZ?4&NvMKzfX^u}<-98@ zFJGxOTrWN)xxJnHYnr+U78?fSvu2ITZN$NTUwB( zx%(^1st9bW*LoQ071xiI?T-eA$aWv|QPos>Ku7bTj~TLH&TGfHJFEyKrFEH8*YSt- z(s=z+U_|+&z6KxI7d-f4w$wIuWR<7`{xR`{h+nc(jt+S#J}o#$%=^bHjf3MgB{ciwu`ks8RP+ zpbrHyLPY~)501RT;Q-fplL&cWmK`U4oK?w=6yRQGM?LaVYtC!0JG`$_uw+-k{AyW5+qT-601US%#(+($J=88%C2k{z_7)2NONXxZhch6(kCnk1IN zj;m0*AM6s71*=JcqLuSCFM4kqF1Y8mKVz;nTGl%v-m@}y@3UzvHrv~Z3d-&~J8&5i zXTiw3Ee%G!Cc7gTe43?U(3`F~06w}=9~J#`>zrd@_KB9c!L_r>?O$gWIbMJsXN{AG zPeiN1b@41M5`!}^?9m4>3k-f4Bzi!l;PBHcE!pG*n*zBe15O;OAUx4Uoh>%?OLU)> zVriD{(?P?$wo+E0*Xp@f!9LG9dCgb>M0|;4K$5Sim!1WTo;WQ6NIh$^@LLd=ElVsk zfn1BpPc(zzFyTxg<6ZXC%_QqI0L_<4{)K{n7K|475s)j~-*pODkF_+!`_4}NK8dF% zJ$T9;nhVd&^k|RDKbi49s%pO(Mns*5Rz~p3Za)ah>R#&sl;Ouq2a_WR?C^w~ojmm{s%87g@r-CiyE*3aUpQI2+x=v)v|;@TBqc!Es}+ zN^g0%z}JNZyuZlwB!GBP{Ety4MO83{zK#Arrb*ht%h}|g zRH){SCR6!l-10fSMPDBO^nRd%#E$<23`XeP?W6V;VyY_dAYPt!_{}i|Ugtg@pj=Zw51-5#8ToX@>;&7421N|#<@6xHKGBW*>?wwB(o^#^f4kj>k zRHcv?I~;GJ7m)*jzEmqH{qQ!{w!TyE%M=1XSc8baDOe*-_6k<|%U^hyB)f{EzVZCI z-05;6*$6Pd(s>Z^TKhBn{Q-);fG^*EYsSPHT>@MQzg@5X@PpVx=w{drU#<);oyc8h&m0N~$v&_gL5k}Rogy39nc*Uo zpR1b11(fEJtOSKDf$zVowmZ&p=bf^mZx_2S!gTT&P2O_?zaPXEG}S-D#}wo@x{j$8 z*i0Bu&3h8_TX*$<0)A;+-M8^sWU7L>wb2x#g*~|zyp+FA3!|UnFbyhCt_@BuO4s!r ztXlcEjYoYS|L@WC4#A)QYo7mi&dd0J-`v{V`r`lnGkj+Ge^)-;tINwcjVk1DxEa$s z)Ymk@yD>~v@@gF>@&F5?G+zc|E2gtn5Pp+*msAZ(6RcEKuP-l^zumf=M}Y^-$P>}YB`h^F`0I-to3lH9~MF|nWNCy4z1gydNc z!}6Hpf4}*Ehu{zYHFy4hxAonNT>SSJFE+o-|IhFNUjO!d8V>s&4e9do%mtw!4uq@` z4-fC4BRA|HpPs#H9vzVC0VdiCFkHUG?%|&DmrY_39x0;KH<^vSJ@aF)d0>9L!dMOJ z$6@1dP}R=Lw$$i$wQFv>5lTNfZg;JpjeYA!>*S<;+Z@Q&U3*=`>0c1{n^j*d?n z?QW}aVC5OSN{VLDY#!}4PKxm44CVI4q`W$9+CNQ$CRNq&gacUwxNjurusc*QK55KxXzFHDd6^k?@5vL$*LzTQ{<93PcORsWiMO2w>&v*y7pT7&;Sn%BuiPB##Mc^vPlW#5{L0>@?#xPg zK7nq}W)Tp|J`;;9=7MT5HgRbSa)#{-nT8MggEuzVC~663_@EkSr20mM2Qb75)vOma z*s$YMiZIbM;_N}y;b=~@`MRLl&78+TWHp=_nMI#R5)l_-8e?L03?y(Iz^* z#Adv2z0GCE2bQ_}vZfwimPS)qn$-&n0Q%hAYB{UEu0bk_`ILCR{hb()!WhxP5yoYM z6|k7<;=GY-Q)Cy@tnn*03sr5rjCCy0HdBel)NmXj16)_eC-lTf-7YLUW5|=^_ddNp z{BuwJ&vb0OAI{YR&C~yGZsy{DzJSy(`k&A6G5Vjc$`n8g9EV{=JBrfQXfg~&!5Ejb z#RT-3^%fMQXrCRyTD`-mZY zRmAe)@x;0eY3(_I;%&F!AFVov7!en?{q$8FO>^~Cbuv*iLC$q;k$AGLnqc>@`*BCv zv1mY6WcoMaOHkz>`Zp-W>EFi_3Y7{%F?VoziSSHRii^H$c?ET?%lL`{VXt=cp4gu+ zdKOuVCiY20wIqiTYQ{Q^6rQri^N{iH{??x)|7hYV;wc2i76#+|YyYud_SB!W#k<}1 z0ZWL-C;BC7G^z7rQ^(3{Y#}`Zh%q`uILxdwL8-?rNOpbff*&>Lt@EIT((*=m4%-y4 ziCf^)u*?N>vdcBuhW`*8bWyNWJU%lW?lwBzvsdjC>pk3svW|t~WHh2}G#BA415t75 z#at#;oF${9nTvndybFiDRH_@vlKiyD;#d{)LH(ddJeSTg`!veZ8KbR^r6rb`8B&OY za!uJmDPjHmql;o#>NP-)r1+9_E|53PcBgfGBp}p2kb9v!7tZUwHd-JG9JSxv9nN9n zZ}?Z>sD0?}aE?!SA)|#yW}@DX{Kd>uokv0SV`4*qHv@TL^y5=$UGb%jKz7l)7c#HZ zwBQzU=lJ}48k_|ous!MB-oCRIT5FbM)UH&+S{a>^i);Ait%swxkcRvc4X^>IcPC%+ zON=VLlY3$?{NTn<;xhHZRiHf5M%HP)CW=uqN=i*yaMmT0>8wna{@dV7N5WYHV#PiX zG9jkB(P#v)wq14<)iN&;c(EZfJ5x+%zm7pzrXp9BT6bBq@M#~;77!V#MlbFzFREAmk`CVy$4k_pVzvKQA3J1huG z6r>6yy^mSXl`ir_8VAWF8Yg_0Su%Vpg-gQQwRi5Sa1V}}!MX~@zpZia0-p!ze-_jN z&(r^Yx0TcXe7FAH7yIAO@mWCsn^)R=n5&lgP^xBvM^t6DVkZKagJKoKiFnlFM13rxpDZ(VCQv2?p-IcIU-wsP9yFo! z4ON!ZtQ7OUZUMMJKnrG<0}dGP^%=113xjR85bUakj6~#bNIH4^wg8~R&NCUgZ4OI< zAoOS=oCSa&M-+gu7^P}i{@OJ^e4TuR(!%5Q{~Lv4)xwI0euT}a%b5R;sL*QnzPh*9Zgx5X$DW$TC*eFmhn)-?hN7Bf^a+s!fYqfz_LYJEl9S7379O7 zDvPrJKsqd3aZx(}cx5zKIL#lTwp!x8>(vE+(co-Ur=3waOJp-I2EZ%u*jmC5_(60uPFXNIxfZFmU?T>aO4#ORs{_Ogk4C) zK|+E&9h-%niGh-N2Jk2AFSDPm$}zpZn-&Kl-ARM>R!Wr<6=;1A!`+sH>$Y?$vf{VH$*A81tcwx&B9DOcKpXpyP1gg*WfOE~VV5 zVQ}@?{Hdj4yHyJG#WM02KK-{@K+TCrJ({WbI+EQTc=R4DQ_8C@ECw@+VbN^ZYSm~> z%z5}xxbvQjdDQ&r)5*lmzwI9UmVM**DY({A6#a4d*H#T^4$i1#9A(F?uy}Y8L(poEbo)d zjW?W3C#Xse`nV9NP}~KIO`2K{e+sObT}oIg!UCZejSC*tpYMfPv~xySwQC5_e{u7Ky<|E_JUt!M9lpKn6im;2vO z|5@Pv7rk5F;i|W^&^VcW6^!oNMw9f`V+Ql439MM>w-jL=u#NG~85 z)rY^Kk%@^}fiJ_y3Mxgywjjp5;Uyj{`aV_?lct`EgW;haMgk27b+0iTQf0dm{HAJX zt)YO5v2Akc#~d=l$xWi(`yj1ht?SDWHlB+hMHhAWc3rus!%CML{XXQ8Gdj91mu{IG za|X!IkGzpTc?%l_Ib-Nh2A5x68b;Ck>15}2Z#tTI=&pI0$<*QfArTQk%yr^`5)mCh zhKV-u6T~pnO+e6WF*IP1B8}#RsKUl7+DM2LCx{#N>r4fWxU5ST->QP|%(I#I(hb-{ zg)*FzSbqM5lssHsZyLwJI4u}qgtO}phtS`Vf2+M1*$ku2o2?;AE~DwNuc$y!S_5w! znZn2j+E@+_&B90yundzER|&Pe>kw+32cADoqmhpWS3{r{oV}4Nh{(G8ikJwtUayNP zit~z0hfF=3qxGX`9AHq}%r6a-d}s*c1SxY^7nX=Dwcc^f#!4#ifTrxZ^t)N``iFXnEIICRAxxXr8rk-Y)a6CBO9id)Yq&m&jjieqUy+Dx0{*e;}v{2LgEkr{{{ z-Y6rNVg1!f9QA0|gSx9d;J?*)6pYTG)+`RnVa$%v$>ScN*9&OHwD>8Sq=!e5CvVYv(ZE9EAGY5XqcZUj&xBKL5Xh}wqAwzM!fRo#Wjf(XkKY)jamWKFbtf=GeX}AKQz}*v1bSTxd5AgDV(L9$s1Y&jYoF^`j}q z)5e*8iMtK47Bx~nmIVV}-W|Tm&bV5Pg9KJ5+j4__)d%B>9y2l@BiHB;8e4YfZ;$Y+ z`6KM|*qtmsq-*SP9UI5W;_P2}4d)^?iyib<*huHf0y!DLk^y;lfL)Mw^W>$wC6-DN zv~j5YI!UIZpr6^I8);>ns2w&@Tl2m5?PQ_d+G>42jz%6L4RlE?!RZ|KRuC+rYgo6S zHv6HogdpChuW4r|4v)i&aLkR1#Fv#uxUmXqm=dDdQMTg?OD6_`(a#m<-ME&6-zp+Wg+^M64;3M6dwzx0|SdnF@?n?_fd+8mR*-7QdI?%SRf|(~mG$Vyf zWzm4WdM!THjEp_N$@V1MS^lx@CC(arY0tYoI;N)MH9*O$JIO&QP>i1Q6MN)MeZ;fbo*Il1Uu@+3|7?AE|M6Kq3%vibG=lOJ zWC4xfI5E#V9DS93|8;MD#q2j!k1Jy>+}6W{oWEzKs?M2s*&`kk$*gdtc)i6jFjp~DdqJI?| zs`K*jL6956&`&-M=+}PSzxLw*Ek5iPF0Zv=lU?M2t-TqPwRbgOMa-va_s!5ByY0dM zkoE}U&cOc~B}MRS-mg*eD2;S)Flb!14T@9u7~qS5kHRq~*H9nVew>C5{Ui;Xksnct z_jD%?`xn7O=U|j=;8F11xg|q~JlY&w`w`ZTO|{3KKvM$soBclYM62Z6&O zzYc@P*kQ>hh7Ff|kv#-(LgH>3jt3E0f)!Dt#vb4w&%_oEkw*C-G90lRUC1O6tFWyu7eP6_> zat95U9}8H6-&a2xJRI^z1Exoaq?_D2LS-IdbYT6yx&8EQ@xy!Igc!egPwDr4=|h!~ z*pCJb?cw`DlA<>}w7AwUk>0+e{72~goPFUjo8hS&h_B0AvCZJcnKjB>VUVPX* zDi&%Fc$5K}4w-Y{FMyg39|Vcm=20N2kPyx&PVc5u{k=8rf2_|v?tj9lmk#gZ0c?){ zzpc#|-{tJTH!%N`_x`{B?NaNI;$2RYOAogx7GE4FZVegL)*udk?F{`Zev+UJ_>rc3S_B zUem(Fp`t}uA5CXU`aur{U_~kGi$N%hOCc)wNRA|?Ng7M*0nhXf%@D!CUOwUxwaG2n zg-v_CQQ!6T7h{Y=H11RhBb3x^kAr z3KKHsF(Q@Dl8!JWd-7ksUJO$|NYpbP?C}LLj-r>f_`BV=pwPkM$o0`m-K=>}Esi6Z zG$0~asc3}-ys_;S?1yMBg{-&jt$RQG;4I5E4q%X>>j#`5+iHeXc(1OXMAV;3P^~UT za@C&8i0gblqiY=^4^NR}gLzsKtWu`IKq z9s#i;wOcHRF)wH;my2AK&Dk3JKugQ`c=yM%y;tqVA-!7tatP3$d&vLz&!Vn>=`&mY zf4=$ryPW^u%@=FmeUbk^!)I~-zfmGyfI%9)Qu03PRq&-C?w#WlH)2w^C)>n1J{Qo@dudl1hVOZgqDOb<_Ct$lf(tPk63fGVdHPxRPRAjv-X8AB2&3nZ-I}n! zp;vNMJv#qK&`Z_R4A~)Z>lSf@dSZ3}SY1?uPwDO$e=L(ltoHM(H-8`&U4wJXV!XKa z=&PX-RksO6qC~j3G4OVg2wCtD>>>Zyt{r{@sTo z1YMSA3DMDqHb^8k=vc=%u{yH||F{0c3))c26q^a=M)ads<0Uw z!;2Onal+B_w?s`{0(5)=NA50yB5trFwAbVrEet{GhhqlO-rwE${>3IK8Uh8$lK=Fu z8zd0*@0X1>1anTu@5j-#TI@uffxW{jQ+$3o{)X0xevne=9egiMHIJh7g!|-KAFLU{ znh3(rBpPET2(B>AaT}6~dscf+Ma+;g2XLl~5ByuVw3PAsQ#xhouHy+X_J&wo>URU) zxpHl^K-@+ANaceU{u(Jb^15B&3eZgtrX{}Y!kae)3S1i805!(I{jgPzQ-N_h@d`cw z<8)F34)FW8gf%|xMzJAC;V55Kn)<{YtU{;w;%6t(-gVq@upHQ|jHC3Ku-uAO7|CZB z>%(t5-=(`xZPdUkLn@H?7Pf2#E(}`VRI$0_5&$BXRwq4;jF!DOj z78Lk!m6ZTcT_tCJIyE^D(-Uo!uB%n576@}-(rI`MWocpCd$ukwa;z2C?0@dh7h8by z)8%$B*j7troQ~;I;Qd)bT8t0%di~?_)72tqu>P0@wtaKrTkb2Yy`x*2)4riVkQSGk zI%PTSnU=m&%%Xv|Uiv%<4lo+lSl=vF#SmHkEY+RgEv_W!Di#ABkDcT@8 zr>vdg4U%(;Hc07d!8Rxu6zAAt9;z)2yX~tHqf;x0iGJ@Al~i;L)e0W1--)A(R^KEj zM*yV%Lw=_t7)bMY2IG5|J{-M$qZaI5f|Soi>C_nOdQ$rQ)|>W&E7lTzGmO3=_Y>cs z8gT6!?uE2xI$>0HS`rYQZBANOF87?kvaE_wKfC`NCn znUP!H^VuB>p}<>~S|7!Jw3mR{TdPzL=dzf&DuPNA>g{5;kZ0x={XdIm#9`7~J_L}>R(}S*4LmAXK1<|Ud(QRf@ z-!xAenWUX|YwuOI+)1O;>Ar5CW|BL{r|7MVFBt@dyN{TvSj^biBdd4IWU~NRpu#gj z)mSth-g=XWj6CFaS3zX_WMyB{mEOL~X-@TMjil;RfiZ8?rF_xA=RuVYzZ6xRj}=mX z;yv?5@{KG^l)hN&C=>6T{B=fSPaqhIVl6{aLBT~1i%8KqxIqcSo!#jee%s7xCFAz2 zc@}SdC^fU6;_kZ&EA?tR9j`)mjg*6Oe})#>adhi$(smOw7==FuLFcN-Ah^7A6pc^N z=QQ5n&^oE^E7a1k-`5i0+jmc+qz)@3fIGe(2eA=j=pMsdI%JRjDdYQ;Tb{>CT)K#p zvT#briVNxmG#~{XZ-{hTr5tHt@B_Md1J2<=k;M~h6p~lhP#C|_bBTT$j!0K*ve=*E>&z6^ zvN%bjsE=Tjr&;CKZ5W=%etcWkfv0sNg*3&lbSY;pj<`P;T+@4MftW`dsZ&IrVsK@I zvH@WkJ@4P#ly9v!_TDO+YZ^>ILRHtrl-7xR#0>IL@o}AdJCoe)9(dM=@34+Lxis~f zRML1t(-Rj{kQ3XTUAwkiY;EA}N;Yw`An|nXWVbUNQ>0UEnyWN@8~ ze5E57+d0J-bjsnjU9uZ-$+wetoSh#1cy#>Jk=;cET{J?IC`m%Jn2_5#&ESO)-MZwr)h+k^+Q#}{Vdcn{yZL^7 zt*~%ouc+|%jqh<*pd2XxsBv;7fh|*Ogi^65CS1??Z`?+;YhX zNaNhzJ3A8^SIt0+1$fj{0cd8spg?1 z1zBdy`OF!kkyEpUjkTGd?=n+#t7evH*d;SW<(JQno#UfDUfyTVj1x5(6i72242Ycu zjN5MWtlc)4srBBJYV3AfZ?N$0kEbU^)&F+fc9Pr2jlJClzJxJ}z!PVijlH7k-GiN? z`7*@{xA?nti#W7B$lK#SM^2xpZvva@qemZfBS`^r} zLEc0en3^VhyRmW}M}8kQT5d6+lDg=k8Ma9ixtMNFqv`OxxL_kw(5HeQot44jJa<)4 z8Mq=?6eARiXp0MjOR;UQgtj#cBvNd<5G2r+3TlcmbqZ*!)}&2Zle|nZp{?C0QmnX9 zpsiidFD=->f@Yy>#FIC;6yQ0j*ptT zTF%sUiZj`Za-3Q1);Ty3-50iV5{Dx={I%f}IV3w@r*qld!VYE&6?GCM%fm+d=d*UR z(>!SIb^(i@8b5am>pR`eRorQIyUli4?tY_naN2HK9Rxx)hQqEOvqSsr*jagHqh}Q< z8$Y1wS+~)C)$Df88b?1D)Xa^cQ^gsQeLo!H-5i=sy7<~Th1l8!if~2poE^Vuw&4)5 zYnaWh<{;{pceu^X+CM%xIR44%#NXhA_u5Y`PoiPiyUp|?lbMqi-2C}+gIoSC5`2(V)VNMqUERF=SpA zaf_f-A~ewZb4kByswg(TJ*y}nstaScW)=n#U|~&zvcig9y6`MC6uoTG;sEAWJ1~tGD2TiwzE0O7;>GghxXS!uWu01#RpPTp}u_>Aer)RT{LYrj3=W(#W_0gJjYp z8JMXP_N7HWWrXwbnw)GN)LYZ5pkK%L?fRin65x9pDXua+;i`cGg}mr=?I zs7SWiFkx(ibABpf&!BB9ndi`UwzSNm?M$+sN84^`J(ISbCe2*h&LpeZMCs`Ki__J- z$rLxUWm_l9WXNKenIrO0#-1rQY}+eM>uMRc(;0`s*At-f#s4 zpw&7&KC)9zPxhK1TiZ!{AnW83Pdm-C-A23JBISZkMy*NfsM~D6X&hwJwRS6$ZfjYr zETuOpNYbh#E6>$+SQ$A1-^xQk@Tc|a@Wf6&Iz2o)X#%LD<8Eu;!545PDs~i29cmt( zVHA0%8wbS%IcZ@0zz#Ii&JT+b!0e{AkVAN``2pWsrH^o)A`LtN(puBlizqLqb9 z_6aU!V~%X#=KU@EQvg|#GU`^*9a6iib;c^n`grF}soVTwk4iH*+0QPSA6K#k86&$O ztDOtqZi)wtdMk~5bVyU7*qR?7VeDX~q47KI+<5?}1QYTf(`T|3s_W4<~s*rgQtt*@d z!I;W&i1sJ~Q4D=|V8kI)8;2@e8_>ImkQ3lwHAsMD|up3SF3v~TH zB#1|jB_e5NdI)@y z^DR-fUcZ7we^PAgc@XvdVe5n@PdgYzX#hVmcArwe@BrIV=Vn9F<9rf%80nDX9z_vK z+H;Z!7ejwMZ8AzuQpj^`iIPl;FC0lK}jrNXxRzVQm*}^ zw9K>nV*I!eZyRR;+`XsV&3W|Y(na*m!YQRM6g0$rlZG?*fXw=@iOh7*&^$wL`Du)U zp{=LT;9TqCG%U0&*42yFNvbq^k%S^I-1QMs3@LCGz5|~vwq-50mHw;o>;;qRDU)oG z4X~JJvvA5bK&-vU2AJFZEJlw9B^w_(6w9u9S5W*Z)S1hx@t}}bb@g%^_;_IPUiYLJ zyZya2HNx^rX>Z+4Xh*}qNjTX%L1kcqzSkTJ|BDo5jqb_Z@k)!O6ZEF z#3sC_RBK+Rv1n1R9T24*$5Q&S@=4U%vE0Ec<9|qXo;b*>JhZ@Y(#>kB^R;yWQrVx@gVeB^RE$ zW9Evrpb50zM$eQNu|L9l)}ofSy%oT644e=YSa2KKIv1@v8E;v23(#Bv5_r{WTG;lA zkf>P?R&a=mU(LPO8znBHau=vkSzbCFksFHak{V8;@LYIdzK{iFi)Abu$P5V!iYa!L z3#Sb);W*CtuAUE-f5vQj7V#Uu_=7(^`o$0LfAjF+`)}$Ys(ix}&2RKnj^BX)#(E_v zOvvG15(M!}2t_@RM-Vc-9HNS_ZbO0`j;K7R=tB+`2VsEzeF1;QL%cxcMxm`U_T`8b z1TUPP+QHyal@tLT*uDN4@> z(U(LhHW_I!?#p}Rb0{0c3<2v>{CZLsp~C`nipL8ca7PmH)5Dca!z*~bM|}#sen_6- zreT6^G04SjgkBs3MdMb(?VRCIM&u9TgZiHSpYIa>Ww!t4jptjN8ymU!FZB0QcOE}q z{6Claf5zwwxX_;$tkh7O}un5bzuEO!)5U!gLm7KfCX&2VEXUtVZT zpv&XZ=uH)U;6?-GY6)G#;S;Fmy<84m6RzEy|Nrd$dwUxKOw0xfg#u70 z6o5k23#)kdqR}n3cqM}0p801y%YW$!-}ieD)~mcN z)j-Osv}U8y`}v}BQBeqAH!9uUdAYp?LJ6wMsv6cOMwM+ed#$RM_;Z&fP*qShVRgZD zYwOT=)nsvZVFT1vT#tlR+)>YOp4nuJg(E}~|-xUf45zhpcr#;ZWCZmGOe~BXp zU)4I2`JJu{lkjEY$YOsXyGn%$Ch=kx7~#vc29_5aQcC^{Z$TeDqR#?9d53-J9;xAz z;1eeAdOcLz>6(RuZWFMGcY(MBphSmdcT9v5pdb`NP6wzj;?gA*vF`V10DEBgYE2-C z7|e_9R&zLX#ym$KC`g!z_rcC}!E8LjP*jnR+yo$_!Lq&05m-28N4s0^bt+wCZV|Vm zQLFb(d&SZ#VCkK4e1*k#?WTQV|b zU(tLZ(m9D6P$&)t7;Ys8ph#4Y;*lU-m|3|E`k=rwO$}~Juidy6HF%SMv9Wvf())ibv2r$0{*N9+cTX=H!^x5%>`=6C3^VZ0IE2Os zw%W~lwNo<3Fe~@#jhzfZ0OK$kjinQ}Cge}>B$D@{v!EYLWzYc7U19&o_tu^&A>E;~ z<-&DfMzNsCZIzFU@WvmJgPZ8s`=5|~GLa$Mcl66Q2=JoG|JZzGQMVa`rHkhODVpvQ zWUIU3o~J{j^5*xM4#irHG{%hiptAoYGh#TzV~;lVa1Q(@}QWwD?oCf7Q(R zI*Qs?ni^kuA(y@m*;yfmz*b$k>-jEEYRkCIjg1kx*ZcdZ|GF@?uy7ZPs?**Ve?_!k zc0F@D1_jIIb`SoO&*&PA>3x4)BeAXDHQUvHe_d0q)UvwfbhL=C*Aqus1=s0;mDMb5 zEQLpRwCl8X(K*j*8AzIBr@Q=luHRybP~cjp*;~`Fv^xlmvqL~5c9WHfZ3Sh!g}yzYlX+#tB>DQ$w zPUy&#k3aZk4J}{833>+=J-7@dUNnm8>B$%6B*z_(r0@=tE($LZ?b!bi5Qk3nX}Kz zY?mW*c6Lyu>ItEbYdxtDJl}|Pz`Y^il4y*sYx1>ZrF&5>*aJ5Ru)6XUZVC+0 zCedbcne@!UfQ8*sYU4V^Rk0LAIq5fC<`mM-&R=?uqKP4Av0yzKgu~Cm`FL6gNm5sy zZ=|{)Rbu7A$v@-4d|R}b+8e=(=|+1$0sgyD<=CEO zQ26Iu@zWf5(aJccxcKTv=6b+5kfPj_Z$4i5(#Yl`#JCYBsRH@mjWh={Ws>>N#!i0( z*I=;ZI1sP##`A@IinsY7Vd3xKKQ<2mesg(6AZXqiyd(=!nfzBG+QD5b8}R2`HaFv? z_0@TC$An{o1u1HG_TC0Mk39{Ubz+(OV_=E`pqPPTrf+$}=7RaJNWX)h*K5na0#mQx&FX2RSg)u}4-L)l%BdVtT@AHQpIeMIhW?W0;fTV) zuvFFd9IJ~vS@vr*#CfK_R-^tcShrZK7CT>&cdZx8YUI@=51tqV@m5SA7(gKS?)nq{ zw7J==+#G*~-RP7(3!_Aq|1&h(!TZ~H!N0+Dz{9IbM^6Val)vkQcs*R7H+=7AXx)0Q z$sJJYJNWX@5Pe`+YoZemy*v+k~4ThyUH_N7K(ag2oH4cgOD?lQneT zP`pN8N+ldQEZqraA!rN#i&q@K@BHR?IFgg;vCiGOm(YBN|4mM1tj=cCU4~w7yKErP zWmB{C>$J%^A=hl*w^_I8tiz6#)6TOe9z_(@lMy+Br(^b1!waE5X0H7l#R=9#7cn0p zbvg^9SvdcEue?f_zk~m{CL++{;?-R$w8?~&h!QxQ6Y~%5fXrFDL1+AX&t9`c={g(@ zXr9nj^Y1W?cVJwO6(lkh&+Rl7NS{T;A2Z3jx8#LZvH1Mfn+Z>QcVucp^Bw*-Ihnc6 zB>T>U`}MV^v4KLDPEFvi*f{4zUAv+G-cxj&1(v%uYi_dZSdm7ov1*C!z9l!EUw;DH z96Anpff@U^_sFe)wKu=*G1KA){en7-RG)t(=cFyc4X*Zy!ftdaDDDQgTruFJ+9m?Uwi7Y#iJU@I%&UrZ| z)|9s=e1{Pn%b{2`;XAEn^R#sS>JQj3&(Lvlis9#!Y%NiDV0gynUYd!3>@{lbS+4Oc zTbTc-=DPRO8#Vpg%-(utbAPU$*)$;cIIX+w3#9sM&*?@q2+l65Wy9nPU#n2kRy#~> zL?bvH@%642;lTS2f8wv?yp}|`_*<6Q?$TIc<%uql*=L|9y#~6sLD-ZKKxg!J|B&~s zd+Z;?C;A6}y81^F;p!h*=3e?oB1`s9tJ&_l`^UjMQ0J;X%9e9k&Ab_&xf;3aA-Npo z#X4a?35XMfefiNR^%BPzLKD-)kfK+j3pErbCyU`QnB};hJUIb`na}>z3hlrjoN^*29)IbnmzaAR81q6gFLbK(#`T3NW5<{p-*YrH`eu%p!A zHjL*F^QKqfYkMqCK5J)WyIe!kJUbF&G7HAhO>jTMGKpO5C9B%#$&FR$51`#;VZKH? zmX5=ob5;nLuQ}CCvaET*l&txX#nD0o%OBX*OhK?wyZ;qd+0Ea-7z4P@JD6gpTWSC9 zPhsK~Xk62U;2CBR?12b$Lg;eT<}e~88P3O3AGpWsUQt z)Ig8_)r?7Ntv2B5<}um$eFdKsTtP*Bb~XI&t+rdCnh*acir1Ma+0%rX>Q6OKUIyrvKD~f4jznPHf^M_2IaColz!hG}@l7bB#)m9JT5mSi!R0Zf)0|vNXj7A3-j$ z&vF#a&N39u&T163O0nIjHqLep8APRPfj`3y&Poihj=cRPRlGHeZa=Rq+wPQ7B_VA! z)d%$|KIu%-d@v5BOiYRtv63URkBviArZ%Lj!K@%??BMZk^IS_S}DO8Rqb+qG(_RqNI6(h3M! zstR1>*Q){V5O=-nIVg}hUjK6%g%fWr`b4OI`^`u^53jCOh0~c5>Pp-AHH94T3qHq=WeQ#zV$lRPdsTw4ixG8!VjBH@g${DkY?Or$Oo!B0c#Pqrv|=CkdK}w+ttyJ8 zZuNDg*Qpg>S2DOTi8xtjJq$6j-FhvmR_o2ivWgg6vW^STv_}5t^(wh&l`FO4FUx8X z_>$G22eAz*DmULWR#v5OrrHz-C4V*xVaK;#vpSVtsn~8;@c=oCDKyd)Ys{uq4EKq9 ziuG8d-2x`=R@$$NwWX|~5xeS~cKz8EUSF8EgS@p{S$nJ3Ew;}p>PnmZn})ReqWw*} z5~=;7g+Vg&UHD$~pxQO^=>dsRi2W-Zab_DA6W zO{CTyJQ%lXne3C74xU8p7`)s}Iu5>E3N~xPY7Zd1{wV(RosCg62>VAK{noo<>TCe%K(q=yh zS=AbNlU2S2O#;I%x1v$lU$cAPf_~CFFLushC9PFUzhqZzV^7wN-7pzcug25$>c#$r zf2wEo*0Q11XpBV@02U=^+*Ls!DIhM{;i85JLZNv4Xw%&45%Un%b7&l}Vw}ROQ z3Qnt7dIh2g#O9usFQ&qcvr0RtQ&{09UdQe$rxGi`UtSOO-qzkoKvwv0j zWqIWW`s}99gR!|puiN%+rLGq5G{!`2-O*+F^TZ#A{o3Vv4ei!WdgWgl#d@{WtDR&I zt%*5r?`-;`z@IFpr-L{*9AMCe$5C834e@3SY8UR}hgzdTAS7#8D2<{x$Vp`4Is*um z7Z`ZoXWF08-2@#%(8A0Q^&2sZthHv+R+xg5V{hth!MZ}Pd%OxrgvuIAyWp}afCfZ3V z27A8@ykI9i zA%-6Piz<_0Zb)N*v~ocp2#pRUO>B3_mWw8$RG%zBP`T3Sz?qNBxfOhZ@RJo$7|&|V z+`n5flX>6aAiZl8`ThpVe3-y?_2I6Giw@ZFnC0UlSOBv_&xzchDFL(a;>wmUA`veE z!(lu4_+W>9f8n(mcGJ7#{pas@b$`=A4rVG}>MX@YRg_9F&<%nR4g~8xeOe2yd{Afm z(Rk|5!^?0K&Oc*=B^=(Jnf)iKkRsSwZz9OF-j^9y4KP%vz`d6N1~m(Sk;nd|Pu>Ig z77_1tmxW7K;gEGWX+ru58Qjl%uU^-^YxJ-xIDu{X!`LgHR8as4aQeHnQDycr_w{=}!oNR> z5r*G?{VP*2iu(Sj%{R(3;-($6A5pilz;(@OFhS1CJ$wp+7{i}Gg=&D8F|XGyziIQO z?2hBb05GSuQ07Ie^*aL5m>uNum!3a`$_5CzOLi;-4=X8O4^PPMo+e<2!@BbgF=|WI zW(jYDuu$Q2kQ3*lQ)zGkz1pE+u`)0oe4!PEs2JxS$-cc@4g?rm+krf20AhnUut}j`}XtRCw!1Mf(eMro_ug(daxdbGngV+m00>H zCLfP7P8WgdAWvfc8lSR+SK$P97KG&!%mE?aY2B2(fO7-n6+0j9)2n@!_J~d3tWI$K z4AFk#SR{3E3bDZg8Z!BFy&6+>kn4{=`JZ7G8^B^5LTxycKS@Z~B20pj$Nd=>1XkD$ zaxXv=DZ&rh4o;YE!i&exbHE%&Ji&P`QjMT2PBFZZLKYOR3JgW6121L+MczZ`%I^mc zcWrV2MIT!9{XkogOkkn){2Lfgn*Ni;_%fIk1Q{IMqw^^?oMjJprii2t0^S|V(=2MZhkuRjaO z!3(evW`;1nL&*N*&jvB~A+4!(!%kbbODPvO!3^{^&xAs@r%43E=6f8U=>Nk)Lc}gL z)lb%$DQAI##pH=(iySdJR4Hb$W)qljmw|Y&FyOU~SwmupucO6iK<_)Q7qB>D1h9xZ zjNIhyf<7?eiSLcWt83E85MmMpFqa6;5{8p3*Yoa;+j#L|!MWCYBX~rw%Rifn&jTkG zQ$LZbIW1X3Vh^z*vk_4^QgOXj8Z@e)Cqt=;t!tm9cn&QSkzZltW^>eaC9jfp@Cct6 z;;)OTX4vdFDcNy%zGNXjnMMA9LdLrAn^DzI+Rb9QRP1!EdNLp~>#If4^wRHtSXo`I z*=(J_HY>9>4UkzGX$Rei{#jXJt66PyoAlqzIxU#YYE{g$m35M$xU^3V2&2A)2wP$8 zmkd)UEdC_27HBAwc><-|Y<8L5Y!VkKVk@j@dG??It;2%Wuu!0dm}5869yFZd*7zZA z@X}dPc=<4ETUw$8gqI8Ndl7C4HG>G$5QF%KyC!1Mhp1_k*NdA0*@^IzdQ+FMzm!Z}MN<379LnCGpVK#1IucmdC4&qm6$SXUiUzjRbXBgbC#`xV&LnThS0LtO!DA&K z>(@3pkSapHPKamh!UeK~rvq<}y-LrnXg7$LSKN#=_e^-0cBrnk-XGzem9FFTo~t<3 zHK=nH*@1q#@7@k9s{_;KUFHj`b}FVUotCd)ze|8(6|k3#a;9Gij54DNiR=ZLL`}kNVLFhvBubpY1kF%^K*&uNuua zjpY{4W{HITUaE?`6tKF;ylq3L0SAjt)AhR2J?8>=ORfqeb^z>a8nK9r26Hn& z*bS`fs1wv$x^NdNMdn(bjeWCa{ENAfHuRHh{Ojr_Uko0>CS_>^*)=6q0Vk>iJKTz? zW54&{ox9|Xyo5%}M**yjA~RsCEjcUib4~$P3P)|4KiYS@)M#Y@xdIRTJX?kbcOry` z+f?VvsAFTK=zau7M+M48w?*Q#TTkMRo1aCuSxu6w#8nwm6u(o%*|Ei`39$43XKun7 z>}a?Jz=!;?oD-+>h2(Miy#o4ZJ{c)+{8$R#3FjI;e=LPZf)zY}EQNnP59R!vhsz;n zLkT$>E}zGAf+uG(eJrQB+mZx#TT3C|4nZ~xSo*y}Mnu&U+12#>uc47lOf>W8;9tHjrH0b` z(}cAG-SLETaYoCC2W%S=5k9(wjL8ZjyqZKa$X#aO02oqM96<8=RvZ#I|Igdzq)|s! z`!g&g+zh?W!EU)y`}!|%@BEB5X@_$18HcgF7*BInG|(IyrBL_LUIKw*RXb0xS_mDo zOm4vEt`;7`YD#Wa*l>#Q@;lF=H8{$egy=F2F?br&DZDWEHmgIz8qxeTT1*CXr1xvm z<^&J*@IqsVAP+@^)-OxCsEC16sgHb)-1_I~Bq9xai7C6+Zeo;)&Z5M;Y1_su|#tS7||)njFS0#CoL&r)*=%I>bfwBq7RGd z$!FvpbI94WEHU@;>t8CJ-Tn2y>v{k3!>P*KF8X0gJ?_TSq%LNjR%_i#yZ8Dud3?>M zEO$H{cg5&6&&5Y_01$fslJP8<hjRr9GY!DE8gNSq) zVLXImNN$Oz-c9Ix29;bEG@BvlAs*dW0s9PKJP{t#Xx`FowZ#c9(Tj4hE;|^L+4lS) z1XGH=!+9*`?pi#K#vWunf?-By!p3Ael2S+6L@-KN$|Xi^p%P63a~2a>t7K)yJT}Va z|J-d&i-on?y_R4|tT^99gBi3tEgQI#{xrgY=)8C7ki`>Al}Bi*1R>w;y(dRx!O(}5EJ=o0X+6TH71!uQZX!15 zqI&&OWn@=_PUhrqoP{(0lQ$0H*uO#pvwjfX1OtAjF=0L-mv;1w!+xV-98TyqTn}d6 zV`h_4J-)g|-{@m;IPc~(F+B_qFUd|uCUw=y` zj}DL|+IRg*llmB&n^SW`ClD(wsJHtdySg7s)wLhj6XjV74WdX^d6Nl_17;ZU^u)?fmMf> zHV~hvrr`KA+y*5pt0W)=p$Mp z(NXofpf~gI;V%7il;(hWm;jy)(?GLfg2=g}AG<9Z=yo_8r=aM1#)iX3F-b7CV^6ji ztqao}7gbLrps`+Cqy-aL+4?9+f31mGeyrxZDElQtzTowuK!|sXOJt%UTo~RZ6`gWX z*1lX6S+i)0b>n1HcT>Bbu-!CD+@_1%t|(&(04jpBe_4ryETA$h2$q#fiUlerWWuU) z<~&yAAaPl_#Pp|PJolHkEh#tFE*K`tko;Itmnls|Axv9V$`mYAgr&-gu1Gg$C2d=j za!DTM!g;u~oFRl5el}dnv-YyeTuW(7yJ4Oj)oyDUyd}`607q&Rr%;YLRORQ#aD8<5tR%E^djWl(xV+t56x};^S%Dv&cIvRfoe znXH8%wMUHueK`h0?RgXWwJ?+tMwm0$sZRbkm__7v(9nx7Z6%)R7o_67zWFL_N8(Ut zTSoOe^a6?V89Z(C{nDu8-SPVj%K2EH2shrNOExkwAR8H51HncKboK6q#)al=bc&M` z29x4(gMoGL_>hfp92*vm$b3q%B|?sdVbEq+Mr?_a?ff)KVIjCBHgN>1(TQuyt%m~R z1v5Iie`W87$t|q8$vaL&LrVlsvluGR_O{ec_L7LN(nMYPAJ^VAy2w5{)P%#<+C})$ z;qO2=Al;hqw`Hd|}`g|7FTJbf+p zPJ4|CusyF6c!{D7KOa59FW!F3gF)l%9pn==beQ6g!_j92Rm2x*)$&eZ3Tn*$U-AE-fN(_$1~qjP3dLnocyyW<)L68_%rQLu@tRPB+bZl4K04@xW=zp|u_sS(w{*#7wVZ zjG+~d%2$r+7xl11%3h-j36++>fG?Lg^33O?7&V_6%JpX(RL>3y^XTYMJr)!LT+K0(U81E& z&=19WsybZC|Dke)JjIq+Umh4x#=HENcm*8?8PrO@ z3op|(SvZo4JN}oPf`~CSd=TIcA^J24W=}b0fV{|kvQJsFC}OWoc(@Llt55O57zppi z_oO$EPUHo*(^1$D=jbJcLf9jMNpMATpKV8BD}p|RU>g$0;nhSs>LCKWML2kR6%M59 z4oX~W)Cn>%;=rYhRlRGGJ=LV-m-3x6LFIKn$><4d)l87-ny;+agsNsK4MoiyWkD_n zUmP|9!or#ED8pl){v4ogsUdO2!hIfpeDS*v~xra}I6Q1@*Fc9QM==&J{hyHI2 zoM_%20jEsndiI5|l!hbHcF7UZP}o0Z-p}nBw{w%lSRn#>0r?Ft(9oWo>4~L-ZyKdL z7D+=M{Y&h6B;>UfNb))mt1!Gim^5gE23)i~^7)I`pJ*vGG!3X%#J{_aJ{eZrY&7cS z-o0PT$U@kd-ajo#kyw@qZ?$L9vGsGy)V*3 zipl(e^kp|9?XXWyK?g6^n_4xi+}x+em62QF%?0H$IyYOAOv{cV1MbqqEqmTibx++i#3 zvA5!_`>4qw?9eIG+z-hb4&T~ z({kfe113X%F>Bmq$^q;pE+hsA?vkRTIFLgGs!p{I^|A<(YJhY7Y}C%$t=_5yRIHr{ zKy;fi-6AHJ9ct|S^khJTv$GRxpV2#C*mE@RkB#PV6{OH;)o%^O2JxqKo1L|F8;5dZ zoKnYy4lmCi9Vg9}Q#L+{uzO$-3}F@RQ`7s`hQfFe2 z##~{a#ZnqFN!~byW$Mf;D6Fl3A+Z0#XMEw{6+4Jr1G#Bv`DPZucwuk_XdN1f1Iq8w zpW*E^=;L7tIiQra?OJu^O%hX4Qy?|0ilW&-Eb3ZOy3%ep z+v+Zl_uhhiteXc0;7NBZZJzCOx^V${NuTwpv5aQc5rj>pyyMIm1u+bk)o|_!%LVJs z(-?Qv@>Q0lg|fOiy=Ki%I?|NNUrzQNLoL;XA2ALXMgy<&4qPnBL6Ccu19y!C8^B&Ej0r z?Kgd^+O7+rF3GDD+Ggo$cGV64Nt=Qqpx1?bvUO(*e>T{*ZMyIpE!(7~joNi~QEZn} z4LkMYc`fj7f^8dTBUqz>o7T8dBTtK+E(Ys-ogP9NsdL+gTIJVh=Z5ud)Jz$UG}Xv< z6wOaYQUAlXt+WxW(acS2+^C&+2V5z2(_A}>qOGT+F1!x6Zcx)kO}l82yH1Sh*-TH% zlNm*ZEzYLfwlaZXjizo~=cYsX_LpM2wWO(U!qf2X%~e=7YVrnkZ`JJHo9b!RO^XX# zk_z!;B3vVyyvv)#TIZnKhm&XX3Fl+CRn9CfmmQKy6A&3uMH_%fA4->|pD*kpj*Q!l zFj8rb#y?T-C8|vK>k`N9HwM^C7*NG{22Yo$ps~k3oq-Gg{i9%VHNRGV|7j$b9?J)F z_I%>aZ^`-Uclh7`u_hGPYO)bQ+PsrBkBq`xF8_x%$uVcwYTln_YTUuki`%vG63@ys zT=W!h`6FuS&+jr(??611zKeqy%_)2-sThUEi|;RCGt4Km;t)<9(+4v=qDSvh-v_BD4GPcH54;P4wjL{dVPBvo9%XJk{XpO<+#DxreUa zB!tR(U7(x?({gZ=ZEU_a-e##-GZ1%XePQa4F%qh+G@>PVj@C!Cf0Ttu+Zi$}*n4o-h~~I^vK7 z;SuP0Hqs;Xn1h(Rw|B)~VL3U6XUdaX7z|7{!wYb9$jyB7rYsRm;ZHYZn`5 z!Y+S7!EKXoPh2vP%!H;hZa>!F#`R0ws#y?L%DJ@bcCwd=+sR-e)OoeuY#2m_;W%Uj`JeBGwcLEuNZ>6;pC^8o&8N_} zgP0@Mb5jzjYqHg8v0CdjUsu}bL0(sJ>W8D|O)#tbeSzLcSrheJSh9NO#m+gb5w&W` z=%2T+c%A$4bt@W${m-HTJ8{iAuyf#_>RG*|(PI}(2GuL_iFbz)z?VrFc%#>7cB`iv ze`7JG=on~+x!D{Bwj_Dm5z^OS&e4d3Zp;FBBeeA@@3uOow4LBm<$gM~b_dj4BBypw z5~o!xy@L6P??{r1P|NRs2xf6BnBBudRD^aEOD)h*Owm*G`_s0TJMwegfh_luld?GI zn6puSu8&Z;rc(av!|`+!jM1()qX;lj6FTpg4hoB=NeggMG@}<9VU%?yVs)QO!IRa% zGS+52?^Wd&vldv&W~ffR3LLU-!%9?Jx|O=CCG%h`_QK`^|5O!@Z86o*t)2ABzch;V zYN=N{(G_$@m*vkBe;oE}mrEv{TQ9U$L5>72{m{L8&)arX;8r{Xy%EdiGUIx-U!RM$ z3(!dX_*O4Vsbp|r@+poG?1dVG64N6&1}$`>!(9GHOf&WBxmq%XUA;)y1whiA4U?-c zPOQKSo1?WKA&E>i2qIbz2?!BoOMY@l9pSzL^>2!^rK6YS<)Ew+eMP(P5ch`rzQ0nT#%?J z$zpd|plxZ9s7QziyCH4`V+r!4>_}8%3XFTG$t6jWH9F*nc#`{KBbLY(C#f1;GGxux zrj?+C7rYIQ$HM82aXQ9$?(a&=2x!M{U#2(ml#HvQbFxhjPL1$(3M)Fy1KhD+BoTmid3Up_DKS~W z_+ZcUTF#Ii?iywh7gQ#e*OgXr1quYoEYEguD=;unc1wz#PWQZhv8pKoEE7+sdC@Md zqJ@Fvfw_B(iX~hvjKztuK{6}}xC9Doh~#QPZ|c{%(@4$DWYx;w9@Mh85n9&G{xtM*$7(A zYNOkv|7PH5VbFXmMh z$w4b!0!vaO;+yk3CgHk?Pap(jErNwBc>qB`eB@zG_K=Q^MUFVqSVAY+k*MuaIF(MC zk~Fk~aWoHpCnDOFdK34KE-FO*RXn9rytV{a^;P8;j(TRy9cUikoaqGy)-d0PNY}$!3SIMRC0!gbrUzEeRzoKQ`Zp~f3J0Gno+Dsls$)eG!{;V`g#a6HTODlES zAyBAz7Hc6AqmzwkoiS!q9o#u32AWWG@I~%gD9TwV$^wO@aVH#YZ=i4kYD3>n}_T-*6!d6M8xV>oAFmWQe|%ii^i8_b|^Xf_b- zaM;LX<0_|dl{d%5B2147i^GjjG;I{kEl@}cLo5$+!aT89W+W(thAtY#n-rDuPL-D; zZWAP0^4Mb`9EY#48_vdPcd8aT+u=;AJ_@mEvL=k(th0nf@N*OqA~gE_tAt9q`NOrV zKUB5aTCcK{sTpukc{>oNU$=uP#~pl&VF$8; zkp3zHJuZ1q_qNCnT@v*PM{GBFv`lZtcpIN-sZa_gC0CDJP;BK?1Qn67@(sr|knl z+I=pgRKNgj=3d@JQ|xw&rSpnL2G#ogYf{fm1n-?sNz_niTGCT=N!$SwPpjQLlQ-Ik zsWpqPlDF7PoZZV2ps*dLqb8VT6xNI9S%^Qq$CQ%2p&-2*AnyOPc-a=E)xBseJ2Os@ zlsYorZW}~A%BX4Om75CQo~$;uVX`wfIlNOr?7T8>hkn@(M$o>F+AU~xDBcmn&LDA*EZTnZ7dz=9x-n%a!3X8Gw(Zb3ZVr4}u@_Sxd3BOufx2Yg=aou?JB3iax zzPRw(>leKzb|WFCruW4waoKB^J(}ySTjX=YO$T|}Sc8P-8)VH)Dxy!w(CLNC3Ol>e z%0*MkT)Hsf_guU5BycY}PG=B~#miv!jS=b9OS0*<%a`QTZI&JV3_iuIo1rr$xn@_F zp|tLt%$1#(*hEIGyD34;$2LvOyz7vaTm?8tGOq$L{q`Pn+WoHrjQ_5yfPuwc1!TtW zw7(MQf3FReK#vnf#$bY-@SA8c8t}&VQwYp}#)Mup@tzg-_q-3}(|c8==_N#0wcZ+( zT1F&-HI|W#O`O26_AV}aHzhFL%XZ4dwe^0=M6&gU%0%MaQ6++#Z?G_lS*{l*M)mtG zOy<12%dX0rfLm{?jCr=z!lZfs4jZck`){+vshvx50^HZuB{doDhFI?eQxoK_Tfx+1 z+30rQ^*rR|?`9r)kKyZ{7rr4!1cqX##d@{&OYij|34Ex|T&v6oETV`mairsA!E(cl z&&$S8#T!=G*{A`RtV9(m%xD@w+8?jAn7!^+m)TpaB*|VvT{JPo#zZY!U#Y3j zR-tP>o4aPit+;D8G`VXwyhrYm#PS%)<}KakWDVBIEF4?~JYJXd+k4Du_d9Cnl8n$6 z)WeL$_XyGKd!a< zlQ{QUjmGghtc#B4^#H!~9;xzvi3{_-s3y&$P@PrYQKdb6JU1;S zSX!mcFHoIT)-iL>x-FizS95&0)NS4Ggw0@6sHb;Y-b>C0>3DfQEkN!v=NXJ(e<_0f zRR~(;7J0_%RR23QHTR$G@BMI)XPJZe+R-Qw!Nss_yIHIB&dxfGr6!UBa0!`+Ht(2% zP;{I10!Ps>v+K6*Z{~?HV{;)Mp;fLg)Akx-+zcf9+aWQ>PGN&Y^j#K*|GUx;s2eK| zmcm9Oz786PlWB5XPT`hUjv6Q+3~n0n;9lfrh_QP)?}2c<0Wj>0$}x~=(ZiX>FfzyT zf`3Z$lg+P9V;?jAU3JorW;67lB`c!1qu~U|p+LM8*zlOc;H9b)y|Ht{y4w;fBw5sS zg0x<2VeA(5@D@IH%`VTWn!|kFw5cIL)27BOv|@~Q(XoGs4)GbD28i@B{{FREJ_ZnN z8P(|(*uVaeS(yaDW9n(46U^sA8B4nfK4rf!+UdtAc2!AEdFIO+ zs34%yQLH~5HL9+>89KXiX-C%mTh*6PUVqE{aAN1n?*|E^wHxbI^xNTVEDnBd@u&Bg zQof3E@%FS`cb+jwgHWUd{rL!q z3}!>WADH2t4GdNsF3`4v8T+C$0-6j5YHhj-=AEejA(&s3TjJ7bdCVw|d@IM1gZ~Z( zdF)st{g$PN{kKw<@;5_tLj z)xTK88zpPAP3@5=VYs10>Q??3@8E;*qw+jxw?fj8zpuDfn{(4$I4CpTp$nP9qmK=5 zg84Nr`Ef@@ACB?UgY+VlQXYL3CXDTI z8XDVmbeQAac>2^7_VB7Y1aJo)z()>Z07V3WH?t5%kYWlr1^cUFbd88Mj~!AP4?Ote_5Z<6gY)GldXW~nM~4s4E&vFJBsKtuy=!EQ zx8)X7gsffr3ipS?b;qEr-xzY>K$UVMy~9ixtx2YsQzp z)NebI?MZGAnVOfWcHS!hG7I;xia(Od)KuWm)%PD zyxVNn?y}@!+stLxK#SrJ7Z&nv1&c3xzgo5W>V;Ow25g)uMMzN`4~}t?h?;t5xQFTN zLJrG@W9r5NiureY?{^v7B~5QNd|4uE&5;xXMv>LUrM;sEA91C4gP$0(f6WoQ(Noas zV@qsMm#p2*B8@ibEdOz)<{bwl-Nj@}$0&0uY3yYf)%|T|&{m=OrXhlQaCL>|rwK*$ zSi1R0q0ynk1R53eYa=wuXhdKUe*3uLjVPEmA6FGW+QsL!j=aQ7}n#2ua|6OaG+_P4>`Y;hTWcye=4*emQky$L3R zX!i6foL?_43;k&P^d^k2Z~O^tXnb@|i5&J6|I=d;qnuSPtz!@Vj*brLU-(P@yLb5P z;6L^c51&1IcCf#9un*}6M~8dQ{$uZJbie`@#2HjMi=z25xK;Vd#{HB0P5u4{A0)FF zTvGYNK>+gpvv(DZKx!AF+11nAr?3h<#SOUkiHxX02@fZMR~>>*O*^A-&O4)PpF$m1 zPaDO0r~2Q!unWR)#`Ehi_Qv5P9Q$~o6!vwT6(8dxKj=pj5Sh6LJGj+r4jJ)F?{M$I zj>LuP>Pv6`=s{j=0Yd`P`#w~rJnx-^r=8V<9qlz0itbE(+#9|#Yk8umg`Wpp>fc3< zY%%{QL3nk&YR;Q~E9U?H{trjV`Ty*PXNTYB|5x}+&3~AdX!8pb@gZz+9>PD6^$@2V z9h6`Q$5}9)VX&_`Ml2_NapZpnHJljZ5)?o3XDl!lc&c(qJymO@tKg9W{DtVU_mmA? z`HxcgKFmxZCDBUZ$!(@oTb}+C#=SdMyo98?W}v24ZBdpk<2`+PfzLq02_5W^+7}JI z#(5ji(RHX*>+43rXyb{@uvG3`XKyn>y2b zO#PM@rE+=fK`gG%8!hkH-^bqf@xxsn3221;WwusEwnbJ%GUPa-~M!=1>d7dcbMuq!1>Me;XP5Xa3t({;#L` z@!xX!fAIYI^TVY4f4+aT|4sgXg}-&>|IR~k41hoR#O&b%__>N#2tFHV5>viQ(WEs; zX@!k)QCyATbyzg_IjP*~@{d{#o&EFg61oS%9WQ^j+Rc+nhkv6Dj7V*^MNtsl{G)nW zZIml-`J)bd&Wb=t7fy{zx6!GVIi=Gs>2merTOi6zHdad%qa}1t#bU)TjAt=PHtDAfoRDspbt2?(=FC229iTgrXagU z@(WI;UeU?>qDqW#R4J?EgFQ)LvE9?K>y!3cC)yQdh}P|>o_ zNu5gV)H52>Jr&)r8v;obo8D*yB+(^cJ5l!lZ&+ce!XqeHS7EtC?_}fX1{Y39n+5$K zqz|-jn~iDz;rW*l>|%_yZ%)?n0S=m2*9fs*(S*W6r*WWm@Io&ynS|~l7d)Y+2w0)U z@RvOK8R+v}s>!$;ddyXei=e?`JpRnoC@mnzAo=v+`MbSi`+|>(=il>5q^umTkVQ41 zY^ZbQydc5QH*$}2kKfrCA7d#dHCaFAZe@jiv4 z5!sG_DhBG>Ji>q}-q@d#ln${0%QjKN{CZJ`aPy*4?t^8)BRNj_qR)g?vO*M#S({$v+2LJAD z6PS_%0TpgG5URi*Mt5phR<~ipVQE)dwPLAavl^MmibnEpXdDSJY|v@>#MKP(;A1$r z6or!WfDLaqn+ism-HL-?t$X*X-RTZ+&cvoZaQgwqTjB*Xx@Q zzS?d|ZY>$XZ%OMZWjKbFFa@&Jcxh`kx*UwS#e-lJ%;h}CeRdGXd_o}(F9yL)h_;39 zIZiusz~Ox-e%-)69g3NA1nSysf~W$21j(s6vy}YRVFRdX)g|lE@Z81zv9;S%*%E<&e^%H~9dhICem``L_}QH?8~s#oGn)!e8W6;HzKdK=XYYkP&rQ7a=%R%#xU zs><1dIJ17<9xf%pK$|8-qZicN(c+ZE6~6yc2fIE!oWdjHYU_!iTgLK4IsObJjJ=#v zGV@vT0Hr`$zg%reVRzusvASsMwn^3P3$3mOQAp^lzZi92Gtlgf~n)O+wo7Sw$7xh-&t=_>u z@!IQHYR|RIoYV{wz)CmlNj%XkW$kCi(2Y4R?apLCsj1V=v3LZmpSjT5|LBniC3K3; zCeuc=EV-IQGpGReL_Xe4(!PkD*{g?QF~atv$vm8ha9v1=8UoVadFP{TY9&F*SIJ2< z*l_h889sJlgTh-m)7F+UO!L}weMVS^6nBVChO5^ea6?oZkVv(wIHu!M)oDE2g^b{f zY05m+f{GM#rPc-p%Y+wp1LOQ-7Or2*qe~8rrgwM2T4@Q zw)fR~{juP`lZ&%suNt#OlkZ(FuH^C}F1_&>r{s@(-tmBv~3JO}Fz z3_B(iYt^$xE|xEK=x$*)M?&bu4ngJ}h+4&8YRzIf2e5z%pIGE`^zr2H@ZTO)@WiZg zkI^7z=yU8k-A9=4L_8%VN?6kt=EkxJYzz;DfpKEnmeGO6e#^kIebXi4GJDTEuxwIpMz);{3q8jk3a{A zre4e>OtAt}r%|NkfC?<}(-YGqX4gYp-cL^m8PE7%zobtLCl;R&V3UE$yZ9}DE2{Z*WMpQ71^7$(MtAlaAG(IQ4ePJc9tKE=ZBX*3FE5BQ~9|2mRA z0`(&vZ{ov3JjIKYQ1(1_kV2W8#Cd1$V2fhejF`13Y{+AG5gF0wS4$VnqDby^oLiMf?X2DE$-N3bOBOpOL`rm+J8D(2 z+-jLOW~;YcxQL~9T|41qnDKyL9`)Dt zy9xlH@iHK;BJQ3%SMk%60r4eh%i{Sgt-CqpjL;g!UoF~=UQfC#SfefIgFWB})*w7S z`60iPgf8x!^~z`jbr}q4cjte=x&iq~yIMZ0$Y+&Aq1_yQ4&0}9^l=wPTLh|~_rthB z+|_;GCi5R|vunSHY0TPI>JFtLryF{lie)Cg(O)mrR%nF-;fV`=y`p#J>mWDZl)jlo z&;g*Y44`#rk_RZi$A_f1)1VLP347#{we4DUDc=z&0+xoixwzB``haGFb z09x_>=ivFX=SlnT!)JR(-|WA?!XF6GmTdwqb#vPB&?7y0phY5Bj=m=}C@-YH>4I(`nz&zSK0E3M|nDx<8R_>w@4?AKhcvW@dvWVFa6&q0w z*qqm>5LS8IoGqqaI7KYNW(M1U(0JwuAo!ain=UXqc{q)OzHWvl245or4qQP(JnRid z!HthA?sOL3grne!s*A8avM-%B0?B_vWMq4Xfq9d*+oKlY+fKn9}9xQtyK$1K*ABo}BK#n})fUs{w^QwI1 ziBG9waSsE(#Y-cxOhdvj@F9!d7{L;*Uxx;R0&RX1xL)$oL>_K(4-+LG=7lYIi+vlw z7_*xL;%RgZ11|VVUK8;NAQTigfIt@f@5Uc3Xm5NO^nKj?Yeowv*7!xB z?V$Mz{yiri} zo3{$#6z{ZTqS(Y16j`~Yj$5oa(S(K1N@2z+({09Wp4ENg_FV;&V1^GLbd%Yh4GSp~ zw?#}U98xv*;}6*4X9svBw}0?L9R@JQoQm9$_jF^${ym(EC?M%pJW{Z~R$Ip&_DCJ7 zIwoY;3HX(JcCZUI=Pieq>y-pbcahxump|!(pZME;{a^nD*sAyc&kj=S|MTYud*9ao zuke>8-Pd{8g)>}OS<(q7T~E;=q4DHLM6D^-Y95I9Yf`p~m8F{qD<)|1RTQhD`O ztz+e30*L-Ux>Ns&{_ZgU7n67z^uu8YOY~AHuzddSLtfhd2f=@h4)`~p|1gFBdbtQk z1Me>+&mUy!d#vJFeljnn+FexoIwqyGsY7W|yc~U++zCOwdtv$hoiE&PB~~M%drGGt zVUB0AIm$-d3N6Q>Fk7Ts`7My0TDXQ=Bl5?VyJWnWQCj21*ovdjkM9qib>D4Z748v| zSK?dL@Oqe42Sq!W-)~*yQQxWq{*QO_+l?I~{5gtUICs5|QM@%`;e9`WcSf!uwnXVd zI1VRmx=|=gQCXSNxb?YfFjY(27pKTVlqwnotdQa1}*lsn4!#lMTQQSewo_r>e zVNL8@P1@wxwwbg;T!oHhhL8WfAA~%Bp&qY0U?U+E&ZeO?Z|N;t;x=>L?mt_A6uB>C zr@)%EAnEb`4hR9+Y=Vwu?g?KTl%$hU)c(yr_GdIVG_ZXf1zSmDeDApR zl)~qBTNS=X?z}h7yjQNgPma7-ZoF4cq-OwR6uzCHLVd(yz+Hav`FK-B1>xKLc>R8m zS)6?rMCzr4TtMxY5(u(+zp?2tbR3;-dynaR6UwLnw((8~RTob zIHg}4gojf%Ayb#a#@-h$YImZsI(NGklcjpH!EC<1A&pch+1%|hWi^&EH*agh^~in` z!r16-r5B1-6s+T1VFixWZ{=4Y*zy(CIz7Dh^NjUya%h7y==BlCab_<>b2?cmuvE-F zW|&QI-|zX)cISVS`2PIA?e9H*o<9FS*#GAL?Q8tG{Qovmw%ye-S={l_{?n)OQ6yi~ zqsw2<_dW&TjPBR_!E`Q-zTBqb)v|S~ItVeE0Y1f~J3%Zn3`h8AkCNH8d^(HzUd|`q zC7&_U$>7O2TF{&@4UEysblxxI1(nqaZ07yJt^puz3j8<@ukb3`_a=)m%=W=Td>+u{1Vk5vWOPOk4Cdb0pDf6M@+DhFqbxk0Y5+*a(EL^98Ed9=850VE<<5 zep$Fco1j~>0p70qBA5&8Dx{r3#Ml&)!h@7cz_s1}WxDla{)v@2xNxB~kUfU??DA=! zc07$H10mThOoCgq6dVP9jP?QQvZ<$?1EROSVo!MN%`G62&#&RfzzYZbM7u5S_@C_K11Q3#uneMr%^b+W z5wFC{$T^N@r3vzK>I^v{<>kzl>pmMG$a=OI~xqD~)zVd|{yQy@snP#UsDtgXp~Srwd6;8Ij!WRhTjkZ z`1-cX(cWQxU>!V^t{JnQvx*KaJf@qFBdL}_B?wWNO_BrjokGv6IIb8`#X8ffaVH6W^R+oy|mu~*Q*=- zpv*XcP#r`rA2#-;;Cd91po-mDtnjC>#G!(C_pKG}W8+B_J@$6JGcn$==S2iM_#J`?rrrya>@)`dFv9hL6qH*yV^77n(jxIg-^$MLuI`QO^s zf2-|(pYNyb|DGLwv;X}Xe{0zPZM8AqTY50Q*}g6t(Pj$&+BB`y^nU+y`LFf2&HNud z-K-9r4?q0yJahiz@5KB+_+kHt|9JlUG}-?9H=qC8jX&P(-`o3-XZr^!`TzVG^2=9f z|G)eAD``Kn&iTycsmLvKYHHN$FvFH zBoETA=GWx2=cxlBy2Rr$MyNU$WZaLY0YetWdpJr;z&|?>@MQ7G@MuWlg)*9+fd2C1 z1GT?#3=(7+A@?{G4W_kZLya^|xlZdy+Ke<6&`*ZJK{Dt#h`h>aDr5kl7lJd4eXr&a zBmRwxKXN)XE9{N(XQv>YVQ(~^wL;%Gux=Fl#;DE}|Hf58ii3N73@L^2i^Nb8XY5E$ z#T&&R6X~$?3a!LGNWSs(M`R$nCB*C65H_%wy6aspCcuP)`E`sZc5%>;CWBb8mOwDq z2o~fbVQmD+n|x_kJvHKW0Z$x>blCwu#m=Ir*CI@n6gx(amOPN$675%^m>}&nw%y>% zoe~l0nY_BwO{XOXPS@!kyEN4bg~j4J-{x|oO*W$&6+3x7U2z7dn=M$)><+XmS^bY* z(Z2m{^0%G-$FX77)c{xMe+NhVDgFQX58vMZewDur{ZE8`lxmR8VJsZLV$lgu&;z)S_a^L%0+0T}OLQ9Yz zagIsRduLX?S+2Nq&~s}Kmp;n=^1$k@6n16Zl07TCdS) zCY5~A=oZh;Dz2<{u>s#Fm9uIiGq=)^<~L&L76Judvh}o9LkjQyk;h83nQ|jk8B`=l zA4u?{5v9?J{{EWO0P&^P#!LCmQW@S0l@BfXi8Pyc5$M-vLr;CQS(zto zjyUT`>|t!zcBRv)l>b1N1>3Fv&=ZsS43>_yRDk8{|Nj2|QEL4^Iz0U5|Lbe~Io5xD z_=C5dILdUJDgrKe=&PP52>FMOX0xD={)$+lk+JDh9k+npX(g10#_%eb$a4UgJ%>7j zZU#L^MoF?9Wjy=gNN4ru-NkeipkF@7dVV1NP}L4wvuGaG{i%nyhSPU+Qt_T;1c->E zW6ygy?@u4@KG@m+;TRe|z~8*rE{;ZQi5#IbY!oWg2!AqL+N5e&9lNa5fw}p zW3NA%k9yF1JzV%=vH!2OO5H}ShfX0&UA%wXbtIovx~}AM1w%|{6o7x)|6OS}v$8wg zVz<*PwJw$dWM!6rsW#5CGA|mXX5+Nlu2;&t!k*iNsu$l16+mlDNgT{Z`^g+`G2|Qw zHAIG1Xq?I`-Pe0Ndq&`DBOR69WHDGNPNCO9p(=YhS`7A|=Z)fK{!0TQZwxC%eV{=V zV_NFUnCH9dyL-{9ReH^K^(>i&Az^>fiP-HI9sS*EH@i(-Rdv#NrPk74jbaz$m+zYG z66t3C4y>E#c>0q+8=%9x@f4=`WjG4wpXKQg(NwKhnipM-zFus<(qE+}tnHO{C(#m> zoM_BNr=mZqWt(V>HJIoN5gtx=M&;*TvHV|&+NecF&dy6O8(5|$C^K^$)<|0 zbUPJ6x|NC`&83PU&7g`P;>~nVj1H%$J{a9W{g&zxPHkM&lSxopuhndKlj%^UGrd}> zw=C&qBzJ#lRh$_m*#5gRplNPYkdcK9vNSsGcFxQkBb6uyHU z`I?8Uv^4u9yHInC-C06oGR6yFJgsZJB%g_pf<@eS;Jli`{*pvYur(#}dYMR4nt% zL*j<+Onp48Dq3z$XJ%G9Z>rtWIRU|P_cwQLhjO3oIqN8PyY1e|MMn|ktc;-G!vS@WfReT1 z?XCg!JOixSfHb}fMzEs{uu7v;Yzdq%y`uwXTg<9^waQtsB$U^^3>f|mS#rOUiP9jm z*T7IxUM6M}6f+#%>BL&;zG>1ylGUd!&~Cd3`mnLH%p_ZPo1ofBu>o~b>{LslH~#1u zzWi@H`H$fo)(--((*7rH|9y0L_`^5({}ujL*ng{8!FnF(|07fpafh0a*VQuK6xGy> zMpI4B!DK^>ADGF844;hp^V!H2;Tli~arX0{ny?y<#2xQ*m9O+Ur)T$;75Bu~jUqS0PeR=sk5wnByh()BI`g zKSkkX8)X6F+9!)FbDJ!wG54;rk|mpD0pi>vD;n3`B1>d{vK{hv>;DFuzyDaZ{vZ7C z{D=LN{qNzkZ}vZ5<8R&dpS0rB;zh07E1jbaC#~_P;?II3yE)_b#kN|dj91l0+59dS zyG8T+Eg6lNDVTB+5B zGno$aORz{9X$GY>j7jI~O84B^pE?8A0rQ*jCi2s5f1BC(w|494lk^iSg%>X~p;;={ ztdwpy@vS?BOH_*O2K1PfSUjsFlWNs^wQHr|&W+89?c{dz?JrhJyHm1J9n`Cx1QpLx zNr*n({G)Vp?WBt`Xa${%dMXiZs3_;C*L}Mzw{7RPD|Jjy7Lv&c=(CfS6Rgo}72Dlv zVsKCqfURo99%qv&6JQQ|a@y}Ec*x8;FIL;FY9q~kCv6%*7yF4Ux{R}vTJ37HUG4s2 zrT^6RON6f%m%28> zVyDwRZ(p#fla!F_X&8H;q){MW+J0%XYh3X5&WCp-i%Z5CW>BU-2l<1gQFxvHE`xi$N$ka}yX2=c9J1tggy(VnjutUv^ zx3FyC?)V%Qlv=f9Aw)#*PxY+cGLsu1uW4h~Xm+co7QH|#b#F&>w%yIVAY09-xqC`n zR^!e;Jzhm9RxGt(ZS5x0(+!72dTC@Q0d-Bl{7Z)fb|Mo-wau&dtI97~1-q5HnbobG z^vb`$Ccawg)lM=vRnU^nu@azo1{&H~5vp?KQvU;a9cNJ@FikkCS+K@7Dl4;*Mcgf5 zO*NB#&bF3Coea}V*kY#h=$smP^rBs{#GwI$r$D{)H-?BcGJn3PTvW6|Xyo9asqV~# zpk8aXo>Qv9r%3k@bTlL=KlVw7)xnp!P>gHqL0FfwC>d_ z-J-FKVwSN?Iw7r7F9hhYbssr*fNe0RqI)#Zc_{Tzr9vmG!{P&#+Nu0(93iXJZo69Q za_Zg-g%<{2!tVVbQ>iOt>fY%KPBo4NA$9Ku$9Cv6TYQMT1f;1cpQc}2%8U$zAO?h? zj*K+ueOv^Kz!Q$u`o=p{dip90@{=<8)qP8nT3P+n{adg5);sYhgHPdLevNm!5r?(6 zumEo~PfO>oWVy~XiiTe4I_Q63FY!;K;m{NAAI*X!Or)V46eJ^@7z3Ml!33kDKOKZI z{fo}-T^QP?ksXp8PAL5Px}>*pcYRTTwYbv2^6>4ogF%Qdkr1{^G1?L1xgTG9uY%9m zv$M|+cD%=S!!X6{6Fhb>2$N1~2f&^j8E~TW{ovL`=d|(XYwhXQ4S=gSujy<5Ph0tm6XlaEl#6# zwwoU^wci?+eD-{0fUW{?6eUwXM+s;8NxNArwaIe z0EpQ`orSMwjjX-C&f;*OI_rhbQW@z|BtZJt9~`A903UHp8ets&jB~RxNoDaoa*{#Z zZrwHJZ4Wskzjrh2jiLGaCHb=h?`CNFc7p78&ko*`2OH>Hx-Wqpdc*KiL$?{+kNPg- z^-z0_!5l<_=lY2|0xGub7J~p>cNmmm-e52V=EVXdUvhgv0M5G$LD#xB7mR4Ni=%Y+ zQ?T32{>M)Mpx)o}o_L3Qe|x?Qzr^Yhd$`Vt7ug99SRbSK$HWK`JKIB~#)$Id$Inrm z;opamEFUn0aE};8`?ZGbH8GZ zREst&=Jm^IYz^i7dKS&``sgY>w}iCG7(2?#7%ncke83pSJ!B&6u{CId8hhA8MN0>c zVKRnJQo8=&33S^G-^#HYhZ8x*KT7@UBsqSGDL3|S?J_XzS!ImDbqy{3Dft;rM3-xc zdTXa7J9G7*XAgOLz#YTAda#!a^`-;8^)SbByEuwN|HxMh-)VOJ)s% z#ISrIB$RtFWUf6R9o;T-P*jCW2S!3=434IH{Q*)aw;3e5DQAUw*)VCa^UKg` zx1M1d#|mMm;4(y>%1;PBO=Cj*>57*NK?Rp33XK+QAP_a$t&|tqHEc0va@)S;a8dCU zx(I?~s3Mq^&_qN-EJcJWS+0j5NR}GHG;W}U5VCEC;c5{MmMf6)%|Is{9eP+IIVQBv z%hC)1f%+go{5U#HwHou54-6fKIL8HZ>|vpr>`|c#mJSL+WQ++@xBie2s?{T+jso76 z<6t&7$x*-=8q{V)O_yuuQBc>MiPSrjJ|sl=yM~)QtWoo z`79l(VThI|9MT2-lZBH(h-Z&5kV5m7kj$#E2tjL?g+-_>|-mcPRZJYWP;W zc}DIiO!zQ?R2|@nBOjxn>%zZ#k#*mXImVTUNH8unIK{fw;3R#qA->hs27jk-GB`bP zmmw4N6$Ph|xs#n@-S}d8Lx@0kv(``s!w3zAT zRC>l`3ujse7f$H($z`|dzF>fK(>@D6jax4KY}%ie?G}7n?0^a8>7&k16V%SQ@qqNM z`}FlBWh5<=Pn+#G#Wq=9Ytw)>dM>Ip>8Y|#qXWD%BY~~R5>TCPD`8iZwkZrSdD!w~rN4T>1_znQ|l zK-YOs5|1?rC`*gL^yZs}ns4}R8U&Mepw~=V%d5u6YkXjGUN(!ju;Z10qva3pve?$d zNJV=bO6w#N#cf_WookGB7O+EuYF1A&G$_nz>E)6WEDK61TQ@H41dO?$8!&&GXQA7@ z{}@k4@x8_W**{48e|>)V?A!a#ukq*d{~ApC(E#>6PcOrXKl}X9G(T~9@ZbA(jD;=O$78R%iFND+lb-fv=aoM;#aD&66( zDV&5?6>|1shMs%}XdfRQzgMA=M@aP-?eE$+YOp)yaxqj#4e#EIvkIUS352}-_lFqJ zb*(uA>lmd%LRW(?ij7G69`x>%L00M>b|Le0O|E5oM7$0E7f+8+>z( zFFk*XUVn1*xl3_hNBO`1-O=YFENyP2b491-AMGo0b}nHf{z1lrmCYpV-~7ki``>o* ze==HM`md7zhldCIM=ANgzxOTv+t>Je`qXQwCBVD(V~mplGU5g#=X4g1LyW7-?!G~= z;9-~uGVJyJ(I_rF$ap}AGAzarBB{kh1s4H+!hdFq2}X^=pYi8OU;g{lpGV_Re8yPW z!$e%VOfH>J#o2M|)M^He7hb;TxS2e`g=j$-KiCnz0AQ1Y>lg*)D$0WmmHYb8GjppA ze0L!8j#7C?Dih_Ok%^x~PH}b_&S%h16jPdAx8<%VIv4s|_a{iCzZlKE!w-2nv4&a~96u3U5U<(6(?iU{Hv@4|wzW+G6I6cK@1+e=;A2ZLNKRY7Sub3d| zwQU*>9_+Njfk@_+($lWBJBukYQ!r?ZXpF)Dy-iQ%emLRi-XowJk9{S=p@f=Whq10k zuxHHZVsZ@c!u^sL++Q=}I?FWNMkSKqUp_7R!j9)B!R@>gd~D3*^#nHPESOhYg57vg z<8}-U4n&uFNP3~#DyRszvQ#ddiad3VAyk8Kn)iNsDKc*kM|5YYGz7(~w4S2YGc9zZ z!(84GvEGJFBvQl_Y9B@0W<^114lv=Hvq3PU#x_idD-6iaWrS8?s~~m-Ddh;2 z6A!e-U>S5RoX^plRpIx*gx{L=SCp>Q-IF5CjU7%y$f>GVkoeG zlnaFe!n|}u$o-V)&6nwxm}4KB6z0N5d$+^k-X5rOFTCI6cmAiJUN{Jb?zRYCLM`Z& zp^9QJhU)&P#Xq3<;82q+l3ti8*bJ*t2Xt%5{vcU$v_ZZF@f<_Jd&DL~zfa?>?h)}u zIC*I&`ldR>xHNdd2ck&c1A(+g#2`>F7jqA~3-ZWwDQV>>&1PI@?7=epDHx4ps6&Y? z6=79mh+0duPI%Byy2vM3C8dZ_0o#pmtO70>j#U=7!m)}(4#z4!R5(^6bB%DU>5zz$ z5Gx*Hnv9%IT_ftJfXs-6DDi9>^;2TqFzTnOZe`R@V_4l7U^DGcyTBY)$RqL60w4-q zjv}$s_d!VQ9qVcH5M6i8NUx$i)7G~GCTxJKz7sMHnh9Hcd+^+Z^luNI zyWm>wCaj|->Ze}VGsn6iX`WZA7 zTdf+b|F10Qxj*{g0xs7|RTFS9>W5CG-MWo$?1HLS@Hte|0v!jy2cQgRb;AC$za1uf z0n?oDjnitQdQxnZtrF_RiK|SfR&ANk@hF@+hb{@&&w@n2qa@0sOq@q4q)ym&r~TS$ z)-0agI9pUK7h5(j4E(8+723^C#XU)3SPUI(7ErIWV7v z4w%mcS1YzoOt_Ihy>#+&xm3669Sr(oXU*;6n`GrP|5H}|-HS$}QnNU2>gEiFv<7^> z0Ht!|9P!h3(HijK%y)C}s{{vsaMxaIHd`mfk~Q&1Q8dMht4KdEe4K5C;L`g<#NmJ_ost_v+dQ^S=(ZD*qb^zvs!Og&Mf8( z$Ftzd$)D9$%WCs=IGwtsW9QtOkMXs0aVjMj5{y0V7UI=*xoEX~Ht?OpQnIJouW zV-$FvEZ~%ZMuDSb0k=5N1%5~t_+dqX7s&!IRuuSKvcTU~4cuO8e)CgUx;HF3wK^vS--CgkMbQZ>$Y7G|$314k?i>(X{An@@z z*DcWmlIJPyhzdV19O7vs6~nVE3u*#l<)M*jaqLYL;xeN*sa7b`#pJ^z`ZW1|@Nict z?0SbXoBPF4cr|GbbNB`v4|Hf}X73qP-e0*z?QXGGtX0n%-6ln<@E&>pFXzlr6`6a$ z(sei*tn^CDp1^|CjH_|Nf6*ETZ$V29BZ`iK*L>1(1y2DLt~nxr?g6^hI1 zF&Vgbz6Ql}6wqlSJ?)klc#|yP5<6s0eXv8jc>EK)^c_XlyZ7n+equZAO@dE?oInv2 zUH&8J&s8UKDh&v2z3BFhNL9O8QP9{?a|-U5`Ip#B>*O88bu7+w6mqqbR;@U8Hse=< z!C%MJb|gpczwwApQcdHIp*&(dIuK;~@WEY-eUHaie+gonU_I6W&V=pFK;mK&wWWk-b+`x zoL~xg%F`%=)E(b3jeKJUVF5jb@Jlz(9^Bv-5Bv2cj(NzXn_O_VibsXWO_$D7Q`VwW z9cmcptrHP(sI5!#;jDT1mott_L|6V*6e4Qqy8Qv)Z13^4cW+mWr!p5X$mMJBzrHjD zFLwn|#<%wbkg8bqyHRwMq=tt>9WxOh3A&-t5p+BqI{CAi{}~~>c!kmT@eK7J_y|Ot zF~LGJ_by>(EnrfGb8n1!;XI%RpZLUfadoZaqGJ@@=Un1s9(m9@fyE9CCRg)o%<{P> z9*`A4(m=y(I+e&{VY~%F&_fzh?hEtEp&v~@lYIdKqP2wRF36&y_HZOe*Tp8%gkY`l zX6bpt&Edf|`iB6L1j-VWn?a+3$;(53CKYQDf?V{`kC3RWId~AH6$t=gy?e(8Q0s`> z>x4KsKBSIg^+6e!EQT4!*~ta6F{;N`*8^jTbS{WHZU0kQ3$O<}ov8l-Z*?%LGEnpW zF(;hU8tr6vd2K8SN%K9k>n!-_J+?{6VqDFg#;nvWLg|T@6tTgtl4EhCpeDsnWKtxA zv|<jq*aoI(w zENCufCQqtmSGW(Vp(b%qt!ApT8+jH0FCr8$8zknHNVPjm_qZ_&WugrxOnqo-$^JYc z))F)8rNxj(vp1DE5G|lt%zXyUu=?F;oaJUkpa9Fz zxMnScigDC3C{xnvhnQHjLSw7Qa6;-_r~wNkx4HU3VEfW2mQsIXScYy^872jpND@b^$G;m#EU^RpnRfWaBZPU`KkMRWtKD9J z&Y`&*2uF#Rr5z*!7=u38$+Mux9+T41SnMDt#>Z%6qG!OolN7!G5i@C4pfN&xT~L+K z&~%_#Ff3#ggL3!eq^RyaVkX~LbwafpEzJURRi9t>b-f6P)2OTo4jdJ64ojB46sbi=ZL z?H&R^L{k6)5n3C-q{`rNK?PZBn0xqU7SSx9pbZ3?u0ZMUvB|enkOBdIJls`?cQsnU z6jBzCwGhT8aiu`gxNsi$fSb7NFM>hgC*?Em8Z5=BJ7|p)P8KAxsghOnBgVC=yEnI20n{81#Q*Fjf zk_ni{vsCDAV$P0fDS#FA@O?fndzee8jZTU@M-L0TIPB#~lzYM=%WR62Z=_{DdX#7y zjdLt-id|hfBfBWI6vQ}EQbo7A>J*>2K9U{PJLQ)gW^2-YZ5hN6auiXHqZheA$Tfz{ z+c-2g?#=0WEgfh?VlhJfiA_;Hg`*K{m|ztAet$vRq-fF?8VJ7T9pI4;8X%4k0~Qv` z5a#MtNF7kv>q?HO*cC5)`G_pBP8-KPb`ExnRIuPS&lr<-<>!kEJ;@f(L^eaie8bw(%ZoB)!xhFd;V^d>LNMsf#c<$x;${9Q z_Jv{zKo~Gql!0~X^Q2#>!?Jv%k)sM0ID`9FD)#Esh%+0 z>oiNR@OJVy{Z*Jj>YUB4)VJUS%A(c2pd3c{V8ZO zS3t@-31Qk{yB<-&^jb(zyw*Y;S*x40pf@MjS)!kdpo+mPkJ#hx%H zK1`4)nnJMX6YJ;n*+J$E zlxn|SE!ru^A`M4G>{jquixEV0&gWSeT$Gpr@nmomb^k;RT9TQdwBUy!4GHlJ*(QGq zLCqALW{eGT^qkRz`*o9F`%Y<1$%MGmweUiAC03@|4k+0aK}td$n1C$Kg@ z*mJm75vXZa%#%Af>XZ4kkAwvS+T#Id2}Fa;iB{mfmOq}30*bjx{PmCM5?Bg%V?uKf zu2%4zKZ`?X?~FX)MX&M4?S*Z7cfGVuUV}=P0!t3jna`2<9CslPHDk zmF?L3{^lW3qjhH4!!MauUR!m~ifP59cLE{O9rRn|XHh@&fjSZu7+tCMb_c zYLi?i&p-277~BM=f*@j1V>*NxG$a?n=TzhAw^=RrHTkJk@dTl|CO3?d6jj zEPciazrFNw^e#4cMWzI)!<*k*byWidIx9|=7#QY5pp(7nXaQ-#{6AxJ{qA2!_yo#W zVo3>66D^b+WomyUUzGaiiTPgex~QVyc6kQuaTN*mQgEBCp`_Ilms(;jiKv$_`zBd( z6D4vZj{Uur%Jig?wU!`< z)#r4OGQ~G)s73z3s3E@;n>@3meShi%T54(OW~3{jQ^El#Th^twxprV(f=N&o`m7ra z1miwbH>8#rf->`nW~HFgyuhNz;#sp*D~HxACZ3a7{h>v3?%jKNRwZESEQEKx$F8FR zTbORyUBr^9MOP5DvhPr7#08=VRJn;1$Htf5JIBjMaZNgzB~Fdmz$fV6U@8yA#Ly4*M%JukP> zcmB#+&Ol#_ukoQU=pfT*0+NxIVo{T*V0L+sy6~K!c0;#$kjq^+nc=PKWTemK1*5h6 z8K`m=w_&Nxx>;t7c0JwW#!?i_aZ+_bhDVDzzr~HELg&+YJqdWs6n0O{WJ_d-i7_V& z^T1;2jXyGE3Dc0OYUrU>QR((5z8Jdf0_|*WcnXprLWhTV!M2!O zqE=6;oR4;lylwS85ZS;N0aZK;#`G39o-Y8DCK6F$PO0G_@xUpVV+TajxoArcCpJxE zr4H44OuS0ybsA-A!>(+hHmI44`J6QbGcnya9t9ik`U62{73qO!SBfhJqD=+wX&|84 zH)x)D|6|cEy>^Vnk_DD-;=CN6V{a4!wH&1=3?<=&vJT`uv5`i zDsld=`_e##%-Mc~e}58L@cXZSrB+{R(-i!NDCIPUd{0m7m5~GHXd~cgaz_%kB+y9> z8IW|N4iR8H2i5N!C*-gO!3x#MAh^w4?h2@1_r7SQGZq+Nk$A5M11~mSke%fXzfW~M z`4q_TKe?Oy7pv_4kx>|p2G%g7%ji2?jM7$J2)gUtZ@2_I@w4f89Q*l3Jtm+ixbs-{pupRlhy4)>Wzv3Yu!PcNe-Lg&dW4!vs{< zleaWQ!#vV54 zH0h7-kAJtn?dJb%F!njL(K>DbSNVTEO#6R5Iy^Y~HvhlEpE=u=U%Ym?UhFk$y|YTU zSE^Mjjjnd}x@URNlaP&Cx$+vapSyA)t5>R*5uI=gyPwMIsJw%8-Y*?0`_emd=5;9V zhpeiL-EO;wKdOy#MaINU(x8AE#kvYRnZSKA4Wwd4C`^ZGpwl-hDzyN5 zo(9sff+f&V8VGx#S}&eSNbHR?(8UQl;pV6p!aHvYsHQ5C)&0$Zscyp&TclCdO9@o_ zjy~5h-W60X?TH@AOqVHl5m)=RU*)@%*H4cn{KtZ+BPV1;KC8>Gg!iJ+5Juw>^S#dfF2dZscW;v90#7CwQ$VT!RdtTH z@JkxG>RB(6CZ3(+PgT-*A*-KLyPu}3O!=65*THIXOqR1-UO$vI+UG))&ls}h@6%HQ z@zq|ayWWkr=V!shDcT`@oRsbi%K}l9vt%Ntu~_8tN;2{%wO9EK74~WDZ97}=F;=(i z%NioCF7KZ4q8ZkNU(%ecw#ati3H6t3vfb>D7sp91Rudsl`GD5r*}*j_(jafcGnDQ0 zzc{!$y07>z`=9|Hr1ZaM2jBeve~rHk{f};9;-s^Fsq`M~tIgu(_>JbAnD zg8UMoq_)!7a^Z@e9m+IdC$#*HYr$|X(}v+Jo_9DyrO`XP1U{UwcDR+5CX#*X2vBn3y~DFEmhC)=}#5gkN9j4p8Sor!p65)Pm|8pjl5)M1cB zUV!e9y>T=M^Z`((a&{!6YT}VVwNa}!Dk`v7GMmD6iqHd-#rQIqv2TJH-?X&5cxdoI zhE@nC{n26&JYD$H@F___7Kq`Ly^t2JU1T&WwPbWLJG0Y1f3VZ**@+mcFrS5vql-C; z$k=X19M0Q=h)~knalQpR4%Ee%KL2) zF9lE?at{;a9ea()lZ=9oiDuWrA~5X$W&Z&G|5uBy$NNY5WhMw|V+R$c2|ET?*vof^ zWG>@5|B&fs*J^g<_V_g+UcejAGYHM|_d-j3k=sA=9*Z9N``^81d5K2M!yL5q#gnK% z$JcbAOw6hL5tgsEULOH(lyJBB3v34uEi%k$n)BlrG#-9WSuHk-gyaWJ1lLcl0WBov zB*r2yRu?hnGZy*V>K^0Sp6j%a=x6|cK!Cq=zjt0QmN*K@?7DY7_WOC7|I{oY1CBvI z8-~~Y)VHpTX(Hj=m$kn{*o;OeLeU})90jReR1($mq5`IVz-DQBZK2{Rd*rn9i5 zv;7QQvW^dQVZK`5$lVlkFCThvOt1H-XEQsBWJ-Td=?0q}bNUgbo1Ak@=|51q$sU~k zg46j`x`F?1j9-m6{u#{>ey(85_7C2R*DN{^+5Q2Vq?iHHV4f+TTEY^?G}B9T{;{y& zocgmkBo7rVcWUUHhDHXhUcB!I`Tsk4sAH)a?^Uq(leXEeAZsRb7%|g~)Ljw3g+s3G zAF*!;qpe4_`3={cz~JPw&g|OevdtK5J^tCt;Gg{r{yE6tpJy5TbC|(D&)4FgqvIE8 z?s>5_^FWWT&pK|#`6F1y#ViRG0eR(5rWR0VYo#F0R0m$b|29(wE_o+?_mzJCjw}7a zeXR7)HecxvH(%+W|MRT$M}O2p4?yR^Xo`k<;#FTPp7P0+r;g0c2Fg+&cZG7nENQ3i z-qF|*I)EXSM{4I5$8w90gjg=BrCaKU-z;(dP5!n&{~JXh2=BxG=h^eaA5!)|&z^rf z|N9z$uJgaVI$5DHMis{&2jsQFK8T>mCeA|*&MB6<)n>y=qC*bjn=U}Dl*ajC;`_+@ zu2xU2?lv$wbuHlF50`3}KWED7ZRDcEkmR*1s!%m_A zS}|pmsJpA!&m8NHqX3o29PFa22$skk?P3;Hhlv>>%4AOr4Un84MvgdCT&mpEZ~_%6 zRj4;SnKBd{k!h(o$!3}=OGO7C%a~#b=)&9O@ZBVQcR4&vuw)5HT23X`W>glHI>8_~fBvsAHidxi!OBXDVIvlSkUr!aRFE5d*sk0oum?}_QRU$=G zvHs7eOmC_Gi3ewEg@0eE|Ly;fivNE2!?*VzU**r#|4;|wfmLC%N9aK+8d6Yj&lf>Y zVtU|Q;6N1%dKxyP2*n&h9Zw~KQS?bKG^g#N)Do4Nh-u{xD>zRdLrDxwLjKFqE9(pc zL_dDYV4ZeJg2mBdhMpZ05TFy1-8MkzSiSg2TtS>QyG?-u#v9#*%_Hw0i}4iy&7HP! zW)o0e6}f0!bSmWo{%EzU&33i>3nG}#!e|!GKR=z$(9;b)%(DwUGd~W^kLUbx`leoN zzd~eVfA&F@KCLz1Fp)#(z^DC@4~+~5Dj)aq)w1Z7i&m>$>2!M4)3bK-qLoNxGw)iZ zAxfg2O_)_AqdB?VGO#029YIw5fzE4S&a=05o6aWpx6lT{Df36tQ7>{yY;pm0a$>t6 zQoGGw_oRk(x3JAHD8ukp5y|zcG2$-zFEM)lgrn0F4F+VR*%Bk(h|m|)jJeBzfR1`* zejKWglUlL#>b!|vh6u{DXi9F-&^QOG!$+4XY!{7orC2(rjyB79l}4p2GEMkayLnzc zsdl|Y9UcIdDjftB8xwv$ISBDoO+=G6v^aDiR<0J$dMCg1I8-}6T+k{i(pGXvIilwA7;yIAj1# zXuVbIWL|~anIIShzEOB}J@-BZ^bcRJi|hUbch%mAvQ#_JYh3mx^02N{Vzre{sudkz zN2xT_4^oLIty3o;D-xo0;uzE8W6WfejPu|Q2K?=cnD(9(V(Ulcq;?jd)4zdLkPedf z^Yt>RENwJaBJvp_$+r@6hN@!JzuTqJ{*Qq4XFD`0bD~XR=(lFc| z!fRP_RX}hDxv#2?GXH9}aF5#I4}2~se!ew+YwAu*jjjQDpnjk5FHIw*nQtsHk#x7> z3BRX=1TNt514|dMgLF*Rx3vQ0YJe!bgATXgk@%#DYAGLsM9 z1PF1yk=cT6OC1y^XUR5b1f6NnSDAZ#o!JQH!T9HBI#(rMBr;18JJ)uWYzOT6nlfD_ z7t?tvvwJy|HPS=e$0a&?~$e~=wFVt^Wm~G2$$301A8fJEzxHRC)njKhKW1h3rv6|*nah47RsMm< z$EP2h3Oh4&2`18ey~VQwk;CzW9T^-e){zlTh7l!y`B50Y^Yqh3@4}<9v_)_EJUZ{5 z3ICr}rbdQB5zcs&^PLulxK-a6MH$PBZ~NT{)$M-kV#o&9yB5kYAGL5Z%ol8o-1&OV zK%RWGcB`mb{kG3U<9ugzs~`25EaWfYA%8g!`73zHH+aYxVl6~d18tA99OmRWDFn+$ zOM$t^Ol8|6r>V2YPglBh6cw0rEDg%nA5o2R)wmjqs=4&;KTpby9v-pvKB6?Iq2IwC zyoA{k|ESJ18p^zkGVnwLAz=c)@aTvRW0M*c{dNESk65mbW}lVZZhHIqAgW3%1?Z2Ma;-e z@+XE8L;qK9$D212`MLy{Ytfab*0h==S|&6FN$Rx~m7%wmo=B)q7eZH% zAXt-5ajb2Ul;u-GLb>OJ%(W+lYNS0YRE0~Yg@kg>3r+L-6GI_fxduLd{NOQ$*QnGV zAbZ$Th0UccH8_eS71lnD_13-b85TNY?mwTWWkG;1yyTyI#wyQb>#0#sgcZ< zvyD^qgt8!#Q)+^{0WI@)h;euDuzS+~{NoPH7>?FA2!I{E+#=5Ntl5zqJ_^U-{Kp-H z9EPAs(YKew6OLeRL+^~DIA+ip2y%=kNKhW8d%3-rlV}on|G&ML`+Ixe+a<63sVEpc zp=}MGX+k2J2h)uSluS}KSWHKFVG#V7t`YLQj2b;rmNq879I>_h{bB61k zo1Wq|Q9|pTHR>tPOu>GzQqJVgQKgh+t5nK=F;&^KT#>VUnkz8(JXhKFMAvP#XS%L* z=~P!>&be+-zW!v_C^yk~#Z2hqmYSCr#Yf2cl<_0qnc_^qPrMTnw^1fMa$1~#^S>QgN?-L!7`>nkTsYF!Im%$W;>Xs#9f_Y z8me?P(;!$j(=g>5G7X{Jf@x;rsKw?R4zd=GK+*lt$}mPWsT)`)H+n={8kHKslED|t z#!z5eV;BYGl93b;j=^lJE=Y~1Bw+QB3drnHRc+aDU?t)$1;Rq^i0(eN^5E@$##Ufk zbBZpOigp2!F;N$80WS$yZ@Mm)iFwtQEhg<^Q(-^992y&4&$Y);s=G6H8u%X!2wNMn z(=HdoAt(}d;&{GD@`pTo)vTfPcS8r?X^EPxM5Rke4mzPqjfDDqv2-gSYG2Mu0?5rp zBGYCd*(jTLWMxa)MgTcEMp3&yvq*FsZH~{oCoX*-la0+WepVaRuKp^i%`twpt*>&m zT`6^YKa-V^0x=YLLQtvJ%x|sE8@Z&+Yv#P3U-pzDpXS*e$*-=weh`j+)cUsOS&`6B zrF>lYllfw7q>O@_V8jYDM|~N6wv>20_Caui=jH7|n&(aKE&*}LG|AvfWHN#3`)4Lk zt3XJcF(2@(WXW_8ge{*A0?0ibM5a9*WP9!DAS+us9R!ebIw)$_pAHh;s_CEyiY{&R zK)nuTG3lhH*un8RNOpZW81_ffgN#nRT&O!Wl^D)~{=D^J9xojkq-5pDAW-JWU}kD$ zsDY`Gp~_Z`3<7113{$(&$Pl_U7PRxzPDu<=X)(JoBMyxBRj&?o2agYoZl!YP!?>TE zf^nbGJ=i(bKQGiz)xy5_m{Rf{#$<@ih(q?jd84iU!gzld{yV_`j1OGcFvzQ-f7ctR zUy6K=BLtYxBiBCu#PGNSN<;H01Ftdk)K;v*9D43J!_gQe;A7PB{;_nOUV}aMNIYRy zjvjyo4(WaS4!(e23VA4A!ovWp!1+SET#zm3r0LgvWi$n7PCGFZmDT;**ZvGDfm!nm zL*TfG(C%60G&mRn$$pVLe+Nyb=#lFn7~HY^_+S|V`Tp0GQqVz7i^2QIY%lS{Q?r&BHKg!5wOTz^qySoKw|zOHtfZJp4m)bt0Nujub$sjENG zcH^}Hs|-%?3(cU-FR5FoyyP(%ps|L9|*4@T&hZyu#q_z$>r-`6Dkow>cbAt`L0iN!Z+L3fH`RNnsfGio$vJ zf+AXDuP36SrOOG!I9C%%=lY9@K(^852nRb3M($e{&m%tr&dXmK+4wpf&NH$nXrh66 znq&6GGeVOmXqzN5H1Ei37)le#$((BquGtZi4b*9-Mxvm%6+4<2rZ^+Im3F<_DAvfl z3WG4q8BMv((^KI_-n549tu^&zFTgK z4%v5Gpk7mp9)It8kDU@n_@E^hG}7~IqF0Q^akpuCLVfR+C-l-N#IV@t5AYugm=vP* z6jc5)==+P9g3XUHFPsN-E-}BJMT@IznpOq3f8bl?S2f`vc!Mrq(%-_-2+nQgW<+!= z_AsOi_rCBe;oLXn+n0gY>t557FPnYonM*Mfjjc|}pZb@^H`{Zl^{Nee3$B&&I47J8 z`sA9=wS1kSo8x8k2hGZylj98CADJ`bjJ+TmOBNzux?TZ*bFm_-)?cX*%^J(p|KZne zD8H|O*8giCtJ!~Sl(rnEkK>?VSU*Yr@q6hNKrc{*1wHD}OBW?BbvC#_Qs{^7DMhRiJcV$6~x%5Q^8nbd4` zdg?UHNVF49%l0?Dg|kw03oV!=(S)p4JR>MRjg#wFVi`^qbF>qamF7(iG}LnZwlw}! zbFHSD&9s{+Y3?LGduJx1Zt+Zim{sbY5jlF`Po~4naW6F+4SF(3FlDf zrK`-fMQlko!<4hC!llAiLOCU_rg?p_s}OFq!6kW8ZMQ3B3TTw%49;@#g~*W{AU+Ky z5hJzrIRaT+q}T*-Atl4;_oQ!9;9uiAQjh_5TNGt0_= zF_n3=tmIKc2V(7;ZmS4uF-tyZ;hW@qV> zI*qlQNWjOx$x`ZBlZi+3iF|&N)S5mV!Gw`t=JgJdhw(84F0;2B@UV#Vk%FNyC6;7r4$$%OXLLu_HDm zW|G)~*tPO5C~1GsO-=7%Q=3+~Y&pyjpn+yW(hMQn#-W|GagbZ$W;PT#mh8Khd<75Fx{Gw^BL zE5Mi9_`q*`_-lMf2_$n;I%2U~Ixp5zJ}Im`ix`!vYE>z`HA+@-`m=I?WBgg|{khkw zRqIvT`!>h6|Y(^vCkBeXtC_LyzCV|YvBg>HoH}umZ%l&*&Y;-T` ziTc}ZPZ(GzK(sKa7Heh!3sAU@`DCN#SFsItM5E9L6ZG)%bP&em>4nbih}3X$Ww)qY zIW1n)x`c;{Mwf9k3IKi(p;H!b5hwZphF(C6%4Czhv42ZdDfp9%(yK}rcEimxv(KWd zgPiX1%LSW~+qIyh9T<4Bv8Pg0Lm!k!=x-2v=wyRUbz!7{#=a`vY`4yf4SuJtE2V>M ze>xq79QGudO|N}=+wtMjyY}PjAXXTte(cxoIqVwFo3*lRrZg|7iWd`dFM>y?)M^KN zmYU_XR~9R;TWp_Ix`{;MvP4?7(XF&!7i)=R^-w^iVE1(rX@aK`sU@R@iL7$F+3KC( z^dp}DiQIan-faIO$V@gHjTW3nRhZuHl#H)a>+1r({x!UpZ0G;ub~qc~Tl}x1!@ZRM zx95k?_rCf6_zHg+{y%U5k5$~Sr1OvJWEf7+N_ZG4L4)rmNi*n23-pVwCfeK6b{#|l z9^3vu)Q64^b9;HU0eB0XRFB!KJzq;%>4rNu+!;U)s31lep%hD38C}~|231|}oS}yX zwdR;L%4huwuu*x_DLPJAQh*>^vH|xEKoFVPfCqNfq~QGG0(@pyoeg+sSDg*`+yDf< zrCI8l!Tr@rBDZ?I`FJ`q5OnLUnkNzLgD&cgqgh~;1C@4`ET*SbqFw}! zeR8c~_M4tv4tP4~_{?RDDk`O3srxov1T^eke|~F#*1FYtrAHbmC&0AA2eIiCRx(xZ zVYzl9vC}RU%jLFg9QP*sBkj$NN=r=zwiFKbm0k1n-UdT0C_j zAr>q)tQ5=cu|b~b`S`S3BY0KER#ZBj%+c(97@O``ZGP`{+ZT&>Nadf+(^K?z28;Y_2WQV=^VW-ou)(wjsZ;41{pTQD z0`#PV*Cap{uVS73smJH740G_rbnPX`zUa0t1Q9PiyV8^sE7ZV>f@PEt-ZOJM!6@j@ zBjr-+*$Xqb77l}XI1Wm~E6P3GbLK8)YMIoz)qx&A+mjXPh0+m|$lZG(mIf*QuV&F= zn$R#CwX?QxI4X;o8B%AW+RO~8r4W&3h7_LEax+6pNourJN9A>;(d|&ib2CHg514Ue zW=MSjGk&l##M+A)FEEUNne|ps^*7NiC~XG85aU>p7ypF0qkovPfb@^v9SZx#gh>3+ z(EKHLyh||*d)(27ltxzG>qgZU><>6-8EzQR+$|VSVW;xad$-S~(`Z>2PL&~;jD*Mk z-W-jB35Rc|EszMxd;9JX!>jEwGBo+(7{1eY`y4>*b~qH@`^Gn!aAD#Bm%e2?{RcZ= zykHb_OkW9eO!;I?rp>s*sdXZoYAmp24xLbkw?H=UpYq;gZVKd43}b5QZGroST6TuP ztk|Ow)SSmyZ0t9<_xjL`$@WMg`nB3R24Z$Sv|K)>zA9DAZT!NJm70e9uJ`O9Z^b3v z4$J<*i~N`D#-GljF|-F7CnMCQM*B#QHi!7brv4&%$K~RKb|A??)TtD*>hH({O^oe;JU``?Ppx*4lC3gbmbW2|g zSmUtn%|LPnuXo8M)H$&h2=S6oq`U$C{?VNm8+p>idw_==uC!j_1p#Kn4&XQqj0QiJ zD>CVYN-%V9kdYoI(xZ7~yiZ6vv-=RtCc&t;2nWv&uz9F{*;i%O;%U4+!G7RH#TW@# z`7+YWQ)$MYVV+F@^(FS(omCh*t1w94dY-lcZ^?cuE30yu($Oi-C3MT0dAE9eQyzoc9o4FY!_x@~-{aAS;i`@tI>*$;@0T3oPFYZl@t|I&KvsbSjrZ zu?mPV!Sq{=DGTTeJsQ!o)>LZs#O**mC(sevLyu%oe3E?*6=dgP*%oz$nQxZO&c(7I z4Ju4{hv~M;X6IsAm`zK{X6B|D*65a1v(5m`ns^3Ca_*V^pPYUs5i4e(0h&1ptu}2k z4^8BEn2L*;JrzmQwK!K?5nE|EC9u4eh}^9btyRd}h8b=Xu_}YlTH-ERegju^p^*9p zPBFii^yOluR5n0Y^2Z`2o6YuQ^2cJOgf>7|^T%RCIc*}}m_Ne7IvSSV$;Hz!;onfJ zFBT_M2PsX&Rzjwsm-TFmS95D2cY9ssidL~e)oF#wImrR94pQS>U21>I5SgP|-N5=( zpjthK`mW42D}U{e7TPbHRB8rE3pDc zXI;Sy`!$5V8eqj&n5br41MTe4v9_`TeSxN-s5+-t5~E%%>SRXjllyf0ll4t~M2Z@yzsb^nslPkOe{tiu z+6-)k{C~c`zn7B#d;8zwzkiLtt>r(DK3%7!@8Apol*tI-zeoaf(PTj1bRF(xtRnLI zU+qtvr^A>YjP#B~J(Nqt19>53{vez=4`Qsw87DF1v&}l)6R!{qmtn~TCVQ`9*0RpZ zB4L-UEfU7Hx~LYp))z&{8Y_&1UAo5TmTkJqDD)feUz3(1Ycoscd8Ic}?qf0!Qat#N z1~d6ihL+fZCGAw>1&?$&Kz2>SAOwx~-gtXi*(bGT>6N#iMys9YxQbDf$|e*BAoO`3%~$C z{cCifUML-5SMW3 z_R%^HY-8Ka$y0}Bo0BIwIhvxa#$;jYxt1ce!N6BZCX^BhZnnb)uQRO>ZrOyweAiU! zGH0bH5mmg#^g+0#6Ng){>69U~-*$cfqJMYT|FJdV8n1v>y#M*(;P8j!{_p7M`M2}G zukp9_{x9~cIuvEnjAx{$*7=-13L*2q;`;fMWSwSzAh53Q^>)mph-DZM6yFRU!qqGer2R$fv0mV&%z zc5TI4^{jCy${pF&RXPnl82blVXTo^un|afSf9~5xQgzH5N9nE8Wp~AY8P}1Dc~j<5 zj$6r$Ye^#tKz0U1`b(s~SmGEK)YGi5g>dMIHuMwP9y7(<|Jb1|lOBU>>-xYg!Lz6;vw z(YKkwy`!HWMWWj)L{mQTB}}U0EiU}q^&#OShb#I(IHl^qbwrC3WjT! zIu}ks7JF~WV`I75=<@SAZv1}w6j>-Zjx#6xOB^Me_mOfBZJ6gKRws2#C3D?nrt~lFbh>R69 z>r6`!u-+=V>MTpPW{Z_{>oY7+qYOEleJ!uTpDW)?JL7PYO!05sDwb5<*S@H)hZAE8 z7`98dj%0UliaOU}4gtE1I|PV}J!Iot{2_^0gFyu7QVvmV+LT2k@{M_fo(79GSa{3# zAgwp?$HBWJ@p{YfsE^%D03U+Sy-`3OEy)q(#Exxj;sQ|9&%J*5g>`F|fzJliibCN? zoP1;2tKf4jQ1R$Q3W<&^$$@xRu|<)eM2Et$yQ=5ui+mQFV3E|r8}2^Dk1wxel5*${ z=>^d)cGnJUaYQeLM2=|POAp3W#F%mL5*D$_Kmka7af~U{(D(WY7W|vpDQ>>HOnFMj zKCykJGvS=0Tcop(4v&vsychn|58aIT$m(k4PhDboajdG<6#*PfOw3P=e+N!Z z7l4{4eNp5NtWW0^F7|g%0MDEPT_nLhEmlkntaY8qLDX$NL9m!>k`#G#k`o1!f8WWX zdTLdv7p^Jx!@-7AjJx+wKFxkOSQCTnyd)0jmOD*VbUSdjsk+ug4f{8nPt)Wq#Y4j_ z7O86K^%lz(*0$E{M5?x!olwj>Ge^c#_OraX$YaVp_Ih0Pu=fI381_Lzm7;RhlvRLPlT!gCXQ%FnDGXw&0A0nKJ#<)%qn25EG5eRg}If7`@ z<_8IkeB z;%>bO(1&bzNfEV1pQW$esUOE4RJQB+F~;4x!dILz=n9vgz4>+Ev8#eY7VFv7e={%n z!~V9g|A=OTV789mSNXT<{ny?>%Kqco58wR1ew9CE|G|T68G(Q<77fD5)l&|T`|tsz zt+Wjyn-TQH0~jX$JiL*Y0x!MEsL-GkjLNsUNH#bBEfY% zk0ztsjWF`VsLO_)PH)PSy859G?5ofjQGKb=jRJcVDj2O|TTc;XZu&~#VeK_VH?AI+BE{=U-R7V;m}al9K^ zdkI(}{|^rKQ}2Hd4}UoLCjY;}-!l0RIxR^5SbF_#iE&588Fs(H1T?2jam~7oLf`}f z#bayYknkC3h%Yxpg=HRE?jywnF8mkls1k*|hgx00oNk1!d2+Y(VX8Vn*{#X9ob&6x z<>OH#?rA55_zgG#8R8@z1Th;L2p!SnZu8z>UV3}qRE|IB?+)w#+5tdTtpCpr57O~J ze!zdfMhARb|1;PB;h187#Ghk)$hq$J4}hYPKe;MIv#Y1KPoebF#U#9asP=L-fIJK4 za^1|4V`WUtdpVi7>jkqJx+&E1V*26g94Z?H1s4M2VD#F1%z*igtGe{#0Jn9d!C*Lm z7&occgUJ$3<%(0@tkB-4=auudXE*N=7JdaQ`R{Yfln zH4elz&13X>3zgtiB!CvE-$>45-|;8m+380U=sgTwhKtD#2362a0rV|@76 zbh?!?7dP8M^^xt|vX)S7QA;K-4MnMJonO@A~wa&lVMU9 zD#-A|+{1EkgE0d?!KCIl>E8DPI^7*ci^<^Ot}$MEemUw!eU*hoL2|xqDNHnDme3>< zgF)K@H5iNsTOI>B{cB1v#)DiWZqi1undp_oVQ9ANVQ~Mx1)YEu>l7Z#y zqS!7=G^{0Wj^wo1>Go=s;%h~aR+l%&hCEj(btNjTFmH|uXlggAjWdZ$>CBs>x@c5O z*v!*fv#C0amFKOR`1Y4#yCv}`9eR6Iy*JgW{{5Z* z?;jmJ-%p?aAAa-y^ELj~(ErB%{MvpAdR}alYZVppf?htVR1h>GUJSl>JmtTAm0hZJ zilr_WvP&qCcC*=4cqN9@2RkxkHO8m_q1NEHi}@5?^=d;=VPH7004jn?1K^p8O7}Ce zxE*^=XoKEk%A+q8kWL)d@DY;EHxJ5u*~1=BAFs$iyb$u@IO>P~JQ(m&?34bvi^#5h zEP74qEa)$|_yRf#w&!~sQn}!DuLBR+Q(%lhnehg^w8z)cVl-e(undXfFICrLR~L*n zGu`^I4s~VL*Pt`-><$SrFQHqE(Ylrv!I6!(lQXpLizXu-uRZtCsL*+ICUh3mS2|Nj zoP)yhtD@%^RFz$i>4D#%YcVDKn`uCpFQCPIEU03#2-KJRSPlM5)`F9H%gJ-uvk%55a!(WHOdE(F0T+({eoG>ar`xHSDUI z>|>Puqns@9NU$@?puG3@zhi~6m^_U3VOyolXt;L2oI5rMAC($H$ zXoHAZX+i;JG^I)aB43(N$ld@l2!{S*G{+ok06>jQbzWWFcGxjREST&VlE7Xto^#RJ4;CV==iFhcbdNk$Sy&k7OJhY5?~$TH@@P$)2@B$J?Jh~_c~CLTYJ8&EJ%gjQlx zTmh)6v{*4^=!uUG;I(PX3++&;?oYjUNvZ!nVcW$NKUUS`J%^|^Cd?xizy=9RP+0=r zK=N>kFufrFJ(OJvM3XefT~pW>JvqPjVd$gThuHhaLU4xe5_w4yM!!$zG=fhEp5v{q zDR3WCrADvdH!_;A5HApgg|_vnB7&i{ScHK(B( z4XEfI#+0yR4<}^HfjpmI@;LTKurd!9BXcNqeDauf$GEJ)B>oUgVjfH^?H8F_zr#+VbhhnFj#j+=CE_(<>D%716B@aL4V%*Fn72wg24x3Tw{+k8l4B9sgc)1 zFUUSN#-8bu?68MPW;>2S)G!!OETI@o(|atE(gP0U+~FLtcww!?jAf z5M(Qq>FhJ#un*L1w3v>y|Puo=b9?Vx=`0%uLmMB~#a7r&KDTk*O}` zNwQ2LRgj_Fw^c^pqxbe}BZ?7}1=0{HGNQiw8JrS^H;va?_k%)&k& zv=9>GxP;?xGryp(N8CsC7c<w$BLsGbgYxE9+Iy=Y2k*&2s_Ct4>4J7#YH{O#ca=)t=W+F|Hzw6N#w^_${zevQTEcoeZiTb+dS&>tnY9#9mC1lmyAR>1UW zH`5O;9_%RZl;-@4%>*TBOx+5!sel&oI2xl!oU!3Wc)7qQ6qvi~!EY~KOzGlDoFc;Z zCJ4rK(C95L!;gz_9xY;X3iqjbk3~DTSOT~YQkuMMIDb`2bv^as)GU|NjEK?8hfLrq z^tYOF{3)x_DbUIKgR0b@a!RJA3w3~d&M*&H6Ni#AXAcmdPHeJfkLd8bPa%P5$vo;& z(;xm@UCDpdzisdT*EatAk5%{ohX;pyhbjBd{iA2!?*G5S-x~M-Ve~YN7W0s7J7JRI z4c0^RdC0w*h~klKvs>{{R8WwNkXH#%sQW&s()idI{)xp#o!C$T$4V;FiA72#?s^kW zN*xCB5eEt%H0&H1>a<4}aeE>|oPzD*qi8-+gP+cWEd-zGW2{~Ikpk-L^Q&F?VFEqa z8HqDJG$kbZ<*^ZD;b9%5CoU}|806+3>|FU%qwJYKeXyfw&MvIZnE=B-_>@i~;WMWP zw8kT`&>J`abc-p;{kym4J$mGcviOC|j_NosvtkLM-bPR>B?37HndRkCr7Er)tBA0M zY-JBiK#I{v|^AKQRn^!Xmhy^R#@yQmmfJKjHyOr&DL0jt9mf zS!2>d3$o~RTK_?BQQi8en(9_3%w`^Av}O+G%X4k<_YZj(ZJyy{t|<$3t|Zgo7R)sU z1anOhsdHsnW4xrsD($dvYxD_rpV*xNPDOc&iq;pndxEtGkI=C|1vVKlW$64dI`;l& zF7NPBh5n9y{tvG&61C7|#aSLbBXB-gu;KH+KY`{Oi1moQE>Lzo8id2o`oTiEQu`Sl zH`A?sn)=c;8E;bq`utlqAcPJWp%KV3!bKTLJMR}wBR6pBi zY&05Xkw00JQiHcn^D@S-QF*g${KySUU$k~6K4f#}(b^0sizZraHkI3Gj+&@^qhYhk z{3)7}8m+aOWe*pKwDgF{M1CbyYFCQg%5O$WyV9x^OBK3QPW47{FyNl>2ZL>T0gI(Y z9$?*Qv=sdBOIvCPR?>M7-CucIs@Z*?qQ$JEKOXFgXY!!ci@E3^FY^tVMqpA=EWOI> zXKQ@qqTa2ECuNT&qe8b|kFQWKVb|@jYC_^^v0klF07+~}br`Z?t#BxUPk)r%Y#t$` zwJkpj;x9gNWy@Pm=dWF1pO|>8#xA9<$!ZYRJ38)+CjUA2E_pk5xd=yew~5R!3;69l z{+8E!B1RIbRLNdxak(5&Bn9D*S#QVGyD?NBdmBBiGcZVwNLKGX zp6F*%Jh&O`VD}%t3~bNo{TL2usn~l}ZIpL$DE~W{McrUF4kvi8#LQpdb2az_OdJp} z)=vy=M9o&W+H7>_)fj>cLtiFKaaImbmh;N)myGJr7I)qsiybC%8m89$DfOtb8)T+p zG?YjjMOK7kR7p9G8NPoN_zQR)LH~hT z7AB=_-u)7gG$n8X%1jAd6T39d6`M555he;Ui$8Tcak%X!c27=wtzx?ljl}YH6Oqj| zsovjT3PXq7{!c%lp)w7^Qq*mbYe$E~L>E+)0F35~=TW*QWmB<5ZLMY1sZLx{rQGH% zujS;T-RY`Io*fvKNCOaA2{Xz0{4&WTkaRYRE)|nV^G!K&;@e;$Wykr_7!#Q&;KVJx zgy2u!kRkli6#&hT0 zlU}t^?K)WwNL^a6Ty0lM-QLf&O2buNboemtr+OUHn#Q!u>Z>(HLRQtZM^Dzx2ZE+h zsHp=QF^T1o+lmQJ=5s0|iUq}Z?52|G2#(vRPKi`AWr~3KFL^S<+2Y{s4!w{%vZDhJ zyC*Q8dIGcbft)cGB1MAK^r4(?xd{NxvN4$F2oHF&Co03q{@ZV!jo(a^I9E#rSgI@a zUa8q`^AT&ZOTOrCSxk*y;g59RECi!y7<_Gd>0gE;3oZp(pQbw6Je8{Lcg@(KlB zRi$Q-RlL!r7-x;*Nv*QH3bvpT8wcGYX^6E}i%u>|uPWV6uhu+UUYWq^>cW&A*IG5h zm~m6P=P-@Vo3-)^CQa0G=fT`+7_G@+S>~-(Cn{^z;+iaESCBPROw+oxXgH;wubftE zHQb69e_1_qj5@N&Fzp-HC!@87bV^{)B0w50u3ve*_?9?ub@c*wR@J60<@(i^E2qVa zT6awnj5;(K#yeX>%|wSXU-+6%rdmFP^jU?-ww%#napM%QhK?1cP{-mfRX)1|K)Q95_;Z$-h-9GY( zta{BIGeUEuA3dUIGNR8hHO%nsWv~RF&|^~w%<$+CiqJ&@ADxFXap^Bfb`U2r$J-1oOixNwj)~PNyEmW%z0qef2nSK% zeVX~xDLoIH;-GJaU8;xE{)SdupSQz^Ps?czVO4%76QO!HMV{u5}>O^s; znPXg94gguk{ibo-DKit-o5>qb38rrB^!1(2;#*2}W2rLCOG^9J($PZWa*-M;?oIip zM)&iGLWuHE6vUxNqSap zD|ABk%4E!L_B-?-OPx_hJ4!3GoGJ-@LK*HDE|z2#+wEv~OER6zc9iEOkxEuO2_H;S zXVFGGrcWl3D{XdGY|f|=?;xGyq#Es`CgP~+6n|RpdCzIxj)=~x7G~mgg+;k_#bs9z~DKLYygiTe7JYlD@l00D? zlR;kFdWe@vUfX(omnLudw6#v9?sxf~Uk=R~j;^roi*uEw?6NKvw!f*~1-eYj-lM~u zWf`nslqsqOXBh`8Scjw}5BndglZ!a$ z3vZ9;)vb?_F;4ydJeujm>;Kj79A%=6K@@_DQo=$xx)ikpGe35R8RQR6!%>iXh!L;) z_<;TClpH-hTq2CAg)oQaWNI%1uysI?&2#drI}691DZUXBmqDaU=S5UDx?~F`IYN^6 ze)66r(PK}*S`mBip1qfT?dSkYPaVp}V&q*!G)%nR=Vb?niR*Y5zTfrGx%jh#rI&^e z;F|K^fPe$rCh;l$LF@|aoL9mjJ<4jUEV<2{{TqG zK@NXyfVBUCI3NQlQ2J`lShpb68VZf}gXjT3`(Y!z9~kk|EW{)(bB0q&^nXOl!MZij z8wsG?>>s9-5#`;}MUx<2o!dn4qw*vz1{Vop(uf}`$_PjPsYPhsd$NR5Mbld-NrPw+ z6~mgnj23f-K6a3XPVi;rh|3fT;;G5Mw`-v-{Qt}bV;|lBd|1~9(5m=9htHlT{r?>8 z9ej)b^ELjK`TrpYlIX1mghhm}GM{qP_=nmz5EQ#7r$1;1#6HA~s5!I)h_8KN`zB&* zOg^xKSax*R26ohiwYxhGTa$Jh+3?4Kku1Hw?wp3R@h7NB-h;^WMl=Y{7U3WX-}xL@ z$Ix{$&k6#B1li$#aMsAEJdQxwvK2-HxItF)l(f9!pq9~T7>owF{wRc6Xir3si=!$2 zo5%kc!ZK&V{qz$m_3d&UcBeHo`0JHw)k>q=>zr3lyBMP;nrh+9;^^gR9Qf$G%QMEafJ3)* z#AwTi$_igW`WsZ86tD?la}q#dIcz!WFh2KKrW+=i4|a&9fj*h}E8idc;w27u6F%{x zBzg3XDnA3U%^$wUq{VSZ7_Z?#@8VuU9=NHS^dWLnxAr>6<@3g+k}PQLt_7czE3bRS zZnxdTAJs;=@|O02xF6x!Cg&Jz8C-eh ztst;btn;C!QJyBhGQ#5nw>|F|J4u+`Wnnyh(|cWMcdE@s5@%9yY=yqjELVDG7uB-r zQDcJLPlxh!N%V&lZZEUu_%fn9zjS)ldhsklxtJvPO1!|Cq~8+4&NdhYg?)Vv?}oqk z4)fZn7H(lXX#YC(2hwlyj+lXkP7r*^@d3%<6D<7wA#T=VNG`Ec^3>VJBMRVVovWdA z!1;ZKr~e=qvOEDykVBb)GUdgZ*2^$jD+2zS#>&e~lSh&Q%yY}R@zS#c+u&Fk5?izK zCAZxyrMoeGcw~pNZ5zw$_cvA$Tf~}AjYDVYIG9ct*6{$Ly4rRCfp05C2c3MTR-$Qh zEF%1&N<&RXw?NWF()Xqj*<4GPDADCV0#FFTA!4I85j=J<(YVWo+MmKWP)L|~Gz=3@ z1#BvEtC=kQ{=tDF|EFrB`5a>7_M*8E=uAkMW9{{G{NQ@R>p?Ck+BmjDpuzvj?MY#EX6(4c_oU z|4j6!>SyO$6{*D1!`1Ji(Vzz(R3-iAJN)ne*c>M)j@J6rK4@*-KPjr|Wnj@8#)STg0^PNB7!i-Z2lU3os0)YI@a8L7Vxr!$!vCFuHj z`^gTgyGT!h96Ti_PWbD79=$eBKO-^B8(i^v^`fGfU2S4Y8taB$RA6H3?mkfCWPQ2PZFF?>cT_udm*0=diTLuS3gaB)yrG|bCGGOz!`*~y0rEo2 z1X4FVG=*b_-W~!6sL|)Qio&fHO_&(3qqqlgV6n$RCSLNhMM5N2T>=pdjY~9(sCe$r z7Z}JmAx}MG5@Wq40lQkRa=r8-l3VqkdQnL?Czrv&j-|v^_+PWDl8ero-FCON24?4W zy3hu1GFR_vaDK>5jkruj+;7`%{$_(S7TRQ%#34k?|0Q^;+82{#}?()8*B#7C794rxab2yeO zq}d44!sMT{pWNbOy*{H=R@=F`xnFhIO1ri@i=^#U;5D>Yheon16supUBfezlmEu_8 zZl?-3Ao1zIn=S-n5eJEL5a{O!_S(>190UwPt$D71P6lYVJz!Tvm$*guqA6%E!*GNF z!Q=icoT3qez>>s(r90s`9QiZXmI!|^qkT7t9h*WRJGJ{64%B7udRsz?1dF;hg#Sc+ zleJ4+x1auyJ>uruJDA?KOA^`=c*szrx=(_y1_| zxnATS{#$YXzqkMVhvfbLvmbu=;oJTHSNK~a{tw;p8{vNVzP{6s@VYrh$rwx)V}09A z`yG$C#ETJ1Tyb*=-k{4k*0=NXXnH#GF_`UKq?SSApdVuj{v*AQpoC+uFFCr`#(1Zw z@8qmU1P^v9lfKy6$WtQLs2}Vk;==*x$Av%28MWoT%P1PDSgU}_pV}0NNM-j~Kh>gZ z#`TMO&N3d5-miJ;35x;lU>$5;I#ThNzN${3Z|;8jqo2@%SOx!nj925;7KnWSob_cg zr#{#@`{X5)>addtTmJmo18wIqj^uSTMNcaac4+nKM2j@U4PeGwT__uF(tr)AlqULCk=*-PfkCfX!pWGT^!uhJ01NE+&B`E5b;}i zb)Ru}JEIH+BMejsi{QKWocOEWcg_l`pN#D%mrzf~>2uc#Q}|H%G5Q{_ux5rQ_PpHJ z0&dX}hU&ZqYAB)53JiqQ3r2CU8IqWgNCbi^F&di@#f20~{xq@jSZ;=t$|#&X(-`F% zg<%?~qVPMPcMs~{*B{ffPYR(%uyM~DSk6AJ-yE7msw8>}qm&%^d|RVDOUm}-9FJ^&hPON0@w@5mb-o;-q7{RL8jzs{uo9pKVd9y3%ld2k#>@A_UcNE5 z-#x67lhi6Xx$`PH*>shB6NFdSbJb29vcK-HxumF-Y$8^&4VSS=av8hZVl?qAZjeio zm6%wVCMy;u?hqwfW0~q)KC*=EBufw`nFz$!WR)PCxCP-PB?u==1R+h~t$~Eo$-c1@+l9Qz zfstT!5CKD*2*&6fB1p&s2_w3JKwqYg*>!i0_jkP>J%NORg}NVqpr_~*OX@&p9oSg{ z&6uhhA0YEk`D&}6+I0Y5|0XAD|6G6Dp8wrn{O_Y5et342ivNA^?A!aFukp9V`QJ9- zzB7R)@yeG$eAZ9OD&JSe5jhDZ=h~tk#g4{<@=mGQqUV5Uw_g#*k1AYT&(4WnM}j@c3v@936*VzvZ5Z+5y%Krvf_HkxnFEA2`asK~~yQ4NL6(`v0-Y4=*~X17^t z)`THEKA^{!KDmAGuU;6D-IfL>gl0nbm&A9oV}4evr{-tV{w!k?4CL*S`FZxnLX4h= z%!KnMd&#kyby_Q)^_mUY&E{dT>XpWM?^M8u0xk3>)`3A?Qb55-zXJ0>=#d_3`g&Id ztK_f4W6z)jG|6M{VKhOed-!G7$X7@iWQs1#$WjBK)Wch)uMWkTcV6u*_~v{jf<($x zWtKl5YCT7jEA$;K^9Z+x^I>6VTAmF>ql89HpNOjvr>x2-&$UA}lx&MwWuq^%#a=a^ zy~A1?)x%ey4Jx&zKd*=Otsl+QE@>pUy3UTOvxfrIs z7Yz!66ybCPArV1m4l)*txZR~W>&d!Cu*qg9U5BIqBh2rvuEeq5jSZV$X&bi3mbMak zUi)hq8NOO%IfMJi#P zO_epW1~s^+0)&zAx%O^JO=;eBuA0mNvw*lN)0c4eY^c5IUNjo$0ir~4njP`HMlj*D__!B8CuuAsVqudexTbH(0{6>J`@IG-l#rl)c{5dXk?>f6xH(7{9 zLhF*#b}wuup@XFoI{4irbYkR$Y&I^ool=?eSIXmH19=>5B9DWu<#Dp)hVnSLn>-E@ z@;JB$d5rcPm9ry^E{m>#&?UOC*?`ofj3%Q`b?Dv+uEu1g@b0}hmN)rAm0w$IV+lav z!th5(ZRiF<>QM z-oe(G30}DxpsR{>|9jVd?7<%AGyI1m-*}1}v|Q`7&lAf@Du2~-LX|ld65a`+d8{z2 z2@1${um}_+ze(#^wazF;(d$gYaMs0BOV=6GS0@ANO41blv1?AM@0YGQ*&X6qa)PU+ ztB&dbW+<-Ci#gT11cv_P&jzuVW4|X9yBhF^lRjF+U;UpwWLPxN9r+X!mC6+i!I!A! zM@aprD6>|HNPjL zzMW#9PAsz4OO)p{F;HHH6J)xh-UzGejXs&ya=3ER9~78VVmP2zBOqc5U3y}MzslVs zbbf^XZH%k(>g0%1R04FOUd5Z{S8@T@?cQh==Z;A7wux-ng1#!)omyF!`$S$UkyiwI z%Z~FVU#1%4T`YB_Z^R;5TxMn&%S4M(3u9+? zZH1hBzoc3~xxCJ1Ejk(ln^ejvvGbXY80&fQgCvrp6qG>$Er$>R3%4CYS}+p zUd_?+YO2*!Sxq>+Yu^E~<+U|cZOyya*0gG~gsDTNFz5O*MJu7~EuFKoAWmsfFI>tI z1zviQM`<|{%CHN@R-nv@=W=#{1rD)*aCso7x-jcmGNDMI%&y%kB~DLEkzC)Cjuc)g zwKCmW1ho~**|ktD-N3HCVa<}ORVo)_26TM%vXhRCMLb5CUzYTg5Cp$wwd=)_c4gG*vEU1ULXL@r;u9}3jEOev8oM0=;GmT+*xiGh9 zHbUABhT>^(wFRYpK#2iB^DEdg!5>)j9T|jV>sI}Eu(x4H9%Zq)S{?4#7Lwdwfz_d& zbr~JjqdT#A^D8x}xqg$H>ov)Y*0*9MbM25(WpwV4Q=5XkfY#ep(sQl-r_bsm8#yup zB7oN#wds^gPyWGrB6VfGysMy-7(?i-CD&Hso?IV#VjIpfX*KGjwNW2w)JN;!R#VS% zY{w46I5s)Y1@}U{lAsU@iC&a5%6Q|kW_fIo89tr7bx@Cq-+)V=3{W!vq*UDTQX2lCl%`CrzM^!tOEJpl{m{i#0o;$>g)KW>9C>H zt`xf!?>958^0rj7Q;MZmOC3Q7D?0riXqWBA^l|p}|DU}#?{C{k5{CC*@lzn0Hwo!b zv@Xkz5@mn1Bs<*5l2(#qXT4qzM1m5=B*6hd9pm`<>~CFt;UXwIp6skR6PX0MtE;Q4 ztE;Q4syl=fqsj=jJ1_={Y7L zFpe4g?D=)>krhIk)d(zm2A*O^Lyy~PdjPwQaf|?u()(bt=<@&pEX(QhkUT|k7*^KU zJQ=5a9mAWq+(-Py+b+|$uQJF<-z@EVkfaBg5R)QlOd%(n2J_(I(|3G@HD6rL64-%V5OkOq);TsN|*52Y6 zAF$g+*Y>+1UErnmz`)6;>mnE1v#k373m~#dF21 z4Qjp6&P3f2!?*>k!>65WKUxq|J_p5+3XN?6)g;F9k0lzRQcN=xvsPP4+@B*{FbTpu zmNZbx*f5D^aX-j$A1t6b1_S|`;XOUIbvq)};CD`{8C>#GO_kp<#3&SL#pNt{hIdp0 zzOdgKlh@QN!6>B|gFESfo~k93EUBNu#tMoYpX@)Q7@37fQ);$VcXMM3%bGQ$7uRz} z^!fGN0o5?d#`D5YgKPg5aH4^2f9lAp24!F`u5;t6QOXail-|+gC>+$HQlGFyJqNY> zRrj~H;A#yDWsG5wpU)a2B1-Z_eiZZ4J80$7mr+L*#yo8 z-G&}g9;v*NGG`ogos5q1hiNHlNbEJ&AYrYzg==nR)m6Y2CvHYzafp~xSSnPOIZBIy zW@{{WLAOY2$Qv%A`*_D&f3(Hqq0NRkPpJ@JI;(>%$LTR%ZoE`-14qHRr@4c}YL2P3 zX#WTYybU9}U^)ns+_&3Oc4vzeI#-om?CKoY7xYE}x|1G$e9}8Q>7D&1UHWK`Rg`Gl zsCSqi%k5i~Wa{YjTy{m1!ON+w9%q}yEvD11>^bd*;Ze(Y!jFSA4*MDF1F4-ydq>+| zGMiG+K3x|8%glu-QjJE&MdZArCQw{%?Rcf&)4wQEcW6$Qo;mdahCMC9zBo%D83DN?LuR74qLb6cCh zrP<0(tAhcFNI`VI$irHKC^DuBiFZgMf!S0*=P0mPm!8Rcr3y&_UY=WSDrP9xDsjbC zh_YGFRI$*++0mqdq))kg@d~{OTa_0Yafj^OT`uay!*$eq#sgmO>NvLJ7H4_K_AzFj zZz1t1KpribYC}1xZIZ_OLH+u@qf1!~faGEyuDXH6fuaDk{&c;~nd=wrIa!SH;WKJZZ08Mi?V;nZZWV*w92KM) ztl4hc^^~AzZMEJSd%s5XnRHR6TieE@?KufNa->&v>kNUR<#h^F5+x_i(#GR%TfB zZqE#=dX%S@7HK&@ad8sKdWlQg4iK7Ixd#u>G=`c1Uo)xiZx{zjg4y;$zI}*G+pBtB zgqlk_b4&D`RcT%X<@gOQFm!pR$_!JyZn94L(Ojy>N;Ux1+A0emo#C#jH-~g4pv4{q zpV<}@dM&BtIr_AzS3Q1rD{#%bTY-ua#dBXpdC zl!S-+_(IX}Q$t9zHh5x7b)S(k)2vZRi^sEXWs0Ybxi^pm%iu@Z|aVIKpim?J_$5O!?)8R_JGL(t!>zHMZWMJxv- z?;D*^S1{-uBd?e~$SD^JnQfxuZg1}de>D|5iT_Be?LB#by|VhR4#AX6aY?R%F|$ir z-LOm-TF-&j`&4ksRBFLAw-4M2qKOo?Rjs?h(uQ|}M>h%UgH6id0P>SB_%$Na&OWHl zw`>V&Se0)E_I~8{&=)Hj8t^WwlHN*xDigP8Hsyobte6(q)}6#TT!>7U=KL0gb@tqB zQDj0)xsT_@7HI^cWpT*0ET_Wi1Xv#-d-s2C9oEYd+`!}kV7T{kC~3S%>VJ4E}^T22M0 zu+l>9SxTj(Lt63FFR(r5rF2vBF=Yhc+E%s}NWpc9#202%S6Epihrn$1DNcf@yQKz> z0DZ_0RiK8-?%G|)O8%h{lPd?jz$T-B2uU>a%r2b76#YpztjozSupMG+_^BbYk34Mx z+)MnV3C`f{18jHY;0klagfVpF)er5LW3~TRLIO zXRC5VSZtma(&M99;ho7@IWr5UW!ap}OvsF0z^7wWP#?&ZE+HAgSv2P5U95BPrbmb# z=H$GCI~|qE^fc$QMe312%O>f_g5!fv2cjIiegaUnyLP~uYoitbtoiPv;~jSgNxHZg zb!BKqfX?3ieqvb|({GdB!n1*8uK!2l!AIJj`o@peZM@EFeGZwJvN_?8<;@lw2K>LuL%l-SIY zK^m_npnx@gT(Pgxli+?`NIQ)U}HhVa7)@>dd&BS9o@pr5lO zAkTq(^;hszK-gD8=fIm>m4}*=ba%2#nZ^+3R&QMmU_X2EP-i+Fs5;I6%J^6P|8hzWD{T<4Z`6qam0CW>0gCW4D)6d$1usz zUjtqs5W^+n=_61Fo)5SL7^}^9mD7m!rI&?#WA$Q@3D(wF7mkA)5-UYJW=O0M)(Jx2 z-fQIKe!&xxj=C7l@JTLzou*S$z0O(+>)tqlC9O zu}!`e4cGlr`RdrJ zf6_VS)%EWM3V$|&5&rKIVh{|27+qo#T+)<}t8zQX#5bVqwoO|nK|g>^U$b-%56_r) zTx$+JLsoK5kqA56B!aDVj>CbZHHUA%1o0%O1>Cm6zltNgnHLBHy+aRe0QvO*`f&pa zJ*@wnM@hBTcG|MH%(;W=D%FY4^Ey8V{va?HL95|Eeg1Cm=x|@-Y#+9NtW$gc{ERL54w@>R~7*QFDc*N6P_V#@)8( zRVbYuQKL(EZVpD8>q^@P(ddfB4}ALV3`d&_Y_r&PEGkVa<2`SY=imQ#=ldUL6Ya`4 z?-t1F`yW?V*EiR*_djlJY(Bof|M3faKy&);d=`#C*3lJ;jYjT9$OZ3%vu?`1>pgG| zh<`SP{fZkFqg>XY~Ae1pCQ+ zaden+KjzNu#u6IZ%HKX4Mb`x&d*KkbTh?QBo##>Mo734837hnW7qG-mHFom&I1Yy4 z4VnhIg~?SAJD90mxsum74u#ojt%z%ra&$^V2pZ`&Tb930JS!b+tUZD7J0(zxRpcid z0?-P{+`+p3cnU)06aY*fP(g#pH~5>p2we)G-^j{Z+j^mCuq`hXR@;UQ`~n$f z+jBnZMN<3%nWOLp4sp?oe~HEEj`Dwz>%Zs7|FzAv_5A(ctLyjr-0x=kfPUE>HWnlMN8tR>}NkBTnLH_ZYJt@|lG0bd7|Es@qW0 zke@Oe)+WCy{RbeE9fJzQ>LpyvjzK*Nvx(Gw%P5qkQnXNW%yW`ZGkb(6rn=tY{#hfJ zjezmT0Ht?NkB-hVQQOYV@-Gj2zwV!$?l)?rrYO#o$L}!MKKOg*5VK2O4q`hf&dE_) zlmQ`^bx(r#QMnY6p{j6f`tLigL~&|7)7fWCOPQlrt6a;es}pu`Jc)VqqfX&bkPt%` zv!c^YUPU>kE=?z?8_y(@lt-1hBvqM3Qb`ujBby=2G)=}cD@UZ|g4QTcD(S`**u2Wt zF)Lf7X=+|xNvGuJOe@(iLtrJwQ$v7ZSMCthBp_F8iNV~^P`NrePqLnUpF4YA68AG~ zgXrbi2A(=>!}XLWRZ*(Fd1Gy*(KA$;mvGN1`3YlPlrgV33x$=Fy)6HPJjV>|^COB3 zPnm=`J9p2BV*_esPiCCHqdVwHSppmcL!0VP#RY-X!sFSi7u}Ozim*sN2Np?vEKUos zpnd$OVu3*FVR3NuDvtx3Ej}Szk_J)>iL;l7?|OR$Xk>F$-4zq-)~q?0SUIN{5wo`1 zskBHKC5Bell{|Eioxr>KG;9hd9w--R%V^ghps?e5ZT_d z=O;%mk1bSfB}=SRun;XT=j2`y++Oe5VfV$p&K_ukX=OO;Xkq9_MbM9mp_6s*r=7f7 zNwDxzzjx1%&W`TR(AYpNe#U03oKK&c1qj-vv^eMtkVvMGxyf+Ueh4d>-5Dja$!4#i zy-1bUs#~%3neobQ)av0_&jmHRXG7NqdzWlHQWr^9^2wP>ULGvqH#s+4nf)7upP5pt zd1a0HC#9SUv1$f8R^{*^QmEdI~8+7>132B-ZFb>A92st+J=7$}NPVR&qoBB@Zv5k=q z1=O3%&xTP^Aao6kSQoUAB31OxBxj}00hfFNI97~ojv&R1cS1J6t<8D>WsS5Ts&#fp zj%BiNwhM@fmxE;?ALSq)eJ03x2&n5-!O>{E^V zPu7{zk<;_7mYbj27=Xr0E2Jz6> zRd~DBSlW%E_n`&n&H7t;_0j57u`5eKpR67!zZEg&pQe5qc>3pAI1Xa-^CUfb)mYlUnT9A_72YTRISXci>BpCmS^k4O0icD1lDKHGK_67kHdfttvb9H@)~)d!6n^5CRWrV@ z?AjA-pC)$VK+ex^HD~o{s{G!+u|ygCp85mlHwlEqo}$VVP0#v|g2FW@WWm$faHvze zA_7k_Wsg2snMMc;J-)PO*SYt=s@d{h;g4qDxB@>ZaF-+}&Zt`oLh&>lEcZh6)f3|1p#j1-wHP*=&)+8x1NJb5*&p4*W_mlo^VsAPmj>*L*Zg|W`oX*Q zVHn6klwrElR06Ee**vQHuV(i-yi3gSd3@esD&teusxl8*x5_+J8dm19GY2_smYIVx z0b@M_Rh6t(TDP8Pttva$)n-#8)Ar_kMc%jPV-}Im2-PUdS%XQer=}{aCvyF=Yjevg zZFf#FQG(}`dR42`OETP5_keWh%0f<1mDxW$r!54&;z)LxNqVD1w+w`^xfo%}6mr;z zgK?DV3#+tqw1(HDqHR?Uhn_EBZ^{I>PeG{c+3s=MizqWE{q8i$KOG)ZMZWeO-e=Dj zV1ge;X>U9o1$du)Fpwx>Y}bOx4?Ybj;nh3VC;}ME^#di66v$uWI~P?3tI>Ah>LQB( zE{h{}k9E+m<=tMd`@HT!js&?{fxdEx#Yaw=Q!H%wX!jRt;oZ~U-f=n;bwX&4qP}rf zM{JrUD&5X!x!|~IcOs zhsBg-u$Du;41N|6mrx@}Z&}b-RrR+11JDbaA!;2S?H(Qd(%UCjpzK4soDlzf6W{h?YR07&yM51UbxiA3ka-Bk|!`$5v+O#Bud4 zN8#pz%!>v?=}8eLF}Sx(7k%zv|G62)AlmlqvNwvr^@cpi(|LS>djW)!&tea zvwiZ@RrmaWnm_R4>u}-#=pCQ#@4o9E{#HVR?kgMv-T+RyOkupActcRCLpmnR(Rtel z&}9nmUti7_1p?aTf@E4ysQa^B#=k5m0;IIdT>4Q#Atat%3WQNnbDBhUS>m`Ae{#EQ zuL4fEBdw-W<;nB{Hvn^4m^PX?IfRF)Rv`<&INIBPcXrY}JUu=-IpcymUKpjmQ-G2! z+D~XOfRB1FdjHiu>m421FMEdoviJP?{)zqc={|;inBOnDuMJa-sp%@77`r^-B5u=E zcYZlvp8DYwo=re4$(PLa&*i&(1=D9|d?)Xq9~T!voUeiOu*;qYXtSikeN5h1sX-gMg?5Yms#UpM_%IteS9L%*r;U9H+;?p#0UCoW9er< zmV+8MPJSlEG^CbS*sL`R@dXJSOo#OPxOcLz!BKK?2b^Vtb=yIJoRrvk+$g!%2MfJ~ zUkWPhpn{I+>W+7#zCVLqoGP98=*Zgq27UG1XH=hv!hV+gb;nyX4n5xlx?hAMPkAdP zo*-V9y^S`NyZB7X(*xLhCcC33(rb{Op33lR0`b9&w+2y-^&yu~a} z30I!$(lPYlP`5qChwlxam-y||GQTl|KR7>{85$mzhMSP8W+F5P%4f7@MvVz%`VP;n=%z+E6woKM_oUAgadeQhOA53}885l+0y2Db2x;-Y6QG^C0Z7C;op_BG)RAPq% zYaI7R_3B^Cj&xW3k9FR9W}rFx-{#t*M>+qWwa54QpT5LrvHVYaVO(RM9E_(U)JX;) zO8cCdF5EBg^-f@`NAI0&GCqebqxI|At3COJrz87kP|f{qipvA6p*O?>Y@=#F zJaG5JjF`Qj93TZI%h^KEY_?Q1OLN5lnQXD)^}s2n`(+oDL-sN2fT{vwUM zK>%B`aR_QHv>M-1PH2RL$J+i3T7*&NO!%HZy1;0I%dyH#o_iHvAu&w^spP#kuaPJ+LO1J`#a&9qkApz;Bb0S)1*?ExPAg&K#iu3vL;Qy-wsM2&cqF^irQ`L|tYs>?3gVG} ztK3x7Xk7aCt@JK65_e7(G79D5hZoXtb_jFB=earYbUr=%ArGc9hEq*;3s))ltY5eg z&PP=gem)#J3fyWPHPrxBhM_L2YqsEHPp5K>4jpEyGn)ivXXA zql5(8v^5e6@DJ!W7cu$m@UdLZh+nyEKGVFBtMeq|n=GLKG~N2iKM z=`rFUuhdsShD)ggfYS~kf?pU7dc;V`*8%>E2;jfed|iX&{pX8*K286x7X(nP|F1oM zyqU}Yx3#&xb+7+_flrnG|A}t?BsY^_g!V|5n@#vd3C~Ec2u83wh)}lhs`9`Vu&99r zBR9L!+E&wCaro;dTjFGmvQlQDU7@6|otnv1RLPmJ(jKmZ9YnczoGF5mQ$?!oNdhIS zgquPMVd=P56+8T-X#i;V8UbM?oKhV)Ex<)`N!hrZy13-iIXSqT=5aX{ZyYKn2hCi9 zA@a#G7ucJMV=SO|?N5QMLR~`%a`lqpr*n$SGSlL*G!5vSZTgXfbpMakU)A(8%{Y}# z%PZk)r6H)B2?QT?&2dgK!<>+Gy_1j0At!7S6ULpJAM&r^)Tw|l{y+ZyS7Tq-4K<4< zM0p;?qPkza19lRR#XED^xv}dU#eDyP)NMN!!o&Snytm5tk!x``XZ-zBdn#bcM$5r- z@d0zH|MU7&Ja`NAZISVNdAw(hU#|TsKsFKxRD6#nX}xToQsFL%RGqv0)Ik~}MHi^E zRIye%I&p&~POWY&m77zC;m;hwqf@$Zxt<6ow@{B|6Q^|~W0@nT(YD1ewavqMFV+q& zaxjE_N;FI{8sk82a#h3BJA7se;lbeCLI~;DM?2A6SQW(za_pqAcc5H=*^EuNqEM`f z8V%fKP!1C5E$=#19vs+nqv1iHP}qfd%>Xr!PB236K{0SBG?TC8$FumhsgQmnKt1~R zyF#dxnL@!O*6IyhEd-%;_V|`+UGOwl0+!MuQ0|IOCDnSKD~om&y;cL;3HLGhY1ne= zh*y&Zmz<64B5a(|T%77>PN^bSW-N>R~>2A?1e>JCu&q)v|+7atDEf~4nVgRV64wQR?a+tkm zl*kW$bMOkMzRW5%gH|gOJb+MJ^%9ivDR^OiG9!~Qb2BYgoW41`SY@*~dxsd}l3x0$ zGC1*cL^EV~F^OU{L*f;h+LPQErPv^et<+idpk(P1j(MT)x_+Cw`NjKx5iyF_|G9)Q zY-6wgu*W)z_XwN9^?z^wK&}5(yhNGh!g~?c09R^uK!8}&n`Iuow_S> z7>?2)mUykHq|EJPIi)Buovn~mq|hq_lINK}O{a@FVi5vVXkmsIp6{PAFXWQ+wHkk5 zN|RAIh0l494LBs)*n?h0(QGoP!@Cz4mh7GGAMEd* z9i4c;3%uUp-u`RvBc3mNd%Y9yO+UTycF$gWZ@o9{tc!~*eNXWF=`ZjG-%a_X@$9$b zeedmGbMqU+FN*|T^TEQi+)z6l;#MC?}HNd6f}gWbN1S$poWS zf7P##T|s3fB(lps2e!67IojwR9JKNt<*Kl!EFg{|Rx$%BUCE98syW87AssPH(0^y_ zhZBIUTuIa#H5*Sk#93cgVNk}KEX;GAvQ{6&wDMl2MoBR$l{97PRG6TJ=SQNF0-x%W znzM-f3v^q@_5q93;~c!I#A$WCQ&UfwPUv5&BwJ4mQj#l#@@ndH4vpqi&NmD)mE}(} z<(-2HT}q!*7+jtFp0=&gf|Y^Pb78PZg1=1>Q0A33D2i#8em0G%5!q*M#^_A0=$bQ5 zG-`xil2N z3&(@jNNX%Oq4|=%@?tKY>!vE4ea-bK6}$S8Eg=VzWA#0UC#|pBRyA^7Dofg{(rl}J zn+e^~O7k3V^}G6iQ1Ihtx&LwX@#gwQ{{F}N`2R2Rsq6o}w48?HK>2}dztHaJBFZ`? zYUfWhOU@GGkjmbS#(C6oEHuE3Z=ronuDT=lm%v;ZtkSog#h@oa^#i^d7X$3Ov-A>n zP!44LM4u0e&36jJ0@Ix%w%MNg3Pf&E(?cj6#7oPH3 z=XY#GwXXs}%>X5zJt>R})kS)_&91;$y6u9}rxAWf`Z^ajlq&|y09xho(&#}*rPX$J zA03cs$u0BxCO=ggZ-3-X>G02TTQ+Q9AQgIl?;q}Vk1+>9@9^c`@w>yL!`?6ZRwWJ` z@V@ib3M&}jZ>yy$$M3*({4Q)hlMW%A%m&kyNi6kjwqM_$ z_Kc(I67rXw8h=^alQz>jy4|whYe2dosFudNH84J}K_^qOm8CwNStnWY1Dg)Riy0cy zM_fSBp4Z3>!3Bt$ixQ8|RfestO@5{Vmen&pH|LV>GcKu~VVcA&JbadghtEK_q@tN; zR8*d2Xn=q6B$&l9nx$awp9e7>TA*Z39`bBYDBK{9`siLR=1mY51g_0_^YH7pc(?&1 z8wn$$Bl|FnK?DFl)0r3`M^CW|V1SPA*RTzWu3-#j7&o3|iOtv=TAxs@S6oTw+-6WF z#~D6+=7*zTka@^yL#>Bq3=;Ptun^MHeF&7zJ z6n2+X&6RcL`a`->T2pXmUfY_WiPvdKPauq z!Z-Jl9>d$yLqj1qX+dJ?E477Z-RPF%o)z7KSpn4#GZ;>Q0RS>I%myJK<+u!yiN7LI z_#1UqzMdY!my{%R;&X@s{7W$k@UNI_;TuQN;42KJfq#i{;n=HTDpX#u8hCmsghAE7qy6B#-ienUU?FvPr2@ z*<`7f*!I+_#yq9gGYM+ZE1CVNm+Cq#+BVjv_$SdqleIy&+O{35LNa$qPk4VqNPQ z7R^2rS{6Lkr7fl)+GZaLmC;1k_GYOjk1mj#mAQA>r%Y|j2yXg68Y^`rGt=1VVeJ0(6^lGI5dl)=|Hr{UjUg4=^&vaQZn$(T>37Vm-ggv22i zqFllBrcHAn7+f3w$wVXP5b*dXZ)=l82L9ObP+|WlcPbzr9RP?G-fYABx5~m}jx_U6b%Up*25jp~w#|uzzBSo8q{ui_3%XRI6kT4< z_mfF8&g|W6#A8*;#-6M41}K>zGDoMu-%YabRqTlKgdbt4pTq4;Df5IMx!Rq&)!BO3 zYV!dK?4%EHRRiTBLZ3SdkPp)_Y}C-*gj4(9ilG~CwZNEt%Chv+qy7P0^R0qc30u zh%oUZJfnm_UWf$3_X(yzL9+}U36OI{Chwk|w+`QrVPhgSIqn0dGzxP==+3fQnE%j- z$D5&@HdG}SC2A>-vbu&wOL2DR2aXL_ce<$8Samq^FSyGx;Vd6Cw4PkuW-%QoD!pw(!VY}gBR8PxGyXHl&;@M<*6)^V#{ zI_R7q49Z8A;tE7{iv4|bxuyoJYjo^`WpNg@u+o`4t-__L4(xhXz5}~%X;uZhu9aHB zu6yLGFi^X2?ksc8u+a&1+jA&UJv^V}iflmCVFZyWl`Wj?A0Kpo!}1Dq7sRtmuJT>&!o47KGIphtv|#Qn_Ky#Vm>RD);nllwL%au;ok1)aSyk0 zpDB7D&{U!O`Rv#*7aug|uY4_14AxfGA3eg|5T4w|SA53Z>mGJ#XEdAv?E*T)riNaG zl(6t-ZFN;1_&4-mD4*)}=Z~Iti}}&7*7xJhI=?d=%Y5H$4Ye$imYHmRAZ?c-#H#~o zwW?bqj+V<(7;T}dj)Ajx($jUt|E(k_RP*PMBO66b@9prP0yTec{{Yqe;`m_#P#Q@~ z&}zofzFFD)eP!#d-Q~N-5NouGB53FDN{c`gcqn~_UVn0L3%Ou{p4SZ>KJAu;4c|2e zn3(EL@xRoKdEvi_?yD31E0S=r;9rpwUo`etO-*JovC8!^ zV70eb6@|*2c!YsT2!9v`qd@|KEW{fr&{;H0X8}8ubrF=>LIba&FIPC(#`^FAi2ue* z;=b42+dHA?)&Z2%Kj^M9a@<^@Tc+qCZumg~@!lc~LJ<~x<$;x%`vuNYrd9!&dtSG+0g09E;4P~RPCHaK+1pCzOFpL_Ov@E zd=+NwpER&mV`eJK1wZx;KXtYi3+`6T5{S#ay|V5&wo6fLXu2-9tovICm4X|YaAH1i zXC+?BWQhfJKNO1#qhmCd^u&{>)?DnL;bIAUEqI#`Zna|lWVTpgezZ~LC_l@FoeA(0 zC^DCo$;E{Av00X*`iiW>Rw2ty(^wh})3b=}v`uBEZF}F?_FE{`pT%bp(nt#J&f*c3 zBNE_qT?c=$tC@AS$nWxj*TPK|ao0IvT^V+*IG{S@S{C%hBd%*lTXPHB)i;NU5S|~~ zn~Pax0RMzYUuAS}yN}2cPLY+Oxsz{v)+L+t^h^^*9vR>g{OcYI*ed(dlKn!*jq0X2 zu=S$~fhA;iEMOGIYH90B_6a~KyeuRtt|DS>&zTHgvMW|D_Ozm| z{;#f!ORgFQ?Cp4}5d10~EaJC-sJr%iI|PuYtSYNq zwpzsm+V65yuyrC+*8e$O2T0{z2e^0XI##RdI=+|SM7P&E;4sr?I*ykl6x zWeCL~XPH7W(@nfvGjk45bmJcqqNv@#QTcg$bOj-E=;M(^Opq?u`SV zLbY!BTInGLSYULPx+p!Fzgy=ZOX@_ZR1*VST7tV#Wl?UREeKl|1u(rnEU5#x-XTzq1{+G6ovljPwY+Mpyqc%N%= z{vZ0DiT_%A{CMr(9(_v3>VE!@$A2w6{s+C?{lnA!McSy2|66~w`Y0Fwx3Rjqc_07x z1wIXL-lseD`=H4mg#BQW1XbmK1yPP_JTOz+`wxFI^W$4@9Y(UW(q)=Xw;w*dzP|4G z)C@%pj<~7hVFN3k?Vr3j^}2_9-tN)iUhk}Tba?7LJ38@Rp6<83lYLP8_g?Pe<2IGr z>z$sR^q#)NCj?-v4& z0>Onp^7aXI4hh(nKnDr?fNt;wC<+U_2zE3QFcB0G1Vf6Wf~L_EA&y3E@>={QBfg}al@t)vtgB|ag%1=6rr;%K8%T(0^uEuCtpe)Pwvl+G|wdr*L z3LoE9jYz;6OW)h*3f1>9nG%!}DEdlkEI9_jctK%U*lseztWktm8@;Qj`!M>{u1~OS z%3O!YO#r1C0wy#($tCP@0n#uW0yU>W+(*#ON2_1As5y)hW5O#yvlOJ)gyI5Vn8;&; zAp*$rU;;$whcJ{5bPG>2Z!@msvyvPT_L&p;bj;b4ZaV$bFe0TA2(wqb&Z zO!1Q7Bq4?;KC^QEoYs)9`*e*yaWUemf+JzsDxV(I6a3&YDCGa5(9Y zW<&~@gx(}dd0!0GVH^|Krd%U?CDb4c3g!?|bB_QC7%tFO^Pf^Xv2|hyy09faj?VuE ztdK_??Hcq9hGRCO`9c195nkykH_R8aBa7P0wdE+m^M>V z75`Pp1b2<5c(db1hTsQDvICdgaTeZOc;|KLQXSN zAe^Xf=n252lWvWD(69X~*lAEuAMQ1n~+#Z zQ=jg%mPjVLDw#nvF=gG2Kb~?pBZzijbFN5kljLy~-oRuUf#PkbuouMP71mVCeIFW&Ml>m)8k?XC#yl^Nm7E$n)4%Oy$tTo9 zZkDkl@Um*e0iKPj`58?8m^cOLLfse#aR56;wAc~h&VgHyPbL^=tp=Se0Ykq}i$vR6 zBQ;TTNFjBCXlO=#7e%?O@r5IvodbHxTJ329%7jyEsm23=Ib%XRJP=JpL5i3*R14mh zA>XzpMT$~i5{3yeXXhY0M0hB@gSd+@C-h`0P($KXmQgFzDARIRxmwtY3QA>a9{K$| z0AddD>TyG;Oe^(Pdv96yX<1+yb2Eu$s6-cP#1RPNHjcu%KO#OtZy}%&DIc?my2~DC zflc(l5DMvJXTu}gExWfQ$^i4lhjENUa&K*#OR5?bY{#WBfCQ6pcG#4}4%aHELe_EqsC zdJ9g&{w$g$FnRG@2t{9Pv?HZ*1xa`@A=wYCh+{;AE#yQLR?CM#Z{M@$YG*k=g){oK z?zWnNb5$OjfG8iwnMS=!K;}FMCMG`sAZ@o}CLt#dNXe_D9|662xkiQ8ntm*Z);r#F zRI9MrUEO`9S$U^3UR;G&3pX>?G_$300IQ^D5y(Rk0yvWvM|uG$htNyV@TNfulu_&l zqHi>~4pG;@?58yH3G^6$u7K7PU*N_my7fot?aD9?;8zHW-Br{_L7rR9W&ei_s@+zA zIj~Uj2YE?n#QAh~4t0Twz^I&7Nu&eMN(8GKrrDAQOlchU#-!@7|k}!gR6kFJcSVLqod&v^}GnL zHv;j?e>wRO4~&)rq9}`2NMc6y3`xLaq+0c-(-B{vGm_hJQFaMx{gEF6y}7K_IiMl| zv8k)&<|M$xrGCslUqf_-(Ein-TKnvY-%MJt4aN+ck!%3Rppj^;o~mUls1ETCS5{j< zpOripIcee=heEA&9j`aU@z;AHa>PypGbm|zA$e6VFiU7kLQXdBO|xKW-8znvWQ7QZ z-H-&U{2NBz_eTD8G7D4e>L|G2MF1$KkT*I(Mk-bbIPF1>$0)qjHgNi8aBfw%)Od_Z zQ%xyMesY`PM5QvR&8W;2wb3whOqM*QRq^V8Qxr!}@rs`)g^jWt2=i&`0yNww4p9K!nBwJPrfgB8#ZsW+K3N4R@1l2}pYz9J(_y{!`j-pqJkh5*(CA>tE zwar$D2x3@k90WYdCfSUUUE6A%ZTcAsrL+Bz3EnD@~yF>isI_lH< zkljiAK+C9V^W18a4L3%W#(fm--`S`WBMZUyA)HX!V%j|>R`V$0G)p5)+`3-`1BrP6 zIBv^*tK~SrG`wx4H(OhH&f|NV>zviFZqP798)ukV9oxd)Z4`@xU`!cJjWR(jnwse* zeKR3~8GN!L6+cFEW9g}25ORZv6k1qiu$xFuo^f$%7B22deyMheHfW*H(&H~1KOE}i z!=tm_?*1}NzMGWjjnhurK$Y8S$DUo52q>5-Im*&_S)kO`)Aum16YVh#(*=cOm88po zO@0w-BpJ9P)P;5(x>{h0DO^ZbVm5#=3Ve+Do7h%*sbXd;C`NrukSb{U3P(e0Lm`K& zl1dzYu!Xt9WcIvv4Nw@Gq~#1QnHOdS%)^i3cAm<<()BDWm+TD+s5H#X6jC5y2grj3 z0OP?5cJfw_%>?apuwka)J3r<;TR7?{zw%_Z#+#G}-b!mDAKrkVH?OFnxai2-B8heD z*yi=Jfr*{aM2q_!nL)M|cAscJhR9%YRImvU7_<5}92EsjXvnC*$|7k;M!J0+D{$D5FU( zM6K1)atkzgW7;b?GGZ{+Sy41Bz@}}c4W((H+?H%bZ0nq!N(2v^wyb#uf!t}8vkGgi z8*Ry?N+TaRW*NOx$?OE20eM859XSc$y{gdylaBXtGC~hl9JJtOikDvE_E($-^#O^t zZ`@|JNXwXInXyVuS4Pvv7PE#NR`t$p>+>R8GnK3e(X<$bL9psNP^XVv|1e6il0Lnm z_2oR`O<77I`6!xj86nh?87v1$FbMb{2&aKHB+?LT7i=KKi(}N5=mPe1#Q3)|Luf}9 zu%Dq~dJ?>vAaQWv$9%4o-FwJcz!r!?rGO+Ij$%=I^dKV1nX<}lod~JhNeF4It&TDL zG1|?vMuS$bAihGIzWfB7gonAXVp@f<;uNz@jf20>LODIc1wDZ=!6luB6c+wyjK|Z6 z4NzGEXJsh#rUNatIs2@dO={d^H7HmDm{N~B-d>o{)`?R%z5@Ld=yIzkfkyTGmN&4p z^TsWf5d$=ew0SXBu(la6nfr-BwTZZ*(IC4;wM(P<(iz;AM>j-x%iUA2ce?C7?Vk2d z6>(qn&VD|6dFH+9o}6?K&wBf(-qDGDEPwRO>mL5*{n9(!19d0l6X2UE`Ks%lgd|r6 zmYLMdAhMJCN>1IvCYMM>8=^QbVu6@vy|aV;HcPa1z+IGo6Zy|bT+3d{*2W~6(ak1mO2=VBl0Av~q24C5 zP?vL7vc}p6t@+I?^WKw=cc4j%l@3DxJRH&Cc@I}!57eJYN_a2~cr+qoC*TM>ZOhc6 zPO?(U4{b~ali*?$USQtSR$HHTw;fZiw*1WH_a-X}Xwx5s=cLdPau;Zi(B~Ga$rL>h z5;`3(o*yhdo#g|KGHS?1oXAux0yMP#*uQXX_*h%H1Q_RlWE$Yvx^?EeN$096tiZEk=!nyX_zGsjh2uhn>JoZaXWHD_AJ%=k$-k-@a&s%t+V7I=c-DF8CBO%HB3 zNPuyW4^ctS8sY?oHm3W7tB?*!hvL2gGeC%-oEro@&w%ecUbl~H0#ZRqUTnE*7HVr! zyt+iy-JP!4!@|nrHl>C3FQbU9pk(QE4%^A*3VPcxAbA3!jxh8wbue{e%4SfJez(MT z!FYnMCB`7eWF0Boz36--Rw&Y29-`Pm&6kf_pg%ZYWPcSZ392_3KS$TN6XLC;CK%Dv z0&Mz69xaoRbsC~|ZaEg=dxrQi3Q{9R318B5%qfbI=*CiHv4PlxanBSESw7>0=lM>w z8EV=Lf+1{IxCUs(g96jJACE~ADdk#I(M;!A9GlZJu^fX;hFv*sR@sQ!&fAU8Z$;TK z9lAvd7@BHj{@UV3OKsG+Faz%&?%}#xe{CFtMS%&2*FqelDxkPnt<&BW%|@7DpN|0 zBC?$ZfrEk$BF9AvHkBUU$S}iu9xh;y5l^yyTC(>w+E4bu;Jxzp=h~@BjTJK7a9OSiKeem$W_FUQfwU3gq8K6U;2N0KT-DepNMSZs$SRO$=$nI(QcbCjJPiyG0ZZr)aK9 z?R!SE%+z3&IJ`g&^&LgHW4ADH%xQ{?bar9a5m*iELW8)^#0d8i;P55``!Kk6U{i@4 z=som39tUjF(<)DK8zH$TnnoxNk9`)UB}_SVELWD9mw12Te@~X%0>C0156HRSf3HlQ z+WRouJ?zpckc&w~(UQP*_iO&Y_-EnupE+gTm2b{x&icQ(@i@Q!Z$8?%U;n?r2c*QY zxdINi0(efGxNCY&T zBU-3oo$)1bijNS3RP68g&C(W<%V-8mI=$G}A$k(+$Vc@+B^i#kSk?t(7BvA_C2%!_Upm6H=DelMAwrR=ya%ymEBq^rSX2^uLoQh z*Z}E?|5yZkISKzh3wkI!5eiN#={P%>&gebbR{4IrP!1A}l1LK5J&>{$SrJr4q*iTz z8nGvzhu8>86L$_>nWRPJ>?KE2^6O_};!H$wBhs7BD%g<)gGtaoc2Gze2GcZ?U1dc~ z5c8EaX^p`0n!}@_WuIOR`5-qtD?rGttXaz!;)Hoo)M*ijTLWr{$2zJ9v|?rOeqaz+ z#dPkZ{E%=F9FhkxCZ*#cxgVFPlt-PmazhFMaH2_8d#Ev%3^ zsvb30*8b03@?7z`oBm((;%E6(>;G$yHr5_x_5aPS$M^dGm-xW+`tF=8Vly1kX*RGh+u-yKxB3>d=}glY1j6#hldWaG9d=`Ls|^qQ@nCC{ z9&M~Xp$G9;9;|Pv2dc{BNBCeIP7{8zxv{yao{R!~WjI}cg>5) z`)S8p>pYTMV_TgDd0OJ|?j9T+?qizpmuIIQ-AA;#$*k->eBd1h*WN5ma0Jj5V>bPF z@4-W>QtxJ5bdDR<=mvBW>8)>V~OOKhP%ZxkKZknAenE zPAGLp)4{b&Us_qy`Lfj`wsCXc^t~W9cJ?T+jU_4AnsWyTnAdc$cZmxnFqfJb=_9hS z!z641lc*lSlN6s=SYef8SRC@$6_^QVI;f3^cIU^nMI));HSwwJD@yPl4%%6gliH0n z4bDgJPWFxt4}P0-rC9;}wPHCOwCpsof+b~BF6uQr9~8_A<^P6J9B5G^P9-8>22`=p z4F-ShIJCf4nk1boY2l6`5zyKAJcI@GAuKPV>wTTzo)WVtWQP)@ZXuuL`$Kt5Fam6X zvf9NOz%)^Sv)H;5!npK5{Ce<^HB&%$ig#nU*vh%poe-vJpJovk?uYkneEB&#kow8{ zY)1%qwm0m$vrumaTtx*d#k?mRaK@8h7~TMb(N%E9vx&d~Cy=X1wmusdeO$@n)S0cZ zGVdw-9R>CHBuhgwxBBDr@B)MWU5awAnn24+1}37&Yz7Jd13io4U4>VZQYkJnd0j?S zls=E3!D~sqBE5fzDsRGnVdKNd55vh|m-L|*7$8e_zGj~uP(E?p7ye@RB%;LDx-+a& zcTRwu*^6v^OXUDP&7@; z@Zq`}Z=s2{AVSSx6#!?Ar`+sduCj!BYj5Q;8g=!+$6N|=93uO+7@^@<^9<>EbV(O^ zO_1C*%__D$QT8UBnne67UKaH#&v0eB;)SF#fx}6sE??u#S}I~TWw!@1cr#3v*1Vn2 z{_V_hNiZ7ntbjUbJ?Dv0b2>15dwS<*gj$@qYzGS0ofu2vRh{E3VMX1#;>LzzGp^X; zo6CRy-Fo(B^=&J6i+gsYEwY&*235bLFCSeACwu2kH;qE8)tY^tBVme{A(=XA9j({W zA2{c?Y0jg*jp^c%iD+d3bx24nyD2)sp;@bDWzp1iChoePxX!(YC6o2ruaj>xW0<3v zX^!bvFmH!p42vsIBXV!Gm*hLlPx6RXCqg#-+(aHl=WMsnze@r?2CWl^5%xns)ZBuv zCw6|tHM2ULq?xrEhjo>grExIE#0_X!#^C1(a>*bXk8U~8N2r_`TuK7gSh9u@04_7A z<%W835=Dm1=Pb!pEUl&<%WkOyg3Q)93I$tzpg@xEpa&0@`A#J?W)ttfdCOG9ipr4I z`47OoX?M{^3BfL-(g@l?o2SSt99_y1i5Z75NcE=g>9l?niYjELdmGLv@(s#7tlj7` zlwPja_CP$$^DPQr*Kd?76t}yNdV0QHtJ~zq%-OKmM}SML{1^^?>LmSW8dRgQEO%HW z=vBU~(OFskE*yNf%n+9EikB!?f}X4f4-vIFNOd~P8nwal93uTPI}c*m8%Qv(!UeZB zyN5lTlYvH8hd3|T{(ER+8Vyi$0rrMJ@Z&)-I^78$W)DaHRYVbyM$nM&hlKbl(!Dq6 zuXWbezN^nU3Mn&q>d6ZFas)#Vd8v8%p!V>-LXQtvztM{oqvm;^rMtmoz6<()49e=h zVrGPzGD$9*guCgr71-%)m)cvc|Un;?#heoV6U!SwH@?u zC7Dt7COp!Ema^;VpL2MK?u5I26X<*b;%h_BJ3^u#{vk%k$7k=(|{tJ?iLyLmJ{8QjL z{-0|b>yNYNzgw#ttM})>U*KcTf4`c008FYq#|q$L0*_$Y9!6;ookYiUZi6R6REpf= zmnosIc?&W_#TnE*%E>jL@1mK1)M8ov%E8P(@R(bFfwPE3KrUv|uZLw_dwVTt3md^} zL9J;Bo&)lqJ+1!Nd>{Xc748yj2q_y2r>&z$kU`5YW@m+{|P zeRMzmU*I!${QG!=bo5DVu=x0|udc1%kN=nW)E$4kq5J6M^iFNe(f?Q1A8qCCe_LO@ z*Z;r7=Pw-SV&5@95i%4Vgkj&$Bd^OhTFCxi_ zAFt-@e`{--_v`y4}FN*FeSWk{dhA5`2R9 zUc`LwQj))wz|MHgS3*)ws+0qn?du21?i;{Ljd752j+F6K@WhL#BFV_ces1-a<6yzyzK!1%mLgu=)LHjL9w%=HZ_{Bh8f;6S!$_0D@$#o zTacgD!*1>MPInKwy%+m?9cUd|^!9(x~y*k`Kk?eB1i{8_H@1WOx zda%#waG{fXy_5ajGwhA|whM#<^bXpM)8qZ!9((~>>_cC=C%?4?=IQ=_zJx;X(%b94 z=st(8HRn(ShGh5U38m^qGMv7AdV1D7dwI6+JwH0yBRZe%pZp4|&gl={!O~+t&)G&YmO2KRR{`BQ(k7(9AJlj7xd3lT}^ja{yuYf9mV;8FK5pjI~ZPP${y=Pu`@7ErpErns|PkX{9M6%tVh1{Q@ z8`WL^kGp3uRDa0+e|mr-7YKUSDq6aH-DgZ+p?J&l;S-w(Xq*9x56P zis7w^1AV)ex{O<`@RY{6FS$~~NrTjmSvre@wsnb`RiVzMX(e6ic)SzkD+BZm0_sj4 zNx(}DTuc09!$9WCRQQ@G$-K?MFT+`!W-qxdAuV9gqh!5E56;<3DaP@db;V(d*nxG$ zS`;^;c)<6u>!if#r70p!R$j%{D7cF44wtYsOqgjAkyUY(hZd(!J%-PVx(hIM7zZPk@+CEaagu5hb=dD}l*EPt_2-St07F7JE>gzMp= z=Rc3v*YD4NzQAXZ@t1itT9gs)F#hY0Htx^=zQpHFr6E36}`DBC<6 zn$`VDR(?vwbtd<;T$JId`$rPFoyQ-UY`ank?>prbmC<-i+9J0KtNzQw-fMMTI`%A^ zPKA1?b1z3%5>I7M5^Tj}PE>6=&XZw;F+a<>YAOZJe$w}+!EQ7#w@M~nKo32o&?XMq zl+@z9F(Qbc-fOV`#gyNZMLE}d`6zR$~ zx@1eDO?~gzv$fS#gOR@S-JjBiAsTY_N`JuD+)u=GIGN5AI=U^v4FmKJ_k`Y!w$n*{>fWzndBm>*Ui2cMjg|M zwrW)QOg_-`F}{*SM+by4Zk6bApIb@jI-?0qfr;4e0ix+M2as1L zUmPRW1j*;gzWmf9(6@a`{~0oD#mnb0Oqzf!{@5~6kphw^=7Q2M5HNKLpfMq+aMkzB;n~c8#Crxlv5x`N9E!7UChs7% z>=ZK*to{J{mt2EX@i>Ew&m*9wEpvux)ZFMs(<jc*#iB&GB4;;18vXY~NMLtE6QTL$?fGq5f5~-3}$%SEo2G}}L zlptxk`hfVVtgEKD8FzxG;NGpLxCXIYv^%7SgdhuwZ7&)Pcp@;WR*p$`P*g2b!%CCF z5Nu+q{6_`TPg0~8WrAoAFU;gpjn*Z#Ro=!s{D+J7ARHsx%TcBw zab{{uRnz!&IKbpamjS7DDlWSM7p{Gu81w(!XYT%Q5~QE%1HSnFf9>(cgK3;f9da&4ETso005yx&eW`zUq=OIUi;3nlmI4_gVOzE@AIjGGF zGukl`MKsgJ(d^<9fxrmUJ+u0(loK}cIW{OMdjU?K0lG}g=q8*9xmlg`(}=M5lK2t; z8)onqHnQl`L~3ODf$}ux7_4pMfNlYNSq&A`jFsamfR8+7Ro#(mNrkUs!&Hb1G6=y0 zrh=kz$3|B82~+jIr<9peu+z+R;0G)~yyi44myEj1LqP1#-Jfu}pW5p`>HoMRUt9~Q zUjNrNS08QW{eRc)?LS}Q^S^5S#}(f@fsJm$j(Y$+R=;FlSGb6if0eF>mz%9^HO$p_ z^W@*#@PdwRKYb15jCdQi7^x8+a|gq}>U&e>5e0VP74?=6)QcVc#Rg z=K{Z|szMzuuSkP1paXJprOT2(Tw+}sNVU3yfmG*Sc|ZQ>ZOXgT*|~gsF&oLZz3@uD z9mNX7WS}ZshQstA7^e1bGE3q*Gdr3d1{WUP37f*gjH@KlCg}Tg_?UjnbY#aeLf#n& zUZF44g}Kr7#8F1DdmV*uq)>VdijvUP`;XapdWN^ahiq%2JHZpQH&7EmUK%XmWqo1? zjQBUGl?b6V1dGOmhc_ljjmg^ znC}KSX z^82SSI;TNuz1wl#0jl^~bNjwl(P&(hKe)$NV5)OYNoMmNWfMCklUrI4)A_XL53c-4 zUk?K5gxa79yoN1Y(ZMC|LlR0}g8;PYtVH_o7DA)QiY9SrPL~Anhe>z^MOF3eXzyrS zUvz@!rL#$3&WHcqJB`N5K`;r7zKZtjU`#43AL5?J(feTH(KR1_ykfecZiMbfF$x#l z=a7LJ?PXXKVKhPGYs;-2psr&o^x&pNo%uU#td#4Vawj(1&(N!*;V=nOB`YVv1>b-)_HV-RY^*MUCy!K1t;Y#T5TK8^>2u!#*>SOw-5>$} z1^RSB$LAmmOtU-Q3g1~uz@Rq=_7&hz59o7&4i3B!P06nrAV^8m{T**jfjEvM+^E`K zpHvOR*ue%eZW{HYk&;Wgf(=WfL)W7ef}#OwChyNzeww~d-^op()?8>I41&X~b{?cD z-vTqUtm8jN*RT&G&knD9+=JK1jMr$chrQMkd%ojL6QeBgViKXdLEmD^f2WR|xlFQy zD~8a-zs1oIs@olk_>n_k_=k$4p_xb7T!N#>cNzF>Hx^G45div(0k4DiF5y4b4ctl! zy&Yt1d>^eVgnMX|ANqZC{tj*&jA@Q2ghN#hqZ7#KR3j{X!OUBDX+%gm)>0m}jldJt z{$Y^9w)%ZHO=G9=2|veOGM~c{B1rew@Qf7*?pK!^vjI8mx?a%KVL-0)ZiDows9o-< zYP-B$f$FrrrCNXC$M1_de2i~s>&y_Tqzzvh)FA!A0MuxnlvKZo7w>udC}t;U>gY{Cw1(#(XImmY9Ow=P zng>o^|LiB11x;&)!m9u;JDG_-3@>Ie*&=`;)xlAGgGE6N#$^mwsf6*6Hf#hoG-vD{ zzwGTf?ZZ!De0Zm>=vFdTP9SBv8A-`toF??}|9a3pJo7J#>5DJD)W2Xbs;DDiHZy>Z z`LbaR508@n5yTPRF=9>1OFCA>I?TlWMV5*^q#H0iQEyB;DZ1Qw6b9SqpU(jk=kSde z5TOe}AiP;XwZ#)%8H(_Doy}$HCK+^~x4pp$0(wMwE8Ms-RiW1viZ!u=2&@ruUN}L0 zN0k4iJUtwuJ+X=AE?28JPcY_6s5OkyJIoMEb&Bdk(I@_sqN2!sI`V%@)Xy`=7Z3gOMGTb#7JR2sL9Mgk1IRJmzSq)tlie62?~DzFToW+28y`|3`Ix_h4HY6LQUs^A`Lz zooKGZ19-A({<~W{nv7jTV!bu`qp@E5WUOE7`j!6)W~(Lttz{@U2Ntz{ieWL`&({3f zU7COW38SPLwz)~8Bz%1u_r2yCJz4uKyam&!uy#dF3rqUoj@?CZN-Xro z<6sb??};OD&}8<=F4sLzq7kUhPF-#KGtW-@G2Yv4KRPD01-G0S)~u8`*t2QnpiR3T zf1-3zT(>xS*#h$-7?bTS(-AGtHuF8$a0;wDzt&{6R4WK>5pj{h@5q17uAEH>(Nq;K zHC!sGA&LATG?0ilh<8(@&p(4fA(3${pa(4 zYM=iNqW&M`|FgB8&;PQvzVZ0}{O=2V{_N*}4<9s+%@Lrnn3K&1-8;!s7T1W0^#I*W zRq_WhMmC-X@%vyD+EDCh~D zM$rzC1D22uVow-yyL{PpioWt*>Q9rlis)}-Oq7#vCFKYPPpMOg(JlGhd5*YNv&GUr8V%=GC7v(oit$o^?slQ;*BqkkE2@S=}~ z1MwWYr3pbjBjo{D!{o6qA;;JfyUtp1`U0{-E9j1HCA@er+p-j^aS}~PM{lDB69?tbmTS( zLI5hjOh6)oFiKdz)u_;PZlKp!6yxbG=4UXTSChg6bg!wuy>3x`RZ3k-&toW}PPc@_ z-B?G{4PKj#>TzQq^YkE}PzDK$dr0b0YKCZ{EQiXThi0jf-&bKKLF3mK-zH=fT%oaE zCSuE__8qbqDD|JZj*xoTsP{N!Wqdl!6BiMt zOe*M78hI*I)!53Q7|4?WOc1ZhCbCw$!Cg%Qn8x-Q3tN>VIxCVWQ)TbQFWyPA3S$k8TCLoz9@;-m0lqB46Ze2(a(Q_#Vq z)%SsxW`kfDPDGNB+klXQP{JA4o0yDSEWtqLE78(+JQZ=|Df18~Pr}$B7k3@5z-eH3 zG=dutpTyThNHYdddDUxje*{FU!?83fKugZOuCUFq|F?*wut-QP{ss}QG$`8}JYX1( z0SgY#?{i$Ef#WWN{(Bf1?y*YuqEx2w=B$Rp1HE2;&M}um{(1Ck`hTM=g zue3T?A{Ot`hAuR;sO{Juy4nH6J_y&_vW(AW!xt{#lV^90HULPb?(W&QtX0ig1t*V zz^-zz?WqUKS)}d#>W{X`8oavIrk2j)88p788vj-J6aX(L$n7kvHs5Csa_xEAS(dh8 zuc~&lAE=?t)$g~8Aj^D~xm;R(73+R%6^>xvpJHemd6n@2z}nYdLPJid#{O^^_G=I5 z^8lsr#`+4{{so{2Ej_5NyMq}~ebDgXa5iS5%Nc~~JD@hevv`cz`}eAWQZ70&Q0xD* zvHoyvb(M$e8T!mxW3|g9=+vQpk0@SRR8jiDL)(WBZBojMzi6Aed~am&GM_y7G8pFjKle@^_*#18PlrcwR2*EUw0jDMZwp+}kb92a2+ zmiE^9Kt};O)JO#^h?j#~1>=a^a0T=y)gcaEvp9%HVq3bIy5i#OUl%zR+TBzx&Teh~ zCiov2C*DX=1#mOgYb^Av!0FVn%(pYTw_~*zC%Xi-4LR!9z({Qe#o!@@X+XpO!RF~F z@NKBR5i^SIdg`N>0J&b%=1`m=2EjByMN|^J9!&w%FLF|^sHjHDG8ScrN|%8qE+Z9! z)r>l5>~`TlyFLd7mHYDamv zH(eOYGXaBql7C>qRs2@eoH;Q^MM_#V$4=N5f*_B<-0OAodcENFnt8nj-(Xkg&qnFC z6}J|L970r%8=dZ3sO66K2psS~H1ic;$)QRPd}=^FL6}-~+Dp=H+^>ta2Ce_{G2fJ& z`ehsX{dcP1{p77Zs?(}~u^K(xM*hUH`=wRTuG(m*hNU&_Bm3Rz%}_pW`vp3!{@GkH zKDOU^y6GIYdY8kSo8%vDkM=tyG*T9m?F<<8ye1fZntF#(&G#7K6ttm^TC=FC=N}vd z%bC`mqwJxv-B9BMOblpSuL`&&I|bx7l~=rS8uzy;7ADIqxyE0YH~#t)8-HEZc=zDt zwwb@t6on1Nab!f2a;m_1!l{|iDx{_DsQ?!F_F^`YZ+qdDd^?KeOLw9xr~nrGHwCaL zIFTy)I*M5yDOCB0dV9y5R~O+t84$``m}n=RSBKf#HfwTAAC9KmP~v00v=Tk}N?Is! z-Hb?b_%J^Ys1X&gWAo}Ey6p$u5A|6Ycd@w<4nPgS1=vwbMuVId=|P@1~%B_nXVJNsMKk^9{`+7#>ypEpP_}#f(`n#ipuOH+VMX>7o+LAs`&{oER(^8ydl++!aS!?w_a>?S z{c(`rAe{z*zV7@YOfP5WoqjYHn+yE&FietJkUU&_viTTvWYjnmT`&fY_`yiR4+S!d zhBD-zSL)^yw0KRv+R@5^K zxS*QrlvTuuUCebUUr_fy->poqs7r`(u0xqsKz60Jnon_P2};S#0Uc=KvXys=n~gja z&|9p=5(4;KTVLO4vfjQ|cV5i{1kv<6dq|4ScG2dj?fD%*TUk6#`F<2PX3DmxXwWh4 zgyqn(7-NP7_{ya#W!Hqugh!PWU5$F zv#7#sg7Icf;PJNi^%ihVo0W*jEEJ{0q=LCFhptjtt@7wYIm8C;FS8i-}d^pCbNvbL@8zQJc*aYs0a59}O`H>!7suWnt}2sx1{s0^rbA z8IbDOj~L2#5?t5%*imF~EeY9)ltJ+GO$%jVa;L@X?{H$!-}0%Uvyl}}4Gs98F*Q`< zf5g;Kus{3MFi3yqsc{4R_G#0j1cEa~$~ZS)_w#YDGCF!=fERK`VG~oo$qr`Xxq(zd zXEP)D-!_PNP>w<~%%xHAFTnFGuR`y&&Tm2aTis(X^oirk!T35RmAV1Gz0PD?;4E#u z_vdaPg;MNbTaab3v#lIg5q}9F%?F(2&T)hico5c zY#B;@VHI++P-F{V`WZrTu83?g&MaXSqjV41QvK=7Dk8}VvW2dom+#Vkm@g@53<@hy zzM)K&Lf&BT({Nz-2_#9bNAPU44^L#b*d?mg%$qLUBBJ# zpJ>~Umf*;EwHPfA=#kxHM;LhNM6^2_>dfocMFU+EUv`kvqxm(BJ>t}ItcV$C(2N|u z!M9(wJ=;Wq?v-|8+)op}?qF7G%LQ~SVtP=N7PM6)=^taOa85Io?^A+F<>0>`kETDN zCDzV^SYUWPntJ^1b6Z`V1{c)o%D6=mc>FGtpqV?rYngYTTuobwy~u?5c^NCyzbei; zGDd%O3STzz{-DrMtB&kTIc#=bTJ6PbR8|ePLZ#LA!mF}sgYc@nwWzdj>r~qT#hG6D)lL zbR^yLc5H3D@y6zEY}>YNd%}&4jcwbuv9WD!?94a6_y3*KGj)4z-|4ElJ$1V8JoS_& zxi2Hjzqhy?U@ao$*GbMrt$+IWVz%Zu{G{ubB}RoFRCJsq{%ts*na+a^jl#bNPej z1a>shYElVUV>MG}0{LFL1_!gtxYz;rODGWE>LtoKx)wO|?|pELKEnBx1a7$mI(v0Q z!uuXcjD_Sci#|0ZXAk4p|IsO+9WevWJH~u#Zf}rr4#8ZjxT5lKt7tn9!BbVZ%(~T0 z&8gtOPYxZd6M5SM+V<8`&6qrRq21R2KER5W0+t{qg%T=^I>q80FCzU(L(h;LH zh5y9AETi3a|7XJqaXnP2k0--Wo%@YdTEOL_rtB{Eq^RU?adK2TEgTy{KF{!m^RMU{ z(^vB&ygpZrj=Vc|y1-bX_TjwYOgdCQ0Z2X-=8ZnB8t_}NNg>Kw=2A?b-V{OpVK6V4 z?lLneD;Mrcf%IhM*!tI1%{P3(uMM=Vh$!E`b7&H2yVeY19=oW%Qdfn6>oPpEmmP~0Umxxa{BDF}teJ|n|! z{&uY&0umvX>QIC|>O<7FXdqJfpkAf}0gRW{qs<9L&RzsH+%gapu*vFZ;#XA`5ZxFSH$+fz6C24>5kjLzUnUd6aiwwsaJzdmcmkR_a8O z{ewxQm!y{$Y>wYT%8S}k!RoM;n+8Z(UYdooPC5<9O4e{T$7?FedLj^8#t{-L%ViR! zX^4TwzE1Lu4XU(MQP>ty#@|ECm>D*0?1N)=ix`;UnK$IRL(-3B;#xRj6440v>h*OD zRP&$g6gRM$Tf$oLKHdm!-Hh*pH~#6hi}Yuq&T)w|1{*#1TK-E`4pqX@cf^P^wl0pg zib5%C7;VHi`Z<-mgAqMzktyhy>%f+U%Kh5asXx+kT*EO!({4Mz%}tWd2IV`>o|3|Y zgL#FBBF}$g6|poz%*p6I`!-4##Yw1TI7YC*K^DZN{XVbCWqm|7YEwH_h*s&>lMXS* zzY}13kjl?=2EUX+uHZ05(0|#M;(E>P>R)}j>G#QXw)q(y2DN6{Fe`gve{{T2+z1$S zEt!ZF`P&z%Z<&OjcjscKvTVKPoMz|T-CftCo-YIs{(#zuLxjnBWYSDXhbVlk%5(pQ zK>(vH(35u&XB!q6xV{PhI|FybtNF(na@OL;1XuI!QO6SxgJ-*!$H%x{5&^}qQqrON zUEK1=76tmPM|2}Fd!*H|^JP{(^PcIxJR3-p&(nXM4B;*Rb+R;FUA_5PTUq)1+zW_M zU=4Cf7DRS|*pZ$Sg_AOJO=jx`lCHG^FSzru-}t<(jaQ-(B^} z+5Ns~DIN2%wB~E`)|>cJ&Iha=@sI=Z-+Wo1fmODD+}Kp=Jl_LBD^VQB0LV|fbaUed zq#f$-Ssl3=7A+{$)y3+8{F(Z*HNZmJGzoa)P(uvymKNhS=zr*`X zY>I=`rC6rchz?>&eUEnM<$iTl`GI?pJ5e=+`_U#6;fKagINBMJ8jjM^15Y3F{qJe` zuFbRk3h^lo3Oa?3dRR^LGOLoX{Kr++FJD{D2n?;B>sTBoZteHF?heVwX1PS!6r+)+ zCIyig^aqBJOm=GX@|U-qXb;LlwnCU61|MT8{>=E(r^m)!)yhhnw~cD95_6UT@6r)T z#l`oW|8`u+VkmsnD^1yI4s|wjfffWeVUO` z$bPh~ZZCyA0%@!7u+2%U>q^hXonYM7A$MFms(_yP>+os4^qm_*x+GX51uS1t?pdWn zf>6lG_&uTn7b4@&hLFGCycK}e2YzVz(B2K|QmJ9Jzle zuq_tzdPwYBABe>7R*!)V>mIIhlenqf!C)@y3T)%%&7WBgWo;?og;57q2k4Jyth#P0 zlE($Q8ikhnUU?i%Xy4G(^HdBw^JL>$=p7D82YWhZ3SQRn_DiDdN9K`oyBR%83Zl2G z?7CAeo^O<-X4PgKY*_QNH*QZ}qX-L;kQeyC_s= z3OUk^i{`KAc&Tmja{pT3$GAmFRAp7TT_5z2SNMni9hcP2q^O-h%%!L!V6;6Z{MEYZ zXx^n~V3Psr21IOo%-i-*E4(@o$t@Y72?ziH$eV8}3Nb<0+7mPVfdagS1!z&#y%tJnE7tJ*C0D}u@@$`qDNy`N2bwY;C z#Qa(gS0_WbmlDZ*CmZbjBv?a>^RXuz({2;Xy&^M>sf2i)#0oENbGRe}VKZFur>KEc zHY-)aJnx$=S# z|H!aatVLRfut^$%6vxfI)oHQ#pXncEahk%tf34mvhw4NNnQeBg>j7zg6^DfttZ?>% zTWe1}{32LkOu~~iatCW^~cv8jus!VH`}aTOCNXO!|9TEjRrT(}a3m9* z5;Rg}A(U)Z44Thcv2oprX6Uhxh6=>wd9wsM$V7_CBJ!re2! zV7>7fjK#Dd|Zuc1|$!mh)f%z1x2G5WS)zYAIn z9%;@>A)JS>TOL0MEAfp~ds-&{K`z@_J20-o-L52Jtf*(R#`d>N=53CopNA=Io1&_k zHi=a0hI3(`;o(}FZSK zka6!xGcqVz3nX23nRpI5j6>5IXm&-?Kh$TP|ew{2BTw_KlxN$wt8W^Q#6-5)S^E5 zMdo2F&}D*edg%30wg|-NwfO8+C+7QVmB?)_rN{*yJmrRt7<}n1egpmZ99(P;lxDtQ z4X&>M2D?ekK)bK;OMv2$rfk4~9}#`Vo@kJx`_cCto|a}RM*@@h8IpgnWb|v|)N|?r zxVKK!MD0P5{T8L)j)F##3|28}LAZH@@P*%qs1FC!QeD?haa(S_P|LQG9LGe+0Z!!> zPKb@Voz?hdsd|@R(D4%EAAAMqSt1W;L5f`+jnZu7}T;=FUbzMo|yCd3h<6!8oJX?y1a&)@Xyq8!*}8 zYmso?iLH+m2G?UheG1L@z@G+704pK&Qhi~*SNX=Ey_si|X-=9PBF*_Z5kxj{_;_lZ zkU$41@R&Ygbvf7uPOI%pk{J)hbscCqApZmG5|_0-gY@_I5POA1gj5L=M;wjr=odrm z_W^LIOWIRtG4O6?H=`irVBGX)(#ZTlY7T(q+&PKuZ*r**BSB4yANJax@KX&T;xOdh zwkD8>LBi5{-Y^3fzLa{!%=C=gp>6=8C7)(Tb>!)c;G8!Dt+XFqMqO34fXZj(onzyZ;ks&lXK6TCDhp2 zOj2=y%w30qs1lh>K)3}oc0XWUmd}`pLDY^`8*I5Qc%!l5=_dHS*LBY_4!s}FM8M&m^aS%Y?61$u+4M~mOMdqh?V zA|xb#Fyd+$69}e}PU)R8h(#yPhKIzvCBD~jpOC9LA5b(;^2UlkH2eU3fU&qOc<b$U+-fR^|JbN`S)on_@bmDrEDu}3SR*e9-F`M4L=-$m79XM2VrY%v=|=a? z8h1Gxr(=+i)2bssER*-WQ0E24;N5tEC?(&yNT$mhc@V5@jDBKohgD3BV^Zg-{Uzct zdTvK&tZwtg$m46_x;fVi}b>Cwt+~!+awq7bpo5!Nvzm8U7t^aJe#`(y-yRJSlEQ@QL1J7dLq@w}K4-48p_%II|iiO2x` zq4%tKckq+E+f8RtVgsM0{A&_zgY+J9ut*W?wU3VjghU^v45(>ruM5LhLN=J1##0HN z&!FoTOTXFMpJDdIzqQ_dfwGN0t&(YZUkmF{)(D z(sw&=MTpWT?NI=hgN9;%%l_je5Jy}Pqs!synp}7hD+28p;^&*siG_8S3qn@6tY3N& zUHDOhP@CGHj9Ej94h*sSeZq2SN*K>MBb6ZnT4kn1+zfxTv(!%-yhuyBw}0kGZ*Shv zf0nU4rLO;Al2c9MEfCYJh(d9{tLCj0boPI(NzZ(iJ~YOE0lro9^@w1HbG-ozr>7q` zzZ|Y^&%3`sHF*I3pFq-e{@l<)a6!EbUUA%=wcbYdKH)8b=J!jb$=3B38UKa1Ihcxk zZW-?mDCGh!@q!;71Y|fB8Y7NYqJe0Hg`_zOwgyLJ zvT2cj5s9e?f4ko1Y3~)JD&=OVEsG(w5J6j!X#f5mQ}UpJ5Ht`F8K%V9CdBxTRNd3_Z7YSUsT0%ZB07(kuP#AHhvfcgI6+947A;#+<{`e?p<@d z5zmZx6GN9sy}rS#P|h^L&nRXm^CqMN>%;=io81KFx)y((sNDN35>#4Gotd0pHaG)6 zl2HmT%qtfNkuqpjteU?zRXtE#l9XKiiq5qOnbunjrR6(Z*VcV^=NWIfaI2Bd7%c4^ z?A#u~6E4L#@j|8g#yh?Zkl>!Hw3|=fpI*{QkWZD`6;}F$P-gtl)-{FdGCWjxO;fr- z%g!)`+P}A$4n$a@honsldEJf%SN)gQ)QUE!87=YNeOHVHlcKOAd$&%1(}ij;#;Lm( zng*y?u#>YJ_#t5C%y~I(XLHG~6U=+4S-9baJE`$Xm~{Aiv7w2S`lbO66;a zV9=8md!9tFw>UL5u`j5sejag)EcXu!L~}#Fja~Bgrx+(%&kDPa)#a1fJ|L>_vEDRn z==i=cF(&u!TKsqwhza)ar~_A@1U8SxtvG)X<5%Lx-5h~n;2*D_z0Ds$S{tyBir>)8 zNmTAuT5~2SniaQE{K>_5d#F}QUEb};E??4y$`hz zQ+2S3-MPkzb())F<>CF7iPE^L_krH4f0sGBAW3@{>?-GMZA|hD%L$lW9ivOfEFqP` zb)*|MVG=6GU_T}lJoK&9YuTi|C%=?n$p6tZAK}Pko(h`8HQz|i;F~WEPgrg;&_+CM znY|yXmZ~~;k^K3lR*%6`vMc4dwU}mMJ9gbEu*rW(e!f_N+^cW@xllDMW~t@Q%t-aJ zg&zmR#Lk;FNiOUepI$yYp>9LE4HQbGDV&Ewga zj#{tN$VnH{GT;uzsyoafs&F|MSo5r4qZ$xI3pH*RuTAcFVI||DO{rxTW~i0M5~Ohi zb7co7`TVBrWy{|xHhWVYt?W~m{9>-==Ig=P^>p%z6kZ&aAqBu8Kfg`R6BMdckbK`lzhJ;V*abgTa^)<$Cq(Gj#SGp`L^8 zjwU{Fr)6+_(L3^dsK1f!t}hXobA*eYJX?M4S#*b9NuoB1Cl#M>nu=o7G;}D{;$^~p zskT zg$p+%LK77hEj)giTSrI}SRZ&5FDuyK)m~iND;mpt-1=&jaZ4eEs?ScR=x35T_tA-c zem}j>y(B#9ev6Q))BjFY-L_*eebd@A4m`(nufEp(wiTR}8k4naN^PxDH@$!s7gqMS zg#+bvRgzm?fh)J0hxHUWM~$BKz|@LEdepHAucmj9u|RZ>5~FR{260l+uTXktjISN% z=-;U=VB`KhO-t8|xs+858J)K0MbP$g?`6H4l`~wE@t0+pdEMCe9y#@lx46;Ij%YyxOKAk6%hf0m z+Zo?ojRoI8+3`xu(_t~uPdwMn{f!!b!y%cqKeAYv29cwyi31bK5KyL&u1Q?6ikLJu ze>}Rd=C$AnSGS9ANK~u#&1;5{%O=vwt7U#<+sj8Z{8a>|7_4~_E-Cj* zL;gJIstp7bM84u!it{fMc{xE{2(}Na|w=e`jIi{qs zlOUkTbt*dDb`RH@f*aJ`SmH_W{VvumX(a{Y7isk+A*y}{o1+-N@QcX2hx~;KQxMEP z4^0k7D03X9MhgCJ-GVGjTD&bE?&$@Pb?KG`+9&-`?{k|H9-*NPLF`k6N7=h4rEL;pj#FxbJYkC>Zyx9S{Ibqz5O+TgA>(K+VdFnf2cLUL7l&rj z-eoPSNO@}qMJ>^#>^06v7nQvOq)6Za1^iSuM}E-0?YLqm{HU{74`Y91(x|p&%e9*z zO(5QHhi&Ocf3%}fua_`X( z)-c{m@p6W;ZeLJNc2RPUbhbBgAW)W~$*IkiU!8;kl?;5*l>(`lMavTI8o`X=F@o&& z*bGk;-VjX~V`(XSB~ssNZSp^MiGNI}S z3(8*z4awi9e%er|tIMeVObwi{gkB4Q4yl`3{Sb0$L(q@xmRF?XA z!YE}>jf(GuJpt_KxV8M`2VQ{E5QzaFE-W%h!{7H%4tjff>OtvQ2D>g{x1$1xS^+1k zfR)ze`==d=%;#4??+}#@(C@Ca5okTF!;&WjX3GjZFQif(cSH<%Mn?)-M3peD!}9nw zky6=WZmg>q;jopdohT!~ZeQ1Kqn+U!K869~w{-h6`KJV%$+8sqm4t~|b&ws~H4pfz zSNJ>m_G26g_8w~>#uMwFN%)&g;-g$($Xl?F+hex za_6COoknOkdbjAbF*ou@8i597n}@ikZz(dKw|vf(ciakx`o_N~zIApUn`}4!hl#>D z@-o_$@($a0qHE6%4&1+la*ihN1<%I0HbF!ZDQk2>#eY856k<(Qc{k@eTUs~qYv^0M zb^y;aeoJ@wzK_fNdJdc0DuoVllH*WhZf`W-rK3-joP@a(Wb=5k>nNGUAA;pSh>=CfEp|P^kzFpC3 zz`Hd?xD5DUMX*1w1Y5cQzO5gRs51hAZ_EFeU%K`PoJ|F~Y)_n4g~@n+vXI_7rlRE1 zbL^SJw(g9Qr0b33HY>MVu0rh|nz*Ai974gohz}NeR zLv!BSQ{d+@&--ZPXQ2sDvl&peCa`=(jQ7=E9xjQ2M!=WhFDFBwrxB2|2|%zW5PL-ov;uP01G3fyW-f`D zu83!LQrS&jVmO z@q|O=Xu+;2JA4MqTL6r>9r9A~UOoIJLN_sA$J9Fd4+bROI^r()os7!%q(SOp4Xzi6 zJ33g{cl{s|^IQ?tn-9lM@XA%}sw1w}$RfDHD>nrXA3jtCe~mo2 zZS35j*f4WjzkVU33ptjyUav~@S&Y7{i8#tx54)R*5J{=F+WAm?uM8$!= zZTJW8DQ#tK@BZ1N6T;0*9mg+X*#pnu0y!1fLB0I z%ca8ZqLiIy3yvl%tcQ;0+&+aYlwXQJ;a+1vE0kVBJgt z*6c05C1gwB{^t9P&4BeywV@J~@tLk7+vy1|liq<&*z$N(NbJrDf@>z8ja^kHp_w55 ziCD+-z>lKZi)!Oa1U;U$-};t&DAePQIX(hco@HSkj(j}G;v(5A2h98M3icH9rlCsW zqrYvq3@G)lHAU>qL`a|*D#+-vTXD7SIrYMZSIlsz3Wb+RMQuif*46`SczyjSkQm@k z*u61DZv`1QLn4@J6jxSOvM-R=od^nJDv4tf!*1(PdDa;onPfMxn0lUA9-k0A%cdi)|@ul@4 z7sTAL(f>HVj&I`&dibcV%n8ff*pKq69AVcuwFtd`yDx}5sZ20Jr>0<4Pou7Ib4+YT z9!srrFGRU@I4~weO?~#0U_yhruQ8KVU!++ql#dZJY)A-6^Gk8w+`4KV$2OQ}EUD`~;rftUNs9zr8bj`UwJh3w!AvS|I^f^#)(W-XF1FUnyT-@&F+5*VYB! zO?H3pR`5Y?XQ~)Co3^*#H2=a6r=lEucjXjT1Jc^b70n`XhOxFX> zysSEr8~YjtCVx0s^c_8l2HY^mkd$ejm(6BoK2IPG*|hTKxj9D^{D5W*N_jTcI~iV6lD@xc1|H+ zOZ1LVG{QZ3L^WnVOFW8%b@Uw7Tf-AxTk&PfBSWEP(K3Jk{un*Aq!p0`@qBH+_Lv!& zmN)qVwpvS`tj)7ZVEylLm6}=f-B>cY!OHXs^1a)Fub*j;eR^#i!{jo?{fp11rY!E= z$ENR9W-a9XFJ^wLp8KVF;gPqJ;vU@k%9{H)2G2d+M0H8h5=&_A)Ps#Dc zly5hyLGAPkKH|S>uMgBrQN8<*^4AWVp6m45_u~t;`^Wazx5g#IS>7+y`$wGn$39;_ zqaLD+T8ZO}dgvE{=>v@W$3BzQUk@-_>ZA%wGG>OEDYh;6<%lx%c{k0PIsJ4d=u*3*x z-tWqgOXk~VAvn>u8So+1xO8 zv8+J_)?TXB+m~c*(Iq#U$t-EHSJV{QYbq{nEmmBcTWqNytl);98$i(&d>vudaKv^z zE>r7#1gO#~e!ObsD!3b=24se$(p2f^vBt;@&0nv5egB=)J$gM=vaeRQhh4GANjJus z91ja!oJjwA(@2dBLsymiK~8&KYD@Vu z6uy1aJ&0Nm-n5j4_F1YE&FIGW_pRIKd^8Nv*qh2H-zv`fq-xpyz1C4aPBs%4Mkh1-47~Z};(B%q zLn!*A0-oWkX8!H%c>H{#(c&d`Qs<|>IG#bMR5+EpgMJQr^$s2>lg?%HHL?YZ6U+Rx z4nOkf-dLPOt6eknJr}U}0M!KPr0HE*haMe2Ef2NPEk?;cQYB%v@d`su%MJ}@jn^yc zH)D^y46__MYimL#$4M{wbZxtj@%KA*2bgO1bdoNk0Gri*HnU@`?pvMX^D_XHld0t1 zFH{2}PD6E_?KBkcSsI@uY6KOoB4`Q@xz8^jB&Iz5E#+RCAanA~faO{jG_Zr%mF&&) zC|eqcu-a5CJnGD1hdt8tc_T6&l!fF!2E75-+fjc?Ey9UM){VG`#n#|%vdzddCO%K$ zJBZy{vo!fcRNJ?qmFAik|R|mVfyZSMM)!G#AZSi8)}=y5j?i1P{p>t#nVBQsGd z5zw!W5CDNoOU*I5px$**_n#Nu7eLJ9lQ@! zPs6vhdMFWez`m}A$&MAa(n~(`->8% z3rH!M4Z~g_&#eD)18EKYjF1RR{>XAdV-{ro(^NvH{fdGlEGuNA>CZdj8`VL+I_WDi zvkCNmI7~$ve%?d9QVCeq0LK`8NiHP)szTM~@lJj#Cbwfhk0yx`;5#C;2J_YsltcP$O@7`+qMD7F8G7~D z4HgLr;ThOx`*&NbRB>0~7FM_#W+-@o=fX2iTRP!yoNa;KwRPz3rIcMI06YA`FEtt| z@$-vm&!(Clm8KpYtc^h(#ZyG~c@j$aJWd@xS8Lc`GuX>Nt1b%1h;5nHjjS<798-Uj zRlegPh%Rp<#W+ zzEb#{1f%W+yi`J-j6cW0d_D8WNCI~GM6G^T*`6N=Qf{CU4ldBMUQ8J(AoU$RCQ zraa_F|2z+f8L2ExGI;W)LK5#LU4=vSaH2uFqkx(E1Yl!Np|Z&$3J$iTpHp#GyusEJ ze4X+h3S|v{DE}d)L_?X#6S;BfIU~xqJSFcR6msPg>M4Syi{r_RGn|Lq+i8D+RST-! zo)ECFq3-o;3D_{J6vS3K<&2!b+GTiDgKN5XOdUdH@tQ0v;CM0oY3LX;avjBYGkrI4 zbf<&+w=roaHqJZD;@?n!Hyp2?gy4OH@o0mcK|=u1Q4eH0%u`+gf)QNN}#~H?(8g3;`trObUQu- ztgiixH~=oonQIWiajYT!8f=-gaib8%0|GB(@vjl>pPd_b@Vctemv|gnK5VV z&nL^X^nC-S5nyrEVl@=ksEv3@JG&9?H#Y@xWI9r^a@$B$`h-&r1%Ka0kvNHG&C=n~)6nw$TIL%Ck9FQ6(BjO#A+9j?J1Eekv@_MpN3fUem7 zz1M2I?O&I!Bv|4`c=k(XstxESXNle3ct=$4G9`7CS0IUm1+`1neUirMmj?gi^(L z)@PG)Uu)<+Z;gF#JE*09(!QA*A?G=N8t80oYEPa3)^!bf4M22LRQN#P%WU_TiZ`Fx z?}GaeY9j-ZV|k`@qY!ycu%TIBB!#|JDIL>-L9J5-Ut@=qr3T}MZgYQk z*LO8HGKHiCvm3@O*^|!DI%}dCv&$ef;;;w z2^VGqK>*==Lw2*gJ-M7C;@vKlc!$x3Y zW#(VKwpqHb{Z;k(`ZAuL>iccidS;0^(LGf&iv>hmb8l^om(rCz!xZw~*7`N6kMG+g zDZ-Ywd%{*OWPkP5j00v{)Z+H+Qb~qh-Y-_`=2Puih6e9qTA1C%?J>rN`wR~o4f=-A zrLFZ>v6c>}R(JP=W>NQ;bqeX9%esK3Ut!1iYhue+?nD7PJgs9hR@>FtdZy1OKd+Z( z7#rSQ@ctYA%i1H#s>U2{u_i4aU%_S?9df9;TgRqr()uL%l$9L^%>K%mqC@`b@`Ewg zM0cyaTdP58`>JPEfb-PNWnri~JA0?(%oudkVTT>f1GdjB86T?ibsSCr^ zStSOP!QoU}9bA09&g>m-jSywJFGo%@=PySEOa>gS!AyF#cWy54&&v7fwVfJ#Gdk~d z3ewS1848H0Y^5<&Yvsz!vklC;VC`$H#PB$RIT$AeyAWfw5iUxO;FzFicCcO6lI1Vy z7-uf9En~3ar*eV-^v_n+s44JO23W;1^dm4+jq%S{S4VJDoQePB;mSn2t0S0iZY$Sx zaWEo@gSvh+%+3kJWYqlbdl#=}JdD?prx4zu+?498D*#Zts+9 zpWq07xOCV~-3E4txTK4z3xYa5vLWjvkLTy>r3N`VkZt3pncAdFzUzhV*$*19Vn9;Qw) zPG0}Pd9%~C?kRt{KK{u}sJ%YX)bIdw{EGgGF-VokU}%>A-c~D#LN|$cVGVn|F`)#9 zsd?#O6s-ftAUr#?k^8JV&;&u_{%0u@>ha%x==dFt+5heJHs{E|;t1*sfGmDhIfb^0 z7YNq}H5)-qMP~v%Q$5ABHZTN*qDrGSFlU|hS4oh;l=uI$oAx2t8_fB4vo)I>QC}lh zp`sz4E7;}nL-0h5O-^_x7vhF5Imj(2?o4y@9R)0|&fl2(*ZOx9{Wt21@cydDI3wb1YW9xmDl}g7kr`(P+gtUC3$xVNM4=RC7DGKFNHB9 zB(d@GYA^_EV2tnLO+VpN1tVutIL^Mn1{YkosyV?e5c7=64AR!lT#p3$t_X(oJBin4 z5z7CGcm-Np-A*m424(*8I+rVRzwwEeqKWg4Og9?3gCyF?3;X59st|>{Wd$6`Vt-|O zaJK+k%uA1R0;x7ZgeM-iSPESdvAd!XuWH01$(%*bMz_GjBdM7C3HtbgPx+We9URF7 z-g2W{kP_obc;O3Zc-8yj?yg|!}Spz>Q%V)!%ub@q^0_Bue(J4?BckkRp zdGB7GIH_W=V?9lkaCK?KH1@Ly2_I*S_gxB}oiQHb^FQmMpOWyxO#?t)`NcU5ow%Z4 z?G%Yv^w(c`hMF;6`dx~vuuV`p`UNkdU}1|sUV_5E0o26UCIC%;d1wq`(F9!&1U`=B z^;|EJmM#g`pg&(jo8aB8rPp_!Ka^M~L626-dyU$;lw1=1+Mx5Ow$HDWNQDL~`ejUQ z+$0+wK+q&oi4`ye#~_-{_?Jf0gB0^phD<<;KmU|Jd*Kvpp}ndbujA#Vj0jRgKWA}Z1X_7dRFOCdK_ciaEt!*;sR_b9 zg_8s%jz12g#4U16C%L9@VrF>9ThzWKY7i&+nr;&^gVX>y0Q{~EG;zC_pqY7%r69I> zkp+wAdRi?Y0}PEqEBoo|j)Fr6sBV}{qK$*mG~_Nij)I)MZX)vyw9C0uet>fbQQk0` zN|p$&Jj!LYz3HWkesw~^;&9D7Gnu5l3i8Zd5jM#A1H5?mYM_nZUtxtK}M1&Sd)Ox z^Z$iuTs4ay=<<77#ajTWdIV7J2TdR?FbP52DKME+go)fFHUYZHq=x-V z`6*LQcz(IH+|bQ>SfAV82UWRy7?%JxmmyV8vxU7RU?7rZoSVU@o8)qR?UXlqB{-juWlsI>!UzNd(stgY9++oPwXI z;23g&XgmiW-%zNNLA;aN_TL99AEo;Bp%5uP2F*H4q{AumrV;gE{uGyS4i|WY?Sx|bvzg6k zd!%8spB?w{}ML%KxPUf zWM5Ql_D3hY+16u+^2~*@%w)13u#S~(r44rn|h)I9|CPZVRo zVK=J%t@pDG!1>#lno+_8&E;sa#mnaC!|S&bOqc?nq&3UM5#Fspff3QYlfp8fesk8g ze6U#xr5;8rje{4aY{kPNx9t0$3P#?%s-tBvoI|LQOwTA)$du>SJ3dFz{`Y-)7qfsW zsG$4EMXMS42o0FonHEmiyd<(lq?{CwhAPSB2nH2ZeHXmi3A;?D4#`;=))n>S zjE%1>*CvXi6Jx~$tCqY=gao<~y3C&p@OBQxIGs%5wy_W8%+_gOpSt@9RtqwhKZP@$|WZ&SToVd?$GjQpn8l{J?w^V zw1)pO(y=uIq5{Iay+<8WsU<*@R$ukPL=*eFMyclXZMm-Ng^6|>QwC%c-h%Q`g}3@r zO}!)jJ%%Mih5AhT&|`&a1bV0HFgT+89hpE0Qp$0 z%A#|2UX{rv=9QiYdjX{91l?DfcxwQ!&WBNH60QY(F`8FqvzS}F27gv3hNx9#F|k&w zk;U6sXdLF}kf@f0_4=>?{HieNxpTIjjc+dCIf2%7;63l)#IRjgO6g`zL+k*?IVWyQ6!ZF6&D zV`F`7b$tz@^18G1GK!Oq*By;KdYyQ&T+2-1JTH^Li-ul`K|M({i~E7sj|KsT9bH6M zK|JA@Bj0;^y0?;~wEykRt(47`wIbq;#F`-i9d-Y^^m9SV0k zi~UK0QBDN^+r(o=^pFvQei}v-57{vUmTfeqe*e9H5l|e{dZQ7JsbaISv<$`5;3i$h zukr0PjUJ|>1b+o_3?0R9ir4Xbay#iSOTg7GHMk4y9b*X4*q=ZX33LtHMIuO0RSvPF z)4;uL3Jr7b-!eilp;4w%m9EN=j-}JaSOJ@FPbW8PpjBr{x+dZ~Q zw7fLJs3{fig##CNyrYSi%=-NxN!mzms?H6Vk-!$+BRXGeQS+ujU1o4|OCg5ijy6msMMY9TXX z@E?pBR^0_oN&da4|2Uwteu`aAy$4#HG#X3enTPYd^I`^~!P8BS{aau?3G)NKI(bC} zi1D}tv{n?DVc4$Ls_ z(R2zJruZ8O$S~zI_NQ-{Ki|H2YjGeVk71F(XqQovZc_)B6q&MBAK(il7`;Hooy9Rg z8UcXGiqIL$0Nwyqw@xsuRsjcw*jTbh!D-5Rfh`&M@}f691Ze>D!l|Ahw^1BsbLwRo z%KP-`i##C8*R*qy1;+r|)bpdsi!e!u`(XeQT0_ipAjOWTb=)Rz)vz%~tfn z#)aZf%ey7K*&Iv)n0MPAVg(`-1f{)hTweyT&UW^~#6KSezXZXwI|{F0F~e0nNdLXD z6b|9LkpMJR1vNyr<$d#wjTE$uP4`ml7l48PqU(v(B#7OmGzO7_qvsI1g=#d>mghHW z6pE@#{XTWh+unhZN;?BbOdyQTE-&cKmKrt<1pz}hu=-aZV?v7B)mk_FCeZNcqtV5& zJ$QrK_!3S_tTFA3XPtwn|GtS3@#(uZ6hxe2ianloXmY;6_TO?N&~CpEV@V6{VQ{TT z*W%Ymt5-M%zC9{H{3)(fv>brInI$S*Td5?TC^l^c1YZh8Va7-Ay-Ocdh7l}!gIicQ zp#@$#JF3E7H2F5AhcHN}Tm*msv=)v*TMFWU3j+FI0sa>Zd6!pT#=K$_nUXkYnVM=o z;7g+B%gIR5Gf#R3^N~mIs|=In>)YeGAIFE$uHU~5NT>*y3cf=+5N`p(r?3S`alYVK z2ZJK+YBll*{J4TpI)i8uFv_g>oCIlni_n^^9MPnq9-s;uPKdofx-3qBfCJk6jk&Wn z3(w)X9GO4zo)gzty$}Ekf^K1?v(dV-2=fhUl(f8vnxQM31@;}r_DAEXAESI}Eal{1 zLou)D+Zx8>(4Y8q*t30a7CdVj2d-!|VWp*N2a^ z#GxP?umI#C1A2R&y@t|Kcm+!)EWtxil&Bn1hU+$#a5z}x>J_oN1``>(6Jl$~L9|2% zBbb;~D@2whv8S1iW|lj%rhgzI&ddjbfw){W0hUxh;A0WoT^`@i2oKEz9g!KhLxynz zeIDdQ#}b(|1|J)GGJT^^_%Pk}rfnhyYE$onrZXHcr=UOE_~#?xs`2x746|Dg8Ag!; z(;@^i{quGNw~L79(?HF}4m7DJwA~FEs2NTHy@*{zaWsP&8>q4B8!ERv20C|KJ~Rpz zIg*OVJERN_Xf1$pA_8#!V;?#NE1&Lwv)*A{XSEu@RwxCscQk2qw~;rv1w(5rC;FH$ z95+E2F^#1GE&pV{08QX9s~u2Qsl$Q8tt?0-YoY;FaogPY02gN=#5ESx*g+H|zTVUZ3DshwK z)TfU3H0b*PrXfNs3q|nu2Eoc;HuZ2zPHHrYPU!SGSvpXHCSLQLL1BBU+WSd#tw2xX zD2@6c4%&nfOdk*nxPe0J}P(!>E*>aM*( z1NQSCq@$!mTWmCW;P3$mUN(*D>u`RBng$KAmc|R_u0J^g_RKGsWts-fT4xbmVkwJb zO=8yG1yOSiR%PJ5wCk3!=ipNIRbJ{@?^{ZVK-mkT*LuakwsCculD=3jhXqIh;#!7k zAqv8=31b2;fx1fWx)QVAUg%k~Y4{7Tf@X4wh@X2W$ zbrk}$yqj$(u%JzKkEq}A)+pR1I6fOy*^o(b)0-gt?`OK9J1`ADC zn9jDn4SOyV{i=GNU*Qyk+Lk7)CofG$Hm^8(hdj#7KgZ(IG9buA;y~ah20)R`L`@+J z=N*r8Yc=hsG7=2*O~3CHQ_o~Ps;np4a9KdhjP8ILw=yFu)W$Kf=&e!0ZeLv)ebb;X zyE)M~vwI*|Uk@-N7*raDBha9aX0~+%K~nD##weIHrF_f#$y-%Y(;=V~K=5Xc7#^mw zig|?%^h@jww^v2SVl!zyDry7bfOq3$%Jq>y(d?4an))}KDlik+6hNwg+Bc2E(J17N zJ18d?5m^gy;pdf?w*9muE?D;ubepbZqajLHPfh@S_*DX1=>;vS+hJQ+~kBpL_j5h`*xDrCsk+S`a_l(%b> zHqlkjL5#g80CIo;sOgh}j*$d;Q9z?#pb@*dRE9ppCic zFrA${t6cLew1!GAAP`R8Y_Gm85?|rO2rUr&3MwIrmG!iTA5hUSFxuaS-gO}8qN0|1 zROlZ;Oo}HB@W{v1ducF6zM96sGLuwq$Di+V(!L}Jc;q?_HRnR;4d8=c0Tk;<&?+cAflT2rH`049XhVxL zgSG1fwPDgxErT0u$Uqc|9itFOQ5CZD-?KzRQN1r`rM3;vYOT#!po-H&%8p5lEK-N< z6j0Bct&l-Oo!S9!O~T|7Q;<&N1aUYUjX+O8Mhx0YjikOlC4^qEph9ulU@%(@UC)I&EXhkU=ABe`U!%8Lj=BKJDfTDZwT) z+#yoO=JNr($*@7Yq0QdJT7{G<>?_ndn!pOf+%4>>F)BfU-{XeZMT3`7N;z6>!lZsX z{7=&aU=W&??Fsp*vmeLJmZ74-x1HfQ&3f!SB|e2c|7`L;!JNRb7X}@irYK2B@!cVDKbZ9c zI)6)MP!J~n^IdHN8~Zomcs9nFjCGSKYR*$sLtr*YE70Th8_}@h3tCdcf1ncr$c461 zUoJ^|OXLU^<(L8C81EF;EM-vPPACyF2%*^ocl1Ell+?xZNTkg$jB(QdHAu;02&5#< zXoE2ft_dl2QUSaIGD(hMO&=q!IAE6mnf-m(Sx7Q5gN78Mm_h;C570~q?`}!i;Jt*X z5un?L0a+T2@5a+$(!U(Tz7rc8z$PmmqbL;_j3dB<18Nyi--pGX*>4wJFlc2HSC|+O z9C*Pbnq6EnTGzaX5JgT8uOi+kd>;^RQdVo)hrfA?WNYJ)HrKX({Bdm+HTNlKgu&n` zyh%=iu@3|Rt*oUyUT}zZ5#lLOX;%oh1G+uzjBuS>^M3r%13>U~-F)3NU!Rz-Yg_vJ zM+@>XQ2}6fI-R%VjY3W^P~pR2aJ}uJ_5(|U_T2gK(fgoGvrfO(uuCoPmb=NcVN@dY;~k>#{Mv!UJL>6-F2V+2)wnzsSvq%n)<5>zt3T$Ole-ieaAZk0OQ`otr!{+jAqNb0>dI2`D z^YztoTUu(VZHX%^aoR?pru&0eafo}2b06(}yjoCxcvx4kijrdpV&4Z5>cXM(0FvM! z0QS0PT@dZ)YlR}*m(wxv1Jv^TT-P3iS0UP1=tM=NhWIhE{3H1?3ekfRJtfImF$K+Y z9E>ASB-LS(Zprqt0WA=B-BcU*QUbt|mAA}Ai0b4vi!7h6o6Z`Ww;<{P6EGV9PpPA5 z=m{T4Pf#f(HdoZalOL-2X7%lx_-$k9y1LRe4vbX`$CJO}e*euiKp^xT2uvQPaKMXH z(pb_wLbC$fesFw-@^Zr1Q zmzH$cLK4$rfh#{8;faJg1v`hWs&2SNZCVq#2`$)rf9T$Mhv*Aab=5vKS#3LgrJ0EY zm@w@_H0YpAkeQA~QrN%=u%9$6fA9?Z2twn$Lw&}d&rpY88G{0VWD3ybwmEHkstUQm z0EMS-CfjJ)m3F@ai2}dQJF)pnO|I}SvmInbg;Qhmbc=qv1J2>JoO zSB5Y1*xT`35d0DkZdS9a025E2bQN++;po_l*f7%>pw61jF%|{h03O@t9h|%diR}Bg zBC-zxB2Dv@XIp3DO%*d# z0;M_?Q%V?B#(vt$O%vB@VYFzR&Llb7M#mJl0OCvU4AufXlb4qaMro>%M@BN5N6?e$ zXqJ$?_XmRz35N2L$Z2F^8ZijbwmaU>(KQ-A+e%2@8bn5*HKRH_k)Gfzx%MYwXGY~j z7GgDfv@rh3qjEHF=-ZC#HYi<}E67&5}dei}3m9v=1#{|B+R7G20J*s_j2(Wb?_`f7aI@uix8$zQE^S z#{R>~Tz7(=z`KG6fS*m|;$;JPmOY!qGN@k4BY+66as!P6kcJxFpE zjsx73WD0JYg0%bCWw)3-#7CxS+-99B{XbW5OBXx|hPX{)!1;oYbwNIFD5c{QQ!pBn zr4E&if`Z>$1!*@{2GQ3A_a~Rw_;0|%yZ&gLEqHE?j6Z<=8?3vhL4OAN#;sGZuL~j@ zt*xD~)9)bH^Zhe9GBUpmyb`5 z&W?7E4sxXxt2w26hiCgIhuwT>i{EsGHeOLj^aTJ`{idR-52}sPJ92gpF_rBMX9rV zvj6NQfPKe}Sf!aCU7|1Vb`N*=5A0Hg84XExk6s*~?4O=u65T8k!j#)C*rUV4{oS)% z;S6Ik`SuTgMl9a_cJ%V(-EQ~bg)^R62HnQ-?C$OV=gaOH&}D!3--vs*Kk% zK76+Z|2u(-y%Qq4R=l)KY*ck3x+olF>9MUkhZAmJEI0IceZK#kb(DLXXiw<5g^~r%z&1|`^9Vo6FW`i)2S0dUU*Uhip+QF>h2IgSwu0X(oy66U3!$pnz18`? zvqrixu7jRZyk3zH9o=r)8!|r)=vG!566CN~y~90NBVQixfe2P=?<}ErLj=`lP;^en z9(iemzF&a~cTz`?puN6$d3vS=N8kmacIx5I&@o}Gd=q4zwNcZB9cCN>9iUprd&W}@ zDu7(1bEh9voWJWQ1y#N0N8MN5-`KRS;_&m!KJi0mnWywc)V=m^kx=%u{-Bv9^S)eG zIr2#yOdP5ylA%RmSwt1q;dbLdqAC+B6GB#!nq>wpJkjKWM}qn(_%tcxJUE|ST#(OJ za5Ek8NuhUrd8>{*30$K0MC`au2g>YxGE-Y3vV#&ir+$oa@JJPMBUQ2ix&R_0Ri_gf zl$*quZE?_o{cCbb{#rm&6+Chh_zAhWiS3NEC3KsF-tLh^gbh|OLW?W8a)sxkz`F{4 zRloUwYqUDlqEs0NuqRYbbB4@DYKxFo+O7aAr+8yY5EVju96_XHcT6vBA)^~D5-~+n zp7xE~UcowdwXNp7k{*mpOGh0{lVCQ8ehxsZigiyh*j=NOD^VA%aKb@@3}EGwAb4N@ zeYq_am14msL9^+IR-NOy7?l^Ti<*W|6FGkU47mxls$#T?3N1=2!Grjgk}A|e=~rCQ z=i+2aeG*beeJH?8JPLsQUW7OH=$rw{NoGwShc_rl)OjJw1dwFY2u&wEEYflUYdykb zfL)XbC&9&R+<-QoziSCpnj> zgSv0UoA8>wPf+FWG&q!Aq4GYMrtF*-sZ1Z7*auw)SCp5>5-DhCR$dad)tg2kYOA8P zS;66~ysV6ZE7+`3Gep6V6AMYfb2=JSsy(*NWQO`3ab3WTmrCh{V04OwZ>7A%@(f_7 z+D}KI+*1A_?*SFon%IyZv@mB3s&_a>&Axv6!5dQi4F-`8y?ib0AHfH~8|!pLOF>|r z3GEf7zHAl0`9>aeCf<+YyoA8jL+7}#0Lv8p#)R6+!(!t71odr9D0Gk9oR&jng%@ox z#SAO(#~aW3m&?4v1XRVpA%`zT9Vvvl%tsR-kN?3)2tzfeQ347thhI;E3m?C?6blqE zv~omIr}LakKzu3_^i?I#c-ca(|IfzS%33Ek0)v4ehzgXz$~*?%chavWKKsd=kYhm; z-~8mQwxokN1n|C*NpxxLzR3yypO@Y8{xk2h$oh{v!n-H{mFxf7#-p{>od5s&Dwh8P z`kVXQum6AQ^}qc5m!v1~!7U;itYNDbCLH6*CL}g9*+E)y`!) z9{mM=bP_SfudQ{~Sw%7}qP_Tub?8lR(3?dcUYW9T-2KdSKPf7*CPj|pFrp*We35l2 za&mfR4vyU-8&X7_Fcv`BR1M9N%i}m2hj>=t7I~zK=oE=LC|gqGIaw?Vi#(PhYzlrk z9iZvNE%HQ)>~icopZT~&zE_9BG^*B-ur6i}h4nC)bHruTQ1M*ProTGn{CU5-w|{b~ zUn|;gtMlRBkvbN13C~B4@Y6aVb?7b-)S0en!4Q2LTX=c;^Sk4dqZhr?eNzSiSRFV9 z0Qw!1Tb}{530l9kDZTA2I~I0b$for+9kK$7FX?Vm`#3W-<1qI?QxDCXbb*sYb!y0G z(`UaO@0$a}C(Tr!A3huT7YR@D^DrIz$$Kla@DN{`prpVj<1@Uc7alMUx-Sm`bR(lT z6U)ksvs$)4+=$F;Je2d3T#WFL^i4m+0DO@B%~e!P$59Lf;?_V?Um1mxK(-K4^Gf|t z3Z>8kN`2#9kqUXGdW)E?=mf_W+fpM)0_d-nJea=_C zsz5@_DvZAi3+9CoSFoR#bWk9h$z4SVt5^v!l*EHag#wR$VfjMQhm$YI2ixc&Vf%Ar zc!4F_ad&Tzok>3CM5Y3p<%Vsq5Oj_s1OrRv=Gj6CUX4Z(TWn`#^T)jORmfVL0qu8p ze{ssQq*Y~wF$&7LB2$$w=8JqcKNbpq-D(ljl+Y^2IXQZLY^&Wgi@0MxN2BAkL_PE_ zU?a`R{A}@pc9^MuJBobDc|d9;haHZB$pxBhhUz^B*!v?`ixLk#YewGivU9-2niSPZ z(S@WugCe`yQdTAlDT-$s_F>~qG{zLAZ2)8AgeUT|Ny^6*R9><}v^6H$ubrytY~)5| z;MS7dB(h!>s}4joe8i9oRR}60kDOwzDnZ56Bd46JQcyYl$SLS*7F19@avOFu3~tyw zD%LT$6g+Yuxw;0G;YUs>SLdKo_9LgPJCCTW{Yc6x6$BaPnHeNkBe5BYwUMFLL}bKC z85tHiRoE&CVeyhZt61oNv^N+sH^lJyJ;#B`NfG90fN7vK5el(WXWpklP;;+gHDhfv zq+Mf>mU_Vrlp#k`1A*f&V5(z)9D;xyE`^?)_}9-g5OVK9(QzI)2mdD& zMTM}Mpm*7$fsq?$&gP4|!^uYFfI0+*e`sGx~lS=)N?)N7(j zy1v$>(Q3su@n zasMIv1rsEs{ddRP4PsP(rF9-r3{sC$sigJRHgcf4nIQ=T7@e%bm(@<*kBw)Yu)VV2 zUXpd55}Z;DsQN$IiojO`YjY@apH8i0=7))>R=T^h2DJn!*!|cu zQ@i3^8Z&;TUcs&jSEcirgo<@I_NB1|PdYSNq{i|ayCt-$Uv?<)bPru^n%_YAmQ@R5 z^qb$l{nlje#aF8JMj3h*L`3Oi2J3 zx)Qld;KCug_8acxTh_0+)wcqa%0fSvm$PuCt5|?RTN(D2aMSxtHoZ`z?JbMfE&*4V z=){Yc+SSg`G!H^1+z#!SO%*wS$rq;pbS}$6z~PGr4r72K)_?yit~X6}CiK;1hZi90 zD2OKyFF)wE#JMyhjQ5?afc%CZRD@53N?Q|$5zrN|HBU99QbDs^;At%DE;Fi_S_kY# zW-lT?i>xIT@RBlE;CYOdL83ID0`o62gky_zZI>;hO5jwqwC)TF6djz%5+LEzvG}a0 ztBf3s0mO?4Huf{pSS6DadWN#oS;wrCI!_xBHPdc0R(S-Fz)eS?Hj$rzI^|du5~)lJ z4^*lJNz|xbV*&)MVx&x*Y4riVZhNs|t!xRTt)giy9N+0Au~PWiY&2@dxEc=MY`eqq zwlF)a;A+AD@KLS^FiN2P7V7W}LCv=*-t5@i>f6?jKdxzt>Av$cynx+d=ubK?O*@aa-?qGOJQPwJYZ$Ce zb!qw#SUhy3J)w#aHEOL=V(>zq^2?VfyPa7;i9acqZk(_h$G+LcR{f0C9_>8Jq5^h^FxVz6UT$Q_&Y6y-Uc2`_6)o_r z9U0+7IUjVo;M{z~oI$>1)-f8|w}}L2Cmx0LQvyi_sdCrx+4OmW4sDWkl1WAcj)NIr zX@y=9wxo22Q%M@quW><=oqb~W+1^c)W>1+~0*X8ll$GlA#sDhdwC0Y$pmj^9*(9l`@Oa#EL zK?Y+J_%1i|keoDJ0|K-|fiNo1BzFqC&f_j7PD;r)S)nwcp%wZrV}p+4ocVP&(fJ?6 zT=UR2sdt#H4s5M{!zKV}PXU7}oP*am(86GB-ed$Er8Ti~Kjw18@> zb~v%HX^m>3k1TD9q%sRN_XfRhRXcWq5f1g0#1E2^9-q4%xaL78J%JO1;%cg5p!g0& zUqUe`uQ9ZYo>K+nLd!;;mM0|E3Q1{XFJmLOCMqOw_ELMHKS_1|BQXQO7hHtYcAPK4 zAnz|An7Tf19$~4nP25EZo2ta0tr~%1E?Ai+uys}ni2*xxq^vaY*aiwIk1k||8 zR1jaVBo=u^owa3_X2s}&55A1XO7*P9GRo*u7MBO)1<=_G&;vpikQe@qh&0&NpNjoM z-5Ij(z39Fc!}q&`9-grF{%c|4ogMT%y!5&u&^}23%A~jMTC}QJfbAx zeZynUuh?9rqUH3`ME1E!c7B0&Iw8THpH8r?8M164uS_uqj>7>;ZOSjJ_EMODon0{5 z#}hcmIS7Mh+~2sS4?;?1HBojSNfS6pAETa~Qo(B^cVQQtkHF97K{jwU0&tZ{G^Mze$h>)0oaCJx>-+&w2|eWRPKJ&cLYjBP}PG@onA)5;r0YU(?QYL8f4Vu?AU^B$990u z$Sb;>qv_aRv&EpyVZbLTag%O2%tFak=_rwFU#kWj29Nm~1lW;{uJBMN@o!P8E?>t{ z8Z3k0CjWOn@<3x0=kf!sAEVYm`~`G;OcyKoeY`OXG#)epPSb%kHyA^P2*!nK`4 zF|XI`7+>jZ53?gWjIHsup=y1n_`)D5Y>Rgt4=L3Cdb$lX3rDioP43M_Z!fY2bdwgr%8^rck+i01Sa&2ahNs)oC`A3o|p zQ>%zEIt`RBg{QqLEG~B(L0T$3oJ?cyf&QUz?b{+%nd5b-4^BeKZ-)KOz-|*4T_sMl z#(2ryA$Byq7xJ!UAB0j0EplSd7y26Md~GZR87sF^Ymt*lY<ZFc5a~KHpa+#?Fq@IWhTM%>3AgEo3lgIA$wjPv@9b9 zV*#?aJ7&h|(*?r<&NhOZmvJRon>%&UH%6eR3;BIeW?XgXAd#Sa`-IpaL6;j*OehU- z0eADcaSjGj(o7U_6OuSv^3aSlSe$GTD&GKheNrcR4LVPmr_S(EV9)Zq%8s$M3r6lO8|k*mJ})>0>R2l~{2lK|jTxr0 z5nnf)is+H{Fqh=4ZOf82-P`XZ{>jU%1=(7K zRt4qtORk=lHqjg!zZT)@0>1&oR(lQuf7ifyXl|*^xT6l)Q>fK+G-C8%CbAg)%(PfU zDAaQTXAYWFK6(Z^s1a}}((J1&J$;j=hn1g_5l|au0D^8l)T5)A2DctXgs+rsLHH@F z9~SL-Nw?uGZ=B!rwptdGaQN4b>+pxc?kxRnn}30SFKcsHNMLuGj^9Dc&4gzAN7y;C zSS`rrnCeq*IP}J(l>M~oV5TYD|6wSc?@edtqp&YYn$)?E<*}=>@sW{k1XaRRlmML= zPc91uVMg}u*;E3T#(eN6p7oc(Xv*tB!dbW^OH~+WkD`i1ip4}$+Pk*GTWuut%AFB1 z)^Zpt#uJJbl1vfUO&23<(A7(B$tp{X4N6oL%Ed0T_8K;JB0^BDYs&lTI-~X zgmuATm(R&1)9_*jD@P%{vh#(x)1r{dm2S(|h9hlp*Q2IT-uC5AIkssIFWJ7Od{k_~ z?syewXF+QQeI+x|KC5`L$ey#jRq7K%J-FrE7%!L+;Ji zSZ2sef+dPflU|Tt(V>^>vMQDDbV~_4?z8PUSwx~w?0Kep#WX1DrOBOG(FgGvEs%e? z(W}#iZ0gvuL2|~$CSpsB>ItY%crqzS;Z-|+;v7RH?L3~_dQj*TsDn|Eg<)Z`lP?-B zxf#Urr7bRHA*~!~8}>X>u2RN?L}>(XanhfMY3#?hZHg2{^?OAQJ9zKi=R>9lD3@{) z!px19zI~5U{h$v!zLY_m&Ki&DA!=u`7c0tq5Z01|}+IFw3j-FLWec%S6%F=9s!ASe%2b=q82 z7MU3l8RL#U{f_yryd6hpxCnl@`-j8q$~f}A@i*iIlVxL*^OS-O7FK9bXCzLI#4^IB#KY7} zq`~aquR)fWVQih9%|zhcoE#`S=ziCQ9Me@^;n=5 zOx(*6W>{DAJ(_T`VTPNGyzE@0#?^LLR-m8FD2X(En-xv^RjyQql8o9X^5=fM7xy|& zT%yvURwWKJn(Y?#_Y@c5l)HGk-RhJWQb+qfR%l<#44OR+9i;7ci#5X>F4m7jJu~hI zvzA0$HaTo#CUOcpq1DkgA5F_dP0)$e8A^qht~SM@1xs0E)bVmcjiAspKhW4I_UW`h zb7jk;OS(LR%WtAsBluqmKDw6`#WF4K9rU)Fw-iputg+kJ0(bc& zoq6g}TZ6F>jPH)C3wu|D^9n*H3|!XND!Zf-M_ANVq8-Do8bsC;R&q0>OQZ7=WtN)a zWjr9{O(w$BdmY=$Iby~*cMGSFE?s!~{wwy8=lCH<)`J$;Zi^XhkVP9CSLYVGJ;jWa z7&`1!SfciyfxL`vo~l5`SU~ZP$xBKiem-AQ|BtsQG;xvT<3xOI)DFStQ#0REMqTka z#Wi9bW9aJ%2gA9}#Z{ZF8*zCeyXf^Iyc$kvH!^HYjbb=5_QGmJq{St@coR(a1b0E5U zAck@Mktou|fA5`BTJM$nhc40TCc;p)`eWU}Bl|_|+!~R}&|JMRnRE|)GQ98^uCkRY zEgkj3Y4e9E4)U}co%u|)I5G|$#KdY|u-~A&u=PrIC9~g-7bJ(&oL$<bY$P2A$D zLI1wz6r>sj=>rfIcSHl9i4k%0Ps%=e`;VijA~ooYVgIeRxmMo1gt2`%n0 zbRF!}w!6w1L|3Szkd*ahaVw#BOLGZmgbO(OCHQV_j?Gh!cmmPZ8#ALb^Z3fQ)ozs}N80%vx9dlUjS z1WW3XU_1@d=&US?RzWG+r=Ke+-6$i4thd2=p@VMi3{HajnXQFD`r3~k{~3XQI!fB% z@F>Y=5ls@$P`%Jd?hYI!zl=fT1c_=!cG;x1Jl#6jHhz>aoXDg~sJCOK6He%2({1j9 zCbr!NiCKn=1v%x<5xL4qpz4LLLZ3=xIzMpa@E1Ys!%lovHf6D6ft0B#mc`6i7 z1`gnueHU!P4X!f9grAih)^xd6L|Ia9)h~(8C=tsx2)Ug&B9VFO4&tWGHCj|$CDxRm zoz>4SsLIs(DI*Vsa`igvD{>T`+I2)~x4NUG5Yc+wg;hbQ6WolQFAw~puK3<0ADkZ0 zr_j_-%1E+?qARJ#lRjWok=BYoYs-;n|5ZSUJ{q!fNG7`3VKn1mTsRoJn9?1zrRFh* z9&$t~wNCappf2d|B252Q@1}t>Ht{JkOo7k|(?FktO>&lBlz6O$OfEP@h+B*Ia;gGA+# z`%@qUcphdxJr=*k8Nm2;zYOi#Q1;#dg|cUN52C{e{`<8C&;JF}FRqGyr@~U{fWqcK zt=bpCSUJhIdP{K(z^oJ91N!qx;UAx9x|h{Jkkf0QTE?x`@spx?I)k>&A($%2c+gdb zWQSMfupaM@!@_HZ(Q(BDg)m97-Dc4G$pj8Q+H8QYLKk+7E+yUh|Jjk~5si3EF7gby zl1Vbt$Y4rGr(Jj$^#qTkbW-4@g>4yR<ducO|#@VnIgtJa0ee+?`D zRV$PB5}KwX_E(jN0)X|BJX4*jB2A}^?lF7kcIJCr0dyE%Ijn3@KPW<*NvH3!!TaFc z`vbq>-XApr!4tYc4n({^a%5nM81_?QWAM4|E*0U6MLsJ6G!YIPnyX`E^A-%h)W(k> z`z?QWl-c&C|6f2U)!_usn4i0&}X{yLY|;1HV55DL{?qSDT`Js5NbCOYLDfp`YL@xW$g`gT%PD}c zohVRnxMn_Ixv`EJI55lsnS9V7XUw3@-$p`j_|`8K99cSZvsjkQJ|Sew>>4f$Tu5>< z^=8p#0V6nQ*mxV`?XA7xL0MN^r|QH?UT4WFOW6hu`pQ=n5h?o0ZB``u___g);f6zN zU{!%LMFLic#dLyEg5(j136lzqVXcoCwt`x3Z>+F_|08P z%xv2vHp4rA_R3@{VDIcaC_>d5q@U=2wK}x6;$}Z zGrM7%Wy{&S!@W9OHTnEuu(j)jT54tQ@PUZ3Zp9hn`Q3xV_W>+hJrUypVbIx0*&r7B z>-xi0F^5&j6}RenzJP7B-wMWGDJf`o%2fdY!j@loSU^kWyJK$39>eXbRI7 za^xodQ39;$g8m%ror!xwmpckm0VdeBSx4In%qnEEV-Tgokef@Baala{2_3gEh<9e< zl_nZDG8b)x8#h2~*2!9r9L_>AXj}SC=%CUI`=O7d5H8^)R*(p3&lQXa;9-QVs`eLM zyx;KVtbVp(haOLX6`(G7JTo?rP@DxxOQY<3q@q$d&y~;oR+o<40dU{!HCzI$-(FHz zPS277aN`eJCRQRnZhv;uvrA!{awrBog|l#i07q0ZiD zg}V(8<5)5*#8p>(kJx;}%A>yK6o!6^U#hw>-pq55s%_nmG;lVBkJ@Voj{CJNj?$9K zVXAN-%z(Hfi;MvDq72STH)N15%W1f3Hj>fw>waP5vFiNK(#0j}J9|Xice=g3``x_< zyWIo$mmRhX*u{!TfxF|xxyb^pW2Yp7aN&Kyb4d2tEY)1B8Z;&QfcDDeC?BUyS`a%v zLXA`=l-)kqLn)#FJeFPYp@}wk!M54HkRS__qvS!ovsaKZ ztfO|OS=ZODMpo3=o0^A-@d1@+3L8Yx*d^WIF8<@fX~s67gBP}A%9O4h?%}!zU%4^b z1Gamt-I0y_B%LARO2Ge?3O>COt^f+QFR(wg%}`=iCtNUG>4Jx7%m18Wm~zcxeAb9B zskJr3Tv+VTPz!+ufV;g(>1CI`DKzAE%;BhXM_@RJ1cH?N<%2**K`^={Rdm_8gh$4i z6xktU3fQa@oV1!dnw#+#^}R3y5L1}HEi*(&@!TLvyyOkFNNZB}U?af|iY-A87f~BM z@W$f~BOXai6%~bM!YUR`+h>{tR!Dp>$Y<8;R)ibTTuiLIO%@Ig)A`mhJP-Wo`9>wL z14p98#HQ{L1-oeqdh)_M7s5PXa)deA6=6)RQ8FGz{V@>lL5pewGe;i(8&3nLbvG`D zR9qgIOSWWOOYmc`5>&T>*DC=D9A>THKAat@Ccd3}q+j=4@-aU$l`cHOJLS2s1&-Sx zR4E6y?R$)~QmT@0(pX|?5jp{N1{h(+wVLFjNW0XZ2n;4V&! zBAH*;;tn9%G&C?~ASeuVzQj~)|5k==nd$bdN@`ZdX3TuB`DaCE)LHOmvEPI~f07MB z2-pV~vk*URj&dmT$U!CDW-DsRZ(8k(nZF{B3kqcGGSFXRZdhBhxF&dU(}m8=>bMiCc!5(zXq~$~DIdzm7oF;0 zL*8U{bjU0Y?x-6BMJSK`yF)Xj?{AJB3DSZ(=Op$1#8bVM3@$R1+Z~Cd>-1Lu9@rJ1 zim(gy`sO-18$5H&Nl4KDUJieW!;dy{B*?B3Mc(agkq*1o!Jncu=;GxY+TEt|fWuu; z{~1UB<%%K6u&(N$k;JKzE1S z8murxeb5JF*8=nwY~P){b~;QQUF3TEMQqKA!;jgppNhO%@}_T#5e8xU;9 z-`2;bR>ZGydyyV}w)m^bs#nXuHBLYKH}y!&C3Vg}l@2*uNeLUK)H|IyiZ?*f4&iMs zF^S54s~hyNBXavnlZ!^c@1YZn3++5C%b`^}44Ge4!yask2JL#Vs}4(>4DSoxx{_#_ zyR}D<^#0@@I%O+8cL&)&$7Q*oBm_7&*1+~Byn||0`i@t1tY|pr|5nVN(*RcDbSp&Q zw+zdzZE+?miI(K1u46nniU%-rnyvV1rrv4&yl7Nmn{$mwy5T*iG zd~u3vJDZ}AG*+-r&du^Gu?2g4LzlkZz!#{;mpXd|#5`=`pJ!v97YhJjK%c+Ck@r#VD7z-P-CrsBo7gfNzw$W-P1{(>s;OitfI4)P zsXCAUR##kVR4O$yv4%cnS&UvW zpncVCPmCBuA~D(NufZ)Hh(4qI-9|kMm0?h?Qrg#beHhB$`c2M$(?>q%=$p3c{25sA z_ho)VFM!#M<4;P1TjdEbo7H;)yn1``)9I_%FP|TuJiXB!V9Gwo7%jrJF{)!rH>5X3 z)k9f$kHYFl16z`>Or*_sgKJ}7V)gcFayJNdkfb8w+T?_gtj2<@cpq@p1{Z|2yboru zR+6IPmowAiGgmu}VvwpLgo&k$tUfeH9CynU5!IeNhy7&C_YFF8NGu9TYX-aX7Jd$9 zkN*0;4t7#k`a5i*Rey$>bD>)eJ`7cZ{tX}Hf3ra){DYDH%@@&hZvPBo6E-cZr5gIb zQ<+eXs!O5bSE8%=WR~QOX7DY?`P891Vx6;maDDU6T;(~i*3N_>-riwgHnXB#uw&Np z7pR_txN@ES7Cr-F8P*kTZbnk(YPM_amewomWop~~wVe_E?=sq3#iic_6*Ibh_k-oh z9~FER$PCjv;P=$RPW~GCWyCgiVyw-Uq{v~I=8J5wgz?Bcgei#Ss!cdS!hljk{af12 zEypvfoVb5M(|P4aTF(+*%l$QJVSU+O*{EHfKu0@1SKnimIJUWeszI5xVF@QA^oMqy zT>30b7%dEh3fNQ?jHnzrpj<6d*yR3{NtB(V8j^9WQ4c3yZZFo&2VJ$*)rT)G8YD*_ zcvy`SFHH}1+4D(WR+y&~w0>%Kz_W<|4J8M!Xf8wX&>at~F{cfF>vAnTeffjc?#$lx zD4hM>_WMwuV>zkDPI(NgrfxkH_4jRiwTHc0twDDECElQL&gPg`Px7GSr>kD*uFlBI zj-^U9Qf0Z;%Xx4C1l4WB+E~3D>{J9MeUMWTF#9pX=r2i{Lx~@zC4Vt>_6pEteBPM) z)G`7yLurHw3~=ZZ_5Aee(c?dFrRY_2|S0g z7?e>>gFp!vG>G)1uulHHl1)i*hUuG?dGb795E;N+$qynJ3Ck&Rl5j?xn%(>HaW0-F zzK29Kb2C#MYdLV0KgvVGfx9Sw%7!N&t9*Bs!sc3K==24Fe@e>MjsnR5;?=rZ^8B z)rY&MASj9vFqRjvveDau7oxn1@hfgB>7!p_&Y#yfWO^2U4B1ebn0N0-NdF}>4?X0y ze=`R74VMsExk9+;pdW1cuo4 z5=w_7Y{YKVgt4!h!Js=t@hdx3=P>*HIdo;;Wry#}Q)9$%s#`NP_4MFZpA7r`-(fBe zv&vk!mtLb>-&N8|bNfZR1kRHcNd3|RI6wTA#4mBF+n7yU|Gs|&x*lEsLADWGSQlzvT?@EScsTA0;p!*$ES`Dr^ynU;kwB|Ub<2I(+a zju(e!7I{bToUm?4`lkWSctheGk&x_=CJRZ7Lj1v{I{hWl8L-jG_#AsXnsg~k;R_^{ zds6-pu_EvQ_t*5!LSY{94)g?O$Icxtui!d5!hu8sius9j<8eKFwQ67na2|DcZbCs0 zGxHV-U(d5E+a?MYMa}W6=Iw(kh^w3sDFr!70YJsKhZB)zsB^jqhZJMGGAcv^W}mtC$oX+1@lwN$;j;mllde^$|vR?;|48! z8_g@w&XnT6(2yqSo(t5BEZD^xJ}ql>B&*^-Sxd(=xkYiMn5QE{&#QSl%&xRB-Zm|X zj&v22_L{B2B-i%Y)bD;5zu=kF!s>Jv4|{ z?HhU`(Z6P=!vrB(bGy!k2^PqR_h;AT)V|*I3CkOZ&Se7~rRgmf3NotOq}w#Rk1<-b zW<0l^Sk32GIa#Gd%~GODkZGQP9%E1xMFI%n4Yd=8oU&UUb~XcKZR+ibkBj~|SrHfQ z8gZPT%nMWs<$%iMRC78gdcr*(ZvcePNjlGhdHl_ zg7Q~2bq{@0Nj75t$IQc{^*z?5`5xh5UME68)J5oVSidI zNL6)&VNU#gRH|cHbSA)8)Dy|;$gr;PR0QAJ;bNhqFaOqJ0NRdkRlgjxT-QST%YoW) z;c|fMsv{9Nu7xeA-?2ljKv8KT<~l^K%34Nk^xo;TIxB{SphHJ=c80M7wCd>h9j@wFzpk>u@NBAXF+8CcdLHptIw90F&1Y>zlsrzt%D> z244C&r!t*rbNY`ze*Qgw=F79}!`8)4yd7`fy8u=%pWi#r$H|nvLa**k(}iT8J zzF1Z6ruXH+{hR!t-YuV9&nenpt7lu)=4Lj*G&Y!8xTTwy{sR|hKW)j=MS8WEA$QYq znRn?u$f`fXV=EuF=|yzcwE?^>x`n>M-z)CHTv&LzufF2H<8qr)z_CwM>Q*1_Mjy~v zuJ#kw7~SgQbUD_SXhYlY-gDa@FFti_(jltxW4`EJU8xF_w4gGTq3{eEj_Q z`BVOA=mQjt!pIEVZ20M_YV@CdqW-;pZb|?5e+&A*bFf`Q{}2A4|G&deiT>~O{>AD4 zewqI7ucH6tXL7YbqTioi&ldT;#ke4fkDwS?GJf;yPXTT?{|CL@3jepW*W3T&{QnL=W%+;aU+(-zPtqY;q%TrV z0klPKzsrS-PoZ7O4QdX)0<(&W%P=-^p3ifrF-;x5>h&E=m${tHat;lMSCJ7?P9p_j zUj+PZI3cbwr$69hm{bsd1-=b9y9@gDdfF#?gO(4{+Wx5BK+9@g#6PBsbb8TlJ$d^5 z+aFJVdh_Ph&gqXYU%!0&=J>_alNLGRw0bRZ5_f}mhGACdvU9K}#B7>g{%GH}JEhVR zTvP6a;pMiiBpp<4_m^{5=lBWwNH_<;IcCa%vl;$&6rH_0lznMqg48-dr54_wH}sr!Z1P1ooY!$M0Iw8X5QA%(IDjd_ZgAfKi?xBsD5|jF5m7 zrUC`;M0Z%)$Q*(-Pj7(Z_5w3t;mkR*L1vb-4%;VWOz5lWB^}PW1ob(B2ENtX?nVcD zwZcu!H-AX7F?+~UONO2tKhY`q@^4~mJ!5lgU@n>J>bv!TZX$t*Utv<_&5al7<0tBnq#vIoAJVpl$xz=No(hyeKsIrg3r9<#z8DuQq$z%-ui0^OS#XFfw;bCf zRc^uxA2WnzB(9s0hZiSHZ%<`wmcw>%%>Cse9}c@{1pEtnrwQf4snScl_`%nv@poEI@Q1-NQGy4&W@~ke~}Q>$rZ@EcphT! zpz9oSi+9`Po_=Th4t`!n@m2Z1gZWzApa1Jlha7DA+fna;{GM>c?{>&( zTg|XMBVyKWo|Ir(#JpYZp8ep1&Ct`#qFyG~1%sna z_Kuvs%S(n!1v_MbD>T60?tH_ObAeWK_!<;&Ws`E*zn98FfvOuP=VhjzJH4yjPX*v*K!# ziXGa=Uulysmg0efW|YII<>)iqCGhT0bb;++yF-pShwO}_@hL2tQY6|OBg5Dcdx~nb z5wp88|KG{LV&yH&;bAK7xeFxCL`^vJ zX1CP<+#vt&?d(?ce>?YkyMM_4zr)YJy8M5$ZNDOFw=uQ)WRg$6M=jw?bWDzz*T&!V z<+J=UoeOpc?CEz*WX0xrUqB!l4=q5W?4=P6-Jf#kWOlsL7nC?U8cD@x?B znX_qaf%FR1K`Xxk?88>mNah^gwX(jJ(O5hxg8hX*X<%JZ;hA`2K?;EN=qe|)4H;lImtC5kFx0p`7IbNt}qA+ zm&shWk=-$~d46@hh0DZ9XgW~;ytI5~(l}6J?*4!&80jC2In>6e7Jk66jruzrLo>U0 zVEZujYGU3h(*Ba-Ht99_2Wwp_1Ya%fh-HE4HqO(j%r}rtseO?p{LAI#Wz8_%)WGz@ zZ`FtFQzfS63ZWGxMukqYyDyhV$*)RU*R3hRofkf|Q)nH@Zlezrp8&T;?5Hq*;Lqtb zOAM7xzk^!uF`=A$Y5Mi<0$)K1t9=~%%5CqV)uzYJu%8tDEF2q&#s)qyBzV^duF#YwO`?u^{I6alV*wku>-A>{pIeE5tL4AmL2s`j z|LyMnA^-g@KmRuJAN~@^e;K=Ob5IjJU<`xj$yF5m97X>}&<(cnwj!ubxoO^D$gEf! z_O`z{z~;!(N~sU|t`;1q!SxhMNAOQF$@)}L;D|VSR*<#e&up@sL<=myVY`^q>WrZ; zIST!WX@lx|?55c~y~q$=OPC%i6Ja5$&*4t-=7xUNBqjx}6(2n#$RX`ba#ijPtrj0) z21Ftg_}AknV(CxE@&_&rMv&K>Cr+5$lW%mq6(bU zS~biTCyr)VDELgdImSo13>Oqm&-T>Cx}IaG$>kD|DpD!?_DRls~>{RMIql`$pd7SWPJ}^-`(Cu ze%nqs6{+9UShO^0hiuu!HgC&q2jvqwszq+e*M-k}i&?hP- zgm7tK&=n~00b=2ur9;FO(e;jo>e`#Sh3lAcwTDpECyU+wUb#Ixg>K zT=nYHBVI4IW2CVj`-hQR4%rKA&d{%M%)VQZHa+k91~lx^w|L}t*ybATgdZ2HY&JmG z;bf8$IK*=l%5h((uw{~Ye?-l+hb%FaihZnn^q5lx>L;OX{EClzr&NNtGW-QXCZjs^ z1-5EQ37Hz{b21pThc;Xvnl_=LVK3nD5;%nP0y`qDQVS*wzqa?~x;Q~W19alNmqHp} z3Mc_p^3DlIE}& zx#|>)g&)qN^6+Fe1TE85f%ISCc-5B2##GKIgAb1$dHi zO1ccTQ_~G-Mt~)!?u&}{uOH#IVZQOtZF*bt4MGMo1^L!o&=6>)sAy@oo~0n?qT@P< z*w`>OLOyBKHdimOLCVZsFr;jE2T|3?{&l`I7A_}X=l#&qTEx}E@YKgN3w*} zq8!l`r&EETykcQ<0A|zJc@Vk4Qh=ywR9v%A*Un@nPE{V0R%*-x;#54yscCc4kSzPKC{%rpvo-o$HIY z6%|)~*Dj*(ke*xCiyRo}uCb5RlkI|TjfsJevDE)U?*8fp#LHcG{a+{)bKT5ZG(f=z zZ=T`0d8nHN*y_PND0M5{M=RHy=gKa;a>$a zXS2mtP`Ky{OR1T031=3o=R-jiqsq0jv?<&+6e{}j?2Nm^JgM}MHP|laiO#tUj>4T9 zH#lbz&ImaEe4Zu?%?feR4Y?_rR>M%SxNw#-(cO^~F?bbBgs^vRB8KHDz+H{buFp^k0jmF#!KK4ywotr_u#Hw3 zRQn>CX9?W?O|#=b=uYi-=m+L1<4DEslE zLaJA)Jbndo?RhY}I{updEP}n?^{$#VgnOr%aC0mE0xQo49U2l8r;GHQVQDAg=uV0| zOl8gv*|$AcCn+8E8xkn?IDw*kJ`PvFPOP5~H>=aA`8p&kt4vy((r`~1AIybK1h!U7 zSt-UOlcW$u(1v};IR=s9NL`{u|r(=xH$ zJUBk3gYK5PaK?7O#3TN;r2T>Amd-GTDB!gPFL+q?q3#TJYiCKi<~*+Apn?{C*+)DK zerYLIA!RBom!YUDJ{NYl+&B3Irvmy^Lk&Wr>z5mCI26o+*I-e-1YH5T<4|XO_V*7e_W$1g-XHe=-{I$9 z-TqGzsKx~#$}nRN5>PS9b}1LH0}Lis4AWjFkKjQm-!c}G8Dibq79B51CY^306sp-vhvFTKFmDlUeg~mFnwxE2`lUm`+0bx%s z+G)q9c(;&!8969`e7vPLhHM^3-{+E(A~b7ZW-qdkkurCHdm*1Ce_Nu>5B^JYh*{tI zixhLP(eUlZ{GMR6e$FMu!`u{C7G(}5X)?8mVuRcbnlg&GE6L#Hl%E?X0rMfl)-*g7 z1u70RXgs4dw49(U0KFDt4Vv5vQpT5?f=85bvGB>fDRfKREk82VQl~lUO2fIWBUx-~ylUPXzNT%MKrVaj$7UMeWVH2prAY@;Uqw%Lg!BJJoEx8I=q(mR30P&2pme zr7Z95ML~neG`U}8aAAEck4N_oXMG+^w&STB&8Q70R}-w00ZNn0?{vCUnT~s7?E-GB zu+D6}ETY|=II_Ky)O5aw{bbx(KjpvU|AayBg9J@0io`u1={aTN)q+|IS=G)WsCz9Py z_JO-7mFu7obt5Cr<~e#R`E;5#*LGoV^qc(^Q?!3Yj4~0Pp-p}%Nko_|;ZzB|L=ztQ zF;EK$c}7u5_WoPUpTSf{lxzyCZOf(L5+Gg1Q!h3g;yP$It5a&0x4nuD)k;}myr#_}o zWVpm$GxiAcI&t)NN~j*>T?ExQfnLU~LwEJVLAnLe&+;v=t8BKI4>B(-b#V8H_1zEZH>$y~Sc6>;81^vt`k3V>oso z!!p`f_jEdS=~0Cz;cEn&!pp5s@TALmSi738tK+l(!5N~fDW+iGa(_ac5fZT!K!M$t z^XYl3V;n?++67*l)+xl@-vNJ2mmdq57lt(^-C&|$ORo^cRPasZ@@%J=f|W%QxF*Rh zBQ@e7+|V*}xc_D9OGAwLBH<51*DBOj(<5825^~@6J6u_*f!na1n(1gy85RQfa_kBH z5u+LL3~D;3z@-LH-5Cn&ly{wW0g{G5+$PQc+-1{K=9{t`!zyD^)oC`yo57@l1|kOc zo5^?8Fc6nyYV~QQfu-yfq9wzj>5VAix1luR8h0cP2#ud)?-AlD8Iw6(6;TogS+Ivm zpONj-tE^z}!Ep-m3I&8BcL@ZnpGMCg{jXC_F@5^%_~gy$$?<?vW<}}xJe{WVWKk+dkbBAe47D6c zxJ2w!JR9NPQ$uY zyKeif@|_;!u=m{aH!q*OJVc;nO--#$#jjJKMs0E6@%K(gcLZn9Me@6a{Ebv|Y1lIw zjPa#sR*QY)b#dltQsj68HqwLDo``kVi1Q1C1|GS~sB)h=QoEd?z(e2j+4MJOyiO@aRr8JM&z%=x+aoN5u{BgjlaX>7ivHi1)op2L*$aU$&srk6x; zPNOtjM0f36p!2fd9l@+FocA5M<-y;;BKH^V&Z^ePg+EjQa9hj~!Rx0e$dc1BJf$i6 z`Y7@#6~oW4v&?0RfS|}BoMq>5+VFjplP(O-P2AWSX-HKqbYrsZTtEF?WQIvD{0}47 zS#o7&E2$LUI`VH(%l&Tp-sgg(WM!YsVCnNO$Ah$3w5N8~%r=K_Q)k(!(B%Zy3n$Rg zsW=|124>qS5Dwz~c!z0rQBizU6(z7kcK#1+AKHcJ{EDvm#KW_ifjFGJ-(SwIIf*ZN zoKjm9fJ4^XAC_|@;a#KH<%}mjvxEnCHx_pc7grLZie~7d+343E1k0PZv>CFk-g^_=PmO)2Z4r}Z zm%3B_IGKs7i-nN?h)p1>E12Gklu-;gYLD`8L*1X?(FLvto*?Yb_IqVCbJ~NvwlU1s z6f@LFF|?BFCYfUc$Q71U@UW#RB|)%ielg{H@Gni$7Nx4rI$PE0)9Lvn*ui9zVm_x3 zB^N1sNIRg67hS@dUk?w3T*i2pqB4p+x{X!_1(5ll`24U709>S*C6t=AtSc#WxE5 zoSMYo^E-v`T3zX^Q;eQ7@d&1y4NL}x80TX_q%t>ps*qMt00ihI-U}uJr`-fbiqOg9IyTel{JrFy#=a^ z2*gDMT<-@GDUiDz*q6$ z-r==GUVteeaE;N+*#d670x@t<1(y`Xaw2Lu+<7y;$51@PEtL4J7wntQoR{YwVu?bL6JPXc;M&R-lcsGEqR1_v>z&D{5b`~NccEA6>z{58kFdqs(Ffv1IsUJ z@d0uT^Dz=v;Z%|_zJ+z;s4psyd<&{}BC>`T#`~|VKIuvgG!>vs%=A8Cb3=i)!UDuc zN`21I0vF`6_7XmTONz+1#5`m2vH3-UcCt+d+qF6pHQssuHlBW*|DC&Sb6<0X&e!2* zG!MDDQFY71*whTPN5liW~=*%h7ITcMVtM4Tb6DGh;NhwSo zn0Rs8u7$cmYS*>bQtSsZPru>c76x8I%+_y!Jeo2Xce_a3+aGu; zwSudTAo5y*3p{f6YoF@sJ0opH%V6uXTO%)$-a^4*`Kt}7rlFNla*Ob{d z-F3%A6vB*YXAj4;yW_^R8;NGD8ePIg-ryD+ z%|Qlsy}tv!zY~9c|Es+(Yv;HF%HrI}{HhO@LqY6l$Yz^thWMW2tmxJ`OM(B(P#h>~ zX-=n!Hic)~5GKyxK%_~KG8jsO#Ui}g#54Xry;+rXPo*Oiix_rq5Tm++ATltmNr<-> zPD;g#jq0f&z`P~((M>-RXjE#q%^ZA0PlrSA>qDLnhtB2aQ|GsvT;0L!d+~r{t^Kvw zFym;jJ6@&1)Ej?FcIwzNv1LW5rs5*OX|$`l*uuK5n`+9L_)JyPz2CkkDNyd~GMV zDgk^_^-8$wcsf!YPbEY0uYWX~$g`gv_@w&uVbn=K+KYD%S%KDQ)QO(IJ$XYqV(1ZR zdDyWhJ~vVyFE4RmaO?b`$0?RZp9d0cDZ>ip6%JE7m}o2oWL@uS0f6bf2%6Uo*U zneH#7H+ZSegGVd6CMpIE1yu_Nc4t#G4H8d^zmoL21R8OU9xX1A)cICQBg3JSToZuJvzk?ygxzeopV@g zX$0*wBY7@i`$_8DgmD;MwC(#1JJ{U`-$X0}d%QE#Evq4#U>ozw>^k z+?eQZCB0z#D~AR-2Ws)f3QRAg(XX>^7{+hrj3A1 zi_-zYO-d}5)~U*2vsL$~|Cr~&s_I|u2Lzj=z`X6_=nA#_h zps=}SF~_$_uHQGKHBIOprNisA& zSXcvVs{Kb-#jH=f<&Tdo9jlqOf5lMf+sFU%#NQ?Y_y+v%-TmH9CH{Bs{{27Ve}9Lc zd;j9`zqbmOMM&^cGAJP;>tAlBT*|-L#Nh2!ni+d@Sr-~$GDLBxVR|--W0=o9H;M;S**i0%TMCvV z%&CjTD79M~jiJi;a$9PKMe(@yj9rk|4h%|sHsQKQCI|_RMXiKsO5oH?X6!vrr%+rB zsXBWavRfC1xv? zCe0TrjzqhFmPwK2S)fQbMB)tf07KF)b0|*G zDsclveFOAV!(gu`XZcuAwV)gRq+uJ-aF@H$mBs|fs*OoaNtGY`<`Oxb`9w|(&xu{c z472lx4>t<^zy0n=1bMWThRkTBI0bW zaetJJ2lI6L4r*vx<*6ca2TmH5?eBavu!?Iated%QtTMxybr6zwT((&eEZ-p-L)4I9 zex@-j3JpajXNv~JFjDjwhgjKY8#;YQJZm%zgLUp3d!Qp^3Es@JNM@xe)Y*Rcu>D|* zN_IN$H*2PJ#f(bQVl$sY3sDuMgM$umN6KC-x0&x%YWJp@uAS%lSuV}7=wxO3?yIxh z(@evS(Agys=NhM5<5NfKI_Cm4O9qsrf*T-+2p4E&R1LLZ_WSWpyt!)rxto)ua8Pup z?$VRfgX;;__bYn;#Sxd2k-WjYbQFk!W!3*9QHlX%IYxQ#)p`%kB=RZZwikN?+BW>G5c|mxA<}~ zTax!CY~ale_z%UVP;fO?m-oE8ok0$m@?#kUUzHJc+5l*Lg@1q4{v8q1S?~=8aDtHrQ&F8{AuGLR@U6?Q?k8xcI zHv~p(72?Y&C*MSV4fda?#_L9SRGni6hZs|iOgygRG#T~`y6fGJf^T}+RGt}r%un7yZOo)XyZ}NQ)=Zw<`tCZAYhNGe<&`NF zd(fud02?4hI&yKtHw+K(KD@mvFYD${E@#KM*cz&58f8O@e|P{y)L$F~Qqv{iqQfJC z2l8Eg_>d}L9t0u6{5Q@EPd-f(UQChjIdVtYw>lq3=Bq?3@PqXEZ^@=XzkUrJfj__g zTIRAc_^(XU$`uIkMHN7@8Rav8-&8w!R=%W9 z$u-HOnoQXh(|jssgAvfRjVt|tbE_p5WJ%~8hBoteltPOKBu@X;=7#X!vJ{)#TJJ9n?PQlCPqN4=ZQ5|33OMLemz!{)aPISt1~{i8=fZebRW_O`|XA z5Bme7dV#oac-^l>{=*TMryRDqo)KuZ z{b#4QyMMoI|JmE`{bB$4J$^7WD_0ng6n}w5r8rBZ>H6FyxI!ibxv=C6i1fG7lb6wp zmv5q{PmbSIZ8ZcvXo9wZKP&?nV0s>mV1Ep!dvO?TcR_HvX6Is)>7CCb9?#ZcLS`vU zc3)0l2|qnbM}Nq{yLAQNXP3*&lEtW@L=^3FnW8^RCuu{e`%(r5xGWmV^!BI_@NVgB zvDF`;tK_0wwzqE!IS=))6kKPf5FXDZ%yhZXeOrj6s%p=A4@{w^8R&iE3KhkcfZuG9 zXW$lk=VVi;xwFlMD*doOJG>@TwXxXF4j1CJ{X2!>R0{9#%Jo6wOtnkZLOkPyrZ-(| z4YFdE7g?#jo&BIt{gm$<1cmCSeCK{xh%TaXr*X^_$HV;u!}qcMBM!%Va*NS(`nc@!34Ty57Pg ziV>at(#F|)P%2b+j`w)RS4+Vi}j*nUq7!FFn*kqA}t0&jEuk_>7H}&;)R@Zy=@}$1vZcvX{0$=N1{kQOEZ)H95nj{DA zatr%GJz+0=O=PocKYDO;y`rw-{jeUhD!$&%_ICXkAKX-LufEtiC z==hiwpX}YQsVMB^$|Kx+P_205p{I)9lq)u|ou$@xf}L~2xa`kPuydF_U90L&uyewz zZe;^I!OjWU*wqz-om0o!HdNo)ud7(Ib;=*zIjF0+#@5-nUt5vc;#Gs(c~DzXxtA4R z{HCrVvluI9b$7e2BC*t~_rY#2tVsO8I$LKq*g3>{ueVuugPlX{_?i`iog*yzT3y{Q zRV223jhef`&LLKQ&8`MJhuHfyD+W8qvHUkz-u?#I3ClElU+Foc1}f9Yi`BK zZHS+E7=j3rl=h-VO8bj8*7b>g4mnKjQ`c5B5$o-T&1jAR1oQE-5MfRty^4# zsdbAR5$ZNo%JRr9>IU-DE$ZENgVhU8>((wyPixm>;c4ySw?A+tVQJlJwW8APD}N3N zzU|6+QRx;nL`GV_h82$1t>q-6^(z>OXzfZXq@i`&s1uCVtsBTj>sAuEXzk)84Xs1O4lLCT*Wa&>-_T3wf20|TlU5SD!3 zQjW28wZe~u)uaNW9BBp)^2Zwtd~_9@Vh-DV>eH=o#+2nW!z|F*KttIm339?{0hBgQ zQH2W^-m}Rl`q;>Vb1L)K1lY(oiTi-@-;(}3FADB0Fa|IPL_Q)oUyRFh3(v_Huw#Vg zk8zF^b_X0Za9MrLCh~~hQXbxIq+LSlNP6!E=dhR zO}n%-gocTAW6I`3?yZs#gz_(ww2#fST%)a6onflJsKpIJ6Ap$iMm4fS;-xyu|8^Aq%r5oR$EFB_EREu5^6iu$X7&AtvDMHimLe`5|H z&Gg{&jR{@g>9zTvZZ*3>0yCFxlw-c4g~^Y`v8+K7dRzC)iw;HY5zV9n^5up01_Xj> zR~wUH89W;wBoO37^e~#jKN15%U@nqy>I1UMVsOYCxj~@S-U&OTxDHkY`Yf5}(I?*%fZp+uLfKskX8`mYE1!fc@ zmpRU7j2l+^;u6hqqG=vSIlXvS^3HjXESN-KzBm&+X_kC?SY~s%m%1af_d0cywTQk< zd?#~W1IZ;;%1&BP0_fR-x{Yn0kMlER1x>~}X|^VR;0lV#+qHaS806gYCeTcU2nA{J z&;<`tsoO1Xi*K>g7iAFHMVt-Zi+vfM4`F+QJ%v2tl5f9CXhi1e>Gvc8c@zBiT(2Q)D znBRFYy*>H<1Nm2rbJ3pG@5yI%sdSF?UzwV3!Slg0!E?})FG(fo zAJ21-r?{6&ujrqBS%Wj(KK%ENPW74et*=AjmUsB0``qL{H@VME9&p_NV?dn011@sF z9XsHqIN+%|;F&n!K^^d*4tP)pJcI-O&;fVgfWLph-#g&%9q{+=^Y`xa_wLJ%=L+{_ z2Mo0PZk)22dOG4=H}oAX!j-s%9sY;Azr+9VAa>**9?Oo5h1=kA_oW1nZ->XX!{g)P zJJKy_gFC{-r8M{DJ{P|)J4kklwB&}C$}etUZuI7m`I9SW9*@t!kqdwL(+B?buK#t< z|GMwybnuOTdf=ZX{#QT$gTDWD;D7bUH#KEF6);3YXa;@lzAKx0Dv_rCY0v+<@=@O#AE7&6m6v$wc0bE%kq1|2o)VJA7bQG2F&zs-02eA>3n7-eAh z&A_;f8HK&wO^bdfoB6ZnIJl~Z1JmHH`P~fE56Irx?siQF{)?WNn2jr)?u9#hXqMmX zk25o4srlV-0_HBaBlL7;xMv=pnSmUb=XSO2B-j}?y-mL{znf24mS$*nMA|pM+xBf4 ze;)0=r!rO6kCCJt^Y;LFzus;aBVRDUqxt`c)3WXVHotFfG*z+{R{Vc+PBM&*{?*_0|GVbj^8fd`9PdQG z?3sdlHHCW(4dNN02ffnQZN**le6Q3P^`K`S_G-S;G^`zM0Fi_axFD`WP-tJ?>HqJ` z{{?-BcrU8dt0{2bbh&35d0@)j*Hze)uG*oL$GC z8~@zK{{#PfE5{G{xdH!YcYANY?EkT|y}SK~|Htp}^RMpz0aae93kdE%>)L_E#WX&f z=Zn0bkG+yR!;DE>F+;fB%dK&Gk&ea7L2x5kb4zXrgKVB6m>l*QE$P_GFujasX+A?k zz;jHhfPQcS6_2@+IQOVlT#V+FJ{!B0EEo9%)oj=d78U#?Jx#7}ZL*}peD~r5>Kg_S z%sVv0sC=i-OrtcJkF#`+1yLK0P8Cs+rm%L?VRpWprzd3YkE8Y*^%0DUX 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


    O zz0@M)5K)xdXiX94zD<(vQo2c3 zSzc$c?bbiW&sT+Xrl_b;K3he-HGGbl!h7=~MB}cqpp7SnsCqNk?EF-%Q7HHvdgO6) zoMu=$RguGEW`YUu3S6Gy_cQyM!?}GY#7wkqJ9c*2?~_7-u*+6v3}^amiSNWQXFlI> zwct2U@&aA*#MIUEG=y8z+9zkq_qV=9;ljSYP3B!+ZMII2E)%FcxRiVQLXg`_MF)eN zk=w1;HksFW^AnA{)ds?&9sJcRkA`d)ub4bkW&UKT+BHQpX|aGD>v6O7>e&MUhOLUJmX)kMtKjLX1S{HE{CrXT9%jTFPE_-oHd+E5oegd zCd+o+J>}js#lerT@8t@c33*;G*7qGR>#=rbDoj%mJM)j}KEOi4U`a-YFGqJju+=N0 z;jH^E230iIH7p%eyCYQOEDrDPTF@DWO6Q~H*>1z(_j9H{X`Ns?c04*Y3k ziR4oT`v1d@~-Jo7qRyjj1>) zig)}@+Cs5+j(mAjDf~3IGpc`LyLyh;^(cNsPj^qa2#nE>3=emxl03QpV1=Y-;B0I) zsBRM* zbg$7Rk~NI%?HJW>dzh`iFUjwGWNJo?Kx=^BHGVHi+ivx{RwIQ&E=!V2Zk`5X0_)JCCrXcccZX4f)=(R7GcE+EdRvQv z{v!DF@mE{r=V5lUwnvMC%Wn>l6I-~IC}FE!jXyNKG$tv2#A!XZT1mVMqkM^HeQST7 z<%<%eJMPr!k<%Q)(wBP4f`xHN_s683_cv;p-@2>NwOH12C6z|Zj*r_s!u6Vljepy% zLbQEJCEq;QMu(+9Cg;@|^96J9)8=6q$+nb{J;p(taP6muw{F6QExwp8QKr~_kP{`+ zB>6e)fT(Sbefl9yBbaYxJc9XX>| }RHln(%~}{XfFqJF2PX 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

    voOSkD!MWTYy^@za>bCsYz7 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

    BF$8U#nxD3W?Dc9tO<+;gv{L|SnP3PhH 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

    #_M+BH&ci7u95wc6o$o0Rk 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%0A&lVNDRn?GF795%>d1TOU-}*RANcWJnQaG8>(p` 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

    S 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 z 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%0Dbl-UN<(UZ6bH!!T?QkCf;9p~YzVdxy%K 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