diff --git a/api/collector.go b/api/collector.go index ee3e61675..09a4c5c69 100644 --- a/api/collector.go +++ b/api/collector.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2020, 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package api diff --git a/api/planner.go b/api/planner.go index 8a36687b7..f47afba29 100644 --- a/api/planner.go +++ b/api/planner.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2020, 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package api @@ -22,6 +22,7 @@ import ( "github.com/konveyor/move2kube/internal/transformer" "github.com/konveyor/move2kube/qaengine" plantypes "github.com/konveyor/move2kube/types/plan" + transformertypes "github.com/konveyor/move2kube/types/transformer" "github.com/sirupsen/logrus" ) @@ -112,7 +113,7 @@ func CuratePlan(p plantypes.Plan) plantypes.Plan { logrus.Debugf("Ignoring transformer %+v for service %s due to deselected transformer %s", t, sn, t.Mode) continue } - artifactsToUse := []plantypes.ArtifactType{} + artifactsToUse := []transformertypes.ArtifactType{} for _, at := range t.ArtifactTypes { if common.IsStringPresent(exclusiveArtifactTypes, string(at)) { continue diff --git a/api/planner_test.go b/api/planner_test.go deleted file mode 100644 index e5fed5e2c..000000000 --- a/api/planner_test.go +++ /dev/null @@ -1,129 +0,0 @@ -/* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package api_test - -import ( - "os" - "path/filepath" - "testing" - - "github.com/google/go-cmp/cmp" - "github.com/google/go-cmp/cmp/cmpopts" - "github.com/konveyor/move2kube/api" - "github.com/konveyor/move2kube/assets" - "github.com/konveyor/move2kube/internal/common" - "github.com/konveyor/move2kube/internal/transformer" - plantypes "github.com/konveyor/move2kube/types/plan" - "github.com/sirupsen/logrus" -) - -func setupAssets(t *testing.T) { - assetsPath, tempPath, err := common.CreateAssetsData(assets.Tar) - if err != nil { - t.Fatalf("Unable to create the assets directory. Error: %q", err) - } - - common.TempPath = tempPath - common.AssetsPath = assetsPath -} - -func TestCreatePlan(t *testing.T) { - logrus.SetLevel(logrus.DebugLevel) - - t.Run("create plan for empty app and without the cache folder", func(t *testing.T) { - // Setup - setupAssets(t) - defer os.RemoveAll(common.TempPath) - - inputPath := t.TempDir() - prjName := "project1" - - want := plantypes.NewPlan() - want.Name = prjName - if err := want.SetRootDir(inputPath); err != nil { - t.Fatalf("Failed to set the root directory of the plan to path %q Error: %q", inputPath, err) - } - transformer.Init(common.AssetsDir, inputPath) - - // Test - p := api.CreatePlan(inputPath, "", prjName) - if !cmp.Equal(p, want) { - t.Fatalf("Failed to create the plan properly. Difference:\n%s", cmp.Diff(want, p)) - } - }) - - t.Run("create plan for empty app", func(t *testing.T) { - // Setup - setupAssets(t) - defer os.RemoveAll(common.TempPath) - - inputPath := t.TempDir() - prjName := "project1" - - // If the cache folder exists delete it - if _, err := os.Stat(common.AssetsPath); !os.IsNotExist(err) { - if err := os.RemoveAll(common.AssetsPath); err != nil { - t.Fatal("Failed to remove the cache folder from previous runs. Error:", err) - } - } - // Create the cache folder (.m2k) it expects to find. - if err := os.MkdirAll(common.AssetsPath, os.ModeDir|os.ModePerm); err != nil { - t.Fatal("Failed to make the common.AssetsPath directory:", common.AssetsPath, "Error:", err) - } - defer os.RemoveAll(common.AssetsPath) - - want := plantypes.NewPlan() - want.Name = prjName - if err := want.SetRootDir(inputPath); err != nil { - t.Fatalf("Failed to set the root directory of the plan to path %q Error: %q", inputPath, err) - } - transformer.Init(common.AssetsPath, inputPath) - - // Test - p := api.CreatePlan(inputPath, "", prjName) - if !cmp.Equal(p, want) { - t.Fatalf("Failed to create the plan properly. Difference:\n%s", cmp.Diff(want, p)) - } - }) - - t.Run("create plan for a simple nodejs app", func(t *testing.T) { - // Setup - setupAssets(t) - defer os.RemoveAll(common.TempPath) - - prjName := "nodejs-app" - relInputPath := "../../samples/nodejs" - inputPath, err := filepath.Abs(relInputPath) - if err != nil { - t.Fatalf("Failed to make the path %q Error: %q", relInputPath, err) - } - - testDataPlanPath := "testdata/expectedplanfornodejsapp.yaml" - want, err := plantypes.ReadPlan(testDataPlanPath) - if err != nil { - t.Fatalf("Cannot read the plan at path %q Error: %q", testDataPlanPath, err) - } - transformer.Init(common.AssetsPath, inputPath) - - // Test - actual := api.CreatePlan(inputPath, "", prjName) - - if !cmp.Equal(actual, want, cmpopts.EquateEmpty()) { - t.Fatalf("Failed to create the plan properly. Difference:\n%s", cmp.Diff(want, actual, cmpopts.EquateEmpty())) - } - }) -} diff --git a/api/testdata/expectedplanfornodejsapp.yaml b/api/testdata/expectedplanfornodejsapp.yaml deleted file mode 100644 index bf76a7e09..000000000 --- a/api/testdata/expectedplanfornodejsapp.yaml +++ /dev/null @@ -1,65 +0,0 @@ -apiVersion: move2kube.konveyor.io/v1alpha1 -kind: Plan -metadata: - name: nodejs-app -spec: - inputs: - rootDir: ../../samples/nodejs - services: - nodejs: - - serviceName: nodejs - serviceRelPath: /nodejs - image: nodejs:latest - transformationType: Containerize - containerBuildType: NewDockerfile - sourceType: - - Directory - targetOptions: - - m2kassets/dockerfiles/nodejs - sourceArtifacts: - SourceCode: - - . - buildArtifacts: - SourceCode: - - . - updateContainerBuildPipeline: true - updateDeployPipeline: true - - serviceName: nodejs - serviceRelPath: /nodejs - image: nodejs:latest - transformationType: Containerize - containerBuildType: S2I - sourceType: - - Directory - targetOptions: - - m2kassets/s2i/nodejs - sourceArtifacts: - SourceCode: - - . - buildArtifacts: - SourceCode: - - . - updateContainerBuildPipeline: true - updateDeployPipeline: true - - serviceName: nodejs - serviceRelPath: /nodejs - image: nodejs:latest - transformationType: Containerize - containerBuildType: CNB - sourceType: - - Directory - targetOptions: - - cloudfoundry/cnb:cflinuxfs3 - - gcr.io/buildpacks/builder - sourceArtifacts: - SourceCode: - - . - buildArtifacts: - SourceCode: - - . - updateContainerBuildPipeline: true - updateDeployPipeline: true - outputs: - kubernetes: - targetCluster: - type: Kubernetes diff --git a/api/transformer.go b/api/transformer.go index 7a71ca9a0..4055faabb 100644 --- a/api/transformer.go +++ b/api/transformer.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020, 2021 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2020, 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package api diff --git a/api/validate.go b/api/validate.go index 1899cddc7..63ee0a663 100644 --- a/api/validate.go +++ b/api/validate.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2020, 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package api diff --git a/api/version.go b/api/version.go index 74e494836..6eac91ec6 100644 --- a/api/version.go +++ b/api/version.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2020, 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package api diff --git a/assets/assets.go b/assets/assets.go index 1fecb5c5d..25d4f5de4 100644 --- a/assets/assets.go +++ b/assets/assets.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package assets diff --git a/assets/constants.go b/assets/constants.go index 1a6c160a4..24db86ff2 100644 --- a/assets/constants.go +++ b/assets/constants.go @@ -18,4 +18,4 @@ limitations under the License. package assets -const Tar = `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L3YxCiAgICAgIC0gc3RvcmFnZS5rOHMuaW8vdjFiZXRhMQogICAgQ1NJTm9kZToKICAgICAgLSBzdG9yYWdlLms4cy5pby92MQogICAgICAtIHN0b3JhZ2UuazhzLmlvL3YxYmV0YTEKICAgIENlcnRpZmljYXRlU2lnbmluZ1JlcXVlc3Q6CiAgICAgIC0gY2VydGlmaWNhdGVzLms4cy5pby92MQogICAgICAtIGNlcnRpZmljYXRlcy5rOHMuaW8vdjFiZXRhMQogICAgQ2x1c3RlclJvbGU6CiAgICAgIC0gcmJhYy5hdXRob3JpemF0aW9uLms4cy5pby92MQogICAgICAtIHJiYWMuYXV0aG9yaXphdGlvbi5rOHMuaW8vdjFiZXRhMQogICAgQ2x1c3RlclJvbGVCaW5kaW5nOgogICAgICAtIHJiYWMuYXV0aG9yaXphdGlvbi5rOHMuaW8vdjEKICAgICAgLSByYmFjLmF1dGhvcml6YXRpb24uazhzLmlvL3YxYmV0YTEKICAgIENvbXBvbmVudFN0YXR1czoKICAgICAgLSB2MQogICAgQ29uZmlnTWFwOgogICAgICAtIHYxCiAgICBDb250cm9sbGVyUmV2aXNpb246CiAgICAgIC0gYXBwcy92MQogICAgQ3JvbkpvYjoKICAgICAgLSBiYXRjaC92MWJldGExCiAgICAgIC0gYmF0Y2gvdjJhbHBoYTEKICAgIEN1c3RvbVJlc291cmNlRGVmaW5pdGlvbjoKICAgICAgLSBhcGlleHRlbnNpb25zLms4cy5pby92MQogICAgRGFlbW9uU2V0OgogICAgICAtIGFwcHMvdjEKICAgIERlcGxveW1lbnQ6CiAgICAgIC0gYXBwcy92MQogICAgRW5kcG9pbnRTbGljZToKICAgICAgLSBkaXNjb3ZlcnkuazhzLmlvL3YxYmV0YTEKICAgIEVuZHBvaW50czoKICAgICAgLSB2MQogICAgRXZlbnQ6CiAgICAgIC0gZXZlbnRzLms4cy5pby92MWJldGExCiAgICAgIC0gdjEKICAgIEhvcml6b250YWxQb2RBdXRvc2NhbGVyOgogICAgICAtIGF1dG9zY2FsaW5nL3YxCiAgICAgIC0gYXV0b3NjYWxpbmcvdjJiZXRhMQogICAgICAtIGF1dG9zY2FsaW5nL3YyYmV0YTIKICAgIEluZ3Jlc3M6CiAgICAgIC0gbmV0d29ya2luZy5rOHMuaW8vdjEKICAgICAgLSBuZXR3b3JraW5nLms4cy5pby92MWJldGExCiAgICAgIC0gZXh0ZW5zaW9ucy92MWJldGExCiAgICBJbmdyZXNzQ2xhc3M6CiAgICAgIC0gbmV0d29ya2luZy5rOHMuaW8vdjEKICAgICAgLSBuZXR3b3JraW5nLms4cy5pby92MWJldGExCiAgICBKb2I6CiAgICAgIC0gYmF0Y2gvdjEKICAgIExlYXNlOgogICAgICAtIGNvb3JkaW5hdGlvbi5rOHMuaW8vdjFiZXRhMQogICAgICAtIGNvb3JkaW5hdGlvbi5rOHMuaW8vdjEKICAgIExpbWl0UmFuZ2U6CiAgICAgIC0gdjEKICAgIExvY2FsU3ViamVjdEFjY2Vzc1JldmlldzoKICAgICAgLSBhdXRob3JpemF0aW9uLms4cy5pby92MQogICAgICAtIGF1dGhvcml6YXRpb24uazhzLmlvL3YxYmV0YTEKICAgIE11dGF0aW5nV2ViaG9va0NvbmZpZ3VyYXRpb246CiAgICAgIC0gYWRtaXNzaW9ucmVnaXN0cmF0aW9uLms4cy5pby92MWJldGExCiAgICAgIC0gYWRtaXNzaW9ucmVnaXN0cmF0aW9uLms4cy5pby92MQogICAgTmFtZXNwYWNlOgogICAgICAtIHYxCiAgICBOZXR3b3JrUG9saWN5OgogICAgICAtIG5ldHdvcmtpbmcuazhzLmlvL3YxCiAgICBOb2RlOgogICAgICAtIHYxCiAgICBQZXJzaXN0ZW50Vm9sdW1lOgogICAgICAtIHYxCiAgICBQZXJzaXN0ZW50Vm9sdW1lQ2xhaW06CiAgICAgIC0gdjEKICAgIFBvZDoKICAgICAgLSB2MQogICAgUG9kRGlzcnVwdGlvbkJ1ZGdldDoKICAgICAgLSBwb2xpY3kvdjFiZXRhMQogICAgUG9kU2VjdXJpdHlQb2xpY3k6CiAgICAgIC0gcG9saWN5L3YxYmV0YTEKICAgIFBvZFRlbXBsYXRlOgogICAgICAtIHYxCiAgICBQcmlvcml0eUNsYXNzOgogICAgICAtIHNjaGVkdWxpbmcuazhzLmlvL3YxYmV0YTEKICAgICAgLSBzY2hlZHVsaW5nLms4cy5pby92MQogICAgUmVwbGljYVNldDoKICAgICAgLSBhcHBzL3YxCiAgICBSZXBsaWNhdGlvbkNvbnRyb2xsZXI6CiAgICAgIC0gdjEKICAgIFJlc291cmNlUXVvdGE6CiAgICAgIC0gdjEKICAgIFJvbGU6CiAgICAgIC0gcmJhYy5hdXRob3JpemF0aW9uLms4cy5pby92MQogICAgICAtIHJiYWMuYXV0aG9yaXphdGlvbi5rOHMuaW8vdjFiZXRhMQogICAgUm9sZUJpbmRpbmc6CiAgICAgIC0gcmJhYy5hdXRob3JpemF0aW9uLms4cy5pby92MQogICAgICAtIHJiYWMuYXV0aG9yaXphdGlvbi5rOHMuaW8vdjFiZXRhMQogICAgU2VjcmV0OgogICAgICAtIHYxCiAgICBTZWxmU3ViamVjdEFjY2Vzc1JldmlldzoKICAgICAgLSBhdXRob3JpemF0aW9uLms4cy5pby92MQogICAgICAtIGF1dGhvcml6YXRpb24uazhzLmlvL3YxYmV0YTEKICAgIFNlbGZTdWJqZWN0UnVsZXNSZXZpZXc6CiAgICAgIC0gYXV0aG9yaXphdGlvbi5rOHMuaW8vdjEKICAgICAgLSBhdXRob3JpemF0aW9uLms4cy5pby92MWJldGExCiAgICBTZXJ2aWNlOgogICAgICAtIHYxCiAgICBTZXJ2aWNlQWNjb3VudDoKICAgICAgLSB2MQogICAgU3RhdGVmdWxTZXQ6CiAgICAgIC0gYXBwcy92MQogICAgU3RvcmFnZUNsYXNzOgogICAgICAtIHN0b3JhZ2UuazhzLmlvL3YxCiAgICAgIC0gc3RvcmFnZS5rOHMuaW8vdjFiZXRhMQogICAgU3ViamVjdEFjY2Vzc1JldmlldzoKICAgICAgLSBhdXRob3JpemF0aW9uLms4cy5pby92MQogICAgICAtIGF1dGhvcml6YXRpb24uazhzLmlvL3YxYmV0YTEKICAgIFRva2VuUmV2aWV3OgogICAgICAtIGF1dGhlbnRpY2F0aW9uLms4cy5pby92MQogICAgICAtIGF1dGhlbnRpY2F0aW9uLms4cy5pby92MWJldGExCiAgICBWYWxpZGF0aW5nV2ViaG9va0NvbmZpZ3VyYXRpb246CiAgICAgIC0gYWRtaXNzaW9ucmVnaXN0cmF0aW9uLms4cy5pby92MWJldGExCiAgICAgIC0gYWRtaXNzaW9ucmVnaXN0cmF0aW9uLms4cy5pby92MQogICAgVm9sdW1lQXR0YWNobWVudDoKICAgICAgLSBzdG9yYWdlLms4cy5pby92MQogICAgICAtIHN0b3JhZ2UuazhzLmlvL3YxYmV0YTEKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABjbHVzdGVycy9vcGVuc2hpZnQueWFtbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAwNzY1ADAwMDAwMjQAMDAwMDAwMTUxNzMAMTQwNjQxMTEyNzYAMDE3NjYzACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyADAwYXNob2twb25rdW1hcgAAAAAAAAAAAAAAAAAAAAAAAABzdGFmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFwaVZlcnNpb246IG1vdmUya3ViZS5rb252ZXlvci5pby92MWFscGhhMQpraW5kOiBDbHVzdGVyTWV0YWRhdGEKbWV0YWRhdGE6IAogIG5hbWU6IE9wZW5zaGlmdApzcGVjOgogIHN0b3JhZ2VDbGFzc2VzOgogICAgLSBkZWZhdWx0CiAgYXBpS2luZFZlcnNpb25NYXA6CiAgICBBUElTZXJ2aWNlOgogICAgICAtIGFwaXJlZ2lzdHJhdGlvbi5rOHMuaW8vdjEKICAgICAgLSBhcGlyZWdpc3RyYXRpb24uazhzLmlvL3YxYmV0YTEKICAgIEFsZXJ0bWFuYWdlcjoKICAgICAgLSBtb25pdG9yaW5nLmNvcmVvcy5jb20vdjEKICAgIEFwcGxpZWRDbHVzdGVyUmVzb3VyY2VRdW90YToKICAgICAgLSBxdW90YS5vcGVuc2hpZnQuaW8vdjEKICAgIEJpbmFyeUJ1aWxkUmVxdWVzdE9wdGlvbnM6CiAgICAgIC0gYnVpbGQub3BlbnNoaWZ0LmlvL3YxCiAgICBCaW5kaW5nOgogICAgICAtIHYxCiAgICBCcm9rZXJUZW1wbGF0ZUluc3RhbmNlOgogICAgICAtIHRlbXBsYXRlLm9wZW5zaGlmdC5pby92MQogICAgQnVpbGQ6CiAgICAgIC0gYnVpbGQub3BlbnNoaWZ0LmlvL3YxCiAgICBCdWlsZENvbmZpZzoKICAgICAgLSBidWlsZC5vcGVuc2hpZnQuaW8vdjEKICAgIEJ1aWxkTG9nOgogICAgICAtIGJ1aWxkLm9wZW5zaGlmdC5pby92MQogICAgQnVpbGRSZXF1ZXN0OgogICAgICAtIGJ1aWxkLm9wZW5zaGlmdC5pby92MQogICAgQnVuZGxlOgogICAgICAtIGF1dG9tYXRpb25icm9rZXIuaW8vdjFhbHBoYTEKICAgIEJ1bmRsZUJpbmRpbmc6CiAgICAgIC0gYXV0b21hdGlvbmJyb2tlci5pby92MWFscGhhMQogICAgQnVuZGxlSW5zdGFuY2U6CiAgICAgIC0gYXV0b21hdGlvbmJyb2tlci5pby92MWFscGhhMQogICAgQ2VydGlmaWNhdGVTaWduaW5nUmVxdWVzdDoKICAgICAgLSBjZXJ0aWZpY2F0ZXMuazhzLmlvL3YxYmV0YTEKICAgIENsdXN0ZXJOZXR3b3JrOgogICAgICAtIG5ldHdvcmsub3BlbnNoaWZ0LmlvL3YxCiAgICBDbHVzdGVyUmVzb3VyY2VRdW90YToKICAgICAgLSBxdW90YS5vcGVuc2hpZnQuaW8vdjEKICAgIENsdXN0ZXJSb2xlOgogICAgICAtIHJiYWMuYXV0aG9yaXphdGlvbi5rOHMuaW8vdjEKICAgICAgLSByYmFjLmF1dGhvcml6YXRpb24uazhzLmlvL3YxYmV0YTEKICAgICAgLSBhdXRob3JpemF0aW9uLm9wZW5zaGlmdC5pby92MQogICAgQ2x1c3RlclJvbGVCaW5kaW5nOgogICAgICAtIHJiYWMuYXV0aG9yaXphdGlvbi5rOHMuaW8vdjEKICAgICAgLSByYmFjLmF1dGhvcml6YXRpb24uazhzLmlvL3YxYmV0YTEKICAgICAgLSBhdXRob3JpemF0aW9uLm9wZW5zaGlmdC5pby92MQogICAgQ2x1c3RlclNlcnZpY2VCcm9rZXI6CiAgICAgIC0gc2VydmljZWNhdGFsb2cuazhzLmlvL3YxYmV0YTEKICAgIENsdXN0ZXJTZXJ2aWNlQ2xhc3M6CiAgICAgIC0gc2VydmljZWNhdGFsb2cuazhzLmlvL3YxYmV0YTEKICAgIENsdXN0ZXJTZXJ2aWNlUGxhbjoKICAgICAgLSBzZXJ2aWNlY2F0YWxvZy5rOHMuaW8vdjFiZXRhMQogICAgQ29tcG9uZW50U3RhdHVzOgogICAgICAtIHYxCiAgICBDb25maWdNYXA6CiAgICAgIC0gdjEKICAgIENvbnRyb2xsZXJSZXZpc2lvbjoKICAgICAgLSBhcHBzL3YxCiAgICAgIC0gYXBwcy92MWJldGExCiAgICAgIC0gYXBwcy92MWJldGEyCiAgICBDcm9uSm9iOgogICAgICAtIGJhdGNoL3YxYmV0YTEKICAgIEN1c3RvbVJlc291cmNlRGVmaW5pdGlvbjoKICAgICAgLSBhcGlleHRlbnNpb25zLms4cy5pby92MWJldGExCiAgICBEYWVtb25TZXQ6CiAgICAgIC0gYXBwcy92MQogICAgICAtIGFwcHMvdjFiZXRhMgogICAgICAtIGV4dGVuc2lvbnMvdjFiZXRhMQogICAgRGVwbG95bWVudDoKICAgICAgLSBhcHBzL3YxCiAgICAgIC0gYXBwcy92MWJldGExCiAgICAgIC0gYXBwcy92MWJldGEyCiAgICAgIC0gZXh0ZW5zaW9ucy92MWJldGExCiAgICBEZXBsb3ltZW50Q29uZmlnOgogICAgICAtIGFwcHMub3BlbnNoaWZ0LmlvL3YxCiAgICBEZXBsb3ltZW50Q29uZmlnUm9sbGJhY2s6CiAgICAgIC0gYXBwcy5vcGVuc2hpZnQuaW8vdjEKICAgIERlcGxveW1lbnRMb2c6CiAgICAgIC0gYXBwcy5vcGVuc2hpZnQuaW8vdjEKICAgIERlcGxveW1lbnRSZXF1ZXN0OgogICAgICAtIGFwcHMub3BlbnNoaWZ0LmlvL3YxCiAgICBEZXBsb3ltZW50Um9sbGJhY2s6CiAgICAgIC0gYXBwcy92MWJldGExCiAgICAgIC0gZXh0ZW5zaW9ucy92MWJldGExCiAgICBFZ3Jlc3NOZXR3b3JrUG9saWN5OgogICAgICAtIG5ldHdvcmsub3BlbnNoaWZ0LmlvL3YxCiAgICBFbmRwb2ludHM6CiAgICAgIC0gdjEKICAgIEV2ZW50OgogICAgICAtIGV2ZW50cy5rOHMuaW8vdjFiZXRhMQogICAgICAtIHYxCiAgICBFdmljdGlvbjoKICAgICAgLSB2MQogICAgR3JvdXA6CiAgICAgIC0gdXNlci5vcGVuc2hpZnQuaW8vdjEKICAgIEhvcml6b250YWxQb2RBdXRvc2NhbGVyOgogICAgICAtIGF1dG9zY2FsaW5nL3YxCiAgICAgIC0gYXV0b3NjYWxpbmcvdjJiZXRhMQogICAgSG9zdFN1Ym5ldDoKICAgICAgLSBuZXR3b3JrLm9wZW5zaGlmdC5pby92MQogICAgSWRlbnRpdHk6CiAgICAgIC0gdXNlci5vcGVuc2hpZnQuaW8vdjEKICAgIEltYWdlOgogICAgICAtIGltYWdlLm9wZW5zaGlmdC5pby92MQogICAgSW1hZ2VTaWduYXR1cmU6CiAgICAgIC0gaW1hZ2Uub3BlbnNoaWZ0LmlvL3YxCiAgICBJbWFnZVN0cmVhbToKICAgICAgLSBpbWFnZS5vcGVuc2hpZnQuaW8vdjEKICAgIEltYWdlU3RyZWFtSW1hZ2U6CiAgICAgIC0gaW1hZ2Uub3BlbnNoaWZ0LmlvL3YxCiAgICBJbWFnZVN0cmVhbUltcG9ydDoKICAgICAgLSBpbWFnZS5vcGVuc2hpZnQuaW8vdjEKICAgIEltYWdlU3RyZWFtTGF5ZXJzOgogICAgICAtIGltYWdlLm9wZW5zaGlmdC5pby92MQogICAgSW1hZ2VTdHJlYW1NYXBwaW5nOgogICAgICAtIGltYWdlLm9wZW5zaGlmdC5pby92MQogICAgSW1hZ2VTdHJlYW1UYWc6CiAgICAgIC0gaW1hZ2Uub3BlbnNoaWZ0LmlvL3YxCiAgICBJbmdyZXNzOgogICAgICAtIGV4dGVuc2lvbnMvdjFiZXRhMQogICAgSm9iOgogICAgICAtIGJhdGNoL3YxCiAgICBMaW1pdFJhbmdlOgogICAgICAtIHYxCiAgICBMb2NhbFJlc291cmNlQWNjZXNzUmV2aWV3OgogICAgICAtIGF1dGhvcml6YXRpb24ub3BlbnNoaWZ0LmlvL3YxCiAgICBMb2NhbFN1YmplY3RBY2Nlc3NSZXZpZXc6CiAgICAgIC0gYXV0aG9yaXphdGlvbi5rOHMuaW8vdjEKICAgICAgLSBhdXRob3JpemF0aW9uLms4cy5pby92MWJldGExCiAgICAgIC0gYXV0aG9yaXphdGlvbi5vcGVuc2hpZnQuaW8vdjEKICAgIE11dGF0aW5nV2ViaG9va0NvbmZpZ3VyYXRpb246CiAgICAgIC0gYWRtaXNzaW9ucmVnaXN0cmF0aW9uLms4cy5pby92MWJldGExCiAgICBOYW1lc3BhY2U6CiAgICAgIC0gdjEKICAgIE5ldE5hbWVzcGFjZToKICAgICAgLSBuZXR3b3JrLm9wZW5zaGlmdC5pby92MQogICAgTmV0d29ya1BvbGljeToKICAgICAgLSBuZXR3b3JraW5nLms4cy5pby92MQogICAgICAtIGV4dGVuc2lvbnMvdjFiZXRhMQogICAgTm9kZToKICAgICAgLSB2MQogICAgT0F1dGhBY2Nlc3NUb2tlbjoKICAgICAgLSBvYXV0aC5vcGVuc2hpZnQuaW8vdjEKICAgIE9BdXRoQXV0aG9yaXplVG9rZW46CiAgICAgIC0gb2F1dGgub3BlbnNoaWZ0LmlvL3YxCiAgICBPQXV0aENsaWVudDoKICAgICAgLSBvYXV0aC5vcGVuc2hpZnQuaW8vdjEKICAgIE9BdXRoQ2xpZW50QXV0aG9yaXphdGlvbjoKICAgICAgLSBvYXV0aC5vcGVuc2hpZnQuaW8vdjEKICAgIFBlcnNpc3RlbnRWb2x1bWU6CiAgICAgIC0gdjEKICAgIFBlcnNpc3RlbnRWb2x1bWVDbGFpbToKICAgICAgLSB2MQogICAgUG9kOgogICAgICAtIHYxCiAgICBQb2REaXNydXB0aW9uQnVkZ2V0OgogICAgICAtIHBvbGljeS92MWJldGExCiAgICBQb2RTZWN1cml0eVBvbGljeToKICAgICAgLSBwb2xpY3kvdjFiZXRhMQogICAgICAtIGV4dGVuc2lvbnMvdjFiZXRhMQogICAgUG9kU2VjdXJpdHlQb2xpY3lSZXZpZXc6CiAgICAgIC0gc2VjdXJpdHkub3BlbnNoaWZ0LmlvL3YxCiAgICBQb2RTZWN1cml0eVBvbGljeVNlbGZTdWJqZWN0UmV2aWV3OgogICAgICAtIHNlY3VyaXR5Lm9wZW5zaGlmdC5pby92MQogICAgUG9kU2VjdXJpdHlQb2xpY3lTdWJqZWN0UmV2aWV3OgogICAgICAtIHNlY3VyaXR5Lm9wZW5zaGlmdC5pby92MQogICAgUG9kVGVtcGxhdGU6CiAgICAgIC0gdjEKICAgIFByaW9yaXR5Q2xhc3M6CiAgICAgIC0gc2NoZWR1bGluZy5rOHMuaW8vdjFiZXRhMQogICAgUHJvamVjdDoKICAgICAgLSBwcm9qZWN0Lm9wZW5zaGlmdC5pby92MQogICAgUHJvamVjdFJlcXVlc3Q6CiAgICAgIC0gcHJvamVjdC5vcGVuc2hpZnQuaW8vdjEKICAgIFByb21ldGhldXM6CiAgICAgIC0gbW9uaXRvcmluZy5jb3Jlb3MuY29tL3YxCiAgICBQcm9tZXRoZXVzUnVsZToKICAgICAgLSBtb25pdG9yaW5nLmNvcmVvcy5jb20vdjEKICAgIFJhbmdlQWxsb2NhdGlvbjoKICAgICAgLSBzZWN1cml0eS5vcGVuc2hpZnQuaW8vdjEKICAgIFJlcGxpY2FTZXQ6CiAgICAgIC0gYXBwcy92MQogICAgICAtIGFwcHMvdjFiZXRhMgogICAgICAtIGV4dGVuc2lvbnMvdjFiZXRhMQogICAgUmVwbGljYXRpb25Db250cm9sbGVyOgogICAgICAtIHYxCiAgICBSZXBsaWNhdGlvbkNvbnRyb2xsZXJEdW1teToKICAgICAgLSBleHRlbnNpb25zL3YxYmV0YTEKICAgIFJlc291cmNlQWNjZXNzUmV2aWV3OgogICAgICAtIGF1dGhvcml6YXRpb24ub3BlbnNoaWZ0LmlvL3YxCiAgICBSZXNvdXJjZVF1b3RhOgogICAgICAtIHYxCiAgICBSb2xlOgogICAgICAtIHJiYWMuYXV0aG9yaXphdGlvbi5rOHMuaW8vdjEKICAgICAgLSByYmFjLmF1dGhvcml6YXRpb24uazhzLmlvL3YxYmV0YTEKICAgICAgLSBhdXRob3JpemF0aW9uLm9wZW5zaGlmdC5pby92MQogICAgUm9sZUJpbmRpbmc6CiAgICAgIC0gcmJhYy5hdXRob3JpemF0aW9uLms4cy5pby92MQogICAgICAtIHJiYWMuYXV0aG9yaXphdGlvbi5rOHMuaW8vdjFiZXRhMQogICAgICAtIGF1dGhvcml6YXRpb24ub3BlbnNoaWZ0LmlvL3YxCiAgICBSb2xlQmluZGluZ1Jlc3RyaWN0aW9uOgogICAgICAtIGF1dGhvcml6YXRpb24ub3BlbnNoaWZ0LmlvL3YxCiAgICBSb3V0ZToKICAgICAgLSByb3V0ZS5vcGVuc2hpZnQuaW8vdjEKICAgIFNjYWxlOgogICAgICAtIGFwcHMvdjEKICAgICAgLSBhcHBzL3YxYmV0YTEKICAgICAgLSBhcHBzL3YxYmV0YTIKICAgICAgLSBleHRlbnNpb25zL3YxYmV0YTEKICAgICAgLSB2MQogICAgICAtIGFwcHMub3BlbnNoaWZ0LmlvL3YxCiAgICBTZWNyZXQ6CiAgICAgIC0gdjEKICAgIFNlY3JldExpc3Q6CiAgICAgIC0gaW1hZ2Uub3BlbnNoaWZ0LmlvL3YxCiAgICBTZWN1cml0eUNvbnRleHRDb25zdHJhaW50czoKICAgICAgLSBzZWN1cml0eS5vcGVuc2hpZnQuaW8vdjEKICAgICAgLSB2MQogICAgU2VsZlN1YmplY3RBY2Nlc3NSZXZpZXc6CiAgICAgIC0gYXV0aG9yaXphdGlvbi5rOHMuaW8vdjEKICAgICAgLSBhdXRob3JpemF0aW9uLms4cy5pby92MWJldGExCiAgICBTZWxmU3ViamVjdFJ1bGVzUmV2aWV3OgogICAgICAtIGF1dGhvcml6YXRpb24uazhzLmlvL3YxCiAgICAgIC0gYXV0aG9yaXphdGlvbi5rOHMuaW8vdjFiZXRhMQogICAgICAtIGF1dGhvcml6YXRpb24ub3BlbnNoaWZ0LmlvL3YxCiAgICBTZXJ2aWNlOgogICAgICAtIHYxCiAgICBTZXJ2aWNlQWNjb3VudDoKICAgICAgLSB2MQogICAgU2VydmljZUJpbmRpbmc6CiAgICAgIC0gc2VydmljZWNhdGFsb2cuazhzLmlvL3YxYmV0YTEKICAgIFNlcnZpY2VCcm9rZXI6CiAgICAgIC0gc2VydmljZWNhdGFsb2cuazhzLmlvL3YxYmV0YTEKICAgIFNlcnZpY2VDbGFzczoKICAgICAgLSBzZXJ2aWNlY2F0YWxvZy5rOHMuaW8vdjFiZXRhMQogICAgU2VydmljZUluc3RhbmNlOgogICAgICAtIHNlcnZpY2VjYXRhbG9nLms4cy5pby92MWJldGExCiAgICBTZXJ2aWNlTW9uaXRvcjoKICAgICAgLSBtb25pdG9yaW5nLmNvcmVvcy5jb20vdjEKICAgIFNlcnZpY2VQbGFuOgogICAgICAtIHNlcnZpY2VjYXRhbG9nLms4cy5pby92MWJldGExCiAgICBTdGF0ZWZ1bFNldDoKICAgICAgLSBhcHBzL3YxCiAgICAgIC0gYXBwcy92MWJldGExCiAgICAgIC0gYXBwcy92MWJldGEyCiAgICBTdG9yYWdlQ2xhc3M6CiAgICAgIC0gc3RvcmFnZS5rOHMuaW8vdjEKICAgICAgLSBzdG9yYWdlLms4cy5pby92MWJldGExCiAgICBTdWJqZWN0QWNjZXNzUmV2aWV3OgogICAgICAtIGF1dGhvcml6YXRpb24uazhzLmlvL3YxCiAgICAgIC0gYXV0aG9yaXphdGlvbi5rOHMuaW8vdjFiZXRhMQogICAgICAtIGF1dGhvcml6YXRpb24ub3BlbnNoaWZ0LmlvL3YxCiAgICBTdWJqZWN0UnVsZXNSZXZpZXc6CiAgICAgIC0gYXV0aG9yaXphdGlvbi5vcGVuc2hpZnQuaW8vdjEKICAgIFRlbXBsYXRlOgogICAgICAtIHRlbXBsYXRlLm9wZW5zaGlmdC5pby92MQogICAgVGVtcGxhdGVJbnN0YW5jZToKICAgICAgLSB0ZW1wbGF0ZS5vcGVuc2hpZnQuaW8vdjEKICAgIFRva2VuUmV2aWV3OgogICAgICAtIGF1dGhlbnRpY2F0aW9uLms4cy5pby92MQogICAgICAtIGF1dGhlbnRpY2F0aW9uLms4cy5pby92MWJldGExCiAgICBVc2VyOgogICAgICAtIHVzZXIub3BlbnNoaWZ0LmlvL3YxCiAgICBVc2VySWRlbnRpdHlNYXBwaW5nOgogICAgICAtIHVzZXIub3BlbnNoaWZ0LmlvL3YxCiAgICBWYWxpZGF0aW5nV2ViaG9va0NvbmZpZ3VyYXRpb246CiAgICAgIC0gYWRtaXNzaW9ucmVnaXN0cmF0aW9uLms4cy5pby92MWJldGExCiAgICBWb2x1bWVBdHRhY2htZW50OgogICAgICAtIHN0b3JhZ2UuazhzLmlvL3YxYmV0YTEKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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ICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIwojICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIwojICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgojICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgojIEJ1aWxkIEFwcApGUk9NIHJlZ2lzdHJ5LmFjY2Vzcy5yZWRoYXQuY29tL3ViaTgvdWJpOmxhdGVzdCBBUyBidWlsZF9iYXNlCldPUktESVIgL3RlbXAKRU5WIEdPUEFUSD0vZ28KRU5WIFBBVEg9JEdPUEFUSC9iaW46L3Vzci9sb2NhbC9nby9iaW46L3Vzci9sb2NhbC9zYmluOi91c3IvbG9jYWwvYmluOi91c3Ivc2JpbjovdXNyL2Jpbjovc2JpbjovYmluClJVTiBjdXJsIC1vIGdvLnRhci5neiBodHRwczovL2RsLmdvb2dsZS5jb20vZ28vZ28xLjE2LmxpbnV4LWFtZDY0LnRhci5negpSVU4gdGFyIC14emYgZ28udGFyLmd6ICYmIG12IGdvIC91c3IvbG9jYWwvClJVTiB5dW0gaW5zdGFsbCBnaXQgbWFrZSAteSAKUlVOIG1rZGlyIC1wICRHT1BBVEgvc3JjICRHT1BBVEgvYmluICYmIGNobW9kIC1SIDc3NyAkR09QQVRICldPUktESVIgL3t7IC5hcHBfbmFtZSB9fQpDT1BZIC4gLgpSVU4gZ28gYnVpbGQgLW8ge3sgLmFwcF9uYW1lIH19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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjICAgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDIwCiMKIyAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwojICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgojICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKIyAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKRlJPTSByZWdpc3RyeS5hY2Nlc3MucmVkaGF0LmNvbS9qYm9zcy1lYXAtNi9lYXA2NC1vcGVuc2hpZnQ6MS45LTMyLjE2MDQ1MDIyNzQKQ09QWSB7eyAud2FyX3BhdGggfX0gL29wdC9lYXAvc3RhbmRhbG9uZS9kZXBsb3ltZW50cy8KRVhQT1NFIHt7IC5wb3J0IH19CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCkZST00gcmVnaXN0cnkuYWNjZXNzLnJlZGhhdC5jb20vdWJpOC91YmktbWluaW1hbDo4LjMtMjAxClJVTiBtaWNyb2RuZiB1cGRhdGUgJiYgbWljcm9kbmYgaW5zdGFsbCAteSBqYXZhLTExLW9wZW5qZGstZGV2ZWwgd2dldCB0YXIgJiYgbWljcm9kbmYgY2xlYW4gYWxsCldPUktESVIgL3Vzci9sb2NhbApSVU4gd2dldCBodHRwczovL2Rvd25sb2Fkcy5hcGFjaGUub3JnL3RvbWNhdC90b21jYXQtOS92OS4wLjM5L2Jpbi9hcGFjaGUtdG9tY2F0LTkuMC4zOS50YXIuZ3ogJiYgdGFyIC16eGYgYXBhY2hlLXRvbWNhdC05LjAuMzkudGFyLmd6ICYmIHJtIC1mIGFwYWNoZS10b21jYXQtOS4wLjM5LnRhci5neiAmJiBtdiBhcGFjaGUtdG9tY2F0LTkuMC4zOSB0b21jYXQ5ClJVTiB1c2VyYWRkIC1yIHRvbWNhdCAmJiBjaG93biAtUiB0b21jYXQ6dG9tY2F0IHRvbWNhdDkKRU5WIENBVEFMSU5BX1BJRD0nL3Vzci9sb2NhbC90b21jYXQ5L3RlbXAvdG9tY2F0LnBpZCcgQ0FUQUxJTkFfSE9NRT0nL3Vzci9sb2NhbC90b21jYXQ5JyBDQVRBTElOQV9CQVNFPScvdXNyL2xvY2FsL3RvbWNhdDknCkNPUFkgLS1jaG93bj10b21jYXQ6dG9tY2F0IHt7IC53YXJfcGF0aCB9fSAiJENBVEFMSU5BX0JBU0UiL3dlYmFwcHMvClVTRVIgdG9tY2F0OnRvbWNhdApFWFBPU0Uge3sgLnBvcnQgfX0KQ01EIFsgIi91c3IvbG9jYWwvdG9tY2F0OS9iaW4vY2F0YWxpbmEuc2giLCAicnVuIiBdCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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IwojICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgojICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgpGUk9NIHJlZ2lzdHJ5LmFjY2Vzcy5yZWRoYXQuY29tL3ViaTgvdWJpOmxhdGVzdCBBUyBidWlsZF9iYXNlClJVTiB5dW0gaW5zdGFsbCAteSBqYXZhLTEuOC4wLW9wZW5qZGstZGV2ZWwKUlVOIHl1bSBpbnN0YWxsIC15IHdnZXQKUlVOIHl1bSBpbnN0YWxsIC15IHVuemlwClJVTiB3Z2V0IGh0dHBzOi8vbWlycm9ycy5lc3RvaW50ZXJuZXQuaW4vYXBhY2hlLy9hbnQvYmluYXJpZXMvYXBhY2hlLWFudC0xLjEwLjgtYmluLnppcCAtUCAvdG1wClJVTiB1bnppcCAtZCAvb3B0L2FwYWNoZS1hbnQgL3RtcC9hcGFjaGUtYW50LTEuMTAuOC1iaW4uemlwCkVOViBQQVRIPSIkUEFUSDovb3B0L2FwYWNoZS1hbnQvYXBhY2hlLWFudC0xLjEwLjgvYmluLyIKQ09QWSAuIC97eyAuYXBwX25hbWUgfX0KV09SS0RJUiAve3sgLmFwcF9uYW1lIH19ClJVTiB7eyAuYW50X2NtZCB9fQoKRlJPTSByZWdpc3RyeS5hY2Nlc3MucmVkaGF0LmNvbS9qYm9zcy1lYXAtNi9lYXA2NC1vcGVuc2hpZnQ6bGF0ZXN0CkVYUE9TRSB7eyAucG9ydCB9fQpDT1BZIC0tZnJvbT1idWlsZF9iYXNlIC97eyAuYXBwX25hbWUgfX0vb3V0cHV0L3t7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IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwojICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgojICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKIyAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKIyBCdWlsZCBBcHAKRlJPTSByZWdpc3RyeS5hY2Nlc3MucmVkaGF0LmNvbS91Ymk4L3ViaTpsYXRlc3QgQVMgYnVpbGRfYmFzZQpSVU4geXVtIGluc3RhbGwgLXkgamF2YS0xLjguMC1vcGVuamRrLWRldmVsClJVTiB5dW0gaW5zdGFsbCAteSB3Z2V0ClJVTiB5dW0gaW5zdGFsbCAteSB1bnppcApSVU4gd2dldCBodHRwczovL3NlcnZpY2VzLmdyYWRsZS5vcmcvZGlzdHJpYnV0aW9ucy9ncmFkbGUtNi42LWJpbi56aXAgLVAgL3RtcApSVU4gdW56aXAgLWQgL29wdC9ncmFkbGUgL3RtcC9ncmFkbGUtNi42LWJpbi56aXAKRU5WIFBBVEg9IiRQQVRIOi9vcHQvZ3JhZGxlL2dyYWRsZS02LjYvYmluLyIKQ09QWSAuIC97eyAuYXBwX25hbWUgfX0KV09SS0RJUiAve3sgLmFwcF9uYW1lIH19ClJVTiBncmFkbGUgYnVpbGQKCiMgUnVuIEFwcApGUk9NIHJlZ2lzdHJ5LmFjY2Vzcy5yZWRoYXQuY29tL2pib3NzLWVhcC02L2VhcDY0LW9wZW5zaGlmdDpsYXRlc3QKRVhQT1NFIHt7IC5wb3J0IH19CkNPUFkgLS1mcm9tPWJ1aWxkX2Jhc2UgL3t7IC5hcHBfbmFtZSB9fS9idWlsZC9saWJzLyogL29wdC9lYXAvc3RhbmRhbG9uZS9kZXBsb3ltZW50cy8KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0cmFuc2Zvcm1lcnMvZXhlY3V0YWJsZS9kb2NrZXJmaWxlL2phdmFtYXZlbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDc1NQAwMDAwNzY1ADAwMDAwMjQAMDAwMDAwMDAwMDAAMTQwNjQxMTEyNzYAMDIzNzczACA1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyADAwYXNob2twb25rdW1hcgAAAAAAAAAAAAAAAAAAAAAAAABzdGFmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRyYW5zZm9ybWVycy9leGVjdXRhYmxlL2RvY2tlcmZpbGUvamF2YW1hdmVuL2phdmFtYXZlbi55YW1sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDA3NjUAMDAwMDAyNAAwMDAwMDAwMDQwNgAxNDA2NDExMTI3NgAwMjY3MDYAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIAMDBhc2hva3Bvbmt1bWFyAAAAAAAAAAAAAAAAAAAAAAAAAHN0YWZmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYXBpVmVyc2lvbjogbW92ZTJrdWJlLmtvbnZleW9yLmlvL3YxYWxwaGExCmtpbmQ6IFRyYW5zZm9ybWVyCm1ldGFkYXRhOgogIG5hbWU6IEphdmEtbWF2ZW4Kc3BlYzoKICBtb2RlOiAiQ29udGFpbmVyIgogIGNsYXNzOiAiU2ltcGxlRXhlY3V0YWJsZSIKICBnZW5lcmF0ZXM6IAogICAgLSAiRG9ja2VyZmlsZSIKICBleGNsdXNpdmU6IAogICAgLSAiRG9ja2VyZmlsZSIKICBjb25maWc6CiAgICBkaXJlY3RvcnlEZXRlY3RDTUQ6IFsiLi9tMmtkZXRlY3Quc2giXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0cmFuc2Zvcm1lcnMvZXhlY3V0YWJsZS9kb2NrZXJmaWxlL2phdmFtYXZlbi9tMmtkZXRlY3Quc2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDc1NQAwMDAwNzY1ADAwMDAwMjQAMDAwMDAwMDE0MTQAMTQwNjQxMTEyNzYAMDI2MjczACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyADAwYXNob2twb25rdW1hcgAAAAAAAAAAAAAAAAAAAAAAAABzdGFmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMhL3Vzci9iaW4vZW52IGJhc2gKIyAgIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAyMAojCiMgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAojCiMgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAojICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCiMgVGFrZXMgYXMgaW5wdXQgdGhlIHNvdXJjZSBkaXJlY3RvcnkgYW5kIHJldHVybnMgZXJyb3IgaWYgaXQgaXMgbm90IGZpdAppZiBbICEgLWYgIiQxL3BvbS54bWwiIF07IHRoZW4KICAgZXhpdCAxCmZpCgplY2hvICd7InBvcnQiOiA4MDgwLCAiYXBwX25hbWUiOiAiYXBwIn0nCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0cmFuc2Zvcm1lcnMvZXhlY3V0YWJsZS9kb2NrZXJmaWxlL2phdmFtYXZlbi90ZW1wbGF0ZXMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDc1NQAwMDAwNzY1ADAwMDAwMjQAMDAwMDAwMDAwMDAAMTQwNjQxMTEyNzYAMDI1NzcxACA1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyADAwYXNob2twb25rdW1hcgAAAAAAAAAAAAAAAAAAAAAAAABzdGFmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRyYW5zZm9ybWVycy9leGVjdXRhYmxlL2RvY2tlcmZpbGUvamF2YW1hdmVuL3RlbXBsYXRlcy9Eb2NrZXJmaWxlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDA3NjUAMDAwMDAyNAAwMDAwMDAwMTczNAAxNDA2NDExMTI3NgAwMzAwNDcAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIAMDBhc2hva3Bvbmt1bWFyAAAAAAAAAAAAAAAAAAAAAAAAAHN0YWZmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIyAgIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAyMAojCiMgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAojCiMgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAojICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCiMgQnVpbGQgQXBwCkZST00gcmVnaXN0cnkuYWNjZXNzLnJlZGhhdC5jb20vdWJpOC91Ymk6bGF0ZXN0IEFTIGJ1aWxkX2Jhc2UKUlVOIHl1bSBpbnN0YWxsIC15IGphdmEtMS44LjAtb3Blbmpkay1kZXZlbApSVU4geXVtIGluc3RhbGwgLXkgbWF2ZW4KQ09QWSAuIC97eyAuYXBwX25hbWUgfX0KV09SS0RJUiAve3sgLmFwcF9uYW1lIH19ClJVTiBtdm4gcGFja2FnZQoKIyBSdW4gQXBwCkZST00gcmVnaXN0cnkuYWNjZXNzLnJlZGhhdC5jb20vamJvc3MtZWFwLTYvZWFwNjQtb3BlbnNoaWZ0OmxhdGVzdApFWFBPU0Uge3sgLnBvcnQgfX0KQ09QWSAtLWZyb209YnVpbGRfYmFzZSAve3sgLmFwcF9uYW1lIH19L3RhcmdldC8qIC9vcHQvZWFwL3N0YW5kYWxvbmUvZGVwbG95bWVudHMvCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRyYW5zZm9ybWVycy9leGVjdXRhYmxlL2RvY2tlcmZpbGUvbm9kZWpzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNzU1ADAwMDA3NjUAMDAwMDAyNAAwMDAwMDAwMDAwMAAxNDA2NDExMTI3NgAwMjMzMDUAIDUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIAMDBhc2hva3Bvbmt1bWFyAAAAAAAAAAAAAAAAAAAAAAAAAHN0YWZmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdHJhbnNmb3JtZXJzL2V4ZWN1dGFibGUvZG9ja2VyZmlsZS9ub2RlanMvbTJrZGV0ZWN0LnNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NTUAMDAwMDc2NQAwMDAwMDI0ADAwMDAwMDAxNDIxADE0MDY0MTExMjc2ADAyNTYwMwAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhcgAwMGFzaG9rcG9ua3VtYXIAAAAAAAAAAAAAAAAAAAAAAAAAc3RhZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIS91c3IvYmluL2VudiBiYXNoCiMgICBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMjAKIwojICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiMgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIwojICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIwojICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgojICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgojIFRha2VzIGFzIGlucHV0IHRoZSBzb3VyY2UgZGlyZWN0b3J5IGFuZCByZXR1cm5zIGVycm9yIGlmIGl0IGlzIG5vdCBmaXQKaWYgWyAhIC1mICIkMS9wYWNrYWdlLmpzb24iIF07IHRoZW4KICAgZXhpdCAxCmZpCgplY2hvICd7InBvcnQiOiA4MDgwLCAiYXBwX25hbWUiOiAiYXBwIn0nCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdHJhbnNmb3JtZXJzL2V4ZWN1dGFibGUvZG9ja2VyZmlsZS9ub2RlanMvbm9kZWpzLnlhbWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAwMDc2NQAwMDAwMDI0ADAwMDAwMDAwNDAyADE0MDY0MTExMjc2ADAyNTUyNgAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhcgAwMGFzaG9rcG9ua3VtYXIAAAAAAAAAAAAAAAAAAAAAAAAAc3RhZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhcGlWZXJzaW9uOiBtb3ZlMmt1YmUua29udmV5b3IuaW8vdjFhbHBoYTEKa2luZDogVHJhbnNmb3JtZXIKbWV0YWRhdGE6CiAgbmFtZTogTm9kZWpzCnNwZWM6CiAgbW9kZTogIkNvbnRhaW5lciIKICBjbGFzczogIlNpbXBsZUV4ZWN1dGFibGUiCiAgZ2VuZXJhdGVzOiAKICAgIC0gIkRvY2tlcmZpbGUiCiAgZXhjbHVzaXZlOiAKICAgIC0gIkRvY2tlcmZpbGUiCiAgY29uZmlnOgogICAgZGlyZWN0b3J5RGV0ZWN0Q01EOiBbIi4vbTJrZGV0ZWN0LnNoIl0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRyYW5zZm9ybWVycy9leGVjdXRhYmxlL2RvY2tlcmZpbGUvbm9kZWpzL3RlbXBsYXRlcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNzU1ADAwMDA3NjUAMDAwMDAyNAAwMDAwMDAwMDAwMAAxNDA2NDExMTI3NgAwMjUzMDMAIDUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIAMDBhc2hva3Bvbmt1bWFyAAAAAAAAAAAAAAAAAAAAAAAAAHN0YWZmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdHJhbnNmb3JtZXJzL2V4ZWN1dGFibGUvZG9ja2VyZmlsZS9ub2RlanMvdGVtcGxhdGVzL0RvY2tlcmZpbGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAwMDc2NQAwMDAwMDI0ADAwMDAwMDAxMzEwADE0MDY0MTExMjc2ADAyNzM0NwAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhcgAwMGFzaG9rcG9ua3VtYXIAAAAAAAAAAAAAAAAAAAAAAAAAc3RhZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjICAgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDIwCiMKIyAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwojICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgojICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKIyAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKRlJPTSByZWdpc3RyeS5hY2Nlc3MucmVkaGF0LmNvbS91Ymk4L25vZGVqcy0xMgpBREQgLiAuClJVTiBucG0gaW5zdGFsbApFWFBPU0Uge3sgLnBvcnQgfX0KQ01EIG5wbSBydW4gLWQgc3RhcnQKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdHJhbnNmb3JtZXJzL2V4ZWN1dGFibGUvZG9ja2VyZmlsZS9waHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NTUAMDAwMDc2NQAwMDAwMDI0ADAwMDAwMDAwMDAwADE0MDY0MTExMjc2ADAyMjYxMgAgNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhcgAwMGFzaG9rcG9ua3VtYXIAAAAAAAAAAAAAAAAAAAAAAAAAc3RhZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0cmFuc2Zvcm1lcnMvZXhlY3V0YWJsZS9kb2NrZXJmaWxlL3BocC9tMmtkZXRlY3Quc2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDc1NQAwMDAwNzY1ADAwMDAwMjQAMDAwMDAwMDE1NjAAMTQwNjQxMTEyNzYAMDI1MTE0ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyADAwYXNob2twb25rdW1hcgAAAAAAAAAAAAAAAAAAAAAAAABzdGFmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMhL3Vzci9iaW4vZW52IGJhc2gKIyAgIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAyMAojCiMgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAojCiMgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAojICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCiMgVGFrZXMgYXMgaW5wdXQgdGhlIHNvdXJjZSBmb2xkZXIgYW5kIHJldHVybnMgZXJyb3IgaWYgaXQgaXMgbm90IGZpdApCQVNFX0RJUj0kMQoKZm91bmQ9JChmaW5kICIkQkFTRV9ESVIiLy4gLW5hbWUgIioucGhwIiAtcHJpbnQgLXF1aXQgfCB3YyAtbCkKCmlmIFsgISAiJGZvdW5kIiAtZXEgMSBdOyB0aGVuCiAgIGV4aXQgMQpmaQoKZWNobyAneyJwb3J0IjogODA4MCwgImJpbmRpbmciOiAiMC4wLjAuMDo4MDgwIiwgImFwcF9uYW1lIjogImFwcCJ9JwoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0cmFuc2Zvcm1lcnMvZXhlY3V0YWJsZS9kb2NrZXJmaWxlL3BocC9waHAueWFtbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAwNzY1ADAwMDAwMjQAMDAwMDAwMDAzNzcAMTQwNjQxMTEyNzYAMDI0MzUzACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyADAwYXNob2twb25rdW1hcgAAAAAAAAAAAAAAAAAAAAAAAABzdGFmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFwaVZlcnNpb246IG1vdmUya3ViZS5rb252ZXlvci5pby92MWFscGhhMQpraW5kOiBUcmFuc2Zvcm1lcgptZXRhZGF0YToKICBuYW1lOiBQSFAKc3BlYzoKICBtb2RlOiAiQ29udGFpbmVyIgogIGNsYXNzOiAiU2ltcGxlRXhlY3V0YWJsZSIKICBnZW5lcmF0ZXM6IAogICAgLSAiRG9ja2VyZmlsZSIKICBleGNsdXNpdmU6IAogICAgLSAiRG9ja2VyZmlsZSIKICBjb25maWc6CiAgICBkaXJlY3RvcnlEZXRlY3RDTUQ6IFsiLi9tMmtkZXRlY3Quc2giXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdHJhbnNmb3JtZXJzL2V4ZWN1dGFibGUvZG9ja2VyZmlsZS9waHAvdGVtcGxhdGVzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NTUAMDAwMDc2NQAwMDAwMDI0ADAwMDAwMDAwMDAwADE0MDY0MTExMjc2ADAyNDYxMAAgNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhcgAwMGFzaG9rcG9ua3VtYXIAAAAAAAAAAAAAAAAAAAAAAAAAc3RhZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0cmFuc2Zvcm1lcnMvZXhlY3V0YWJsZS9kb2NrZXJmaWxlL3BocC90ZW1wbGF0ZXMvRG9ja2VyZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAwNzY1ADAwMDAwMjQAMDAwMDAwMDE0NjAAMTQwNjQxMTEyNzYAMDI2NjYyACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyADAwYXNob2twb25rdW1hcgAAAAAAAAAAAAAAAAAAAAAAAABzdGFmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMgICBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMjAKIwojICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiMgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIwojICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIwojICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgojICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgpGUk9NIHJlZ2lzdHJ5LmFjY2Vzcy5yZWRoYXQuY29tL3ViaTgvdWJpLW1pbmltYWw6OC4zLTIwMQpSVU4gbWljcm9kbmYgdXBkYXRlICYmIG1pY3JvZG5mIGluc3RhbGwgLXkgcGhwICYmIG1pY3JvZG5mIGNsZWFuIGFsbApXT1JLRElSIC97eyAuYXBwX25hbWUgfX0KQ09QWSAuIC4KRVhQT1NFIHt7IC5wb3J0IH19CkNNRCBbInBocCIsICItUyIsICJ7eyAuYmluZGluZyB9fSJdCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0cmFuc2Zvcm1lcnMvZXhlY3V0YWJsZS9kb2NrZXJmaWxlL3B5dGhvbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDc1NQAwMDAwNzY1ADAwMDAwMjQAMDAwMDAwMDAwMDAAMTQwNjQxMTEyNzYAMDIzMzQ0ACA1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyADAwYXNob2twb25rdW1hcgAAAAAAAAAAAAAAAAAAAAAAAABzdGFmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRyYW5zZm9ybWVycy9leGVjdXRhYmxlL2RvY2tlcmZpbGUvcHl0aG9uL20ya2RldGVjdC5zaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNzU1ADAwMDA3NjUAMDAwMDAyNAAwMDAwMDAwMjI3MwAxNDA2NDExMTI3NgAwMjU2NTAAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIAMDBhc2hva3Bvbmt1bWFyAAAAAAAAAAAAAAAAAAAAAAAAAHN0YWZmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIyEvdXNyL2Jpbi9lbnYgYmFzaAojICAgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDIwCiMKIyAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwojICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgojICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKIyAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKIyBUYWtlcyBhcyBpbnB1dCB0aGUgc291cmNlIGZvbGRlciBhbmQgcmV0dXJucyBlcnJvciBpZiBpdCBpcyBub3QgZml0CkJBU0VfRElSPSIkMSIKU1BFQ0lBTF9GSUxFUz0oIiRCQVNFX0RJUiIvcmVxdWlyZW1lbnRzLnR4dCAiJEJBU0VfRElSIi9zZXR1cC5weSAiJEJBU0VfRElSIi9lbnZpcm9ubWVudC55bWwgIiRCQVNFX0RJUiIvUGlwZmlsZSkKCmZvciBmaWxlTmFtZSBpbiAiJHtTUEVDSUFMX0ZJTEVTW0BdfSI7IGRvCiAgIGlmIFsgLWYgIiRmaWxlTmFtZSIgXTsgdGhlbgogICAgICBtYWluX3NjcmlwdF9wYXRoPSIkKGdyZXAgLWxSZSAiX19tYWluX18iICIkQkFTRV9ESVIiIHwgYXdrICcvLnB5JC8ge3ByaW50fScgfCBoZWFkIC1uIDEpIgogICAgICBtYWluX3NjcmlwdF9yZWxfcGF0aD0iJChy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dSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAojCiMgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAojICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCiMgVGFrZXMgYXMgaW5wdXQgdGhlIHNvdXJjZSBmb2xkZXIgYW5kIHJldHVybnMgZXJyb3IgaWYgaXQgaXMgbm90IGZpdApCQVNFX0RJUj0kMQpOQVRJVkVfSU1BR0U9InJlZ2lzdHJ5LmFjY2Vzcy5yZWRoYXQuY29tL3JlZGhhdC1vcGVuamRrLTE4L29wZW5qZGsxOC1vcGVuc2hpZnQ6bGF0ZXN0IgpXRUJfSU1BR0U9InJlZ2lzdHJ5LmFjY2Vzcy5yZWRoYXQuY29tL2pib3NzLWVhcC02L2VhcDY0LW9wZW5zaGlmdDpsYXRlc3QiCgojIEdyYWRsZSBub3Qgc3VwcG9ydGVkIHlldAppZiBbIC1mICIkMS9idWlsZC5ncmFkbGUiIF07IHRoZW4KICAgZXhpdCAxCmZpCgojIEFudCBub3Qgc3VwcG9ydGVkIHlldAppZiBbIC1mICIkMS9idWlsZC54bWwiIF07IHRoZW4KICAgZXhpdCAxCmZpCgppZiBbIC1mICIkMS9wb20ueG1sIiBdOyB0aGVuCiAgIGVjaG8gJ3siYnVpbGRlciI6ICInJFdFQl9JTUFHRSciLCAicG9ydCI6IDgwODB9JwogICBleGl0IDAKZmkKCmZvdW5kPSIkKGZpbmQgIiRCQVNFX0RJUiIvLiAtbmFtZSAiKi5qYXZhIiAtcHJpbnQgLXF1aXQgfCB3YyAtbCkiCgppZiBbICEgIiRmb3VuZCIgLWVxIDEgXTsgdGhlbgogICBleGl0IDEKZmkKCmVjaG8gJ3siYnVpbGRlciI6ICInJE5BVElWRV9JTUFHRSciLCAicG9ydCI6IDgwODB9JwoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRyYW5zZm9ybWVycy9leGVjdXRhYmxlL3MyaS9qYXZhL3RlbXBsYXRlcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNzU1ADAwMDA3NjUAMDAwMDAyNAAwMDAwMDAwMDAwMAAxNDA2NDExMTI3NgAwMjMzMzAAIDUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIAMDBhc2hva3Bvbmt1bWFyAAAAAAAAAAAAAAAAAAAAAAAAAHN0YWZmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdHJhbnNmb3JtZXJzL2V4ZWN1dGFibGUvczJpL2phdmEvdGVtcGxhdGVzLy5zMmkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NTUAMDAwMDc2NQAwMDAwMDI0ADAwMDAwMDAwMDAwADE0MDY0MTExMjc2ADAyNDEwMwAgNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhcgAwMGFzaG9rcG9ua3VtYXIAAAAAAAAAAAAAAAAAAAAAAAAAc3RhZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0cmFuc2Zvcm1lcnMvZXhlY3V0YWJsZS9zMmkvamF2YS90ZW1wbGF0ZXMvLnMyaS9lbnZpcm9ubWVudAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAwNzY1ADAwMDAwMjQAMDAwMDAwMDAyMjYAMTQwNjQxMTEyNzYAMDI2NDUxACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyADAwYXNob2twb25rdW1hcgAAAAAAAAAAAAAAAAAAAAAAAABzdGFmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHt7LSByYW5nZSAka2V5LCAkdmFsdWUgOj0gLiB9fQp7ey0gaWYgYW5kIChuZSAka2V5ICJidWlsZGVyIikgKG5lICRrZXkgImltYWdlX25hbWUiKSAobmUgJGtleSAicG9ydCIpIH19Cnt7ICRrZXkgfX09e3sgJHZhbHVlIH19Cnt7LSBlbmQgfX0Ke3stIGVuZCB9fQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdHJhbnNmb3JtZXJzL2V4ZWN1dGFibGUvczJpL25vZGVqcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NTUAMDAwMDc2NQAwMDAwMDI0ADAwMDAwMDAwMDAwADE0MDY0MTExMjc2ADAyMTY3MwAgNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhcgAwMGFzaG9rcG9ua3VtYXIAAAAAAAAAAAAAAAAAAAAAAAAAc3RhZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0cmFuc2Zvcm1lcnMvZXhlY3V0YWJsZS9zMmkvbm9kZWpzL20ya2RldGVjdC5zaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDc1NQAwMDAwNzY1ADAwMDAwMjQAMDAwMDAwMDE1MDcAMTQwNjQxMTEyNzYAMDI0MTc2ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyADAwYXNob2twb25rdW1hcgAAAAAAAAAAAAAAAAAAAAAAAABzdGFmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMhL3Vzci9iaW4vZW52IGJhc2gKIyAgIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAyMAojCiMgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAojCiMgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAojICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCiMgVGFrZXMgYXMgaW5wdXQgdGhlIHNvdXJjZSBkaXJlY3RvcnkgYW5kIHJldHVybnMgZXJyb3IgaWYgaXQgaXMgbm90IGZpdAppZiBbICEgLWYgIiQxL3BhY2thZ2UuanNvbiIgXTsgdGhlbgogICBleGl0IDEKZmkKCklNQUdFPSJyZWdpc3RyeS5hY2Nlc3MucmVkaGF0LmNvbS91Ymk4L25vZGVqcy0xMCIKZWNobyAneyJidWlsZGVyIjogIickSU1BR0UnIiwgInBvcnQiOiA4MDgwfScKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0cmFuc2Zvcm1lcnMvZXhlY3V0YWJsZS9zMmkvbm9kZWpzL25vZGVqcy55YW1sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAwNzY1ADAwMDAwMjQAMDAwMDAwMDA0MDYAMTQwNjQxMTEyNzYAMDI0MTIwACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyADAwYXNob2twb25rdW1hcgAAAAAAAAAAAAAAAAAAAAAAAABzdGFmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFwaVZlcnNpb246IG1vdmUya3ViZS5rb252ZXlvci5pby92MWFscGhhMQpraW5kOiBUcmFuc2Zvcm1lcgptZXRhZGF0YToKICBuYW1lOiBOb2RlanMtczJpCnNwZWM6CiAgbW9kZTogIkNvbnRhaW5lciIKICBjbGFzczogIlNpbXBsZUV4ZWN1dGFibGUiCiAgZ2VuZXJhdGVzOiAKICAgIC0gIkRvY2tlcmZpbGUiCiAgZXhjbHVzaXZlOiAKICAgIC0gIkRvY2tlcmZpbGUiCiAgY29uZmlnOgogICAgZGlyZWN0b3J5RGV0ZWN0Q01EOiBbIi4vbTJrZGV0ZWN0LnNoIl0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdHJhbnNmb3JtZXJzL2V4ZWN1dGFibGUvczJpL25vZGVqcy90ZW1wbGF0ZXMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NTUAMDAwMDc2NQAwMDAwMDI0ADAwMDAwMDAwMDAwADE0MDY0MTExMjc2ADAyMzY3MQAgNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhcgAwMGFzaG9rcG9ua3VtYXIAAAAAAAAAAAAAAAAAAAAAAAAAc3RhZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0cmFuc2Zvcm1lcnMvZXhlY3V0YWJsZS9zMmkvbm9kZWpzL3RlbXBsYXRlcy8uczJpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDc1NQAwMDAwNzY1ADAwMDAwMjQAMDAwMDAwMDAwMDAAMTQwNjQxMTEyNzYAMDI0NDQ0ACA1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyADAwYXNob2twb25rdW1hcgAAAAAAAAAAAAAAAAAAAAAAAABzdGFmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRyYW5zZm9ybWVycy9leGVjdXRhYmxlL3MyaS9ub2RlanMvdGVtcGxhdGVzLy5zMmkvZW52aXJvbm1lbnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDA3NjUAMDAwMDAyNAAwMDAwMDAwMDIyNgAxNDA2NDExMTI3NgAwMjcwMTIAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIAMDBhc2hva3Bvbmt1bWFyAAAAAAAAAAAAAAAAAAAAAAAAAHN0YWZmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAe3stIHJhbmdlICRrZXksICR2YWx1ZSA6PSAuIH19Cnt7LSBpZiBhbmQgKG5lICRrZXkgImJ1aWxkZXIiKSAobmUgJGtleSAiaW1hZ2VfbmFtZSIpIChuZSAka2V5ICJwb3J0IikgfX0Ke3sgJGtleSB9fT17eyAkdmFsdWUgfX0Ke3stIGVuZCB9fQp7ey0gZW5kIH19AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0cmFuc2Zvcm1lcnMvZXhlY3V0YWJsZS9zMmkvcGhwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDc1NQAwMDAwNzY1ADAwMDAwMjQAMDAwMDAwMDAwMDAAMTQwNjQxMTEyNzYAMDIxMjAwACA1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyADAwYXNob2twb25rdW1hcgAAAAAAAAAAAAAAAAAAAAAAAABzdGFmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRyYW5zZm9ybWVycy9leGVjdXRhYmxlL3MyaS9waHAvbTJrZGV0ZWN0LnNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNzU1ADAwMDA3NjUAMDAwMDAyNAAwMDAwMDAwMTYzMQAxNDA2NDExMTI3NgAwMjM1MDEAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIAMDBhc2hva3Bvbmt1bWFyAAAAAAAAAAAAAAAAAAAAAAAAAHN0YWZmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIyEvdXNyL2Jpbi9lbnYgYmFzaAojICAgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDIwCiMKIyAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwojICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgojICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKIyAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKIyBUYWtlcyBhcyBpbnB1dCB0aGUgc291cmNlIGZvbGRlciBhbmQgcmV0dXJucyBlcnJvciBpZiBpdCBpcyBub3QgZml0CkJBU0VfRElSPSQxCklNQUdFPSJyZWdpc3RyeS5hY2Nlc3MucmVkaGF0LmNvbS9yaHNjbC9waHAtNzItcmhlbDc6bGF0ZXN0IgoKZm91bmQ9IiQoZmluZCAiJEJBU0VfRElSIi8uIC1uYW1lICIqLnBocCIgLXByaW50IC1xdWl0IHwgd2MgLWwpIgoKaWYgWyAhICIkZm91bmQiIC1lcSAxIF07IHRoZW4KICAgIGV4aXQgMQpmaQoKZWNobyAneyJidWlsZGVyIjogIickSU1BR0UnIiwgInBvcnQiOiA4MDgwfScKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRyYW5zZm9ybWVycy9leGVjdXRhYmxlL3MyaS9waHAvcGhwLnlhbWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDA3NjUAMDAwMDAyNAAwMDAwMDAwMDQwMwAxNDA2NDExMTI3NgAwMjI3MjcAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIAMDBhc2hva3Bvbmt1bWFyAAAAAAAAAAAAAAAAAAAAAAAAAHN0YWZmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYXBpVmVyc2lvbjogbW92ZTJrdWJlLmtvbnZleW9yLmlvL3YxYWxwaGExCmtpbmQ6IFRyYW5zZm9ybWVyCm1ldGFkYXRhOgogIG5hbWU6IFBIUC1zMmkKc3BlYzoKICBtb2RlOiAiQ29udGFpbmVyIgogIGNsYXNzOiAiU2ltcGxlRXhlY3V0YWJsZSIKICBnZW5lcmF0ZXM6IAogICAgLSAiRG9ja2VyZmlsZSIKICBleGNsdXNpdmU6IAogICAgLSAiRG9ja2VyZmlsZSIKICBjb25maWc6CiAgICBkaXJlY3RvcnlEZXRlY3RDTUQ6IFsiLi9tMmtkZXRlY3Quc2giXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0cmFuc2Zvcm1lcnMvZXhlY3V0YWJsZS9zMmkvcGhwL3RlbXBsYXRlcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDc1NQAwMDAwNzY1ADAwMDAwMjQAMDAwMDAwMDAwMDAAMTQwNjQxMTEyNzYAMDIzMTc2ACA1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyADAwYXNob2twb25rdW1hcgAAAAAAAAAAAAAAAAAAAAAAAABzdGFmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRyYW5zZm9ybWVycy9leGVjdXRhYmxlL3MyaS9waHAvdGVtcGxhdGVzLy5zMmkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNzU1ADAwMDA3NjUAMDAwMDAyNAAwMDAwMDAwMDAwMAAxNDA2NDExMTI3NgAwMjM3NTEAIDUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIAMDBhc2hva3Bvbmt1bWFyAAAAAAAAAAAAAAAAAAAAAAAAAHN0YWZmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdHJhbnNmb3JtZXJzL2V4ZWN1dGFibGUvczJpL3BocC90ZW1wbGF0ZXMvLnMyaS9lbnZpcm9ubWVudAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAwMDc2NQAwMDAwMDI0ADAwMDAwMDAwMjI2ADE0MDY0MTExMjc2ADAyNjMxNwAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhcgAwMGFzaG9rcG9ua3VtYXIAAAAAAAAAAAAAAAAAAAAAAAAAc3RhZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7ey0gcmFuZ2UgJGtleSwgJHZhbHVlIDo9IC4gfX0Ke3stIGlmIGFuZCAobmUgJGtleSAiYnVpbGRlciIpIChuZSAka2V5ICJpbWFnZV9uYW1lIikgKG5lICRrZXkgInBvcnQiKSB9fQp7eyAka2V5IH19PXt7ICR2YWx1ZSB9fQp7ey0gZW5kIH19Cnt7LSBlbmQgfX0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRyYW5zZm9ybWVycy9leGVjdXRhYmxlL3MyaS9weXRob24AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNzU1ADAwMDA3NjUAMDAwMDAyNAAwMDAwMDAwMDAwMAAxNDA2NDExMTI3NgAwMjE3MzIAIDUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIAMDBhc2hva3Bvbmt1bWFyAAAAAAAAAAAAAAAAAAAAAAAAAHN0YWZmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdHJhbnNmb3JtZXJzL2V4ZWN1dGFibGUvczJpL3B5dGhvbi9tMmtkZXRlY3Quc2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NTUAMDAwMDc2NQAwMDAwMDI0ADAwMDAwMDAyNDA2ADE0MDY0MTExMjc2ADAyNDIzNAAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhcgAwMGFzaG9rcG9ua3VtYXIAAAAAAAAAAAAAAAAAAAAAAAAAc3RhZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIS91c3IvYmluL2VudiBiYXNoCiMgICBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMjAKIwojICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiMgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIwojICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIwojICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgojICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgojIFRha2VzIGFzIGlucHV0IHRoZSBzb3VyY2UgZm9sZGVyIGFuZCByZXR1cm5zIGVycm9yIGlmIGl0IGlzIG5vdCBmaXQKQkFTRV9ESVI9IiQxIgpTUEVDSUFMX0ZJTEVTPSgiJEJBU0VfRElSIi9yZXF1aXJlbWVudHMudHh0ICIkQkFTRV9ESVIiL3NldHVwLnB5ICIkQkFTRV9ESVIiL2Vudmlyb25tZW50LnltbCAiJEJBU0VfRElSIi9QaXBmaWxlKQpJTUFHRT0icmVnaXN0cnkuYWNjZXNzLnJlZGhhdC5jb20vcmhzY2wvcHl0aG9uLTM2LXJoZWw3OmxhdGVzdCIKCmZvciBmaWxlTmFtZSBpbiAiJHtTUEVDSUFMX0ZJTEVTW0BdfSI7IGRvCiAgIGlmIFsgLWYgIiRmaWxlTmFtZSIgXTsgdGhlbgogICAgICBtYWluX3NjcmlwdF9wYXRoPSIkKGdyZXAgLWxSZSAiX19tYWluX18iICIkQkFTRV9ESVIiIHwgYXdrICcvLnB5JC8ge3ByaW50fScgfCBoZWFkIC1uIDEpIgogICAgICBtYWluX3NjcmlwdF9yZWxfcGF0aD0iJChyZWFscGF0aCAtLXJlbGF0aXZlLXRvPSIkQkFTRV9ESVIiICIkbWFpbl9zY3JpcHRfcGF0aCIpIgogICAgICBwcmludGYgJ3siYnVpbGRlciI6ICInJElNQUdFJyIsICJhcHBfZmlsZSI6ICIlcyIsICJhcHBfbmFtZSI6ICJhcHAiLCAicG9ydCI6IDgwODB9JyAiJG1haW5fc2NyaXB0X3JlbF9wYXRoIgogICAgICBleGl0IDAKICAgZmkKZG9uZQoKZXhpdCAxCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0cmFuc2Zvcm1lcnMvZXhlY3V0YWJsZS9zMmkvcHl0aG9uL3B5dGhvbi55YW1sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAwNzY1ADAwMDAwMjQAMDAwMDAwMDA0MDYAMTQwNjQxMTEyNzYAMDI0MjE2ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyADAwYXNob2twb25rdW1hcgAAAAAAAAAAAAAAAAAAAAAAAABzdGFmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFwaVZlcnNpb246IG1vdmUya3ViZS5rb252ZXlvci5pby92MWFscGhhMQpraW5kOiBUcmFuc2Zvcm1lcgptZXRhZGF0YToKICBuYW1lOiBQeXRob24tczJpCnNwZWM6CiAgbW9kZTogIkNvbnRhaW5lciIKICBjbGFzczogIlNpbXBsZUV4ZWN1dGFibGUiCiAgZ2VuZXJhdGVzOiAKICAgIC0gIkRvY2tlcmZpbGUiCiAgZXhjbHVzaXZlOiAKICAgIC0gIkRvY2tlcmZpbGUiCiAgY29uZmlnOgogICAgZGlyZWN0b3J5RGV0ZWN0Q01EOiBbIi4vbTJrZGV0ZWN0LnNoIl0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdHJhbnNmb3JtZXJzL2V4ZWN1dGFibGUvczJpL3B5dGhvbi90ZW1wbGF0ZXMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NTUAMDAwMDc2NQAwMDAwMDI0ADAwMDAwMDAwMDAwADE0MDY0MTExMjc2ADAyMzczMAAgNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhcgAwMGFzaG9rcG9ua3VtYXIAAAAAAAAAAAAAAAAAAAAAAAAAc3RhZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0cmFuc2Zvcm1lcnMvZXhlY3V0YWJsZS9zMmkvcHl0aG9uL3RlbXBsYXRlcy8uczJpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDc1NQAwMDAwNzY1ADAwMDAwMjQAMDAwMDAwMDAwMDAAMTQwNjQxMTEyNzYAMDI0NTAzACA1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyADAwYXNob2twb25rdW1hcgAAAAAAAAAAAAAAAAAAAAAAAABzdGFmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRyYW5zZm9ybWVycy9leGVjdXRhYmxlL3MyaS9weXRob24vdGVtcGxhdGVzLy5zMmkvZW52aXJvbm1lbnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDA3NjUAMDAwMDAyNAAwMDAwMDAwMDIyNgAxNDA2NDExMTI3NgAwMjcwNTEAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIAMDBhc2hva3Bvbmt1bWFyAAAAAAAAAAAAAAAAAAAAAAAAAHN0YWZmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAe3stIHJhbmdlICRrZXksICR2YWx1ZSA6PSAuIH19Cnt7LSBpZiBhbmQgKG5lICRrZXkgImJ1aWxkZXIiKSAobmUgJGtleSAiaW1hZ2VfbmFtZSIpIChuZSAka2V5ICJwb3J0IikgfX0Ke3sgJGtleSB9fT17eyAkdmFsdWUgfX0Ke3stIGVuZCB9fQp7ey0gZW5kIH19AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0cmFuc2Zvcm1lcnMvZXhlY3V0YWJsZS9zMmkvcnVieQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDc1NQAwMDAwNzY1ADAwMDAwMjQAMDAwMDAwMDAwMDAAMTQwNjQxMTEyNzYAMDIxMzcyACA1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyADAwYXNob2twb25rdW1hcgAAAAAAAAAAAAAAAAAAAAAAAABzdGFmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRyYW5zZm9ybWVycy9leGVjdXRhYmxlL3MyaS9ydWJ5L20ya2RldGVjdC5zaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNzU1ADAwMDA3NjUAMDAwMDAyNAAwMDAwMDAwMTU0MAAxNDA2NDExMTI3NgAwMjM2NzIAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIAMDBhc2hva3Bvbmt1bWFyAAAAAAAAAAAAAAAAAAAAAAAAAHN0YWZmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIyEvdXNyL2Jpbi9lbnYgYmFzaAojICAgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDIwCiMKIyAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwojICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgojICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKIyAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKIyBUYWtlcyBhcyBpbnB1dCB0aGUgc291cmNlIGZvbGRlciBhbmQgcmV0dXJucyBlcnJvciBpZiBpdCBpcyBub3QgZml0CkJBU0VfRElSPSQxCklNQUdFPSJyZWdpc3RyeS5hY2Nlc3MucmVkaGF0LmNvbS9yaHNjbC9ydWJ5LTI1LXJoZWw3OmxhdGVzdCIKCmlmIFsgISAtZiAiJEJBU0VfRElSIi9HZW1maWxlIF07IHRoZW4KICAgIGV4aXQgMQpmaQoKZWNobyAneyJidWlsZGVyIjogIickSU1BR0UnIiwgInBvcnQiOiA4MDgwfScKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRyYW5zZm9ybWVycy9leGVjdXRhYmxlL3MyaS9ydWJ5L3J1YnkueWFtbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDA3NjUAMDAwMDAyNAAwMDAwMDAwMDQwNAAxNDA2NDExMTI3NgAwMjMzMTQAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIAMDBhc2hva3Bvbmt1bWFyAAAAAAAAAAAAAAAAAAAAAAAAAHN0YWZmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYXBpVmVyc2lvbjogbW92ZTJrdWJlLmtvbnZleW9yLmlvL3YxYWxwaGExCmtpbmQ6IFRyYW5zZm9ybWVyCm1ldGFkYXRhOgogIG5hbWU6IFJ1YnktczJpCnNwZWM6CiAgbW9kZTogIkNvbnRhaW5lciIKICBjbGFzczogIlNpbXBsZUV4ZWN1dGFibGUiCiAgZ2VuZXJhdGVzOiAKICAgIC0gIkRvY2tlcmZpbGUiCiAgZXhjbHVzaXZlOiAKICAgIC0gIkRvY2tlcmZpbGUiCiAgY29uZmlnOgogICAgZGlyZWN0b3J5RGV0ZWN0Q01EOiBbIi4vbTJrZGV0ZWN0LnNoIl0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0cmFuc2Zvcm1lcnMvZXhlY3V0YWJsZS9zMmkvcnVieS90ZW1wbGF0ZXMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDc1NQAwMDAwNzY1ADAwMDAwMjQAMDAwMDAwMDAwMDAAMTQwNjQxMTEyNzYAMDIzMzcwACA1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyADAwYXNob2twb25rdW1hcgAAAAAAAAAAAAAAAAAAAAAAAABzdGFmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRyYW5zZm9ybWVycy9leGVjdXRhYmxlL3MyaS9ydWJ5L3RlbXBsYXRlcy8uczJpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNzU1ADAwMDA3NjUAMDAwMDAyNAAwMDAwMDAwMDAwMAAxNDA2NDExMTI3NgAwMjQxNDMAIDUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIAMDBhc2hva3Bvbmt1bWFyAAAAAAAAAAAAAAAAAAAAAAAAAHN0YWZmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdHJhbnNmb3JtZXJzL2V4ZWN1dGFibGUvczJpL3J1YnkvdGVtcGxhdGVzLy5zMmkvZW52aXJvbm1lbnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAwMDc2NQAwMDAwMDI0ADAwMDAwMDAwMjI2ADE0MDY0MTExMjc2ADAyNjUxMQAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhcgAwMGFzaG9rcG9ua3VtYXIAAAAAAAAAAAAAAAAAAAAAAAAAc3RhZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7ey0gcmFuZ2UgJGtleSwgJHZhbHVlIDo9IC4gfX0Ke3stIGlmIGFuZCAobmUgJGtleSAiYnVpbGRlciIpIChuZSAka2V5ICJpbWFnZV9uYW1lIikgKG5lICRrZXkgInBvcnQiKSB9fQp7eyAka2V5IH19PXt7ICR2YWx1ZSB9fQp7ey0gZW5kIH19Cnt7LSBlbmQgfX0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRyYW5zZm9ybWVycy9nZW5lcmF0b3JzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNzU1ADAwMDA3NjUAMDAwMDAyNAAwMDAwMDAwMDAwMAAxNDA2NDExMTI3NgAwMTc3NDQAIDUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIAMDBhc2hva3Bvbmt1bWFyAAAAAAAAAAAAAAAAAAAAAAAAAHN0YWZmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdHJhbnNmb3JtZXJzL2dlbmVyYXRvcnMvYnVpbGRjb25maWcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NTUAMDAwMDc2NQAwMDAwMDI0ADAwMDAwMDAwMDAwADE0MDY0MTExMjc2ADAyMjIzMQAgNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhcgAwMGFzaG9rcG9ua3VtYXIAAAAAAAAAAAAAAAAAAAAAAAAAc3RhZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0cmFuc2Zvcm1lcnMvZ2VuZXJhdG9ycy9idWlsZGNvbmZpZy9idWlsZGNvbmZpZy55YW1sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAwNzY1ADAwMDAwMjQAMDAwMDAwMDAyMzYAMTQwNjQxMTEyNzYAMDI1NDYyACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyADAwYXNob2twb25rdW1hcgAAAAAAAAAAAAAAAAAAAAAAAABzdGFmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFwaVZlcnNpb246IG1vdmUya3ViZS5rb252ZXlvci5pby92MWFscGhhMQpraW5kOiBUcmFuc2Zvcm1lcgptZXRhZGF0YToKICBuYW1lOiBCdWlsZGNvbmZpZwpzcGVjOgogIG1vZGU6ICJDb250YWluZXIiCiAgY2xhc3M6ICJCdWlsZENvbmZpZyIKICBjb25zdW1lczogWyJJUiJdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdHJhbnNmb3JtZXJzL2dlbmVyYXRvcnMva25hdGl2ZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NTUAMDAwMDc2NQAwMDAwMDI0ADAwMDAwMDAwMDAwADE0MDY0MTExMjc2ADAyMTQwNQAgNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhcgAwMGFzaG9rcG9ua3VtYXIAAAAAAAAAAAAAAAAAAAAAAAAAc3RhZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0cmFuc2Zvcm1lcnMvZ2VuZXJhdG9ycy9rbmF0aXZlL2tuYXRpdmUueWFtbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAwNzY1ADAwMDAwMjQAMDAwMDAwMDAyMjYAMTQwNjQxMTEyNzYAMDI0MDExACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyADAwYXNob2twb25rdW1hcgAAAAAAAAAAAAAAAAAAAAAAAABzdGFmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFwaVZlcnNpb246IG1vdmUya3ViZS5rb252ZXlvci5pby92MWFscGhhMQpraW5kOiBUcmFuc2Zvcm1lcgptZXRhZGF0YToKICBuYW1lOiBLbmF0aXZlCnNwZWM6CiAgbW9kZTogIkNvbnRhaW5lciIKICBjbGFzczogIktuYXRpdmUiCiAgY29uc3VtZXM6IFsiSVIiXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdHJhbnNmb3JtZXJzL2dlbmVyYXRvcnMva3ViZXJuZXRlcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NTUAMDAwMDc2NQAwMDAwMDI0ADAwMDAwMDAwMDAwADE0MDY0MTExMjc2ADAyMjExMwAgNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhcgAwMGFzaG9rcG9ua3VtYXIAAAAAAAAAAAAAAAAAAAAAAAAAc3RhZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0cmFuc2Zvcm1lcnMvZ2VuZXJhdG9ycy9rdWJlcm5ldGVzL2t1YmVybmV0ZXMueWFtbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAwNzY1ADAwMDAwMjQAMDAwMDAwMDAyMzQAMTQwNjQxMTEyNzYAMDI1MjI0ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyADAwYXNob2twb25rdW1hcgAAAAAAAAAAAAAAAAAAAAAAAABzdGFmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFwaVZlcnNpb246IG1vdmUya3ViZS5rb252ZXlvci5pby92MWFscGhhMQpraW5kOiBUcmFuc2Zvcm1lcgptZXRhZGF0YToKICBuYW1lOiBLdWJlcm5ldGVzCnNwZWM6CiAgbW9kZTogIkNvbnRhaW5lciIKICBjbGFzczogIkt1YmVybmV0ZXMiCiAgY29uc3VtZXM6IFsiSVIiXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdHJhbnNmb3JtZXJzL2dlbmVyYXRvcnMvdGVrdG9uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NTUAMDAwMDc2NQAwMDAwMDI0ADAwMDAwMDAwMDAwADE0MDY0MTExMjc2ADAyMTI1MAAgNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhcgAwMGFzaG9rcG9ua3VtYXIAAAAAAAAAAAAAAAAAAAAAAAAAc3RhZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0cmFuc2Zvcm1lcnMvZ2VuZXJhdG9ycy90ZWt0b24vdGVrdG9uLnlhbWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAwNzY1ADAwMDAwMjQAMDAwMDAwMDAyMjQAMTQwNjQxMTEyNzYAMDIzNTE1ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyADAwYXNob2twb25rdW1hcgAAAAAAAAAAAAAAAAAAAAAAAABzdGFmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFwaVZlcnNpb246IG1vdmUya3ViZS5rb252ZXlvci5pby92MWFscGhhMQpraW5kOiBUcmFuc2Zvcm1lcgptZXRhZGF0YToKICBuYW1lOiBUZWt0b24Kc3BlYzoKICBtb2RlOiAiQ29udGFpbmVyIgogIGNsYXNzOiAiVGVrdG9uIgogIGNvbnN1bWVzOiBbIklSIl0=` \ No newline at end of file +const Tar = `LgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NTUAMDAwMDc2NQAwMDAwMDI0ADAwMDAwMDAwMDAwADE0MDY1MDI3NzE3ADAxMzIxMgAgNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhcgAwMGFzaG9rcG9ua3VtYXIAAAAAAAAAAAAAAAAAAAAAAAAAc3RhZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABjbHVzdGVycwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDc1NQAwMDAwNzY1ADAwMDAwMjQAMDAwMDAwMDAwMDAAMTQwNjQxMTEyNzYAMDE0NzEyACA1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyADAwYXNob2twb25rdW1hcgAAAAAAAAAAAAAAAAAAAAAAAABzdGFmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGNsdXN0ZXJzL2t1YmVybmV0ZXMueWFtbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDA3NjUAMDAwMDAyNAAwMDAwMDAwNjEyNAAxNDA2NDExMTI3NgAwMjAwMjcAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIAMDBhc2hva3Bvbmt1bWFyAAAAAAAAAAAAAAAAAAAAAAAAAHN0YWZmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYXBpVmVyc2lvbjogbW92ZTJrdWJlLmtvbnZleW9yLmlvL3YxYWxwaGExCmtpbmQ6IENsdXN0ZXJNZXRhZGF0YQptZXRhZGF0YToKICBuYW1lOiBLdWJlcm5ldGVzCnNwZWM6CiAgc3RvcmFnZUNsYXNzZXM6CiAgICAtIGRlZmF1bHQKICBhcGlLaW5kVmVyc2lvbk1hcDoKICAgIEFQSVNlcnZpY2U6CiAgICAgIC0gYXBpcmVnaXN0cmF0aW9uLms4cy5pby92MQogICAgQmluZGluZzoKICAgICAgLSB2MQogICAgQ1NJRHJpdmVyOgogICAgICAtIHN0b3JhZ2UuazhzLmlvL3YxCiAgICAgIC0gc3RvcmFnZS5rOHMuaW8vdjFiZXRhMQogICAgQ1NJTm9kZToKICAgICAgLSBzdG9yYWdlLms4cy5pby92MQogICAgICAtIHN0b3JhZ2UuazhzLmlvL3YxYmV0YTEKICAgIENlcnRpZmljYXRlU2lnbmluZ1JlcXVlc3Q6CiAgICAgIC0gY2VydGlmaWNhdGVzLms4cy5pby92MQogICAgICAtIGNlcnRpZmljYXRlcy5rOHMuaW8vdjFiZXRhMQogICAgQ2x1c3RlclJvbGU6CiAgICAgIC0gcmJhYy5hdXRob3JpemF0aW9uLms4cy5pby92MQogICAgICAtIHJiYWMuYXV0aG9yaXphdGlvbi5rOHMuaW8vdjFiZXRhMQogICAgQ2x1c3RlclJvbGVCaW5kaW5nOgogICAgICAtIHJiYWMuYXV0aG9yaXphdGlvbi5rOHMuaW8vdjEKICAgICAgLSByYmFjLmF1dGhvcml6YXRpb24uazhzLmlvL3YxYmV0YTEKICAgIENvbXBvbmVudFN0YXR1czoKICAgICAgLSB2MQogICAgQ29uZmlnTWFwOgogICAgICAtIHYxCiAgICBDb250cm9sbGVyUmV2aXNpb246CiAgICAgIC0gYXBwcy92MQogICAgQ3JvbkpvYjoKICAgICAgLSBiYXRjaC92MWJldGExCiAgICAgIC0gYmF0Y2gvdjJhbHBoYTEKICAgIEN1c3RvbVJlc291cmNlRGVmaW5pdGlvbjoKICAgICAgLSBhcGlleHRlbnNpb25zLms4cy5pby92MQogICAgRGFlbW9uU2V0OgogICAgICAtIGFwcHMvdjEKICAgIERlcGxveW1lbnQ6CiAgICAgIC0gYXBwcy92MQogICAgRW5kcG9pbnRTbGljZToKICAgICAgLSBkaXNjb3ZlcnkuazhzLmlvL3YxYmV0YTEKICAgIEVuZHBvaW50czoKICAgICAgLSB2MQogICAgRXZlbnQ6CiAgICAgIC0gZXZlbnRzLms4cy5pby92MWJldGExCiAgICAgIC0gdjEKICAgIEhvcml6b250YWxQb2RBdXRvc2NhbGVyOgogICAgICAtIGF1dG9zY2FsaW5nL3YxCiAgICAgIC0gYXV0b3NjYWxpbmcvdjJiZXRhMQogICAgICAtIGF1dG9zY2FsaW5nL3YyYmV0YTIKICAgIEluZ3Jlc3M6CiAgICAgIC0gbmV0d29ya2luZy5rOHMuaW8vdjEKICAgICAgLSBuZXR3b3JraW5nLms4cy5pby92MWJldGExCiAgICAgIC0gZXh0ZW5zaW9ucy92MWJldGExCiAgICBJbmdyZXNzQ2xhc3M6CiAgICAgIC0gbmV0d29ya2luZy5rOHMuaW8vdjEKICAgICAgLSBuZXR3b3JraW5nLms4cy5pby92MWJldGExCiAgICBKb2I6CiAgICAgIC0gYmF0Y2gvdjEKICAgIExlYXNlOgogICAgICAtIGNvb3JkaW5hdGlvbi5rOHMuaW8vdjFiZXRhMQogICAgICAtIGNvb3JkaW5hdGlvbi5rOHMuaW8vdjEKICAgIExpbWl0UmFuZ2U6CiAgICAgIC0gdjEKICAgIExvY2FsU3ViamVjdEFjY2Vzc1JldmlldzoKICAgICAgLSBhdXRob3JpemF0aW9uLms4cy5pby92MQogICAgICAtIGF1dGhvcml6YXRpb24uazhzLmlvL3YxYmV0YTEKICAgIE11dGF0aW5nV2ViaG9va0NvbmZpZ3VyYXRpb246CiAgICAgIC0gYWRtaXNzaW9ucmVnaXN0cmF0aW9uLms4cy5pby92MWJldGExCiAgICAgIC0gYWRtaXNzaW9ucmVnaXN0cmF0aW9uLms4cy5pby92MQogICAgTmFtZXNwYWNlOgogICAgICAtIHYxCiAgICBOZXR3b3JrUG9saWN5OgogICAgICAtIG5ldHdvcmtpbmcuazhzLmlvL3YxCiAgICBOb2RlOgogICAgICAtIHYxCiAgICBQZXJzaXN0ZW50Vm9sdW1lOgogICAgICAtIHYxCiAgICBQZXJzaXN0ZW50Vm9sdW1lQ2xhaW06CiAgICAgIC0gdjEKICAgIFBvZDoKICAgICAgLSB2MQogICAgUG9kRGlzcnVwdGlvbkJ1ZGdldDoKICAgICAgLSBwb2xpY3kvdjFiZXRhMQogICAgUG9kU2VjdXJpdHlQb2xpY3k6CiAgICAgIC0gcG9saWN5L3YxYmV0YTEKICAgIFBvZFRlbXBsYXRlOgogICAgICAtIHYxCiAgICBQcmlvcml0eUNsYXNzOgogICAgICAtIHNjaGVkdWxpbmcuazhzLmlvL3YxYmV0YTEKICAgICAgLSBzY2hlZHVsaW5nLms4cy5pby92MQogICAgUmVwbGljYVNldDoKICAgICAgLSBhcHBzL3YxCiAgICBSZXBsaWNhdGlvbkNvbnRyb2xsZXI6CiAgICAgIC0gdjEKICAgIFJlc291cmNlUXVvdGE6CiAgICAgIC0gdjEKICAgIFJvbGU6CiAgICAgIC0gcmJhYy5hdXRob3JpemF0aW9uLms4cy5pby92MQogICAgICAtIHJiYWMuYXV0aG9yaXphdGlvbi5rOHMuaW8vdjFiZXRhMQogICAgUm9sZUJpbmRpbmc6CiAgICAgIC0gcmJhYy5hdXRob3JpemF0aW9uLms4cy5pby92MQogICAgICAtIHJiYWMuYXV0aG9yaXphdGlvbi5rOHMuaW8vdjFiZXRhMQogICAgU2VjcmV0OgogICAgICAtIHYxCiAgICBTZWxmU3ViamVjdEFjY2Vzc1JldmlldzoKICAgICAgLSBhdXRob3JpemF0aW9uLms4cy5pby92MQogICAgICAtIGF1dGhvcml6YXRpb24uazhzLmlvL3YxYmV0YTEKICAgIFNlbGZTdWJqZWN0UnVsZXNSZXZpZXc6CiAgICAgIC0gYXV0aG9yaXphdGlvbi5rOHMuaW8vdjEKICAgICAgLSBhdXRob3JpemF0aW9uLms4cy5pby92MWJldGExCiAgICBTZXJ2aWNlOgogICAgICAtIHYxCiAgICBTZXJ2aWNlQWNjb3VudDoKICAgICAgLSB2MQogICAgU3RhdGVmdWxTZXQ6CiAgICAgIC0gYXBwcy92MQogICAgU3RvcmFnZUNsYXNzOgogICAgICAtIHN0b3JhZ2UuazhzLmlvL3YxCiAgICAgIC0gc3RvcmFnZS5rOHMuaW8vdjFiZXRhMQogICAgU3ViamVjdEFjY2Vzc1JldmlldzoKICAgICAgLSBhdXRob3JpemF0aW9uLms4cy5pby92MQogICAgICAtIGF1dGhvcml6YXRpb24uazhzLmlvL3YxYmV0YTEKICAgIFRva2VuUmV2aWV3OgogICAgICAtIGF1dGhlbnRpY2F0aW9uLms4cy5pby92MQogICAgICAtIGF1dGhlbnRpY2F0aW9uLms4cy5pby92MWJldGExCiAgICBWYWxpZGF0aW5nV2ViaG9va0NvbmZpZ3VyYXRpb246CiAgICAgIC0gYWRtaXNzaW9ucmVnaXN0cmF0aW9uLms4cy5pby92MWJldGExCiAgICAgIC0gYWRtaXNzaW9ucmVnaXN0cmF0aW9uLms4cy5pby92MQogICAgVm9sdW1lQXR0YWNobWVudDoKICAgICAgLSBzdG9yYWdlLms4cy5pby92MQogICAgICAtIHN0b3JhZ2UuazhzLmlvL3YxYmV0YTEKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABjbHVzdGVycy9vcGVuc2hpZnQueWFtbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAwNzY1ADAwMDAwMjQAMDAwMDAwMTUxNzMAMTQwNjQxMTEyNzYAMDE3NjYzACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyADAwYXNob2twb25rdW1hcgAAAAAAAAAAAAAAAAAAAAAAAABzdGFmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFwaVZlcnNpb246IG1vdmUya3ViZS5rb252ZXlvci5pby92MWFscGhhMQpraW5kOiBDbHVzdGVyTWV0YWRhdGEKbWV0YWRhdGE6IAogIG5hbWU6IE9wZW5zaGlmdApzcGVjOgogIHN0b3JhZ2VDbGFzc2VzOgogICAgLSBkZWZhdWx0CiAgYXBpS2luZFZlcnNpb25NYXA6CiAgICBBUElTZXJ2aWNlOgogICAgICAtIGFwaXJlZ2lzdHJhdGlvbi5rOHMuaW8vdjEKICAgICAgLSBhcGlyZWdpc3RyYXRpb24uazhzLmlvL3YxYmV0YTEKICAgIEFsZXJ0bWFuYWdlcjoKICAgICAgLSBtb25pdG9yaW5nLmNvcmVvcy5jb20vdjEKICAgIEFwcGxpZWRDbHVzdGVyUmVzb3VyY2VRdW90YToKICAgICAgLSBxdW90YS5vcGVuc2hpZnQuaW8vdjEKICAgIEJpbmFyeUJ1aWxkUmVxdWVzdE9wdGlvbnM6CiAgICAgIC0gYnVpbGQub3BlbnNoaWZ0LmlvL3YxCiAgICBCaW5kaW5nOgogICAgICAtIHYxCiAgICBCcm9rZXJUZW1wbGF0ZUluc3RhbmNlOgogICAgICAtIHRlbXBsYXRlLm9wZW5zaGlmdC5pby92MQogICAgQnVpbGQ6CiAgICAgIC0gYnVpbGQub3BlbnNoaWZ0LmlvL3YxCiAgICBCdWlsZENvbmZpZzoKICAgICAgLSBidWlsZC5vcGVuc2hpZnQuaW8vdjEKICAgIEJ1aWxkTG9nOgogICAgICAtIGJ1aWxkLm9wZW5zaGlmdC5pby92MQogICAgQnVpbGRSZXF1ZXN0OgogICAgICAtIGJ1aWxkLm9wZW5zaGlmdC5pby92MQogICAgQnVuZGxlOgogICAgICAtIGF1dG9tYXRpb25icm9rZXIuaW8vdjFhbHBoYTEKICAgIEJ1bmRsZUJpbmRpbmc6CiAgICAgIC0gYXV0b21hdGlvbmJyb2tlci5pby92MWFscGhhMQogICAgQnVuZGxlSW5zdGFuY2U6CiAgICAgIC0gYXV0b21hdGlvbmJyb2tlci5pby92MWFscGhhMQogICAgQ2VydGlmaWNhdGVTaWduaW5nUmVxdWVzdDoKICAgICAgLSBjZXJ0aWZpY2F0ZXMuazhzLmlvL3YxYmV0YTEKICAgIENsdXN0ZXJOZXR3b3JrOgogICAgICAtIG5ldHdvcmsub3BlbnNoaWZ0LmlvL3YxCiAgICBDbHVzdGVyUmVzb3VyY2VRdW90YToKICAgICAgLSBxdW90YS5vcGVuc2hpZnQuaW8vdjEKICAgIENsdXN0ZXJSb2xlOgogICAgICAtIHJiYWMuYXV0aG9yaXphdGlvbi5rOHMuaW8vdjEKICAgICAgLSByYmFjLmF1dGhvcml6YXRpb24uazhzLmlvL3YxYmV0YTEKICAgICAgLSBhdXRob3JpemF0aW9uLm9wZW5zaGlmdC5pby92MQogICAgQ2x1c3RlclJvbGVCaW5kaW5nOgogICAgICAtIHJiYWMuYXV0aG9yaXphdGlvbi5rOHMuaW8vdjEKICAgICAgLSByYmFjLmF1dGhvcml6YXRpb24uazhzLmlvL3YxYmV0YTEKICAgICAgLSBhdXRob3JpemF0aW9uLm9wZW5zaGlmdC5pby92MQogICAgQ2x1c3RlclNlcnZpY2VCcm9rZXI6CiAgICAgIC0gc2VydmljZWNhdGFsb2cuazhzLmlvL3YxYmV0YTEKICAgIENsdXN0ZXJTZXJ2aWNlQ2xhc3M6CiAgICAgIC0gc2VydmljZWNhdGFsb2cuazhzLmlvL3YxYmV0YTEKICAgIENsdXN0ZXJTZXJ2aWNlUGxhbjoKICAgICAgLSBzZXJ2aWNlY2F0YWxvZy5rOHMuaW8vdjFiZXRhMQogICAgQ29tcG9uZW50U3RhdHVzOgogICAgICAtIHYxCiAgICBDb25maWdNYXA6CiAgICAgIC0gdjEKICAgIENvbnRyb2xsZXJSZXZpc2lvbjoKICAgICAgLSBhcHBzL3YxCiAgICAgIC0gYXBwcy92MWJldGExCiAgICAgIC0gYXBwcy92MWJldGEyCiAgICBDcm9uSm9iOgogICAgICAtIGJhdGNoL3YxYmV0YTEKICAgIEN1c3RvbVJlc291cmNlRGVmaW5pdGlvbjoKICAgICAgLSBhcGlleHRlbnNpb25zLms4cy5pby92MWJldGExCiAgICBEYWVtb25TZXQ6CiAgICAgIC0gYXBwcy92MQogICAgICAtIGFwcHMvdjFiZXRhMgogICAgICAtIGV4dGVuc2lvbnMvdjFiZXRhMQogICAgRGVwbG95bWVudDoKICAgICAgLSBhcHBzL3YxCiAgICAgIC0gYXBwcy92MWJldGExCiAgICAgIC0gYXBwcy92MWJldGEyCiAgICAgIC0gZXh0ZW5zaW9ucy92MWJldGExCiAgICBEZXBsb3ltZW50Q29uZmlnOgogICAgICAtIGFwcHMub3BlbnNoaWZ0LmlvL3YxCiAgICBEZXBsb3ltZW50Q29uZmlnUm9sbGJhY2s6CiAgICAgIC0gYXBwcy5vcGVuc2hpZnQuaW8vdjEKICAgIERlcGxveW1lbnRMb2c6CiAgICAgIC0gYXBwcy5vcGVuc2hpZnQuaW8vdjEKICAgIERlcGxveW1lbnRSZXF1ZXN0OgogICAgICAtIGFwcHMub3BlbnNoaWZ0LmlvL3YxCiAgICBEZXBsb3ltZW50Um9sbGJhY2s6CiAgICAgIC0gYXBwcy92MWJldGExCiAgICAgIC0gZXh0ZW5zaW9ucy92MWJldGExCiAgICBFZ3Jlc3NOZXR3b3JrUG9saWN5OgogICAgICAtIG5ldHdvcmsub3BlbnNoaWZ0LmlvL3YxCiAgICBFbmRwb2ludHM6CiAgICAgIC0gdjEKICAgIEV2ZW50OgogICAgICAtIGV2ZW50cy5rOHMuaW8vdjFiZXRhMQogICAgICAtIHYxCiAgICBFdmljdGlvbjoKICAgICAgLSB2MQogICAgR3JvdXA6CiAgICAgIC0gdXNlci5vcGVuc2hpZnQuaW8vdjEKICAgIEhvcml6b250YWxQb2RBdXRvc2NhbGVyOgogICAgICAtIGF1dG9zY2FsaW5nL3YxCiAgICAgIC0gYXV0b3NjYWxpbmcvdjJiZXRhMQogICAgSG9zdFN1Ym5ldDoKICAgICAgLSBuZXR3b3JrLm9wZW5zaGlmdC5pby92MQogICAgSWRlbnRpdHk6CiAgICAgIC0gdXNlci5vcGVuc2hpZnQuaW8vdjEKICAgIEltYWdlOgogICAgICAtIGltYWdlLm9wZW5zaGlmdC5pby92MQogICAgSW1hZ2VTaWduYXR1cmU6CiAgICAgIC0gaW1hZ2Uub3BlbnNoaWZ0LmlvL3YxCiAgICBJbWFnZVN0cmVhbToKICAgICAgLSBpbWFnZS5vcGVuc2hpZnQuaW8vdjEKICAgIEltYWdlU3RyZWFtSW1hZ2U6CiAgICAgIC0gaW1hZ2Uub3BlbnNoaWZ0LmlvL3YxCiAgICBJbWFnZVN0cmVhbUltcG9ydDoKICAgICAgLSBpbWFnZS5vcGVuc2hpZnQuaW8vdjEKICAgIEltYWdlU3RyZWFtTGF5ZXJzOgogICAgICAtIGltYWdlLm9wZW5zaGlmdC5pby92MQogICAgSW1hZ2VTdHJlYW1NYXBwaW5nOgogICAgICAtIGltYWdlLm9wZW5zaGlmdC5pby92MQogICAgSW1hZ2VTdHJlYW1UYWc6CiAgICAgIC0gaW1hZ2Uub3BlbnNoaWZ0LmlvL3YxCiAgICBJbmdyZXNzOgogICAgICAtIGV4dGVuc2lvbnMvdjFiZXRhMQogICAgSm9iOgogICAgICAtIGJhdGNoL3YxCiAgICBMaW1pdFJhbmdlOgogICAgICAtIHYxCiAgICBMb2NhbFJlc291cmNlQWNjZXNzUmV2aWV3OgogICAgICAtIGF1dGhvcml6YXRpb24ub3BlbnNoaWZ0LmlvL3YxCiAgICBMb2NhbFN1YmplY3RBY2Nlc3NSZXZpZXc6CiAgICAgIC0gYXV0aG9yaXphdGlvbi5rOHMuaW8vdjEKICAgICAgLSBhdXRob3JpemF0aW9uLms4cy5pby92MWJldGExCiAgICAgIC0gYXV0aG9yaXphdGlvbi5vcGVuc2hpZnQuaW8vdjEKICAgIE11dGF0aW5nV2ViaG9va0NvbmZpZ3VyYXRpb246CiAgICAgIC0gYWRtaXNzaW9ucmVnaXN0cmF0aW9uLms4cy5pby92MWJldGExCiAgICBOYW1lc3BhY2U6CiAgICAgIC0gdjEKICAgIE5ldE5hbWVzcGFjZToKICAgICAgLSBuZXR3b3JrLm9wZW5zaGlmdC5pby92MQogICAgTmV0d29ya1BvbGljeToKICAgICAgLSBuZXR3b3JraW5nLms4cy5pby92MQogICAgICAtIGV4dGVuc2lvbnMvdjFiZXRhMQogICAgTm9kZToKICAgICAgLSB2MQogICAgT0F1dGhBY2Nlc3NUb2tlbjoKICAgICAgLSBvYXV0aC5vcGVuc2hpZnQuaW8vdjEKICAgIE9BdXRoQXV0aG9yaXplVG9rZW46CiAgICAgIC0gb2F1dGgub3BlbnNoaWZ0LmlvL3YxCiAgICBPQXV0aENsaWVudDoKICAgICAgLSBvYXV0aC5vcGVuc2hpZnQuaW8vdjEKICAgIE9BdXRoQ2xpZW50QXV0aG9yaXphdGlvbjoKICAgICAgLSBvYXV0aC5vcGVuc2hpZnQuaW8vdjEKICAgIFBlcnNpc3RlbnRWb2x1bWU6CiAgICAgIC0gdjEKICAgIFBlcnNpc3RlbnRWb2x1bWVDbGFpbToKICAgICAgLSB2MQogICAgUG9kOgogICAgICAtIHYxCiAgICBQb2REaXNydXB0aW9uQnVkZ2V0OgogICAgICAtIHBvbGljeS92MWJldGExCiAgICBQb2RTZWN1cml0eVBvbGljeToKICAgICAgLSBwb2xpY3kvdjFiZXRhMQogICAgICAtIGV4dGVuc2lvbnMvdjFiZXRhMQogICAgUG9kU2VjdXJpdHlQb2xpY3lSZXZpZXc6CiAgICAgIC0gc2VjdXJpdHkub3BlbnNoaWZ0LmlvL3YxCiAgICBQb2RTZWN1cml0eVBvbGljeVNlbGZTdWJqZWN0UmV2aWV3OgogICAgICAtIHNlY3VyaXR5Lm9wZW5zaGlmdC5pby92MQogICAgUG9kU2VjdXJpdHlQb2xpY3lTdWJqZWN0UmV2aWV3OgogICAgICAtIHNlY3VyaXR5Lm9wZW5zaGlmdC5pby92MQogICAgUG9kVGVtcGxhdGU6CiAgICAgIC0gdjEKICAgIFByaW9yaXR5Q2xhc3M6CiAgICAgIC0gc2NoZWR1bGluZy5rOHMuaW8vdjFiZXRhMQogICAgUHJvamVjdDoKICAgICAgLSBwcm9qZWN0Lm9wZW5zaGlmdC5pby92MQogICAgUHJvamVjdFJlcXVlc3Q6CiAgICAgIC0gcHJvamVjdC5vcGVuc2hpZnQuaW8vdjEKICAgIFByb21ldGhldXM6CiAgICAgIC0gbW9uaXRvcmluZy5jb3Jlb3MuY29tL3YxCiAgICBQcm9tZXRoZXVzUnVsZToKICAgICAgLSBtb25pdG9yaW5nLmNvcmVvcy5jb20vdjEKICAgIFJhbmdlQWxsb2NhdGlvbjoKICAgICAgLSBzZWN1cml0eS5vcGVuc2hpZnQuaW8vdjEKICAgIFJlcGxpY2FTZXQ6CiAgICAgIC0gYXBwcy92MQogICAgICAtIGFwcHMvdjFiZXRhMgogICAgICAtIGV4dGVuc2lvbnMvdjFiZXRhMQogICAgUmVwbGljYXRpb25Db250cm9sbGVyOgogICAgICAtIHYxCiAgICBSZXBsaWNhdGlvbkNvbnRyb2xsZXJEdW1teToKICAgICAgLSBleHRlbnNpb25zL3YxYmV0YTEKICAgIFJlc291cmNlQWNjZXNzUmV2aWV3OgogICAgICAtIGF1dGhvcml6YXRpb24ub3BlbnNoaWZ0LmlvL3YxCiAgICBSZXNvdXJjZVF1b3RhOgogICAgICAtIHYxCiAgICBSb2xlOgogICAgICAtIHJiYWMuYXV0aG9yaXphdGlvbi5rOHMuaW8vdjEKICAgICAgLSByYmFjLmF1dGhvcml6YXRpb24uazhzLmlvL3YxYmV0YTEKICAgICAgLSBhdXRob3JpemF0aW9uLm9wZW5zaGlmdC5pby92MQogICAgUm9sZUJpbmRpbmc6CiAgICAgIC0gcmJhYy5hdXRob3JpemF0aW9uLms4cy5pby92MQogICAgICAtIHJiYWMuYXV0aG9yaXphdGlvbi5rOHMuaW8vdjFiZXRhMQogICAgICAtIGF1dGhvcml6YXRpb24ub3BlbnNoaWZ0LmlvL3YxCiAgICBSb2xlQmluZGluZ1Jlc3RyaWN0aW9uOgogICAgICAtIGF1dGhvcml6YXRpb24ub3BlbnNoaWZ0LmlvL3YxCiAgICBSb3V0ZToKICAgICAgLSByb3V0ZS5vcGVuc2hpZnQuaW8vdjEKICAgIFNjYWxlOgogICAgICAtIGFwcHMvdjEKICAgICAgLSBhcHBzL3YxYmV0YTEKICAgICAgLSBhcHBzL3YxYmV0YTIKICAgICAgLSBleHRlbnNpb25zL3YxYmV0YTEKICAgICAgLSB2MQogICAgICAtIGFwcHMub3BlbnNoaWZ0LmlvL3YxCiAgICBTZWNyZXQ6CiAgICAgIC0gdjEKICAgIFNlY3JldExpc3Q6CiAgICAgIC0gaW1hZ2Uub3BlbnNoaWZ0LmlvL3YxCiAgICBTZWN1cml0eUNvbnRleHRDb25zdHJhaW50czoKICAgICAgLSBzZWN1cml0eS5vcGVuc2hpZnQuaW8vdjEKICAgICAgLSB2MQogICAgU2VsZlN1YmplY3RBY2Nlc3NSZXZpZXc6CiAgICAgIC0gYXV0aG9yaXphdGlvbi5rOHMuaW8vdjEKICAgICAgLSBhdXRob3JpemF0aW9uLms4cy5pby92MWJldGExCiAgICBTZWxmU3ViamVjdFJ1bGVzUmV2aWV3OgogICAgICAtIGF1dGhvcml6YXRpb24uazhzLmlvL3YxCiAgICAgIC0gYXV0aG9yaXphdGlvbi5rOHMuaW8vdjFiZXRhMQogICAgICAtIGF1dGhvcml6YXRpb24ub3BlbnNoaWZ0LmlvL3YxCiAgICBTZXJ2aWNlOgogICAgICAtIHYxCiAgICBTZXJ2aWNlQWNjb3VudDoKICAgICAgLSB2MQogICAgU2VydmljZUJpbmRpbmc6CiAgICAgIC0gc2VydmljZWNhdGFsb2cuazhzLmlvL3YxYmV0YTEKICAgIFNlcnZpY2VCcm9rZXI6CiAgICAgIC0gc2VydmljZWNhdGFsb2cuazhzLmlvL3YxYmV0YTEKICAgIFNlcnZpY2VDbGFzczoKICAgICAgLSBzZXJ2aWNlY2F0YWxvZy5rOHMuaW8vdjFiZXRhMQogICAgU2VydmljZUluc3RhbmNlOgogICAgICAtIHNlcnZpY2VjYXRhbG9nLms4cy5pby92MWJldGExCiAgICBTZXJ2aWNlTW9uaXRvcjoKICAgICAgLSBtb25pdG9yaW5nLmNvcmVvcy5jb20vdjEKICAgIFNlcnZpY2VQbGFuOgogICAgICAtIHNlcnZpY2VjYXRhbG9nLms4cy5pby92MWJldGExCiAgICBTdGF0ZWZ1bFNldDoKICAgICAgLSBhcHBzL3YxCiAgICAgIC0gYXBwcy92MWJldGExCiAgICAgIC0gYXBwcy92MWJldGEyCiAgICBTdG9yYWdlQ2xhc3M6CiAgICAgIC0gc3RvcmFnZS5rOHMuaW8vdjEKICAgICAgLSBzdG9yYWdlLms4cy5pby92MWJldGExCiAgICBTdWJqZWN0QWNjZXNzUmV2aWV3OgogICAgICAtIGF1dGhvcml6YXRpb24uazhzLmlvL3YxCiAgICAgIC0gYXV0aG9yaXphdGlvbi5rOHMuaW8vdjFiZXRhMQogICAgICAtIGF1dGhvcml6YXRpb24ub3BlbnNoaWZ0LmlvL3YxCiAgICBTdWJqZWN0UnVsZXNSZXZpZXc6CiAgICAgIC0gYXV0aG9yaXphdGlvbi5vcGVuc2hpZnQuaW8vdjEKICAgIFRlbXBsYXRlOgogICAgICAtIHRlbXBsYXRlLm9wZW5zaGlmdC5pby92MQogICAgVGVtcGxhdGVJbnN0YW5jZToKICAgICAgLSB0ZW1wbGF0ZS5vcGVuc2hpZnQuaW8vdjEKICAgIFRva2VuUmV2aWV3OgogICAgICAtIGF1dGhlbnRpY2F0aW9uLms4cy5pby92MQogICAgICAtIGF1dGhlbnRpY2F0aW9uLms4cy5pby92MWJldGExCiAgICBVc2VyOgogICAgICAtIHVzZXIub3BlbnNoaWZ0LmlvL3YxCiAgICBVc2VySWRlbnRpdHlNYXBwaW5nOgogICAgICAtIHVzZXIub3BlbnNoaWZ0LmlvL3YxCiAgICBWYWxpZGF0aW5nV2ViaG9va0NvbmZpZ3VyYXRpb246CiAgICAgIC0gYWRtaXNzaW9ucmVnaXN0cmF0aW9uLms4cy5pby92MWJldGExCiAgICBWb2x1bWVBdHRhY2htZW50OgogICAgICAtIHN0b3JhZ2UuazhzLmlvL3YxYmV0YTEKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABjb25maWdzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDc1NQAwMDAwNzY1ADAwMDAwMjQAMDAwMDAwMDAwMDAAMTQwNjQxMTEyNzYAMDE0NDc2ACA1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyADAwYXNob2twb25rdW1hcgAAAAAAAAAAAAAAAAAAAAAAAABzdGFmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGNvbmZpZ3MvZGMueWFtbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDA3NjUAMDAwMDAyNAAwMDAwMDAwMDE3NAAxNDA2NDExMTI3NgAwMTYwMzEAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIAMDBhc2hva3Bvbmt1bWFyAAAAAAAAAAAAAAAAAAAAAAAAAHN0YWZmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbW92ZTJrdWJlOgogIGNvbnRhaW5lcml6YXRpb246CiAgICB0eXBlczoKICAgICAgLSBSZXVzZQogICAgICAtIFJldXNlRG9ja2VyZmlsZQogIHNvdXJjZXM6CiAgICB0eXBlczoKICAgICAgLSBEb2NrZXJDb21wb3NlCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0cmFuc2Zvcm1lcnMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDc1NQAwMDAwNzY1ADAwMDAwMjQAMDAwMDAwMDAwMDAAMTQwNjY1MzQ0MzUAMDE1NjAzACA1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyADAwYXNob2twb25rdW1hcgAAAAAAAAAAAAAAAAAAAAAAAABzdGFmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRyYW5zZm9ybWVycy9jbG91ZGZvdW5kcnkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNzU1ADAwMDA3NjUAMDAwMDAyNAAwMDAwMDAwMDAwMAAxNDA2NDE2MjQzNgAwMjAzMTQAIDUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIAMDBhc2hva3Bvbmt1bWFyAAAAAAAAAAAAAAAAAAAAAAAAAHN0YWZmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdHJhbnNmb3JtZXJzL2Nsb3VkZm91bmRyeS9jbG91ZGZvdW5kcnkueWFtbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAwMDc2NQAwMDAwMDI0ADAwMDAwMDAwMzQzADE0MDY1MDUwMDYyADAyMzc2NAAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhcgAwMGFzaG9rcG9ua3VtYXIAAAAAAAAAAAAAAAAAAAAAAAAAc3RhZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhcGlWZXJzaW9uOiBtb3ZlMmt1YmUua29udmV5b3IuaW8vdjFhbHBoYTEKa2luZDogVHJhbnNmb3JtZXIKbWV0YWRhdGE6CiAgbmFtZTogQ2xvdWRGb3VuZHJ5CnNwZWM6CiAgbW9kZTogIkNvbnRhaW5lciIKICBjbGFzczogIkNsb3VkRm91bmRyeSIKICBnZW5lcmF0ZXM6IAogICAgLSAiQ29udGFpbmVyQnVpbGQiCiAgICAtICJJUiIKICBleGNsdXNpdmU6IAogICAgLSAiQ29udGFpbmVyQnVpbGQiCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRyYW5zZm9ybWVycy9jbmIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNzU1ADAwMDA3NjUAMDAwMDAyNAAwMDAwMDAwMDAwMAAxNDA2NDExMTI3NgAwMTYzMzUAIDUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIAMDBhc2hva3Bvbmt1bWFyAAAAAAAAAAAAAAAAAAAAAAAAAHN0YWZmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdHJhbnNmb3JtZXJzL2NuYi9jZmNuYgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NTUAMDAwMDc2NQAwMDAwMDI0ADAwMDAwMDAwMDAwADE0MDY0MTExMjc2ADAxNzQxMAAgNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhcgAwMGFzaG9rcG9ua3VtYXIAAAAAAAAAAAAAAAAAAAAAAAAAc3RhZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0cmFuc2Zvcm1lcnMvY25iL2NmY25iL2NmY25iLnlhbWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAwNzY1ADAwMDAwMjQAMDAwMDAwMDA0NjcAMTQwNjUwNTAwNjYAMDIxNDM1ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyADAwYXNob2twb25rdW1hcgAAAAAAAAAAAAAAAAAAAAAAAABzdGFmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFwaVZlcnNpb246IG1vdmUya3ViZS5rb252ZXlvci5pby92MWFscGhhMQpraW5kOiBUcmFuc2Zvcm1lcgptZXRhZGF0YToKICBuYW1lOiBDTkJDb250YWluZXJpemVyCnNwZWM6CiAgbW9kZTogIkNvbnRhaW5lciIKICBjbGFzczogIkNOQkNvbnRhaW5lcml6ZXIiCiAgZ2VuZXJhdGVzOiAKICAgIC0gIkNvbnRhaW5lckJ1aWxkIgogICAgLSAiSVIiCiAgICAtICJDTkJNZXRhZGF0YSIKICBleGNsdXNpdmU6IAogICAgLSAiQ29udGFpbmVyQnVpbGQiCiAgY29uZmlnOgogICAgQ05CQnVpbGRlcjogImNsb3VkZm91bmRyeS9jbmI6Y2ZsaW51eGZzMyIKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdHJhbnNmb3JtZXJzL2NuYi9jbmJnZW5lcmF0b3IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NTUAMDAwMDc2NQAwMDAwMDI0ADAwMDAwMDAwMDAwADE0MDY0MTExMjc2ADAyMTAwNgAgNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhcgAwMGFzaG9rcG9ua3VtYXIAAAAAAAAAAAAAAAAAAAAAAAAAc3RhZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0cmFuc2Zvcm1lcnMvY25iL2NuYmdlbmVyYXRvci9jbmJnZW5lcmF0b3IueWFtbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAwNzY1ADAwMDAwMjQAMDAwMDAwMDAzMzIAMTQwNjUwNTA0MzAAMDI0NDEzACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyADAwYXNob2twb25rdW1hcgAAAAAAAAAAAAAAAAAAAAAAAABzdGFmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFwaVZlcnNpb246IG1vdmUya3ViZS5rb252ZXlvci5pby92MWFscGhhMQpraW5kOiBUcmFuc2Zvcm1lcgptZXRhZGF0YToKICBuYW1lOiBDTkJHZW5lcmF0b3IKc3BlYzoKICBtb2RlOiAiQ29udGFpbmVyIgogIGNsYXNzOiAiQ05CR2VuZXJhdG9yIgogIGdlbmVyYXRlczogCiAgICAtICJDb250YWluZXJCdWlsZFNjcmlwdCIKICBjb25zdW1lczogCiAgICAtICJDTkJNZXRhZGF0YSIKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdHJhbnNmb3JtZXJzL2NuYi9jbmJnZW5lcmF0b3IvdGVtcGxhdGVzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NTUAMDAwMDc2NQAwMDAwMDI0ADAwMDAwMDAwMDAwADE0MDY1MDU0NzAwADAyMzAwMwAgNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhcgAwMGFzaG9rcG9ua3VtYXIAAAAAAAAAAAAAAAAAAAAAAAAAc3RhZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0cmFuc2Zvcm1lcnMvY25iL2NuYmdlbmVyYXRvci90ZW1wbGF0ZXMvYnVpbGRjbmIuYmF0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDc1NQAwMDAwNzY1ADAwMDAwMjQAMDAwMDAwMDEyMTYAMTQwNjUwNTY1NTAAMDI1MzQ0ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyADAwYXNob2twb25rdW1hcgAAAAAAAAAAAAAAAAAAAAAAAABzdGFmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADo6IENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAyMQo6Ogo6OiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cjo6ICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgo6OiAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAo6Ogo6OiAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCjo6Cjo6ICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCjo6ICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAo6OiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCjo6ICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCjo6ICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCnBhY2sgYnVpbGQge3sgLkltYWdlTmFtZSB9fSAtQiB7eyAuQ05CQnVpbGRlciB9fQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0cmFuc2Zvcm1lcnMvY25iL2NuYmdlbmVyYXRvci90ZW1wbGF0ZXMvYnVpbGRjbmIuc2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDc1NQAwMDAwNzY1ADAwMDAwMjQAMDAwMDAwMDEyMTEAMTQwNjUwNTY1NjIAMDI1MjA2ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyADAwYXNob2twb25rdW1hcgAAAAAAAAAAAAAAAAAAAAAAAABzdGFmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMgICBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMjEKIwojICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiMgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIwojICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIwojICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgojICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgpwYWNrIGJ1aWxkIHt7IC5JbWFnZU5hbWUgfX0gLUIge3sgLkNOQkJ1aWxkZXIgfX0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0cmFuc2Zvcm1lcnMvY25iL2djcmNuYgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDc1NQAwMDAwNzY1ADAwMDAwMjQAMDAwMDAwMDAwMDAAMTQwNjQxMTEyNzYAMDE3NTczACA1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyADAwYXNob2twb25rdW1hcgAAAAAAAAAAAAAAAAAAAAAAAABzdGFmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRyYW5zZm9ybWVycy9jbmIvZ2NyY25iL2djcmNuYi55YW1sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDA3NjUAMDAwMDAyNAAwMDAwMDAwMDQ3MAAxNDA2NTA1MDEwMAAwMjE3NjIAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIAMDBhc2hva3Bvbmt1bWFyAAAAAAAAAAAAAAAAAAAAAAAAAHN0YWZmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYXBpVmVyc2lvbjogbW92ZTJrdWJlLmtvbnZleW9yLmlvL3YxYWxwaGExCmtpbmQ6IFRyYW5zZm9ybWVyCm1ldGFkYXRhOgogIG5hbWU6IEdDUkNOQkNvbnRhaW5lcml6ZXIKc3BlYzoKICBtb2RlOiAiQ29udGFpbmVyIgogIGNsYXNzOiAiQ05CQ29udGFpbmVyaXplciIKICBnZW5lcmF0ZXM6IAogICAgLSAiQ29udGFpbmVyQnVpbGQiCiAgICAtICJJUiIKICAgIC0gIkNOQk1ldGFkYXRhIgogIGV4Y2x1c2l2ZTogCiAgICAtICJDb250YWluZXJCdWlsZCIKICBjb25maWc6CiAgICBDTkJCdWlsZGVyOiAiZ2NyLmlvL2J1aWxkcGFja3MvYnVpbGRlciIKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0cmFuc2Zvcm1lcnMvY29tcG9zZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDc1NQAwMDAwNzY1ADAwMDAwMjQAMDAwMDAwMDAwMDAAMTQwNjQxMTEyNzYAMDE3MjQwACA1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyADAwYXNob2twb25rdW1hcgAAAAAAAAAAAAAAAAAAAAAAAABzdGFmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRyYW5zZm9ybWVycy9jb21wb3NlL2NvbXBvc2VhbmFseXNlci55YW1sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDA3NjUAMDAwMDAyNAAwMDAwMDAwMDQzMgAxNDA2NTA1MDEwNgAwMjM0MDEAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIAMDBhc2hva3Bvbmt1bWFyAAAAAAAAAAAAAAAAAAAAAAAAAHN0YWZmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYXBpVmVyc2lvbjogbW92ZTJrdWJlLmtvbnZleW9yLmlvL3YxYWxwaGExCmtpbmQ6IFRyYW5zZm9ybWVyCm1ldGFkYXRhOgogIG5hbWU6IENvbXBvc2VBbmFseXNlcgpzcGVjOgogIG1vZGU6ICJDb250YWluZXIiCiAgY2xhc3M6ICJDb21wb3NlQW5hbHlzZXIiCiAgZ2VuZXJhdGVzOiAKICAgIC0gIkNvbnRhaW5lckJ1aWxkIgogICAgLSAiSVIiCiAgICAtICJEb2NrZXJmaWxlIgogIGV4Y2x1c2l2ZTogCiAgICAtICJDb250YWluZXJCdWlsZCIKICAgIC0gIklSIgogICAgLSAiRG9ja2VyZmlsZSIKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0cmFuc2Zvcm1lcnMvY29tcG9zZS9jb21wb3NlZ2VuZXJhdG9yLnlhbWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAwNzY1ADAwMDAwMjQAMDAwMDAwMDAzMjIAMTQwNjUwNTAxMTIAMDIzNTQ0ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyADAwYXNob2twb25rdW1hcgAAAAAAAAAAAAAAAAAAAAAAAABzdGFmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFwaVZlcnNpb246IG1vdmUya3ViZS5rb252ZXlvci5pby92MWFscGhhMQpraW5kOiBUcmFuc2Zvcm1lcgptZXRhZGF0YToKICBuYW1lOiBDb21wb3NlR2VuZXJhdG9yCnNwZWM6CiAgbW9kZTogIkNvbnRhaW5lciIKICBjbGFzczogIkNvbXBvc2VHZW5lcmF0b3IiCiAgZ2VuZXJhdGVzOiAKICAgIC0gIkRvY2tlckNvbXBvc2UiCiAgY29uc3VtZXM6IAogICAgLSAiSVIiCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdHJhbnNmb3JtZXJzL2RvY2tlcmZpbGVkZXRlY3RvcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NTUAMDAwMDc2NQAwMDAwMDI0ADAwMDAwMDAwMDAwADE0MDY0MTc2Mzc2ADAyMTQ1MAAgNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhcgAwMGFzaG9rcG9ua3VtYXIAAAAAAAAAAAAAAAAAAAAAAAAAc3RhZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0cmFuc2Zvcm1lcnMvZG9ja2VyZmlsZWRldGVjdG9yL2RvY2tlcmZpbGVkZXRlY3Rvci55YW1sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAwNzY1ADAwMDAwMjQAMDAwMDAwMDA0MTIAMTQwNjUwNTAxMTYAMDI2MjMxACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyADAwYXNob2twb25rdW1hcgAAAAAAAAAAAAAAAAAAAAAAAABzdGFmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFwaVZlcnNpb246IG1vdmUya3ViZS5rb252ZXlvci5pby92MWFscGhhMQpraW5kOiBUcmFuc2Zvcm1lcgptZXRhZGF0YToKICBuYW1lOiBEb2NrZXJmaWxlRGV0ZWN0b3IKc3BlYzoKICBtb2RlOiAiQ29udGFpbmVyIgogIGNsYXNzOiAiRG9ja2VyZmlsZURldGVjdG9yIgogIGdlbmVyYXRlczogCiAgICAtICJDb250YWluZXJCdWlsZCIKICAgIC0gIkRvY2tlcmZpbGUiCiAgZXhjbHVzaXZlOiAKICAgIC0gIkNvbnRhaW5lckJ1aWxkIgogICAgLSAiRG9ja2VyZmlsZSIKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdHJhbnNmb3JtZXJzL2V4ZWN1dGFibGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NTUAMDAwMDc2NQAwMDAwMDI0ADAwMDAwMDAwMDAwADE0MDY0MTExMjc2ADAxNzcxNAAgNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhcgAwMGFzaG9rcG9ua3VtYXIAAAAAAAAAAAAAAAAAAAAAAAAAc3RhZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0cmFuc2Zvcm1lcnMvZXhlY3V0YWJsZS9kb2NrZXJmaWxlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDc1NQAwMDAwNzY1ADAwMDAwMjQAMDAwMDAwMDAwMDAAMTQwNjQxMTEyNzYAMDIyMDIzACA1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyADAwYXNob2twb25rdW1hcgAAAAAAAAAAAAAAAAAAAAAAAABzdGFmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRyYW5zZm9ybWVycy9leGVjdXRhYmxlL2RvY2tlcmZpbGUvZGphbmdvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNzU1ADAwMDA3NjUAMDAwMDAyNAAwMDAwMDAwMDAwMAAxNDA2NDExMTI3NgAwMjMyNjUAIDUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIAMDBhc2hva3Bvbmt1bWFyAAAAAAAAAAAAAAAAAAAAAAAAAHN0YWZmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdHJhbnNmb3JtZXJzL2V4ZWN1dGFibGUvZG9ja2VyZmlsZS9kamFuZ28vZGphbmdvLnlhbWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAwMDc2NQAwMDAwMDI0ADAwMDAwMDAwNDYxADE0MDY1MDUwMTI0ADAyNTQ2NgAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhcgAwMGFzaG9rcG9ua3VtYXIAAAAAAAAAAAAAAAAAAAAAAAAAc3RhZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhcGlWZXJzaW9uOiBtb3ZlMmt1YmUua29udmV5b3IuaW8vdjFhbHBoYTEKa2luZDogVHJhbnNmb3JtZXIKbWV0YWRhdGE6CiAgbmFtZTogRGphbmdvCnNwZWM6CiAgbW9kZTogIkNvbnRhaW5lciIKICBjbGFzczogIlNpbXBsZUV4ZWN1dGFibGUiCiAgZ2VuZXJhdGVzOiAKICAgIC0gIkNvbnRhaW5lckJ1aWxkIgogICAgLSAiRG9ja2VyZmlsZSIKICBleGNsdXNpdmU6IAogICAgLSAiQ29udGFpbmVyQnVpbGQiCiAgICAtICJEb2NrZXJmaWxlIgogIGNvbmZpZzoKICAgIGRpcmVjdG9yeURldGVjdENNRDogWyIuL20ya2RldGVjdC5zaCJdCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRyYW5zZm9ybWVycy9leGVjdXRhYmxlL2RvY2tlcmZpbGUvZGphbmdvL20ya2RldGVjdC5zaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNzU1ADAwMDA3NjUAMDAwMDAyNAAwMDAwMDAwMTQyMgAxNDA2NTA1NjYyMAAwMjU1NjYAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIAMDBhc2hva3Bvbmt1bWFyAAAAAAAAAAAAAAAAAAAAAAAAAHN0YWZmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIyEvdXNyL2Jpbi9lbnYgYmFzaAoKIyAgIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAyMAojCiMgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAojCiMgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAojICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCiMgVGFrZXMgYXMgaW5wdXQgdGhlIHNvdXJjZSBmb2xkZXIgYW5kIHJldHVybnMgZXJyb3IgaWYgaXQgaXMgbm90IGZpdAppZiBbICEgLWYgIiQxL1BpcGZpbGUiIF07IHRoZW4KICAgZXhpdCAxCmZpCgplY2hvICd7InBvcnQiOiA4MDgwLCAiYmluZGluZyI6ICIwLjAuMC4wOjgwODAifScKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRyYW5zZm9ybWVycy9leGVjdXRhYmxlL2RvY2tlcmZpbGUvZGphbmdvL3RlbXBsYXRlcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNzU1ADAwMDA3NjUAMDAwMDAyNAAwMDAwMDAwMDAwMAAxNDA2NDExMTI3NgAwMjUyNjMAIDUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIAMDBhc2hva3Bvbmt1bWFyAAAAAAAAAAAAAAAAAAAAAAAAAHN0YWZmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdHJhbnNmb3JtZXJzL2V4ZWN1dGFibGUvZG9ja2VyZmlsZS9kamFuZ28vdGVtcGxhdGVzL0RvY2tlcmZpbGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAwMDc2NQAwMDAwMDI0ADAwMDAwMDAxNDIwADE0MDY0MTExMjc2ADAyNzMzMQAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhcgAwMGFzaG9rcG9ua3VtYXIAAAAAAAAAAAAAAAAAAAAAAAAAc3RhZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjICAgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDIwCiMKIyAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwojICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgojICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKIyAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKRlJPTSByZWdpc3RyeS5hY2Nlc3MucmVkaGF0LmNvbS91Ymk4L3B5dGhvbi0zNgpXT1JLRElSIC9hcHAKQ09QWSAuIC4KUlVOIHBpcCBpbnN0YWxsIC1yIHJlcXVpcmVtZW50cy50eHQKRVhQT1NFIHt7IC5wb3J0IH19CkNNRCBbInB5dGhvbiIsICJtYW5hZ2UucHkiLCAicnVuc2VydmVyIiwgInt7IC5iaW5kaW5nIH19Il0KAAAAAAAAAAAAAAAA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UiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgojICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgojIEJ1aWxkIEFwcApGUk9NIHJlZ2lzdHJ5LmFjY2Vzcy5yZWRoYXQuY29tL3ViaTgvdWJpOmxhdGVzdCBBUyBidWlsZF9iYXNlCldPUktESVIgL3RlbXAKRU5WIEdPUEFUSD0vZ28KRU5WIFBBVEg9JEdPUEFUSC9iaW46L3Vzci9sb2NhbC9nby9iaW46L3Vzci9sb2NhbC9zYmluOi91c3IvbG9jYWwvYmluOi91c3Ivc2JpbjovdXNyL2Jpbjovc2JpbjovYmluClJVTiBjdXJsIC1vIGdvLnRhci5neiBodHRwczovL2RsLmdvb2dsZS5jb20vZ28vZ28xLjE2LmxpbnV4LWFtZDY0LnRhci5negpSVU4gdGFyIC14emYgZ28udGFyLmd6ICYmIG12IGdvIC91c3IvbG9jYWwvClJVTiB5dW0gaW5zdGFsbCBnaXQgbWFrZSAteSAKUlVOIG1rZGlyIC1wICRHT1BBVEgvc3JjICRHT1BBVEgvYmluICYmIGNobW9kIC1SIDc3NyAkR09QQVRICldPUktESVIgL3t7IC5hcHBfbmFtZSB9fQpDT1BZIC4gLgpSVU4gZ28gYnVpbGQgLW8ge3sgLmFwcF9uYW1lIH19ClJVTiBjcCAuL3t7IC5hcHBfbmFtZSB9fSAvYmluL3t7IC5hcHBfbmFtZSB9fQoKIyBSdW4gQXBwCkZST00gcmVnaXN0cnkuYWNjZXNzLnJlZGhhdC5jb20vdWJpOC91YmktbWluaW1hbDo4LjMtMjAxCkNPUFkgLS1mcm9tPWJ1aWxkX2Jhc2UgL2Jpbi97eyAuYXBwX25hbWUgfX0gL2Jpbi97eyAuYXBwX25hbWUgfX0KRVhQT1NFIHt7IC5wb3J0IH19CkNNRCBbInt7IC5hcHBfbmFtZSB9fSJdCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIyAgIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAyMAojCiMgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAojCiMgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAojICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCkZST00gcmVnaXN0cnkuYWNjZXNzLnJlZGhhdC5jb20vdWJpOC91YmktbWluaW1hbDo4LjMtMjAxClJVTiBtaWNyb2RuZiB1cGRhdGUgJiYgbWljcm9kbmYgaW5zdGFsbCAteSBqYXZhLTExLW9wZW5qZGstZGV2ZWwgd2dldCB0YXIgJiYgbWljcm9kbmYgY2xlYW4gYWxsCldPUktESVIgL3Vzci9sb2NhbApSVU4gd2dldCBodHRwczovL2Rvd25sb2Fkcy5hcGFjaGUub3JnL3RvbWNhdC90b21jYXQtOS92OS4wLjM5L2Jpbi9hcGFjaGUtdG9tY2F0LTkuMC4zOS50YXIuZ3ogJiYgdGFyIC16eGYgYXBhY2hlLXRvbWNhdC05LjAuMzkudGFyLmd6ICYmIHJtIC1mIGFwYWNoZS10b21jYXQtOS4wLjM5LnRhci5neiAmJiBtdiBhcGFjaGUtdG9tY2F0LTkuMC4zOSB0b21jYXQ5ClJVTiB1c2VyYWRkIC1yIHRvbWNhdCAmJiBjaG93biAtUiB0b21jYXQ6dG9tY2F0IHRvbWNhdDkKRU5WIENBVEFMSU5BX1BJRD0nL3Vzci9sb2NhbC90b21jYXQ5L3RlbXAvdG9tY2F0LnBpZCcgQ0FUQUxJTkFfSE9NRT0nL3Vzci9sb2NhbC90b21jYXQ5JyBDQVRBTElOQV9CQVNFPScvdXNyL2xvY2FsL3RvbWNhdDknCkNPUFkgLS1jaG93bj10b21jYXQ6dG9tY2F0IHt7IC53YXJfcGF0aCB9fSAiJENBVEFMSU5BX0JBU0UiL3dlYmFwcHMvClVTRVIgdG9tY2F0OnRvbWNhdApFWFBPU0Uge3sgLnBvcnQgfX0KQ01EIFsgIi91c3IvbG9jYWwvdG9tY2F0OS9iaW4vY2F0YWxpbmEuc2giLCAicnVuIiBdCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdHJhbnNmb3JtZXJzL2V4ZWN1dGFibGUvZG9ja2VyZmlsZS9qYXZhYW50AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NTUAMDAwMDc2NQAwMDAwMDI0ADAwMDAwMDAw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Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgpGUk9NIHJlZ2lzdHJ5LmFjY2Vzcy5yZWRoYXQuY29tL3ViaTgvdWJpOmxhdGVzdCBBUyBidWlsZF9iYXNlClJVTiB5dW0gaW5zdGFsbCAteSBqYXZhLTEuOC4wLW9wZW5qZGstZGV2ZWwKUlVOIHl1bSBpbnN0YWxsIC15IHdnZXQKUlVOIHl1bSBpbnN0YWxsIC15IHVuemlwClJVTiB3Z2V0IGh0dHBzOi8vbWlycm9ycy5lc3RvaW50ZXJuZXQuaW4vYXBhY2hlLy9hbnQvYmluYXJpZXMvYXBhY2hlLWFudC0xLjEwLjgtYmluLnppcCAtUCAvdG1wClJVTiB1bnppcCAtZCAvb3B0L2FwYWNoZS1hbnQgL3RtcC9hcGFjaGUtYW50LTEuMTAuOC1iaW4uemlwCkVOViBQQVRIPSIkUEFUSDovb3B0L2FwYWNoZS1hbnQvYXBhY2hlLWFudC0xLjEwLjgvYmluLyIKQ09QWSAuIC97eyAuYXBwX25hbWUgfX0KV09SS0RJUiAve3sgLmFwcF9uYW1lIH19ClJVTiB7eyAuYW50X2NtZCB9fQoKRlJPTSByZWdpc3RyeS5hY2Nlc3MucmVkaGF0LmNvbS9qYm9zcy1lYXAtNi9lYXA2NC1vcGVuc2hpZnQ6bGF0ZXN0CkVYUE9TRSB7eyAucG9ydCB9fQpDT1BZIC0tZnJvbT1idWlsZF9iYXNlIC97eyAuYXBwX25hbWUgfX0vb3V0cHV0L3t7IC5hcHBfbmFtZSB9fS5lYXIgL29wdC9lYXAvc3RhbmRhbG9uZS9kZXBsb3ltZW50cy8KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKIyAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKIyBCdWlsZCBBcHAKRlJPTSByZWdpc3RyeS5hY2Nlc3MucmVkaGF0LmNvbS91Ymk4L3ViaTpsYXRlc3QgQVMgYnVpbGRfYmFzZQpSVU4geXVtIGluc3RhbGwgLXkgamF2YS0xLjguMC1vcGVuamRrLWRldmVsClJVTiB5dW0gaW5zdGFsbCAteSB3Z2V0ClJVTiB5dW0gaW5zdGFsbCAteSB1bnppcApSVU4gd2dldCBodHRwczovL3NlcnZpY2VzLmdyYWRsZS5vcmcvZGlzdHJpYnV0aW9ucy9ncmFkbGUtNi42LWJpbi56aXAgLVAgL3RtcApSVU4gdW56aXAgLWQgL29wdC9ncmFkbGUgL3RtcC9ncmFkbGUtNi42LWJpbi56aXAKRU5WIFBBVEg9IiRQQVRIOi9vcHQvZ3JhZGxlL2dyYWRsZS02LjYvYmluLyIKQ09QWSAuIC97eyAuYXBwX25hbWUgfX0KV09SS0RJUiAve3sgLmFwcF9uYW1lIH19ClJVTiBncmFkbGUgYnVpbGQKCiMgUnVuIEFwcApGUk9NIHJlZ2lzdHJ5LmFjY2Vzcy5yZWRoYXQuY29tL2pib3NzLWVhcC02L2VhcDY0LW9wZW5zaGlmdDpsYXRlc3QKRVhQT1NFIHt7IC5wb3J0IH19CkNPUFkgLS1mcm9tPWJ1aWxkX2Jhc2UgL3t7IC5hcHBfbmFtZSB9fS9idWlsZC9saWJzLyogL29wdC9lYXAvc3RhbmRhbG9uZS9kZXBsb3ltZW50cy8KAAAAAAAAAAAAAAAAAAAA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c2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAojCiMgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAojICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCiMgQnVpbGQgQXBwCkZST00gcmVnaXN0cnkuYWNjZXNzLnJlZGhhdC5jb20vdWJpOC91Ymk6bGF0ZXN0IEFTIGJ1aWxkX2Jhc2UKUlVOIHl1bSBpbnN0YWxsIC15IGphdmEtMS44LjAtb3Blbmpkay1kZXZlbApSVU4geXVtIGluc3RhbGwgLXkgbWF2ZW4KQ09QWSAuIC97eyAuYXBwX25hbWUgfX0KV09SS0RJUiAve3sgLmFwcF9uYW1lIH19ClJVTiBtdm4gcGFja2FnZQoKIyBSdW4gQXBwCkZST00gcmVnaXN0cnkuYWNjZXNzLnJlZGhhdC5jb20vamJvc3MtZWFwLTYvZWFwNjQtb3BlbnNoaWZ0OmxhdGVzdApFWFBPU0Uge3sgLnBvcnQgfX0KQ09QWSAtLWZyb209YnVpbGRfYmFzZSAve3sgLmFwcF9uYW1lIH19L3RhcmdldC8qIC9vcHQvZWFwL3N0YW5kYWxv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bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAojICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCiMgVGFrZXMgYXMgaW5wdXQgdGhlIHNvdXJjZSBmb2xkZXIgYW5kIHJldHVybnMgZXJyb3IgaWYgaXQgaXMgbm90IGZpdApCQVNFX0RJUj0iJDEiClNQRUNJQUxfRklMRVM9KCIkQkFTRV9ESVIiL3JlcXVpcmVtZW50cy50eHQgIiRCQVNFX0RJUiIvc2V0dXAucHkgIiRCQVNFX0RJUiIvZW52aXJvbm1lbnQueW1sICIkQkFTRV9ESVIiL1BpcGZpbGUpCgpmb3IgZmlsZU5hbWUgaW4gIiR7U1BFQ0lBTF9GSUxFU1tAXX0iOyBkbwogICBpZiBbIC1mICIkZmlsZU5hbWUiIF07IHRoZW4KICAgICAgbWFpbl9zY3JpcHRfcGF0aD0iJChncmVwIC1sUmUgIl9fbWFpbl9fIiAiJEJBU0VfRElSIiB8IGF3ayAnLy5weSQvIHtwcmludH0nIHwgaGVhZCAtbiAxKSIKICAgICAgbWFpbl9zY3JpcHRfcmVsX3BhdGg9IiQocmVhbHBhdGggLS1yZWxhdGl2ZS10bz0iJEJBU0VfRElSIiAiJG1haW5fc2NyaXB0X3BhdGgiKSIKICAgICAgcHJpbnRmICd7Im1haW5fc2NyaXB0X3JlbF9wYXRoIjogIiVzIiwgImFwcF9uYW1lIjogImFwcCIsICJwb3J0IjogODA4MH0nICIkbWFpbl9zY3JpcHRfcmVsX3BhdGgiCiAgICAgIGV4aXQgMAogICBmaQpkb25lCgpleGl0IDEKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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T05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgojICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgojIFRha2VzIGFzIGlucHV0IHRoZSBzb3VyY2UgZm9sZGVyIGFuZCByZXR1cm5zIGVycm9yIGlmIGl0IGlzIG5vdCBmaXQKQkFTRV9ESVI9JDEKTkFUSVZFX0lNQUdFPSJyZWdpc3RyeS5hY2Nlc3MucmVkaGF0LmNvbS9yZWRoYXQtb3Blbmpkay0xOC9vcGVuamRrMTgtb3BlbnNoaWZ0OmxhdGVzdCIKV0VCX0lNQUdFPSJyZWdpc3RyeS5hY2Nlc3MucmVkaGF0LmNvbS9qYm9zcy1lYXAtNi9lYXA2NC1vcGVuc2hpZnQ6bGF0ZXN0IgoKIyBHcmFkbGUgbm90IHN1cHBvcnRlZCB5ZXQKaWYgWyAtZiAiJDEvYnVpbGQuZ3JhZGxlIiBdOyB0aGVuCiAgIGV4aXQgMQpmaQoKIyBBbnQgbm90IHN1cHBvcnRlZCB5ZXQKaWYgWyAtZiAiJDEvYnVpbGQueG1sIiBdOyB0aGVuCiAgIGV4aXQgMQpmaQoKaWYgWyAtZiAiJDEvcG9tLnhtbCIgXTsgdGhlbgogICBlY2hvICd7ImJ1aWxkZXIiOiAiJyRXRUJfSU1BR0UnIiwgInBvcnQiOiA4MDgwfScKICAgZXhpdCAwCmZpCgpmb3VuZD0iJChmaW5kICIkQkFTRV9ESVIiLy4gLW5hbWUgIiouamF2YSIgLXByaW50IC1xdWl0IHwgd2MgLWwpIgoKaWYgWyAhICIkZm91bmQiIC1lcSAxIF07IHRoZW4KICAgZXhpdCAxCmZpCgplY2hvICd7ImJ1aWxkZXIiOiAiJyROQVRJVkVfSU1BR0UnIiwgInBvcnQiOiA4MDgwfScKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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YXNoCgojICAgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDIwCiMKIyAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwojICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgojICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKIyAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKIyBUYWtlcyBhcyBpbnB1dCB0aGUgc291cmNlIGZvbGRlciBhbmQgcmV0dXJucyBlcnJvciBpZiBpdCBpcyBub3QgZml0CkJBU0VfRElSPSIkMSIKU1BFQ0lBTF9GSUxFUz0oIiRCQVNFX0RJUiIvcmVxdWlyZW1lbnRzLnR4dCAiJEJBU0VfRElSIi9zZXR1cC5weSAiJEJBU0VfRElSIi9lbnZpcm9ubWVudC55bWwgIiRCQVNFX0RJUiIvUGlwZmlsZSkKSU1BR0U9InJlZ2lzdHJ5LmFjY2Vzcy5yZWRoYXQuY29tL3Joc2NsL3B5dGhvbi0zNi1yaGVsNzpsYXRlc3QiCgpmb3IgZmlsZU5hbWUgaW4gIiR7U1BFQ0lBTF9GSUxF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` \ No newline at end of file diff --git a/assets/transformers/cloudfoundry/cloudfoundry.yaml b/assets/transformers/cloudfoundry/cloudfoundry.yaml index 051b3de80..f975353c9 100644 --- a/assets/transformers/cloudfoundry/cloudfoundry.yaml +++ b/assets/transformers/cloudfoundry/cloudfoundry.yaml @@ -4,4 +4,9 @@ metadata: name: CloudFoundry spec: mode: "Container" - class: "CloudFoundry" \ No newline at end of file + class: "CloudFoundry" + generates: + - "ContainerBuild" + - "IR" + exclusive: + - "ContainerBuild" diff --git a/assets/transformers/cnb/cfcnb/cfcnb.yaml b/assets/transformers/cnb/cfcnb/cfcnb.yaml index 4ac419e15..f948c6726 100644 --- a/assets/transformers/cnb/cfcnb/cfcnb.yaml +++ b/assets/transformers/cnb/cfcnb/cfcnb.yaml @@ -5,5 +5,11 @@ metadata: spec: mode: "Container" class: "CNBContainerizer" + generates: + - "ContainerBuild" + - "IR" + - "CNBMetadata" + exclusive: + - "ContainerBuild" config: - cnbbuilderimage: "cloudfoundry/cnb:cflinuxfs3" \ No newline at end of file + CNBBuilder: "cloudfoundry/cnb:cflinuxfs3" diff --git a/assets/transformers/cnb/cnbgenerator/cnbgenerator.yaml b/assets/transformers/cnb/cnbgenerator/cnbgenerator.yaml index d11123f68..21323972a 100644 --- a/assets/transformers/cnb/cnbgenerator/cnbgenerator.yaml +++ b/assets/transformers/cnb/cnbgenerator/cnbgenerator.yaml @@ -5,4 +5,7 @@ metadata: spec: mode: "Container" class: "CNBGenerator" - consumes: ["CNBMetadata"] \ No newline at end of file + generates: + - "ContainerBuildScript" + consumes: + - "CNBMetadata" diff --git a/assets/transformers/cnb/cnbgenerator/templates/buildcnb.bat b/assets/transformers/cnb/cnbgenerator/templates/buildcnb.bat new file mode 100755 index 000000000..faf930944 --- /dev/null +++ b/assets/transformers/cnb/cnbgenerator/templates/buildcnb.bat @@ -0,0 +1,15 @@ +:: Copyright IBM Corporation 2021 +:: +:: Licensed under the Apache License, Version 2.0 (the "License"); +:: you may not use this file except in compliance with the License. +:: You may obtain a copy of the License at +:: +:: http://www.apache.org/licenses/LICENSE-2.0 +:: +:: Unless required by applicable law or agreed to in writing, software +:: distributed under the License is distributed on an "AS IS" BASIS, +:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +:: See the License for the specific language governing permissions and +:: limitations under the License. + +pack build {{ .ImageName }} -B {{ .CNBBuilder }} \ No newline at end of file diff --git a/assets/transformers/cnb/cnbgenerator/templates/buildcnb.sh b/assets/transformers/cnb/cnbgenerator/templates/buildcnb.sh old mode 100644 new mode 100755 index 210e98992..56e28a857 --- a/assets/transformers/cnb/cnbgenerator/templates/buildcnb.sh +++ b/assets/transformers/cnb/cnbgenerator/templates/buildcnb.sh @@ -1,4 +1,4 @@ -# Copyright IBM Corporation 2020 +# Copyright IBM Corporation 2021 # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/assets/transformers/cnb/gcrcnb/gcrcnb.yaml b/assets/transformers/cnb/gcrcnb/gcrcnb.yaml index 3c3fa491f..abd8d1ec6 100644 --- a/assets/transformers/cnb/gcrcnb/gcrcnb.yaml +++ b/assets/transformers/cnb/gcrcnb/gcrcnb.yaml @@ -5,5 +5,11 @@ metadata: spec: mode: "Container" class: "CNBContainerizer" + generates: + - "ContainerBuild" + - "IR" + - "CNBMetadata" + exclusive: + - "ContainerBuild" config: - cnbbuilderimage: "gcr.io/buildpacks/builder" \ No newline at end of file + CNBBuilder: "gcr.io/buildpacks/builder" diff --git a/assets/transformers/compose/composeanalyser.yaml b/assets/transformers/compose/composeanalyser.yaml index 5d54c1601..6f4014f2b 100644 --- a/assets/transformers/compose/composeanalyser.yaml +++ b/assets/transformers/compose/composeanalyser.yaml @@ -4,4 +4,12 @@ metadata: name: ComposeAnalyser spec: mode: "Container" - class: "ComposeAnalyser" \ No newline at end of file + class: "ComposeAnalyser" + generates: + - "ContainerBuild" + - "IR" + - "Dockerfile" + exclusive: + - "ContainerBuild" + - "IR" + - "Dockerfile" diff --git a/assets/transformers/compose/composegenerator.yaml b/assets/transformers/compose/composegenerator.yaml index c07cc1632..8c146a0b1 100644 --- a/assets/transformers/compose/composegenerator.yaml +++ b/assets/transformers/compose/composegenerator.yaml @@ -5,4 +5,7 @@ metadata: spec: mode: "Container" class: "ComposeGenerator" - consumes: ["IR"] \ No newline at end of file + generates: + - "DockerCompose" + consumes: + - "IR" diff --git a/assets/transformers/dockerfiledetector/dockerfiledetector.yaml b/assets/transformers/dockerfiledetector/dockerfiledetector.yaml index 7b65fe786..6525ba27d 100644 --- a/assets/transformers/dockerfiledetector/dockerfiledetector.yaml +++ b/assets/transformers/dockerfiledetector/dockerfiledetector.yaml @@ -4,8 +4,10 @@ metadata: name: DockerfileDetector spec: mode: "Container" + class: "DockerfileDetector" generates: + - "ContainerBuild" - "Dockerfile" exclusive: + - "ContainerBuild" - "Dockerfile" - class: "DockerfileDetector" \ No newline at end of file diff --git a/assets/transformers/executable/dockerfile/django/django.yaml b/assets/transformers/executable/dockerfile/django/django.yaml index cf27c2a55..a634aaba8 100644 --- a/assets/transformers/executable/dockerfile/django/django.yaml +++ b/assets/transformers/executable/dockerfile/django/django.yaml @@ -6,8 +6,10 @@ spec: mode: "Container" class: "SimpleExecutable" generates: + - "ContainerBuild" - "Dockerfile" exclusive: + - "ContainerBuild" - "Dockerfile" config: - directoryDetectCMD: ["./m2kdetect.sh"] \ No newline at end of file + directoryDetectCMD: ["./m2kdetect.sh"] diff --git a/assets/transformers/executable/dockerfile/django/m2kdetect.sh b/assets/transformers/executable/dockerfile/django/m2kdetect.sh index 4022843e9..ef981a07e 100755 --- a/assets/transformers/executable/dockerfile/django/m2kdetect.sh +++ b/assets/transformers/executable/dockerfile/django/m2kdetect.sh @@ -1,4 +1,5 @@ #!/usr/bin/env bash + # Copyright IBM Corporation 2020 # # Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/assets/transformers/executable/dockerfile/golang/golang.yaml b/assets/transformers/executable/dockerfile/golang/golang.yaml index 52e92cb16..d22fddace 100644 --- a/assets/transformers/executable/dockerfile/golang/golang.yaml +++ b/assets/transformers/executable/dockerfile/golang/golang.yaml @@ -6,8 +6,10 @@ spec: mode: "Container" class: "SimpleExecutable" generates: + - "ContainerBuild" - "Dockerfile" exclusive: + - "ContainerBuild" - "Dockerfile" config: directoryDetectCMD: ["./m2kdetect.sh"] @@ -15,4 +17,4 @@ spec: image: m2kgolangdf build: dockerfile: Dockerfile - context: . \ No newline at end of file + context: . diff --git a/assets/transformers/executable/dockerfile/golang/m2kdetect.sh b/assets/transformers/executable/dockerfile/golang/m2kdetect.sh index 4d353a202..5acc9102a 100755 --- a/assets/transformers/executable/dockerfile/golang/m2kdetect.sh +++ b/assets/transformers/executable/dockerfile/golang/m2kdetect.sh @@ -1,4 +1,5 @@ #!/usr/bin/env bash + # Copyright IBM Corporation 2020 # # Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/assets/transformers/executable/dockerfile/java-war-jboss/java-war-jboss.yaml b/assets/transformers/executable/dockerfile/java-war-jboss/java-war-jboss.yaml index ca429a0f7..472c80658 100644 --- a/assets/transformers/executable/dockerfile/java-war-jboss/java-war-jboss.yaml +++ b/assets/transformers/executable/dockerfile/java-war-jboss/java-war-jboss.yaml @@ -6,8 +6,10 @@ spec: mode: "Container" class: "SimpleExecutable" generates: + - "ContainerBuild" - "Dockerfile" exclusive: + - "ContainerBuild" - "Dockerfile" config: - directoryDetectCMD: ["./m2kdetect.sh"] \ No newline at end of file + directoryDetectCMD: ["./m2kdetect.sh"] diff --git a/assets/transformers/executable/dockerfile/java-war-jboss/m2kdetect.sh b/assets/transformers/executable/dockerfile/java-war-jboss/m2kdetect.sh index 629aa5841..4bac7c1ca 100755 --- a/assets/transformers/executable/dockerfile/java-war-jboss/m2kdetect.sh +++ b/assets/transformers/executable/dockerfile/java-war-jboss/m2kdetect.sh @@ -1,4 +1,5 @@ #!/usr/bin/env bash + # Copyright IBM Corporation 2020 # # Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/assets/transformers/executable/dockerfile/java-war-liberty/java-war-liberty.yaml b/assets/transformers/executable/dockerfile/java-war-liberty/java-war-liberty.yaml index bb64f980e..1093e4325 100644 --- a/assets/transformers/executable/dockerfile/java-war-liberty/java-war-liberty.yaml +++ b/assets/transformers/executable/dockerfile/java-war-liberty/java-war-liberty.yaml @@ -6,8 +6,10 @@ spec: mode: "Container" class: "SimpleExecutable" generates: + - "ContainerBuild" - "Dockerfile" exclusive: + - "ContainerBuild" - "Dockerfile" config: - directoryDetectCMD: ["./m2kdetect.sh"] \ No newline at end of file + directoryDetectCMD: ["./m2kdetect.sh"] diff --git a/assets/transformers/executable/dockerfile/java-war-liberty/m2kdetect.sh b/assets/transformers/executable/dockerfile/java-war-liberty/m2kdetect.sh index f53ceca4a..38471b61d 100755 --- a/assets/transformers/executable/dockerfile/java-war-liberty/m2kdetect.sh +++ b/assets/transformers/executable/dockerfile/java-war-liberty/m2kdetect.sh @@ -1,4 +1,5 @@ #!/usr/bin/env bash + # Copyright IBM Corporation 2020 # # Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/assets/transformers/executable/dockerfile/java-war-tomcat/java-war-tomcat.yaml b/assets/transformers/executable/dockerfile/java-war-tomcat/java-war-tomcat.yaml index 6807a5632..8389eff01 100644 --- a/assets/transformers/executable/dockerfile/java-war-tomcat/java-war-tomcat.yaml +++ b/assets/transformers/executable/dockerfile/java-war-tomcat/java-war-tomcat.yaml @@ -6,8 +6,10 @@ spec: mode: "Container" class: "SimpleExecutable" generates: + - "ContainerBuild" - "Dockerfile" exclusive: + - "ContainerBuild" - "Dockerfile" config: - directoryDetectCMD: ["./m2kdetect.sh"] \ No newline at end of file + directoryDetectCMD: ["./m2kdetect.sh"] diff --git a/assets/transformers/executable/dockerfile/java-war-tomcat/m2kdetect.sh b/assets/transformers/executable/dockerfile/java-war-tomcat/m2kdetect.sh index 629aa5841..4bac7c1ca 100755 --- a/assets/transformers/executable/dockerfile/java-war-tomcat/m2kdetect.sh +++ b/assets/transformers/executable/dockerfile/java-war-tomcat/m2kdetect.sh @@ -1,4 +1,5 @@ #!/usr/bin/env bash + # Copyright IBM Corporation 2020 # # Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/assets/transformers/executable/dockerfile/javaant/javaant.yaml b/assets/transformers/executable/dockerfile/javaant/javaant.yaml index a85735e53..e58cce217 100644 --- a/assets/transformers/executable/dockerfile/javaant/javaant.yaml +++ b/assets/transformers/executable/dockerfile/javaant/javaant.yaml @@ -6,8 +6,10 @@ spec: mode: "Container" class: "SimpleExecutable" generates: + - "ContainerBuild" - "Dockerfile" exclusive: + - "ContainerBuild" - "Dockerfile" config: - directoryDetectCMD: ["./m2kdetect.sh"] \ No newline at end of file + directoryDetectCMD: ["./m2kdetect.sh"] diff --git a/assets/transformers/executable/dockerfile/javaant/m2kdetect.sh b/assets/transformers/executable/dockerfile/javaant/m2kdetect.sh index 23e84aea8..fff557396 100755 --- a/assets/transformers/executable/dockerfile/javaant/m2kdetect.sh +++ b/assets/transformers/executable/dockerfile/javaant/m2kdetect.sh @@ -1,4 +1,5 @@ #!/usr/bin/env bash + # Copyright IBM Corporation 2020 # # Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/assets/transformers/executable/dockerfile/javagradle/javagradle.yaml b/assets/transformers/executable/dockerfile/javagradle/javagradle.yaml index 41400ce1a..f1f360464 100644 --- a/assets/transformers/executable/dockerfile/javagradle/javagradle.yaml +++ b/assets/transformers/executable/dockerfile/javagradle/javagradle.yaml @@ -6,8 +6,10 @@ spec: mode: "Container" class: "SimpleExecutable" generates: + - "ContainerBuild" - "Dockerfile" exclusive: + - "ContainerBuild" - "Dockerfile" config: - directoryDetectCMD: ["./m2kdetect.sh"] \ No newline at end of file + directoryDetectCMD: ["./m2kdetect.sh"] diff --git a/assets/transformers/executable/dockerfile/javagradle/m2kdetect.sh b/assets/transformers/executable/dockerfile/javagradle/m2kdetect.sh index f34fdeaea..519f5ee3e 100755 --- a/assets/transformers/executable/dockerfile/javagradle/m2kdetect.sh +++ b/assets/transformers/executable/dockerfile/javagradle/m2kdetect.sh @@ -1,4 +1,5 @@ #!/usr/bin/env bash + # Copyright IBM Corporation 2020 # # Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/assets/transformers/executable/dockerfile/javamaven/javamaven.yaml b/assets/transformers/executable/dockerfile/javamaven/javamaven.yaml index 89e0646ee..d75ff7553 100644 --- a/assets/transformers/executable/dockerfile/javamaven/javamaven.yaml +++ b/assets/transformers/executable/dockerfile/javamaven/javamaven.yaml @@ -6,8 +6,10 @@ spec: mode: "Container" class: "SimpleExecutable" generates: + - "ContainerBuild" - "Dockerfile" exclusive: + - "ContainerBuild" - "Dockerfile" config: - directoryDetectCMD: ["./m2kdetect.sh"] \ No newline at end of file + directoryDetectCMD: ["./m2kdetect.sh"] diff --git a/assets/transformers/executable/dockerfile/javamaven/m2kdetect.sh b/assets/transformers/executable/dockerfile/javamaven/m2kdetect.sh index 0848dfc36..26cdb140e 100755 --- a/assets/transformers/executable/dockerfile/javamaven/m2kdetect.sh +++ b/assets/transformers/executable/dockerfile/javamaven/m2kdetect.sh @@ -1,4 +1,5 @@ #!/usr/bin/env bash + # Copyright IBM Corporation 2020 # # Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/assets/transformers/executable/dockerfile/nodejs/m2kdetect.sh b/assets/transformers/executable/dockerfile/nodejs/m2kdetect.sh index 29b7a23f9..624aa652c 100755 --- a/assets/transformers/executable/dockerfile/nodejs/m2kdetect.sh +++ b/assets/transformers/executable/dockerfile/nodejs/m2kdetect.sh @@ -1,4 +1,5 @@ #!/usr/bin/env bash + # Copyright IBM Corporation 2020 # # Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/assets/transformers/executable/dockerfile/nodejs/nodejs.yaml b/assets/transformers/executable/dockerfile/nodejs/nodejs.yaml index 631f6bd2f..cb2407541 100644 --- a/assets/transformers/executable/dockerfile/nodejs/nodejs.yaml +++ b/assets/transformers/executable/dockerfile/nodejs/nodejs.yaml @@ -6,8 +6,10 @@ spec: mode: "Container" class: "SimpleExecutable" generates: + - "ContainerBuild" - "Dockerfile" exclusive: + - "ContainerBuild" - "Dockerfile" config: - directoryDetectCMD: ["./m2kdetect.sh"] \ No newline at end of file + directoryDetectCMD: ["./m2kdetect.sh"] diff --git a/assets/transformers/executable/dockerfile/php/m2kdetect.sh b/assets/transformers/executable/dockerfile/php/m2kdetect.sh index 3575043a2..144c9379d 100755 --- a/assets/transformers/executable/dockerfile/php/m2kdetect.sh +++ b/assets/transformers/executable/dockerfile/php/m2kdetect.sh @@ -1,4 +1,5 @@ #!/usr/bin/env bash + # Copyright IBM Corporation 2020 # # Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/assets/transformers/executable/dockerfile/php/php.yaml b/assets/transformers/executable/dockerfile/php/php.yaml index 1ac5af377..4fd1b16d0 100644 --- a/assets/transformers/executable/dockerfile/php/php.yaml +++ b/assets/transformers/executable/dockerfile/php/php.yaml @@ -6,8 +6,10 @@ spec: mode: "Container" class: "SimpleExecutable" generates: + - "ContainerBuild" - "Dockerfile" exclusive: + - "ContainerBuild" - "Dockerfile" config: - directoryDetectCMD: ["./m2kdetect.sh"] \ No newline at end of file + directoryDetectCMD: ["./m2kdetect.sh"] diff --git a/assets/transformers/executable/dockerfile/python/m2kdetect.sh b/assets/transformers/executable/dockerfile/python/m2kdetect.sh index c88e1929b..d869c23d5 100755 --- a/assets/transformers/executable/dockerfile/python/m2kdetect.sh +++ b/assets/transformers/executable/dockerfile/python/m2kdetect.sh @@ -1,4 +1,5 @@ #!/usr/bin/env bash + # Copyright IBM Corporation 2020 # # Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/assets/transformers/executable/dockerfile/python/python.yaml b/assets/transformers/executable/dockerfile/python/python.yaml index ef295024a..f306f0255 100644 --- a/assets/transformers/executable/dockerfile/python/python.yaml +++ b/assets/transformers/executable/dockerfile/python/python.yaml @@ -6,8 +6,10 @@ spec: mode: "Container" class: "SimpleExecutable" generates: + - "ContainerBuild" - "Dockerfile" exclusive: + - "ContainerBuild" - "Dockerfile" config: - directoryDetectCMD: ["./m2kdetect.sh"] \ No newline at end of file + directoryDetectCMD: ["./m2kdetect.sh"] diff --git a/assets/transformers/executable/dockerfile/ruby/m2kdetect.sh b/assets/transformers/executable/dockerfile/ruby/m2kdetect.sh index ec94ef0d5..b9ed15841 100755 --- a/assets/transformers/executable/dockerfile/ruby/m2kdetect.sh +++ b/assets/transformers/executable/dockerfile/ruby/m2kdetect.sh @@ -1,4 +1,5 @@ #!/usr/bin/env bash + # Copyright IBM Corporation 2020 # # Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/assets/transformers/executable/dockerfile/ruby/ruby.yaml b/assets/transformers/executable/dockerfile/ruby/ruby.yaml index 2387741a5..9a6d94ed3 100644 --- a/assets/transformers/executable/dockerfile/ruby/ruby.yaml +++ b/assets/transformers/executable/dockerfile/ruby/ruby.yaml @@ -6,8 +6,10 @@ spec: mode: "Container" class: "SimpleExecutable" generates: + - "ContainerBuild" - "Dockerfile" exclusive: + - "ContainerBuild" - "Dockerfile" config: - directoryDetectCMD: ["./m2kdetect.sh"] \ No newline at end of file + directoryDetectCMD: ["./m2kdetect.sh"] diff --git a/assets/transformers/executable/s2i/golang/golang.yaml b/assets/transformers/executable/s2i/golang/golang.yaml index 1a857ba65..9c2ab4d79 100644 --- a/assets/transformers/executable/s2i/golang/golang.yaml +++ b/assets/transformers/executable/s2i/golang/golang.yaml @@ -6,8 +6,10 @@ spec: mode: "Container" class: "SimpleExecutable" generates: - - "Dockerfile" + - "ContainerBuild" + - "S2IBuilder" exclusive: - - "Dockerfile" + - "ContainerBuild" + - "S2IBuilder" config: - directoryDetectCMD: ["./m2kdetect.sh"] \ No newline at end of file + directoryDetectCMD: ["./m2kdetect.sh"] diff --git a/assets/transformers/executable/s2i/golang/m2kdetect.sh b/assets/transformers/executable/s2i/golang/m2kdetect.sh index 682faeffd..cb902d040 100755 --- a/assets/transformers/executable/s2i/golang/m2kdetect.sh +++ b/assets/transformers/executable/s2i/golang/m2kdetect.sh @@ -1,4 +1,5 @@ #!/usr/bin/env bash + # Copyright IBM Corporation 2020 # # Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/assets/transformers/executable/s2i/java/java.yaml b/assets/transformers/executable/s2i/java/java.yaml index ddba4226e..3e84bb108 100644 --- a/assets/transformers/executable/s2i/java/java.yaml +++ b/assets/transformers/executable/s2i/java/java.yaml @@ -6,8 +6,10 @@ spec: mode: "Container" class: "SimpleExecutable" generates: - - "Dockerfile" + - "ContainerBuild" + - "S2IBuilder" exclusive: - - "Dockerfile" + - "ContainerBuild" + - "S2IBuilder" config: - directoryDetectCMD: ["./m2kdetect.sh"] \ No newline at end of file + directoryDetectCMD: ["./m2kdetect.sh"] diff --git a/assets/transformers/executable/s2i/java/m2kdetect.sh b/assets/transformers/executable/s2i/java/m2kdetect.sh index bf1a4ac84..7548eea7e 100755 --- a/assets/transformers/executable/s2i/java/m2kdetect.sh +++ b/assets/transformers/executable/s2i/java/m2kdetect.sh @@ -1,4 +1,5 @@ #!/usr/bin/env bash + # Copyright IBM Corporation 2020 # # Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/assets/transformers/executable/s2i/nodejs/m2kdetect.sh b/assets/transformers/executable/s2i/nodejs/m2kdetect.sh index 0e977e8c3..95a70678c 100755 --- a/assets/transformers/executable/s2i/nodejs/m2kdetect.sh +++ b/assets/transformers/executable/s2i/nodejs/m2kdetect.sh @@ -1,4 +1,5 @@ #!/usr/bin/env bash + # Copyright IBM Corporation 2020 # # Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/assets/transformers/executable/s2i/nodejs/nodejs.yaml b/assets/transformers/executable/s2i/nodejs/nodejs.yaml index 8449d439a..cd59ed54c 100644 --- a/assets/transformers/executable/s2i/nodejs/nodejs.yaml +++ b/assets/transformers/executable/s2i/nodejs/nodejs.yaml @@ -6,8 +6,10 @@ spec: mode: "Container" class: "SimpleExecutable" generates: - - "Dockerfile" + - "ContainerBuild" + - "S2IBuilder" exclusive: - - "Dockerfile" + - "ContainerBuild" + - "S2IBuilder" config: - directoryDetectCMD: ["./m2kdetect.sh"] \ No newline at end of file + directoryDetectCMD: ["./m2kdetect.sh"] diff --git a/assets/transformers/executable/s2i/php/m2kdetect.sh b/assets/transformers/executable/s2i/php/m2kdetect.sh index f5dfcacae..551243aba 100755 --- a/assets/transformers/executable/s2i/php/m2kdetect.sh +++ b/assets/transformers/executable/s2i/php/m2kdetect.sh @@ -1,4 +1,5 @@ #!/usr/bin/env bash + # Copyright IBM Corporation 2020 # # Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/assets/transformers/executable/s2i/php/php.yaml b/assets/transformers/executable/s2i/php/php.yaml index 85ec199e1..f11b719e6 100644 --- a/assets/transformers/executable/s2i/php/php.yaml +++ b/assets/transformers/executable/s2i/php/php.yaml @@ -6,8 +6,10 @@ spec: mode: "Container" class: "SimpleExecutable" generates: - - "Dockerfile" + - "ContainerBuild" + - "S2IBuilder" exclusive: - - "Dockerfile" + - "ContainerBuild" + - "S2IBuilder" config: - directoryDetectCMD: ["./m2kdetect.sh"] \ No newline at end of file + directoryDetectCMD: ["./m2kdetect.sh"] diff --git a/assets/transformers/executable/s2i/python/m2kdetect.sh b/assets/transformers/executable/s2i/python/m2kdetect.sh index f0dc44bc8..5cd68b37a 100755 --- a/assets/transformers/executable/s2i/python/m2kdetect.sh +++ b/assets/transformers/executable/s2i/python/m2kdetect.sh @@ -1,4 +1,5 @@ #!/usr/bin/env bash + # Copyright IBM Corporation 2020 # # Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/assets/transformers/executable/s2i/python/python.yaml b/assets/transformers/executable/s2i/python/python.yaml index e080ae842..e0e6fa0da 100644 --- a/assets/transformers/executable/s2i/python/python.yaml +++ b/assets/transformers/executable/s2i/python/python.yaml @@ -6,8 +6,10 @@ spec: mode: "Container" class: "SimpleExecutable" generates: - - "Dockerfile" + - "ContainerBuild" + - "S2IBuilder" exclusive: - - "Dockerfile" + - "ContainerBuild" + - "S2IBuilder" config: - directoryDetectCMD: ["./m2kdetect.sh"] \ No newline at end of file + directoryDetectCMD: ["./m2kdetect.sh"] diff --git a/assets/transformers/executable/s2i/ruby/m2kdetect.sh b/assets/transformers/executable/s2i/ruby/m2kdetect.sh index 33f340659..f69997e20 100755 --- a/assets/transformers/executable/s2i/ruby/m2kdetect.sh +++ b/assets/transformers/executable/s2i/ruby/m2kdetect.sh @@ -1,4 +1,5 @@ #!/usr/bin/env bash + # Copyright IBM Corporation 2020 # # Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/assets/transformers/executable/s2i/ruby/ruby.yaml b/assets/transformers/executable/s2i/ruby/ruby.yaml index c324a43f1..be6781e29 100644 --- a/assets/transformers/executable/s2i/ruby/ruby.yaml +++ b/assets/transformers/executable/s2i/ruby/ruby.yaml @@ -6,8 +6,10 @@ spec: mode: "Container" class: "SimpleExecutable" generates: - - "Dockerfile" + - "ContainerBuild" + - "S2IBuilder" exclusive: - - "Dockerfile" + - "ContainerBuild" + - "S2IBuilder" config: - directoryDetectCMD: ["./m2kdetect.sh"] \ No newline at end of file + directoryDetectCMD: ["./m2kdetect.sh"] diff --git a/assets/transformers/generators/buildconfig/buildconfig.yaml b/assets/transformers/generators/buildconfig/buildconfig.yaml index bf40dd6ec..7e4755579 100644 --- a/assets/transformers/generators/buildconfig/buildconfig.yaml +++ b/assets/transformers/generators/buildconfig/buildconfig.yaml @@ -5,4 +5,7 @@ metadata: spec: mode: "Container" class: "BuildConfig" - consumes: ["IR"] \ No newline at end of file + consumes: + - "IR" + generates: + - "KubernetesYamls" diff --git a/assets/transformers/generators/knative/knative.yaml b/assets/transformers/generators/knative/knative.yaml index 2cca23671..e352fe430 100644 --- a/assets/transformers/generators/knative/knative.yaml +++ b/assets/transformers/generators/knative/knative.yaml @@ -5,4 +5,7 @@ metadata: spec: mode: "Container" class: "Knative" - consumes: ["IR"] \ No newline at end of file + consumes: + - "IR" + generates: + - "KubernetesYamls" diff --git a/assets/transformers/generators/kubernetes/kubernetes.yaml b/assets/transformers/generators/kubernetes/kubernetes.yaml index fc3bd1c45..914f459a2 100644 --- a/assets/transformers/generators/kubernetes/kubernetes.yaml +++ b/assets/transformers/generators/kubernetes/kubernetes.yaml @@ -5,4 +5,7 @@ metadata: spec: mode: "Container" class: "Kubernetes" - consumes: ["IR"] \ No newline at end of file + consumes: + - "IR" + generates: + - "KubernetesYamls" diff --git a/assets/transformers/generators/tekton/tekton.yaml b/assets/transformers/generators/tekton/tekton.yaml index e0d1b53d4..8aa400929 100644 --- a/assets/transformers/generators/tekton/tekton.yaml +++ b/assets/transformers/generators/tekton/tekton.yaml @@ -5,4 +5,7 @@ metadata: spec: mode: "Container" class: "Tekton" - consumes: ["IR"] \ No newline at end of file + consumes: + - "IR" + generates: + - "KubernetesYamls" diff --git a/cmd/common/utils.go b/cmd/common/utils.go index d2a21980b..39ef856c7 100644 --- a/cmd/common/utils.go +++ b/cmd/common/utils.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package common diff --git a/cmd/common/version.go b/cmd/common/version.go index 3fb6b78d9..26d6e66b6 100644 --- a/cmd/common/version.go +++ b/cmd/common/version.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package common diff --git a/cmd/move2kube/collect.go b/cmd/move2kube/collect.go index 2af6d2e71..cf1418225 100644 --- a/cmd/move2kube/collect.go +++ b/cmd/move2kube/collect.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package main diff --git a/cmd/move2kube/move2kube.go b/cmd/move2kube/move2kube.go index a67125f36..f74384db9 100644 --- a/cmd/move2kube/move2kube.go +++ b/cmd/move2kube/move2kube.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020, 2021 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2020, 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package main diff --git a/cmd/move2kube/plan.go b/cmd/move2kube/plan.go index 5573b3dfd..18ed31083 100644 --- a/cmd/move2kube/plan.go +++ b/cmd/move2kube/plan.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package main diff --git a/cmd/move2kube/transform.go b/cmd/move2kube/transform.go index 828f0acc0..006dd4a46 100644 --- a/cmd/move2kube/transform.go +++ b/cmd/move2kube/transform.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package main diff --git a/cmd/move2kube/validate.go b/cmd/move2kube/validate.go index fd81725bb..81ac147d8 100644 --- a/cmd/move2kube/validate.go +++ b/cmd/move2kube/validate.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package main diff --git a/collector/cfappscollector.go b/collector/cfappscollector.go index 7389aebb7..9743f1ff8 100644 --- a/collector/cfappscollector.go +++ b/collector/cfappscollector.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package collector diff --git a/collector/clustercollector.go b/collector/clustercollector.go index 1d574c627..831c8beae 100644 --- a/collector/clustercollector.go +++ b/collector/clustercollector.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package collector diff --git a/collector/collector.go b/collector/collector.go index a2b01997b..fcc64c7d7 100644 --- a/collector/collector.go +++ b/collector/collector.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package collector diff --git a/collector/imagescollector.go b/collector/imagescollector.go index d59015b44..4f3f28439 100644 --- a/collector/imagescollector.go +++ b/collector/imagescollector.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package collector diff --git a/collector/sourcetypes/cfinstanceapps.go b/collector/sourcetypes/cfinstanceapps.go index 31115e1db..88ef34166 100644 --- a/collector/sourcetypes/cfinstanceapps.go +++ b/collector/sourcetypes/cfinstanceapps.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package sourcetypes diff --git a/collector/sourcetypes/dockercompose.go b/collector/sourcetypes/dockercompose.go index 5752ccff0..9805ccac9 100644 --- a/collector/sourcetypes/dockercompose.go +++ b/collector/sourcetypes/dockercompose.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package sourcetypes diff --git a/collector/sourcetypes/dockerinspect.go b/collector/sourcetypes/dockerinspect.go index f12189cc9..fcf073b7c 100644 --- a/collector/sourcetypes/dockerinspect.go +++ b/collector/sourcetypes/dockerinspect.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package sourcetypes diff --git a/environment/container/container.go b/environment/container/container.go index fa374de2f..c9c25cfe5 100644 --- a/environment/container/container.go +++ b/environment/container/container.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020, 2021 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2020, 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package container diff --git a/environment/container/dockerengine.go b/environment/container/dockerengine.go index edd9a99c7..768c70161 100644 --- a/environment/container/dockerengine.go +++ b/environment/container/dockerengine.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package container diff --git a/environment/container/dockerengine_test.go b/environment/container/dockerengine_test.go index 5ab11077a..fc3ce392f 100644 --- a/environment/container/dockerengine_test.go +++ b/environment/container/dockerengine_test.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package container diff --git a/environment/container/podmanengine.go b/environment/container/podmanengine.go index d83208b7a..c2df7cec8 100644 --- a/environment/container/podmanengine.go +++ b/environment/container/podmanengine.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package container diff --git a/environment/container/utils.go b/environment/container/utils.go index ecbcc8465..28aa2d0d0 100644 --- a/environment/container/utils.go +++ b/environment/container/utils.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020, 2021 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2020, 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package container diff --git a/environment/environment.go b/environment/environment.go index 3af2d8485..482300e6a 100644 --- a/environment/environment.go +++ b/environment/environment.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2021 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package environment @@ -28,6 +28,7 @@ import ( "github.com/konveyor/move2kube/internal/common" "github.com/konveyor/move2kube/internal/common/pathconverters" + "github.com/konveyor/move2kube/types" environmenttypes "github.com/konveyor/move2kube/types/environment" transformertypes "github.com/konveyor/move2kube/types/transformer" "github.com/sirupsen/logrus" @@ -35,7 +36,10 @@ import ( const ( workspaceDir = "workspace" - GRPCEnvName = "GRPC_RECEIVER" +) + +var ( + GRPCEnvName = strings.ToUpper(types.AppNameShort) + "QA_GRPC_SERVER" ) type Environment struct { diff --git a/environment/local.go b/environment/local.go index 83b772a74..d9f865445 100644 --- a/environment/local.go +++ b/environment/local.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2021 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package environment diff --git a/environment/peercontainer.go b/environment/peercontainer.go index 34bf7ca15..fe57b31d0 100644 --- a/environment/peercontainer.go +++ b/environment/peercontainer.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2021 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package environment diff --git a/environment/processsharedcontainer.go b/environment/processsharedcontainer.go index ce9764aaa..2c8ed8196 100644 --- a/environment/processsharedcontainer.go +++ b/environment/processsharedcontainer.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2021 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package environment diff --git a/environment/utils.go b/environment/utils.go index 9e1fd2022..cd389a8a1 100644 --- a/environment/utils.go +++ b/environment/utils.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2021 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package environment diff --git a/filesystem/delta.go b/filesystem/delta.go index 34698802f..2cead7902 100644 --- a/filesystem/delta.go +++ b/filesystem/delta.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2021 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package filesystem diff --git a/filesystem/merger.go b/filesystem/merger.go index 4d3d04cd2..e05fd4c68 100644 --- a/filesystem/merger.go +++ b/filesystem/merger.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2021 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package filesystem diff --git a/filesystem/processor.go b/filesystem/processor.go index 497dca95d..0174965f9 100644 --- a/filesystem/processor.go +++ b/filesystem/processor.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2021 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package filesystem diff --git a/filesystem/replicator.go b/filesystem/replicator.go index a4cfdb0fd..74f900816 100644 --- a/filesystem/replicator.go +++ b/filesystem/replicator.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2021 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package filesystem diff --git a/filesystem/templatecopy.go b/filesystem/templatecopy.go index f8f9894c6..8c77c8080 100644 --- a/filesystem/templatecopy.go +++ b/filesystem/templatecopy.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2021 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package filesystem diff --git a/filesystem/templatecopy_test.go b/filesystem/templatecopy_test.go index 987a85a09..3426aff48 100644 --- a/filesystem/templatecopy_test.go +++ b/filesystem/templatecopy_test.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package filesystem diff --git a/internal/apiresource/apiresource.go b/internal/apiresource/apiresource.go index 9064f48c3..d8fac2175 100644 --- a/internal/apiresource/apiresource.go +++ b/internal/apiresource/apiresource.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package apiresource diff --git a/internal/apiresource/apiresource_test.go b/internal/apiresource/apiresource_test.go index 76746f8f1..2ff412848 100644 --- a/internal/apiresource/apiresource_test.go +++ b/internal/apiresource/apiresource_test.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package apiresource diff --git a/internal/apiresource/buildconfig.go b/internal/apiresource/buildconfig.go index 91fae491a..6327092d9 100644 --- a/internal/apiresource/buildconfig.go +++ b/internal/apiresource/buildconfig.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package apiresource diff --git a/internal/apiresource/deployment.go b/internal/apiresource/deployment.go index 07d1519a8..1d03fd4f9 100644 --- a/internal/apiresource/deployment.go +++ b/internal/apiresource/deployment.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package apiresource diff --git a/internal/apiresource/eventlistener.go b/internal/apiresource/eventlistener.go index a0cfa0819..b759f79a8 100644 --- a/internal/apiresource/eventlistener.go +++ b/internal/apiresource/eventlistener.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package apiresource diff --git a/internal/apiresource/imagestream.go b/internal/apiresource/imagestream.go index 534d3fc99..aa969e42d 100644 --- a/internal/apiresource/imagestream.go +++ b/internal/apiresource/imagestream.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package apiresource diff --git a/internal/apiresource/knativeservice.go b/internal/apiresource/knativeservice.go index 06727a661..16adcc4d2 100644 --- a/internal/apiresource/knativeservice.go +++ b/internal/apiresource/knativeservice.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package apiresource diff --git a/internal/apiresource/networkpolicy.go b/internal/apiresource/networkpolicy.go index a4e7620a3..ecae08731 100644 --- a/internal/apiresource/networkpolicy.go +++ b/internal/apiresource/networkpolicy.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package apiresource diff --git a/internal/apiresource/networkpolicy_test.go b/internal/apiresource/networkpolicy_test.go index bbfce8481..bda39fef6 100644 --- a/internal/apiresource/networkpolicy_test.go +++ b/internal/apiresource/networkpolicy_test.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package apiresource diff --git a/internal/apiresource/pipeline.go b/internal/apiresource/pipeline.go index 87ab9ada2..91283156d 100644 --- a/internal/apiresource/pipeline.go +++ b/internal/apiresource/pipeline.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package apiresource diff --git a/internal/apiresource/role.go b/internal/apiresource/role.go index 74b70ea89..3ac85ea97 100644 --- a/internal/apiresource/role.go +++ b/internal/apiresource/role.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package apiresource diff --git a/internal/apiresource/rolebinding.go b/internal/apiresource/rolebinding.go index ab80322ea..7b38d2be0 100644 --- a/internal/apiresource/rolebinding.go +++ b/internal/apiresource/rolebinding.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package apiresource diff --git a/internal/apiresource/service.go b/internal/apiresource/service.go index e599cd03d..0598d4a6e 100644 --- a/internal/apiresource/service.go +++ b/internal/apiresource/service.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package apiresource diff --git a/internal/apiresource/serviceaccount.go b/internal/apiresource/serviceaccount.go index d495c6be8..8f2b2d554 100644 --- a/internal/apiresource/serviceaccount.go +++ b/internal/apiresource/serviceaccount.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package apiresource diff --git a/internal/apiresource/storage.go b/internal/apiresource/storage.go index baf5c1958..80d6c23b3 100644 --- a/internal/apiresource/storage.go +++ b/internal/apiresource/storage.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package apiresource diff --git a/internal/apiresource/triggerbinding.go b/internal/apiresource/triggerbinding.go index 717529fec..c1b6315d9 100644 --- a/internal/apiresource/triggerbinding.go +++ b/internal/apiresource/triggerbinding.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package apiresource diff --git a/internal/apiresource/triggertemplate.go b/internal/apiresource/triggertemplate.go index 633e4d90d..ea690568b 100644 --- a/internal/apiresource/triggertemplate.go +++ b/internal/apiresource/triggertemplate.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package apiresource diff --git a/internal/apiresource/utils.go b/internal/apiresource/utils.go index 7862a7d0a..cd4763e27 100644 --- a/internal/apiresource/utils.go +++ b/internal/apiresource/utils.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2021 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package apiresource diff --git a/internal/common/constants.go b/internal/common/constants.go index 683ed59c6..81c5fb786 100644 --- a/internal/common/constants.go +++ b/internal/common/constants.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package common diff --git a/internal/common/deepcopy/deepcopy.go b/internal/common/deepcopy/deepcopy.go index f70d8e89f..b1398158f 100644 --- a/internal/common/deepcopy/deepcopy.go +++ b/internal/common/deepcopy/deepcopy.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package deepcopy diff --git a/internal/common/deepcopy/merge.go b/internal/common/deepcopy/merge.go index da1b75788..b7deb12db 100644 --- a/internal/common/deepcopy/merge.go +++ b/internal/common/deepcopy/merge.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package deepcopy diff --git a/internal/common/knownhosts/knownhosts.go b/internal/common/knownhosts/knownhosts.go index fcdef7393..520ab8043 100644 --- a/internal/common/knownhosts/knownhosts.go +++ b/internal/common/knownhosts/knownhosts.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package knownhosts diff --git a/internal/common/kuberneteskinds.go b/internal/common/kuberneteskinds.go index fe3f453cc..6d227381a 100644 --- a/internal/common/kuberneteskinds.go +++ b/internal/common/kuberneteskinds.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package common diff --git a/internal/common/pathconverters/pathconverters.go b/internal/common/pathconverters/pathconverters.go index e003c821a..5cc59b4ca 100644 --- a/internal/common/pathconverters/pathconverters.go +++ b/internal/common/pathconverters/pathconverters.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package pathconverters diff --git a/internal/common/pathconverters/pathconverters_test.go b/internal/common/pathconverters/pathconverters_test.go index a2ec38263..26b5e0865 100644 --- a/internal/common/pathconverters/pathconverters_test.go +++ b/internal/common/pathconverters/pathconverters_test.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package pathconverters_test diff --git a/internal/common/pathsofinterest.go b/internal/common/pathsofinterest.go index 044d13aa3..c10225db4 100644 --- a/internal/common/pathsofinterest.go +++ b/internal/common/pathsofinterest.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package common diff --git a/internal/common/sshkeys/sshkeys.go b/internal/common/sshkeys/sshkeys.go index 01feee31f..84704bda1 100644 --- a/internal/common/sshkeys/sshkeys.go +++ b/internal/common/sshkeys/sshkeys.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package sshkeys diff --git a/internal/common/tar.go b/internal/common/tar.go index 94160824c..01bda8b16 100644 --- a/internal/common/tar.go +++ b/internal/common/tar.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package common diff --git a/internal/common/tar_test.go b/internal/common/tar_test.go index d9c00d901..84768bccf 100644 --- a/internal/common/tar_test.go +++ b/internal/common/tar_test.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package common_test diff --git a/internal/common/utils.go b/internal/common/utils.go index 7563a0994..417a0f442 100644 --- a/internal/common/utils.go +++ b/internal/common/utils.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package common diff --git a/internal/common/utils_test.go b/internal/common/utils_test.go index 136ab0141..c50294669 100644 --- a/internal/common/utils_test.go +++ b/internal/common/utils_test.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package common_test diff --git a/internal/configuration/clustermdloader.go b/internal/configuration/clustermdloader.go index e013b641c..6807a66c7 100644 --- a/internal/configuration/clustermdloader.go +++ b/internal/configuration/clustermdloader.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package configuration diff --git a/internal/configuration/clustermdloader_test.go b/internal/configuration/clustermdloader_test.go index 419ec5595..11b9d4c1d 100644 --- a/internal/configuration/clustermdloader_test.go +++ b/internal/configuration/clustermdloader_test.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package configuration_test diff --git a/internal/configuration/metadata.go b/internal/configuration/metadata.go index e74cf5831..d7c93825c 100644 --- a/internal/configuration/metadata.go +++ b/internal/configuration/metadata.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package configuration diff --git a/internal/irpreprocessor/imagepullpolicypreprocessor.go b/internal/irpreprocessor/imagepullpolicypreprocessor.go index e4071e004..b6aa0530c 100644 --- a/internal/irpreprocessor/imagepullpolicypreprocessor.go +++ b/internal/irpreprocessor/imagepullpolicypreprocessor.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package irpreprocessor diff --git a/internal/irpreprocessor/imagepullpolicypreprocessor_test.go b/internal/irpreprocessor/imagepullpolicypreprocessor_test.go index f0b9fac60..ef75d95b1 100644 --- a/internal/irpreprocessor/imagepullpolicypreprocessor_test.go +++ b/internal/irpreprocessor/imagepullpolicypreprocessor_test.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package irpreprocessor diff --git a/internal/irpreprocessor/ingresspreprocessor.go b/internal/irpreprocessor/ingresspreprocessor.go index 568c793bf..84e603c74 100644 --- a/internal/irpreprocessor/ingresspreprocessor.go +++ b/internal/irpreprocessor/ingresspreprocessor.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package irpreprocessor diff --git a/internal/irpreprocessor/irpreprocessor.go b/internal/irpreprocessor/irpreprocessor.go index 816027bcb..44194714d 100644 --- a/internal/irpreprocessor/irpreprocessor.go +++ b/internal/irpreprocessor/irpreprocessor.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package irpreprocessor diff --git a/internal/irpreprocessor/normalizecharacterspreprocessor.go b/internal/irpreprocessor/normalizecharacterspreprocessor.go index 7719e7aab..fcbaccdf1 100644 --- a/internal/irpreprocessor/normalizecharacterspreprocessor.go +++ b/internal/irpreprocessor/normalizecharacterspreprocessor.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package irpreprocessor diff --git a/internal/irpreprocessor/normalizecharacterspreprocessor_test.go b/internal/irpreprocessor/normalizecharacterspreprocessor_test.go index 24c795660..a0d9dd9ef 100644 --- a/internal/irpreprocessor/normalizecharacterspreprocessor_test.go +++ b/internal/irpreprocessor/normalizecharacterspreprocessor_test.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package irpreprocessor diff --git a/internal/irpreprocessor/portmergepreprocessor.go b/internal/irpreprocessor/portmergepreprocessor.go index 6e5326abe..f109dc5dc 100644 --- a/internal/irpreprocessor/portmergepreprocessor.go +++ b/internal/irpreprocessor/portmergepreprocessor.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package irpreprocessor diff --git a/internal/irpreprocessor/portmergepreprocessor_test.go b/internal/irpreprocessor/portmergepreprocessor_test.go index a14516d46..1da3314fd 100644 --- a/internal/irpreprocessor/portmergepreprocessor_test.go +++ b/internal/irpreprocessor/portmergepreprocessor_test.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package irpreprocessor diff --git a/internal/irpreprocessor/replicapreprocessor.go b/internal/irpreprocessor/replicapreprocessor.go index 4d3136e05..a43889382 100644 --- a/internal/irpreprocessor/replicapreprocessor.go +++ b/internal/irpreprocessor/replicapreprocessor.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package irpreprocessor diff --git a/internal/irpreprocessor/replicapreprocessor_test.go b/internal/irpreprocessor/replicapreprocessor_test.go index b64e487d8..23495c68f 100644 --- a/internal/irpreprocessor/replicapreprocessor_test.go +++ b/internal/irpreprocessor/replicapreprocessor_test.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package irpreprocessor diff --git a/internal/k8sschema/converters.go b/internal/k8sschema/converters.go index ff799770e..883b87bbe 100644 --- a/internal/k8sschema/converters.go +++ b/internal/k8sschema/converters.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package k8sschema diff --git a/internal/k8sschema/fixer/deploymentfixer.go b/internal/k8sschema/fixer/deploymentfixer.go index 49f9abecb..b26bbce30 100644 --- a/internal/k8sschema/fixer/deploymentfixer.go +++ b/internal/k8sschema/fixer/deploymentfixer.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package fixer diff --git a/internal/k8sschema/fixer/fixer.go b/internal/k8sschema/fixer/fixer.go index 42f983296..076892cca 100644 --- a/internal/k8sschema/fixer/fixer.go +++ b/internal/k8sschema/fixer/fixer.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package fixer diff --git a/internal/k8sschema/fixer/ingressfixer.go b/internal/k8sschema/fixer/ingressfixer.go index 914d0e748..6eecc6ef9 100644 --- a/internal/k8sschema/fixer/ingressfixer.go +++ b/internal/k8sschema/fixer/ingressfixer.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package fixer diff --git a/internal/k8sschema/k8sschema.go b/internal/k8sschema/k8sschema.go index d03043d19..9b89b71ad 100644 --- a/internal/k8sschema/k8sschema.go +++ b/internal/k8sschema/k8sschema.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package k8sschema diff --git a/internal/k8sschema/utils.go b/internal/k8sschema/utils.go index 141626e67..0e47beb92 100644 --- a/internal/k8sschema/utils.go +++ b/internal/k8sschema/utils.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package k8sschema diff --git a/internal/transformer/classes/analysers/cloudfoundry.go b/internal/transformer/classes/analysers/cloudfoundryanalyser.go similarity index 80% rename from internal/transformer/classes/analysers/cloudfoundry.go rename to internal/transformer/classes/analysers/cloudfoundryanalyser.go index 889e1a322..15f73f6ea 100644 --- a/internal/transformer/classes/analysers/cloudfoundry.go +++ b/internal/transformer/classes/analysers/cloudfoundryanalyser.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2021 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package analysers @@ -31,34 +31,19 @@ import ( irtypes "github.com/konveyor/move2kube/types/ir" plantypes "github.com/konveyor/move2kube/types/plan" transformertypes "github.com/konveyor/move2kube/types/transformer" + "github.com/konveyor/move2kube/types/transformer/artifacts" "github.com/sirupsen/logrus" "github.com/spf13/cast" "gopkg.in/yaml.v3" core "k8s.io/kubernetes/pkg/apis/core" ) -const ( - // CfManifestArtifactType defines the source artifact type of cf manifest - CfManifestArtifactType plantypes.PathType = "CfManifest" - // CfRunningManifestArtifactType defines the source artifact type of a manifest of a running instance - CfRunningManifestArtifactType plantypes.PathType = "CfRunningManifest" -) - -const ( - CloudFoundryConfigType plantypes.ConfigType = "CloudFoundryService" -) - // CloudFoundry implements Transformer interface type CloudFoundry struct { Config transformertypes.Transformer Env environment.Environment } -type CloudFoundryConfig struct { - ServiceName string `yaml:"serviceName,omitempty"` - ImageName string `yaml:"imageName,omitempty"` -} - func (t *CloudFoundry) Init(tc transformertypes.Transformer, env environment.Environment) (err error) { t.Config = tc t.Env = env @@ -116,15 +101,15 @@ func (t *CloudFoundry) BaseDirectoryDetect(dir string) (namedServices map[string } ct := plantypes.Transformer{ Mode: plantypes.ModeContainer, - ArtifactTypes: []plantypes.ArtifactType{transformertypes.IRArtifactType}, - ExclusiveArtifactTypes: []plantypes.ArtifactType{transformertypes.IRArtifactType}, - Configs: map[plantypes.ConfigType]interface{}{ - CloudFoundryConfigType: CloudFoundryConfig{ + ArtifactTypes: []transformertypes.ArtifactType{irtypes.IRArtifactType}, + ExclusiveArtifactTypes: []transformertypes.ArtifactType{irtypes.IRArtifactType}, + Configs: map[transformertypes.ConfigType]interface{}{ + artifacts.CloudFoundryConfigType: artifacts.CloudFoundryConfig{ ServiceName: applicationName, }}, - Paths: map[plantypes.PathType][]string{ - CfManifestArtifactType: {filePath}, - plantypes.ProjectPathPathType: {fullbuilddirectory}, + Paths: map[transformertypes.PathType][]string{ + artifacts.CfManifestPathType: {filePath}, + artifacts.ProjectPathPathType: {fullbuilddirectory}, }, } _, appinstance := getCfInstanceApp(cfInstanceApps, applicationName) @@ -133,11 +118,11 @@ func (t *CloudFoundry) BaseDirectoryDetect(dir string) (namedServices map[string if dockerImageName == "" { dockerImageName = appinstance.DockerImage } - ct.ArtifactTypes = append(ct.ArtifactTypes, transformertypes.ContainerBuildArtifactType) - ct.ExclusiveArtifactTypes = append(ct.ArtifactTypes, transformertypes.ContainerBuildArtifactType) - ctConfig := ct.Configs[CloudFoundryConfigType].(CloudFoundryConfig) + ct.ArtifactTypes = append(ct.ArtifactTypes, artifacts.ContainerBuildArtifactType) + ct.ExclusiveArtifactTypes = append(ct.ArtifactTypes, artifacts.ContainerBuildArtifactType) + ctConfig := ct.Configs[artifacts.CloudFoundryConfigType].(artifacts.CloudFoundryConfig) ctConfig.ImageName = dockerImageName - ct.Configs[CloudFoundryConfigType] = ctConfig + ct.Configs[artifacts.CloudFoundryConfigType] = ctConfig continue } namedServices[applicationName] = []plantypes.Transformer{ct} @@ -153,23 +138,23 @@ func (t *CloudFoundry) DirectoryDetect(dir string) (namedServices map[string]pla func (t *CloudFoundry) Transform(newArtifacts []transformertypes.Artifact, oldArtifacts []transformertypes.Artifact) ([]transformertypes.PathMapping, []transformertypes.Artifact, error) { artifactsCreated := []transformertypes.Artifact{} for _, a := range newArtifacts { - if a.Artifact != transformertypes.ServiceArtifactType { + if a.Artifact != artifacts.ServiceArtifactType { continue } - var config CloudFoundryConfig - err := a.GetConfig(CloudFoundryConfigType, &config) + var config artifacts.CloudFoundryConfig + err := a.GetConfig(artifacts.CloudFoundryConfigType, &config) if err != nil { logrus.Errorf("unable to load config for Transformer into %T : %s", config, err) continue } - var pConfig transformertypes.PlanConfig - err = a.GetConfig(transformertypes.PlanConfigType, &pConfig) + var pConfig artifacts.PlanConfig + err = a.GetConfig(artifacts.PlanConfigType, &pConfig) if err != nil { logrus.Errorf("unable to load config for Transformer into %T : %s", pConfig, err) continue } - var sConfig transformertypes.ServiceConfig - err = a.GetConfig(transformertypes.ServiceConfigType, &sConfig) + var sConfig artifacts.ServiceConfig + err = a.GetConfig(artifacts.ServiceConfigType, &sConfig) if err != nil { logrus.Errorf("unable to load config for Transformer into %T : %s", sConfig, err) continue @@ -178,7 +163,7 @@ func (t *CloudFoundry) Transform(newArtifacts []transformertypes.Artifact, oldAr ir := irtypes.NewIR() logrus.Debugf("Transforming %s", config.ServiceName) var cfinstanceapp collecttypes.CfApplication - if runninginstancefile, ok := a.Paths[CfRunningManifestArtifactType]; ok { + if runninginstancefile, ok := a.Paths[artifacts.CfRunningManifestPathType]; ok { var err error cfinstanceapp, err = getCfAppInstance(runninginstancefile[0], config.ServiceName) if err != nil { @@ -186,7 +171,7 @@ func (t *CloudFoundry) Transform(newArtifacts []transformertypes.Artifact, oldAr } } - if paths, ok := a.Paths[CfManifestArtifactType]; ok { + if paths, ok := a.Paths[artifacts.CfManifestPathType]; ok { path := paths[0] // TODO: what about the rest of the manifests? applications, _, err := t.readApplicationManifest(path, config.ServiceName) if err != nil { @@ -241,10 +226,10 @@ func (t *CloudFoundry) Transform(newArtifacts []transformertypes.Artifact, oldAr } artifactsCreated = append(artifactsCreated, transformertypes.Artifact{ Name: pConfig.PlanName, - Artifact: transformertypes.IRArtifactType, - Configs: map[plantypes.ConfigType]interface{}{ - transformertypes.IRConfigType: ir, - transformertypes.PlanConfigType: pConfig, + Artifact: irtypes.IRArtifactType, + Configs: map[transformertypes.ConfigType]interface{}{ + irtypes.IRConfigType: ir, + artifacts.PlanConfigType: pConfig, }, }) } diff --git a/internal/transformer/classes/analysers/cnbcontainerizer.go b/internal/transformer/classes/analysers/cnbcontainerizer.go index 37d4b9823..15ff4e386 100644 --- a/internal/transformer/classes/analysers/cnbcontainerizer.go +++ b/internal/transformer/classes/analysers/cnbcontainerizer.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package analysers @@ -24,6 +24,7 @@ import ( environmenttypes "github.com/konveyor/move2kube/types/environment" plantypes "github.com/konveyor/move2kube/types/plan" transformertypes "github.com/konveyor/move2kube/types/transformer" + "github.com/konveyor/move2kube/types/transformer/artifacts" "github.com/sirupsen/logrus" ) @@ -36,12 +37,7 @@ type CNBContainerizer struct { } type CNBContainerizerYamlConfig struct { - BuilderImageName string `yaml:"cnbbuilderimage"` -} - -type CNBTemplateConfig struct { - CNBBuilder string `json:"CNBBuilder"` - ImageName string `json:"ImageName,omitempty"` + BuilderImageName string `yaml:"CNBBuilder"` } func (t *CNBContainerizer) Init(tc transformertypes.Transformer, env environment.Environment) (err error) { @@ -88,25 +84,25 @@ func (t *CNBContainerizer) DirectoryDetect(dir string) (namedServices map[string } trans := plantypes.Transformer{ Mode: plantypes.ModeContainer, - ArtifactTypes: []string{transformertypes.ContainerBuildArtifactType}, - ExclusiveArtifactTypes: []string{transformertypes.ContainerBuildArtifactType}, - Paths: map[string][]string{plantypes.ProjectPathPathType: {dir}}, - Configs: map[string]interface{}{transformertypes.TemplateConfigType: CNBTemplateConfig{ + ArtifactTypes: []string{artifacts.ContainerBuildArtifactType, artifacts.CNBMetadataArtifactType}, + ExclusiveArtifactTypes: []string{artifacts.ContainerBuildArtifactType, artifacts.CNBMetadataArtifactType}, + Paths: map[string][]string{artifacts.ProjectPathPathType: {dir}}, + Configs: map[string]interface{}{artifacts.CNBMetadataConfigType: artifacts.CNBMetadataConfig{ CNBBuilder: t.CNBConfig.BuilderImageName, }}, } return nil, []plantypes.Transformer{trans}, nil } -func (t *CNBContainerizer) Transform(newArtifacts []transformertypes.Artifact, oldArtifacts []transformertypes.Artifact) ([]transformertypes.PathMapping, []transformertypes.Artifact, error) { - artifacts := []transformertypes.Artifact{} +func (t *CNBContainerizer) Transform(newArtifacts []transformertypes.Artifact, oldArtifacts []transformertypes.Artifact) (tPathMappings []transformertypes.PathMapping, tArtifacts []transformertypes.Artifact, err error) { + tArtifacts = []transformertypes.Artifact{} for _, a := range newArtifacts { - artifacts = append(artifacts, transformertypes.Artifact{ + tArtifacts = append(tArtifacts, transformertypes.Artifact{ Name: a.Name, - Artifact: transformertypes.CNBMetadataArtifactType, + Artifact: artifacts.CNBMetadataArtifactType, Paths: a.Paths, Configs: a.Configs, }) } - return nil, artifacts, nil + return nil, tArtifacts, nil } diff --git a/internal/transformer/classes/compose/utils.go b/internal/transformer/classes/analysers/compose/utils.go similarity index 79% rename from internal/transformer/classes/compose/utils.go rename to internal/transformer/classes/analysers/compose/utils.go index 72b6185e6..e458e0378 100644 --- a/internal/transformer/classes/compose/utils.go +++ b/internal/transformer/classes/analysers/compose/utils.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package compose diff --git a/internal/transformer/classes/compose/v1v2.go b/internal/transformer/classes/analysers/compose/v1v2.go similarity index 96% rename from internal/transformer/classes/compose/v1v2.go rename to internal/transformer/classes/analysers/compose/v1v2.go index 3d2384919..429a7d978 100755 --- a/internal/transformer/classes/compose/v1v2.go +++ b/internal/transformer/classes/analysers/compose/v1v2.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package compose diff --git a/internal/transformer/classes/compose/v3.go b/internal/transformer/classes/analysers/compose/v3.go similarity index 97% rename from internal/transformer/classes/compose/v3.go rename to internal/transformer/classes/analysers/compose/v3.go index 0b6ed5815..280e0a40e 100755 --- a/internal/transformer/classes/compose/v3.go +++ b/internal/transformer/classes/analysers/compose/v3.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package compose diff --git a/internal/transformer/classes/analysers/composeanalyser.go b/internal/transformer/classes/analysers/composeanalyser.go index fa95a55d4..9b3187f06 100644 --- a/internal/transformer/classes/analysers/composeanalyser.go +++ b/internal/transformer/classes/analysers/composeanalyser.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2021 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package analysers @@ -21,23 +21,24 @@ import ( "github.com/konveyor/move2kube/environment" "github.com/konveyor/move2kube/internal/common" - "github.com/konveyor/move2kube/internal/transformer/classes/compose" + "github.com/konveyor/move2kube/internal/transformer/classes/analysers/compose" collecttypes "github.com/konveyor/move2kube/types/collection" irtypes "github.com/konveyor/move2kube/types/ir" plantypes "github.com/konveyor/move2kube/types/plan" transformertypes "github.com/konveyor/move2kube/types/transformer" + "github.com/konveyor/move2kube/types/transformer/artifacts" "github.com/sirupsen/logrus" ) const ( - ComposeServiceConfigType plantypes.ConfigType = "ComposeService" + ComposeServiceConfigType transformertypes.ConfigType = "ComposeService" ) const ( // composeFilePathType defines the source artifact type of Docker compose - composeFilePathType plantypes.PathType = "DockerCompose" + composeFilePathType transformertypes.PathType = "DockerCompose" // imageInfoPathType defines the source artifact type of image info - imageInfoPathType plantypes.PathType = "ImageInfo" + imageInfoPathType transformertypes.PathType = "ImageInfo" ) // ComposeAnalyser implements Transformer interface @@ -92,7 +93,7 @@ func (t *ComposeAnalyser) DirectoryDetect(dir string) (namedServices map[string] func (t *ComposeAnalyser) Transform(newArtifacts []transformertypes.Artifact, oldArtifacts []transformertypes.Artifact) ([]transformertypes.PathMapping, []transformertypes.Artifact, error) { artifactsCreated := []transformertypes.Artifact{} for _, a := range newArtifacts { - if a.Artifact != transformertypes.ServiceArtifactType { + if a.Artifact != artifacts.ServiceArtifactType { continue } var config ComposeConfig @@ -101,8 +102,8 @@ func (t *ComposeAnalyser) Transform(newArtifacts []transformertypes.Artifact, ol logrus.Errorf("unable to load config for Transformer into %T : %s", config, err) continue } - var pConfig transformertypes.PlanConfig - err = a.GetConfig(transformertypes.PlanConfigType, &pConfig) + var pConfig artifacts.PlanConfig + err = a.GetConfig(artifacts.PlanConfigType, &pConfig) if err != nil { logrus.Errorf("unable to load config for Transformer into %T : %s", pConfig, err) continue @@ -133,10 +134,10 @@ func (t *ComposeAnalyser) Transform(newArtifacts []transformertypes.Artifact, ol } p := transformertypes.Artifact{ Name: pConfig.PlanName, - Artifact: transformertypes.IRArtifactType, - Configs: map[plantypes.ConfigType]interface{}{ - transformertypes.IRConfigType: ir, - transformertypes.PlanConfigType: pConfig, + Artifact: irtypes.IRArtifactType, + Configs: map[transformertypes.ConfigType]interface{}{ + irtypes.IRConfigType: ir, + artifacts.PlanConfigType: pConfig, }, } artifactsCreated = append(artifactsCreated, p) @@ -147,13 +148,13 @@ func (t *ComposeAnalyser) Transform(newArtifacts []transformertypes.Artifact, ol func (t *ComposeAnalyser) getService(composeFilePath string, serviceName string, serviceImage string, relContextPath string, relDockerfilePath string, imageMetadataPaths map[string]string) plantypes.Transformer { ct := plantypes.Transformer{ Mode: plantypes.ModeContainer, - ArtifactTypes: []plantypes.ArtifactType{transformertypes.IRArtifactType, transformertypes.ContainerBuildArtifactType}, - ExclusiveArtifactTypes: []plantypes.ArtifactType{transformertypes.IRArtifactType, transformertypes.ContainerBuildArtifactType}, - Configs: map[plantypes.ConfigType]interface{}{ + ArtifactTypes: []transformertypes.ArtifactType{irtypes.IRArtifactType, artifacts.ContainerBuildArtifactType}, + ExclusiveArtifactTypes: []transformertypes.ArtifactType{irtypes.IRArtifactType, artifacts.ContainerBuildArtifactType}, + Configs: map[transformertypes.ConfigType]interface{}{ ComposeServiceConfigType: ComposeConfig{ ServiceName: serviceName, }}, - Paths: map[plantypes.PathType][]string{ + Paths: map[transformertypes.PathType][]string{ composeFilePathType: { composeFilePath, }, @@ -177,8 +178,8 @@ func (t *ComposeAnalyser) getService(composeFilePath string, serviceName string, } } // Add reuse Dockerfile containerization option - ct.Paths[transformertypes.DockerfilePathType] = common.MergeStringSlices(ct.Paths[transformertypes.DockerfilePathType], dockerfilePath) - ct.Paths[plantypes.ProjectPathPathType] = common.MergeStringSlices(ct.Paths[plantypes.ProjectPathPathType], contextPath) + ct.Paths[artifacts.DockerfilePathType] = common.MergeStringSlices(ct.Paths[artifacts.DockerfilePathType], dockerfilePath) + ct.Paths[artifacts.ProjectPathPathType] = common.MergeStringSlices(ct.Paths[artifacts.ProjectPathPathType], contextPath) } return ct } diff --git a/internal/transformer/classes/analysers/dockerfile.go b/internal/transformer/classes/analysers/dockerfileanalyser.go similarity index 77% rename from internal/transformer/classes/analysers/dockerfile.go rename to internal/transformer/classes/analysers/dockerfileanalyser.go index 3a4fbd2da..772de1b0f 100644 --- a/internal/transformer/classes/analysers/dockerfile.go +++ b/internal/transformer/classes/analysers/dockerfileanalyser.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2020, 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package analysers @@ -25,6 +25,7 @@ import ( "github.com/konveyor/move2kube/environment" plantypes "github.com/konveyor/move2kube/types/plan" transformertypes "github.com/konveyor/move2kube/types/transformer" + "github.com/konveyor/move2kube/types/transformer/artifacts" dockerparser "github.com/moby/buildkit/frontend/dockerfile/parser" "github.com/sirupsen/logrus" ) @@ -68,8 +69,8 @@ func (t *DockerfileDetector) BaseDirectoryDetect(dir string) (namedServices map[ ArtifactTypes: t.Config.Spec.Artifacts, ExclusiveArtifactTypes: t.Config.Spec.ExclusiveArtifacts, Paths: map[string][]string{ - plantypes.ProjectPathPathType: {filepath.Dir(path)}, - transformertypes.DockerfilePathType: {path}, + artifacts.ProjectPathPathType: {filepath.Dir(path)}, + artifacts.DockerfilePathType: {path}, }, } ts = append(ts, trans) @@ -89,24 +90,24 @@ func (t *DockerfileDetector) DirectoryDetect(dir string) (namedServices map[stri func (t *DockerfileDetector) Transform(newArtifacts []transformertypes.Artifact, oldArtifacts []transformertypes.Artifact) ([]transformertypes.PathMapping, []transformertypes.Artifact, error) { artifactsCreated := []transformertypes.Artifact{} for _, a := range newArtifacts { - if a.Artifact != transformertypes.ServiceArtifactType { + if a.Artifact != artifacts.ServiceArtifactType { continue } - var pConfig transformertypes.PlanConfig - err := a.GetConfig(transformertypes.PlanConfigType, &pConfig) + var pConfig artifacts.PlanConfig + err := a.GetConfig(artifacts.PlanConfigType, &pConfig) if err != nil { logrus.Errorf("unable to load config for Transformer into %T : %s", pConfig, err) continue } - var sConfig transformertypes.ServiceConfig - err = a.GetConfig(transformertypes.ServiceConfigType, &sConfig) + var sConfig artifacts.ServiceConfig + err = a.GetConfig(artifacts.ServiceConfigType, &sConfig) if err != nil { logrus.Errorf("unable to load config for Transformer into %T : %s", sConfig, err) continue } p := transformertypes.Artifact{ Name: sConfig.ServiceName, - Artifact: transformertypes.DockerfileArtifactType, + Artifact: artifacts.DockerfileArtifactType, Paths: a.Paths, } artifactsCreated = append(artifactsCreated, p) diff --git a/internal/transformer/classes/external/simpleexecutable.go b/internal/transformer/classes/external/simpleexecutable.go index e458e9d67..30a92606c 100644 --- a/internal/transformer/classes/external/simpleexecutable.go +++ b/internal/transformer/classes/external/simpleexecutable.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2021 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package external @@ -28,11 +28,12 @@ import ( environmenttypes "github.com/konveyor/move2kube/types/environment" plantypes "github.com/konveyor/move2kube/types/plan" transformertypes "github.com/konveyor/move2kube/types/transformer" + "github.com/konveyor/move2kube/types/transformer/artifacts" "github.com/sirupsen/logrus" ) const ( - TransformConfigType plantypes.ConfigType = "TransformConfig" + TransformConfigType transformertypes.ConfigType = "TransformConfig" ) // Executable implements Containerizer interface @@ -100,17 +101,17 @@ func (t *SimpleExecutable) DirectoryDetect(dir string) (namedServices map[string func (t *SimpleExecutable) Transform(newArtifacts []transformertypes.Artifact, oldArtifacts []transformertypes.Artifact) (pathMappings []transformertypes.PathMapping, createdArtifacts []transformertypes.Artifact, err error) { pathMappings = []transformertypes.PathMapping{} for _, a := range newArtifacts { - if a.Artifact != transformertypes.ServiceArtifactType { + if a.Artifact != artifacts.ServiceArtifactType { continue } if t.ExecConfig.TransformCMD == nil { - relSrcPath, err := filepath.Rel(t.Env.GetWorkspaceSource(), a.Paths[plantypes.ProjectPathPathType][0]) + relSrcPath, err := filepath.Rel(t.Env.GetWorkspaceSource(), a.Paths[artifacts.ProjectPathPathType][0]) if err != nil { - logrus.Errorf("Unable to convert source path %s to be relative : %s", a.Paths[plantypes.ProjectPathPathType][0], err) + logrus.Errorf("Unable to convert source path %s to be relative : %s", a.Paths[artifacts.ProjectPathPathType][0], err) } var config interface{} if a.Configs != nil { - config = a.Configs[transformertypes.TemplateConfigType] + config = a.Configs[artifacts.TemplateConfigType] } pathMappings = append(pathMappings, transformertypes.PathMapping{ Type: transformertypes.TemplatePathMappingType, @@ -124,8 +125,8 @@ func (t *SimpleExecutable) Transform(newArtifacts []transformertypes.Artifact, o }) } else { path := "" - if a.Paths != nil && a.Paths[plantypes.ProjectPathPathType] != nil { - path = a.Paths[plantypes.ProjectPathPathType][0] + if a.Paths != nil && a.Paths[artifacts.ProjectPathPathType] != nil { + path = a.Paths[artifacts.ProjectPathPathType][0] } return t.executeTransform(t.ExecConfig.TransformCMD, path) } @@ -148,8 +149,8 @@ func (t *SimpleExecutable) executeDetect(cmd environmenttypes.Command, dir strin Mode: string(t.TConfig.Spec.Mode), ArtifactTypes: t.TConfig.Spec.Artifacts, ExclusiveArtifactTypes: t.TConfig.Spec.ExclusiveArtifacts, - Paths: map[string][]string{plantypes.ProjectPathPathType: {dir}}, - Configs: map[plantypes.ConfigType]interface{}{}, + Paths: map[string][]string{artifacts.ProjectPathPathType: {dir}}, + Configs: map[transformertypes.ConfigType]interface{}{}, } var config map[string]interface{} if stdout != "" { @@ -158,7 +159,7 @@ func (t *SimpleExecutable) executeDetect(cmd environmenttypes.Command, dir strin if err != nil { logrus.Debugf("Error in unmarshalling json %s: %s.", stdout, err) } - trans.Configs[transformertypes.TemplateConfigType] = config + trans.Configs[artifacts.TemplateConfigType] = config } return nil, []plantypes.Transformer{trans}, nil } diff --git a/internal/transformer/classes/generators/buildconfiggenerator.go b/internal/transformer/classes/generators/buildconfiggenerator.go index 34cff1a6b..07143fa7e 100644 --- a/internal/transformer/classes/generators/buildconfiggenerator.go +++ b/internal/transformer/classes/generators/buildconfiggenerator.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2021 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package generators @@ -30,6 +30,7 @@ import ( irtypes "github.com/konveyor/move2kube/types/ir" plantypes "github.com/konveyor/move2kube/types/plan" transformertypes "github.com/konveyor/move2kube/types/transformer" + "github.com/konveyor/move2kube/types/transformer/artifacts" "github.com/sirupsen/logrus" core "k8s.io/kubernetes/pkg/apis/core" ) @@ -74,17 +75,17 @@ func (t *BuildConfig) Transform(newArtifacts []transformertypes.Artifact, oldArt logrus.Debugf("Translating IR using Buildconfig transformer") pathMappings = []transformertypes.PathMapping{} for _, a := range newArtifacts { - if a.Artifact != transformertypes.IRArtifactType { + if a.Artifact != irtypes.IRArtifactType { continue } var ir irtypes.IR - err := a.GetConfig(transformertypes.IRConfigType, &ir) + err := a.GetConfig(irtypes.IRConfigType, &ir) if err != nil { logrus.Errorf("unable to load config for Transformer into %T : %s", ir, err) continue } - var pC transformertypes.PlanConfig - err = a.GetConfig(transformertypes.PlanConfigType, &pC) + var pC artifacts.PlanConfig + err = a.GetConfig(artifacts.PlanConfigType, &pC) if err != nil { logrus.Errorf("unable to load config for Transformer into %T : %s", pC, err) continue diff --git a/internal/transformer/classes/generators/cnbgenerator.go b/internal/transformer/classes/generators/cnbgenerator.go index 68de13acb..13ae79813 100644 --- a/internal/transformer/classes/generators/cnbgenerator.go +++ b/internal/transformer/classes/generators/cnbgenerator.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2021 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package generators @@ -21,9 +21,9 @@ import ( "github.com/konveyor/move2kube/environment" "github.com/konveyor/move2kube/internal/common" - "github.com/konveyor/move2kube/internal/transformer/classes/analysers" plantypes "github.com/konveyor/move2kube/types/plan" transformertypes "github.com/konveyor/move2kube/types/transformer" + "github.com/konveyor/move2kube/types/transformer/artifacts" "github.com/sirupsen/logrus" ) @@ -54,16 +54,16 @@ func (t *CNBGenerator) DirectoryDetect(dir string) (namedServices map[string]pla func (t *CNBGenerator) Transform(newArtifacts []transformertypes.Artifact, oldArtifacts []transformertypes.Artifact) ([]transformertypes.PathMapping, []transformertypes.Artifact, error) { pathMappings := []transformertypes.PathMapping{} for _, a := range newArtifacts { - tc := analysers.CNBTemplateConfig{} - err := a.GetConfig(transformertypes.TemplateConfigType, &tc) + tc := artifacts.CNBMetadataConfig{} + err := a.GetConfig(artifacts.CNBMetadataConfigType, &tc) if err != nil { logrus.Errorf("Unable to read CNB Template config : %s", err) } - relSrcPath, err := filepath.Rel(t.Env.GetWorkspaceSource(), a.Paths[plantypes.ProjectPathPathType][0]) + relSrcPath, err := filepath.Rel(t.Env.GetWorkspaceSource(), a.Paths[artifacts.ProjectPathPathType][0]) if err != nil { - logrus.Errorf("Unable to convert source path %s to be relative : %s", a.Paths[plantypes.ProjectPathPathType][0], err) + logrus.Errorf("Unable to convert source path %s to be relative : %s", a.Paths[artifacts.ProjectPathPathType][0], err) } - tc.ImageName = a.Configs[transformertypes.ServiceArtifactType].(transformertypes.ServiceConfig).ServiceName + tc.ImageName = a.Configs[artifacts.ServiceArtifactType].(artifacts.ServiceConfig).ServiceName cnbfilename := "buildcnb.sh" pathMappings = append(pathMappings, transformertypes.PathMapping{ Type: transformertypes.TemplatePathMappingType, diff --git a/internal/transformer/classes/generators/composegenerator.go b/internal/transformer/classes/generators/composegenerator.go index e41167d27..e7839467f 100644 --- a/internal/transformer/classes/generators/composegenerator.go +++ b/internal/transformer/classes/generators/composegenerator.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2021 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package generators @@ -69,11 +69,11 @@ func (t *ComposeGenerator) DirectoryDetect(dir string) (namedServices map[string func (t *ComposeGenerator) Transform(newArtifacts []transformertypes.Artifact, oldArtifacts []transformertypes.Artifact) (pathMappings []transformertypes.PathMapping, createdArtifacts []transformertypes.Artifact, err error) { pathMappings = []transformertypes.PathMapping{} for _, a := range newArtifacts { - if a.Artifact != transformertypes.IRArtifactType { + if a.Artifact != irtypes.IRArtifactType { continue } var ir irtypes.IR - err := a.GetConfig(transformertypes.IRConfigType, &ir) + err := a.GetConfig(irtypes.IRConfigType, &ir) if err != nil { logrus.Errorf("unable to load config for Transformer into %T : %s", ir, err) continue diff --git a/internal/transformer/classes/generators/knativegenerator.go b/internal/transformer/classes/generators/knativegenerator.go index 64df8f741..7ab7a98b6 100644 --- a/internal/transformer/classes/generators/knativegenerator.go +++ b/internal/transformer/classes/generators/knativegenerator.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2021 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package generators @@ -25,6 +25,7 @@ import ( irtypes "github.com/konveyor/move2kube/types/ir" plantypes "github.com/konveyor/move2kube/types/plan" transformertypes "github.com/konveyor/move2kube/types/transformer" + "github.com/konveyor/move2kube/types/transformer/artifacts" "github.com/sirupsen/logrus" ) @@ -63,17 +64,17 @@ func (t *Knative) Transform(newArtifacts []transformertypes.Artifact, oldArtifac logrus.Debugf("Translating IR using Kubernetes transformer") pathMappings = []transformertypes.PathMapping{} for _, a := range newArtifacts { - if a.Artifact != transformertypes.IRArtifactType { + if a.Artifact != irtypes.IRArtifactType { continue } var ir irtypes.IR - err := a.GetConfig(transformertypes.IRConfigType, &ir) + err := a.GetConfig(irtypes.IRConfigType, &ir) if err != nil { logrus.Errorf("unable to load config for Transformer into %T : %s", ir, err) continue } - var pC transformertypes.PlanConfig - err = a.GetConfig(transformertypes.PlanConfigType, &pC) + var pC artifacts.PlanConfig + err = a.GetConfig(artifacts.PlanConfigType, &pC) if err != nil { logrus.Errorf("unable to load config for Transformer into %T : %s", pC, err) continue diff --git a/internal/transformer/classes/generators/kubernetesgenerator.go b/internal/transformer/classes/generators/kubernetesgenerator.go index 977ea185c..49662426d 100644 --- a/internal/transformer/classes/generators/kubernetesgenerator.go +++ b/internal/transformer/classes/generators/kubernetesgenerator.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2021 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package generators @@ -25,6 +25,7 @@ import ( irtypes "github.com/konveyor/move2kube/types/ir" plantypes "github.com/konveyor/move2kube/types/plan" transformertypes "github.com/konveyor/move2kube/types/transformer" + "github.com/konveyor/move2kube/types/transformer/artifacts" "github.com/sirupsen/logrus" ) @@ -63,17 +64,17 @@ func (t *Kubernetes) Transform(newArtifacts []transformertypes.Artifact, oldArti logrus.Debugf("Translating IR using Kubernetes transformer") pathMappings = []transformertypes.PathMapping{} for _, a := range newArtifacts { - if a.Artifact != transformertypes.IRArtifactType { + if a.Artifact != irtypes.IRArtifactType { continue } var ir irtypes.IR - err := a.GetConfig(transformertypes.IRConfigType, &ir) + err := a.GetConfig(irtypes.IRConfigType, &ir) if err != nil { logrus.Errorf("unable to load config for Transformer into %T : %s", ir, err) continue } - var pC transformertypes.PlanConfig - err = a.GetConfig(transformertypes.PlanConfigType, &pC) + var pC artifacts.PlanConfig + err = a.GetConfig(artifacts.PlanConfigType, &pC) if err != nil { logrus.Errorf("unable to load config for Transformer into %T : %s", pC, err) continue diff --git a/internal/transformer/classes/generators/tektongenerator.go b/internal/transformer/classes/generators/tektongenerator.go index 500d6b8f1..4e4216583 100644 --- a/internal/transformer/classes/generators/tektongenerator.go +++ b/internal/transformer/classes/generators/tektongenerator.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2021 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package generators @@ -30,6 +30,7 @@ import ( irtypes "github.com/konveyor/move2kube/types/ir" plantypes "github.com/konveyor/move2kube/types/plan" transformertypes "github.com/konveyor/move2kube/types/transformer" + "github.com/konveyor/move2kube/types/transformer/artifacts" "github.com/sirupsen/logrus" "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" triggersv1alpha1 "github.com/tektoncd/triggers/pkg/apis/triggers/v1alpha1" @@ -91,17 +92,17 @@ func (t *Tekton) Transform(newArtifacts []transformertypes.Artifact, oldArtifact logrus.Debugf("Translating IR using Kubernetes transformer") pathMappings = []transformertypes.PathMapping{} for _, a := range newArtifacts { - if a.Artifact != transformertypes.IRArtifactType { + if a.Artifact != irtypes.IRArtifactType { continue } var ir irtypes.IR - err := a.GetConfig(transformertypes.IRConfigType, &ir) + err := a.GetConfig(irtypes.IRConfigType, &ir) if err != nil { logrus.Errorf("unable to load config for Transformer into %T : %s", ir, err) continue } - var pC transformertypes.PlanConfig - err = a.GetConfig(transformertypes.PlanConfigType, &pC) + var pC artifacts.PlanConfig + err = a.GetConfig(artifacts.PlanConfigType, &pC) if err != nil { logrus.Errorf("unable to load config for Transformer into %T : %s", pC, err) continue diff --git a/internal/transformer/classes/orchestrators/containerimagepushscriptgenerator.go b/internal/transformer/classes/orchestrators/containerimagepushscriptgenerator.go new file mode 100644 index 000000000..b8d0f493e --- /dev/null +++ b/internal/transformer/classes/orchestrators/containerimagepushscriptgenerator.go @@ -0,0 +1,81 @@ +/* + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package generators + +import ( + "path/filepath" + + "github.com/konveyor/move2kube/environment" + "github.com/konveyor/move2kube/internal/common" + plantypes "github.com/konveyor/move2kube/types/plan" + transformertypes "github.com/konveyor/move2kube/types/transformer" + "github.com/konveyor/move2kube/types/transformer/artifacts" + "github.com/sirupsen/logrus" +) + +// ContainerPushScripts implements Transformer interface +type ContainerImagePushScript struct { + TConfig transformertypes.Transformer + Env environment.Environment +} + +func (t *ContainerImagePushScript) Init(tc transformertypes.Transformer, env environment.Environment) (err error) { + t.TConfig = tc + t.Env = env + return nil +} + +func (t *ContainerImagePushScript) GetConfig() (transformertypes.Transformer, environment.Environment) { + return t.TConfig, t.Env +} + +func (t *ContainerImagePushScript) BaseDirectoryDetect(dir string) (namedServices map[string]plantypes.Service, unnamedServices []plantypes.Transformer, err error) { + return nil, nil, nil +} + +func (t *ContainerImagePushScript) DirectoryDetect(dir string) (namedServices map[string]plantypes.Service, unnamedServices []plantypes.Transformer, err error) { + return nil, nil, nil +} + +func (t *ContainerImagePushScript) Transform(newArtifacts []transformertypes.Artifact, oldArtifacts []transformertypes.Artifact) ([]transformertypes.PathMapping, []transformertypes.Artifact, error) { + pathMappings := []transformertypes.PathMapping{} + images := []string{} + for _, a := range newArtifacts { + if a.Artifact == artifacts.NewImageArtifactType { + image := artifacts.NewImage{} + err := a.GetConfig(artifacts.NewImageConfigType, &image) + if err != nil { + logrus.Errorf("Unable to read Image config : %s", err) + } + if !common.IsStringPresent(images, image.ImageName) { + images = append(images, image.ImageName) + } + pathMappings = append(pathMappings, transformertypes.PathMapping{ + Type: transformertypes.TemplatePathMappingType, + SrcPath: filepath.Join(t.Env.Context, t.TConfig.Spec.TemplatesDir), + DestPath: common.ScriptsDir, + TemplateConfig: images, + }) + } + } + artifacts := []transformertypes.Artifact{{ + Name: "ImagePushScript", + Artifact: artifacts.ImagePushScriptArtifactType, + Paths: map[string][]string{artifacts.ImagePushScriptPathType: {filepath.Join(common.ScriptsDir, "pushimages.sh")}}, + }} + return pathMappings, artifacts, nil +} diff --git a/internal/transformer/classes/orchestrators/readmegenerator.go b/internal/transformer/classes/orchestrators/readmegenerator.go new file mode 100644 index 000000000..2b8190fe6 --- /dev/null +++ b/internal/transformer/classes/orchestrators/readmegenerator.go @@ -0,0 +1,81 @@ +/* + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package generators + +import ( + "path/filepath" + + "github.com/konveyor/move2kube/environment" + "github.com/konveyor/move2kube/internal/common" + plantypes "github.com/konveyor/move2kube/types/plan" + transformertypes "github.com/konveyor/move2kube/types/transformer" + "github.com/konveyor/move2kube/types/transformer/artifacts" + "github.com/sirupsen/logrus" +) + +// ContainerPushScripts implements Transformer interface +type ReadMeGenerator struct { + TConfig transformertypes.Transformer + Env environment.Environment +} + +func (t *ReadMeGenerator) Init(tc transformertypes.Transformer, env environment.Environment) (err error) { + t.TConfig = tc + t.Env = env + return nil +} + +func (t *ReadMeGenerator) GetConfig() (transformertypes.Transformer, environment.Environment) { + return t.TConfig, t.Env +} + +func (t *ReadMeGenerator) BaseDirectoryDetect(dir string) (namedServices map[string]plantypes.Service, unnamedServices []plantypes.Transformer, err error) { + return nil, nil, nil +} + +func (t *ReadMeGenerator) DirectoryDetect(dir string) (namedServices map[string]plantypes.Service, unnamedServices []plantypes.Transformer, err error) { + return nil, nil, nil +} + +func (t *ReadMeGenerator) Transform(newArtifacts []transformertypes.Artifact, oldArtifacts []transformertypes.Artifact) ([]transformertypes.PathMapping, []transformertypes.Artifact, error) { + pathMappings := []transformertypes.PathMapping{} + images := []string{} + for _, a := range newArtifacts { + if a.Artifact == artifacts.ImagePushScriptArtifactType { + image := artifacts.NewImage{} + err := a.GetConfig(artifacts.NewImageConfigType, &image) + if err != nil { + logrus.Errorf("Unable to read Image config : %s", err) + } + if !common.IsStringPresent(images, image.ImageName) { + images = append(images, image.ImageName) + } + pathMappings = append(pathMappings, transformertypes.PathMapping{ + Type: transformertypes.TemplatePathMappingType, + SrcPath: filepath.Join(t.Env.Context, t.TConfig.Spec.TemplatesDir), + DestPath: common.ScriptsDir, + TemplateConfig: images, + }) + } + } + artifacts := []transformertypes.Artifact{{ + Name: "ImagePushScript", + Artifact: artifacts.ImagePushScriptArtifactType, + Paths: map[string][]string{artifacts.ImagePushScriptPathType: {filepath.Join(common.ScriptsDir, "pushimages.sh")}}, + }} + return pathMappings, artifacts, nil +} diff --git a/internal/transformer/processors.go b/internal/transformer/processors.go index e6427d43e..f6ac8fb50 100644 --- a/internal/transformer/processors.go +++ b/internal/transformer/processors.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2021 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package transformer diff --git a/internal/transformer/servicenamer.go b/internal/transformer/servicenamer.go index 5dab8a1a0..f745448aa 100644 --- a/internal/transformer/servicenamer.go +++ b/internal/transformer/servicenamer.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2021 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package transformer @@ -24,6 +24,7 @@ import ( "github.com/sirupsen/logrus" plantypes "github.com/konveyor/move2kube/types/plan" + "github.com/konveyor/move2kube/types/transformer/artifacts" ) type project struct { @@ -36,7 +37,7 @@ func nameServices(projName string, nServices map[string]plantypes.Service, sts [ // Collate services by project path or shared common base dir servicePaths := make(map[string][]plantypes.Transformer) for _, st := range sts { - pps, ok := st.Paths[plantypes.ProjectPathPathType] + pps, ok := st.Paths[artifacts.ProjectPathPathType] bpp := common.CleanAndFindCommonDirectory(pps) if !ok { paths := []string{} diff --git a/internal/transformer/transformer.go b/internal/transformer/transformer.go index f499317c5..ec08efc47 100644 --- a/internal/transformer/transformer.go +++ b/internal/transformer/transformer.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020, 2021 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2020, 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package transformer diff --git a/internal/transformer/utils.go b/internal/transformer/utils.go index b08e7b201..02a881a99 100644 --- a/internal/transformer/utils.go +++ b/internal/transformer/utils.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2021 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package transformer @@ -28,6 +28,7 @@ import ( "github.com/konveyor/move2kube/internal/configuration" plantypes "github.com/konveyor/move2kube/types/plan" transformertypes "github.com/konveyor/move2kube/types/transformer" + "github.com/konveyor/move2kube/types/transformer/artifacts" "github.com/sirupsen/logrus" ) @@ -83,7 +84,7 @@ func getIgnorePaths(inputPath string) (ignoreDirectories []string, ignoreContent } func getArtifactForTransformerPlan(serviceName string, t plantypes.Transformer, p plantypes.Plan) transformertypes.Artifact { - serviceConfig := transformertypes.ServiceConfig{ + serviceConfig := artifacts.ServiceConfig{ ServiceName: serviceName, } targetCluster, err := new(configuration.ClusterMDLoader).GetTargetClusterMetadataForPlan(p) @@ -91,18 +92,18 @@ func getArtifactForTransformerPlan(serviceName string, t plantypes.Transformer, err := fmt.Errorf("unable to find target cluster : %+v", p.Spec.TargetCluster) logrus.Errorf("%s", err) } - planConfig := transformertypes.PlanConfig{ + planConfig := artifacts.PlanConfig{ PlanName: p.Name, TargetCluster: targetCluster, } if t.Configs == nil { t.Configs = make(map[string]interface{}) } - t.Configs[transformertypes.ServiceConfigType] = serviceConfig - t.Configs[transformertypes.PlanConfigType] = planConfig + t.Configs[artifacts.ServiceConfigType] = serviceConfig + t.Configs[artifacts.PlanConfigType] = planConfig artifact := transformertypes.Artifact{ Name: serviceName, - Artifact: transformertypes.ServiceArtifactType, + Artifact: artifacts.ServiceArtifactType, Paths: t.Paths, Configs: t.Configs, } @@ -152,7 +153,7 @@ func mergeArtifact(a transformertypes.Artifact, b transformertypes.Artifact) (c } } -func mergeConfigs(configs1 map[plantypes.ConfigType]interface{}, configs2 map[plantypes.ConfigType]interface{}) map[plantypes.ConfigType]interface{} { +func mergeConfigs(configs1 map[transformertypes.ConfigType]interface{}, configs2 map[transformertypes.ConfigType]interface{}) map[transformertypes.ConfigType]interface{} { if configs1 == nil { return configs2 } @@ -170,7 +171,7 @@ func mergeConfigs(configs1 map[plantypes.ConfigType]interface{}, configs2 map[pl } // mergePathSliceMaps merges two string slice maps -func mergePathSliceMaps(map1 map[plantypes.PathType][]string, map2 map[plantypes.PathType][]string) map[plantypes.PathType][]string { +func mergePathSliceMaps(map1 map[transformertypes.PathType][]string, map2 map[transformertypes.PathType][]string) map[transformertypes.PathType][]string { if map1 == nil { return map2 } diff --git a/qaengine/cliengine.go b/qaengine/cliengine.go index 5928bdadc..af8f898e1 100644 --- a/qaengine/cliengine.go +++ b/qaengine/cliengine.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package qaengine diff --git a/qaengine/defaultengine.go b/qaengine/defaultengine.go index 1df67a70b..fa21ef877 100644 --- a/qaengine/defaultengine.go +++ b/qaengine/defaultengine.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package qaengine diff --git a/qaengine/defaultengine_test.go b/qaengine/defaultengine_test.go index 5cb871d5e..80ebe88cd 100644 --- a/qaengine/defaultengine_test.go +++ b/qaengine/defaultengine_test.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package qaengine diff --git a/qaengine/engine.go b/qaengine/engine.go index 4f2014eed..ffa1b55b5 100644 --- a/qaengine/engine.go +++ b/qaengine/engine.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package qaengine diff --git a/qaengine/engine_test.go b/qaengine/engine_test.go index 244e8ad8f..dba472162 100644 --- a/qaengine/engine_test.go +++ b/qaengine/engine_test.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package qaengine diff --git a/qaengine/grpcreceiver.go b/qaengine/grpcreceiver.go index 811319652..a773dc903 100644 --- a/qaengine/grpcreceiver.go +++ b/qaengine/grpcreceiver.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2021 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package qaengine diff --git a/qaengine/httprestengine.go b/qaengine/httprestengine.go index 38f4b15ee..1beecd7be 100644 --- a/qaengine/httprestengine.go +++ b/qaengine/httprestengine.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package qaengine diff --git a/qaengine/storeengine.go b/qaengine/storeengine.go index cfc7fe5be..6a485c4be 100644 --- a/qaengine/storeengine.go +++ b/qaengine/storeengine.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package qaengine diff --git a/qaengine/storeengine_test.go b/qaengine/storeengine_test.go index 7b21a6200..3dfe1f16c 100644 --- a/qaengine/storeengine_test.go +++ b/qaengine/storeengine_test.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package qaengine diff --git a/releasenotes-config.js b/releasenotes-config.js index aec159e08..cb818c952 100644 --- a/releasenotes-config.js +++ b/releasenotes-config.js @@ -1,3 +1,19 @@ +/* + * Copyright IBM Corporation 2020, 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + module.exports = { title_prefix: "[WIP] Move2Kube ", // valid PR types: ['feat', 'fix', 'docs', 'style', 'refactor', 'perf', 'test', 'build', 'ci', 'chore', 'revert'] diff --git a/samples/docker-compose/api/index.js b/samples/docker-compose/api/index.js index 2553a75a3..859715c47 100644 --- a/samples/docker-compose/api/index.js +++ b/samples/docker-compose/api/index.js @@ -1,3 +1,19 @@ +/* + * Copyright IBM Corporation 2020, 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + import url from 'url'; import http from 'http'; import redis from "redis" diff --git a/samples/dockerfile/index.js b/samples/dockerfile/index.js index 93291d42a..e36bb03fe 100644 --- a/samples/dockerfile/index.js +++ b/samples/dockerfile/index.js @@ -1,3 +1,19 @@ +/* + * Copyright IBM Corporation 2020, 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + import express from 'express' const port = 8080; diff --git a/samples/dockerfile/public/about.html b/samples/dockerfile/public/about.html index 83458c7f6..3e7292793 100644 --- a/samples/dockerfile/public/about.html +++ b/samples/dockerfile/public/about.html @@ -1,3 +1,19 @@ + +
diff --git a/samples/dockerfile/public/index.html b/samples/dockerfile/public/index.html index f0ae66143..05488df26 100644 --- a/samples/dockerfile/public/index.html +++ b/samples/dockerfile/public/index.html @@ -1,3 +1,19 @@ + + diff --git a/samples/golang/main.go b/samples/golang/main.go index 6c7ca1666..dcba6d72b 100644 --- a/samples/golang/main.go +++ b/samples/golang/main.go @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package main diff --git a/samples/java-gradle/src/main/java/simplewebapp/MainServlet.java b/samples/java-gradle/src/main/java/simplewebapp/MainServlet.java index c045d7cbb..fc26a0de4 100644 --- a/samples/java-gradle/src/main/java/simplewebapp/MainServlet.java +++ b/samples/java-gradle/src/main/java/simplewebapp/MainServlet.java @@ -1,18 +1,18 @@ /* -Copyright IBM Corporation 2020 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ + * Copyright IBM Corporation 2020, 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package simplewebapp; diff --git a/samples/java-maven/pom.xml b/samples/java-maven/pom.xml index 012279012..9d3afae44 100644 --- a/samples/java-maven/pom.xml +++ b/samples/java-maven/pom.xml @@ -12,7 +12,6 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. - -->