From 4d49ea4cad4739344dc9bab8796b8aa7783f4b42 Mon Sep 17 00:00:00 2001 From: Harvey Xia Date: Tue, 29 Oct 2024 10:58:50 -0400 Subject: [PATCH] initial open source --- .gitattributes | 4 + .gitignore | 36 + CODEOWNERS | 1 + Makefile | 63 + README.md | 88 + docs/README.md | 3 + docs/developer/updating_resources.md | 3 + docs/guide.md | 3 + docs/imgs/fsm-flow.png | Bin 0 -> 121118 bytes docs/imgs/manager.png | Bin 0 -> 104651 bytes docs/imgs/objs.png | Bin 0 -> 212409 bytes docs/imgs/states.png | Bin 0 -> 124945 bytes docs/operator/labels.md | 3 + go.mod | 83 + go.sum | 250 ++ pkg/bootstrap/bootstrap.go | 233 ++ pkg/bootstrap/bootstrap_test.go | 27 + pkg/encoding/json/decode.go | 1309 +++++++++ pkg/encoding/json/decode_test.go | 2574 +++++++++++++++++ pkg/encoding/json/doc.go | 19 + pkg/encoding/json/encode.go | 1425 +++++++++ pkg/encoding/json/encode_test.go | 1210 ++++++++ pkg/encoding/json/example_marshaling_test.go | 73 + pkg/encoding/json/example_test.go | 310 ++ .../json/example_text_marshaling_test.go | 67 + pkg/encoding/json/fold.go | 144 + pkg/encoding/json/fold_test.go | 116 + pkg/encoding/json/fuzz.go | 43 + pkg/encoding/json/indent.go | 143 + pkg/encoding/json/number_test.go | 133 + pkg/encoding/json/scanner.go | 608 ++++ pkg/encoding/json/scanner_test.go | 301 ++ pkg/encoding/json/stream.go | 513 ++++ pkg/encoding/json/stream_test.go | 474 +++ pkg/encoding/json/tables.go | 218 ++ pkg/encoding/json/tagkey_test.go | 120 + pkg/encoding/json/tags.go | 44 + pkg/encoding/json/tags_test.go | 28 + pkg/encoding/json/testdata/code.json.gz | Bin 0 -> 120432 bytes pkg/errors/ignore.go | 21 + pkg/errors/status.go | 28 + pkg/fsm/builder.go | 259 ++ pkg/fsm/claim_builder.go | 289 ++ pkg/fsm/handler/observe_enqueue.go | 85 + pkg/fsm/handler/observed_event_handler.go | 129 + .../handler/observed_event_handler_test.go | 556 ++++ pkg/fsm/handler/types.go | 37 + pkg/fsm/internal/reconciler.go | 305 ++ pkg/fsm/internal/reconciler_claim.go | 190 ++ pkg/fsm/internal/reconciler_claim_test.go | 243 ++ .../test/claim/claim_controller_suite_test.go | 80 + .../test/claim/claim_controller_test.go | 207 ++ .../test/claim/test_claim_fsm_controller.go | 119 + .../test/core/controller_suite_test.go | 86 + pkg/fsm/internal/test/core/controller_test.go | 778 +++++ .../internal/test/core/test_fsm_reconciler.go | 221 ++ pkg/fsm/io/outputs.go | 159 + pkg/fsm/metrics/metrics.go | 128 + pkg/fsm/metrics/sink.go | 228 ++ pkg/fsm/metrics/types.go | 139 + pkg/fsm/test/chan/chan_test.go | 167 ++ pkg/fsm/types/core.go | 37 + pkg/fsm/types/options.go | 40 + pkg/fsm/types/output.go | 130 + pkg/fsm/types/output_test.go | 98 + pkg/fsm/types/results.go | 164 ++ pkg/fsm/types/transitions.go | 340 +++ pkg/fsm/types/transitions_test.go | 393 +++ pkg/gvk/getter.go | 194 ++ pkg/gvk/getter_test.go | 119 + pkg/gvk/resources_suite_test.go | 85 + pkg/internal/scheme/scheme.go | 40 + pkg/internal/tests/api/test/scheme.go | 19 + .../api/test/v1alpha1/groupversion_info.go | 41 + .../tests/api/test/v1alpha1/testclaim_type.go | 81 + .../api/test/v1alpha1/testclaimed_type.go | 71 + .../test/v1alpha1/zz_generated.deepcopy.go | 230 ++ ...test.infrared.reddit.com_testclaimeds.yaml | 146 + .../test.infrared.reddit.com_testclaims.yaml | 158 + pkg/internal/tests/dir.go | 13 + pkg/io/applicator.go | 256 ++ pkg/io/applicator_test.go | 310 ++ pkg/io/errors.go | 9 + pkg/io/io_suite_test.go | 41 + pkg/io/options.go | 73 + pkg/json/merge.go | 41 + pkg/json/merge_test.go | 71 + pkg/kubeconfig/errors.go | 25 + pkg/kubeconfig/secret.go | 65 + pkg/kubeconfig/secret_test.go | 118 + pkg/logging/logging.go | 38 + pkg/manifest/manifest_utils.go | 59 + pkg/manifest/manifest_utils_test.go | 81 + pkg/maps/maps.go | 13 + pkg/maps/maps_test.go | 108 + pkg/meta/finalizers.go | 54 + pkg/meta/labels.go | 72 + pkg/meta/meta.go | 77 + pkg/meta/namespace.go | 11 + pkg/meta/owner.go | 30 + pkg/meta/scope.go | 24 + pkg/must/must.go | 9 + pkg/ratelimiter/ratelimit.go | 40 + pkg/sets/comparable_set.go | 173 ++ pkg/sets/comparable_set_test.go | 307 ++ pkg/sets/object_set.go | 232 ++ pkg/sets/object_set_test.go | 349 +++ pkg/status/conditions.go | 88 + pkg/status/conditions_test.go | 147 + pkg/test/client.go | 101 + pkg/test/envtest.go | 229 ++ pkg/test/kubeconfig.go | 88 + pkg/test/manifest.go | 37 + pkg/test/matchers.go | 94 + pkg/test/matchers_test.go | 121 + pkg/test/meta.go | 45 + pkg/test/status.go | 21 + pkg/test/util.go | 59 + pkg/yaml/marshal.go | 26 + tools/go.mod | 81 + tools/go.sum | 320 ++ tools/main.go | 12 + 122 files changed, 21677 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 CODEOWNERS create mode 100644 Makefile create mode 100644 README.md create mode 100644 docs/README.md create mode 100644 docs/developer/updating_resources.md create mode 100644 docs/guide.md create mode 100644 docs/imgs/fsm-flow.png create mode 100644 docs/imgs/manager.png create mode 100644 docs/imgs/objs.png create mode 100644 docs/imgs/states.png create mode 100644 docs/operator/labels.md create mode 100644 go.mod create mode 100644 go.sum create mode 100644 pkg/bootstrap/bootstrap.go create mode 100644 pkg/bootstrap/bootstrap_test.go create mode 100644 pkg/encoding/json/decode.go create mode 100644 pkg/encoding/json/decode_test.go create mode 100644 pkg/encoding/json/doc.go create mode 100644 pkg/encoding/json/encode.go create mode 100644 pkg/encoding/json/encode_test.go create mode 100644 pkg/encoding/json/example_marshaling_test.go create mode 100644 pkg/encoding/json/example_test.go create mode 100644 pkg/encoding/json/example_text_marshaling_test.go create mode 100644 pkg/encoding/json/fold.go create mode 100644 pkg/encoding/json/fold_test.go create mode 100644 pkg/encoding/json/fuzz.go create mode 100644 pkg/encoding/json/indent.go create mode 100644 pkg/encoding/json/number_test.go create mode 100644 pkg/encoding/json/scanner.go create mode 100644 pkg/encoding/json/scanner_test.go create mode 100644 pkg/encoding/json/stream.go create mode 100644 pkg/encoding/json/stream_test.go create mode 100644 pkg/encoding/json/tables.go create mode 100644 pkg/encoding/json/tagkey_test.go create mode 100644 pkg/encoding/json/tags.go create mode 100644 pkg/encoding/json/tags_test.go create mode 100644 pkg/encoding/json/testdata/code.json.gz create mode 100644 pkg/errors/ignore.go create mode 100644 pkg/errors/status.go create mode 100644 pkg/fsm/builder.go create mode 100644 pkg/fsm/claim_builder.go create mode 100644 pkg/fsm/handler/observe_enqueue.go create mode 100644 pkg/fsm/handler/observed_event_handler.go create mode 100644 pkg/fsm/handler/observed_event_handler_test.go create mode 100644 pkg/fsm/handler/types.go create mode 100644 pkg/fsm/internal/reconciler.go create mode 100644 pkg/fsm/internal/reconciler_claim.go create mode 100644 pkg/fsm/internal/reconciler_claim_test.go create mode 100644 pkg/fsm/internal/test/claim/claim_controller_suite_test.go create mode 100644 pkg/fsm/internal/test/claim/claim_controller_test.go create mode 100644 pkg/fsm/internal/test/claim/test_claim_fsm_controller.go create mode 100644 pkg/fsm/internal/test/core/controller_suite_test.go create mode 100644 pkg/fsm/internal/test/core/controller_test.go create mode 100644 pkg/fsm/internal/test/core/test_fsm_reconciler.go create mode 100644 pkg/fsm/io/outputs.go create mode 100644 pkg/fsm/metrics/metrics.go create mode 100644 pkg/fsm/metrics/sink.go create mode 100644 pkg/fsm/metrics/types.go create mode 100644 pkg/fsm/test/chan/chan_test.go create mode 100644 pkg/fsm/types/core.go create mode 100644 pkg/fsm/types/options.go create mode 100644 pkg/fsm/types/output.go create mode 100644 pkg/fsm/types/output_test.go create mode 100644 pkg/fsm/types/results.go create mode 100644 pkg/fsm/types/transitions.go create mode 100644 pkg/fsm/types/transitions_test.go create mode 100644 pkg/gvk/getter.go create mode 100644 pkg/gvk/getter_test.go create mode 100644 pkg/gvk/resources_suite_test.go create mode 100644 pkg/internal/scheme/scheme.go create mode 100644 pkg/internal/tests/api/test/scheme.go create mode 100644 pkg/internal/tests/api/test/v1alpha1/groupversion_info.go create mode 100644 pkg/internal/tests/api/test/v1alpha1/testclaim_type.go create mode 100644 pkg/internal/tests/api/test/v1alpha1/testclaimed_type.go create mode 100644 pkg/internal/tests/api/test/v1alpha1/zz_generated.deepcopy.go create mode 100644 pkg/internal/tests/cluster/crd/bases/test.infrared.reddit.com_testclaimeds.yaml create mode 100644 pkg/internal/tests/cluster/crd/bases/test.infrared.reddit.com_testclaims.yaml create mode 100644 pkg/internal/tests/dir.go create mode 100644 pkg/io/applicator.go create mode 100644 pkg/io/applicator_test.go create mode 100644 pkg/io/errors.go create mode 100644 pkg/io/io_suite_test.go create mode 100644 pkg/io/options.go create mode 100644 pkg/json/merge.go create mode 100644 pkg/json/merge_test.go create mode 100644 pkg/kubeconfig/errors.go create mode 100644 pkg/kubeconfig/secret.go create mode 100644 pkg/kubeconfig/secret_test.go create mode 100644 pkg/logging/logging.go create mode 100644 pkg/manifest/manifest_utils.go create mode 100644 pkg/manifest/manifest_utils_test.go create mode 100644 pkg/maps/maps.go create mode 100644 pkg/maps/maps_test.go create mode 100644 pkg/meta/finalizers.go create mode 100644 pkg/meta/labels.go create mode 100644 pkg/meta/meta.go create mode 100644 pkg/meta/namespace.go create mode 100644 pkg/meta/owner.go create mode 100644 pkg/meta/scope.go create mode 100644 pkg/must/must.go create mode 100644 pkg/ratelimiter/ratelimit.go create mode 100644 pkg/sets/comparable_set.go create mode 100644 pkg/sets/comparable_set_test.go create mode 100644 pkg/sets/object_set.go create mode 100644 pkg/sets/object_set_test.go create mode 100644 pkg/status/conditions.go create mode 100644 pkg/status/conditions_test.go create mode 100644 pkg/test/client.go create mode 100644 pkg/test/envtest.go create mode 100644 pkg/test/kubeconfig.go create mode 100644 pkg/test/manifest.go create mode 100644 pkg/test/matchers.go create mode 100644 pkg/test/matchers_test.go create mode 100644 pkg/test/meta.go create mode 100644 pkg/test/status.go create mode 100644 pkg/test/util.go create mode 100644 pkg/yaml/marshal.go create mode 100644 tools/go.mod create mode 100644 tools/go.sum create mode 100644 tools/main.go diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..2644a6d --- /dev/null +++ b/.gitattributes @@ -0,0 +1,4 @@ +*.star linguist-language=Starlark + +# ignore YAML files generated by kubebuilder +pkg/internal/tests/cluster/crd/** linguist-generated=true diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f6c781b --- /dev/null +++ b/.gitignore @@ -0,0 +1,36 @@ + +# Binaries for programs and plugins +*.exe +*.exe~ +*.dll +*.so +*.dylib +bin +testbin/* + +# Test binary, docker with `go test -c` +*.test + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out + +# Kubernetes Generated files - skip generated files, except for vendored files +!vendor/**/zz_generated.* + +# editor and IDE paraphernalia +.idea +*.swp +*.swo +*~ +tilt_modules/ + +*.kubeconfig + +# local development tilt settings +tilt_config.json + +# goreleaser +dist/ + +# terraform +.terraform/ diff --git a/CODEOWNERS b/CODEOWNERS new file mode 100644 index 0000000..517bd1c --- /dev/null +++ b/CODEOWNERS @@ -0,0 +1 @@ +* @reddit/achilles diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..0949b66 --- /dev/null +++ b/Makefile @@ -0,0 +1,63 @@ +SHELL:=/bin/bash + +PWD := $(PWD) +CONTROLLER_GEN := $(PWD)/bin/controller-gen +CONTROLLER_GEN_CMD := $(CONTROLLER_GEN) +GOSIMPORTS := $(PWD)/bin/gosimports +GOSIMPORTS_CMD := $(GOSIMPORTS) +STATICCHECK := $(PWD)/bin/staticcheck +STATICCHECK_CMD := $(STATICCHECK) + +# ENVTEST_K8S_VERSION refers to the version of kubebuilder assets to be downloaded by envtest binary. +ENVTEST_K8S_VERSION = 1.29 +ENVTEST := $(PWD)/bin/setup-envtest +ENVTEST_CMD := $(ENVTEST) + +# go-get-tool will 'go get' any package $2 and install it to $1. +PROJECT_DIR := $(shell dirname $(abspath $(lastword $(MAKEFILE_LIST)))) +define go-get-tool +@[ -f $(1) ] || { \ +set -e ;\ +echo "Downloading $(2)" ;\ +GOBIN=$(PROJECT_DIR)/bin go install -modfile=tools/go.mod $(2) ;\ +} +endef + +.PHONY: test-manifests +test-manifests: $(CONTROLLER_GEN) + $(CONTROLLER_GEN) rbac:roleName=manager-role crd webhook paths="./pkg/internal/tests/api/..." output:crd:artifacts:config=pkg/internal/tests/cluster/crd/bases + $(CONTROLLER_GEN) object paths="./pkg/internal/tests/api/..." + +.PHONY: generate +generate: test-manifests $(GOSIMPORTS) + go generate ./... + $(GOSIMPORTS_CMD) -local github.com/reddit/achilles-sdk -l -w . + +KUBEBUILDER_ASSETS = $(shell $(ENVTEST_CMD) --arch=amd64 use $(ENVTEST_K8S_VERSION) -p path) +.PHONY: test +test: $(ENVTEST) test-manifests + KUBEBUILDER_ASSETS="$(KUBEBUILDER_ASSETS)" go test -race ./... + +.PHONY: lint +lint: $(STATICCHECK) $(GOSIMPORTS) + cd tools && go mod tidy + go mod tidy + go fmt ./... + go list ./... | grep -v encoding/json | xargs go vet # ignore forked encoding/json pkg + go list ./... | grep -v encoding/json | xargs $(STATICCHECK_CMD) # ignore forked encoding/json pkg + $(GOSIMPORTS_CMD) -local github.com/reddit/achilles-sdk -l -w . + +$(CONTROLLER_GEN): + $(call go-get-tool,$(CONTROLLER_GEN),sigs.k8s.io/controller-tools/cmd/controller-gen) + +$(KUSTOMIZE): + $(call go-get-tool,$(KUSTOMIZE),sigs.k8s.io/kustomize/kustomize/v4) + +$(GOSIMPORTS): + $(call go-get-tool,$(GOSIMPORTS),github.com/rinchsan/gosimports/cmd/gosimports) + +$(STATICCHECK): + $(call go-get-tool,$(STATICCHECK),honnef.co/go/tools/cmd/staticcheck) + +$(ENVTEST): + $(call go-get-tool,$(ENVTEST),sigs.k8s.io/controller-runtime/tools/setup-envtest) diff --git a/README.md b/README.md new file mode 100644 index 0000000..c2bc477 --- /dev/null +++ b/README.md @@ -0,0 +1,88 @@ +# Achilles SDK +[![Reticle Badge](https://reticle.snooguts.net/api/reticle_badge?repo_name=reddit/achilles-sdk)](https://reticle.snooguts.net/repos/reddit/achilles-sdk) + +> Achilles home: [go/achilles](https://go.snooguts.net/achilles) + +The Achilles SDK offers efficient +[controller](https://kubernetes.io/docs/concepts/architecture/controller/) and +[operator](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/) +creation by allowing engineers to focus on defining their automation business logic, modeled as transitions between resources states (i.e. an FSM). This +significantly lessens the knowledge of controller and Kubernetes plumbing +typically required to build controllers. It also forces standardization to +ensure consistency amongst controllers at Reddit, providing common functionality +such as metrics, logging, reusable API structs, etc.. + +As an example, assume you wanted to create a declarative API that allows +developers to request object storage for their application. The API you wish to +expose may look something like: + +```yaml +apiVersion: infra.snooguts.net/v1alpha1 +kind: ObjectStorage +metadata: + name: persistent-storage + namespace: web-apps +spec: + encrypted: true + region: us-east + versioning: true +``` + +To define this API, you'll use a common-convention with Go structs to +automatically generate the +[CustomResourceDefinition](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/#:~:text=The%20CustomResourceDefinition%20API%20resource%20allows,storage%20of%20your%20custom%20resource.) +(API). Then you'll define the states and transition logic, such as: + +![FSM Flow](docs/imgs/fsm-flow.png) + +Along with doing the underlying plumbing to support this controller, +achilles-sdk is providing you logging, metrics, rate-limiting, and +more. + +Lastly, in modeling your controller logic this way, you end up with a clean +directed graph that models a +[finite-state-machine](https://en.wikipedia.org/wiki/Finite-state_machine) +(FSM). This can significantly reduce the cognitive overhead of reasoning about +what a controller is doing or the state an object is in. More on FSM in the +documentation. + +## Documentation + +* [Creating a controller](https://pages.github.snooguts.net/reddit/achilles-docs/dev/sdk/tutorial/) + * Comprehensive guide on the implementation of a controller with + achilles-sdk. +* [Reconciler (FSM) Framework](docs/README.md) + * Overview of how achilles-sdk works by offering a finite-state machine + orchestrated with a Kubernetes reconciler. + +## How to Contribute +1. Clone the repo locally. +2. Create a new branch + - Make sure the branch is pushed to this repo, rather than from a fork. This allows us to easily test the branch code in our Tilt environment. +3. Make changes and test. +4. Submit a Pull Request with an appropriate description. +5. Merge PR once it is approved. + +## Releasing +After incorporating your changes into the achilles-sdk repository, you can publish a new release to make the updated functionality available for repos that consume achilles-sdk such as [achilles](https://github.snooguts.net/reddit/achilles). + +#### Publish a new release: +1. Navigate to the [GHE releases page for achilles-sdk](https://github.com/reddit/achilles-sdk/releases) and click the “Draft a new release” button in the top right +2. Choose the appropriate next semantic version (`major.minor.patch`): + - If there are breaking code changes (e.g., new function signatures for public functions), increment the minor version if the release is pre-1.0, otherwise increment the major version + - If there are no breaking changes, increment the patch version if pre-1.0, otherwise increment the minor version if adding functionality or the patch version if fixing bugs + - To create a tag with the new version, click the “Choose a tag” button. Enter the new version number and click “Create new tag: `$your-tagname-here` on publish.” +3. Click the “Generate release notes” button and verify that the changes align with expectations. If everything looks good, publish the release + +#### Make updated functionality available for repos like achilles: +1. Create a branch in the achilles repository +2. Run the following command to upgrade the achilles-sdk version (replace v0.7.1 with the new version number): + `go get github.com/reddit/achilles-sdk@v0.7.1` +3. Run a `git diff` and validate that the changes made to `go.mod` and `go.sum` are as expected. The diff should look something like the changes in this [PR](https://github.snooguts.net/reddit/achilles/pull/1135/files). +4. Create a PR in the achilles repo with the newly upgraded achilles-sdk version + +Note: There are several other repos that also consume achilles-sdk but the current pattern is to allow consumers to update at their own leisure. The main repo that should for sure be updated to adopt the latest features is `reddit/achilles`. + +## Questions + +If you have any questions, please reach out to the `#achilles` Slack channel. diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..2b3c762 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,3 @@ +# FSM Reconciler Framework + +This guide has moved to the [Achilles docs website](https://pages.github.snooguts.net/reddit/achilles-docs/dev-guides/sdk-apply-objects/). diff --git a/docs/developer/updating_resources.md b/docs/developer/updating_resources.md new file mode 100644 index 0000000..fe6af3d --- /dev/null +++ b/docs/developer/updating_resources.md @@ -0,0 +1,3 @@ +# Updating Resources + +This guide has moved to the [Achilles docs website](https://pages.github.snooguts.net/reddit/achilles-docs/dev-guides/sdk-apply-objects/). diff --git a/docs/guide.md b/docs/guide.md new file mode 100644 index 0000000..20a069c --- /dev/null +++ b/docs/guide.md @@ -0,0 +1,3 @@ +# Creating a Controller + +This guide has moved to the [Achilles docs website](https://pages.github.snooguts.net/reddit/achilles-docs/dev/sdk/tutorial/). diff --git a/docs/imgs/fsm-flow.png b/docs/imgs/fsm-flow.png new file mode 100644 index 0000000000000000000000000000000000000000..254348b8754f09270ea6c628bf7f74c48334623b GIT binary patch literal 121118 zcmeFa2UJttwlE5a6cGXW00jgD5fK5A-cb>xD~NzJ=~6=PEg&i?0xBTADAJ|(8jup{ z(mSCDA+$(ILI_FT2EOl{bMHBKob!+O?il}ggNzZf>fC$QHP>8oZ{9r6R;4||dWM9A zgjVgovMve987UHyQ%+PAK+F29=rRe(Sq1yMcOR(Tz038$-Nn}4$%cgF{+l=hN<+O) z<}~Av@0FgBl7D?MOa6gXNu5e?H;U`}Woml$*P$7fsw_+<^@h!_ir!u`BrVN&oqDg- z!u&?=wKdC@q6RfmQ%oFEt0@t?)1OF8k@j)ENHVPLs{F;|(WMYMi_cOLJ z%-WgW(2#Pe`<3&*PZjdgN9i93VcN?uv7vBr>69Le8|D$; zuAQbjqg{PErB~ZH$>kE| z+ph6yod3vGtx8*S`bL6i#;H=CXhwR9Qqs2D-=}}Lo=#7@Ol5iZtPhop{(~P;;f5>= zFAttKOTFy1bqoIXon`XB7NS*B5lqt7JfGUs7bU}`J_(;i$FEu4ySR{H_%g`ItmUVFX|EBP z_g6BcaL-%14{%DyMR)71*2<^x*gLl0-=Bj#HQD?5#P=XX2|HP87ie)O;5z>$(sA$VrIcWByLdKL!<5emStUEw#1ar2VWyjwA3Q73B?j zk`*N~N0}d#6G}e^#>Od$ovP1CC|}>cI(I7Iw5S-5ngsU?5c@R>@SQfw)2%xPHkpAB z$g#z(-x?|@FP05(PrPIQO}-#UPvJffe&h7Xb=;WS_w2yy1 zm-AN9%Z8-3Yg@ugGYxq%tON}iN24yqEX>cK46Ev2HMDmvbcV`22k)`fl?`e#OO48) zWr9CMGi~Rnrw@e02`61;wzg#&O#B_$oKybNB>bT#pDLdn$yX!`c5zMX-Fjo_N(C6c zj3*88>7JXL`+zigMni&|p5FlP$=daX6rZyp>ASS7-geLZT)YJNUhIP~pCpc(WVX$$ zMNsM*QsFsDvfI~QlWlQb)O;~u*AgT|q1Sx&CQIyd_mZ>UDAro8mN2c82Q&x&q>6eT zGk3OzN+@h??%cGz{M_jkN@TMg`R)5uOrJ0NzZS6!9lxwib!zK2*$3Av%xWrw?=_WQ z-+zDchul|oqtI`vRb1jf6n@=wKQA5a$zA=P^1kpkEB1wD?wS0TtY1E@Jc|vzHE>gm zBQ?bKOU!_!r$QaMX~g5q`T>gFEB*|PQQn!tKS|F%?MgUj`+UOc?7NruEcgv6u6Ed3 z*chIE964gq`&-7my{=SYokzRPUg}bHxU3YpPIK*^bs%%o1@mZR8{2P*gX;tmBoxAs zOMdG4rIwiHtM7QM&u7!CQ!~BTcyaf|&~LNV%MCo|-^eHne35NniFq^8hG=VVqiyqF zptj`OVsHyl=0<#2zd!r++WGKD_pkF7@@!nKd|&k5|2}7IY}~uJl-TF7y0I_RdDWTJ z>tmw?OdtB^? zGP57h(}ez61=O=Wn1O7j&_b1 z<(HeoU-jiMyy8jV+2di3%w==4X$zS7P#0VmICE>pe`c*NeRst_)L+`a8^wy+L@e%C z?ThT|?Mkkuk0ROf#0MR(_*hT;!1K7UWl&U6lu``QR12*M7t^2pIGZ|~ zHyf3W>A7Zmw)||lzHOl`ez{|rVOg}tvDd};z2F6ABWA}NeNP&yE6Oy>OrB0W!}h3; zy#?tz={tIjB{^(3%1_iy?kCX>yt0U~DsNdX6LeT}NVYMy59mBs=~2!&4k}q=zjt9t zL|rQ1|51G7Tlt};A5Ei#(6FexHFw|K&1~%+SkBZ_5#|i?-j!4}fSN!-Q9d2dqNp$F z-OBdsapW`RE7Hpv61U6uc)#NWzX~@H@)in=j}($LwJ%~QqA@Wxh1Av7znNK`_MhpU z8JaGbuD|f)-LnqM4r#jQ;Si`(bS4L<{EQrpJSKp!WP^-btn6N!Ff1rND4pt1*p@&o z`?_pxqCexlVx743 zTS#q4FNG$BQiracLQ*DD*iej6peXApbm$Zq?od(F7;y}?OIUkMh_4eKV16ck23cIU zaI;uz<#;vqDxx)+=jZF6uj3eecm%m$eu#X?_4ZQbtyQxM{oP+HJR)rgD+yf*e5F>F zc5P{qneAF{rp?2dU(1uzdW&Yu+&<>eGU1_q&Bmt5}ho)X;~Ir##PJz zGWKIanY_)@z`4DV#Q>Uf;2A_8C3+IFi3gyb(nxv0fJB2N_JVX#bIu zB>KKjyI36wFRO8^5%vvk&~Gqnk_4Y7+Q0JYc>B&SaW+vvG@v}N{Ce3w`HdF;mV)*7 z>sk{?k1y`tzs@dST^fb+FJ&!VVs<#=@dAWZ!RqbE-t+#V`w(N@-&w$iiD+$`qIv(E z`n1-|C%^ADnOX{B?`>!N$jL2RX^m~;r_6THWYPwu+sc9lDstLyw?nj`IUYIHeK!+D zd^*AsdlHRpFP9J6RrX0F%Y(i9Q|6>);kwJqJ^049QtNx2Q+{eYNpQBlbW!4fa0_Jk zQ~sy78uiS+g5wqR=GP3zOMmzc)ZK%1`P#5_UFsI-g4|dZYWlsFU_M5WskvgM2Gy<3 zVvA>pr;eX7+^i3TpNV8@7vLy-XE;&vwkh9fWNIYlaeA?9-gw2UGL^FI0MOoKw%797 zr$Strf+HTKPVCyh9+rPkA1V1;!enBly3{#lK6_g$U4ljeHhsP!>+@t;ouz=ApqcPhyzNILu@>${6Dj%QK&F%m)wAjeR7$|Qn zPZ&mnR!1wq;;WDygc5uqMhTUjo!unO0iIz96NDel&+Wmtu3%^m92-D+z+oZwpmO$OR# zv^D6^icyeBlh3fe7g7Xvl64_)d`S*6^NvuV{{)YCxF3up%e10seBO9o{sk zC{Fn1Z;#)eGYJVg4krKWK&-WejNR;(RUt>se%XeHa$rN<<#SPwh z0T1c@U_P`n*aG3-7KPKf5vNb(< zN^%+~kpf=@QntU9RYI#~r=ganjFk&W$imvi(niP^T` zVY4td*U=D9M|o~Ttp{9pUEFQBB!q4X-Q-p{!^OoV=WcB)qpPg)=X9VZ&;88P(^W=T z*vH35$VXJj#obO=L|R%}_~tF)Tek#(5rQ6m&Yl*&g3ca1$3Xsqqio}0iPQ>|6!)#-)G*E5cw}t|Do%@Pu2IZalh*V01o0?C?Wc1^l^o z{Cimb705Vr8R%CcQB%JC$d`0|hB`$|-|O1%Ztj9I>T5!;X$mNK7SwNMEHH0T@15rz zP=4qddV&05D-D?gH}@v1(!EH(&F63T+L&6H9+IAV&3%UZTE;iBvZki69V1bXfTsL? zTYqhRJPtEdTwj;JHcT|xOlbK^PT#c>)H78qzwQ099H(o|NMrOxKctWpsxH3^#A!B0EG+x`R$OO zpz!ZWd%}hPK;=#Z=|qtJwQWAJNdLi-b+Rt}`?dW2H$?eQF7h7{w%TV91=~O_zBblIcx@~CPMsV`d=#BkAXoQ2gcrqJ%6io8uvnM*npmP zpyzLuzrp$+0N0i1hgq?dT{)r^74IDF=$@x0!0 z=TqDLL)-Y7yrG3P{hUilmju8%0O7w%|7%3~*MJev669Fk`{Im4` zfu#IvqWo*XSv1DtQr?#}EUy4@jnD^Vvri*+!T~vF16T*>`d_90HKP1$z@8Rs>e4?3 zn!S0Bqb&|+O#GJO5POT!=|0H9>RFkMn#HIi`^^!sUb@pXtilG0^_~J%`(ca#`zND%N(=@$Vk4%%8c5MZQzUK2_mrlbv`!)P>D<79! z^l2#B0<<{zA58H7zUg7KCkU!ua4evJ8e-{b|NTDhFDK;Y`JZ#oF8l|}?_Yk~Jh_hUveAw`ij}{=H}Xw;A->N?}$tu~e`B^Em(tXHQW08wLM$;e-o+$^5^j z&!O{hB1k9d{Lj*HVv+s>V}G(P{QLFlM37Dd>3=xbI$51hR_A|Sdryq&iBbL6=>jL7 z>OX7CKehb7F{)?v=5pX>Qav<2Bgb%?pPz9m?LEc3i)y$K+J624QRvgRG2SC@u@$JD z6M&5r=<7TdpXNLEASch{@=bL~JAWi&W#`M=F!>XTVQ4>iUjUKY8hsJh!1vdB=tbTX zJj%DWZp%rgA(TNd-Ts5>*dFfQQNm9}h*i~5p{xZYDF2MtmXi<1lq<=d<uXfr~6AxpP zfQkulXQY`h$V0W&mBJRkeoYNOR=Wg)=I7H5a%qQA9U!FOaK`X`0kusvFAIRY-x>1b zR{zTxgpGTw#-=a)%b1eGjxh=~B3tb=;^KJq$IrP7w*;SaAB}BgEa8%DNU66xx|Na( zWX!*q?~XVMy$ad)5qZ>j^(bs{Aq}YcN~bqjqJCAp03Qb5fS3{!!vme7*J)OKK!S^# z?qJ{DWAgL}Jb3bc%3-Y#F5eOJCxuH+JJ-y=^4z+|(yIhqFRV4JnQRr-+{wUt1fS}9 z27xvyf%lAte68|tZH*&9GB+~P)?K$LIO-^%p>!niI!CQvsA8FaRR!#|X1?G%cdUn8 z8O?D9W_c|lPt9ID(ow=2_jj88dENBW!w_(lt1vI>>%(KxP>C@;(2-y&2me7z8};zk z56|)8i`@F@IHUs zC_sv`E*_N5jTo4d%Jr-_JZhx}m}D|N{rcSzG-aj|E*5dog?ye2LSd#g=kZ-<05}&q z)D)+QQT)lDY=A%6mgs11K!Vh-w%tC$mqG}Tpt)1cON>V}X9oE5Bt!bjyO4cJ&FkcM zjwuBI-q6gydOp|Rox4Z-xY3^%AfLVrrI!dRJ7t_R%P~X8Uj?w4u2Gv@fVG<{mkNX%a$qMwhH2W5FP??CY8aSp(8+Hn6yE{~P1h3X zDUYSKCggPO-zDY=mEn8G(B=0x0g1brM^AM$W(6Q%wP;?_{fyPlH#cRej~nAc{L2gw z?8EKPT-hJhncg^ReJ$|xwve;4@^PNnmqP+3U341(@EmjBdPB4B0=bXZRv zOP-P*AQyTfI8_Ef*?1Wjj&=GJ3n2WzN$0kYQKkV<7W~P6UPTGdc9n_j@{xq50)V}* z>N8S5l9y(%_X^MP9aE8MD@)sd)B(LcMMk>+&WmUs=Yftl8K*pDsK93Tl43M3{9NBBIu{PcFw z>7={gsdB-sU+-`ojmZ!NK=plf;112_xS9S95v$zv6^ir-x&-+SfVn0l~&t&DUW^ z%5&BPuy@UrA>GF&ToACJl}aA>F95oj@QCWg(HKvFfK!Q&w5~ir{ZdXyJ#O4p2ZXl3 z^W3VXnAExJGeVz^hPEB*qNF7EarpTmK)`#w?`l>7JlC#G{Apry&*Xv&ST_s!{>rJ# z$OGgeF9DxP_009%M{2iY^A}2E_?~T##1(r?h?fA$%+JnI1G-2Xb0+k7OdkMPHYWcK zd45_7Re8*DqZxHBUqD>nZPRxY(A!y4?MDVbvF#+=dXt{|D2A2RlFY)4z zCX$lr12z5DAkAYF=i*m?8KOzcxES_85#MBXLjP5op@#^+su<~=E*km zWSdD6da}(tiJ1XW+LM^sNzCjdW_A)YJ2?P2IRH2g?*CtY0HEGO+Vt1E08S1AfE_K@ z$zj0B$>x#jUN||~{QtwrrqxffcvEkqy5HYvhDHp`Q;X_W^F4QZC3CbSCa!?$5ZQXf z`l*>siD#TFIw8$Bfg?{^p8leb%~!}J#$6jL5T_*6*qmxMSHNpoBaa~(Pi*4ih6Jmp zlZxt>=@63z#X9g5zuWuxI0GGSb~u;PQwHFeQ;^#^+H5~oPg@NO4(ITHmRq1pe5D@# z^!V(U4>+gSh`EaTHCQ7na3pG6CBK1_-ItQ6w=uvGw$w#CyURCK=cZr;Z<)=S#lbNM z0hPDhAuanz;ui&!QgN@v9zaP=I0&IJB#-p#?<(H}jx{ql$rR>Hr{y+(?`;e+PdQcH z;j2ZBPGu*x77_53h>sEAWFaZ!7bgEk1&$Q9Rl-<#`pw0`U=Ktbf_MqM`VPc#qoMg! z^|Tm%gpo5%0=6G)-&;AF>-F4Nl{Q*h(OhmGc${-WvDoWfDv;Ol!vk3a#_U}TH{BaD z&tfDX4MMDA7-cZVysSMXhLXSW05lAY_MO@k50!K`?bG$HJg%OGbF#O=$1J7 zr!TX444+J?c6EXC@a~Fp3txcqaPD5ATOXSdIq7NW86Vg#9tnnc8P;~X5%CxuI{%+x zPav;O0XYivS{aUrwX%ym3-S6#BLz^TL=%nH)cXKas zCK1qBoz&8)UT_0%<1(*m@Az`dcWNhhSme+SW=4J{C=>N~#l>>v!QIQ z6?W75d&aBY(`~vH(+=G(2G6I&%gvp}v*An&#zr6>ua?>*a{2gFHk8R(spXy(;IiV` zcT-fLViVHE7t>_(X|xIJl0)JKrenVz;3Vh`-}>j=_Vwod`QMU<#`!MEfg2V7g}gCqWu_)9&%X z4q1Gm?8voGWk*V3DK4cA=P6DO^w{kUNym>H=rtjk?<$35Qa~^8xXowQOvyOr+=W%a z###EnEpz$-oYH8lnnLLxoO_P0?{G9~t1vafm?XwzwX^nW6}_QDXuGp(N>kGT$5H`b z5Y&7%k-}&W9RFq3Xinp|JGl%Gkfo%VPcEYYWVzj-r=z~{sd+w}Gi{rak0xjec<^ti zlP}$5t^YA(-9}i0lkhv-?!|j6nYoZtwoVb-8ID^jZj6+nMQ1!WPR$lc3wwuIp?|5;$S_VO|8uTJ>AjU%$Mfk67m_2$ z${}7kbwj#hGTwy*({&0cBJh_Ysm~rMlEYI=8pJSfP8-F_&hxId{k26jJj%V^1KY2s zla6dv1xuv*?fVVU#jnG%_L|KP$;-?3yG7?)+SxR&d0O44y0lS4HIT-2AA}Yq#Ap9A znC1Rc{?*jeXJ)$TS5iVy!+lwr&EUf)1+UR3gfy!v?hjPJ(*lGrno~~YTK;pVI1?ns zpN4s&MhtQ^gc~bH)5~U^>o*25O_;`t)%=3KfG9hKokT==I)43K&^eiv49_+O)t+(Y zrQ2f*kqcMPk(n~BOj0(OdZa0bSxIz8TDa^hBG*{^pSQ~bGzAAvINMK!yGXaLFDI*l zU*Xzgu%goivo<5Ut6=cMC&bNeBE{O23ark(l~yu~jp(ZP#BVn;+NW{qi9JgEv4%il z#o)U=4Z7f9LOViUHSp_hEJ%RMb;TH?;bZKxak1ESOIS$51w0dO>$Em>iZ&`DS&PO! zVr>d)ARM%&jgsM;SQ)R}_W|f6&8aAliAN+zg1;rPV&d-~2`ewFe?;))7-YwMFv+o4 z1nKu>I8S3M6hfg&8?{4#iu~pqi8)O8Q%q_8%Em6*tP>n);g2*{Wa#_SO)7Y=amYrv zl+loZbS+Qd3mi~Pfbp^WeezVH)44T>?BwjVqWU7=#@el|_jk{!89SBU+iFFx6+;w) za8odCm*Ab`p?Ju_(t_i!NSA=Aslje@!ggstoUd;5=6Izqyd86el&t%Rz}<}*Pi5aZ zx*lvw_N7P;#yvLUFRWc&wJ)q3({zkZYL%#iQ)Ir{*I$-j95o5`5B|6!Kc! zwnTAB#Bn~5Z!`*;c8yq@;L+E>m5N>x9XzdAn_FW}@bK)P-g$%g96j#;2+ZV@IO*Hf znUlk)NT}SB_028?lICPPw(0mr)M{M`rMq=qQ*gaQ|;jtbtw z#8T=ZHzja{k|Qd9rCHp4O<-* z9juGsof=2lFw+PhCri28AxeUwMM2HRYhTDV#EM$BLRcC~-D3R)R_@`5$XJM4v1k4E zcEKRHVLxF|uMw8r;^wAzFg(KP;!S_D|u%GjK9dS{j`3%b4=FDfKVWGAk|A);2vlr!gjw?g~1lU>S<3Nv)} zhxrkX=6lYCK`f3re;K59*8U(rQB7dftEoKS;FlnRQ-e z`3lAJUI6FUF>Q>80lvmXws(9~yC%*44*iVNi`_$Wk9Fb-h~z=j$2VLG32CVmE?73QkTMr zGZjO3B&3$RpV-aRXE&_e#Od^En{Nx4`zqJr(GPvbo1IzNS%l}=T--69KiAB~&}=L_ zk`lqondbIP%{yk>Jp3S{%~S>Xc7 zya1cN&l)jsWL`eAv6mw!eM~)8;W*PVqk^u+bpquq7O|_SxIa+_-2}GhPw$;}Z~e{y zZE~-Lamxm!!OZ=<{9A9U>L{9g1jjF&0w1mc@zy0iD_>VT&+%&HHnJE3nSb^b2a`DV zJs+#JS7S{Fmk|4F&Iz+K5CN`|KTv&VUaUPJOJy!en?&r=%J>3FpW2WJbEnXqenmx4 z<;XN$xB1pvgRhxUGWjTk`QCSyYz%~m_lSbIK=6aIvs+QpQ#q2JM^x07#l@3^dXt&r zLaJxl}FRFHq+&rx(<3#T8EpEV-;C26e+0_9o*Y^7#3EHao>7HyR+7+UJYCtCNUt2fO8M z=d|=0TOalhvEakIk(rucL9h zK-%Lofs#eW>hyhy>4gtMfVmnJsr4$Jm(S4f5us0?*BbcDja zd0E-RKe>&`J_NG<2|M;C)h(O5lJ2>p;LOnv0-5@2(5T5+IP+CR8P7 z-|RFF3P>eiJFs1Imf6!1=5N}wi8uK$8~9_|{NUQATz|*N<9ZGM)&R6HK?QAZelbY) zm+B<&M=po`mmVuSQnQ`{`jU+RB<1(HKPw(yHulL^p*a@KQdaizH8WxG?ex=WMpGjY#$BRe{5=VZjmTU7~YNR2M6?dvnA2o0G3BN zbyfP6aKH}<{^j=C;B$-HYa^dtMn3VU-l&~KHaPwcw|t4+|p)2Xs5 z=610}6ZA#9ln=q!ZgXw?#Z83A3^Ev_foVhr4FO+d#o>yaBfnvfFvHZ1)xU7q@Jl*;4`zrW?j^9u&t*6=5m#C)GzIX;Ssk9f6JZk_@53i-jr{#$ zV^Cgo@m6x7+*?T^qD3ypMAUyHJvHEA7mQ@oIw}#FB29q!FSHIFMk;1NGnGSKnM9S% zvVGHRr(nf>m(_5XtmKk3Xdf-vKglmou#Zj)mO>R%KrgZj>;l>CXSQewb5*c9y_d!x zj;-ayTutj@wMIR$H73784^w;*-y?kx;?qB&0DINGUt6-d0=FzG%&#^-SpOJnmD02X z=dA8VBg~R#c?!!nO;z=mE+KY@`qH){&STl0jv670hQc-R$;7jm!s_WdC*$DMgL0m+ ziYqK7;E^98|RP~9FpK08JMA9)ccEbHpY2e*gkC^+O>h!GJ;@lnH|>rslczILEw zaB%v5mgpd-YNd0kF~O*5as_UJ@9Y&RFP<<6ItUuc~(M3<`Xi$ljwc7*Q;wW0w|ewtwhV=U-fF3PvqW*lDl7DRNBg<@?=Eu4c*)la z^&+LW{dUIpXL5@UI^wl;;6xoftJ6dT5z%M4^c3y)_?H_2x%WQPOajhZHo`_kjaLlm zam0D!r&8f^>5yJ|NhP6S5Wc=RhOiF=gYwOH0$p({_`A+YKfJty`+X+k`|rn_qw8&Q zjC1J@ssnZ{A*X==WY=bVdv9maunNf(X zX~Wil5YV?5!drJyzs~bDBdFhzUmcj+TLr^pmr$b<)eU9`rI>WFfSrbDT*<5?@-zX_ z*`DjeQGvo|J0MoEJ4rTx-CY$K!VnkcjiY8AdriWLGr7#T5fb99k%~9q@XHx#>?&zE z-#AuwT!Q}CA1ZT#E`Az^+wA2wkJY@K>`Ok=Zhh#hZ0?KJ&Kcik-G{85(^8rmaWhD5 z9Pr+q-PTE>wy<^FIp8TTwn09Htv8;(KB#7U^vhRQXt)_Wf1M6MHs&Sx>JlyUJK@PTS`O+$R!LrK{<_8P>_2OeD9;4;mU|;lvT~63JnQN(m z+nwDotWJP+@?ARlN10Y25n1%Z!}yf9ASGafeSfl<#cq~%&cI#S1BRhciEEdEI!8Vu$0*6ik7br`P*p1nDUxodvkDk8Lpyb zSX=5i4Z6q5z7rmWgP_v~8&x@9$2)s5_qcmZmSgsl^AtJF{39o(w!??aFVqsB4mV40 zR&6}{%x5g#xOBDYFx-+I&V=E_7!Sfzu;rf9vI?eh*}WaT9KOg3SWADZ$1~@5vU@fz zspWVS@*qC%RoyD1-$POOb+B(;f38K@E)2TeG{3tE*za;|P3Z%9^CluR*;yNQF^E2R z0Sb}861EwPnbMP87DO)rduCkVU?Q7ooAce_16CPTb+h?0BQ~ z7F<{2KTMl>wO1ItX^a>a1}oaTe(Sn%5Jcln<0A9bz+}K>Chtk5z32K9e0>6KlwVXY zINKjBD2Z=$NSExNH3@7OS7bp;&rR4zP`XGgPGiF=4ufoYbnOI-bURJ)bG_phyTDVO zgj<((mZJry0)OGoCGA8GVD0w!`O+0eloB0lCm>3t>vM`ToxLxyc0F(baFZ zh@%ec4%S{ukH|?mXuJsRSAgy=N;YCLq&fG4;IX1ZIRwW8bNWu`^450BK&9NCh4Br^ zG=#^}+J486d74a$KI~|AHYS~b;jfn$k`EppHrjujiU_hL1^_{29iq>p;$`!12}pDg zTux*|%Hc`jth*ECrkAqU&^S&y9vkl^QQNO#g-OIKJO7aL+NE7EzknYc->8O7I7tMg zuP(}`;ePFor*b}?i4|fK*J#34`V_G#cwwNCNt&GUe9@xk_J+bt3^*`-Iyp3b^|`yd z+U&e>qEN|j9)X)Ie@H!@Tf7JWETRQEZ{R6g~!e>^puNv zfm#Wx0g7-Ks@er!f9SiK%vdnBgMS$%39%)pbjxF=%O8r`DhR=<#w{aaJ@&?-3g|xC zZY**7el08*mz5c<;4d8z1>R4F9oS9+5rPin+(j~Z=A-zQMmrGljB=F2jm05Bg*){P?!E@6!){(gk~G&^Q8e?TL7ZZG{~Ox`3SHqnl z5%9|H+q>pB(P8}uAn#gx&uKw$27b^0A2hjs8v}S?4O7B|b{j;H3tqVkrg;m8{`t^j zaz{nWLCb~H4+e*WQoiB*YdeL(83uKiurA2-{f_iO4^Z_|X&i(<&%gfH7g)A%+RbWG zACs^}n@pF>{#c^l?6`=8d6*S}9$%~i+tf2GD0ua#0gSJd{EC6#WBB3an;;a-@w+W0`DNK9*1^A<_EHXb=UX0KM6#H+ z+K3k#pA&G)3r>J?E3;Y+JG<-ZSrySvxfqDQ1}Cz z++qiFZ{34zV5%mP?c~yi`(GYJ&=~jZQ*3$k*Ky%71L+#Y(w6C^it!Er-C3DDMB$>C z>8yvezZW?PVnM%6p*fMN5ZB%Q%=E}|2yYO@qxqJ8u)CXof3kwE?{a^#I&ES%j!SZ^ zt$!cNCrPN44jMhskWxKZ3s8mC`F8JSFF>$t%iCV?(uw6yjtSLGn|JkkLl&c8i+-8Q zEvdE=bj$t=&5f)0TOE2nxHT2&!j2D)_0W;ho4CQLM?j}! zS2LCCBebW=YmAm3j~ILDD!R_LtiyAP2D!5#n7Wwx>Zj9zMzvom9Rfc~87{$;FU( z7)qPOh!bzZOR%fEh*UmtVV!hgqU=|HQ@n9+;5*!E=LJ9dcGuH~tA9VGqVNnd)Ptxy z)0r+U7-YXoQ`B9L0yVl!qlCO0MT@k%VM)ZT0pVw2wM+e!+rsGnCP8Fl-#T8NKwM9y zKG45QghHajxeKotb(!(|pPwj;;l1OlT*Z9v;Te#6y~F@_+(*GXqt=DjF7s-X3B3J! z{z=x2ej->Qe#hfeVnDwWbe-@z0w|JY@5de7+LHcvbT^ zt*7dQnF*V*ayqbCEVCa{oVtgYj1}VKhB6C2`6}>HW~?#5=c0_*_!)v{2lEX>E>#Xc z>pE^ZRkAl%=&Pw`YrLLQhgzZV7|k~|4L7(B)<)6ZF5Uxf3a6tI9ypAyuK$dAht^X1 zB{e+xy(jrQ75io9hFY*Atg62Xq?w|_iuxL~67W)~u)BG5w9V!;tk&t)&Acek#Hf+6 zyR2T*>8MCyxrf@7RcyQ2A4`%R^SY);;{^qtzh}A(owU@B_auWBOr{sVJNR0j*#*6_ z@@uQVE1X8rAk}-xqTK`20uohuBu6tLsWlrVH7ubIhz(K{= zbo&G7KP=8eIk8Lu8 zMQQJ5Y7o-ri&ta+66U%3-0O|NQk1)l;*HnM492Db)e!HQXGvl9(M{Lw%v>9q`Oe1N zqMj&YlDhMI)JDm%8-`YW+?gFjFMV$PmNr`_15M!myOjsu?y)|jQ;w=Oj)+g0l9rvy zJ5NW!AZ3|sB{$ZtML!c+uAJ+u;;A;$kv>{fUBxvk;y6$cL_59c8bMP0PuXZCu_!c!g zgZv*17aCDyra!O0C>(E`8p?FO8fqm(6q>^5J|oEB&FkSBeFFH-k3%d@Y8K~z20_6% z6lT=&LpXQnpo_ICzj4#Mer9HJYt}H01>bbK7jYkGz^dZtsH&#}!N{o0N4&Wop;#2BfsBmz=<1>;w7Y|Cx^O5pZ1+|1v0=Fi&^?Tmm4z;3CGD=wvF<~w-e5Ap( znk(B!lf@|0(MuHPcXhJE#!+&t6SdV@Gvui^BIH&6mb^Q+a+<1URcwXB*H?=+c-(wB- zu9$#dP|i`m@;K-SW~w!bucpgKTf7P((02CxeG=0B80wWavc}VA*l8*j{ibSpe%82I z-M#|#M7$I2dw*3c=?8yK3U{T$i0-+Jtb$_MYMX9mEa1FFXqy8scrA0C|Nh0QA@mv@ zqmcJ?z3g|7ip^#eG#mSpC3WgSx2mQ#r)$e&1q}N1;nlF<7#1_%+Z1#h>-AU9qyg`C z-ChSgnMYq7kiw7yZhGoqz(*{Sn4mPR_l~0xs!=*8{fmCW51y(wp%E_>m#3H0_5SkR zitjy@j$`UeU2!1MqA?k-)oax)O~9euul$0d?XBBvZbhom973|_mRNqhUxOOLm2_Bj zveUP@oEaP3)?#zXqY|!3Z&tLPeu#Q>CkHeY9Ah>XS#njd&`43ME4-QE;dxwS-EG;4 zw}R7Ye%9H6sCGqI@`VN&9E49pz877WFIZX*m`SeewPp!jKa9G%F6WIsO^znJr0tZ{ ziEnY0`WUy(!nzHQgm1w?9d~Y%|5(y6$iC`-SyKwp!;>}7AMR+Bt86a5w$4W^yTJV! z**KMH@p1B^&H0!v^WZWQHaDoV)q8`PGl=-KG=cK8be6UkrMCb%ZlNl8BRG*-88*cZ&N|QVdd>ofhl||QE~MJ@rON}Ju~vrNM&!ymks;_KX{p}nz-Z7 zpV|hME~^pbVY#1m6n4u@l}j%1Kb{EC>$e!|5{eV>FV};Dvw=vcYTm2TF?7y~8X8ho;Q-s=9e!#|6uhmP|_vXJPiX{DUI!b0? z0`8$C6kz*pp6}`P)uz}Qr56tz*pghsV0=-Wpyce$f6Nm2>|7eir{Ns`=?ALz4 zWwubBCP=mOMAE)?;94cdWNI{zJgg7*JwTZ;5Z>Fq-T5VpKfN9eK6n4#>vMIz>q+{G zos>I@AF@W7hv^3{S-(-$Ddo0Y3^0l-*$}FN>GSFbczxGXZoIoI>++pD$&MqH7uky& z_d27{3ua}%!BQ>N4d=|@BLA=lnxDyM9T3tthJS}8fv~4Uvm5zeSHU&M^H~NwJe%5T zETW$@G`T%iYczO6IYiAa@aQ^Uqq9rSA2+_Mc39r5pbP#iYVo<-h$STh1nXBUil3^B z@_EefU+iEt&ZloL)^ZKCv-Ps61LKc9qeA_dcAR8lv`&go#& zXUS^UPa!K?*%zzF-Um3NQ4!7}Pxu_aPa#?-$9g2r|3UsOtYbDel5oa#@R zePCo@(SBPd)T)Rmlcaw48tp37FlxbnPQws^`a^H2J9j zevTNWFVt7}@zpW)8S9ds1#i)Tqo$&`ufx?9nOo=Fmbls610JU_$EP?)_20+Ey5&>z%dmF?!% zy%(NlAXWZ$)=D?vTV-#OP!~-Tm?3V9-f=-Q?iH%eU^I}Jxf*L?Gg9EF6(Sv@zK)PH zPr=k}+)>#DD>dy<{eJ6_decjkntdzL*JHH)me2AX*k~^rb#vmanhuh=LyGRhLK}nL zkh7ZacLeRPY1^FZitz~LjJiT-m@@6XsglBdjsRTddzj>YXY7SjHjna(nMOKguN`cZ z>ECi_4$EJ-=Vxc``7vd1Z{>>>ob7cegUD|2kH|hzaHFtsk*0&bgmU-n3pEhcZGA5< zModZRW)AJGFR)VzZe)EHzw3J=dvzIyr5^L1Vb_23eaTHph`rj$!J@2+{(P{i(36TE zdxbJDquh4DTELoJxRO=a|9Ibsz5vx^QK7^R*TU|ZQE|JP>`zE;PcIf5k(G(hUS+vd zKpuux3*>Cv8(t$L4kvRtuLm0&FOB+o8{KgAbJ#v>^t&V6`_q~}1|L~i#W#(uDfkwY z;ZWRXpg#fi*=QEBii0Jh#pmcM*CtJBwIrD@H)2-DY`Y&+RLDXwY#sl4ewb3;>n5P41chWEw%8Unuk@siar z;*C%#LBfwwA#UQ!{p)?oF0(ndT0X ziA389M2j%5MS9Y5LdH-$CbDe&0-`bG=asmk2-ajJJIvf%N}*Qd^!CrmZ!ugDcZl^| z9p={)+3-{LesK*sZWSH37$w^`X{OpZ55!0?5(FtprIhYw=#)+Y$$=TV zVd#$MgXetT_xC*iu@-Bw)(rdJ``TCRyF91nS%(igh2uwohIK(DFYQtzcCYPy)i@g1 zW7PO`pObIf)sseU2`8?dVZ;HUUy}Ll4&tY4oiaI}ECpc_sq04wV=s9=C1()5+WY0) zNo?=0z<(TQ5NQ621{Zaazl|I{XNZ3jHFAi%(mg=gc0`*-3n~$fZG%!{jO&c=VK?6YA!fvTs0R|x0#sDdV@!%<8MT9uCFpR9yGE0rzzMU9^D zS*;H!G|BP)fm6z{(XW2M-eTH({%vk7%ri@Yv_?d6uThAo#6wZo=Z~DFt|4lVQepNl zEQ%040(VWi-`Z(Dzle$Zr)AeJU0_F|HZpOZra69#H>MCV6bp4EZHfexaT4!GgS?{-uuwg7%U&$2%}>{OWWTPn4u2vBlp@%aJ#ywO=NO-}+}2zQx7O zz!!Y$)SWi&o_Jl1;f?RqmcubvPPeU6L$_0)F4jy6KFogVKeSXChvo{bZ8V#2r0lkT z%NeMpH9_%BiXq+MjngvS-$B4y}5y(w{ zclVQXpMndW<-ks{p{kp;h7SFCh3A+ZssErw zT6nz{_(?PlDW97io5DEBVH&^uL z1-;eX5eySDPFB4qB5uHlTe= z2>p1H!*O5l68ZzXg1vq$lC?g^o^ZB=RCfM@cP9Pvm7;2;@}s83W=B8Cu{Kw{=tAM^ zN$soT(&ogG8qwvxkTL?I9C%PMw}X|t+hbM)o*N^JF5qEX4G#H9nx z4U;5Sl^PUik?(|?FS!{@^EeDW&f=P$i7PWQ4R@cS%zRgw$GBw=ttD{N43J!I5x*VN zlz!W&n)pd|bMt&?!jJz>hg6N=rWDjVm#ny0~3`&s_6_ZxmpsXh#rs+)hxy8lCE{)0@zVYX4A zo*20f#q(Xa<3(Cy6Shp34R!7}O3dj~MCM+uk2i?e3T8qp-mOvkAY&nHzO5!RSwxn; z*DF|curM6tzfV%7=)@c>=ivm;nC|Vs8*&$Ej3cH{#s}`&*a4~L!?vCQ)zKR|mRg(F zcoS|3FUM>xH;O*8k2{cg79X5O12zlc`m$*Fr?m+Hf3M=6z+zVdf`l zf5Um*OOsx|82>p|T(?o!+>Y=y(QizO@$B$)Y~wetqA>dqtWejv53fhNE)N!vANPqT z)0mGVMW(t8kDi#>8m?7Z9wwKp2YA0kdCrJ0;K!YlG;Mny^{FH8Kk-cR5^`_G3n1KX z+d7icau62@Ls3I9s6p4sD89-Ag3(|CoW&X77K!|^mC-x;7OL1KfPWQ=DWEB&!L9?>Q*&@7lFmQ z_*TsCq^c;S2c4K~?@x_CCjiwFDv#I=gkdpFXm3fv4U%PA`JXK+}0Pu%Bk^nsgDGCbDT zj_@pdb*HW>ffeGdbb+6ULS#!W+vUjTVQkbe$yn>^D)6xd*!t9oRpS_|_D}SgdpF~4 z0{I0XDtxV9FskN?iXWuPpVlP_tljt6{HdKHGuAw57xK#ARL@p7b@`)#R&52x0Om$f zjJe^@x6^ZG2-a$}(pOHzf)+kYWUL~*ySnF&3u}Gq0PRV<1RIJi+9{YT+ovrX_S0qd zMDQHt0;I9#152MJv*BZ$H zk>&+dsoj5UJuxl_xT-1&*@Z^ePvb$Z(7ae#$_M%XzAqZ{mu?Ii|rS4oU;wR z4_S6j`erBd+S`bTkz{R)%7~}B78}`w`BpE~dW?~hUb;{2Pwo%-(`SHzs7Iil!9KPS zNNNa~WGl=kMYZ$`aRkqob`RcWi<2G2k~SNpT=nj`_kL&i!5ppVPfx-q>WOqYN8BE< zHDXyca#G*mrUlKN7CkdWH`?)f%FX^p5-ol>{Kq|=?YI(SA5zl?m>o$Hvsb;3GcCsG znZSJLkg$qG4Z#2S0XOC!z}pae0PR1F-OYBY?59$?nBiSbj83@|8mgwGaZ&AAsMyLVn93KhyuHnAOY zJ7SvKzkjh{C(niQxunTT%i8L1D<{3{WXKUfOGSllnG}{-OhB85s!ZlA$au~cGM<6f zPV{Cjq$>V^_)m<7v6oYGXdN}}G$MCMyxb{P8hmqb=1#(=zLV>_z~qUoxQUy}uT%Y@4{LVjA;cSB zQRJ9^E;g-wG}u2gFBrt!Pzq{K?{?@PQx%i55aC0ZXZ=QtJfreijX4^@KiqHnr~*I( zvSo|q{49{M#8=7v2O*BdVbjEaWcL=~^qDNBml4Y)#k|q-ykXT6Z;5p&_zXfq`-~(+ zZ@gM<1z*7CeM-ZQLb>O;mg)q|SKm8iN8~M4C+_MnQfcl_$duu5_ZHOO&>q{o>fhqr zOTDUS=6vMt>){IU|E<1pE4PCYe=b6N1cLzWsoGeZ4v%qzl# zsJ^F#SYN5-MZexN0htyZ+?YoMcH_wbvVJZTfm3B`Wj22Yi+`r|^CwvJ0Z)BN&0<{$ zo{sL!(gxsNP`gNnwm*?mb#6H6xoO-$28p29`EqRj zPD2xEVD!<^nChv8rN}3)3cw+jIEQ|(vlx7$oyIYfX^7$aUBDr2X69l&Gb+Kw$82(e z4f7G*-=1BsGXI$2?L5e|Bobo0rK?`#STRQeGz+ahgo>p~uqC2&``vm8D;|xH!$hW` z#{zYogsd{D0Lw}jpC2a{1L9<;uRk9;r$ORkR=_kvGZgTO4VIPs#m8%i&g0-`qR*;k ztc8$MeyMZlm!A_^izi|7oiu71QU)A_tgQZ~{3vJ;R7Tz(#%s?}?ioPkt0D7IHbv}5 zp0lyVEXE$TnGwS`X%iEJuDHUlar1Ny>qISpG&MKz-UOX0N~}EX>a>8z=X7nZLiL#J zWz{R`hynh&Kc$eck57Wex#_4#Ob4EN%DWetYXfoJE16)RK5<L}byZu~r-J}Mo7T)IE^m3=dkAWq0PQhK^ACB(#|F(V*|U7_oN0)B zb{mcQv|TvApW7u@|CS^2AF=t9)vCrES^+ETJowyFMe-Atf~u?-gfn8u`h@R&T9)Cm5Xg&n0k`@@?saJKG;{_Nh5(PEY#m@|<7Q z=SfXV@3=$dR+7P=XKf)0cd3Vxt@4tti$a~`#Jys*fzi69pOqj76O^=DJv?LLtDtM7-)Wtq4qseNuE--rL< zc|~J^y11&^g~OR_6AeJ~gN0FE%pk@+kRt7E55`^rZ&3ScneH=Dvr;i+-yKP*0W;nj zl4Eha0>*Lk{l(4$;MMA@Fz;8t{k=OZek)QY!DH>8sSu4pa+i*Lv$bhUlwo_vuQyw_ z+}<=ec-c$mNoV!ZVCq|>dv4|jVDd^MW<4yc=NUuU6KMSz2>!}XQ(LH!@ZQfqP9Y^% zL!*s$MEPo7#^%J*{u@5O-mL`baiB#)PNpFBa}!;YT`R`Au{||tmkm3GDNHXJ9hEdh zT(My6c(oq3KiDzVB$;PAUf3>>GVPStc+pjEKYaYZTL47-E-`}d*&YAb9lIlYn3pR% zjf3mvdN#qNWJ@Ui8grit$K_!>4FPfHwj2hg{SFuRYp>VuZl8>!5*;-l>ueN$8$b=n zSei^(vXj)zdBNvai4K*KvT44R9}lYX5RPX_t><*0wH1!o*^YKee-7zjD5V@PxAyW% z)scXtdu(7jN^pp#FQ!41UoCmDS;@Pmt06Mq)6GCB1#Sft{OQx^L+!a(&W;n=%-Ux0 zG@3&OWlz6HA<-JxS$`4*Mc@ls#A>2+ z>!-k91WVeyJ%!&eu(i=&5lNG4%1j&@p?BkFw#n%q4O!}9Qw3sCxV|lOffX0dYz}C! zAGPtXhAJ#6ZSvow&(3=0RqAw|3Y^+7;upS%9kK*%S`Zeya|u|*T$0rfTX)nI%g^hm-8q1Q~rIBs#xZI!={x zj;_O~mm|eaS;C3?KBNz6bL}9felJ9wkdKduJ@cHa^{qT=P^0`HSDo#agm94|T_Pt8 zW$~{)kA2=bU_lOuqRe}Fyz(e&L}#G$ny(Ig<2GqWZM$^Ys2moH)vLB<374jI^uE~0 zHSddK39$PnU^kQ1sPcOt4=oaCM8vk3c0$(&{haDKU%Z5$hEj1hY;$`6j<=%OJ5x4d z`Kuy_JmzzEpyU>9Ria=r1WU{^eOT%e1qA~9@=+!1iPfT$VlGX-wszA_w@JB%9)dmD z0CBfw+a#Bk>ska62rd%hS3N{hKI2ZY53hKZ{Jp%EL&^wjuLbhnyf@joYkfs)Yvzr3 zv1s7`Z<|*9^K|wZ3|ZFH%aj8(9C|c;Se9wsPqs$M+@O{JG;~TY*P#2&Q~ByNigfWc`j zTMZAh_V@7Zx715@LRU#b9KxZHlli&fGp5#XHb)Av{N!>>?aK$6>DZSB!3rx`#}7#{ zADm^}eFo0@1Em+MS)OWqsy1u!Rt|kQThycF%=+zL*oOAveJ&Qr4km1nmj^uNc|lZ< z1T8X1u0+t611hmJD)5=IAg7N%#n-6Re}30sJ9~xrO5-@teHt)l3>x0Ft*OB%TI75% zvNV=mzhMYfVs3_VE?cf}NS@dfH@O;#tNx2Z->n~M+VfKd zOTp^7aLHyx+OW4wY%jf3$;^&p~-S&?2)Hc4z{-5zEiM zdfu+&_OGNZM4f|=xSqk_`TuHx#%$Y&PNiYH=Apvf=V4HWk@PPC*mlt$6D0t4g59{m zuKNiu^$ALdg%Lk+=%mCCdz2bJjM&_j-7f@7z||>vYKy>Hyt~=OQfXZn{j2+{SdCWF zx9H0aD}_zdB250$M4`#z-`0ob2hC+ZqI4HImUCgo;h=0ymL`JqmqPQ^fueC>+4a6K zvT>IVgIA~;Vp{*{ zPrmz)H~so!R`JA=mbGsS;|)M*RYIjo{i^gGL%r}Cu!M;j{b zZ}kaLBLSOGcG;iRN)Ur;?7iuFscvPwMB~`;P{P)=gt)Wz=6N+*3u$}S4}JH)g3RdI zI~Hw|HLk=MS8=;I$+@oH+Z#(3Qc-!ZOJP#LT5!Gr%S}>o?9D{rA_CA zFY->BOU8`+mv+6h5=!ouy2ZD(2^jluW;*nXdB&@7Z8U}4txqoh@?i3aZf;ZAuh+d_ z1cp%<@B==w_|tz6K!i^{xRdP9^>Xy3xxCd){+8gr8;V;O*<1F#y_*tkG^59YIkDTC z7IKN7*|l7b^hHNT4ADMFpkV%G#D31T!muPk5#s;W2?i{|`tP4F6|z>JVV6?}IjChZ zDkfkAIl?uw6^L~!Eg}SjT`6SeYfXMVc(EM)@{R%1n5p8SEh^H;job#{vI01B<#%SP zHE!Kzo#Z6VeyL|)1x|y81B2SJ5izS&C2JndGFO~u zz6feOLg~h>F`&Jqs!bd#0?0A6E96}ioYx_;`r-V`5gA74PA<@H=^hcF(++GsU)IYm zvpXM+cb@#w3w^P&)r`K)Na<lhlkSYK;$6Sc<=!5Dn^dy8>4%17w{a+3$vw*!RD(nvM9uD#{j<)Noh@b?>$Kzd{7PIap-#6XMWpy&kQ4TJJM^P-d^Osny0^Pmit=t1c!J39Lt z2YGzK)g`aCT}~_tJ3=~acJcjkdCsfYm<7s=D@q5<8yl*Mbj>_X_?k_2q1e{B$HC~> z`!Qk`A?-VOzxU@t{WMfBppya~{8$E!*a5#9ZA8EE->P>dpdgST@KsF8Iv}3Bu9AG< zMz+SCYn?gd=L$KZ2>Lv~{+yQSqSY&crn^D2ghn)^8e6?e$K0g_q1mGC^b@EU*ehFw z88cpJk#7+0X6T6Pb-Ke#EKlwNWKGEI8@u~R<^MbJwO1S%t=hh9-ZZ8s|L6{$SAAgK z2FB>ad$A~TRZD$tYyEyt{v7aa$k`OxI!1YUpR-cq27l#;C*t{aqr>_>wxG0hCSS~Q z>G3p@Pq>uU#?W|ac{l0S*c&PwU4VdOf0fl(9D!h}9l5Yu zQI(CQFV}>Jax=5PH{spVC8ir(2etBFVt-j0Z|Hs~*Zr91%tRO3!TvQ$YCg2*QRwRh zC02iW=zhDK5&UR{d4k{2-K<49aWe8$huQH8h(63j$dvD4o*_a7@~>bM%ll(yBf{y^ zAm*);6N zgzeM=7|}rjh=)Zb6Q<16Kv$%5#K4;fSTDh`Ng&a zx4Dmu+ogTI43=R$x6$J4ICtMb8^|KTnL6kc(QG8mU*aJ|Q2FoCC$b(r7}9Dq1E74F z{=elrjZJZz&oY7X$4}nQhHcIBA#TEb8;CZ?SLcL~q_Y0;1*k_!^KF{**>l&d3EIp4 zl7xA+6;+{9SAgVKmQLpyvh%K(;#>C@6D%=(u|JHxQsk|p>qv0Nx5Q1J8n;o=Dm7rM zK?wE61MAJ>bZ#vF%tDh1$wxl()nv=Hx`kcN%TBI7GUdc|q9Z%P-i zeNOF{h&^Wv29l!R=;`wV^G9FBHyS)Fq9ssKm9T+PIjCnOx$J4JLvBOkwEEK}pYsFv z#?~!Lk1_+N9S^vz$4=+@L3`|b_47d(ulzN~9?7QP*jz=M-qaufw6b@A_UADkQd{*S zikv8U8m<3Zg4*5sEmRaf2heLPw;SKrvcGSHax|a4z1xr)r?s+*>=fEepg>T4egn<~ zU2fAa!M%{mcA~{18@)kg4&dt3{&JW!Wt$VwG5!+2uB*f8=`*7+ce-IR{9Ki9+%ms+ zm6NYd4yLIlX8>YQn~+C&Lf;CP8Poo>5yAWvmU74iL+S_$f z^7chrxAJddL>3G`+Qp1vV2mJnYZ5;Zt*1((MJE$D*V=Dk%^p7#(fB7d|_0PIph`gc%VqUZe_; zkW!-i1inkOb2#GsqgS=}{+r0IZXy|kTrsS5WcqiR&wLfZ(e)3fi4%BO@raymcmn=BO2{U#($#$6kVe)U8o2DkOFTnavA%=51zR6q;wBYRz<$w`p`rYE^ zw=tF*ReE)_F}9NOerSIsr1#xK(Kn@3p>asHL7j7j(~>N(Jwz9`I!#xY=d{qsTA~5&IPF#zdTLkPvwLb)*FfIU&YS~kG6!iaqu3cC8NPu zgo#L)TDSf1T|5lV>O(cn!WzEheK$~wP8qa^}zolBrL;Ssw5zScckXBkh zlSa)9DZi$a;d0@F?g|1yw+iU%{G2H%8RGLtll^hH`Nl8%w5O&a+p#i=K5Q`%{gpRt z=Rk)47GLIkmbKeF>;sk@=}$62Iu3db7nWqs{iqIZU8Yypd$MEGwF{)$RZP<3K_AAF zUHnWNS5msqydRd^dWe^PnP1P+Y&-=`o~lKu8WIaFKz>qkQ&{vU{fFTld1g{5w3Jxj zwuS)%6j0NfQ&O}@e$49D{no(K7*@z!xIVDY_fu`AVqI$T0+p2 zLa)}9LZPY3aUEkrFSLg0Td8S1$HS=2KBQl!fLr` z4!{wur-SBfj@}Ewq;YQtrYkLTeS_FIGkT;M6s4<t7cNhB`T_5x?Ng)m>D0}kdbRM(y=wzdUY0tyjq=Q5 zo338M`BgS(4o)7nqu3RD#Zlhp^*HfKJ6<+~N4VV#@Av^#p6erELs*mJ6)@3!Bl?S) zZDw?4sM6SB8>W6z(A?moa}*ZJ6Dks`+`i1gUd>~8&|Y3r>eFjAL#;~1%o$v#N`i$Kk`WG z{J!maPF6GGHqquaZYjsuMdhf?ymH8Oe3NL_Mo#THXdR_mkpbr|&p>=2LW?w_TZno= zLz-q7{arpaT5C?5iAqi7U-s^9Gkuc?Xk-IzM!_*V#gK#gEWLNp%DjhS?nay|YzeO4 zhPx7Xrw$dS*FK6G9yf)%r7%Nwg7F?2&wP6jxv?Csvipchs6WT6^t*`L14i_wPPmtmKs&_X@7_v~>Nq7WJ^UU*`UP=ZdlK17P_Z*p@RV0DL|#wY z-kk|Tt}N>~;7TosTQx zdZuk-eGE_g&2FFEK7&HZe-H{noAST?DXL62%v$GzAxOb0@KiM9oRqBXhxUAEQ8gi^fdh8liC_$SK>Vik%J!kzPu>Yt}jlX`Lv7m7`=8k z(jI@ze@M>%>il3uRO>iINOBw5a%-==-azlNQM`wP*^&I0f0otf^AGWQt*m19-r+Gt zZPoFM=FcKiXNyZf79Z*cQr~^4`lliAz9d145AK#LZl*&1OP%b)gcx{Dn6Q1^UEe4H zeUBm--B5$86BMO8wSSkvN7iNUVf0Ueq&H3DVO$3-x4QHkX<0B7Rc6*>O->={Wo#u` zuNvWBG^&&QFXJbNK+NG`^IjOw@>DDyn{~tCV0}7&Uo_RJnW&R3?6(Yan}_tMw6rpW zwFG=e^lp?Ns)t>YJ`V$a<|2csZ7E zlCZ~I%A!YwqCS5v-3hO9y0+M`{LGjtFYw~(FluWBTC$XS=L=D8RG&{G(br;rL6b;a zQiNT|WFN~#o2q;yOGGr{Cf6}|JFfhu_|_v6r`Ds$N59MXPAX5%Xx&dQfnZWN>>~6| zreIC$F8{6Zx0*P6_GQ(1*_s=a28@XG+k6r3g*r_t65KcU{CUu>*%yj32|Wwa%;P`c zH_r?fhX@X4!%xXfKC2dEJckFde=g^9`kfX23^(2V4e70=^0+J@$P7*;U)w(ok$L{I z=-p{S%VB-qw&cz)rXcSE8EuCFZvaDF68hsdYf!MvD!uNd<-!y4rrA=0DS-milDOB< zo4hwSM=7Om!yHJ13Cmm(C}Yj<`YW_V|K|^sSywH%`OX!Enn53p?N9G^(JENLbA7&c zTeLrBGF0^EQtAn^Kcr>p{*8N=-9*Yg-%25(u6?&zD>($+Dl(xof#90jkz~b-@afaP zBc$N{he|8V*WioAQ~fHjk73|8ZO(1p_b59C4V$DVMvf|9B$4GX5Kk$Fjx?Of; z=$+UN#*)iikKYep^F7`bT@!`ZyV|e{t-2$8)7EoTpUg17~=4E^D%^eo&{Fx+pGV)$OfwrF~yS0*6|-W==BJ#E#H|ppI>&H=cS%kaeU9P{`pM-BaBS~ z#~;&Gnrbj^#VcKOG7PpebXngmH^FfIC>YbvGAV z#Sn4dn2_9en|qVSe(`tv1-NXIDZ~zfX|dyl+KS(}&EwVx_6cIBQ!&LW%2%pbi*+ky z3$%(ig@f(NXn#M`pJ)MZue}rS`;`Ue7^XaR6G=D>p2|@;1?{@9N}2QT1k*|nNhb@~ z9fXsY)Gmg_{iEKEe%x|%VRPrsy0Zkd|70`t+NtKYPx0f@>?HQt2Y;;}llcrCYA9QL zA47Bm56*wOHL2=(y1TtznSZVFURN=F7@K1dzOAuMVF=(<60I+HX~$1sFJEj} zygz@_W_hqDI=20CvXEnxg6YN{>FS`6w_31w3byz^x+=_$(%*1JOQU`8ruub7j;Uh7 zeZMTkL>(}WIvYmy$H62`Gf4DfUT8e_r{6T~e`8Boq(EQXTS`1ppzdHjzAu%pfuwPO z^2Izmm^Cf!oBf9Ev$l;R-QF>=cx&~#f5^E>>S?X*XXEuKDIt?WcYXfEwoqKISHW$p zhV8A3$(8Wfwe*zO=R%lJo#vy>%J_E3RQI8aO^BM+P99TNC9xnK7Hd#W!O_U2ao>H@ zG_6$DKH-I<2hR4D8gXy6%RX524P;cDkk0`YX|JOrmqXIb6LNW&4Z>o7hLb<1!6|Ia9D3(#_3&%YC|v-YR=E+m;eC!M9UzF7CiGk^5rErDXA&C3p#t9S|h5f_QCo&=HOEX9fH~8eXl(vlWvxa>dr;KDU>&&BXB)H=N$}Hs6Oi zq%st0m#_<=BRoQhcjS+o0*m{RWH+^ME?pr~l%XsTeLL6+SiVve1?q0c*ARVECYzmS zdEt2x+U^&nwl%4@WL+K%U>=^IpEVfd-FSj<-$m?MP?93pcm`vBtVl6|!Dotyp+sF$ zgroXrZVEX6tKIIO+>dmhE6$kZKGGX!(KdQ4K5hOHogw<4yFo|vF{K8d0I0Y0DDpfE zKj?pF%Hff5ceL0=82aAby0#0xvkfTTEjYQUvust9#rn*LYr~0k@7MZ#PUqIbAH9RM zZGkzMM7Z|iFa_z*xGzig{A~~q+i|mLcVvEOH2wprq_tUJJ>pdS_$U0fPwC|%k1!u4 zKGXd=L+5q2w;b`yaRWc zSKwt>VRfM1ZaRfmeAs`RubKZf6>=oxbK&yhboPCCWU52GJCfsZ2a92S6_4<-FAzky zT{kt`d^|fNp6;zCJLCvnvT_Ha5-I?p%R*R-*^$=?qQr5sAt=O%uQ4q?J)^!$VPo?G z(thF`ns?S4qG-NhiO52guVyDeIOXafVzi_aT`(tiOk@f*7%>XCrn8gt+LnKZAbn}m z^%gm%Bs(4{8Kt`S<_Gvcfk>IjNb9)dl%aGt6(Bi4(n(XcSHh(p*zTQ;n2xCet#uw2 zg$?*f`lc1>Knvdec&MNMN5sX?Uq_Re_`$K5!CBp%o3|0dlFg^>?d2Sd6Wa4t&;a5+qfs0Atax#x8H}!pyo1!=j=r{bI7h9Yq zO3rY`bYIN`Rc-oiUk+!NjWk=_4QPhH0~#&zB({)5aIwMdM>Ttj`;r58X`z<-%c#Ms`r8Ck$e2(m$3Fbc$1<4nktVwrG^c712*U6F_-Blei zao??0q-;Qo-?n^6@4gnQ^H#1b2p9kn3+epxVhe-;AvcMe?$$HtrKqWzb5V057qR@9 zzyoTJxhyrGr!VbK=~%||nRTNJ@tR*Akmh^tnvF4&YeQSv-ZDOpRB^p-PC}bpF%qM9 zX&I#_esI+fz>ECJvimy&erPMT-&IVQ^w|Kgy{!HB|5`r_OJF z6|xae;M@>nt6=tNm`P;LN;amYHQVQUjWei^l;9W$o8=gv@j@D#mxx@hKWlVloYQ(UB$f0V26augwNw@=WJ*aj zr>)=g%hY>hnJB!SH=}hVS6znS2-J@M=Z{CTAW|RUs5bL7ptC%pzO+fu*r+T+!a_j} zlY-|nWXDb7pD$~baeP+a>=y}Q*8&?5nGv79=i{mQ^{*Bm_)Yi;>%x9+NjJMSG?u=j z55mE}73Di8p4=cwc(wmpu_%cppGk$&-Xme2CxK&OM!&{3R$Vw@H0;UFMZLVqrHIl0 z{3t`uR=lpRr`rf$T3*0Rv~yZVnAEPcaeIiLM9CJ0ar~sF=#) z3;#5=ns+MZ5-Yi|73XVrvPpL7|7-x4L~mF5>~FHju&VUd@1X5A_m67LIU50L>$xO$ zERxX=#$s2L#+Eu{e-GM-UOpbr&k%9=vy(vtQZQ(L?N9eyA3E^e2LqJnpG7Oe(13qX z?SPYnNcw^&2LB$u8lC$T?KRERoud?`LCMZhMaLwd!D*=r0MFgt4JH1RHCUBZY?#V) ziJ`D1bnDutw26s1eLHfMIHw7!W(#>Z!kocPA|Sau-RyH&WuaAKpv$17tk2adk3oy@ zIW;uq9sUQR8-)5+`EH;!aFPPP`3Z%nV+H4v&znQ|3pg?V{9;m)xLYy`>+Pj_bzkwF zuZd7EUjwS5r=T{D=xFH9hHFB#!#Xl2Ut{hj8M*EpJ85^^e)QlJB z`6K?B`6W=py#Dlps|Wwq@HjSwTEwKAAdvL8H8_W$) z6X0{lvIw)_qurepa z4~{O83g3>76&2S+_H5R>E!@#CpXqZ*>{iUzV5OY|g6*>Pc>+^iyMXE1QLHoCqBhk3 zUSpLJ@pg%|NbtRA2;ELu`PC?A_O);ZB&y6T zZ1CF0<(QOIMfD}OWLW^8K(K+H@o`k^sErE~TZ7C05~R1xif|?EIBmk;7cmX<(_#%Z z(Wl{u9=YfrwdH_TLs9$O64rxi>wQx-E_6n|I$pF1v)gp(Ehfd-QpXA`ov zd|C5Vp+W2Q%)_srp>xw~H=1$XE-Mhbf#6mGyFMA}tOoZ>3SaHT(`*3~0__@T zjoi&#_Mv|w`?*RNj_(xgOWf-+SSx>@-IPx-CE14w3$fFjd9g-p)VsgG8rLO<4Fxd< zyP3W4*^xD|I`j4FW`y3xmCL12-9>|~FZ3(HptxJ z;$#bH9=Eb46XOz-VM2~b_7UE4H)D(27YoHcTtI%ftSKZ`_HkF{bsaDn01&taD@y*y z{NF@wE$-q&8$cZ7$^0T>c=M_CV5Q%Dw$>@%59HIaTnVI!Y+=yit2OayIrbSqm?@aO zuo`99sfG|~g-X4!o#JZyC>@QeM&Gv!4n)axf|$Fm)l8MuNcmv|NSQ#JRA8koH}y1q zE0@R?$_<#cbY7=~fc_KDvP!+ohje{wi zDJnf-X0*gPUIAq!hsPwjA#F0k(ZULWg!s5yIr(TzXFJQ-k*$3OSHcqIkUnBdO%p&k zF>p=2Y``t@1PM~!#FOg?AAPKuT!jtj@4VOfDF)NKS4DJ#CgZFRT;ZPVXYN^Z90ptB z53PYmWfEurPHNr`X)awc&YLf~v*z4>Pqw!3;Cr~tWR~`!V~dRwkF1_jPPZ}ROS?P{ z#regAfyddnh-2kA`_mt-P=`G-FP2l3PhbhPw#HC7S>WrZT&fbo>FsAxpKmv!T2{k8 z-j88{;vm2)Q&MC!kglM5&tCS_>5m(FyKa9`BFYVYGuAlxLft9xz%Bku>ATx-)h3QZ zW8=8;q5_Fcjw~emfL|kT!(jya)eS`Wc~&Ny|z!E@(-by(rNheEePZ*{on7a@FW ztbH#R-1}v;jt(aQ@v{T7Ids545J$6nkqv}U$^2I#=X+K9n+J5jqAOR;UI4RK)ow&d=nY# z^Gjp1A1yI`7sSg$sK>6qFX*y=I3Y86fXNVam!b@Mvt}nP0XzyAG^41PL9}H62>n6r z2Oh@d2myFBI3#mPcMHi^mjQ3vp_vA6YA^#3CmtaG9`F#e5wivvU)$BV0xsfULf@em zPy8x6%q8?)aKjEX8L$Kb$JU95&AuRB&;5Q?38c|f%|Ap9jjf761%Xmc|5Dwzo3)$;!NMlcX*&hX~OO$-oUAr z4_#_5gcK%N`yFqNuiPEq0BoaiUjn<0_QT@~kS)qS8%h(^2YMId9Vm;TG$6VTyXj!N zF$8b)utK)vaU-H70`3aBEtPzJg66AG*Z1fG&ANa$TP5lfs6rjDlDLe|2d#ClZW1f3 zJMr#4GuK8%=>}G8ZbqyQEoXcqlXmCKYRbtOKJot33BE+%8#`GOQ#Wls{U;gaL{Ipl z1GlJXgcD)%Zc`?gf946BvHfm$@TL#?OHtZZ`-dCVwl4#IFNA&y=}8+e=)ui)d!_v7 zC0A`nSagl|Mqdwowi%uF;FI4X84EwPvYM{58t=3<#4h4iMVaO;{+7E<#aT^pOaG_i z)X(@m@V!jIj}j{B;)>6I@HAMjATk+{&Y`SB<=H~yIuW15#uiQe9MfZ+eb-kZl$ z*?)hd5k(47xXsE?GNeqI8-z?vrer9U%w!%n6)J3^5E&X(gd#KB5Rx(TybT#L&(mh_ zXI+N)p6B;^e)sv~yv}o;M8_Rw z&nL9vmv9uP$HK9fgnk3QrLmsq->OZyPf>N}wmM|KzHvwn$P{{AOb3q;$Zb zgsg5}$yY(GA8=Rsz5aMhtHrkp*Zj25;&T^2W@+6nMD2E zYwl*uFCpO^`s> z#_YxYA=eDV-&%bT2A8)ShyT2nJnI>{Mi zOU!T;nUFJY`6|!O$fuWOSJjqJ5pj3|0&F>$^816Ri0l*mA#ze=UBG-WbQZYR*+O_pZ z^jE5F+}Nhu5VMbPoE#s6Xlv?t9>`we`tEHR}UAiRTH6r7^WI zd^Lq4%%c+B;Ixqg89dYZ;a=?O2!j1p`9R^XV4XpynNnT@x0TifTe2$HY4Lw0Sa^7l z^y2YMI9Yew7ri>aR}kjD2;(znKx%OvnL=*vawe`W-++}r zB3bhRn=`F^21}Sbi?tG~aN9x7`4prDz4JRUXW*~Zb-6N5>p6LzG9h^9*|^p+JI1nw z+f_6E5X@b4nen|Aoimp`lV*XdbVUEddGQCLUAlV)lbs##^b5P`uKnwTgXE$SY^!%U z>#S;LuXVr^BP-)H}`Ke?uZ7r}y5GfC9+)%+|*f$usFzx{SwYGkN z+l!sJR2IK*#YJE241QrHFxZ*a{2=*nL_}p$uY2ApGeB!YS=%@H)VgjjegI8seUPrk zZD4u=7FGvyUItN~IqLS$5~jQ53-`KA4)DTI2|T~2QsyK4HTBLOj38Kv9qMk~%YjT1 z@|t`GdMB(rKOgdvS{-9FzMkVoeh93Fd}yzz_c~8|UhLTYdr#)P^Z5EEsL`-cXhU($ z51tF7R0SyTQg&Pog;VWuNdLe&qX%? z(1HM$J6p`jv4uJ|Ux?`%pYjHb4E;f%{;%HMSZ7j^Zxy)L{uOZ7JsWZx)_0jMX>a5? zO5&CY@*Bjd5i5}2`>cQ6SYvm9nN*qc*!~;STn!SdCR@fiM>Kwv8Sq$SW5mC{QFgCK zNLqC>R#;*Ea-?#r2Jqrv8NjO3M+`%q`wNwmdN(pOh-NZ-x)z#tke@@Uz5P4io!U_T z4iNsywz8K&qUB-uq_x1a8cmcqH$WG(0lL5Is1uLf^Ii8K)4A5|+J5V(R%E{k#QYeJ zRIXo6j)=O;^JR-#|HD+BycyJ*wX9-V@z919d2d+J=6ZrFS;&r7V;N6K^X{BDYw*!~O9Q_B4HSovnE%MDmU+WN?O28St^e;s z{rj}P%Z?qKoJ!|TU;SVE{cYGo-nk8XNKO6^fc-YqH`1hS55F2({?GOB+fd(z`u|Uo znQf?VLwy_S8>RbpiMm~)Zs+RT-I(oeOzoBfk?qDKG`qGNk8oo5e|+O{0p&2tV2nOQ zw(~>v8PDTlB{IamUBqgNWMn}V9L#5LmW7rKzi@Dm_&7xGMdSt%?B0h>NE$*uAZPem zE`9l!`W@p}QZHsTqIMwP+a|Uxvu$W>o71+}*mjQF0fl`#Zf>UsTT?3QRF3)bw)A4m zYv#2q>$p-^U7WfVeq~`Yo?~TlVBBD(O}3GgSuv?C%K0*0`ps|2)m+OnKa99zDoJYb z_WTgRAUZ)z=M`295`;3v5ag znNF_m*C`hAz}=$7$M&yY#fMn*_fSN?TvpZ8hu~$`w>?(to7M2*88C33G8Id5H;B&Z z?`vCM|B@dv{d6jb-g-f#U>qAjbK#Z z)#ZRyUa2#9Cw@c1sXyBPZM;0BDaS2xZC#ws>0Y#yhY_mdQa))ZOSWaj>gBq;V0*01 z2a?XM%7AfCb5Oil#Lhnw%bjX!;YS!IHVSPOVX^_9hUXjU-8e^fHW^0$!|MPU>RUI0o<TSa#-#bL$=00?cl!$2Y+qECaInt{u3g{4950f$`dQ_tD-ODQ?P zh#+Z#v7ob?;`%1w8~I8^^vvpK78(CCLqt4JCQhAM+L1)VE|EP0Yw%rHLD{uI($p$SiSVip!OQ zYi5OPedGwp6Rjt9XOltz3G*Xi(@-rgIm2h3vyN9K_xT`OYs8+foccsUmUAFEI`{V^ z#}>wUNUvKXq5;9?$WW4CA zn!4V3&W>;eQf+RVTKp)eRq2Sqx?e;@0$ALAXifegf=Wbv?S~Cla#sO+QP5C2e!~kR z7Los-E)8L$Mls(@aSe&*K>`Zj>I{*s8Ln8YsY#h=xJ8+jZBwi4)|bJ7gzSCa=>55DrH z{8p7Dbe35kWF32esMqRf0_6p;ku&fk$5R%N>m$#}1P-rSl}&()&}$zm_|m_>R%&yN zg+7_Rc9ODd27siJzo7e1?h|tA!3@vI^j?zt!)n)*HkB|&Ov60P$}zgh zU5yP9#UYmQ9cnQI%Al$B!*E<3KJG2hG zTFI|F_dV~<=tW0<(`z$NQEfJfi@MWceA$ZCwn8X{)f8UBxewkHhD*Sy3{}E2)@82S z6dz1swH(i#kDgso%5{b}8Ti^(oic7L8vRnrdLzod@r8YiQqDhZ``b>o(czRw#Ne?! zR(Z+z$h41V399^$nB8Z7mF;3eh48JM>9uMtS%`EHLMdi{uNA0d^T#Z%u)CHnbA&K> zBor-km_1#z;ugYxAfO|^2TRNt^jb-XK6tk@9$WHrz)re~DQ01`tO~4~S5&(S6DkSm`OC0`4{~@cYgE@-!RGU>66Gs> zIjMr}GVd|X`WyJ5Zxzd8Aq=RI%LLT`fgI-*~n@|@p5qecP(thQ>-gq z?1Zog0r=lH_TVPtWiNJ2^=|^F+8hhTUK90c-&AEj5tL#ZY|L<3we(K%RRT-B_F@j@ zikMlzB(l%?RoSvEB~6O4L>63LalB~MH!U%PO%N%;s@z=uqP!v|5*^^ze(5!#zia`g z6YY|whbfLWAPF2SY( zSEDq_DK?_xzZT4vSw^Hwu%`pM2lNJBvM*=#=-QzJn(kevE z>c`JYwhFdgu7Q&vgN4jV$L7PXx0fq9OW6KW8yA@sc-o~szHpZXQA+*Ad_nES(~}gM zttEomu(^nNKMl<>dOnO{u}APV>awLDgKtPmmt|=Aqm7Q)}5=?&By!hD=Gzy2Fdvm&Nmf~}sq zwY}cdfH8b$0Y4yCB6!(3(4%0ALUV)%0hP?*0wGNGxpEV88s@s6V3PnTd{ElQ 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
m58kjQVI5N8Q=ln2OpsWhmtgtUY|YTJ9| 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 Vt#(7C&KUUT^7+co@|{?T{{XXw3rqk2 literal 0 HcmV?d00001 diff --git a/docs/imgs/objs.png b/docs/imgs/objs.png new file mode 100644 index 0000000000000000000000000000000000000000..4702c1ffdc239ef556050601a2c80c5ef6077d8c GIT binary patch literal 212409 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 J3oqXe`(JCE1yKM1 literal 0 HcmV?d00001 diff --git a/docs/operator/labels.md b/docs/operator/labels.md new file mode 100644 index 0000000..eed280f --- /dev/null +++ b/docs/operator/labels.md @@ -0,0 +1,3 @@ +# Labels + +This guide has moved to the [Achilles docs website](https://pages.github.snooguts.net/reddit/achilles-docs/runbooks/labels/). diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..cc31010 --- /dev/null +++ b/go.mod @@ -0,0 +1,83 @@ +module github.com/reddit/achilles-sdk + +go 1.22.5 + +toolchain go1.22.7 + +require ( + github.com/fgrosse/zaptest v1.1.0 + github.com/go-logr/zapr v1.3.0 + github.com/gobuffalo/flect v0.3.0 + github.com/google/go-cmp v0.6.0 + github.com/iancoleman/strcase v0.2.0 + github.com/onsi/ginkgo/v2 v2.17.1 + github.com/onsi/gomega v1.32.0 + github.com/prometheus/client_golang v1.19.0 + github.com/prometheus/client_model v0.6.0 + github.com/reddit/achilles-sdk-api v0.0.0-20241029144808-3486513ce3c7 + github.com/spf13/pflag v1.0.6-0.20210604193023-d5e0c0615ace + github.com/stretchr/testify v1.9.0 + go.uber.org/zap v1.27.0 + golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 + golang.org/x/sync v0.7.0 + golang.org/x/time v0.5.0 + golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d + k8s.io/api v0.29.3 + k8s.io/apiextensions-apiserver v0.29.3 + k8s.io/apimachinery v0.30.0 + k8s.io/client-go v0.29.3 + k8s.io/utils v0.0.0-20231127182322-b307cd553661 + sigs.k8s.io/controller-runtime v0.17.3 + sigs.k8s.io/yaml v1.4.0 +) + +require ( + github.com/beorn7/perks v1.0.1 // indirect + github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/emicklei/go-restful/v3 v3.11.0 // indirect + github.com/evanphx/json-patch v5.7.0+incompatible // indirect + github.com/evanphx/json-patch/v5 v5.9.0 // indirect + github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/go-logr/logr v1.4.2 // indirect + github.com/go-openapi/jsonpointer v0.21.0 // indirect + github.com/go-openapi/jsonreference v0.21.0 // indirect + github.com/go-openapi/swag v0.23.0 // indirect + github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golang/protobuf v1.5.4 // indirect + github.com/google/gnostic-models v0.6.8 // indirect + github.com/google/gofuzz v1.2.0 // indirect + github.com/google/pprof v0.0.0-20240117000934-35fc243c5815 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/imdario/mergo v0.3.16 // indirect + github.com/josharian/intern v1.0.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/mailru/easyjson v0.7.7 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/onsi/ginkgo v1.16.5 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect + github.com/prometheus/common v0.49.0 // indirect + github.com/prometheus/procfs v0.12.0 // indirect + go.uber.org/multierr v1.11.0 // indirect + golang.org/x/mod v0.17.0 // indirect + golang.org/x/net v0.27.0 // indirect + golang.org/x/oauth2 v0.21.0 // indirect + golang.org/x/sys v0.22.0 // indirect + golang.org/x/term v0.22.0 // indirect + golang.org/x/text v0.16.0 // indirect + gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect + google.golang.org/protobuf v1.34.1 // indirect + gopkg.in/inf.v0 v0.9.1 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + k8s.io/component-base v0.29.3 // indirect + k8s.io/klog/v2 v2.120.1 // indirect + k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 // indirect + sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..c54da87 --- /dev/null +++ b/go.sum @@ -0,0 +1,250 @@ +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= +github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= +github.com/evanphx/json-patch v5.7.0+incompatible h1:vgGkfT/9f8zE6tvSCe74nfpAVDQ2tG6yudJd8LBksgI= +github.com/evanphx/json-patch v5.7.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch/v5 v5.9.0 h1:kcBlZQbplgElYIlo/n1hJbls2z/1awpXxpRi0/FOJfg= +github.com/evanphx/json-patch/v5 v5.9.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ= +github.com/fgrosse/zaptest v1.1.0 h1:sK9hP0/xBoNX5qfFo3KWFluDXfc809APomI1QXuYELA= +github.com/fgrosse/zaptest v1.1.0/go.mod h1:vMnRSul6kW7kIUXZgnZZcDwyTn8k49ODfAULL8nmL5w= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ= +github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg= +github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= +github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= +github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ= +github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4= +github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= +github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= +github.com/gobuffalo/flect v0.3.0 h1:erfPWM+K1rFNIQeRPdeEXxo8yFr/PO17lhRnS8FUrtk= +github.com/gobuffalo/flect v0.3.0/go.mod h1:5pf3aGnsvqvCj50AVni7mJJF8ICxGZ8HomberC3pXLE= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +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/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= +github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/pprof v0.0.0-20240117000934-35fc243c5815 h1:WzfWbQz/Ze8v6l++GGbGNFZnUShVpP/0xffCPLL+ax8= +github.com/google/pprof v0.0.0-20240117000934-35fc243c5815/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/iancoleman/strcase v0.2.0 h1:05I4QRnGpI0m37iZQRuskXh+w77mr6Z41lwQzuHLwW0= +github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= +github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= +github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +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/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +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/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= +github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= +github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= +github.com/onsi/ginkgo/v2 v2.17.1 h1:V++EzdbhI4ZV4ev0UTIj0PzhzOcReJFyJaLjtSF55M8= +github.com/onsi/ginkgo/v2 v2.17.1/go.mod h1:llBI3WDLL9Z6taip6f33H76YcWtJv+7R3HigUjbIBOs= +github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.32.0 h1:JRYU78fJ1LPxlckP6Txi/EYqJvjtMrDC04/MM5XRHPk= +github.com/onsi/gomega v1.32.0/go.mod h1:a4x4gW6Pz2yK1MAmvluYme5lvYTn61afQ2ETw/8n4Lg= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= +github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos= +github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8= +github.com/prometheus/common v0.49.0 h1:ToNTdK4zSnPVJmh698mGFkDor9wBI/iGaJy5dbH1EgI= +github.com/prometheus/common v0.49.0/go.mod h1:Kxm+EULxRbUkjGU6WFsQqo3ORzB4tyKvlWFOE9mB2sE= +github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= +github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= +github.com/reddit/achilles-sdk-api v0.0.0-20241029144808-3486513ce3c7 h1:hi9R3uzSJ4bfNwK/ODo649gK3IWXrJ78k9DWQLNKaYI= +github.com/reddit/achilles-sdk-api v0.0.0-20241029144808-3486513ce3c7/go.mod h1:tKV9nH5k3TM5MGomS28JRzVyZ+yeJgdS2c5qMZe7fuI= +github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= +github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= +github.com/spf13/pflag v1.0.6-0.20210604193023-d5e0c0615ace h1:9PNP1jnUjRhfmGMlkXHjYPishpcw4jpSt/V/xYY3FMA= +github.com/spf13/pflag v1.0.6-0.20210604193023-d5e0c0615ace/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= +go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 h1:LfspQV/FYTatPTr/3HzIcmiUFH7PGP+OQ6mgDYo3yuQ= +golang.org/x/exp v0.0.0-20240222234643-814bf88cf225/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= +golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= +golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= +golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/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-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/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-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= +golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.22.0 h1:BbsgPEJULsl2fV/AT3v15Mjva5yXKQDyKf+TbDz7QJk= +golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= +golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw= +gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= +google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +k8s.io/api v0.29.3 h1:2ORfZ7+bGC3YJqGpV0KSDDEVf8hdGQ6A03/50vj8pmw= +k8s.io/api v0.29.3/go.mod h1:y2yg2NTyHUUkIoTC+phinTnEa3KFM6RZ3szxt014a80= +k8s.io/apiextensions-apiserver v0.29.3 h1:9HF+EtZaVpFjStakF4yVufnXGPRppWFEQ87qnO91YeI= +k8s.io/apiextensions-apiserver v0.29.3/go.mod h1:po0XiY5scnpJfFizNGo6puNU6Fq6D70UJY2Cb2KwAVc= +k8s.io/apimachinery v0.30.0 h1:qxVPsyDM5XS96NIh9Oj6LavoVFYff/Pon9cZeDIkHHA= +k8s.io/apimachinery v0.30.0/go.mod h1:iexa2somDaxdnj7bha06bhb43Zpa6eWH8N8dbqVjTUc= +k8s.io/client-go v0.29.3 h1:R/zaZbEAxqComZ9FHeQwOh3Y1ZUs7FaHKZdQtIc2WZg= +k8s.io/client-go v0.29.3/go.mod h1:tkDisCvgPfiRpxGnOORfkljmS+UrW+WtXAy2fTvXJB0= +k8s.io/component-base v0.29.3 h1:Oq9/nddUxlnrCuuR2K/jp6aflVvc0uDvxMzAWxnGzAo= +k8s.io/component-base v0.29.3/go.mod h1:Yuj33XXjuOk2BAaHsIGHhCKZQAgYKhqIxIjIr2UXYio= +k8s.io/klog/v2 v2.120.1 h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw= +k8s.io/klog/v2 v2.120.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= +k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 h1:BZqlfIlq5YbRMFko6/PM7FjZpUb45WallggurYhKGag= +k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340/go.mod h1:yD4MZYeKMBwQKVht279WycxKyM84kkAx2DPrTXaeb98= +k8s.io/utils v0.0.0-20231127182322-b307cd553661 h1:FepOBzJ0GXm8t0su67ln2wAZjbQ6RxQGZDnzuLcrUTI= +k8s.io/utils v0.0.0-20231127182322-b307cd553661/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +sigs.k8s.io/controller-runtime v0.17.3 h1:65QmN7r3FWgTxDMz9fvGnO1kbf2nu+acg9p2R9oYYYk= +sigs.k8s.io/controller-runtime v0.17.3/go.mod h1:N0jpP5Lo7lMTF9aL56Z/B2oWBJjey6StQM0jRbKQXtY= +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/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4= +sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08= +sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= +sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= diff --git a/pkg/bootstrap/bootstrap.go b/pkg/bootstrap/bootstrap.go new file mode 100644 index 0000000..fb4dcaa --- /dev/null +++ b/pkg/bootstrap/bootstrap.go @@ -0,0 +1,233 @@ +package bootstrap + +import ( + "context" + "errors" + "fmt" + "time" + + "github.com/go-logr/zapr" + "github.com/spf13/pflag" + "go.uber.org/zap" + "go.uber.org/zap/zapcore" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/client-go/rest" + "k8s.io/client-go/tools/clientcmd" + ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/cache" + "sigs.k8s.io/controller-runtime/pkg/healthz" + zaputil "sigs.k8s.io/controller-runtime/pkg/log/zap" + "sigs.k8s.io/controller-runtime/pkg/manager" + "sigs.k8s.io/controller-runtime/pkg/metrics/server" + + "github.com/reddit/achilles-sdk/pkg/logging" +) + +const ( + errNoValidKubeContext = "kubeconfig context must be specified when not in cluster" + errKubeContextSetInCluster = "kubeconfig context can not be specified when in cluster" +) + +// Options for starting a custom controller +type Options struct { + // InCluster specifies whether the controller should use the in-cluster k8s client config. + InCluster bool + + // KubeContext is the context name to use for the controller's k8s client. + KubeContext string + + // KubeConfig specifies the explicit path of the controller's k8s client config. + KubeConfig string + + // MetricsAddr is the bind address for the metrics endpoint + MetricsAddr string + // HealthAddr is the bind address for the healthcheck endpoints + HealthAddr string + + // enables verbose mode + VerboseMode bool + + // enables dev logger (instead of prod logger) + // NOTE: DO NOT set this to true in prod, it will crash on DPanic + DevLogger bool + + // Maximum QPS to the kube-apiserver from this client + ClientQPS float32 + + // Maximum burst for throttle + ClientBurst int + + // SyncPeriod determines the minimum frequency at which controllers will perform a reconciliation. + // This is a global setting that applies to all controllers. Defaults to 10 hours. + // Issue tracking sync periods per controller: https://github.com/reddit/achilles-sdk/issues/171 + SyncPeriod time.Duration +} + +func (o *Options) AddToFlags(flags *pflag.FlagSet) { + // kubeconfig parameters + flags.BoolVar(&o.InCluster, "incluster", false, "Uses the in-cluster Kubeconfig. Exactly one of `incluster` or `kubecontext` must be set") + flags.StringVar(&o.KubeContext, "kubecontext", "", "Specifies the kubeconfig context. Exactly one of `incluster` and `kubecontext` must be set") + flags.StringVar(&o.KubeConfig, "kubeconfig", "", "Specifies the location of kubeconfig. Defaults to standard lookup strategy") + + flags.StringVar(&o.MetricsAddr, "metrics-addr", ":8080", "Bind address for metrics endpoint") + flags.StringVar(&o.HealthAddr, "health-addr", ":8081", "Bind address for health endpoint") + + // logging parameters + flags.BoolVar(&o.VerboseMode, "verbose", true, "Enable verbose logging") + flags.BoolVar(&o.DevLogger, "dev-logging", true, "Enable dev-mode logging (human-readable logs)") + + // client request rate parameters + flags.Float32Var(&o.ClientQPS, "client-qps", 5.0, "Maximum QPS to the kube-apiserver from the controller's client") + flags.IntVar(&o.ClientBurst, "client-burst", 10, "Maximum request/s burst to the kube-apiserver from the controller's client") + + flags.DurationVar(&o.SyncPeriod, "sync-period", 10*time.Hour, "Minimum frequency at which all controllers will perform a reconciliation.") +} + +// StartFunc is a function for starting a controller manager +type StartFunc func( + ctx context.Context, + mgr manager.Manager, +) error + +// Start a custom controller with given parameters +func Start( + ctx context.Context, + schemes runtime.SchemeBuilder, + opts *Options, + startFunc StartFunc, +) error { + log := setupLogging(opts.VerboseMode, opts.DevLogger) + ctx = logging.NewContext(ctx, log) + + cfg, err := buildRestConfig(opts) + if err != nil { + return fmt.Errorf("building k8s client config: %w", err) + } + + mgr, err := buildManager(cfg, log, schemes, opts) + if err != nil { + return fmt.Errorf("building manager: %w", err) + } + + if err := startFunc(ctx, mgr); err != nil { + return fmt.Errorf("running start func: %w", err) + } + + log.Info("starting manager") + if err := mgr.Start(ctrl.SetupSignalHandler()); err != nil { + return fmt.Errorf("starting manager: %w", err) + } + + return nil +} + +func buildManager(cfg *rest.Config, log *zap.SugaredLogger, schemes runtime.SchemeBuilder, opts *Options) (manager.Manager, error) { + mgr, err := manager.New( + cfg, + manager.Options{ + HealthProbeBindAddress: opts.HealthAddr, + Metrics: server.Options{BindAddress: opts.MetricsAddr}, + Logger: zapr.NewLogger(log.Desugar()), + Cache: cache.Options{ + SyncPeriod: &opts.SyncPeriod, + }, + }, + ) + if err != nil { + return nil, fmt.Errorf("constructing manager: %w", err) + } + + if err := mgr.AddHealthzCheck("healthz", healthz.Ping); err != nil { + return nil, fmt.Errorf("adding healthz: %w", err) + } + + if err := mgr.AddReadyzCheck("readyz", healthz.Ping); err != nil { + return nil, fmt.Errorf("adding readyz: %w", err) + } + + if schemes != nil { + if err := schemes.AddToScheme(mgr.GetScheme()); err != nil { + return nil, err + } + } + return mgr, nil +} + +func buildRestConfig(o *Options) (*rest.Config, error) { + if o.InCluster { + if o.KubeContext != "" { + return nil, errors.New(errKubeContextSetInCluster) + } + + cfg, err := rest.InClusterConfig() + if err != nil { + return nil, fmt.Errorf("building in-cluster kubeconfig: %w", err) + } + + cfg.QPS = o.ClientQPS + cfg.Burst = o.ClientBurst + + return cfg, err + } + + if o.KubeContext == "" { + return nil, errors.New(errNoValidKubeContext) + } + + var rules *clientcmd.ClientConfigLoadingRules + if o.KubeConfig != "" { + rules = &clientcmd.ClientConfigLoadingRules{ExplicitPath: o.KubeConfig} + } else { + rules = clientcmd.NewDefaultClientConfigLoadingRules() + } + + cfg, err := clientcmd.NewNonInteractiveDeferredLoadingClientConfig( + rules, + &clientcmd.ConfigOverrides{ + CurrentContext: o.KubeContext, + }, + ).ClientConfig() + + cfg.QPS = o.ClientQPS + cfg.Burst = o.ClientBurst + + return cfg, err +} + +func setupLogging(verboseMode, devLogger bool) *zap.SugaredLogger { + var baseLogger *zap.Logger + if devLogger { + l, err := zap.NewDevelopment() + if err != nil { + // TODO(eac): fixme + panic(err) + } + baseLogger = l + } else { + level := zapcore.InfoLevel + if verboseMode { + level = zapcore.DebugLevel + } + atomicLevel := zap.NewAtomicLevelAt(level) + zapOpts := []zaputil.Opts{ + zaputil.Level(&atomicLevel), + func(options *zaputil.Options) { + options.TimeEncoder = zapcore.ISO8601TimeEncoder + }, + } + if devLogger { + zapOpts = append( + zapOpts, + // Only set debug mode if specified. This will use a non-json (human-readable) encoder which makes it impossible + // to use any json parsing tools for the log. Should only be enabled explicitly + zaputil.UseDevMode(true), + ) + } + baseLogger = zaputil.NewRaw(zapOpts...) + } + + // set controller-runtime global logger + ctrl.SetLogger(zapr.NewLogger(baseLogger)) + + return baseLogger.Sugar() +} diff --git a/pkg/bootstrap/bootstrap_test.go b/pkg/bootstrap/bootstrap_test.go new file mode 100644 index 0000000..ead15ee --- /dev/null +++ b/pkg/bootstrap/bootstrap_test.go @@ -0,0 +1,27 @@ +package bootstrap + +import ( + "testing" + + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" +) + +var _ = DescribeTable("buildRestConfig should fail", + func(inCluster bool, kubeContext string, want string) { + opts := &Options{ + InCluster: inCluster, + KubeContext: kubeContext, + } + _, err := buildRestConfig(opts) + Expect(err).Should(MatchError(want)) + }, + Entry("implicitly", false, "", errNoValidKubeContext), + Entry("when both inCluster and context are set", + true, "foo", errKubeContextSetInCluster), +) + +func TestBootstrap(t *testing.T) { + RegisterFailHandler(Fail) + RunSpecs(t, "Bootstrap") +} diff --git a/pkg/encoding/json/decode.go b/pkg/encoding/json/decode.go new file mode 100644 index 0000000..24c1959 --- /dev/null +++ b/pkg/encoding/json/decode.go @@ -0,0 +1,1309 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Represents JSON data structure using native Go types: booleans, floats, +// strings, arrays, and maps. + +package json + +import ( + "encoding" + "encoding/base64" + "fmt" + "reflect" + "strconv" + "strings" + "unicode" + "unicode/utf16" + "unicode/utf8" +) + +// Unmarshal parses the JSON-encoded data and stores the result +// in the value pointed to by v. If v is nil or not a pointer, +// Unmarshal returns an InvalidUnmarshalError. +// +// Unmarshal uses the inverse of the encodings that +// Marshal uses, allocating maps, slices, and pointers as necessary, +// with the following additional rules: +// +// To unmarshal JSON into a pointer, Unmarshal first handles the case of +// the JSON being the JSON literal null. In that case, Unmarshal sets +// the pointer to nil. Otherwise, Unmarshal unmarshals the JSON into +// the value pointed at by the pointer. If the pointer is nil, Unmarshal +// allocates a new value for it to point to. +// +// To unmarshal JSON into a value implementing the Unmarshaler interface, +// Unmarshal calls that value's UnmarshalJSON method, including +// when the input is a JSON null. +// Otherwise, if the value implements encoding.TextUnmarshaler +// and the input is a JSON quoted string, Unmarshal calls that value's +// UnmarshalText method with the unquoted form of the string. +// +// To unmarshal JSON into a struct, Unmarshal matches incoming object +// keys to the keys used by Marshal (either the struct field name or its tag), +// preferring an exact match but also accepting a case-insensitive match. By +// default, object keys which don't have a corresponding struct field are +// ignored (see Decoder.DisallowUnknownFields for an alternative). +// +// To unmarshal JSON into an interface value, +// Unmarshal stores one of these in the interface value: +// +// bool, for JSON booleans +// float64, for JSON numbers +// string, for JSON strings +// []interface{}, for JSON arrays +// map[string]interface{}, for JSON objects +// nil for JSON null +// +// To unmarshal a JSON array into a slice, Unmarshal resets the slice length +// to zero and then appends each element to the slice. +// As a special case, to unmarshal an empty JSON array into a slice, +// Unmarshal replaces the slice with a new empty slice. +// +// To unmarshal a JSON array into a Go array, Unmarshal decodes +// JSON array elements into corresponding Go array elements. +// If the Go array is smaller than the JSON array, +// the additional JSON array elements are discarded. +// If the JSON array is smaller than the Go array, +// the additional Go array elements are set to zero values. +// +// To unmarshal a JSON object into a map, Unmarshal first establishes a map to +// use. If the map is nil, Unmarshal allocates a new map. Otherwise Unmarshal +// reuses the existing map, keeping existing entries. Unmarshal then stores +// key-value pairs from the JSON object into the map. The map's key type must +// either be any string type, an integer, implement json.Unmarshaler, or +// implement encoding.TextUnmarshaler. +// +// If a JSON value is not appropriate for a given target type, +// or if a JSON number overflows the target type, Unmarshal +// skips that field and completes the unmarshaling as best it can. +// If no more serious errors are encountered, Unmarshal returns +// an UnmarshalTypeError describing the earliest such error. In any +// case, it's not guaranteed that all the remaining fields following +// the problematic one will be unmarshaled into the target object. +// +// The JSON null value unmarshals into an interface, map, pointer, or slice +// by setting that Go value to nil. Because null is often used in JSON to mean +// “not present,” unmarshaling a JSON null into any other Go type has no effect +// on the value and produces no error. +// +// When unmarshaling quoted strings, invalid UTF-8 or +// invalid UTF-16 surrogate pairs are not treated as an error. +// Instead, they are replaced by the Unicode replacement +// character U+FFFD. +func Unmarshal(data []byte, v interface{}) error { + // Check for well-formedness. + // Avoids filling out half a data structure + // before discovering a JSON syntax error. + var d decodeState + err := checkValid(data, &d.scan) + if err != nil { + return err + } + + d.init(data) + return d.unmarshal(v) +} + +// Unmarshaler is the interface implemented by types +// that can unmarshal a JSON description of themselves. +// The input can be assumed to be a valid encoding of +// a JSON value. UnmarshalJSON must copy the JSON data +// if it wishes to retain the data after returning. +// +// By convention, to approximate the behavior of Unmarshal itself, +// Unmarshalers implement UnmarshalJSON([]byte("null")) as a no-op. +type Unmarshaler interface { + UnmarshalJSON([]byte) error +} + +// An UnmarshalTypeError describes a JSON value that was +// not appropriate for a value of a specific Go type. +type UnmarshalTypeError struct { + Value string // description of JSON value - "bool", "array", "number -5" + Type reflect.Type // type of Go value it could not be assigned to + Offset int64 // error occurred after reading Offset bytes + Struct string // name of the struct type containing the field + Field string // the full path from root node to the field +} + +func (e *UnmarshalTypeError) Error() string { + if e.Struct != "" || e.Field != "" { + return "json: cannot unmarshal " + e.Value + " into Go struct field " + e.Struct + "." + e.Field + " of type " + e.Type.String() + } + return "json: cannot unmarshal " + e.Value + " into Go value of type " + e.Type.String() +} + +// An UnmarshalFieldError describes a JSON object key that +// led to an unexported (and therefore unwritable) struct field. +// +// Deprecated: No longer used; kept for compatibility. +type UnmarshalFieldError struct { + Key string + Type reflect.Type + Field reflect.StructField +} + +func (e *UnmarshalFieldError) Error() string { + return "json: cannot unmarshal object key " + strconv.Quote(e.Key) + " into unexported field " + e.Field.Name + " of type " + e.Type.String() +} + +// An InvalidUnmarshalError describes an invalid argument passed to Unmarshal. +// (The argument to Unmarshal must be a non-nil pointer.) +type InvalidUnmarshalError struct { + Type reflect.Type +} + +func (e *InvalidUnmarshalError) Error() string { + if e.Type == nil { + return "json: Unmarshal(nil)" + } + + if e.Type.Kind() != reflect.Ptr { + return "json: Unmarshal(non-pointer " + e.Type.String() + ")" + } + return "json: Unmarshal(nil " + e.Type.String() + ")" +} + +func (d *decodeState) unmarshal(v interface{}) error { + rv := reflect.ValueOf(v) + if rv.Kind() != reflect.Ptr || rv.IsNil() { + return &InvalidUnmarshalError{reflect.TypeOf(v)} + } + + d.scan.reset() + d.scanWhile(scanSkipSpace) + // We decode rv not rv.Elem because the Unmarshaler interface + // test must be applied at the top level of the value. + err := d.value(rv) + if err != nil { + return d.addErrorContext(err) + } + return d.savedError +} + +// A Number represents a JSON number literal. +type Number string + +// String returns the literal text of the number. +func (n Number) String() string { return string(n) } + +// Float64 returns the number as a float64. +func (n Number) Float64() (float64, error) { + return strconv.ParseFloat(string(n), 64) +} + +// Int64 returns the number as an int64. +func (n Number) Int64() (int64, error) { + return strconv.ParseInt(string(n), 10, 64) +} + +// An errorContext provides context for type errors during decoding. +type errorContext struct { + Struct reflect.Type + FieldStack []string +} + +// decodeState represents the state while decoding a JSON value. +type decodeState struct { + data []byte + off int // next read offset in data + opcode int // last read result + scan scanner + errorContext *errorContext + savedError error + useNumber bool + disallowUnknownFields bool +} + +// readIndex returns the position of the last byte read. +func (d *decodeState) readIndex() int { + return d.off - 1 +} + +// phasePanicMsg is used as a panic message when we end up with something that +// shouldn't happen. It can indicate a bug in the JSON decoder, or that +// something is editing the data slice while the decoder executes. +const phasePanicMsg = "JSON decoder out of sync - data changing underfoot?" + +func (d *decodeState) init(data []byte) *decodeState { + d.data = data + d.off = 0 + d.savedError = nil + if d.errorContext != nil { + d.errorContext.Struct = nil + // Reuse the allocated space for the FieldStack slice. + d.errorContext.FieldStack = d.errorContext.FieldStack[:0] + } + return d +} + +// saveError saves the first err it is called with, +// for reporting at the end of the unmarshal. +func (d *decodeState) saveError(err error) { + if d.savedError == nil { + d.savedError = d.addErrorContext(err) + } +} + +// addErrorContext returns a new error enhanced with information from d.errorContext +func (d *decodeState) addErrorContext(err error) error { + if d.errorContext != nil && (d.errorContext.Struct != nil || len(d.errorContext.FieldStack) > 0) { + switch err := err.(type) { + case *UnmarshalTypeError: + err.Struct = d.errorContext.Struct.Name() + err.Field = strings.Join(d.errorContext.FieldStack, ".") + } + } + return err +} + +// skip scans to the end of what was started. +func (d *decodeState) skip() { + s, data, i := &d.scan, d.data, d.off + depth := len(s.parseState) + for { + op := s.step(s, data[i]) + i++ + if len(s.parseState) < depth { + d.off = i + d.opcode = op + return + } + } +} + +// scanNext processes the byte at d.data[d.off]. +func (d *decodeState) scanNext() { + if d.off < len(d.data) { + d.opcode = d.scan.step(&d.scan, d.data[d.off]) + d.off++ + } else { + d.opcode = d.scan.eof() + d.off = len(d.data) + 1 // mark processed EOF with len+1 + } +} + +// scanWhile processes bytes in d.data[d.off:] until it +// receives a scan code not equal to op. +func (d *decodeState) scanWhile(op int) { + s, data, i := &d.scan, d.data, d.off + for i < len(data) { + newOp := s.step(s, data[i]) + i++ + if newOp != op { + d.opcode = newOp + d.off = i + return + } + } + + d.off = len(data) + 1 // mark processed EOF with len+1 + d.opcode = d.scan.eof() +} + +// rescanLiteral is similar to scanWhile(scanContinue), but it specialises the +// common case where we're decoding a literal. The decoder scans the input +// twice, once for syntax errors and to check the length of the value, and the +// second to perform the decoding. +// +// Only in the second step do we use decodeState to tokenize literals, so we +// know there aren't any syntax errors. We can take advantage of that knowledge, +// and scan a literal's bytes much more quickly. +func (d *decodeState) rescanLiteral() { + data, i := d.data, d.off +Switch: + switch data[i-1] { + case '"': // string + for ; i < len(data); i++ { + switch data[i] { + case '\\': + i++ // escaped char + case '"': + i++ // tokenize the closing quote too + break Switch + } + } + case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-': // number + for ; i < len(data); i++ { + switch data[i] { + case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + '.', 'e', 'E', '+', '-': + default: + break Switch + } + } + case 't': // true + i += len("rue") + case 'f': // false + i += len("alse") + case 'n': // null + i += len("ull") + } + if i < len(data) { + d.opcode = stateEndValue(&d.scan, data[i]) + } else { + d.opcode = scanEnd + } + d.off = i + 1 +} + +// value consumes a JSON value from d.data[d.off-1:], decoding into v, and +// reads the following byte ahead. If v is invalid, the value is discarded. +// The first byte of the value has been read already. +func (d *decodeState) value(v reflect.Value) error { + switch d.opcode { + default: + panic(phasePanicMsg) + + case scanBeginArray: + if v.IsValid() { + if err := d.array(v); err != nil { + return err + } + } else { + d.skip() + } + d.scanNext() + + case scanBeginObject: + if v.IsValid() { + if err := d.object(v); err != nil { + return err + } + } else { + d.skip() + } + d.scanNext() + + case scanBeginLiteral: + // All bytes inside literal return scanContinue op code. + start := d.readIndex() + d.rescanLiteral() + + if v.IsValid() { + if err := d.literalStore(d.data[start:d.readIndex()], v, false); err != nil { + return err + } + } + } + return nil +} + +type unquotedValue struct{} + +// valueQuoted is like value but decodes a +// quoted string literal or literal null into an interface value. +// If it finds anything other than a quoted string literal or null, +// valueQuoted returns unquotedValue{}. +func (d *decodeState) valueQuoted() interface{} { + switch d.opcode { + default: + panic(phasePanicMsg) + + case scanBeginArray, scanBeginObject: + d.skip() + d.scanNext() + + case scanBeginLiteral: + v := d.literalInterface() + switch v.(type) { + case nil, string: + return v + } + } + return unquotedValue{} +} + +// indirect walks down v allocating pointers as needed, +// until it gets to a non-pointer. +// If it encounters an Unmarshaler, indirect stops and returns that. +// If decodingNull is true, indirect stops at the first settable pointer so it +// can be set to nil. +func indirect(v reflect.Value, decodingNull bool) (Unmarshaler, encoding.TextUnmarshaler, reflect.Value) { + // Issue #24153 indicates that it is generally not a guaranteed property + // that you may round-trip a reflect.Value by calling Value.Addr().Elem() + // and expect the value to still be settable for values derived from + // unexported embedded struct fields. + // + // The logic below effectively does this when it first addresses the value + // (to satisfy possible pointer methods) and continues to dereference + // subsequent pointers as necessary. + // + // After the first round-trip, we set v back to the original value to + // preserve the original RW flags contained in reflect.Value. + v0 := v + haveAddr := false + + // If v is a named type and is addressable, + // start with its address, so that if the type has pointer methods, + // we find them. + if v.Kind() != reflect.Ptr && v.Type().Name() != "" && v.CanAddr() { + haveAddr = true + v = v.Addr() + } + for { + // Load value from interface, but only if the result will be + // usefully addressable. + if v.Kind() == reflect.Interface && !v.IsNil() { + e := v.Elem() + if e.Kind() == reflect.Ptr && !e.IsNil() && (!decodingNull || e.Elem().Kind() == reflect.Ptr) { + haveAddr = false + v = e + continue + } + } + + if v.Kind() != reflect.Ptr { + break + } + + if decodingNull && v.CanSet() { + break + } + + // Prevent infinite loop if v is an interface pointing to its own address: + // var v interface{} + // v = &v + if v.Elem().Kind() == reflect.Interface && v.Elem().Elem() == v { + v = v.Elem() + break + } + if v.IsNil() { + v.Set(reflect.New(v.Type().Elem())) + } + if v.Type().NumMethod() > 0 && v.CanInterface() { + if u, ok := v.Interface().(Unmarshaler); ok { + return u, nil, reflect.Value{} + } + if !decodingNull { + if u, ok := v.Interface().(encoding.TextUnmarshaler); ok { + return nil, u, reflect.Value{} + } + } + } + + if haveAddr { + v = v0 // restore original value after round-trip Value.Addr().Elem() + haveAddr = false + } else { + v = v.Elem() + } + } + return nil, nil, v +} + +// array consumes an array from d.data[d.off-1:], decoding into v. +// The first byte of the array ('[') has been read already. +func (d *decodeState) array(v reflect.Value) error { + // Check for unmarshaler. + u, ut, pv := indirect(v, false) + if u != nil { + start := d.readIndex() + d.skip() + return u.UnmarshalJSON(d.data[start:d.off]) + } + if ut != nil { + d.saveError(&UnmarshalTypeError{Value: "array", Type: v.Type(), Offset: int64(d.off)}) + d.skip() + return nil + } + v = pv + + // Check type of target. + switch v.Kind() { + case reflect.Interface: + if v.NumMethod() == 0 { + // Decoding into nil interface? Switch to non-reflect code. + ai := d.arrayInterface() + v.Set(reflect.ValueOf(ai)) + return nil + } + // Otherwise it's invalid. + fallthrough + default: + d.saveError(&UnmarshalTypeError{Value: "array", Type: v.Type(), Offset: int64(d.off)}) + d.skip() + return nil + case reflect.Array, reflect.Slice: + break + } + + i := 0 + for { + // Look ahead for ] - can only happen on first iteration. + d.scanWhile(scanSkipSpace) + if d.opcode == scanEndArray { + break + } + + // Get element of array, growing if necessary. + if v.Kind() == reflect.Slice { + // Grow slice if necessary + if i >= v.Cap() { + newcap := v.Cap() + v.Cap()/2 + if newcap < 4 { + newcap = 4 + } + newv := reflect.MakeSlice(v.Type(), v.Len(), newcap) + reflect.Copy(newv, v) + v.Set(newv) + } + if i >= v.Len() { + v.SetLen(i + 1) + } + } + + if i < v.Len() { + // Decode into element. + if err := d.value(v.Index(i)); err != nil { + return err + } + } else { + // Ran out of fixed array: skip. + if err := d.value(reflect.Value{}); err != nil { + return err + } + } + i++ + + // Next token must be , or ]. + if d.opcode == scanSkipSpace { + d.scanWhile(scanSkipSpace) + } + if d.opcode == scanEndArray { + break + } + if d.opcode != scanArrayValue { + panic(phasePanicMsg) + } + } + + if i < v.Len() { + if v.Kind() == reflect.Array { + // Array. Zero the rest. + z := reflect.Zero(v.Type().Elem()) + for ; i < v.Len(); i++ { + v.Index(i).Set(z) + } + } else { + v.SetLen(i) + } + } + if i == 0 && v.Kind() == reflect.Slice { + v.Set(reflect.MakeSlice(v.Type(), 0, 0)) + } + return nil +} + +var nullLiteral = []byte("null") +var textUnmarshalerType = reflect.TypeOf((*encoding.TextUnmarshaler)(nil)).Elem() + +// object consumes an object from d.data[d.off-1:], decoding into v. +// The first byte ('{') of the object has been read already. +func (d *decodeState) object(v reflect.Value) error { + // Check for unmarshaler. + u, ut, pv := indirect(v, false) + if u != nil { + start := d.readIndex() + d.skip() + return u.UnmarshalJSON(d.data[start:d.off]) + } + if ut != nil { + d.saveError(&UnmarshalTypeError{Value: "object", Type: v.Type(), Offset: int64(d.off)}) + d.skip() + return nil + } + v = pv + t := v.Type() + + // Decoding into nil interface? Switch to non-reflect code. + if v.Kind() == reflect.Interface && v.NumMethod() == 0 { + oi := d.objectInterface() + v.Set(reflect.ValueOf(oi)) + return nil + } + + var fields structFields + + // Check type of target: + // struct or + // map[T1]T2 where T1 is string, an integer type, + // or an encoding.TextUnmarshaler + switch v.Kind() { + case reflect.Map: + // Map key must either have string kind, have an integer kind, + // or be an encoding.TextUnmarshaler. + switch t.Key().Kind() { + case reflect.String, + reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, + reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + default: + if !reflect.PtrTo(t.Key()).Implements(textUnmarshalerType) { + d.saveError(&UnmarshalTypeError{Value: "object", Type: t, Offset: int64(d.off)}) + d.skip() + return nil + } + } + if v.IsNil() { + v.Set(reflect.MakeMap(t)) + } + case reflect.Struct: + fields = cachedTypeFields(t) + // ok + default: + d.saveError(&UnmarshalTypeError{Value: "object", Type: t, Offset: int64(d.off)}) + d.skip() + return nil + } + + var mapElem reflect.Value + var origErrorContext errorContext + if d.errorContext != nil { + origErrorContext = *d.errorContext + } + + for { + // Read opening " of string key or closing }. + d.scanWhile(scanSkipSpace) + if d.opcode == scanEndObject { + // closing } - can only happen on first iteration. + break + } + if d.opcode != scanBeginLiteral { + panic(phasePanicMsg) + } + + // Read key. + start := d.readIndex() + d.rescanLiteral() + item := d.data[start:d.readIndex()] + key, ok := unquoteBytes(item) + if !ok { + panic(phasePanicMsg) + } + + // Figure out field corresponding to key. + var subv reflect.Value + destring := false // whether the value is wrapped in a string to be decoded first + + if v.Kind() == reflect.Map { + elemType := t.Elem() + if !mapElem.IsValid() { + mapElem = reflect.New(elemType).Elem() + } else { + mapElem.Set(reflect.Zero(elemType)) + } + subv = mapElem + } else { + var f *field + if i, ok := fields.nameIndex[string(key)]; ok { + // Found an exact name match. + f = &fields.list[i] + } else { + // Fall back to the expensive case-insensitive + // linear search. + for i := range fields.list { + ff := &fields.list[i] + if ff.equalFold(ff.nameBytes, key) { + f = ff + break + } + } + } + if f != nil { + subv = v + destring = f.quoted + for _, i := range f.index { + if subv.Kind() == reflect.Ptr { + if subv.IsNil() { + // If a struct embeds a pointer to an unexported type, + // it is not possible to set a newly allocated value + // since the field is unexported. + // + // See https://golang.org/issue/21357 + if !subv.CanSet() { + d.saveError(fmt.Errorf("json: cannot set embedded pointer to unexported struct: %v", subv.Type().Elem())) + // Invalidate subv to ensure d.value(subv) skips over + // the JSON value without assigning it to subv. + subv = reflect.Value{} + destring = false + break + } + subv.Set(reflect.New(subv.Type().Elem())) + } + subv = subv.Elem() + } + subv = subv.Field(i) + } + if d.errorContext == nil { + d.errorContext = new(errorContext) + } + d.errorContext.FieldStack = append(d.errorContext.FieldStack, f.name) + d.errorContext.Struct = t + } else if d.disallowUnknownFields { + d.saveError(fmt.Errorf("json: unknown field %q", key)) + } + } + + // Read : before value. + if d.opcode == scanSkipSpace { + d.scanWhile(scanSkipSpace) + } + if d.opcode != scanObjectKey { + panic(phasePanicMsg) + } + d.scanWhile(scanSkipSpace) + + if destring { + switch qv := d.valueQuoted().(type) { + case nil: + if err := d.literalStore(nullLiteral, subv, false); err != nil { + return err + } + case string: + if err := d.literalStore([]byte(qv), subv, true); err != nil { + return err + } + default: + d.saveError(fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal unquoted value into %v", subv.Type())) + } + } else { + if err := d.value(subv); err != nil { + return err + } + } + + // Write value back to map; + // if using struct, subv points into struct already. + if v.Kind() == reflect.Map { + kt := t.Key() + var kv reflect.Value + switch { + case reflect.PtrTo(kt).Implements(textUnmarshalerType): + kv = reflect.New(kt) + if err := d.literalStore(item, kv, true); err != nil { + return err + } + kv = kv.Elem() + case kt.Kind() == reflect.String: + kv = reflect.ValueOf(key).Convert(kt) + default: + switch kt.Kind() { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + s := string(key) + n, err := strconv.ParseInt(s, 10, 64) + if err != nil || reflect.Zero(kt).OverflowInt(n) { + d.saveError(&UnmarshalTypeError{Value: "number " + s, Type: kt, Offset: int64(start + 1)}) + break + } + kv = reflect.ValueOf(n).Convert(kt) + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + s := string(key) + n, err := strconv.ParseUint(s, 10, 64) + if err != nil || reflect.Zero(kt).OverflowUint(n) { + d.saveError(&UnmarshalTypeError{Value: "number " + s, Type: kt, Offset: int64(start + 1)}) + break + } + kv = reflect.ValueOf(n).Convert(kt) + default: + panic("json: Unexpected key type") // should never occur + } + } + if kv.IsValid() { + v.SetMapIndex(kv, subv) + } + } + + // Next token must be , or }. + if d.opcode == scanSkipSpace { + d.scanWhile(scanSkipSpace) + } + if d.errorContext != nil { + // Reset errorContext to its original state. + // Keep the same underlying array for FieldStack, to reuse the + // space and avoid unnecessary allocs. + d.errorContext.FieldStack = d.errorContext.FieldStack[:len(origErrorContext.FieldStack)] + d.errorContext.Struct = origErrorContext.Struct + } + if d.opcode == scanEndObject { + break + } + if d.opcode != scanObjectValue { + panic(phasePanicMsg) + } + } + return nil +} + +// convertNumber converts the number literal s to a float64 or a Number +// depending on the setting of d.useNumber. +func (d *decodeState) convertNumber(s string) (interface{}, error) { + if d.useNumber { + return Number(s), nil + } + f, err := strconv.ParseFloat(s, 64) + if err != nil { + return nil, &UnmarshalTypeError{Value: "number " + s, Type: reflect.TypeOf(0.0), Offset: int64(d.off)} + } + return f, nil +} + +var numberType = reflect.TypeOf(Number("")) + +// literalStore decodes a literal stored in item into v. +// +// fromQuoted indicates whether this literal came from unwrapping a +// string from the ",string" struct tag option. this is used only to +// produce more helpful error messages. +func (d *decodeState) literalStore(item []byte, v reflect.Value, fromQuoted bool) error { + // Check for unmarshaler. + if len(item) == 0 { + //Empty string given + d.saveError(fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", item, v.Type())) + return nil + } + isNull := item[0] == 'n' // null + u, ut, pv := indirect(v, isNull) + if u != nil { + return u.UnmarshalJSON(item) + } + if ut != nil { + if item[0] != '"' { + if fromQuoted { + d.saveError(fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", item, v.Type())) + return nil + } + val := "number" + switch item[0] { + case 'n': + val = "null" + case 't', 'f': + val = "bool" + } + d.saveError(&UnmarshalTypeError{Value: val, Type: v.Type(), Offset: int64(d.readIndex())}) + return nil + } + s, ok := unquoteBytes(item) + if !ok { + if fromQuoted { + return fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", item, v.Type()) + } + panic(phasePanicMsg) + } + return ut.UnmarshalText(s) + } + + v = pv + + switch c := item[0]; c { + case 'n': // null + // The main parser checks that only true and false can reach here, + // but if this was a quoted string input, it could be anything. + if fromQuoted && string(item) != "null" { + d.saveError(fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", item, v.Type())) + break + } + switch v.Kind() { + case reflect.Interface, reflect.Ptr, reflect.Map, reflect.Slice: + v.Set(reflect.Zero(v.Type())) + // otherwise, ignore null for primitives/string + } + case 't', 'f': // true, false + value := item[0] == 't' + // The main parser checks that only true and false can reach here, + // but if this was a quoted string input, it could be anything. + if fromQuoted && string(item) != "true" && string(item) != "false" { + d.saveError(fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", item, v.Type())) + break + } + switch v.Kind() { + default: + if fromQuoted { + d.saveError(fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", item, v.Type())) + } else { + d.saveError(&UnmarshalTypeError{Value: "bool", Type: v.Type(), Offset: int64(d.readIndex())}) + } + case reflect.Bool: + v.SetBool(value) + case reflect.Interface: + if v.NumMethod() == 0 { + v.Set(reflect.ValueOf(value)) + } else { + d.saveError(&UnmarshalTypeError{Value: "bool", Type: v.Type(), Offset: int64(d.readIndex())}) + } + } + + case '"': // string + s, ok := unquoteBytes(item) + if !ok { + if fromQuoted { + return fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", item, v.Type()) + } + panic(phasePanicMsg) + } + switch v.Kind() { + default: + d.saveError(&UnmarshalTypeError{Value: "string", Type: v.Type(), Offset: int64(d.readIndex())}) + case reflect.Slice: + if v.Type().Elem().Kind() != reflect.Uint8 { + d.saveError(&UnmarshalTypeError{Value: "string", Type: v.Type(), Offset: int64(d.readIndex())}) + break + } + b := make([]byte, base64.StdEncoding.DecodedLen(len(s))) + n, err := base64.StdEncoding.Decode(b, s) + if err != nil { + d.saveError(err) + break + } + v.SetBytes(b[:n]) + case reflect.String: + if v.Type() == numberType && !isValidNumber(string(s)) { + return fmt.Errorf("json: invalid number literal, trying to unmarshal %q into Number", item) + } + v.SetString(string(s)) + case reflect.Interface: + if v.NumMethod() == 0 { + v.Set(reflect.ValueOf(string(s))) + } else { + d.saveError(&UnmarshalTypeError{Value: "string", Type: v.Type(), Offset: int64(d.readIndex())}) + } + } + + default: // number + if c != '-' && (c < '0' || c > '9') { + if fromQuoted { + return fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", item, v.Type()) + } + panic(phasePanicMsg) + } + s := string(item) + switch v.Kind() { + default: + if v.Kind() == reflect.String && v.Type() == numberType { + // s must be a valid number, because it's + // already been tokenized. + v.SetString(s) + break + } + if fromQuoted { + return fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", item, v.Type()) + } + d.saveError(&UnmarshalTypeError{Value: "number", Type: v.Type(), Offset: int64(d.readIndex())}) + case reflect.Interface: + n, err := d.convertNumber(s) + if err != nil { + d.saveError(err) + break + } + if v.NumMethod() != 0 { + d.saveError(&UnmarshalTypeError{Value: "number", Type: v.Type(), Offset: int64(d.readIndex())}) + break + } + v.Set(reflect.ValueOf(n)) + + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + n, err := strconv.ParseInt(s, 10, 64) + if err != nil || v.OverflowInt(n) { + d.saveError(&UnmarshalTypeError{Value: "number " + s, Type: v.Type(), Offset: int64(d.readIndex())}) + break + } + v.SetInt(n) + + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + n, err := strconv.ParseUint(s, 10, 64) + if err != nil || v.OverflowUint(n) { + d.saveError(&UnmarshalTypeError{Value: "number " + s, Type: v.Type(), Offset: int64(d.readIndex())}) + break + } + v.SetUint(n) + + case reflect.Float32, reflect.Float64: + n, err := strconv.ParseFloat(s, v.Type().Bits()) + if err != nil || v.OverflowFloat(n) { + d.saveError(&UnmarshalTypeError{Value: "number " + s, Type: v.Type(), Offset: int64(d.readIndex())}) + break + } + v.SetFloat(n) + } + } + return nil +} + +// The xxxInterface routines build up a value to be stored +// in an empty interface. They are not strictly necessary, +// but they avoid the weight of reflection in this common case. + +// valueInterface is like value but returns interface{} +func (d *decodeState) valueInterface() (val interface{}) { + switch d.opcode { + default: + panic(phasePanicMsg) + case scanBeginArray: + val = d.arrayInterface() + d.scanNext() + case scanBeginObject: + val = d.objectInterface() + d.scanNext() + case scanBeginLiteral: + val = d.literalInterface() + } + return +} + +// arrayInterface is like array but returns []interface{}. +func (d *decodeState) arrayInterface() []interface{} { + var v = make([]interface{}, 0) + for { + // Look ahead for ] - can only happen on first iteration. + d.scanWhile(scanSkipSpace) + if d.opcode == scanEndArray { + break + } + + v = append(v, d.valueInterface()) + + // Next token must be , or ]. + if d.opcode == scanSkipSpace { + d.scanWhile(scanSkipSpace) + } + if d.opcode == scanEndArray { + break + } + if d.opcode != scanArrayValue { + panic(phasePanicMsg) + } + } + return v +} + +// objectInterface is like object but returns map[string]interface{}. +func (d *decodeState) objectInterface() map[string]interface{} { + m := make(map[string]interface{}) + for { + // Read opening " of string key or closing }. + d.scanWhile(scanSkipSpace) + if d.opcode == scanEndObject { + // closing } - can only happen on first iteration. + break + } + if d.opcode != scanBeginLiteral { + panic(phasePanicMsg) + } + + // Read string key. + start := d.readIndex() + d.rescanLiteral() + item := d.data[start:d.readIndex()] + key, ok := unquote(item) + if !ok { + panic(phasePanicMsg) + } + + // Read : before value. + if d.opcode == scanSkipSpace { + d.scanWhile(scanSkipSpace) + } + if d.opcode != scanObjectKey { + panic(phasePanicMsg) + } + d.scanWhile(scanSkipSpace) + + // Read value. + m[key] = d.valueInterface() + + // Next token must be , or }. + if d.opcode == scanSkipSpace { + d.scanWhile(scanSkipSpace) + } + if d.opcode == scanEndObject { + break + } + if d.opcode != scanObjectValue { + panic(phasePanicMsg) + } + } + return m +} + +// literalInterface consumes and returns a literal from d.data[d.off-1:] and +// it reads the following byte ahead. The first byte of the literal has been +// read already (that's how the caller knows it's a literal). +func (d *decodeState) literalInterface() interface{} { + // All bytes inside literal return scanContinue op code. + start := d.readIndex() + d.rescanLiteral() + + item := d.data[start:d.readIndex()] + + switch c := item[0]; c { + case 'n': // null + return nil + + case 't', 'f': // true, false + return c == 't' + + case '"': // string + s, ok := unquote(item) + if !ok { + panic(phasePanicMsg) + } + return s + + default: // number + if c != '-' && (c < '0' || c > '9') { + panic(phasePanicMsg) + } + n, err := d.convertNumber(string(item)) + if err != nil { + d.saveError(err) + } + return n + } +} + +// getu4 decodes \uXXXX from the beginning of s, returning the hex value, +// or it returns -1. +func getu4(s []byte) rune { + if len(s) < 6 || s[0] != '\\' || s[1] != 'u' { + return -1 + } + var r rune + for _, c := range s[2:6] { + switch { + case '0' <= c && c <= '9': + c = c - '0' + case 'a' <= c && c <= 'f': + c = c - 'a' + 10 + case 'A' <= c && c <= 'F': + c = c - 'A' + 10 + default: + return -1 + } + r = r*16 + rune(c) + } + return r +} + +// unquote converts a quoted JSON string literal s into an actual string t. +// The rules are different than for Go, so cannot use strconv.Unquote. +func unquote(s []byte) (t string, ok bool) { + s, ok = unquoteBytes(s) + t = string(s) + return +} + +func unquoteBytes(s []byte) (t []byte, ok bool) { + if len(s) < 2 || s[0] != '"' || s[len(s)-1] != '"' { + return + } + s = s[1 : len(s)-1] + + // Check for unusual characters. If there are none, + // then no unquoting is needed, so return a slice of the + // original bytes. + r := 0 + for r < len(s) { + c := s[r] + if c == '\\' || c == '"' || c < ' ' { + break + } + if c < utf8.RuneSelf { + r++ + continue + } + rr, size := utf8.DecodeRune(s[r:]) + if rr == utf8.RuneError && size == 1 { + break + } + r += size + } + if r == len(s) { + return s, true + } + + b := make([]byte, len(s)+2*utf8.UTFMax) + w := copy(b, s[0:r]) + for r < len(s) { + // Out of room? Can only happen if s is full of + // malformed UTF-8 and we're replacing each + // byte with RuneError. + if w >= len(b)-2*utf8.UTFMax { + nb := make([]byte, (len(b)+utf8.UTFMax)*2) + copy(nb, b[0:w]) + b = nb + } + switch c := s[r]; { + case c == '\\': + r++ + if r >= len(s) { + return + } + switch s[r] { + default: + return + case '"', '\\', '/', '\'': + b[w] = s[r] + r++ + w++ + case 'b': + b[w] = '\b' + r++ + w++ + case 'f': + b[w] = '\f' + r++ + w++ + case 'n': + b[w] = '\n' + r++ + w++ + case 'r': + b[w] = '\r' + r++ + w++ + case 't': + b[w] = '\t' + r++ + w++ + case 'u': + r-- + rr := getu4(s[r:]) + if rr < 0 { + return + } + r += 6 + if utf16.IsSurrogate(rr) { + rr1 := getu4(s[r:]) + if dec := utf16.DecodeRune(rr, rr1); dec != unicode.ReplacementChar { + // A valid pair; consume. + r += 6 + w += utf8.EncodeRune(b[w:], dec) + break + } + // Invalid surrogate; fall back to replacement rune. + rr = unicode.ReplacementChar + } + w += utf8.EncodeRune(b[w:], rr) + } + + // Quote, control characters are invalid. + case c == '"', c < ' ': + return + + // ASCII + case c < utf8.RuneSelf: + b[w] = c + r++ + w++ + + // Coerce to well-formed UTF-8. + default: + rr, size := utf8.DecodeRune(s[r:]) + r += size + w += utf8.EncodeRune(b[w:], rr) + } + } + return b[0:w], true +} diff --git a/pkg/encoding/json/decode_test.go b/pkg/encoding/json/decode_test.go new file mode 100644 index 0000000..219e845 --- /dev/null +++ b/pkg/encoding/json/decode_test.go @@ -0,0 +1,2574 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package json + +import ( + "bytes" + "encoding" + "errors" + "fmt" + "image" + "math" + "math/big" + "net" + "reflect" + "strconv" + "strings" + "testing" + "time" +) + +type T struct { + X string + Y int + Z int `json:"-"` +} + +type U struct { + Alphabet string `json:"alpha"` +} + +type V struct { + F1 interface{} + F2 int32 + F3 Number + F4 *VOuter +} + +type VOuter struct { + V V +} + +type W struct { + S SS +} + +type P struct { + PP PP +} + +type PP struct { + T T + Ts []T +} + +type SS string + +func (*SS) UnmarshalJSON(data []byte) error { + return &UnmarshalTypeError{Value: "number", Type: reflect.TypeOf(SS(""))} +} + +// ifaceNumAsFloat64/ifaceNumAsNumber are used to test unmarshaling with and +// without UseNumber +var ifaceNumAsFloat64 = map[string]interface{}{ + "k1": float64(1), + "k2": "s", + "k3": []interface{}{float64(1), float64(2.0), float64(3e-3)}, + "k4": map[string]interface{}{"kk1": "s", "kk2": float64(2)}, +} + +var ifaceNumAsNumber = map[string]interface{}{ + "k1": Number("1"), + "k2": "s", + "k3": []interface{}{Number("1"), Number("2.0"), Number("3e-3")}, + "k4": map[string]interface{}{"kk1": "s", "kk2": Number("2")}, +} + +type tx struct { + x int +} + +type u8 uint8 + +// A type that can unmarshal itself. + +type unmarshaler struct { + T bool +} + +func (u *unmarshaler) UnmarshalJSON(b []byte) error { + *u = unmarshaler{true} // All we need to see that UnmarshalJSON is called. + return nil +} + +type ustruct struct { + M unmarshaler +} + +type unmarshalerText struct { + A, B string +} + +// needed for re-marshaling tests +func (u unmarshalerText) MarshalText() ([]byte, error) { + return []byte(u.A + ":" + u.B), nil +} + +func (u *unmarshalerText) UnmarshalText(b []byte) error { + pos := bytes.IndexByte(b, ':') + if pos == -1 { + return errors.New("missing separator") + } + u.A, u.B = string(b[:pos]), string(b[pos+1:]) + return nil +} + +var _ encoding.TextUnmarshaler = (*unmarshalerText)(nil) + +type ustructText struct { + M unmarshalerText +} + +// u8marshal is an integer type that can marshal/unmarshal itself. +type u8marshal uint8 + +func (u8 u8marshal) MarshalText() ([]byte, error) { + return []byte(fmt.Sprintf("u%d", u8)), nil +} + +var errMissingU8Prefix = errors.New("missing 'u' prefix") + +func (u8 *u8marshal) UnmarshalText(b []byte) error { + if !bytes.HasPrefix(b, []byte{'u'}) { + return errMissingU8Prefix + } + n, err := strconv.Atoi(string(b[1:])) + if err != nil { + return err + } + *u8 = u8marshal(n) + return nil +} + +var _ encoding.TextUnmarshaler = (*u8marshal)(nil) + +var ( + umtrue = unmarshaler{true} + umslice = []unmarshaler{{true}} + umstruct = ustruct{unmarshaler{true}} + + umtrueXY = unmarshalerText{"x", "y"} + umsliceXY = []unmarshalerText{{"x", "y"}} + umstructXY = ustructText{unmarshalerText{"x", "y"}} + + ummapXY = map[unmarshalerText]bool{{"x", "y"}: true} +) + +// Test data structures for anonymous fields. + +type Point struct { + Z int +} + +type Top struct { + Level0 int + Embed0 + *Embed0a + *Embed0b `json:"e,omitempty"` // treated as named + Embed0c `json:"-"` // ignored + Loop + Embed0p // has Point with X, Y, used + Embed0q // has Point with Z, used + embed // contains exported field +} + +type Embed0 struct { + Level1a int // overridden by Embed0a's Level1a with json tag + Level1b int // used because Embed0a's Level1b is renamed + Level1c int // used because Embed0a's Level1c is ignored + Level1d int // annihilated by Embed0a's Level1d + Level1e int `json:"x"` // annihilated by Embed0a.Level1e +} + +type Embed0a struct { + Level1a int `json:"Level1a,omitempty"` + Level1b int `json:"LEVEL1B,omitempty"` + Level1c int `json:"-"` + Level1d int // annihilated by Embed0's Level1d + Level1f int `json:"x"` // annihilated by Embed0's Level1e +} + +type Embed0b Embed0 + +type Embed0c Embed0 + +type Embed0p struct { + image.Point +} + +type Embed0q struct { + Point +} + +type embed struct { + Q int +} + +type Loop struct { + Loop1 int `json:",omitempty"` + Loop2 int `json:",omitempty"` + *Loop +} + +// From reflect test: +// The X in S6 and S7 annihilate, but they also block the X in S8.S9. +type S5 struct { + S6 + S7 + S8 +} + +type S6 struct { + X int +} + +type S7 S6 + +type S8 struct { + S9 +} + +type S9 struct { + X int + Y int +} + +// From reflect test: +// The X in S11.S6 and S12.S6 annihilate, but they also block the X in S13.S8.S9. +type S10 struct { + S11 + S12 + S13 +} + +type S11 struct { + S6 +} + +type S12 struct { + S6 +} + +type S13 struct { + S8 +} + +type Ambig struct { + // Given "hello", the first match should win. + First int `json:"HELLO"` + Second int `json:"Hello"` +} + +type XYZ struct { + X interface{} + Y interface{} + Z interface{} +} + +type unexportedWithMethods struct{} + +func (unexportedWithMethods) F() {} + +type byteWithMarshalJSON byte + +func (b byteWithMarshalJSON) MarshalJSON() ([]byte, error) { + return []byte(fmt.Sprintf(`"Z%.2x"`, byte(b))), nil +} + +func (b *byteWithMarshalJSON) UnmarshalJSON(data []byte) error { + if len(data) != 5 || data[0] != '"' || data[1] != 'Z' || data[4] != '"' { + return fmt.Errorf("bad quoted string") + } + i, err := strconv.ParseInt(string(data[2:4]), 16, 8) + if err != nil { + return fmt.Errorf("bad hex") + } + *b = byteWithMarshalJSON(i) + return nil +} + +type byteWithPtrMarshalJSON byte + +func (b *byteWithPtrMarshalJSON) MarshalJSON() ([]byte, error) { + return byteWithMarshalJSON(*b).MarshalJSON() +} + +func (b *byteWithPtrMarshalJSON) UnmarshalJSON(data []byte) error { + return (*byteWithMarshalJSON)(b).UnmarshalJSON(data) +} + +type byteWithMarshalText byte + +func (b byteWithMarshalText) MarshalText() ([]byte, error) { + return []byte(fmt.Sprintf(`Z%.2x`, byte(b))), nil +} + +func (b *byteWithMarshalText) UnmarshalText(data []byte) error { + if len(data) != 3 || data[0] != 'Z' { + return fmt.Errorf("bad quoted string") + } + i, err := strconv.ParseInt(string(data[1:3]), 16, 8) + if err != nil { + return fmt.Errorf("bad hex") + } + *b = byteWithMarshalText(i) + return nil +} + +type byteWithPtrMarshalText byte + +func (b *byteWithPtrMarshalText) MarshalText() ([]byte, error) { + return byteWithMarshalText(*b).MarshalText() +} + +func (b *byteWithPtrMarshalText) UnmarshalText(data []byte) error { + return (*byteWithMarshalText)(b).UnmarshalText(data) +} + +type intWithMarshalJSON int + +func (b intWithMarshalJSON) MarshalJSON() ([]byte, error) { + return []byte(fmt.Sprintf(`"Z%.2x"`, int(b))), nil +} + +func (b *intWithMarshalJSON) UnmarshalJSON(data []byte) error { + if len(data) != 5 || data[0] != '"' || data[1] != 'Z' || data[4] != '"' { + return fmt.Errorf("bad quoted string") + } + i, err := strconv.ParseInt(string(data[2:4]), 16, 8) + if err != nil { + return fmt.Errorf("bad hex") + } + *b = intWithMarshalJSON(i) + return nil +} + +type intWithPtrMarshalJSON int + +func (b *intWithPtrMarshalJSON) MarshalJSON() ([]byte, error) { + return intWithMarshalJSON(*b).MarshalJSON() +} + +func (b *intWithPtrMarshalJSON) UnmarshalJSON(data []byte) error { + return (*intWithMarshalJSON)(b).UnmarshalJSON(data) +} + +type intWithMarshalText int + +func (b intWithMarshalText) MarshalText() ([]byte, error) { + return []byte(fmt.Sprintf(`Z%.2x`, int(b))), nil +} + +func (b *intWithMarshalText) UnmarshalText(data []byte) error { + if len(data) != 3 || data[0] != 'Z' { + return fmt.Errorf("bad quoted string") + } + i, err := strconv.ParseInt(string(data[1:3]), 16, 8) + if err != nil { + return fmt.Errorf("bad hex") + } + *b = intWithMarshalText(i) + return nil +} + +type intWithPtrMarshalText int + +func (b *intWithPtrMarshalText) MarshalText() ([]byte, error) { + return intWithMarshalText(*b).MarshalText() +} + +func (b *intWithPtrMarshalText) UnmarshalText(data []byte) error { + return (*intWithMarshalText)(b).UnmarshalText(data) +} + +type mapStringToStringData struct { + Data map[string]string `json:"data"` +} + +type unmarshalTest struct { + in string + ptr interface{} // new(type) + out interface{} + err error + useNumber bool + golden bool + disallowUnknownFields bool +} + +type B struct { + B bool `json:",string"` +} + +type DoublePtr struct { + I **int + J **int +} + +var unmarshalTests = []unmarshalTest{ + // basic types + {in: `true`, ptr: new(bool), out: true}, + {in: `1`, ptr: new(int), out: 1}, + {in: `1.2`, ptr: new(float64), out: 1.2}, + {in: `-5`, ptr: new(int16), out: int16(-5)}, + {in: `2`, ptr: new(Number), out: Number("2"), useNumber: true}, + {in: `2`, ptr: new(Number), out: Number("2")}, + {in: `2`, ptr: new(interface{}), out: float64(2.0)}, + {in: `2`, ptr: new(interface{}), out: Number("2"), useNumber: true}, + {in: `"a\u1234"`, ptr: new(string), out: "a\u1234"}, + {in: `"http:\/\/"`, ptr: new(string), out: "http://"}, + {in: `"g-clef: \uD834\uDD1E"`, ptr: new(string), out: "g-clef: \U0001D11E"}, + {in: `"invalid: \uD834x\uDD1E"`, ptr: new(string), out: "invalid: \uFFFDx\uFFFD"}, + {in: "null", ptr: new(interface{}), out: nil}, + {in: `{"X": [1,2,3], "Y": 4}`, ptr: new(T), out: T{Y: 4}, err: &UnmarshalTypeError{"array", reflect.TypeOf(""), 7, "T", "X"}}, + {in: `{"X": 23}`, ptr: new(T), out: T{}, err: &UnmarshalTypeError{"number", reflect.TypeOf(""), 8, "T", "X"}}, {in: `{"x": 1}`, ptr: new(tx), out: tx{}}, + {in: `{"x": 1}`, ptr: new(tx), out: tx{}}, + {in: `{"x": 1}`, ptr: new(tx), err: fmt.Errorf("json: unknown field \"x\""), disallowUnknownFields: true}, + {in: `{"S": 23}`, ptr: new(W), out: W{}, err: &UnmarshalTypeError{"number", reflect.TypeOf(SS("")), 0, "W", "S"}}, + {in: `{"F1":1,"F2":2,"F3":3}`, ptr: new(V), out: V{F1: float64(1), F2: int32(2), F3: Number("3")}}, + {in: `{"F1":1,"F2":2,"F3":3}`, ptr: new(V), out: V{F1: Number("1"), F2: int32(2), F3: Number("3")}, useNumber: true}, + {in: `{"k1":1,"k2":"s","k3":[1,2.0,3e-3],"k4":{"kk1":"s","kk2":2}}`, ptr: new(interface{}), out: ifaceNumAsFloat64}, + {in: `{"k1":1,"k2":"s","k3":[1,2.0,3e-3],"k4":{"kk1":"s","kk2":2}}`, ptr: new(interface{}), out: ifaceNumAsNumber, useNumber: true}, + + // raw values with whitespace + {in: "\n true ", ptr: new(bool), out: true}, + {in: "\t 1 ", ptr: new(int), out: 1}, + {in: "\r 1.2 ", ptr: new(float64), out: 1.2}, + {in: "\t -5 \n", ptr: new(int16), out: int16(-5)}, + {in: "\t \"a\\u1234\" \n", ptr: new(string), out: "a\u1234"}, + + // Z has a "-" tag. + {in: `{"Y": 1, "Z": 2}`, ptr: new(T), out: T{Y: 1}}, + {in: `{"Y": 1, "Z": 2}`, ptr: new(T), err: fmt.Errorf("json: unknown field \"Z\""), disallowUnknownFields: true}, + + {in: `{"alpha": "abc", "alphabet": "xyz"}`, ptr: new(U), out: U{Alphabet: "abc"}}, + {in: `{"alpha": "abc", "alphabet": "xyz"}`, ptr: new(U), err: fmt.Errorf("json: unknown field \"alphabet\""), disallowUnknownFields: true}, + {in: `{"alpha": "abc"}`, ptr: new(U), out: U{Alphabet: "abc"}}, + {in: `{"alphabet": "xyz"}`, ptr: new(U), out: U{}}, + {in: `{"alphabet": "xyz"}`, ptr: new(U), err: fmt.Errorf("json: unknown field \"alphabet\""), disallowUnknownFields: true}, + + // syntax errors + {in: `{"X": "foo", "Y"}`, err: &SyntaxError{"invalid character '}' after object key", 17}}, + {in: `[1, 2, 3+]`, err: &SyntaxError{"invalid character '+' after array element", 9}}, + {in: `{"X":12x}`, err: &SyntaxError{"invalid character 'x' after object key:value pair", 8}, useNumber: true}, + {in: `[2, 3`, err: &SyntaxError{msg: "unexpected end of JSON input", Offset: 5}}, + {in: `{"F3": -}`, ptr: new(V), out: V{F3: Number("-")}, err: &SyntaxError{msg: "invalid character '}' in numeric literal", Offset: 9}}, + + // raw value errors + {in: "\x01 42", err: &SyntaxError{"invalid character '\\x01' looking for beginning of value", 1}}, + {in: " 42 \x01", err: &SyntaxError{"invalid character '\\x01' after top-level value", 5}}, + {in: "\x01 true", err: &SyntaxError{"invalid character '\\x01' looking for beginning of value", 1}}, + {in: " false \x01", err: &SyntaxError{"invalid character '\\x01' after top-level value", 8}}, + {in: "\x01 1.2", err: &SyntaxError{"invalid character '\\x01' looking for beginning of value", 1}}, + {in: " 3.4 \x01", err: &SyntaxError{"invalid character '\\x01' after top-level value", 6}}, + {in: "\x01 \"string\"", err: &SyntaxError{"invalid character '\\x01' looking for beginning of value", 1}}, + {in: " \"string\" \x01", err: &SyntaxError{"invalid character '\\x01' after top-level value", 11}}, + + // array tests + {in: `[1, 2, 3]`, ptr: new([3]int), out: [3]int{1, 2, 3}}, + {in: `[1, 2, 3]`, ptr: new([1]int), out: [1]int{1}}, + {in: `[1, 2, 3]`, ptr: new([5]int), out: [5]int{1, 2, 3, 0, 0}}, + {in: `[1, 2, 3]`, ptr: new(MustNotUnmarshalJSON), err: errors.New("MustNotUnmarshalJSON was used")}, + + // empty array to interface test + {in: `[]`, ptr: new([]interface{}), out: []interface{}{}}, + {in: `null`, ptr: new([]interface{}), out: []interface{}(nil)}, + {in: `{"T":[]}`, ptr: new(map[string]interface{}), out: map[string]interface{}{"T": []interface{}{}}}, + {in: `{"T":null}`, ptr: new(map[string]interface{}), out: map[string]interface{}{"T": interface{}(nil)}}, + + // composite tests + {in: allValueIndent, ptr: new(All), out: allValue}, + {in: allValueCompact, ptr: new(All), out: allValue}, + {in: allValueIndent, ptr: new(*All), out: &allValue}, + {in: allValueCompact, ptr: new(*All), out: &allValue}, + {in: pallValueIndent, ptr: new(All), out: pallValue}, + {in: pallValueCompact, ptr: new(All), out: pallValue}, + {in: pallValueIndent, ptr: new(*All), out: &pallValue}, + {in: pallValueCompact, ptr: new(*All), out: &pallValue}, + + // unmarshal interface test + {in: `{"T":false}`, ptr: new(unmarshaler), out: umtrue}, // use "false" so test will fail if custom unmarshaler is not called + {in: `{"T":false}`, ptr: new(*unmarshaler), out: &umtrue}, + {in: `[{"T":false}]`, ptr: new([]unmarshaler), out: umslice}, + {in: `[{"T":false}]`, ptr: new(*[]unmarshaler), out: &umslice}, + {in: `{"M":{"T":"x:y"}}`, ptr: new(ustruct), out: umstruct}, + + // UnmarshalText interface test + {in: `"x:y"`, ptr: new(unmarshalerText), out: umtrueXY}, + {in: `"x:y"`, ptr: new(*unmarshalerText), out: &umtrueXY}, + {in: `["x:y"]`, ptr: new([]unmarshalerText), out: umsliceXY}, + {in: `["x:y"]`, ptr: new(*[]unmarshalerText), out: &umsliceXY}, + {in: `{"M":"x:y"}`, ptr: new(ustructText), out: umstructXY}, + + // integer-keyed map test + { + in: `{"-1":"a","0":"b","1":"c"}`, + ptr: new(map[int]string), + out: map[int]string{-1: "a", 0: "b", 1: "c"}, + }, + { + in: `{"0":"a","10":"c","9":"b"}`, + ptr: new(map[u8]string), + out: map[u8]string{0: "a", 9: "b", 10: "c"}, + }, + { + in: `{"-9223372036854775808":"min","9223372036854775807":"max"}`, + ptr: new(map[int64]string), + out: map[int64]string{math.MinInt64: "min", math.MaxInt64: "max"}, + }, + { + in: `{"18446744073709551615":"max"}`, + ptr: new(map[uint64]string), + out: map[uint64]string{math.MaxUint64: "max"}, + }, + { + in: `{"0":false,"10":true}`, + ptr: new(map[uintptr]bool), + out: map[uintptr]bool{0: false, 10: true}, + }, + + // Check that MarshalText and UnmarshalText take precedence + // over default integer handling in map keys. + { + in: `{"u2":4}`, + ptr: new(map[u8marshal]int), + out: map[u8marshal]int{2: 4}, + }, + { + in: `{"2":4}`, + ptr: new(map[u8marshal]int), + err: errMissingU8Prefix, + }, + + // integer-keyed map errors + { + in: `{"abc":"abc"}`, + ptr: new(map[int]string), + err: &UnmarshalTypeError{Value: "number abc", Type: reflect.TypeOf(0), Offset: 2}, + }, + { + in: `{"256":"abc"}`, + ptr: new(map[uint8]string), + err: &UnmarshalTypeError{Value: "number 256", Type: reflect.TypeOf(uint8(0)), Offset: 2}, + }, + { + in: `{"128":"abc"}`, + ptr: new(map[int8]string), + err: &UnmarshalTypeError{Value: "number 128", Type: reflect.TypeOf(int8(0)), Offset: 2}, + }, + { + in: `{"-1":"abc"}`, + ptr: new(map[uint8]string), + err: &UnmarshalTypeError{Value: "number -1", Type: reflect.TypeOf(uint8(0)), Offset: 2}, + }, + { + in: `{"F":{"a":2,"3":4}}`, + ptr: new(map[string]map[int]int), + err: &UnmarshalTypeError{Value: "number a", Type: reflect.TypeOf(int(0)), Offset: 7}, + }, + { + in: `{"F":{"a":2,"3":4}}`, + ptr: new(map[string]map[uint]int), + err: &UnmarshalTypeError{Value: "number a", Type: reflect.TypeOf(uint(0)), Offset: 7}, + }, + + // Map keys can be encoding.TextUnmarshalers. + {in: `{"x:y":true}`, ptr: new(map[unmarshalerText]bool), out: ummapXY}, + // If multiple values for the same key exists, only the most recent value is used. + {in: `{"x:y":false,"x:y":true}`, ptr: new(map[unmarshalerText]bool), out: ummapXY}, + + { + in: `{ + "Level0": 1, + "Level1b": 2, + "Level1c": 3, + "x": 4, + "Level1a": 5, + "LEVEL1B": 6, + "e": { + "Level1a": 8, + "Level1b": 9, + "Level1c": 10, + "Level1d": 11, + "x": 12 + }, + "Loop1": 13, + "Loop2": 14, + "X": 15, + "Y": 16, + "Z": 17, + "Q": 18 + }`, + ptr: new(Top), + out: Top{ + Level0: 1, + Embed0: Embed0{ + Level1b: 2, + Level1c: 3, + }, + Embed0a: &Embed0a{ + Level1a: 5, + Level1b: 6, + }, + Embed0b: &Embed0b{ + Level1a: 8, + Level1b: 9, + Level1c: 10, + Level1d: 11, + Level1e: 12, + }, + Loop: Loop{ + Loop1: 13, + Loop2: 14, + }, + Embed0p: Embed0p{ + Point: image.Point{X: 15, Y: 16}, + }, + Embed0q: Embed0q{ + Point: Point{Z: 17}, + }, + embed: embed{ + Q: 18, + }, + }, + }, + { + in: `{"hello": 1}`, + ptr: new(Ambig), + out: Ambig{First: 1}, + }, + + { + in: `{"X": 1,"Y":2}`, + ptr: new(S5), + out: S5{S8: S8{S9: S9{Y: 2}}}, + }, + { + in: `{"X": 1,"Y":2}`, + ptr: new(S5), + err: fmt.Errorf("json: unknown field \"X\""), + disallowUnknownFields: true, + }, + { + in: `{"X": 1,"Y":2}`, + ptr: new(S10), + out: S10{S13: S13{S8: S8{S9: S9{Y: 2}}}}, + }, + { + in: `{"X": 1,"Y":2}`, + ptr: new(S10), + err: fmt.Errorf("json: unknown field \"X\""), + disallowUnknownFields: true, + }, + { + in: `{"I": 0, "I": null, "J": null}`, + ptr: new(DoublePtr), + out: DoublePtr{I: nil, J: nil}, + }, + + // invalid UTF-8 is coerced to valid UTF-8. + { + in: "\"hello\xffworld\"", + ptr: new(string), + out: "hello\ufffdworld", + }, + { + in: "\"hello\xc2\xc2world\"", + ptr: new(string), + out: "hello\ufffd\ufffdworld", + }, + { + in: "\"hello\xc2\xffworld\"", + ptr: new(string), + out: "hello\ufffd\ufffdworld", + }, + { + in: "\"hello\\ud800world\"", + ptr: new(string), + out: "hello\ufffdworld", + }, + { + in: "\"hello\\ud800\\ud800world\"", + ptr: new(string), + out: "hello\ufffd\ufffdworld", + }, + { + in: "\"hello\\ud800\\ud800world\"", + ptr: new(string), + out: "hello\ufffd\ufffdworld", + }, + { + in: "\"hello\xed\xa0\x80\xed\xb0\x80world\"", + ptr: new(string), + out: "hello\ufffd\ufffd\ufffd\ufffd\ufffd\ufffdworld", + }, + + // Used to be issue 8305, but time.Time implements encoding.TextUnmarshaler so this works now. + { + in: `{"2009-11-10T23:00:00Z": "hello world"}`, + ptr: new(map[time.Time]string), + out: map[time.Time]string{time.Date(2009, 11, 10, 23, 0, 0, 0, time.UTC): "hello world"}, + }, + + // issue 8305 + { + in: `{"2009-11-10T23:00:00Z": "hello world"}`, + ptr: new(map[Point]string), + err: &UnmarshalTypeError{Value: "object", Type: reflect.TypeOf(map[Point]string{}), Offset: 1}, + }, + { + in: `{"asdf": "hello world"}`, + ptr: new(map[unmarshaler]string), + err: &UnmarshalTypeError{Value: "object", Type: reflect.TypeOf(map[unmarshaler]string{}), Offset: 1}, + }, + + // related to issue 13783. + // Go 1.7 changed marshaling a slice of typed byte to use the methods on the byte type, + // similar to marshaling a slice of typed int. + // These tests check that, assuming the byte type also has valid decoding methods, + // either the old base64 string encoding or the new per-element encoding can be + // successfully unmarshaled. The custom unmarshalers were accessible in earlier + // versions of Go, even though the custom marshaler was not. + { + in: `"AQID"`, + ptr: new([]byteWithMarshalJSON), + out: []byteWithMarshalJSON{1, 2, 3}, + }, + { + in: `["Z01","Z02","Z03"]`, + ptr: new([]byteWithMarshalJSON), + out: []byteWithMarshalJSON{1, 2, 3}, + golden: true, + }, + { + in: `"AQID"`, + ptr: new([]byteWithMarshalText), + out: []byteWithMarshalText{1, 2, 3}, + }, + { + in: `["Z01","Z02","Z03"]`, + ptr: new([]byteWithMarshalText), + out: []byteWithMarshalText{1, 2, 3}, + golden: true, + }, + { + in: `"AQID"`, + ptr: new([]byteWithPtrMarshalJSON), + out: []byteWithPtrMarshalJSON{1, 2, 3}, + }, + { + in: `["Z01","Z02","Z03"]`, + ptr: new([]byteWithPtrMarshalJSON), + out: []byteWithPtrMarshalJSON{1, 2, 3}, + golden: true, + }, + { + in: `"AQID"`, + ptr: new([]byteWithPtrMarshalText), + out: []byteWithPtrMarshalText{1, 2, 3}, + }, + { + in: `["Z01","Z02","Z03"]`, + ptr: new([]byteWithPtrMarshalText), + out: []byteWithPtrMarshalText{1, 2, 3}, + golden: true, + }, + + // ints work with the marshaler but not the base64 []byte case + { + in: `["Z01","Z02","Z03"]`, + ptr: new([]intWithMarshalJSON), + out: []intWithMarshalJSON{1, 2, 3}, + golden: true, + }, + { + in: `["Z01","Z02","Z03"]`, + ptr: new([]intWithMarshalText), + out: []intWithMarshalText{1, 2, 3}, + golden: true, + }, + { + in: `["Z01","Z02","Z03"]`, + ptr: new([]intWithPtrMarshalJSON), + out: []intWithPtrMarshalJSON{1, 2, 3}, + golden: true, + }, + { + in: `["Z01","Z02","Z03"]`, + ptr: new([]intWithPtrMarshalText), + out: []intWithPtrMarshalText{1, 2, 3}, + golden: true, + }, + + {in: `0.000001`, ptr: new(float64), out: 0.000001, golden: true}, + {in: `1e-7`, ptr: new(float64), out: 1e-7, golden: true}, + {in: `100000000000000000000`, ptr: new(float64), out: 100000000000000000000.0, golden: true}, + {in: `1e+21`, ptr: new(float64), out: 1e21, golden: true}, + {in: `-0.000001`, ptr: new(float64), out: -0.000001, golden: true}, + {in: `-1e-7`, ptr: new(float64), out: -1e-7, golden: true}, + {in: `-100000000000000000000`, ptr: new(float64), out: -100000000000000000000.0, golden: true}, + {in: `-1e+21`, ptr: new(float64), out: -1e21, golden: true}, + {in: `999999999999999900000`, ptr: new(float64), out: 999999999999999900000.0, golden: true}, + {in: `9007199254740992`, ptr: new(float64), out: 9007199254740992.0, golden: true}, + {in: `9007199254740993`, ptr: new(float64), out: 9007199254740992.0, golden: false}, + + { + in: `{"V": {"F2": "hello"}}`, + ptr: new(VOuter), + err: &UnmarshalTypeError{ + Value: "string", + Struct: "V", + Field: "V.F2", + Type: reflect.TypeOf(int32(0)), + Offset: 20, + }, + }, + { + in: `{"V": {"F4": {}, "F2": "hello"}}`, + ptr: new(VOuter), + err: &UnmarshalTypeError{ + Value: "string", + Struct: "V", + Field: "V.F2", + Type: reflect.TypeOf(int32(0)), + Offset: 30, + }, + }, + + // issue 15146. + // invalid inputs in wrongStringTests below. + {in: `{"B":"true"}`, ptr: new(B), out: B{true}, golden: true}, + {in: `{"B":"false"}`, ptr: new(B), out: B{false}, golden: true}, + {in: `{"B": "maybe"}`, ptr: new(B), err: errors.New(`json: invalid use of ,string struct tag, trying to unmarshal "maybe" into bool`)}, + {in: `{"B": "tru"}`, ptr: new(B), err: errors.New(`json: invalid use of ,string struct tag, trying to unmarshal "tru" into bool`)}, + {in: `{"B": "False"}`, ptr: new(B), err: errors.New(`json: invalid use of ,string struct tag, trying to unmarshal "False" into bool`)}, + {in: `{"B": "null"}`, ptr: new(B), out: B{false}}, + {in: `{"B": "nul"}`, ptr: new(B), err: errors.New(`json: invalid use of ,string struct tag, trying to unmarshal "nul" into bool`)}, + {in: `{"B": [2, 3]}`, ptr: new(B), err: errors.New(`json: invalid use of ,string struct tag, trying to unmarshal unquoted value into bool`)}, + + // additional tests for disallowUnknownFields + { + in: `{ + "Level0": 1, + "Level1b": 2, + "Level1c": 3, + "x": 4, + "Level1a": 5, + "LEVEL1B": 6, + "e": { + "Level1a": 8, + "Level1b": 9, + "Level1c": 10, + "Level1d": 11, + "x": 12 + }, + "Loop1": 13, + "Loop2": 14, + "X": 15, + "Y": 16, + "Z": 17, + "Q": 18, + "extra": true + }`, + ptr: new(Top), + err: fmt.Errorf("json: unknown field \"extra\""), + disallowUnknownFields: true, + }, + { + in: `{ + "Level0": 1, + "Level1b": 2, + "Level1c": 3, + "x": 4, + "Level1a": 5, + "LEVEL1B": 6, + "e": { + "Level1a": 8, + "Level1b": 9, + "Level1c": 10, + "Level1d": 11, + "x": 12, + "extra": null + }, + "Loop1": 13, + "Loop2": 14, + "X": 15, + "Y": 16, + "Z": 17, + "Q": 18 + }`, + ptr: new(Top), + err: fmt.Errorf("json: unknown field \"extra\""), + disallowUnknownFields: true, + }, + // issue 26444 + // UnmarshalTypeError without field & struct values + { + in: `{"data":{"test1": "bob", "test2": 123}}`, + ptr: new(mapStringToStringData), + err: &UnmarshalTypeError{Value: "number", Type: reflect.TypeOf(""), Offset: 37, Struct: "mapStringToStringData", Field: "data"}, + }, + { + in: `{"data":{"test1": 123, "test2": "bob"}}`, + ptr: new(mapStringToStringData), + err: &UnmarshalTypeError{Value: "number", Type: reflect.TypeOf(""), Offset: 21, Struct: "mapStringToStringData", Field: "data"}, + }, + + // trying to decode JSON arrays or objects via TextUnmarshaler + { + in: `[1, 2, 3]`, + ptr: new(MustNotUnmarshalText), + err: &UnmarshalTypeError{Value: "array", Type: reflect.TypeOf(&MustNotUnmarshalText{}), Offset: 1}, + }, + { + in: `{"foo": "bar"}`, + ptr: new(MustNotUnmarshalText), + err: &UnmarshalTypeError{Value: "object", Type: reflect.TypeOf(&MustNotUnmarshalText{}), Offset: 1}, + }, + // #22369 + { + in: `{"PP": {"T": {"Y": "bad-type"}}}`, + ptr: new(P), + err: &UnmarshalTypeError{ + Value: "string", + Struct: "T", + Field: "PP.T.Y", + Type: reflect.TypeOf(int(0)), + Offset: 29, + }, + }, + { + in: `{"Ts": [{"Y": 1}, {"Y": 2}, {"Y": "bad-type"}]}`, + ptr: new(PP), + err: &UnmarshalTypeError{ + Value: "string", + Struct: "T", + Field: "Ts.Y", + Type: reflect.TypeOf(int(0)), + Offset: 29, + }, + }, + // #14702 + { + in: `invalid`, + ptr: new(Number), + err: &SyntaxError{ + msg: "invalid character 'i' looking for beginning of value", + Offset: 1, + }, + }, + { + in: `"invalid"`, + ptr: new(Number), + err: fmt.Errorf("json: invalid number literal, trying to unmarshal %q into Number", `"invalid"`), + }, + { + in: `{"A":"invalid"}`, + ptr: new(struct{ A Number }), + err: fmt.Errorf("json: invalid number literal, trying to unmarshal %q into Number", `"invalid"`), + }, + { + in: `{"A":"invalid"}`, + ptr: new(struct { + A Number `json:",string"` + }), + err: fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into json.Number", `invalid`), + }, + { + in: `{"A":"invalid"}`, + ptr: new(map[string]Number), + err: fmt.Errorf("json: invalid number literal, trying to unmarshal %q into Number", `"invalid"`), + }, +} + +func TestMarshal(t *testing.T) { + b, err := Marshal(allValue) + if err != nil { + t.Fatalf("Marshal allValue: %v", err) + } + if string(b) != allValueCompact { + t.Errorf("Marshal allValueCompact") + diff(t, b, []byte(allValueCompact)) + return + } + + b, err = Marshal(pallValue) + if err != nil { + t.Fatalf("Marshal pallValue: %v", err) + } + if string(b) != pallValueCompact { + t.Errorf("Marshal pallValueCompact") + diff(t, b, []byte(pallValueCompact)) + return + } +} + +var badUTF8 = []struct { + in, out string +}{ + {"hello\xffworld", `"hello\ufffdworld"`}, + {"", `""`}, + {"\xff", `"\ufffd"`}, + {"\xff\xff", `"\ufffd\ufffd"`}, + {"a\xffb", `"a\ufffdb"`}, + {"\xe6\x97\xa5\xe6\x9c\xac\xff\xaa\x9e", `"日本\ufffd\ufffd\ufffd"`}, +} + +func TestMarshalBadUTF8(t *testing.T) { + for _, tt := range badUTF8 { + b, err := Marshal(tt.in) + if string(b) != tt.out || err != nil { + t.Errorf("Marshal(%q) = %#q, %v, want %#q, nil", tt.in, b, err, tt.out) + } + } +} + +func TestMarshalNumberZeroVal(t *testing.T) { + var n Number + out, err := Marshal(n) + if err != nil { + t.Fatal(err) + } + outStr := string(out) + if outStr != "0" { + t.Fatalf("Invalid zero val for Number: %q", outStr) + } +} + +func TestMarshalEmbeds(t *testing.T) { + top := &Top{ + Level0: 1, + Embed0: Embed0{ + Level1b: 2, + Level1c: 3, + }, + Embed0a: &Embed0a{ + Level1a: 5, + Level1b: 6, + }, + Embed0b: &Embed0b{ + Level1a: 8, + Level1b: 9, + Level1c: 10, + Level1d: 11, + Level1e: 12, + }, + Loop: Loop{ + Loop1: 13, + Loop2: 14, + }, + Embed0p: Embed0p{ + Point: image.Point{X: 15, Y: 16}, + }, + Embed0q: Embed0q{ + Point: Point{Z: 17}, + }, + embed: embed{ + Q: 18, + }, + } + b, err := Marshal(top) + if err != nil { + t.Fatal(err) + } + want := "{\"Level0\":1,\"Level1b\":2,\"Level1c\":3,\"Level1a\":5,\"LEVEL1B\":6,\"e\":{\"Level1a\":8,\"Level1b\":9,\"Level1c\":10,\"Level1d\":11,\"x\":12},\"Loop1\":13,\"Loop2\":14,\"X\":15,\"Y\":16,\"Z\":17,\"Q\":18}" + if string(b) != want { + t.Errorf("Wrong marshal result.\n got: %q\nwant: %q", b, want) + } +} + +func equalError(a, b error) bool { + if a == nil { + return b == nil + } + if b == nil { + return a == nil + } + return a.Error() == b.Error() +} + +func TestUnmarshal(t *testing.T) { + for i, tt := range unmarshalTests { + var scan scanner + in := []byte(tt.in) + if err := checkValid(in, &scan); err != nil { + if !equalError(err, tt.err) { + t.Errorf("#%d: checkValid: %#v", i, err) + continue + } + } + if tt.ptr == nil { + continue + } + + typ := reflect.TypeOf(tt.ptr) + if typ.Kind() != reflect.Ptr { + t.Errorf("#%d: unmarshalTest.ptr %T is not a pointer type", i, tt.ptr) + continue + } + typ = typ.Elem() + + // v = new(right-type) + v := reflect.New(typ) + + if !reflect.DeepEqual(tt.ptr, v.Interface()) { + // There's no reason for ptr to point to non-zero data, + // as we decode into new(right-type), so the data is + // discarded. + // This can easily mean tests that silently don't test + // what they should. To test decoding into existing + // data, see TestPrefilled. + t.Errorf("#%d: unmarshalTest.ptr %#v is not a pointer to a zero value", i, tt.ptr) + continue + } + + dec := NewDecoder(bytes.NewReader(in)) + if tt.useNumber { + dec.UseNumber() + } + if tt.disallowUnknownFields { + dec.DisallowUnknownFields() + } + if err := dec.Decode(v.Interface()); !equalError(err, tt.err) { + t.Errorf("#%d: %v, want %v", i, err, tt.err) + continue + } else if err != nil { + continue + } + if !reflect.DeepEqual(v.Elem().Interface(), tt.out) { + t.Errorf("#%d: mismatch\nhave: %#+v\nwant: %#+v", i, v.Elem().Interface(), tt.out) + data, _ := Marshal(v.Elem().Interface()) + println(string(data)) + data, _ = Marshal(tt.out) + println(string(data)) + continue + } + + // Check round trip also decodes correctly. + if tt.err == nil { + enc, err := Marshal(v.Interface()) + if err != nil { + t.Errorf("#%d: error re-marshaling: %v", i, err) + continue + } + if tt.golden && !bytes.Equal(enc, in) { + t.Errorf("#%d: remarshal mismatch:\nhave: %s\nwant: %s", i, enc, in) + } + vv := reflect.New(reflect.TypeOf(tt.ptr).Elem()) + dec = NewDecoder(bytes.NewReader(enc)) + if tt.useNumber { + dec.UseNumber() + } + if err := dec.Decode(vv.Interface()); err != nil { + t.Errorf("#%d: error re-unmarshaling %#q: %v", i, enc, err) + continue + } + if !reflect.DeepEqual(v.Elem().Interface(), vv.Elem().Interface()) { + t.Errorf("#%d: mismatch\nhave: %#+v\nwant: %#+v", i, v.Elem().Interface(), vv.Elem().Interface()) + t.Errorf(" In: %q", strings.Map(noSpace, string(in))) + t.Errorf("Marshal: %q", strings.Map(noSpace, string(enc))) + continue + } + } + } +} + +func TestUnmarshalMarshal(t *testing.T) { + initBig() + var v interface{} + if err := Unmarshal(jsonBig, &v); err != nil { + t.Fatalf("Unmarshal: %v", err) + } + b, err := Marshal(v) + if err != nil { + t.Fatalf("Marshal: %v", err) + } + if !bytes.Equal(jsonBig, b) { + t.Errorf("Marshal jsonBig") + diff(t, b, jsonBig) + return + } +} + +var numberTests = []struct { + in string + i int64 + intErr string + f float64 + floatErr string +}{ + {in: "-1.23e1", intErr: "strconv.ParseInt: parsing \"-1.23e1\": invalid syntax", f: -1.23e1}, + {in: "-12", i: -12, f: -12.0}, + {in: "1e1000", intErr: "strconv.ParseInt: parsing \"1e1000\": invalid syntax", floatErr: "strconv.ParseFloat: parsing \"1e1000\": value out of range"}, +} + +// Independent of Decode, basic coverage of the accessors in Number +func TestNumberAccessors(t *testing.T) { + for _, tt := range numberTests { + n := Number(tt.in) + if s := n.String(); s != tt.in { + t.Errorf("Number(%q).String() is %q", tt.in, s) + } + if i, err := n.Int64(); err == nil && tt.intErr == "" && i != tt.i { + t.Errorf("Number(%q).Int64() is %d", tt.in, i) + } else if (err == nil && tt.intErr != "") || (err != nil && err.Error() != tt.intErr) { + t.Errorf("Number(%q).Int64() wanted error %q but got: %v", tt.in, tt.intErr, err) + } + if f, err := n.Float64(); err == nil && tt.floatErr == "" && f != tt.f { + t.Errorf("Number(%q).Float64() is %g", tt.in, f) + } else if (err == nil && tt.floatErr != "") || (err != nil && err.Error() != tt.floatErr) { + t.Errorf("Number(%q).Float64() wanted error %q but got: %v", tt.in, tt.floatErr, err) + } + } +} + +func TestLargeByteSlice(t *testing.T) { + s0 := make([]byte, 2000) + for i := range s0 { + s0[i] = byte(i) + } + b, err := Marshal(s0) + if err != nil { + t.Fatalf("Marshal: %v", err) + } + var s1 []byte + if err := Unmarshal(b, &s1); err != nil { + t.Fatalf("Unmarshal: %v", err) + } + if !bytes.Equal(s0, s1) { + t.Errorf("Marshal large byte slice") + diff(t, s0, s1) + } +} + +type Xint struct { + X int +} + +func TestUnmarshalInterface(t *testing.T) { + var xint Xint + var i interface{} = &xint + if err := Unmarshal([]byte(`{"X":1}`), &i); err != nil { + t.Fatalf("Unmarshal: %v", err) + } + if xint.X != 1 { + t.Fatalf("Did not write to xint") + } +} + +func TestUnmarshalPtrPtr(t *testing.T) { + var xint Xint + pxint := &xint + if err := Unmarshal([]byte(`{"X":1}`), &pxint); err != nil { + t.Fatalf("Unmarshal: %v", err) + } + if xint.X != 1 { + t.Fatalf("Did not write to xint") + } +} + +func TestEscape(t *testing.T) { + const input = `"foobar"` + " [\u2028 \u2029]" + const expected = `"\"foobar\"\u003chtml\u003e [\u2028 \u2029]"` + b, err := Marshal(input) + if err != nil { + t.Fatalf("Marshal error: %v", err) + } + if s := string(b); s != expected { + t.Errorf("Encoding of [%s]:\n got [%s]\nwant [%s]", input, s, expected) + } +} + +// WrongString is a struct that's misusing the ,string modifier. +type WrongString struct { + Message string `json:"result,string"` +} + +type wrongStringTest struct { + in, err string +} + +var wrongStringTests = []wrongStringTest{ + {`{"result":"x"}`, `json: invalid use of ,string struct tag, trying to unmarshal "x" into string`}, + {`{"result":"foo"}`, `json: invalid use of ,string struct tag, trying to unmarshal "foo" into string`}, + {`{"result":"123"}`, `json: invalid use of ,string struct tag, trying to unmarshal "123" into string`}, + {`{"result":123}`, `json: invalid use of ,string struct tag, trying to unmarshal unquoted value into string`}, + {`{"result":"\""}`, `json: invalid use of ,string struct tag, trying to unmarshal "\"" into string`}, + {`{"result":"\"foo"}`, `json: invalid use of ,string struct tag, trying to unmarshal "\"foo" into string`}, +} + +// If people misuse the ,string modifier, the error message should be +// helpful, telling the user that they're doing it wrong. +func TestErrorMessageFromMisusedString(t *testing.T) { + for n, tt := range wrongStringTests { + r := strings.NewReader(tt.in) + var s WrongString + err := NewDecoder(r).Decode(&s) + got := fmt.Sprintf("%v", err) + if got != tt.err { + t.Errorf("%d. got err = %q, want %q", n, got, tt.err) + } + } +} + +func noSpace(c rune) rune { + if isSpace(byte(c)) { //only used for ascii + return -1 + } + return c +} + +type All struct { + Bool bool + Int int + Int8 int8 + Int16 int16 + Int32 int32 + Int64 int64 + Uint uint + Uint8 uint8 + Uint16 uint16 + Uint32 uint32 + Uint64 uint64 + Uintptr uintptr + Float32 float32 + Float64 float64 + + Foo string `json:"bar"` + Foo2 string `json:"bar2,dummyopt"` + + IntStr int64 `json:",string"` + UintptrStr uintptr `json:",string"` + + PBool *bool + PInt *int + PInt8 *int8 + PInt16 *int16 + PInt32 *int32 + PInt64 *int64 + PUint *uint + PUint8 *uint8 + PUint16 *uint16 + PUint32 *uint32 + PUint64 *uint64 + PUintptr *uintptr + PFloat32 *float32 + PFloat64 *float64 + + String string + PString *string + + Map map[string]Small + MapP map[string]*Small + PMap *map[string]Small + PMapP *map[string]*Small + + EmptyMap map[string]Small + NilMap map[string]Small + + Slice []Small + SliceP []*Small + PSlice *[]Small + PSliceP *[]*Small + + EmptySlice []Small + NilSlice []Small + + StringSlice []string + ByteSlice []byte + + Small Small + PSmall *Small + PPSmall **Small + + Interface interface{} + PInterface *interface{} + + unexported int +} + +type Small struct { + Tag string +} + +var allValue = All{ + Bool: true, + Int: 2, + Int8: 3, + Int16: 4, + Int32: 5, + Int64: 6, + Uint: 7, + Uint8: 8, + Uint16: 9, + Uint32: 10, + Uint64: 11, + Uintptr: 12, + Float32: 14.1, + Float64: 15.1, + Foo: "foo", + Foo2: "foo2", + IntStr: 42, + UintptrStr: 44, + String: "16", + Map: map[string]Small{ + "17": {Tag: "tag17"}, + "18": {Tag: "tag18"}, + }, + MapP: map[string]*Small{ + "19": {Tag: "tag19"}, + "20": nil, + }, + EmptyMap: map[string]Small{}, + Slice: []Small{{Tag: "tag20"}, {Tag: "tag21"}}, + SliceP: []*Small{{Tag: "tag22"}, nil, {Tag: "tag23"}}, + EmptySlice: []Small{}, + StringSlice: []string{"str24", "str25", "str26"}, + ByteSlice: []byte{27, 28, 29}, + Small: Small{Tag: "tag30"}, + PSmall: &Small{Tag: "tag31"}, + Interface: 5.2, +} + +var pallValue = All{ + PBool: &allValue.Bool, + PInt: &allValue.Int, + PInt8: &allValue.Int8, + PInt16: &allValue.Int16, + PInt32: &allValue.Int32, + PInt64: &allValue.Int64, + PUint: &allValue.Uint, + PUint8: &allValue.Uint8, + PUint16: &allValue.Uint16, + PUint32: &allValue.Uint32, + PUint64: &allValue.Uint64, + PUintptr: &allValue.Uintptr, + PFloat32: &allValue.Float32, + PFloat64: &allValue.Float64, + PString: &allValue.String, + PMap: &allValue.Map, + PMapP: &allValue.MapP, + PSlice: &allValue.Slice, + PSliceP: &allValue.SliceP, + PPSmall: &allValue.PSmall, + PInterface: &allValue.Interface, +} + +var allValueIndent = `{ + "Bool": true, + "Int": 2, + "Int8": 3, + "Int16": 4, + "Int32": 5, + "Int64": 6, + "Uint": 7, + "Uint8": 8, + "Uint16": 9, + "Uint32": 10, + "Uint64": 11, + "Uintptr": 12, + "Float32": 14.1, + "Float64": 15.1, + "bar": "foo", + "bar2": "foo2", + "IntStr": "42", + "UintptrStr": "44", + "PBool": null, + "PInt": null, + "PInt8": null, + "PInt16": null, + "PInt32": null, + "PInt64": null, + "PUint": null, + "PUint8": null, + "PUint16": null, + "PUint32": null, + "PUint64": null, + "PUintptr": null, + "PFloat32": null, + "PFloat64": null, + "String": "16", + "PString": null, + "Map": { + "17": { + "Tag": "tag17" + }, + "18": { + "Tag": "tag18" + } + }, + "MapP": { + "19": { + "Tag": "tag19" + }, + "20": null + }, + "PMap": null, + "PMapP": null, + "EmptyMap": {}, + "NilMap": null, + "Slice": [ + { + "Tag": "tag20" + }, + { + "Tag": "tag21" + } + ], + "SliceP": [ + { + "Tag": "tag22" + }, + null, + { + "Tag": "tag23" + } + ], + "PSlice": null, + "PSliceP": null, + "EmptySlice": [], + "NilSlice": null, + "StringSlice": [ + "str24", + "str25", + "str26" + ], + "ByteSlice": "Gxwd", + "Small": { + "Tag": "tag30" + }, + "PSmall": { + "Tag": "tag31" + }, + "PPSmall": null, + "Interface": 5.2, + "PInterface": null +}` + +var allValueCompact = strings.Map(noSpace, allValueIndent) + +var pallValueIndent = `{ + "Bool": false, + "Int": 0, + "Int8": 0, + "Int16": 0, + "Int32": 0, + "Int64": 0, + "Uint": 0, + "Uint8": 0, + "Uint16": 0, + "Uint32": 0, + "Uint64": 0, + "Uintptr": 0, + "Float32": 0, + "Float64": 0, + "bar": "", + "bar2": "", + "IntStr": "0", + "UintptrStr": "0", + "PBool": true, + "PInt": 2, + "PInt8": 3, + "PInt16": 4, + "PInt32": 5, + "PInt64": 6, + "PUint": 7, + "PUint8": 8, + "PUint16": 9, + "PUint32": 10, + "PUint64": 11, + "PUintptr": 12, + "PFloat32": 14.1, + "PFloat64": 15.1, + "String": "", + "PString": "16", + "Map": null, + "MapP": null, + "PMap": { + "17": { + "Tag": "tag17" + }, + "18": { + "Tag": "tag18" + } + }, + "PMapP": { + "19": { + "Tag": "tag19" + }, + "20": null + }, + "EmptyMap": null, + "NilMap": null, + "Slice": null, + "SliceP": null, + "PSlice": [ + { + "Tag": "tag20" + }, + { + "Tag": "tag21" + } + ], + "PSliceP": [ + { + "Tag": "tag22" + }, + null, + { + "Tag": "tag23" + } + ], + "EmptySlice": null, + "NilSlice": null, + "StringSlice": null, + "ByteSlice": null, + "Small": { + "Tag": "" + }, + "PSmall": null, + "PPSmall": { + "Tag": "tag31" + }, + "Interface": null, + "PInterface": 5.2 +}` + +var pallValueCompact = strings.Map(noSpace, pallValueIndent) + +func TestRefUnmarshal(t *testing.T) { + type S struct { + // Ref is defined in encode_test.go. + R0 Ref + R1 *Ref + R2 RefText + R3 *RefText + } + want := S{ + R0: 12, + R1: new(Ref), + R2: 13, + R3: new(RefText), + } + *want.R1 = 12 + *want.R3 = 13 + + var got S + if err := Unmarshal([]byte(`{"R0":"ref","R1":"ref","R2":"ref","R3":"ref"}`), &got); err != nil { + t.Fatalf("Unmarshal: %v", err) + } + if !reflect.DeepEqual(got, want) { + t.Errorf("got %+v, want %+v", got, want) + } +} + +// Test that the empty string doesn't panic decoding when ,string is specified +// Issue 3450 +func TestEmptyString(t *testing.T) { + type T2 struct { + Number1 int `json:",string"` + Number2 int `json:",string"` + } + data := `{"Number1":"1", "Number2":""}` + dec := NewDecoder(strings.NewReader(data)) + var t2 T2 + err := dec.Decode(&t2) + if err == nil { + t.Fatal("Decode: did not return error") + } + if t2.Number1 != 1 { + t.Fatal("Decode: did not set Number1") + } +} + +// Test that a null for ,string is not replaced with the previous quoted string (issue 7046). +// It should also not be an error (issue 2540, issue 8587). +func TestNullString(t *testing.T) { + type T struct { + A int `json:",string"` + B int `json:",string"` + C *int `json:",string"` + } + data := []byte(`{"A": "1", "B": null, "C": null}`) + var s T + s.B = 1 + s.C = new(int) + *s.C = 2 + err := Unmarshal(data, &s) + if err != nil { + t.Fatalf("Unmarshal: %v", err) + } + if s.B != 1 || s.C != nil { + t.Fatalf("after Unmarshal, s.B=%d, s.C=%p, want 1, nil", s.B, s.C) + } +} + +func intp(x int) *int { + p := new(int) + *p = x + return p +} + +func intpp(x *int) **int { + pp := new(*int) + *pp = x + return pp +} + +var interfaceSetTests = []struct { + pre interface{} + json string + post interface{} +}{ + {"foo", `"bar"`, "bar"}, + {"foo", `2`, 2.0}, + {"foo", `true`, true}, + {"foo", `null`, nil}, + + {nil, `null`, nil}, + {new(int), `null`, nil}, + {(*int)(nil), `null`, nil}, + {new(*int), `null`, new(*int)}, + {(**int)(nil), `null`, nil}, + {intp(1), `null`, nil}, + {intpp(nil), `null`, intpp(nil)}, + {intpp(intp(1)), `null`, intpp(nil)}, +} + +func TestInterfaceSet(t *testing.T) { + for _, tt := range interfaceSetTests { + b := struct{ X interface{} }{tt.pre} + blob := `{"X":` + tt.json + `}` + if err := Unmarshal([]byte(blob), &b); err != nil { + t.Errorf("Unmarshal %#q: %v", blob, err) + continue + } + if !reflect.DeepEqual(b.X, tt.post) { + t.Errorf("Unmarshal %#q into %#v: X=%#v, want %#v", blob, tt.pre, b.X, tt.post) + } + } +} + +type NullTest struct { + Bool bool + Int int + Int8 int8 + Int16 int16 + Int32 int32 + Int64 int64 + Uint uint + Uint8 uint8 + Uint16 uint16 + Uint32 uint32 + Uint64 uint64 + Float32 float32 + Float64 float64 + String string + PBool *bool + Map map[string]string + Slice []string + Interface interface{} + + PRaw *RawMessage + PTime *time.Time + PBigInt *big.Int + PText *MustNotUnmarshalText + PBuffer *bytes.Buffer // has methods, just not relevant ones + PStruct *struct{} + + Raw RawMessage + Time time.Time + BigInt big.Int + Text MustNotUnmarshalText + Buffer bytes.Buffer + Struct struct{} +} + +// JSON null values should be ignored for primitives and string values instead of resulting in an error. +// Issue 2540 +func TestUnmarshalNulls(t *testing.T) { + // Unmarshal docs: + // The JSON null value unmarshals into an interface, map, pointer, or slice + // by setting that Go value to nil. Because null is often used in JSON to mean + // ``not present,'' unmarshaling a JSON null into any other Go type has no effect + // on the value and produces no error. + + jsonData := []byte(`{ + "Bool" : null, + "Int" : null, + "Int8" : null, + "Int16" : null, + "Int32" : null, + "Int64" : null, + "Uint" : null, + "Uint8" : null, + "Uint16" : null, + "Uint32" : null, + "Uint64" : null, + "Float32" : null, + "Float64" : null, + "String" : null, + "PBool": null, + "Map": null, + "Slice": null, + "Interface": null, + "PRaw": null, + "PTime": null, + "PBigInt": null, + "PText": null, + "PBuffer": null, + "PStruct": null, + "Raw": null, + "Time": null, + "BigInt": null, + "Text": null, + "Buffer": null, + "Struct": null + }`) + nulls := NullTest{ + Bool: true, + Int: 2, + Int8: 3, + Int16: 4, + Int32: 5, + Int64: 6, + Uint: 7, + Uint8: 8, + Uint16: 9, + Uint32: 10, + Uint64: 11, + Float32: 12.1, + Float64: 13.1, + String: "14", + PBool: new(bool), + Map: map[string]string{}, + Slice: []string{}, + Interface: new(MustNotUnmarshalJSON), + PRaw: new(RawMessage), + PTime: new(time.Time), + PBigInt: new(big.Int), + PText: new(MustNotUnmarshalText), + PStruct: new(struct{}), + PBuffer: new(bytes.Buffer), + Raw: RawMessage("123"), + Time: time.Unix(123456789, 0), + BigInt: *big.NewInt(123), + } + + before := nulls.Time.String() + + err := Unmarshal(jsonData, &nulls) + if err != nil { + t.Errorf("Unmarshal of null values failed: %v", err) + } + if !nulls.Bool || nulls.Int != 2 || nulls.Int8 != 3 || nulls.Int16 != 4 || nulls.Int32 != 5 || nulls.Int64 != 6 || + nulls.Uint != 7 || nulls.Uint8 != 8 || nulls.Uint16 != 9 || nulls.Uint32 != 10 || nulls.Uint64 != 11 || + nulls.Float32 != 12.1 || nulls.Float64 != 13.1 || nulls.String != "14" { + t.Errorf("Unmarshal of null values affected primitives") + } + + if nulls.PBool != nil { + t.Errorf("Unmarshal of null did not clear nulls.PBool") + } + if nulls.Map != nil { + t.Errorf("Unmarshal of null did not clear nulls.Map") + } + if nulls.Slice != nil { + t.Errorf("Unmarshal of null did not clear nulls.Slice") + } + if nulls.Interface != nil { + t.Errorf("Unmarshal of null did not clear nulls.Interface") + } + if nulls.PRaw != nil { + t.Errorf("Unmarshal of null did not clear nulls.PRaw") + } + if nulls.PTime != nil { + t.Errorf("Unmarshal of null did not clear nulls.PTime") + } + if nulls.PBigInt != nil { + t.Errorf("Unmarshal of null did not clear nulls.PBigInt") + } + if nulls.PText != nil { + t.Errorf("Unmarshal of null did not clear nulls.PText") + } + if nulls.PBuffer != nil { + t.Errorf("Unmarshal of null did not clear nulls.PBuffer") + } + if nulls.PStruct != nil { + t.Errorf("Unmarshal of null did not clear nulls.PStruct") + } + + if string(nulls.Raw) != "null" { + t.Errorf("Unmarshal of RawMessage null did not record null: %v", string(nulls.Raw)) + } + if nulls.Time.String() != before { + t.Errorf("Unmarshal of time.Time null set time to %v", nulls.Time.String()) + } + if nulls.BigInt.String() != "123" { + t.Errorf("Unmarshal of big.Int null set int to %v", nulls.BigInt.String()) + } +} + +type MustNotUnmarshalJSON struct{} + +func (x MustNotUnmarshalJSON) UnmarshalJSON(data []byte) error { + return errors.New("MustNotUnmarshalJSON was used") +} + +type MustNotUnmarshalText struct{} + +func (x MustNotUnmarshalText) UnmarshalText(text []byte) error { + return errors.New("MustNotUnmarshalText was used") +} + +func TestStringKind(t *testing.T) { + type stringKind string + + var m1, m2 map[stringKind]int + m1 = map[stringKind]int{ + "foo": 42, + } + + data, err := Marshal(m1) + if err != nil { + t.Errorf("Unexpected error marshaling: %v", err) + } + + err = Unmarshal(data, &m2) + if err != nil { + t.Errorf("Unexpected error unmarshaling: %v", err) + } + + if !reflect.DeepEqual(m1, m2) { + t.Error("Items should be equal after encoding and then decoding") + } +} + +// Custom types with []byte as underlying type could not be marshaled +// and then unmarshaled. +// Issue 8962. +func TestByteKind(t *testing.T) { + type byteKind []byte + + a := byteKind("hello") + + data, err := Marshal(a) + if err != nil { + t.Error(err) + } + var b byteKind + err = Unmarshal(data, &b) + if err != nil { + t.Fatal(err) + } + if !reflect.DeepEqual(a, b) { + t.Errorf("expected %v == %v", a, b) + } +} + +// The fix for issue 8962 introduced a regression. +// Issue 12921. +func TestSliceOfCustomByte(t *testing.T) { + type Uint8 uint8 + + a := []Uint8("hello") + + data, err := Marshal(a) + if err != nil { + t.Fatal(err) + } + var b []Uint8 + err = Unmarshal(data, &b) + if err != nil { + t.Fatal(err) + } + if !reflect.DeepEqual(a, b) { + t.Fatalf("expected %v == %v", a, b) + } +} + +var decodeTypeErrorTests = []struct { + dest interface{} + src string +}{ + {new(string), `{"user": "name"}`}, // issue 4628. + {new(error), `{}`}, // issue 4222 + {new(error), `[]`}, + {new(error), `""`}, + {new(error), `123`}, + {new(error), `true`}, +} + +func TestUnmarshalTypeError(t *testing.T) { + for _, item := range decodeTypeErrorTests { + err := Unmarshal([]byte(item.src), item.dest) + if _, ok := err.(*UnmarshalTypeError); !ok { + t.Errorf("expected type error for Unmarshal(%q, type %T): got %T", + item.src, item.dest, err) + } + } +} + +var unmarshalSyntaxTests = []string{ + "tru", + "fals", + "nul", + "123e", + `"hello`, + `[1,2,3`, + `{"key":1`, + `{"key":1,`, +} + +func TestUnmarshalSyntax(t *testing.T) { + var x interface{} + for _, src := range unmarshalSyntaxTests { + err := Unmarshal([]byte(src), &x) + if _, ok := err.(*SyntaxError); !ok { + t.Errorf("expected syntax error for Unmarshal(%q): got %T", src, err) + } + } +} + +// Test handling of unexported fields that should be ignored. +// Issue 4660 +type unexportedFields struct { + Name string + m map[string]interface{} `json:"-"` + m2 map[string]interface{} `json:"abcd"` + + s []int `json:"-"` +} + +func TestUnmarshalUnexported(t *testing.T) { + input := `{"Name": "Bob", "m": {"x": 123}, "m2": {"y": 456}, "abcd": {"z": 789}, "s": [2, 3]}` + want := &unexportedFields{Name: "Bob"} + + out := &unexportedFields{} + err := Unmarshal([]byte(input), out) + if err != nil { + t.Errorf("got error %v, expected nil", err) + } + if !reflect.DeepEqual(out, want) { + t.Errorf("got %q, want %q", out, want) + } +} + +// Time3339 is a time.Time which encodes to and from JSON +// as an RFC 3339 time in UTC. +type Time3339 time.Time + +func (t *Time3339) UnmarshalJSON(b []byte) error { + if len(b) < 2 || b[0] != '"' || b[len(b)-1] != '"' { + return fmt.Errorf("types: failed to unmarshal non-string value %q as an RFC 3339 time", b) + } + tm, err := time.Parse(time.RFC3339, string(b[1:len(b)-1])) + if err != nil { + return err + } + *t = Time3339(tm) + return nil +} + +func TestUnmarshalJSONLiteralError(t *testing.T) { + var t3 Time3339 + err := Unmarshal([]byte(`"0000-00-00T00:00:00Z"`), &t3) + if err == nil { + t.Fatalf("expected error; got time %v", time.Time(t3)) + } + if !strings.Contains(err.Error(), "range") { + t.Errorf("got err = %v; want out of range error", err) + } +} + +// Test that extra object elements in an array do not result in a +// "data changing underfoot" error. +// Issue 3717 +func TestSkipArrayObjects(t *testing.T) { + json := `[{}]` + var dest [0]interface{} + + err := Unmarshal([]byte(json), &dest) + if err != nil { + t.Errorf("got error %q, want nil", err) + } +} + +// Test semantics of pre-filled data, such as struct fields, map elements, +// slices, and arrays. +// Issues 4900 and 8837, among others. +func TestPrefilled(t *testing.T) { + // Values here change, cannot reuse table across runs. + var prefillTests = []struct { + in string + ptr interface{} + out interface{} + }{ + { + in: `{"X": 1, "Y": 2}`, + ptr: &XYZ{X: float32(3), Y: int16(4), Z: 1.5}, + out: &XYZ{X: float64(1), Y: float64(2), Z: 1.5}, + }, + { + in: `{"X": 1, "Y": 2}`, + ptr: &map[string]interface{}{"X": float32(3), "Y": int16(4), "Z": 1.5}, + out: &map[string]interface{}{"X": float64(1), "Y": float64(2), "Z": 1.5}, + }, + { + in: `[2]`, + ptr: &[]int{1}, + out: &[]int{2}, + }, + { + in: `[2, 3]`, + ptr: &[]int{1}, + out: &[]int{2, 3}, + }, + { + in: `[2, 3]`, + ptr: &[...]int{1}, + out: &[...]int{2}, + }, + { + in: `[3]`, + ptr: &[...]int{1, 2}, + out: &[...]int{3, 0}, + }, + } + + for _, tt := range prefillTests { + ptrstr := fmt.Sprintf("%v", tt.ptr) + err := Unmarshal([]byte(tt.in), tt.ptr) // tt.ptr edited here + if err != nil { + t.Errorf("Unmarshal: %v", err) + } + if !reflect.DeepEqual(tt.ptr, tt.out) { + t.Errorf("Unmarshal(%#q, %s): have %v, want %v", tt.in, ptrstr, tt.ptr, tt.out) + } + } +} + +var invalidUnmarshalTests = []struct { + v interface{} + want string +}{ + {nil, "json: Unmarshal(nil)"}, + {struct{}{}, "json: Unmarshal(non-pointer struct {})"}, + {(*int)(nil), "json: Unmarshal(nil *int)"}, +} + +func TestInvalidUnmarshal(t *testing.T) { + buf := []byte(`{"a":"1"}`) + for _, tt := range invalidUnmarshalTests { + err := Unmarshal(buf, tt.v) + if err == nil { + t.Errorf("Unmarshal expecting error, got nil") + continue + } + if got := err.Error(); got != tt.want { + t.Errorf("Unmarshal = %q; want %q", got, tt.want) + } + } +} + +var invalidUnmarshalTextTests = []struct { + v interface{} + want string +}{ + {nil, "json: Unmarshal(nil)"}, + {struct{}{}, "json: Unmarshal(non-pointer struct {})"}, + {(*int)(nil), "json: Unmarshal(nil *int)"}, + {new(net.IP), "json: cannot unmarshal number into Go value of type *net.IP"}, +} + +func TestInvalidUnmarshalText(t *testing.T) { + buf := []byte(`123`) + for _, tt := range invalidUnmarshalTextTests { + err := Unmarshal(buf, tt.v) + if err == nil { + t.Errorf("Unmarshal expecting error, got nil") + continue + } + if got := err.Error(); got != tt.want { + t.Errorf("Unmarshal = %q; want %q", got, tt.want) + } + } +} + +// Test that string option is ignored for invalid types. +// Issue 9812. +func TestInvalidStringOption(t *testing.T) { + num := 0 + item := struct { + T time.Time `json:",string"` + M map[string]string `json:",string"` + S []string `json:",string"` + A [1]string `json:",string"` + I interface{} `json:",string"` + P *int `json:",string"` + }{M: make(map[string]string), S: make([]string, 0), I: num, P: &num} + + data, err := Marshal(item) + if err != nil { + t.Fatalf("Marshal: %v", err) + } + + err = Unmarshal(data, &item) + if err != nil { + t.Fatalf("Unmarshal: %v", err) + } +} + +// Test unmarshal behavior with regards to embedded unexported structs. +// +// (Issue 21357) If the embedded struct is a pointer and is unallocated, +// this returns an error because unmarshal cannot set the field. +// +// (Issue 24152) If the embedded struct is given an explicit name, +// ensure that the normal unmarshal logic does not panic in reflect. +// +// (Issue 28145) If the embedded struct is given an explicit name and has +// exported methods, don't cause a panic trying to get its value. +func TestUnmarshalEmbeddedUnexported(t *testing.T) { + type ( + embed1 struct{ Q int } + embed2 struct{ Q int } + embed3 struct { + Q int64 `json:",string"` + } + S1 struct { + *embed1 + R int + } + S2 struct { + *embed1 + Q int + } + S3 struct { + embed1 + R int + } + S4 struct { + *embed1 + embed2 + } + S5 struct { + *embed3 + R int + } + S6 struct { + embed1 `json:"embed1"` + } + S7 struct { + embed1 `json:"embed1"` + embed2 + } + S8 struct { + embed1 `json:"embed1"` + embed2 `json:"embed2"` + Q int + } + S9 struct { + unexportedWithMethods `json:"embed"` + } + ) + + tests := []struct { + in string + ptr interface{} + out interface{} + err error + }{{ + // Error since we cannot set S1.embed1, but still able to set S1.R. + in: `{"R":2,"Q":1}`, + ptr: new(S1), + out: &S1{R: 2}, + err: fmt.Errorf("json: cannot set embedded pointer to unexported struct: json.embed1"), + }, { + // The top level Q field takes precedence. + in: `{"Q":1}`, + ptr: new(S2), + out: &S2{Q: 1}, + }, { + // No issue with non-pointer variant. + in: `{"R":2,"Q":1}`, + ptr: new(S3), + out: &S3{embed1: embed1{Q: 1}, R: 2}, + }, { + // No error since both embedded structs have field R, which annihilate each other. + // Thus, no attempt is made at setting S4.embed1. + in: `{"R":2}`, + ptr: new(S4), + out: new(S4), + }, { + // Error since we cannot set S5.embed1, but still able to set S5.R. + in: `{"R":2,"Q":1}`, + ptr: new(S5), + out: &S5{R: 2}, + err: fmt.Errorf("json: cannot set embedded pointer to unexported struct: json.embed3"), + }, { + // Issue 24152, ensure decodeState.indirect does not panic. + in: `{"embed1": {"Q": 1}}`, + ptr: new(S6), + out: &S6{embed1{1}}, + }, { + // Issue 24153, check that we can still set forwarded fields even in + // the presence of a name conflict. + // + // This relies on obscure behavior of reflect where it is possible + // to set a forwarded exported field on an unexported embedded struct + // even though there is a name conflict, even when it would have been + // impossible to do so according to Go visibility rules. + // Go forbids this because it is ambiguous whether S7.Q refers to + // S7.embed1.Q or S7.embed2.Q. Since embed1 and embed2 are unexported, + // it should be impossible for an external package to set either Q. + // + // It is probably okay for a future reflect change to break this. + in: `{"embed1": {"Q": 1}, "Q": 2}`, + ptr: new(S7), + out: &S7{embed1{1}, embed2{2}}, + }, { + // Issue 24153, similar to the S7 case. + in: `{"embed1": {"Q": 1}, "embed2": {"Q": 2}, "Q": 3}`, + ptr: new(S8), + out: &S8{embed1{1}, embed2{2}, 3}, + }, { + // Issue 228145, similar to the cases above. + in: `{"embed": {}}`, + ptr: new(S9), + out: &S9{}, + }} + + for i, tt := range tests { + err := Unmarshal([]byte(tt.in), tt.ptr) + if !equalError(err, tt.err) { + t.Errorf("#%d: %v, want %v", i, err, tt.err) + } + if !reflect.DeepEqual(tt.ptr, tt.out) { + t.Errorf("#%d: mismatch\ngot: %#+v\nwant: %#+v", i, tt.ptr, tt.out) + } + } +} + +func TestUnmarshalErrorAfterMultipleJSON(t *testing.T) { + tests := []struct { + in string + err error + }{{ + in: `1 false null :`, + err: &SyntaxError{"invalid character ':' looking for beginning of value", 14}, + }, { + in: `1 [] [,]`, + err: &SyntaxError{"invalid character ',' looking for beginning of value", 7}, + }, { + in: `1 [] [true:]`, + err: &SyntaxError{"invalid character ':' after array element", 11}, + }, { + in: `1 {} {"x"=}`, + err: &SyntaxError{"invalid character '=' after object key", 14}, + }, { + in: `falsetruenul#`, + err: &SyntaxError{"invalid character '#' in literal null (expecting 'l')", 13}, + }} + for i, tt := range tests { + dec := NewDecoder(strings.NewReader(tt.in)) + var err error + for { + var v interface{} + if err = dec.Decode(&v); err != nil { + break + } + } + if !reflect.DeepEqual(err, tt.err) { + t.Errorf("#%d: got %#v, want %#v", i, err, tt.err) + } + } +} + +type unmarshalPanic struct{} + +func (unmarshalPanic) UnmarshalJSON([]byte) error { panic(0xdead) } + +func TestUnmarshalPanic(t *testing.T) { + defer func() { + if got := recover(); !reflect.DeepEqual(got, 0xdead) { + t.Errorf("panic() = (%T)(%v), want 0xdead", got, got) + } + }() + Unmarshal([]byte("{}"), &unmarshalPanic{}) + t.Fatalf("Unmarshal should have panicked") +} + +// The decoder used to hang if decoding into an interface pointing to its own address. +// See golang.org/issues/31740. +func TestUnmarshalRecursivePointer(t *testing.T) { + var v interface{} + v = &v + data := []byte(`{"a": "b"}`) + + if err := Unmarshal(data, v); err != nil { + t.Fatal(err) + } +} + +type textUnmarshalerString string + +func (m *textUnmarshalerString) UnmarshalText(text []byte) error { + *m = textUnmarshalerString(strings.ToLower(string(text))) + return nil +} + +// Test unmarshal to a map, where the map key is a user defined type. +// See golang.org/issues/34437. +func TestUnmarshalMapWithTextUnmarshalerStringKey(t *testing.T) { + var p map[textUnmarshalerString]string + if err := Unmarshal([]byte(`{"FOO": "1"}`), &p); err != nil { + t.Fatalf("Unmarshal unexpected error: %v", err) + } + + if _, ok := p["foo"]; !ok { + t.Errorf(`Key "foo" does not exist in map: %v`, p) + } +} + +func TestUnmarshalRescanLiteralMangledUnquote(t *testing.T) { + // See golang.org/issues/38105. + var p map[textUnmarshalerString]string + if err := Unmarshal([]byte(`{"开源":"12345开源"}`), &p); err != nil { + t.Fatalf("Unmarshal unexpected error: %v", err) + } + if _, ok := p["开源"]; !ok { + t.Errorf(`Key "开源" does not exist in map: %v`, p) + } + + // See golang.org/issues/38126. + type T struct { + F1 string `json:"F1,string"` + } + t1 := T{"aaa\tbbb"} + + b, err := Marshal(t1) + if err != nil { + t.Fatalf("Marshal unexpected error: %v", err) + } + var t2 T + if err := Unmarshal(b, &t2); err != nil { + t.Fatalf("Unmarshal unexpected error: %v", err) + } + if t1 != t2 { + t.Errorf("Marshal and Unmarshal roundtrip mismatch: want %q got %q", t1, t2) + } + + // See golang.org/issues/39555. + input := map[textUnmarshalerString]string{"FOO": "", `"`: ""} + + encoded, err := Marshal(input) + if err != nil { + t.Fatalf("Marshal unexpected error: %v", err) + } + var got map[textUnmarshalerString]string + if err := Unmarshal(encoded, &got); err != nil { + t.Fatalf("Unmarshal unexpected error: %v", err) + } + want := map[textUnmarshalerString]string{"foo": "", `"`: ""} + if !reflect.DeepEqual(want, got) { + t.Fatalf("Unexpected roundtrip result:\nwant: %q\ngot: %q", want, got) + } +} + +func TestUnmarshalMaxDepth(t *testing.T) { + testcases := []struct { + name string + data string + errMaxDepth bool + }{ + { + name: "ArrayUnderMaxNestingDepth", + data: `{"a":` + strings.Repeat(`[`, 10000-1) + strings.Repeat(`]`, 10000-1) + `}`, + errMaxDepth: false, + }, + { + name: "ArrayOverMaxNestingDepth", + data: `{"a":` + strings.Repeat(`[`, 10000) + strings.Repeat(`]`, 10000) + `}`, + errMaxDepth: true, + }, + { + name: "ArrayOverStackDepth", + data: `{"a":` + strings.Repeat(`[`, 3000000) + strings.Repeat(`]`, 3000000) + `}`, + errMaxDepth: true, + }, + { + name: "ObjectUnderMaxNestingDepth", + data: `{"a":` + strings.Repeat(`{"a":`, 10000-1) + `0` + strings.Repeat(`}`, 10000-1) + `}`, + errMaxDepth: false, + }, + { + name: "ObjectOverMaxNestingDepth", + data: `{"a":` + strings.Repeat(`{"a":`, 10000) + `0` + strings.Repeat(`}`, 10000) + `}`, + errMaxDepth: true, + }, + { + name: "ObjectOverStackDepth", + data: `{"a":` + strings.Repeat(`{"a":`, 3000000) + `0` + strings.Repeat(`}`, 3000000) + `}`, + errMaxDepth: true, + }, + } + + targets := []struct { + name string + newValue func() interface{} + }{ + { + name: "unstructured", + newValue: func() interface{} { + var v interface{} + return &v + }, + }, + { + name: "typed named field", + newValue: func() interface{} { + v := struct { + A interface{} `json:"a"` + }{} + return &v + }, + }, + { + name: "typed missing field", + newValue: func() interface{} { + v := struct { + B interface{} `json:"b"` + }{} + return &v + }, + }, + { + name: "custom unmarshaler", + newValue: func() interface{} { + v := unmarshaler{} + return &v + }, + }, + } + + for _, tc := range testcases { + for _, target := range targets { + t.Run(target.name+"-"+tc.name, func(t *testing.T) { + err := Unmarshal([]byte(tc.data), target.newValue()) + if !tc.errMaxDepth { + if err != nil { + t.Errorf("unexpected error: %v", err) + } + } else { + if err == nil { + t.Errorf("expected error containing 'exceeded max depth', got none") + } else if !strings.Contains(err.Error(), "exceeded max depth") { + t.Errorf("expected error containing 'exceeded max depth', got: %v", err) + } + } + }) + } + } +} diff --git a/pkg/encoding/json/doc.go b/pkg/encoding/json/doc.go new file mode 100644 index 0000000..cb4449c --- /dev/null +++ b/pkg/encoding/json/doc.go @@ -0,0 +1,19 @@ +package json + +/* + +This package is forked from Go SDK 1.17.2. +Source: https://github.com/golang/go/tree/go1.17.2/src/encoding/json + +Modifications: + +1. Modify JSON marshalling to distinguish between nil and empty values for Arrays, Slices, and Maps. + - Modification lives on L344-347 of encode.go + - This modification allows Go structs with Array/Slice/Map fields with the `omitempty` tag to be serialized + as the empty value when the Go value is empty. Nil values tagged with `omitempty` follow standard behavior + and are not serialized into the resulting output. + - This is needed for performing Kubernetes patch operations using JSON merge semantics so that Array/Slice/Map + fields can be deleted. + +2. Removed `bench_test.go` to avoid bringing in other internal package dependencies. +*/ diff --git a/pkg/encoding/json/encode.go b/pkg/encoding/json/encode.go new file mode 100644 index 0000000..cb4892e --- /dev/null +++ b/pkg/encoding/json/encode.go @@ -0,0 +1,1425 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package json implements encoding and decoding of JSON as defined in +// RFC 7159. The mapping between JSON and Go values is described +// in the documentation for the Marshal and Unmarshal functions. +// +// See "JSON and Go" for an introduction to this package: +// https://golang.org/doc/articles/json_and_go.html +package json + +import ( + "bytes" + "encoding" + "encoding/base64" + "fmt" + "math" + "reflect" + "sort" + "strconv" + "strings" + "sync" + "unicode" + "unicode/utf8" +) + +// Marshal returns the JSON encoding of v. +// +// Marshal traverses the value v recursively. +// If an encountered value implements the Marshaler interface +// and is not a nil pointer, Marshal calls its MarshalJSON method +// to produce JSON. If no MarshalJSON method is present but the +// value implements encoding.TextMarshaler instead, Marshal calls +// its MarshalText method and encodes the result as a JSON string. +// The nil pointer exception is not strictly necessary +// but mimics a similar, necessary exception in the behavior of +// UnmarshalJSON. +// +// Otherwise, Marshal uses the following type-dependent default encodings: +// +// Boolean values encode as JSON booleans. +// +// Floating point, integer, and Number values encode as JSON numbers. +// +// String values encode as JSON strings coerced to valid UTF-8, +// replacing invalid bytes with the Unicode replacement rune. +// So that the JSON will be safe to embed inside HTML