mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	upgrade: upgrade dependencies github.com/prometheus/common to the newest version
Signed-off-by: jwcesign <jwcesign@gmail.com>
This commit is contained in:
		
							
								
								
									
										205
									
								
								LICENSES/vendor/github.com/matttproud/golang_protobuf_extensions/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										205
									
								
								LICENSES/vendor/github.com/matttproud/golang_protobuf_extensions/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,205 +0,0 @@
 | 
				
			|||||||
= vendor/github.com/matttproud/golang_protobuf_extensions licensed under: =
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                                 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.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
= vendor/github.com/matttproud/golang_protobuf_extensions/LICENSE e3fc50a88d0a364313df4b21ef20c29e
 | 
					 | 
				
			||||||
							
								
								
									
										11
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								go.mod
									
									
									
									
									
								
							@@ -52,9 +52,9 @@ require (
 | 
				
			|||||||
	github.com/opencontainers/selinux v1.11.0
 | 
						github.com/opencontainers/selinux v1.11.0
 | 
				
			||||||
	github.com/pkg/errors v0.9.1
 | 
						github.com/pkg/errors v0.9.1
 | 
				
			||||||
	github.com/pmezard/go-difflib v1.0.0
 | 
						github.com/pmezard/go-difflib v1.0.0
 | 
				
			||||||
	github.com/prometheus/client_golang v1.16.0
 | 
						github.com/prometheus/client_golang v1.19.0
 | 
				
			||||||
	github.com/prometheus/client_model v0.4.0
 | 
						github.com/prometheus/client_model v0.6.0
 | 
				
			||||||
	github.com/prometheus/common v0.44.0
 | 
						github.com/prometheus/common v0.48.0
 | 
				
			||||||
	github.com/robfig/cron/v3 v3.0.1
 | 
						github.com/robfig/cron/v3 v3.0.1
 | 
				
			||||||
	github.com/spf13/cobra v1.7.0
 | 
						github.com/spf13/cobra v1.7.0
 | 
				
			||||||
	github.com/spf13/pflag v1.0.5
 | 
						github.com/spf13/pflag v1.0.5
 | 
				
			||||||
@@ -75,7 +75,7 @@ require (
 | 
				
			|||||||
	go.uber.org/zap v1.26.0
 | 
						go.uber.org/zap v1.26.0
 | 
				
			||||||
	golang.org/x/crypto v0.21.0
 | 
						golang.org/x/crypto v0.21.0
 | 
				
			||||||
	golang.org/x/net v0.23.0
 | 
						golang.org/x/net v0.23.0
 | 
				
			||||||
	golang.org/x/oauth2 v0.10.0
 | 
						golang.org/x/oauth2 v0.18.0
 | 
				
			||||||
	golang.org/x/sync v0.6.0
 | 
						golang.org/x/sync v0.6.0
 | 
				
			||||||
	golang.org/x/sys v0.18.0
 | 
						golang.org/x/sys v0.18.0
 | 
				
			||||||
	golang.org/x/term v0.18.0
 | 
						golang.org/x/term v0.18.0
 | 
				
			||||||
@@ -180,7 +180,6 @@ require (
 | 
				
			|||||||
	github.com/karrick/godirwalk v1.17.0 // indirect
 | 
						github.com/karrick/godirwalk v1.17.0 // indirect
 | 
				
			||||||
	github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect
 | 
						github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect
 | 
				
			||||||
	github.com/mailru/easyjson v0.7.7 // indirect
 | 
						github.com/mailru/easyjson v0.7.7 // indirect
 | 
				
			||||||
	github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
 | 
					 | 
				
			||||||
	github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible // indirect
 | 
						github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible // indirect
 | 
				
			||||||
	github.com/mitchellh/go-wordwrap v1.0.1 // indirect
 | 
						github.com/mitchellh/go-wordwrap v1.0.1 // indirect
 | 
				
			||||||
	github.com/moby/spdystream v0.2.0 // indirect
 | 
						github.com/moby/spdystream v0.2.0 // indirect
 | 
				
			||||||
@@ -195,7 +194,7 @@ require (
 | 
				
			|||||||
	github.com/opencontainers/runtime-spec v1.0.3-0.20220909204839-494a5a6aca78 // indirect
 | 
						github.com/opencontainers/runtime-spec v1.0.3-0.20220909204839-494a5a6aca78 // indirect
 | 
				
			||||||
	github.com/peterbourgon/diskv v2.0.1+incompatible // indirect
 | 
						github.com/peterbourgon/diskv v2.0.1+incompatible // indirect
 | 
				
			||||||
	github.com/pquerna/cachecontrol v0.1.0 // indirect
 | 
						github.com/pquerna/cachecontrol v0.1.0 // indirect
 | 
				
			||||||
	github.com/prometheus/procfs v0.10.1 // indirect
 | 
						github.com/prometheus/procfs v0.12.0 // indirect
 | 
				
			||||||
	github.com/russross/blackfriday/v2 v2.1.0 // indirect
 | 
						github.com/russross/blackfriday/v2 v2.1.0 // indirect
 | 
				
			||||||
	github.com/seccomp/libseccomp-golang v0.10.0 // indirect
 | 
						github.com/seccomp/libseccomp-golang v0.10.0 // indirect
 | 
				
			||||||
	github.com/sirupsen/logrus v1.9.0 // indirect
 | 
						github.com/sirupsen/logrus v1.9.0 // indirect
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										28
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								go.sum
									
									
									
									
									
								
							@@ -184,7 +184,7 @@ github.com/Microsoft/hcsshim v0.8.25/go.mod h1:4zegtUJth7lAvFyc6cH2gGQ5B3OFQim01
 | 
				
			|||||||
github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I=
 | 
					github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I=
 | 
				
			||||||
github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c=
 | 
					github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c=
 | 
				
			||||||
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
 | 
					github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
 | 
				
			||||||
github.com/alecthomas/kingpin/v2 v2.3.2/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE=
 | 
					github.com/alecthomas/kingpin/v2 v2.4.0/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE=
 | 
				
			||||||
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
 | 
					github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
 | 
				
			||||||
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
 | 
					github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
 | 
				
			||||||
github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE=
 | 
					github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE=
 | 
				
			||||||
@@ -575,8 +575,7 @@ github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJ
 | 
				
			|||||||
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
 | 
					github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
 | 
				
			||||||
github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
 | 
					github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
 | 
				
			||||||
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
 | 
					github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
 | 
				
			||||||
github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=
 | 
					github.com/matttproud/golang_protobuf_extensions v1.0.2/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
 | 
				
			||||||
github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
 | 
					 | 
				
			||||||
github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
 | 
					github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
 | 
				
			||||||
github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible h1:aKW/4cBs+yK6gpqU3K/oIwk9Q/XICqd3zOX/UFuvqmk=
 | 
					github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible h1:aKW/4cBs+yK6gpqU3K/oIwk9Q/XICqd3zOX/UFuvqmk=
 | 
				
			||||||
github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4=
 | 
					github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4=
 | 
				
			||||||
@@ -650,22 +649,22 @@ github.com/pquerna/cachecontrol v0.1.0 h1:yJMy84ti9h/+OEWa752kBTKv4XC30OtVVHYv/8
 | 
				
			|||||||
github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI=
 | 
					github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI=
 | 
				
			||||||
github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
 | 
					github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
 | 
				
			||||||
github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso=
 | 
					github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso=
 | 
				
			||||||
github.com/prometheus/client_golang v1.16.0 h1:yk/hx9hDbrGHovbci4BY+pRMfSuuat626eFsHb7tmT8=
 | 
					github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU=
 | 
				
			||||||
github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc=
 | 
					github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k=
 | 
				
			||||||
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
 | 
					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=
 | 
					github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
 | 
				
			||||||
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
 | 
					github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
 | 
				
			||||||
github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY=
 | 
					github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos=
 | 
				
			||||||
github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU=
 | 
					github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8=
 | 
				
			||||||
github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro=
 | 
					github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro=
 | 
				
			||||||
github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
 | 
					github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
 | 
				
			||||||
github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY=
 | 
					github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE=
 | 
				
			||||||
github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY=
 | 
					github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc=
 | 
				
			||||||
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
 | 
					github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
 | 
				
			||||||
github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
 | 
					github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
 | 
				
			||||||
github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
 | 
					github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
 | 
				
			||||||
github.com/prometheus/procfs v0.10.1 h1:kYK1Va/YMlutzCGazswoHKo//tZVlFpKYh+PymziUAg=
 | 
					github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo=
 | 
				
			||||||
github.com/prometheus/procfs v0.10.1/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM=
 | 
					github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
 | 
				
			||||||
github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
 | 
					github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
 | 
				
			||||||
github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs=
 | 
					github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs=
 | 
				
			||||||
github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
 | 
					github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
 | 
				
			||||||
@@ -925,8 +924,8 @@ golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ
 | 
				
			|||||||
golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
 | 
					golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
 | 
				
			||||||
golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
 | 
					golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
 | 
				
			||||||
golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
 | 
					golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0 h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8=
 | 
					golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI=
 | 
					golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					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-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
@@ -1292,8 +1291,7 @@ sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.29.0 h1:/U5vjBbQn3RCh
 | 
				
			|||||||
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.29.0/go.mod h1:z7+wmGM2dfIiLRfrC6jb5kV2Mq/sK1ZP303cxzkV5Y4=
 | 
					sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.29.0/go.mod h1:z7+wmGM2dfIiLRfrC6jb5kV2Mq/sK1ZP303cxzkV5Y4=
 | 
				
			||||||
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=
 | 
					sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=
 | 
				
			||||||
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=
 | 
					sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=
 | 
				
			||||||
sigs.k8s.io/knftables v0.0.14 h1:VzKQoDMCGBOH8c85sGrWSXSPCS0XrIpEfOlcCLBXiC0=
 | 
					sigs.k8s.io/knftables v0.0.16 h1:ZpTfNsjnidgoXdxxzcZLdSctqkpSO3QB3jo3zQ4PXqM=
 | 
				
			||||||
sigs.k8s.io/knftables v0.0.14/go.mod h1:f/5ZLKYEUPUhVjUCg6l80ACdL7CIIyeL0DxfgojGRTk=
 | 
					 | 
				
			||||||
sigs.k8s.io/knftables v0.0.16/go.mod h1:f/5ZLKYEUPUhVjUCg6l80ACdL7CIIyeL0DxfgojGRTk=
 | 
					sigs.k8s.io/knftables v0.0.16/go.mod h1:f/5ZLKYEUPUhVjUCg6l80ACdL7CIIyeL0DxfgojGRTk=
 | 
				
			||||||
sigs.k8s.io/kustomize/api v0.13.5-0.20230601165947-6ce0bf390ce3 h1:XX3Ajgzov2RKUdc5jW3t5jwY7Bo7dcRm+tFxT+NfgY0=
 | 
					sigs.k8s.io/kustomize/api v0.13.5-0.20230601165947-6ce0bf390ce3 h1:XX3Ajgzov2RKUdc5jW3t5jwY7Bo7dcRm+tFxT+NfgY0=
 | 
				
			||||||
sigs.k8s.io/kustomize/api v0.13.5-0.20230601165947-6ce0bf390ce3/go.mod h1:9n16EZKMhXBNSiUC5kSdFQJkdH3zbxS/JoO619G1VAY=
 | 
					sigs.k8s.io/kustomize/api v0.13.5-0.20230601165947-6ce0bf390ce3/go.mod h1:9n16EZKMhXBNSiUC5kSdFQJkdH3zbxS/JoO619G1VAY=
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										84
									
								
								go.work.sum
									
									
									
									
									
								
							
							
						
						
									
										84
									
								
								go.work.sum
									
									
									
									
									
								
							@@ -23,6 +23,7 @@ cloud.google.com/go/channel v1.16.0 h1:dqRkK2k7Ll/HHeYGxv18RrfhozNxuTJRkspW0iaFZ
 | 
				
			|||||||
cloud.google.com/go/cloudbuild v1.13.0 h1:YBbAWcvE4x6xPWTyS+OU4eiUpz5rCS3VCM/aqmfddPA=
 | 
					cloud.google.com/go/cloudbuild v1.13.0 h1:YBbAWcvE4x6xPWTyS+OU4eiUpz5rCS3VCM/aqmfddPA=
 | 
				
			||||||
cloud.google.com/go/clouddms v1.6.1 h1:rjR1nV6oVf2aNNB7B5uz1PDIlBjlOiBgR+q5n7bbB7M=
 | 
					cloud.google.com/go/clouddms v1.6.1 h1:rjR1nV6oVf2aNNB7B5uz1PDIlBjlOiBgR+q5n7bbB7M=
 | 
				
			||||||
cloud.google.com/go/cloudtasks v1.12.1 h1:cMh9Q6dkvh+Ry5LAPbD/U2aw6KAqdiU6FttwhbTo69w=
 | 
					cloud.google.com/go/cloudtasks v1.12.1 h1:cMh9Q6dkvh+Ry5LAPbD/U2aw6KAqdiU6FttwhbTo69w=
 | 
				
			||||||
 | 
					cloud.google.com/go/compute v1.19.3/go.mod h1:qxvISKp/gYnXkSAD1ppcSOveRAmzxicEv/JlizULFrI=
 | 
				
			||||||
cloud.google.com/go/contactcenterinsights v1.10.0 h1:YR2aPedGVQPpFBZXJnPkqRj8M//8veIZZH5ZvICoXnI=
 | 
					cloud.google.com/go/contactcenterinsights v1.10.0 h1:YR2aPedGVQPpFBZXJnPkqRj8M//8veIZZH5ZvICoXnI=
 | 
				
			||||||
cloud.google.com/go/container v1.24.0 h1:N51t/cgQJFqDD/W7Mb+IvmAPHrf8AbPx7Bb7aF4lROE=
 | 
					cloud.google.com/go/container v1.24.0 h1:N51t/cgQJFqDD/W7Mb+IvmAPHrf8AbPx7Bb7aF4lROE=
 | 
				
			||||||
cloud.google.com/go/containeranalysis v0.10.1 h1:SM/ibWHWp4TYyJMwrILtcBtYKObyupwOVeceI9pNblw=
 | 
					cloud.google.com/go/containeranalysis v0.10.1 h1:SM/ibWHWp4TYyJMwrILtcBtYKObyupwOVeceI9pNblw=
 | 
				
			||||||
@@ -32,6 +33,7 @@ cloud.google.com/go/dataform v0.8.1 h1:xcWso0hKOoxeW72AjBSIp/UfkvpqHNzzS0/oygHlc
 | 
				
			|||||||
cloud.google.com/go/datafusion v1.7.1 h1:eX9CZoyhKQW6g1Xj7+RONeDj1mV8KQDKEB9KLELX9/8=
 | 
					cloud.google.com/go/datafusion v1.7.1 h1:eX9CZoyhKQW6g1Xj7+RONeDj1mV8KQDKEB9KLELX9/8=
 | 
				
			||||||
cloud.google.com/go/datalabeling v0.8.1 h1:zxsCD/BLKXhNuRssen8lVXChUj8VxF3ofN06JfdWOXw=
 | 
					cloud.google.com/go/datalabeling v0.8.1 h1:zxsCD/BLKXhNuRssen8lVXChUj8VxF3ofN06JfdWOXw=
 | 
				
			||||||
cloud.google.com/go/dataplex v1.9.0 h1:yoBWuuUZklYp7nx26evIhzq8+i/nvKYuZr1jka9EqLs=
 | 
					cloud.google.com/go/dataplex v1.9.0 h1:yoBWuuUZklYp7nx26evIhzq8+i/nvKYuZr1jka9EqLs=
 | 
				
			||||||
 | 
					cloud.google.com/go/dataproc v1.12.0/go.mod h1:zrF3aX0uV3ikkMz6z4uBbIKyhRITnxvr4i3IjKsKrw4=
 | 
				
			||||||
cloud.google.com/go/dataproc/v2 v2.0.1 h1:4OpSiPMMGV3XmtPqskBU/RwYpj3yMFjtMLj/exi425Q=
 | 
					cloud.google.com/go/dataproc/v2 v2.0.1 h1:4OpSiPMMGV3XmtPqskBU/RwYpj3yMFjtMLj/exi425Q=
 | 
				
			||||||
cloud.google.com/go/dataqna v0.8.1 h1:ITpUJep04hC9V7C+gcK390HO++xesQFSUJ7S4nSnF3U=
 | 
					cloud.google.com/go/dataqna v0.8.1 h1:ITpUJep04hC9V7C+gcK390HO++xesQFSUJ7S4nSnF3U=
 | 
				
			||||||
cloud.google.com/go/datastore v1.13.0 h1:ktbC66bOQB3HJPQe8qNI1/aiQ77PMu7hD4mzE6uxe3w=
 | 
					cloud.google.com/go/datastore v1.13.0 h1:ktbC66bOQB3HJPQe8qNI1/aiQ77PMu7hD4mzE6uxe3w=
 | 
				
			||||||
@@ -48,11 +50,14 @@ cloud.google.com/go/eventarc v1.13.0 h1:xIP3XZi0Xawx8DEfh++mE2lrIi5kQmCr/KcWhJ1q
 | 
				
			|||||||
cloud.google.com/go/filestore v1.7.1 h1:Eiz8xZzMJc5ppBWkuaod/PUdUZGCFR8ku0uS+Ah2fRw=
 | 
					cloud.google.com/go/filestore v1.7.1 h1:Eiz8xZzMJc5ppBWkuaod/PUdUZGCFR8ku0uS+Ah2fRw=
 | 
				
			||||||
cloud.google.com/go/firestore v1.11.0 h1:PPgtwcYUOXV2jFe1bV3nda3RCrOa8cvBjTOn2MQVfW8=
 | 
					cloud.google.com/go/firestore v1.11.0 h1:PPgtwcYUOXV2jFe1bV3nda3RCrOa8cvBjTOn2MQVfW8=
 | 
				
			||||||
cloud.google.com/go/functions v1.15.1 h1:LtAyqvO1TFmNLcROzHZhV0agEJfBi+zfMZsF4RT/a7U=
 | 
					cloud.google.com/go/functions v1.15.1 h1:LtAyqvO1TFmNLcROzHZhV0agEJfBi+zfMZsF4RT/a7U=
 | 
				
			||||||
 | 
					cloud.google.com/go/gaming v1.10.1/go.mod h1:XQQvtfP8Rb9Rxnxm5wFVpAp9zCQkJi2bLIb7iHGwB3s=
 | 
				
			||||||
cloud.google.com/go/gkebackup v1.3.0 h1:lgyrpdhtJKV7l1GM15YFt+OCyHMxsQZuSydyNmS0Pxo=
 | 
					cloud.google.com/go/gkebackup v1.3.0 h1:lgyrpdhtJKV7l1GM15YFt+OCyHMxsQZuSydyNmS0Pxo=
 | 
				
			||||||
cloud.google.com/go/gkeconnect v0.8.1 h1:a1ckRvVznnuvDWESM2zZDzSVFvggeBaVY5+BVB8tbT0=
 | 
					cloud.google.com/go/gkeconnect v0.8.1 h1:a1ckRvVznnuvDWESM2zZDzSVFvggeBaVY5+BVB8tbT0=
 | 
				
			||||||
cloud.google.com/go/gkehub v0.14.1 h1:2BLSb8i+Co1P05IYCKATXy5yaaIw/ZqGvVSBTLdzCQo=
 | 
					cloud.google.com/go/gkehub v0.14.1 h1:2BLSb8i+Co1P05IYCKATXy5yaaIw/ZqGvVSBTLdzCQo=
 | 
				
			||||||
cloud.google.com/go/gkemulticloud v1.0.0 h1:MluqhtPVZReoriP5+adGIw+ij/RIeRik8KApCW2WMTw=
 | 
					cloud.google.com/go/gkemulticloud v1.0.0 h1:MluqhtPVZReoriP5+adGIw+ij/RIeRik8KApCW2WMTw=
 | 
				
			||||||
 | 
					cloud.google.com/go/grafeas v0.3.0/go.mod h1:P7hgN24EyONOTMyeJH6DxG4zD7fwiYa5Q6GUgyFSOU8=
 | 
				
			||||||
cloud.google.com/go/gsuiteaddons v1.6.1 h1:mi9jxZpzVjLQibTS/XfPZvl+Jr6D5Bs8pGqUjllRb00=
 | 
					cloud.google.com/go/gsuiteaddons v1.6.1 h1:mi9jxZpzVjLQibTS/XfPZvl+Jr6D5Bs8pGqUjllRb00=
 | 
				
			||||||
 | 
					cloud.google.com/go/iam v0.13.0/go.mod h1:ljOg+rcNfzZ5d6f1nAUJ8ZIxOaZUVoS14bKCtaLZ/D0=
 | 
				
			||||||
cloud.google.com/go/iam v1.1.1 h1:lW7fzj15aVIXYHREOqjRBV9PsH0Z6u8Y46a1YGvQP4Y=
 | 
					cloud.google.com/go/iam v1.1.1 h1:lW7fzj15aVIXYHREOqjRBV9PsH0Z6u8Y46a1YGvQP4Y=
 | 
				
			||||||
cloud.google.com/go/iap v1.8.1 h1:X1tcp+EoJ/LGX6cUPt3W2D4H2Kbqq0pLAsldnsCjLlE=
 | 
					cloud.google.com/go/iap v1.8.1 h1:X1tcp+EoJ/LGX6cUPt3W2D4H2Kbqq0pLAsldnsCjLlE=
 | 
				
			||||||
cloud.google.com/go/ids v1.4.1 h1:khXYmSoDDhWGEVxHl4c4IgbwSRR+qE/L4hzP3vaU9Hc=
 | 
					cloud.google.com/go/ids v1.4.1 h1:khXYmSoDDhWGEVxHl4c4IgbwSRR+qE/L4hzP3vaU9Hc=
 | 
				
			||||||
@@ -61,6 +66,7 @@ cloud.google.com/go/kms v1.15.0 h1:xYl5WEaSekKYN5gGRyhjvZKM22GVBBCzegGNVPy+aIs=
 | 
				
			|||||||
cloud.google.com/go/language v1.10.1 h1:3MXeGEv8AlX+O2LyV4pO4NGpodanc26AmXwOuipEym0=
 | 
					cloud.google.com/go/language v1.10.1 h1:3MXeGEv8AlX+O2LyV4pO4NGpodanc26AmXwOuipEym0=
 | 
				
			||||||
cloud.google.com/go/lifesciences v0.9.1 h1:axkANGx1wiBXHiPcJZAE+TDjjYoJRIDzbHC/WYllCBU=
 | 
					cloud.google.com/go/lifesciences v0.9.1 h1:axkANGx1wiBXHiPcJZAE+TDjjYoJRIDzbHC/WYllCBU=
 | 
				
			||||||
cloud.google.com/go/logging v1.7.0 h1:CJYxlNNNNAMkHp9em/YEXcfJg+rPDg7YfwoRpMU+t5I=
 | 
					cloud.google.com/go/logging v1.7.0 h1:CJYxlNNNNAMkHp9em/YEXcfJg+rPDg7YfwoRpMU+t5I=
 | 
				
			||||||
 | 
					cloud.google.com/go/longrunning v0.5.0/go.mod h1:0JNuqRShmscVAhIACGtskSAWtqtOoPkwP0YF1oVEchc=
 | 
				
			||||||
cloud.google.com/go/longrunning v0.5.1 h1:Fr7TXftcqTudoyRJa113hyaqlGdiBQkp0Gq7tErFDWI=
 | 
					cloud.google.com/go/longrunning v0.5.1 h1:Fr7TXftcqTudoyRJa113hyaqlGdiBQkp0Gq7tErFDWI=
 | 
				
			||||||
cloud.google.com/go/managedidentities v1.6.1 h1:2/qZuOeLgUHorSdxSQGtnOu9xQkBn37+j+oZQv/KHJY=
 | 
					cloud.google.com/go/managedidentities v1.6.1 h1:2/qZuOeLgUHorSdxSQGtnOu9xQkBn37+j+oZQv/KHJY=
 | 
				
			||||||
cloud.google.com/go/maps v1.4.0 h1:PdfgpBLhAoSzZrQXP+/zBc78fIPLZSJp5y8+qSMn2UU=
 | 
					cloud.google.com/go/maps v1.4.0 h1:PdfgpBLhAoSzZrQXP+/zBc78fIPLZSJp5y8+qSMn2UU=
 | 
				
			||||||
@@ -99,6 +105,7 @@ cloud.google.com/go/shell v1.7.1 h1:aHbwH9LSqs4r2rbay9f6fKEls61TAjT63jSyglsw7sI=
 | 
				
			|||||||
cloud.google.com/go/spanner v1.47.0 h1:aqiMP8dhsEXgn9K5EZBWxPG7dxIiyM2VaikqeU4iteg=
 | 
					cloud.google.com/go/spanner v1.47.0 h1:aqiMP8dhsEXgn9K5EZBWxPG7dxIiyM2VaikqeU4iteg=
 | 
				
			||||||
cloud.google.com/go/speech v1.19.0 h1:MCagaq8ObV2tr1kZJcJYgXYbIn8Ai5rp42tyGYw9rls=
 | 
					cloud.google.com/go/speech v1.19.0 h1:MCagaq8ObV2tr1kZJcJYgXYbIn8Ai5rp42tyGYw9rls=
 | 
				
			||||||
cloud.google.com/go/storage v1.10.0 h1:STgFzyU5/8miMl0//zKh2aQeTyeaUH3WN9bSUiJ09bA=
 | 
					cloud.google.com/go/storage v1.10.0 h1:STgFzyU5/8miMl0//zKh2aQeTyeaUH3WN9bSUiJ09bA=
 | 
				
			||||||
 | 
					cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E=
 | 
				
			||||||
cloud.google.com/go/storagetransfer v1.10.0 h1:+ZLkeXx0K0Pk5XdDmG0MnUVqIR18lllsihU/yq39I8Q=
 | 
					cloud.google.com/go/storagetransfer v1.10.0 h1:+ZLkeXx0K0Pk5XdDmG0MnUVqIR18lllsihU/yq39I8Q=
 | 
				
			||||||
cloud.google.com/go/talent v1.6.2 h1:j46ZgD6N2YdpFPux9mc7OAf4YK3tiBCsbLKc8rQx+bU=
 | 
					cloud.google.com/go/talent v1.6.2 h1:j46ZgD6N2YdpFPux9mc7OAf4YK3tiBCsbLKc8rQx+bU=
 | 
				
			||||||
cloud.google.com/go/texttospeech v1.7.1 h1:S/pR/GZT9p15R7Y2dk2OXD/3AufTct/NSxT4a7nxByw=
 | 
					cloud.google.com/go/texttospeech v1.7.1 h1:S/pR/GZT9p15R7Y2dk2OXD/3AufTct/NSxT4a7nxByw=
 | 
				
			||||||
@@ -119,9 +126,13 @@ github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ
 | 
				
			|||||||
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802 h1:1BDTz0u9nC3//pOCMdNH+CiXJVYJh5UQNCOBG7jbELc=
 | 
					github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802 h1:1BDTz0u9nC3//pOCMdNH+CiXJVYJh5UQNCOBG7jbELc=
 | 
				
			||||||
github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE=
 | 
					github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE=
 | 
				
			||||||
github.com/alecthomas/kingpin/v2 v2.3.2 h1:H0aULhgmSzN8xQ3nX1uxtdlTHYoPLu5AhHxWrKI6ocU=
 | 
					github.com/alecthomas/kingpin/v2 v2.3.2 h1:H0aULhgmSzN8xQ3nX1uxtdlTHYoPLu5AhHxWrKI6ocU=
 | 
				
			||||||
 | 
					github.com/alecthomas/kingpin/v2 v2.4.0 h1:f48lwail6p8zpO1bC4TxtqACaGqHYA22qkHjHpqDjYY=
 | 
				
			||||||
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc h1:cAKDfWh5VpdgMhJosfJnn5/FoN2SRZ4p7fJNX58YPaU=
 | 
					github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc h1:cAKDfWh5VpdgMhJosfJnn5/FoN2SRZ4p7fJNX58YPaU=
 | 
				
			||||||
github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 h1:s6gZFSlWYmbqAuRjVTiNNhvNRfY2Wxp9nhfyel4rklc=
 | 
					github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 h1:s6gZFSlWYmbqAuRjVTiNNhvNRfY2Wxp9nhfyel4rklc=
 | 
				
			||||||
 | 
					github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
 | 
				
			||||||
github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg=
 | 
					github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg=
 | 
				
			||||||
 | 
					github.com/apache/arrow/go/v12 v12.0.0/go.mod h1:d+tV/eHZZ7Dz7RPrFKtPK02tpr+c9/PEd/zm8mDS9Vg=
 | 
				
			||||||
 | 
					github.com/apache/thrift v0.16.0/go.mod h1:PHK3hniurgQaNMZYaCLEqXKsYK8upmhPbmdP2FXSqgU=
 | 
				
			||||||
github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6 h1:G1bPvciwNyF7IUmKXNt9Ak3m6u9DE1rF+RmtIkBpVdA=
 | 
					github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6 h1:G1bPvciwNyF7IUmKXNt9Ak3m6u9DE1rF+RmtIkBpVdA=
 | 
				
			||||||
github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da h1:8GUt8eRujhVEGZFFEjBj46YV4rDjvGrNxb0KMWYkL2I=
 | 
					github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da h1:8GUt8eRujhVEGZFFEjBj46YV4rDjvGrNxb0KMWYkL2I=
 | 
				
			||||||
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310 h1:BUAU3CGlLvorLI26FmByPp2eC2qla6E1Tw+scpcg/to=
 | 
					github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310 h1:BUAU3CGlLvorLI26FmByPp2eC2qla6E1Tw+scpcg/to=
 | 
				
			||||||
@@ -130,11 +141,16 @@ github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQ
 | 
				
			|||||||
github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c h1:+0HFd5KSZ/mm3JmhmrDukiId5iR6w4+BdFtfSy4yWIc=
 | 
					github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c h1:+0HFd5KSZ/mm3JmhmrDukiId5iR6w4+BdFtfSy4yWIc=
 | 
				
			||||||
github.com/census-instrumentation/opencensus-proto v0.4.1 h1:iKLQ0xPNFxR/2hzXZMrBo8f1j86j5WHzznCCQxV/b8g=
 | 
					github.com/census-instrumentation/opencensus-proto v0.4.1 h1:iKLQ0xPNFxR/2hzXZMrBo8f1j86j5WHzznCCQxV/b8g=
 | 
				
			||||||
github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=
 | 
					github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=
 | 
				
			||||||
 | 
					github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
 | 
				
			||||||
github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE=
 | 
					github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE=
 | 
				
			||||||
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8=
 | 
					github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8=
 | 
				
			||||||
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8=
 | 
					github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8=
 | 
				
			||||||
github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI=
 | 
					github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI=
 | 
				
			||||||
 | 
					github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI=
 | 
				
			||||||
github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe h1:QQ3GSy+MqSHxm/d8nCtnAiZdYFd45cYZPs8vOOIYKfk=
 | 
					github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe h1:QQ3GSy+MqSHxm/d8nCtnAiZdYFd45cYZPs8vOOIYKfk=
 | 
				
			||||||
 | 
					github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
 | 
				
			||||||
 | 
					github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
 | 
				
			||||||
 | 
					github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
 | 
				
			||||||
github.com/containerd/containerd v1.4.9 h1:JIw9mjVw4LsGmnA/Bqg9j9e+XB7soOJufrKUpA6n2Ns=
 | 
					github.com/containerd/containerd v1.4.9 h1:JIw9mjVw4LsGmnA/Bqg9j9e+XB7soOJufrKUpA6n2Ns=
 | 
				
			||||||
github.com/containerd/continuity v0.1.0 h1:UFRRY5JemiAhPZrr/uE0n8fMTLcZsUvySPr1+D7pgr8=
 | 
					github.com/containerd/continuity v0.1.0 h1:UFRRY5JemiAhPZrr/uE0n8fMTLcZsUvySPr1+D7pgr8=
 | 
				
			||||||
github.com/containerd/fifo v1.0.0 h1:6PirWBr9/L7GDamKr+XM0IeUFXu5mf3M/BPpH9gaLBU=
 | 
					github.com/containerd/fifo v1.0.0 h1:6PirWBr9/L7GDamKr+XM0IeUFXu5mf3M/BPpH9gaLBU=
 | 
				
			||||||
@@ -145,6 +161,7 @@ github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e h1:Wf6HqHfScWJN9
 | 
				
			|||||||
github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f h1:lBNOc5arjvs8E5mO2tbpBpLoyyu8B6e44T7hJy6potg=
 | 
					github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f h1:lBNOc5arjvs8E5mO2tbpBpLoyyu8B6e44T7hJy6potg=
 | 
				
			||||||
github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM=
 | 
					github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM=
 | 
				
			||||||
github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954 h1:RMLoZVzv4GliuWafOuPuQDKSm1SJph7uCRnnS61JAn4=
 | 
					github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954 h1:RMLoZVzv4GliuWafOuPuQDKSm1SJph7uCRnnS61JAn4=
 | 
				
			||||||
 | 
					github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0=
 | 
				
			||||||
github.com/envoyproxy/go-control-plane v0.11.1 h1:wSUXTlLfiAQRWs2F+p+EKOY9rUyis1MyGqJ2DIk5HpM=
 | 
					github.com/envoyproxy/go-control-plane v0.11.1 h1:wSUXTlLfiAQRWs2F+p+EKOY9rUyis1MyGqJ2DIk5HpM=
 | 
				
			||||||
github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys=
 | 
					github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys=
 | 
				
			||||||
github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568 h1:BHsljHzVlRcyQhjrss6TZTdY2VfCqZPbv5k3iBFa2ZQ=
 | 
					github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568 h1:BHsljHzVlRcyQhjrss6TZTdY2VfCqZPbv5k3iBFa2ZQ=
 | 
				
			||||||
@@ -155,14 +172,20 @@ github.com/go-kit/kit v0.9.0 h1:wDJmvq38kDhkVxi50ni9ykkdUr1PKgqKOoi01fa0Mdk=
 | 
				
			|||||||
github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU=
 | 
					github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU=
 | 
				
			||||||
github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA=
 | 
					github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA=
 | 
				
			||||||
github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk=
 | 
					github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk=
 | 
				
			||||||
 | 
					github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
 | 
				
			||||||
github.com/gogo/googleapis v1.4.1 h1:1Yx4Myt7BxzvUr5ldGSbwYiZG6t9wGBZ+8/fX3Wvtq0=
 | 
					github.com/gogo/googleapis v1.4.1 h1:1Yx4Myt7BxzvUr5ldGSbwYiZG6t9wGBZ+8/fX3Wvtq0=
 | 
				
			||||||
github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc=
 | 
					github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc=
 | 
				
			||||||
 | 
					github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
 | 
				
			||||||
github.com/golang/snappy v0.0.3 h1:fHPg5GQYlCeLIPB9BZqMVR5nR9A+IM5zcgeTdjMYmLA=
 | 
					github.com/golang/snappy v0.0.3 h1:fHPg5GQYlCeLIPB9BZqMVR5nR9A+IM5zcgeTdjMYmLA=
 | 
				
			||||||
 | 
					github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
 | 
				
			||||||
github.com/golangplus/bytes v1.0.0 h1:YQKBijBVMsBxIiXT4IEhlKR2zHohjEqPole4umyDX+c=
 | 
					github.com/golangplus/bytes v1.0.0 h1:YQKBijBVMsBxIiXT4IEhlKR2zHohjEqPole4umyDX+c=
 | 
				
			||||||
github.com/golangplus/fmt v1.0.0 h1:FnUKtw86lXIPfBMc3FimNF3+ABcV+aH5F17OOitTN+E=
 | 
					github.com/golangplus/fmt v1.0.0 h1:FnUKtw86lXIPfBMc3FimNF3+ABcV+aH5F17OOitTN+E=
 | 
				
			||||||
 | 
					github.com/google/flatbuffers v2.0.8+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8=
 | 
				
			||||||
github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=
 | 
					github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=
 | 
				
			||||||
github.com/google/martian/v3 v3.2.1 h1:d8MncMlErDFTwQGBK1xhv026j9kqhvw1Qv9IbWT1VLQ=
 | 
					github.com/google/martian/v3 v3.2.1 h1:d8MncMlErDFTwQGBK1xhv026j9kqhvw1Qv9IbWT1VLQ=
 | 
				
			||||||
 | 
					github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk=
 | 
				
			||||||
github.com/google/renameio v0.1.0 h1:GOZbcHa3HfsPKPlmyPyN2KEohoMXOhdMbHrvbpl2QaA=
 | 
					github.com/google/renameio v0.1.0 h1:GOZbcHa3HfsPKPlmyPyN2KEohoMXOhdMbHrvbpl2QaA=
 | 
				
			||||||
 | 
					github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A=
 | 
				
			||||||
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
 | 
					github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
 | 
				
			||||||
github.com/hashicorp/consul/api v1.1.0 h1:BNQPM9ytxj6jbjjdRPioQ94T6YXriSopn0i8COv6SRA=
 | 
					github.com/hashicorp/consul/api v1.1.0 h1:BNQPM9ytxj6jbjjdRPioQ94T6YXriSopn0i8COv6SRA=
 | 
				
			||||||
github.com/hashicorp/consul/sdk v0.1.1 h1:LnuDWGNsoajlhGyHJvuWW6FVqRl8JOTPqS6CPTsYjhY=
 | 
					github.com/hashicorp/consul/sdk v0.1.1 h1:LnuDWGNsoajlhGyHJvuWW6FVqRl8JOTPqS6CPTsYjhY=
 | 
				
			||||||
@@ -182,6 +205,7 @@ github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI
 | 
				
			|||||||
github.com/hashicorp/mdns v1.0.0 h1:WhIgCr5a7AaVH6jPUwjtRuuE7/RDufnUvzIr48smyxs=
 | 
					github.com/hashicorp/mdns v1.0.0 h1:WhIgCr5a7AaVH6jPUwjtRuuE7/RDufnUvzIr48smyxs=
 | 
				
			||||||
github.com/hashicorp/memberlist v0.1.3 h1:EmmoJme1matNzb+hMpDuR/0sbJSUisxyqBGG676r31M=
 | 
					github.com/hashicorp/memberlist v0.1.3 h1:EmmoJme1matNzb+hMpDuR/0sbJSUisxyqBGG676r31M=
 | 
				
			||||||
github.com/hashicorp/serf v0.8.2 h1:YZ7UKsJv+hKjqGVUUbtE3HNj79Eln2oQ75tniF6iPt0=
 | 
					github.com/hashicorp/serf v0.8.2 h1:YZ7UKsJv+hKjqGVUUbtE3HNj79Eln2oQ75tniF6iPt0=
 | 
				
			||||||
 | 
					github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho=
 | 
				
			||||||
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639 h1:mV02weKRL81bEnm8A0HT1/CAelMQDBuQIfLw8n+d6xI=
 | 
					github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639 h1:mV02weKRL81bEnm8A0HT1/CAelMQDBuQIfLw8n+d6xI=
 | 
				
			||||||
github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
 | 
					github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
 | 
				
			||||||
github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA=
 | 
					github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA=
 | 
				
			||||||
@@ -190,13 +214,20 @@ github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7
 | 
				
			|||||||
github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U=
 | 
					github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U=
 | 
				
			||||||
github.com/kisielk/errcheck v1.5.0 h1:e8esj/e4R+SAOwFwN+n3zr0nYeCyeweozKfO23MvHzY=
 | 
					github.com/kisielk/errcheck v1.5.0 h1:e8esj/e4R+SAOwFwN+n3zr0nYeCyeweozKfO23MvHzY=
 | 
				
			||||||
github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg=
 | 
					github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg=
 | 
				
			||||||
 | 
					github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE=
 | 
				
			||||||
 | 
					github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU=
 | 
				
			||||||
 | 
					github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
 | 
				
			||||||
github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk=
 | 
					github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk=
 | 
				
			||||||
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515 h1:T+h1c/A9Gawja4Y9mFVWj2vyii2bbUNDw3kt9VxK2EY=
 | 
					github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515 h1:T+h1c/A9Gawja4Y9mFVWj2vyii2bbUNDw3kt9VxK2EY=
 | 
				
			||||||
github.com/kr/pty v1.1.1 h1:VkoXIwSboBpnk99O/KFauAEILuNHv5DVFKZMBN/gUgw=
 | 
					github.com/kr/pty v1.1.1 h1:VkoXIwSboBpnk99O/KFauAEILuNHv5DVFKZMBN/gUgw=
 | 
				
			||||||
 | 
					github.com/lyft/protoc-gen-star/v2 v2.0.3/go.mod h1:amey7yeodaJhXSbf/TlLvWiqQfLOSpEk//mLlc+axEk=
 | 
				
			||||||
github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4=
 | 
					github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4=
 | 
				
			||||||
github.com/mattn/go-colorable v0.0.9 h1:UVL0vNpWh04HeJXV0KLcaT7r06gOH2l4OW6ddYRUIY4=
 | 
					github.com/mattn/go-colorable v0.0.9 h1:UVL0vNpWh04HeJXV0KLcaT7r06gOH2l4OW6ddYRUIY4=
 | 
				
			||||||
github.com/mattn/go-isatty v0.0.3 h1:ns/ykhmWi7G9O+8a448SecJU3nSMBXJfqQkl0upE1jI=
 | 
					github.com/mattn/go-isatty v0.0.3 h1:ns/ykhmWi7G9O+8a448SecJU3nSMBXJfqQkl0upE1jI=
 | 
				
			||||||
 | 
					github.com/matttproud/golang_protobuf_extensions v1.0.2 h1:hAHbPm5IJGijwng3PWk09JkG9WeqChjprR5s9bBZ+OM=
 | 
				
			||||||
github.com/miekg/dns v1.0.14 h1:9jZdLNd/P4+SfEJ0TNyxYpsK8N4GtfylBLqtbYN1sbA=
 | 
					github.com/miekg/dns v1.0.14 h1:9jZdLNd/P4+SfEJ0TNyxYpsK8N4GtfylBLqtbYN1sbA=
 | 
				
			||||||
 | 
					github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY=
 | 
				
			||||||
 | 
					github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE=
 | 
				
			||||||
github.com/mitchellh/cli v1.0.0 h1:iGBIsUe3+HZ/AD/Vd7DErOt5sU9fa8Uj7A2s1aggv1Y=
 | 
					github.com/mitchellh/cli v1.0.0 h1:iGBIsUe3+HZ/AD/Vd7DErOt5sU9fa8Uj7A2s1aggv1Y=
 | 
				
			||||||
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
 | 
					github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
 | 
				
			||||||
github.com/mitchellh/go-testing-interface v1.0.0 h1:fzU/JVNcaqHQEcVFAKeR41fkiLdIPrefOvVG1VZ96U0=
 | 
					github.com/mitchellh/go-testing-interface v1.0.0 h1:fzU/JVNcaqHQEcVFAKeR41fkiLdIPrefOvVG1VZ96U0=
 | 
				
			||||||
@@ -209,8 +240,10 @@ github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4=
 | 
				
			|||||||
github.com/opentracing/opentracing-go v1.1.0 h1:pWlfV3Bxv7k65HYwkikxat0+s3pV4bsqf19k25Ur8rU=
 | 
					github.com/opentracing/opentracing-go v1.1.0 h1:pWlfV3Bxv7k65HYwkikxat0+s3pV4bsqf19k25Ur8rU=
 | 
				
			||||||
github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c h1:Lgl0gzECD8GnQ5QCWA8o6BtfL6mDH5rQgM4/fX3avOs=
 | 
					github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c h1:Lgl0gzECD8GnQ5QCWA8o6BtfL6mDH5rQgM4/fX3avOs=
 | 
				
			||||||
github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc=
 | 
					github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc=
 | 
				
			||||||
 | 
					github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
 | 
				
			||||||
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e h1:aoZm08cpOy4WuID//EZDgcC4zIxODThtZNPirFr42+A=
 | 
					github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e h1:aoZm08cpOy4WuID//EZDgcC4zIxODThtZNPirFr42+A=
 | 
				
			||||||
github.com/posener/complete v1.1.1 h1:ccV59UEOTzVDnDUEFdT95ZzHVZ+5+158q8+SJb2QV5w=
 | 
					github.com/posener/complete v1.1.1 h1:ccV59UEOTzVDnDUEFdT95ZzHVZ+5+158q8+SJb2QV5w=
 | 
				
			||||||
 | 
					github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI=
 | 
				
			||||||
github.com/prometheus/tsdb v0.7.1 h1:YZcsG11NqnK4czYLrWd9mpEuAJIHVQLwdrleYfszMAA=
 | 
					github.com/prometheus/tsdb v0.7.1 h1:YZcsG11NqnK4czYLrWd9mpEuAJIHVQLwdrleYfszMAA=
 | 
				
			||||||
github.com/rogpeppe/fastuuid v1.2.0 h1:Ppwyp6VYCF1nvBTXL3trRso7mXMlRrw9ooo375wvi2s=
 | 
					github.com/rogpeppe/fastuuid v1.2.0 h1:Ppwyp6VYCF1nvBTXL3trRso7mXMlRrw9ooo375wvi2s=
 | 
				
			||||||
github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f h1:UFr9zpz4xgTnIE5yIMtWAMngCdZ9p/+q6lTbgelo80M=
 | 
					github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f h1:UFr9zpz4xgTnIE5yIMtWAMngCdZ9p/+q6lTbgelo80M=
 | 
				
			||||||
@@ -220,6 +253,7 @@ github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykE
 | 
				
			|||||||
github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=
 | 
					github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=
 | 
				
			||||||
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72 h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ=
 | 
					github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72 h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ=
 | 
				
			||||||
github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI=
 | 
					github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI=
 | 
				
			||||||
 | 
					github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4=
 | 
				
			||||||
github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8=
 | 
					github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8=
 | 
				
			||||||
github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk=
 | 
					github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk=
 | 
				
			||||||
github.com/spf13/viper v1.7.0 h1:xVKxvI7ouOI5I+U9s2eeiUfMaWBVoXA3AWskkrqK0VM=
 | 
					github.com/spf13/viper v1.7.0 h1:xVKxvI7ouOI5I+U9s2eeiUfMaWBVoXA3AWskkrqK0VM=
 | 
				
			||||||
@@ -229,15 +263,63 @@ github.com/urfave/cli v1.22.2 h1:gsqYFH8bb9ekPA12kRo0hfjngWQjkJPlN9R0N78BoUo=
 | 
				
			|||||||
github.com/xhit/go-str2duration/v2 v2.1.0 h1:lxklc02Drh6ynqX+DdPyp5pCKLUQpRT8bp8Ydu2Bstc=
 | 
					github.com/xhit/go-str2duration/v2 v2.1.0 h1:lxklc02Drh6ynqX+DdPyp5pCKLUQpRT8bp8Ydu2Bstc=
 | 
				
			||||||
github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77 h1:ESFSdwYZvkeru3RtdrYueztKhOBCSAAzS4Gf+k0tEow=
 | 
					github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77 h1:ESFSdwYZvkeru3RtdrYueztKhOBCSAAzS4Gf+k0tEow=
 | 
				
			||||||
github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE=
 | 
					github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE=
 | 
				
			||||||
 | 
					github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA=
 | 
				
			||||||
go.etcd.io/gofail v0.1.0 h1:XItAMIhOojXFQMgrxjnd2EIIHun/d5qL0Pf7FzVTkFg=
 | 
					go.etcd.io/gofail v0.1.0 h1:XItAMIhOojXFQMgrxjnd2EIIHun/d5qL0Pf7FzVTkFg=
 | 
				
			||||||
go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw=
 | 
					go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw=
 | 
				
			||||||
 | 
					golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
 | 
				
			||||||
 | 
					golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
 | 
				
			||||||
 | 
					golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0=
 | 
				
			||||||
 | 
					golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw=
 | 
				
			||||||
golang.org/x/image v0.0.0-20190802002840-cff245a6509b h1:+qEpEAPhDZ1o0x3tHzZTQDArnOixOzGD9HUJfcg0mb4=
 | 
					golang.org/x/image v0.0.0-20190802002840-cff245a6509b h1:+qEpEAPhDZ1o0x3tHzZTQDArnOixOzGD9HUJfcg0mb4=
 | 
				
			||||||
golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug=
 | 
					golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug=
 | 
				
			||||||
golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028 h1:4+4C/Iv2U4fMZBiMCc98MG1In4gJY5YRhtpDNeDeHWs=
 | 
					golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028 h1:4+4C/Iv2U4fMZBiMCc98MG1In4gJY5YRhtpDNeDeHWs=
 | 
				
			||||||
 | 
					golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
 | 
				
			||||||
 | 
					golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
 | 
				
			||||||
 | 
					golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
 | 
				
			||||||
 | 
					golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
 | 
				
			||||||
 | 
					golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA=
 | 
				
			||||||
 | 
					golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI=
 | 
				
			||||||
 | 
					golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY=
 | 
				
			||||||
 | 
					golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
 | 
				
			||||||
 | 
					golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
				
			||||||
 | 
					golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE=
 | 
				
			||||||
 | 
					golang.org/x/oauth2 v0.16.0/go.mod h1:hqZ+0LWXsiVoZpeld6jVt06P3adbS2Uu911W1SsJv2o=
 | 
				
			||||||
 | 
					golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
 | 
				
			||||||
golang.org/x/telemetry v0.0.0-20240208230135-b75ee8823808 h1:+Kc94D8UVEVxJnLXp/+FMfqQARZtWHfVrcRtcG8aT3g=
 | 
					golang.org/x/telemetry v0.0.0-20240208230135-b75ee8823808 h1:+Kc94D8UVEVxJnLXp/+FMfqQARZtWHfVrcRtcG8aT3g=
 | 
				
			||||||
 | 
					golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
 | 
				
			||||||
 | 
					golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
 | 
				
			||||||
 | 
					golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
 | 
				
			||||||
 | 
					golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
 | 
				
			||||||
 | 
					golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
 | 
				
			||||||
 | 
					golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
 | 
				
			||||||
 | 
					golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
 | 
				
			||||||
 | 
					golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
 | 
				
			||||||
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk=
 | 
					golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk=
 | 
				
			||||||
 | 
					google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:xZnkP7mREFX5MORlOPEzLMr+90PPZQ2QWzrVTWfAq64=
 | 
				
			||||||
 | 
					google.golang.org/genproto v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:O9kGHb51iE/nOGvQaDUuadVYqovW56s5emA88lQnj6Y=
 | 
				
			||||||
 | 
					google.golang.org/genproto v0.0.0-20230711160842-782d3b101e98/go.mod h1:S7mY02OqCJTD0E1OiQy1F72PWFB4bZJ87cAtLPYgDR0=
 | 
				
			||||||
 | 
					google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig=
 | 
				
			||||||
google.golang.org/genproto/googleapis/bytestream v0.0.0-20230530153820-e85fd2cbaebc h1:g3hIDl0jRNd9PPTs2uBzYuaD5mQuwOkZY0vSc0LR32o=
 | 
					google.golang.org/genproto/googleapis/bytestream v0.0.0-20230530153820-e85fd2cbaebc h1:g3hIDl0jRNd9PPTs2uBzYuaD5mQuwOkZY0vSc0LR32o=
 | 
				
			||||||
 | 
					google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA=
 | 
				
			||||||
 | 
					google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:8mL13HKkDa+IuJ8yruA3ci0q+0vsUz4m//+ottjwS5o=
 | 
				
			||||||
 | 
					google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM=
 | 
				
			||||||
 | 
					google.golang.org/genproto/googleapis/rpc v0.0.0-20230731190214-cbb8c96f2d6d/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM=
 | 
				
			||||||
 | 
					google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ=
 | 
				
			||||||
 | 
					google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8=
 | 
				
			||||||
 | 
					google.golang.org/grpc v1.56.2/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s=
 | 
				
			||||||
 | 
					google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo=
 | 
				
			||||||
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0 h1:M1YKkFIboKNieVO5DLUEVzQfGwJD30Nv2jfUgzb5UcE=
 | 
					google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0 h1:M1YKkFIboKNieVO5DLUEVzQfGwJD30Nv2jfUgzb5UcE=
 | 
				
			||||||
 | 
					google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
 | 
				
			||||||
 | 
					google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
 | 
				
			||||||
 | 
					google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
 | 
				
			||||||
gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc=
 | 
					gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc=
 | 
				
			||||||
gopkg.in/errgo.v2 v2.1.0 h1:0vLT13EuvQ0hNvakwLuFZ/jYrLp5F3kcWHXdRggjCE8=
 | 
					gopkg.in/errgo.v2 v2.1.0 h1:0vLT13EuvQ0hNvakwLuFZ/jYrLp5F3kcWHXdRggjCE8=
 | 
				
			||||||
gopkg.in/ini.v1 v1.51.0 h1:AQvPpx3LzTDM0AjnIRlVFwFFGC+npRopjZxLJj6gdno=
 | 
					gopkg.in/ini.v1 v1.51.0 h1:AQvPpx3LzTDM0AjnIRlVFwFFGC+npRopjZxLJj6gdno=
 | 
				
			||||||
@@ -247,6 +329,4 @@ honnef.co/go/tools v0.0.1-2020.1.4 h1:UoveltGrhghAA7ePc+e+QYDHXrBps2PqFZiHkGR/xK
 | 
				
			|||||||
rsc.io/binaryregexp v0.2.0 h1:HfqmD5MEmC0zvwBuF187nq9mdnXjXsSivRiXN7SmRkE=
 | 
					rsc.io/binaryregexp v0.2.0 h1:HfqmD5MEmC0zvwBuF187nq9mdnXjXsSivRiXN7SmRkE=
 | 
				
			||||||
rsc.io/quote/v3 v3.1.0 h1:9JKUTTIUgS6kzR9mK1YuGKv6Nl+DijDNIc0ghT58FaY=
 | 
					rsc.io/quote/v3 v3.1.0 h1:9JKUTTIUgS6kzR9mK1YuGKv6Nl+DijDNIc0ghT58FaY=
 | 
				
			||||||
rsc.io/sampler v1.3.0 h1:7uVkIFmeBqHfdjD+gZwtXXI+RODJ2Wc4O7MPEh/QiW4=
 | 
					rsc.io/sampler v1.3.0 h1:7uVkIFmeBqHfdjD+gZwtXXI+RODJ2Wc4O7MPEh/QiW4=
 | 
				
			||||||
sigs.k8s.io/knftables v0.0.16 h1:ZpTfNsjnidgoXdxxzcZLdSctqkpSO3QB3jo3zQ4PXqM=
 | 
					 | 
				
			||||||
sigs.k8s.io/knftables v0.0.16/go.mod h1:f/5ZLKYEUPUhVjUCg6l80ACdL7CIIyeL0DxfgojGRTk=
 | 
					 | 
				
			||||||
sigs.k8s.io/kustomize/cmd/config v0.11.2 h1:YyoHHbxxsLUts/gWLGgIQkdT82ekp3zautbpcml54vc=
 | 
					sigs.k8s.io/kustomize/cmd/config v0.11.2 h1:YyoHHbxxsLUts/gWLGgIQkdT82ekp3zautbpcml54vc=
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -48,6 +48,7 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69
 | 
				
			|||||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
 | 
					github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
 | 
				
			||||||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
 | 
					github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
 | 
				
			||||||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
 | 
					github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
 | 
				
			||||||
 | 
					github.com/golang/mock v1.4.4 h1:l75CXGRSwbaYNpl/Z2X1XIIAMSCquvXgpVZDhwEIJsc=
 | 
				
			||||||
github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo=
 | 
					github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo=
 | 
				
			||||||
github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw=
 | 
					github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw=
 | 
				
			||||||
github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=
 | 
					github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -72,7 +72,6 @@ require (
 | 
				
			|||||||
	github.com/josharian/intern v1.0.0 // indirect
 | 
						github.com/josharian/intern v1.0.0 // indirect
 | 
				
			||||||
	github.com/json-iterator/go v1.1.12 // indirect
 | 
						github.com/json-iterator/go v1.1.12 // indirect
 | 
				
			||||||
	github.com/mailru/easyjson v0.7.7 // indirect
 | 
						github.com/mailru/easyjson v0.7.7 // indirect
 | 
				
			||||||
	github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
 | 
					 | 
				
			||||||
	github.com/moby/spdystream v0.2.0 // indirect
 | 
						github.com/moby/spdystream v0.2.0 // indirect
 | 
				
			||||||
	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
 | 
						github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
 | 
				
			||||||
	github.com/modern-go/reflect2 v1.0.2 // indirect
 | 
						github.com/modern-go/reflect2 v1.0.2 // indirect
 | 
				
			||||||
@@ -80,10 +79,10 @@ require (
 | 
				
			|||||||
	github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect
 | 
						github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect
 | 
				
			||||||
	github.com/pkg/errors v0.9.1 // indirect
 | 
						github.com/pkg/errors v0.9.1 // indirect
 | 
				
			||||||
	github.com/pmezard/go-difflib v1.0.0 // indirect
 | 
						github.com/pmezard/go-difflib v1.0.0 // indirect
 | 
				
			||||||
	github.com/prometheus/client_golang v1.16.0 // indirect
 | 
						github.com/prometheus/client_golang v1.19.0 // indirect
 | 
				
			||||||
	github.com/prometheus/client_model v0.4.0 // indirect
 | 
						github.com/prometheus/client_model v0.6.0 // indirect
 | 
				
			||||||
	github.com/prometheus/common v0.44.0 // indirect
 | 
						github.com/prometheus/common v0.48.0 // indirect
 | 
				
			||||||
	github.com/prometheus/procfs v0.10.1 // indirect
 | 
						github.com/prometheus/procfs v0.12.0 // indirect
 | 
				
			||||||
	github.com/sirupsen/logrus v1.9.0 // indirect
 | 
						github.com/sirupsen/logrus v1.9.0 // indirect
 | 
				
			||||||
	github.com/soheilhy/cmux v0.1.5 // indirect
 | 
						github.com/soheilhy/cmux v0.1.5 // indirect
 | 
				
			||||||
	github.com/stoewer/go-strcase v1.2.0 // indirect
 | 
						github.com/stoewer/go-strcase v1.2.0 // indirect
 | 
				
			||||||
@@ -108,7 +107,7 @@ require (
 | 
				
			|||||||
	golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
 | 
						golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
 | 
				
			||||||
	golang.org/x/mod v0.15.0 // indirect
 | 
						golang.org/x/mod v0.15.0 // indirect
 | 
				
			||||||
	golang.org/x/net v0.23.0 // indirect
 | 
						golang.org/x/net v0.23.0 // indirect
 | 
				
			||||||
	golang.org/x/oauth2 v0.10.0 // indirect
 | 
						golang.org/x/oauth2 v0.18.0 // indirect
 | 
				
			||||||
	golang.org/x/sync v0.6.0 // indirect
 | 
						golang.org/x/sync v0.6.0 // indirect
 | 
				
			||||||
	golang.org/x/sys v0.18.0 // indirect
 | 
						golang.org/x/sys v0.18.0 // indirect
 | 
				
			||||||
	golang.org/x/term v0.18.0 // indirect
 | 
						golang.org/x/term v0.18.0 // indirect
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										25
									
								
								staging/src/k8s.io/apiextensions-apiserver/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										25
									
								
								staging/src/k8s.io/apiextensions-apiserver/go.sum
									
									
									
										generated
									
									
									
								
							@@ -124,7 +124,7 @@ github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg6
 | 
				
			|||||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
 | 
					github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
 | 
				
			||||||
github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I=
 | 
					github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I=
 | 
				
			||||||
github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c=
 | 
					github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c=
 | 
				
			||||||
github.com/alecthomas/kingpin/v2 v2.3.2/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE=
 | 
					github.com/alecthomas/kingpin/v2 v2.4.0/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE=
 | 
				
			||||||
github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE=
 | 
					github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE=
 | 
				
			||||||
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
 | 
					github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
 | 
				
			||||||
github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df h1:7RFfzj4SSt6nnvCPbCqijJi1nWCd+TqAT3bYCStRC18=
 | 
					github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df h1:7RFfzj4SSt6nnvCPbCqijJi1nWCd+TqAT3bYCStRC18=
 | 
				
			||||||
@@ -273,8 +273,7 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
 | 
				
			|||||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 | 
					github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 | 
				
			||||||
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
 | 
					github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
 | 
				
			||||||
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
 | 
					github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
 | 
				
			||||||
github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=
 | 
					github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
 | 
				
			||||||
github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
 | 
					 | 
				
			||||||
github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8=
 | 
					github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8=
 | 
				
			||||||
github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
 | 
					github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
 | 
				
			||||||
github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
 | 
					github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
 | 
				
			||||||
@@ -300,15 +299,15 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
 | 
				
			|||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
					github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
				
			||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
					github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
				
			||||||
github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI=
 | 
					github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI=
 | 
				
			||||||
github.com/prometheus/client_golang v1.16.0 h1:yk/hx9hDbrGHovbci4BY+pRMfSuuat626eFsHb7tmT8=
 | 
					github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU=
 | 
				
			||||||
github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc=
 | 
					github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k=
 | 
				
			||||||
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
 | 
					github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
 | 
				
			||||||
github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY=
 | 
					github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos=
 | 
				
			||||||
github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU=
 | 
					github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8=
 | 
				
			||||||
github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY=
 | 
					github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE=
 | 
				
			||||||
github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY=
 | 
					github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc=
 | 
				
			||||||
github.com/prometheus/procfs v0.10.1 h1:kYK1Va/YMlutzCGazswoHKo//tZVlFpKYh+PymziUAg=
 | 
					github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo=
 | 
				
			||||||
github.com/prometheus/procfs v0.10.1/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM=
 | 
					github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
 | 
				
			||||||
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
 | 
					github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
 | 
				
			||||||
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
 | 
					github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
 | 
				
			||||||
github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
 | 
					github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
 | 
				
			||||||
@@ -425,8 +424,8 @@ golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
				
			|||||||
golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
					golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
				
			||||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 | 
					golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 | 
				
			||||||
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
 | 
					golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0 h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8=
 | 
					golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI=
 | 
					golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					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-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -87,17 +87,16 @@ require (
 | 
				
			|||||||
	github.com/josharian/intern v1.0.0 // indirect
 | 
						github.com/josharian/intern v1.0.0 // indirect
 | 
				
			||||||
	github.com/json-iterator/go v1.1.12 // indirect
 | 
						github.com/json-iterator/go v1.1.12 // indirect
 | 
				
			||||||
	github.com/mailru/easyjson v0.7.7 // indirect
 | 
						github.com/mailru/easyjson v0.7.7 // indirect
 | 
				
			||||||
	github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
 | 
					 | 
				
			||||||
	github.com/moby/spdystream v0.2.0 // indirect
 | 
						github.com/moby/spdystream v0.2.0 // indirect
 | 
				
			||||||
	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
 | 
						github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
 | 
				
			||||||
	github.com/modern-go/reflect2 v1.0.2 // indirect
 | 
						github.com/modern-go/reflect2 v1.0.2 // indirect
 | 
				
			||||||
	github.com/pkg/errors v0.9.1 // indirect
 | 
						github.com/pkg/errors v0.9.1 // indirect
 | 
				
			||||||
	github.com/pmezard/go-difflib v1.0.0 // indirect
 | 
						github.com/pmezard/go-difflib v1.0.0 // indirect
 | 
				
			||||||
	github.com/pquerna/cachecontrol v0.1.0 // indirect
 | 
						github.com/pquerna/cachecontrol v0.1.0 // indirect
 | 
				
			||||||
	github.com/prometheus/client_golang v1.16.0 // indirect
 | 
						github.com/prometheus/client_golang v1.19.0 // indirect
 | 
				
			||||||
	github.com/prometheus/client_model v0.4.0 // indirect
 | 
						github.com/prometheus/client_model v0.6.0 // indirect
 | 
				
			||||||
	github.com/prometheus/common v0.44.0 // indirect
 | 
						github.com/prometheus/common v0.48.0 // indirect
 | 
				
			||||||
	github.com/prometheus/procfs v0.10.1 // indirect
 | 
						github.com/prometheus/procfs v0.12.0 // indirect
 | 
				
			||||||
	github.com/sirupsen/logrus v1.9.0 // indirect
 | 
						github.com/sirupsen/logrus v1.9.0 // indirect
 | 
				
			||||||
	github.com/soheilhy/cmux v0.1.5 // indirect
 | 
						github.com/soheilhy/cmux v0.1.5 // indirect
 | 
				
			||||||
	github.com/spf13/cobra v1.7.0 // indirect
 | 
						github.com/spf13/cobra v1.7.0 // indirect
 | 
				
			||||||
@@ -113,7 +112,7 @@ require (
 | 
				
			|||||||
	go.opentelemetry.io/proto/otlp v1.0.0 // indirect
 | 
						go.opentelemetry.io/proto/otlp v1.0.0 // indirect
 | 
				
			||||||
	go.uber.org/multierr v1.11.0 // indirect
 | 
						go.uber.org/multierr v1.11.0 // indirect
 | 
				
			||||||
	golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
 | 
						golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
 | 
				
			||||||
	golang.org/x/oauth2 v0.10.0 // indirect
 | 
						golang.org/x/oauth2 v0.18.0 // indirect
 | 
				
			||||||
	golang.org/x/term v0.18.0 // indirect
 | 
						golang.org/x/term v0.18.0 // indirect
 | 
				
			||||||
	golang.org/x/text v0.14.0 // indirect
 | 
						golang.org/x/text v0.14.0 // indirect
 | 
				
			||||||
	google.golang.org/appengine v1.6.7 // indirect
 | 
						google.golang.org/appengine v1.6.7 // indirect
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										25
									
								
								staging/src/k8s.io/apiserver/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										25
									
								
								staging/src/k8s.io/apiserver/go.sum
									
									
									
										generated
									
									
									
								
							@@ -124,7 +124,7 @@ github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg6
 | 
				
			|||||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
 | 
					github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
 | 
				
			||||||
github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I=
 | 
					github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I=
 | 
				
			||||||
github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c=
 | 
					github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c=
 | 
				
			||||||
github.com/alecthomas/kingpin/v2 v2.3.2/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE=
 | 
					github.com/alecthomas/kingpin/v2 v2.4.0/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE=
 | 
				
			||||||
github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE=
 | 
					github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE=
 | 
				
			||||||
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
 | 
					github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
 | 
				
			||||||
github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df h1:7RFfzj4SSt6nnvCPbCqijJi1nWCd+TqAT3bYCStRC18=
 | 
					github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df h1:7RFfzj4SSt6nnvCPbCqijJi1nWCd+TqAT3bYCStRC18=
 | 
				
			||||||
@@ -274,8 +274,7 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
 | 
				
			|||||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 | 
					github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 | 
				
			||||||
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
 | 
					github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
 | 
				
			||||||
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
 | 
					github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
 | 
				
			||||||
github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=
 | 
					github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
 | 
				
			||||||
github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
 | 
					 | 
				
			||||||
github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8=
 | 
					github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8=
 | 
				
			||||||
github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
 | 
					github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
 | 
				
			||||||
github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
 | 
					github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
 | 
				
			||||||
@@ -302,15 +301,15 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
 | 
				
			|||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
					github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
				
			||||||
github.com/pquerna/cachecontrol v0.1.0 h1:yJMy84ti9h/+OEWa752kBTKv4XC30OtVVHYv/8cTqKc=
 | 
					github.com/pquerna/cachecontrol v0.1.0 h1:yJMy84ti9h/+OEWa752kBTKv4XC30OtVVHYv/8cTqKc=
 | 
				
			||||||
github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI=
 | 
					github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI=
 | 
				
			||||||
github.com/prometheus/client_golang v1.16.0 h1:yk/hx9hDbrGHovbci4BY+pRMfSuuat626eFsHb7tmT8=
 | 
					github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU=
 | 
				
			||||||
github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc=
 | 
					github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k=
 | 
				
			||||||
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
 | 
					github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
 | 
				
			||||||
github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY=
 | 
					github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos=
 | 
				
			||||||
github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU=
 | 
					github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8=
 | 
				
			||||||
github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY=
 | 
					github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE=
 | 
				
			||||||
github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY=
 | 
					github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc=
 | 
				
			||||||
github.com/prometheus/procfs v0.10.1 h1:kYK1Va/YMlutzCGazswoHKo//tZVlFpKYh+PymziUAg=
 | 
					github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo=
 | 
				
			||||||
github.com/prometheus/procfs v0.10.1/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM=
 | 
					github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
 | 
				
			||||||
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
 | 
					github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
 | 
				
			||||||
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
 | 
					github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
 | 
				
			||||||
github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
 | 
					github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
 | 
				
			||||||
@@ -426,8 +425,8 @@ golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
				
			|||||||
golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
					golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
				
			||||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 | 
					golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 | 
				
			||||||
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
 | 
					golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0 h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8=
 | 
					golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI=
 | 
					golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					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-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -58,7 +58,7 @@ require (
 | 
				
			|||||||
	github.com/xlab/treeprint v1.2.0 // indirect
 | 
						github.com/xlab/treeprint v1.2.0 // indirect
 | 
				
			||||||
	go.starlark.net v0.0.0-20230525235612-a134d8f9ddca // indirect
 | 
						go.starlark.net v0.0.0-20230525235612-a134d8f9ddca // indirect
 | 
				
			||||||
	golang.org/x/net v0.23.0 // indirect
 | 
						golang.org/x/net v0.23.0 // indirect
 | 
				
			||||||
	golang.org/x/oauth2 v0.10.0 // indirect
 | 
						golang.org/x/oauth2 v0.18.0 // indirect
 | 
				
			||||||
	golang.org/x/sys v0.18.0 // indirect
 | 
						golang.org/x/sys v0.18.0 // indirect
 | 
				
			||||||
	golang.org/x/term v0.18.0 // indirect
 | 
						golang.org/x/term v0.18.0 // indirect
 | 
				
			||||||
	golang.org/x/time v0.3.0 // indirect
 | 
						golang.org/x/time v0.3.0 // indirect
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										4
									
								
								staging/src/k8s.io/cli-runtime/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4
									
								
								staging/src/k8s.io/cli-runtime/go.sum
									
									
									
										generated
									
									
									
								
							@@ -174,8 +174,8 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY
 | 
				
			|||||||
golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
					golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
				
			||||||
golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
					golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
				
			||||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 | 
					golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0 h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8=
 | 
					golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI=
 | 
					golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					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-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,7 +20,7 @@ require (
 | 
				
			|||||||
	github.com/spf13/pflag v1.0.5
 | 
						github.com/spf13/pflag v1.0.5
 | 
				
			||||||
	github.com/stretchr/testify v1.8.4
 | 
						github.com/stretchr/testify v1.8.4
 | 
				
			||||||
	golang.org/x/net v0.23.0
 | 
						golang.org/x/net v0.23.0
 | 
				
			||||||
	golang.org/x/oauth2 v0.10.0
 | 
						golang.org/x/oauth2 v0.18.0
 | 
				
			||||||
	golang.org/x/term v0.18.0
 | 
						golang.org/x/term v0.18.0
 | 
				
			||||||
	golang.org/x/time v0.3.0
 | 
						golang.org/x/time v0.3.0
 | 
				
			||||||
	google.golang.org/protobuf v1.33.0
 | 
						google.golang.org/protobuf v1.33.0
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										4
									
								
								staging/src/k8s.io/client-go/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4
									
								
								staging/src/k8s.io/client-go/go.sum
									
									
									
										generated
									
									
									
								
							@@ -117,8 +117,8 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLL
 | 
				
			|||||||
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
					golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
				
			||||||
golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
					golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
				
			||||||
golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
					golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0 h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8=
 | 
					golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI=
 | 
					golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -56,17 +56,16 @@ require (
 | 
				
			|||||||
	github.com/josharian/intern v1.0.0 // indirect
 | 
						github.com/josharian/intern v1.0.0 // indirect
 | 
				
			||||||
	github.com/json-iterator/go v1.1.12 // indirect
 | 
						github.com/json-iterator/go v1.1.12 // indirect
 | 
				
			||||||
	github.com/mailru/easyjson v0.7.7 // indirect
 | 
						github.com/mailru/easyjson v0.7.7 // indirect
 | 
				
			||||||
	github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
 | 
					 | 
				
			||||||
	github.com/moby/term v0.0.0-20221205130635-1aeaba878587 // indirect
 | 
						github.com/moby/term v0.0.0-20221205130635-1aeaba878587 // indirect
 | 
				
			||||||
	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
 | 
						github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
 | 
				
			||||||
	github.com/modern-go/reflect2 v1.0.2 // indirect
 | 
						github.com/modern-go/reflect2 v1.0.2 // indirect
 | 
				
			||||||
	github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
 | 
						github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
 | 
				
			||||||
	github.com/pkg/errors v0.9.1 // indirect
 | 
						github.com/pkg/errors v0.9.1 // indirect
 | 
				
			||||||
	github.com/pmezard/go-difflib v1.0.0 // indirect
 | 
						github.com/pmezard/go-difflib v1.0.0 // indirect
 | 
				
			||||||
	github.com/prometheus/client_golang v1.16.0 // indirect
 | 
						github.com/prometheus/client_golang v1.19.0 // indirect
 | 
				
			||||||
	github.com/prometheus/client_model v0.4.0 // indirect
 | 
						github.com/prometheus/client_model v0.6.0 // indirect
 | 
				
			||||||
	github.com/prometheus/common v0.44.0 // indirect
 | 
						github.com/prometheus/common v0.48.0 // indirect
 | 
				
			||||||
	github.com/prometheus/procfs v0.10.1 // indirect
 | 
						github.com/prometheus/procfs v0.12.0 // indirect
 | 
				
			||||||
	github.com/stoewer/go-strcase v1.2.0 // indirect
 | 
						github.com/stoewer/go-strcase v1.2.0 // indirect
 | 
				
			||||||
	go.etcd.io/etcd/api/v3 v3.5.10 // indirect
 | 
						go.etcd.io/etcd/api/v3 v3.5.10 // indirect
 | 
				
			||||||
	go.etcd.io/etcd/client/pkg/v3 v3.5.10 // indirect
 | 
						go.etcd.io/etcd/client/pkg/v3 v3.5.10 // indirect
 | 
				
			||||||
@@ -85,7 +84,7 @@ require (
 | 
				
			|||||||
	golang.org/x/crypto v0.21.0 // indirect
 | 
						golang.org/x/crypto v0.21.0 // indirect
 | 
				
			||||||
	golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
 | 
						golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
 | 
				
			||||||
	golang.org/x/net v0.23.0 // indirect
 | 
						golang.org/x/net v0.23.0 // indirect
 | 
				
			||||||
	golang.org/x/oauth2 v0.10.0 // indirect
 | 
						golang.org/x/oauth2 v0.18.0 // indirect
 | 
				
			||||||
	golang.org/x/sync v0.6.0 // indirect
 | 
						golang.org/x/sync v0.6.0 // indirect
 | 
				
			||||||
	golang.org/x/sys v0.18.0 // indirect
 | 
						golang.org/x/sys v0.18.0 // indirect
 | 
				
			||||||
	golang.org/x/term v0.18.0 // indirect
 | 
						golang.org/x/term v0.18.0 // indirect
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										27
									
								
								staging/src/k8s.io/cloud-provider/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										27
									
								
								staging/src/k8s.io/cloud-provider/go.sum
									
									
									
										generated
									
									
									
								
							@@ -122,7 +122,7 @@ github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOEl
 | 
				
			|||||||
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
 | 
					github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
 | 
				
			||||||
github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I=
 | 
					github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I=
 | 
				
			||||||
github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c=
 | 
					github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c=
 | 
				
			||||||
github.com/alecthomas/kingpin/v2 v2.3.2/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE=
 | 
					github.com/alecthomas/kingpin/v2 v2.4.0/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE=
 | 
				
			||||||
github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE=
 | 
					github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE=
 | 
				
			||||||
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
 | 
					github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
 | 
				
			||||||
github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df h1:7RFfzj4SSt6nnvCPbCqijJi1nWCd+TqAT3bYCStRC18=
 | 
					github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df h1:7RFfzj4SSt6nnvCPbCqijJi1nWCd+TqAT3bYCStRC18=
 | 
				
			||||||
@@ -194,7 +194,6 @@ github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE=
 | 
				
			|||||||
github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ=
 | 
					github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ=
 | 
				
			||||||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
 | 
					github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
 | 
				
			||||||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
 | 
					github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
 | 
				
			||||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 | 
					 | 
				
			||||||
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 | 
					github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 | 
				
			||||||
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
 | 
					github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
 | 
				
			||||||
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
 | 
					github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
 | 
				
			||||||
@@ -248,8 +247,7 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
 | 
				
			|||||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 | 
					github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 | 
				
			||||||
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
 | 
					github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
 | 
				
			||||||
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
 | 
					github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
 | 
				
			||||||
github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=
 | 
					github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
 | 
				
			||||||
github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
 | 
					 | 
				
			||||||
github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
 | 
					github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
 | 
				
			||||||
github.com/moby/term v0.0.0-20221205130635-1aeaba878587 h1:HfkjXDfhgVaN5rmueG8cL8KKeFNecRCXFhaJ2qZ5SKA=
 | 
					github.com/moby/term v0.0.0-20221205130635-1aeaba878587 h1:HfkjXDfhgVaN5rmueG8cL8KKeFNecRCXFhaJ2qZ5SKA=
 | 
				
			||||||
github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
 | 
					github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
 | 
				
			||||||
@@ -272,14 +270,14 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
 | 
				
			|||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
					github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
				
			||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
					github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
				
			||||||
github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI=
 | 
					github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI=
 | 
				
			||||||
github.com/prometheus/client_golang v1.16.0 h1:yk/hx9hDbrGHovbci4BY+pRMfSuuat626eFsHb7tmT8=
 | 
					github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU=
 | 
				
			||||||
github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc=
 | 
					github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k=
 | 
				
			||||||
github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY=
 | 
					github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos=
 | 
				
			||||||
github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU=
 | 
					github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8=
 | 
				
			||||||
github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY=
 | 
					github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE=
 | 
				
			||||||
github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY=
 | 
					github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc=
 | 
				
			||||||
github.com/prometheus/procfs v0.10.1 h1:kYK1Va/YMlutzCGazswoHKo//tZVlFpKYh+PymziUAg=
 | 
					github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo=
 | 
				
			||||||
github.com/prometheus/procfs v0.10.1/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM=
 | 
					github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
 | 
				
			||||||
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
 | 
					github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
 | 
				
			||||||
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
 | 
					github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
 | 
				
			||||||
github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
 | 
					github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
 | 
				
			||||||
@@ -370,9 +368,8 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLL
 | 
				
			|||||||
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
					golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
				
			||||||
golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
					golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
				
			||||||
golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
					golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0 h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8=
 | 
					golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI=
 | 
					golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					 | 
				
			||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -34,7 +34,7 @@ require (
 | 
				
			|||||||
	github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
 | 
						github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
 | 
				
			||||||
	github.com/pkg/errors v0.9.1 // indirect
 | 
						github.com/pkg/errors v0.9.1 // indirect
 | 
				
			||||||
	golang.org/x/net v0.23.0 // indirect
 | 
						golang.org/x/net v0.23.0 // indirect
 | 
				
			||||||
	golang.org/x/oauth2 v0.10.0 // indirect
 | 
						golang.org/x/oauth2 v0.18.0 // indirect
 | 
				
			||||||
	golang.org/x/sys v0.18.0 // indirect
 | 
						golang.org/x/sys v0.18.0 // indirect
 | 
				
			||||||
	golang.org/x/term v0.18.0 // indirect
 | 
						golang.org/x/term v0.18.0 // indirect
 | 
				
			||||||
	golang.org/x/text v0.14.0 // indirect
 | 
						golang.org/x/text v0.14.0 // indirect
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -90,8 +90,8 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLL
 | 
				
			|||||||
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
					golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
				
			||||||
golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
					golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
				
			||||||
golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
					golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0 h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8=
 | 
					golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI=
 | 
					golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -30,12 +30,15 @@ github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J
 | 
				
			|||||||
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
 | 
					github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
 | 
				
			||||||
github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI=
 | 
					github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI=
 | 
				
			||||||
github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
 | 
					github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
 | 
				
			||||||
 | 
					github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE=
 | 
				
			||||||
 | 
					github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc=
 | 
				
			||||||
github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c=
 | 
					github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c=
 | 
				
			||||||
github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
 | 
					github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
 | 
				
			||||||
github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg=
 | 
					github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg=
 | 
				
			||||||
github.com/yuin/goldmark v1.2.1 h1:ruQGxdhGHe7FWOJPT0mKs5+pD2Xs1Bm/kdGlHO04FmM=
 | 
					github.com/yuin/goldmark v1.2.1 h1:ruQGxdhGHe7FWOJPT0mKs5+pD2Xs1Bm/kdGlHO04FmM=
 | 
				
			||||||
golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo=
 | 
					golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo=
 | 
				
			||||||
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
 | 
					golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
 | 
				
			||||||
 | 
					golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA=
 | 
				
			||||||
golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs=
 | 
					golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs=
 | 
				
			||||||
golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8=
 | 
					golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8=
 | 
				
			||||||
golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
 | 
					golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,10 +10,10 @@ require (
 | 
				
			|||||||
	github.com/go-logr/zapr v1.3.0
 | 
						github.com/go-logr/zapr v1.3.0
 | 
				
			||||||
	github.com/google/go-cmp v0.6.0
 | 
						github.com/google/go-cmp v0.6.0
 | 
				
			||||||
	github.com/moby/term v0.0.0-20221205130635-1aeaba878587
 | 
						github.com/moby/term v0.0.0-20221205130635-1aeaba878587
 | 
				
			||||||
	github.com/prometheus/client_golang v1.16.0
 | 
						github.com/prometheus/client_golang v1.19.0
 | 
				
			||||||
	github.com/prometheus/client_model v0.4.0
 | 
						github.com/prometheus/client_model v0.6.0
 | 
				
			||||||
	github.com/prometheus/common v0.44.0
 | 
						github.com/prometheus/common v0.48.0
 | 
				
			||||||
	github.com/prometheus/procfs v0.10.1
 | 
						github.com/prometheus/procfs v0.12.0
 | 
				
			||||||
	github.com/spf13/cobra v1.7.0
 | 
						github.com/spf13/cobra v1.7.0
 | 
				
			||||||
	github.com/spf13/pflag v1.0.5
 | 
						github.com/spf13/pflag v1.0.5
 | 
				
			||||||
	github.com/stretchr/testify v1.8.4
 | 
						github.com/stretchr/testify v1.8.4
 | 
				
			||||||
@@ -54,7 +54,6 @@ require (
 | 
				
			|||||||
	github.com/josharian/intern v1.0.0 // indirect
 | 
						github.com/josharian/intern v1.0.0 // indirect
 | 
				
			||||||
	github.com/json-iterator/go v1.1.12 // indirect
 | 
						github.com/json-iterator/go v1.1.12 // indirect
 | 
				
			||||||
	github.com/mailru/easyjson v0.7.7 // indirect
 | 
						github.com/mailru/easyjson v0.7.7 // indirect
 | 
				
			||||||
	github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
 | 
					 | 
				
			||||||
	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
 | 
						github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
 | 
				
			||||||
	github.com/modern-go/reflect2 v1.0.2 // indirect
 | 
						github.com/modern-go/reflect2 v1.0.2 // indirect
 | 
				
			||||||
	github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
 | 
						github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
 | 
				
			||||||
@@ -65,7 +64,7 @@ require (
 | 
				
			|||||||
	go.uber.org/goleak v1.3.0 // indirect
 | 
						go.uber.org/goleak v1.3.0 // indirect
 | 
				
			||||||
	go.uber.org/multierr v1.11.0 // indirect
 | 
						go.uber.org/multierr v1.11.0 // indirect
 | 
				
			||||||
	golang.org/x/net v0.23.0 // indirect
 | 
						golang.org/x/net v0.23.0 // indirect
 | 
				
			||||||
	golang.org/x/oauth2 v0.10.0 // indirect
 | 
						golang.org/x/oauth2 v0.18.0 // indirect
 | 
				
			||||||
	golang.org/x/term v0.18.0 // indirect
 | 
						golang.org/x/term v0.18.0 // indirect
 | 
				
			||||||
	golang.org/x/text v0.14.0 // indirect
 | 
						golang.org/x/text v0.14.0 // indirect
 | 
				
			||||||
	golang.org/x/time v0.3.0 // indirect
 | 
						golang.org/x/time v0.3.0 // indirect
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										26
									
								
								staging/src/k8s.io/component-base/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										26
									
								
								staging/src/k8s.io/component-base/go.sum
									
									
									
										generated
									
									
									
								
							@@ -3,7 +3,7 @@ cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2Aawl
 | 
				
			|||||||
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8=
 | 
					github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8=
 | 
				
			||||||
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
 | 
					github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
 | 
				
			||||||
github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ=
 | 
					github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ=
 | 
				
			||||||
github.com/alecthomas/kingpin/v2 v2.3.2/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE=
 | 
					github.com/alecthomas/kingpin/v2 v2.4.0/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE=
 | 
				
			||||||
github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE=
 | 
					github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE=
 | 
				
			||||||
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
 | 
					github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
 | 
				
			||||||
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
 | 
					github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
 | 
				
			||||||
@@ -58,7 +58,6 @@ github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE=
 | 
				
			|||||||
github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ=
 | 
					github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ=
 | 
				
			||||||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
 | 
					github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
 | 
				
			||||||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
 | 
					github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
 | 
				
			||||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 | 
					 | 
				
			||||||
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 | 
					github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 | 
				
			||||||
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
 | 
					github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
 | 
				
			||||||
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
 | 
					github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
 | 
				
			||||||
@@ -99,8 +98,6 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
 | 
				
			|||||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 | 
					github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 | 
				
			||||||
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
 | 
					github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
 | 
				
			||||||
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
 | 
					github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
 | 
				
			||||||
github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=
 | 
					 | 
				
			||||||
github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
 | 
					 | 
				
			||||||
github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
 | 
					github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
 | 
				
			||||||
github.com/moby/term v0.0.0-20221205130635-1aeaba878587 h1:HfkjXDfhgVaN5rmueG8cL8KKeFNecRCXFhaJ2qZ5SKA=
 | 
					github.com/moby/term v0.0.0-20221205130635-1aeaba878587 h1:HfkjXDfhgVaN5rmueG8cL8KKeFNecRCXFhaJ2qZ5SKA=
 | 
				
			||||||
github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
 | 
					github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
 | 
				
			||||||
@@ -122,14 +119,14 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
 | 
				
			|||||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 | 
					github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 | 
				
			||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
					github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
				
			||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
					github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
				
			||||||
github.com/prometheus/client_golang v1.16.0 h1:yk/hx9hDbrGHovbci4BY+pRMfSuuat626eFsHb7tmT8=
 | 
					github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU=
 | 
				
			||||||
github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc=
 | 
					github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k=
 | 
				
			||||||
github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY=
 | 
					github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos=
 | 
				
			||||||
github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU=
 | 
					github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8=
 | 
				
			||||||
github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY=
 | 
					github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE=
 | 
				
			||||||
github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY=
 | 
					github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc=
 | 
				
			||||||
github.com/prometheus/procfs v0.10.1 h1:kYK1Va/YMlutzCGazswoHKo//tZVlFpKYh+PymziUAg=
 | 
					github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo=
 | 
				
			||||||
github.com/prometheus/procfs v0.10.1/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM=
 | 
					github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
 | 
				
			||||||
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
 | 
					github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
 | 
				
			||||||
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
 | 
					github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
 | 
				
			||||||
github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
 | 
					github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
 | 
				
			||||||
@@ -187,9 +184,8 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLL
 | 
				
			|||||||
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
					golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
				
			||||||
golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
					golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
				
			||||||
golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
					golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0 h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8=
 | 
					golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI=
 | 
					golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					 | 
				
			||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -70,7 +70,7 @@ func NewMetrics() Metrics {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// ParseMetrics parses Metrics from data returned from prometheus endpoint
 | 
					// ParseMetrics parses Metrics from data returned from prometheus endpoint
 | 
				
			||||||
func ParseMetrics(data string, output *Metrics) error {
 | 
					func ParseMetrics(data string, output *Metrics) error {
 | 
				
			||||||
	dec := expfmt.NewDecoder(strings.NewReader(data), expfmt.FmtText)
 | 
						dec := expfmt.NewDecoder(strings.NewReader(data), expfmt.NewFormat(expfmt.TypeTextPlain))
 | 
				
			||||||
	decoder := expfmt.SampleDecoder{
 | 
						decoder := expfmt.SampleDecoder{
 | 
				
			||||||
		Dec:  dec,
 | 
							Dec:  dec,
 | 
				
			||||||
		Opts: &expfmt.DecodeOptions{},
 | 
							Opts: &expfmt.DecodeOptions{},
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -585,7 +585,7 @@ func TestGetHistogramVecFromGatherer(t *testing.T) {
 | 
				
			|||||||
			vec.WithLabelValues("value1-1", "value2-1").Observe(4.5)
 | 
								vec.WithLabelValues("value1-1", "value2-1").Observe(4.5)
 | 
				
			||||||
			metricName := fmt.Sprintf("%s_%s_%s", HistogramOpts.Namespace, HistogramOpts.Subsystem, HistogramOpts.Name)
 | 
								metricName := fmt.Sprintf("%s_%s_%s", HistogramOpts.Namespace, HistogramOpts.Subsystem, HistogramOpts.Name)
 | 
				
			||||||
			histogramVec, _ := GetHistogramVecFromGatherer(gather, metricName, tt.lvMap)
 | 
								histogramVec, _ := GetHistogramVecFromGatherer(gather, metricName, tt.lvMap)
 | 
				
			||||||
			if diff := cmp.Diff(tt.wantVec, histogramVec, cmpopts.IgnoreFields(dto.Histogram{}, "state", "sizeCache", "unknownFields"), cmpopts.IgnoreFields(dto.Bucket{}, "state", "sizeCache", "unknownFields")); diff != "" {
 | 
								if diff := cmp.Diff(tt.wantVec, histogramVec, cmpopts.IgnoreFields(dto.Histogram{}, "state", "sizeCache", "unknownFields", "CreatedTimestamp"), cmpopts.IgnoreFields(dto.Bucket{}, "state", "sizeCache", "unknownFields")); diff != "" {
 | 
				
			||||||
				t.Errorf("Got unexpected HistogramVec (-want +got):\n%s", diff)
 | 
									t.Errorf("Got unexpected HistogramVec (-want +got):\n%s", diff)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -36,7 +36,7 @@ require (
 | 
				
			|||||||
	github.com/pkg/errors v0.9.1 // indirect
 | 
						github.com/pkg/errors v0.9.1 // indirect
 | 
				
			||||||
	github.com/pmezard/go-difflib v1.0.0 // indirect
 | 
						github.com/pmezard/go-difflib v1.0.0 // indirect
 | 
				
			||||||
	golang.org/x/net v0.23.0 // indirect
 | 
						golang.org/x/net v0.23.0 // indirect
 | 
				
			||||||
	golang.org/x/oauth2 v0.10.0 // indirect
 | 
						golang.org/x/oauth2 v0.18.0 // indirect
 | 
				
			||||||
	golang.org/x/sys v0.18.0 // indirect
 | 
						golang.org/x/sys v0.18.0 // indirect
 | 
				
			||||||
	golang.org/x/term v0.18.0 // indirect
 | 
						golang.org/x/term v0.18.0 // indirect
 | 
				
			||||||
	golang.org/x/text v0.14.0 // indirect
 | 
						golang.org/x/text v0.14.0 // indirect
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										4
									
								
								staging/src/k8s.io/component-helpers/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4
									
								
								staging/src/k8s.io/component-helpers/go.sum
									
									
									
										generated
									
									
									
								
							@@ -107,8 +107,8 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLL
 | 
				
			|||||||
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
					golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
				
			||||||
golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
					golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
				
			||||||
golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
					golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0 h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8=
 | 
					golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI=
 | 
					golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,7 +7,7 @@ go 1.22.0
 | 
				
			|||||||
require (
 | 
					require (
 | 
				
			||||||
	github.com/spf13/pflag v1.0.5
 | 
						github.com/spf13/pflag v1.0.5
 | 
				
			||||||
	github.com/stretchr/testify v1.8.4
 | 
						github.com/stretchr/testify v1.8.4
 | 
				
			||||||
	golang.org/x/oauth2 v0.10.0
 | 
						golang.org/x/oauth2 v0.18.0
 | 
				
			||||||
	k8s.io/api v0.0.0
 | 
						k8s.io/api v0.0.0
 | 
				
			||||||
	k8s.io/apimachinery v0.0.0
 | 
						k8s.io/apimachinery v0.0.0
 | 
				
			||||||
	k8s.io/apiserver v0.0.0
 | 
						k8s.io/apiserver v0.0.0
 | 
				
			||||||
@@ -52,16 +52,15 @@ require (
 | 
				
			|||||||
	github.com/josharian/intern v1.0.0 // indirect
 | 
						github.com/josharian/intern v1.0.0 // indirect
 | 
				
			||||||
	github.com/json-iterator/go v1.1.12 // indirect
 | 
						github.com/json-iterator/go v1.1.12 // indirect
 | 
				
			||||||
	github.com/mailru/easyjson v0.7.7 // indirect
 | 
						github.com/mailru/easyjson v0.7.7 // indirect
 | 
				
			||||||
	github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
 | 
					 | 
				
			||||||
	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
 | 
						github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
 | 
				
			||||||
	github.com/modern-go/reflect2 v1.0.2 // indirect
 | 
						github.com/modern-go/reflect2 v1.0.2 // indirect
 | 
				
			||||||
	github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
 | 
						github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
 | 
				
			||||||
	github.com/pkg/errors v0.9.1 // indirect
 | 
						github.com/pkg/errors v0.9.1 // indirect
 | 
				
			||||||
	github.com/pmezard/go-difflib v1.0.0 // indirect
 | 
						github.com/pmezard/go-difflib v1.0.0 // indirect
 | 
				
			||||||
	github.com/prometheus/client_golang v1.16.0 // indirect
 | 
						github.com/prometheus/client_golang v1.19.0 // indirect
 | 
				
			||||||
	github.com/prometheus/client_model v0.4.0 // indirect
 | 
						github.com/prometheus/client_model v0.6.0 // indirect
 | 
				
			||||||
	github.com/prometheus/common v0.44.0 // indirect
 | 
						github.com/prometheus/common v0.48.0 // indirect
 | 
				
			||||||
	github.com/prometheus/procfs v0.10.1 // indirect
 | 
						github.com/prometheus/procfs v0.12.0 // indirect
 | 
				
			||||||
	github.com/spf13/cobra v1.7.0 // indirect
 | 
						github.com/spf13/cobra v1.7.0 // indirect
 | 
				
			||||||
	github.com/stoewer/go-strcase v1.2.0 // indirect
 | 
						github.com/stoewer/go-strcase v1.2.0 // indirect
 | 
				
			||||||
	go.etcd.io/etcd/api/v3 v3.5.10 // indirect
 | 
						go.etcd.io/etcd/api/v3 v3.5.10 // indirect
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										27
									
								
								staging/src/k8s.io/controller-manager/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										27
									
								
								staging/src/k8s.io/controller-manager/go.sum
									
									
									
										generated
									
									
									
								
							@@ -121,7 +121,7 @@ cloud.google.com/go/workflows v1.11.1/go.mod h1:Z+t10G1wF7h8LgdY/EmRcQY8ptBD/nvo
 | 
				
			|||||||
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
 | 
					github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
 | 
				
			||||||
github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I=
 | 
					github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I=
 | 
				
			||||||
github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c=
 | 
					github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c=
 | 
				
			||||||
github.com/alecthomas/kingpin/v2 v2.3.2/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE=
 | 
					github.com/alecthomas/kingpin/v2 v2.4.0/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE=
 | 
				
			||||||
github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE=
 | 
					github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE=
 | 
				
			||||||
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
 | 
					github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
 | 
				
			||||||
github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df h1:7RFfzj4SSt6nnvCPbCqijJi1nWCd+TqAT3bYCStRC18=
 | 
					github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df h1:7RFfzj4SSt6nnvCPbCqijJi1nWCd+TqAT3bYCStRC18=
 | 
				
			||||||
@@ -191,7 +191,6 @@ github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE=
 | 
				
			|||||||
github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ=
 | 
					github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ=
 | 
				
			||||||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
 | 
					github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
 | 
				
			||||||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
 | 
					github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
 | 
				
			||||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 | 
					 | 
				
			||||||
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 | 
					github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 | 
				
			||||||
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
 | 
					github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
 | 
				
			||||||
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
 | 
					github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
 | 
				
			||||||
@@ -245,8 +244,7 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
 | 
				
			|||||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 | 
					github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 | 
				
			||||||
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
 | 
					github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
 | 
				
			||||||
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
 | 
					github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
 | 
				
			||||||
github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=
 | 
					github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
 | 
				
			||||||
github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
 | 
					 | 
				
			||||||
github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
 | 
					github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
 | 
				
			||||||
github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
 | 
					github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
 | 
				
			||||||
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
 | 
					github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
 | 
				
			||||||
@@ -268,14 +266,14 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
 | 
				
			|||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
					github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
				
			||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
					github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
				
			||||||
github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI=
 | 
					github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI=
 | 
				
			||||||
github.com/prometheus/client_golang v1.16.0 h1:yk/hx9hDbrGHovbci4BY+pRMfSuuat626eFsHb7tmT8=
 | 
					github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU=
 | 
				
			||||||
github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc=
 | 
					github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k=
 | 
				
			||||||
github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY=
 | 
					github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos=
 | 
				
			||||||
github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU=
 | 
					github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8=
 | 
				
			||||||
github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY=
 | 
					github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE=
 | 
				
			||||||
github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY=
 | 
					github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc=
 | 
				
			||||||
github.com/prometheus/procfs v0.10.1 h1:kYK1Va/YMlutzCGazswoHKo//tZVlFpKYh+PymziUAg=
 | 
					github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo=
 | 
				
			||||||
github.com/prometheus/procfs v0.10.1/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM=
 | 
					github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
 | 
				
			||||||
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
 | 
					github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
 | 
				
			||||||
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
 | 
					github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
 | 
				
			||||||
github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
 | 
					github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
 | 
				
			||||||
@@ -366,9 +364,8 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLL
 | 
				
			|||||||
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
					golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
				
			||||||
golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
					golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
				
			||||||
golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
					golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0 h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8=
 | 
					golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI=
 | 
					golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					 | 
				
			||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -45,7 +45,7 @@ require (
 | 
				
			|||||||
	github.com/stoewer/go-strcase v1.2.0 // indirect
 | 
						github.com/stoewer/go-strcase v1.2.0 // indirect
 | 
				
			||||||
	golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
 | 
						golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
 | 
				
			||||||
	golang.org/x/net v0.23.0 // indirect
 | 
						golang.org/x/net v0.23.0 // indirect
 | 
				
			||||||
	golang.org/x/oauth2 v0.10.0 // indirect
 | 
						golang.org/x/oauth2 v0.18.0 // indirect
 | 
				
			||||||
	golang.org/x/sync v0.6.0 // indirect
 | 
						golang.org/x/sync v0.6.0 // indirect
 | 
				
			||||||
	golang.org/x/sys v0.18.0 // indirect
 | 
						golang.org/x/sys v0.18.0 // indirect
 | 
				
			||||||
	golang.org/x/term v0.18.0 // indirect
 | 
						golang.org/x/term v0.18.0 // indirect
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -89,7 +89,6 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
 | 
				
			|||||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 | 
					github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 | 
				
			||||||
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
 | 
					github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
 | 
				
			||||||
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
 | 
					github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
 | 
				
			||||||
github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
 | 
					 | 
				
			||||||
github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
 | 
					github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
 | 
				
			||||||
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
 | 
					github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
 | 
				
			||||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
 | 
					github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
 | 
				
			||||||
@@ -109,10 +108,10 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
 | 
				
			|||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
					github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
				
			||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
					github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
				
			||||||
github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI=
 | 
					github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI=
 | 
				
			||||||
github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc=
 | 
					github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k=
 | 
				
			||||||
github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU=
 | 
					github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8=
 | 
				
			||||||
github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY=
 | 
					github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc=
 | 
				
			||||||
github.com/prometheus/procfs v0.10.1/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM=
 | 
					github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
 | 
				
			||||||
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
 | 
					github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
 | 
				
			||||||
github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
 | 
					github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
 | 
				
			||||||
github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
 | 
					github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
 | 
				
			||||||
@@ -172,8 +171,8 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLL
 | 
				
			|||||||
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
					golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
				
			||||||
golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
					golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
				
			||||||
golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
					golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0 h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8=
 | 
					golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI=
 | 
					golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -35,19 +35,18 @@ require (
 | 
				
			|||||||
	github.com/josharian/intern v1.0.0 // indirect
 | 
						github.com/josharian/intern v1.0.0 // indirect
 | 
				
			||||||
	github.com/json-iterator/go v1.1.12 // indirect
 | 
						github.com/json-iterator/go v1.1.12 // indirect
 | 
				
			||||||
	github.com/mailru/easyjson v0.7.7 // indirect
 | 
						github.com/mailru/easyjson v0.7.7 // indirect
 | 
				
			||||||
	github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
 | 
					 | 
				
			||||||
	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
 | 
						github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
 | 
				
			||||||
	github.com/modern-go/reflect2 v1.0.2 // indirect
 | 
						github.com/modern-go/reflect2 v1.0.2 // indirect
 | 
				
			||||||
	github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
 | 
						github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
 | 
				
			||||||
	github.com/pkg/errors v0.9.1 // indirect
 | 
						github.com/pkg/errors v0.9.1 // indirect
 | 
				
			||||||
	github.com/pmezard/go-difflib v1.0.0 // indirect
 | 
						github.com/pmezard/go-difflib v1.0.0 // indirect
 | 
				
			||||||
	github.com/prometheus/client_golang v1.16.0 // indirect
 | 
						github.com/prometheus/client_golang v1.19.0 // indirect
 | 
				
			||||||
	github.com/prometheus/client_model v0.4.0 // indirect
 | 
						github.com/prometheus/client_model v0.6.0 // indirect
 | 
				
			||||||
	github.com/prometheus/common v0.44.0 // indirect
 | 
						github.com/prometheus/common v0.48.0 // indirect
 | 
				
			||||||
	github.com/prometheus/procfs v0.10.1 // indirect
 | 
						github.com/prometheus/procfs v0.12.0 // indirect
 | 
				
			||||||
	github.com/spf13/pflag v1.0.5 // indirect
 | 
						github.com/spf13/pflag v1.0.5 // indirect
 | 
				
			||||||
	golang.org/x/net v0.23.0 // indirect
 | 
						golang.org/x/net v0.23.0 // indirect
 | 
				
			||||||
	golang.org/x/oauth2 v0.10.0 // indirect
 | 
						golang.org/x/oauth2 v0.18.0 // indirect
 | 
				
			||||||
	golang.org/x/sys v0.18.0 // indirect
 | 
						golang.org/x/sys v0.18.0 // indirect
 | 
				
			||||||
	golang.org/x/term v0.18.0 // indirect
 | 
						golang.org/x/term v0.18.0 // indirect
 | 
				
			||||||
	golang.org/x/text v0.14.0 // indirect
 | 
						golang.org/x/text v0.14.0 // indirect
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										28
									
								
								staging/src/k8s.io/endpointslice/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										28
									
								
								staging/src/k8s.io/endpointslice/go.sum
									
									
									
										generated
									
									
									
								
							@@ -2,7 +2,7 @@ cloud.google.com/go/compute v1.20.1/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdi
 | 
				
			|||||||
cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=
 | 
					cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=
 | 
				
			||||||
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
 | 
					github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
 | 
				
			||||||
github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ=
 | 
					github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ=
 | 
				
			||||||
github.com/alecthomas/kingpin/v2 v2.3.2/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE=
 | 
					github.com/alecthomas/kingpin/v2 v2.4.0/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE=
 | 
				
			||||||
github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE=
 | 
					github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE=
 | 
				
			||||||
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
 | 
					github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
 | 
				
			||||||
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
 | 
					github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
 | 
				
			||||||
@@ -41,7 +41,6 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
 | 
				
			|||||||
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
 | 
					github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
 | 
				
			||||||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
 | 
					github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
 | 
				
			||||||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
 | 
					github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
 | 
				
			||||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 | 
					 | 
				
			||||||
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 | 
					github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 | 
				
			||||||
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
 | 
					github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
 | 
				
			||||||
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
 | 
					github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
 | 
				
			||||||
@@ -80,8 +79,6 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
 | 
				
			|||||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 | 
					github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 | 
				
			||||||
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
 | 
					github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
 | 
				
			||||||
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
 | 
					github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
 | 
				
			||||||
github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=
 | 
					 | 
				
			||||||
github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
 | 
					 | 
				
			||||||
github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
 | 
					github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
 | 
				
			||||||
github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
 | 
					github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
 | 
				
			||||||
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
 | 
					github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
 | 
				
			||||||
@@ -102,14 +99,14 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
 | 
				
			|||||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 | 
					github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 | 
				
			||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
					github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
				
			||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
					github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
				
			||||||
github.com/prometheus/client_golang v1.16.0 h1:yk/hx9hDbrGHovbci4BY+pRMfSuuat626eFsHb7tmT8=
 | 
					github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU=
 | 
				
			||||||
github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc=
 | 
					github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k=
 | 
				
			||||||
github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY=
 | 
					github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos=
 | 
				
			||||||
github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU=
 | 
					github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8=
 | 
				
			||||||
github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY=
 | 
					github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE=
 | 
				
			||||||
github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY=
 | 
					github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc=
 | 
				
			||||||
github.com/prometheus/procfs v0.10.1 h1:kYK1Va/YMlutzCGazswoHKo//tZVlFpKYh+PymziUAg=
 | 
					github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo=
 | 
				
			||||||
github.com/prometheus/procfs v0.10.1/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM=
 | 
					github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
 | 
				
			||||||
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
 | 
					github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
 | 
				
			||||||
github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
 | 
					github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
 | 
				
			||||||
github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0=
 | 
					github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0=
 | 
				
			||||||
@@ -153,13 +150,12 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLL
 | 
				
			|||||||
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
					golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
				
			||||||
golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
					golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
				
			||||||
golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
					golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0 h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8=
 | 
					golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI=
 | 
					golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					 | 
				
			||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
 | 
				
			||||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
					golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
				
			||||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
					golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
					golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,10 +20,14 @@ 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/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 | 
				
			||||||
github.com/kisielk/errcheck v1.5.0 h1:e8esj/e4R+SAOwFwN+n3zr0nYeCyeweozKfO23MvHzY=
 | 
					github.com/kisielk/errcheck v1.5.0 h1:e8esj/e4R+SAOwFwN+n3zr0nYeCyeweozKfO23MvHzY=
 | 
				
			||||||
github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg=
 | 
					github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg=
 | 
				
			||||||
 | 
					github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE=
 | 
				
			||||||
 | 
					github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc=
 | 
				
			||||||
github.com/stretchr/objx v0.1.0 h1:4G4v2dO3VZwixGIRoQ5Lfboy6nUhCyYzaqnIAPPhYs4=
 | 
					github.com/stretchr/objx v0.1.0 h1:4G4v2dO3VZwixGIRoQ5Lfboy6nUhCyYzaqnIAPPhYs4=
 | 
				
			||||||
github.com/yuin/goldmark v1.2.1 h1:ruQGxdhGHe7FWOJPT0mKs5+pD2Xs1Bm/kdGlHO04FmM=
 | 
					github.com/yuin/goldmark v1.2.1 h1:ruQGxdhGHe7FWOJPT0mKs5+pD2Xs1Bm/kdGlHO04FmM=
 | 
				
			||||||
golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo=
 | 
					golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo=
 | 
				
			||||||
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
 | 
					golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
 | 
				
			||||||
 | 
					golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA=
 | 
				
			||||||
 | 
					golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs=
 | 
				
			||||||
golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8=
 | 
					golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8=
 | 
				
			||||||
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
 | 
					golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0 h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8=
 | 
					golang.org/x/oauth2 v0.10.0 h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8=
 | 
				
			||||||
@@ -32,6 +36,8 @@ golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E=
 | 
				
			|||||||
golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
 | 
					golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
 | 
				
			||||||
golang.org/x/term v0.17.0 h1:mkTF7LCd6WGJNL3K1Ad7kwxNfYAW6a8a8QqtMblp/4U=
 | 
					golang.org/x/term v0.17.0 h1:mkTF7LCd6WGJNL3K1Ad7kwxNfYAW6a8a8QqtMblp/4U=
 | 
				
			||||||
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
 | 
					golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
 | 
				
			||||||
 | 
					golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8=
 | 
				
			||||||
 | 
					golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58=
 | 
				
			||||||
golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM=
 | 
					golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM=
 | 
				
			||||||
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
 | 
					golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
 | 
				
			||||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
 | 
					golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -57,7 +57,6 @@ require (
 | 
				
			|||||||
	github.com/josharian/intern v1.0.0 // indirect
 | 
						github.com/josharian/intern v1.0.0 // indirect
 | 
				
			||||||
	github.com/json-iterator/go v1.1.12 // indirect
 | 
						github.com/json-iterator/go v1.1.12 // indirect
 | 
				
			||||||
	github.com/mailru/easyjson v0.7.7 // indirect
 | 
						github.com/mailru/easyjson v0.7.7 // indirect
 | 
				
			||||||
	github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
 | 
					 | 
				
			||||||
	github.com/moby/spdystream v0.2.0 // indirect
 | 
						github.com/moby/spdystream v0.2.0 // indirect
 | 
				
			||||||
	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
 | 
						github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
 | 
				
			||||||
	github.com/modern-go/reflect2 v1.0.2 // indirect
 | 
						github.com/modern-go/reflect2 v1.0.2 // indirect
 | 
				
			||||||
@@ -65,10 +64,10 @@ require (
 | 
				
			|||||||
	github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect
 | 
						github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect
 | 
				
			||||||
	github.com/pkg/errors v0.9.1 // indirect
 | 
						github.com/pkg/errors v0.9.1 // indirect
 | 
				
			||||||
	github.com/pmezard/go-difflib v1.0.0 // indirect
 | 
						github.com/pmezard/go-difflib v1.0.0 // indirect
 | 
				
			||||||
	github.com/prometheus/client_golang v1.16.0 // indirect
 | 
						github.com/prometheus/client_golang v1.19.0 // indirect
 | 
				
			||||||
	github.com/prometheus/client_model v0.4.0 // indirect
 | 
						github.com/prometheus/client_model v0.6.0 // indirect
 | 
				
			||||||
	github.com/prometheus/common v0.44.0 // indirect
 | 
						github.com/prometheus/common v0.48.0 // indirect
 | 
				
			||||||
	github.com/prometheus/procfs v0.10.1 // indirect
 | 
						github.com/prometheus/procfs v0.12.0 // indirect
 | 
				
			||||||
	github.com/stoewer/go-strcase v1.2.0 // indirect
 | 
						github.com/stoewer/go-strcase v1.2.0 // indirect
 | 
				
			||||||
	go.etcd.io/etcd/api/v3 v3.5.10 // indirect
 | 
						go.etcd.io/etcd/api/v3 v3.5.10 // indirect
 | 
				
			||||||
	go.etcd.io/etcd/client/pkg/v3 v3.5.10 // indirect
 | 
						go.etcd.io/etcd/client/pkg/v3 v3.5.10 // indirect
 | 
				
			||||||
@@ -87,7 +86,7 @@ require (
 | 
				
			|||||||
	golang.org/x/crypto v0.21.0 // indirect
 | 
						golang.org/x/crypto v0.21.0 // indirect
 | 
				
			||||||
	golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
 | 
						golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
 | 
				
			||||||
	golang.org/x/mod v0.15.0 // indirect
 | 
						golang.org/x/mod v0.15.0 // indirect
 | 
				
			||||||
	golang.org/x/oauth2 v0.10.0 // indirect
 | 
						golang.org/x/oauth2 v0.18.0 // indirect
 | 
				
			||||||
	golang.org/x/sync v0.6.0 // indirect
 | 
						golang.org/x/sync v0.6.0 // indirect
 | 
				
			||||||
	golang.org/x/sys v0.18.0 // indirect
 | 
						golang.org/x/sys v0.18.0 // indirect
 | 
				
			||||||
	golang.org/x/term v0.18.0 // indirect
 | 
						golang.org/x/term v0.18.0 // indirect
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										27
									
								
								staging/src/k8s.io/kube-aggregator/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										27
									
								
								staging/src/k8s.io/kube-aggregator/go.sum
									
									
									
										generated
									
									
									
								
							@@ -121,7 +121,7 @@ cloud.google.com/go/workflows v1.11.1/go.mod h1:Z+t10G1wF7h8LgdY/EmRcQY8ptBD/nvo
 | 
				
			|||||||
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
 | 
					github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
 | 
				
			||||||
github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I=
 | 
					github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I=
 | 
				
			||||||
github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c=
 | 
					github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c=
 | 
				
			||||||
github.com/alecthomas/kingpin/v2 v2.3.2/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE=
 | 
					github.com/alecthomas/kingpin/v2 v2.4.0/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE=
 | 
				
			||||||
github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE=
 | 
					github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE=
 | 
				
			||||||
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
 | 
					github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
 | 
				
			||||||
github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df h1:7RFfzj4SSt6nnvCPbCqijJi1nWCd+TqAT3bYCStRC18=
 | 
					github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df h1:7RFfzj4SSt6nnvCPbCqijJi1nWCd+TqAT3bYCStRC18=
 | 
				
			||||||
@@ -192,7 +192,6 @@ github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE=
 | 
				
			|||||||
github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ=
 | 
					github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ=
 | 
				
			||||||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
 | 
					github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
 | 
				
			||||||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
 | 
					github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
 | 
				
			||||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 | 
					 | 
				
			||||||
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 | 
					github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 | 
				
			||||||
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
 | 
					github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
 | 
				
			||||||
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
 | 
					github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
 | 
				
			||||||
@@ -247,8 +246,7 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
 | 
				
			|||||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 | 
					github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 | 
				
			||||||
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
 | 
					github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
 | 
				
			||||||
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
 | 
					github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
 | 
				
			||||||
github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=
 | 
					github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
 | 
				
			||||||
github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
 | 
					 | 
				
			||||||
github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8=
 | 
					github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8=
 | 
				
			||||||
github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
 | 
					github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
 | 
				
			||||||
github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
 | 
					github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
 | 
				
			||||||
@@ -272,14 +270,14 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
 | 
				
			|||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
					github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
				
			||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
					github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
				
			||||||
github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI=
 | 
					github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI=
 | 
				
			||||||
github.com/prometheus/client_golang v1.16.0 h1:yk/hx9hDbrGHovbci4BY+pRMfSuuat626eFsHb7tmT8=
 | 
					github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU=
 | 
				
			||||||
github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc=
 | 
					github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k=
 | 
				
			||||||
github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY=
 | 
					github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos=
 | 
				
			||||||
github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU=
 | 
					github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8=
 | 
				
			||||||
github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY=
 | 
					github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE=
 | 
				
			||||||
github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY=
 | 
					github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc=
 | 
				
			||||||
github.com/prometheus/procfs v0.10.1 h1:kYK1Va/YMlutzCGazswoHKo//tZVlFpKYh+PymziUAg=
 | 
					github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo=
 | 
				
			||||||
github.com/prometheus/procfs v0.10.1/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM=
 | 
					github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
 | 
				
			||||||
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
 | 
					github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
 | 
				
			||||||
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
 | 
					github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
 | 
				
			||||||
github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
 | 
					github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
 | 
				
			||||||
@@ -372,9 +370,8 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLL
 | 
				
			|||||||
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
					golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
				
			||||||
golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
					golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
				
			||||||
golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
					golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0 h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8=
 | 
					golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI=
 | 
					golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					 | 
				
			||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										11
									
								
								staging/src/k8s.io/kube-controller-manager/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										11
									
								
								staging/src/k8s.io/kube-controller-manager/go.sum
									
									
									
										generated
									
									
									
								
							@@ -57,7 +57,6 @@ github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
 | 
				
			|||||||
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
 | 
					github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
 | 
				
			||||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 | 
					github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 | 
				
			||||||
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
 | 
					github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
 | 
				
			||||||
github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
 | 
					 | 
				
			||||||
github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
 | 
					github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
 | 
				
			||||||
github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
 | 
					github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
 | 
				
			||||||
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
 | 
					github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
 | 
				
			||||||
@@ -72,10 +71,10 @@ github.com/onsi/gomega v1.31.0/go.mod h1:DW9aCi7U6Yi40wNVAvT6kzFnEVEI5n3DloYBiKi
 | 
				
			|||||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 | 
					github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 | 
				
			||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
					github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
				
			||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
					github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
				
			||||||
github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc=
 | 
					github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k=
 | 
				
			||||||
github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU=
 | 
					github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8=
 | 
				
			||||||
github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY=
 | 
					github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc=
 | 
				
			||||||
github.com/prometheus/procfs v0.10.1/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM=
 | 
					github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
 | 
				
			||||||
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
 | 
					github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
 | 
				
			||||||
github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
 | 
					github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
 | 
				
			||||||
github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0=
 | 
					github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0=
 | 
				
			||||||
@@ -118,7 +117,7 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLL
 | 
				
			|||||||
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
					golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
				
			||||||
golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
					golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
				
			||||||
golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
					golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI=
 | 
					golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,19 +15,17 @@ require (
 | 
				
			|||||||
	github.com/cespare/xxhash/v2 v2.2.0 // indirect
 | 
						github.com/cespare/xxhash/v2 v2.2.0 // indirect
 | 
				
			||||||
	github.com/go-logr/logr v1.4.1 // indirect
 | 
						github.com/go-logr/logr v1.4.1 // indirect
 | 
				
			||||||
	github.com/gogo/protobuf v1.3.2 // indirect
 | 
						github.com/gogo/protobuf v1.3.2 // indirect
 | 
				
			||||||
	github.com/golang/protobuf v1.5.4 // indirect
 | 
					 | 
				
			||||||
	github.com/google/go-cmp v0.6.0 // indirect
 | 
						github.com/google/go-cmp v0.6.0 // indirect
 | 
				
			||||||
	github.com/google/gofuzz v1.2.0 // indirect
 | 
						github.com/google/gofuzz v1.2.0 // indirect
 | 
				
			||||||
	github.com/inconshreveable/mousetrap v1.1.0 // indirect
 | 
						github.com/inconshreveable/mousetrap v1.1.0 // indirect
 | 
				
			||||||
	github.com/json-iterator/go v1.1.12 // indirect
 | 
						github.com/json-iterator/go v1.1.12 // indirect
 | 
				
			||||||
	github.com/kr/text v0.2.0 // indirect
 | 
						github.com/kr/text v0.2.0 // indirect
 | 
				
			||||||
	github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
 | 
					 | 
				
			||||||
	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
 | 
						github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
 | 
				
			||||||
	github.com/modern-go/reflect2 v1.0.2 // indirect
 | 
						github.com/modern-go/reflect2 v1.0.2 // indirect
 | 
				
			||||||
	github.com/prometheus/client_golang v1.16.0 // indirect
 | 
						github.com/prometheus/client_golang v1.19.0 // indirect
 | 
				
			||||||
	github.com/prometheus/client_model v0.4.0 // indirect
 | 
						github.com/prometheus/client_model v0.6.0 // indirect
 | 
				
			||||||
	github.com/prometheus/common v0.44.0 // indirect
 | 
						github.com/prometheus/common v0.48.0 // indirect
 | 
				
			||||||
	github.com/prometheus/procfs v0.10.1 // indirect
 | 
						github.com/prometheus/procfs v0.12.0 // indirect
 | 
				
			||||||
	github.com/spf13/cobra v1.7.0 // indirect
 | 
						github.com/spf13/cobra v1.7.0 // indirect
 | 
				
			||||||
	github.com/spf13/pflag v1.0.5 // indirect
 | 
						github.com/spf13/pflag v1.0.5 // indirect
 | 
				
			||||||
	golang.org/x/net v0.23.0 // indirect
 | 
						golang.org/x/net v0.23.0 // indirect
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										27
									
								
								staging/src/k8s.io/kube-proxy/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										27
									
								
								staging/src/k8s.io/kube-proxy/go.sum
									
									
									
										generated
									
									
									
								
							@@ -1,5 +1,5 @@
 | 
				
			|||||||
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
 | 
					github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
 | 
				
			||||||
github.com/alecthomas/kingpin/v2 v2.3.2/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE=
 | 
					github.com/alecthomas/kingpin/v2 v2.4.0/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE=
 | 
				
			||||||
github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE=
 | 
					github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE=
 | 
				
			||||||
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
 | 
					github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
 | 
				
			||||||
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
 | 
					github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
 | 
				
			||||||
@@ -30,8 +30,6 @@ github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+
 | 
				
			|||||||
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=
 | 
					github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=
 | 
				
			||||||
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
 | 
					github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
 | 
				
			||||||
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
 | 
					github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
 | 
				
			||||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 | 
					 | 
				
			||||||
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
 | 
					 | 
				
			||||||
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
 | 
					github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
 | 
				
			||||||
github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U=
 | 
					github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U=
 | 
				
			||||||
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
 | 
					github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
 | 
				
			||||||
@@ -57,8 +55,6 @@ github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3x
 | 
				
			|||||||
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
 | 
					github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
 | 
				
			||||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 | 
					github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 | 
				
			||||||
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
 | 
					github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
 | 
				
			||||||
github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=
 | 
					 | 
				
			||||||
github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
 | 
					 | 
				
			||||||
github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
 | 
					github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
 | 
				
			||||||
github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
 | 
					github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
 | 
				
			||||||
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
 | 
					github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
 | 
				
			||||||
@@ -74,14 +70,14 @@ github.com/onsi/gomega v1.31.0/go.mod h1:DW9aCi7U6Yi40wNVAvT6kzFnEVEI5n3DloYBiKi
 | 
				
			|||||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 | 
					github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 | 
				
			||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
					github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
				
			||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
					github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
				
			||||||
github.com/prometheus/client_golang v1.16.0 h1:yk/hx9hDbrGHovbci4BY+pRMfSuuat626eFsHb7tmT8=
 | 
					github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU=
 | 
				
			||||||
github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc=
 | 
					github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k=
 | 
				
			||||||
github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY=
 | 
					github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos=
 | 
				
			||||||
github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU=
 | 
					github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8=
 | 
				
			||||||
github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY=
 | 
					github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE=
 | 
				
			||||||
github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY=
 | 
					github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc=
 | 
				
			||||||
github.com/prometheus/procfs v0.10.1 h1:kYK1Va/YMlutzCGazswoHKo//tZVlFpKYh+PymziUAg=
 | 
					github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo=
 | 
				
			||||||
github.com/prometheus/procfs v0.10.1/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM=
 | 
					github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
 | 
				
			||||||
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
 | 
					github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
 | 
				
			||||||
github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
 | 
					github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
 | 
				
			||||||
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
 | 
					github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
 | 
				
			||||||
@@ -121,12 +117,11 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLL
 | 
				
			|||||||
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
					golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
				
			||||||
golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
					golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
				
			||||||
golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
					golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI=
 | 
					golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					 | 
				
			||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
 | 
				
			||||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
					golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
				
			||||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
					golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
					golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										11
									
								
								staging/src/k8s.io/kube-scheduler/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										11
									
								
								staging/src/k8s.io/kube-scheduler/go.sum
									
									
									
										generated
									
									
									
								
							@@ -43,7 +43,6 @@ github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3x
 | 
				
			|||||||
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
 | 
					github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
 | 
				
			||||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 | 
					github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 | 
				
			||||||
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
 | 
					github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
 | 
				
			||||||
github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
 | 
					 | 
				
			||||||
github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
 | 
					github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
 | 
				
			||||||
github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
 | 
					github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
 | 
				
			||||||
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
 | 
					github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
 | 
				
			||||||
@@ -58,10 +57,10 @@ github.com/onsi/gomega v1.31.0/go.mod h1:DW9aCi7U6Yi40wNVAvT6kzFnEVEI5n3DloYBiKi
 | 
				
			|||||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 | 
					github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 | 
				
			||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
					github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
				
			||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
					github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
				
			||||||
github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc=
 | 
					github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k=
 | 
				
			||||||
github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU=
 | 
					github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8=
 | 
				
			||||||
github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY=
 | 
					github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc=
 | 
				
			||||||
github.com/prometheus/procfs v0.10.1/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM=
 | 
					github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
 | 
				
			||||||
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
 | 
					github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
 | 
				
			||||||
github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
 | 
					github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
 | 
				
			||||||
github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0=
 | 
					github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0=
 | 
				
			||||||
@@ -98,7 +97,7 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLL
 | 
				
			|||||||
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
					golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
				
			||||||
golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
					golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
				
			||||||
golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
					golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI=
 | 
					golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -82,7 +82,7 @@ require (
 | 
				
			|||||||
	github.com/xlab/treeprint v1.2.0 // indirect
 | 
						github.com/xlab/treeprint v1.2.0 // indirect
 | 
				
			||||||
	go.starlark.net v0.0.0-20230525235612-a134d8f9ddca // indirect
 | 
						go.starlark.net v0.0.0-20230525235612-a134d8f9ddca // indirect
 | 
				
			||||||
	golang.org/x/net v0.23.0 // indirect
 | 
						golang.org/x/net v0.23.0 // indirect
 | 
				
			||||||
	golang.org/x/oauth2 v0.10.0 // indirect
 | 
						golang.org/x/oauth2 v0.18.0 // indirect
 | 
				
			||||||
	golang.org/x/sync v0.6.0 // indirect
 | 
						golang.org/x/sync v0.6.0 // indirect
 | 
				
			||||||
	golang.org/x/term v0.18.0 // indirect
 | 
						golang.org/x/term v0.18.0 // indirect
 | 
				
			||||||
	golang.org/x/text v0.14.0 // indirect
 | 
						golang.org/x/text v0.14.0 // indirect
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										13
									
								
								staging/src/k8s.io/kubectl/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										13
									
								
								staging/src/k8s.io/kubectl/go.sum
									
									
									
										generated
									
									
									
								
							@@ -135,7 +135,6 @@ github.com/lithammer/dedent v1.1.0 h1:VNzHMVCBNG1j0fh3OrsFRkVUwStdDArbgBWoPAffkt
 | 
				
			|||||||
github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc=
 | 
					github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc=
 | 
				
			||||||
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
 | 
					github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
 | 
				
			||||||
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
 | 
					github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
 | 
				
			||||||
github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
 | 
					 | 
				
			||||||
github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0=
 | 
					github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0=
 | 
				
			||||||
github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0=
 | 
					github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0=
 | 
				
			||||||
github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8=
 | 
					github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8=
 | 
				
			||||||
@@ -165,11 +164,11 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
 | 
				
			|||||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 | 
					github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 | 
				
			||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
					github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
				
			||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
					github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
				
			||||||
github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc=
 | 
					github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k=
 | 
				
			||||||
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
 | 
					github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
 | 
				
			||||||
github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU=
 | 
					github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8=
 | 
				
			||||||
github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY=
 | 
					github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc=
 | 
				
			||||||
github.com/prometheus/procfs v0.10.1/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM=
 | 
					github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
 | 
				
			||||||
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
 | 
					github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
 | 
				
			||||||
github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
 | 
					github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
 | 
				
			||||||
github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
 | 
					github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
 | 
				
			||||||
@@ -234,8 +233,8 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY
 | 
				
			|||||||
golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
					golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
				
			||||||
golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
					golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
				
			||||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 | 
					golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0 h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8=
 | 
					golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI=
 | 
					golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					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-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -31,20 +31,19 @@ require (
 | 
				
			|||||||
	github.com/gorilla/websocket v1.5.0 // indirect
 | 
						github.com/gorilla/websocket v1.5.0 // indirect
 | 
				
			||||||
	github.com/inconshreveable/mousetrap v1.1.0 // indirect
 | 
						github.com/inconshreveable/mousetrap v1.1.0 // indirect
 | 
				
			||||||
	github.com/json-iterator/go v1.1.12 // indirect
 | 
						github.com/json-iterator/go v1.1.12 // indirect
 | 
				
			||||||
	github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
 | 
					 | 
				
			||||||
	github.com/moby/spdystream v0.2.0 // indirect
 | 
						github.com/moby/spdystream v0.2.0 // indirect
 | 
				
			||||||
	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
 | 
						github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
 | 
				
			||||||
	github.com/modern-go/reflect2 v1.0.2 // indirect
 | 
						github.com/modern-go/reflect2 v1.0.2 // indirect
 | 
				
			||||||
	github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect
 | 
						github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect
 | 
				
			||||||
	github.com/pmezard/go-difflib v1.0.0 // indirect
 | 
						github.com/pmezard/go-difflib v1.0.0 // indirect
 | 
				
			||||||
	github.com/prometheus/client_golang v1.16.0 // indirect
 | 
						github.com/prometheus/client_golang v1.19.0 // indirect
 | 
				
			||||||
	github.com/prometheus/client_model v0.4.0 // indirect
 | 
						github.com/prometheus/client_model v0.6.0 // indirect
 | 
				
			||||||
	github.com/prometheus/common v0.44.0 // indirect
 | 
						github.com/prometheus/common v0.48.0 // indirect
 | 
				
			||||||
	github.com/prometheus/procfs v0.10.1 // indirect
 | 
						github.com/prometheus/procfs v0.12.0 // indirect
 | 
				
			||||||
	github.com/spf13/cobra v1.7.0 // indirect
 | 
						github.com/spf13/cobra v1.7.0 // indirect
 | 
				
			||||||
	github.com/spf13/pflag v1.0.5 // indirect
 | 
						github.com/spf13/pflag v1.0.5 // indirect
 | 
				
			||||||
	golang.org/x/net v0.23.0 // indirect
 | 
						golang.org/x/net v0.23.0 // indirect
 | 
				
			||||||
	golang.org/x/oauth2 v0.10.0 // indirect
 | 
						golang.org/x/oauth2 v0.18.0 // indirect
 | 
				
			||||||
	golang.org/x/sys v0.18.0 // indirect
 | 
						golang.org/x/sys v0.18.0 // indirect
 | 
				
			||||||
	golang.org/x/term v0.18.0 // indirect
 | 
						golang.org/x/term v0.18.0 // indirect
 | 
				
			||||||
	golang.org/x/text v0.14.0 // indirect
 | 
						golang.org/x/text v0.14.0 // indirect
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										26
									
								
								staging/src/k8s.io/kubelet/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										26
									
								
								staging/src/k8s.io/kubelet/go.sum
									
									
									
										generated
									
									
									
								
							@@ -2,7 +2,7 @@ cloud.google.com/go/compute v1.21.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdi
 | 
				
			|||||||
cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=
 | 
					cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=
 | 
				
			||||||
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
 | 
					github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
 | 
				
			||||||
github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c=
 | 
					github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c=
 | 
				
			||||||
github.com/alecthomas/kingpin/v2 v2.3.2/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE=
 | 
					github.com/alecthomas/kingpin/v2 v2.4.0/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE=
 | 
				
			||||||
github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE=
 | 
					github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE=
 | 
				
			||||||
github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df/go.mod h1:pSwJ0fSY5KhvocuWSx4fz3BA8OrA1bQn+K1Eli3BRwM=
 | 
					github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df/go.mod h1:pSwJ0fSY5KhvocuWSx4fz3BA8OrA1bQn+K1Eli3BRwM=
 | 
				
			||||||
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
 | 
					github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
 | 
				
			||||||
@@ -53,7 +53,6 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69
 | 
				
			|||||||
github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
 | 
					github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
 | 
				
			||||||
github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ=
 | 
					github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ=
 | 
				
			||||||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
 | 
					github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
 | 
				
			||||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 | 
					 | 
				
			||||||
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 | 
					github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 | 
				
			||||||
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
 | 
					github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
 | 
				
			||||||
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
 | 
					github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
 | 
				
			||||||
@@ -97,8 +96,6 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
 | 
				
			|||||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 | 
					github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 | 
				
			||||||
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
 | 
					github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
 | 
				
			||||||
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
 | 
					github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
 | 
				
			||||||
github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=
 | 
					 | 
				
			||||||
github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
 | 
					 | 
				
			||||||
github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8=
 | 
					github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8=
 | 
				
			||||||
github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
 | 
					github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
 | 
				
			||||||
github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
 | 
					github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
 | 
				
			||||||
@@ -120,14 +117,14 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
 | 
				
			|||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
					github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
				
			||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
					github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
				
			||||||
github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI=
 | 
					github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI=
 | 
				
			||||||
github.com/prometheus/client_golang v1.16.0 h1:yk/hx9hDbrGHovbci4BY+pRMfSuuat626eFsHb7tmT8=
 | 
					github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU=
 | 
				
			||||||
github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc=
 | 
					github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k=
 | 
				
			||||||
github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY=
 | 
					github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos=
 | 
				
			||||||
github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU=
 | 
					github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8=
 | 
				
			||||||
github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY=
 | 
					github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE=
 | 
				
			||||||
github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY=
 | 
					github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc=
 | 
				
			||||||
github.com/prometheus/procfs v0.10.1 h1:kYK1Va/YMlutzCGazswoHKo//tZVlFpKYh+PymziUAg=
 | 
					github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo=
 | 
				
			||||||
github.com/prometheus/procfs v0.10.1/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM=
 | 
					github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
 | 
				
			||||||
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
 | 
					github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
 | 
				
			||||||
github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
 | 
					github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
 | 
				
			||||||
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
 | 
					github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
 | 
				
			||||||
@@ -184,9 +181,8 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLL
 | 
				
			|||||||
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
					golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
				
			||||||
golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
					golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
				
			||||||
golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
					golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0 h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8=
 | 
					golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI=
 | 
					golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					 | 
				
			||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,7 +9,7 @@ require (
 | 
				
			|||||||
	github.com/GoogleCloudPlatform/k8s-cloud-provider v1.18.1-0.20220218231025-f11817397a1b
 | 
						github.com/GoogleCloudPlatform/k8s-cloud-provider v1.18.1-0.20220218231025-f11817397a1b
 | 
				
			||||||
	github.com/google/go-cmp v0.6.0
 | 
						github.com/google/go-cmp v0.6.0
 | 
				
			||||||
	github.com/stretchr/testify v1.8.4
 | 
						github.com/stretchr/testify v1.8.4
 | 
				
			||||||
	golang.org/x/oauth2 v0.10.0
 | 
						golang.org/x/oauth2 v0.18.0
 | 
				
			||||||
	google.golang.org/api v0.126.0
 | 
						google.golang.org/api v0.126.0
 | 
				
			||||||
	gopkg.in/gcfg.v1 v1.2.3
 | 
						gopkg.in/gcfg.v1 v1.2.3
 | 
				
			||||||
	k8s.io/api v0.0.0
 | 
						k8s.io/api v0.0.0
 | 
				
			||||||
@@ -45,16 +45,15 @@ require (
 | 
				
			|||||||
	github.com/josharian/intern v1.0.0 // indirect
 | 
						github.com/josharian/intern v1.0.0 // indirect
 | 
				
			||||||
	github.com/json-iterator/go v1.1.12 // indirect
 | 
						github.com/json-iterator/go v1.1.12 // indirect
 | 
				
			||||||
	github.com/mailru/easyjson v0.7.7 // indirect
 | 
						github.com/mailru/easyjson v0.7.7 // indirect
 | 
				
			||||||
	github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
 | 
					 | 
				
			||||||
	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
 | 
						github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
 | 
				
			||||||
	github.com/modern-go/reflect2 v1.0.2 // indirect
 | 
						github.com/modern-go/reflect2 v1.0.2 // indirect
 | 
				
			||||||
	github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
 | 
						github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
 | 
				
			||||||
	github.com/pkg/errors v0.9.1 // indirect
 | 
						github.com/pkg/errors v0.9.1 // indirect
 | 
				
			||||||
	github.com/pmezard/go-difflib v1.0.0 // indirect
 | 
						github.com/pmezard/go-difflib v1.0.0 // indirect
 | 
				
			||||||
	github.com/prometheus/client_golang v1.16.0 // indirect
 | 
						github.com/prometheus/client_golang v1.19.0 // indirect
 | 
				
			||||||
	github.com/prometheus/client_model v0.4.0 // indirect
 | 
						github.com/prometheus/client_model v0.6.0 // indirect
 | 
				
			||||||
	github.com/prometheus/common v0.44.0 // indirect
 | 
						github.com/prometheus/common v0.48.0 // indirect
 | 
				
			||||||
	github.com/prometheus/procfs v0.10.1 // indirect
 | 
						github.com/prometheus/procfs v0.12.0 // indirect
 | 
				
			||||||
	github.com/spf13/pflag v1.0.5 // indirect
 | 
						github.com/spf13/pflag v1.0.5 // indirect
 | 
				
			||||||
	go.opencensus.io v0.24.0 // indirect
 | 
						go.opencensus.io v0.24.0 // indirect
 | 
				
			||||||
	golang.org/x/crypto v0.21.0 // indirect
 | 
						golang.org/x/crypto v0.21.0 // indirect
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										24
									
								
								staging/src/k8s.io/legacy-cloud-providers/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										24
									
								
								staging/src/k8s.io/legacy-cloud-providers/go.sum
									
									
									
										generated
									
									
									
								
							@@ -55,7 +55,7 @@ github.com/GoogleCloudPlatform/k8s-cloud-provider v1.18.1-0.20220218231025-f1181
 | 
				
			|||||||
github.com/GoogleCloudPlatform/k8s-cloud-provider v1.18.1-0.20220218231025-f11817397a1b/go.mod h1:FNj4KYEAAHfYu68kRYolGoxkaJn+6mdEsaM12VTwuI0=
 | 
					github.com/GoogleCloudPlatform/k8s-cloud-provider v1.18.1-0.20220218231025-f11817397a1b/go.mod h1:FNj4KYEAAHfYu68kRYolGoxkaJn+6mdEsaM12VTwuI0=
 | 
				
			||||||
github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c=
 | 
					github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c=
 | 
				
			||||||
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
 | 
					github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
 | 
				
			||||||
github.com/alecthomas/kingpin/v2 v2.3.2/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE=
 | 
					github.com/alecthomas/kingpin/v2 v2.4.0/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE=
 | 
				
			||||||
github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE=
 | 
					github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE=
 | 
				
			||||||
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
 | 
					github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
 | 
				
			||||||
github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df/go.mod h1:pSwJ0fSY5KhvocuWSx4fz3BA8OrA1bQn+K1Eli3BRwM=
 | 
					github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df/go.mod h1:pSwJ0fSY5KhvocuWSx4fz3BA8OrA1bQn+K1Eli3BRwM=
 | 
				
			||||||
@@ -249,8 +249,6 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
 | 
				
			|||||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 | 
					github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 | 
				
			||||||
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
 | 
					github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
 | 
				
			||||||
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
 | 
					github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
 | 
				
			||||||
github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=
 | 
					 | 
				
			||||||
github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
 | 
					 | 
				
			||||||
github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
 | 
					github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
 | 
				
			||||||
github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
 | 
					github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
 | 
				
			||||||
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
 | 
					github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
 | 
				
			||||||
@@ -271,15 +269,15 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
 | 
				
			|||||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 | 
					github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 | 
				
			||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
					github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
				
			||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
					github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
				
			||||||
github.com/prometheus/client_golang v1.16.0 h1:yk/hx9hDbrGHovbci4BY+pRMfSuuat626eFsHb7tmT8=
 | 
					github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU=
 | 
				
			||||||
github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc=
 | 
					github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k=
 | 
				
			||||||
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
 | 
					github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
 | 
				
			||||||
github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY=
 | 
					github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos=
 | 
				
			||||||
github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU=
 | 
					github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8=
 | 
				
			||||||
github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY=
 | 
					github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE=
 | 
				
			||||||
github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY=
 | 
					github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc=
 | 
				
			||||||
github.com/prometheus/procfs v0.10.1 h1:kYK1Va/YMlutzCGazswoHKo//tZVlFpKYh+PymziUAg=
 | 
					github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo=
 | 
				
			||||||
github.com/prometheus/procfs v0.10.1/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM=
 | 
					github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
 | 
				
			||||||
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
 | 
					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=
 | 
					github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
 | 
				
			||||||
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
 | 
					github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
 | 
				
			||||||
@@ -430,8 +428,8 @@ golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ
 | 
				
			|||||||
golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
 | 
					golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
 | 
				
			||||||
golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
 | 
					golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
 | 
				
			||||||
golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
 | 
					golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0 h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8=
 | 
					golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI=
 | 
					golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					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-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -37,7 +37,7 @@ require (
 | 
				
			|||||||
	github.com/spf13/pflag v1.0.5 // indirect
 | 
						github.com/spf13/pflag v1.0.5 // indirect
 | 
				
			||||||
	golang.org/x/mod v0.15.0 // indirect
 | 
						golang.org/x/mod v0.15.0 // indirect
 | 
				
			||||||
	golang.org/x/net v0.23.0 // indirect
 | 
						golang.org/x/net v0.23.0 // indirect
 | 
				
			||||||
	golang.org/x/oauth2 v0.10.0 // indirect
 | 
						golang.org/x/oauth2 v0.18.0 // indirect
 | 
				
			||||||
	golang.org/x/sys v0.18.0 // indirect
 | 
						golang.org/x/sys v0.18.0 // indirect
 | 
				
			||||||
	golang.org/x/term v0.18.0 // indirect
 | 
						golang.org/x/term v0.18.0 // indirect
 | 
				
			||||||
	golang.org/x/text v0.14.0 // indirect
 | 
						golang.org/x/text v0.14.0 // indirect
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										4
									
								
								staging/src/k8s.io/metrics/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4
									
								
								staging/src/k8s.io/metrics/go.sum
									
									
									
										generated
									
									
									
								
							@@ -109,8 +109,8 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLL
 | 
				
			|||||||
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
					golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
				
			||||||
golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
					golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
				
			||||||
golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
					golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0 h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8=
 | 
					golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI=
 | 
					golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -54,16 +54,15 @@ require (
 | 
				
			|||||||
	github.com/josharian/intern v1.0.0 // indirect
 | 
						github.com/josharian/intern v1.0.0 // indirect
 | 
				
			||||||
	github.com/json-iterator/go v1.1.12 // indirect
 | 
						github.com/json-iterator/go v1.1.12 // indirect
 | 
				
			||||||
	github.com/mailru/easyjson v0.7.7 // indirect
 | 
						github.com/mailru/easyjson v0.7.7 // indirect
 | 
				
			||||||
	github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
 | 
					 | 
				
			||||||
	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
 | 
						github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
 | 
				
			||||||
	github.com/modern-go/reflect2 v1.0.2 // indirect
 | 
						github.com/modern-go/reflect2 v1.0.2 // indirect
 | 
				
			||||||
	github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
 | 
						github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
 | 
				
			||||||
	github.com/pkg/errors v0.9.1 // indirect
 | 
						github.com/pkg/errors v0.9.1 // indirect
 | 
				
			||||||
	github.com/pmezard/go-difflib v1.0.0 // indirect
 | 
						github.com/pmezard/go-difflib v1.0.0 // indirect
 | 
				
			||||||
	github.com/prometheus/client_golang v1.16.0 // indirect
 | 
						github.com/prometheus/client_golang v1.19.0 // indirect
 | 
				
			||||||
	github.com/prometheus/client_model v0.4.0 // indirect
 | 
						github.com/prometheus/client_model v0.6.0 // indirect
 | 
				
			||||||
	github.com/prometheus/common v0.44.0 // indirect
 | 
						github.com/prometheus/common v0.48.0 // indirect
 | 
				
			||||||
	github.com/prometheus/procfs v0.10.1 // indirect
 | 
						github.com/prometheus/procfs v0.12.0 // indirect
 | 
				
			||||||
	github.com/stoewer/go-strcase v1.2.0 // indirect
 | 
						github.com/stoewer/go-strcase v1.2.0 // indirect
 | 
				
			||||||
	go.etcd.io/etcd/api/v3 v3.5.10 // indirect
 | 
						go.etcd.io/etcd/api/v3 v3.5.10 // indirect
 | 
				
			||||||
	go.etcd.io/etcd/client/pkg/v3 v3.5.10 // indirect
 | 
						go.etcd.io/etcd/client/pkg/v3 v3.5.10 // indirect
 | 
				
			||||||
@@ -82,7 +81,7 @@ require (
 | 
				
			|||||||
	golang.org/x/crypto v0.21.0 // indirect
 | 
						golang.org/x/crypto v0.21.0 // indirect
 | 
				
			||||||
	golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
 | 
						golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
 | 
				
			||||||
	golang.org/x/net v0.23.0 // indirect
 | 
						golang.org/x/net v0.23.0 // indirect
 | 
				
			||||||
	golang.org/x/oauth2 v0.10.0 // indirect
 | 
						golang.org/x/oauth2 v0.18.0 // indirect
 | 
				
			||||||
	golang.org/x/sync v0.6.0 // indirect
 | 
						golang.org/x/sync v0.6.0 // indirect
 | 
				
			||||||
	golang.org/x/sys v0.18.0 // indirect
 | 
						golang.org/x/sys v0.18.0 // indirect
 | 
				
			||||||
	golang.org/x/term v0.18.0 // indirect
 | 
						golang.org/x/term v0.18.0 // indirect
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										27
									
								
								staging/src/k8s.io/pod-security-admission/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										27
									
								
								staging/src/k8s.io/pod-security-admission/go.sum
									
									
									
										generated
									
									
									
								
							@@ -121,7 +121,7 @@ cloud.google.com/go/workflows v1.11.1/go.mod h1:Z+t10G1wF7h8LgdY/EmRcQY8ptBD/nvo
 | 
				
			|||||||
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
 | 
					github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
 | 
				
			||||||
github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I=
 | 
					github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I=
 | 
				
			||||||
github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c=
 | 
					github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c=
 | 
				
			||||||
github.com/alecthomas/kingpin/v2 v2.3.2/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE=
 | 
					github.com/alecthomas/kingpin/v2 v2.4.0/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE=
 | 
				
			||||||
github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE=
 | 
					github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE=
 | 
				
			||||||
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
 | 
					github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
 | 
				
			||||||
github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df h1:7RFfzj4SSt6nnvCPbCqijJi1nWCd+TqAT3bYCStRC18=
 | 
					github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df h1:7RFfzj4SSt6nnvCPbCqijJi1nWCd+TqAT3bYCStRC18=
 | 
				
			||||||
@@ -191,7 +191,6 @@ github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE=
 | 
				
			|||||||
github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ=
 | 
					github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ=
 | 
				
			||||||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
 | 
					github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
 | 
				
			||||||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
 | 
					github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
 | 
				
			||||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 | 
					 | 
				
			||||||
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 | 
					github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 | 
				
			||||||
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
 | 
					github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
 | 
				
			||||||
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
 | 
					github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
 | 
				
			||||||
@@ -245,8 +244,7 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
 | 
				
			|||||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 | 
					github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 | 
				
			||||||
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
 | 
					github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
 | 
				
			||||||
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
 | 
					github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
 | 
				
			||||||
github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=
 | 
					github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
 | 
				
			||||||
github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
 | 
					 | 
				
			||||||
github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
 | 
					github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
 | 
				
			||||||
github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
 | 
					github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
 | 
				
			||||||
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
 | 
					github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
 | 
				
			||||||
@@ -268,14 +266,14 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
 | 
				
			|||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
					github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
				
			||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
					github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
				
			||||||
github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI=
 | 
					github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI=
 | 
				
			||||||
github.com/prometheus/client_golang v1.16.0 h1:yk/hx9hDbrGHovbci4BY+pRMfSuuat626eFsHb7tmT8=
 | 
					github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU=
 | 
				
			||||||
github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc=
 | 
					github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k=
 | 
				
			||||||
github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY=
 | 
					github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos=
 | 
				
			||||||
github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU=
 | 
					github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8=
 | 
				
			||||||
github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY=
 | 
					github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE=
 | 
				
			||||||
github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY=
 | 
					github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc=
 | 
				
			||||||
github.com/prometheus/procfs v0.10.1 h1:kYK1Va/YMlutzCGazswoHKo//tZVlFpKYh+PymziUAg=
 | 
					github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo=
 | 
				
			||||||
github.com/prometheus/procfs v0.10.1/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM=
 | 
					github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
 | 
				
			||||||
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
 | 
					github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
 | 
				
			||||||
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
 | 
					github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
 | 
				
			||||||
github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
 | 
					github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
 | 
				
			||||||
@@ -366,9 +364,8 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLL
 | 
				
			|||||||
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
					golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
				
			||||||
golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
					golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
				
			||||||
golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
					golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0 h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8=
 | 
					golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI=
 | 
					golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					 | 
				
			||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -51,15 +51,14 @@ require (
 | 
				
			|||||||
	github.com/josharian/intern v1.0.0 // indirect
 | 
						github.com/josharian/intern v1.0.0 // indirect
 | 
				
			||||||
	github.com/json-iterator/go v1.1.12 // indirect
 | 
						github.com/json-iterator/go v1.1.12 // indirect
 | 
				
			||||||
	github.com/mailru/easyjson v0.7.7 // indirect
 | 
						github.com/mailru/easyjson v0.7.7 // indirect
 | 
				
			||||||
	github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
 | 
					 | 
				
			||||||
	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
 | 
						github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
 | 
				
			||||||
	github.com/modern-go/reflect2 v1.0.2 // indirect
 | 
						github.com/modern-go/reflect2 v1.0.2 // indirect
 | 
				
			||||||
	github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
 | 
						github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
 | 
				
			||||||
	github.com/pkg/errors v0.9.1 // indirect
 | 
						github.com/pkg/errors v0.9.1 // indirect
 | 
				
			||||||
	github.com/prometheus/client_golang v1.16.0 // indirect
 | 
						github.com/prometheus/client_golang v1.19.0 // indirect
 | 
				
			||||||
	github.com/prometheus/client_model v0.4.0 // indirect
 | 
						github.com/prometheus/client_model v0.6.0 // indirect
 | 
				
			||||||
	github.com/prometheus/common v0.44.0 // indirect
 | 
						github.com/prometheus/common v0.48.0 // indirect
 | 
				
			||||||
	github.com/prometheus/procfs v0.10.1 // indirect
 | 
						github.com/prometheus/procfs v0.12.0 // indirect
 | 
				
			||||||
	github.com/spf13/pflag v1.0.5 // indirect
 | 
						github.com/spf13/pflag v1.0.5 // indirect
 | 
				
			||||||
	github.com/stoewer/go-strcase v1.2.0 // indirect
 | 
						github.com/stoewer/go-strcase v1.2.0 // indirect
 | 
				
			||||||
	go.etcd.io/etcd/api/v3 v3.5.10 // indirect
 | 
						go.etcd.io/etcd/api/v3 v3.5.10 // indirect
 | 
				
			||||||
@@ -80,7 +79,7 @@ require (
 | 
				
			|||||||
	golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
 | 
						golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
 | 
				
			||||||
	golang.org/x/mod v0.15.0 // indirect
 | 
						golang.org/x/mod v0.15.0 // indirect
 | 
				
			||||||
	golang.org/x/net v0.23.0 // indirect
 | 
						golang.org/x/net v0.23.0 // indirect
 | 
				
			||||||
	golang.org/x/oauth2 v0.10.0 // indirect
 | 
						golang.org/x/oauth2 v0.18.0 // indirect
 | 
				
			||||||
	golang.org/x/sync v0.6.0 // indirect
 | 
						golang.org/x/sync v0.6.0 // indirect
 | 
				
			||||||
	golang.org/x/sys v0.18.0 // indirect
 | 
						golang.org/x/sys v0.18.0 // indirect
 | 
				
			||||||
	golang.org/x/term v0.18.0 // indirect
 | 
						golang.org/x/term v0.18.0 // indirect
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										27
									
								
								staging/src/k8s.io/sample-apiserver/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										27
									
								
								staging/src/k8s.io/sample-apiserver/go.sum
									
									
									
										generated
									
									
									
								
							@@ -121,7 +121,7 @@ cloud.google.com/go/workflows v1.11.1/go.mod h1:Z+t10G1wF7h8LgdY/EmRcQY8ptBD/nvo
 | 
				
			|||||||
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
 | 
					github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
 | 
				
			||||||
github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I=
 | 
					github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I=
 | 
				
			||||||
github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c=
 | 
					github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c=
 | 
				
			||||||
github.com/alecthomas/kingpin/v2 v2.3.2/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE=
 | 
					github.com/alecthomas/kingpin/v2 v2.4.0/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE=
 | 
				
			||||||
github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE=
 | 
					github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE=
 | 
				
			||||||
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
 | 
					github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
 | 
				
			||||||
github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df h1:7RFfzj4SSt6nnvCPbCqijJi1nWCd+TqAT3bYCStRC18=
 | 
					github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df h1:7RFfzj4SSt6nnvCPbCqijJi1nWCd+TqAT3bYCStRC18=
 | 
				
			||||||
@@ -191,7 +191,6 @@ github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE=
 | 
				
			|||||||
github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ=
 | 
					github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ=
 | 
				
			||||||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
 | 
					github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
 | 
				
			||||||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
 | 
					github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
 | 
				
			||||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 | 
					 | 
				
			||||||
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 | 
					github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 | 
				
			||||||
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
 | 
					github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
 | 
				
			||||||
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
 | 
					github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
 | 
				
			||||||
@@ -245,8 +244,7 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
 | 
				
			|||||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 | 
					github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 | 
				
			||||||
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
 | 
					github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
 | 
				
			||||||
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
 | 
					github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
 | 
				
			||||||
github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=
 | 
					github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
 | 
				
			||||||
github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
 | 
					 | 
				
			||||||
github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
 | 
					github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
 | 
				
			||||||
github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
 | 
					github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
 | 
				
			||||||
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
 | 
					github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
 | 
				
			||||||
@@ -268,14 +266,14 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
 | 
				
			|||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
					github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
				
			||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
					github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
				
			||||||
github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI=
 | 
					github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI=
 | 
				
			||||||
github.com/prometheus/client_golang v1.16.0 h1:yk/hx9hDbrGHovbci4BY+pRMfSuuat626eFsHb7tmT8=
 | 
					github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU=
 | 
				
			||||||
github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc=
 | 
					github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k=
 | 
				
			||||||
github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY=
 | 
					github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos=
 | 
				
			||||||
github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU=
 | 
					github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8=
 | 
				
			||||||
github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY=
 | 
					github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE=
 | 
				
			||||||
github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY=
 | 
					github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc=
 | 
				
			||||||
github.com/prometheus/procfs v0.10.1 h1:kYK1Va/YMlutzCGazswoHKo//tZVlFpKYh+PymziUAg=
 | 
					github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo=
 | 
				
			||||||
github.com/prometheus/procfs v0.10.1/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM=
 | 
					github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
 | 
				
			||||||
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
 | 
					github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
 | 
				
			||||||
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
 | 
					github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
 | 
				
			||||||
github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
 | 
					github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
 | 
				
			||||||
@@ -368,9 +366,8 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLL
 | 
				
			|||||||
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
					golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
				
			||||||
golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
					golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
				
			||||||
golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
					golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0 h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8=
 | 
					golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI=
 | 
					golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					 | 
				
			||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -45,7 +45,7 @@ require (
 | 
				
			|||||||
	github.com/xlab/treeprint v1.2.0 // indirect
 | 
						github.com/xlab/treeprint v1.2.0 // indirect
 | 
				
			||||||
	go.starlark.net v0.0.0-20230525235612-a134d8f9ddca // indirect
 | 
						go.starlark.net v0.0.0-20230525235612-a134d8f9ddca // indirect
 | 
				
			||||||
	golang.org/x/net v0.23.0 // indirect
 | 
						golang.org/x/net v0.23.0 // indirect
 | 
				
			||||||
	golang.org/x/oauth2 v0.10.0 // indirect
 | 
						golang.org/x/oauth2 v0.18.0 // indirect
 | 
				
			||||||
	golang.org/x/sync v0.6.0 // indirect
 | 
						golang.org/x/sync v0.6.0 // indirect
 | 
				
			||||||
	golang.org/x/sys v0.18.0 // indirect
 | 
						golang.org/x/sys v0.18.0 // indirect
 | 
				
			||||||
	golang.org/x/term v0.18.0 // indirect
 | 
						golang.org/x/term v0.18.0 // indirect
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										4
									
								
								staging/src/k8s.io/sample-cli-plugin/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4
									
								
								staging/src/k8s.io/sample-cli-plugin/go.sum
									
									
									
										generated
									
									
									
								
							@@ -174,8 +174,8 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY
 | 
				
			|||||||
golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
					golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
				
			||||||
golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
					golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
				
			||||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 | 
					golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0 h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8=
 | 
					golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI=
 | 
					golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					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-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -39,7 +39,7 @@ require (
 | 
				
			|||||||
	github.com/spf13/pflag v1.0.5 // indirect
 | 
						github.com/spf13/pflag v1.0.5 // indirect
 | 
				
			||||||
	golang.org/x/mod v0.15.0 // indirect
 | 
						golang.org/x/mod v0.15.0 // indirect
 | 
				
			||||||
	golang.org/x/net v0.23.0 // indirect
 | 
						golang.org/x/net v0.23.0 // indirect
 | 
				
			||||||
	golang.org/x/oauth2 v0.10.0 // indirect
 | 
						golang.org/x/oauth2 v0.18.0 // indirect
 | 
				
			||||||
	golang.org/x/sys v0.18.0 // indirect
 | 
						golang.org/x/sys v0.18.0 // indirect
 | 
				
			||||||
	golang.org/x/term v0.18.0 // indirect
 | 
						golang.org/x/term v0.18.0 // indirect
 | 
				
			||||||
	golang.org/x/text v0.14.0 // indirect
 | 
						golang.org/x/text v0.14.0 // indirect
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										4
									
								
								staging/src/k8s.io/sample-controller/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4
									
								
								staging/src/k8s.io/sample-controller/go.sum
									
									
									
										generated
									
									
									
								
							@@ -111,8 +111,8 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLL
 | 
				
			|||||||
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
					golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
				
			||||||
golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
					golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
 | 
				
			||||||
golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
					golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0 h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8=
 | 
					golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI=
 | 
				
			||||||
golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI=
 | 
					golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -756,7 +756,7 @@ func getPriorityLevelNominalConcurrency(ctx context.Context, c clientset.Interfa
 | 
				
			|||||||
		return 0, fmt.Errorf("error requesting metrics; request=%#+v, request.URL()=%s: %w", req, req.URL(), err)
 | 
							return 0, fmt.Errorf("error requesting metrics; request=%#+v, request.URL()=%s: %w", req, req.URL(), err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	sampleDecoder := expfmt.SampleDecoder{
 | 
						sampleDecoder := expfmt.SampleDecoder{
 | 
				
			||||||
		Dec:  expfmt.NewDecoder(bytes.NewBuffer(resp), expfmt.FmtText),
 | 
							Dec:  expfmt.NewDecoder(bytes.NewBuffer(resp), expfmt.NewFormat(expfmt.TypeTextPlain)),
 | 
				
			||||||
		Opts: &expfmt.DecodeOptions{},
 | 
							Opts: &expfmt.DecodeOptions{},
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	for {
 | 
						for {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -174,7 +174,7 @@ func getNominalConcurrencyOfPriorityLevel(c clientset.Interface) (map[string]int
 | 
				
			|||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	dec := expfmt.NewDecoder(strings.NewReader(string(resp)), expfmt.FmtText)
 | 
						dec := expfmt.NewDecoder(strings.NewReader(string(resp)), expfmt.NewFormat(expfmt.TypeTextPlain))
 | 
				
			||||||
	decoder := expfmt.SampleDecoder{
 | 
						decoder := expfmt.SampleDecoder{
 | 
				
			||||||
		Dec:  dec,
 | 
							Dec:  dec,
 | 
				
			||||||
		Opts: &expfmt.DecodeOptions{},
 | 
							Opts: &expfmt.DecodeOptions{},
 | 
				
			||||||
@@ -205,7 +205,7 @@ func getRequestCountOfPriorityLevel(c clientset.Interface) (map[string]int, map[
 | 
				
			|||||||
		return nil, nil, err
 | 
							return nil, nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	dec := expfmt.NewDecoder(strings.NewReader(string(resp)), expfmt.FmtText)
 | 
						dec := expfmt.NewDecoder(strings.NewReader(string(resp)), expfmt.NewFormat(expfmt.TypeTextPlain))
 | 
				
			||||||
	decoder := expfmt.SampleDecoder{
 | 
						decoder := expfmt.SampleDecoder{
 | 
				
			||||||
		Dec:  dec,
 | 
							Dec:  dec,
 | 
				
			||||||
		Opts: &expfmt.DecodeOptions{},
 | 
							Opts: &expfmt.DecodeOptions{},
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -314,7 +314,7 @@ func getRequestMetricsSnapshot(c clientset.Interface) (metricSnapshot, error) {
 | 
				
			|||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	dec := expfmt.NewDecoder(strings.NewReader(string(resp)), expfmt.FmtText)
 | 
						dec := expfmt.NewDecoder(strings.NewReader(string(resp)), expfmt.NewFormat(expfmt.TypeTextPlain))
 | 
				
			||||||
	decoder := expfmt.SampleDecoder{
 | 
						decoder := expfmt.SampleDecoder{
 | 
				
			||||||
		Dec:  dec,
 | 
							Dec:  dec,
 | 
				
			||||||
		Opts: &expfmt.DecodeOptions{},
 | 
							Opts: &expfmt.DecodeOptions{},
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										201
									
								
								vendor/github.com/matttproud/golang_protobuf_extensions/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										201
									
								
								vendor/github.com/matttproud/golang_protobuf_extensions/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,201 +0,0 @@
 | 
				
			|||||||
                                 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.
 | 
					 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/matttproud/golang_protobuf_extensions/NOTICE
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/matttproud/golang_protobuf_extensions/NOTICE
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1 +0,0 @@
 | 
				
			|||||||
Copyright 2012 Matt T. Proud (matt.proud@gmail.com)
 | 
					 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1 +0,0 @@
 | 
				
			|||||||
cover.dat
 | 
					 | 
				
			||||||
							
								
								
									
										7
									
								
								vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/Makefile
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/Makefile
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,7 +0,0 @@
 | 
				
			|||||||
all:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
cover:
 | 
					 | 
				
			||||||
	go test -cover -v -coverprofile=cover.dat ./...
 | 
					 | 
				
			||||||
	go tool cover -func cover.dat
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.PHONY: cover
 | 
					 | 
				
			||||||
							
								
								
									
										75
									
								
								vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/decode.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										75
									
								
								vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/decode.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,75 +0,0 @@
 | 
				
			|||||||
// Copyright 2013 Matt T. Proud
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Licensed under the Apache License, Version 2.0 (the "License");
 | 
					 | 
				
			||||||
// you may not use this file except in compliance with the License.
 | 
					 | 
				
			||||||
// You may obtain a copy of the License at
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//     http://www.apache.org/licenses/LICENSE-2.0
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Unless required by applicable law or agreed to in writing, software
 | 
					 | 
				
			||||||
// distributed under the License is distributed on an "AS IS" BASIS,
 | 
					 | 
				
			||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
					 | 
				
			||||||
// See the License for the specific language governing permissions and
 | 
					 | 
				
			||||||
// limitations under the License.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package pbutil
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	"encoding/binary"
 | 
					 | 
				
			||||||
	"errors"
 | 
					 | 
				
			||||||
	"io"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	"github.com/golang/protobuf/proto"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var errInvalidVarint = errors.New("invalid varint32 encountered")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// ReadDelimited decodes a message from the provided length-delimited stream,
 | 
					 | 
				
			||||||
// where the length is encoded as 32-bit varint prefix to the message body.
 | 
					 | 
				
			||||||
// It returns the total number of bytes read and any applicable error.  This is
 | 
					 | 
				
			||||||
// roughly equivalent to the companion Java API's
 | 
					 | 
				
			||||||
// MessageLite#parseDelimitedFrom.  As per the reader contract, this function
 | 
					 | 
				
			||||||
// calls r.Read repeatedly as required until exactly one message including its
 | 
					 | 
				
			||||||
// prefix is read and decoded (or an error has occurred).  The function never
 | 
					 | 
				
			||||||
// reads more bytes from the stream than required.  The function never returns
 | 
					 | 
				
			||||||
// an error if a message has been read and decoded correctly, even if the end
 | 
					 | 
				
			||||||
// of the stream has been reached in doing so.  In that case, any subsequent
 | 
					 | 
				
			||||||
// calls return (0, io.EOF).
 | 
					 | 
				
			||||||
func ReadDelimited(r io.Reader, m proto.Message) (n int, err error) {
 | 
					 | 
				
			||||||
	// Per AbstractParser#parsePartialDelimitedFrom with
 | 
					 | 
				
			||||||
	// CodedInputStream#readRawVarint32.
 | 
					 | 
				
			||||||
	var headerBuf [binary.MaxVarintLen32]byte
 | 
					 | 
				
			||||||
	var bytesRead, varIntBytes int
 | 
					 | 
				
			||||||
	var messageLength uint64
 | 
					 | 
				
			||||||
	for varIntBytes == 0 { // i.e. no varint has been decoded yet.
 | 
					 | 
				
			||||||
		if bytesRead >= len(headerBuf) {
 | 
					 | 
				
			||||||
			return bytesRead, errInvalidVarint
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		// We have to read byte by byte here to avoid reading more bytes
 | 
					 | 
				
			||||||
		// than required. Each read byte is appended to what we have
 | 
					 | 
				
			||||||
		// read before.
 | 
					 | 
				
			||||||
		newBytesRead, err := r.Read(headerBuf[bytesRead : bytesRead+1])
 | 
					 | 
				
			||||||
		if newBytesRead == 0 {
 | 
					 | 
				
			||||||
			if err != nil {
 | 
					 | 
				
			||||||
				return bytesRead, err
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
			// A Reader should not return (0, nil), but if it does,
 | 
					 | 
				
			||||||
			// it should be treated as no-op (according to the
 | 
					 | 
				
			||||||
			// Reader contract). So let's go on...
 | 
					 | 
				
			||||||
			continue
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		bytesRead += newBytesRead
 | 
					 | 
				
			||||||
		// Now present everything read so far to the varint decoder and
 | 
					 | 
				
			||||||
		// see if a varint can be decoded already.
 | 
					 | 
				
			||||||
		messageLength, varIntBytes = proto.DecodeVarint(headerBuf[:bytesRead])
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	messageBuf := make([]byte, messageLength)
 | 
					 | 
				
			||||||
	newBytesRead, err := io.ReadFull(r, messageBuf)
 | 
					 | 
				
			||||||
	bytesRead += newBytesRead
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return bytesRead, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return bytesRead, proto.Unmarshal(messageBuf, m)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										46
									
								
								vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/encode.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										46
									
								
								vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/encode.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,46 +0,0 @@
 | 
				
			|||||||
// Copyright 2013 Matt T. Proud
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Licensed under the Apache License, Version 2.0 (the "License");
 | 
					 | 
				
			||||||
// you may not use this file except in compliance with the License.
 | 
					 | 
				
			||||||
// You may obtain a copy of the License at
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//     http://www.apache.org/licenses/LICENSE-2.0
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Unless required by applicable law or agreed to in writing, software
 | 
					 | 
				
			||||||
// distributed under the License is distributed on an "AS IS" BASIS,
 | 
					 | 
				
			||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
					 | 
				
			||||||
// See the License for the specific language governing permissions and
 | 
					 | 
				
			||||||
// limitations under the License.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package pbutil
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	"encoding/binary"
 | 
					 | 
				
			||||||
	"io"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	"github.com/golang/protobuf/proto"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// WriteDelimited encodes and dumps a message to the provided writer prefixed
 | 
					 | 
				
			||||||
// with a 32-bit varint indicating the length of the encoded message, producing
 | 
					 | 
				
			||||||
// a length-delimited record stream, which can be used to chain together
 | 
					 | 
				
			||||||
// encoded messages of the same type together in a file.  It returns the total
 | 
					 | 
				
			||||||
// number of bytes written and any applicable error.  This is roughly
 | 
					 | 
				
			||||||
// equivalent to the companion Java API's MessageLite#writeDelimitedTo.
 | 
					 | 
				
			||||||
func WriteDelimited(w io.Writer, m proto.Message) (n int, err error) {
 | 
					 | 
				
			||||||
	buffer, err := proto.Marshal(m)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return 0, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	var buf [binary.MaxVarintLen32]byte
 | 
					 | 
				
			||||||
	encodedLength := binary.PutUvarint(buf[:], uint64(len(buffer)))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	sync, err := w.Write(buf[:encodedLength])
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return sync, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	n, err = w.Write(buffer)
 | 
					 | 
				
			||||||
	return n + sync, err
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										2
									
								
								vendor/github.com/prometheus/client_golang/prometheus/collectors/expvar_collector.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/prometheus/client_golang/prometheus/collectors/expvar_collector.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -22,7 +22,7 @@ import "github.com/prometheus/client_golang/prometheus"
 | 
				
			|||||||
// Prometheus metrics. Note that the data models of expvar and Prometheus are
 | 
					// Prometheus metrics. Note that the data models of expvar and Prometheus are
 | 
				
			||||||
// fundamentally different, and that the expvar Collector is inherently slower
 | 
					// fundamentally different, and that the expvar Collector is inherently slower
 | 
				
			||||||
// than native Prometheus metrics. Thus, the expvar Collector is probably great
 | 
					// than native Prometheus metrics. Thus, the expvar Collector is probably great
 | 
				
			||||||
// for experiments and prototying, but you should seriously consider a more
 | 
					// for experiments and prototyping, but you should seriously consider a more
 | 
				
			||||||
// direct implementation of Prometheus metrics for monitoring production
 | 
					// direct implementation of Prometheus metrics for monitoring production
 | 
				
			||||||
// systems.
 | 
					// systems.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -132,16 +132,19 @@ type GoCollectionOption uint32
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
const (
 | 
					const (
 | 
				
			||||||
	// GoRuntimeMemStatsCollection represents the metrics represented by runtime.MemStats structure.
 | 
						// GoRuntimeMemStatsCollection represents the metrics represented by runtime.MemStats structure.
 | 
				
			||||||
	// Deprecated. Use WithGoCollectorMemStatsMetricsDisabled() function to disable those metrics in the collector.
 | 
						//
 | 
				
			||||||
 | 
						// Deprecated: Use WithGoCollectorMemStatsMetricsDisabled() function to disable those metrics in the collector.
 | 
				
			||||||
	GoRuntimeMemStatsCollection GoCollectionOption = 1 << iota
 | 
						GoRuntimeMemStatsCollection GoCollectionOption = 1 << iota
 | 
				
			||||||
	// GoRuntimeMetricsCollection is the new set of metrics represented by runtime/metrics package.
 | 
						// GoRuntimeMetricsCollection is the new set of metrics represented by runtime/metrics package.
 | 
				
			||||||
	// Deprecated. Use WithGoCollectorRuntimeMetrics(GoRuntimeMetricsRule{Matcher: regexp.MustCompile("/.*")})
 | 
						//
 | 
				
			||||||
 | 
						// Deprecated: Use WithGoCollectorRuntimeMetrics(GoRuntimeMetricsRule{Matcher: regexp.MustCompile("/.*")})
 | 
				
			||||||
	// function to enable those metrics in the collector.
 | 
						// function to enable those metrics in the collector.
 | 
				
			||||||
	GoRuntimeMetricsCollection
 | 
						GoRuntimeMetricsCollection
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// WithGoCollections allows enabling different collections for Go collector on top of base metrics.
 | 
					// WithGoCollections allows enabling different collections for Go collector on top of base metrics.
 | 
				
			||||||
// Deprecated. Use WithGoCollectorRuntimeMetrics() and WithGoCollectorMemStatsMetricsDisabled() instead to control metrics.
 | 
					//
 | 
				
			||||||
 | 
					// Deprecated: Use WithGoCollectorRuntimeMetrics() and WithGoCollectorMemStatsMetricsDisabled() instead to control metrics.
 | 
				
			||||||
func WithGoCollections(flags GoCollectionOption) func(options *internal.GoCollectorOptions) {
 | 
					func WithGoCollections(flags GoCollectionOption) func(options *internal.GoCollectorOptions) {
 | 
				
			||||||
	return func(options *internal.GoCollectorOptions) {
 | 
						return func(options *internal.GoCollectorOptions) {
 | 
				
			||||||
		if flags&GoRuntimeMemStatsCollection == 0 {
 | 
							if flags&GoRuntimeMemStatsCollection == 0 {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										26
									
								
								vendor/github.com/prometheus/client_golang/prometheus/counter.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										26
									
								
								vendor/github.com/prometheus/client_golang/prometheus/counter.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -20,6 +20,7 @@ import (
 | 
				
			|||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	dto "github.com/prometheus/client_model/go"
 | 
						dto "github.com/prometheus/client_model/go"
 | 
				
			||||||
 | 
						"google.golang.org/protobuf/types/known/timestamppb"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Counter is a Metric that represents a single numerical value that only ever
 | 
					// Counter is a Metric that represents a single numerical value that only ever
 | 
				
			||||||
@@ -66,7 +67,7 @@ type CounterVecOpts struct {
 | 
				
			|||||||
	CounterOpts
 | 
						CounterOpts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// VariableLabels are used to partition the metric vector by the given set
 | 
						// VariableLabels are used to partition the metric vector by the given set
 | 
				
			||||||
	// of labels. Each label value will be constrained with the optional Contraint
 | 
						// of labels. Each label value will be constrained with the optional Constraint
 | 
				
			||||||
	// function, if provided.
 | 
						// function, if provided.
 | 
				
			||||||
	VariableLabels ConstrainableLabels
 | 
						VariableLabels ConstrainableLabels
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -90,8 +91,12 @@ func NewCounter(opts CounterOpts) Counter {
 | 
				
			|||||||
		nil,
 | 
							nil,
 | 
				
			||||||
		opts.ConstLabels,
 | 
							opts.ConstLabels,
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
	result := &counter{desc: desc, labelPairs: desc.constLabelPairs, now: time.Now}
 | 
						if opts.now == nil {
 | 
				
			||||||
 | 
							opts.now = time.Now
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						result := &counter{desc: desc, labelPairs: desc.constLabelPairs, now: opts.now}
 | 
				
			||||||
	result.init(result) // Init self-collection.
 | 
						result.init(result) // Init self-collection.
 | 
				
			||||||
 | 
						result.createdTs = timestamppb.New(opts.now())
 | 
				
			||||||
	return result
 | 
						return result
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -106,10 +111,12 @@ type counter struct {
 | 
				
			|||||||
	selfCollector
 | 
						selfCollector
 | 
				
			||||||
	desc *Desc
 | 
						desc *Desc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						createdTs  *timestamppb.Timestamp
 | 
				
			||||||
	labelPairs []*dto.LabelPair
 | 
						labelPairs []*dto.LabelPair
 | 
				
			||||||
	exemplar   atomic.Value // Containing nil or a *dto.Exemplar.
 | 
						exemplar   atomic.Value // Containing nil or a *dto.Exemplar.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	now func() time.Time // To mock out time.Now() for testing.
 | 
						// now is for testing purposes, by default it's time.Now.
 | 
				
			||||||
 | 
						now func() time.Time
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (c *counter) Desc() *Desc {
 | 
					func (c *counter) Desc() *Desc {
 | 
				
			||||||
@@ -159,8 +166,7 @@ func (c *counter) Write(out *dto.Metric) error {
 | 
				
			|||||||
		exemplar = e.(*dto.Exemplar)
 | 
							exemplar = e.(*dto.Exemplar)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	val := c.get()
 | 
						val := c.get()
 | 
				
			||||||
 | 
						return populateMetric(CounterValue, val, c.labelPairs, exemplar, out, c.createdTs)
 | 
				
			||||||
	return populateMetric(CounterValue, val, c.labelPairs, exemplar, out)
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (c *counter) updateExemplar(v float64, l Labels) {
 | 
					func (c *counter) updateExemplar(v float64, l Labels) {
 | 
				
			||||||
@@ -200,13 +206,17 @@ func (v2) NewCounterVec(opts CounterVecOpts) *CounterVec {
 | 
				
			|||||||
		opts.VariableLabels,
 | 
							opts.VariableLabels,
 | 
				
			||||||
		opts.ConstLabels,
 | 
							opts.ConstLabels,
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
 | 
						if opts.now == nil {
 | 
				
			||||||
 | 
							opts.now = time.Now
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	return &CounterVec{
 | 
						return &CounterVec{
 | 
				
			||||||
		MetricVec: NewMetricVec(desc, func(lvs ...string) Metric {
 | 
							MetricVec: NewMetricVec(desc, func(lvs ...string) Metric {
 | 
				
			||||||
			if len(lvs) != len(desc.variableLabels) {
 | 
								if len(lvs) != len(desc.variableLabels.names) {
 | 
				
			||||||
				panic(makeInconsistentCardinalityError(desc.fqName, desc.variableLabels.labelNames(), lvs))
 | 
									panic(makeInconsistentCardinalityError(desc.fqName, desc.variableLabels.names, lvs))
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			result := &counter{desc: desc, labelPairs: MakeLabelPairs(desc, lvs), now: time.Now}
 | 
								result := &counter{desc: desc, labelPairs: MakeLabelPairs(desc, lvs), now: opts.now}
 | 
				
			||||||
			result.init(result) // Init self-collection.
 | 
								result.init(result) // Init self-collection.
 | 
				
			||||||
 | 
								result.createdTs = timestamppb.New(opts.now())
 | 
				
			||||||
			return result
 | 
								return result
 | 
				
			||||||
		}),
 | 
							}),
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										28
									
								
								vendor/github.com/prometheus/client_golang/prometheus/desc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										28
									
								
								vendor/github.com/prometheus/client_golang/prometheus/desc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -52,7 +52,7 @@ type Desc struct {
 | 
				
			|||||||
	constLabelPairs []*dto.LabelPair
 | 
						constLabelPairs []*dto.LabelPair
 | 
				
			||||||
	// variableLabels contains names of labels and normalization function for
 | 
						// variableLabels contains names of labels and normalization function for
 | 
				
			||||||
	// which the metric maintains variable values.
 | 
						// which the metric maintains variable values.
 | 
				
			||||||
	variableLabels ConstrainedLabels
 | 
						variableLabels *compiledLabels
 | 
				
			||||||
	// id is a hash of the values of the ConstLabels and fqName. This
 | 
						// id is a hash of the values of the ConstLabels and fqName. This
 | 
				
			||||||
	// must be unique among all registered descriptors and can therefore be
 | 
						// must be unique among all registered descriptors and can therefore be
 | 
				
			||||||
	// used as an identifier of the descriptor.
 | 
						// used as an identifier of the descriptor.
 | 
				
			||||||
@@ -93,7 +93,7 @@ func (v2) NewDesc(fqName, help string, variableLabels ConstrainableLabels, const
 | 
				
			|||||||
	d := &Desc{
 | 
						d := &Desc{
 | 
				
			||||||
		fqName:         fqName,
 | 
							fqName:         fqName,
 | 
				
			||||||
		help:           help,
 | 
							help:           help,
 | 
				
			||||||
		variableLabels: variableLabels.constrainedLabels(),
 | 
							variableLabels: variableLabels.compile(),
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if !model.IsValidMetricName(model.LabelValue(fqName)) {
 | 
						if !model.IsValidMetricName(model.LabelValue(fqName)) {
 | 
				
			||||||
		d.err = fmt.Errorf("%q is not a valid metric name", fqName)
 | 
							d.err = fmt.Errorf("%q is not a valid metric name", fqName)
 | 
				
			||||||
@@ -103,7 +103,7 @@ func (v2) NewDesc(fqName, help string, variableLabels ConstrainableLabels, const
 | 
				
			|||||||
	// their sorted label names) plus the fqName (at position 0).
 | 
						// their sorted label names) plus the fqName (at position 0).
 | 
				
			||||||
	labelValues := make([]string, 1, len(constLabels)+1)
 | 
						labelValues := make([]string, 1, len(constLabels)+1)
 | 
				
			||||||
	labelValues[0] = fqName
 | 
						labelValues[0] = fqName
 | 
				
			||||||
	labelNames := make([]string, 0, len(constLabels)+len(d.variableLabels))
 | 
						labelNames := make([]string, 0, len(constLabels)+len(d.variableLabels.names))
 | 
				
			||||||
	labelNameSet := map[string]struct{}{}
 | 
						labelNameSet := map[string]struct{}{}
 | 
				
			||||||
	// First add only the const label names and sort them...
 | 
						// First add only the const label names and sort them...
 | 
				
			||||||
	for labelName := range constLabels {
 | 
						for labelName := range constLabels {
 | 
				
			||||||
@@ -128,13 +128,13 @@ func (v2) NewDesc(fqName, help string, variableLabels ConstrainableLabels, const
 | 
				
			|||||||
	// Now add the variable label names, but prefix them with something that
 | 
						// Now add the variable label names, but prefix them with something that
 | 
				
			||||||
	// cannot be in a regular label name. That prevents matching the label
 | 
						// cannot be in a regular label name. That prevents matching the label
 | 
				
			||||||
	// dimension with a different mix between preset and variable labels.
 | 
						// dimension with a different mix between preset and variable labels.
 | 
				
			||||||
	for _, label := range d.variableLabels {
 | 
						for _, label := range d.variableLabels.names {
 | 
				
			||||||
		if !checkLabelName(label.Name) {
 | 
							if !checkLabelName(label) {
 | 
				
			||||||
			d.err = fmt.Errorf("%q is not a valid label name for metric %q", label.Name, fqName)
 | 
								d.err = fmt.Errorf("%q is not a valid label name for metric %q", label, fqName)
 | 
				
			||||||
			return d
 | 
								return d
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		labelNames = append(labelNames, "$"+label.Name)
 | 
							labelNames = append(labelNames, "$"+label)
 | 
				
			||||||
		labelNameSet[label.Name] = struct{}{}
 | 
							labelNameSet[label] = struct{}{}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if len(labelNames) != len(labelNameSet) {
 | 
						if len(labelNames) != len(labelNameSet) {
 | 
				
			||||||
		d.err = fmt.Errorf("duplicate label names in constant and variable labels for metric %q", fqName)
 | 
							d.err = fmt.Errorf("duplicate label names in constant and variable labels for metric %q", fqName)
 | 
				
			||||||
@@ -189,11 +189,19 @@ func (d *Desc) String() string {
 | 
				
			|||||||
			fmt.Sprintf("%s=%q", lp.GetName(), lp.GetValue()),
 | 
								fmt.Sprintf("%s=%q", lp.GetName(), lp.GetValue()),
 | 
				
			||||||
		)
 | 
							)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						vlStrings := make([]string, 0, len(d.variableLabels.names))
 | 
				
			||||||
 | 
						for _, vl := range d.variableLabels.names {
 | 
				
			||||||
 | 
							if fn, ok := d.variableLabels.labelConstraints[vl]; ok && fn != nil {
 | 
				
			||||||
 | 
								vlStrings = append(vlStrings, fmt.Sprintf("c(%s)", vl))
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								vlStrings = append(vlStrings, vl)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	return fmt.Sprintf(
 | 
						return fmt.Sprintf(
 | 
				
			||||||
		"Desc{fqName: %q, help: %q, constLabels: {%s}, variableLabels: %v}",
 | 
							"Desc{fqName: %q, help: %q, constLabels: {%s}, variableLabels: {%s}}",
 | 
				
			||||||
		d.fqName,
 | 
							d.fqName,
 | 
				
			||||||
		d.help,
 | 
							d.help,
 | 
				
			||||||
		strings.Join(lpStrings, ","),
 | 
							strings.Join(lpStrings, ","),
 | 
				
			||||||
		d.variableLabels,
 | 
							strings.Join(vlStrings, ","),
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								vendor/github.com/prometheus/client_golang/prometheus/expvar_collector.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/prometheus/client_golang/prometheus/expvar_collector.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -48,7 +48,7 @@ func (e *expvarCollector) Collect(ch chan<- Metric) {
 | 
				
			|||||||
			continue
 | 
								continue
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		var v interface{}
 | 
							var v interface{}
 | 
				
			||||||
		labels := make([]string, len(desc.variableLabels))
 | 
							labels := make([]string, len(desc.variableLabels.names))
 | 
				
			||||||
		if err := json.Unmarshal([]byte(expVar.String()), &v); err != nil {
 | 
							if err := json.Unmarshal([]byte(expVar.String()), &v); err != nil {
 | 
				
			||||||
			ch <- NewInvalidMetric(desc, err)
 | 
								ch <- NewInvalidMetric(desc, err)
 | 
				
			||||||
			continue
 | 
								continue
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										8
									
								
								vendor/github.com/prometheus/client_golang/prometheus/gauge.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								vendor/github.com/prometheus/client_golang/prometheus/gauge.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -62,7 +62,7 @@ type GaugeVecOpts struct {
 | 
				
			|||||||
	GaugeOpts
 | 
						GaugeOpts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// VariableLabels are used to partition the metric vector by the given set
 | 
						// VariableLabels are used to partition the metric vector by the given set
 | 
				
			||||||
	// of labels. Each label value will be constrained with the optional Contraint
 | 
						// of labels. Each label value will be constrained with the optional Constraint
 | 
				
			||||||
	// function, if provided.
 | 
						// function, if provided.
 | 
				
			||||||
	VariableLabels ConstrainableLabels
 | 
						VariableLabels ConstrainableLabels
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -135,7 +135,7 @@ func (g *gauge) Sub(val float64) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func (g *gauge) Write(out *dto.Metric) error {
 | 
					func (g *gauge) Write(out *dto.Metric) error {
 | 
				
			||||||
	val := math.Float64frombits(atomic.LoadUint64(&g.valBits))
 | 
						val := math.Float64frombits(atomic.LoadUint64(&g.valBits))
 | 
				
			||||||
	return populateMetric(GaugeValue, val, g.labelPairs, nil, out)
 | 
						return populateMetric(GaugeValue, val, g.labelPairs, nil, out, nil)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// GaugeVec is a Collector that bundles a set of Gauges that all share the same
 | 
					// GaugeVec is a Collector that bundles a set of Gauges that all share the same
 | 
				
			||||||
@@ -166,8 +166,8 @@ func (v2) NewGaugeVec(opts GaugeVecOpts) *GaugeVec {
 | 
				
			|||||||
	)
 | 
						)
 | 
				
			||||||
	return &GaugeVec{
 | 
						return &GaugeVec{
 | 
				
			||||||
		MetricVec: NewMetricVec(desc, func(lvs ...string) Metric {
 | 
							MetricVec: NewMetricVec(desc, func(lvs ...string) Metric {
 | 
				
			||||||
			if len(lvs) != len(desc.variableLabels) {
 | 
								if len(lvs) != len(desc.variableLabels.names) {
 | 
				
			||||||
				panic(makeInconsistentCardinalityError(desc.fqName, desc.variableLabels.labelNames(), lvs))
 | 
									panic(makeInconsistentCardinalityError(desc.fqName, desc.variableLabels.names, lvs))
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			result := &gauge{desc: desc, labelPairs: MakeLabelPairs(desc, lvs)}
 | 
								result := &gauge{desc: desc, labelPairs: MakeLabelPairs(desc, lvs)}
 | 
				
			||||||
			result.init(result) // Init self-collection.
 | 
								result.init(result) // Init self-collection.
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										168
									
								
								vendor/github.com/prometheus/client_golang/prometheus/histogram.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										168
									
								
								vendor/github.com/prometheus/client_golang/prometheus/histogram.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -25,6 +25,7 @@ import (
 | 
				
			|||||||
	dto "github.com/prometheus/client_model/go"
 | 
						dto "github.com/prometheus/client_model/go"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"google.golang.org/protobuf/proto"
 | 
						"google.golang.org/protobuf/proto"
 | 
				
			||||||
 | 
						"google.golang.org/protobuf/types/known/timestamppb"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// nativeHistogramBounds for the frac of observed values. Only relevant for
 | 
					// nativeHistogramBounds for the frac of observed values. Only relevant for
 | 
				
			||||||
@@ -391,7 +392,7 @@ type HistogramOpts struct {
 | 
				
			|||||||
	// zero, it is replaced by default buckets. The default buckets are
 | 
						// zero, it is replaced by default buckets. The default buckets are
 | 
				
			||||||
	// DefBuckets if no buckets for a native histogram (see below) are used,
 | 
						// 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
 | 
						// 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
 | 
						// use both regular buckets and buckets for a native histogram, you have
 | 
				
			||||||
	// to define the regular buckets here explicitly.)
 | 
						// to define the regular buckets here explicitly.)
 | 
				
			||||||
	Buckets []float64
 | 
						Buckets []float64
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -413,8 +414,8 @@ type HistogramOpts struct {
 | 
				
			|||||||
	// and 2, same as between 2 and 4, and 4 and 8, etc.).
 | 
						// and 2, same as between 2 and 4, and 4 and 8, etc.).
 | 
				
			||||||
	//
 | 
						//
 | 
				
			||||||
	// Details about the actually used factor: The factor is calculated as
 | 
						// 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
 | 
						// 2^(2^-n), where n is an integer number between (and including) -4 and
 | 
				
			||||||
	// 4. n is chosen so that the resulting factor is the largest that is
 | 
						// 8. n is chosen so that the resulting factor is the largest that is
 | 
				
			||||||
	// still smaller or equal to NativeHistogramBucketFactor. Note that the
 | 
						// still smaller or equal to NativeHistogramBucketFactor. Note that the
 | 
				
			||||||
	// smallest possible factor is therefore approx. 1.00271 (i.e. 2^(2^-8)
 | 
						// smallest possible factor is therefore approx. 1.00271 (i.e. 2^(2^-8)
 | 
				
			||||||
	// ). If NativeHistogramBucketFactor is greater than 1 but smaller than
 | 
						// ). If NativeHistogramBucketFactor is greater than 1 but smaller than
 | 
				
			||||||
@@ -428,12 +429,12 @@ type HistogramOpts struct {
 | 
				
			|||||||
	// a major version bump.
 | 
						// a major version bump.
 | 
				
			||||||
	NativeHistogramBucketFactor float64
 | 
						NativeHistogramBucketFactor float64
 | 
				
			||||||
	// All observations with an absolute value of less or equal
 | 
						// All observations with an absolute value of less or equal
 | 
				
			||||||
	// NativeHistogramZeroThreshold are accumulated into a “zero”
 | 
						// NativeHistogramZeroThreshold are accumulated into a “zero” bucket.
 | 
				
			||||||
	// bucket. For best results, this should be close to a bucket
 | 
						// For best results, this should be close to a bucket boundary. This is
 | 
				
			||||||
	// boundary. This is usually the case if picking a power of two. If
 | 
						// usually the case if picking a power of two. If
 | 
				
			||||||
	// NativeHistogramZeroThreshold is left at zero,
 | 
						// NativeHistogramZeroThreshold is left at zero,
 | 
				
			||||||
	// DefNativeHistogramZeroThreshold is used as the threshold. To configure
 | 
						// DefNativeHistogramZeroThreshold is used as the threshold. To
 | 
				
			||||||
	// a zero bucket with an actual threshold of zero (i.e. only
 | 
						// configure a zero bucket with an actual threshold of zero (i.e. only
 | 
				
			||||||
	// observations of precisely zero will go into the zero bucket), set
 | 
						// observations of precisely zero will go into the zero bucket), set
 | 
				
			||||||
	// NativeHistogramZeroThreshold to the NativeHistogramZeroThresholdZero
 | 
						// NativeHistogramZeroThreshold to the NativeHistogramZeroThresholdZero
 | 
				
			||||||
	// constant (or any negative float value).
 | 
						// constant (or any negative float value).
 | 
				
			||||||
@@ -446,26 +447,37 @@ type HistogramOpts struct {
 | 
				
			|||||||
	// Histogram are sufficiently wide-spread. In particular, this could be
 | 
						// Histogram are sufficiently wide-spread. In particular, this could be
 | 
				
			||||||
	// used as a DoS attack vector. Where the observed values depend on
 | 
						// used as a DoS attack vector. Where the observed values depend on
 | 
				
			||||||
	// external inputs, it is highly recommended to set a
 | 
						// external inputs, it is highly recommended to set a
 | 
				
			||||||
	// NativeHistogramMaxBucketNumber.)  Once the set
 | 
						// NativeHistogramMaxBucketNumber.) Once the set
 | 
				
			||||||
	// NativeHistogramMaxBucketNumber is exceeded, the following strategy is
 | 
						// NativeHistogramMaxBucketNumber is exceeded, the following strategy is
 | 
				
			||||||
	// enacted: First, if the last reset (or the creation) of the histogram
 | 
						// enacted:
 | 
				
			||||||
	// is at least NativeHistogramMinResetDuration ago, then the whole
 | 
						//  - First, if the last reset (or the creation) of the histogram is at
 | 
				
			||||||
	// histogram is reset to its initial state (including regular
 | 
						//    least NativeHistogramMinResetDuration ago, then the whole
 | 
				
			||||||
	// buckets). If less time has passed, or if
 | 
						//    histogram is reset to its initial state (including regular
 | 
				
			||||||
	// NativeHistogramMinResetDuration is zero, no reset is
 | 
						//    buckets).
 | 
				
			||||||
	// performed. Instead, the zero threshold is increased sufficiently to
 | 
						//  - If less time has passed, or if NativeHistogramMinResetDuration is
 | 
				
			||||||
	// reduce the number of buckets to or below
 | 
						//    zero, no reset is performed. Instead, the zero threshold is
 | 
				
			||||||
	// NativeHistogramMaxBucketNumber, but not to more than
 | 
						//    increased sufficiently to reduce the number of buckets to or below
 | 
				
			||||||
	// NativeHistogramMaxZeroThreshold. Thus, if
 | 
						//    NativeHistogramMaxBucketNumber, but not to more than
 | 
				
			||||||
	// NativeHistogramMaxZeroThreshold is already at or below the current
 | 
						//    NativeHistogramMaxZeroThreshold. Thus, if
 | 
				
			||||||
	// zero threshold, nothing happens at this step. After that, if the
 | 
						//    NativeHistogramMaxZeroThreshold is already at or below the current
 | 
				
			||||||
	// number of buckets still exceeds NativeHistogramMaxBucketNumber, the
 | 
						//    zero threshold, nothing happens at this step.
 | 
				
			||||||
	// resolution of the histogram is reduced by doubling the width of the
 | 
						//  - After that, if the number of buckets still exceeds
 | 
				
			||||||
	// sparse buckets (up to a growth factor between one bucket to the next
 | 
						//    NativeHistogramMaxBucketNumber, the resolution of the histogram is
 | 
				
			||||||
	// of 2^(2^4) = 65536, see above).
 | 
						//    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).
 | 
				
			||||||
 | 
						//  - Any increased zero threshold or reduced resolution is reset back
 | 
				
			||||||
 | 
						//    to their original values once NativeHistogramMinResetDuration has
 | 
				
			||||||
 | 
						//    passed (since the last reset or the creation of the histogram).
 | 
				
			||||||
	NativeHistogramMaxBucketNumber  uint32
 | 
						NativeHistogramMaxBucketNumber  uint32
 | 
				
			||||||
	NativeHistogramMinResetDuration time.Duration
 | 
						NativeHistogramMinResetDuration time.Duration
 | 
				
			||||||
	NativeHistogramMaxZeroThreshold float64
 | 
						NativeHistogramMaxZeroThreshold float64
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// now is for testing purposes, by default it's time.Now.
 | 
				
			||||||
 | 
						now func() time.Time
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// afterFunc is for testing purposes, by default it's time.AfterFunc.
 | 
				
			||||||
 | 
						afterFunc func(time.Duration, func()) *time.Timer
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// HistogramVecOpts bundles the options to create a HistogramVec metric.
 | 
					// HistogramVecOpts bundles the options to create a HistogramVec metric.
 | 
				
			||||||
@@ -475,7 +487,7 @@ type HistogramVecOpts struct {
 | 
				
			|||||||
	HistogramOpts
 | 
						HistogramOpts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// VariableLabels are used to partition the metric vector by the given set
 | 
						// VariableLabels are used to partition the metric vector by the given set
 | 
				
			||||||
	// of labels. Each label value will be constrained with the optional Contraint
 | 
						// of labels. Each label value will be constrained with the optional Constraint
 | 
				
			||||||
	// function, if provided.
 | 
						// function, if provided.
 | 
				
			||||||
	VariableLabels ConstrainableLabels
 | 
						VariableLabels ConstrainableLabels
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -499,12 +511,12 @@ func NewHistogram(opts HistogramOpts) Histogram {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func newHistogram(desc *Desc, opts HistogramOpts, labelValues ...string) Histogram {
 | 
					func newHistogram(desc *Desc, opts HistogramOpts, labelValues ...string) Histogram {
 | 
				
			||||||
	if len(desc.variableLabels) != len(labelValues) {
 | 
						if len(desc.variableLabels.names) != len(labelValues) {
 | 
				
			||||||
		panic(makeInconsistentCardinalityError(desc.fqName, desc.variableLabels.labelNames(), labelValues))
 | 
							panic(makeInconsistentCardinalityError(desc.fqName, desc.variableLabels.names, labelValues))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for _, n := range desc.variableLabels {
 | 
						for _, n := range desc.variableLabels.names {
 | 
				
			||||||
		if n.Name == bucketLabel {
 | 
							if n == bucketLabel {
 | 
				
			||||||
			panic(errBucketLabelNotAllowed)
 | 
								panic(errBucketLabelNotAllowed)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -514,6 +526,12 @@ func newHistogram(desc *Desc, opts HistogramOpts, labelValues ...string) Histogr
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if opts.now == nil {
 | 
				
			||||||
 | 
							opts.now = time.Now
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if opts.afterFunc == nil {
 | 
				
			||||||
 | 
							opts.afterFunc = time.AfterFunc
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	h := &histogram{
 | 
						h := &histogram{
 | 
				
			||||||
		desc:                            desc,
 | 
							desc:                            desc,
 | 
				
			||||||
		upperBounds:                     opts.Buckets,
 | 
							upperBounds:                     opts.Buckets,
 | 
				
			||||||
@@ -521,8 +539,9 @@ func newHistogram(desc *Desc, opts HistogramOpts, labelValues ...string) Histogr
 | 
				
			|||||||
		nativeHistogramMaxBuckets:       opts.NativeHistogramMaxBucketNumber,
 | 
							nativeHistogramMaxBuckets:       opts.NativeHistogramMaxBucketNumber,
 | 
				
			||||||
		nativeHistogramMaxZeroThreshold: opts.NativeHistogramMaxZeroThreshold,
 | 
							nativeHistogramMaxZeroThreshold: opts.NativeHistogramMaxZeroThreshold,
 | 
				
			||||||
		nativeHistogramMinResetDuration: opts.NativeHistogramMinResetDuration,
 | 
							nativeHistogramMinResetDuration: opts.NativeHistogramMinResetDuration,
 | 
				
			||||||
		lastResetTime:                   time.Now(),
 | 
							lastResetTime:                   opts.now(),
 | 
				
			||||||
		now:                             time.Now,
 | 
							now:                             opts.now,
 | 
				
			||||||
 | 
							afterFunc:                       opts.afterFunc,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if len(h.upperBounds) == 0 && opts.NativeHistogramBucketFactor <= 1 {
 | 
						if len(h.upperBounds) == 0 && opts.NativeHistogramBucketFactor <= 1 {
 | 
				
			||||||
		h.upperBounds = DefBuckets
 | 
							h.upperBounds = DefBuckets
 | 
				
			||||||
@@ -701,9 +720,18 @@ type histogram struct {
 | 
				
			|||||||
	nativeHistogramMaxZeroThreshold float64
 | 
						nativeHistogramMaxZeroThreshold float64
 | 
				
			||||||
	nativeHistogramMaxBuckets       uint32
 | 
						nativeHistogramMaxBuckets       uint32
 | 
				
			||||||
	nativeHistogramMinResetDuration time.Duration
 | 
						nativeHistogramMinResetDuration time.Duration
 | 
				
			||||||
	lastResetTime                   time.Time // Protected by mtx.
 | 
						// lastResetTime is protected by mtx. It is also used as created timestamp.
 | 
				
			||||||
 | 
						lastResetTime time.Time
 | 
				
			||||||
 | 
						// resetScheduled is protected by mtx. It is true if a reset is
 | 
				
			||||||
 | 
						// scheduled for a later time (when nativeHistogramMinResetDuration has
 | 
				
			||||||
 | 
						// passed).
 | 
				
			||||||
 | 
						resetScheduled bool
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	now func() time.Time // To mock out time.Now() for testing.
 | 
						// now is for testing purposes, by default it's time.Now.
 | 
				
			||||||
 | 
						now func() time.Time
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// afterFunc is for testing purposes, by default it's time.AfterFunc.
 | 
				
			||||||
 | 
						afterFunc func(time.Duration, func()) *time.Timer
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (h *histogram) Desc() *Desc {
 | 
					func (h *histogram) Desc() *Desc {
 | 
				
			||||||
@@ -742,9 +770,10 @@ func (h *histogram) Write(out *dto.Metric) error {
 | 
				
			|||||||
	waitForCooldown(count, coldCounts)
 | 
						waitForCooldown(count, coldCounts)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	his := &dto.Histogram{
 | 
						his := &dto.Histogram{
 | 
				
			||||||
		Bucket:      make([]*dto.Bucket, len(h.upperBounds)),
 | 
							Bucket:           make([]*dto.Bucket, len(h.upperBounds)),
 | 
				
			||||||
		SampleCount: proto.Uint64(count),
 | 
							SampleCount:      proto.Uint64(count),
 | 
				
			||||||
		SampleSum:   proto.Float64(math.Float64frombits(atomic.LoadUint64(&coldCounts.sumBits))),
 | 
							SampleSum:        proto.Float64(math.Float64frombits(atomic.LoadUint64(&coldCounts.sumBits))),
 | 
				
			||||||
 | 
							CreatedTimestamp: timestamppb.New(h.lastResetTime),
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	out.Histogram = his
 | 
						out.Histogram = his
 | 
				
			||||||
	out.Label = h.labelPairs
 | 
						out.Label = h.labelPairs
 | 
				
			||||||
@@ -782,6 +811,16 @@ func (h *histogram) Write(out *dto.Metric) error {
 | 
				
			|||||||
		his.ZeroCount = proto.Uint64(zeroBucket)
 | 
							his.ZeroCount = proto.Uint64(zeroBucket)
 | 
				
			||||||
		his.NegativeSpan, his.NegativeDelta = makeBuckets(&coldCounts.nativeHistogramBucketsNegative)
 | 
							his.NegativeSpan, his.NegativeDelta = makeBuckets(&coldCounts.nativeHistogramBucketsNegative)
 | 
				
			||||||
		his.PositiveSpan, his.PositiveDelta = makeBuckets(&coldCounts.nativeHistogramBucketsPositive)
 | 
							his.PositiveSpan, his.PositiveDelta = makeBuckets(&coldCounts.nativeHistogramBucketsPositive)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Add a no-op span to a histogram without observations and with
 | 
				
			||||||
 | 
							// a zero threshold of zero. Otherwise, a native histogram would
 | 
				
			||||||
 | 
							// look like a classic histogram to scrapers.
 | 
				
			||||||
 | 
							if *his.ZeroThreshold == 0 && *his.ZeroCount == 0 && len(his.PositiveSpan) == 0 && len(his.NegativeSpan) == 0 {
 | 
				
			||||||
 | 
								his.PositiveSpan = []*dto.BucketSpan{{
 | 
				
			||||||
 | 
									Offset: proto.Int32(0),
 | 
				
			||||||
 | 
									Length: proto.Uint32(0),
 | 
				
			||||||
 | 
								}}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	addAndResetCounts(hotCounts, coldCounts)
 | 
						addAndResetCounts(hotCounts, coldCounts)
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
@@ -848,26 +887,39 @@ func (h *histogram) limitBuckets(counts *histogramCounts, value float64, bucket
 | 
				
			|||||||
	if h.maybeReset(hotCounts, coldCounts, coldIdx, value, bucket) {
 | 
						if h.maybeReset(hotCounts, coldCounts, coldIdx, value, bucket) {
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						// One of the other strategies will happen. To undo what they will do as
 | 
				
			||||||
 | 
						// soon as enough time has passed to satisfy
 | 
				
			||||||
 | 
						// h.nativeHistogramMinResetDuration, schedule a reset at the right time
 | 
				
			||||||
 | 
						// if we haven't done so already.
 | 
				
			||||||
 | 
						if h.nativeHistogramMinResetDuration > 0 && !h.resetScheduled {
 | 
				
			||||||
 | 
							h.resetScheduled = true
 | 
				
			||||||
 | 
							h.afterFunc(h.nativeHistogramMinResetDuration-h.now().Sub(h.lastResetTime), h.reset)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if h.maybeWidenZeroBucket(hotCounts, coldCounts) {
 | 
						if h.maybeWidenZeroBucket(hotCounts, coldCounts) {
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	h.doubleBucketWidth(hotCounts, coldCounts)
 | 
						h.doubleBucketWidth(hotCounts, coldCounts)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// maybeReset resests the whole histogram if at least h.nativeHistogramMinResetDuration
 | 
					// maybeReset resets the whole histogram if at least
 | 
				
			||||||
// has been passed. It returns true if the histogram has been reset. The caller
 | 
					// h.nativeHistogramMinResetDuration has been passed. It returns true if the
 | 
				
			||||||
// must have locked h.mtx.
 | 
					// 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 {
 | 
					func (h *histogram) maybeReset(
 | 
				
			||||||
 | 
						hot, cold *histogramCounts, coldIdx uint64, value float64, bucket int,
 | 
				
			||||||
 | 
					) bool {
 | 
				
			||||||
	// We are using the possibly mocked h.now() rather than
 | 
						// We are using the possibly mocked h.now() rather than
 | 
				
			||||||
	// time.Since(h.lastResetTime) to enable testing.
 | 
						// time.Since(h.lastResetTime) to enable testing.
 | 
				
			||||||
	if h.nativeHistogramMinResetDuration == 0 || h.now().Sub(h.lastResetTime) < h.nativeHistogramMinResetDuration {
 | 
						if h.nativeHistogramMinResetDuration == 0 || // No reset configured.
 | 
				
			||||||
 | 
							h.resetScheduled || // Do not interefere if a reset is already scheduled.
 | 
				
			||||||
 | 
							h.now().Sub(h.lastResetTime) < h.nativeHistogramMinResetDuration {
 | 
				
			||||||
		return false
 | 
							return false
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	// Completely reset coldCounts.
 | 
						// Completely reset coldCounts.
 | 
				
			||||||
	h.resetCounts(cold)
 | 
						h.resetCounts(cold)
 | 
				
			||||||
	// Repeat the latest observation to not lose it completely.
 | 
						// Repeat the latest observation to not lose it completely.
 | 
				
			||||||
	cold.observe(value, bucket, true)
 | 
						cold.observe(value, bucket, true)
 | 
				
			||||||
	// Make coldCounts the new hot counts while ressetting countAndHotIdx.
 | 
						// Make coldCounts the new hot counts while resetting countAndHotIdx.
 | 
				
			||||||
	n := atomic.SwapUint64(&h.countAndHotIdx, (coldIdx<<63)+1)
 | 
						n := atomic.SwapUint64(&h.countAndHotIdx, (coldIdx<<63)+1)
 | 
				
			||||||
	count := n & ((1 << 63) - 1)
 | 
						count := n & ((1 << 63) - 1)
 | 
				
			||||||
	waitForCooldown(count, hot)
 | 
						waitForCooldown(count, hot)
 | 
				
			||||||
@@ -877,6 +929,29 @@ func (h *histogram) maybeReset(hot, cold *histogramCounts, coldIdx uint64, value
 | 
				
			|||||||
	return true
 | 
						return true
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// reset resets the whole histogram. It locks h.mtx itself, i.e. it has to be
 | 
				
			||||||
 | 
					// called without having locked h.mtx.
 | 
				
			||||||
 | 
					func (h *histogram) reset() {
 | 
				
			||||||
 | 
						h.mtx.Lock()
 | 
				
			||||||
 | 
						defer h.mtx.Unlock()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						n := atomic.LoadUint64(&h.countAndHotIdx)
 | 
				
			||||||
 | 
						hotIdx := n >> 63
 | 
				
			||||||
 | 
						coldIdx := (^n) >> 63
 | 
				
			||||||
 | 
						hot := h.counts[hotIdx]
 | 
				
			||||||
 | 
						cold := h.counts[coldIdx]
 | 
				
			||||||
 | 
						// Completely reset coldCounts.
 | 
				
			||||||
 | 
						h.resetCounts(cold)
 | 
				
			||||||
 | 
						// Make coldCounts the new hot counts while resetting countAndHotIdx.
 | 
				
			||||||
 | 
						n = atomic.SwapUint64(&h.countAndHotIdx, coldIdx<<63)
 | 
				
			||||||
 | 
						count := n & ((1 << 63) - 1)
 | 
				
			||||||
 | 
						waitForCooldown(count, hot)
 | 
				
			||||||
 | 
						// Finally, reset the formerly hot counts, too.
 | 
				
			||||||
 | 
						h.resetCounts(hot)
 | 
				
			||||||
 | 
						h.lastResetTime = h.now()
 | 
				
			||||||
 | 
						h.resetScheduled = false
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// maybeWidenZeroBucket widens the zero bucket until it includes the existing
 | 
					// maybeWidenZeroBucket widens the zero bucket until it includes the existing
 | 
				
			||||||
// buckets closest to the zero bucket (which could be two, if an equidistant
 | 
					// 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
 | 
					// negative and a positive bucket exists, but usually it's only one bucket to be
 | 
				
			||||||
@@ -1176,6 +1251,7 @@ type constHistogram struct {
 | 
				
			|||||||
	sum        float64
 | 
						sum        float64
 | 
				
			||||||
	buckets    map[float64]uint64
 | 
						buckets    map[float64]uint64
 | 
				
			||||||
	labelPairs []*dto.LabelPair
 | 
						labelPairs []*dto.LabelPair
 | 
				
			||||||
 | 
						createdTs  *timestamppb.Timestamp
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (h *constHistogram) Desc() *Desc {
 | 
					func (h *constHistogram) Desc() *Desc {
 | 
				
			||||||
@@ -1183,7 +1259,9 @@ func (h *constHistogram) Desc() *Desc {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (h *constHistogram) Write(out *dto.Metric) error {
 | 
					func (h *constHistogram) Write(out *dto.Metric) error {
 | 
				
			||||||
	his := &dto.Histogram{}
 | 
						his := &dto.Histogram{
 | 
				
			||||||
 | 
							CreatedTimestamp: h.createdTs,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	buckets := make([]*dto.Bucket, 0, len(h.buckets))
 | 
						buckets := make([]*dto.Bucket, 0, len(h.buckets))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1230,7 +1308,7 @@ func NewConstHistogram(
 | 
				
			|||||||
	if desc.err != nil {
 | 
						if desc.err != nil {
 | 
				
			||||||
		return nil, desc.err
 | 
							return nil, desc.err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if err := validateLabelValues(labelValues, len(desc.variableLabels)); err != nil {
 | 
						if err := validateLabelValues(labelValues, len(desc.variableLabels.names)); err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return &constHistogram{
 | 
						return &constHistogram{
 | 
				
			||||||
@@ -1324,7 +1402,7 @@ func makeBuckets(buckets *sync.Map) ([]*dto.BucketSpan, []int64) {
 | 
				
			|||||||
		// Multiple spans with only small gaps in between are probably
 | 
							// Multiple spans with only small gaps in between are probably
 | 
				
			||||||
		// encoded more efficiently as one larger span with a few empty
 | 
							// encoded more efficiently as one larger span with a few empty
 | 
				
			||||||
		// buckets. Needs some research to find the sweet spot. For now,
 | 
							// buckets. Needs some research to find the sweet spot. For now,
 | 
				
			||||||
		// we assume that gaps of one ore two buckets should not create
 | 
							// we assume that gaps of one or two buckets should not create
 | 
				
			||||||
		// a new span.
 | 
							// a new span.
 | 
				
			||||||
		iDelta := int32(i - nextI)
 | 
							iDelta := int32(i - nextI)
 | 
				
			||||||
		if n == 0 || iDelta > 2 {
 | 
							if n == 0 || iDelta > 2 {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								vendor/github.com/prometheus/client_golang/prometheus/internal/difflib.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/prometheus/client_golang/prometheus/internal/difflib.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -14,7 +14,7 @@
 | 
				
			|||||||
// It provides tools to compare sequences of strings and generate textual diffs.
 | 
					// It provides tools to compare sequences of strings and generate textual diffs.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// Maintaining `GetUnifiedDiffString` here because original repository
 | 
					// Maintaining `GetUnifiedDiffString` here because original repository
 | 
				
			||||||
// (https://github.com/pmezard/go-difflib) is no loger maintained.
 | 
					// (https://github.com/pmezard/go-difflib) is no longer maintained.
 | 
				
			||||||
package internal
 | 
					package internal
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										60
									
								
								vendor/github.com/prometheus/client_golang/prometheus/labels.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										60
									
								
								vendor/github.com/prometheus/client_golang/prometheus/labels.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -32,19 +32,15 @@ import (
 | 
				
			|||||||
// create a Desc.
 | 
					// create a Desc.
 | 
				
			||||||
type Labels map[string]string
 | 
					type Labels map[string]string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// LabelConstraint normalizes label values.
 | 
				
			||||||
 | 
					type LabelConstraint func(string) string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ConstrainedLabels represents a label name and its constrain function
 | 
					// ConstrainedLabels represents a label name and its constrain function
 | 
				
			||||||
// to normalize label values. This type is commonly used when constructing
 | 
					// to normalize label values. This type is commonly used when constructing
 | 
				
			||||||
// metric vector Collectors.
 | 
					// metric vector Collectors.
 | 
				
			||||||
type ConstrainedLabel struct {
 | 
					type ConstrainedLabel struct {
 | 
				
			||||||
	Name       string
 | 
						Name       string
 | 
				
			||||||
	Constraint func(string) string
 | 
						Constraint LabelConstraint
 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (cl ConstrainedLabel) Constrain(v string) string {
 | 
					 | 
				
			||||||
	if cl.Constraint == nil {
 | 
					 | 
				
			||||||
		return v
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return cl.Constraint(v)
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ConstrainableLabels is an interface that allows creating of labels that can
 | 
					// ConstrainableLabels is an interface that allows creating of labels that can
 | 
				
			||||||
@@ -58,7 +54,7 @@ func (cl ConstrainedLabel) Constrain(v string) string {
 | 
				
			|||||||
//	  },
 | 
					//	  },
 | 
				
			||||||
//	})
 | 
					//	})
 | 
				
			||||||
type ConstrainableLabels interface {
 | 
					type ConstrainableLabels interface {
 | 
				
			||||||
	constrainedLabels() ConstrainedLabels
 | 
						compile() *compiledLabels
 | 
				
			||||||
	labelNames() []string
 | 
						labelNames() []string
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -67,8 +63,20 @@ type ConstrainableLabels interface {
 | 
				
			|||||||
// metric vector Collectors.
 | 
					// metric vector Collectors.
 | 
				
			||||||
type ConstrainedLabels []ConstrainedLabel
 | 
					type ConstrainedLabels []ConstrainedLabel
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (cls ConstrainedLabels) constrainedLabels() ConstrainedLabels {
 | 
					func (cls ConstrainedLabels) compile() *compiledLabels {
 | 
				
			||||||
	return cls
 | 
						compiled := &compiledLabels{
 | 
				
			||||||
 | 
							names:            make([]string, len(cls)),
 | 
				
			||||||
 | 
							labelConstraints: map[string]LabelConstraint{},
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for i, label := range cls {
 | 
				
			||||||
 | 
							compiled.names[i] = label.Name
 | 
				
			||||||
 | 
							if label.Constraint != nil {
 | 
				
			||||||
 | 
								compiled.labelConstraints[label.Name] = label.Constraint
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return compiled
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (cls ConstrainedLabels) labelNames() []string {
 | 
					func (cls ConstrainedLabels) labelNames() []string {
 | 
				
			||||||
@@ -92,18 +100,36 @@ func (cls ConstrainedLabels) labelNames() []string {
 | 
				
			|||||||
//	}
 | 
					//	}
 | 
				
			||||||
type UnconstrainedLabels []string
 | 
					type UnconstrainedLabels []string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (uls UnconstrainedLabels) constrainedLabels() ConstrainedLabels {
 | 
					func (uls UnconstrainedLabels) compile() *compiledLabels {
 | 
				
			||||||
	constrainedLabels := make([]ConstrainedLabel, len(uls))
 | 
						return &compiledLabels{
 | 
				
			||||||
	for i, l := range uls {
 | 
							names: uls,
 | 
				
			||||||
		constrainedLabels[i] = ConstrainedLabel{Name: l}
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return constrainedLabels
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (uls UnconstrainedLabels) labelNames() []string {
 | 
					func (uls UnconstrainedLabels) labelNames() []string {
 | 
				
			||||||
	return uls
 | 
						return uls
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type compiledLabels struct {
 | 
				
			||||||
 | 
						names            []string
 | 
				
			||||||
 | 
						labelConstraints map[string]LabelConstraint
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (cls *compiledLabels) compile() *compiledLabels {
 | 
				
			||||||
 | 
						return cls
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (cls *compiledLabels) labelNames() []string {
 | 
				
			||||||
 | 
						return cls.names
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (cls *compiledLabels) constrain(labelName, value string) string {
 | 
				
			||||||
 | 
						if fn, ok := cls.labelConstraints[labelName]; ok && fn != nil {
 | 
				
			||||||
 | 
							return fn(value)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return value
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// reservedLabelPrefix is a prefix which is not legal in user-supplied
 | 
					// reservedLabelPrefix is a prefix which is not legal in user-supplied
 | 
				
			||||||
// label names.
 | 
					// label names.
 | 
				
			||||||
const reservedLabelPrefix = "__"
 | 
					const reservedLabelPrefix = "__"
 | 
				
			||||||
@@ -139,6 +165,8 @@ func validateValuesInLabels(labels Labels, expectedNumberOfValues int) error {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func validateLabelValues(vals []string, expectedNumberOfValues int) error {
 | 
					func validateLabelValues(vals []string, expectedNumberOfValues int) error {
 | 
				
			||||||
	if len(vals) != expectedNumberOfValues {
 | 
						if len(vals) != expectedNumberOfValues {
 | 
				
			||||||
 | 
							// The call below makes vals escape, copy them to avoid that.
 | 
				
			||||||
 | 
							vals := append([]string(nil), vals...)
 | 
				
			||||||
		return fmt.Errorf(
 | 
							return fmt.Errorf(
 | 
				
			||||||
			"%w: expected %d label values but got %d in %#v",
 | 
								"%w: expected %d label values but got %d in %#v",
 | 
				
			||||||
			errInconsistentCardinality, expectedNumberOfValues,
 | 
								errInconsistentCardinality, expectedNumberOfValues,
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										3
									
								
								vendor/github.com/prometheus/client_golang/prometheus/metric.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/github.com/prometheus/client_golang/prometheus/metric.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -92,6 +92,9 @@ type Opts struct {
 | 
				
			|||||||
	// machine_role metric). See also
 | 
						// machine_role metric). See also
 | 
				
			||||||
	// https://prometheus.io/docs/instrumenting/writing_exporters/#target-labels-not-static-scraped-labels
 | 
						// https://prometheus.io/docs/instrumenting/writing_exporters/#target-labels-not-static-scraped-labels
 | 
				
			||||||
	ConstLabels Labels
 | 
						ConstLabels Labels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// now is for testing purposes, by default it's time.Now.
 | 
				
			||||||
 | 
						now func() time.Time
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// BuildFQName joins the given three name components by "_". Empty name
 | 
					// BuildFQName joins the given three name components by "_". Empty name
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										4
									
								
								vendor/github.com/prometheus/client_golang/prometheus/process_collector_other.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/prometheus/client_golang/prometheus/process_collector_other.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -11,8 +11,8 @@
 | 
				
			|||||||
// See the License for the specific language governing permissions and
 | 
					// See the License for the specific language governing permissions and
 | 
				
			||||||
// limitations under the License.
 | 
					// limitations under the License.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//go:build !windows && !js
 | 
					//go:build !windows && !js && !wasip1
 | 
				
			||||||
// +build !windows,!js
 | 
					// +build !windows,!js,!wasip1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package prometheus
 | 
					package prometheus
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,10 +1,9 @@
 | 
				
			|||||||
// Copyright 2013 Matt T. Proud
 | 
					// Copyright 2023 The Prometheus Authors
 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Licensed under the Apache License, Version 2.0 (the "License");
 | 
					// Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
// you may not use this file except in compliance with the License.
 | 
					// you may not use this file except in compliance with the License.
 | 
				
			||||||
// You may obtain a copy of the License at
 | 
					// You may obtain a copy of the License at
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
//     http://www.apache.org/licenses/LICENSE-2.0
 | 
					// http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// Unless required by applicable law or agreed to in writing, software
 | 
					// Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
// distributed under the License is distributed on an "AS IS" BASIS,
 | 
					// distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
@@ -12,5 +11,16 @@
 | 
				
			|||||||
// See the License for the specific language governing permissions and
 | 
					// See the License for the specific language governing permissions and
 | 
				
			||||||
// limitations under the License.
 | 
					// limitations under the License.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Package pbutil provides record length-delimited Protocol Buffer streaming.
 | 
					//go:build wasip1
 | 
				
			||||||
package pbutil
 | 
					// +build wasip1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package prometheus
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func canCollectProcess() bool {
 | 
				
			||||||
 | 
						return false
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (*processCollector) processCollect(chan<- Metric) {
 | 
				
			||||||
 | 
						// noop on this platform
 | 
				
			||||||
 | 
						return
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										11
									
								
								vendor/github.com/prometheus/client_golang/prometheus/promhttp/instrument_server.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								vendor/github.com/prometheus/client_golang/prometheus/promhttp/instrument_server.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -389,16 +389,13 @@ func isLabelCurried(c prometheus.Collector, label string) bool {
 | 
				
			|||||||
	return true
 | 
						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 {
 | 
					func labels(code, method bool, reqMethod string, status int, extraMethods ...string) prometheus.Labels {
 | 
				
			||||||
	if !(code || method) {
 | 
					 | 
				
			||||||
		return emptyLabels
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	labels := prometheus.Labels{}
 | 
						labels := prometheus.Labels{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if !(code || method) {
 | 
				
			||||||
 | 
							return labels
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if code {
 | 
						if code {
 | 
				
			||||||
		labels["code"] = sanitizeCode(status)
 | 
							labels["code"] = sanitizeCode(status)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										6
									
								
								vendor/github.com/prometheus/client_golang/prometheus/registry.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								vendor/github.com/prometheus/client_golang/prometheus/registry.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -548,7 +548,7 @@ func (r *Registry) Gather() ([]*dto.MetricFamily, error) {
 | 
				
			|||||||
			goroutineBudget--
 | 
								goroutineBudget--
 | 
				
			||||||
			runtime.Gosched()
 | 
								runtime.Gosched()
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		// Once both checkedMetricChan and uncheckdMetricChan are closed
 | 
							// Once both checkedMetricChan and uncheckedMetricChan are closed
 | 
				
			||||||
		// and drained, the contraption above will nil out cmc and umc,
 | 
							// and drained, the contraption above will nil out cmc and umc,
 | 
				
			||||||
		// and then we can leave the collect loop here.
 | 
							// and then we can leave the collect loop here.
 | 
				
			||||||
		if cmc == nil && umc == nil {
 | 
							if cmc == nil && umc == nil {
 | 
				
			||||||
@@ -963,9 +963,9 @@ func checkDescConsistency(
 | 
				
			|||||||
	// Is the desc consistent with the content of the metric?
 | 
						// Is the desc consistent with the content of the metric?
 | 
				
			||||||
	lpsFromDesc := make([]*dto.LabelPair, len(desc.constLabelPairs), len(dtoMetric.Label))
 | 
						lpsFromDesc := make([]*dto.LabelPair, len(desc.constLabelPairs), len(dtoMetric.Label))
 | 
				
			||||||
	copy(lpsFromDesc, desc.constLabelPairs)
 | 
						copy(lpsFromDesc, desc.constLabelPairs)
 | 
				
			||||||
	for _, l := range desc.variableLabels {
 | 
						for _, l := range desc.variableLabels.names {
 | 
				
			||||||
		lpsFromDesc = append(lpsFromDesc, &dto.LabelPair{
 | 
							lpsFromDesc = append(lpsFromDesc, &dto.LabelPair{
 | 
				
			||||||
			Name: proto.String(l.Name),
 | 
								Name: proto.String(l),
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if len(lpsFromDesc) != len(dtoMetric.Label) {
 | 
						if len(lpsFromDesc) != len(dtoMetric.Label) {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										41
									
								
								vendor/github.com/prometheus/client_golang/prometheus/summary.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										41
									
								
								vendor/github.com/prometheus/client_golang/prometheus/summary.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -26,6 +26,7 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	"github.com/beorn7/perks/quantile"
 | 
						"github.com/beorn7/perks/quantile"
 | 
				
			||||||
	"google.golang.org/protobuf/proto"
 | 
						"google.golang.org/protobuf/proto"
 | 
				
			||||||
 | 
						"google.golang.org/protobuf/types/known/timestamppb"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// quantileLabel is used for the label that defines the quantile in a
 | 
					// quantileLabel is used for the label that defines the quantile in a
 | 
				
			||||||
@@ -145,6 +146,9 @@ type SummaryOpts struct {
 | 
				
			|||||||
	// is the internal buffer size of the underlying package
 | 
						// is the internal buffer size of the underlying package
 | 
				
			||||||
	// "github.com/bmizerany/perks/quantile").
 | 
						// "github.com/bmizerany/perks/quantile").
 | 
				
			||||||
	BufCap uint32
 | 
						BufCap uint32
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// now is for testing purposes, by default it's time.Now.
 | 
				
			||||||
 | 
						now func() time.Time
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// SummaryVecOpts bundles the options to create a SummaryVec metric.
 | 
					// SummaryVecOpts bundles the options to create a SummaryVec metric.
 | 
				
			||||||
@@ -154,7 +158,7 @@ type SummaryVecOpts struct {
 | 
				
			|||||||
	SummaryOpts
 | 
						SummaryOpts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// VariableLabels are used to partition the metric vector by the given set
 | 
						// VariableLabels are used to partition the metric vector by the given set
 | 
				
			||||||
	// of labels. Each label value will be constrained with the optional Contraint
 | 
						// of labels. Each label value will be constrained with the optional Constraint
 | 
				
			||||||
	// function, if provided.
 | 
						// function, if provided.
 | 
				
			||||||
	VariableLabels ConstrainableLabels
 | 
						VariableLabels ConstrainableLabels
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -188,12 +192,12 @@ func NewSummary(opts SummaryOpts) Summary {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func newSummary(desc *Desc, opts SummaryOpts, labelValues ...string) Summary {
 | 
					func newSummary(desc *Desc, opts SummaryOpts, labelValues ...string) Summary {
 | 
				
			||||||
	if len(desc.variableLabels) != len(labelValues) {
 | 
						if len(desc.variableLabels.names) != len(labelValues) {
 | 
				
			||||||
		panic(makeInconsistentCardinalityError(desc.fqName, desc.variableLabels.labelNames(), labelValues))
 | 
							panic(makeInconsistentCardinalityError(desc.fqName, desc.variableLabels.names, labelValues))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for _, n := range desc.variableLabels {
 | 
						for _, n := range desc.variableLabels.names {
 | 
				
			||||||
		if n.Name == quantileLabel {
 | 
							if n == quantileLabel {
 | 
				
			||||||
			panic(errQuantileLabelNotAllowed)
 | 
								panic(errQuantileLabelNotAllowed)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -222,6 +226,9 @@ func newSummary(desc *Desc, opts SummaryOpts, labelValues ...string) Summary {
 | 
				
			|||||||
		opts.BufCap = DefBufCap
 | 
							opts.BufCap = DefBufCap
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if opts.now == nil {
 | 
				
			||||||
 | 
							opts.now = time.Now
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	if len(opts.Objectives) == 0 {
 | 
						if len(opts.Objectives) == 0 {
 | 
				
			||||||
		// Use the lock-free implementation of a Summary without objectives.
 | 
							// Use the lock-free implementation of a Summary without objectives.
 | 
				
			||||||
		s := &noObjectivesSummary{
 | 
							s := &noObjectivesSummary{
 | 
				
			||||||
@@ -230,6 +237,7 @@ func newSummary(desc *Desc, opts SummaryOpts, labelValues ...string) Summary {
 | 
				
			|||||||
			counts:     [2]*summaryCounts{{}, {}},
 | 
								counts:     [2]*summaryCounts{{}, {}},
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		s.init(s) // Init self-collection.
 | 
							s.init(s) // Init self-collection.
 | 
				
			||||||
 | 
							s.createdTs = timestamppb.New(opts.now())
 | 
				
			||||||
		return s
 | 
							return s
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -245,7 +253,7 @@ func newSummary(desc *Desc, opts SummaryOpts, labelValues ...string) Summary {
 | 
				
			|||||||
		coldBuf:        make([]float64, 0, opts.BufCap),
 | 
							coldBuf:        make([]float64, 0, opts.BufCap),
 | 
				
			||||||
		streamDuration: opts.MaxAge / time.Duration(opts.AgeBuckets),
 | 
							streamDuration: opts.MaxAge / time.Duration(opts.AgeBuckets),
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	s.headStreamExpTime = time.Now().Add(s.streamDuration)
 | 
						s.headStreamExpTime = opts.now().Add(s.streamDuration)
 | 
				
			||||||
	s.hotBufExpTime = s.headStreamExpTime
 | 
						s.hotBufExpTime = s.headStreamExpTime
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for i := uint32(0); i < opts.AgeBuckets; i++ {
 | 
						for i := uint32(0); i < opts.AgeBuckets; i++ {
 | 
				
			||||||
@@ -259,6 +267,7 @@ func newSummary(desc *Desc, opts SummaryOpts, labelValues ...string) Summary {
 | 
				
			|||||||
	sort.Float64s(s.sortedObjectives)
 | 
						sort.Float64s(s.sortedObjectives)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	s.init(s) // Init self-collection.
 | 
						s.init(s) // Init self-collection.
 | 
				
			||||||
 | 
						s.createdTs = timestamppb.New(opts.now())
 | 
				
			||||||
	return s
 | 
						return s
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -286,6 +295,8 @@ type summary struct {
 | 
				
			|||||||
	headStream                       *quantile.Stream
 | 
						headStream                       *quantile.Stream
 | 
				
			||||||
	headStreamIdx                    int
 | 
						headStreamIdx                    int
 | 
				
			||||||
	headStreamExpTime, hotBufExpTime time.Time
 | 
						headStreamExpTime, hotBufExpTime time.Time
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						createdTs *timestamppb.Timestamp
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (s *summary) Desc() *Desc {
 | 
					func (s *summary) Desc() *Desc {
 | 
				
			||||||
@@ -307,7 +318,9 @@ func (s *summary) Observe(v float64) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (s *summary) Write(out *dto.Metric) error {
 | 
					func (s *summary) Write(out *dto.Metric) error {
 | 
				
			||||||
	sum := &dto.Summary{}
 | 
						sum := &dto.Summary{
 | 
				
			||||||
 | 
							CreatedTimestamp: s.createdTs,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	qs := make([]*dto.Quantile, 0, len(s.objectives))
 | 
						qs := make([]*dto.Quantile, 0, len(s.objectives))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	s.bufMtx.Lock()
 | 
						s.bufMtx.Lock()
 | 
				
			||||||
@@ -440,6 +453,8 @@ type noObjectivesSummary struct {
 | 
				
			|||||||
	counts [2]*summaryCounts
 | 
						counts [2]*summaryCounts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	labelPairs []*dto.LabelPair
 | 
						labelPairs []*dto.LabelPair
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						createdTs *timestamppb.Timestamp
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (s *noObjectivesSummary) Desc() *Desc {
 | 
					func (s *noObjectivesSummary) Desc() *Desc {
 | 
				
			||||||
@@ -490,8 +505,9 @@ func (s *noObjectivesSummary) Write(out *dto.Metric) error {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	sum := &dto.Summary{
 | 
						sum := &dto.Summary{
 | 
				
			||||||
		SampleCount: proto.Uint64(count),
 | 
							SampleCount:      proto.Uint64(count),
 | 
				
			||||||
		SampleSum:   proto.Float64(math.Float64frombits(atomic.LoadUint64(&coldCounts.sumBits))),
 | 
							SampleSum:        proto.Float64(math.Float64frombits(atomic.LoadUint64(&coldCounts.sumBits))),
 | 
				
			||||||
 | 
							CreatedTimestamp: s.createdTs,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	out.Summary = sum
 | 
						out.Summary = sum
 | 
				
			||||||
@@ -681,6 +697,7 @@ type constSummary struct {
 | 
				
			|||||||
	sum        float64
 | 
						sum        float64
 | 
				
			||||||
	quantiles  map[float64]float64
 | 
						quantiles  map[float64]float64
 | 
				
			||||||
	labelPairs []*dto.LabelPair
 | 
						labelPairs []*dto.LabelPair
 | 
				
			||||||
 | 
						createdTs  *timestamppb.Timestamp
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (s *constSummary) Desc() *Desc {
 | 
					func (s *constSummary) Desc() *Desc {
 | 
				
			||||||
@@ -688,7 +705,9 @@ func (s *constSummary) Desc() *Desc {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (s *constSummary) Write(out *dto.Metric) error {
 | 
					func (s *constSummary) Write(out *dto.Metric) error {
 | 
				
			||||||
	sum := &dto.Summary{}
 | 
						sum := &dto.Summary{
 | 
				
			||||||
 | 
							CreatedTimestamp: s.createdTs,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	qs := make([]*dto.Quantile, 0, len(s.quantiles))
 | 
						qs := make([]*dto.Quantile, 0, len(s.quantiles))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	sum.SampleCount = proto.Uint64(s.count)
 | 
						sum.SampleCount = proto.Uint64(s.count)
 | 
				
			||||||
@@ -737,7 +756,7 @@ func NewConstSummary(
 | 
				
			|||||||
	if desc.err != nil {
 | 
						if desc.err != nil {
 | 
				
			||||||
		return nil, desc.err
 | 
							return nil, desc.err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if err := validateLabelValues(labelValues, len(desc.variableLabels)); err != nil {
 | 
						if err := validateLabelValues(labelValues, len(desc.variableLabels.names)); err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return &constSummary{
 | 
						return &constSummary{
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										33
									
								
								vendor/github.com/prometheus/client_golang/prometheus/testutil/promlint/problem.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								vendor/github.com/prometheus/client_golang/prometheus/testutil/promlint/problem.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,33 @@
 | 
				
			|||||||
 | 
					// 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 promlint
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import dto "github.com/prometheus/client_model/go"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// A Problem is an issue detected by a linter.
 | 
				
			||||||
 | 
					type Problem struct {
 | 
				
			||||||
 | 
						// The name of the metric indicated by this Problem.
 | 
				
			||||||
 | 
						Metric string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// A description of the issue for this Problem.
 | 
				
			||||||
 | 
						Text string
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// newProblem is helper function to create a Problem.
 | 
				
			||||||
 | 
					func newProblem(mf *dto.MetricFamily, text string) Problem {
 | 
				
			||||||
 | 
						return Problem{
 | 
				
			||||||
 | 
							Metric: mf.GetName(),
 | 
				
			||||||
 | 
							Text:   text,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										318
									
								
								vendor/github.com/prometheus/client_golang/prometheus/testutil/promlint/promlint.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										318
									
								
								vendor/github.com/prometheus/client_golang/prometheus/testutil/promlint/promlint.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -16,15 +16,11 @@ package promlint
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"errors"
 | 
						"errors"
 | 
				
			||||||
	"fmt"
 | 
					 | 
				
			||||||
	"io"
 | 
						"io"
 | 
				
			||||||
	"regexp"
 | 
					 | 
				
			||||||
	"sort"
 | 
						"sort"
 | 
				
			||||||
	"strings"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	"github.com/prometheus/common/expfmt"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	dto "github.com/prometheus/client_model/go"
 | 
						dto "github.com/prometheus/client_model/go"
 | 
				
			||||||
 | 
						"github.com/prometheus/common/expfmt"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// A Linter is a Prometheus metrics linter.  It identifies issues with metric
 | 
					// A Linter is a Prometheus metrics linter.  It identifies issues with metric
 | 
				
			||||||
@@ -37,23 +33,8 @@ type Linter struct {
 | 
				
			|||||||
	// of them.
 | 
						// of them.
 | 
				
			||||||
	r   io.Reader
 | 
						r   io.Reader
 | 
				
			||||||
	mfs []*dto.MetricFamily
 | 
						mfs []*dto.MetricFamily
 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
// A Problem is an issue detected by a Linter.
 | 
						customValidations []Validation
 | 
				
			||||||
type Problem struct {
 | 
					 | 
				
			||||||
	// The name of the metric indicated by this Problem.
 | 
					 | 
				
			||||||
	Metric string
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// A description of the issue for this Problem.
 | 
					 | 
				
			||||||
	Text string
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// newProblem is helper function to create a Problem.
 | 
					 | 
				
			||||||
func newProblem(mf *dto.MetricFamily, text string) Problem {
 | 
					 | 
				
			||||||
	return Problem{
 | 
					 | 
				
			||||||
		Metric: mf.GetName(),
 | 
					 | 
				
			||||||
		Text:   text,
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// New creates a new Linter that reads an input stream of Prometheus metrics in
 | 
					// New creates a new Linter that reads an input stream of Prometheus metrics in
 | 
				
			||||||
@@ -72,6 +53,14 @@ func NewWithMetricFamilies(mfs []*dto.MetricFamily) *Linter {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// AddCustomValidations adds custom validations to the linter.
 | 
				
			||||||
 | 
					func (l *Linter) AddCustomValidations(vs ...Validation) {
 | 
				
			||||||
 | 
						if l.customValidations == nil {
 | 
				
			||||||
 | 
							l.customValidations = make([]Validation, 0, len(vs))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						l.customValidations = append(l.customValidations, vs...)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Lint performs a linting pass, returning a slice of Problems indicating any
 | 
					// Lint performs a linting pass, returning a slice of Problems indicating any
 | 
				
			||||||
// issues found in the metrics stream. The slice is sorted by metric name
 | 
					// issues found in the metrics stream. The slice is sorted by metric name
 | 
				
			||||||
// and issue description.
 | 
					// and issue description.
 | 
				
			||||||
@@ -79,7 +68,7 @@ func (l *Linter) Lint() ([]Problem, error) {
 | 
				
			|||||||
	var problems []Problem
 | 
						var problems []Problem
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if l.r != nil {
 | 
						if l.r != nil {
 | 
				
			||||||
		d := expfmt.NewDecoder(l.r, expfmt.FmtText)
 | 
							d := expfmt.NewDecoder(l.r, expfmt.NewFormat(expfmt.TypeTextPlain))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		mf := &dto.MetricFamily{}
 | 
							mf := &dto.MetricFamily{}
 | 
				
			||||||
		for {
 | 
							for {
 | 
				
			||||||
@@ -91,11 +80,11 @@ func (l *Linter) Lint() ([]Problem, error) {
 | 
				
			|||||||
				return nil, err
 | 
									return nil, err
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			problems = append(problems, lint(mf)...)
 | 
								problems = append(problems, l.lint(mf)...)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	for _, mf := range l.mfs {
 | 
						for _, mf := range l.mfs {
 | 
				
			||||||
		problems = append(problems, lint(mf)...)
 | 
							problems = append(problems, l.lint(mf)...)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Ensure deterministic output.
 | 
						// Ensure deterministic output.
 | 
				
			||||||
@@ -110,276 +99,25 @@ func (l *Linter) Lint() ([]Problem, error) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// lint is the entry point for linting a single metric.
 | 
					// lint is the entry point for linting a single metric.
 | 
				
			||||||
func lint(mf *dto.MetricFamily) []Problem {
 | 
					func (l *Linter) lint(mf *dto.MetricFamily) []Problem {
 | 
				
			||||||
	fns := []func(mf *dto.MetricFamily) []Problem{
 | 
						var problems []Problem
 | 
				
			||||||
		lintHelp,
 | 
					
 | 
				
			||||||
		lintMetricUnits,
 | 
						for _, fn := range defaultValidations {
 | 
				
			||||||
		lintCounter,
 | 
							errs := fn(mf)
 | 
				
			||||||
		lintHistogramSummaryReserved,
 | 
							for _, err := range errs {
 | 
				
			||||||
		lintMetricTypeInName,
 | 
								problems = append(problems, newProblem(mf, err.Error()))
 | 
				
			||||||
		lintReservedChars,
 | 
							}
 | 
				
			||||||
		lintCamelCase,
 | 
					 | 
				
			||||||
		lintUnitAbbreviations,
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var problems []Problem
 | 
						if l.customValidations != nil {
 | 
				
			||||||
	for _, fn := range fns {
 | 
							for _, fn := range l.customValidations {
 | 
				
			||||||
		problems = append(problems, fn(mf)...)
 | 
								errs := fn(mf)
 | 
				
			||||||
 | 
								for _, err := range errs {
 | 
				
			||||||
 | 
									problems = append(problems, newProblem(mf, err.Error()))
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// TODO(mdlayher): lint rules for specific metrics types.
 | 
						// TODO(mdlayher): lint rules for specific metrics types.
 | 
				
			||||||
	return problems
 | 
						return problems
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
// lintHelp detects issues related to the help text for a metric.
 | 
					 | 
				
			||||||
func lintHelp(mf *dto.MetricFamily) []Problem {
 | 
					 | 
				
			||||||
	var problems []Problem
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Expect all metrics to have help text available.
 | 
					 | 
				
			||||||
	if mf.Help == nil {
 | 
					 | 
				
			||||||
		problems = append(problems, newProblem(mf, "no help text"))
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return problems
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// lintMetricUnits detects issues with metric unit names.
 | 
					 | 
				
			||||||
func lintMetricUnits(mf *dto.MetricFamily) []Problem {
 | 
					 | 
				
			||||||
	var problems []Problem
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	unit, base, ok := metricUnits(*mf.Name)
 | 
					 | 
				
			||||||
	if !ok {
 | 
					 | 
				
			||||||
		// No known units detected.
 | 
					 | 
				
			||||||
		return nil
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Unit is already a base unit.
 | 
					 | 
				
			||||||
	if unit == base {
 | 
					 | 
				
			||||||
		return nil
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	problems = append(problems, newProblem(mf, fmt.Sprintf("use base unit %q instead of %q", base, unit)))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return problems
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// lintCounter detects issues specific to counters, as well as patterns that should
 | 
					 | 
				
			||||||
// only be used with counters.
 | 
					 | 
				
			||||||
func lintCounter(mf *dto.MetricFamily) []Problem {
 | 
					 | 
				
			||||||
	var problems []Problem
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	isCounter := mf.GetType() == dto.MetricType_COUNTER
 | 
					 | 
				
			||||||
	isUntyped := mf.GetType() == dto.MetricType_UNTYPED
 | 
					 | 
				
			||||||
	hasTotalSuffix := strings.HasSuffix(mf.GetName(), "_total")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	switch {
 | 
					 | 
				
			||||||
	case isCounter && !hasTotalSuffix:
 | 
					 | 
				
			||||||
		problems = append(problems, newProblem(mf, `counter metrics should have "_total" suffix`))
 | 
					 | 
				
			||||||
	case !isUntyped && !isCounter && hasTotalSuffix:
 | 
					 | 
				
			||||||
		problems = append(problems, newProblem(mf, `non-counter metrics should not have "_total" suffix`))
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return problems
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// lintHistogramSummaryReserved detects when other types of metrics use names or labels
 | 
					 | 
				
			||||||
// reserved for use by histograms and/or summaries.
 | 
					 | 
				
			||||||
func lintHistogramSummaryReserved(mf *dto.MetricFamily) []Problem {
 | 
					 | 
				
			||||||
	// These rules do not apply to untyped metrics.
 | 
					 | 
				
			||||||
	t := mf.GetType()
 | 
					 | 
				
			||||||
	if t == dto.MetricType_UNTYPED {
 | 
					 | 
				
			||||||
		return nil
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	var problems []Problem
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	isHistogram := t == dto.MetricType_HISTOGRAM
 | 
					 | 
				
			||||||
	isSummary := t == dto.MetricType_SUMMARY
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	n := mf.GetName()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if !isHistogram && strings.HasSuffix(n, "_bucket") {
 | 
					 | 
				
			||||||
		problems = append(problems, newProblem(mf, `non-histogram metrics should not have "_bucket" suffix`))
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if !isHistogram && !isSummary && strings.HasSuffix(n, "_count") {
 | 
					 | 
				
			||||||
		problems = append(problems, newProblem(mf, `non-histogram and non-summary metrics should not have "_count" suffix`))
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if !isHistogram && !isSummary && strings.HasSuffix(n, "_sum") {
 | 
					 | 
				
			||||||
		problems = append(problems, newProblem(mf, `non-histogram and non-summary metrics should not have "_sum" suffix`))
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	for _, m := range mf.GetMetric() {
 | 
					 | 
				
			||||||
		for _, l := range m.GetLabel() {
 | 
					 | 
				
			||||||
			ln := l.GetName()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			if !isHistogram && ln == "le" {
 | 
					 | 
				
			||||||
				problems = append(problems, newProblem(mf, `non-histogram metrics should not have "le" label`))
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
			if !isSummary && ln == "quantile" {
 | 
					 | 
				
			||||||
				problems = append(problems, newProblem(mf, `non-summary metrics should not have "quantile" label`))
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return problems
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// lintMetricTypeInName detects when metric types are included in the metric name.
 | 
					 | 
				
			||||||
func lintMetricTypeInName(mf *dto.MetricFamily) []Problem {
 | 
					 | 
				
			||||||
	var problems []Problem
 | 
					 | 
				
			||||||
	n := strings.ToLower(mf.GetName())
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	for i, t := range dto.MetricType_name {
 | 
					 | 
				
			||||||
		if i == int32(dto.MetricType_UNTYPED) {
 | 
					 | 
				
			||||||
			continue
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		typename := strings.ToLower(t)
 | 
					 | 
				
			||||||
		if strings.Contains(n, "_"+typename+"_") || strings.HasSuffix(n, "_"+typename) {
 | 
					 | 
				
			||||||
			problems = append(problems, newProblem(mf, fmt.Sprintf(`metric name should not include type '%s'`, typename)))
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return problems
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// lintReservedChars detects colons in metric names.
 | 
					 | 
				
			||||||
func lintReservedChars(mf *dto.MetricFamily) []Problem {
 | 
					 | 
				
			||||||
	var problems []Problem
 | 
					 | 
				
			||||||
	if strings.Contains(mf.GetName(), ":") {
 | 
					 | 
				
			||||||
		problems = append(problems, newProblem(mf, "metric names should not contain ':'"))
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return problems
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var camelCase = regexp.MustCompile(`[a-z][A-Z]`)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// lintCamelCase detects metric names and label names written in camelCase.
 | 
					 | 
				
			||||||
func lintCamelCase(mf *dto.MetricFamily) []Problem {
 | 
					 | 
				
			||||||
	var problems []Problem
 | 
					 | 
				
			||||||
	if camelCase.FindString(mf.GetName()) != "" {
 | 
					 | 
				
			||||||
		problems = append(problems, newProblem(mf, "metric names should be written in 'snake_case' not 'camelCase'"))
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	for _, m := range mf.GetMetric() {
 | 
					 | 
				
			||||||
		for _, l := range m.GetLabel() {
 | 
					 | 
				
			||||||
			if camelCase.FindString(l.GetName()) != "" {
 | 
					 | 
				
			||||||
				problems = append(problems, newProblem(mf, "label names should be written in 'snake_case' not 'camelCase'"))
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return problems
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// lintUnitAbbreviations detects abbreviated units in the metric name.
 | 
					 | 
				
			||||||
func lintUnitAbbreviations(mf *dto.MetricFamily) []Problem {
 | 
					 | 
				
			||||||
	var problems []Problem
 | 
					 | 
				
			||||||
	n := strings.ToLower(mf.GetName())
 | 
					 | 
				
			||||||
	for _, s := range unitAbbreviations {
 | 
					 | 
				
			||||||
		if strings.Contains(n, "_"+s+"_") || strings.HasSuffix(n, "_"+s) {
 | 
					 | 
				
			||||||
			problems = append(problems, newProblem(mf, "metric names should not contain abbreviated units"))
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return problems
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// metricUnits attempts to detect known unit types used as part of a metric name,
 | 
					 | 
				
			||||||
// e.g. "foo_bytes_total" or "bar_baz_milligrams".
 | 
					 | 
				
			||||||
func metricUnits(m string) (unit, base string, ok bool) {
 | 
					 | 
				
			||||||
	ss := strings.Split(m, "_")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	for _, s := range ss {
 | 
					 | 
				
			||||||
		if base, found := units[s]; found {
 | 
					 | 
				
			||||||
			return s, base, true
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		for _, p := range unitPrefixes {
 | 
					 | 
				
			||||||
			if strings.HasPrefix(s, p) {
 | 
					 | 
				
			||||||
				if base, found := units[s[len(p):]]; found {
 | 
					 | 
				
			||||||
					return s, base, true
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return "", "", false
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Units and their possible prefixes recognized by this library.  More can be
 | 
					 | 
				
			||||||
// added over time as needed.
 | 
					 | 
				
			||||||
var (
 | 
					 | 
				
			||||||
	// map a unit to the appropriate base unit.
 | 
					 | 
				
			||||||
	units = map[string]string{
 | 
					 | 
				
			||||||
		// Base units.
 | 
					 | 
				
			||||||
		"amperes": "amperes",
 | 
					 | 
				
			||||||
		"bytes":   "bytes",
 | 
					 | 
				
			||||||
		"celsius": "celsius", // Also allow Celsius because it is common in typical Prometheus use cases.
 | 
					 | 
				
			||||||
		"grams":   "grams",
 | 
					 | 
				
			||||||
		"joules":  "joules",
 | 
					 | 
				
			||||||
		"kelvin":  "kelvin", // SI base unit, used in special cases (e.g. color temperature, scientific measurements).
 | 
					 | 
				
			||||||
		"meters":  "meters", // Both American and international spelling permitted.
 | 
					 | 
				
			||||||
		"metres":  "metres",
 | 
					 | 
				
			||||||
		"seconds": "seconds",
 | 
					 | 
				
			||||||
		"volts":   "volts",
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		// Non base units.
 | 
					 | 
				
			||||||
		// Time.
 | 
					 | 
				
			||||||
		"minutes": "seconds",
 | 
					 | 
				
			||||||
		"hours":   "seconds",
 | 
					 | 
				
			||||||
		"days":    "seconds",
 | 
					 | 
				
			||||||
		"weeks":   "seconds",
 | 
					 | 
				
			||||||
		// Temperature.
 | 
					 | 
				
			||||||
		"kelvins":    "kelvin",
 | 
					 | 
				
			||||||
		"fahrenheit": "celsius",
 | 
					 | 
				
			||||||
		"rankine":    "celsius",
 | 
					 | 
				
			||||||
		// Length.
 | 
					 | 
				
			||||||
		"inches": "meters",
 | 
					 | 
				
			||||||
		"yards":  "meters",
 | 
					 | 
				
			||||||
		"miles":  "meters",
 | 
					 | 
				
			||||||
		// Bytes.
 | 
					 | 
				
			||||||
		"bits": "bytes",
 | 
					 | 
				
			||||||
		// Energy.
 | 
					 | 
				
			||||||
		"calories": "joules",
 | 
					 | 
				
			||||||
		// Mass.
 | 
					 | 
				
			||||||
		"pounds": "grams",
 | 
					 | 
				
			||||||
		"ounces": "grams",
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	unitPrefixes = []string{
 | 
					 | 
				
			||||||
		"pico",
 | 
					 | 
				
			||||||
		"nano",
 | 
					 | 
				
			||||||
		"micro",
 | 
					 | 
				
			||||||
		"milli",
 | 
					 | 
				
			||||||
		"centi",
 | 
					 | 
				
			||||||
		"deci",
 | 
					 | 
				
			||||||
		"deca",
 | 
					 | 
				
			||||||
		"hecto",
 | 
					 | 
				
			||||||
		"kilo",
 | 
					 | 
				
			||||||
		"kibi",
 | 
					 | 
				
			||||||
		"mega",
 | 
					 | 
				
			||||||
		"mibi",
 | 
					 | 
				
			||||||
		"giga",
 | 
					 | 
				
			||||||
		"gibi",
 | 
					 | 
				
			||||||
		"tera",
 | 
					 | 
				
			||||||
		"tebi",
 | 
					 | 
				
			||||||
		"peta",
 | 
					 | 
				
			||||||
		"pebi",
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Common abbreviations that we'd like to discourage.
 | 
					 | 
				
			||||||
	unitAbbreviations = []string{
 | 
					 | 
				
			||||||
		"s",
 | 
					 | 
				
			||||||
		"ms",
 | 
					 | 
				
			||||||
		"us",
 | 
					 | 
				
			||||||
		"ns",
 | 
					 | 
				
			||||||
		"sec",
 | 
					 | 
				
			||||||
		"b",
 | 
					 | 
				
			||||||
		"kb",
 | 
					 | 
				
			||||||
		"mb",
 | 
					 | 
				
			||||||
		"gb",
 | 
					 | 
				
			||||||
		"tb",
 | 
					 | 
				
			||||||
		"pb",
 | 
					 | 
				
			||||||
		"m",
 | 
					 | 
				
			||||||
		"h",
 | 
					 | 
				
			||||||
		"d",
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										33
									
								
								vendor/github.com/prometheus/client_golang/prometheus/testutil/promlint/validation.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								vendor/github.com/prometheus/client_golang/prometheus/testutil/promlint/validation.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,33 @@
 | 
				
			|||||||
 | 
					// 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 promlint
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						dto "github.com/prometheus/client_model/go"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/prometheus/client_golang/prometheus/testutil/promlint/validations"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type Validation = func(mf *dto.MetricFamily) []error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var defaultValidations = []Validation{
 | 
				
			||||||
 | 
						validations.LintHelp,
 | 
				
			||||||
 | 
						validations.LintMetricUnits,
 | 
				
			||||||
 | 
						validations.LintCounter,
 | 
				
			||||||
 | 
						validations.LintHistogramSummaryReserved,
 | 
				
			||||||
 | 
						validations.LintMetricTypeInName,
 | 
				
			||||||
 | 
						validations.LintReservedChars,
 | 
				
			||||||
 | 
						validations.LintCamelCase,
 | 
				
			||||||
 | 
						validations.LintUnitAbbreviations,
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										40
									
								
								vendor/github.com/prometheus/client_golang/prometheus/testutil/promlint/validations/counter_validations.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								vendor/github.com/prometheus/client_golang/prometheus/testutil/promlint/validations/counter_validations.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,40 @@
 | 
				
			|||||||
 | 
					// 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 validations
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"errors"
 | 
				
			||||||
 | 
						"strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						dto "github.com/prometheus/client_model/go"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// LintCounter detects issues specific to counters, as well as patterns that should
 | 
				
			||||||
 | 
					// only be used with counters.
 | 
				
			||||||
 | 
					func LintCounter(mf *dto.MetricFamily) []error {
 | 
				
			||||||
 | 
						var problems []error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						isCounter := mf.GetType() == dto.MetricType_COUNTER
 | 
				
			||||||
 | 
						isUntyped := mf.GetType() == dto.MetricType_UNTYPED
 | 
				
			||||||
 | 
						hasTotalSuffix := strings.HasSuffix(mf.GetName(), "_total")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						switch {
 | 
				
			||||||
 | 
						case isCounter && !hasTotalSuffix:
 | 
				
			||||||
 | 
							problems = append(problems, errors.New(`counter metrics should have "_total" suffix`))
 | 
				
			||||||
 | 
						case !isUntyped && !isCounter && hasTotalSuffix:
 | 
				
			||||||
 | 
							problems = append(problems, errors.New(`non-counter metrics should not have "_total" suffix`))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return problems
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										101
									
								
								vendor/github.com/prometheus/client_golang/prometheus/testutil/promlint/validations/generic_name_validations.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										101
									
								
								vendor/github.com/prometheus/client_golang/prometheus/testutil/promlint/validations/generic_name_validations.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,101 @@
 | 
				
			|||||||
 | 
					// 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 validations
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"errors"
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
						"regexp"
 | 
				
			||||||
 | 
						"strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						dto "github.com/prometheus/client_model/go"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var camelCase = regexp.MustCompile(`[a-z][A-Z]`)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// LintMetricUnits detects issues with metric unit names.
 | 
				
			||||||
 | 
					func LintMetricUnits(mf *dto.MetricFamily) []error {
 | 
				
			||||||
 | 
						var problems []error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						unit, base, ok := metricUnits(*mf.Name)
 | 
				
			||||||
 | 
						if !ok {
 | 
				
			||||||
 | 
							// No known units detected.
 | 
				
			||||||
 | 
							return nil
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Unit is already a base unit.
 | 
				
			||||||
 | 
						if unit == base {
 | 
				
			||||||
 | 
							return nil
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						problems = append(problems, fmt.Errorf("use base unit %q instead of %q", base, unit))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return problems
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// LintMetricTypeInName detects when metric types are included in the metric name.
 | 
				
			||||||
 | 
					func LintMetricTypeInName(mf *dto.MetricFamily) []error {
 | 
				
			||||||
 | 
						var problems []error
 | 
				
			||||||
 | 
						n := strings.ToLower(mf.GetName())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for i, t := range dto.MetricType_name {
 | 
				
			||||||
 | 
							if i == int32(dto.MetricType_UNTYPED) {
 | 
				
			||||||
 | 
								continue
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							typename := strings.ToLower(t)
 | 
				
			||||||
 | 
							if strings.Contains(n, "_"+typename+"_") || strings.HasSuffix(n, "_"+typename) {
 | 
				
			||||||
 | 
								problems = append(problems, fmt.Errorf(`metric name should not include type '%s'`, typename))
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return problems
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// LintReservedChars detects colons in metric names.
 | 
				
			||||||
 | 
					func LintReservedChars(mf *dto.MetricFamily) []error {
 | 
				
			||||||
 | 
						var problems []error
 | 
				
			||||||
 | 
						if strings.Contains(mf.GetName(), ":") {
 | 
				
			||||||
 | 
							problems = append(problems, errors.New("metric names should not contain ':'"))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return problems
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// LintCamelCase detects metric names and label names written in camelCase.
 | 
				
			||||||
 | 
					func LintCamelCase(mf *dto.MetricFamily) []error {
 | 
				
			||||||
 | 
						var problems []error
 | 
				
			||||||
 | 
						if camelCase.FindString(mf.GetName()) != "" {
 | 
				
			||||||
 | 
							problems = append(problems, errors.New("metric names should be written in 'snake_case' not 'camelCase'"))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for _, m := range mf.GetMetric() {
 | 
				
			||||||
 | 
							for _, l := range m.GetLabel() {
 | 
				
			||||||
 | 
								if camelCase.FindString(l.GetName()) != "" {
 | 
				
			||||||
 | 
									problems = append(problems, errors.New("label names should be written in 'snake_case' not 'camelCase'"))
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return problems
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// LintUnitAbbreviations detects abbreviated units in the metric name.
 | 
				
			||||||
 | 
					func LintUnitAbbreviations(mf *dto.MetricFamily) []error {
 | 
				
			||||||
 | 
						var problems []error
 | 
				
			||||||
 | 
						n := strings.ToLower(mf.GetName())
 | 
				
			||||||
 | 
						for _, s := range unitAbbreviations {
 | 
				
			||||||
 | 
							if strings.Contains(n, "_"+s+"_") || strings.HasSuffix(n, "_"+s) {
 | 
				
			||||||
 | 
								problems = append(problems, errors.New("metric names should not contain abbreviated units"))
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return problems
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										32
									
								
								vendor/github.com/prometheus/client_golang/prometheus/testutil/promlint/validations/help_validations.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								vendor/github.com/prometheus/client_golang/prometheus/testutil/promlint/validations/help_validations.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,32 @@
 | 
				
			|||||||
 | 
					// 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 validations
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"errors"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						dto "github.com/prometheus/client_model/go"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// LintHelp detects issues related to the help text for a metric.
 | 
				
			||||||
 | 
					func LintHelp(mf *dto.MetricFamily) []error {
 | 
				
			||||||
 | 
						var problems []error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Expect all metrics to have help text available.
 | 
				
			||||||
 | 
						if mf.Help == nil {
 | 
				
			||||||
 | 
							problems = append(problems, errors.New("no help text"))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return problems
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										63
									
								
								vendor/github.com/prometheus/client_golang/prometheus/testutil/promlint/validations/histogram_validations.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								vendor/github.com/prometheus/client_golang/prometheus/testutil/promlint/validations/histogram_validations.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package validations
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"errors"
 | 
				
			||||||
 | 
						"strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						dto "github.com/prometheus/client_model/go"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// LintHistogramSummaryReserved detects when other types of metrics use names or labels
 | 
				
			||||||
 | 
					// reserved for use by histograms and/or summaries.
 | 
				
			||||||
 | 
					func LintHistogramSummaryReserved(mf *dto.MetricFamily) []error {
 | 
				
			||||||
 | 
						// These rules do not apply to untyped metrics.
 | 
				
			||||||
 | 
						t := mf.GetType()
 | 
				
			||||||
 | 
						if t == dto.MetricType_UNTYPED {
 | 
				
			||||||
 | 
							return nil
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var problems []error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						isHistogram := t == dto.MetricType_HISTOGRAM
 | 
				
			||||||
 | 
						isSummary := t == dto.MetricType_SUMMARY
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						n := mf.GetName()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if !isHistogram && strings.HasSuffix(n, "_bucket") {
 | 
				
			||||||
 | 
							problems = append(problems, errors.New(`non-histogram metrics should not have "_bucket" suffix`))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if !isHistogram && !isSummary && strings.HasSuffix(n, "_count") {
 | 
				
			||||||
 | 
							problems = append(problems, errors.New(`non-histogram and non-summary metrics should not have "_count" suffix`))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if !isHistogram && !isSummary && strings.HasSuffix(n, "_sum") {
 | 
				
			||||||
 | 
							problems = append(problems, errors.New(`non-histogram and non-summary metrics should not have "_sum" suffix`))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for _, m := range mf.GetMetric() {
 | 
				
			||||||
 | 
							for _, l := range m.GetLabel() {
 | 
				
			||||||
 | 
								ln := l.GetName()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if !isHistogram && ln == "le" {
 | 
				
			||||||
 | 
									problems = append(problems, errors.New(`non-histogram metrics should not have "le" label`))
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								if !isSummary && ln == "quantile" {
 | 
				
			||||||
 | 
									problems = append(problems, errors.New(`non-summary metrics should not have "quantile" label`))
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return problems
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										118
									
								
								vendor/github.com/prometheus/client_golang/prometheus/testutil/promlint/validations/units.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										118
									
								
								vendor/github.com/prometheus/client_golang/prometheus/testutil/promlint/validations/units.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,118 @@
 | 
				
			|||||||
 | 
					// 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 validations
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import "strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Units and their possible prefixes recognized by this library.  More can be
 | 
				
			||||||
 | 
					// added over time as needed.
 | 
				
			||||||
 | 
					var (
 | 
				
			||||||
 | 
						// map a unit to the appropriate base unit.
 | 
				
			||||||
 | 
						units = map[string]string{
 | 
				
			||||||
 | 
							// Base units.
 | 
				
			||||||
 | 
							"amperes": "amperes",
 | 
				
			||||||
 | 
							"bytes":   "bytes",
 | 
				
			||||||
 | 
							"celsius": "celsius", // Also allow Celsius because it is common in typical Prometheus use cases.
 | 
				
			||||||
 | 
							"grams":   "grams",
 | 
				
			||||||
 | 
							"joules":  "joules",
 | 
				
			||||||
 | 
							"kelvin":  "kelvin", // SI base unit, used in special cases (e.g. color temperature, scientific measurements).
 | 
				
			||||||
 | 
							"meters":  "meters", // Both American and international spelling permitted.
 | 
				
			||||||
 | 
							"metres":  "metres",
 | 
				
			||||||
 | 
							"seconds": "seconds",
 | 
				
			||||||
 | 
							"volts":   "volts",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Non base units.
 | 
				
			||||||
 | 
							// Time.
 | 
				
			||||||
 | 
							"minutes": "seconds",
 | 
				
			||||||
 | 
							"hours":   "seconds",
 | 
				
			||||||
 | 
							"days":    "seconds",
 | 
				
			||||||
 | 
							"weeks":   "seconds",
 | 
				
			||||||
 | 
							// Temperature.
 | 
				
			||||||
 | 
							"kelvins":    "kelvin",
 | 
				
			||||||
 | 
							"fahrenheit": "celsius",
 | 
				
			||||||
 | 
							"rankine":    "celsius",
 | 
				
			||||||
 | 
							// Length.
 | 
				
			||||||
 | 
							"inches": "meters",
 | 
				
			||||||
 | 
							"yards":  "meters",
 | 
				
			||||||
 | 
							"miles":  "meters",
 | 
				
			||||||
 | 
							// Bytes.
 | 
				
			||||||
 | 
							"bits": "bytes",
 | 
				
			||||||
 | 
							// Energy.
 | 
				
			||||||
 | 
							"calories": "joules",
 | 
				
			||||||
 | 
							// Mass.
 | 
				
			||||||
 | 
							"pounds": "grams",
 | 
				
			||||||
 | 
							"ounces": "grams",
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						unitPrefixes = []string{
 | 
				
			||||||
 | 
							"pico",
 | 
				
			||||||
 | 
							"nano",
 | 
				
			||||||
 | 
							"micro",
 | 
				
			||||||
 | 
							"milli",
 | 
				
			||||||
 | 
							"centi",
 | 
				
			||||||
 | 
							"deci",
 | 
				
			||||||
 | 
							"deca",
 | 
				
			||||||
 | 
							"hecto",
 | 
				
			||||||
 | 
							"kilo",
 | 
				
			||||||
 | 
							"kibi",
 | 
				
			||||||
 | 
							"mega",
 | 
				
			||||||
 | 
							"mibi",
 | 
				
			||||||
 | 
							"giga",
 | 
				
			||||||
 | 
							"gibi",
 | 
				
			||||||
 | 
							"tera",
 | 
				
			||||||
 | 
							"tebi",
 | 
				
			||||||
 | 
							"peta",
 | 
				
			||||||
 | 
							"pebi",
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Common abbreviations that we'd like to discourage.
 | 
				
			||||||
 | 
						unitAbbreviations = []string{
 | 
				
			||||||
 | 
							"s",
 | 
				
			||||||
 | 
							"ms",
 | 
				
			||||||
 | 
							"us",
 | 
				
			||||||
 | 
							"ns",
 | 
				
			||||||
 | 
							"sec",
 | 
				
			||||||
 | 
							"b",
 | 
				
			||||||
 | 
							"kb",
 | 
				
			||||||
 | 
							"mb",
 | 
				
			||||||
 | 
							"gb",
 | 
				
			||||||
 | 
							"tb",
 | 
				
			||||||
 | 
							"pb",
 | 
				
			||||||
 | 
							"m",
 | 
				
			||||||
 | 
							"h",
 | 
				
			||||||
 | 
							"d",
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// metricUnits attempts to detect known unit types used as part of a metric name,
 | 
				
			||||||
 | 
					// e.g. "foo_bytes_total" or "bar_baz_milligrams".
 | 
				
			||||||
 | 
					func metricUnits(m string) (unit, base string, ok bool) {
 | 
				
			||||||
 | 
						ss := strings.Split(m, "_")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for _, s := range ss {
 | 
				
			||||||
 | 
							if base, found := units[s]; found {
 | 
				
			||||||
 | 
								return s, base, true
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							for _, p := range unitPrefixes {
 | 
				
			||||||
 | 
								if strings.HasPrefix(s, p) {
 | 
				
			||||||
 | 
									if base, found := units[s[len(p):]]; found {
 | 
				
			||||||
 | 
										return s, base, true
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return "", "", false
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										19
									
								
								vendor/github.com/prometheus/client_golang/prometheus/testutil/testutil.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										19
									
								
								vendor/github.com/prometheus/client_golang/prometheus/testutil/testutil.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -47,6 +47,7 @@ import (
 | 
				
			|||||||
	"github.com/davecgh/go-spew/spew"
 | 
						"github.com/davecgh/go-spew/spew"
 | 
				
			||||||
	dto "github.com/prometheus/client_model/go"
 | 
						dto "github.com/prometheus/client_model/go"
 | 
				
			||||||
	"github.com/prometheus/common/expfmt"
 | 
						"github.com/prometheus/common/expfmt"
 | 
				
			||||||
 | 
						"google.golang.org/protobuf/proto"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/prometheus/client_golang/prometheus"
 | 
						"github.com/prometheus/client_golang/prometheus"
 | 
				
			||||||
	"github.com/prometheus/client_golang/prometheus/internal"
 | 
						"github.com/prometheus/client_golang/prometheus/internal"
 | 
				
			||||||
@@ -230,6 +231,20 @@ func convertReaderToMetricFamily(reader io.Reader) ([]*dto.MetricFamily, error)
 | 
				
			|||||||
		return nil, fmt.Errorf("converting reader to metric families failed: %w", err)
 | 
							return nil, fmt.Errorf("converting reader to metric families failed: %w", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// The text protocol handles empty help fields inconsistently. When
 | 
				
			||||||
 | 
						// encoding, any non-nil value, include the empty string, produces a
 | 
				
			||||||
 | 
						// "# HELP" line. But when decoding, the help field is only set to a
 | 
				
			||||||
 | 
						// non-nil value if the "# HELP" line contains a non-empty value.
 | 
				
			||||||
 | 
						//
 | 
				
			||||||
 | 
						// Because metrics in a registry always have non-nil help fields, populate
 | 
				
			||||||
 | 
						// any nil help fields in the parsed metrics with the empty string so that
 | 
				
			||||||
 | 
						// when we compare text encodings, the results are consistent.
 | 
				
			||||||
 | 
						for _, metric := range notNormalized {
 | 
				
			||||||
 | 
							if metric.Help == nil {
 | 
				
			||||||
 | 
								metric.Help = proto.String("")
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return internal.NormalizeMetricFamilies(notNormalized), nil
 | 
						return internal.NormalizeMetricFamilies(notNormalized), nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -250,13 +265,13 @@ func compareMetricFamilies(got, expected []*dto.MetricFamily, metricNames ...str
 | 
				
			|||||||
// result.
 | 
					// result.
 | 
				
			||||||
func compare(got, want []*dto.MetricFamily) error {
 | 
					func compare(got, want []*dto.MetricFamily) error {
 | 
				
			||||||
	var gotBuf, wantBuf bytes.Buffer
 | 
						var gotBuf, wantBuf bytes.Buffer
 | 
				
			||||||
	enc := expfmt.NewEncoder(&gotBuf, expfmt.FmtText)
 | 
						enc := expfmt.NewEncoder(&gotBuf, expfmt.NewFormat(expfmt.TypeTextPlain))
 | 
				
			||||||
	for _, mf := range got {
 | 
						for _, mf := range got {
 | 
				
			||||||
		if err := enc.Encode(mf); err != nil {
 | 
							if err := enc.Encode(mf); err != nil {
 | 
				
			||||||
			return fmt.Errorf("encoding gathered metrics failed: %w", err)
 | 
								return fmt.Errorf("encoding gathered metrics failed: %w", err)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	enc = expfmt.NewEncoder(&wantBuf, expfmt.FmtText)
 | 
						enc = expfmt.NewEncoder(&wantBuf, expfmt.NewFormat(expfmt.TypeTextPlain))
 | 
				
			||||||
	for _, mf := range want {
 | 
						for _, mf := range want {
 | 
				
			||||||
		if err := enc.Encode(mf); err != nil {
 | 
							if err := enc.Encode(mf); err != nil {
 | 
				
			||||||
			return fmt.Errorf("encoding expected metrics failed: %w", err)
 | 
								return fmt.Errorf("encoding expected metrics failed: %w", err)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										55
									
								
								vendor/github.com/prometheus/client_golang/prometheus/value.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										55
									
								
								vendor/github.com/prometheus/client_golang/prometheus/value.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -14,6 +14,7 @@
 | 
				
			|||||||
package prometheus
 | 
					package prometheus
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"errors"
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"sort"
 | 
						"sort"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
@@ -91,7 +92,7 @@ func (v *valueFunc) Desc() *Desc {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (v *valueFunc) Write(out *dto.Metric) error {
 | 
					func (v *valueFunc) Write(out *dto.Metric) error {
 | 
				
			||||||
	return populateMetric(v.valType, v.function(), v.labelPairs, nil, out)
 | 
						return populateMetric(v.valType, v.function(), v.labelPairs, nil, out, nil)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewConstMetric returns a metric with one fixed value that cannot be
 | 
					// NewConstMetric returns a metric with one fixed value that cannot be
 | 
				
			||||||
@@ -105,12 +106,12 @@ func NewConstMetric(desc *Desc, valueType ValueType, value float64, labelValues
 | 
				
			|||||||
	if desc.err != nil {
 | 
						if desc.err != nil {
 | 
				
			||||||
		return nil, desc.err
 | 
							return nil, desc.err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if err := validateLabelValues(labelValues, len(desc.variableLabels)); err != nil {
 | 
						if err := validateLabelValues(labelValues, len(desc.variableLabels.names)); err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	metric := &dto.Metric{}
 | 
						metric := &dto.Metric{}
 | 
				
			||||||
	if err := populateMetric(valueType, value, MakeLabelPairs(desc, labelValues), nil, metric); err != nil {
 | 
						if err := populateMetric(valueType, value, MakeLabelPairs(desc, labelValues), nil, metric, nil); err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -130,6 +131,43 @@ func MustNewConstMetric(desc *Desc, valueType ValueType, value float64, labelVal
 | 
				
			|||||||
	return m
 | 
						return m
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NewConstMetricWithCreatedTimestamp does the same thing as NewConstMetric, but generates Counters
 | 
				
			||||||
 | 
					// with created timestamp set and returns an error for other metric types.
 | 
				
			||||||
 | 
					func NewConstMetricWithCreatedTimestamp(desc *Desc, valueType ValueType, value float64, ct time.Time, labelValues ...string) (Metric, error) {
 | 
				
			||||||
 | 
						if desc.err != nil {
 | 
				
			||||||
 | 
							return nil, desc.err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if err := validateLabelValues(labelValues, len(desc.variableLabels.names)); err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						switch valueType {
 | 
				
			||||||
 | 
						case CounterValue:
 | 
				
			||||||
 | 
							break
 | 
				
			||||||
 | 
						default:
 | 
				
			||||||
 | 
							return nil, errors.New("created timestamps are only supported for counters")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						metric := &dto.Metric{}
 | 
				
			||||||
 | 
						if err := populateMetric(valueType, value, MakeLabelPairs(desc, labelValues), nil, metric, timestamppb.New(ct)); err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return &constMetric{
 | 
				
			||||||
 | 
							desc:   desc,
 | 
				
			||||||
 | 
							metric: metric,
 | 
				
			||||||
 | 
						}, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// MustNewConstMetricWithCreatedTimestamp is a version of NewConstMetricWithCreatedTimestamp that panics where
 | 
				
			||||||
 | 
					// NewConstMetricWithCreatedTimestamp would have returned an error.
 | 
				
			||||||
 | 
					func MustNewConstMetricWithCreatedTimestamp(desc *Desc, valueType ValueType, value float64, ct time.Time, labelValues ...string) Metric {
 | 
				
			||||||
 | 
						m, err := NewConstMetricWithCreatedTimestamp(desc, valueType, value, ct, labelValues...)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							panic(err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return m
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type constMetric struct {
 | 
					type constMetric struct {
 | 
				
			||||||
	desc   *Desc
 | 
						desc   *Desc
 | 
				
			||||||
	metric *dto.Metric
 | 
						metric *dto.Metric
 | 
				
			||||||
@@ -153,11 +191,12 @@ func populateMetric(
 | 
				
			|||||||
	labelPairs []*dto.LabelPair,
 | 
						labelPairs []*dto.LabelPair,
 | 
				
			||||||
	e *dto.Exemplar,
 | 
						e *dto.Exemplar,
 | 
				
			||||||
	m *dto.Metric,
 | 
						m *dto.Metric,
 | 
				
			||||||
 | 
						ct *timestamppb.Timestamp,
 | 
				
			||||||
) error {
 | 
					) error {
 | 
				
			||||||
	m.Label = labelPairs
 | 
						m.Label = labelPairs
 | 
				
			||||||
	switch t {
 | 
						switch t {
 | 
				
			||||||
	case CounterValue:
 | 
						case CounterValue:
 | 
				
			||||||
		m.Counter = &dto.Counter{Value: proto.Float64(v), Exemplar: e}
 | 
							m.Counter = &dto.Counter{Value: proto.Float64(v), Exemplar: e, CreatedTimestamp: ct}
 | 
				
			||||||
	case GaugeValue:
 | 
						case GaugeValue:
 | 
				
			||||||
		m.Gauge = &dto.Gauge{Value: proto.Float64(v)}
 | 
							m.Gauge = &dto.Gauge{Value: proto.Float64(v)}
 | 
				
			||||||
	case UntypedValue:
 | 
						case UntypedValue:
 | 
				
			||||||
@@ -176,19 +215,19 @@ func populateMetric(
 | 
				
			|||||||
// This function is only needed for custom Metric implementations. See MetricVec
 | 
					// This function is only needed for custom Metric implementations. See MetricVec
 | 
				
			||||||
// example.
 | 
					// example.
 | 
				
			||||||
func MakeLabelPairs(desc *Desc, labelValues []string) []*dto.LabelPair {
 | 
					func MakeLabelPairs(desc *Desc, labelValues []string) []*dto.LabelPair {
 | 
				
			||||||
	totalLen := len(desc.variableLabels) + len(desc.constLabelPairs)
 | 
						totalLen := len(desc.variableLabels.names) + len(desc.constLabelPairs)
 | 
				
			||||||
	if totalLen == 0 {
 | 
						if totalLen == 0 {
 | 
				
			||||||
		// Super fast path.
 | 
							// Super fast path.
 | 
				
			||||||
		return nil
 | 
							return nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if len(desc.variableLabels) == 0 {
 | 
						if len(desc.variableLabels.names) == 0 {
 | 
				
			||||||
		// Moderately fast path.
 | 
							// Moderately fast path.
 | 
				
			||||||
		return desc.constLabelPairs
 | 
							return desc.constLabelPairs
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	labelPairs := make([]*dto.LabelPair, 0, totalLen)
 | 
						labelPairs := make([]*dto.LabelPair, 0, totalLen)
 | 
				
			||||||
	for i, l := range desc.variableLabels {
 | 
						for i, l := range desc.variableLabels.names {
 | 
				
			||||||
		labelPairs = append(labelPairs, &dto.LabelPair{
 | 
							labelPairs = append(labelPairs, &dto.LabelPair{
 | 
				
			||||||
			Name:  proto.String(l.Name),
 | 
								Name:  proto.String(l),
 | 
				
			||||||
			Value: proto.String(labelValues[i]),
 | 
								Value: proto.String(labelValues[i]),
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										106
									
								
								vendor/github.com/prometheus/client_golang/prometheus/vec.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										106
									
								
								vendor/github.com/prometheus/client_golang/prometheus/vec.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -20,24 +20,6 @@ import (
 | 
				
			|||||||
	"github.com/prometheus/common/model"
 | 
						"github.com/prometheus/common/model"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var labelsPool = &sync.Pool{
 | 
					 | 
				
			||||||
	New: func() interface{} {
 | 
					 | 
				
			||||||
		return make(Labels)
 | 
					 | 
				
			||||||
	},
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func getLabelsFromPool() Labels {
 | 
					 | 
				
			||||||
	return labelsPool.Get().(Labels)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func putLabelsToPool(labels Labels) {
 | 
					 | 
				
			||||||
	for k := range labels {
 | 
					 | 
				
			||||||
		delete(labels, k)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	labelsPool.Put(labels)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// MetricVec is a Collector to bundle metrics of the same name that differ in
 | 
					// 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
 | 
					// their label values. MetricVec is not used directly but as a building block
 | 
				
			||||||
// for implementations of vectors of a given metric type, like GaugeVec,
 | 
					// for implementations of vectors of a given metric type, like GaugeVec,
 | 
				
			||||||
@@ -91,6 +73,7 @@ func NewMetricVec(desc *Desc, newMetric func(lvs ...string) Metric) *MetricVec {
 | 
				
			|||||||
// See also the CounterVec example.
 | 
					// See also the CounterVec example.
 | 
				
			||||||
func (m *MetricVec) DeleteLabelValues(lvs ...string) bool {
 | 
					func (m *MetricVec) DeleteLabelValues(lvs ...string) bool {
 | 
				
			||||||
	lvs = constrainLabelValues(m.desc, lvs, m.curry)
 | 
						lvs = constrainLabelValues(m.desc, lvs, m.curry)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	h, err := m.hashLabelValues(lvs)
 | 
						h, err := m.hashLabelValues(lvs)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return false
 | 
							return false
 | 
				
			||||||
@@ -110,8 +93,8 @@ func (m *MetricVec) DeleteLabelValues(lvs ...string) bool {
 | 
				
			|||||||
// This method is used for the same purpose as DeleteLabelValues(...string). See
 | 
					// This method is used for the same purpose as DeleteLabelValues(...string). See
 | 
				
			||||||
// there for pros and cons of the two methods.
 | 
					// there for pros and cons of the two methods.
 | 
				
			||||||
func (m *MetricVec) Delete(labels Labels) bool {
 | 
					func (m *MetricVec) Delete(labels Labels) bool {
 | 
				
			||||||
	labels = constrainLabels(m.desc, labels)
 | 
						labels, closer := constrainLabels(m.desc, labels)
 | 
				
			||||||
	defer putLabelsToPool(labels)
 | 
						defer closer()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	h, err := m.hashLabels(labels)
 | 
						h, err := m.hashLabels(labels)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
@@ -128,8 +111,8 @@ func (m *MetricVec) Delete(labels Labels) bool {
 | 
				
			|||||||
// Note that curried labels will never be matched if deleting from the curried vector.
 | 
					// 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.
 | 
					// To match curried labels with DeletePartialMatch, it must be called on the base vector.
 | 
				
			||||||
func (m *MetricVec) DeletePartialMatch(labels Labels) int {
 | 
					func (m *MetricVec) DeletePartialMatch(labels Labels) int {
 | 
				
			||||||
	labels = constrainLabels(m.desc, labels)
 | 
						labels, closer := constrainLabels(m.desc, labels)
 | 
				
			||||||
	defer putLabelsToPool(labels)
 | 
						defer closer()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return m.metricMap.deleteByLabels(labels, m.curry)
 | 
						return m.metricMap.deleteByLabels(labels, m.curry)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -169,11 +152,11 @@ func (m *MetricVec) CurryWith(labels Labels) (*MetricVec, error) {
 | 
				
			|||||||
		oldCurry = m.curry
 | 
							oldCurry = m.curry
 | 
				
			||||||
		iCurry   int
 | 
							iCurry   int
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
	for i, label := range m.desc.variableLabels {
 | 
						for i, labelName := range m.desc.variableLabels.names {
 | 
				
			||||||
		val, ok := labels[label.Name]
 | 
							val, ok := labels[labelName]
 | 
				
			||||||
		if iCurry < len(oldCurry) && oldCurry[iCurry].index == i {
 | 
							if iCurry < len(oldCurry) && oldCurry[iCurry].index == i {
 | 
				
			||||||
			if ok {
 | 
								if ok {
 | 
				
			||||||
				return nil, fmt.Errorf("label name %q is already curried", label.Name)
 | 
									return nil, fmt.Errorf("label name %q is already curried", labelName)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			newCurry = append(newCurry, oldCurry[iCurry])
 | 
								newCurry = append(newCurry, oldCurry[iCurry])
 | 
				
			||||||
			iCurry++
 | 
								iCurry++
 | 
				
			||||||
@@ -181,7 +164,10 @@ func (m *MetricVec) CurryWith(labels Labels) (*MetricVec, error) {
 | 
				
			|||||||
			if !ok {
 | 
								if !ok {
 | 
				
			||||||
				continue // Label stays uncurried.
 | 
									continue // Label stays uncurried.
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			newCurry = append(newCurry, curriedLabelValue{i, label.Constrain(val)})
 | 
								newCurry = append(newCurry, curriedLabelValue{
 | 
				
			||||||
 | 
									i,
 | 
				
			||||||
 | 
									m.desc.variableLabels.constrain(labelName, val),
 | 
				
			||||||
 | 
								})
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if l := len(oldCurry) + len(labels) - len(newCurry); l > 0 {
 | 
						if l := len(oldCurry) + len(labels) - len(newCurry); l > 0 {
 | 
				
			||||||
@@ -250,8 +236,8 @@ func (m *MetricVec) GetMetricWithLabelValues(lvs ...string) (Metric, error) {
 | 
				
			|||||||
// around MetricVec, implementing a vector for a specific Metric implementation,
 | 
					// around MetricVec, implementing a vector for a specific Metric implementation,
 | 
				
			||||||
// for example GaugeVec.
 | 
					// for example GaugeVec.
 | 
				
			||||||
func (m *MetricVec) GetMetricWith(labels Labels) (Metric, error) {
 | 
					func (m *MetricVec) GetMetricWith(labels Labels) (Metric, error) {
 | 
				
			||||||
	labels = constrainLabels(m.desc, labels)
 | 
						labels, closer := constrainLabels(m.desc, labels)
 | 
				
			||||||
	defer putLabelsToPool(labels)
 | 
						defer closer()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	h, err := m.hashLabels(labels)
 | 
						h, err := m.hashLabels(labels)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
@@ -262,7 +248,7 @@ func (m *MetricVec) GetMetricWith(labels Labels) (Metric, error) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (m *MetricVec) hashLabelValues(vals []string) (uint64, error) {
 | 
					func (m *MetricVec) hashLabelValues(vals []string) (uint64, error) {
 | 
				
			||||||
	if err := validateLabelValues(vals, len(m.desc.variableLabels)-len(m.curry)); err != nil {
 | 
						if err := validateLabelValues(vals, len(m.desc.variableLabels.names)-len(m.curry)); err != nil {
 | 
				
			||||||
		return 0, err
 | 
							return 0, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -271,7 +257,7 @@ func (m *MetricVec) hashLabelValues(vals []string) (uint64, error) {
 | 
				
			|||||||
		curry         = m.curry
 | 
							curry         = m.curry
 | 
				
			||||||
		iVals, iCurry int
 | 
							iVals, iCurry int
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
	for i := 0; i < len(m.desc.variableLabels); i++ {
 | 
						for i := 0; i < len(m.desc.variableLabels.names); i++ {
 | 
				
			||||||
		if iCurry < len(curry) && curry[iCurry].index == i {
 | 
							if iCurry < len(curry) && curry[iCurry].index == i {
 | 
				
			||||||
			h = m.hashAdd(h, curry[iCurry].value)
 | 
								h = m.hashAdd(h, curry[iCurry].value)
 | 
				
			||||||
			iCurry++
 | 
								iCurry++
 | 
				
			||||||
@@ -285,7 +271,7 @@ func (m *MetricVec) hashLabelValues(vals []string) (uint64, error) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (m *MetricVec) hashLabels(labels Labels) (uint64, error) {
 | 
					func (m *MetricVec) hashLabels(labels Labels) (uint64, error) {
 | 
				
			||||||
	if err := validateValuesInLabels(labels, len(m.desc.variableLabels)-len(m.curry)); err != nil {
 | 
						if err := validateValuesInLabels(labels, len(m.desc.variableLabels.names)-len(m.curry)); err != nil {
 | 
				
			||||||
		return 0, err
 | 
							return 0, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -294,17 +280,17 @@ func (m *MetricVec) hashLabels(labels Labels) (uint64, error) {
 | 
				
			|||||||
		curry  = m.curry
 | 
							curry  = m.curry
 | 
				
			||||||
		iCurry int
 | 
							iCurry int
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
	for i, label := range m.desc.variableLabels {
 | 
						for i, labelName := range m.desc.variableLabels.names {
 | 
				
			||||||
		val, ok := labels[label.Name]
 | 
							val, ok := labels[labelName]
 | 
				
			||||||
		if iCurry < len(curry) && curry[iCurry].index == i {
 | 
							if iCurry < len(curry) && curry[iCurry].index == i {
 | 
				
			||||||
			if ok {
 | 
								if ok {
 | 
				
			||||||
				return 0, fmt.Errorf("label name %q is already curried", label.Name)
 | 
									return 0, fmt.Errorf("label name %q is already curried", labelName)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			h = m.hashAdd(h, curry[iCurry].value)
 | 
								h = m.hashAdd(h, curry[iCurry].value)
 | 
				
			||||||
			iCurry++
 | 
								iCurry++
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			if !ok {
 | 
								if !ok {
 | 
				
			||||||
				return 0, fmt.Errorf("label name %q missing in label map", label.Name)
 | 
									return 0, fmt.Errorf("label name %q missing in label map", labelName)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			h = m.hashAdd(h, val)
 | 
								h = m.hashAdd(h, val)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -482,7 +468,7 @@ func valueMatchesVariableOrCurriedValue(targetValue string, index int, values []
 | 
				
			|||||||
func matchPartialLabels(desc *Desc, values []string, labels Labels, curry []curriedLabelValue) bool {
 | 
					func matchPartialLabels(desc *Desc, values []string, labels Labels, curry []curriedLabelValue) bool {
 | 
				
			||||||
	for l, v := range labels {
 | 
						for l, v := range labels {
 | 
				
			||||||
		// Check if the target label exists in our metrics and get the index.
 | 
							// Check if the target label exists in our metrics and get the index.
 | 
				
			||||||
		varLabelIndex, validLabel := indexOf(l, desc.variableLabels.labelNames())
 | 
							varLabelIndex, validLabel := indexOf(l, desc.variableLabels.names)
 | 
				
			||||||
		if validLabel {
 | 
							if validLabel {
 | 
				
			||||||
			// Check the value of that label against the target value.
 | 
								// Check the value of that label against the target value.
 | 
				
			||||||
			// We don't consider curried values in partial matches.
 | 
								// We don't consider curried values in partial matches.
 | 
				
			||||||
@@ -626,7 +612,7 @@ func matchLabels(desc *Desc, values []string, labels Labels, curry []curriedLabe
 | 
				
			|||||||
		return false
 | 
							return false
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	iCurry := 0
 | 
						iCurry := 0
 | 
				
			||||||
	for i, k := range desc.variableLabels {
 | 
						for i, k := range desc.variableLabels.names {
 | 
				
			||||||
		if iCurry < len(curry) && curry[iCurry].index == i {
 | 
							if iCurry < len(curry) && curry[iCurry].index == i {
 | 
				
			||||||
			if values[i] != curry[iCurry].value {
 | 
								if values[i] != curry[iCurry].value {
 | 
				
			||||||
				return false
 | 
									return false
 | 
				
			||||||
@@ -634,7 +620,7 @@ func matchLabels(desc *Desc, values []string, labels Labels, curry []curriedLabe
 | 
				
			|||||||
			iCurry++
 | 
								iCurry++
 | 
				
			||||||
			continue
 | 
								continue
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if values[i] != labels[k.Name] {
 | 
							if values[i] != labels[k] {
 | 
				
			||||||
			return false
 | 
								return false
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -644,13 +630,13 @@ func matchLabels(desc *Desc, values []string, labels Labels, curry []curriedLabe
 | 
				
			|||||||
func extractLabelValues(desc *Desc, labels Labels, curry []curriedLabelValue) []string {
 | 
					func extractLabelValues(desc *Desc, labels Labels, curry []curriedLabelValue) []string {
 | 
				
			||||||
	labelValues := make([]string, len(labels)+len(curry))
 | 
						labelValues := make([]string, len(labels)+len(curry))
 | 
				
			||||||
	iCurry := 0
 | 
						iCurry := 0
 | 
				
			||||||
	for i, k := range desc.variableLabels {
 | 
						for i, k := range desc.variableLabels.names {
 | 
				
			||||||
		if iCurry < len(curry) && curry[iCurry].index == i {
 | 
							if iCurry < len(curry) && curry[iCurry].index == i {
 | 
				
			||||||
			labelValues[i] = curry[iCurry].value
 | 
								labelValues[i] = curry[iCurry].value
 | 
				
			||||||
			iCurry++
 | 
								iCurry++
 | 
				
			||||||
			continue
 | 
								continue
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		labelValues[i] = labels[k.Name]
 | 
							labelValues[i] = labels[k]
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return labelValues
 | 
						return labelValues
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -670,20 +656,37 @@ func inlineLabelValues(lvs []string, curry []curriedLabelValue) []string {
 | 
				
			|||||||
	return labelValues
 | 
						return labelValues
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func constrainLabels(desc *Desc, labels Labels) Labels {
 | 
					var labelsPool = &sync.Pool{
 | 
				
			||||||
	constrainedLabels := getLabelsFromPool()
 | 
						New: func() interface{} {
 | 
				
			||||||
	for l, v := range labels {
 | 
							return make(Labels)
 | 
				
			||||||
		if i, ok := indexOf(l, desc.variableLabels.labelNames()); ok {
 | 
						},
 | 
				
			||||||
			v = desc.variableLabels[i].Constrain(v)
 | 
					}
 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		constrainedLabels[l] = v
 | 
					func constrainLabels(desc *Desc, labels Labels) (Labels, func()) {
 | 
				
			||||||
 | 
						if len(desc.variableLabels.labelConstraints) == 0 {
 | 
				
			||||||
 | 
							// Fast path when there's no constraints
 | 
				
			||||||
 | 
							return labels, func() {}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return constrainedLabels
 | 
						constrainedLabels := labelsPool.Get().(Labels)
 | 
				
			||||||
 | 
						for l, v := range labels {
 | 
				
			||||||
 | 
							constrainedLabels[l] = desc.variableLabels.constrain(l, v)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return constrainedLabels, func() {
 | 
				
			||||||
 | 
							for k := range constrainedLabels {
 | 
				
			||||||
 | 
								delete(constrainedLabels, k)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							labelsPool.Put(constrainedLabels)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func constrainLabelValues(desc *Desc, lvs []string, curry []curriedLabelValue) []string {
 | 
					func constrainLabelValues(desc *Desc, lvs []string, curry []curriedLabelValue) []string {
 | 
				
			||||||
 | 
						if len(desc.variableLabels.labelConstraints) == 0 {
 | 
				
			||||||
 | 
							// Fast path when there's no constraints
 | 
				
			||||||
 | 
							return lvs
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	constrainedValues := make([]string, len(lvs))
 | 
						constrainedValues := make([]string, len(lvs))
 | 
				
			||||||
	var iCurry, iLVs int
 | 
						var iCurry, iLVs int
 | 
				
			||||||
	for i := 0; i < len(lvs)+len(curry); i++ {
 | 
						for i := 0; i < len(lvs)+len(curry); i++ {
 | 
				
			||||||
@@ -692,8 +695,11 @@ func constrainLabelValues(desc *Desc, lvs []string, curry []curriedLabelValue) [
 | 
				
			|||||||
			continue
 | 
								continue
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if i < len(desc.variableLabels) {
 | 
							if i < len(desc.variableLabels.names) {
 | 
				
			||||||
			constrainedValues[iLVs] = desc.variableLabels[i].Constrain(lvs[iLVs])
 | 
								constrainedValues[iLVs] = desc.variableLabels.constrain(
 | 
				
			||||||
 | 
									desc.variableLabels.names[i],
 | 
				
			||||||
 | 
									lvs[iLVs],
 | 
				
			||||||
 | 
								)
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			constrainedValues[iLVs] = lvs[iLVs]
 | 
								constrainedValues[iLVs] = lvs[iLVs]
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										377
									
								
								vendor/github.com/prometheus/client_model/go/metrics.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										377
									
								
								vendor/github.com/prometheus/client_model/go/metrics.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -215,8 +215,9 @@ type Counter struct {
 | 
				
			|||||||
	sizeCache     protoimpl.SizeCache
 | 
						sizeCache     protoimpl.SizeCache
 | 
				
			||||||
	unknownFields protoimpl.UnknownFields
 | 
						unknownFields protoimpl.UnknownFields
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Value    *float64  `protobuf:"fixed64,1,opt,name=value" json:"value,omitempty"`
 | 
						Value            *float64               `protobuf:"fixed64,1,opt,name=value" json:"value,omitempty"`
 | 
				
			||||||
	Exemplar *Exemplar `protobuf:"bytes,2,opt,name=exemplar" json:"exemplar,omitempty"`
 | 
						Exemplar         *Exemplar              `protobuf:"bytes,2,opt,name=exemplar" json:"exemplar,omitempty"`
 | 
				
			||||||
 | 
						CreatedTimestamp *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_timestamp,json=createdTimestamp" json:"created_timestamp,omitempty"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *Counter) Reset() {
 | 
					func (x *Counter) Reset() {
 | 
				
			||||||
@@ -265,6 +266,13 @@ func (x *Counter) GetExemplar() *Exemplar {
 | 
				
			|||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *Counter) GetCreatedTimestamp() *timestamppb.Timestamp {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.CreatedTimestamp
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Quantile struct {
 | 
					type Quantile struct {
 | 
				
			||||||
	state         protoimpl.MessageState
 | 
						state         protoimpl.MessageState
 | 
				
			||||||
	sizeCache     protoimpl.SizeCache
 | 
						sizeCache     protoimpl.SizeCache
 | 
				
			||||||
@@ -325,9 +333,10 @@ type Summary struct {
 | 
				
			|||||||
	sizeCache     protoimpl.SizeCache
 | 
						sizeCache     protoimpl.SizeCache
 | 
				
			||||||
	unknownFields protoimpl.UnknownFields
 | 
						unknownFields protoimpl.UnknownFields
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	SampleCount *uint64     `protobuf:"varint,1,opt,name=sample_count,json=sampleCount" json:"sample_count,omitempty"`
 | 
						SampleCount      *uint64                `protobuf:"varint,1,opt,name=sample_count,json=sampleCount" json:"sample_count,omitempty"`
 | 
				
			||||||
	SampleSum   *float64    `protobuf:"fixed64,2,opt,name=sample_sum,json=sampleSum" json:"sample_sum,omitempty"`
 | 
						SampleSum        *float64               `protobuf:"fixed64,2,opt,name=sample_sum,json=sampleSum" json:"sample_sum,omitempty"`
 | 
				
			||||||
	Quantile    []*Quantile `protobuf:"bytes,3,rep,name=quantile" json:"quantile,omitempty"`
 | 
						Quantile         []*Quantile            `protobuf:"bytes,3,rep,name=quantile" json:"quantile,omitempty"`
 | 
				
			||||||
 | 
						CreatedTimestamp *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_timestamp,json=createdTimestamp" json:"created_timestamp,omitempty"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *Summary) Reset() {
 | 
					func (x *Summary) Reset() {
 | 
				
			||||||
@@ -383,6 +392,13 @@ func (x *Summary) GetQuantile() []*Quantile {
 | 
				
			|||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *Summary) GetCreatedTimestamp() *timestamppb.Timestamp {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.CreatedTimestamp
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Untyped struct {
 | 
					type Untyped struct {
 | 
				
			||||||
	state         protoimpl.MessageState
 | 
						state         protoimpl.MessageState
 | 
				
			||||||
	sizeCache     protoimpl.SizeCache
 | 
						sizeCache     protoimpl.SizeCache
 | 
				
			||||||
@@ -439,7 +455,8 @@ type Histogram struct {
 | 
				
			|||||||
	SampleCountFloat *float64 `protobuf:"fixed64,4,opt,name=sample_count_float,json=sampleCountFloat" json:"sample_count_float,omitempty"` // Overrides sample_count if > 0.
 | 
						SampleCountFloat *float64 `protobuf:"fixed64,4,opt,name=sample_count_float,json=sampleCountFloat" json:"sample_count_float,omitempty"` // Overrides sample_count if > 0.
 | 
				
			||||||
	SampleSum        *float64 `protobuf:"fixed64,2,opt,name=sample_sum,json=sampleSum" json:"sample_sum,omitempty"`
 | 
						SampleSum        *float64 `protobuf:"fixed64,2,opt,name=sample_sum,json=sampleSum" json:"sample_sum,omitempty"`
 | 
				
			||||||
	// Buckets for the conventional histogram.
 | 
						// Buckets for the conventional histogram.
 | 
				
			||||||
	Bucket []*Bucket `protobuf:"bytes,3,rep,name=bucket" json:"bucket,omitempty"` // Ordered in increasing order of upper_bound, +Inf bucket is optional.
 | 
						Bucket           []*Bucket              `protobuf:"bytes,3,rep,name=bucket" json:"bucket,omitempty"` // Ordered in increasing order of upper_bound, +Inf bucket is optional.
 | 
				
			||||||
 | 
						CreatedTimestamp *timestamppb.Timestamp `protobuf:"bytes,15,opt,name=created_timestamp,json=createdTimestamp" json:"created_timestamp,omitempty"`
 | 
				
			||||||
	// schema defines the bucket schema. Currently, valid numbers are -4 <= n <= 8.
 | 
						// schema defines the bucket schema. Currently, valid numbers are -4 <= n <= 8.
 | 
				
			||||||
	// They are all for base-2 bucket schemas, where 1 is a bucket boundary in each case, and
 | 
						// They are all for base-2 bucket schemas, where 1 is a bucket boundary in each case, and
 | 
				
			||||||
	// then each power of two is divided into 2^n logarithmic buckets.
 | 
						// then each power of two is divided into 2^n logarithmic buckets.
 | 
				
			||||||
@@ -457,12 +474,17 @@ type Histogram struct {
 | 
				
			|||||||
	NegativeDelta []int64   `protobuf:"zigzag64,10,rep,name=negative_delta,json=negativeDelta" json:"negative_delta,omitempty"` // Count delta of each bucket compared to previous one (or to zero for 1st bucket).
 | 
						NegativeDelta []int64   `protobuf:"zigzag64,10,rep,name=negative_delta,json=negativeDelta" json:"negative_delta,omitempty"` // Count delta of each bucket compared to previous one (or to zero for 1st bucket).
 | 
				
			||||||
	NegativeCount []float64 `protobuf:"fixed64,11,rep,name=negative_count,json=negativeCount" json:"negative_count,omitempty"`  // Absolute count of each bucket.
 | 
						NegativeCount []float64 `protobuf:"fixed64,11,rep,name=negative_count,json=negativeCount" json:"negative_count,omitempty"`  // Absolute count of each bucket.
 | 
				
			||||||
	// Positive buckets for the native histogram.
 | 
						// Positive buckets for the native histogram.
 | 
				
			||||||
 | 
						// Use a no-op span (offset 0, length 0) for a native histogram without any
 | 
				
			||||||
 | 
						// observations yet and with a zero_threshold of 0. Otherwise, it would be
 | 
				
			||||||
 | 
						// indistinguishable from a classic histogram.
 | 
				
			||||||
	PositiveSpan []*BucketSpan `protobuf:"bytes,12,rep,name=positive_span,json=positiveSpan" json:"positive_span,omitempty"`
 | 
						PositiveSpan []*BucketSpan `protobuf:"bytes,12,rep,name=positive_span,json=positiveSpan" json:"positive_span,omitempty"`
 | 
				
			||||||
	// Use either "positive_delta" or "positive_count", the former for
 | 
						// Use either "positive_delta" or "positive_count", the former for
 | 
				
			||||||
	// regular histograms with integer counts, the latter for float
 | 
						// regular histograms with integer counts, the latter for float
 | 
				
			||||||
	// histograms.
 | 
						// histograms.
 | 
				
			||||||
	PositiveDelta []int64   `protobuf:"zigzag64,13,rep,name=positive_delta,json=positiveDelta" json:"positive_delta,omitempty"` // Count delta of each bucket compared to previous one (or to zero for 1st bucket).
 | 
						PositiveDelta []int64   `protobuf:"zigzag64,13,rep,name=positive_delta,json=positiveDelta" json:"positive_delta,omitempty"` // Count delta of each bucket compared to previous one (or to zero for 1st bucket).
 | 
				
			||||||
	PositiveCount []float64 `protobuf:"fixed64,14,rep,name=positive_count,json=positiveCount" json:"positive_count,omitempty"`  // Absolute count of each bucket.
 | 
						PositiveCount []float64 `protobuf:"fixed64,14,rep,name=positive_count,json=positiveCount" json:"positive_count,omitempty"`  // Absolute count of each bucket.
 | 
				
			||||||
 | 
						// Only used for native histograms. These exemplars MUST have a timestamp.
 | 
				
			||||||
 | 
						Exemplars []*Exemplar `protobuf:"bytes,16,rep,name=exemplars" json:"exemplars,omitempty"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *Histogram) Reset() {
 | 
					func (x *Histogram) Reset() {
 | 
				
			||||||
@@ -525,6 +547,13 @@ func (x *Histogram) GetBucket() []*Bucket {
 | 
				
			|||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *Histogram) GetCreatedTimestamp() *timestamppb.Timestamp {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.CreatedTimestamp
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *Histogram) GetSchema() int32 {
 | 
					func (x *Histogram) GetSchema() int32 {
 | 
				
			||||||
	if x != nil && x.Schema != nil {
 | 
						if x != nil && x.Schema != nil {
 | 
				
			||||||
		return *x.Schema
 | 
							return *x.Schema
 | 
				
			||||||
@@ -595,6 +624,13 @@ func (x *Histogram) GetPositiveCount() []float64 {
 | 
				
			|||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *Histogram) GetExemplars() []*Exemplar {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Exemplars
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// A Bucket of a conventional histogram, each of which is treated as
 | 
					// A Bucket of a conventional histogram, each of which is treated as
 | 
				
			||||||
// an individual counter-like time series by Prometheus.
 | 
					// an individual counter-like time series by Prometheus.
 | 
				
			||||||
type Bucket struct {
 | 
					type Bucket struct {
 | 
				
			||||||
@@ -896,6 +932,7 @@ type MetricFamily struct {
 | 
				
			|||||||
	Help   *string     `protobuf:"bytes,2,opt,name=help" json:"help,omitempty"`
 | 
						Help   *string     `protobuf:"bytes,2,opt,name=help" json:"help,omitempty"`
 | 
				
			||||||
	Type   *MetricType `protobuf:"varint,3,opt,name=type,enum=io.prometheus.client.MetricType" json:"type,omitempty"`
 | 
						Type   *MetricType `protobuf:"varint,3,opt,name=type,enum=io.prometheus.client.MetricType" json:"type,omitempty"`
 | 
				
			||||||
	Metric []*Metric   `protobuf:"bytes,4,rep,name=metric" json:"metric,omitempty"`
 | 
						Metric []*Metric   `protobuf:"bytes,4,rep,name=metric" json:"metric,omitempty"`
 | 
				
			||||||
 | 
						Unit   *string     `protobuf:"bytes,5,opt,name=unit" json:"unit,omitempty"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *MetricFamily) Reset() {
 | 
					func (x *MetricFamily) Reset() {
 | 
				
			||||||
@@ -958,6 +995,13 @@ func (x *MetricFamily) GetMetric() []*Metric {
 | 
				
			|||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *MetricFamily) GetUnit() string {
 | 
				
			||||||
 | 
						if x != nil && x.Unit != nil {
 | 
				
			||||||
 | 
							return *x.Unit
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return ""
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var File_io_prometheus_client_metrics_proto protoreflect.FileDescriptor
 | 
					var File_io_prometheus_client_metrics_proto protoreflect.FileDescriptor
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var file_io_prometheus_client_metrics_proto_rawDesc = []byte{
 | 
					var file_io_prometheus_client_metrics_proto_rawDesc = []byte{
 | 
				
			||||||
@@ -972,137 +1016,156 @@ var file_io_prometheus_client_metrics_proto_rawDesc = []byte{
 | 
				
			|||||||
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c,
 | 
						0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c,
 | 
				
			||||||
	0x75, 0x65, 0x22, 0x1d, 0x0a, 0x05, 0x47, 0x61, 0x75, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76,
 | 
						0x75, 0x65, 0x22, 0x1d, 0x0a, 0x05, 0x47, 0x61, 0x75, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76,
 | 
				
			||||||
	0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
 | 
						0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
 | 
				
			||||||
	0x65, 0x22, 0x5b, 0x0a, 0x07, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05,
 | 
						0x65, 0x22, 0xa4, 0x01, 0x0a, 0x07, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a,
 | 
				
			||||||
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c,
 | 
						0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61,
 | 
				
			||||||
	0x75, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x78, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x72, 0x18, 0x02,
 | 
						0x6c, 0x75, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x78, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x72, 0x18,
 | 
				
			||||||
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x6d, 0x65, 0x74,
 | 
						0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x6d, 0x65,
 | 
				
			||||||
	0x68, 0x65, 0x75, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x78, 0x65, 0x6d,
 | 
						0x74, 0x68, 0x65, 0x75, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x78, 0x65,
 | 
				
			||||||
	0x70, 0x6c, 0x61, 0x72, 0x52, 0x08, 0x65, 0x78, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x72, 0x22, 0x3c,
 | 
						0x6d, 0x70, 0x6c, 0x61, 0x72, 0x52, 0x08, 0x65, 0x78, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x72, 0x12,
 | 
				
			||||||
	0x0a, 0x08, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x71, 0x75,
 | 
						0x47, 0x0a, 0x11, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73,
 | 
				
			||||||
	0x61, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x71, 0x75,
 | 
						0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
 | 
				
			||||||
	0x61, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
 | 
						0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
 | 
				
			||||||
	0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x87, 0x01, 0x0a,
 | 
						0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x10, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54,
 | 
				
			||||||
	0x07, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x61, 0x6d, 0x70,
 | 
						0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x3c, 0x0a, 0x08, 0x51, 0x75, 0x61, 0x6e,
 | 
				
			||||||
 | 
						0x74, 0x69, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x6c, 0x65,
 | 
				
			||||||
 | 
						0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x6c, 0x65,
 | 
				
			||||||
 | 
						0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52,
 | 
				
			||||||
 | 
						0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xd0, 0x01, 0x0a, 0x07, 0x53, 0x75, 0x6d, 0x6d, 0x61,
 | 
				
			||||||
 | 
						0x72, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x75,
 | 
				
			||||||
 | 
						0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65,
 | 
				
			||||||
 | 
						0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f,
 | 
				
			||||||
 | 
						0x73, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x73, 0x61, 0x6d, 0x70, 0x6c,
 | 
				
			||||||
 | 
						0x65, 0x53, 0x75, 0x6d, 0x12, 0x3a, 0x0a, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x6c, 0x65,
 | 
				
			||||||
 | 
						0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x6d,
 | 
				
			||||||
 | 
						0x65, 0x74, 0x68, 0x65, 0x75, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x51, 0x75,
 | 
				
			||||||
 | 
						0x61, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x52, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x6c, 0x65,
 | 
				
			||||||
 | 
						0x12, 0x47, 0x0a, 0x11, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65,
 | 
				
			||||||
 | 
						0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 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, 0x10, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64,
 | 
				
			||||||
 | 
						0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x1f, 0x0a, 0x07, 0x55, 0x6e, 0x74,
 | 
				
			||||||
 | 
						0x79, 0x70, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20,
 | 
				
			||||||
 | 
						0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xea, 0x05, 0x0a, 0x09, 0x48,
 | 
				
			||||||
 | 
						0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x61, 0x6d, 0x70,
 | 
				
			||||||
	0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b,
 | 
						0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b,
 | 
				
			||||||
	0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73,
 | 
						0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x73,
 | 
				
			||||||
	0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52,
 | 
						0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x61,
 | 
				
			||||||
	0x09, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x53, 0x75, 0x6d, 0x12, 0x3a, 0x0a, 0x08, 0x71, 0x75,
 | 
						0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x43,
 | 
				
			||||||
	0x61, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69,
 | 
						0x6f, 0x75, 0x6e, 0x74, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x61, 0x6d,
 | 
				
			||||||
	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x6d, 0x65, 0x74, 0x68, 0x65, 0x75, 0x73, 0x2e, 0x63, 0x6c, 0x69,
 | 
						0x70, 0x6c, 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x73,
 | 
				
			||||||
	0x65, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x52, 0x08, 0x71, 0x75,
 | 
						0x61, 0x6d, 0x70, 0x6c, 0x65, 0x53, 0x75, 0x6d, 0x12, 0x34, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b,
 | 
				
			||||||
	0x61, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x22, 0x1f, 0x0a, 0x07, 0x55, 0x6e, 0x74, 0x79, 0x70, 0x65,
 | 
						0x65, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x69, 0x6f, 0x2e, 0x70, 0x72,
 | 
				
			||||||
	0x64, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01,
 | 
						0x6f, 0x6d, 0x65, 0x74, 0x68, 0x65, 0x75, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e,
 | 
				
			||||||
	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xe3, 0x04, 0x0a, 0x09, 0x48, 0x69, 0x73, 0x74,
 | 
						0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x47,
 | 
				
			||||||
	0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f,
 | 
						0x0a, 0x11, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
 | 
				
			||||||
	0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x73, 0x61, 0x6d,
 | 
						0x61, 0x6d, 0x70, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
 | 
				
			||||||
	0x70, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x73, 0x61, 0x6d, 0x70,
 | 
						0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
 | 
				
			||||||
	0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x04,
 | 
						0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x10, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69,
 | 
				
			||||||
	0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e,
 | 
						0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d,
 | 
				
			||||||
	0x74, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65,
 | 
						0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x11, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12,
 | 
				
			||||||
	0x5f, 0x73, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x73, 0x61, 0x6d, 0x70,
 | 
						0x25, 0x0a, 0x0e, 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c,
 | 
				
			||||||
	0x6c, 0x65, 0x53, 0x75, 0x6d, 0x12, 0x34, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18,
 | 
						0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0d, 0x7a, 0x65, 0x72, 0x6f, 0x54, 0x68, 0x72,
 | 
				
			||||||
	0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x69, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x6d, 0x65,
 | 
						0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x63,
 | 
				
			||||||
	0x74, 0x68, 0x65, 0x75, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x42, 0x75, 0x63,
 | 
						0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x7a, 0x65, 0x72, 0x6f,
 | 
				
			||||||
	0x6b, 0x65, 0x74, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73,
 | 
						0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x63, 0x6f,
 | 
				
			||||||
	0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x11, 0x52, 0x06, 0x73, 0x63, 0x68,
 | 
						0x75, 0x6e, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52,
 | 
				
			||||||
	0x65, 0x6d, 0x61, 0x12, 0x25, 0x0a, 0x0e, 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x74, 0x68, 0x72, 0x65,
 | 
						0x0e, 0x7a, 0x65, 0x72, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12,
 | 
				
			||||||
	0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0d, 0x7a, 0x65, 0x72,
 | 
						0x45, 0x0a, 0x0d, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x6e,
 | 
				
			||||||
	0x6f, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x7a, 0x65,
 | 
						0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x69, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x6d,
 | 
				
			||||||
	0x72, 0x6f, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09,
 | 
						0x65, 0x74, 0x68, 0x65, 0x75, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x42, 0x75,
 | 
				
			||||||
	0x7a, 0x65, 0x72, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x7a, 0x65, 0x72,
 | 
						0x63, 0x6b, 0x65, 0x74, 0x53, 0x70, 0x61, 0x6e, 0x52, 0x0c, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69,
 | 
				
			||||||
	0x6f, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x08, 0x20,
 | 
						0x76, 0x65, 0x53, 0x70, 0x61, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69,
 | 
				
			||||||
	0x01, 0x28, 0x01, 0x52, 0x0e, 0x7a, 0x65, 0x72, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x6c,
 | 
						0x76, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x12, 0x52, 0x0d,
 | 
				
			||||||
	0x6f, 0x61, 0x74, 0x12, 0x45, 0x0a, 0x0d, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f,
 | 
						0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x12, 0x25, 0x0a,
 | 
				
			||||||
	0x73, 0x70, 0x61, 0x6e, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x69, 0x6f, 0x2e,
 | 
						0x0e, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18,
 | 
				
			||||||
	0x70, 0x72, 0x6f, 0x6d, 0x65, 0x74, 0x68, 0x65, 0x75, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e,
 | 
						0x0b, 0x20, 0x03, 0x28, 0x01, 0x52, 0x0d, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x43,
 | 
				
			||||||
	0x74, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x70, 0x61, 0x6e, 0x52, 0x0c, 0x6e, 0x65,
 | 
						0x6f, 0x75, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x0d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65,
 | 
				
			||||||
	0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x53, 0x70, 0x61, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x6e, 0x65,
 | 
						0x5f, 0x73, 0x70, 0x61, 0x6e, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x69, 0x6f,
 | 
				
			||||||
	0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x18, 0x0a, 0x20, 0x03,
 | 
					 | 
				
			||||||
	0x28, 0x12, 0x52, 0x0d, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x6c, 0x74,
 | 
					 | 
				
			||||||
	0x61, 0x12, 0x25, 0x0a, 0x0e, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f,
 | 
					 | 
				
			||||||
	0x75, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x01, 0x52, 0x0d, 0x6e, 0x65, 0x67, 0x61, 0x74,
 | 
					 | 
				
			||||||
	0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x0d, 0x70, 0x6f, 0x73, 0x69,
 | 
					 | 
				
			||||||
	0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x6e, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32,
 | 
					 | 
				
			||||||
	0x20, 0x2e, 0x69, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x6d, 0x65, 0x74, 0x68, 0x65, 0x75, 0x73, 0x2e,
 | 
					 | 
				
			||||||
	0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x70, 0x61,
 | 
					 | 
				
			||||||
	0x6e, 0x52, 0x0c, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x53, 0x70, 0x61, 0x6e, 0x12,
 | 
					 | 
				
			||||||
	0x25, 0x0a, 0x0e, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x74,
 | 
					 | 
				
			||||||
	0x61, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x12, 0x52, 0x0d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76,
 | 
					 | 
				
			||||||
	0x65, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69,
 | 
					 | 
				
			||||||
	0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x01, 0x52, 0x0d,
 | 
					 | 
				
			||||||
	0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xc6, 0x01,
 | 
					 | 
				
			||||||
	0x0a, 0x06, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x75, 0x6d, 0x75,
 | 
					 | 
				
			||||||
	0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01,
 | 
					 | 
				
			||||||
	0x28, 0x04, 0x52, 0x0f, 0x63, 0x75, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f,
 | 
					 | 
				
			||||||
	0x75, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x16, 0x63, 0x75, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x76,
 | 
					 | 
				
			||||||
	0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x04, 0x20,
 | 
					 | 
				
			||||||
	0x01, 0x28, 0x01, 0x52, 0x14, 0x63, 0x75, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x43,
 | 
					 | 
				
			||||||
	0x6f, 0x75, 0x6e, 0x74, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x75, 0x70, 0x70,
 | 
					 | 
				
			||||||
	0x65, 0x72, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a,
 | 
					 | 
				
			||||||
	0x75, 0x70, 0x70, 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x78,
 | 
					 | 
				
			||||||
	0x65, 0x6d, 0x70, 0x6c, 0x61, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69,
 | 
					 | 
				
			||||||
	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x6d, 0x65, 0x74, 0x68, 0x65, 0x75, 0x73, 0x2e, 0x63, 0x6c, 0x69,
 | 
					 | 
				
			||||||
	0x65, 0x6e, 0x74, 0x2e, 0x45, 0x78, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x72, 0x52, 0x08, 0x65, 0x78,
 | 
					 | 
				
			||||||
	0x65, 0x6d, 0x70, 0x6c, 0x61, 0x72, 0x22, 0x3c, 0x0a, 0x0a, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74,
 | 
					 | 
				
			||||||
	0x53, 0x70, 0x61, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x01,
 | 
					 | 
				
			||||||
	0x20, 0x01, 0x28, 0x11, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06,
 | 
					 | 
				
			||||||
	0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6c, 0x65,
 | 
					 | 
				
			||||||
	0x6e, 0x67, 0x74, 0x68, 0x22, 0x91, 0x01, 0x0a, 0x08, 0x45, 0x78, 0x65, 0x6d, 0x70, 0x6c, 0x61,
 | 
					 | 
				
			||||||
	0x72, 0x12, 0x35, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
 | 
					 | 
				
			||||||
	0x32, 0x1f, 0x2e, 0x69, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x6d, 0x65, 0x74, 0x68, 0x65, 0x75, 0x73,
 | 
					 | 
				
			||||||
	0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x50, 0x61, 0x69,
 | 
					 | 
				
			||||||
	0x72, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
 | 
					 | 
				
			||||||
	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x38,
 | 
					 | 
				
			||||||
	0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 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, 0x22, 0xff, 0x02, 0x0a, 0x06, 0x4d, 0x65, 0x74,
 | 
					 | 
				
			||||||
	0x72, 0x69, 0x63, 0x12, 0x35, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x03,
 | 
					 | 
				
			||||||
	0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x69, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x6d, 0x65, 0x74, 0x68, 0x65,
 | 
					 | 
				
			||||||
	0x75, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x50,
 | 
					 | 
				
			||||||
	0x61, 0x69, 0x72, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x31, 0x0a, 0x05, 0x67, 0x61,
 | 
					 | 
				
			||||||
	0x75, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x69, 0x6f, 0x2e, 0x70,
 | 
					 | 
				
			||||||
	0x72, 0x6f, 0x6d, 0x65, 0x74, 0x68, 0x65, 0x75, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74,
 | 
					 | 
				
			||||||
	0x2e, 0x47, 0x61, 0x75, 0x67, 0x65, 0x52, 0x05, 0x67, 0x61, 0x75, 0x67, 0x65, 0x12, 0x37, 0x0a,
 | 
					 | 
				
			||||||
	0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d,
 | 
					 | 
				
			||||||
	0x2e, 0x69, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x6d, 0x65, 0x74, 0x68, 0x65, 0x75, 0x73, 0x2e, 0x63,
 | 
					 | 
				
			||||||
	0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63,
 | 
					 | 
				
			||||||
	0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x37, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72,
 | 
					 | 
				
			||||||
	0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x69, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
 | 
					 | 
				
			||||||
	0x6d, 0x65, 0x74, 0x68, 0x65, 0x75, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x53,
 | 
					 | 
				
			||||||
	0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12,
 | 
					 | 
				
			||||||
	0x37, 0x0a, 0x07, 0x75, 0x6e, 0x74, 0x79, 0x70, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b,
 | 
					 | 
				
			||||||
	0x32, 0x1d, 0x2e, 0x69, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x6d, 0x65, 0x74, 0x68, 0x65, 0x75, 0x73,
 | 
					 | 
				
			||||||
	0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x55, 0x6e, 0x74, 0x79, 0x70, 0x65, 0x64, 0x52,
 | 
					 | 
				
			||||||
	0x07, 0x75, 0x6e, 0x74, 0x79, 0x70, 0x65, 0x64, 0x12, 0x3d, 0x0a, 0x09, 0x68, 0x69, 0x73, 0x74,
 | 
					 | 
				
			||||||
	0x6f, 0x67, 0x72, 0x61, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x69, 0x6f,
 | 
					 | 
				
			||||||
	0x2e, 0x70, 0x72, 0x6f, 0x6d, 0x65, 0x74, 0x68, 0x65, 0x75, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65,
 | 
						0x2e, 0x70, 0x72, 0x6f, 0x6d, 0x65, 0x74, 0x68, 0x65, 0x75, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65,
 | 
				
			||||||
	0x6e, 0x74, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x09, 0x68, 0x69,
 | 
						0x6e, 0x74, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x70, 0x61, 0x6e, 0x52, 0x0c, 0x70,
 | 
				
			||||||
	0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x69, 0x6d, 0x65, 0x73,
 | 
						0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x53, 0x70, 0x61, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x70,
 | 
				
			||||||
	0x74, 0x61, 0x6d, 0x70, 0x5f, 0x6d, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x74,
 | 
						0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x18, 0x0d, 0x20,
 | 
				
			||||||
	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x4d, 0x73, 0x22, 0xa2, 0x01, 0x0a, 0x0c, 0x4d,
 | 
						0x03, 0x28, 0x12, 0x52, 0x0d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x6c,
 | 
				
			||||||
	0x65, 0x74, 0x72, 0x69, 0x63, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e,
 | 
						0x74, 0x61, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63,
 | 
				
			||||||
	0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
 | 
						0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x01, 0x52, 0x0d, 0x70, 0x6f, 0x73, 0x69,
 | 
				
			||||||
	0x12, 0x0a, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68,
 | 
						0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3c, 0x0a, 0x09, 0x65, 0x78, 0x65,
 | 
				
			||||||
	0x65, 0x6c, 0x70, 0x12, 0x34, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
 | 
						0x6d, 0x70, 0x6c, 0x61, 0x72, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69,
 | 
				
			||||||
	0x0e, 0x32, 0x20, 0x2e, 0x69, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x6d, 0x65, 0x74, 0x68, 0x65, 0x75,
 | 
						0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x6d, 0x65, 0x74, 0x68, 0x65, 0x75, 0x73, 0x2e, 0x63, 0x6c, 0x69,
 | 
				
			||||||
	0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54,
 | 
						0x65, 0x6e, 0x74, 0x2e, 0x45, 0x78, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x72, 0x52, 0x09, 0x65, 0x78,
 | 
				
			||||||
	0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x34, 0x0a, 0x06, 0x6d, 0x65, 0x74,
 | 
						0x65, 0x6d, 0x70, 0x6c, 0x61, 0x72, 0x73, 0x22, 0xc6, 0x01, 0x0a, 0x06, 0x42, 0x75, 0x63, 0x6b,
 | 
				
			||||||
	0x72, 0x69, 0x63, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x69, 0x6f, 0x2e, 0x70,
 | 
						0x65, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x75, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65,
 | 
				
			||||||
	0x72, 0x6f, 0x6d, 0x65, 0x74, 0x68, 0x65, 0x75, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74,
 | 
						0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x63, 0x75,
 | 
				
			||||||
	0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2a,
 | 
						0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x34, 0x0a,
 | 
				
			||||||
	0x62, 0x0a, 0x0a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a,
 | 
						0x16, 0x63, 0x75, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e,
 | 
				
			||||||
	0x07, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x47, 0x41,
 | 
						0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x14, 0x63,
 | 
				
			||||||
	0x55, 0x47, 0x45, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x4d, 0x4d, 0x41, 0x52, 0x59,
 | 
						0x75, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x6c,
 | 
				
			||||||
	0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x54, 0x59, 0x50, 0x45, 0x44, 0x10, 0x03, 0x12,
 | 
						0x6f, 0x61, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x75, 0x70, 0x70, 0x65, 0x72, 0x5f, 0x62, 0x6f, 0x75,
 | 
				
			||||||
	0x0d, 0x0a, 0x09, 0x48, 0x49, 0x53, 0x54, 0x4f, 0x47, 0x52, 0x41, 0x4d, 0x10, 0x04, 0x12, 0x13,
 | 
						0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x75, 0x70, 0x70, 0x65, 0x72, 0x42,
 | 
				
			||||||
	0x0a, 0x0f, 0x47, 0x41, 0x55, 0x47, 0x45, 0x5f, 0x48, 0x49, 0x53, 0x54, 0x4f, 0x47, 0x52, 0x41,
 | 
						0x6f, 0x75, 0x6e, 0x64, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x78, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x72,
 | 
				
			||||||
	0x4d, 0x10, 0x05, 0x42, 0x52, 0x0a, 0x14, 0x69, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x6d, 0x65, 0x74,
 | 
						0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x6d,
 | 
				
			||||||
	0x68, 0x65, 0x75, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5a, 0x3a, 0x67, 0x69, 0x74,
 | 
						0x65, 0x74, 0x68, 0x65, 0x75, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x78,
 | 
				
			||||||
	0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x72, 0x6f, 0x6d, 0x65, 0x74, 0x68, 0x65,
 | 
						0x65, 0x6d, 0x70, 0x6c, 0x61, 0x72, 0x52, 0x08, 0x65, 0x78, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x72,
 | 
				
			||||||
	0x75, 0x73, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2f,
 | 
						0x22, 0x3c, 0x0a, 0x0a, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x70, 0x61, 0x6e, 0x12, 0x16,
 | 
				
			||||||
	0x67, 0x6f, 0x3b, 0x69, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x65, 0x74, 0x68, 0x65, 0x75, 0x73,
 | 
						0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x11, 0x52, 0x06,
 | 
				
			||||||
	0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74,
 | 
						0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68,
 | 
				
			||||||
 | 
						0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x91,
 | 
				
			||||||
 | 
						0x01, 0x0a, 0x08, 0x45, 0x78, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x72, 0x12, 0x35, 0x0a, 0x05, 0x6c,
 | 
				
			||||||
 | 
						0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x69, 0x6f, 0x2e,
 | 
				
			||||||
 | 
						0x70, 0x72, 0x6f, 0x6d, 0x65, 0x74, 0x68, 0x65, 0x75, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e,
 | 
				
			||||||
 | 
						0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x50, 0x61, 0x69, 0x72, 0x52, 0x05, 0x6c, 0x61, 0x62,
 | 
				
			||||||
 | 
						0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
 | 
				
			||||||
 | 
						0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65,
 | 
				
			||||||
 | 
						0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 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, 0x22, 0xff, 0x02, 0x0a, 0x06, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x35, 0x0a,
 | 
				
			||||||
 | 
						0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x69,
 | 
				
			||||||
 | 
						0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x6d, 0x65, 0x74, 0x68, 0x65, 0x75, 0x73, 0x2e, 0x63, 0x6c, 0x69,
 | 
				
			||||||
 | 
						0x65, 0x6e, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x50, 0x61, 0x69, 0x72, 0x52, 0x05, 0x6c,
 | 
				
			||||||
 | 
						0x61, 0x62, 0x65, 0x6c, 0x12, 0x31, 0x0a, 0x05, 0x67, 0x61, 0x75, 0x67, 0x65, 0x18, 0x02, 0x20,
 | 
				
			||||||
 | 
						0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x69, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x6d, 0x65, 0x74, 0x68,
 | 
				
			||||||
 | 
						0x65, 0x75, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x61, 0x75, 0x67, 0x65,
 | 
				
			||||||
 | 
						0x52, 0x05, 0x67, 0x61, 0x75, 0x67, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74,
 | 
				
			||||||
 | 
						0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x69, 0x6f, 0x2e, 0x70, 0x72,
 | 
				
			||||||
 | 
						0x6f, 0x6d, 0x65, 0x74, 0x68, 0x65, 0x75, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e,
 | 
				
			||||||
 | 
						0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72,
 | 
				
			||||||
 | 
						0x12, 0x37, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28,
 | 
				
			||||||
 | 
						0x0b, 0x32, 0x1d, 0x2e, 0x69, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x6d, 0x65, 0x74, 0x68, 0x65, 0x75,
 | 
				
			||||||
 | 
						0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79,
 | 
				
			||||||
 | 
						0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x37, 0x0a, 0x07, 0x75, 0x6e, 0x74,
 | 
				
			||||||
 | 
						0x79, 0x70, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x69, 0x6f, 0x2e,
 | 
				
			||||||
 | 
						0x70, 0x72, 0x6f, 0x6d, 0x65, 0x74, 0x68, 0x65, 0x75, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e,
 | 
				
			||||||
 | 
						0x74, 0x2e, 0x55, 0x6e, 0x74, 0x79, 0x70, 0x65, 0x64, 0x52, 0x07, 0x75, 0x6e, 0x74, 0x79, 0x70,
 | 
				
			||||||
 | 
						0x65, 0x64, 0x12, 0x3d, 0x0a, 0x09, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x18,
 | 
				
			||||||
 | 
						0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x69, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x6d, 0x65,
 | 
				
			||||||
 | 
						0x74, 0x68, 0x65, 0x75, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x48, 0x69, 0x73,
 | 
				
			||||||
 | 
						0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x09, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61,
 | 
				
			||||||
 | 
						0x6d, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x6d,
 | 
				
			||||||
 | 
						0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
 | 
				
			||||||
 | 
						0x6d, 0x70, 0x4d, 0x73, 0x22, 0xb6, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x46,
 | 
				
			||||||
 | 
						0x61, 0x6d, 0x69, 0x6c, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
 | 
				
			||||||
 | 
						0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x65, 0x6c,
 | 
				
			||||||
 | 
						0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x65, 0x6c, 0x70, 0x12, 0x34, 0x0a,
 | 
				
			||||||
 | 
						0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x69, 0x6f,
 | 
				
			||||||
 | 
						0x2e, 0x70, 0x72, 0x6f, 0x6d, 0x65, 0x74, 0x68, 0x65, 0x75, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65,
 | 
				
			||||||
 | 
						0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74,
 | 
				
			||||||
 | 
						0x79, 0x70, 0x65, 0x12, 0x34, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x04, 0x20,
 | 
				
			||||||
 | 
						0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x69, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x6d, 0x65, 0x74, 0x68,
 | 
				
			||||||
 | 
						0x65, 0x75, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69,
 | 
				
			||||||
 | 
						0x63, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x6e, 0x69,
 | 
				
			||||||
 | 
						0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x2a, 0x62, 0x0a,
 | 
				
			||||||
 | 
						0x0a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x43,
 | 
				
			||||||
 | 
						0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x47, 0x41, 0x55, 0x47,
 | 
				
			||||||
 | 
						0x45, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x4d, 0x4d, 0x41, 0x52, 0x59, 0x10, 0x02,
 | 
				
			||||||
 | 
						0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x54, 0x59, 0x50, 0x45, 0x44, 0x10, 0x03, 0x12, 0x0d, 0x0a,
 | 
				
			||||||
 | 
						0x09, 0x48, 0x49, 0x53, 0x54, 0x4f, 0x47, 0x52, 0x41, 0x4d, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f,
 | 
				
			||||||
 | 
						0x47, 0x41, 0x55, 0x47, 0x45, 0x5f, 0x48, 0x49, 0x53, 0x54, 0x4f, 0x47, 0x52, 0x41, 0x4d, 0x10,
 | 
				
			||||||
 | 
						0x05, 0x42, 0x52, 0x0a, 0x14, 0x69, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x6d, 0x65, 0x74, 0x68, 0x65,
 | 
				
			||||||
 | 
						0x75, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5a, 0x3a, 0x67, 0x69, 0x74, 0x68, 0x75,
 | 
				
			||||||
 | 
						0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x72, 0x6f, 0x6d, 0x65, 0x74, 0x68, 0x65, 0x75, 0x73,
 | 
				
			||||||
 | 
						0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2f, 0x67, 0x6f,
 | 
				
			||||||
 | 
						0x3b, 0x69, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x65, 0x74, 0x68, 0x65, 0x75, 0x73, 0x5f, 0x63,
 | 
				
			||||||
 | 
						0x6c, 0x69, 0x65, 0x6e, 0x74,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var (
 | 
					var (
 | 
				
			||||||
@@ -1137,26 +1200,30 @@ var file_io_prometheus_client_metrics_proto_goTypes = []interface{}{
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
var file_io_prometheus_client_metrics_proto_depIdxs = []int32{
 | 
					var file_io_prometheus_client_metrics_proto_depIdxs = []int32{
 | 
				
			||||||
	10, // 0: io.prometheus.client.Counter.exemplar:type_name -> io.prometheus.client.Exemplar
 | 
						10, // 0: io.prometheus.client.Counter.exemplar:type_name -> io.prometheus.client.Exemplar
 | 
				
			||||||
	4,  // 1: io.prometheus.client.Summary.quantile:type_name -> io.prometheus.client.Quantile
 | 
						13, // 1: io.prometheus.client.Counter.created_timestamp:type_name -> google.protobuf.Timestamp
 | 
				
			||||||
	8,  // 2: io.prometheus.client.Histogram.bucket:type_name -> io.prometheus.client.Bucket
 | 
						4,  // 2: io.prometheus.client.Summary.quantile:type_name -> io.prometheus.client.Quantile
 | 
				
			||||||
	9,  // 3: io.prometheus.client.Histogram.negative_span:type_name -> io.prometheus.client.BucketSpan
 | 
						13, // 3: io.prometheus.client.Summary.created_timestamp:type_name -> google.protobuf.Timestamp
 | 
				
			||||||
	9,  // 4: io.prometheus.client.Histogram.positive_span:type_name -> io.prometheus.client.BucketSpan
 | 
						8,  // 4: io.prometheus.client.Histogram.bucket:type_name -> io.prometheus.client.Bucket
 | 
				
			||||||
	10, // 5: io.prometheus.client.Bucket.exemplar:type_name -> io.prometheus.client.Exemplar
 | 
						13, // 5: io.prometheus.client.Histogram.created_timestamp:type_name -> google.protobuf.Timestamp
 | 
				
			||||||
	1,  // 6: io.prometheus.client.Exemplar.label:type_name -> io.prometheus.client.LabelPair
 | 
						9,  // 6: io.prometheus.client.Histogram.negative_span:type_name -> io.prometheus.client.BucketSpan
 | 
				
			||||||
	13, // 7: io.prometheus.client.Exemplar.timestamp:type_name -> google.protobuf.Timestamp
 | 
						9,  // 7: io.prometheus.client.Histogram.positive_span:type_name -> io.prometheus.client.BucketSpan
 | 
				
			||||||
	1,  // 8: io.prometheus.client.Metric.label:type_name -> io.prometheus.client.LabelPair
 | 
						10, // 8: io.prometheus.client.Histogram.exemplars:type_name -> io.prometheus.client.Exemplar
 | 
				
			||||||
	2,  // 9: io.prometheus.client.Metric.gauge:type_name -> io.prometheus.client.Gauge
 | 
						10, // 9: io.prometheus.client.Bucket.exemplar:type_name -> io.prometheus.client.Exemplar
 | 
				
			||||||
	3,  // 10: io.prometheus.client.Metric.counter:type_name -> io.prometheus.client.Counter
 | 
						1,  // 10: io.prometheus.client.Exemplar.label:type_name -> io.prometheus.client.LabelPair
 | 
				
			||||||
	5,  // 11: io.prometheus.client.Metric.summary:type_name -> io.prometheus.client.Summary
 | 
						13, // 11: io.prometheus.client.Exemplar.timestamp:type_name -> google.protobuf.Timestamp
 | 
				
			||||||
	6,  // 12: io.prometheus.client.Metric.untyped:type_name -> io.prometheus.client.Untyped
 | 
						1,  // 12: io.prometheus.client.Metric.label:type_name -> io.prometheus.client.LabelPair
 | 
				
			||||||
	7,  // 13: io.prometheus.client.Metric.histogram:type_name -> io.prometheus.client.Histogram
 | 
						2,  // 13: io.prometheus.client.Metric.gauge:type_name -> io.prometheus.client.Gauge
 | 
				
			||||||
	0,  // 14: io.prometheus.client.MetricFamily.type:type_name -> io.prometheus.client.MetricType
 | 
						3,  // 14: io.prometheus.client.Metric.counter:type_name -> io.prometheus.client.Counter
 | 
				
			||||||
	11, // 15: io.prometheus.client.MetricFamily.metric:type_name -> io.prometheus.client.Metric
 | 
						5,  // 15: io.prometheus.client.Metric.summary:type_name -> io.prometheus.client.Summary
 | 
				
			||||||
	16, // [16:16] is the sub-list for method output_type
 | 
						6,  // 16: io.prometheus.client.Metric.untyped:type_name -> io.prometheus.client.Untyped
 | 
				
			||||||
	16, // [16:16] is the sub-list for method input_type
 | 
						7,  // 17: io.prometheus.client.Metric.histogram:type_name -> io.prometheus.client.Histogram
 | 
				
			||||||
	16, // [16:16] is the sub-list for extension type_name
 | 
						0,  // 18: io.prometheus.client.MetricFamily.type:type_name -> io.prometheus.client.MetricType
 | 
				
			||||||
	16, // [16:16] is the sub-list for extension extendee
 | 
						11, // 19: io.prometheus.client.MetricFamily.metric:type_name -> io.prometheus.client.Metric
 | 
				
			||||||
	0,  // [0:16] is the sub-list for field type_name
 | 
						20, // [20:20] is the sub-list for method output_type
 | 
				
			||||||
 | 
						20, // [20:20] is the sub-list for method input_type
 | 
				
			||||||
 | 
						20, // [20:20] is the sub-list for extension type_name
 | 
				
			||||||
 | 
						20, // [20:20] is the sub-list for extension extendee
 | 
				
			||||||
 | 
						0,  // [0:20] is the sub-list for field type_name
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func init() { file_io_prometheus_client_metrics_proto_init() }
 | 
					func init() { file_io_prometheus_client_metrics_proto_init() }
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										27
									
								
								vendor/github.com/prometheus/common/expfmt/decode.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										27
									
								
								vendor/github.com/prometheus/common/expfmt/decode.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -14,6 +14,7 @@
 | 
				
			|||||||
package expfmt
 | 
					package expfmt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"bufio"
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"io"
 | 
						"io"
 | 
				
			||||||
	"math"
 | 
						"math"
 | 
				
			||||||
@@ -21,8 +22,8 @@ import (
 | 
				
			|||||||
	"net/http"
 | 
						"net/http"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	dto "github.com/prometheus/client_model/go"
 | 
						dto "github.com/prometheus/client_model/go"
 | 
				
			||||||
 | 
						"google.golang.org/protobuf/encoding/protodelim"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/matttproud/golang_protobuf_extensions/pbutil"
 | 
					 | 
				
			||||||
	"github.com/prometheus/common/model"
 | 
						"github.com/prometheus/common/model"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -44,7 +45,7 @@ func ResponseFormat(h http.Header) Format {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	mediatype, params, err := mime.ParseMediaType(ct)
 | 
						mediatype, params, err := mime.ParseMediaType(ct)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return FmtUnknown
 | 
							return fmtUnknown
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	const textType = "text/plain"
 | 
						const textType = "text/plain"
 | 
				
			||||||
@@ -52,28 +53,28 @@ func ResponseFormat(h http.Header) Format {
 | 
				
			|||||||
	switch mediatype {
 | 
						switch mediatype {
 | 
				
			||||||
	case ProtoType:
 | 
						case ProtoType:
 | 
				
			||||||
		if p, ok := params["proto"]; ok && p != ProtoProtocol {
 | 
							if p, ok := params["proto"]; ok && p != ProtoProtocol {
 | 
				
			||||||
			return FmtUnknown
 | 
								return fmtUnknown
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if e, ok := params["encoding"]; ok && e != "delimited" {
 | 
							if e, ok := params["encoding"]; ok && e != "delimited" {
 | 
				
			||||||
			return FmtUnknown
 | 
								return fmtUnknown
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		return FmtProtoDelim
 | 
							return fmtProtoDelim
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	case textType:
 | 
						case textType:
 | 
				
			||||||
		if v, ok := params["version"]; ok && v != TextVersion {
 | 
							if v, ok := params["version"]; ok && v != TextVersion {
 | 
				
			||||||
			return FmtUnknown
 | 
								return fmtUnknown
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		return FmtText
 | 
							return fmtText
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return FmtUnknown
 | 
						return fmtUnknown
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewDecoder returns a new decoder based on the given input format.
 | 
					// NewDecoder returns a new decoder based on the given input format.
 | 
				
			||||||
// If the input format does not imply otherwise, a text format decoder is returned.
 | 
					// If the input format does not imply otherwise, a text format decoder is returned.
 | 
				
			||||||
func NewDecoder(r io.Reader, format Format) Decoder {
 | 
					func NewDecoder(r io.Reader, format Format) Decoder {
 | 
				
			||||||
	switch format {
 | 
						switch format.FormatType() {
 | 
				
			||||||
	case FmtProtoDelim:
 | 
						case TypeProtoDelim:
 | 
				
			||||||
		return &protoDecoder{r: r}
 | 
							return &protoDecoder{r: r}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return &textDecoder{r: r}
 | 
						return &textDecoder{r: r}
 | 
				
			||||||
@@ -86,8 +87,10 @@ type protoDecoder struct {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Decode implements the Decoder interface.
 | 
					// Decode implements the Decoder interface.
 | 
				
			||||||
func (d *protoDecoder) Decode(v *dto.MetricFamily) error {
 | 
					func (d *protoDecoder) Decode(v *dto.MetricFamily) error {
 | 
				
			||||||
	_, err := pbutil.ReadDelimited(d.r, v)
 | 
						opts := protodelim.UnmarshalOptions{
 | 
				
			||||||
	if err != nil {
 | 
							MaxSize: -1,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if err := opts.UnmarshalFrom(bufio.NewReader(d.r), v); err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if !model.IsValidMetricName(model.LabelValue(v.GetName())) {
 | 
						if !model.IsValidMetricName(model.LabelValue(v.GetName())) {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										78
									
								
								vendor/github.com/prometheus/common/expfmt/encode.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										78
									
								
								vendor/github.com/prometheus/common/expfmt/encode.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -18,10 +18,12 @@ import (
 | 
				
			|||||||
	"io"
 | 
						"io"
 | 
				
			||||||
	"net/http"
 | 
						"net/http"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/matttproud/golang_protobuf_extensions/pbutil"
 | 
						"google.golang.org/protobuf/encoding/protodelim"
 | 
				
			||||||
	"github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg"
 | 
					 | 
				
			||||||
	"google.golang.org/protobuf/encoding/prototext"
 | 
						"google.golang.org/protobuf/encoding/prototext"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg"
 | 
				
			||||||
 | 
						"github.com/prometheus/common/model"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	dto "github.com/prometheus/client_model/go"
 | 
						dto "github.com/prometheus/client_model/go"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -60,23 +62,32 @@ func (ec encoderCloser) Close() error {
 | 
				
			|||||||
// as the support is still experimental. To include the option to negotiate
 | 
					// as the support is still experimental. To include the option to negotiate
 | 
				
			||||||
// FmtOpenMetrics, use NegotiateOpenMetrics.
 | 
					// FmtOpenMetrics, use NegotiateOpenMetrics.
 | 
				
			||||||
func Negotiate(h http.Header) Format {
 | 
					func Negotiate(h http.Header) Format {
 | 
				
			||||||
 | 
						escapingScheme := Format(fmt.Sprintf("; escaping=%s", Format(model.NameEscapingScheme.String())))
 | 
				
			||||||
	for _, ac := range goautoneg.ParseAccept(h.Get(hdrAccept)) {
 | 
						for _, ac := range goautoneg.ParseAccept(h.Get(hdrAccept)) {
 | 
				
			||||||
 | 
							if escapeParam := ac.Params[model.EscapingKey]; escapeParam != "" {
 | 
				
			||||||
 | 
								switch Format(escapeParam) {
 | 
				
			||||||
 | 
								case model.AllowUTF8, model.EscapeUnderscores, model.EscapeDots, model.EscapeValues:
 | 
				
			||||||
 | 
									escapingScheme = Format(fmt.Sprintf("; escaping=%s", escapeParam))
 | 
				
			||||||
 | 
								default:
 | 
				
			||||||
 | 
									// If the escaping parameter is unknown, ignore it.
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		ver := ac.Params["version"]
 | 
							ver := ac.Params["version"]
 | 
				
			||||||
		if ac.Type+"/"+ac.SubType == ProtoType && ac.Params["proto"] == ProtoProtocol {
 | 
							if ac.Type+"/"+ac.SubType == ProtoType && ac.Params["proto"] == ProtoProtocol {
 | 
				
			||||||
			switch ac.Params["encoding"] {
 | 
								switch ac.Params["encoding"] {
 | 
				
			||||||
			case "delimited":
 | 
								case "delimited":
 | 
				
			||||||
				return FmtProtoDelim
 | 
									return fmtProtoDelim + escapingScheme
 | 
				
			||||||
			case "text":
 | 
								case "text":
 | 
				
			||||||
				return FmtProtoText
 | 
									return fmtProtoText + escapingScheme
 | 
				
			||||||
			case "compact-text":
 | 
								case "compact-text":
 | 
				
			||||||
				return FmtProtoCompact
 | 
									return fmtProtoCompact + escapingScheme
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if ac.Type == "text" && ac.SubType == "plain" && (ver == TextVersion || ver == "") {
 | 
							if ac.Type == "text" && ac.SubType == "plain" && (ver == TextVersion || ver == "") {
 | 
				
			||||||
			return FmtText
 | 
								return fmtText + escapingScheme
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return FmtText
 | 
						return fmtText + escapingScheme
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NegotiateIncludingOpenMetrics works like Negotiate but includes
 | 
					// NegotiateIncludingOpenMetrics works like Negotiate but includes
 | 
				
			||||||
@@ -84,29 +95,40 @@ func Negotiate(h http.Header) Format {
 | 
				
			|||||||
// temporary and will disappear once FmtOpenMetrics is fully supported and as
 | 
					// temporary and will disappear once FmtOpenMetrics is fully supported and as
 | 
				
			||||||
// such may be negotiated by the normal Negotiate function.
 | 
					// such may be negotiated by the normal Negotiate function.
 | 
				
			||||||
func NegotiateIncludingOpenMetrics(h http.Header) Format {
 | 
					func NegotiateIncludingOpenMetrics(h http.Header) Format {
 | 
				
			||||||
 | 
						escapingScheme := Format(fmt.Sprintf("; escaping=%s", Format(model.NameEscapingScheme.String())))
 | 
				
			||||||
	for _, ac := range goautoneg.ParseAccept(h.Get(hdrAccept)) {
 | 
						for _, ac := range goautoneg.ParseAccept(h.Get(hdrAccept)) {
 | 
				
			||||||
 | 
							if escapeParam := ac.Params[model.EscapingKey]; escapeParam != "" {
 | 
				
			||||||
 | 
								switch Format(escapeParam) {
 | 
				
			||||||
 | 
								case model.AllowUTF8, model.EscapeUnderscores, model.EscapeDots, model.EscapeValues:
 | 
				
			||||||
 | 
									escapingScheme = Format(fmt.Sprintf("; escaping=%s", escapeParam))
 | 
				
			||||||
 | 
								default:
 | 
				
			||||||
 | 
									// If the escaping parameter is unknown, ignore it.
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		ver := ac.Params["version"]
 | 
							ver := ac.Params["version"]
 | 
				
			||||||
		if ac.Type+"/"+ac.SubType == ProtoType && ac.Params["proto"] == ProtoProtocol {
 | 
							if ac.Type+"/"+ac.SubType == ProtoType && ac.Params["proto"] == ProtoProtocol {
 | 
				
			||||||
			switch ac.Params["encoding"] {
 | 
								switch ac.Params["encoding"] {
 | 
				
			||||||
			case "delimited":
 | 
								case "delimited":
 | 
				
			||||||
				return FmtProtoDelim
 | 
									return fmtProtoDelim + escapingScheme
 | 
				
			||||||
			case "text":
 | 
								case "text":
 | 
				
			||||||
				return FmtProtoText
 | 
									return fmtProtoText + escapingScheme
 | 
				
			||||||
			case "compact-text":
 | 
								case "compact-text":
 | 
				
			||||||
				return FmtProtoCompact
 | 
									return fmtProtoCompact + escapingScheme
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if ac.Type == "text" && ac.SubType == "plain" && (ver == TextVersion || ver == "") {
 | 
							if ac.Type == "text" && ac.SubType == "plain" && (ver == TextVersion || ver == "") {
 | 
				
			||||||
			return FmtText
 | 
								return fmtText + escapingScheme
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if ac.Type+"/"+ac.SubType == OpenMetricsType && (ver == OpenMetricsVersion_0_0_1 || ver == OpenMetricsVersion_1_0_0 || ver == "") {
 | 
							if ac.Type+"/"+ac.SubType == OpenMetricsType && (ver == OpenMetricsVersion_0_0_1 || ver == OpenMetricsVersion_1_0_0 || ver == "") {
 | 
				
			||||||
			if ver == OpenMetricsVersion_1_0_0 {
 | 
								switch ver {
 | 
				
			||||||
				return FmtOpenMetrics_1_0_0
 | 
								case OpenMetricsVersion_1_0_0:
 | 
				
			||||||
 | 
									return fmtOpenMetrics_1_0_0 + escapingScheme
 | 
				
			||||||
 | 
								default:
 | 
				
			||||||
 | 
									return fmtOpenMetrics_0_0_1 + escapingScheme
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			return FmtOpenMetrics_0_0_1
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return FmtText
 | 
						return fmtText + escapingScheme
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewEncoder returns a new encoder based on content type negotiation. All
 | 
					// NewEncoder returns a new encoder based on content type negotiation. All
 | 
				
			||||||
@@ -115,44 +137,48 @@ func NegotiateIncludingOpenMetrics(h http.Header) Format {
 | 
				
			|||||||
// for FmtOpenMetrics, but a future (breaking) release will add the Close method
 | 
					// for FmtOpenMetrics, but a future (breaking) release will add the Close method
 | 
				
			||||||
// to the Encoder interface directly. The current version of the Encoder
 | 
					// to the Encoder interface directly. The current version of the Encoder
 | 
				
			||||||
// interface is kept for backwards compatibility.
 | 
					// interface is kept for backwards compatibility.
 | 
				
			||||||
 | 
					// In cases where the Format does not allow for UTF-8 names, the global
 | 
				
			||||||
 | 
					// NameEscapingScheme will be applied.
 | 
				
			||||||
func NewEncoder(w io.Writer, format Format) Encoder {
 | 
					func NewEncoder(w io.Writer, format Format) Encoder {
 | 
				
			||||||
	switch format {
 | 
						escapingScheme := format.ToEscapingScheme()
 | 
				
			||||||
	case FmtProtoDelim:
 | 
					
 | 
				
			||||||
 | 
						switch format.FormatType() {
 | 
				
			||||||
 | 
						case TypeProtoDelim:
 | 
				
			||||||
		return encoderCloser{
 | 
							return encoderCloser{
 | 
				
			||||||
			encode: func(v *dto.MetricFamily) error {
 | 
								encode: func(v *dto.MetricFamily) error {
 | 
				
			||||||
				_, err := pbutil.WriteDelimited(w, v)
 | 
									_, err := protodelim.MarshalTo(w, v)
 | 
				
			||||||
				return err
 | 
									return err
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
			close: func() error { return nil },
 | 
								close: func() error { return nil },
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	case FmtProtoCompact:
 | 
						case TypeProtoCompact:
 | 
				
			||||||
		return encoderCloser{
 | 
							return encoderCloser{
 | 
				
			||||||
			encode: func(v *dto.MetricFamily) error {
 | 
								encode: func(v *dto.MetricFamily) error {
 | 
				
			||||||
				_, err := fmt.Fprintln(w, v.String())
 | 
									_, err := fmt.Fprintln(w, model.EscapeMetricFamily(v, escapingScheme).String())
 | 
				
			||||||
				return err
 | 
									return err
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
			close: func() error { return nil },
 | 
								close: func() error { return nil },
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	case FmtProtoText:
 | 
						case TypeProtoText:
 | 
				
			||||||
		return encoderCloser{
 | 
							return encoderCloser{
 | 
				
			||||||
			encode: func(v *dto.MetricFamily) error {
 | 
								encode: func(v *dto.MetricFamily) error {
 | 
				
			||||||
				_, err := fmt.Fprintln(w, prototext.Format(v))
 | 
									_, err := fmt.Fprintln(w, prototext.Format(model.EscapeMetricFamily(v, escapingScheme)))
 | 
				
			||||||
				return err
 | 
									return err
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
			close: func() error { return nil },
 | 
								close: func() error { return nil },
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	case FmtText:
 | 
						case TypeTextPlain:
 | 
				
			||||||
		return encoderCloser{
 | 
							return encoderCloser{
 | 
				
			||||||
			encode: func(v *dto.MetricFamily) error {
 | 
								encode: func(v *dto.MetricFamily) error {
 | 
				
			||||||
				_, err := MetricFamilyToText(w, v)
 | 
									_, err := MetricFamilyToText(w, model.EscapeMetricFamily(v, escapingScheme))
 | 
				
			||||||
				return err
 | 
									return err
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
			close: func() error { return nil },
 | 
								close: func() error { return nil },
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	case FmtOpenMetrics_0_0_1, FmtOpenMetrics_1_0_0:
 | 
						case TypeOpenMetrics:
 | 
				
			||||||
		return encoderCloser{
 | 
							return encoderCloser{
 | 
				
			||||||
			encode: func(v *dto.MetricFamily) error {
 | 
								encode: func(v *dto.MetricFamily) error {
 | 
				
			||||||
				_, err := MetricFamilyToOpenMetrics(w, v)
 | 
									_, err := MetricFamilyToOpenMetrics(w, model.EscapeMetricFamily(v, escapingScheme))
 | 
				
			||||||
				return err
 | 
									return err
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
			close: func() error {
 | 
								close: func() error {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										144
									
								
								vendor/github.com/prometheus/common/expfmt/expfmt.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										144
									
								
								vendor/github.com/prometheus/common/expfmt/expfmt.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -14,30 +14,154 @@
 | 
				
			|||||||
// Package expfmt contains tools for reading and writing Prometheus metrics.
 | 
					// Package expfmt contains tools for reading and writing Prometheus metrics.
 | 
				
			||||||
package expfmt
 | 
					package expfmt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/prometheus/common/model"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Format specifies the HTTP content type of the different wire protocols.
 | 
					// Format specifies the HTTP content type of the different wire protocols.
 | 
				
			||||||
type Format string
 | 
					type Format string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Constants to assemble the Content-Type values for the different wire protocols.
 | 
					// Constants to assemble the Content-Type values for the different wire
 | 
				
			||||||
 | 
					// protocols. The Content-Type strings here are all for the legacy exposition
 | 
				
			||||||
 | 
					// formats, where valid characters for metric names and label names are limited.
 | 
				
			||||||
 | 
					// Support for arbitrary UTF-8 characters in those names is already partially
 | 
				
			||||||
 | 
					// implemented in this module (see model.ValidationScheme), but to actually use
 | 
				
			||||||
 | 
					// it on the wire, new content-type strings will have to be agreed upon and
 | 
				
			||||||
 | 
					// added here.
 | 
				
			||||||
const (
 | 
					const (
 | 
				
			||||||
	TextVersion              = "0.0.4"
 | 
						TextVersion              = "0.0.4"
 | 
				
			||||||
	ProtoType                = `application/vnd.google.protobuf`
 | 
						ProtoType                = `application/vnd.google.protobuf`
 | 
				
			||||||
	ProtoProtocol            = `io.prometheus.client.MetricFamily`
 | 
						ProtoProtocol            = `io.prometheus.client.MetricFamily`
 | 
				
			||||||
	ProtoFmt                 = ProtoType + "; proto=" + ProtoProtocol + ";"
 | 
						protoFmt                 = ProtoType + "; proto=" + ProtoProtocol + ";"
 | 
				
			||||||
	OpenMetricsType          = `application/openmetrics-text`
 | 
						OpenMetricsType          = `application/openmetrics-text`
 | 
				
			||||||
	OpenMetricsVersion_0_0_1 = "0.0.1"
 | 
						OpenMetricsVersion_0_0_1 = "0.0.1"
 | 
				
			||||||
	OpenMetricsVersion_1_0_0 = "1.0.0"
 | 
						OpenMetricsVersion_1_0_0 = "1.0.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// The Content-Type values for the different wire protocols.
 | 
						// The Content-Type values for the different wire protocols. Note that these
 | 
				
			||||||
	FmtUnknown           Format = `<unknown>`
 | 
						// values are now unexported. If code was relying on comparisons to these
 | 
				
			||||||
	FmtText              Format = `text/plain; version=` + TextVersion + `; charset=utf-8`
 | 
						// constants, instead use FormatType().
 | 
				
			||||||
	FmtProtoDelim        Format = ProtoFmt + ` encoding=delimited`
 | 
						fmtUnknown           Format = `<unknown>`
 | 
				
			||||||
	FmtProtoText         Format = ProtoFmt + ` encoding=text`
 | 
						fmtText              Format = `text/plain; version=` + TextVersion + `; charset=utf-8`
 | 
				
			||||||
	FmtProtoCompact      Format = ProtoFmt + ` encoding=compact-text`
 | 
						fmtProtoDelim        Format = protoFmt + ` encoding=delimited`
 | 
				
			||||||
	FmtOpenMetrics_1_0_0 Format = OpenMetricsType + `; version=` + OpenMetricsVersion_1_0_0 + `; charset=utf-8`
 | 
						fmtProtoText         Format = protoFmt + ` encoding=text`
 | 
				
			||||||
	FmtOpenMetrics_0_0_1 Format = OpenMetricsType + `; version=` + OpenMetricsVersion_0_0_1 + `; charset=utf-8`
 | 
						fmtProtoCompact      Format = protoFmt + ` encoding=compact-text`
 | 
				
			||||||
 | 
						fmtOpenMetrics_1_0_0 Format = OpenMetricsType + `; version=` + OpenMetricsVersion_1_0_0 + `; charset=utf-8`
 | 
				
			||||||
 | 
						fmtOpenMetrics_0_0_1 Format = OpenMetricsType + `; version=` + OpenMetricsVersion_0_0_1 + `; charset=utf-8`
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const (
 | 
					const (
 | 
				
			||||||
	hdrContentType = "Content-Type"
 | 
						hdrContentType = "Content-Type"
 | 
				
			||||||
	hdrAccept      = "Accept"
 | 
						hdrAccept      = "Accept"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// FormatType is a Go enum representing the overall category for the given
 | 
				
			||||||
 | 
					// Format. As the number of Format permutations increases, doing basic string
 | 
				
			||||||
 | 
					// comparisons are not feasible, so this enum captures the most useful
 | 
				
			||||||
 | 
					// high-level attribute of the Format string.
 | 
				
			||||||
 | 
					type FormatType int
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						TypeUnknown = iota
 | 
				
			||||||
 | 
						TypeProtoCompact
 | 
				
			||||||
 | 
						TypeProtoDelim
 | 
				
			||||||
 | 
						TypeProtoText
 | 
				
			||||||
 | 
						TypeTextPlain
 | 
				
			||||||
 | 
						TypeOpenMetrics
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NewFormat generates a new Format from the type provided. Mostly used for
 | 
				
			||||||
 | 
					// tests, most Formats should be generated as part of content negotiation in
 | 
				
			||||||
 | 
					// encode.go.
 | 
				
			||||||
 | 
					func NewFormat(t FormatType) Format {
 | 
				
			||||||
 | 
						switch t {
 | 
				
			||||||
 | 
						case TypeProtoCompact:
 | 
				
			||||||
 | 
							return fmtProtoCompact
 | 
				
			||||||
 | 
						case TypeProtoDelim:
 | 
				
			||||||
 | 
							return fmtProtoDelim
 | 
				
			||||||
 | 
						case TypeProtoText:
 | 
				
			||||||
 | 
							return fmtProtoText
 | 
				
			||||||
 | 
						case TypeTextPlain:
 | 
				
			||||||
 | 
							return fmtText
 | 
				
			||||||
 | 
						case TypeOpenMetrics:
 | 
				
			||||||
 | 
							return fmtOpenMetrics_1_0_0
 | 
				
			||||||
 | 
						default:
 | 
				
			||||||
 | 
							return fmtUnknown
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// FormatType deduces an overall FormatType for the given format.
 | 
				
			||||||
 | 
					func (f Format) FormatType() FormatType {
 | 
				
			||||||
 | 
						toks := strings.Split(string(f), ";")
 | 
				
			||||||
 | 
						if len(toks) < 2 {
 | 
				
			||||||
 | 
							return TypeUnknown
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						params := make(map[string]string)
 | 
				
			||||||
 | 
						for i, t := range toks {
 | 
				
			||||||
 | 
							if i == 0 {
 | 
				
			||||||
 | 
								continue
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							args := strings.Split(t, "=")
 | 
				
			||||||
 | 
							if len(args) != 2 {
 | 
				
			||||||
 | 
								continue
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							params[strings.TrimSpace(args[0])] = strings.TrimSpace(args[1])
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						switch strings.TrimSpace(toks[0]) {
 | 
				
			||||||
 | 
						case ProtoType:
 | 
				
			||||||
 | 
							if params["proto"] != ProtoProtocol {
 | 
				
			||||||
 | 
								return TypeUnknown
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							switch params["encoding"] {
 | 
				
			||||||
 | 
							case "delimited":
 | 
				
			||||||
 | 
								return TypeProtoDelim
 | 
				
			||||||
 | 
							case "text":
 | 
				
			||||||
 | 
								return TypeProtoText
 | 
				
			||||||
 | 
							case "compact-text":
 | 
				
			||||||
 | 
								return TypeProtoCompact
 | 
				
			||||||
 | 
							default:
 | 
				
			||||||
 | 
								return TypeUnknown
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						case OpenMetricsType:
 | 
				
			||||||
 | 
							if params["charset"] != "utf-8" {
 | 
				
			||||||
 | 
								return TypeUnknown
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return TypeOpenMetrics
 | 
				
			||||||
 | 
						case "text/plain":
 | 
				
			||||||
 | 
							v, ok := params["version"]
 | 
				
			||||||
 | 
							if !ok {
 | 
				
			||||||
 | 
								return TypeTextPlain
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if v == TextVersion {
 | 
				
			||||||
 | 
								return TypeTextPlain
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return TypeUnknown
 | 
				
			||||||
 | 
						default:
 | 
				
			||||||
 | 
							return TypeUnknown
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ToEscapingScheme returns an EscapingScheme depending on the Format. Iff the
 | 
				
			||||||
 | 
					// Format contains a escaping=allow-utf-8 term, it will select NoEscaping. If a valid
 | 
				
			||||||
 | 
					// "escaping" term exists, that will be used. Otherwise, the global default will
 | 
				
			||||||
 | 
					// be returned.
 | 
				
			||||||
 | 
					func (format Format) ToEscapingScheme() model.EscapingScheme {
 | 
				
			||||||
 | 
						for _, p := range strings.Split(string(format), ";") {
 | 
				
			||||||
 | 
							toks := strings.Split(p, "=")
 | 
				
			||||||
 | 
							if len(toks) != 2 {
 | 
				
			||||||
 | 
								continue
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							key, value := strings.TrimSpace(toks[0]), strings.TrimSpace(toks[1])
 | 
				
			||||||
 | 
							if key == model.EscapingKey {
 | 
				
			||||||
 | 
								scheme, err := model.ToEscapingScheme(value)
 | 
				
			||||||
 | 
								if err != nil {
 | 
				
			||||||
 | 
									return model.NameEscapingScheme
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								return scheme
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return model.NameEscapingScheme
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										85
									
								
								vendor/github.com/prometheus/common/expfmt/openmetrics_create.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										85
									
								
								vendor/github.com/prometheus/common/expfmt/openmetrics_create.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -35,6 +35,18 @@ import (
 | 
				
			|||||||
// sanity checks. If the input contains duplicate metrics or invalid metric or
 | 
					// sanity checks. If the input contains duplicate metrics or invalid metric or
 | 
				
			||||||
// label names, the conversion will result in invalid text format output.
 | 
					// label names, the conversion will result in invalid text format output.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
 | 
					// If metric names conform to the legacy validation pattern, they will be placed
 | 
				
			||||||
 | 
					// outside the brackets in the traditional way, like `foo{}`. If the metric name
 | 
				
			||||||
 | 
					// fails the legacy validation check, it will be placed quoted inside the
 | 
				
			||||||
 | 
					// brackets: `{"foo"}`. As stated above, the input is assumed to be santized and
 | 
				
			||||||
 | 
					// no error will be thrown in this case.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Similar to metric names, if label names conform to the legacy validation
 | 
				
			||||||
 | 
					// pattern, they will be unquoted as normal, like `foo{bar="baz"}`. If the label
 | 
				
			||||||
 | 
					// name fails the legacy validation check, it will be quoted:
 | 
				
			||||||
 | 
					// `foo{"bar"="baz"}`. As stated above, the input is assumed to be santized and
 | 
				
			||||||
 | 
					// no error will be thrown in this case.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
// This function fulfills the type 'expfmt.encoder'.
 | 
					// This function fulfills the type 'expfmt.encoder'.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// Note that OpenMetrics requires a final `# EOF` line. Since this function acts
 | 
					// Note that OpenMetrics requires a final `# EOF` line. Since this function acts
 | 
				
			||||||
@@ -98,7 +110,7 @@ func MetricFamilyToOpenMetrics(out io.Writer, in *dto.MetricFamily) (written int
 | 
				
			|||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			return
 | 
								return
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		n, err = w.WriteString(shortName)
 | 
							n, err = writeName(w, shortName)
 | 
				
			||||||
		written += n
 | 
							written += n
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			return
 | 
								return
 | 
				
			||||||
@@ -124,7 +136,7 @@ func MetricFamilyToOpenMetrics(out io.Writer, in *dto.MetricFamily) (written int
 | 
				
			|||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	n, err = w.WriteString(shortName)
 | 
						n, err = writeName(w, shortName)
 | 
				
			||||||
	written += n
 | 
						written += n
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
@@ -303,21 +315,9 @@ func writeOpenMetricsSample(
 | 
				
			|||||||
	floatValue float64, intValue uint64, useIntValue bool,
 | 
						floatValue float64, intValue uint64, useIntValue bool,
 | 
				
			||||||
	exemplar *dto.Exemplar,
 | 
						exemplar *dto.Exemplar,
 | 
				
			||||||
) (int, error) {
 | 
					) (int, error) {
 | 
				
			||||||
	var written int
 | 
						written := 0
 | 
				
			||||||
	n, err := w.WriteString(name)
 | 
						n, err := writeOpenMetricsNameAndLabelPairs(
 | 
				
			||||||
	written += n
 | 
							w, name+suffix, metric.Label, additionalLabelName, additionalLabelValue,
 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return written, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if suffix != "" {
 | 
					 | 
				
			||||||
		n, err = w.WriteString(suffix)
 | 
					 | 
				
			||||||
		written += n
 | 
					 | 
				
			||||||
		if err != nil {
 | 
					 | 
				
			||||||
			return written, err
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	n, err = writeOpenMetricsLabelPairs(
 | 
					 | 
				
			||||||
		w, metric.Label, additionalLabelName, additionalLabelValue,
 | 
					 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
	written += n
 | 
						written += n
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
@@ -365,27 +365,58 @@ func writeOpenMetricsSample(
 | 
				
			|||||||
	return written, nil
 | 
						return written, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// writeOpenMetricsLabelPairs works like writeOpenMetrics but formats the float
 | 
					// writeOpenMetricsNameAndLabelPairs works like writeOpenMetricsSample but
 | 
				
			||||||
// in OpenMetrics style.
 | 
					// formats the float in OpenMetrics style.
 | 
				
			||||||
func writeOpenMetricsLabelPairs(
 | 
					func writeOpenMetricsNameAndLabelPairs(
 | 
				
			||||||
	w enhancedWriter,
 | 
						w enhancedWriter,
 | 
				
			||||||
 | 
						name string,
 | 
				
			||||||
	in []*dto.LabelPair,
 | 
						in []*dto.LabelPair,
 | 
				
			||||||
	additionalLabelName string, additionalLabelValue float64,
 | 
						additionalLabelName string, additionalLabelValue float64,
 | 
				
			||||||
) (int, error) {
 | 
					) (int, error) {
 | 
				
			||||||
	if len(in) == 0 && additionalLabelName == "" {
 | 
					 | 
				
			||||||
		return 0, nil
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	var (
 | 
						var (
 | 
				
			||||||
		written   int
 | 
							written            int
 | 
				
			||||||
		separator byte = '{'
 | 
							separator          byte = '{'
 | 
				
			||||||
 | 
							metricInsideBraces      = false
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if name != "" {
 | 
				
			||||||
 | 
							// If the name does not pass the legacy validity check, we must put the
 | 
				
			||||||
 | 
							// metric name inside the braces, quoted.
 | 
				
			||||||
 | 
							if !model.IsValidLegacyMetricName(model.LabelValue(name)) {
 | 
				
			||||||
 | 
								metricInsideBraces = true
 | 
				
			||||||
 | 
								err := w.WriteByte(separator)
 | 
				
			||||||
 | 
								written++
 | 
				
			||||||
 | 
								if err != nil {
 | 
				
			||||||
 | 
									return written, err
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								separator = ','
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							n, err := writeName(w, name)
 | 
				
			||||||
 | 
							written += n
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return written, err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if len(in) == 0 && additionalLabelName == "" {
 | 
				
			||||||
 | 
							if metricInsideBraces {
 | 
				
			||||||
 | 
								err := w.WriteByte('}')
 | 
				
			||||||
 | 
								written++
 | 
				
			||||||
 | 
								if err != nil {
 | 
				
			||||||
 | 
									return written, err
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return written, nil
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for _, lp := range in {
 | 
						for _, lp := range in {
 | 
				
			||||||
		err := w.WriteByte(separator)
 | 
							err := w.WriteByte(separator)
 | 
				
			||||||
		written++
 | 
							written++
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			return written, err
 | 
								return written, err
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		n, err := w.WriteString(lp.GetName())
 | 
							n, err := writeName(w, lp.GetName())
 | 
				
			||||||
		written += n
 | 
							written += n
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			return written, err
 | 
								return written, err
 | 
				
			||||||
@@ -451,7 +482,7 @@ func writeExemplar(w enhancedWriter, e *dto.Exemplar) (int, error) {
 | 
				
			|||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return written, err
 | 
							return written, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	n, err = writeOpenMetricsLabelPairs(w, e.Label, "", 0)
 | 
						n, err = writeOpenMetricsNameAndLabelPairs(w, "", e.Label, "", 0)
 | 
				
			||||||
	written += n
 | 
						written += n
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return written, err
 | 
							return written, err
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										118
									
								
								vendor/github.com/prometheus/common/expfmt/text_create.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										118
									
								
								vendor/github.com/prometheus/common/expfmt/text_create.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -62,6 +62,18 @@ var (
 | 
				
			|||||||
// contains duplicate metrics or invalid metric or label names, the conversion
 | 
					// contains duplicate metrics or invalid metric or label names, the conversion
 | 
				
			||||||
// will result in invalid text format output.
 | 
					// will result in invalid text format output.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
 | 
					// If metric names conform to the legacy validation pattern, they will be placed
 | 
				
			||||||
 | 
					// outside the brackets in the traditional way, like `foo{}`. If the metric name
 | 
				
			||||||
 | 
					// fails the legacy validation check, it will be placed quoted inside the
 | 
				
			||||||
 | 
					// brackets: `{"foo"}`. As stated above, the input is assumed to be santized and
 | 
				
			||||||
 | 
					// no error will be thrown in this case.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Similar to metric names, if label names conform to the legacy validation
 | 
				
			||||||
 | 
					// pattern, they will be unquoted as normal, like `foo{bar="baz"}`. If the label
 | 
				
			||||||
 | 
					// name fails the legacy validation check, it will be quoted:
 | 
				
			||||||
 | 
					// `foo{"bar"="baz"}`. As stated above, the input is assumed to be santized and
 | 
				
			||||||
 | 
					// no error will be thrown in this case.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
// This method fulfills the type 'prometheus.encoder'.
 | 
					// This method fulfills the type 'prometheus.encoder'.
 | 
				
			||||||
func MetricFamilyToText(out io.Writer, in *dto.MetricFamily) (written int, err error) {
 | 
					func MetricFamilyToText(out io.Writer, in *dto.MetricFamily) (written int, err error) {
 | 
				
			||||||
	// Fail-fast checks.
 | 
						// Fail-fast checks.
 | 
				
			||||||
@@ -98,7 +110,7 @@ func MetricFamilyToText(out io.Writer, in *dto.MetricFamily) (written int, err e
 | 
				
			|||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			return
 | 
								return
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		n, err = w.WriteString(name)
 | 
							n, err = writeName(w, name)
 | 
				
			||||||
		written += n
 | 
							written += n
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			return
 | 
								return
 | 
				
			||||||
@@ -124,7 +136,7 @@ func MetricFamilyToText(out io.Writer, in *dto.MetricFamily) (written int, err e
 | 
				
			|||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	n, err = w.WriteString(name)
 | 
						n, err = writeName(w, name)
 | 
				
			||||||
	written += n
 | 
						written += n
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
@@ -280,21 +292,9 @@ func writeSample(
 | 
				
			|||||||
	additionalLabelName string, additionalLabelValue float64,
 | 
						additionalLabelName string, additionalLabelValue float64,
 | 
				
			||||||
	value float64,
 | 
						value float64,
 | 
				
			||||||
) (int, error) {
 | 
					) (int, error) {
 | 
				
			||||||
	var written int
 | 
						written := 0
 | 
				
			||||||
	n, err := w.WriteString(name)
 | 
						n, err := writeNameAndLabelPairs(
 | 
				
			||||||
	written += n
 | 
							w, name+suffix, metric.Label, additionalLabelName, additionalLabelValue,
 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return written, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if suffix != "" {
 | 
					 | 
				
			||||||
		n, err = w.WriteString(suffix)
 | 
					 | 
				
			||||||
		written += n
 | 
					 | 
				
			||||||
		if err != nil {
 | 
					 | 
				
			||||||
			return written, err
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	n, err = writeLabelPairs(
 | 
					 | 
				
			||||||
		w, metric.Label, additionalLabelName, additionalLabelValue,
 | 
					 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
	written += n
 | 
						written += n
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
@@ -330,32 +330,64 @@ func writeSample(
 | 
				
			|||||||
	return written, nil
 | 
						return written, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// writeLabelPairs converts a slice of LabelPair proto messages plus the
 | 
					// writeNameAndLabelPairs converts a slice of LabelPair proto messages plus the
 | 
				
			||||||
// explicitly given additional label pair into text formatted as required by the
 | 
					// explicitly given metric name and additional label pair into text formatted as
 | 
				
			||||||
// text format and writes it to 'w'. An empty slice in combination with an empty
 | 
					// required by the text format and writes it to 'w'. An empty slice in
 | 
				
			||||||
// string 'additionalLabelName' results in nothing being written. Otherwise, the
 | 
					// combination with an empty string 'additionalLabelName' results in nothing
 | 
				
			||||||
// label pairs are written, escaped as required by the text format, and enclosed
 | 
					// being written. Otherwise, the label pairs are written, escaped as required by
 | 
				
			||||||
// in '{...}'. The function returns the number of bytes written and any error
 | 
					// the text format, and enclosed in '{...}'. The function returns the number of
 | 
				
			||||||
// encountered.
 | 
					// bytes written and any error encountered. If the metric name is not
 | 
				
			||||||
func writeLabelPairs(
 | 
					// legacy-valid, it will be put inside the brackets as well. Legacy-invalid
 | 
				
			||||||
 | 
					// label names will also be quoted.
 | 
				
			||||||
 | 
					func writeNameAndLabelPairs(
 | 
				
			||||||
	w enhancedWriter,
 | 
						w enhancedWriter,
 | 
				
			||||||
 | 
						name string,
 | 
				
			||||||
	in []*dto.LabelPair,
 | 
						in []*dto.LabelPair,
 | 
				
			||||||
	additionalLabelName string, additionalLabelValue float64,
 | 
						additionalLabelName string, additionalLabelValue float64,
 | 
				
			||||||
) (int, error) {
 | 
					) (int, error) {
 | 
				
			||||||
	if len(in) == 0 && additionalLabelName == "" {
 | 
					 | 
				
			||||||
		return 0, nil
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	var (
 | 
						var (
 | 
				
			||||||
		written   int
 | 
							written            int
 | 
				
			||||||
		separator byte = '{'
 | 
							separator          byte = '{'
 | 
				
			||||||
 | 
							metricInsideBraces      = false
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if name != "" {
 | 
				
			||||||
 | 
							// If the name does not pass the legacy validity check, we must put the
 | 
				
			||||||
 | 
							// metric name inside the braces.
 | 
				
			||||||
 | 
							if !model.IsValidLegacyMetricName(model.LabelValue(name)) {
 | 
				
			||||||
 | 
								metricInsideBraces = true
 | 
				
			||||||
 | 
								err := w.WriteByte(separator)
 | 
				
			||||||
 | 
								written++
 | 
				
			||||||
 | 
								if err != nil {
 | 
				
			||||||
 | 
									return written, err
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								separator = ','
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							n, err := writeName(w, name)
 | 
				
			||||||
 | 
							written += n
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return written, err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if len(in) == 0 && additionalLabelName == "" {
 | 
				
			||||||
 | 
							if metricInsideBraces {
 | 
				
			||||||
 | 
								err := w.WriteByte('}')
 | 
				
			||||||
 | 
								written++
 | 
				
			||||||
 | 
								if err != nil {
 | 
				
			||||||
 | 
									return written, err
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return written, nil
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for _, lp := range in {
 | 
						for _, lp := range in {
 | 
				
			||||||
		err := w.WriteByte(separator)
 | 
							err := w.WriteByte(separator)
 | 
				
			||||||
		written++
 | 
							written++
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			return written, err
 | 
								return written, err
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		n, err := w.WriteString(lp.GetName())
 | 
							n, err := writeName(w, lp.GetName())
 | 
				
			||||||
		written += n
 | 
							written += n
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			return written, err
 | 
								return written, err
 | 
				
			||||||
@@ -462,3 +494,27 @@ func writeInt(w enhancedWriter, i int64) (int, error) {
 | 
				
			|||||||
	numBufPool.Put(bp)
 | 
						numBufPool.Put(bp)
 | 
				
			||||||
	return written, err
 | 
						return written, err
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// writeName writes a string as-is if it complies with the legacy naming
 | 
				
			||||||
 | 
					// scheme, or escapes it in double quotes if not.
 | 
				
			||||||
 | 
					func writeName(w enhancedWriter, name string) (int, error) {
 | 
				
			||||||
 | 
						if model.IsValidLegacyMetricName(model.LabelValue(name)) {
 | 
				
			||||||
 | 
							return w.WriteString(name)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						var written int
 | 
				
			||||||
 | 
						var err error
 | 
				
			||||||
 | 
						err = w.WriteByte('"')
 | 
				
			||||||
 | 
						written++
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return written, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						var n int
 | 
				
			||||||
 | 
						n, err = writeEscapedString(w, name, true)
 | 
				
			||||||
 | 
						written += n
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return written, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						err = w.WriteByte('"')
 | 
				
			||||||
 | 
						written++
 | 
				
			||||||
 | 
						return written, err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										8
									
								
								vendor/github.com/prometheus/common/expfmt/text_parse.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								vendor/github.com/prometheus/common/expfmt/text_parse.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -16,6 +16,7 @@ package expfmt
 | 
				
			|||||||
import (
 | 
					import (
 | 
				
			||||||
	"bufio"
 | 
						"bufio"
 | 
				
			||||||
	"bytes"
 | 
						"bytes"
 | 
				
			||||||
 | 
						"errors"
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"io"
 | 
						"io"
 | 
				
			||||||
	"math"
 | 
						"math"
 | 
				
			||||||
@@ -24,8 +25,9 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	dto "github.com/prometheus/client_model/go"
 | 
						dto "github.com/prometheus/client_model/go"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/prometheus/common/model"
 | 
					 | 
				
			||||||
	"google.golang.org/protobuf/proto"
 | 
						"google.golang.org/protobuf/proto"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/prometheus/common/model"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// A stateFn is a function that represents a state in a state machine. By
 | 
					// A stateFn is a function that represents a state in a state machine. By
 | 
				
			||||||
@@ -112,7 +114,7 @@ func (p *TextParser) TextToMetricFamilies(in io.Reader) (map[string]*dto.MetricF
 | 
				
			|||||||
	// stream. Turn this error into something nicer and more
 | 
						// stream. Turn this error into something nicer and more
 | 
				
			||||||
	// meaningful. (io.EOF is often used as a signal for the legitimate end
 | 
						// meaningful. (io.EOF is often used as a signal for the legitimate end
 | 
				
			||||||
	// of an input stream.)
 | 
						// of an input stream.)
 | 
				
			||||||
	if p.err == io.EOF {
 | 
						if p.err != nil && errors.Is(p.err, io.EOF) {
 | 
				
			||||||
		p.parseError("unexpected end of input stream")
 | 
							p.parseError("unexpected end of input stream")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return p.metricFamiliesByName, p.err
 | 
						return p.metricFamiliesByName, p.err
 | 
				
			||||||
@@ -146,7 +148,7 @@ func (p *TextParser) startOfLine() stateFn {
 | 
				
			|||||||
		// which is not an error but the signal that we are done.
 | 
							// which is not an error but the signal that we are done.
 | 
				
			||||||
		// Any other error that happens to align with the start of
 | 
							// Any other error that happens to align with the start of
 | 
				
			||||||
		// a line is still an error.
 | 
							// a line is still an error.
 | 
				
			||||||
		if p.err == io.EOF {
 | 
							if errors.Is(p.err, io.EOF) {
 | 
				
			||||||
			p.err = nil
 | 
								p.err = nil
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		return nil
 | 
							return nil
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										4
									
								
								vendor/github.com/prometheus/common/model/alert.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/prometheus/common/model/alert.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -90,13 +90,13 @@ func (a *Alert) Validate() error {
 | 
				
			|||||||
		return fmt.Errorf("start time must be before end time")
 | 
							return fmt.Errorf("start time must be before end time")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if err := a.Labels.Validate(); err != nil {
 | 
						if err := a.Labels.Validate(); err != nil {
 | 
				
			||||||
		return fmt.Errorf("invalid label set: %s", err)
 | 
							return fmt.Errorf("invalid label set: %w", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if len(a.Labels) == 0 {
 | 
						if len(a.Labels) == 0 {
 | 
				
			||||||
		return fmt.Errorf("at least one label pair required")
 | 
							return fmt.Errorf("at least one label pair required")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if err := a.Annotations.Validate(); err != nil {
 | 
						if err := a.Annotations.Validate(); err != nil {
 | 
				
			||||||
		return fmt.Errorf("invalid annotations: %s", err)
 | 
							return fmt.Errorf("invalid annotations: %w", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										22
									
								
								vendor/github.com/prometheus/common/model/labels.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								vendor/github.com/prometheus/common/model/labels.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -97,17 +97,25 @@ var LabelNameRE = regexp.MustCompile("^[a-zA-Z_][a-zA-Z0-9_]*$")
 | 
				
			|||||||
// therewith.
 | 
					// therewith.
 | 
				
			||||||
type LabelName string
 | 
					type LabelName string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// IsValid is true iff the label name matches the pattern of LabelNameRE. This
 | 
					// IsValid returns true iff name matches the pattern of LabelNameRE for legacy
 | 
				
			||||||
// method, however, does not use LabelNameRE for the check but a much faster
 | 
					// names, and iff it's valid UTF-8 if NameValidationScheme is set to
 | 
				
			||||||
// hardcoded implementation.
 | 
					// UTF8Validation. For the legacy matching, it does not use LabelNameRE for the
 | 
				
			||||||
 | 
					// check but a much faster hardcoded implementation.
 | 
				
			||||||
func (ln LabelName) IsValid() bool {
 | 
					func (ln LabelName) IsValid() bool {
 | 
				
			||||||
	if len(ln) == 0 {
 | 
						if len(ln) == 0 {
 | 
				
			||||||
		return false
 | 
							return false
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	for i, b := range ln {
 | 
						switch NameValidationScheme {
 | 
				
			||||||
		if !((b >= 'a' && b <= 'z') || (b >= 'A' && b <= 'Z') || b == '_' || (b >= '0' && b <= '9' && i > 0)) {
 | 
						case LegacyValidation:
 | 
				
			||||||
			return false
 | 
							for i, b := range ln {
 | 
				
			||||||
 | 
								if !((b >= 'a' && b <= 'z') || (b >= 'A' && b <= 'Z') || b == '_' || (b >= '0' && b <= '9' && i > 0)) {
 | 
				
			||||||
 | 
									return false
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
						case UTF8Validation:
 | 
				
			||||||
 | 
							return utf8.ValidString(string(ln))
 | 
				
			||||||
 | 
						default:
 | 
				
			||||||
 | 
							panic(fmt.Sprintf("Invalid name validation scheme requested: %d", NameValidationScheme))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return true
 | 
						return true
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -164,7 +172,7 @@ func (l LabelNames) String() string {
 | 
				
			|||||||
// A LabelValue is an associated value for a LabelName.
 | 
					// A LabelValue is an associated value for a LabelName.
 | 
				
			||||||
type LabelValue string
 | 
					type LabelValue string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// IsValid returns true iff the string is a valid UTF8.
 | 
					// IsValid returns true iff the string is a valid UTF-8.
 | 
				
			||||||
func (lv LabelValue) IsValid() bool {
 | 
					func (lv LabelValue) IsValid() bool {
 | 
				
			||||||
	return utf8.ValidString(string(lv))
 | 
						return utf8.ValidString(string(lv))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										28
									
								
								vendor/github.com/prometheus/common/model/metadata.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								vendor/github.com/prometheus/common/model/metadata.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
				
			|||||||
 | 
					// Copyright 2023 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 model
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// MetricType represents metric type values.
 | 
				
			||||||
 | 
					type MetricType string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						MetricTypeCounter        = MetricType("counter")
 | 
				
			||||||
 | 
						MetricTypeGauge          = MetricType("gauge")
 | 
				
			||||||
 | 
						MetricTypeHistogram      = MetricType("histogram")
 | 
				
			||||||
 | 
						MetricTypeGaugeHistogram = MetricType("gaugehistogram")
 | 
				
			||||||
 | 
						MetricTypeSummary        = MetricType("summary")
 | 
				
			||||||
 | 
						MetricTypeInfo           = MetricType("info")
 | 
				
			||||||
 | 
						MetricTypeStateset       = MetricType("stateset")
 | 
				
			||||||
 | 
						MetricTypeUnknown        = MetricType("unknown")
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
							
								
								
									
										368
									
								
								vendor/github.com/prometheus/common/model/metric.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										368
									
								
								vendor/github.com/prometheus/common/model/metric.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -18,15 +18,84 @@ import (
 | 
				
			|||||||
	"regexp"
 | 
						"regexp"
 | 
				
			||||||
	"sort"
 | 
						"sort"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
 | 
						"unicode/utf8"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						dto "github.com/prometheus/client_model/go"
 | 
				
			||||||
 | 
						"google.golang.org/protobuf/proto"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var (
 | 
					var (
 | 
				
			||||||
	// MetricNameRE is a regular expression matching valid metric
 | 
						// NameValidationScheme determines the method of name validation to be used by
 | 
				
			||||||
	// names. Note that the IsValidMetricName function performs the same
 | 
						// all calls to IsValidMetricName() and LabelName IsValid(). Setting UTF-8 mode
 | 
				
			||||||
	// check but faster than a match with this regular expression.
 | 
						// in isolation from other components that don't support UTF-8 may result in
 | 
				
			||||||
	MetricNameRE = regexp.MustCompile(`^[a-zA-Z_:][a-zA-Z0-9_:]*$`)
 | 
						// bugs or other undefined behavior. This value is intended to be set by
 | 
				
			||||||
 | 
						// UTF-8-aware binaries as part of their startup. To avoid need for locking,
 | 
				
			||||||
 | 
						// this value should be set once, ideally in an init(), before multiple
 | 
				
			||||||
 | 
						// goroutines are started.
 | 
				
			||||||
 | 
						NameValidationScheme = LegacyValidation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// NameEscapingScheme defines the default way that names will be
 | 
				
			||||||
 | 
						// escaped when presented to systems that do not support UTF-8 names. If the
 | 
				
			||||||
 | 
						// Content-Type "escaping" term is specified, that will override this value.
 | 
				
			||||||
 | 
						NameEscapingScheme = ValueEncodingEscaping
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ValidationScheme is a Go enum for determining how metric and label names will
 | 
				
			||||||
 | 
					// be validated by this library.
 | 
				
			||||||
 | 
					type ValidationScheme int
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						// LegacyValidation is a setting that requirets that metric and label names
 | 
				
			||||||
 | 
						// conform to the original Prometheus character requirements described by
 | 
				
			||||||
 | 
						// MetricNameRE and LabelNameRE.
 | 
				
			||||||
 | 
						LegacyValidation ValidationScheme = iota
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// UTF8Validation only requires that metric and label names be valid UTF-8
 | 
				
			||||||
 | 
						// strings.
 | 
				
			||||||
 | 
						UTF8Validation
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type EscapingScheme int
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						// NoEscaping indicates that a name will not be escaped. Unescaped names that
 | 
				
			||||||
 | 
						// do not conform to the legacy validity check will use a new exposition
 | 
				
			||||||
 | 
						// format syntax that will be officially standardized in future versions.
 | 
				
			||||||
 | 
						NoEscaping EscapingScheme = iota
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// UnderscoreEscaping replaces all legacy-invalid characters with underscores.
 | 
				
			||||||
 | 
						UnderscoreEscaping
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// DotsEscaping is similar to UnderscoreEscaping, except that dots are
 | 
				
			||||||
 | 
						// converted to `_dot_` and pre-existing underscores are converted to `__`.
 | 
				
			||||||
 | 
						DotsEscaping
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// ValueEncodingEscaping prepends the name with `U__` and replaces all invalid
 | 
				
			||||||
 | 
						// characters with the unicode value, surrounded by underscores. Single
 | 
				
			||||||
 | 
						// underscores are replaced with double underscores.
 | 
				
			||||||
 | 
						ValueEncodingEscaping
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						// EscapingKey is the key in an Accept or Content-Type header that defines how
 | 
				
			||||||
 | 
						// metric and label names that do not conform to the legacy character
 | 
				
			||||||
 | 
						// requirements should be escaped when being scraped by a legacy prometheus
 | 
				
			||||||
 | 
						// system. If a system does not explicitly pass an escaping parameter in the
 | 
				
			||||||
 | 
						// Accept header, the default NameEscapingScheme will be used.
 | 
				
			||||||
 | 
						EscapingKey = "escaping"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Possible values for Escaping Key:
 | 
				
			||||||
 | 
						AllowUTF8         = "allow-utf-8" // No escaping required.
 | 
				
			||||||
 | 
						EscapeUnderscores = "underscores"
 | 
				
			||||||
 | 
						EscapeDots        = "dots"
 | 
				
			||||||
 | 
						EscapeValues      = "values"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// MetricNameRE is a regular expression matching valid metric
 | 
				
			||||||
 | 
					// names. Note that the IsValidMetricName function performs the same
 | 
				
			||||||
 | 
					// check but faster than a match with this regular expression.
 | 
				
			||||||
 | 
					var MetricNameRE = regexp.MustCompile(`^[a-zA-Z_:][a-zA-Z0-9_:]*$`)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// A Metric is similar to a LabelSet, but the key difference is that a Metric is
 | 
					// A Metric is similar to a LabelSet, but the key difference is that a Metric is
 | 
				
			||||||
// a singleton and refers to one and only one stream of samples.
 | 
					// a singleton and refers to one and only one stream of samples.
 | 
				
			||||||
type Metric LabelSet
 | 
					type Metric LabelSet
 | 
				
			||||||
@@ -86,17 +155,302 @@ func (m Metric) FastFingerprint() Fingerprint {
 | 
				
			|||||||
	return LabelSet(m).FastFingerprint()
 | 
						return LabelSet(m).FastFingerprint()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// IsValidMetricName returns true iff name matches the pattern of MetricNameRE.
 | 
					// IsValidMetricName returns true iff name matches the pattern of MetricNameRE
 | 
				
			||||||
 | 
					// for legacy names, and iff it's valid UTF-8 if the UTF8Validation scheme is
 | 
				
			||||||
 | 
					// selected.
 | 
				
			||||||
 | 
					func IsValidMetricName(n LabelValue) bool {
 | 
				
			||||||
 | 
						switch NameValidationScheme {
 | 
				
			||||||
 | 
						case LegacyValidation:
 | 
				
			||||||
 | 
							return IsValidLegacyMetricName(n)
 | 
				
			||||||
 | 
						case UTF8Validation:
 | 
				
			||||||
 | 
							if len(n) == 0 {
 | 
				
			||||||
 | 
								return false
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return utf8.ValidString(string(n))
 | 
				
			||||||
 | 
						default:
 | 
				
			||||||
 | 
							panic(fmt.Sprintf("Invalid name validation scheme requested: %d", NameValidationScheme))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// IsValidLegacyMetricName is similar to IsValidMetricName but always uses the
 | 
				
			||||||
 | 
					// legacy validation scheme regardless of the value of NameValidationScheme.
 | 
				
			||||||
// This function, however, does not use MetricNameRE for the check but a much
 | 
					// This function, however, does not use MetricNameRE for the check but a much
 | 
				
			||||||
// faster hardcoded implementation.
 | 
					// faster hardcoded implementation.
 | 
				
			||||||
func IsValidMetricName(n LabelValue) bool {
 | 
					func IsValidLegacyMetricName(n LabelValue) bool {
 | 
				
			||||||
	if len(n) == 0 {
 | 
						if len(n) == 0 {
 | 
				
			||||||
		return false
 | 
							return false
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	for i, b := range n {
 | 
						for i, b := range n {
 | 
				
			||||||
		if !((b >= 'a' && b <= 'z') || (b >= 'A' && b <= 'Z') || b == '_' || b == ':' || (b >= '0' && b <= '9' && i > 0)) {
 | 
							if !isValidLegacyRune(b, i) {
 | 
				
			||||||
			return false
 | 
								return false
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return true
 | 
						return true
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// EscapeMetricFamily escapes the given metric names and labels with the given
 | 
				
			||||||
 | 
					// escaping scheme. Returns a new object that uses the same pointers to fields
 | 
				
			||||||
 | 
					// when possible and creates new escaped versions so as not to mutate the
 | 
				
			||||||
 | 
					// input.
 | 
				
			||||||
 | 
					func EscapeMetricFamily(v *dto.MetricFamily, scheme EscapingScheme) *dto.MetricFamily {
 | 
				
			||||||
 | 
						if v == nil {
 | 
				
			||||||
 | 
							return nil
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if scheme == NoEscaping {
 | 
				
			||||||
 | 
							return v
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						out := &dto.MetricFamily{
 | 
				
			||||||
 | 
							Help: v.Help,
 | 
				
			||||||
 | 
							Type: v.Type,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// If the name is nil, copy as-is, don't try to escape.
 | 
				
			||||||
 | 
						if v.Name == nil || IsValidLegacyMetricName(LabelValue(v.GetName())) {
 | 
				
			||||||
 | 
							out.Name = v.Name
 | 
				
			||||||
 | 
						} else {
 | 
				
			||||||
 | 
							out.Name = proto.String(EscapeName(v.GetName(), scheme))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						for _, m := range v.Metric {
 | 
				
			||||||
 | 
							if !metricNeedsEscaping(m) {
 | 
				
			||||||
 | 
								out.Metric = append(out.Metric, m)
 | 
				
			||||||
 | 
								continue
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							escaped := &dto.Metric{
 | 
				
			||||||
 | 
								Gauge:       m.Gauge,
 | 
				
			||||||
 | 
								Counter:     m.Counter,
 | 
				
			||||||
 | 
								Summary:     m.Summary,
 | 
				
			||||||
 | 
								Untyped:     m.Untyped,
 | 
				
			||||||
 | 
								Histogram:   m.Histogram,
 | 
				
			||||||
 | 
								TimestampMs: m.TimestampMs,
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							for _, l := range m.Label {
 | 
				
			||||||
 | 
								if l.GetName() == MetricNameLabel {
 | 
				
			||||||
 | 
									if l.Value == nil || IsValidLegacyMetricName(LabelValue(l.GetValue())) {
 | 
				
			||||||
 | 
										escaped.Label = append(escaped.Label, l)
 | 
				
			||||||
 | 
										continue
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									escaped.Label = append(escaped.Label, &dto.LabelPair{
 | 
				
			||||||
 | 
										Name:  proto.String(MetricNameLabel),
 | 
				
			||||||
 | 
										Value: proto.String(EscapeName(l.GetValue(), scheme)),
 | 
				
			||||||
 | 
									})
 | 
				
			||||||
 | 
									continue
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								if l.Name == nil || IsValidLegacyMetricName(LabelValue(l.GetName())) {
 | 
				
			||||||
 | 
									escaped.Label = append(escaped.Label, l)
 | 
				
			||||||
 | 
									continue
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								escaped.Label = append(escaped.Label, &dto.LabelPair{
 | 
				
			||||||
 | 
									Name:  proto.String(EscapeName(l.GetName(), scheme)),
 | 
				
			||||||
 | 
									Value: l.Value,
 | 
				
			||||||
 | 
								})
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							out.Metric = append(out.Metric, escaped)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return out
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func metricNeedsEscaping(m *dto.Metric) bool {
 | 
				
			||||||
 | 
						for _, l := range m.Label {
 | 
				
			||||||
 | 
							if l.GetName() == MetricNameLabel && !IsValidLegacyMetricName(LabelValue(l.GetValue())) {
 | 
				
			||||||
 | 
								return true
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if !IsValidLegacyMetricName(LabelValue(l.GetName())) {
 | 
				
			||||||
 | 
								return true
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return false
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						lowerhex = "0123456789abcdef"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// EscapeName escapes the incoming name according to the provided escaping
 | 
				
			||||||
 | 
					// scheme. Depending on the rules of escaping, this may cause no change in the
 | 
				
			||||||
 | 
					// string that is returned. (Especially NoEscaping, which by definition is a
 | 
				
			||||||
 | 
					// noop). This function does not do any validation of the name.
 | 
				
			||||||
 | 
					func EscapeName(name string, scheme EscapingScheme) string {
 | 
				
			||||||
 | 
						if len(name) == 0 {
 | 
				
			||||||
 | 
							return name
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						var escaped strings.Builder
 | 
				
			||||||
 | 
						switch scheme {
 | 
				
			||||||
 | 
						case NoEscaping:
 | 
				
			||||||
 | 
							return name
 | 
				
			||||||
 | 
						case UnderscoreEscaping:
 | 
				
			||||||
 | 
							if IsValidLegacyMetricName(LabelValue(name)) {
 | 
				
			||||||
 | 
								return name
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							for i, b := range name {
 | 
				
			||||||
 | 
								if isValidLegacyRune(b, i) {
 | 
				
			||||||
 | 
									escaped.WriteRune(b)
 | 
				
			||||||
 | 
								} else {
 | 
				
			||||||
 | 
									escaped.WriteRune('_')
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return escaped.String()
 | 
				
			||||||
 | 
						case DotsEscaping:
 | 
				
			||||||
 | 
							// Do not early return for legacy valid names, we still escape underscores.
 | 
				
			||||||
 | 
							for i, b := range name {
 | 
				
			||||||
 | 
								if b == '_' {
 | 
				
			||||||
 | 
									escaped.WriteString("__")
 | 
				
			||||||
 | 
								} else if b == '.' {
 | 
				
			||||||
 | 
									escaped.WriteString("_dot_")
 | 
				
			||||||
 | 
								} else if isValidLegacyRune(b, i) {
 | 
				
			||||||
 | 
									escaped.WriteRune(b)
 | 
				
			||||||
 | 
								} else {
 | 
				
			||||||
 | 
									escaped.WriteRune('_')
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return escaped.String()
 | 
				
			||||||
 | 
						case ValueEncodingEscaping:
 | 
				
			||||||
 | 
							if IsValidLegacyMetricName(LabelValue(name)) {
 | 
				
			||||||
 | 
								return name
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							escaped.WriteString("U__")
 | 
				
			||||||
 | 
							for i, b := range name {
 | 
				
			||||||
 | 
								if isValidLegacyRune(b, i) {
 | 
				
			||||||
 | 
									escaped.WriteRune(b)
 | 
				
			||||||
 | 
								} else if !utf8.ValidRune(b) {
 | 
				
			||||||
 | 
									escaped.WriteString("_FFFD_")
 | 
				
			||||||
 | 
								} else if b < 0x100 {
 | 
				
			||||||
 | 
									escaped.WriteRune('_')
 | 
				
			||||||
 | 
									for s := 4; s >= 0; s -= 4 {
 | 
				
			||||||
 | 
										escaped.WriteByte(lowerhex[b>>uint(s)&0xF])
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									escaped.WriteRune('_')
 | 
				
			||||||
 | 
								} else if b < 0x10000 {
 | 
				
			||||||
 | 
									escaped.WriteRune('_')
 | 
				
			||||||
 | 
									for s := 12; s >= 0; s -= 4 {
 | 
				
			||||||
 | 
										escaped.WriteByte(lowerhex[b>>uint(s)&0xF])
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									escaped.WriteRune('_')
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return escaped.String()
 | 
				
			||||||
 | 
						default:
 | 
				
			||||||
 | 
							panic(fmt.Sprintf("invalid escaping scheme %d", scheme))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// lower function taken from strconv.atoi
 | 
				
			||||||
 | 
					func lower(c byte) byte {
 | 
				
			||||||
 | 
						return c | ('x' - 'X')
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// UnescapeName unescapes the incoming name according to the provided escaping
 | 
				
			||||||
 | 
					// scheme if possible. Some schemes are partially or totally non-roundtripable.
 | 
				
			||||||
 | 
					// If any error is enountered, returns the original input.
 | 
				
			||||||
 | 
					func UnescapeName(name string, scheme EscapingScheme) string {
 | 
				
			||||||
 | 
						if len(name) == 0 {
 | 
				
			||||||
 | 
							return name
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						switch scheme {
 | 
				
			||||||
 | 
						case NoEscaping:
 | 
				
			||||||
 | 
							return name
 | 
				
			||||||
 | 
						case UnderscoreEscaping:
 | 
				
			||||||
 | 
							// It is not possible to unescape from underscore replacement.
 | 
				
			||||||
 | 
							return name
 | 
				
			||||||
 | 
						case DotsEscaping:
 | 
				
			||||||
 | 
							name = strings.ReplaceAll(name, "_dot_", ".")
 | 
				
			||||||
 | 
							name = strings.ReplaceAll(name, "__", "_")
 | 
				
			||||||
 | 
							return name
 | 
				
			||||||
 | 
						case ValueEncodingEscaping:
 | 
				
			||||||
 | 
							escapedName, found := strings.CutPrefix(name, "U__")
 | 
				
			||||||
 | 
							if !found {
 | 
				
			||||||
 | 
								return name
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							var unescaped strings.Builder
 | 
				
			||||||
 | 
						TOP:
 | 
				
			||||||
 | 
							for i := 0; i < len(escapedName); i++ {
 | 
				
			||||||
 | 
								// All non-underscores are treated normally.
 | 
				
			||||||
 | 
								if escapedName[i] != '_' {
 | 
				
			||||||
 | 
									unescaped.WriteByte(escapedName[i])
 | 
				
			||||||
 | 
									continue
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								i++
 | 
				
			||||||
 | 
								if i >= len(escapedName) {
 | 
				
			||||||
 | 
									return name
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								// A double underscore is a single underscore.
 | 
				
			||||||
 | 
								if escapedName[i] == '_' {
 | 
				
			||||||
 | 
									unescaped.WriteByte('_')
 | 
				
			||||||
 | 
									continue
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								// We think we are in a UTF-8 code, process it.
 | 
				
			||||||
 | 
								var utf8Val uint
 | 
				
			||||||
 | 
								for j := 0; i < len(escapedName); j++ {
 | 
				
			||||||
 | 
									// This is too many characters for a utf8 value.
 | 
				
			||||||
 | 
									if j > 4 {
 | 
				
			||||||
 | 
										return name
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									// Found a closing underscore, convert to a rune, check validity, and append.
 | 
				
			||||||
 | 
									if escapedName[i] == '_' {
 | 
				
			||||||
 | 
										utf8Rune := rune(utf8Val)
 | 
				
			||||||
 | 
										if !utf8.ValidRune(utf8Rune) {
 | 
				
			||||||
 | 
											return name
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										unescaped.WriteRune(utf8Rune)
 | 
				
			||||||
 | 
										continue TOP
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									r := lower(escapedName[i])
 | 
				
			||||||
 | 
									utf8Val *= 16
 | 
				
			||||||
 | 
									if r >= '0' && r <= '9' {
 | 
				
			||||||
 | 
										utf8Val += uint(r) - '0'
 | 
				
			||||||
 | 
									} else if r >= 'a' && r <= 'f' {
 | 
				
			||||||
 | 
										utf8Val += uint(r) - 'a' + 10
 | 
				
			||||||
 | 
									} else {
 | 
				
			||||||
 | 
										return name
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									i++
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								// Didn't find closing underscore, invalid.
 | 
				
			||||||
 | 
								return name
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return unescaped.String()
 | 
				
			||||||
 | 
						default:
 | 
				
			||||||
 | 
							panic(fmt.Sprintf("invalid escaping scheme %d", scheme))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func isValidLegacyRune(b rune, i int) bool {
 | 
				
			||||||
 | 
						return (b >= 'a' && b <= 'z') || (b >= 'A' && b <= 'Z') || b == '_' || b == ':' || (b >= '0' && b <= '9' && i > 0)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (e EscapingScheme) String() string {
 | 
				
			||||||
 | 
						switch e {
 | 
				
			||||||
 | 
						case NoEscaping:
 | 
				
			||||||
 | 
							return AllowUTF8
 | 
				
			||||||
 | 
						case UnderscoreEscaping:
 | 
				
			||||||
 | 
							return EscapeUnderscores
 | 
				
			||||||
 | 
						case DotsEscaping:
 | 
				
			||||||
 | 
							return EscapeDots
 | 
				
			||||||
 | 
						case ValueEncodingEscaping:
 | 
				
			||||||
 | 
							return EscapeValues
 | 
				
			||||||
 | 
						default:
 | 
				
			||||||
 | 
							panic(fmt.Sprintf("unknown format scheme %d", e))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func ToEscapingScheme(s string) (EscapingScheme, error) {
 | 
				
			||||||
 | 
						if s == "" {
 | 
				
			||||||
 | 
							return NoEscaping, fmt.Errorf("got empty string instead of escaping scheme")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						switch s {
 | 
				
			||||||
 | 
						case AllowUTF8:
 | 
				
			||||||
 | 
							return NoEscaping, nil
 | 
				
			||||||
 | 
						case EscapeUnderscores:
 | 
				
			||||||
 | 
							return UnderscoreEscaping, nil
 | 
				
			||||||
 | 
						case EscapeDots:
 | 
				
			||||||
 | 
							return DotsEscaping, nil
 | 
				
			||||||
 | 
						case EscapeValues:
 | 
				
			||||||
 | 
							return ValueEncodingEscaping, nil
 | 
				
			||||||
 | 
						default:
 | 
				
			||||||
 | 
							return NoEscaping, fmt.Errorf("unknown format scheme " + s)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										6
									
								
								vendor/github.com/prometheus/common/model/signature.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								vendor/github.com/prometheus/common/model/signature.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -22,10 +22,8 @@ import (
 | 
				
			|||||||
// when calculating their combined hash value (aka signature aka fingerprint).
 | 
					// when calculating their combined hash value (aka signature aka fingerprint).
 | 
				
			||||||
const SeparatorByte byte = 255
 | 
					const SeparatorByte byte = 255
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var (
 | 
					// cache the signature of an empty label set.
 | 
				
			||||||
	// cache the signature of an empty label set.
 | 
					var emptyLabelSignature = hashNew()
 | 
				
			||||||
	emptyLabelSignature = hashNew()
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
// LabelsToSignature returns a quasi-unique signature (i.e., fingerprint) for a
 | 
					// LabelsToSignature returns a quasi-unique signature (i.e., fingerprint) for a
 | 
				
			||||||
// given label set. (Collisions are possible but unlikely if the number of label
 | 
					// given label set. (Collisions are possible but unlikely if the number of label
 | 
				
			||||||
 
 | 
				
			|||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user